Как написать отношение [1..1] и [1..*] в xText

Я хочу определить грамматику в Xtext для конечного автомата. Мое правило состоит в том, что один конечный автомат должен иметь [1.. * ] переходов, [1..1] начальное состояние, [1..1] конечное состояние и [0.. * ] промежуточных состояний.

StateMachine:
    'InitialState' initialstate = InitialState
    'FinalState' finalstate = FinalState
    'States' '{' states+=State* '}' 
    'Transitions' '{' transitions+=Transitions ( "," transitions+=Transitions)* '}' 
    ;

Вот как я написал правила, но когда я генерирую модель ecore, я замечаю, что отношение начального состояния и конечного состояния с конечным автоматом [0..1], а не [1..1], как я хотел это, а связь между переходом и машиной состояний [0.. * ], а не [1..*]. Можете ли вы помочь мне выяснить, где я ошибся?

Спасибо


person MDE    schedule 25.06.2020    source источник


Ответы (1)


Xtext не накладывает никаких ограничений на файл ecore на основе конкретного синтаксиса. Их ограничения уже были бы подтверждены/гарантированы грамматикой/конкретным синтаксисом.

Если вы хотите иметь более ограниченное эко-ядро, вам нужно переключиться со сгенерированной на импортированную метамодель.

person Sebastian Zarnekow    schedule 25.06.2020
comment
То есть вы говорите, что правила написаны правильно, но они просто не отображаются в метамодели ecore? - person MDE; 25.06.2020