Documente Academic
Documente Profesional
Documente Cultură
I. Introduction
Jacques Farre
Jacques.Farre@unice.fr
http://deptinfo.unice.fr/~jf/Compil-L3/
Universit
e de Nice - Sophia Antipolis Licence 3 Informatique 2012-2013
1/17
Universit
e de Nice - Sophia Antipolis Licence 3 Informatique 2012-2013
2/17
Introduction
Compilation : traduction dun langage dans un autre
pas seulement des langages de programmation : langages de
script, dinterrogation, de description (LaTeX, XML . . . )
pas seulement pour obtenir un programme ex
ecutable :
enjoliveurs, editeurs syntaxiques . . .
concepts et outils utilis
es dans de nombreux autres domaines :
web, bases de donnees, traitement des langues naturelles . . .
Concepts et outils fondamentaux
th
eorie des langages (grammaires, automates)
s
emantiques formelles
algorithmes et structures de donn
ees varies
principes de g
enie logiciel
Vous rencontrerez in
evitablement un jour ou lautre un
Universit
e de Nice - Sophia Antipolis Licence 3 Informatique 2012-2013
3/17
Terminologie
langage source : celui quil faut analyser
langage objet : celui vers lequel il faut traduire
langage machine ou dassemblage : langage machine sous
forme symbolique
traducteur : passage dun langage `
a un autre, par exemple
pr
eprocesseur : dun sur-langage de L vers L (C par exemple)
assembleur : du langage dassemblage vers le code machine
binaire
editeur de liens : dun ensemble de sous-programmes en binaire
4/17
Compilateur et interpr`ete
donn
ees
programme
en langage
source
COMPILATEUR
programme
en langage
objet
donn
ees
INTERPRETATION
programme
en langage
source
forme
interne
TRADUCTION
avantages et inconv
enients de chaque mod`ele
compilateur : produit du code machine programme efficace
mais pas toujours portable
interpr`
ete : programme portable mais moins efficace, mais qui
peut manipuler le code source (meta-programmation)
Universit
e de Nice - Sophia Antipolis Licence 3 Informatique 2012-2013
5/17
Compilation croisee
Les traducteurs (compilateurs et interpr`
etes) sont des
Compilateur de S
vers un code O
implante sur
une machine X :
ecrit en
langage S
LANGAGE
SOURCE S
LANGAGE
OBJET O
programme
ex
ecutable
sur machine O
LANGAGE
DEXECUTION X
machine X
programme en
code ARM
Compilateur
en code 80x86
PC
Universit
e de Nice - Sophia Antipolis Licence 3 Informatique 2012-2013
6/17
une machine X
par exemple, un compilateur de Java
ecrit en C sur un PC :
LANGAGE
LANGAGE
LANGAGE
LANGAGE
SOURCE S
OBJET O
SOURCE S
OBJET O
LANGAGE
DECRITURE E
LANGAGE
LANGAGE
LANGAGE
SOURCE E
OBJET X
DEXECUTION X
LANGAGE
DEXECUTION X
machine X
Universit
e de Nice - Sophia Antipolis Licence 3 Informatique 2012-2013
7/17
LANGAGE
LANGAGE
LANGAGE
SOURCE S
OBJET O
SOURCE S
OBJET O
LANGAGE
DECRITURE E
LANGAGE
LANGAGE
SOURCE E
OBJET X
LANGAGE
DEXECUTION X
LANGAGE
DEXECUTION X
LANGAGE
LANGAGE
SOURCE S
OBJET O
machine X
LANGAGE
LANGAGE
LANGAGE
DECRITURE S
SOURCE S
OBJET O
LANGAGE
LANGAGE
SOURCE S
OBJET O
LANGAGE
DEXECUTION O
LANGAGE
DEXECUTION X
machine X
Universit
e de Nice - Sophia Antipolis Licence 3 Informatique 2012-2013
8/17
Compilateurs monolithiques
les premiers compilateurs
etaient monolitiques : ils pouvaient
COMPILATEUR 1-1
langage
objet 1
langage
source 1
COMPILATEUR 1-n
langage
objet n
langage
source 2
COMPILATEUR 2-n
langage
objet n
langage
source m
COMPILATEUR m-1
langage
objet 1
langage
source m
COMPILATEUR m-n
langage
objet n
Universit
e de Nice - Sophia Antipolis Licence 3 Informatique 2012-2013
9/17
Compilateurs modulaires
langage
source
PARTIE
AVANT
repr
esentation
interm
ediaire
PARTIE
`
ARRIERE
langage
objet
PARTIE
AVANT 1
langage
source m
PARTIE
AVANT m
repr
esentation
interm
ediaire
PARTIE
`
ARRIERE
1
langage
objet 1
PARTIE
langage
objet n
`
ARRIERE
n
10/17
COMPILATEUR
demande
lanalyse
syntaxique
ANALYSEUR
SYNTAXIQUE
demande
un lex`eme
construit
repr
esentation
interm
ediaire
renvoie un
lex`
eme
ANALYSEUR
LEXICAL
demande
lanalyse
semantique
consulte
ANALYSEUR
SEMANTIQUE
TRAITEMENT
DES ERREURS
langage
source
Universit
e de Nice - Sophia Antipolis Licence 3 Informatique 2012-2013
11/17
Universit
e de Nice - Sophia Antipolis Licence 3 Informatique 2012-2013
12/17
generalement
Universit
e de Nice - Sophia Antipolis Licence 3 Informatique 2012-2013
13/17
Un exemple
Soit en Java : if (i==0) --ifou;
analyse lexicale : reconnatre les lex`
emes : mot-cle if (mais
sous-arbre de
la condition
sous-arbre de
linstruction
Universit
e de Nice - Sophia Antipolis Licence 3 Informatique 2012-2013
14/17
Un exemple (suite)
Soit en Java : if (i==0) --ifou;
analyse s
emantique :
analyse de nom : v
erifier que i et ifou sont bien declares, et
15/17
Ne pas se restreindre `
a des constructions humainement
Etre
raisonnablement rapide (utiliser des algorithmes quasi
lineaires)
Universit
e de Nice - Sophia Antipolis Licence 3 Informatique 2012-2013
16/17
Bibliographie
Les bases
Compilateurs. Dick Grune , Henry E. Bal , Ceriel J.H. Jacobs ,
Koen G. Langendoen, Dunod 2002
Compilateurs - Principes, techniques et outils - Avec plus de
200 exercices. Alfred Aho, Monica Lam, Ravi Sethi et Jeffrey
D. Ullman, Pearson Education, 2007
Compiler Design. Reinhard Wilhelm et Dieter Maurer,
Adison-Wesley, 1995.
Pour les mordus de th
eorie
The Theory of Parsing, Translation and Compiling (2 volumes).
Alfred V. Aho et Jeffrey D. Ullman, Prentice-Hall 1972
Parsing Theory (2 volumes). Seppo Sippu et Eljas
Soisalon-Soininen, Springer-Verlag 1992
Universit
e de Nice - Sophia Antipolis Licence 3 Informatique 2012-2013
17/17