Chapitre 5 Grammaires non contextuelles et arbres syntaxiques

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

Chapitre 10 Arithmétique réelle

Cours 1 : La compilation

Théorie de la Programmation

Évaluation et implémentation des langages

Ingénierie Dirigée par les Modèles. Editeurs de modèles. (Eclipse Modeling Tools) Jean-Philippe Babau

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

Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques

ADAPT: un modèle de transcodage des nombres. Une application des systèmes de production au développement

Le langage C. Séance n 4

Fondements de l informatique Logique, modèles, et calculs

Introduction à Eclipse

Compilation. Algorithmes d'analyse syntaxique

! Text Encoding Initiative

Algorithmique et Programmation, IMA

Utilisation d objets : String et ArrayList

Cours d Algorithmique et de Langage C v 3.0

LECTURE, RECHERCHE DOCUMENTAIRE ET INDEXATION

Le modèle standard, SPE (1/8)

Les structures. Chapitre 3

Evaluation diagnostique de CM1 Circonscription de Saint Just en Chaussée Livret du maître partie Français

«Dire et écrire» pour réaliser une composition en travail collaboratif en géographie. Agnès Dullin, lycée J. Racine 20 rue du Rocher, Paris

Présentation du langage et premières fonctions

Cours 1 : Qu est-ce que la programmation?

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

L informatique en BCPST

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Initiation à l algorithmique

Outils pour la pratique

Solutions du chapitre 4

TP SIN Programmation sur androïde Support : eclipse

Encryptions, compression et partitionnement des données


UE Programmation Impérative Licence 2ème Année

Diagramme de déploiement

Cours d initiation à la programmation en C++ Johann Cuenin

Définitions. Numéro à préciser. (Durée : )

TwinCAT 3 C++ Création de modules C++ sous TwinCAT 3 VERSION : 1.0 / PH

Exercices INF5171 : série #3 (Automne 2012)

Informatique Théorique : Théorie des Langages, Analyse Lexicale, Analyse Syntaxique Jean-Pierre Jouannaud Professeur

Chap III : Les tableaux

BONNE NOUVELLE, À PARTIR DE DEMAIN 15 AOÛT 2014, l inscription en ligne sera disponible à partir du site de l ARO.

École Polytechnique de Montréal. Département de Génie Informatique et Génie Logiciel. Cours INF2610. Contrôle périodique.

Grammaires d unification

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

Indications pour une progression au CM1 et au CM2

Conception de circuits numériques et architecture des ordinateurs

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

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Cours 1: Java et les objets

Compilation (INF 564)

Le seul ami de Batman

Programmation C. Apprendre à développer des programmes simples dans le langage C

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

length : A N add : Z Z Z (n 1, n 2 ) n 1 + n 2

Nom de l application

ALGORITHMIQUE ET PROGRAMMATION En C

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Interpréteur d algèbre relationnelle

Chapitre 2. Eléments pour comprendre un énoncé

Les structures de données. Rajae El Ouazzani

DSL. Domain Specific Language. À l'aide des technologies Eclipse Modeling. Goulwen Le Fur Le 23 novembre 2012

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

Connexion à distance. Pour configurer les automates Beckhoff via un PC de programmation VERSION : 1.0 / PH

Chapitre 1 Qu est-ce qu une expression régulière?

Inscriptions au trimestre d automne 2012 : quelques observations

Mise en route et support Envision 10 SQL server (Avril 2015) A l'intention de l'administrateur SQL Server et de l administrateur Envision

Chapitre VIII. Les bases de données. Orientées Objet. Motivation

INF 1250 INTRODUCTION AUX BASES DE DONNÉES. Guide d étude

Calculabilité Cours 3 : Problèmes non-calculables.

Projet de Fin d Etudes

NOTICE D INSTALLATION

CHAPITRE 1. Introduction aux bases de données

Programmation par les Objets en Java

Gestion Electronique de Document (ECM/GED)

Probabilité. Table des matières. 1 Loi de probabilité Conditions préalables Définitions Loi équirépartie...

v Sygic, a.s. All rights reserverd. Manuel utilisateur

INF6304 Interfaces Intelligentes

Définition des Webservices Ordre de paiement par . Version 1.0

PROCEDURE D'APPEL DU WEBSERVICE PERMETTANT DE CONTROLER LES FICHIERS XML-SANDRE Version 4

Qu est-ce qu un résumé?

Document d aide au suivi scolaire

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

UML. Diagrammes de classes (suite) Delphine Longuet.

ACCÈS SÉMANTIQUE AUX BASES DE DONNÉES DOCUMENTAIRES

MATHÉMATIQUES. Les préalables pour l algèbre MAT-P020-1 DÉFINITION DU DOMAINE D EXAMEN

