У меня есть простая небольшая грамматика, которая постоянно выдает ошибку множественных альтернатив, когда я пытаюсь создать артефакты Xtext. Грамматика такова:
grammar org.xtext.example.hyrule.HyRule with org.eclipse.xtext.xbase.Xbase
generate hyRule (You can only use links to eclipse.org sites while you have fewer than 25 messages )
Start:
rules+=Rule+
;
Rule:
'FOR''PAYLOAD'payload=PAYLOAD'ELEMENTS' elements+=JvmFormalParameter+'CONSTRAINED' 'BY' expressions+= XExpression*;
PAYLOAD:
"Stacons"|"PFResults"|"any"
;
И точная ошибка, которую я получаю:
![warning(200): ../org.xtext.example.hyrule/src-gen/org/xtext/example/hyrule/parser/antlr/internal/InternalHyRule.g:3197:2: Decision can match input such as "{RULE_ID, '=>', '('}" using multiple alternatives: 1, 2
As a result, alternative(s) 2 were disabled for that input
error(201): ../org.xtext.example.hyrule/src-gen/org/xtext/example/hyrule/parser/antlr/internal/InternalHyRule.g:3197:2: The following alternatives can never be matched: 2][1]
Я прикрепил диаграмму синтаксиса для сгенерированной грамматики antlr в antlrworks и ясно вижу несколько альтернатив (JvmFormalParameter может соответствовать RULE_ID через правило JvmTypeReference или ValidID).
Так что похоже, что JvmFormalParameter неоднозначен... Извиняюсь за мою глупость, но может ли кто-нибудь указать, что мне не хватает? Есть ли способ преодолеть эту двусмысленность при использовании правила JvmFormalParameter в моей грамматике?