我有以下ANTLR语法,它是Terrence Parr给出的一个例子。ANTLR语法pred
grammar b;
backtrack
: (cast ';')=> cast ';'
| (e ';')=> e ';'
| e '.'
;
cast: '(' ID ')' ;
e : '(' e ')'
| ID
;
ID : 'a'..'z'+ ;
然而,当我试图解释(a)
与原路返回规则,我得到一个MisMatchedToken例外。我问这个问题是因为我有一个更大的语法,我用它来编译器。我在那里遇到了确切的问题。如果我删除了其中一条规则,那么一切正常(当然,除了通过删除规则的输入分析之外),但是当我添加语法谓词时,我会在解析时得到一个错误,即使语法编译(与b完全一样语法)。
任何建议或想法,为什么这可能是?谢谢。