0

我是 ANTLR 的新手,我想出了这个词法分析器规则来解析评论,它会工作吗?

COMMENT_LINE        :   (COMMENT (. - LINE_ENDING)* LINE_ENDING){$channel=hidden};

(我在文档中找不到任何关于语法的东西)

4

1 回答 1

2

您的规则根本无法编译。如果您使用 ANTLRWorks 创建新的词法分析器语法,则可以选中一个框以使其生成匹配单行注释的词法分析器规则。它生成:

COMMENT
    :   '//' ~('\n'|'\r')* '\r'? '\n' {$channel=HIDDEN;}
    ;

或者,您可以使用类似这样的内容来匹配单行注释:

COMMENT_LINE 
    : COMMENT (options{greedy=false;}: .)* LINE_ENDING {$channel=HIDDEN;}
    ;
于 2009-12-09T08:42:34.717 回答