当我在ANTLR4教程源码包( https://pragprog.com/titles/tpantlr2/source_code )中运行InsertSerialID.java或ExtractInterfaceTool.java时,我发现所有的空格和注释都没有包含在输出中。因此,输出的源代码无法编译或读取。如何留住它们?
发布于 2015-09-28 17:15:59
嗯,我发现重定向到一个额外的通道会让它们留在Token中,而不是使用skip
WS : [ \t\r\n\u000C]+ -> channel(2) // -> skip
;
COMMENT
: '/*' .*? '*/' -> channel(2) // -> skip
;
LINE_COMMENT
: '//' ~[\r\n]* -> channel(2) // -> skip
;它们以Interval的形式保存在ParserRuleContext.getSourceInterval()中,尽管我不知道如何将Interval映射到它们的语法类型。
https://stackoverflow.com/questions/32817672
复制相似问题