Université Lille1

Vous êtes ici : FIL > Portail > Licence Info > L3S5 Info > COMPIL

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

Objectifs

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).

Contenu

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.

Organisation

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.

Bibliographie

  • 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.

Documentation

  • Présentation du langage Init, format 2 par pages
  • Présentation du langage Ava
  • Présentation de Ava et Init sur une seule feuille
  • documentation de JFlex
  • documentation de Cup
  • pour mettre à jour vos variables d'environnement pour JFlex et Cup : utiliser source /home/enseign/COMPILS5/envm5.sh.
    #!/bin/sh
    # pour avoir JFlex et Cup
    export CLASSPATH=.:classes/:../classes/:/usr/share/java/JFlex.jar:/usr/share/java/cup.jar:/home/enseign/COMPILS5/bcel/bcel-5.2.jar:$CLASSPATH
    # pour être sûr d'avoir ant + voir les scripts
    export PATH=/usr/local/bin:scripts:$PATH
    

Contrôle continu 2011

Annales

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