我用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将始终假设输入流从文件的开头开始。