我想用ANTLR寫一個語法,但我不明白antlr如何與遞歸選擇一起工作。Antlr和左遞歸規則
我閱讀了大量的文章和論壇,但解決不了我的問題......
這裏是我的語法的一小部分:
grammar MyGrammar;
ComponentRef :
IDENT ('[' Expression (',' Expression)* ']')?
;
Expression:
ComponentRef ('(' FunctionArguments ')')?
;
FunctionArguments:
Expression (',' Expression)*
;
IDENT: ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*;
我還是不明白爲什麼它不起作用......沒有歧義!不是嗎?
下面是一些代碼示例我的語法應該一起工作:
a
a[b,c]
a[b[c], d]
func(a)
func(a,b,c)
func[a](b,c)
func(a[b], c[d])
func[a](b[c])
通過提前謝謝!
Dead link re:「ANTLR Tutorials」 –
@Jared,問答已被刪除:將其替換爲archive.org中副本的鏈接 –