2017-02-18 21 views
2

美好的一天。我想知道,如果我想要做一個代表例如Java中的if-else子句的Backus-Naur形式,我將如何使用OR和AND來處理多個條件?我知道AND可以簡單地用& &表示,並且用OR來表示。但由於垂直線已經是BNF語法的一部分,我想知道這是否允許。如何在BNF中表示Java風格的OR?

回答

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>