首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从标识符词法规则中排除标记

从标识符词法规则中排除标记
EN

Stack Overflow用户
提问于 2014-09-08 19:25:16
回答 1查看 296关注 0票数 0

我有标识词词法规则:

代码语言:javascript
复制
Identifier
:   ( 'a'..'z' | 'A'..'Z' | '_' ) ( 'a'..'z' | 'A'..'Z' | '_' | '0'..'9' )*
;

LogicalOr和LogicalAnd规则:

代码语言:javascript
复制
LogicalOr       :   '| ' | '||' | OR;
LogicalAnd      :   '&' | '&&' | AND;
fragment Or : '[Oo][Rr]';
fragment And : '[Aa][Nn][Dd]';

字符串“和”和“或”被识别为标识符,而不是logicalAnd和logicalOr。有人能帮我解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-08 19:28:53

有两个潜在的问题在发挥作用。首先,ANTLR 3不支持ANTLR 4引入的字符类语法。您的Or片段实际上与输入[Oo][Rr]匹配;它不匹配ORoroR。这同样适用于您的And片段。您需要这样写规则:

代码语言:javascript
复制
fragment
Or
  : ('O' | 'o') ('R' | 'r')
  ;

如果这不能解决您的问题,则需要确保您的LogicalOrLogicalAnd规则位于语法中的Identifier规则之前。首先出现的规则将确定为此输入序列分配了何种令牌类型。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25731642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档