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])
よろしくお願いします!