la traduction des langages de programmation La traduction des langages de programmation

Documents pareils
Évaluation et implémentation des langages

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Conception de circuits numériques et architecture des ordinateurs

Plan du cours Cours théoriques. 29 septembre 2014

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

Cours 1 : La compilation

Formula Negator, Outil de négation de formule.

Compilation (INF 564)

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Traduction des Langages : Le Compilateur Micro Java


Présentation du PL/SQL

SSTIC Désobfuscation automatique de binaires. Alexandre Gazet. Yoann Guillot. Et autres idyles bucoliques...

Déroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009

UFR d Informatique. FORMATION MASTER Domaine SCIENCES, TECHNOLOGIE, SANTE Mention INFORMATIQUE

Cours de Programmation 2

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Les structures. Chapitre 3

Cours d Algorithmique et de Langage C v 3.0

Chapitre VI- La validation de la composition.

ACTIVITÉ DE PROGRAMMATION

Bases de programmation. Cours 5. Structurer les données

Cours Informatique Master STEP

Créer le schéma relationnel d une base de données ACCESS

Analyse de sécurité de logiciels système par typage statique

programmation S initier à la la Avec des exemples en C, C++, C#, Java et PHP Avec des exemples en C, C++, C#, Java et PHP Claude Delannoy

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

Interpréteur d algèbre relationnelle

Vérification formelle de la plate-forme Java Card

Rappels d architecture

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Optimisation de logiciels de modélisation sur centre de calcul

Sciences de Gestion Spécialité : SYSTÈMES D INFORMATION DE GESTION

Corrigé des TD 1 à 5

Les tableaux croisés dynamiques

ALGORITHMIQUE ET PROGRAMMATION En C

Chapitre 10 Arithmétique réelle

Les diagrammes de modélisation

1 Description générale de VISFIELD

Cours d Informatique

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

TP, première séquence d exercices.

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

Ecole Technique «Transformation de données documentaires» Poitiers, mars Atelier 1: Sphinx. import, conversion, export de données

STAGE IREM 0- Premiers pas en Python

Le langage C. Introduction, guide de reference

Informatique Générale

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

A.3 Les méthodes : L applicabilité

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Bases de données cours 4 Construction de requêtes en SQL. Catalin Dima

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

modules & compilation

Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5

NOM : Prénom : Date de naissance : Ecole : CM2 Palier 2

Théorie de la Programmation

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

= constante et cette constante est a.

CH.6 Propriétés des langages non contextuels

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

Solution logicielle pour le pilotage et l ERM. Journées d études IARD 26 mars mars 2010

Attestation de maîtrise des connaissances et compétences au cours moyen deuxième année

Introduction à NetCDF

Université de Bangui. Modélisons en UML

Projet Matlab : un logiciel de cryptage

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Dérivation : Résumé de cours et méthodes

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

I00 Éléments d architecture

AUVRAY Clément (168187) HOMBERGER Alexandre (186897) GLADE. Langages, outils et méthodes pour la programmation avancée Page 1 sur 12

SYSTÈME DE GESTION DE FICHIERS

Programmation C++ (débutant)/instructions for, while et do...while

Introduction à l algorithmique et à la programmation M1102 CM n 3

Introduction à MATLAB R

Algorithmique et programmation : les bases (VBA) Corrigé

«L impact de l interculturel sur la négociation» construire des intérêts matériels ou des enjeux quantifiables

Glossaire des nombres

SYSTÈME DE GESTION DE FICHIERS SGF - DISQUE

Initiation à l algorithmique

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

CQP 112 Introduc/on à la programma/on. Thème 2 : Architecture d un système informa/que. Département d informa/que

Préparation à l examen EFA en Macro

Organigramme / Algorigramme Dossier élève 1 SI

1 Architecture du cœur ARM Cortex M3. Le cœur ARM Cortex M3 sera présenté en classe à partir des éléments suivants :

Cours 1 : Qu est-ce que la programmation?

Algorithmique et Programmation, IMA

Python - introduction à la programmation et calcul scientifique