Supervision et infrastructure - Accès aux applications JAVA. Document FAQ. Page: 1 / 9 Dernière mise à jour: 15/04/12 16:14

Tp 1 correction. Structures de données (IF2)

Argument-fetching dataflow machine de G.R. Gao et J.B. Dennis (McGill, 1988) = machine dataflow sans flux de données

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

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

as Architecture des Systèmes d Information

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

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

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

Informatique I. Sciences et Technologies du Vivant (Semestre 1)

La C.A.O (Conception Assistée par Ordinateur). Le logiciel de C.A.O.

TP1 : Initiation à Java et Eclipse

Transcription:

Chapitre 5 Grammaires non contextuelles et arbres syntaxiques Jean Privat Université du Québec à Montréal INF5000 Théorie et construction des compilateurs Automne 2011 Jean Privat (UQAM) 05 Grammaires et arbres syntaxiques INF5000 Automne 2011 1 / 1

Analyse syntaxique Analyseur syntaxique Donnée : une séquence finie de jetons Résultat : une structure syntaxique (un arbre) Générateur d analyseur syntaxique Donnée : une description de syntaxe (une grammaire) Résultat : le code de l analyseur syntaxique correspondant Pour l instant, c est magique SableCC4 est aussi un générateur d analyseur syntaxique Algorithmes pour plus tard (spoiler : on y parle d automates) Jean Privat (UQAM) 05 Grammaires et arbres syntaxiques INF5000 Automne 2011 2 / 1

Grammaire Langages Décrire des langages par leur structure syntaxique Représentation humaine Exemple Une expression est la somme de deux expressions, ou le produit de deux expressions, ou un nombre Questions La chaîne appartient-elle au langage? Si oui, quelle est la structure (l arbre) syntaxique? Jean Privat (UQAM) 05 Grammaires et arbres syntaxiques INF5000 Automne 2011 3 / 1

Grammaire non contextuelle Jeton (terminal) Élément de l alphabet du langage Seul le type du jeton est considéré et non le texte Distingués en bleu dans la suite Production (non-terminal) Variable désignant un ensemble d alternatives Une production spéciale, celle de départ (racine) Alternative Une séquence de jetons et de productions Jean Privat (UQAM) 05 Grammaires et arbres syntaxiques INF5000 Automne 2011 4 / 1

Le langage des formes Grammar formes : Lexer nombre = ( 0.. 9 )+; Token nombre ; Ignored ; Parser forme = { c e r c l e : } c e n t r e p o i n t rayon l o n g { segment : } p o i n t p o i n t ; p o i n t = ( l o n g, l o n g ) ; l o n g = nombre u n i t e ; u n i t e = cm mm pt px ; Jean Privat (UQAM) 05 Grammaires et arbres syntaxiques INF5000 Automne 2011 5 / 1

Le langage des formes Exercice : Trouver l arbre syntaxique centre (5pt, 1cm) rayon 10 px Jean Privat (UQAM) 05 Grammaires et arbres syntaxiques INF5000 Automne 2011 6 / 1

Le langage des formes Exercice : Trouver l arbre syntaxique centre (5pt, 1cm) rayon 10 px point forme:cercle long long long unite:pt unite:cm unite:px centre ( nombre (5) pt, nombre (1) cm ) rayon nombre (10) px Jean Privat (UQAM) 05 Grammaires et arbres syntaxiques INF5000 Automne 2011 6 / 1

Le langage des listes l i s t = {many : } i d l i s t { one : } i d ; Exercice : Trouver l arbre syntaxique id id id Jean Privat (UQAM) 05 Grammaires et arbres syntaxiques INF5000 Automne 2011 7 / 1

Le langage des listes l i s t = {many : } i d l i s t { one : } i d ; Exercice : Trouver l arbre syntaxique id id id list:many list:many list:one id id id Jean Privat (UQAM) 05 Grammaires et arbres syntaxiques INF5000 Automne 2011 7 / 1

Le langage des parenthèses par = { item : } ( par ) {empty : } ( ) ; Exercice : Trouver l arbre syntaxique ((())) Jean Privat (UQAM) 05 Grammaires et arbres syntaxiques INF5000 Automne 2011 8 / 1

Le langage des parenthèses par = { item : } ( par ) {empty : } ( ) ; Exercice : Trouver l arbre syntaxique ((())) par:item par:item par:empty ( ( ( ) ) ) Jean Privat (UQAM) 05 Grammaires et arbres syntaxiques INF5000 Automne 2011 8 / 1

Grammaires vs. expressions régulières, en théorie Langage Expressions régulières (et automates) langage régulier Grammaires non contextuelles langage non contextuel Qui est le plus fort? Peut-on définir tout langage régulier avec une grammaire non contextuelle? Peut-on définir tout langage non contextuel avec une expression régulière? Jean Privat (UQAM) 05 Grammaires et arbres syntaxiques INF5000 Automne 2011 9 / 1

