首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ANTLR:具有相似字面量的MismatchedTokenException

ANTLR:具有相似字面量的MismatchedTokenException
EN

Stack Overflow用户
提问于 2010-08-10 06:36:42
回答 1查看 851关注 0票数 1

我有以下几点

代码语言:javascript
复制
rule : A B;

A : 'a_e' | 'a';
B : '_b';

输入:

代码语言:javascript
复制
a_b    //dont work
a_e_b  //works

为什么lexer在匹配这一点上有问题?当ANTLR匹配'a_b‘中的'a_’时,它是不是应该回溯或使用前视或其他方法来查看它不能匹配标记A,然后决定将标记A匹配为'a‘,然后继续将标记B匹配为'_b'?

我想我误解了一些关于antlr如何工作的非常基本的东西。我试着在ANTLR文档和谷歌上阅读它。但我几乎没有使用词法分析器和解析器的经验。

非常感谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2011-12-10 02:17:45

你需要使用一个语法谓词来区分'a','_','e‘和'b’。

下面的方法将会起作用:

代码语言:javascript
复制
grammar T;

rule : A B;

B : '_b';
A :     ('a_e')=>'a_e'
    | 'a'  ;

这会像您预期的那样解析'a_e_b‘和'a_b’。

建议查看ANTLR参考资料的第13章。

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

https://stackoverflow.com/questions/3444717

复制
相关文章

相似问题

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