ANTLR匹配除
除了一个特定的令牌之外,还有什么方法可以匹配antlr中的令牌吗 我有一条规则规定,ANTLR匹配除,antlr,antlr3,Antlr,Antlr3,除了一个特定的令牌之外,还有什么方法可以匹配antlr中的令牌吗 我有一条规则规定,'可以是一个ID。现在我有一个特定的情况,我想匹配一个ID,但在这个特殊的情况下,我希望它忽略'选项。有可能吗?我想 (ID {!$ID.text.equals("_")}?) 应该这样做(如果您使用Java作为目标语言)。否则,你必须以你的语言能够理解的方式来写 简而言之,这将检查文本是否不等于“u”,然后子规则才会匹配 另一种可能的方法是: id: ID | '_' ; ID: // lexer
'
可以是一个ID。现在我有一个特定的情况,我想匹配一个ID,但在这个特殊的情况下,我希望它忽略'
选项。有可能吗?我想
(ID {!$ID.text.equals("_")}?)
应该这样做(如果您使用Java作为目标语言)。否则,你必须以你的语言能够理解的方式来写
简而言之,这将检查文本是否不等于“u”,然后子规则才会匹配
另一种可能的方法是:
id: ID
| '_'
;
ID: // lexer rule to match every valid identifier EXCEPT '_' ;
这样,每当你指的是“或者”\uu“或者任何其他ID”,你就用
ID
来匹配这个,如果你不允许使用“\uu”,你就可以用\uu
我浏览了一下你的问题,其中许多问题似乎都有不错的答案,但大多数都没有被接受。你似乎喜欢自己对问题的回答…:)@halfwarp答案是否合格?如果是,请接受。