(в первую очередь это не HW, у меня есть ответы на все вопросы)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')))))
')'))))