324
Deuxi` eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´ e des Sciences, Oujda Fili` ere SMI - S5 Module Th´ eorie des Langages & Compilation Universit´ e Mohamed Premier Octobre, 2013

Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

  • Upload
    others

  • View
    23

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Deuxieme partie

Chapitre 1 : Analyse lexicale

Prof. Abdelmajid DarghamFaculte des Sciences, Oujda

Filiere SMI - S5

Module Theorie des Langages & Compilation

Universite Mohamed Premier

Octobre, 2013

Page 2: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Sommaire du chapitre 1

Introduction a la compilation

Analyse lexicale

Flex : Fast Lexer

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 3: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Sommaire du chapitre 1

Introduction a la compilation

Analyse lexicale

Flex : Fast Lexer

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 4: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Sommaire du chapitre 1

Introduction a la compilation

Analyse lexicale

Flex : Fast Lexer

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 5: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Sommaire du chapitre 1

Introduction a la compilation

Analyse lexicale

Flex : Fast Lexer

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 6: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Qu’est ce qu’un compilateur ?

Un programme qui lit en entree un code source ecritdans un langage, le traduit et fournit en sortie un codecible ecrit dans un autre langage.

Au cours de ce processus de traduction, un role importantd’un compilateur est de signaler au programmeur lapresence d’erreurs dans le code source.

Un compilateur permet donc de s’afranchir de lamachine utilisee en favorisant une programmation dehaut niveau.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 7: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Qu’est ce qu’un compilateur ?

Un programme qui lit en entree un code source ecritdans un langage, le traduit et fournit en sortie un codecible ecrit dans un autre langage.

Au cours de ce processus de traduction, un role importantd’un compilateur est de signaler au programmeur lapresence d’erreurs dans le code source.

Un compilateur permet donc de s’afranchir de lamachine utilisee en favorisant une programmation dehaut niveau.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 8: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Qu’est ce qu’un compilateur ?

Un programme qui lit en entree un code source ecritdans un langage, le traduit et fournit en sortie un codecible ecrit dans un autre langage.

Au cours de ce processus de traduction, un role importantd’un compilateur est de signaler au programmeur lapresence d’erreurs dans le code source.

Un compilateur permet donc de s’afranchir de lamachine utilisee en favorisant une programmation dehaut niveau.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 9: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Qu’est ce qu’un compilateur ?

Un programme qui lit en entree un code source ecritdans un langage, le traduit et fournit en sortie un codecible ecrit dans un autre langage.

Au cours de ce processus de traduction, un role importantd’un compilateur est de signaler au programmeur lapresence d’erreurs dans le code source.

Un compilateur permet donc de s’afranchir de lamachine utilisee en favorisant une programmation dehaut niveau.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 10: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Figure: Schema simplifie d’un compilateur

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 11: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Figure: Schema simplifie d’un compilateur

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 12: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Qualites d’un bon compilateur

1 Le code produit est correct

2 Le code produit s’execute rapidement

3 Le processus de compilation est rapide

4 Possibilite de la compilation separee

5 Un bon diagnostic pour les erreurs de syntaxe

6 Le code produit est bien optimise

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 13: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Qualites d’un bon compilateur

1 Le code produit est correct

2 Le code produit s’execute rapidement

3 Le processus de compilation est rapide

4 Possibilite de la compilation separee

5 Un bon diagnostic pour les erreurs de syntaxe

6 Le code produit est bien optimise

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 14: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Qualites d’un bon compilateur

1 Le code produit est correct

2 Le code produit s’execute rapidement

3 Le processus de compilation est rapide

4 Possibilite de la compilation separee

5 Un bon diagnostic pour les erreurs de syntaxe

6 Le code produit est bien optimise

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 15: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Qualites d’un bon compilateur

1 Le code produit est correct

2 Le code produit s’execute rapidement

3 Le processus de compilation est rapide

4 Possibilite de la compilation separee

5 Un bon diagnostic pour les erreurs de syntaxe

6 Le code produit est bien optimise

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 16: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Qualites d’un bon compilateur

1 Le code produit est correct

2 Le code produit s’execute rapidement

3 Le processus de compilation est rapide

4 Possibilite de la compilation separee

5 Un bon diagnostic pour les erreurs de syntaxe

6 Le code produit est bien optimise

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 17: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Qualites d’un bon compilateur

1 Le code produit est correct

2 Le code produit s’execute rapidement

3 Le processus de compilation est rapide

4 Possibilite de la compilation separee

5 Un bon diagnostic pour les erreurs de syntaxe

6 Le code produit est bien optimise

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 18: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Qualites d’un bon compilateur

1 Le code produit est correct

2 Le code produit s’execute rapidement

3 Le processus de compilation est rapide

4 Possibilite de la compilation separee

5 Un bon diagnostic pour les erreurs de syntaxe

6 Le code produit est bien optimise

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 19: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Schema d’un compilateur traditionel

Figure: Schema d’un compilateur traditionnel en deux passes

La phase frontale (ou pahse d’analyse) traduit le codesource en une representation intermediaire (RI).

La phase arriere (ou phase de synthese) traduit la RIen un code cible.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 20: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Schema d’un compilateur traditionel

Figure: Schema d’un compilateur traditionnel en deux passes

La phase frontale (ou pahse d’analyse) traduit le codesource en une representation intermediaire (RI).

La phase arriere (ou phase de synthese) traduit la RIen un code cible.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 21: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Schema d’un compilateur traditionel

Figure: Schema d’un compilateur traditionnel en deux passes

La phase frontale (ou pahse d’analyse) traduit le codesource en une representation intermediaire (RI).

La phase arriere (ou phase de synthese) traduit la RIen un code cible.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 22: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Schema d’un compilateur traditionel

Figure: Schema d’un compilateur traditionnel en deux passes

La phase frontale (ou pahse d’analyse) traduit le codesource en une representation intermediaire (RI).

La phase arriere (ou phase de synthese) traduit la RIen un code cible.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 23: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Peut-on construire m × n compilateurs avec m + n pieces ?

Ecrire m parties frontales.

Ecrire n parties arrieres.

Tout cela en utilisant une seule RI.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 24: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Peut-on construire m × n compilateurs avec m + n pieces ?

Ecrire m parties frontales.

Ecrire n parties arrieres.

Tout cela en utilisant une seule RI.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 25: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Peut-on construire m × n compilateurs avec m + n pieces ?

Ecrire m parties frontales.

Ecrire n parties arrieres.

Tout cela en utilisant une seule RI.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 26: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Peut-on construire m × n compilateurs avec m + n pieces ?

Ecrire m parties frontales.

Ecrire n parties arrieres.

Tout cela en utilisant une seule RI.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 27: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Peut-on construire m × n compilateurs avec m + n pieces ?

Ecrire m parties frontales.

Ecrire n parties arrieres.

Tout cela en utilisant une seule RI.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 28: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Peut-on construire m × n compilateurs avec m + n pieces ?

Ecrire m parties frontales.

Ecrire n parties arrieres.

Tout cela en utilisant une seule RI.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 29: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Partrie frontale

Role de la partie frontale d’un compilateur :

1 Reconnaissance des elements du programme source.2 Detection des erreurs.3 Production de la RI.4 Preparation du code pour la partie arriere.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 30: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Partrie frontale

Role de la partie frontale d’un compilateur :

1 Reconnaissance des elements du programme source.2 Detection des erreurs.3 Production de la RI.4 Preparation du code pour la partie arriere.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 31: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Partrie frontale

Role de la partie frontale d’un compilateur :

1 Reconnaissance des elements du programme source.2 Detection des erreurs.3 Production de la RI.4 Preparation du code pour la partie arriere.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 32: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Partrie frontale

Role de la partie frontale d’un compilateur :

1 Reconnaissance des elements du programme source.

2 Detection des erreurs.3 Production de la RI.4 Preparation du code pour la partie arriere.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 33: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Partrie frontale

Role de la partie frontale d’un compilateur :

1 Reconnaissance des elements du programme source.2 Detection des erreurs.

3 Production de la RI.4 Preparation du code pour la partie arriere.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 34: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Partrie frontale

Role de la partie frontale d’un compilateur :

1 Reconnaissance des elements du programme source.2 Detection des erreurs.3 Production de la RI.

4 Preparation du code pour la partie arriere.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 35: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Partrie frontale

Role de la partie frontale d’un compilateur :

1 Reconnaissance des elements du programme source.2 Detection des erreurs.3 Production de la RI.4 Preparation du code pour la partie arriere.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 36: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Partrie frontale

Analyseur lexical (Scanner) :1 Role principal : delivrer les tokens a partir des flots de

caracteres (les unites de base de la syntaxe).x = x + y;devient :<id, x>=<id, x> + <id, y>;

2 Role secondaire : eliminer les elements inutiles(espaces, tabulations, commentaires).

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 37: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Partrie frontale

Analyseur lexical (Scanner) :1 Role principal : delivrer les tokens a partir des flots de

caracteres (les unites de base de la syntaxe).x = x + y;devient :<id, x>=<id, x> + <id, y>;

2 Role secondaire : eliminer les elements inutiles(espaces, tabulations, commentaires).

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 38: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Partrie frontale

Analyseur lexical (Scanner) :

1 Role principal : delivrer les tokens a partir des flots decaracteres (les unites de base de la syntaxe).x = x + y;devient :<id, x>=<id, x> + <id, y>;

2 Role secondaire : eliminer les elements inutiles(espaces, tabulations, commentaires).

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 39: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Partrie frontale

Analyseur lexical (Scanner) :1 Role principal : delivrer les tokens a partir des flots de

caracteres (les unites de base de la syntaxe).

x = x + y;devient :<id, x>=<id, x> + <id, y>;

2 Role secondaire : eliminer les elements inutiles(espaces, tabulations, commentaires).

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 40: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Partrie frontale

Analyseur lexical (Scanner) :1 Role principal : delivrer les tokens a partir des flots de

caracteres (les unites de base de la syntaxe).x = x + y;

devient :<id, x>=<id, x> + <id, y>;

2 Role secondaire : eliminer les elements inutiles(espaces, tabulations, commentaires).

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 41: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Partrie frontale

Analyseur lexical (Scanner) :1 Role principal : delivrer les tokens a partir des flots de

caracteres (les unites de base de la syntaxe).x = x + y;devient :

<id, x>=<id, x> + <id, y>;2 Role secondaire : eliminer les elements inutiles

(espaces, tabulations, commentaires).

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 42: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Partrie frontale

Analyseur lexical (Scanner) :1 Role principal : delivrer les tokens a partir des flots de

caracteres (les unites de base de la syntaxe).x = x + y;devient :<id, x>=<id, x> + <id, y>;

2 Role secondaire : eliminer les elements inutiles(espaces, tabulations, commentaires).

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 43: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Partrie frontale

Analyseur lexical (Scanner) :1 Role principal : delivrer les tokens a partir des flots de

caracteres (les unites de base de la syntaxe).x = x + y;devient :<id, x>=<id, x> + <id, y>;

2 Role secondaire : eliminer les elements inutiles(espaces, tabulations, commentaires).

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 44: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Partrie frontale

Role de l’analyseur syntaxique (Parser) :1 Reconnaıtre les unites syntaxiques.2 Guider l’analyse semantique (traduction dirigee par la

syntaxe).3 Construire la RI.4 Produire les messages d’erreurs adequats.5 Faciliter la correction des erreurs.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 45: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Partrie frontale

Role de l’analyseur syntaxique (Parser) :1 Reconnaıtre les unites syntaxiques.2 Guider l’analyse semantique (traduction dirigee par la

syntaxe).3 Construire la RI.4 Produire les messages d’erreurs adequats.5 Faciliter la correction des erreurs.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 46: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Partrie frontale

Role de l’analyseur syntaxique (Parser) :

1 Reconnaıtre les unites syntaxiques.2 Guider l’analyse semantique (traduction dirigee par la

syntaxe).3 Construire la RI.4 Produire les messages d’erreurs adequats.5 Faciliter la correction des erreurs.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 47: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Partrie frontale

Role de l’analyseur syntaxique (Parser) :1 Reconnaıtre les unites syntaxiques.

2 Guider l’analyse semantique (traduction dirigee par lasyntaxe).

3 Construire la RI.4 Produire les messages d’erreurs adequats.5 Faciliter la correction des erreurs.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 48: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Partrie frontale

Role de l’analyseur syntaxique (Parser) :1 Reconnaıtre les unites syntaxiques.2 Guider l’analyse semantique (traduction dirigee par la

syntaxe).

3 Construire la RI.4 Produire les messages d’erreurs adequats.5 Faciliter la correction des erreurs.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 49: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Partrie frontale

Role de l’analyseur syntaxique (Parser) :1 Reconnaıtre les unites syntaxiques.2 Guider l’analyse semantique (traduction dirigee par la

syntaxe).3 Construire la RI.

4 Produire les messages d’erreurs adequats.5 Faciliter la correction des erreurs.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 50: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Partrie frontale

Role de l’analyseur syntaxique (Parser) :1 Reconnaıtre les unites syntaxiques.2 Guider l’analyse semantique (traduction dirigee par la

syntaxe).3 Construire la RI.4 Produire les messages d’erreurs adequats.

5 Faciliter la correction des erreurs.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 51: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Partrie frontale

Role de l’analyseur syntaxique (Parser) :1 Reconnaıtre les unites syntaxiques.2 Guider l’analyse semantique (traduction dirigee par la

syntaxe).3 Construire la RI.4 Produire les messages d’erreurs adequats.5 Faciliter la correction des erreurs.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 52: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Partie frontale : Analyse semantique

L’analyseur semantique controle le code pour s’assurerqu’il est conforme aux specifications du langage.

Il controle :

1 le typage.2 le flot d’execution : branchements apres un break.3 unicite des objets, des etiquettes, ...etc.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 53: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Partie frontale : Analyse semantique

L’analyseur semantique controle le code pour s’assurerqu’il est conforme aux specifications du langage.

Il controle :

1 le typage.2 le flot d’execution : branchements apres un break.3 unicite des objets, des etiquettes, ...etc.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 54: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Partie frontale : Analyse semantique

L’analyseur semantique controle le code pour s’assurerqu’il est conforme aux specifications du langage.

Il controle :

1 le typage.2 le flot d’execution : branchements apres un break.3 unicite des objets, des etiquettes, ...etc.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 55: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Partie frontale : Analyse semantique

L’analyseur semantique controle le code pour s’assurerqu’il est conforme aux specifications du langage.

Il controle :

1 le typage.

