我有以下ANTLR語法,它是Terrence Parr給出的一個例子。ANTLR語法pred
grammar b;
backtrack
: (cast ';')=> cast ';'
| (e ';')=> e ';'
| e '.'
;
cast: '(' ID ')' ;
e : '(' e ')'
| ID
;
ID : 'a'..'z'+ ;
然而,當我試圖解釋(a)
與原路返回規則,我得到一個MisMatchedToken例外。我問這個問題是因爲我有一個更大的語法,我用它來編譯器。我在那裏遇到了確切的問題。如果我刪除了其中一條規則,那麼一切正常(當然,除了通過刪除規則的輸入分析之外),但是當我添加語法謂詞時,我會在解析時得到一個錯誤,即使語法編譯(與b完全一樣語法)。
任何建議或想法,爲什麼這可能是?謝謝。