В моем dsl я пробовал следующее:
grammar org.xtext.example.mydsl.Recipe with org.eclipse.xtext.common.Terminals
generate recipe "http://www.xtext.org/example/mydsl/Recipe"
Model:
recipe=Recipe;
enum Ingredients:
Meat | Fish | Rice
;
enum Steps_Type:
Cut | Boil | Prepare
;
Recipe:
'Recipe'
'{'
ingredient+=Ingredient+
step+=Step+
'}'
;
Ingredient:
'ingredient' ingredient_name=Ingredients quantity=INT ('kg' | 'g')
;
Step:
'['
step=Steps_Type
ingredient=[Ingredient]
']'
;
Моя проблема на шаге. Я хочу, чтобы появились только те ингредиенты, которые я объявил в рецепте. Например, если я сделаю это:
Recipe {
ingredient Fish 1 kg
ingredient Meat 2kg
[
Cut
]
}
Ниже выреза я хочу, чтобы в качестве опций отображались только fi sh и meat.
Я читал о перекрестных ссылках, но могу ' заставить его работать при использовании enum для ограничения ввода пользователя.