Avril 2025
Institut Supérieur d’Informatique de Mahdia
Matiére : Technique de Compilation
TP2: Analyse syntaxique
Objectif :
Nous allons créer un analyseur qui reconnaît :
• Des mots-clés comme if, else, while.
• Des identifiants (noms de variables).
L'exemple comprendra les étapes de création du fichier Flex pour l'analyse lexicale et du fichier Bison
pour l'analyse syntaxique.
Étape 1 : Définir l'analyseur lexical avec Flex
Nous allons définir un analyseur lexical qui reconnaît les mots-clés (if, else, while) et les identifiants.
Fichier lexer.l (analyseur lexical)
Étape 2 : Définir l'analyseur syntaxique avec Bison
L'analyseur syntaxique Bison va utiliser les tokens définis par Flex pour reconnaître des structures
simples.
Fichier parser.y (analyseur syntaxique)
Tokens : Les tokens IF, ELSE, WHILE, et IDENTIFIER sont utilisés pour construire des expressions
syntaxiques.
Grammaire : Une déclaration peut être :
• IF IDENTIFIER ELSE IDENTIFIER : Un if suivi de deux identifiants (ex. if x else y).
Avril 2025
• WHILE IDENTIFIER : Un while suivi d'un identifiant (ex. while x).
• Un simple IDENTIFIER : Une déclaration d'identifiant (ex. x).
Actions : Chaque règle dans la grammaire exécute une action, comme afficher des messages avec les
identifiants rencontrés.
Étape 3 : Compilation et exécution
Générer le fichier lex.yy.c avec Flex
Exécute la commande pour générer le fichier lex.yy.c à partir de lexer.l
Générer le fichier parser.tab.c avec Bison
Ensuite, génère les fichiers parser.tab.c et parser.tab.h avec la commande :
bison -d parser.y
Compiler le projet avec GCC
Après avoir généré les fichiers, compile-les en un exécutable avec la commande suivante :
gcc lex.yy.c parser.tab.c