2 le flot d’execution : branchements apres un break.3 unicite des objets, des etiquettes, ...etc.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 56: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Partie frontale : Analyse semantique

L’analyseur semantique controle le code pour s’assurerqu’il est conforme aux specifications du langage.

Il controle :

1 le typage.2 le flot d’execution : branchements apres un break.

3 unicite des objets, des etiquettes, ...etc.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 57: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Partie frontale : Analyse semantique

L’analyseur semantique controle le code pour s’assurerqu’il est conforme aux specifications du langage.

Il controle :

1 le typage.2 le flot d’execution : branchements apres un break.3 unicite des objets, des etiquettes, ...etc.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 58: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Partie arriere : Generation de code intermediaire

Le generateur de code intermediaire construitexplicitement une representation intermediaire duprogramme source.

Cette representation intermediaire doit etre facile aproduire et facile a traduire en langage cible.

Exemples de representations intermediaires :

Code a trois adresses.AST : (Abstract Syntax Tree) arbre de syntaxeabstrait.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 59: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Partie arriere : Generation de code intermediaire

Le generateur de code intermediaire construitexplicitement une representation intermediaire duprogramme source.

Cette representation intermediaire doit etre facile aproduire et facile a traduire en langage cible.

Exemples de representations intermediaires :

Code a trois adresses.AST : (Abstract Syntax Tree) arbre de syntaxeabstrait.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 60: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Partie arriere : Generation de code intermediaire

Le generateur de code intermediaire construitexplicitement une representation intermediaire duprogramme source.

Cette representation intermediaire doit etre facile aproduire et facile a traduire en langage cible.

Exemples de representations intermediaires :

Code a trois adresses.AST : (Abstract Syntax Tree) arbre de syntaxeabstrait.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 61: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Partie arriere : Generation de code intermediaire

Le generateur de code intermediaire construitexplicitement une representation intermediaire duprogramme source.

Cette representation intermediaire doit etre facile aproduire et facile a traduire en langage cible.

Exemples de representations intermediaires :

Code a trois adresses.AST : (Abstract Syntax Tree) arbre de syntaxeabstrait.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 62: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Partie arriere : Generation de code intermediaire

Le generateur de code intermediaire construitexplicitement une representation intermediaire duprogramme source.

Cette representation intermediaire doit etre facile aproduire et facile a traduire en langage cible.

Exemples de representations intermediaires :

Code a trois adresses.

AST : (Abstract Syntax Tree) arbre de syntaxeabstrait.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 63: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Partie arriere : Generation de code intermediaire

Le generateur de code intermediaire construitexplicitement une representation intermediaire duprogramme source.

Cette representation intermediaire doit etre facile aproduire et facile a traduire en langage cible.

Exemples de representations intermediaires :

Code a trois adresses.AST : (Abstract Syntax Tree) arbre de syntaxeabstrait.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 64: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Partie arriere

Optimisation de code intermediaire :

L’optimiseur de code intermediaire tente d’ameliorer lecode intermediaire de facon que le code machineresultant s’execute le plus rapidement possible.

Generation de code cible :

Le generateur de code cible produit le code cible,c’est-a-dire du code machine translatable ou du codeen langage d’assemblage.Les emplacements memoire pour chacune des variablesutilisees dans le programme sont selectionnees.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 65: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Partie arriere

Optimisation de code intermediaire :

L’optimiseur de code intermediaire tente d’ameliorer lecode intermediaire de facon que le code machineresultant s’execute le plus rapidement possible.

Generation de code cible :

Le generateur de code cible produit le code cible,c’est-a-dire du code machine translatable ou du codeen langage d’assemblage.Les emplacements memoire pour chacune des variablesutilisees dans le programme sont selectionnees.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 66: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Partie arriere

Optimisation de code intermediaire :

L’optimiseur de code intermediaire tente d’ameliorer lecode intermediaire de facon que le code machineresultant s’execute le plus rapidement possible.

Generation de code cible :

Le generateur de code cible produit le code cible,c’est-a-dire du code machine translatable ou du codeen langage d’assemblage.Les emplacements memoire pour chacune des variablesutilisees dans le programme sont selectionnees.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 67: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Partie arriere

Optimisation de code intermediaire :

L’optimiseur de code intermediaire tente d’ameliorer lecode intermediaire de facon que le code machineresultant s’execute le plus rapidement possible.

Generation de code cible :

Le generateur de code cible produit le code cible,c’est-a-dire du code machine translatable ou du codeen langage d’assemblage.Les emplacements memoire pour chacune des variablesutilisees dans le programme sont selectionnees.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 68: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Partie arriere

Optimisation de code intermediaire :

L’optimiseur de code intermediaire tente d’ameliorer lecode intermediaire de facon que le code machineresultant s’execute le plus rapidement possible.

Generation de code cible :

Le generateur de code cible produit le code cible,c’est-a-dire du code machine translatable ou du codeen langage d’assemblage.

Les emplacements memoire pour chacune des variablesutilisees dans le programme sont selectionnees.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 69: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Partie arriere

Optimisation de code intermediaire :

L’optimiseur de code intermediaire tente d’ameliorer lecode intermediaire de facon que le code machineresultant s’execute le plus rapidement possible.

Generation de code cible :

Le generateur de code cible produit le code cible,c’est-a-dire du code machine translatable ou du codeen langage d’assemblage.Les emplacements memoire pour chacune des variablesutilisees dans le programme sont selectionnees.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 70: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Schema global d’un compilateur

Le module de la table des symboles : une fonctionimportante d’un compilateur est d’enregistrer les uniteslexicales et de collecter les informations sur ces unites.

Le module de la gestion des erreurs : une fonctionessentielle d’un compilateur est de detercter et delivrer leserreurs de syntaxe trouvees dans le programme source.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 71: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Schema global d’un compilateur

Le module de la table des symboles : une fonctionimportante d’un compilateur est d’enregistrer les uniteslexicales et de collecter les informations sur ces unites.

Le module de la gestion des erreurs : une fonctionessentielle d’un compilateur est de detercter et delivrer leserreurs de syntaxe trouvees dans le programme source.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 72: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Schema global d’un compilateur

Le module de la table des symboles : une fonctionimportante d’un compilateur est d’enregistrer les uniteslexicales et de collecter les informations sur ces unites.

Le module de la gestion des erreurs : une fonctionessentielle d’un compilateur est de detercter et delivrer leserreurs de syntaxe trouvees dans le programme source.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 73: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 74: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 75: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Environnement d’un compilateur

Figure: Schema de l’environnement d’un compilateur

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 76: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Environnement d’un compilateur

Figure: Schema de l’environnement d’un compilateurProf. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 77: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Environnement d’un compilateur

Pre-processeur : module effectuant des transformationssur le code source avant compilation (Macro-expansion,inclusion de fichiers, ...etc).

Assembleur : module qui traduit un code en langaged’assemblage en un code machine translatable(directement passe au relieur-chargeur).

Relieur (ou editeur de liens) : module qui effectue lafusion de plusieurs fichiers contenetant du code machinetranslatable en un unique programme executable.

Chargeur : module qui permet de placer les instructionset les donnees du programme executable auxemplacements appropries.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 78: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Environnement d’un compilateur

Pre-processeur : module effectuant des transformationssur le code source avant compilation (Macro-expansion,inclusion de fichiers, ...etc).

Assembleur : module qui traduit un code en langaged’assemblage en un code machine translatable(directement passe au relieur-chargeur).

Relieur (ou editeur de liens) : module qui effectue lafusion de plusieurs fichiers contenetant du code machinetranslatable en un unique programme executable.

Chargeur : module qui permet de placer les instructionset les donnees du programme executable auxemplacements appropries.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 79: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Environnement d’un compilateur

Pre-processeur : module effectuant des transformationssur le code source avant compilation (Macro-expansion,inclusion de fichiers, ...etc).

Assembleur : module qui traduit un code en langaged’assemblage en un code machine translatable(directement passe au relieur-chargeur).

Relieur (ou editeur de liens) : module qui effectue lafusion de plusieurs fichiers contenetant du code machinetranslatable en un unique programme executable.

Chargeur : module qui permet de placer les instructionset les donnees du programme executable auxemplacements appropries.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 80: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Environnement d’un compilateur

Pre-processeur : module effectuant des transformationssur le code source avant compilation (Macro-expansion,inclusion de fichiers, ...etc).

Assembleur : module qui traduit un code en langaged’assemblage en un code machine translatable(directement passe au relieur-chargeur).

Relieur (ou editeur de liens) : module qui effectue lafusion de plusieurs fichiers contenetant du code machinetranslatable en un unique programme executable.

Chargeur : module qui permet de placer les instructionset les donnees du programme executable auxemplacements appropries.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 81: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Introduction a la compilation

Environnement d’un compilateur

Pre-processeur : module effectuant des transformationssur le code source avant compilation (Macro-expansion,inclusion de fichiers, ...etc).

Assembleur : module qui traduit un code en langaged’assemblage en un code machine translatable(directement passe au relieur-chargeur).

Relieur (ou editeur de liens) : module qui effectue lafusion de plusieurs fichiers contenetant du code machinetranslatable en un unique programme executable.

Chargeur : module qui permet de placer les instructionset les donnees du programme executable auxemplacements appropries.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 82: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Role de l’analyseur lexical

L’analyseur lexical (scanner) constitue la premiere etapedans la phase d’analyse d’un compilateur.

Sa tache principale est de lire les caracteres d’entree et deproduire comme resultat une suite d’unites lexicales quel’analyseur syntaxique va utiliser.

Cette interaction est couramment implantee en faisant del’analyseur lexical un sous-programme ou une coroutinede l’analyseur syntaxique.

A la reception d’une commande ”prochaine unite lexicale”lancee de l’analyseur syntaxique, l’analyseur lexical lit lescaracteres d’entree jusqu’a ce qu’il puisse identifier laprochaine unite lexicale.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 83: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Role de l’analyseur lexical

L’analyseur lexical (scanner) constitue la premiere etapedans la phase d’analyse d’un compilateur.

Sa tache principale est de lire les caracteres d’entree et deproduire comme resultat une suite d’unites lexicales quel’analyseur syntaxique va utiliser.

Cette interaction est couramment implantee en faisant del’analyseur lexical un sous-programme ou une coroutinede l’analyseur syntaxique.

A la reception d’une commande ”prochaine unite lexicale”lancee de l’analyseur syntaxique, l’analyseur lexical lit lescaracteres d’entree jusqu’a ce qu’il puisse identifier laprochaine unite lexicale.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 84: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Role de l’analyseur lexical

L’analyseur lexical (scanner) constitue la premiere etapedans la phase d’analyse d’un compilateur.

Sa tache principale est de lire les caracteres d’entree et deproduire comme resultat une suite d’unites lexicales quel’analyseur syntaxique va utiliser.

Cette interaction est couramment implantee en faisant del’analyseur lexical un sous-programme ou une coroutinede l’analyseur syntaxique.

A la reception d’une commande ”prochaine unite lexicale”lancee de l’analyseur syntaxique, l’analyseur lexical lit lescaracteres d’entree jusqu’a ce qu’il puisse identifier laprochaine unite lexicale.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 85: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Role de l’analyseur lexical

L’analyseur lexical (scanner) constitue la premiere etapedans la phase d’analyse d’un compilateur.

Sa tache principale est de lire les caracteres d’entree et deproduire comme resultat une suite d’unites lexicales quel’analyseur syntaxique va utiliser.

Cette interaction est couramment implantee en faisant del’analyseur lexical un sous-programme ou une coroutinede l’analyseur syntaxique.

A la reception d’une commande ”prochaine unite lexicale”lancee de l’analyseur syntaxique, l’analyseur lexical lit lescaracteres d’entree jusqu’a ce qu’il puisse identifier laprochaine unite lexicale.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 86: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Role de l’analyseur lexical

L’analyseur lexical (scanner) constitue la premiere etapedans la phase d’analyse d’un compilateur.

Sa tache principale est de lire les caracteres d’entree et deproduire comme resultat une suite d’unites lexicales quel’analyseur syntaxique va utiliser.

Cette interaction est couramment implantee en faisant del’analyseur lexical un sous-programme ou une coroutinede l’analyseur syntaxique.

A la reception d’une commande ”prochaine unite lexicale”lancee de l’analyseur syntaxique, l’analyseur lexical lit lescaracteres d’entree jusqu’a ce qu’il puisse identifier laprochaine unite lexicale.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 87: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Figure: Schema simplifie d’un analyseur lexical

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 88: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Figure: Schema simplifie d’un analyseur lexical

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 89: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Modele

Definition 1.1

En general la meme unitee lexicale peut etre produite ensortie par plusieurs chaınes d’entree.

L’ensemble de ces chaınes est decrit par une regle appeleemodele, associee a l’unite lexicale en question.

On dit que le modele filtre chaque chaıne de l’ensemble.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 90: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Modele

Definition 1.1

En general la meme unitee lexicale peut etre produite ensortie par plusieurs chaınes d’entree.

L’ensemble de ces chaınes est decrit par une regle appeleemodele, associee a l’unite lexicale en question.

On dit que le modele filtre chaque chaıne de l’ensemble.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 91: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Modele

Definition 1.1

En general la meme unitee lexicale peut etre produite ensortie par plusieurs chaınes d’entree.

L’ensemble de ces chaınes est decrit par une regle appeleemodele, associee a l’unite lexicale en question.

On dit que le modele filtre chaque chaıne de l’ensemble.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 92: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Modele

Definition 1.1

En general la meme unitee lexicale peut etre produite ensortie par plusieurs chaınes d’entree.

L’ensemble de ces chaınes est decrit par une regle appeleemodele, associee a l’unite lexicale en question.

On dit que le modele filtre chaque chaıne de l’ensemble.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 93: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Modele

Definition 1.1

En general la meme unitee lexicale peut etre produite ensortie par plusieurs chaınes d’entree.

L’ensemble de ces chaınes est decrit par une regle appeleemodele, associee a l’unite lexicale en question.

On dit que le modele filtre chaque chaıne de l’ensemble.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 94: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Lexeme

Definition 1.2

Un lexeme est une suite de caracteres du programmesource qui concorde avec le modele d’une unite lexicale.

Exemples 1.3

Soit la declaration C suivante : int age = 21;

La chaıne ”age” est un lexeme de l’unite lexicale”identificateur”.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 95: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Lexeme

Definition 1.2

Un lexeme est une suite de caracteres du programmesource qui concorde avec le modele d’une unite lexicale.

Exemples 1.3

Soit la declaration C suivante : int age = 21;

