Compilation
Cette unité obligatoire se déroule au S5 de la licence LST A - mention
Informatique.
Responsable
Mirabelle Nebut
Volume horaire
L'unité comporte une séance de cours, TD et TD-machine hebdomadaire de 1h30 chacune.
Crédits
5 ECTS
Mirabelle Nebut
dernière modification :
06/09/2010 à 10:51:56
L'objectif de l'UE est :
- d'étudier les différentes techniques, notions théoriques et
algorithmes impliqués dans la construction des applications de
traitement de données textuelles, essentiellement les phases d'analyse
lexicale et syntaxique et la constuction d'un modèle sémantique ;
- de les appliquer en TP à des cas d'études de type DSL
(Domain-Specific Languages) externes, en expérimentant la construction
de l'application à la main, puis en utilisant des générateurs
d'analyseurs lexical et syntaxique (JFlex, Cup, antLR).
La construction des applications de traitement de données textuelles est un sujet passionnant par la diversité des aspects
traités : l'UE aborde à la fois des notions de théorie du langage, des
aspects très algorithmiques et des aspects de génie logiciel.
En effet, les outils de base pour définir le langage source (langage de programmation à la Java comme DSL maison) appartiennent au
domaine de la
théorie des langages, domaine plutôt théorique
très appliqué à l'informatique. On rappellera donc comment définir les
unités lexicales d'un langage par des expressions rationnelles
représentées par des automates finis, et on verra comment définir la
structure syntaxique d'un langage par une grammaire algébrique
représentée par un automate à pile, puis sa sémantique par une
grammaire attribuée et une représentation interne.
Par ailleurs, la bonne conception de l'application est nécessaire~: logiciel-compilateur
facilement extensible et modifiable, modulaire.
Les concepts, techniques et outils de
génie logiciel
pour concevoir et réaliser un compilateur sont maintenant bien
connus : ils appartiennent aussi au domaine de la
compilation. On verra en outre comment, en s'appuyant sur
la définition formelle de certains modules, on peut
générer
automatiquement leur
code.
Le but des cours et des TD est d'acquérir les bases (notions
théoriques, algorithmes) et de préparer les TD-machines.
Le but des TPs n'est pas de construire un compilateur pour un langage de programmation, qui irait jusqu'à la génération de code exécutable (cet aspect n'est plus du tout couvert par l'UE). L'idée est de s'exercer sur quelques cas d'études de type DSL externe. On utilisera pour ce faire les outils (pour
Java) JFlex et Cup, générateurs d'analyseurs lexicaux et d'analyseurs
syntaxiques respectivement, puis antLR (idem). Ces outils prennent en entrée une
description (expressions régulières dans un cas, grammaire algébrique
dans l'autre) et génèrent automatiquement l'analyseur
équivalent. L'idée est de vous faire bien comprendre tous les
avantages apportés par les notions théoriques qui sous-tendent la
compilation : plutôt que de se coltiner l'écriture à la main de tels
analyseurs, on peut utiliser des outils sûrs qui exploitent ces
notions et font le travail à notre place.
- un grand classique, "le Dragon" :
Aho, Sethi, Ullman
Compilateurs : principes, techniques et outils
InterEditions, 1991
- un ouvrage très pragmatique :
Grune, Bal, Jacobs, Langendoen
Compilateurs
Dunod, 2002
- un ouvrage plus formel, très rigoureux :
Wilhelm, Maurer
Les compilateurs : théorie, construction, génération
Masson, 1994
- un ouvrage très pragmatique, orienté Java :
Appel
Modern Compiler Implementation in Java
Cambridge University Press, 1998
- un livre tout génie logiciel sur les DSL :
Fowler
Domain-Specific Languages
Addison Wesley, 2011
Mirabelle Nebut
dernière modification :
31/08/2011 à 14:12:31
semaine de rentrée :
Cours :
- lundi de 13h à 14h30 au M1 Archimède
- jeudi de 8h30 à 10h au M5 amphi Bacchus
TD :
- groupe 1 : vendredi 10h15 - 11h45 en M5 A1
- groupe 2 : jeudi 10h15 - 11h45 en M3 Turing
- groupe 3 : vendredi 10h15 - 11h45 en M5 A8
- groupe 4 : jeudi 10h15 - 11h45 en M5 A6
| Gpe |
Nature |
Horaire |
Salle |
Enseignant |
e-mail |
| |
Cours |
Jeudi 8h30-10h |
M5-Bacchus |
Mirabelle Nebut |
mirabelle.nebut@lifl.fr
|
| 1 |
TD |
lundi 15h15-16h45 |
M5 A7 |
Cédric Lhoussaine |
cedric.lhoussaine@lifl.fr
|
| 1 |
TP |
jeudi 10h15-11h45 |
M5 A11 |
Cédric Lhoussaine |
|
| 2 |
TD |
lundi 10h15-11h45 |
M5 A4 |
Mirabelle Nebut |
|
| 2 |
TP |
jeudi 10h15-11h45 |
M5 A12 |
Mirabelle Nebut |
|
| 3 |
TD |
mardi 8h30-10h |
M5 A3 |
Mirabelle Nebut |
|
| 3 |
TP |
lundi 13h30-15h |
M5 A14 |
Mirabelle Nebut |
|
| 4 |
TD |
jeudi 10h15-11h45 |
M5 A3 |
Thomas Pietrzak |
Thomas.Pietrzak@lifl.fr
|
| 4 |
TP |
lundi 13h30-15h |
M5 A12 |
Thomas Pietrzak
|
|
Mirabelle Nebut
dernière modification :
05/09/2011 à 12:31:22
| |
Séance |
COURS |
TD |
TP |
Remarque |
| 1 |
36 du 05/09 au 10/09 |
cours1 :
introduction
rappels
cours2 :
an lex
gram alg jusque transp 11
|
feuille1 : rappels
|
Pas TP
|
|
| 2 |
37 du 12/09 au 17/09 |
gram alg : jusque trsp 53 (à chercher)
|
feuille2 : analyse lexicale
|
TP1, première séance
|
|
| 3 |
38 du 19/09 au 24/09 |
gram alg, jusque transp 83
|
feuille 3 : gram alg, exo 3 ou 1 et 2
|
TP1, dernière séance
|
début du contrôle continu en amphi
|
| 4 |
39 du 26/09 au 01/10 |
fin gram alg
grammaires attribuées, jusque transp 18
|
toujours feuille3, exo 3 ou 1 et 2
|
TP2, première séance
|
|
| 5 |
40 du 03/10 au 08/10 |
fin des grammaires attribuées
|
toujours feuille3, exo 5, 6
|
2nde séance TP2
|
|
| 6 |
41 du 10/10 au 15/10 |
analyse sémantique
début automates à pile
|
fin feuille3
|
1ère séance TP3
|
groupe 4 : TD 14/10 15h15-16h45 en M3 Delattre
|
| 7 |
42 du 17/10 au 22/10 |
fin des automates à pile, sans aut des items
début de l'analyse descendante, trsp 15
|
feuille 4 grammaires attribuées, exo1
|
dernière séance TP3
|
20 octobre : forum des métiers
le cours est à 8h
TP groupe2 : lundi 17 à 8h30 en A12
TP et TD des 17 et 18 du groupe4 : déplacés
|
| 8 |
43-44 du 24/10 au 5/11 |
analyse LL : table d'analyse, automate à pile, calcul des premiers (début)
|
feuille 4, exos 1 et 2
|
1ère séance TP4
|
interruption pédagogique du 26 octobre soir au 3 novembre matin
TD groupe 3 le lundi 24 à 8h30 en A1
TD TP des 24 et 25 du groupe 4 : déplacés
groupe 4 : TP ven 04/11 15h15-16h45 en M5 A11
|
| 9 |
45 du 07/11 au 12/11 |
analyse LL jusque transp 106
|
fin feuille 4
feuille 5 automates pile, exo1
|
2nde séance TP4
|
vendredi 11 novembre férié
groupe 4 : TD mar 08/11 15h30-17h00 en M3 Turing
|
| 10 |
46 du 14/11 au 19/11 |
(oubli du cours LL)
automate des items
analyse LR jusque transp 20
|
feuille 6 analyse LL(1), exo 1 et début 2
|
dernière séance TP4 et rendu PROF, 1ère séance TP5
|
groupe 4 : TP mar 15/11 15h15-16h45 en M5 A13
|
| 11 |
47 du 21/11 au 26/11 |
|
|
|
dernière semaine de cours
|
| 12 |
48 du 28/11 au 03/12 |
|
|
|
derniere semaine de TD
|
| 13 |
49 du 05/12 au 10/12 |
|
|
|
derniere semaine de TP
|
| 14 |
50 du 12/12 au 17/12 |
|
|
|
contrôle de première session
12 décembre, 8h-11h, M1 Archimède et Galois
|
Mirabelle Nebut
dernière modification :
21/11/2011 à 09:22:31
L'évaluation est basée sur le contrôle continu : rendus des TP,
petites interrogations en amphi en cours de semestre, gros contrôle
récapitulatif en fin de semestre.
Trois notes seront attribuées à chaque étudiant durant le semestre :
- I : une note sur 20 correspondant à une ou des interrogations écrites réparties sur le semestre (en amphi);
- TP : une note sur 20 correspondant à des TPs rendus par binôme ou monôme;
- DS : une note sur 20 correspondant au devoir surveillé de
fin de semestre.
La note finale sur 20 (N) est calculée comme
une moyenne pondérée de ces trois notes.
Attention la note de TP est en dehors du SUP et est conservée en seconde session.
N = (TP + sup(DS1 + 2*DS2, 3*DS2)) /4
Lors de la seconde session seule la note de TP est conservée,
la note obtenue lors de la seconde session remplaçant sup(DS1 + 2*DS2, 3*DS2).
L'unité acquise apporte 5 ECTS.
Mirabelle Nebut
dernière modification :
15/09/2011 à 14:06:54
Mode d'emploi de l'UE :
- pour bien en profiter : assister aux cours, aux TDs et au TPs. Les supports et les corrections sont toujours incomplets et ne remplacent pas le présentiel.
- pour limiter le temps que vous y passerez :
- comprendre le cours pendant le cours, en étant attentif, en posant des questions (généralement, quand un étudiant ne comprend pas un transparent, la moitié de l'amphi se pose aussi des questions)
- bien lire les documents fournis : les supports de cours ne sont pas là uniquement pour faire joli, les réponses aux exercices de TD sont dedans !
- relire le cours concerné par la séance de TD avant d'y aller.
- si les supports de TD sont fournis avant la séance : au moins lire le sujet, si possible le chercher (c'est en étant actif que le cerveau apprend, pas en lisant une correction)
- travailler régulièrement, et venir voir les enseignants de TD et/ou amphi si c'est la brasse coulée.
- vous êtes absent pour une raison ou une autre ?
- prévenez votre enseignant de TD et d'amphi, ou Patricia Caron
- demandez un aménagement des rendus de TP sur PROF
- vous avez des critiques constructives à apporter à l'UE ? Parlez-en gentiment à l'enseignant d'amphi ou de TD
Pour les étudiants n'ayant pas suivi le cours d'automates et langages, voir le semainier du cours d'
AEL (LS4 info), à partir de "langages rationnels".
Pour les étudiants n'ayant jamais codé ni en Java, ni en objet
voir le livre Thinking
in Java
en anglais, ou
en
français.
Pour les étudiants connaissant l'objet, mais pas Java:
voir le précis de syntaxe Java
format normal,
format a5 pour impression book, sur une imprimante recto-verso uniquement.
Supports de cours
Les transparents projetés en amphi ne se suffisent pas à eux-mêmes. Ils ne contiennent ni les exemples (déroulés au tableau) ni un grand nombre de remarques faites oralement.
Introduction :
Analyse lexicale :
Grammaires algébriques :
Grammaires attribuées :
Grammaires attribuées :
Un brin d'analyse sémantique :
Automates à pile :
Analyse descendante LL(1) :
Analyse ascendante :
Énoncés de TD
Énoncés de TP
Tous les TPs sont à rendre. Un TP non rendu sur PROF est un TP non corrigé.
Un TP qui ne compile pas est un TP non corrigé.
L'outil Cup ne fonctionne qu'avec Java 6.
- TP1 : génération non outillée de planning Latex
sujet, sujet 2 par page, archive
- TP2 : génération outillée de planning Latex : analyse lexicale
sujet, sujet 2 par page,
archive
- TP3 : génération outillée de planning Latex : analyse syntaxique
sujet, sujet 2 par page, archive
- TP4 : génération outillée de planning Latex : génération des fichiers Latex sans Visiteur
sujet, sujet 2 par page, archive
- TP5 : grammaires à opérateurs et Cup
sujet, sujet 2 par page
archive Les scripts et les sources sont prévus pour le paquetage calcul et les noms ParserCalcul, ScannerCalcul, lexiqueCalcul.lex et syntaxeCalcul.cup.
- TP6 : outil ANTLR, lexique et syntaxe
sujet, sujet 2 par page, archive
- TP7 : outil ANTLR, grammaires attribuées
sujet, sujet 2 par page, archive
Documentation
Contrôle continu 2011
Annales
- décembre 2010, session 1 : format normal, format 2 par page
- mars 2011, session 2 : format normal, format 2 par page
- décembre 2009, session 1 : format normal, format 2 par page
- février 2010, session 2 : format normal, format 2 par page
- janvier 2009, session 1 (exceptionnellement durée 2h) : format normal, format 2 par page
- juin 2009, session 2 (exceptionnellement durée 2h) : format normal, format 2 par page
- janvier 2008, session 1 : format normal, format 2 par page
- juin 2008, session 2 : format normal, format 2 par page
Ces sujets correspondent à des cours différents de celui d'après 2007-2008.
Mirabelle Nebut
dernière modification :
28/11/2011 à 15:17:50