БНФ правила строительства
У меня есть этот вопрос, и это немного сбивает с толку.
Создайте правила BNF для логического выражения, состоящего из одного или нескольких идентификаторов или выражений отношений, разделенных операторами: или (#), и (&). Оператор & имеет более высокий приоритет, чем оператор #. Реляционное выражение - это один или несколько идентификаторов, разделенных оператором == или!=, Которые имеют одинаковый приоритет. Идентификатор или реляционное выражение могут быть сведены на нет, если перед ним стоит оператор (?), Который имеет самый высокий приоритет после скобок. Отрицательное выражение должно быть заключено в круглые скобки. Все операторы в логическом выражении оцениваются слева направо. Круглая скобка () может использоваться в логическом выражении.
У меня есть этот ответ, но я чувствую, что это неправильно. Кроме того, я застрял с идентификатором нетерминальным. Ребята, у вас есть предложения?
<bool_exp> --> <rel_exp> |<identifier>
<rel_exp> --> <identifier> | <rel_exp> “==” <identifier> |<rel_exp> “!=” <identifier>
<identifier> --> <term> | <identifier> “#” <term>
<term> --> <factor> | <term> “&” <factor>
<factor> --> <root> | “?” “(” <root> “)”
<root> --> <id> | “(” <identifier> “)”
<id> --> ???