lexer规则中的ANTLR语义谓词

lexer规则中的ANTLR语义谓词,antlr,Antlr,我在lexer中有如下注释规则 星形斜杠:'/*' 多元素:STARSLASH(选项{greedy=false;}:)'*/' SINGLELINECOMMENT:'/'~('\n')* 现在我必须编写另一个lexer规则,它以“/”开头,以“/”结尾。当我按照下面的方式写这个规则时,我得到了一个错误 斜杠规则:'/'(选项{greedy=false;}:.)*'/' 我使用的是ANTLR3.2。如何编写此规则斜杠规则?多元素:'/*'(选项{贪婪=错误;}:)'*/';在发布问题时,我给出了“

我在lexer中有如下注释规则

星形斜杠:'/*'

多元素:STARSLASH(选项{greedy=false;}:)'*/'

SINGLELINECOMMENT:'/'~('\n')*

现在我必须编写另一个lexer规则,它以“/”开头,以“/”结尾。当我按照下面的方式写这个规则时,我得到了一个错误

斜杠规则:'/'(选项{greedy=false;}:.)*'/'


我使用的是ANTLR3.2。如何编写此规则斜杠规则?

多元素:'/*'(选项{贪婪=错误;}:)'*/';在发布问题时,我给出了“/*”,但当我提交时,它被改为“/”,几乎所有满足多重注释的标记都满足斜杠规则。这是有意的吗?您是否确定此规则正确地放置在lexer中,也许您应该提供一些上下文(斜杠规则的含义和错误消息);以“//”开头的模式到SINGLELINECOMMENT;以“/”开头,后跟除*和/以外的任何内容的模式。有可能吗?。我不确定这些lexer规则的编写顺序。现在,我遵循代码段中提到的相同顺序,您的语法后面没有“
”/”后跟除*以外的任何内容,/
您是否尝试在斜杠规则后插入“
~'*”
(非星号)。