Вы должны включить более точный вопрос. Вот некоторые общие предложения.
Структура правила для реляционных операций должна быть такой же, как и для арифметических операций. В обоих случаях у вас есть бинарные операторы. Разница в том, что один возвращает число, другой возвращает логическое значение. Хотя 1 + 1 >= 3
обычно является допустимым синтаксисом, другие комбинации, такие как 1 >= 2 => 5
, скорее всего, недопустимы. Конечно, есть исключения. Некоторые языки допускают его как синтаксический сахар для множества операций. Другие просто определяют, что логические значения - это просто целые числа (0
и 1
). Вам (или вашему назначению) решать, как будет выглядеть синтаксис.
В любом случае, вы, вероятно, не просто хотите добавить эти правила к expr
, но создаете новое правило. Таким образом, вы различаете реляционные и арифметические выражения.
expr :
expr PLUS expr |
expr MINUS expr |
... ;
relational_expr :
expr LESSTHAN expr |
expr GREATERTHAN expr ;
assignment :
identifier '=' relational_expr |
identifier '=' expr ;