TP 05
TP 05
TP 05
TD n○5
LL(1), le retour
1
où le fichier test.txt contient un mot à tester. Attention, il ne faut pas mettre d’espace
ni de saut de ligne dans le fichier donné en entrée.
3. Compléter le fichier parser.ml afin de faire une analyse LL(1) de la grammaire LL(1)
correspondante au langage ci-dessus. Le symbole $ correspond à EOF.
S → n ∣ (S) ∣ S + S ∣ S − S
Le symbole “n” correspondra, dans la partie programmée, à des entiers sans signe “+” ni “−”.
Récupérer les fichiers fournis. On fournit ici un lexer, qui servira à lire des entiers et autres
mots-clés.
1. Donner une grammaire LL(1) avec axiome Z pour le langage L1 .
Compléter le parser.ml pour qu’il fasse l’analyse.
2. On définit L2 à partir de L1 en ajoutant la possibilité de faire des opérations avec des noms
de variables, que l’on représente par un nouveau terminal “n”. Il faudra aussi modifier les
autres fichiers : token.ml, tree.ml, . . .
3. On définit le langage L3 des expressions "let v = a1 and v = a2 ... and v = ak in b" avec
les ai dans L1 , et b dans L2 .