• Aucun résultat trouvé

Compilation et interpr´ etation IFT-3101

N/A
N/A
Protected

Academic year: 2022

Partager "Compilation et interpr´ etation IFT-3101"

Copied!
22
0
0

Texte intégral

(1)

IFT-3101 Compilation et interpr´etation evision automne 2013 p. 1

Compilation et interpr´ etation IFT-3101

Danny Dub´ e

Universit´ e Laval

(2)

* Cr´ edits *

Mat´eriel mont´e par:

• Danny Dub´e

• Mathieu Marcotte-Gagnon Aide financi`ere et logistique:

• D´epartement d’informatique et de g´enie logiciel

• Bureau des services p´edagogiques

(3)

IFT-3101 Compilation et interpr´etation evision automne 2013 p. 3

Introduction

Chapitre 1

Sections 1.1, 1.2, 1.3, 1.4, 1.5

(4)

* Contenu *

• Fonctionnement d’un compilateur et d’un interpr`ete

• Domaines li´es

• Types de compilateurs et applications de la compilation

• Contexte du compilateur

• Phases de la compilation

• Outils de construction de compilateurs

• Evolution des langages de programmation ´

(5)

IFT-3101 Compilation et interpr´etation evision automne 2013 p. 5

Fonctionnement d’un compilateur

Programme

source Compilateur Programme

g´en´er´e

Messages d’erreur

✲ ✲

(6)

Fonctionnement d’un interpr` ete

Programme

source Interpr`ete Entr´ee

et sorties

Messages d’erreur

✲ ✛ ✲

(7)

IFT-3101 Compilation et interpr´etation evision automne 2013 p. 7

Domaines li´ es ` a la compilation

• Langages de programmation

• Mat´eriel informatique

• Th´eorie des langages

• Algorithmique

• G´enie logiciel

(8)

Vari´ et´ es de compilateurs

• De tr`es nombreux langages:

– des langages g´en´eraux: C, Java, etc.

– aux langages sp´ecialis´es: awk, interpr`etes de commandes, Verilog, etc.

• Plusieurs sortes de langages cibles:

– langages machines ou assembleurs – langages de machines virtuelles – autres langages de haut niveau

• Compilateurs `a une ou plusieurs passes

• Compilateurs permettant le d´everminage

• Compilateurs optimisants

(9)

IFT-3101 Compilation et interpr´etation evision automne 2013 p. 9

Outils utilisant la technologie de compilation

• Editeurs structur´es ´

• Enjoliveurs de texte et de programmes (pretty-printers )

• V´erificateurs statiques de programmes

• Traitement de texte

• Compilateurs vers le mat´eriel

• Interpr`etes de requˆetes

(10)

Outils cousins du compilateur

• Pr´eprocesseurs

• Assembleurs

• Chargeurs de programmes et ´editeurs de lien

(11)

IFT-3101 Compilation et interpr´etation evision automne 2013 p. 11

Contexte du compilateur

Organisation de l’implantation d’un langage de programmation:

Programme source et annotations Pr´eprocesseur

Programme source Compilateur Code en assembleur

Assembleur

Code machine relocalisable Chargeur/´editeur de liens

Code machine absolu❄

✛ biblioth`eques de code objet

(12)

Les phases de l’analyse d’un programme

Mod` ele analyse-synth` ese de la compilation

position := initial + rate * 60

:=

position +

initial *

rate 60

(13)

IFT-3101 Compilation et interpr´etation evision automne 2013 p. 13

Les phases de l’analyse d’un programme

Il y a normalement trois phases dans l’analyse:

Analyse lexicale: D´ecouper et regrouper les caract`eres constituant un programme en des jetons.

Analyse syntaxique: Organiser de fa¸con hi´erarchique les jetons en une structure arborescente qui r´efl`ete la structure syntaxique du programme.

Analyse s´ emantique: V´erifier si certaines r`egles li´ees `a

la signification des programmes en un langage donn´e

sont respect´ees.

(14)

Analyse lexicale

A titre d’exemple, l’analyse lexicale de l’´enonc´e:` position := initial + rate * 60 devrait donner la suite de jetons suivante:

1. l’identificateur position; 2. le symbole d’affectation;

3. l’identificateur initial;

4. le symbole d’addition;

5. l’identificateur rate;

6. le symbole de multiplication; et

(15)

IFT-3101 Compilation et interpr´etation evision automne 2013 p. 15

Analyse syntaxique

L’arbre de syntaxe concr`ete pour notre ´enonc´e est quelque chose comme:

