-1
有什么办法来匹配ANTLR令牌除了特定的一种?ANTLR匹配所有令牌除了
我有其中指出一个'_'
可以是ID的规则。现在,我有我想匹配ID的具体情况,但在这种特殊情况下,我希望它忽略'_'
替代。可能吗?
有什么办法来匹配ANTLR令牌除了特定的一种?ANTLR匹配所有令牌除了
我有其中指出一个'_'
可以是ID的规则。现在,我有我想匹配ID的具体情况,但在这种特殊情况下,我希望它忽略'_'
替代。可能吗?
我认为像
(ID {!$ID.text.equals("_")}?)
应该这样做(如果你使用的是Java为目标语言)。否则,您必须以您的语言能够理解的方式编写semantic predicate。
总之,这将检查文本是否不等于“_”只有这样,子规则的匹配。
另一种可能的方式做到这一点:
id: ID
| '_'
;
ID: // lexer rule to match every valid identifier EXCEPT '_' ;
这样一来,当你的意思是“无论是‘_’或任何其它ID”,你用id
匹配这一点,如果你不允许“_”,你可以使用_
。
我通过你的问题,浏览了一下,很多人似乎有像样的答案,但他们大部分都是不能接受的。您_do_似乎有利于自己的答案,你提供给您的问题... :) –
@halfwarp其答案是否有资格作为接受吗?如果是,请接受它。 –