我有下面的ANTLR语法,它是Terrence给出的一个例子。
grammar b;
backtrack
: (cast ';')=> cast ';'
| (e ';')=> e ';'
| e '.'
;
cast: '(' ID ')' ;
e : '(' e ')'
| ID
;
ID : 'a'..'z'+ ;然而,当我试图用回溯规则解释(a)时,我得到了一个MisMatchedToken异常。我问这个问题是因为我有一个更大的语法,我用它来做编译器。我有一个确切的问题。如果我删除其中一个规则,一切都会正常工作(当然,除了通过删除的规则进行的输入解析),但是当我添加语法谓词时,我在解析时会得到一个错误,即使语法已经编译(与b语法完全一样)。
有什么建议或想法可以解释为什么会这样吗?谢谢。
发布于 2011-12-13 05:06:55
如果你在ANTLRWorks中遇到这个错误,我会尝试在一个示例程序中加载语法,看看你是否会得到同样的错误。ANTLRWorks有时会在有效输入时给出错误。
https://stackoverflow.com/questions/8480493
复制相似问题