Я пытаюсь написать грамматику, которая позволяет мне написать любое выражение в выражении if.antlr4 grammar non greedy
Мои, если заявление будет что-то вроде ниже: , если [х == 1] [делать некоторые вещи]
Выражение должно быть любое выражение Python.
Если я использую не-жадное соответствие, как показано ниже, как я могу указать '[' или ']' как часть выражения? Понимание списка будет проблемой с моей грамматикой.
ifval
: (SPACE)* IF (SPACE|WORD)* SQRLBRACE .*? SQRRBRACE (WORD|SPACE)* <blah> <blah>;
WORD : ('a'..'z' | 'A'..'Z'| '_' | '-')+;
NUM : [0-9];
NEWLINE : '\r'? '\n' | '\r';
SPACE : (' ' | '\t') ;
SQRRBRACE: ']';
SQRLBRACE: '[';
Не понимаю. Кажется, вы ориентируетесь на Python, но если на этом языке не используются квадратные скобки. –
Я пишу небольшой язык, который позволяет мне писать какие-то английские заявления и преобразовывать «английский как» в Python. Чтобы оценить выражения, мне пришлось добавить инструкцию if к языку. В утверждении if я надеялся поддержать любое питоновское выражение. Надеюсь, у меня есть смысл – kgunjikar