Ошибка в этой строке:
"trans" label=ID ":" source=[State] "->" target=[State] ";" ;
В Xtext [Foo]
означает «перекрестную ссылку на экземпляр типа Foo
». Is НЕ означает «ссылку на правило грамматики». Xtext НЕ генерирует тип State
из-за этой строки:
State returns Declaration:
где returns Declaration
означает «Правило State
вернет тип Declaration
» и, следовательно, тип State
не требуется.
Следующая грамматика исправит это:
StateMachine:
declarations+=Declaration*;
Declaration:
Transition |
State;
Transition:
"trans" label=ID ":" source=[State] "->" target=[State] ";" ;
State:
"state" id=ID ";" ;
Здесь Xtext будет генерировать типы для Declaration
, Transition
и State
, где Transition
и State
получены из Declaration
.