0
我試圖在Xtext中實現一個簡單的語法到識別由ID和函數調用組成的函數調用(Java類語法)。即無論由ID和/或函數組成的鏈,總是以函數結尾。由於遞歸規則調用,Xtext規則具有非LL(*)決策
示例源代碼:a.b(a).c(b()).b.d();
我寫了下面的Xtext語法:
Test: Chain ';';
Chain: (IdOrFunc '.')* ID Func;
IdOrFunc: ID Func?;
Func: '(' IdOrFunc? ')';
不過,我得到試圖生成通過的Xtext語言代碼時出現以下錯誤:
[fatal] rule ruleChain has non-LL(*) decision due to recursive rule invocations reachable from alts 1,2. Resolve by left-factoring or using syntactic predicates or using backtrack=true option.
如果我將Chain
規則中的ID
替換爲'xyz'
,即語法開始工作。 e。
Chain: (IdOrFunc '.')* 'xyz' Func;`
我在做什麼錯?
你的語法做了不同的事情 - 它檢測到例如: a();一個;一個()灣;意圖是限定名稱以函數結尾,即a.b()。c.d()。 –