Я хочу создать однозначную грамматику в формах BNF и EBNF для логических выражений, состоящих из:
• констант tt и ff,
• переменных (имя переменной начинается с заглавной буквы. После строки ни одного, одной или нескольких заглавных и строчных букв) и
• операций и или или xor, => («следует»), <=> («эквивалент»),
• скобки (), которые можно использовать для определения последовательности выполнения других операций в вычислении значения выражения.
Грамматика EBNF должна быть отформатирована так, чтобы в любом правиле экспорта не было левой рукиСимвол появляется в соответствующем выражении справа.
Грамматика такая, что и, или, xor, <=> ассоциируются слева, но => ассоциируются справа.
Моя идея дляграмматика:
<Expr>→<Const> <Var>
<Var>→ <Var> <Factor>
<Const>→ <tt>│<ff>
<Factor>→<and>│or│ xor│<=>│=>
<Var>→ <Aab>│<Dck>│<Ej>│<H>│< Gi>│<L>
Я не уверен, что это правильная форма для однозначной грамматики БНФ.
Как я могу связать => вправо?