我是ANTLR的新手,我已经提出了这个词法分析规则来解析评论,它会起作用吗?评论词法规则
COMMENT_LINE : (COMMENT (. - LINE_ENDING)* LINE_ENDING){$channel=hidden};
(我无法找到关于语法像这样在文档的任何东西)
我是ANTLR的新手,我已经提出了这个词法分析规则来解析评论,它会起作用吗?评论词法规则
COMMENT_LINE : (COMMENT (. - LINE_ENDING)* LINE_ENDING){$channel=hidden};
(我无法找到关于语法像这样在文档的任何东西)
您的规则不编译的。如果您使用ANTLRWorks创建新的词法分析器语法,可以选中一个框以使其生成与单行注释匹配的词法分析器规则。 IT这产生:
COMMENT
: '//' ~('\n'|'\r')* '\r'? '\n' {$channel=HIDDEN;}
;
另外,也可以使用这样的匹配单行注释:
COMMENT_LINE
: COMMENT (options{greedy=false;}: .)* LINE_ENDING {$channel=HIDDEN;}
;
除此之外,它依赖于所有其他词法规则在你的语法事实,减号, '-',可能会导致某种错误。你能解释一下你的意思吗?你能举几个你想分析的字符串的例子吗? – 2009-12-09 08:44:15
提到的所有其他“规则”实际上是令牌,我试图匹配评论关键字后跟其余的行。 – RCIX 2009-12-09 09:07:28
词法分析规则的顺序也很重要。例如,如果词法分析器规则为'ANY_CHAR:。 ;'不是最后一条规则,语法将不起作用,因为之后的任何规则将永远无法匹配任何内容,因为ANY_CHAR将吞噬所有内容。但我想博扬已经成功地回答了你的问题,对吧? – 2009-12-09 09:11:46