1
(這一切首先是不是硬件,我知道所有的答案)BNF語法和操作關聯性
我有一個簡單的BNF語法
<UNIT> ::= (<CLAUSE>) | a | b | c
<ITEM> ::= not <UNIT> | <UNIT>
<CLAUSE> ::= <CLAUSE> and <PHRASE> | <PHRASE>
<PHRASE> ::= <ITEM> | <ITEM> or <PHRASE>
and
運算符是左關聯的(左手遞歸) or
運算符是右結合(這一次,它是右手遞歸)
鑑於表達c and b or not a and (not b or c)
,爲什麼是最合適的「和」是在分析樹高?
的方式,我看到c **and** b or not a and (not b or c)
左邊最高應該是在解析樹中更高。
我們的教授提供了這樣的回答:
這裏是在lispy符號解析樹。
(clause (clause (clause (phrase (item (unit 'c'))))
'and'
(phrase (item (unit 'b'))
'or'
(phrase (item 'not'
(unit 'a')))))
**'and'** // is higher in parse tree
(phrase (item (unit '('
(clause (phrase (item 'not’(unit 'b'))
'or'
(phrase (item (unit 'c')))))
')'))))