如何在 BNF 中表示 Java-style OR?

how to represent Java-style OR in BNF?

美好的一天。我想知道,如果我想做一个 Backus-Naur 形式来表示 Java 中的 if-else 子句,我将如何使用 OR 和 AND 处理多个条件?我知道 AND 可以简单地用 && 表示,OR 用 || 表示。但是由于垂直线已经是 BNF 语法的一部分,我想知道是否允许这样做。

发件人: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>

逻辑 or 非常明确,因为您有两个 ||,但您始终可以用粗体或其他字体或引号表示文字。

另一个示例:https://users-cs.au.dk/amoeller/RegAut/JavaBNF.html 对文字使用粗体和固定宽度的字体。

Wiki 显示在您没有多种可用字体时最安全的引号:

<expression> ::= <list> | <list> <opt-whitespace> "|" <opt-whitespace> <expression>