1
我剛剛遇到了ANTLR 4.2.2的一個奇怪問題:ANTLR4相互左遞歸
考慮一個(簡化的)java語法。這並不編譯:
classOrInterfaceType
: (classOrInterfaceType) '.' Identifier
| Identifier
;
ANTLR輸出下列錯誤:
error(119): Java.g4::: The following sets of rules are mutually left-recursive [classOrInterfaceType]
是的,我也看到了左遞歸。但我沒有看到一個相互左遞歸,只是一個通常的。
當我刪除了圍繞(classOrInterfaceType)
的括號時,它編譯得很好。當然,括號是多餘的,但語法是自動生成的,並且代碼生成器在某些情況下總是插入括號。那麼這裏有什麼問題?
可能是一個錯誤,在報告他們:https://github.com/antlr/antlr4/issues?milestone=4&sort=updated&state=open –
好主意,做了! https://github.com/antlr/antlr4/issues/564 – gexicide