0

我用 netbeans7 和 ANTLR4 编写编辑器
我在 my.g4 文件中有一行

Label       : {(getCharPositionInLine()==0)}? ID; 

这适用于静态文件,但在编辑 getCharPositionInLine() 时,在其他地方经常返回 0。
如何在词法分析器中获得真实位置?

我注意到,在编辑发送到词法分析器的文本编辑器时,并非所有文本都发生了变化,而在这个片段中,词法分析器工作了。不知道怎么改

我用这个问题创建了例子
https://github.com/daimor/SimpleANTLR

4

1 回答 1

1

如果您的输入流不代表从文件开头开始的流,那么您需要使用流实际开始的行/列来初始化词法分析器。

lexer.getInterpreter().setLine(actualLine);
lexer.getInterpreter().setCharPositionInLine(actualCharPositionInLine);

如果您不这样做,词法分析器将始终假定输入流从文件的开头开始。

于 2013-07-01T22:26:57.083 回答