我是ANTLR的新手,我已经提出了这个lexer规则来解析评论,它会起作用吗?
COMMENT_LINE : (COMMENT (. - LINE_ENDING)* LINE_ENDING){$channel=hidden};
(我在文档中找不到任何关于语法的内容)
答案 0 :(得分:2)
您的规则根本无法编译。如果您使用ANTLRWorks创建新的词法分析器语法,则可以选中一个框以使其生成与单行注释匹配的词法分析器规则。它产生了这个:
COMMENT
: '//' ~('\n'|'\r')* '\r'? '\n' {$channel=HIDDEN;}
;
或者,您可以使用类似的内容来匹配单行注释:
COMMENT_LINE
: COMMENT (options{greedy=false;}: .)* LINE_ENDING {$channel=HIDDEN;}
;