ANTLR匹配除

ANTLR匹配除,antlr,antlr3,Antlr,Antlr3,除了一个特定的令牌之外,还有什么方法可以匹配antlr中的令牌吗 我有一条规则规定,'可以是一个ID。现在我有一个特定的情况,我想匹配一个ID,但在这个特殊的情况下,我希望它忽略'选项。有可能吗?我想 (ID {!$ID.text.equals("_")}?) 应该这样做(如果您使用Java作为目标语言)。否则,你必须以你的语言能够理解的方式来写 简而言之,这将检查文本是否不等于“u”,然后子规则才会匹配 另一种可能的方法是: id: ID | '_' ; ID: // lexer

除了一个特定的令牌之外,还有什么方法可以匹配antlr中的令牌吗

我有一条规则规定,
'
可以是一个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答案是否合格?如果是,请接受。