Documente Academic
Documente Profesional
Documente Cultură
Introduction
Jacques Farr e Jacques.Farre@unice.fr http://deptinfo.unice.fr/~jf/Compil-L3/
1/16
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 excutable : e enjoliveurs, diteurs syntaxiques . . . e concepts et outils utiliss dans de nombreux autres domaines : e web, bases de donnes, traitement des langues naturelles . . . e Concepts et outils fondamentaux thorie des langages (grammaires, automates) e smantiques formelles e algorithmes et structures de donnes varis e e principes de gnie logiciel e Vous rencontrerez invitablement un jour ou lautre un e
2/16
Terminologie
langage source : celui quil faut analyser langage objet : celui vers lequel il faut traduire langage machine ou dassemblage : langage machine sous
binaire
diteur de liens : dun ensemble de sous-programmes en binaire e
relogeable (les .o de linux par exemple) vers un programme excutable e compilateur : traduction dun langage source (gnralement) e e
Compilateur et interpr`te e
donnes e
COMPILATEUR
donnes e
TRADUCTION
avantages et inconvnients de chaque mod`le e e compilateur : produit du code machine programme ecace mais pas toujours portable interpr`te : programme portable mais moins ecace, mais qui e peut manipuler le code source (mta-programmation) e
Universit de Nice - Sophia Antipolis Licence 3 Informatique 2010-2011 e 4/16
Compilation croise e
Les traducteurs (compilateurs et interpr`tes) sont des e
donnes et produisent (compilateurs) du code excutable e e compilateur de S vers un code O implant sur une machine X : e
par exemple, compilateur Java sur un PC pour processeur embarqu (S = Java, O = code JVM, X = code intel core) e
compilateur de S vers O sur machine X programme crit en e langage S LANGAGE SOURCE S LANGAGE OBJET O programme excutable e sur machine O
LANGAGE DEXECUTION X
machine X
Universit de Nice - Sophia Antipolis Licence 3 Informatique 2010-2011 e 5/16
une machine X
par exemple, un compilateur de Java crit en C sur un PC : e
LANGAGE SOURCE S
LANGAGE SOURCE S
LANGAGE OBJET O
LANGAGE DECRITURE E
LANGAGE DEXECUTION X
LANGAGE DEXECUTION X
machine X
6/16
LANGAGE DECRITURE E
LANGAGE DEXECUTION X
LANGAGE DEXECUTION X
LANGAGE SOURCE S
LANGAGE OBJET O
machine X
LANGAGE SOURCE S
LANGAGE OBJET O
LANGAGE DECRITURE S
LANGAGE SOURCE S
LANGAGE OBJET O
LANGAGE DEXECUTION O
LANGAGE DEXECUTION X
machine X
7/16
Compilateurs monolithiques
les premiers compilateurs taient monolitiques : ils pouvaient e
travailler en 1 seule passe (les langages taient encore simples) e autant de compilateurs que de couples (langage, machine cible), soit m n
langage source 1 langage source 1 langage source 2 langage source m langage source m COMPILATEUR 1-1 langage objet 1 langage objet n langage objet n langage objet 1 langage objet n
8/16
COMPILATEUR 1-n
COMPILATEUR 2-n
COMPILATEUR m-1
COMPILATEUR m-n
Compilateurs modulaires
langage source PARTIE AVANT reprsentation e intermdiaire e PARTIE ` ARRIERE langage objet
smantique (cours de L3) e partie arri`re (synth`se) : optimisation, production de code e e (cours de M1) avantages de cette dcomposition : m parties avant + n e parties arri`res permettent davoir m n compilateurs e
langage source 1 langage source m PARTIE AVANT 1 reprsentation e intermdiaire e PARTIE AVANT m PARTIE ` ARRIERE 1 PARTIE ` ARRIERE n langage objet 1 langage objet n
COMPILATEUR
ANALYSEUR SYNTAXIQUE
construit
reprsentation e intermdiaire e
consulte
ANALYSEUR SEMANTIQUE
demande un lex`me e
lex`me e
langage source
ANALYSEUR LEXICAL
10/16
11/16
automates nis pour lessentiel, mais aussi tables dadressage dispers, arithmtique e e
analyse syntaxique : grammaires hors-contexte, automates ` a
lanalyse smantique est souvent code ` la main), quations e e a e de type, table de symboles
reprsentation intermdiaire : arbre ou graphe le plus e e
gnralement e e
12/16
Un exemple
Soit en Java : if (i==0) --ifou ;
analyse lexicale : reconna tre les lex`mes : mot-cl if (mais e e
pas dans lidenticateur ifou), reconna i et ifou comme tre lex`mes de la classe identicateur, 0 comme de la classe des e nombres entiers, -- comme un seul lex`me, et pas la suite - e
analyse syntaxique : analyser le texte selon la r`gle de e
grammaire : instruction MOT-IF ( condition ) instruction et construire (par exemple) un sous-arbre comme
IF
sous-arbre de la condition
sous-arbre de linstruction
13/16
Un exemple (suite)
Soit en Java : if (i==0) --ifou ; analyse smantique : e
analyse de nom : vrier que i et ifou sont bien dclars, et e e e
dclars comme des variables (ou des attributs) ; met en uvre e e la table des symboles, qui permet de mmoriser les symboles e dclars (en Java, classes, attributs, mthodes, variables e e e locales et param`tres) e analyse de type : vrier que le type de i ou celui de ifou est e compatible avec les oprations eectues ; met en uvre des e e quations de type du genre int == int bool e peut travailler en 1 ou plusieurs parcours de la reprsentation e intermdiaire (selon la complexit du langage) e e peut transformer/enrichir/normaliser la reprsentation e intermdiaire e par exemple, si ifou est un attribut, reprsenter de la mme e e mani`re --ifou et --this.ifou e
Universit de Nice - Sophia Antipolis Licence 3 Informatique 2010-2011 e 14/16
derreur en cascade (bien que la source de lerreur ne soit pas toujours vidente) e
traduire correctement vers le langage cible, et en donnant le
linaires) e
Universit de Nice - Sophia Antipolis Licence 3 Informatique 2010-2011 e 15/16
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 Jerey D. Ullman, Pearson Education, 2007 Compiler Design. Reinhard Wilhelm et Dieter Maurer, Adison-Wesley, 1995. pour les mordus de thorie e The Theory of Parsing, Translation and Compiling (2 volumes). Alfred V. Aho et Jerey D. Ullman, Prentice-Hall 1972 Parsing Theory (2 volumes). Seppo Sippu et Eljas Soisalon-Soininen, Springer-Verlag 1992
16/16