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]
antlrworks で生成された antlr 文法の構文図を添付し、複数の選択肢を明確に確認できます (JvmFormalParameter は、JvmTypeReference または ValidID ルールを介して RULE_ID と一致できます)。
JvmFormalParameter があいまいなように見えます...私の愚かさをお詫びしますが、誰かが私が見逃していることを指摘できますか? 私の文法で JvmFormalParameter ルールを使用するときに、このあいまいさを克服する方法はありますか?