Université Laval Faculté des sciences et de génie Département d'informatique et de génie logiciel IFT Travail pratique #2

Dimension: px
Commencer à balayer dès la page:

Download "Université Laval Faculté des sciences et de génie Département d'informatique et de génie logiciel IFT-3101. Travail pratique #2"

Transcription

1 Université Laval Faculté des sciences et de génie Département d'informatique et de génie logiciel IFT-3101 Danny Dubé Hiver 2014 Version : 11 avril Questions Travail pratique #2 Traduction orientée-syntaxe Code intermédiaire 1. (25 points.) Dénitions orientées-syntaxe. En vous basant sur l'une ou l'autre des grammaires suivantes, montrez comment reconnaître les langages donnés à l'aide d'une dénition orientée-syntaxe. Dans chaque dénition orientée-syntaxe que vous concevez, l'attribut S.ok devrait être un booléen qui indique si le mot est dans le langage ou pas. S A A a A 1 b A 1 c A 1 ɛ S A A a A 1 B B b B 1 C C c C 1 ɛ (a) Le langage 1 régulier L 1. Théoriquement, L 1 est simple parce qu'il est reconnaissable à l'aide d'un automate ni mais il serait terriblement pénible à décrire à l'aide d'une expression régulière. L 1 = { } w {a, b, c} 24 w 2 a + 4 w b + 14 w 3 c 1000 (mod 2014). (b) Le langage hors-contexte L 2. Bien que hors-contexte, L 2 serait pénible à décrire à l'aide d'une grammaire. L 2 = { } a i b j c k 7i + 3j = 18k (c) Le langage L 3, lequel n'est pas hors-contexte. L 3 = {w {a, b, c} w a w b w c }. (d) Le langage L 4, lequel n'est pas hors-contexte. L 4 = {u c v c v c w v {a, b} et u, w {a, b, c} }. 1. L'expression w c dénote le nombre d'apparition du symbole c dans la chaîne w. C'est un peu comme l'opérateur de longueur mais spécialisé pour le comptage d'un symbole spécique.

