目前我正在使用此repo中的java8的Java8.g4: https://github.com/antlr/grammars-v4
但是,我想知道如何修改Java8.g4文件以确保我遇到多个新行我只标记其中一行?
请参阅:Parsing Newlines, EOF as End-of-Statement Marker with ANTLR3,我可以在解析树中添加新行(通过将NEWLINE: ('\r\n'|'\n'|'\r')
添加到.g4文件中。但是,如果我有多个新行,则会解析多行并且添加到树上,这不是我想要的。
希望有人可以帮助我!
由于
答案 0 :(得分:1)
我猜你的意思是空格不会留在词法分析器生成的令牌列表中,对吧?当语法中跳过空格时会发生这种情况。检查一下。
WS: [ \t] -> skip;
并将其更改为
WS: [ \t] -> channel(HIDDEN);
通过这种方式,空格保留在隐藏的通道上,您可以通过CommonTokenStream实例读取它们,但不要妨碍(就像跳过一样)。