У меня есть ошибка (как сказано в заголовке) с одним правилом, которое я не знаю, как решить.правило имеет не-LL (*) решение из-за рекурсивных вызовов правил
я написал следующее правило:
FunctionArguments returns FunctionArgs::IFunctionArguments :
FunctionArgumentsNormal
| FunctionArgumentsForIter
;
FunctionArgumentsNormal returns FunctionArgs::IFunctionArguments :
{FunctionArgs::FunctionArguments} args+=Expression (',' args+=Expression)*
| {FunctionArgs::FunctionArguments} argNames+=NamedArguments (',' argNames+=NamedArguments)*
;
FunctionArgumentsForIter returns FunctionArgs::IFunctionArguments :
{FunctionArgs::FunctionArgumentsIterator} exp=Expression 'for' iterators=ForIterator
;
Не могли бы вы помочь мне разрешить его левым факторинга это выражение или давать любые другие решения, пожалуйста?
Укажите, хотите ли вы использовать грамматику Xtext или грамматику ANTLR. Они совершенно разные, и это влияет на то, как рекурсия может быть решена. –
Я использую грамматику Xtext –