2 2. (15 points.) Dénitions orientées-syntaxe. Supposons que nous avons un programme qui manipule des arbres AVL. Il s'agit d'une sorte d'arbres binaires de recherche qui sont quasi-balancés. Notre programme a la capacité de sauver des arbres sur disque et de les relire. La syntaxe utilisée pour la représentation externe des arbres est donnée par la grammaire hors-contexte ci-bas. Un arbre vide est dénoté par empty. Un arbre non-vide est dénoté par la description de sa racine, [t 1, x, t 2 ], où x est appelée une clé et où t 1 et t 2 sont des sous-arbres. Ici, une clé est un entier. An de nous assurer de l'intégrité des données, les invariants propres aux arbres AVL doivent être vériés, lesquels sont : en traversant un arbre en profondeur d'abord de gauche à droite, les clés que l'on retrouve dans les noeuds sont ordonnées et les deux sous-arbres de tout noeud interne ont des hauteurs qui dièrent d'au plus 1. La hauteur d'un arbre t est dénie comme la distance entre la racine de t et sa feuille la plus éloignée. Par exemple, empty a pour hauteur 0, [empty, x, empty] a pour hauteur 1, [empty, x, [empty, y, empty]] a pour hauteur 2, etc. Ajoutez des règles sémantiques à la grammaire hors-contexte suivante an que les deux invariants soient vériés. Le non-terminal S doit synthétiser un attribut booléen `S.ok' indiquant le respect ou non des invariants. S T T [ T 1, num, T 2 ] empty Par exemple, l'arbre suivant n'est pas valide car ses clés ne sont pas ordonnées : [[empty, 14, empty], 12, [empty, 18, empty]] et l'arbre suivant n'est pas valide car il est trop débalancé : [empty, 1, [empty, 2, [empty, 3, empty]]]. 3. (15 points.) Systèmes de traduction. Considérons le système de traduction suivant. Il eectue un certain calcul sur les éléments d'une liste. Vous devez éliminer la récursion à gauche de la grammaire sous-jacente et, bien entendu, adapter les calculs faits par le système de traduction, an que le nouveau système de traduction eectue les mêmes calculs. S [ L ] { S.s := L.s } L L 1, num { L.i := L 1.i + 1 ; L.s := L 1.s + L.i num.lexval } L num { L.i := 1 ; L.s := L.i num.lexval }

3 4. (25 points.) Typage. Cet exercice consiste à concevoir une dénition orientée-syntaxe qui eectue le typage pour un langage de programmation hypothétique. Il s'agit d'un langage de programmation fonctionnel. Nous nous intéressons principalement aux expressions du langage et ignorons presque entièrement les problématiques de la gestion des variables. Le langage est décrit plus bas. La syntaxe des expressions et des types est décrite à la fois à l'aide d'une grammaire hors-contexte et d'explications informelles. La grammaire ne spécie ni la priorité ni l'associativité des opérateurs du langage et n'est absolument pas adaptée à l'analyse prédictive. On peut voir cette grammaire comme étant celle de la syntaxe abstraite. Examinons le langage de programmation. Dans ce langage, des données des types suivants sont disponibles : les nombres, les booléens et les listes. À l'intérieur du compilateur, le type d'un nombre est number, celui d'un booléen est boolean et celui d'une liste est [t] où les éléments de la liste sont du type t. E id Référence à une variable num Constante numérique true Constantes booléennes false [ ] : T Liste vide [ L ] Liste non-vide if E then E else E end Expression conditionnelle - E Opération unaire - & E Opération unaire & E Opération E * E Opération binaire * E / E Opération binaire / E + E Opération binaire + E - E Opération binaire - E < E Opération binaire < E = E Opération binaire = L E Suite d'une ou... L, L... de plusieurs expressions T number boolean [ T ] Type des listes Figure 1 Grammaire hors-contexte pour la syntaxe abstraite du langage. À la gure 1, on retrouve la grammaire. L'essentiel de la grammaire nous donne la forme des expressions ordinaires ainsi que celle des expressions de types. Trois sortes de symboles sont utilisés : les non-terminaux, écrits sous la forme de lettres majuscules, comme E, les terminaux qui sont leur propre catégorie lexicale, écrits avec une fonte de dactylo, comme true, et les terminaux variables, écrits en gras, comme num. Parmi tous les terminaux, seul le terminal id a un attribut signicatif,

4 appelé id.entry, lequel est le lien vers la table des symboles pour l'identicateur. En premier lieu, on retrouve les E-productions, lesquelles génèrent les expressions du programme. Ensuite, on retrouve les L-productions, lesquelles génèrent les suites d'expressions qui apparaissent dans les formes syntaxiques de construction de listes. Enn, on retrouve les T -productions, lesquelles génèrent les expressions de types au niveau du langage source. Voici maintenant les règles de typage des expressions, donnée informellement. Référence à une variable. Le type de la variable lue par l'expression x est donnée par la table des symboles. Nous convenons que le type de l'expression est donnée par lookup(id.entry). Constante numérique. Le type de l'expression est number. Constante booléenne. Le type de l'expression est boolean. Liste vide. Manifestement, cette expression a le type liste mais, faute d'éléments, une liste vide ne peut pas spécier par elle-même le type de ses éléments. Donc, le type de l'expression est donné explicitement par T (où T dénote le type de la liste, pas celui des éléments). Liste non-vide. Tous les éléments qu'elle contient doivent être du même type t et la liste elle-même est du type [t]. Expression conditionnelle. Cette expression ressemble à l'expression e 1? e 2 : e 3 des langages C et Java. La condition e 1 doit avoir le type boolean, les deux branches e 2 et e 3 doivent avoir le même type t et l'expression complète a le type t. Opération unaire -. Cette opération peut s'appliquer à un nombre ou à un booléen. Dans le premier cas, elle agit comme la négation arithmétique et produit un nombre. Dans le second cas, elle agit comme la négation logique et produit un booléen. Opération unaire &. Cette opération s'applique à une liste et retourne sa longueur. Opération Cette opération sert à extraire un élément d'une liste. Elle prend une liste du type [t] à gauche et un nombre i à droite et retourne le ième élément. Opération binaire *. Cette opération calcule le produit de deux nombres ou effectue un et logique entre deux booléens. Opération binaire /. Cette opération calcule le quotient entre deux nombres. Opération binaire +. Sur deux nombres, + calcule la somme. Sur deux booléens, + eectue un ou logique. Enn, sur deux listes du même type, + eectue la concaténation. Opération binaire -. Cette opération calcule la diérence entre deux nombres. Opération binaire <. Cette opération compare soit deux nombres, soit deux booléens, et elle retourne un booléen. Opération binaire =. Cette opération compare deux valeurs du même type et retourne un booléen. Lorsque les règles de typage ne sont pas respectées au niveau d'une certaine expression, il faut déclarer une erreur de types. En de telles circonstances, votre dénition orientée-syntaxe devrait produire le type spécial type_error, lequel existe en sus des types normaux du langage source. Ce type est produit lorsqu'une erreur de types

5 est détectée et il doit ensuite être propagé jusqu'à la racine de l'arbre de syntaxe du programme. Vous pouvez faire la supposition que les programmes reçus en entrée sont syntaxiquement valides ; i.e. ils respectent la grammaire. Toutefois, les programmes ne respectent pas nécessairement les règles de typage. 5. (20 points.) Génération de code intermédiaire. Dans le chapitre 6, nous avons abordé la génération du code intermédiaire pour l'énoncé de contrôle switch. Syntaxiquement, les énoncés switch comportent un certain nombre de clauses ordinaires et une clause nale obligatoire. L'exemple (a) est l'énoncé présenté au chapitre 6. On pourrait généraliser la syntaxe des énoncés switch en permettant d'attacher plus qu'une clé à chaque clause et en rendant la clause nale facultative. Les exemples (b) et (c) sont des énoncés généralisés. Exemple (a) : case 14 : S 2 ; else S 3 Exemple (b) : case 3, 5, 7, 11 : S 2 ; else S 3 Exemple (c) : case 3, 5, 7, 11 : S 2 ; case 2, 4, 6, 8 : S 3 ; end En partant de la grammaire hors-contexte suivante, concevez une dénition orientéesyntaxe qui produit du code intermédiaire pour les énoncés switch généralisés. S C C case K S ; C 1 else S end K num, K 1 num : Remise des travaux Vous devez remettre le travail via Pixel. Les autres modalités de remise sont inscrites dans le plan de cours.

10' - LES ARBRES BINAIRES

10' - LES ARBRES BINAIRES Ch 10' - LES ARBRES BINAIRES On va restreindre les capacités des arbres en obligeant les nœuds à posséder au maximum deux sous-arbres. Ces nouveaux arbres seront plus faciles à maîtriser que les arbres

Plus en détail

Projet de Programmation Fonctionnelle

Projet de Programmation Fonctionnelle Projet de Programmation Fonctionnelle L objectif de ce projet est de concevoir, en Objective Caml, un évaluateur pour le langage mini-ml (un sous ensemble du langage Objective Caml). Votre programme devra

Plus en détail

Algorithmique IN102 TD 3

Algorithmique IN102 TD 3 Algorithmique IN10 TD 16 décembre 005 Exercice 1 Clairement, il existe des arbres de hauteur h à h + 1 éléments : il sut pour cela que leurs n uds internes aient au plus un ls non vide. On a alors un arbre

Plus en détail

pedigree d'un cheval Zoe ; son père est Tonnerre et sa mère Belle ; mère de Belle est Rose et père de Belle est Eclair jean jean marc paul luc

pedigree d'un cheval Zoe ; son père est Tonnerre et sa mère Belle ; mère de Belle est Rose et père de Belle est Eclair jean jean marc paul luc Chap. 3 Les arbres binaires Un arbre est un ensemble de nœuds, organisés de façon hiérarchique, à partir d'un nœud distingué, appelé racine. La structure d'arbre est l'une des plus importantes et des plus

Plus en détail

L2 - Algorithmique et structures de données (Année 2010/2011) Examen (2 heures)

L2 - Algorithmique et structures de données (Année 2010/2011) Examen (2 heures) L2 - lgorithmique et structures de données (nnée 2010/2011) Delacourt, Phan Luong, Poupet xamen (2 heures) Les documents (cours, TD, TP) sont autorisés. Les quatre exercices sont indépendants. À la fin

Plus en détail

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

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme Rappel Ralf Treinen Université Paris Diderot UFR Informatique Laboratoire Preuves, Programmes et Systèmes treinen@pps.univ-paris-diderot.fr 6 mai 2015 Jusqu'à maintenant : un petit langage de programmation

Plus en détail

Héritage en java : Calculatrice SDC

Héritage en java : Calculatrice SDC Programmation orientée objet L3 MIAGE Héritage en java : Calculatrice SDC Travail à rendre : le code complet du projet SDC sous forme d une archive tar.gz. L archive comportera trois répertoires : un répertoire

Plus en détail

Introduction à la Programmation 1

Introduction à la Programmation 1 Introduction à la Programmation 1 Séance de cours/td Université Paris-Diderot Objectifs: Découverte du type String. Comprendre qu il y a des types différents. Maîtriser les expressions booléennes dans

Plus en détail

Gestion d'un entrepôt

Gestion d'un entrepôt Gestion d'un entrepôt Épreuve pratique d'algorithmique et de programmation Concours commun des écoles normales supérieures Durée de l'épreuve: 3 heures 30 minutes Juin/Juillet 2010 ATTENTION! N oubliez

Plus en détail

Listes et arbres binaires

Listes et arbres binaires Des structures de données dynamiques Listes, Listes ordonnées Arbres binaires, arbre binaires de recherche Listes chaînées Utile si le nombre d éléments n est pas connu à l avance et évolue beaucoup. Permet

Plus en détail

Arbres. Alphabet Σ = Σ 0 Σ k. Exemples

Arbres. Alphabet Σ = Σ 0 Σ k. Exemples Arbres Alphabet Σ = Σ 0 Σ k Σ i : alphabet fini de symboles de rang i (Σ i Σ j possible). Un arbre t de rang k est défini par un ensemble (fini) dom(t) {1,..., k} clos par préfixe (domaine de t) : si v,

Plus en détail

Eléments de syntaxe du langage Java

Eléments de syntaxe du langage Java c jan. 2014, v3.0 Java Eléments de syntaxe du langage Java Sébastien Jean Le but de ce document est de présenter es éléments de syntaxe du langage Java : les types primitifs, les opérateurs arithmétiques

Plus en détail

Option Informatique Arbres binaires équilibrés

Option Informatique Arbres binaires équilibrés Option Informatique Arbres binaires équilibrés Sujet novembre 2 Partie II : Algorithmique et programmation en CaML Cette partie doit être traitée par les étudiants qui ont utilisé le langage CaML dans

Plus en détail

Arbres binaires Version prof Version prof

Arbres binaires Version prof Version prof Arbres binaires Version prof Version prof types /* déclaration du type t_element */ t_arbrebinaire = t_noeudbinaire t_noeudbinaire = enregistrement t_element cle t_arbrebinaire fg, fd n enregistrement

Plus en détail

Structures de données, IMA S6

Structures de données, IMA S6 Structures de données, IMA S6 Arbres Binaires d après un cours de N. Devésa, Polytech Lille. Laure Gonnord http://laure.gonnord.org/pro/teaching/ Laure.Gonnord@polytech-lille.fr Université Lille 1 - Polytech

Plus en détail

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation Université de Savoie Module ETRS711 Travaux pratiques Compression en codage de Huffman 1. Organisation du projet 1.1. Objectifs Le but de ce projet est d'écrire un programme permettant de compresser des

Plus en détail

Langages et Compilation. Analyse descendante prédictive

Langages et Compilation. Analyse descendante prédictive Langages et Compilation Analyse descendante prédictive 1 Introduction Grammaires LL(1) Une famille de grammaires analysables de façon ecace. Caractéristiques de l'analyse LL(1) analyse descendante Construction

Plus en détail

Tableaux (introduction) et types de base

Tableaux (introduction) et types de base Tableaux (introduction) et types de base A. Motivation..................................................... 4 B. Les tableaux.................................................... 5 C. Construction des tableaux.......................................

Plus en détail

CHAPITRE 3 : Types de base, Opérateurs et Expressions

CHAPITRE 3 : Types de base, Opérateurs et Expressions CHAPITRE 3 : Types de base, Opérateurs et Expressions 1. Types simples Un type définit l'ensemble des valeurs que peut prendre une variable, le nombre d'octets à réserver en mémoire et les opérateurs que

Plus en détail

Partie I : Automates et langages

Partie I : Automates et langages 2 Les calculatrices sont interdites. N.B. : Le candidat attachera la plus grande importance à la clarté, à la précision et à la concision de la rédaction. Si un candidat est amené à repérer ce qui peut

Plus en détail

Chap. VII : arbres binaires

Chap. VII : arbres binaires Chap. VII : arbres binaires 1. Introduction Arbre : collection d objets avec une structure hiérarchique Structure intrinsèque descendants d une personne (elle incluse) A ascendant connus d une personne

Plus en détail

Induction sur les arbres

Induction sur les arbres Induction sur les arbres Planning Motivations Comment définir les arbres? Équations récursives sur les arbres Complexité de fonctions sur les arbres Recherche dans un arbre binaire de recherche Recherche

Plus en détail

Programmation fonctionnelle

Programmation fonctionnelle 1/30 Programmation fonctionnelle Notes de cours Cours 9 23 novembre 2011 Sylvain Conchon sylvain.conchon@lri.fr 2/30 Les notions abordées cette semaine Les foncteurs Set.Make et Map.Make d Ocaml Arbres

Plus en détail

Cours Algorithmique, 2ème partie AS IUT

Cours Algorithmique, 2ème partie AS IUT Cours Algorithmique, 2ème partie AS IUT Cours 2 : Arbres Binaires Anne Vilnat http://www.limsi.fr/individu/anne/coursalgo Plan 1 Représentations arborescentes 2 Définition d un arbre binaire récursive

Plus en détail

Plan. Piqûre de rappel sur les références Evaluation d'expressions arithmétiques Variables et méthodes statiques Vocabulaire sur les arbres.

Plan. Piqûre de rappel sur les références Evaluation d'expressions arithmétiques Variables et méthodes statiques Vocabulaire sur les arbres. Plan Piqûre de rappel sur les références Evaluation d'expressions arithmétiques Variables et méthodes statiques Vocabulaire sur les arbres Amphi 4 1 Retour sur les références class Code { int numero; Code(int

Plus en détail

Sémantique des Langages de Programmation

Sémantique des Langages de Programmation Sémantique des Langages de Programmation Introduction Stefano Guerrini stefano.guerrini@univ-paris13.fr LIPN - Institut Galilée, Université Paris Nord 13 Sup Galillée Informatique, 1ère année 2009 2010

Plus en détail

INF121: Algorithmique et Programmation Fonctionnelle

INF121: Algorithmique et Programmation Fonctionnelle INF121: Algorithmique et Programmation Fonctionnelle Cours 1: Identificateurs, types de base et fonctions Année 2013-2014 Identificateurs La notion d identificateur Un concept fondamental dans les langages

Plus en détail

Algorithmique - Programmation 1. Cours 1

Algorithmique - Programmation 1. Cours 1 Algorithmique - Programmation 1 Cours 1 Université Henri Poincaré CESS Epinal Automne 2008 1/ 24 Plan Introduction Introduction A propos d AP1 Quelques concepts de base Premiers pas avec Caml Le branchement

Plus en détail

Programmation en VBA

Programmation en VBA Programmation en VBA Présentation de Visual Basic Visual Basic : Basic : dérivé du langage Basic (Biginner s All purpose Symbolic Instruction Code) des années 60 Visual : dessin et aperçu de l interface

Plus en détail

gcc -Wall ansi o tp fichiers -lfl

gcc -Wall ansi o tp fichiers -lfl FLEX et BISON tp.l tp_l.c : - abréviations - expressions régulières et actions associées. tp.h : - définition de types - définition d étiquettes tp_y.h : codes symboliques pour les tokens FLEX Générateur

Plus en détail

Semaine 6 : La notation For

Semaine 6 : La notation For Semaine 6 : La notation For Les fonctions d'ordre supérieur telles que map, atmap ou lter fournissent des constructions puissantes pour manipuler les listes. Mais parfois le niveau d'abstraction requis

Plus en détail

BAZIN Danil et PRIEZ Jean-Baptiste. LEX & YACC : Calculatrice Évoluée

BAZIN Danil et PRIEZ Jean-Baptiste. LEX & YACC : Calculatrice Évoluée BAZIN Danil et PRIEZ Jean-Baptiste LEX & YACC : Calculatrice Évoluée Table des matières 1 Introduction 3 2 Description 4 3 La grammaire utilisée 6 4 Lexèmes et FLEX 8 5 Analyse syntaxique et YACC 8 5.1

Plus en détail

Arbres binaires et codage de Huffman

Arbres binaires et codage de Huffman MP Option Informatique Premier TP Caml Jeudi 8 octobre 2009 Arbres baires et codage de Huffman 1 Arbres baires Soit E un ensemble non vide. On défit la notion d arbre baire étiqueté (aux feuilles) par

Plus en détail

Plan. Arbres équilibrés Arbres AVL Arbres a-b Quelques compléments de Java. Amphi 9 1

Plan. Arbres équilibrés Arbres AVL Arbres a-b Quelques compléments de Java. Amphi 9 1 Plan Arbres équilibrés Arbres AVL Arbres a-b Quelques compléments de Java Amphi 9 1 Structures d'arbre Les structures d'arbre permettent de réaliser des opérations dynamiques, telles que recherche, prédécesseur,

Plus en détail

Arbres ordonnés, binaires, tassés, FAP, tri par FAP, tas, tri par tas

Arbres ordonnés, binaires, tassés, FAP, tri par FAP, tas, tri par tas Arbres ordonnés, binaires, tassés, FAP, tri par FAP, tas, tri par tas 1. Arbres ordonnés 1.1. Arbres ordonnés (Arbres O) On considère des arbres dont les nœuds sont étiquetés sur un ensemble muni d'un

Plus en détail

Informatique UE 102. Jean-Yves Antoine. Architecture des ordinateurs et Algorithmique de base. UFR Sciences et Techniques Licence S&T 1ère année

Informatique UE 102. Jean-Yves Antoine. Architecture des ordinateurs et Algorithmique de base. UFR Sciences et Techniques Licence S&T 1ère année UFR Sciences et Techniques Licence S&T 1ère année Informatique UE 102 Architecture des ordinateurs et Algorithmique de base Jean-Yves Antoine http://www.info.univ-tours.fr/~antoine/ UFR Sciences et Techniques

Plus en détail

Département Informatique Programmation objet. Cours n 8. Structures de données partie 3 Arbres binaires de calcul

Département Informatique Programmation objet. Cours n 8. Structures de données partie 3 Arbres binaires de calcul Programmation objet Cours n 8 Structures de données partie 3 Arbres binaires de calcul 1 Arbre binaire de calcul Nous avons vu l'utilisation des arbres binaires en tant que structure de données optimisée

Plus en détail

Analyse syntaxique IFT-15752 Compilation et interpr etation c! Danny Dub e 2006

Analyse syntaxique IFT-15752 Compilation et interpr etation c! Danny Dub e 2006 Analyse syntaxique Introduction Les grammaires hors-contexte sont les outils que nous utiliserons pour spécifier la structure syntaxique des programmes. Les grammaires hors-contexte ont plusieurs avantages:

Plus en détail

chapitre 4 Nombres de Catalan

chapitre 4 Nombres de Catalan chapitre 4 Nombres de Catalan I Dénitions Dénition 1 La suite de Catalan (C n ) n est la suite dénie par C 0 = 1 et, pour tout n N, C n+1 = C k C n k. Exemple 2 On trouve rapidement C 0 = 1, C 1 = 1, C

Plus en détail

Codage des données en machine.

Codage des données en machine. Codage des données en machine. 1 Entiers naturels Changements de base Codage en machine 2 Entiers relatifs : codage en complément à 2 Dénition Addition et calcul de l'opposé en complément à 2 3 Représentation

Plus en détail

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml OCL Object Constraint Language Le langage de contraintes d'uml Plan 1. Introduction 2. Les principaux concepts d'ocl Object Constraint Language 1 Object Constraint Language 2 Exemple: une application bancaire

Plus en détail

Rapport Écriture d'un compilateur

Rapport Écriture d'un compilateur Rapport Écriture d'un compilateur Traduction I ; 2011-2012 Julien VAUBOURG Pierrick LAUFFENBURGER 2A / TRS Introduction Durant ce projet, nous avons travaillé sur la conception d'un compilateur, qui transforme

Plus en détail

Machines composées de (depuis 1940 env.) : http://cui.unige.ch/isi/cours/std/

Machines composées de (depuis 1940 env.) : http://cui.unige.ch/isi/cours/std/ données pr ogramme 11111101 11001101 01000101 b us disque ma gnétique processeur écran Structures de données et algorithmes Ordinateurs Gilles Falquet, printemps-été 2002 Machines composées de (depuis

Plus en détail

I Arbres binaires. Lycée Faidherbe 2014-2015. 1 Rappels 2 1.1 Définition... 2 1.2 Dénombrements... 2 1.3 Parcours... 3

I Arbres binaires. Lycée Faidherbe 2014-2015. 1 Rappels 2 1.1 Définition... 2 1.2 Dénombrements... 2 1.3 Parcours... 3 I Arbres binaires 2014-2015 Table des matières 1 Rappels 2 1.1 Définition................................................ 2 1.2 Dénombrements............................................ 2 1.3 Parcours.................................................

Plus en détail

Chapitre 4 Automates à pile et langages hors-contexte

Chapitre 4 Automates à pile et langages hors-contexte Chapitre 4 Automates à pile et langages hors-contexte 87 Introduction Langage a n b n n est pas accepté par un automate fini. Par contre L k = {a n b n n k} est accepté. Mémoire finie, mémoire infinie,

Plus en détail

Compilation. Introduction à la compilation. Termes Phases d'un compilateur Importance des grammaires Méthodes d'analyse. Termes. Termes.

Compilation. Introduction à la compilation. Termes Phases d'un compilateur Importance des grammaires Méthodes d'analyse. Termes. Termes. Compilation Enseignants : Stéphane Talbot Miguel Tomasena Volume horaire : 10.5 C / 12 TD / 12 TP langage source Traduction langage cible Contenu : Introduction à la compilation Analyse Lexicale Analyse

Plus en détail

RÈGLES POUR L'ÉCRITURE DES PSEUDO-CODES (Programmation par objets)

RÈGLES POUR L'ÉCRITURE DES PSEUDO-CODES (Programmation par objets) RÈGLES POUR L'ÉCRITURE DES PSEUDO-CODES (Programmation par objets) Consignes générales : 1) Chaque algorithme est bien identifié. 2) Les mots clés doivent être utilisés selon la même syntaxe que ci-dessous.

Plus en détail

Recherche dans un tableau

Recherche dans un tableau Chapitre 3 Recherche dans un tableau 3.1 Introduction 3.1.1 Tranche On appelle tranche de tableau, la donnée d'un tableau t et de deux indices a et b. On note cette tranche t.(a..b). Exemple 3.1 : 3 6

Plus en détail

Les arbres Florent Hivert

Les arbres Florent Hivert 1 de 1 Algorithmique Les arbres Florent Hivert Mél : Florent.Hivert@lri.fr Page personnelle : http://www.lri.fr/ hivert 2 de 1 Algorithmes et structures de données La plupart des bons algorithmes fonctionnent

Plus en détail

Algorithmique P2. HeapSort et files de priorité Ulg, 2009-2010 Renaud Dumont

Algorithmique P2. HeapSort et files de priorité Ulg, 2009-2010 Renaud Dumont Algorithmique P2 HeapSort et files de priorité Ulg, 2009-2010 Renaud Dumont Structure de tas - arbre Un tas est une structure de données qui Permet un nouveau type de tri (Tri par tas) Permet l'implémentation

Plus en détail

Python langage de programmation

Python langage de programmation Initiation à la programmation avec Python langage de programmation Valérie Bellynck (2009), d après un diaporama d Alain Bozzi (2008), lui-même venant de celui de Bob Cordeau (2008) 1 Langage de Programmation

Plus en détail

Analyse syntaxique. Sections 4.1 à 4.4. IFT-3101 Compilation et interprétation Révision hiver 2014 p. 1

Analyse syntaxique. Sections 4.1 à 4.4. IFT-3101 Compilation et interprétation Révision hiver 2014 p. 1 Analyse syntaxique Sections 4.1 à 4.4 IFT-3101 Compilation et interprétation Révision hiver 2014 p. 1 * Contenu * Introduction Rôle et types d analyseurs syntaxiques Gestion des erreurs Langages hors-contexte

Plus en détail

La théorie des mouvements dans les formules Jean-François Nicaud Version initiale de Février 2013 jeanfrancois.nicaud@laposte.net

La théorie des mouvements dans les formules Jean-François Nicaud Version initiale de Février 2013 jeanfrancois.nicaud@laposte.net La théorie des mouvements dans les formules Jean-François Nicaud Version initiale de Février 2013 jeanfrancois.nicaud@laposte.net Article rédigé avec epsilonwriter puis copié dans Word La théorie des mouvements

Plus en détail

Norme de documentation des programmes

Norme de documentation des programmes 1. Introduction Norme de documentation des programmes Auteur : Marc Frappier Collaborateurs Benoit Fraikin Gabriel Girard Jean Goulet Gérard Houdeville Luc Lavoie Version : 1.02 30 août 2004 Département

Plus en détail

Fonctionnement du serveur Z39.50

Fonctionnement du serveur Z39.50 Fonctionnement du serveur Z39.50 Table des matières 1 Configuration du serveur...2 1.1 Comportement du serveur...2 1.2 Configuration de la traduction z39.50 -> base de données...2 1.3 Configuration du

Plus en détail

Algorithmique et Analyse d Algorithmes

Algorithmique et Analyse d Algorithmes Algorithmique et Analyse d Algorithmes L3 Info Cours 5 : Structures de données linéaires Benjamin Wack 2015-2016 1 / 37 La dernière fois Logique de Hoare Dichotomie Aujourd hui Type Abstrait de Données

Plus en détail

Survol de notions de compilation

Survol de notions de compilation Survol de notions de compilation Chapitre 2 Sections 2.1, 2.2, 2.4 IFT-3101 Compilation et interprétation Révision hiver 2013 p. 1 * Contenu * Description des langages de programmation Grammaires hors-contexte

Plus en détail

Programme de la licence informatique, université de Caen http://www.info.unicaen.fr

Programme de la licence informatique, université de Caen http://www.info.unicaen.fr Programme de la licence informatique, université de Caen http://www.info.unicaen.fr Unité Systèmes d'information CM : 45h - TD : 60h - TP : 12h - Coeff 2 Systèmes de Gestion de Bases de Données Modéliser

Plus en détail

1. Les fondements de l informatique 13

1. Les fondements de l informatique 13 Introduction à l'algorithmique 1. Les fondements de l informatique 13 1.1 Architecture de Von Neumann 13 1.2 La machine de Turing 17 1.3 Représentation interne des instructions et des données 19 1.3.1

Plus en détail

Présentation du langage et premières fonctions

Présentation du langage et premières fonctions 1 Présentation de l interface logicielle Si les langages de haut niveau sont nombreux, nous allons travaillé cette année avec le langage Python, un langage de programmation très en vue sur internet en

Plus en détail

Quelques notions d'algorithmique

Quelques notions d'algorithmique Quelques notions d'algorithmique I- Généralités Un algorithme est une suite finie d'instructions permettant la résolution systématique d'un problème donné. Un algorithme peut-être décrit en langage «naturel»,

Plus en détail

Travaux dirigés n o 6

Travaux dirigés n o 6 Travaux dirigés n o 6 Lycée Kléber MPSI, Option Info 2014/2015 Exercice 1 (Indexation d un arbre binaire) Ecrire une fonction Caml indexation : ( f, n) arbre_binaire -> (string,string) arbre_binaire qui

Plus en détail

TP 4 -Arbres Binaires -

TP 4 -Arbres Binaires - L3 Informatique Programmation fonctionnelle OCaml Année 2013/2014 TP 4 -Arbres Binaires - Un arbre binaire est une structure de données qui peut se représenter sous la forme d une hiérarchie dont chaque

Plus en détail

Arbres binaires de recherche

Arbres binaires de recherche 1 arbre des comparaisons 2 recherche dichotomique l'arbre est recalculé à chaque recherche 2 5 3 4 7 9 1 6 1 2 3 4 5 6 7 9 10 conserver la structure d'arbre au lieu de la reconstruire arbre binaire de

Plus en détail

Exercices «Programmation récursive» Deuxième saison UPMC Cycle L Revision: 1.21

Exercices «Programmation récursive» Deuxième saison UPMC Cycle L Revision: 1.21 Exercices «Programmation récursive» Deuxième saison UPMC Cycle L Revision: 1.21 Anne Brygoo, Maryse Pelletier, Christian Queinnec, Michèle Soria Université Paris 6 Pierre et Marie Curie septembre 2005

Plus en détail

Partie 3. Gilles Lebrun (gilles.lebrun@unicaen.fr)

Partie 3. Gilles Lebrun (gilles.lebrun@unicaen.fr) Partie 3 Gilles Lebrun (gilles.lebrun@unicaen.fr) Les arbres binaires Définition : C est une structure arborescente ou hiérarchique ou récursive Chaque élément (nœud) constituant la structure de l arbre

Plus en détail

Exercices dirigés séance n 1- corrigé

Exercices dirigés séance n 1- corrigé Exercices dirigés séance n 1- corrigé Exercice 1 : compilation, analyse d un programme On définit le langage simplifié suivant au moyen de règles BNF : ::=

Plus en détail

Théorie des langages. compilation. Elise Bonzon http://web.mi.parisdescartes.fr/ bonzon/ elise.bonzon@parisdescartes.fr 1 / 59

Théorie des langages. compilation. Elise Bonzon http://web.mi.parisdescartes.fr/ bonzon/ elise.bonzon@parisdescartes.fr 1 / 59 et compilation Elise Bonzon http://web.mi.parisdescartes.fr/ bonzon/ elise.bonzon@parisdescartes.fr 1 / 59 et compilation et compilation Structure d un compilateur Analyse lexicale Analyse syntaxique Analyse

Plus en détail

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

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C IN 102 - Cours 1 Qu on le veuille ou non, les systèmes informatisés sont désormais omniprésents. Même si ne vous destinez pas à l informatique, vous avez de très grandes chances d y être confrontés en

Plus en détail

x n = x x n 1 Exercice 3 Le but de cet exercice est de modéliser les suites définies par récurrence de la façon suivante :

x n = x x n 1 Exercice 3 Le but de cet exercice est de modéliser les suites définies par récurrence de la façon suivante : Ocaml - Exercices Exercice Définir en Ocaml les fonctions suivantes:. f : x sin x + cos x. g : x x 3x+ x x 5 3. Fonction h calculant la moyenne géométrique de deux float positifs ( xy) Exercice Ecrire

Plus en détail

Norme de programmation pour le cours et les travaux pratiques

Norme de programmation pour le cours et les travaux pratiques Université du Québec École de technologie supérieure Service des enseignements généraux www.seg.etsmtl.ca INF130 Ordinateurs et programmation Norme de programmation pour le cours et les travaux pratiques

Plus en détail

Conception et Programmation par Objets GLIN404. Langages et paradigmes de programmation

Conception et Programmation par Objets GLIN404. Langages et paradigmes de programmation Conception et Programmation par Objets GLIN404 Marianne Huchard, Clémentine Nebut LIRMM / Université de Montpellier 2 2013 Langages et paradigmes de programmation Le raisonnement classicatoire paradigme

Plus en détail

Listes de personnes et calculatrice polonaise inverse en Java

Listes de personnes et calculatrice polonaise inverse en Java Listes de personnes et calculatrice polonaise inverse en Java Université Paris Sud Motivation Le but de cet exercice est de manipuler les listes chaînées et les piles et de voir leur application en analyse

Plus en détail

Algorithmes d'apprentissage

Algorithmes d'apprentissage Algorithmes d'apprentissage 1 Agents qui apprennent à partir d'exemples La problématique : prise de décision automatisée à partir d'un ensemble d'exemples Diagnostic médical Réponse à une demande de prêt

Plus en détail

Structures de données non linéaires

Structures de données non linéaires Structures de données non linéaires I. Graphes Définition Un graphe (simple) orienté G est un couple (S, A), où : S est un ensemble dont les éléments sont appelés les sommets. A est un ensemble de couples

Plus en détail

λ-calcul et typage Qu est-ce qu une fonction?

λ-calcul et typage Qu est-ce qu une fonction? λ-calcul et typage Nicolas Barnier, Pascal Brisset ENAC Avril 2009 Nicolas Barnier, Pascal Brisset (ENAC) λ-calcul et typage Avril 2009 1 / 1 Qu est-ce qu une fonction? Classiquement Pas de notation uniforme/standard

Plus en détail

2012/2013 Le codage en informatique

2012/2013 Le codage en informatique 2012/2013 Le codage en informatique Stéphane Fossé/ Marc Gyr Lycée Felix Faure Beauvais 2012/2013 INTRODUCTION Les appareils numériques que nous utilisons tous les jours ont tous un point commun : 2 chiffres

Plus en détail

TP 8 : Arbres binaires de recherche

TP 8 : Arbres binaires de recherche TP 8 : Arbres binaires de recherche Semaine du 17 Mars 2008 Exercice 1 Dénir une structure struct noeud_s permettant de coder un n ud d'un arbre binaire contenant une valeur entière. Ajouter des typedef

Plus en détail

Introduction. Transformer des documents XML. XPath. XPath. Langage d'expressions de chemins dans un. permet de désigner un noeud (sous-arbre)

Introduction. Transformer des documents XML. XPath. XPath. Langage d'expressions de chemins dans un. permet de désigner un noeud (sous-arbre) Introduction Transformer des documents 1 Désignation d un nœud (sous-arbre) d un document : XPATH Associer une présentation à un document : CSS Transformer un document en un autre document (HTML) : XSLT

Plus en détail

Correction langage Java

Correction langage Java MINISTÈRE DE L ÉCOLOGIE, DU DÉVELOPPEMENT DURABLE, DES TRANSPORTS ET DU LOGEMENT EXAMEN PROFESSIONNEL DE VÉRIFICATION D APTIDUDE AUX FONCTIONS DE PROGRAMMEUR Session 2010 Correction langage Java Langage:

Plus en détail

Master d Informatique Examen janvier 2011

Master d Informatique Examen janvier 2011 Université de Provence Technologies XML Master d Informatique Examen janvier 2011 Année 2010-11 Notes de cours autorisées Vous rendrez vos réponses sur les copies anonymes que l on vous a distribuées.

Plus en détail

Fiche de TD-TP no. 4

Fiche de TD-TP no. 4 Master 1 Informatique Programmation Fonctionnelle, p. 1 Fiche de TD-TP no. 4 Exercice 1. Voici trois façons différentes de définir le type Image : type Image = [[ Int ]] data Image = Image [[ Int ]] newtype

Plus en détail

Analyse lexicale Analyse syntaxique Évaluation

Analyse lexicale Analyse syntaxique Évaluation Analyse lexicale Analyse syntaxique Évaluation Génération de code - Cours 1 {Remi.Forax, Matthieu.Constant, Michel.Chilowicz}@univ-mlv.fr Tatoo nain d'argentine ( Cliff1066, CC-By) Génération de code Objectifs

Plus en détail

CHAPITRE 4 : BASES DE LEX

CHAPITRE 4 : BASES DE LEX CHAPITRE 4 : BASES DE LEX Analyse lexicale (rappel) L analyse lexicale consiste à déterminer le, «statut» de chaque mot, c est-à-dire l unité lexicale (ou token) qui lui correspond. Les unités lexicales

Plus en détail

Sommaire. Introduction à la compilation. Notion de compilation. Notion de compilation. Notion de compilation. Notion de compilation

Sommaire. Introduction à la compilation. Notion de compilation. Notion de compilation. Notion de compilation. Notion de compilation Introduction à la compilation A. DARGHAM Faculté des Sciences Oujda Sommaire Environnement d un compilateur Schéma global d un compilateur Caractéristiques d un bon compilateur Définition Un compilateur

Plus en détail

C12. Les structures arborescentes. Août 2006

C12. Les structures arborescentes. Août 2006 Les structures arborescentes Août 2006 Objectifs du C12 Connaître le principe de la structure d arbre binaire Connaître les détails d implémentation de la structure d arbre binaire de recherche Les structures

Plus en détail

Théorie des Langages

Théorie des Langages Théorie des Langages AntLR - Générateur d analyseurs Claude Moulin Université de Technologie de Compiègne Printemps 2015 Sommaire 1 Introduction 2 AntLR ANTLR : ANother Tool for Language Recognition URL

Plus en détail

X2012 INF421 Examen de rattrapage / 25 novembre 2013. 1 Le compte est bon

X2012 INF421 Examen de rattrapage / 25 novembre 2013. 1 Le compte est bon X2012 INF421 Examen de rattrapage / 25 novembre 2013 Tous documents autorisés (poly, notes de cours, notes de PC). Dictionnaires électroniques autorisés pour les élèves étrangers. L'énoncé est composé

Plus en détail

Exercices EN YVELINES)

Exercices EN YVELINES) Compilation : théorie, techniques et outils Exercices HABIB ABDULRAB (INSTITUT NATIONAL DES SCIENCES APPLIQUÉES DE ROUEN) CLAUDE MOULIN (UNIVERSITÉ DE TECHNOLOGIE DE COMPIÈGNE) SID TOUATI (UNIVERSITÉ DE

Plus en détail

Cours de Compilation

Cours de Compilation Université Mohammed V - Agdal Faculté des sciences Département d'informatique Cours de Compilation SMI - S5 Prof. M.D. RAHMANI mrahmani@fsr.ac.ma Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1 III- L'analyse

Plus en détail

2B La résolution de modèles linéaires par Excel 2010

2B La résolution de modèles linéaires par Excel 2010 2B La résolution de modèles linéaires par Excel 2010 Nous reprenons ici, de façon plus détaillée, la section où est indiqué comment utiliser le solveur d'excel 2010 pour résoudre un modèle linéaire (voir

Plus en détail

Application des arbres binaires. Plan

Application des arbres binaires. Plan Application des arbres binaires. Plan Compter les arbres binaires Tétrarbres (quad trees) Problème des n corps Recherche dans un intervalle Recherche dans un nuage de points Recherche dans un arbre d intervalles

Plus en détail

Algorithmique Chapitre N o I : Introduction à Python

Algorithmique Chapitre N o I : Introduction à Python POIRET Aurélien Algorithmique MPSI Algorithmique Chapitre N o I : Introduction à Python Un algorithme est une suite nie d'opérations élémentaires constituant un schéma de calcul ou de résolution de problème.

Plus en détail

Cours numéro 9 : arbres binaires et de recherche

Cours numéro 9 : arbres binaires et de recherche Cours numéro 9 : arbres binaires et de recherche LI213 Types et Structures de données Licence d Informatique Université Paris 6 Arbre Arbre Un arbre est un ensemble fini A d éléments, liés entre eux par

Plus en détail

TP n 5. XML et expressions symboliques. 1 Dénition de XML. L2 Math-Info/L3 Informatique/M1 Linguistique Année 2011-2012

TP n 5. XML et expressions symboliques. 1 Dénition de XML. L2 Math-Info/L3 Informatique/M1 Linguistique Année 2011-2012 Université Paris Diderot Programmation Fonctionnelle L2 Math-Info/L3 Informatique/M1 Linguistique Année 2011-2012 TP n 5 XML et expressions symboliques L'objectif de ce TP est double. En première partie

Plus en détail

Plan du cours. Syntaxe abstraite. Actions sémantiques Exemple : Analyseur d expressions arithmétiques Arbres de syntaxe.

Plan du cours. Syntaxe abstraite. Actions sémantiques Exemple : Analyseur d expressions arithmétiques Arbres de syntaxe. Plan du cours Syntaxe abstraite Martin Odersky 21 et 22 novembre 2005 version 1.0 1 2 3 Syntaxe abstraite Martin Odersky 1 de 31 Syntaxe abstraite Martin Odersky 2 de 31 Un analyseur syntaxique fait généralement

Plus en détail

Informatique / Programmation

Informatique / Programmation Informatique / Programmation Programmation orientée objet avec Java 02 : Expressions et opérateurs Jacques Bapst jacques.bapst@hefr.ch Expressions [1] Les expressions sont des entités composées de littéraux,

Plus en détail

UPMC Master informatique 2 STL NI503 Conception de langages Notes I

UPMC Master informatique 2 STL NI503 Conception de langages Notes I UPMC Master informatique 2 STL NI503 Conception de langages Notes I 2012 1 Évaluer Un langage Le langage Logo est composé commandes permettant de diriger le déplacement d un point sur un plan cartésien

Plus en détail

Chapitre 2 : Représentation des nombres en machine

Chapitre 2 : Représentation des nombres en machine Chapitre 2 : Représentation des nombres en machine Introduction La mémoire des ordinateurs est constituée d une multitude de petits circuits électroniques qui ne peuvent être que dans deux états : sous

Plus en détail

TME 5 plateforme OSGi

TME 5 plateforme OSGi UPMC Paris Universitas Master d'informatique M1/STL/CPS 1 TME 5 plateforme OSGi Frédéric Peschanski 26 mars 2008 Ce sujet de TME est un tutoriel à la technologie OSGi, une plateforme industrielle pour

Plus en détail