0% ont trouvé ce document utile (0 vote)
150 vues13 pages

Principes de l'analyse lexicale des compilateurs

Transféré par

Flutter Pro
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
150 vues13 pages

Principes de l'analyse lexicale des compilateurs

Transféré par

Flutter Pro
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Principes et Techniques des

Compilateurs

Année Universitaire 2013 / 2014


Plan

⚫ Généralités
⚫ Unité lexicale, Lexème et Modèles
⚫ Définition régulière
⚫ Diagramme de transition

2
Rôle de l’analyseur lexical

⚫ Lire les caractères du texte d'entrée.


⚫ Supprimer les blancs, les commentaires, etc.
⚫ Former des unités lexicales .
⚫ Passer des couples <unité lexicale, valeur lexicale> à l'Analyseur Syntaxique.
⚫ Relier les messages d’erreurs issus du compilateur au code source.

Schéma usuel d’implémentation de l’analyseur lexical –


interaction avec l’analyseur syntaxique

TOKEN COURANT
Programme
Analyseur Analyseur
source
lexical Syntaxique
TOKEN PROCHAIN

Table de symboles

3
Unités lexicales, lexèmes et modèles

A propos d’une unité lexicale reconnue dans le texte source on doit distinguer trois notions
importantes :
⚫ L’unité lexicale.
⚫ le lexème.
⚫ le modèle.

4
Unités lexicales, lexèmes et modèles

Unité lexicale
Pour la plupart des langages de programmation, les constructions suivantes sont traitées
comme des unités lexicales :

⚫ Mots clés.
⚫ Opérateurs arithmétiques
⚫ Opérateurs logiques
⚫ Identificateurs.
⚫ Séparateurs ( ‘(’, ‘)’, ‘,’, ‘:’, etc.)

5
Unités lexicales, lexèmes et modèles

Lexème
Un lexème est une suite de caractères du programme source qui concordent avec le modèle de
l’unité lexicale. Exemple :

const max_length = 256;

Dans la déclaration précédente, la chaîne de caractères max_length est un lexème de l’unité


lexicale Identifier.

6
Unités lexicales, lexèmes et modèles

Modèle
le modèle sert à spécifier l’unité lexicale.
⚫ Pour les mots réservés tels que const, if, while, etc. le lexème et le modèle
coïncident généralement. Le modèle de l’unité lexicale const est la chaîne const.
⚫ Pour une unité lexicale rel_oper qui représente les opérateurs relationnels, le modèle
est l’ensemble des opérateurs relationnels : <, < =, ==, >=, >, !=
⚫ Pour décrire précisément les modèles des unités lexicales plus complexes tels que les
identificateurs et les nombres, on utilise les expressions régulières .
⚫ Des langages et outils permettent d’engendrer une reconnaissance efficace par automates
finis des expressions régulières.

7
Unités lexicales, lexèmes et modèles

Unité lexicale Lexèmes Description informelle des modèles

const const const

if if if

rel_oper < , <= , == , != , >= , > < | <= | == | != | >= | >

identifier e pi length Lettre suivie de lettres ou de chiffres ou le caractère ‘_’

8
Les définitions régulières

Les définitions régulières permettent de donner des noms à des ER définies sur un alphabet  à
partir de symboles de base et de les utiliser comme s’ils étaient des symboles de .
⚫ d1 → r1
⚫ d2 → r2
⚫ …
⚫ dn → rn

di est un nom distinct et chaque ri est une ER sur les symboles de  ∪{d1, d2, …, di-1}.

9
Rappel : Les expressions régulières

Exemple
letter → A | B | … | Z | a | b | … | z
digit → 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
identifier → letter (letter | digit)*
number → digit+

10
Diagrammes de transitions

⚫ Les diagrammes de transitions décrivent les actions qui sont réalisées quand l’analyseur
syntaxique appelle un analyseur lexical pour fournir la prochaine unité lexicale.

⚫ Un état initial du diagramme.

⚫ En entrant dans un état on lit le prochain caractère. Si l’étiquette d’un arc sortant de l’état
courant concorde avec le caractère d’entrée on passe à l’état pointé par cet arc. Autrement
on signale une erreur.

11
Diagrammes de transitions

Exemples begin < = return (relop, LE)


0 1 2
>
3 return (relop, DIFF)
other
= 4 * return (relop, LT)

> 5 return (relop,EQ)

6 = 7 return (relop, GE)


other *
8 return (relop, GT)

Diagramme de transition pour les opérateurs de relation

État d’acceptation
Letter | digit

begin letter other *


9 10 11

Diagramme de transition pour les identificateurs

12
Réalisation de Diagrammes de transitions

begin < =
0 1 2
>
3
other
= 4 *

> 5

6 =
7
other
Letter | digit 8 *
letter other *
9 10

digit digit
digit . digit other *
19 20 21 22
digit

digit other *
23 24

13

Vous aimerez peut-être aussi