Soit G la grammaire :
E -> T + E | T
T -> F * T | F
F -> ( E ) | id
obtenue à partir de la grammaire ETF en inversant l'ordre des symboles autour des opérateurs. On rappelle en annexe l'automate utilisé pour l'analyse ascendante de la grammaire ETF (dans le format produit par bison) ; dans les états 4 et 10 il y a un conflit décalage/réduction, résolu en examinant Suivant (expr).
Construire l'automate analogue pour G ; utiliser la même présentation que dans l'annexe, ou toute autre qui soit claire et concise ; respecter l'algorithme de numérotation des états employé par bison.
Quels sont les états pour lesquels l'automate comporte des conflits décalage/réduction ?
Calculer la fonction Suivant pour chacun des trois symboles non-terminaux. Les conflits précédents peuvent-ils être résolus en examinant cette table ? autrement dit G est-elle SLR(1) ?
Soit une somme de n termes x = t1 + t2 + ... tn. Quelle est la différence entre l'arbre de dérivation de x dans la grammaire ETF et dans G ?
Après lecture et réduction de t1 par un analyseur syntaxique ascendant, quel est l'état de la pile si la grammaire utilisée est a) ETF b) G ? Même question après lecture et réduction de + t2, + t3, etc.
En déduire une différence fondamentale de comportement entre les analyseurs ascendants pour les grammaires ETF et G.
La grammaire C comporte la règle suivante :
liste-instructions -> liste-instructions instruction | instruction
Que se passe-t-il si l'on remplace cette règle par :
liste-instructions -> instruction liste-instructions | instruction ?
Note : cette question est la suite logique de la précédente.