La chaıne ”age” est un lexeme de l’unite lexicale”identificateur”.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 96: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Lexeme

Definition 1.2

Un lexeme est une suite de caracteres du programmesource qui concorde avec le modele d’une unite lexicale.

Exemples 1.3

Soit la declaration C suivante : int age = 21;

La chaıne ”age” est un lexeme de l’unite lexicale”identificateur”.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 97: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Lexeme

Definition 1.2

Un lexeme est une suite de caracteres du programmesource qui concorde avec le modele d’une unite lexicale.

Exemples 1.3

Soit la declaration C suivante : int age = 21;

La chaıne ”age” est un lexeme de l’unite lexicale”identificateur”.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 98: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Lexeme

Definition 1.2

Un lexeme est une suite de caracteres du programmesource qui concorde avec le modele d’une unite lexicale.

Exemples 1.3

Soit la declaration C suivante : int age = 21;

La chaıne ”age” est un lexeme de l’unite lexicale”identificateur”.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 99: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Unites lexicales courantes

1 Mots cles.

2 Identificateurs.

3 Operateurs.

4 Nombres.

5 Chaınes litterales.

6 Symboles speciaux.

7 Delimiteurs.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 100: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Unites lexicales courantes

1 Mots cles.

2 Identificateurs.

3 Operateurs.

4 Nombres.

5 Chaınes litterales.

6 Symboles speciaux.

7 Delimiteurs.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 101: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Unites lexicales courantes

1 Mots cles.

2 Identificateurs.

3 Operateurs.

4 Nombres.

5 Chaınes litterales.

6 Symboles speciaux.

7 Delimiteurs.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 102: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Unites lexicales courantes

1 Mots cles.

2 Identificateurs.

3 Operateurs.

4 Nombres.

5 Chaınes litterales.

6 Symboles speciaux.

7 Delimiteurs.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 103: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Unites lexicales courantes

1 Mots cles.

2 Identificateurs.

3 Operateurs.

4 Nombres.

5 Chaınes litterales.

6 Symboles speciaux.

7 Delimiteurs.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 104: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Unites lexicales courantes

1 Mots cles.

2 Identificateurs.

3 Operateurs.

4 Nombres.

5 Chaınes litterales.

6 Symboles speciaux.

7 Delimiteurs.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 105: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Unites lexicales courantes

1 Mots cles.

2 Identificateurs.

3 Operateurs.

4 Nombres.

5 Chaınes litterales.

6 Symboles speciaux.

7 Delimiteurs.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 106: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Unites lexicales courantes

1 Mots cles.

2 Identificateurs.

3 Operateurs.

4 Nombres.

5 Chaınes litterales.

6 Symboles speciaux.

7 Delimiteurs.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 107: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Exemple d’un modele

Exemples 1.4

En langage C, un identificateur est defini par les reglessuivantes :

1 Un identificateur est une chaıne de caracteres formee pardes lettres (majuscules et minuscules), des chiffres et/oudes caracteres soulignes ” ”.

2 Un identificateur doit commencer par une lettre ou parun caractere souligne ” ”.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 108: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Exemple d’un modele

Exemples 1.4

En langage C, un identificateur est defini par les reglessuivantes :

1 Un identificateur est une chaıne de caracteres formee pardes lettres (majuscules et minuscules), des chiffres et/oudes caracteres soulignes ” ”.

2 Un identificateur doit commencer par une lettre ou parun caractere souligne ” ”.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 109: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Exemple d’un modele

Exemples 1.4

En langage C, un identificateur est defini par les reglessuivantes :

1 Un identificateur est une chaıne de caracteres formee pardes lettres (majuscules et minuscules), des chiffres et/oudes caracteres soulignes ” ”.

2 Un identificateur doit commencer par une lettre ou parun caractere souligne ” ”.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 110: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Exemple d’un modele

Exemples 1.4

En langage C, un identificateur est defini par les reglessuivantes :

1 Un identificateur est une chaıne de caracteres formee pardes lettres (majuscules et minuscules), des chiffres et/oudes caracteres soulignes ” ”.

2 Un identificateur doit commencer par une lettre ou parun caractere souligne ” ”.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 111: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Exemple d’un modele

Exemples 1.4

En langage C, un identificateur est defini par les reglessuivantes :

1 Un identificateur est une chaıne de caracteres formee pardes lettres (majuscules et minuscules), des chiffres et/oudes caracteres soulignes ” ”.

2 Un identificateur doit commencer par une lettre ou parun caractere souligne ” ”.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 112: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Attributs des unites lexicales

Le compilateur n’a pas besoin uniquement de connaıtre aquelle classe appartient un lexeme, mais il a egalementbesoion de connaıtre certaines informations concernant celexeme : valeur intiale, type de l’identificateur, ...etc.L’analyseur lexical reunit les informations sur les uniteslexicales dans les attributs qui leur sont associes.Les unites lexicales influent sur les decisions d’analysesyntaxique, mais les attributs influent sur la traductiondes unites lexicales.En pratique, une unite lexicale a en general un seulattribut : un pointeur vers l’entree de la table desymboles dans laquelle l’information sur l’unite lexicaleest conservee.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 113: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Attributs des unites lexicalesLe compilateur n’a pas besoin uniquement de connaıtre aquelle classe appartient un lexeme, mais il a egalementbesoion de connaıtre certaines informations concernant celexeme : valeur intiale, type de l’identificateur, ...etc.

L’analyseur lexical reunit les informations sur les uniteslexicales dans les attributs qui leur sont associes.Les unites lexicales influent sur les decisions d’analysesyntaxique, mais les attributs influent sur la traductiondes unites lexicales.En pratique, une unite lexicale a en general un seulattribut : un pointeur vers l’entree de la table desymboles dans laquelle l’information sur l’unite lexicaleest conservee.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 114: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Attributs des unites lexicalesLe compilateur n’a pas besoin uniquement de connaıtre aquelle classe appartient un lexeme, mais il a egalementbesoion de connaıtre certaines informations concernant celexeme : valeur intiale, type de l’identificateur, ...etc.L’analyseur lexical reunit les informations sur les uniteslexicales dans les attributs qui leur sont associes.

Les unites lexicales influent sur les decisions d’analysesyntaxique, mais les attributs influent sur la traductiondes unites lexicales.En pratique, une unite lexicale a en general un seulattribut : un pointeur vers l’entree de la table desymboles dans laquelle l’information sur l’unite lexicaleest conservee.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 115: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Attributs des unites lexicalesLe compilateur n’a pas besoin uniquement de connaıtre aquelle classe appartient un lexeme, mais il a egalementbesoion de connaıtre certaines informations concernant celexeme : valeur intiale, type de l’identificateur, ...etc.L’analyseur lexical reunit les informations sur les uniteslexicales dans les attributs qui leur sont associes.Les unites lexicales influent sur les decisions d’analysesyntaxique, mais les attributs influent sur la traductiondes unites lexicales.

En pratique, une unite lexicale a en general un seulattribut : un pointeur vers l’entree de la table desymboles dans laquelle l’information sur l’unite lexicaleest conservee.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 116: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Attributs des unites lexicalesLe compilateur n’a pas besoin uniquement de connaıtre aquelle classe appartient un lexeme, mais il a egalementbesoion de connaıtre certaines informations concernant celexeme : valeur intiale, type de l’identificateur, ...etc.L’analyseur lexical reunit les informations sur les uniteslexicales dans les attributs qui leur sont associes.Les unites lexicales influent sur les decisions d’analysesyntaxique, mais les attributs influent sur la traductiondes unites lexicales.En pratique, une unite lexicale a en general un seulattribut : un pointeur vers l’entree de la table desymboles dans laquelle l’information sur l’unite lexicaleest conservee.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 117: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Erreurs lexicales

Un compilateur peut detecter toutes les erreurs lexicalespendant l’etape de l’analyse lexicale.

Mais, comme l’analyseur lexical n’a qu’une vision localedu programme, ce dernier ne peut indiquer avecexactitude la nature de l’erreur lexicale.

Exemples 1.5

Prenons l’exemple du code C suivant :fi(a == 7);

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 118: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Erreurs lexicales

Un compilateur peut detecter toutes les erreurs lexicalespendant l’etape de l’analyse lexicale.

Mais, comme l’analyseur lexical n’a qu’une vision localedu programme, ce dernier ne peut indiquer avecexactitude la nature de l’erreur lexicale.

Exemples 1.5

Prenons l’exemple du code C suivant :fi(a == 7);

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 119: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Erreurs lexicales

Un compilateur peut detecter toutes les erreurs lexicalespendant l’etape de l’analyse lexicale.

Mais, comme l’analyseur lexical n’a qu’une vision localedu programme, ce dernier ne peut indiquer avecexactitude la nature de l’erreur lexicale.

Exemples 1.5

Prenons l’exemple du code C suivant :fi(a == 7);

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 120: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Erreurs lexicales

Un compilateur peut detecter toutes les erreurs lexicalespendant l’etape de l’analyse lexicale.

Mais, comme l’analyseur lexical n’a qu’une vision localedu programme, ce dernier ne peut indiquer avecexactitude la nature de l’erreur lexicale.

Exemples 1.5

Prenons l’exemple du code C suivant :

fi(a == 7);

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 121: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Erreurs lexicales

Un compilateur peut detecter toutes les erreurs lexicalespendant l’etape de l’analyse lexicale.

Mais, comme l’analyseur lexical n’a qu’une vision localedu programme, ce dernier ne peut indiquer avecexactitude la nature de l’erreur lexicale.

Exemples 1.5

Prenons l’exemple du code C suivant :fi(a == 7);

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 122: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Erreurs lexicales

Dans l’exemple precedent, l’analyseur lexical ne peut pasdire s’il s’agit du mot cle ”if ” mal orthographie, ou d’unidentificateur de fonction non declaree.

Comme ”fi” est un identificateur valide, l’analyseurlexical doit retourner l’unite lexicale d’un identificateur etlaisser une autre etape de l’analyse du compilateur traitercette erreur eventuelle.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 123: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Erreurs lexicales

Dans l’exemple precedent, l’analyseur lexical ne peut pasdire s’il s’agit du mot cle ”if ” mal orthographie, ou d’unidentificateur de fonction non declaree.

Comme ”fi” est un identificateur valide, l’analyseurlexical doit retourner l’unite lexicale d’un identificateur etlaisser une autre etape de l’analyse du compilateur traitercette erreur eventuelle.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 124: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Erreurs lexicales

Dans l’exemple precedent, l’analyseur lexical ne peut pasdire s’il s’agit du mot cle ”if ” mal orthographie, ou d’unidentificateur de fonction non declaree.

Comme ”fi” est un identificateur valide, l’analyseurlexical doit retourner l’unite lexicale d’un identificateur etlaisser une autre etape de l’analyse du compilateur traitercette erreur eventuelle.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 125: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Specification des unites lexicales

Il y a deux outils pour specifier les unites lexicales d’unlangage de programmation :

1 Les expressions regulieres.2 Les automates finis.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 126: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Specification des unites lexicales

Il y a deux outils pour specifier les unites lexicales d’unlangage de programmation :

1 Les expressions regulieres.2 Les automates finis.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 127: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Specification des unites lexicales

Il y a deux outils pour specifier les unites lexicales d’unlangage de programmation :

1 Les expressions regulieres.

2 Les automates finis.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 128: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Specification des unites lexicales

Il y a deux outils pour specifier les unites lexicales d’unlangage de programmation :

1 Les expressions regulieres.2 Les automates finis.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 129: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Specification par expressions regulieres (etendues)

Exemples 1.6

Identificateurs C :( |[a − zA − Z ])( |[a − zA − Z ]|[0 − 9])∗

Nombres entiers :(+|−)?[0 − 9]+

Nombres reels :(+|−)?[0 − 9]∗.[0 − 9]+

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 130: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Specification par expressions regulieres (etendues)

Exemples 1.6

Identificateurs C :( |[a − zA − Z ])( |[a − zA − Z ]|[0 − 9])∗

Nombres entiers :(+|−)?[0 − 9]+

Nombres reels :(+|−)?[0 − 9]∗.[0 − 9]+

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 131: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Specification par expressions regulieres (etendues)

Exemples 1.6

Identificateurs C :( |[a − zA − Z ])( |[a − zA − Z ]|[0 − 9])∗

Nombres entiers :(+|−)?[0 − 9]+

Nombres reels :(+|−)?[0 − 9]∗.[0 − 9]+

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 132: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Specification par expressions regulieres (etendues)

Exemples 1.6

Identificateurs C :( |[a − zA − Z ])( |[a − zA − Z ]|[0 − 9])∗

Nombres entiers :(+|−)?[0 − 9]+

Nombres reels :(+|−)?[0 − 9]∗.[0 − 9]+

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 133: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Specification par expressions regulieres (etendues)

Exemples 1.6

Identificateurs C :( |[a − zA − Z ])( |[a − zA − Z ]|[0 − 9])∗

Nombres entiers :(+|−)?[0 − 9]+

Nombres reels :(+|−)?[0 − 9]∗.[0 − 9]+

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 134: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Specification par automates finis (enrichis par desactions)

Figure: Automate fini pour les operateurs de comparaison dulangage Pascal

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 135: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Specification par automates finis (enrichis par desactions)

Figure: Automate fini pour les operateurs de comparaison dulangage Pascal

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 136: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Ecriture d’un analyseur lexical

Il y a 3 methodes pour developper un analyseur lexical :

1 Methode manuelle : on ecrit a la main un analyseurlexical comme un programme en utilisant un langage deprogrammation evolue comme C , C + + ou Java.

2 Methode par automate : on construit un automatefini deterministe qui represente le lexique du langagesource, puis on le muni d’actions d’analyse lexicale.

3 Methode automatique : on ecrit une specification d’unanalsyeur lexical a l’aide d’un programme qui genereautomatiquement l’analyseur lexical specifie. Cettespecification est faite par un ensemble d’expressionsregulieres enrichies par des actions d’analyse lexicale.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 137: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Ecriture d’un analyseur lexical

Il y a 3 methodes pour developper un analyseur lexical :

1 Methode manuelle : on ecrit a la main un analyseurlexical comme un programme en utilisant un langage deprogrammation evolue comme C , C + + ou Java.

2 Methode par automate : on construit un automatefini deterministe qui represente le lexique du langagesource, puis on le muni d’actions d’analyse lexicale.

3 Methode automatique : on ecrit une specification d’unanalsyeur lexical a l’aide d’un programme qui genereautomatiquement l’analyseur lexical specifie. Cettespecification est faite par un ensemble d’expressionsregulieres enrichies par des actions d’analyse lexicale.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 138: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Ecriture d’un analyseur lexical