Grammaires vs. expressions régulières, en théorie Langage Expressions régulières (et automates) langage régulier Grammaires non contextuelles langage non contextuel Qui est le plus fort? Peut-on définir tout langage régulier avec une grammaire non contextuelle? oui Peut-on définir tout langage non contextuel avec une expression régulière? non Les langages non contextuels incluent les langages réguliers Jean Privat (UQAM) 05 Grammaires et arbres syntaxiques INF5000 Automne 2011 9 / 1

Grammaires vs. expressions régulières, en pratique Les expressions régulières sont suffisantes pour l analyse lexicale Recherche de sous-chaînes Séquences de jetons au fur et à mesure Les grammaires sont nécessaires pour l analyse syntaxique Fabrication d arbres syntaxiques Un seul arbre complet d un coup Jean Privat (UQAM) 05 Grammaires et arbres syntaxiques INF5000 Automne 2011 10 / 1

Le langage Lisp item = { par : } ( l i s t ) { n i l : } ( ) { i d : } i d ; l i s t = {many : } item l i s t { one : } item ; Exercice : Trouver l arbre syntaxique (id(id id)(id id(id))()) Jean Privat (UQAM) 05 Grammaires et arbres syntaxiques INF5000 Automne 2011 11 / 1

Le langage Lisp item:par list:many list:many list:many item:id item:par list:many list:one item:id list:many item:par list:many item:id list:one item:par item:id list:one list:one item:id item:id item:nil ( id ( id id ) ( id id ( id ) ) ( ) ) Jean Privat (UQAM) 05 Grammaires et arbres syntaxiques INF5000 Automne 2011 12 / 1

Le langage des expressions arithmétiques exp = {add : } exp + exp {min : } exp exp {mul : } exp exp { i n t : } i n t { par : } ( exp ) ; Exercice : Trouver l arbre syntaxique 5 + 4 * 2 5-4 - 2 5 + 4 + 2 Jean Privat (UQAM) 05 Grammaires et arbres syntaxiques INF5000 Automne 2011 13 / 1

Ambiguïté Grammaire ambiguë Plusieurs arbres syntaxiques pour une même phrase Exemple 5 + 4 * 2 exp:mul exp:add exp:add exp:int exp:int exp:mul exp:int exp:int exp:int exp:int int (5) + int (4) * int (2) int (5) + int (4) * int (2) Jean Privat (UQAM) 05 Grammaires et arbres syntaxiques INF5000 Automne 2011 14 / 1

Ambiguïté Problème d arbre La question n est pas sur l appartenance au langage Mais sur obtenir un arbre unique Détection d ambiguïté Problème non décidable (mais on se débrouille) Solutions Récrire la grammaire Priorités explicites (grammaire augmentée) Changer le langage Jean Privat (UQAM) 05 Grammaires et arbres syntaxiques INF5000 Automne 2011 15 / 1

Ambiguïté : Récrire exp = {add : } exp + f a c t o r {min : } exp f a c t o r { f a c t o r : } f a c t o r ; f a c t o r = {mul : } f a c t o r term { term : } term ; term = { i n t : } i n t { par : } ( exp ) ; Exercice : Trouver l arbre syntaxique 5 + 4 * 2 (5 + 4) * 2 5 + (4 * 2) Jean Privat (UQAM) 05 Grammaires et arbres syntaxiques INF5000 Automne 2011 16 / 1

Ambiguïté : Priorités explicites exp = {add : } exp + exp {min : } exp exp {mul : } exp exp { i n t : } i n t { par : } ( exp ) ; Precedence Left mul ; Left add, min ; Attention Priorités explicites ne marchent que pour les cas simples Jean Privat (UQAM) 05 Grammaires et arbres syntaxiques INF5000 Automne 2011 17 / 1

Exercice Question : Concevoir les grammaires Soit l alphabet { 0, 1 } Langage où chaque 1 est forcément suivi d un 0 Exemples : 001001010 OK ; 1101 pas OK Langage des palindromes Exemples : 011010110 OK ; 1101 pas OK Jean Privat (UQAM) 05 Grammaires et arbres syntaxiques INF5000 Automne 2011 18 / 1

Exercice Question : Concevoir les grammaires Soit l alphabet { 0, 1 } Langage où chaque 1 est forcément suivi d un 0 Exemples : 001001010 OK ; 1101 pas OK S = 0 S 1 0 S ; Langage des palindromes Exemples : 011010110 OK ; 1101 pas OK S = 0 S 0 1 S 1 1 0 ; Jean Privat (UQAM) 05 Grammaires et arbres syntaxiques INF5000 Automne 2011 18 / 1