Добрый день. Мне было интересно, если бы я хотел сделать форму Бэксу-Наура, представляющую, например, предложение if-else в Java, как бы я мог использовать OR и AND для нескольких условий? Я знаю, что AND может быть просто представлен & & и OR с ||. Но поскольку вертикальные линии уже являются частью синтаксиса BNF, я хотел бы знать, разрешено ли это в любом случае.Как представить Java-стиль ИЛИ в BNF?
2
A
ответ
0
От: https://users-cs.au.dk/amoeller/RegAut/JavaBNF.html
<conditional or expression> ::= <conditional and expression> | <conditional or expression> || <conditional and expression>
<conditional and expression> ::= <inclusive or expression> | <conditional and expression> && <inclusive or expression>
Logical или является довольно неоднозначен, поскольку у вас есть два ||
, но вы всегда можете представлять литералы жирным или другим шрифтом или кавычками.
Другой пример здесь: https://users-cs.au.dk/amoeller/RegAut/JavaBNF.html использует жирный шрифт и шрифт фиксированной ширины для литералов.
Wiki показывает котировки, который является безопасным, если вы не имеете несколько шрифтов, доступных:
<expression> ::= <list> | <list> <opt-whitespace> "|" <opt-whitespace> <expression>