Il y a 3 methodes pour developper un analyseur lexical :

1 Methode manuelle : on ecrit a la main un analyseurlexical comme un programme en utilisant un langage deprogrammation evolue comme C , C + + ou Java.

2 Methode par automate : on construit un automatefini deterministe qui represente le lexique du langagesource, puis on le muni d’actions d’analyse lexicale.

3 Methode automatique : on ecrit une specification d’unanalsyeur lexical a l’aide d’un programme qui genereautomatiquement l’analyseur lexical specifie. Cettespecification est faite par un ensemble d’expressionsregulieres enrichies par des actions d’analyse lexicale.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 139: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Ecriture d’un analyseur lexical

Il y a 3 methodes pour developper un analyseur lexical :

1 Methode manuelle : on ecrit a la main un analyseurlexical comme un programme en utilisant un langage deprogrammation evolue comme C , C + + ou Java.

2 Methode par automate : on construit un automatefini deterministe qui represente le lexique du langagesource, puis on le muni d’actions d’analyse lexicale.

3 Methode automatique : on ecrit une specification d’unanalsyeur lexical a l’aide d’un programme qui genereautomatiquement l’analyseur lexical specifie. Cettespecification est faite par un ensemble d’expressionsregulieres enrichies par des actions d’analyse lexicale.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 140: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Analyse lexicale

Ecriture d’un analyseur lexical

Il y a 3 methodes pour developper un analyseur lexical :

1 Methode manuelle : on ecrit a la main un analyseurlexical comme un programme en utilisant un langage deprogrammation evolue comme C , C + + ou Java.

2 Methode par automate : on construit un automatefini deterministe qui represente le lexique du langagesource, puis on le muni d’actions d’analyse lexicale.

3 Methode automatique : on ecrit une specification d’unanalsyeur lexical a l’aide d’un programme qui genereautomatiquement l’analyseur lexical specifie. Cettespecification est faite par un ensemble d’expressionsregulieres enrichies par des actions d’analyse lexicale.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 141: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Flex est un outil de generation automatiqued’analyseurs lexicaux.

Un fichier Flex contient la description d’un analyseurlexiacl a generer.

Cette description est donnee sous la forme d’expressionsregulieres etendeus et du code ecrit en langage C (ouC + +).

Flex genere comme resultat un fichier contenant le codeC du future analyseur lexical.

Ce fichier est nomme lex.yy.c.

La compilation de ce fichier par un compilateur C , generefinalement le code executable de l’analyseur lexical enquestion.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 142: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Flex est un outil de generation automatiqued’analyseurs lexicaux.

Un fichier Flex contient la description d’un analyseurlexiacl a generer.

Cette description est donnee sous la forme d’expressionsregulieres etendeus et du code ecrit en langage C (ouC + +).

Flex genere comme resultat un fichier contenant le codeC du future analyseur lexical.

Ce fichier est nomme lex.yy.c.

La compilation de ce fichier par un compilateur C , generefinalement le code executable de l’analyseur lexical enquestion.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 143: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Flex est un outil de generation automatiqued’analyseurs lexicaux.

Un fichier Flex contient la description d’un analyseurlexiacl a generer.

Cette description est donnee sous la forme d’expressionsregulieres etendeus et du code ecrit en langage C (ouC + +).

Flex genere comme resultat un fichier contenant le codeC du future analyseur lexical.

Ce fichier est nomme lex.yy.c.

La compilation de ce fichier par un compilateur C , generefinalement le code executable de l’analyseur lexical enquestion.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 144: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Flex est un outil de generation automatiqued’analyseurs lexicaux.

Un fichier Flex contient la description d’un analyseurlexiacl a generer.

Cette description est donnee sous la forme d’expressionsregulieres etendeus et du code ecrit en langage C (ouC + +).

Flex genere comme resultat un fichier contenant le codeC du future analyseur lexical.

Ce fichier est nomme lex.yy.c.

La compilation de ce fichier par un compilateur C , generefinalement le code executable de l’analyseur lexical enquestion.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 145: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Flex est un outil de generation automatiqued’analyseurs lexicaux.

Un fichier Flex contient la description d’un analyseurlexiacl a generer.

Cette description est donnee sous la forme d’expressionsregulieres etendeus et du code ecrit en langage C (ouC + +).

Flex genere comme resultat un fichier contenant le codeC du future analyseur lexical.

Ce fichier est nomme lex.yy.c.

La compilation de ce fichier par un compilateur C , generefinalement le code executable de l’analyseur lexical enquestion.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 146: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Flex est un outil de generation automatiqued’analyseurs lexicaux.

Un fichier Flex contient la description d’un analyseurlexiacl a generer.

Cette description est donnee sous la forme d’expressionsregulieres etendeus et du code ecrit en langage C (ouC + +).

Flex genere comme resultat un fichier contenant le codeC du future analyseur lexical.

Ce fichier est nomme lex.yy.c.

La compilation de ce fichier par un compilateur C , generefinalement le code executable de l’analyseur lexical enquestion.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 147: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Flex est un outil de generation automatiqued’analyseurs lexicaux.

Un fichier Flex contient la description d’un analyseurlexiacl a generer.

Cette description est donnee sous la forme d’expressionsregulieres etendeus et du code ecrit en langage C (ouC + +).

Flex genere comme resultat un fichier contenant le codeC du future analyseur lexical.

Ce fichier est nomme lex.yy.c.

La compilation de ce fichier par un compilateur C , generefinalement le code executable de l’analyseur lexical enquestion.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 148: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Figure: Processus de creation d’un analyseur lexcical avec Flex

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 149: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Figure: Processus de creation d’un analyseur lexcical avec Flex

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 150: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Figure: Utilisation d’un analyseur lexcical genere avec Flex

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 151: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Figure: Utilisation d’un analyseur lexcical genere avec Flex

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 152: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Lorsque l’executable est mis en œuvre, il analyse le fichiersource pour chercher les occurrences d’expressionsregulieres.

Lorsqu’une chaıne est reconnue par une expressionreguliere, il execute le code C correspondant.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 153: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Lorsque l’executable est mis en œuvre, il analyse le fichiersource pour chercher les occurrences d’expressionsregulieres.

Lorsqu’une chaıne est reconnue par une expressionreguliere, il execute le code C correspondant.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 154: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Lorsque l’executable est mis en œuvre, il analyse le fichiersource pour chercher les occurrences d’expressionsregulieres.

Lorsqu’une chaıne est reconnue par une expressionreguliere, il execute le code C correspondant.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 155: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Voici les etpaes a suivre pour obtenir un analyseur avecFlex :

1 Ecrire, puis enregister votre analyseur dans un fichierportant une extension ”.flex” ou ”.lex”. Par exemple,”scan.flex”.

2 Compiler votre analyseur par la commende flex :flex scan.flex

3 Compiler le fichier par la commande gcc le fichierlex.yy.c produit par l’etape precedente :gcc −o lex.yy.c scan −lfl

4 Lancer l’analyseur en utilisant le nom de celui-ci :scan

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 156: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Voici les etpaes a suivre pour obtenir un analyseur avecFlex :

1 Ecrire, puis enregister votre analyseur dans un fichierportant une extension ”.flex” ou ”.lex”. Par exemple,”scan.flex”.

2 Compiler votre analyseur par la commende flex :flex scan.flex

3 Compiler le fichier par la commande gcc le fichierlex.yy.c produit par l’etape precedente :gcc −o lex.yy.c scan −lfl

4 Lancer l’analyseur en utilisant le nom de celui-ci :scan

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 157: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Voici les etpaes a suivre pour obtenir un analyseur avecFlex :

1 Ecrire, puis enregister votre analyseur dans un fichierportant une extension ”.flex” ou ”.lex”. Par exemple,”scan.flex”.

2 Compiler votre analyseur par la commende flex :flex scan.flex

3 Compiler le fichier par la commande gcc le fichierlex.yy.c produit par l’etape precedente :gcc −o lex.yy.c scan −lfl

4 Lancer l’analyseur en utilisant le nom de celui-ci :scan

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 158: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Voici les etpaes a suivre pour obtenir un analyseur avecFlex :

1 Ecrire, puis enregister votre analyseur dans un fichierportant une extension ”.flex” ou ”.lex”. Par exemple,”scan.flex”.

2 Compiler votre analyseur par la commende flex :flex scan.flex

3 Compiler le fichier par la commande gcc le fichierlex.yy.c produit par l’etape precedente :gcc −o lex.yy.c scan −lfl

4 Lancer l’analyseur en utilisant le nom de celui-ci :scan

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 159: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Voici les etpaes a suivre pour obtenir un analyseur avecFlex :

1 Ecrire, puis enregister votre analyseur dans un fichierportant une extension ”.flex” ou ”.lex”. Par exemple,”scan.flex”.

2 Compiler votre analyseur par la commende flex :flex scan.flex

3 Compiler le fichier par la commande gcc le fichierlex.yy.c produit par l’etape precedente :gcc −o lex.yy.c scan −lfl

4 Lancer l’analyseur en utilisant le nom de celui-ci :scan

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 160: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Voici les etpaes a suivre pour obtenir un analyseur avecFlex :

1 Ecrire, puis enregister votre analyseur dans un fichierportant une extension ”.flex” ou ”.lex”. Par exemple,”scan.flex”.

2 Compiler votre analyseur par la commende flex :flex scan.flex

3 Compiler le fichier par la commande gcc le fichierlex.yy.c produit par l’etape precedente :gcc −o lex.yy.c scan −lfl

4 Lancer l’analyseur en utilisant le nom de celui-ci :scan

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 161: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Par defaut, le texte a analyser est lu a partir de l’entreestandard (le clavier) et le resultat de l’analyse lexical estaffiche sur la sortie standard (l’ecran).

On peut indiquer au compilateur le fichier source aanalyser :scan < input.txt

On peut indiquer au compilateur d’afficher le resultat del’anayse dans un fichier :scan > output.txt

Bien sur, on peut melanger les deux :scan < input.txt > output.txt

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 162: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Par defaut, le texte a analyser est lu a partir de l’entreestandard (le clavier) et le resultat de l’analyse lexical estaffiche sur la sortie standard (l’ecran).

On peut indiquer au compilateur le fichier source aanalyser :scan < input.txt

On peut indiquer au compilateur d’afficher le resultat del’anayse dans un fichier :scan > output.txt

Bien sur, on peut melanger les deux :scan < input.txt > output.txt

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 163: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Par defaut, le texte a analyser est lu a partir de l’entreestandard (le clavier) et le resultat de l’analyse lexical estaffiche sur la sortie standard (l’ecran).

On peut indiquer au compilateur le fichier source aanalyser :scan < input.txt

On peut indiquer au compilateur d’afficher le resultat del’anayse dans un fichier :scan > output.txt

Bien sur, on peut melanger les deux :scan < input.txt > output.txt

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 164: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Par defaut, le texte a analyser est lu a partir de l’entreestandard (le clavier) et le resultat de l’analyse lexical estaffiche sur la sortie standard (l’ecran).

On peut indiquer au compilateur le fichier source aanalyser :scan < input.txt

On peut indiquer au compilateur d’afficher le resultat del’anayse dans un fichier :scan > output.txt

Bien sur, on peut melanger les deux :scan < input.txt > output.txt

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 165: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Par defaut, le texte a analyser est lu a partir de l’entreestandard (le clavier) et le resultat de l’analyse lexical estaffiche sur la sortie standard (l’ecran).

On peut indiquer au compilateur le fichier source aanalyser :scan < input.txt

On peut indiquer au compilateur d’afficher le resultat del’anayse dans un fichier :scan > output.txt

Bien sur, on peut melanger les deux :scan < input.txt > output.txt

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 166: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Exemples 1.7

Ecrire un analyseur lexical qui remplace toute occurrence delettre ”a” par une lettre ”z”, et inversement.

Solution :

%%”a” printf(”z”);”z” printf(”a”);

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 167: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Exemples 1.7

Ecrire un analyseur lexical qui remplace toute occurrence delettre ”a” par une lettre ”z”, et inversement.

Solution :

%%”a” printf(”z”);”z” printf(”a”);

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 168: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Exemples 1.7

Ecrire un analyseur lexical qui remplace toute occurrence delettre ”a” par une lettre ”z”, et inversement.

Solution :

%%”a” printf(”z”);”z” printf(”a”);

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 169: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Exemples 1.7

Ecrire un analyseur lexical qui remplace toute occurrence delettre ”a” par une lettre ”z”, et inversement.

Solution :

%%

”a” printf(”z”);”z” printf(”a”);

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 170: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Exemples 1.7

Ecrire un analyseur lexical qui remplace toute occurrence delettre ”a” par une lettre ”z”, et inversement.

Solution :

%%”a” printf(”z”);

”z” printf(”a”);

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 171: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Exemples 1.7

Ecrire un analyseur lexical qui remplace toute occurrence delettre ”a” par une lettre ”z”, et inversement.

Solution :

%%”a” printf(”z”);”z” printf(”a”);

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 172: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Fonctionnement

Les deux symboles %% marquent le debut de la sectiondes regles. Ils doivent etre ecrits en premiere colonne.

Le code :”a” printf(”z”)est une regle.

Chaque regle contient deux elements :

1 une expression reguliere;2 et du code C .

Dans le code precedent, l’expression reguliere est ”a” et lecode C est l’instruction printf(”z”).

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 173: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Fonctionnement

Les deux symboles %% marquent le debut de la sectiondes regles. Ils doivent etre ecrits en premiere colonne.

Le code :”a” printf(”z”)est une regle.

Chaque regle contient deux elements :

1 une expression reguliere;2 et du code C .

Dans le code precedent, l’expression reguliere est ”a” et lecode C est l’instruction printf(”z”).

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 174: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Fonctionnement

Les deux symboles %% marquent le debut de la sectiondes regles. Ils doivent etre ecrits en premiere colonne.

Le code :

”a” printf(”z”)est une regle.

Chaque regle contient deux elements :

1 une expression reguliere;2 et du code C .

Dans le code precedent, l’expression reguliere est ”a” et lecode C est l’instruction printf(”z”).

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 175: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Fonctionnement

Les deux symboles %% marquent le debut de la sectiondes regles. Ils doivent etre ecrits en premiere colonne.

Le code :”a” printf(”z”)

est une regle.

Chaque regle contient deux elements :

1 une expression reguliere;2 et du code C .

