在ANTLR4中保留空格和注释

时间:2015-09-28 07:24:24

标签: antlr4

当我在ANTLR4 tour source pack(https://pragprog.com/titles/tpantlr2/source_code)中运行InsertSerialID.java或ExtractInterfaceTool.java时,我发现输出中不包含所有空格和注释。因此输出源代码无法编译或读取。如何保留它们?

1 个答案:

答案 0 :(得分:0)

好吧,我发现重定向到一个额外的频道会将它们保留在Token中,而不是使用skip

WS  :  [ \t\r\n\u000C]+  -> channel(2) // -> skip
    ;

COMMENT
    :   '/*' .*? '*/'  -> channel(2) // -> skip
    ;

LINE_COMMENT
    :   '//' ~[\r\n]* -> channel(2) // -> skip
    ;

他们在ParserRuleContext.getSourceInterval()中保存为Interval,但我不知道如何将Interval映射到他们的语法类型。