Vous êtes sur la page 1sur 2

A

Enseignantes :
ECOLE
Compilation Fatma SBIAA
PLURIDISCIPLINAIRE 3éme Informatique Nourchène OUERHANI
INTERNATIONALE AU : 2020/2021 Nour El Houda GAALOUL

TP 2 : Analyse Syntaxique
Les grammaires non contextuelles avec Bison
Objectifs :
Apprendre à coder sous Bison & Créer un analyseur syntaxique avec cet outil.

I. Description de l’outil Bison :


Le programme Bison est un tel générateur d’analyseurs syntaxiques. Il prend en entrée
un fichier source constitué essentiellement des productions d’une grammaire non
contextuelle G et sort à titre de résultat un programme C qui, une fois compilé, est un
analyseur syntaxique pour le langage L(G).

1. Structure d’un fichier source pour Bison


Un fichier source pour Bison doit avoir un nom terminé par « .y ». Il est fait de trois
sections, délimitées par deux lignes réduites aux symboles %%.

%{
Déclaration de variables et inclusion de bibliothèques en C
%}
Définitions
%%
Règles de réduction de la grammaire :
symbole non terminal : liste de symboles {action 1 en C}
| liste de symboles {action 2 en C}
| ……..
;
%%
<programme principal et fonctions en C>
Fonction main ()
yyparse() ;

2. Fonctionnement de Bison :
Un analyseur syntaxique requiert pour travailler un analyseur lexical qui lui délivre le
flot d’entrée sous forme d’unités lexicales. Par défaut, Bison suppose que l’analyseur
lexical disponible a été fabriqué par Flex. Autrement dit, sans qu’il faille de déclaration

-1-
A
Enseignantes :
ECOLE
Compilation Fatma SBIAA
PLURIDISCIPLINAIRE 3éme Informatique Nourchène OUERHANI
INTERNATIONALE AU : 2020/2021 Nour El Houda GAALOUL

spéciale pour cela, le programme produit par Bison comporte des appels de la fonction
yylex aux endroits où l’acquisition d’une unité lexicale est nécessaire.

Exercice1 :
1) Développer un analyseur syntaxique pour la grammaire suivante :
EXP  Var=ENTIER+ENTIER;

EXP  Var=ENTIER*ENTIER;

EXP  Var=ENTIER-ENTIER;

EXP  Var=ENTIER /ENTIERNN;

2) Cet analyseur se contentera d’afficher le message "Expression acceptée !" lorsque le


mot en entrée est analysé avec succès.

Exercice 2 :
1) Développer un analyseur syntaxique pour la grammaire de l’instruction if :
if (condition) then
2) L’analyseur affichera un message "Compilation terminée avec succès !" si l’instruction
saisie en entrée est valide.

Exercice 3 :
1) Développer un analyseur syntaxique pour la grammaire de l’instruction for suivante:
for (Var=Entier ; Var<Entier ; Var++)
2) L’analyseur affichera un message "Compilation terminée avec succès !" si l’instruction
saisie en entrée est valide.

-2-

Vous aimerez peut-être aussi