Dans le code precedent, l’expression reguliere est ”a” et lecode C est l’instruction printf(”z”).

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 176: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Fonctionnement

Les deux symboles %% marquent le debut de la sectiondes regles. Ils doivent etre ecrits en premiere colonne.

Le code :”a” printf(”z”)est une regle.

Chaque regle contient deux elements :

1 une expression reguliere;2 et du code C .

Dans le code precedent, l’expression reguliere est ”a” et lecode C est l’instruction printf(”z”).

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 177: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Fonctionnement

Les deux symboles %% marquent le debut de la sectiondes regles. Ils doivent etre ecrits en premiere colonne.

Le code :”a” printf(”z”)est une regle.

Chaque regle contient deux elements :

1 une expression reguliere;2 et du code C .

Dans le code precedent, l’expression reguliere est ”a” et lecode C est l’instruction printf(”z”).

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 178: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Fonctionnement

Les deux symboles %% marquent le debut de la sectiondes regles. Ils doivent etre ecrits en premiere colonne.

Le code :”a” printf(”z”)est une regle.

Chaque regle contient deux elements :

1 une expression reguliere;

2 et du code C .

Dans le code precedent, l’expression reguliere est ”a” et lecode C est l’instruction printf(”z”).

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 179: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Fonctionnement

Les deux symboles %% marquent le debut de la sectiondes regles. Ils doivent etre ecrits en premiere colonne.

Le code :”a” printf(”z”)est une regle.

Chaque regle contient deux elements :

1 une expression reguliere;2 et du code C .

Dans le code precedent, l’expression reguliere est ”a” et lecode C est l’instruction printf(”z”).

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 180: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Fonctionnement

Les deux symboles %% marquent le debut de la sectiondes regles. Ils doivent etre ecrits en premiere colonne.

Le code :”a” printf(”z”)est une regle.

Chaque regle contient deux elements :

1 une expression reguliere;2 et du code C .

Dans le code precedent, l’expression reguliere est ”a” et lecode C est l’instruction printf(”z”).

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 181: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Fonctionnement

Signification du code : lorsque l’analsyeur renconnaıt unelettre ”a” dans le fichier source, il va la remplacer par unelettre ”z”.

On a un resultat similaire avec la seconde regle :”z” printf(”a”)par laquelle l’analyseur remplacera chaque lettre ”z” parune lettre ”a”.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 182: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Fonctionnement

Signification du code : lorsque l’analsyeur renconnaıt unelettre ”a” dans le fichier source, il va la remplacer par unelettre ”z”.

On a un resultat similaire avec la seconde regle :”z” printf(”a”)par laquelle l’analyseur remplacera chaque lettre ”z” parune lettre ”a”.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 183: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Fonctionnement

Signification du code : lorsque l’analsyeur renconnaıt unelettre ”a” dans le fichier source, il va la remplacer par unelettre ”z”.

On a un resultat similaire avec la seconde regle :

”z” printf(”a”)par laquelle l’analyseur remplacera chaque lettre ”z” parune lettre ”a”.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 184: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Fonctionnement

Signification du code : lorsque l’analsyeur renconnaıt unelettre ”a” dans le fichier source, il va la remplacer par unelettre ”z”.

On a un resultat similaire avec la seconde regle :”z” printf(”a”)

par laquelle l’analyseur remplacera chaque lettre ”z” parune lettre ”a”.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 185: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Fonctionnement

Signification du code : lorsque l’analsyeur renconnaıt unelettre ”a” dans le fichier source, il va la remplacer par unelettre ”z”.

On a un resultat similaire avec la seconde regle :”z” printf(”a”)par laquelle l’analyseur remplacera chaque lettre ”z” parune lettre ”a”.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 186: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Remarques 1.8

Une expression reguliere doit toujours commencer enpremiere colonne.

Il faut laisser au moins un caracteres blanc (espace outabulation) entre l’expression reguliere et le code Cassocie.

Le code C peut contenir plusieurs instructions. Lesacollades { et } doivent etre utilisees si c’est le cas.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 187: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Remarques 1.8

Une expression reguliere doit toujours commencer enpremiere colonne.

Il faut laisser au moins un caracteres blanc (espace outabulation) entre l’expression reguliere et le code Cassocie.

Le code C peut contenir plusieurs instructions. Lesacollades { et } doivent etre utilisees si c’est le cas.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 188: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Remarques 1.8

Une expression reguliere doit toujours commencer enpremiere colonne.

Il faut laisser au moins un caracteres blanc (espace outabulation) entre l’expression reguliere et le code Cassocie.

Le code C peut contenir plusieurs instructions. Lesacollades { et } doivent etre utilisees si c’est le cas.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 189: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Remarques 1.8

Une expression reguliere doit toujours commencer enpremiere colonne.

Il faut laisser au moins un caracteres blanc (espace outabulation) entre l’expression reguliere et le code Cassocie.

Le code C peut contenir plusieurs instructions. Lesacollades { et } doivent etre utilisees si c’est le cas.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 190: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Remarques 1.8

Une expression reguliere doit toujours commencer enpremiere colonne.

Il faut laisser au moins un caracteres blanc (espace outabulation) entre l’expression reguliere et le code Cassocie.

Le code C peut contenir plusieurs instructions. Lesacollades { et } doivent etre utilisees si c’est le cas.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 191: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Exemples 1.9

Ecrire un analyseur lexical qui calcule le nombre de lignescontenu dans le fichier source.

%{int nb lignes = 0;

%}%%\n nb lignes++;%%main() {

yylex();printf(”nombre de lignes : %d”, nb lignes); }

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 192: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Exemples 1.9

Ecrire un analyseur lexical qui calcule le nombre de lignescontenu dans le fichier source.

%{int nb lignes = 0;

%}%%\n nb lignes++;%%main() {

yylex();printf(”nombre de lignes : %d”, nb lignes); }

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 193: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Exemples 1.9

Ecrire un analyseur lexical qui calcule le nombre de lignescontenu dans le fichier source.

%{

int nb lignes = 0;%}%%\n nb lignes++;%%main() {

yylex();printf(”nombre de lignes : %d”, nb lignes); }

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 194: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Exemples 1.9

Ecrire un analyseur lexical qui calcule le nombre de lignescontenu dans le fichier source.

%{int nb lignes = 0;

%}%%\n nb lignes++;%%main() {

yylex();printf(”nombre de lignes : %d”, nb lignes); }

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 195: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Exemples 1.9

Ecrire un analyseur lexical qui calcule le nombre de lignescontenu dans le fichier source.

%{int nb lignes = 0;

%}

%%\n nb lignes++;%%main() {

yylex();printf(”nombre de lignes : %d”, nb lignes); }

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 196: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Exemples 1.9

Ecrire un analyseur lexical qui calcule le nombre de lignescontenu dans le fichier source.

%{int nb lignes = 0;

%}%%

\n nb lignes++;%%main() {

yylex();printf(”nombre de lignes : %d”, nb lignes); }

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 197: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Exemples 1.9

Ecrire un analyseur lexical qui calcule le nombre de lignescontenu dans le fichier source.

%{int nb lignes = 0;

%}%%\n nb lignes++;

%%main() {

yylex();printf(”nombre de lignes : %d”, nb lignes); }

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 198: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Exemples 1.9

Ecrire un analyseur lexical qui calcule le nombre de lignescontenu dans le fichier source.

%{int nb lignes = 0;

%}%%\n nb lignes++;%%

main() {yylex();printf(”nombre de lignes : %d”, nb lignes); }

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 199: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Exemples 1.9

Ecrire un analyseur lexical qui calcule le nombre de lignescontenu dans le fichier source.

%{int nb lignes = 0;

%}%%\n nb lignes++;%%main() {

yylex();printf(”nombre de lignes : %d”, nb lignes); }

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 200: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Exemples 1.9

Ecrire un analyseur lexical qui calcule le nombre de lignescontenu dans le fichier source.

%{int nb lignes = 0;

%}%%\n nb lignes++;%%main() {

yylex();

printf(”nombre de lignes : %d”, nb lignes); }

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 201: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Exemples 1.9

Ecrire un analyseur lexical qui calcule le nombre de lignescontenu dans le fichier source.

%{int nb lignes = 0;

%}%%\n nb lignes++;%%main() {

yylex();printf(”nombre de lignes : %d”, nb lignes); }

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 202: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Fonctionnement

La zone entre les symboles %{ et %} represente lasection des declarations.Dans cette section, on peut :

declarer des variables globales.declarer des fonctions globales.inclure des fichiers.

Apres le deuxieme %%, c’est la section du codeutilisateur : la fonction main et les autres fonctions.La regle :\n nb lignes++;signifie : a la rencontre d’un caractere de saut de ligne”\n” dans le fichier source, incrementer la variablenb lignes.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 203: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

FonctionnementLa zone entre les symboles %{ et %} represente lasection des declarations.

Dans cette section, on peut :declarer des variables globales.declarer des fonctions globales.inclure des fichiers.

Apres le deuxieme %%, c’est la section du codeutilisateur : la fonction main et les autres fonctions.La regle :\n nb lignes++;signifie : a la rencontre d’un caractere de saut de ligne”\n” dans le fichier source, incrementer la variablenb lignes.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 204: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

FonctionnementLa zone entre les symboles %{ et %} represente lasection des declarations.Dans cette section, on peut :

declarer des variables globales.declarer des fonctions globales.inclure des fichiers.

Apres le deuxieme %%, c’est la section du codeutilisateur : la fonction main et les autres fonctions.La regle :\n nb lignes++;signifie : a la rencontre d’un caractere de saut de ligne”\n” dans le fichier source, incrementer la variablenb lignes.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 205: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

FonctionnementLa zone entre les symboles %{ et %} represente lasection des declarations.Dans cette section, on peut :

declarer des variables globales.

declarer des fonctions globales.inclure des fichiers.

Apres le deuxieme %%, c’est la section du codeutilisateur : la fonction main et les autres fonctions.La regle :\n nb lignes++;signifie : a la rencontre d’un caractere de saut de ligne”\n” dans le fichier source, incrementer la variablenb lignes.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 206: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

FonctionnementLa zone entre les symboles %{ et %} represente lasection des declarations.Dans cette section, on peut :

declarer des variables globales.declarer des fonctions globales.

inclure des fichiers.

Apres le deuxieme %%, c’est la section du codeutilisateur : la fonction main et les autres fonctions.La regle :\n nb lignes++;signifie : a la rencontre d’un caractere de saut de ligne”\n” dans le fichier source, incrementer la variablenb lignes.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 207: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

FonctionnementLa zone entre les symboles %{ et %} represente lasection des declarations.Dans cette section, on peut :

declarer des variables globales.declarer des fonctions globales.inclure des fichiers.

Apres le deuxieme %%, c’est la section du codeutilisateur : la fonction main et les autres fonctions.La regle :\n nb lignes++;signifie : a la rencontre d’un caractere de saut de ligne”\n” dans le fichier source, incrementer la variablenb lignes.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 208: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

FonctionnementLa zone entre les symboles %{ et %} represente lasection des declarations.Dans cette section, on peut :

declarer des variables globales.declarer des fonctions globales.inclure des fichiers.

Apres le deuxieme %%, c’est la section du codeutilisateur : la fonction main et les autres fonctions.

La regle :\n nb lignes++;signifie : a la rencontre d’un caractere de saut de ligne”\n” dans le fichier source, incrementer la variablenb lignes.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 209: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

FonctionnementLa zone entre les symboles %{ et %} represente lasection des declarations.Dans cette section, on peut :

declarer des variables globales.declarer des fonctions globales.inclure des fichiers.

Apres le deuxieme %%, c’est la section du codeutilisateur : la fonction main et les autres fonctions.La regle :

\n nb lignes++;signifie : a la rencontre d’un caractere de saut de ligne”\n” dans le fichier source, incrementer la variablenb lignes.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 210: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

FonctionnementLa zone entre les symboles %{ et %} represente lasection des declarations.Dans cette section, on peut :

declarer des variables globales.declarer des fonctions globales.inclure des fichiers.

Apres le deuxieme %%, c’est la section du codeutilisateur : la fonction main et les autres fonctions.La regle :\n nb lignes++;

signifie : a la rencontre d’un caractere de saut de ligne”\n” dans le fichier source, incrementer la variablenb lignes.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 211: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

FonctionnementLa zone entre les symboles %{ et %} represente lasection des declarations.Dans cette section, on peut :

declarer des variables globales.declarer des fonctions globales.inclure des fichiers.

Apres le deuxieme %%, c’est la section du codeutilisateur : la fonction main et les autres fonctions.La regle :\n nb lignes++;signifie : a la rencontre d’un caractere de saut de ligne”\n” dans le fichier source, incrementer la variablenb lignes.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 212: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Fonctionnement

La fonction ”main” contient deux instructions :

yylex : c’est une routine qui effectue l’appel explicite del’analyseur lexical.une instruction printf par laquelle on affiche le nombrede lignes calcule.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 213: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Fonctionnement

La fonction ”main” contient deux instructions :

yylex : c’est une routine qui effectue l’appel explicite del’analyseur lexical.une instruction printf par laquelle on affiche le nombrede lignes calcule.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 214: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Fonctionnement

La fonction ”main” contient deux instructions :

yylex : c’est une routine qui effectue l’appel explicite del’analyseur lexical.

une instruction printf par laquelle on affiche le nombrede lignes calcule.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 215: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Fonctionnement

La fonction ”main” contient deux instructions :

yylex : c’est une routine qui effectue l’appel explicite del’analyseur lexical.une instruction printf par laquelle on affiche le nombrede lignes calcule.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 216: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Format d’un fichier Flex

Un fichier Flex contient trois sections :

1 La section des declarations et des definitions.2 La section des regles.3 La section du code utilisateur.

Chaque section est separee de la suivante par une lignecontenant juste les deux symboles %%.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 217: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Format d’un fichier Flex

Un fichier Flex contient trois sections :

1 La section des declarations et des definitions.2 La section des regles.3 La section du code utilisateur.

Chaque section est separee de la suivante par une lignecontenant juste les deux symboles %%.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 218: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Format d’un fichier Flex

Un fichier Flex contient trois sections :

1 La section des declarations et des definitions.

2 La section des regles.3 La section du code utilisateur.

Chaque section est separee de la suivante par une lignecontenant juste les deux symboles %%.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 219: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Format d’un fichier Flex

Un fichier Flex contient trois sections :

1 La section des declarations et des definitions.2 La section des regles.

3 La section du code utilisateur.

Chaque section est separee de la suivante par une lignecontenant juste les deux symboles %%.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 220: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Format d’un fichier Flex

