Techniques de compilation
Chapitre 2 : Analyse syntaxique
Dr. Sana HAMDI
Plan
1. Introduction
2. Approche descendante (Top-down)
3. Approche ascendante (Bottom-up)
2
Introduction
L’analyseur syntaxique vérifie si la chaîne d’UL produite par
l’analyseur lexical peut être engendrée par la grammaire du
langage source. La sortie d’un analyseur syntaxique peut être
soit un arbre syntaxique soit un arbre abstrait.
3
Introduction
4
Introduction
Analyseur Analyseur Arbre
lexical mots syntaxique
Automate à pile
générateur
d’analyseur
syntaxique
Grammaire non contextuelle (BNF)
5
Grammaire
Une grammaire est un ensemble de règles de production utilisée
pour engendrer un langage.
La syntaxe est spécifiée par une grammaire
Une grammaire est composée de règles
Forme d’une règle : symbole -> expression
Dans l’expression, on peut avoir deux sortes de symboles :
• Ceux du langage final : les symboles terminaux (les unités
lexicales reconnues dans l’analyse lexicale)
• Des symboles intermédiaires : les variables ou non-
terminaux
6
Grammaire non contextuelle
Grammaire non contextuelle
Une grammaire non contextuelle permet une
représentation finie d'un langage (éventuellement fini).
C’est un ensemble de règles précises de construction de
mots ou de phrases.
• Une grammaire non contextuelle G est un quadruplet:
G = (VN,VT, S, P) où :
VN est l‘ensemble fini des symboles non terminaux,
VT est l‘ensemble des symboles terminaux,
S est le symbole initial VN,
P est l’ensemble fini de règles de production de la
forme: avec V+ et V* (V = (VT VN)).
8
Grammaire non contextuelle
9
Grammaire non contextuelle
10
Exemple d’une grammaire pour une
expression arithmétique simple
Est ce que (3-5+4)*6 respecte cette
grammaire ?
Alphabet X = {Nombre, (, ), +, -, *, / } Utiliser les règles de la grammaire pour la
Non terminaux N={E} générer
Axiome de départ S=E règle 5 règle 2 règle 3
Règles : E E*E (E)*E (E+E)*E
1. E nombre règle 4
2. E (E)
3. E E + E (E-E+E)*E
4. E E – E règle 1
5. E E * E
6. E E / E (nombre–nombre+nombre)*nombre
(3-5+4)*6
Grammaire non contextuelle
12
Elimination de la récursivité à gauche
13
Elimination de la récursivité à gauche
14
Elimination de la récursivité à gauche
15
Factorisation à gauche
16
Factorisation à gauche
17
18