在lexer中获得真正的位置.举例说明



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

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

这适用于静态文件,但在编辑getCharPositionInLine()时,在其他地方通常会返回0
如何在lexer中获得真正的职位?

我注意到,在编辑文本编辑器发送到lexer时,并不是所有的文本都被更改了,并且在这个片段中lexer正在工作。我不知道怎么改。

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

如果您的输入流不表示从文件开头开始的流,那么您需要使用流实际开始的行/列初始化lexer。

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

如果不这样做,lexer将始终假设输入流从文件的开头开始。

相关内容

  • 没有找到相关文章

最新更新