(Прежде всего, это не HW, у меня есть все ответы)
У меня есть простая грамматика 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 )
самое левое должно быть выше в дереве разбора.
Наш профессор дал такой ответ:
Вот дерево разбора в неряшливой записи.
(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')))))
')' ))))