Я здесь пытаюсь выяснить, знает ли кто-нибудь, как я могу в своей грамматике создать валидатор, который проверяет, использует ли мой шаг только ингредиенты, которые я объявил ранее в разделе «ингредиенты + = ингредиент +». Я пробовал много вещи, но безуспешно, я не знаю, как я могу получить все ингредиенты, которые объявлены внутри моей функции проверки.
Ты все для своего времени.
Вот соответствующая часть моего грамматика.
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+
'}';