评论lexer规则

时间:2009-12-09 08:17:50

标签: comments antlr3 lexical-analysis

我是ANTLR的新手,我已经提出了这个lexer规则来解析评论,它会起作用吗?

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

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

1 个答案:

答案 0 :(得分:2)

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

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

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

COMMENT_LINE 
    : COMMENT (options{greedy=false;}: .)* LINE_ENDING {$channel=HIDDEN;}
    ;