ANTLR 匹配除
除了特定的令牌之外,还有什么方法可以匹配 antlr 中的令牌吗?
我有一条规则,规定 '_'
可以是 ID。现在我有一个特定的情况,我想匹配一个 ID,但在这种特殊情况下,我希望它忽略 '_'
替代方案。是否可以?
Is there any way to match a token in antlr except a specific one?
I have a rule which states that a '_'
can be an ID. Now I have a specific situation in which I want to match an ID, but in this particular case I want it to ignore the '_'
alternative. Is it possible?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我认为
应该这样做(如果您使用 Java 作为目标语言)。否则,您将必须以您的方式编写语义谓词语言能够理解它。
简而言之,这将检查文本是否不等于“_”,然后子规则才会匹配。
另一种可能的方法是:
这样,每当您指的是“'_'或任何其他 ID”时,您都可以使用
id
来匹配它,如果您不允许“_”,则可以使用_
。I think something like
should do it (if you are using Java as target language). Otherwise you will have to write that semantic predicate in a way that your language understands it.
In short, this will check whether the text does not equal "_" and only then will the subrule match.
Another possible way to do this:
That way, whenever you mean "either '_' or any other ID", you use
id
to match this, if you disallow "_", you can use_
.