首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >antlr3令牌问题

antlr3令牌问题
EN

Stack Overflow用户
提问于 2010-03-29 16:22:36
回答 1查看 739关注 0票数 1

我可以构造一个令牌吗?

代码语言:javascript
复制
ENDPLUS: '+' (options (greedy = false;):.) * '+'
       ;

只有在前面有一个令牌PRE而不包括在ENDPLUS中的情况下,才会被lexer考虑?

代码语言:javascript
复制
PRE: '<<'
       ;

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2010-03-29 19:21:10

不,AFAIK,这是不可能的。只有通过使用属性input并在其上调用LA(int) (前瞻性)来对lexer或解析器中的令牌流进行前瞻性控制。例如,以下lexer规则:

代码语言:javascript
复制
Token
  :  {input.LA(2) == 'b'}? . 
  ;

匹配任何单个字符,只要该单个字符后面跟着一个b。不幸的是,在令牌流中没有input.LA(-1)特性可查看。{...}?部分被称为“句法谓词”,如果您想知道,或者想搜索它。

本文讨论了如何解决这个问题,并给出了一些建议:http://www.antlr.org/pipermail/antlr-interest/2004-July/008673.html

注意,这是{greedy=false;},而不是(greedy=false;)

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

https://stackoverflow.com/questions/2539539

复制
相关文章

相似问题

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