aide a la realisation d'un compilateur
R´
ealisation d’un analyseur lexical
Jean Privat
Universit´
e du Qu´ ebec ` a Montr´ eal INF5000 — Th´eorie et construction des compilateurs
Automne 2013
Jean Privat (UQAM)
04—Analyseur lexical
INF5000 — Automne 2013
1 / 29
Analyse lexicale
Analyseur lexical
Donn´ee : une s´equence de caract`eres
R´esultat : une s´equence de jetons (lex`emes)
Un jeton : un type (´etiquette) & un texte & une position (ligne/colonne)
for
i
= 1
to
for
id
eq int
to
Jean Privat (UQAM)
04—Analyseur lexical
10 do print i ...
INF5000 — Automne 2013
2 / 29
G´ en´ eration d’analyseur lexical
G´
en´ erateur d’analyseur lexical
Donn´ee : une description d’un langage
R´esultat : le code source d’un analyseur
Exemple : SableCC4
G´en`ere du Java (entre autres)
Description langage
Jean Privat (UQAM)
SableCC4
04—Analyseur lexical
Source Java
INF5000 — Automne 2013
3 / 29
Description de langage
Grammar demo ;
Lexer
letter = ’a ’ .. ’z ’ ; digit = ’0 ’ . . ’9 ’ ; i d e n t i f i e r = letter ( letter | digit )∗; comma = ’ , ’ ; b l a n k = ( ’ ’ | #9 | #10 | #13)+; if = ’ if ’; else = ’ else ’ ;
Parser
i d e n t i f i e r , comma , i f , e l s e ;
Ignored
blank ;
Jean Privat (UQAM)
04—Analyseur lexical
INF5000 — Automne 2013
4 / 29
S´ election de jetons
Plusieurs s´ equen¸cages en jetons sont souvent possibles
S´equence de caract`eres : ify
1 jeton : id ify
2 jetons : id if , id y
2 jetons : if if , id y
2 jetons : id i , id fy
3 jetons : id i , id f , id y
Pas de place ` a l’ambigu¨ıt´ e Il faut des r`egles !
Jean Privat (UQAM)
04—Analyseur lexical
INF5000 — Automne 2013
5 / 29
R` egles de l’analyse lexicale
R` egle 1
Le jeton le plus long gagne toujours
Exercice : Traitez les s´ equences suivantes toto ,,i iiff iff i f
Jean Privat (UQAM)
04—Analyseur lexical
INF5000 — Automne 2013
6 / 29
R`
egles