´enonc´e d’affectation identificateur

position

:= expression expression

identificateur initial

+ expression

expression identificateur

rate

* expression

nombre 60

✟✟

✟ ❍❍❍

✟✟

✟ ❍❍❍

✟✟

✟ ❍❍❍

(16)

Analyse syntaxique

Dans le cas de notre exemple d’affectation, la syntaxe des expressions pourrait ˆetre donn´ee `a l’aide de r`egles telles que:

1. Tout identificateur est une expression.

2. Tout nombre est une expression.

3. Si e

1

et e

2

sont des expressions, alors les constructions suivantes en sont aussi:

e

1

+ e

2

e

1

* e

2

( )

(17)

IFT-3101 Compilation et interpr´etation evision automne 2013 p. 17

Analyse s´ emantique

L’analyse s´emantique sert entre autres `a faire respecter les r`egles de typage. En particulier, des conversions automa- tiques entre types peuvent ˆetre ajout´ees.

:=

position +

initial *

rate 60

:=

position +

initial *

rate inttoreal 60

(18)

Les phases d’un compilateur

programme source analyseur

lexical analyseur syntaxique

analyseur s´emantique

g´en. de code interm.

optimiseur de code gest. de la

table des symb. gestionnaire

d’erreurs

(19)

IFT-3101 Compilation et interpr´etation evision automne 2013 p. 19 Les phases d’un compilateur

Exemple de traduction d’un ´enonc´e:

1. position := initial + rate * 60 2. id1 := id2 + id3 * 60

3.

:=

position + initial *

rate 60

o`u la table des symboles indique:

(a) position . . . (b) initial . . . (c) rate . . . (d) . . . 4.

:=

position + initial *

rate inttoreal 60

5. temp1 := inttoreal(60) temp2 := id3 * temp1 temp3 := id2 + temp2 id1 := temp3

6. temp1 := id3 * 60.0 id1 := id2 + temp1

7. MOVF id3, R2 MULF #60.0, R2 MOVF id2, R1 ADDF R2, R1 MOVF R1, id1

(20)

Outils de construction de compilateurs

• G´en´erateurs d’analyseurs lexicaux

• G´en´erateurs d’analyseurs syntaxiques

• Outils de traduction orient´ee-syntaxe

• Engins de flˆ ot de donn´ees

• G´en´erateurs de g´en´erateurs de code

(21)

IFT-3101 Compilation et interpr´etation evision automne 2013 p. 21

Evolution des langages de programmation ´

Les langages peuvent ˆetre class´es par g´en´erations.

• Premi`ere g´en´eration: langages machine

• Deuxi`eme g´en´eration: langages assembleurs

• Troisi`eme g´en´eration: langages de plus haut niveau comme Fortran, C ou Lisp

• Quatri`eme g´en´eration: langages `a applications sp´ecifiques comme SQL ou Postscript

• Cinqui`eme g´en´eration: langages de programmation logique

ou par contraintes comme Prolog

(22)

Evolution des langages de programmation ´

Les langages peuvent aussi ˆetre class´es par genres.

• Imp´eratifs vs. d´eclaratifs

• De genre von Neumann

• Orient´es-objets

• Langages de scriptage

Références

Documents relatifs

un tableau est un tableau de proportionnalit´e lorsque tous les nombres d’une ligne s’obtiennent en multipliant tous ceux de l’autre ligne par un mˆeme nombre.. Ce dernier nombre

Ce th´ eor` eme est un outil tr` es utile pour ´ etudier une int´ egrale g´ en´ eralis´ ee d’une fonction positive, lorsque l’on ne peut pas calculer l’int´ egrale de la

Deux types de langages seront ´ etudi´ es par la suite.. Plus pr´ ecis´ em´ ent, A ∗ est le plus petit ensemble v´ erifiant les deux propri´ et´ es ci–dessus...

D´eterminer les ´equations r´eduites des droites (AB) et

En chimie, une liaison covalente est une liaison chimique dans laquelle chacun des atomes li´ es met en commun un ou plusieurs ´ electrons de ses couches externes. C’est ce qui

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the

Il est rappel´ e aux candidats que leurs copies sont destin´ ees ` a ˆ etre lues et que des points sont pr´ evus dans le bar` eme pour la pr´ esentation des copies.. Les correcteurs