Ce document a pour objectif de résumer les informations transmises en TP et de vous rappeler les chemins d'accès aux différents outils utilisés en TP ainsi qu'à leur documentation.
- Chemins d'accès aux outils au CRIO UNIX de Dauphine
- Commandes de compilation pour créer un analyseur lexical
- Commandes de compilation pour créer un analyseur syntaxique
- Commandes de compilation pour créer un analyseur lexical et syntaxique
1 - INTRODUCTION
Lex et Flex sont des outils générateurs d'analyseur lexical.
Yacc et Bison sont des outils générateur d'analyseur syntaxique.Flex et Bison sont des produits GNU. Vous pouvez trouver une documentation aux adresses suivantes :
2 - UTILISATION DES OUTILS AU CRIO UNIX
Pour pouvoir utiliser les outils lex (resp. flex) et yacc (resp. bison) au CRIO UNIX de Dauphine il faut ajouter les alias suivants :Le compilateur C/C++ au CRIO UNIX se situe dans le répertoire : /opt/SUNWspro/bin/cc
- alias lex /usr/ccs/bin/lex
- alias flex /home/perm/iupgmi/manouvri/flex-2.5.4/bin/flex
- alias yacc /usr/ccs/bin/yacc
- alias bison /home/perm/iupgmi/manouvri/bison-1.25/bison
Pour revenir en haut de la page
3 - CREATION D'UN ANALYSEUR LEXICAL
Pour créer un analyseur lexical, il faut créer un fichier de spécification monfichier.l dont le format est le suivant :%{
déclarations de variable et inclusion de bibliothèques en C
%}
définitions :
<identificateur><expression régulière>
...
%%
règles :
<expression régulière> {<commandes en C>}
%%
<programme principal et fonctions en C>
Nous verrons exactement comment écrire ce fichier en TP.Les outils lex et flex génèrent le code source en C de l'analyseur lexical à partir du fichier de spécification qui leur est fourni en paramètre. Ce fichier par défaut s'appelle lex.yy.c
La commande pour générer le code C de l'analyseur est la suivante :
lex monfichier.l ou flex monfichier.l
Il reste à compiler le code source pour obtenir un analyseur lexical exécutable par la commande :L'option -ll lie le source C à la bibliothèque de lex ou flex.cc lex.yy.c -llL'analyseur lexical par défaut lit l'entrée standard. Il est possible de redéfinir l'entrée en modifiant la valeur de la variable yyin.
Pour revenir en haut de la page
4 - CREATION D'UN ANALYSEUR SYNTAXIQUE
Pour créer un analyseur syntaxique, il faut créer un fichier monfichier.y dont le format est le suivant :%{
déclarations de variable 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>
Nous verrons exactement comment écrire ce fichier en TP.Pour générer le code source C de l'analyseur syntaxique à partir du fichier monfichier.y, il faut utiliser la commande suivante :
Les outils yacc et bison génèrent un fichier C, nommé par défaut y.tab.c permettant de réaliser l'analyse syntaxique.yacc monfichier.y ou bison monfichier.yIl reste à le compiler :
L'option -ly lie le source C à la bibliothèque de yaccou bison. L'exécutable créé est un analyseur syntaxique.cc yac.tab.c -lyPour revenir en haut de la page
5- COORDINATION DES DEUX ANALYSES
Pour combiner les deux analyses, il faut générer un fichier en-tête de l'analyseur syntaxique qui définit les tokens par une commande %token et inclure ce fichier dans le fichier à partir duquel est généré l'analyseur lexical.Dans le fichier de spécification monfichier.l, il faut donc ajouter les informations suivantes dans la partie déclaration :
#include "y.tab.h"extern int yyval;
Pour que yacc ou bison génèrent un fichier .h en plus du source en C, il faut utiliser l'option -d. La compilation s'effectue par conséquent comme suit :yacc -d monfichier.y ou bison -d monfichier.ylex monfichier.l ou flex monfichier.lcc -o analyseur lex.yy.c y.tab.c -ll -lyPour revenir en haut de la page
6-LIENS INTERESSANTS
- D'autres sites de documentation :
Quelques informations sur lex, yacc, flex et bison
Manuel de flex en ligne
Manuel de bison en ligne
Dernière mise à jour : 5 avril 2001 ©Maude Manouvrier