Я пытаюсь написать грамматику с помощью 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])
Заранее спасибо!