LECTURE, RECHERCHE DOCUMENTAIRE ET INDEXATION

Débogage de code* Mardi 13 décembre Romaric DAVID Université de Strasbourg - Direction Informatique Pôle HPC. hpc.unistra.

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

EBS 204 E C B S. Publication : Novembre 96

RESPONSABLE D UNE UNITE DE TRANSPORT ET LOGISTIQUE (Enseignement week-end) (ACMS23)

Logiciel Libre Cours 2 Fondements: Programmation

DU BINAIRE AU MICROPROCESSEUR - D ANGELIS CIRCUITS CONFIGURABLES NOTION DE PROGRAMMATION

Le Langage De Description De Données(LDD)

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Méthodologie de la programmation

Transcription:

1 La traduction des langages de programmation

Principes (1) 2 Langage machine constitué de bits, impraticable Langage d assemblage proche du langage machine, codes mnémoniques nécessite la connaissance de la machine Langage évolués indépendants de la machine expression plus proche des besoins des programmeurs spécialisation en fonction des problèmes FORTRAN: applications scientifiques COBOL: applications de gestion assembleur compilateur traducteur module source module objet interpréteur

Principes (2) 3 Interpréteur = programme qui simule une machine qui comprend le langage Combiner compilation et interprétation Exemple: module en Java compilation Java en bytecode module en bytecode interpréteur de bytecode

Analyse lexicale (1) 4 module source suite de caractères, représentation d une suite de symboles Retrouver les symboles à partir des caractères exemple: retrouver le regroupement: begin x := 23 ; end begin x := 23 ; end Coder les symboles dans une représentation interne Implique une structure lexicale non ambiguë

Analyse lexicale (2) 5 identificateur: lettre { lettre chiffre _ } constante numérique: chiffre { chiffre lettre} mots clés: comme identificateur, mais mots réservés symboles spéciaux: caractères spéciaux habituels ou combinaison exemples: + - * / = >= := etc espaces, tabulations, fin de ligne sans signification, si ce n'est séparateur de symboles exemples entre "begin" et "x"

Analyse lexicale (3) 6 Principe de l'analyse sachant où commence un symbole, rechercher où il se termine chercher où commence le suivant Générateurs d'analyseur lexical (lex) on fournit la description de la structure lexicale d'un langage L le résultat est un programme qui fait l'analyse lexicale de L

Analyse lexicale (4) 7 début sur le "b" fin sur l'espace qui suit "begin" il s'agit d'un mot clé begin x := 23 ; end D F begin

Analyse lexicale (5) 8 recherche du début suivant sur le "x" fin sur l'espace qui suit "x" identificateur begin x := 23 ; end D F begin x

Analyse lexicale (6) 9 recherche du début suivant sur le ":" fin sur l'espace qui suit ":=" symbole spécial composé begin x := 23 ; end D F begin x :=

Analyse lexicale (7) 10 recherche du début suivant sur le "2" fin sur l'espace qui suit "23" nombre, qui pourrait être codé par sa valeur begin x := 23 ; end D F begin x := 23

Analyse lexicale (8) 11 recherche du début suivant sur le ";" fin sur l'espace qui suit ";" symbole spécial begin x := 23 ; end D F begin x := 23 ;

Analyse lexicale (9) 12 recherche du début suivant sur le "e" fin sur l'espace qui suit "end" ou la fin de ligne il s'agit d'un mot clé begin x := 23 ; end D F begin x := 23 ; end

Analyse syntaxique (1) 13 Vérifier la concordance de la suite de symboles avec la structure du langage règles de production règles de construction d'une suite de symboles du langage analyse syntaxique retrouver les règles utilisées par le programmeur Syntaxe non ambiguë indépendante du contexte doit faciliter cette reconstruction

Analyse syntaxique (2) 14 Forme normale de Backus-Naur (nombre restreint de signes) "<" et " >" encadrent une dénomination syntaxique "::=" peut s'énoncer comme se réécrit en " " énonce une alternative "{", "}" la séquence entre les deux peut être répétée 0 fois ou plus "[", "]" la séquence entre les deux est une option (0 ou 1 fois) Exemple <expression> ::= <facteur> <facteur> <op add> <expression> <facteur> ::= <terme> <terme> <op mult> <facteur> <terme> ::= <identificateur> <nombre> ( <expression> ) <op add> ::= + - <op mult> ::= * /

Analyse syntaxique (3) 15 développement de expression développement de facteur expression facteur op add expression terme op mult facteur 23 * 2 + 5

Analyse syntaxique (4) 16 terme se développe en nombre qui correspond au symbole 23 expression facteur op add expression terme op mult facteur nombre 23 * 2 + 5

Analyse syntaxique (5) 17 op mult correspond au symbole * expression facteur op add expression terme op mult facteur nombre 23 * 2 + 5

Analyse syntaxique (6) 18 facteur se développe en terme, puis nombre qui correspond au symbole 2 expression facteur op add expression terme op mult facteur nombre terme nombre 23 * 2 + 5

Analyse syntaxique (7) 19 op add correspond au symbole + expression facteur op add expression terme op mult facteur nombre terme nombre 23 * 2 + 5

Analyse syntaxique (8) 20 expression de droite se développe en facteur, puis terme, puis nombre qui correspond au symbole 5 Remarque: la priorité des opérateurs est dans la syntaxe expression facteur op add expression terme op mult facteur facteur nombre terme nombre terme nombre 23 * 2 + 5

Analyse sémantique (1) 21 trouver les objets manipulés par le programme désignés par des identificateurs trouver les propriétés d'un objet Comment? déduites implicitement de l'utilisation à partir de déclarations explicites son type => sémantique des opérations, combinaison d'opérations machine sa durée de vie => quand doit-il être créé ou détruit sa taille => nombre d'emplacements mémoire son adresse => désignation dans les instructions machine

Analyse sémantique (2) 22 trouver les actions du programme sur ces objets var i: entier; Affectation de 0 à un entier s: réel; Affectation de 0 à un réel début i := 0; s := 0; tant que i < 10 faire s := s + sqrt(i); i := i + 1; fait; fin; Contrôle: Addition entre réels déclarations présentes, utiles et compatibles Addition entre entiers signification des expressions, etc... Problème: la sémantique est-elle celle désirée => unicité

Génération de code et optimisation 23 Génération construction du programme machine équivalent Optimisation améliorer l'efficacité du résultat produit (et non le programme lui-même) compenser la perte d'efficacité due à la programmation de haut niveau mesure de la qualité d'un compilateur Exemples expressions constantes évaluées à la compilation élimination du code inaccessible => compilation conditionnelle sortir des boucles les instructions ayant même résultat remplacer les calculs liés aux variables de boucles par d'autres + essentiels => progression d'adresses au lieu d'indice de tableau

Traduction croisée (1) 24 programme source compilateur programme objet programme objet machine hôte machine cible P L L Lmc P Lmc P Lmh Lmc Mh Mc programme P écrit en L compilateur de L vers Lmc écrit en Lmh programme P écrit en Lmc machines

Traduction croisée (2) 25 L Lmc L Lmc L1 L1 Lm2 Lm2 Lm1 compilateur de L vers Lmc écrit en L1 M1 P L L Lmc P Lmc P Lmc Lm2 Mc M2

Autocompilation 26 L C L Lm L C1 Lm L Lm C' Lm Lm L C L Lm L C' Lm L Lm C" Lm Lm compilateur de L vers Lm écrit en L M compilateur de L vers Lm écrit en Lm qualité de C1 M compilateur de L vers Lm écrit en Lm qualité de C

Système Java 27 P P P P Java Java bc bc bc bc Lm2 Lm2 Lm Lm2 programme Java M P M2 P bc Lm2 interpréteur de bytecode pour M2 bc Lm2 M2 M2

Conclusion 28 Résume des phases de traduction analyse lexicale analyse syntaxique analyse sémantique optimisation génération de code Tout programme qui interprète des données venant d'un utilisateur devrait comporter les trois premières phases