Xtext validator - проверить все элементы X на проверку правильности элемента Y - PullRequest
0 голосов
/ 25 апреля 2020

Я здесь пытаюсь выяснить, знает ли кто-нибудь, как я могу в своей грамматике создать валидатор, который проверяет, использует ли мой шаг только ингредиенты, которые я объявил ранее в разделе «ингредиенты + = ингредиент +». Я пробовал много вещи, но безуспешно, я не знаю, как я могу получить все ингредиенты, которые объявлены внутри моей функции проверки.

Ты все для своего времени.

Вот соответствующая часть моего грамматика.

Model:
    recipe+=Recipe*;

...

Ingredient:
    'ingredient' (
        (liquid_name=LIQUID_INGREDIENTS_NAME liquid_measure=LIQUID_TYPES_MEASURE)
        |
        (solid_Name=SOLID_INGREDIENTS_NAME solid_measure=SOLID_TYPES_MEASURE)
        )
        quantity=INT;

Step:
    '['
        action=ACTION_TYPES
        ('ingredient' ((ingredient_StepLiquid=LIQUID_INGREDIENTS_NAME)|(ingredient_StepSolid=SOLID_INGREDIENTS_NAME)) | 'place' place=TM_PLACES | 'utensil' utensil=TM_UTENSILS)
        ('time' minutes=INT ':' seconds=INT ',')?
        ('speed' velocidade=SPEED_TYPES ',')?
        ('temperature' temp=TM_TEMPS 'ºC')?
    ']';

Recipe:
    'recipe' recipeName=STRING '{'
        ingredients+=Ingredient+
        steps+=Step+
    '}';

1 Ответ

0 голосов
/ 26 апреля 2020

Точно так же, как @Christian Deitrich сказал

Я могу использовать любой eContainer, и получить мой рецепт с помощью броска с моего шага или через мою грамматику с помощью перекрестных ссылок.

...