Prise de contact avec lex

De Wicri Manuel
Révision datée du 9 juin 2020 à 17:26 par imported>Jacques Ducloy (Deuxième exemple, extraction de dates)
Principe de fonctionnement de lex

Lex est un générateur d'analyseurs lexicaux. Il est étroitement associé, dans son fonctionnement, au langage C et disponible en standard sur les systèmes Unix.

En sciences de l'information, il est utilisé notamment pour faire des reformatages et des filtres de sélection.

Pré-requis

Un premier exemple

Lex est un générateur d'analyseurs lexicaux. Il est basé sur un ensemble de règles de reconnaissance lexicale auxquelles sont associées des instructions en langage C. L'analyseur Lex produit un programme C (qui sera ensuite compilé).

Dans les cas simples il permet d'effectuer des substitutions. Voici un exemple, montrant comment créer un fichier source lex :

cat <<... >ortho.lex
%%
chevals     printf("chevaux");
hibous      printf("hiboux");
%%
main() {
  yylex();
}
...

Faire une commande « ls » et vérifier la présence du fichier « ortho.lex ».

La compilation se déroule ici en 2 temps.

On va d'abord générer un programme C en faisant simplement :

lex ortho.lex
(ou flex ortho.lex sur certaines distributions).

Une commande ls montre qu'un fichier nommé lex.yy.c a été créé (on peut le lister avec une commande cat).

Pour compiler, il faut maintenant appeler le compilateur C :

gcc lex.yy.c -ll -o ortho

Pour tester ce programme, on crée d'abord un jeu de test, exemple :

cat <<... >testOrtho.txt
les hibous regardent les chevals. 
...

Puis on vérifie avec :

./ortho <testOrtho.txt

Deuxième exemple, extraction de dates

Le deuxième programme va extraire les dates d'un texte.

%%
%%