Université Aix Marseille - L3 Informatique Compilation TD3
Analyse LL(1)
1 Sous-grammaire des instructions
La grammaire de Pascal proposée en TP comporte les règles suivantes :
Statement → AssignmentStatement | ProcedureCall
AssignmentStatement → VariableAccess AFFECT Expression
ProcedureCall → ID [ ’(’ ParameterList ’)’ ]
VariableAccess → ID [ ’[’ Expression ’]’ ]
1. Calculez les premiers de AssignmentStatement et de ProcedureCall
2. La grammaire proposée est elle LL(1) ?
3. Modifiez les règles précédentes de manière à rendre la grammaire LL(1).
2 Syntaxe enrichie
La grammaire de Pascal proposée en TP utilise les méta-caractères [ et ] pour indiquer l’option-
nalité et les méta-caractères { et } pour indiquer l’optionnalité itérée.
Soit la grammaire G = h{A, B, C}, {a, b, c}, P, Ai, où P est composé des règles suivantes :
A → a [B] {C}
B → b
C → c
1. Ecrire une grammaire hors-contexte G0 générant le même langage que G.
2. Ecrire en C un analyseur descendant prédictif pour G0
3. Ecrire en C un analyseur descendant prédictif pour G
3 Grammaire des palindromes
1. Ecrire une grammaire hors-contexte G générant le langage L des palindromes sur l’alphabet
{a, b}.
2. Construire la table LL(1) de G
3. Pour quelle raison G n’est elle pas LL(1) ?
4. Peut-on construire une grammaire LL(k) générant le langage L ?
4 ai bj ck
Soit le langage L = {ai bj ck , avec i = j ou i = k}
1. Ecrire une grammaire hors-contexte G générant L.
2. Construire la table LL(1) de G
3. Pour quelle raison G n’est elle pas LL(1) ?
4. Peut-on construire une grammaire LL(k) générant le langage L ?