Un fichier Flex contient trois sections :

1 La section des declarations et des definitions.2 La section des regles.3 La section du code utilisateur.

Chaque section est separee de la suivante par une lignecontenant juste les deux symboles %%.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 221: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Format d’un fichier Flex

Un fichier Flex contient trois sections :

1 La section des declarations et des definitions.2 La section des regles.3 La section du code utilisateur.

Chaque section est separee de la suivante par une lignecontenant juste les deux symboles %%.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 222: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Format d’un fichier Flex

Voici comment se presente un fichier Flex :

%{/∗ Declarations ∗/%}/∗ Definitions ∗/%%/∗ Regles ∗/%%/∗ Code utilisateur ∗/

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 223: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Format d’un fichier Flex

Voici comment se presente un fichier Flex :

%{/∗ Declarations ∗/%}/∗ Definitions ∗/%%/∗ Regles ∗/%%/∗ Code utilisateur ∗/

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 224: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Format d’un fichier Flex

Voici comment se presente un fichier Flex :

%{

/∗ Declarations ∗/%}/∗ Definitions ∗/%%/∗ Regles ∗/%%/∗ Code utilisateur ∗/

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 225: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Format d’un fichier Flex

Voici comment se presente un fichier Flex :

%{/∗ Declarations ∗/

%}/∗ Definitions ∗/%%/∗ Regles ∗/%%/∗ Code utilisateur ∗/

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 226: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Format d’un fichier Flex

Voici comment se presente un fichier Flex :

%{/∗ Declarations ∗/%}

/∗ Definitions ∗/%%/∗ Regles ∗/%%/∗ Code utilisateur ∗/

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 227: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Format d’un fichier Flex

Voici comment se presente un fichier Flex :

%{/∗ Declarations ∗/%}/∗ Definitions ∗/%%

/∗ Regles ∗/%%/∗ Code utilisateur ∗/

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 228: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Format d’un fichier Flex

Voici comment se presente un fichier Flex :

%{/∗ Declarations ∗/%}/∗ Definitions ∗/%%/∗ Regles ∗/

%%/∗ Code utilisateur ∗/

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 229: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Format d’un fichier Flex

Voici comment se presente un fichier Flex :

%{/∗ Declarations ∗/%}/∗ Definitions ∗/%%/∗ Regles ∗/%%

/∗ Code utilisateur ∗/

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 230: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Format d’un fichier Flex

Voici comment se presente un fichier Flex :

%{/∗ Declarations ∗/%}/∗ Definitions ∗/%%/∗ Regles ∗/%%/∗ Code utilisateur ∗/

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 231: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Format d’un fichier Flex

Une definition permet de nommer une expressionreguliere.

Une definition est un couple forme d’un identificateur etd’une expression reguliere, separee par au moins uncaractere espace (ou tabulation).

Une expression reguliere peut contenir une reference aun identificateur deja defini. Dans ce cas, l’identificateurdoit etre ecrit entre les symboles ”{” et ”}”.

Une definition doit etre ecrite sur une seule ligne.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 232: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Format d’un fichier Flex

Une definition permet de nommer une expressionreguliere.

Une definition est un couple forme d’un identificateur etd’une expression reguliere, separee par au moins uncaractere espace (ou tabulation).

Une expression reguliere peut contenir une reference aun identificateur deja defini. Dans ce cas, l’identificateurdoit etre ecrit entre les symboles ”{” et ”}”.

Une definition doit etre ecrite sur une seule ligne.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 233: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Format d’un fichier Flex

Une definition permet de nommer une expressionreguliere.

Une definition est un couple forme d’un identificateur etd’une expression reguliere, separee par au moins uncaractere espace (ou tabulation).

Une expression reguliere peut contenir une reference aun identificateur deja defini. Dans ce cas, l’identificateurdoit etre ecrit entre les symboles ”{” et ”}”.

Une definition doit etre ecrite sur une seule ligne.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 234: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Format d’un fichier Flex

Une definition permet de nommer une expressionreguliere.

Une definition est un couple forme d’un identificateur etd’une expression reguliere, separee par au moins uncaractere espace (ou tabulation).

Une expression reguliere peut contenir une reference aun identificateur deja defini. Dans ce cas, l’identificateurdoit etre ecrit entre les symboles ”{” et ”}”.

Une definition doit etre ecrite sur une seule ligne.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 235: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Format d’un fichier Flex

Une definition permet de nommer une expressionreguliere.

Une definition est un couple forme d’un identificateur etd’une expression reguliere, separee par au moins uncaractere espace (ou tabulation).

Une expression reguliere peut contenir une reference aun identificateur deja defini. Dans ce cas, l’identificateurdoit etre ecrit entre les symboles ”{” et ”}”.

Une definition doit etre ecrite sur une seule ligne.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 236: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Exemples 1.10

CHIFFRE [0 − 9]

ENTIER (+|−)? {CHIFFRE}+

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 237: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Exemples 1.10

CHIFFRE [0 − 9]

ENTIER (+|−)? {CHIFFRE}+

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 238: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Exemples 1.10

CHIFFRE [0 − 9]

ENTIER (+|−)? {CHIFFRE}+

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 239: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Les regles

Definition 1.11

Une regle Flex est la donnee :

1 d’une expression reguliere e.2 et d’une action (celle qui sera executee lorsqu’une

sequence d’entree est reconnue par e).

Exemples 1.12

”int” {printf (”Mot cle int”); }A chaque fois que la chaıne de caracteres ”int” serareconnue, le message ”Mot cle int” sera affiche sur lasortie standard.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 240: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Les regles

Definition 1.11

Une regle Flex est la donnee :

1 d’une expression reguliere e.2 et d’une action (celle qui sera executee lorsqu’une

sequence d’entree est reconnue par e).

Exemples 1.12

”int” {printf (”Mot cle int”); }A chaque fois que la chaıne de caracteres ”int” serareconnue, le message ”Mot cle int” sera affiche sur lasortie standard.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 241: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Les regles

Definition 1.11

Une regle Flex est la donnee :

1 d’une expression reguliere e.2 et d’une action (celle qui sera executee lorsqu’une

sequence d’entree est reconnue par e).

Exemples 1.12

”int” {printf (”Mot cle int”); }A chaque fois que la chaıne de caracteres ”int” serareconnue, le message ”Mot cle int” sera affiche sur lasortie standard.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 242: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Les regles

Definition 1.11

Une regle Flex est la donnee :

1 d’une expression reguliere e.

2 et d’une action (celle qui sera executee lorsqu’unesequence d’entree est reconnue par e).

Exemples 1.12

”int” {printf (”Mot cle int”); }A chaque fois que la chaıne de caracteres ”int” serareconnue, le message ”Mot cle int” sera affiche sur lasortie standard.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 243: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Les regles

Definition 1.11

Une regle Flex est la donnee :

1 d’une expression reguliere e.2 et d’une action (celle qui sera executee lorsqu’une

sequence d’entree est reconnue par e).

Exemples 1.12

”int” {printf (”Mot cle int”); }A chaque fois que la chaıne de caracteres ”int” serareconnue, le message ”Mot cle int” sera affiche sur lasortie standard.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 244: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Les regles

Definition 1.11

Une regle Flex est la donnee :

1 d’une expression reguliere e.2 et d’une action (celle qui sera executee lorsqu’une

sequence d’entree est reconnue par e).

Exemples 1.12

”int” {printf (”Mot cle int”); }A chaque fois que la chaıne de caracteres ”int” serareconnue, le message ”Mot cle int” sera affiche sur lasortie standard.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 245: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Les regles

Definition 1.11

Une regle Flex est la donnee :

1 d’une expression reguliere e.2 et d’une action (celle qui sera executee lorsqu’une

sequence d’entree est reconnue par e).

Exemples 1.12

”int” {printf (”Mot cle int”); }

A chaque fois que la chaıne de caracteres ”int” serareconnue, le message ”Mot cle int” sera affiche sur lasortie standard.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 246: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Les regles

Definition 1.11

Une regle Flex est la donnee :

1 d’une expression reguliere e.2 et d’une action (celle qui sera executee lorsqu’une

sequence d’entree est reconnue par e).

Exemples 1.12

”int” {printf (”Mot cle int”); }A chaque fois que la chaıne de caracteres ”int” serareconnue, le message ”Mot cle int” sera affiche sur lasortie standard.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 247: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Les regles

Une expression reguliere specifie une unite lexicale dulangage source.Flex utilise les expressions regulieres etendues.Dans Flex , les expressions regulieres sont construites apartir des caracteres et d’operateurs.Les operateurs de Flex sont :” \ [ ] − ? . ∗ + | ( ) $ / { } % < >Pour utiliser ces operateurs comme caracteres ordinaires,il faut les proteger en les placant dans une chaıneentouree de double-quotes (”) ou en les placant apres uncaractere \.Par exemple, \n, \t et \b correspondent comme en C ausaut de ligne, a la tabulation et au retour en arriere.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 248: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Les reglesUne expression reguliere specifie une unite lexicale dulangage source.

Flex utilise les expressions regulieres etendues.Dans Flex , les expressions regulieres sont construites apartir des caracteres et d’operateurs.Les operateurs de Flex sont :” \ [ ] − ? . ∗ + | ( ) $ / { } % < >Pour utiliser ces operateurs comme caracteres ordinaires,il faut les proteger en les placant dans une chaıneentouree de double-quotes (”) ou en les placant apres uncaractere \.Par exemple, \n, \t et \b correspondent comme en C ausaut de ligne, a la tabulation et au retour en arriere.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 249: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Les reglesUne expression reguliere specifie une unite lexicale dulangage source.Flex utilise les expressions regulieres etendues.

Dans Flex , les expressions regulieres sont construites apartir des caracteres et d’operateurs.Les operateurs de Flex sont :” \ [ ] − ? . ∗ + | ( ) $ / { } % < >Pour utiliser ces operateurs comme caracteres ordinaires,il faut les proteger en les placant dans une chaıneentouree de double-quotes (”) ou en les placant apres uncaractere \.Par exemple, \n, \t et \b correspondent comme en C ausaut de ligne, a la tabulation et au retour en arriere.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 250: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Les reglesUne expression reguliere specifie une unite lexicale dulangage source.Flex utilise les expressions regulieres etendues.Dans Flex , les expressions regulieres sont construites apartir des caracteres et d’operateurs.

Les operateurs de Flex sont :” \ [ ] − ? . ∗ + | ( ) $ / { } % < >Pour utiliser ces operateurs comme caracteres ordinaires,il faut les proteger en les placant dans une chaıneentouree de double-quotes (”) ou en les placant apres uncaractere \.Par exemple, \n, \t et \b correspondent comme en C ausaut de ligne, a la tabulation et au retour en arriere.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 251: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Les reglesUne expression reguliere specifie une unite lexicale dulangage source.Flex utilise les expressions regulieres etendues.Dans Flex , les expressions regulieres sont construites apartir des caracteres et d’operateurs.Les operateurs de Flex sont :

” \ [ ] − ? . ∗ + | ( ) $ / { } % < >Pour utiliser ces operateurs comme caracteres ordinaires,il faut les proteger en les placant dans une chaıneentouree de double-quotes (”) ou en les placant apres uncaractere \.Par exemple, \n, \t et \b correspondent comme en C ausaut de ligne, a la tabulation et au retour en arriere.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 252: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Les reglesUne expression reguliere specifie une unite lexicale dulangage source.Flex utilise les expressions regulieres etendues.Dans Flex , les expressions regulieres sont construites apartir des caracteres et d’operateurs.Les operateurs de Flex sont :” \ [ ] − ? . ∗ + | ( ) $ / { } % < >

Pour utiliser ces operateurs comme caracteres ordinaires,il faut les proteger en les placant dans une chaıneentouree de double-quotes (”) ou en les placant apres uncaractere \.Par exemple, \n, \t et \b correspondent comme en C ausaut de ligne, a la tabulation et au retour en arriere.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 253: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Les reglesUne expression reguliere specifie une unite lexicale dulangage source.Flex utilise les expressions regulieres etendues.Dans Flex , les expressions regulieres sont construites apartir des caracteres et d’operateurs.Les operateurs de Flex sont :” \ [ ] − ? . ∗ + | ( ) $ / { } % < >Pour utiliser ces operateurs comme caracteres ordinaires,il faut les proteger en les placant dans une chaıneentouree de double-quotes (”) ou en les placant apres uncaractere \.

Par exemple, \n, \t et \b correspondent comme en C ausaut de ligne, a la tabulation et au retour en arriere.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 254: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Les reglesUne expression reguliere specifie une unite lexicale dulangage source.Flex utilise les expressions regulieres etendues.Dans Flex , les expressions regulieres sont construites apartir des caracteres et d’operateurs.Les operateurs de Flex sont :” \ [ ] − ? . ∗ + | ( ) $ / { } % < >Pour utiliser ces operateurs comme caracteres ordinaires,il faut les proteger en les placant dans une chaıneentouree de double-quotes (”) ou en les placant apres uncaractere \.Par exemple, \n, \t et \b correspondent comme en C ausaut de ligne, a la tabulation et au retour en arriere.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 255: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Specification d’expressions regulieres avec Flex

” : la chaıne elle-meme.”abc” : specifie la chaıne abc

[ ] : un des elements de l’ensemble.[abc] : a, b ou c[a − z ] : toutes les lettres minuscules

. : tout caractere sauf \n.

| : l’alternance (l’union).(ab|bc) : la chaıne ab ou la chaıne bc.

∗ : zero ou plusieurs fois (l’etoile).(x |y)∗ : 0 ou plusieurs caracteres x ou y .

+ : un ou plusieurs fois (l’etoile positive).[a − z ]+ : 1 ou plusieurs lettres minuscules.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 256: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Specification d’expressions regulieres avec Flex

” : la chaıne elle-meme.

”abc” : specifie la chaıne abc

[ ] : un des elements de l’ensemble.[abc] : a, b ou c[a − z ] : toutes les lettres minuscules

. : tout caractere sauf \n.

| : l’alternance (l’union).(ab|bc) : la chaıne ab ou la chaıne bc.

∗ : zero ou plusieurs fois (l’etoile).(x |y)∗ : 0 ou plusieurs caracteres x ou y .

+ : un ou plusieurs fois (l’etoile positive).[a − z ]+ : 1 ou plusieurs lettres minuscules.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 257: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Specification d’expressions regulieres avec Flex

” : la chaıne elle-meme.”abc” : specifie la chaıne abc

