Académique Documents
Professionnel Documents
Culture Documents
Introduction
Tout langage de programmation possède une grammaire qui permet de décrire sa structure syntaxique.
Question: P ϵ L(G) ?
Principe général
Recevoir une suite d'unités lexicales de la part de l'analyseur lexical et essayer de construire un arbre de dérivation
en suivant les productions de la grammaire.
Deux cas:
Deux méthodes
Rappel
Grammaire: G=(T, N, S, P) où
4. les fils d'un nœud X sont β1, β2, , βn si et seulement si on a une production X β1, β2, , βn
Analyseur LL(1)
But: construire un arbre syntaxique descendant efficace sans rebroussement appelé analyseur prédictif non récursif
Principe: construire d'une manière descendante l'arbre syntaxique de la racine (axiome) vers les feuilles (les
symboles terminaux)
Exemple
{S aSbT|cT|d, T aT|bS|c}
Mot = "accbbd"
a S b T
c T b S
c d
Le problème de l'analyseur descendant est de prédire la production à appliquer pour développer un non terminal.
Pour ce faire, l'analyseur utilise une table d'analyse dont la construction s'appuie sur deux ensembles: PREMIER et
SUIVANT.
L'ensemble PREMIER
L'ensemble PREMIER d'une production αβ, noté Prem(α), est l'ensemble de tous les symboles terminaux, y
compris ε, qui peuvent commencer toute chaîne qui se dérive de la production α.
1. (AαX)P, Suiv(X)=Suiv(X)Suiv(A)
2. (AαX)P et εPrem(), Suiv(X)=Suiv(X)Prem()
3. (AαX)P et εPrem(), Suiv(X)=Suiv(X)Prem()Suiv(A)
}
Fin
Debut
Une grammaire G=(T,N,S,P)
n nombre de productions
m nombre de symboles terminaux
P={P1, P2, …, Pn} ensemble des productions
TableLL1[n,m] table d'analyse
Pour toute production (Piα)P
{
}
Chaque case vide est un cas d'erreur.
Fin
Cours de compilation, Analyse syntaxique Mr HAMMOUDA Mohamed
USDB, 3ème année licence, SI
Propriétés d'une grammaire LL(1)
Une grammaire ambiguë, récursive à gauche ou non factorisée à gauche ne peut être LL(1).