美好的一天。我想知道,如果我想做一个Backus-Naur表单代表例如Java中的if-else子句,我将如何在多个条件下使用OR和AND?我知道AND可以用&&和简单表示,而OR用||表示。但由于垂直线已经是BNF语法的一部分,我想知道是否允许这样做。
答案 0 :(得分: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>
逻辑或非常明确,因为您有两个||
,但您始终可以用粗体或其他字体或引号表示文字。
此处的另一个示例:https://users-cs.au.dk/amoeller/RegAut/JavaBNF.html使用粗体和固定宽度字体作为文字。
如果您没有多种可用字体,Wiki会显示最安全的引号:
<expression> ::= <list> | <list> <opt-whitespace> "|" <opt-whitespace> <expression>