[ ] : un des elements de l’ensemble.[abc] : a, b ou c[a − z ] : toutes les lettres minuscules

. : tout caractere sauf \n.

| : l’alternance (l’union).(ab|bc) : la chaıne ab ou la chaıne bc.

∗ : zero ou plusieurs fois (l’etoile).(x |y)∗ : 0 ou plusieurs caracteres x ou y .

+ : un ou plusieurs fois (l’etoile positive).[a − z ]+ : 1 ou plusieurs lettres minuscules.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 258: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Specification d’expressions regulieres avec Flex

” : la chaıne elle-meme.”abc” : specifie la chaıne abc

[ ] : un des elements de l’ensemble.

[abc] : a, b ou c[a − z ] : toutes les lettres minuscules

. : tout caractere sauf \n.

| : l’alternance (l’union).(ab|bc) : la chaıne ab ou la chaıne bc.

∗ : zero ou plusieurs fois (l’etoile).(x |y)∗ : 0 ou plusieurs caracteres x ou y .

+ : un ou plusieurs fois (l’etoile positive).[a − z ]+ : 1 ou plusieurs lettres minuscules.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 259: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Specification d’expressions regulieres avec Flex

” : la chaıne elle-meme.”abc” : specifie la chaıne abc

[ ] : un des elements de l’ensemble.[abc] : a, b ou c

[a − z ] : toutes les lettres minuscules

. : tout caractere sauf \n.

| : l’alternance (l’union).(ab|bc) : la chaıne ab ou la chaıne bc.

∗ : zero ou plusieurs fois (l’etoile).(x |y)∗ : 0 ou plusieurs caracteres x ou y .

+ : un ou plusieurs fois (l’etoile positive).[a − z ]+ : 1 ou plusieurs lettres minuscules.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 260: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Specification d’expressions regulieres avec Flex

” : la chaıne elle-meme.”abc” : specifie la chaıne abc

[ ] : un des elements de l’ensemble.[abc] : a, b ou c[a − z ] : toutes les lettres minuscules

. : tout caractere sauf \n.

| : l’alternance (l’union).(ab|bc) : la chaıne ab ou la chaıne bc.

∗ : zero ou plusieurs fois (l’etoile).(x |y)∗ : 0 ou plusieurs caracteres x ou y .

+ : un ou plusieurs fois (l’etoile positive).[a − z ]+ : 1 ou plusieurs lettres minuscules.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 261: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Specification d’expressions regulieres avec Flex

” : la chaıne elle-meme.”abc” : specifie la chaıne abc

[ ] : un des elements de l’ensemble.[abc] : a, b ou c[a − z ] : toutes les lettres minuscules

. : tout caractere sauf \n.

| : l’alternance (l’union).(ab|bc) : la chaıne ab ou la chaıne bc.

∗ : zero ou plusieurs fois (l’etoile).(x |y)∗ : 0 ou plusieurs caracteres x ou y .

+ : un ou plusieurs fois (l’etoile positive).[a − z ]+ : 1 ou plusieurs lettres minuscules.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 262: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Specification d’expressions regulieres avec Flex

” : la chaıne elle-meme.”abc” : specifie la chaıne abc

[ ] : un des elements de l’ensemble.[abc] : a, b ou c[a − z ] : toutes les lettres minuscules

. : tout caractere sauf \n.

| : l’alternance (l’union).

(ab|bc) : la chaıne ab ou la chaıne bc.

∗ : zero ou plusieurs fois (l’etoile).(x |y)∗ : 0 ou plusieurs caracteres x ou y .

+ : un ou plusieurs fois (l’etoile positive).[a − z ]+ : 1 ou plusieurs lettres minuscules.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 263: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Specification d’expressions regulieres avec Flex

” : la chaıne elle-meme.”abc” : specifie la chaıne abc

[ ] : un des elements de l’ensemble.[abc] : a, b ou c[a − z ] : toutes les lettres minuscules

. : tout caractere sauf \n.

| : l’alternance (l’union).(ab|bc) : la chaıne ab ou la chaıne bc.

∗ : zero ou plusieurs fois (l’etoile).(x |y)∗ : 0 ou plusieurs caracteres x ou y .

+ : un ou plusieurs fois (l’etoile positive).[a − z ]+ : 1 ou plusieurs lettres minuscules.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 264: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Specification d’expressions regulieres avec Flex

” : la chaıne elle-meme.”abc” : specifie la chaıne abc

[ ] : un des elements de l’ensemble.[abc] : a, b ou c[a − z ] : toutes les lettres minuscules

. : tout caractere sauf \n.

| : l’alternance (l’union).(ab|bc) : la chaıne ab ou la chaıne bc.

∗ : zero ou plusieurs fois (l’etoile).

(x |y)∗ : 0 ou plusieurs caracteres x ou y .

+ : un ou plusieurs fois (l’etoile positive).[a − z ]+ : 1 ou plusieurs lettres minuscules.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 265: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Specification d’expressions regulieres avec Flex

” : la chaıne elle-meme.”abc” : specifie la chaıne abc

[ ] : un des elements de l’ensemble.[abc] : a, b ou c[a − z ] : toutes les lettres minuscules

. : tout caractere sauf \n.

| : l’alternance (l’union).(ab|bc) : la chaıne ab ou la chaıne bc.

∗ : zero ou plusieurs fois (l’etoile).(x |y)∗ : 0 ou plusieurs caracteres x ou y .

+ : un ou plusieurs fois (l’etoile positive).[a − z ]+ : 1 ou plusieurs lettres minuscules.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 266: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Specification d’expressions regulieres avec Flex

” : la chaıne elle-meme.”abc” : specifie la chaıne abc

[ ] : un des elements de l’ensemble.[abc] : a, b ou c[a − z ] : toutes les lettres minuscules

. : tout caractere sauf \n.

| : l’alternance (l’union).(ab|bc) : la chaıne ab ou la chaıne bc.

∗ : zero ou plusieurs fois (l’etoile).(x |y)∗ : 0 ou plusieurs caracteres x ou y .

+ : un ou plusieurs fois (l’etoile positive).

[a − z ]+ : 1 ou plusieurs lettres minuscules.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 267: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Specification d’expressions regulieres avec Flex

” : la chaıne elle-meme.”abc” : specifie la chaıne abc

[ ] : un des elements de l’ensemble.[abc] : a, b ou c[a − z ] : toutes les lettres minuscules

. : tout caractere sauf \n.

| : l’alternance (l’union).(ab|bc) : la chaıne ab ou la chaıne bc.

∗ : zero ou plusieurs fois (l’etoile).(x |y)∗ : 0 ou plusieurs caracteres x ou y .

+ : un ou plusieurs fois (l’etoile positive).[a − z ]+ : 1 ou plusieurs lettres minuscules.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 268: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Specification d’expressions regulieres avec Flex

? : operateur d’occurrence 0 ou 1 fois.ab?c : la chaıne abc ou ac.

/ : condition de reconnaissance.ab/cd : la chaıne ab seulement si elle est suivie de lachaıne cd.

$ : reconnaissance en fin de ligne.ab$ : la chaıne ab seulement si elle est en fin de ligne. : reconnaissance en debut de ligne.ab : la chaıne ab seulement si elle est en debut de ligne.

{ } : repetition bornee.a{1, 5} : les chaınes a, aa, aaa, aaaa ou aaaaa.a{2, } : les chaınes aa, aaa, aaa, ...etc.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 269: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Specification d’expressions regulieres avec Flex

? : operateur d’occurrence 0 ou 1 fois.

ab?c : la chaıne abc ou ac.

/ : condition de reconnaissance.ab/cd : la chaıne ab seulement si elle est suivie de lachaıne cd.

$ : reconnaissance en fin de ligne.ab$ : la chaıne ab seulement si elle est en fin de ligne. : reconnaissance en debut de ligne.ab : la chaıne ab seulement si elle est en debut de ligne.

{ } : repetition bornee.a{1, 5} : les chaınes a, aa, aaa, aaaa ou aaaaa.a{2, } : les chaınes aa, aaa, aaa, ...etc.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 270: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Specification d’expressions regulieres avec Flex

? : operateur d’occurrence 0 ou 1 fois.ab?c : la chaıne abc ou ac.

/ : condition de reconnaissance.ab/cd : la chaıne ab seulement si elle est suivie de lachaıne cd.

$ : reconnaissance en fin de ligne.ab$ : la chaıne ab seulement si elle est en fin de ligne. : reconnaissance en debut de ligne.ab : la chaıne ab seulement si elle est en debut de ligne.

{ } : repetition bornee.a{1, 5} : les chaınes a, aa, aaa, aaaa ou aaaaa.a{2, } : les chaınes aa, aaa, aaa, ...etc.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 271: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Specification d’expressions regulieres avec Flex

? : operateur d’occurrence 0 ou 1 fois.ab?c : la chaıne abc ou ac.

/ : condition de reconnaissance.

ab/cd : la chaıne ab seulement si elle est suivie de lachaıne cd.

$ : reconnaissance en fin de ligne.ab$ : la chaıne ab seulement si elle est en fin de ligne. : reconnaissance en debut de ligne.ab : la chaıne ab seulement si elle est en debut de ligne.

{ } : repetition bornee.a{1, 5} : les chaınes a, aa, aaa, aaaa ou aaaaa.a{2, } : les chaınes aa, aaa, aaa, ...etc.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 272: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Specification d’expressions regulieres avec Flex

? : operateur d’occurrence 0 ou 1 fois.ab?c : la chaıne abc ou ac.

/ : condition de reconnaissance.ab/cd : la chaıne ab seulement si elle est suivie de lachaıne cd.

$ : reconnaissance en fin de ligne.ab$ : la chaıne ab seulement si elle est en fin de ligne. : reconnaissance en debut de ligne.ab : la chaıne ab seulement si elle est en debut de ligne.

{ } : repetition bornee.a{1, 5} : les chaınes a, aa, aaa, aaaa ou aaaaa.a{2, } : les chaınes aa, aaa, aaa, ...etc.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 273: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Specification d’expressions regulieres avec Flex

? : operateur d’occurrence 0 ou 1 fois.ab?c : la chaıne abc ou ac.

/ : condition de reconnaissance.ab/cd : la chaıne ab seulement si elle est suivie de lachaıne cd.

$ : reconnaissance en fin de ligne.

ab$ : la chaıne ab seulement si elle est en fin de ligne. : reconnaissance en debut de ligne.ab : la chaıne ab seulement si elle est en debut de ligne.

{ } : repetition bornee.a{1, 5} : les chaınes a, aa, aaa, aaaa ou aaaaa.a{2, } : les chaınes aa, aaa, aaa, ...etc.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 274: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Specification d’expressions regulieres avec Flex

? : operateur d’occurrence 0 ou 1 fois.ab?c : la chaıne abc ou ac.

/ : condition de reconnaissance.ab/cd : la chaıne ab seulement si elle est suivie de lachaıne cd.

$ : reconnaissance en fin de ligne.ab$ : la chaıne ab seulement si elle est en fin de ligne.

: reconnaissance en debut de ligne.ab : la chaıne ab seulement si elle est en debut de ligne.

{ } : repetition bornee.a{1, 5} : les chaınes a, aa, aaa, aaaa ou aaaaa.a{2, } : les chaınes aa, aaa, aaa, ...etc.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 275: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Specification d’expressions regulieres avec Flex

? : operateur d’occurrence 0 ou 1 fois.ab?c : la chaıne abc ou ac.

/ : condition de reconnaissance.ab/cd : la chaıne ab seulement si elle est suivie de lachaıne cd.

$ : reconnaissance en fin de ligne.ab$ : la chaıne ab seulement si elle est en fin de ligne. : reconnaissance en debut de ligne.

ab : la chaıne ab seulement si elle est en debut de ligne.

{ } : repetition bornee.a{1, 5} : les chaınes a, aa, aaa, aaaa ou aaaaa.a{2, } : les chaınes aa, aaa, aaa, ...etc.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 276: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Specification d’expressions regulieres avec Flex

? : operateur d’occurrence 0 ou 1 fois.ab?c : la chaıne abc ou ac.

/ : condition de reconnaissance.ab/cd : la chaıne ab seulement si elle est suivie de lachaıne cd.

$ : reconnaissance en fin de ligne.ab$ : la chaıne ab seulement si elle est en fin de ligne. : reconnaissance en debut de ligne.ab : la chaıne ab seulement si elle est en debut de ligne.

{ } : repetition bornee.a{1, 5} : les chaınes a, aa, aaa, aaaa ou aaaaa.a{2, } : les chaınes aa, aaa, aaa, ...etc.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 277: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Specification d’expressions regulieres avec Flex

? : operateur d’occurrence 0 ou 1 fois.ab?c : la chaıne abc ou ac.

/ : condition de reconnaissance.ab/cd : la chaıne ab seulement si elle est suivie de lachaıne cd.

$ : reconnaissance en fin de ligne.ab$ : la chaıne ab seulement si elle est en fin de ligne. : reconnaissance en debut de ligne.ab : la chaıne ab seulement si elle est en debut de ligne.

{ } : repetition bornee.

a{1, 5} : les chaınes a, aa, aaa, aaaa ou aaaaa.a{2, } : les chaınes aa, aaa, aaa, ...etc.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 278: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Specification d’expressions regulieres avec Flex

? : operateur d’occurrence 0 ou 1 fois.ab?c : la chaıne abc ou ac.

/ : condition de reconnaissance.ab/cd : la chaıne ab seulement si elle est suivie de lachaıne cd.

$ : reconnaissance en fin de ligne.ab$ : la chaıne ab seulement si elle est en fin de ligne. : reconnaissance en debut de ligne.ab : la chaıne ab seulement si elle est en debut de ligne.

{ } : repetition bornee.a{1, 5} : les chaınes a, aa, aaa, aaaa ou aaaaa.

a{2, } : les chaınes aa, aaa, aaa, ...etc.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 279: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Specification d’expressions regulieres avec Flex

? : operateur d’occurrence 0 ou 1 fois.ab?c : la chaıne abc ou ac.

/ : condition de reconnaissance.ab/cd : la chaıne ab seulement si elle est suivie de lachaıne cd.

$ : reconnaissance en fin de ligne.ab$ : la chaıne ab seulement si elle est en fin de ligne. : reconnaissance en debut de ligne.ab : la chaıne ab seulement si elle est en debut de ligne.

{ } : repetition bornee.a{1, 5} : les chaınes a, aa, aaa, aaaa ou aaaaa.a{2, } : les chaınes aa, aaa, aaa, ...etc.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 280: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Resolution des conflits

