Logo ESI
Bannière
ESI talents

Bienvenue



Retour - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Syllabus COM
Télécharger



Crédits : 4

COM
Compilation
Compiling

Coef : 4
VH Cours : 30.00
VH TD : 30.00
Pré-requis :
Théorie des langages de programmation Théorie des langages de programmation et applications Programmation dans l'un des deux paradigmes (Programmation impérative, POO) Système d'exploitation (assembleur, registres du processeur…etct.)

Ingénierie des Compétences

Familles de Compétences
  • CF4 : Concevoir, réaliser et maintenir des logiciels de qualité
Type de compétence: TEC : Technique, MET : Méthodologique, MOD : Modélisation, OPE : Opérationnel,
Niveau de compétence:
Base Intermédiaire Avancé


Famille de Compétence Compétence Elément de Compétence Type
CF4 C4.4: Analyser et concevoir un langage C44.2: Exploiter un outil de génération d'analyseur syntaxique et lexical en vue de concevoir un langage TEC
C44.1: Effectuer une analyse lexicale et syntaxique d'un langage MET
C44.3: Décrire et analyser la sémantique d'un langage TEC
C44.5: Programmer un compilateur d'un langage vers une machine cible TEC
C4.A: Analyser et concevoir des algorithmes C4A.3: Etudier les paradigmes de programmation et les transformations de programmes MET

Description du programme de la matière

Objectifs:

- Ecrire une grammaire d’un langage de programmation et construire un analyseur syntaxique pour ce langage à l’aide d’outils standard.
- Comprendre la description formalisée de la sémantique opérationnelle et de la sémantique statique d’un langage
- programmer un compilateur d'un langage vers une machine cible

Contenu:

I. Rappels Analyses lexicales et syntaxiques (10%)
1. Analyseur lexicale et les expressions régulières (Lex)
2. Analyseur syntaxique et les grammaires à contexte libre (type 3)
3. Générateur d'analyseurs syntaxiques YACC
II. Méthodes d'analyse syntaxiques (30%)
1. Les méthodes descendantes de type LL(K) :
Ambigüité et transformation de grammaire
Construction et fonctionnement d'analyseur syntaxique LL
2. Les méthodes ascendante LR(k)
Analyse contextuelle
Construction d'analyseur LR par la méthode des items
Gestion des erreurs
III. Analyse sémantique et traduction dirigée par la syntaxique (20%)
1. Langages intermédiaires
2. Notion d'attributs de symbole de grammaire (attributs synthétisés et attributs hérités)
3. Schémas de traduction (dans les cas des analyses ascendants et descentes)
4. Analyse sémantique (plus de vérification à la compilation moins de risque à l’exécution
IV. Environnement d'exécution (20%)
1. Procédures et activations
2. Organisation de l'espace mémoire
3. Accès aux noms non locaux
4. Passage de paramètres
V. Génération du code exécutable (20%)
1. Machine à pile
2. Machine à registre
3. Conrôle de flox (graphe de flox et DAG)
4. Machine virtuelle

Travail Personnel:

Travaux en présentiel
a. Présentation des outils de génération d'analyseur (YACC, JCC, la classe .NET, bison…etc)
b. Analyse syntaxique descendante en utilisant les outils
c. Analyse syntaxique Ascendante en utilisant les outils
d. Analyse sémantique en utilisant les outils
e. Génération du code pour divers machines (code Natif et byte code pour VM )
2. Projet :
a. Réalisation individuel d'un compilateur : le projet sera réalisé et évalué en étapes durant le semestre
b. Approfondissement des notions de cours par des travaux et exposés.

Bibliographie:

Aho, Ullman& Sethi. "Compilateurs : Principes, techniques et outils" Ed. DUNOD 2000.
Aho& Ullman "Principles of compiler design" , Edition : Addison Wesley, 1977.
Stephen C. Johnson "Yacc: Yet Another Compiler-Compiler" Computing Science Technical Report No. 32, Bell Laboratories, Murray Hill, NJ 07974.
D. Grune "Modern Compiler Design." Ed. John Wiley & Sons, 2000. ISBN : 0 471 97697 0.
J.E. Hopcroft& J.D. Ullman "Introduction to Automata Theory, Languages and Computation" Ed. Addison Wesley, 1979.
K.C. Louden "Compiler Construction: Principles and Practice" Ed. Course Technology, 1997.
ISBN : 0 534 93972 4.
N. Silverio. "Réaliser un compilateur, les outils Lex et YACC" Ed. Eyrolles, 1994.
J. Levine, T. Mason, D. Brown "Lex &Yacc" Ed. O(Reilly), 1992. ISBN : 1 56592 000 7.
Tom Copeland "Generating Parsers with JavaCC" Ed. Centennial Books, Alexandria, VA, 2007. ISBN : 0-9762214-3-8

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -