cours de compilation séance dintroduction pr zegour djamel eddine ecole supérieure dinformatique...

25
Cours de Compilation Séance d’introduction Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI) www.zegour.uuuq.com email: [email protected]

Upload: noe-hamelin

Post on 04-Apr-2015

122 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Cours de Compilation Séance dintroduction Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI)  email: d_zegour@esi.dzd_zegour@esi.dz

Cours de Compilation

Séance d’introduction

Pr ZEGOUR DJAMEL EDDINEEcole Supérieure d’Informatique (ESI)www.zegour.uuuq.com email: [email protected]

Page 2: Cours de Compilation Séance dintroduction Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI)  email: d_zegour@esi.dzd_zegour@esi.dz

Introduction (Définition)

Compilation : Étude des techniques permettant de traduire un programme source en un programme objet

Programme source : écrit dans un langage de programmation

Programme objet : dépend de la machine

Page 3: Cours de Compilation Séance dintroduction Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI)  email: d_zegour@esi.dzd_zegour@esi.dz

Introduction(Pré-requis)

Compilation : Algorithmes et structures de données (Piles, arbres, graphes,… )

Programme source : Théorie des langages

Programme objet : Structure des machines

Autres : programmation procédurale, programmation objet, quelques langages de programmation

Page 4: Cours de Compilation Séance dintroduction Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI)  email: d_zegour@esi.dzd_zegour@esi.dz

Introduction(Structures de données)

Algorithmes

Structures de données (Pile, arbre, graphe,… )

Pile

Arbre

Graphe

Page 5: Cours de Compilation Séance dintroduction Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI)  email: d_zegour@esi.dzd_zegour@esi.dz

Introduction(Théorie des langages)

Relation entre les mathématiques et les langages

Notion de grammaires et langages

Classification (Chomsky)

Les langages réguliers et les automates

Les langages algébriques (contexte libre) et les automates à pile

Page 6: Cours de Compilation Séance dintroduction Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI)  email: d_zegour@esi.dzd_zegour@esi.dz

Introduction(Structure des machines)

Algèbre de Boole

Représentation et codage de l’information

Techniques d’adressage

Exécution d’une instruction

Les langages d’assemblage et les assembleurs

Page 7: Cours de Compilation Séance dintroduction Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI)  email: d_zegour@esi.dzd_zegour@esi.dz

Introduction(Organisation du cours)

Cours théorique accompagné de code C#

(T1, T2, …, T8) (DotNet + Introduction C#)

Cours spécifique : Réalisation du compilateur (Langage Z)

(P1, P2,…. ,P20)

Page 8: Cours de Compilation Séance dintroduction Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI)  email: d_zegour@esi.dzd_zegour@esi.dz

Introduction(Plan/Cours théorique)

T1 : Vue générale T2 : Analyse lexicale T3 : Analyse syntaxique T4 : Traitement sémantique et grammaires d’attribut T5 : Table des symboles T6 : Génération de code T7 : Les analyseurs Bottom-up T8 : Générateurs de compilateurs

Page 9: Cours de Compilation Séance dintroduction Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI)  email: d_zegour@esi.dzd_zegour@esi.dz

Introduction(Plan/Cours théorique)

T1: Vue générale

Motivation

Structure d‘un compilateur

Grammaires

Arbres Syntaxiques et Ambiguïté

Classification de Chomsky

Page 10: Cours de Compilation Séance dintroduction Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI)  email: d_zegour@esi.dzd_zegour@esi.dz

Introduction(Plan/Cours théorique)

T2 : Analyse lexicale

Taches d‘un scanner

Grammaires Régulières et Automates finis

Implémentation des scanners

Page 11: Cours de Compilation Séance dintroduction Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI)  email: d_zegour@esi.dzd_zegour@esi.dz

Introduction(Plan/Cours théorique)

T3 : Analyse syntaxique

Grammaires contexte-libre et Automates à pile(PDA)

Analyse descendante récursive

Propriétés LL(1)

Traitement des erreurs

Page 12: Cours de Compilation Séance dintroduction Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI)  email: d_zegour@esi.dzd_zegour@esi.dz

Introduction(Plan/Cours théorique)

T4 : Traitement de la sémantique et les grammaires d‘attribut

Traitement sémantique

Grammaires d’attributs (ATG)

Transformations des ATG en un analyseur

Exemples d’applications

Page 13: Cours de Compilation Séance dintroduction Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI)  email: d_zegour@esi.dzd_zegour@esi.dz

Introduction(Plan/Cours théorique)

T5 : Table des symboles

Vue générale

Symboles

Portée

Types

Page 14: Cours de Compilation Séance dintroduction Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI)  email: d_zegour@esi.dzd_zegour@esi.dz

Introduction(Plan/Cours théorique)

T6 : Génération Code

Vue générale

Le code à générer

Organisation de la mémoire

Expressions

Affectations

Structures de contrôle

Méthodes

Page 15: Cours de Compilation Séance dintroduction Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI)  email: d_zegour@esi.dzd_zegour@esi.dz

Introduction(Plan/Cours théorique)

T7 : Les analyseurs Bottom-up

Comment fonctionne un analyseur Bottom-up

Grammaires LR

Génération de la table LR

Traitement de la sémantique

Traitement des erreurs LR

Variantes de LR

Page 16: Cours de Compilation Séance dintroduction Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI)  email: d_zegour@esi.dzd_zegour@esi.dz

Introduction(Plan/Cours théorique)

T8 : Générateurs de compilateurs

Vue générale

Yacc

Lex

Coco/R

Page 17: Cours de Compilation Séance dintroduction Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI)  email: d_zegour@esi.dzd_zegour@esi.dz

Introduction(Plan/Cours spécifique)

Langage Z (P1) et langage Z minimal (P2) Réalisation d’un compilateur très simplifié pour le langage minimal

(P3 P10) Extension du langage minimal par

Expressions logiques (P11)et chaînes de caractères (P12) Les structures simples et tableaux (P13) Les structures de contrôle (P14) Les procédures et fonctions (P15) Les structures complexes (P16) Les machines abstraites (P17 P19) Les fonctions standards (P20)

Page 18: Cours de Compilation Séance dintroduction Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI)  email: d_zegour@esi.dzd_zegour@esi.dz

Introduction(Plan/Cours spécifique)

Réalisation du compilateur pour le langage Z minimal

Réalisation analyse lexicale

Réalisation analyse syntaxique

Organisation simple de la mémoire et attribution des adresses Sémantique des déclarations, instructions et expressions

Interprétation du langage

Page 19: Cours de Compilation Séance dintroduction Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI)  email: d_zegour@esi.dzd_zegour@esi.dz

Introduction(Plan/Cours spécifique)

Les machines abstraites Z

Machines de Turing

Les listes linéaires chaînées

Les fichiers

Page 20: Cours de Compilation Séance dintroduction Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI)  email: d_zegour@esi.dzd_zegour@esi.dz

Introduction(Plan/Réalisation)

Démarche

Définir un langage minimal de Z et réalisez le compilateur en entier

Enrichir progressivement la grammaire

A chaque étape, redémarrer toutes les étapes : lexique, syntaxe, sémantique, génération de code

S‘arrêter quand le langage entier est traité.

Page 21: Cours de Compilation Séance dintroduction Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI)  email: d_zegour@esi.dzd_zegour@esi.dz

Organisation du cours

T2

T1

T8

T7

T6

T3

T4

T5

P1 P2

P3

P4

P5 P6

P8P7 P9 P10

P11 P12 P13 P14 P15

P16 P17 P18

P19 P20

Introduction

Dot Net et C#

1

2

3 4

6

8 10

11

12

5

9

7

T

P

Cours théorique général

Cours spécifique

Travaux dirigés

Ordre de présentation du cours

PAUSE : Terminer la réalisation du compilateur du langage Z minimal

FIN : Terminer la réalisation du compilateur du langage Z

COMPIL Z

Page 22: Cours de Compilation Séance dintroduction Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI)  email: d_zegour@esi.dzd_zegour@esi.dz

Introduction(Extensions)

Formalisation de la sémantique des langages de programmation : Spécifications relationnelles, axiomatiques, algébriques, ...

Compilateurs/Interpréteurs pour langages non procéduraux - Langages fonctionnels (LISP) - Langages logiques (PROLOG) (Syntaxe identique mais Sémantique totalement différente)

Page 23: Cours de Compilation Séance dintroduction Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI)  email: d_zegour@esi.dzd_zegour@esi.dz

Introduction(Outils standards)

Langage de programmation : pour l‘écriture du compilateur/interpréteur (C++, Delphi,... )

Langage d‘assemblage : pour la génération de code (Processeur Intel)

Langage pivot (Machine Virtuelle) : pour la génération de code

( P-code de PASCAL, JVM, La machine virtuelle de .NET : Common Language Runtime (CLR) )

Page 24: Cours de Compilation Séance dintroduction Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI)  email: d_zegour@esi.dzd_zegour@esi.dz

Introduction(Outil spécifique)

Khawarizm niveau 1 : environnement pour le développement des algorithmes en langage Z (conçu pour l‘apprentissage de la programmation)

Compil-Z : dévoiler le fonctionnement interne des compilateurs

Page 25: Cours de Compilation Séance dintroduction Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI)  email: d_zegour@esi.dzd_zegour@esi.dz

Introduction(Références)

Compiler Construction for digital computers. David Gries. Addison-Wesley Edition. 1975

Principles of Compiler Design. A.V. Aho, J.D Ullman. Addison-Wesley Edition. 1977

Compilers : Principles, Techniques and Tools. Alfred V.Aho, Ravi Sethi, Jeffrey D.Ullman. Addison-Wesley Edition. 2003