En cas de conflit, Flex choisit toujours la regle qui produitle plus long lexeme.

Exemples 1.13

”prog” action1

”program” action2

La deuxieme regle sera choisie en cas de conflit.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 281: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Resolution des conflits

En cas de conflit, Flex choisit toujours la regle qui produitle plus long lexeme.

Exemples 1.13

”prog” action1

”program” action2

La deuxieme regle sera choisie en cas de conflit.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 282: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Resolution des conflits

En cas de conflit, Flex choisit toujours la regle qui produitle plus long lexeme.

Exemples 1.13

”prog” action1

”program” action2

La deuxieme regle sera choisie en cas de conflit.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 283: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Resolution des conflits

En cas de conflit, Flex choisit toujours la regle qui produitle plus long lexeme.

Exemples 1.13

”prog” action1

”program” action2

La deuxieme regle sera choisie en cas de conflit.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 284: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Resolution des conflits

En cas de conflit, Flex choisit toujours la regle qui produitle plus long lexeme.

Exemples 1.13

”prog” action1

”program” action2

La deuxieme regle sera choisie en cas de conflit.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 285: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Resolution des conflits

En cas de conflit, Flex choisit toujours la regle qui produitle plus long lexeme.

Exemples 1.13

”prog” action1

”program” action2

La deuxieme regle sera choisie en cas de conflit.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 286: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Resolution des conflits

Si plusieurs regles donnent des lexemes de memeslongueurs, Flex choisit la premiere.

Exemples 1.14

”prog” action1

[a − z ]+ action2

La premiere regle sera choisie en cas de conflit de lexemesayant memes longueurs.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 287: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Resolution des conflits

Si plusieurs regles donnent des lexemes de memeslongueurs, Flex choisit la premiere.

Exemples 1.14

”prog” action1

[a − z ]+ action2

La premiere regle sera choisie en cas de conflit de lexemesayant memes longueurs.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 288: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Resolution des conflits

Si plusieurs regles donnent des lexemes de memeslongueurs, Flex choisit la premiere.

Exemples 1.14

”prog” action1

[a − z ]+ action2

La premiere regle sera choisie en cas de conflit de lexemesayant memes longueurs.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 289: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Resolution des conflits

Si plusieurs regles donnent des lexemes de memeslongueurs, Flex choisit la premiere.

Exemples 1.14

”prog” action1

[a − z ]+ action2

La premiere regle sera choisie en cas de conflit de lexemesayant memes longueurs.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 290: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Resolution des conflits

Si plusieurs regles donnent des lexemes de memeslongueurs, Flex choisit la premiere.

Exemples 1.14

”prog” action1

[a − z ]+ action2

La premiere regle sera choisie en cas de conflit de lexemesayant memes longueurs.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 291: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Resolution des conflits

Si plusieurs regles donnent des lexemes de memeslongueurs, Flex choisit la premiere.

Exemples 1.14

”prog” action1

[a − z ]+ action2

La premiere regle sera choisie en cas de conflit de lexemesayant memes longueurs.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 292: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Resolution des conflits

Si aucune regle ne correpond au flot d’entree, Flex choisitsa regle par defaut implicite :

.|\n {ECHO}

Cette regle par defaut, recopie le flot d’entree sur le flotde sortie.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 293: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Resolution des conflits

Si aucune regle ne correpond au flot d’entree, Flex choisitsa regle par defaut implicite :

.|\n {ECHO}

Cette regle par defaut, recopie le flot d’entree sur le flotde sortie.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 294: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Resolution des conflits

Si aucune regle ne correpond au flot d’entree, Flex choisitsa regle par defaut implicite :

.|\n {ECHO}

Cette regle par defaut, recopie le flot d’entree sur le flotde sortie.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 295: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Resolution des conflits

Si aucune regle ne correpond au flot d’entree, Flex choisitsa regle par defaut implicite :

.|\n {ECHO}

Cette regle par defaut, recopie le flot d’entree sur le flotde sortie.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 296: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Les actions

Definition 1.15

Une action est un bloc d’instructions qui est executeelorsque la chaıne de caracteres lue correspond a la chaınespecifiee avant l’action.

Flex dispose de quelques variables et actionspredefinies.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 297: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Les actions

Definition 1.15

Une action est un bloc d’instructions qui est executeelorsque la chaıne de caracteres lue correspond a la chaınespecifiee avant l’action.

Flex dispose de quelques variables et actionspredefinies.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 298: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Les actions

Definition 1.15

Une action est un bloc d’instructions qui est executeelorsque la chaıne de caracteres lue correspond a la chaınespecifiee avant l’action.

Flex dispose de quelques variables et actionspredefinies.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 299: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Les actions

Definition 1.15

Une action est un bloc d’instructions qui est executeelorsque la chaıne de caracteres lue correspond a la chaınespecifiee avant l’action.

Flex dispose de quelques variables et actionspredefinies.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 300: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Quelques variables de Flex

yytext : la chaıne reconnue par l’expression reguliere (lelexeme courant).

yyleng : la longueur de yytext.

yyin : le fichier d’entree (c’est un FILE*).

yyout : le fichier de sortie (c’est un FILE*).

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 301: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Quelques variables de Flex

yytext : la chaıne reconnue par l’expression reguliere (lelexeme courant).

yyleng : la longueur de yytext.

yyin : le fichier d’entree (c’est un FILE*).

yyout : le fichier de sortie (c’est un FILE*).

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 302: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Quelques variables de Flex

yytext : la chaıne reconnue par l’expression reguliere (lelexeme courant).

yyleng : la longueur de yytext.

yyin : le fichier d’entree (c’est un FILE*).

yyout : le fichier de sortie (c’est un FILE*).

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 303: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Quelques variables de Flex

yytext : la chaıne reconnue par l’expression reguliere (lelexeme courant).

yyleng : la longueur de yytext.

yyin : le fichier d’entree (c’est un FILE*).

yyout : le fichier de sortie (c’est un FILE*).

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 304: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Quelques variables de Flex

yytext : la chaıne reconnue par l’expression reguliere (lelexeme courant).

yyleng : la longueur de yytext.

yyin : le fichier d’entree (c’est un FILE*).

yyout : le fichier de sortie (c’est un FILE*).

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 305: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Quelques macros de Flex

ECHO : recopie le lexeme courant.[a − z ]+ ECHO;ce qui equivaut a {printf(”%s”, yytext); }REJECT : permet d’envisager la ”deuxieme meilleure”regle pour laquelle le flot d’entree (ou un de ses prefixes)est reconnu.foo {f (); REJECT; }[ \t\n]+ {++word count; }ce qui permet de compter le nombre totatl des caractereset executer la fonction f () chaque fois que la cahıne fooest rencontree.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 306: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Quelques macros de Flex

ECHO : recopie le lexeme courant.

[a − z ]+ ECHO;ce qui equivaut a {printf(”%s”, yytext); }REJECT : permet d’envisager la ”deuxieme meilleure”regle pour laquelle le flot d’entree (ou un de ses prefixes)est reconnu.foo {f (); REJECT; }[ \t\n]+ {++word count; }ce qui permet de compter le nombre totatl des caractereset executer la fonction f () chaque fois que la cahıne fooest rencontree.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 307: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Quelques macros de Flex

ECHO : recopie le lexeme courant.[a − z ]+ ECHO;

ce qui equivaut a {printf(”%s”, yytext); }REJECT : permet d’envisager la ”deuxieme meilleure”regle pour laquelle le flot d’entree (ou un de ses prefixes)est reconnu.foo {f (); REJECT; }[ \t\n]+ {++word count; }ce qui permet de compter le nombre totatl des caractereset executer la fonction f () chaque fois que la cahıne fooest rencontree.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 308: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Quelques macros de Flex

ECHO : recopie le lexeme courant.[a − z ]+ ECHO;ce qui equivaut a {printf(”%s”, yytext); }

REJECT : permet d’envisager la ”deuxieme meilleure”regle pour laquelle le flot d’entree (ou un de ses prefixes)est reconnu.foo {f (); REJECT; }[ \t\n]+ {++word count; }ce qui permet de compter le nombre totatl des caractereset executer la fonction f () chaque fois que la cahıne fooest rencontree.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 309: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Quelques macros de Flex

ECHO : recopie le lexeme courant.[a − z ]+ ECHO;ce qui equivaut a {printf(”%s”, yytext); }REJECT : permet d’envisager la ”deuxieme meilleure”regle pour laquelle le flot d’entree (ou un de ses prefixes)est reconnu.

foo {f (); REJECT; }[ \t\n]+ {++word count; }ce qui permet de compter le nombre totatl des caractereset executer la fonction f () chaque fois que la cahıne fooest rencontree.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 310: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Quelques macros de Flex

ECHO : recopie le lexeme courant.[a − z ]+ ECHO;ce qui equivaut a {printf(”%s”, yytext); }REJECT : permet d’envisager la ”deuxieme meilleure”regle pour laquelle le flot d’entree (ou un de ses prefixes)est reconnu.foo {f (); REJECT; }

[ \t\n]+ {++word count; }ce qui permet de compter le nombre totatl des caractereset executer la fonction f () chaque fois que la cahıne fooest rencontree.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 311: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Quelques macros de Flex

ECHO : recopie le lexeme courant.[a − z ]+ ECHO;ce qui equivaut a {printf(”%s”, yytext); }REJECT : permet d’envisager la ”deuxieme meilleure”regle pour laquelle le flot d’entree (ou un de ses prefixes)est reconnu.foo {f (); REJECT; }[ \t\n]+ {++word count; }

ce qui permet de compter le nombre totatl des caractereset executer la fonction f () chaque fois que la cahıne fooest rencontree.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 312: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Quelques macros de Flex

ECHO : recopie le lexeme courant.[a − z ]+ ECHO;ce qui equivaut a {printf(”%s”, yytext); }REJECT : permet d’envisager la ”deuxieme meilleure”regle pour laquelle le flot d’entree (ou un de ses prefixes)est reconnu.foo {f (); REJECT; }[ \t\n]+ {++word count; }ce qui permet de compter le nombre totatl des caractereset executer la fonction f () chaque fois que la cahıne fooest rencontree.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 313: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Quelques directives de Flex

yymore() : indique que lors de la prochaıne applicationd’une regle, la chaıne reconnue doit etre cancatenee ayytext qui ne doit donc pas ecraser yytext.

Exemples 1.16

mega- { ECHO; yymore(); }octets ECHO;

Pour l’entree mega-octets, l’analyseur fourniramega-mega-octets.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 314: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Quelques directives de Flex

yymore() : indique que lors de la prochaıne applicationd’une regle, la chaıne reconnue doit etre cancatenee ayytext qui ne doit donc pas ecraser yytext.

Exemples 1.16

mega- { ECHO; yymore(); }octets ECHO;

Pour l’entree mega-octets, l’analyseur fourniramega-mega-octets.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 315: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Quelques directives de Flex

yymore() : indique que lors de la prochaıne applicationd’une regle, la chaıne reconnue doit etre cancatenee ayytext qui ne doit donc pas ecraser yytext.

Exemples 1.16

mega- { ECHO; yymore(); }octets ECHO;

Pour l’entree mega-octets, l’analyseur fourniramega-mega-octets.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 316: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Quelques directives de Flex

yymore() : indique que lors de la prochaıne applicationd’une regle, la chaıne reconnue doit etre cancatenee ayytext qui ne doit donc pas ecraser yytext.

Exemples 1.16

mega- { ECHO; yymore(); }

octets ECHO;

Pour l’entree mega-octets, l’analyseur fourniramega-mega-octets.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 317: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Quelques directives de Flex

yymore() : indique que lors de la prochaıne applicationd’une regle, la chaıne reconnue doit etre cancatenee ayytext qui ne doit donc pas ecraser yytext.

Exemples 1.16

mega- { ECHO; yymore(); }octets ECHO;

Pour l’entree mega-octets, l’analyseur fourniramega-mega-octets.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 318: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Quelques directives de Flex

yymore() : indique que lors de la prochaıne applicationd’une regle, la chaıne reconnue doit etre cancatenee ayytext qui ne doit donc pas ecraser yytext.

Exemples 1.16

mega- { ECHO; yymore(); }octets ECHO;

Pour l’entree mega-octets, l’analyseur fourniramega-mega-octets.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 319: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Quelques directives de Flex

yyless(n) : indique que les n premiers carateres de yytextdoivent etre pris en compte lors de la prochaıneapplication d’une regle.

Exemples 1.17

foobar { ECHO; yyles(3); }[a − z ]+ ECHO;

Pour l’entree foobar, l’analyseur fournira foobarbar.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 320: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Quelques directives de Flex

yyless(n) : indique que les n premiers carateres de yytextdoivent etre pris en compte lors de la prochaıneapplication d’une regle.

Exemples 1.17

foobar { ECHO; yyles(3); }[a − z ]+ ECHO;

Pour l’entree foobar, l’analyseur fournira foobarbar.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 321: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Quelques directives de Flex

yyless(n) : indique que les n premiers carateres de yytextdoivent etre pris en compte lors de la prochaıneapplication d’une regle.

Exemples 1.17

foobar { ECHO; yyles(3); }[a − z ]+ ECHO;

Pour l’entree foobar, l’analyseur fournira foobarbar.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 322: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Quelques directives de Flex

yyless(n) : indique que les n premiers carateres de yytextdoivent etre pris en compte lors de la prochaıneapplication d’une regle.

Exemples 1.17

foobar { ECHO; yyles(3); }

[a − z ]+ ECHO;

Pour l’entree foobar, l’analyseur fournira foobarbar.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 323: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Quelques directives de Flex

yyless(n) : indique que les n premiers carateres de yytextdoivent etre pris en compte lors de la prochaıneapplication d’une regle.

Exemples 1.17

foobar { ECHO; yyles(3); }[a − z ]+ ECHO;

Pour l’entree foobar, l’analyseur fournira foobarbar.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation

Page 324: Deuxième partie Chapitre 1 : Analyse lexicale€¦ · Deuxi`eme partie Chapitre 1 : Analyse lexicale Prof. Abdelmajid Dargham Facult´e des Sciences, Oujda Fili`ere SMI - S5 Module

Flex : Fast Lexer

Quelques directives de Flex

yyless(n) : indique que les n premiers carateres de yytextdoivent etre pris en compte lors de la prochaıneapplication d’une regle.

Exemples 1.17

foobar { ECHO; yyles(3); }[a − z ]+ ECHO;

Pour l’entree foobar, l’analyseur fournira foobarbar.

Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation