(tout d'abord ce n'est pas HW, j'ai toutes les réponses)grammaire BNF et l'opérateur associativité
j'ai simple grammaire BNF
<UNIT> ::= (<CLAUSE>) | a | b | c
<ITEM> ::= not <UNIT> | <UNIT>
<CLAUSE> ::= <CLAUSE> and <PHRASE> | <PHRASE>
<PHRASE> ::= <ITEM> | <ITEM> or <PHRASE>
opérateur and
est associative gauche (récursif gauche) opérateur or
est associative droite (cette fois-ci, il est récursive droite)
Compte tenu de l'expression c and b or not a and (not b or c)
, pourquoi est le plus à droite « et » est plus élevé dans l'arbre d'analyse syntaxique?
Le chemin, je vois c **and** b or not a and (not b or c)
plus à gauche devrait être plus élevé dans l'arbre d'analyse. professeur
Notre fourni cette réponse:
Voici l'arbre d'analyse syntaxique dans une notation 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')))))
')'))))