如何使用antlr标记Java8程序

时间:2017-08-18 07:56:09

标签: antlr

目前我正在使用此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文件中。但是,如果我有多个新行,则会解析多行并且添加到树上,这不是我想要的。

希望有人可以帮助我!

由于

1 个答案:

答案 0 :(得分:1)

我猜你的意思是空格不会留在词法分析器生成的令牌列表中,对吧?当语法中跳过空格时会发生这种情况。检查一下。

WS: [ \t] -> skip;

并将其更改为

WS: [ \t] -> channel(HIDDEN);

通过这种方式,空格保留在隐藏的通道上,您可以通过CommonTokenStream实例读取它们,但不要妨碍(就像跳过一样)。