0

我对 JFlex 和 JSyntaxPane 还很陌生,尽管我已经设法为 XPath 编写了一个词法分析器

我发现自己遇到的问题是我正在开发一个项目,该项目支持具有一些专有特性的 XPath 子集。恶心我知道。

如果这是一个常规的 Java 问题,我会转向继承,但似乎不可能通过让一个词法分析器扩展先前生成的词法分析器来实现继承。

例如

import jsyntaxpane.Token;
import jsyntaxpane.TokenType;

%% 

%public
%class ProprietaryLexer
%extends XPathLexer
%unicode
%char
%type Token

这似乎会导致大量错误告诉我我无法扩展某些最终方法。这是 JSyntaxpane 中 DefaultJFlexLexer 特有的问题,还是我做错了?有没有人遇到过类似的情况,并找到了一种在一堆词法分析器中实现某种特殊继承的方法?

4

1 回答 1

2

JFlex 会生成几个最终方法,因此会出现错误。我可以想到两种可能的解决方法:

  1. 只需将规则复制XPathLexerProprietaryLexer并根据需要扩展它们。
  2. (危险)将骨架文件修改为没有最终方法,然后照常进行。我从来没有尝试过这个,所以我不能保证它甚至会编译。

%inherit不过,如果 JFlex 有一个命令,那肯定会很好。

于 2009-02-16T16:39:04.383 回答