IFT313 Introduction aux langages formels



Documents pareils
Dessin Technique GMEC1311. PROFESSEUR Gabriel Cormier, Ph.D. Bureau : 217G2 Tél : Courriel : gabriel.cormier@umoncton.ca

Évaluation et implémentation des langages

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

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.

PLAN DE COURS. Reconnaître le rôle des mathématiques ou de l informatique dans la société contemporaine (0011)

UNIVERSITÉ LAVAL. PLAN DE COURS PROGRAMME en GESTION du DÉVELOPPEMENT TOURISTIQUE. Titre et sigle du cours : Marketing touristique, MRK 20578

Théorie des Langages

Programme et contenus Licence d'informatique de Lille, parcours MIAGE, en alternance ou en formation continue (13:40)

CHARGÉE DE COURS : Catherine Pelletier, MBA, chargée de communication, Service des communications et des relations avec le milieu, FSA

Soutien technique en informatique

Machines virtuelles Cours 1 : Introduction

PLAN DE COURS DÉPARTEMENT ÉLECTRONIQUE INDUSTRIELLE. TITRE DU COURS Ordinateur Outil RA 1-4-2

Faculté des sciences de l administration Automne 2005

Compilation. Algorithmes d'analyse syntaxique

Traduction des Langages : Le Compilateur Micro Java

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

XML, PMML, SOAP. Rapport. EPITA SCIA Promo janvier Julien Lemoine Alexandre Thibault Nicolas Wiest-Million

MRK A : Méthodes d Analyse de Données en Marketing Automne 2010

Consignes pour les travaux d actualité Premier quadrimestre

PLAN DE COURS CEGEP DU VIEUX-MONTRÉAL

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

Entraînement au concours ACM-ICPC

Rapport de Synthèse. Création d un Générateur de modèle PADL pour le langage C++ Sébastien Colladon

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

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

Université de Lorraine Licence AES LIVRET DE STAGE LICENCE

Télécom Nancy Année

Plan de cours. 1. Mise en contexte. 2. Place du cours dans le programme. 3. Descripteur du cours

Cours d algorithmique pour la classe de 2nde

A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW

Cégep de Saint Laurent Direction des communications et Direction des ressources technologiques. Projet WebCSL : Guide de rédaction web

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Cours 1 : La compilation

Formula Negator, Outil de négation de formule.

A.E.C. - Gestion des Applications, TI LEA.BW

Thème Informatique (INF) INF1 : Architectures logicielles et Web

Annexe : La Programmation Informatique

ASR-2102 : Produits financiers: assurances et rentes

Intelligence Artificielle et Systèmes Multi-Agents. Badr Benmammar

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

Plan de cours. Chiffriers et bases de données en gestion commerciale

PLAN DE COMMUNICATION TACTIQUE COMM Faculté des lettres : Département d'information et de communication PLAN DE COURS

Langue, techniques de rédaction et correction d épreuves (412-2A1-LG)

Chapitre 1 I:\ Soyez courageux!

IFT3902 : (Gestion de projet pour le) développement, (et la) maintenance des logiciels

Logiciel Libre Cours 3 Fondements: Génie Logiciel

ACTIVITÉ DE PROGRAMMATION

DESS Arts, création et technologies

Éléments de programmation et introduction à Java

LA RECHERCHE DOCUMENTAIRE

Solution A La Gestion Des Objets Java Pour Des Systèmes Embarqués

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

SQL Parser XML Xquery : Approche de détection des injections SQL

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

PLAN DE COURS. GPA750 Ordonnancement des systèmes de production aéronautique

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

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

PROGRAMME PROVISOIRE. Degré 9 (1CO)

Stages ISOFT : UNE SOCIETE INNOVANTE. Contact : Mme Lapedra, stage@isoft.fr

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

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

Gauthier, Benoît (dir.) Recherche sociale : de la problématique à la collecte des données. Québec : Presses de l Université du Québec.

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Environnements et Outils de Développement Cours 1 Introduction

Francis BISSON ( ) Kenny CÔTÉ ( ) Pierre-Luc ROGER ( ) IFT702 Planification en intelligence artificielle

F7n COUP DE BOURSE, NOMBRE DÉRIVÉ

Guide du mémoire de fin d études

HIVER 2004 MÉTHODOLOGIE DE LA RECHERCHE EN MARKETING MRK

POL 1100 (Méthodes de recherche en politique) Hiver 2012 Local B-0305 Lundi de 13h00-14h30

DES OUTILS DE RECHERCHE À VOTRE MESURE, LA SUITE JURIBISTRO MD DU CAIJ : COMMENT MIEUX EXPLOITER CES OUTILS? PLAN DE FORMATION

MODALITES DU CONTROLE DES CONNAISSANCES. Règlement relatif à l obtention du diplôme de MASTER ECONOMIE Mention «Monnaie Banque Finance Assurance»

Jade. Projet Intelligence Artificielle «Devine à quoi je pense»

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

Nom de l application

NUMÉRO (GR) TITRE DU COURS CYCLE

Cours 1: Java et les objets

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

PG208, Projet n 3 : Serveur HTTP évolué

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

Initiation. àl algorithmique et à la programmation. en C

SIO-6029-Z1 : Gestion de projet et du changement

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

Utilisation des tableaux sémantiques dans les logiques de description

LOGICIEL DE GESTION DE DOCUMENTS PDF : PROJET INFO 1

OCL - Object Constraint Language

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

LA BATTERIE DU PORTABLE

ITIL V2. La gestion des mises en production

Intelligence Artificielle et Robotique

Premier cours d informatique

OpenText StreamServe Cours Customer Communication Management L essentiel

Introduction à l algorithmique et à la programmation (Info 2)

Générer du code à partir d une description de haut niveau

IFT785 Approches Orientées Objets. FINAL Été Remise : Jeudi 19 août 2002 à 9h00 am

RTDS G3. Emmanuel Gaudin

Institut économique de Montréal. Rapport d un sondage omnibus. Juin 2005

Diapo 1. Objet de l atelier. Classe visée. Travail en co-disciplinarité (identité et origine académique des IEN)

FRENCH Language (Advanced Level III)

Transcription:

Département d informatique IFT313 Introduction aux langages formels Plan de cours Été 2014 Enseignant : Froduald Kabanza Courriel : kabanza@usherbrooke.ca Local : D4-1022-2 Téléphone : (819) 821-8000 poste 62865 Site : planiart.usherbrooke.ca/kabanza/cours/ift313 Disponibilité : mardi de 11h à 12h ou sur rendez-vous Auxiliaire : Francis Bisson Courriel : francis.bisson@usherbrooke.ca Horaire : Lundi 13h30 à 15h20 salle D3-2037 Mardi 8h30 à 10h20 salle D3-2037 Description officielle de l activité pédagogique i Objectifs Contenu S initier aux fondements théoriques des langages de programmation, en particulier aux langages formels, à la théorie des automates ainsi qu `a l analyse lexicale et syntaxique. Langages réguliers et expressions régulières. Automates finis et analyseurs lexicaux. Langages et grammaires hors contexte. Arbre syntaxique et grammaire ambiguë. Automates à pile de mémoire, analyseurs syntaxiques descendants et analyseurs syntaxiques ascendants. Machines caractéristiques. Classes de grammaires hors contexte : LL, SLR, LALR et LR. Applications aux langages de programmation. Générateurs d analyseurs lexicaux et syntaxiques. Crédits 3 Organisation 3 heures d exposé magistral par semaine 1 heure d exercices par semaine 5 heures de travail personnel par semaine Préalable MATT 115 i http ://www.usherbrooke.ca/fiches-cours/ift313 ÉTÉ 2014 IFT313 1

1 Présentation 1.1 Mise en contexte On sait que les langages de programmation occupent une place prépondérante en informatique. Par leur structure et leurs particularités, ils exercent une influence certaine sur le style de programmation et par conséquent sur la conception des programmes. Par exemple, le langage Prolog est conçu pour faire de la programmation logique, le langage Eiffel de la programmation orientée objet, le langage Scheme de la programmation fonctionnelle, le langage Occam de la programmation parallèle et enfin le langage C de la programmation procédurale et impérative. Les langages de programmation sont loin d être les seuls langages utilisés en informatique. En effet, il arrive souvent qu il faille exprimer des instructions ou des spécifications de manière formelle, par exemple pour d écrire un système complexe (langages de spécification), faire exécuter une suite de tâches (langages de commandes), interroger une base de données (langages de quatrième génération), voire formater un texte ou utiliser un logiciel de calcul symbolique (langages spécialisés). Tous ces langages ont plusieurs points en commun. D abord, de la même manière que les langues naturelles peuvent être vues comme des ensembles de phrases constituées de mots, on peut définir ces langages comme des ensembles de suites de lexèmes qui obéissent à des règles lexicales (dans le cas des langages de programmation, les lexèmes sont les constantes numériques, les noms de variables, les mots-clés et les opérateurs comme + et =). Ensuite, on distingue les phrases valides des autres à l aide d un ensemble de règles syntaxiques, appelé grammaire. Définir un langage de manière rigoureuse et formelle permet l analyse automatique de programmes ou de textes écrits dans ce langage par un outil qui, selon le type de langage, est appelé un compilateur, un assembleur, un interpréteur, un préprocesseur ou un éditeur. Par exemple, un programme écrit en Java est soumis à un compilateur, qui vérifie s il est conforme aux règles syntaxiques du langage Java; si c est le cas, le compilateur pourra traduire le programme en bytecode, ce qui lui permettra d être exécuté sur une machine virtuelle Java. L activité pédagogique IFT313 (Introduction aux langages formels) présente les principaux outils formels de description de langages et de mise en œuvre d analyseurs lexicaux et syntaxiques. Ces outils sont basés sur la théorie des automates et des langages formels. 1.2 Objectifs généraux S'initier aux fondements théoriques des langages de programmation, en particulier aux langages formels, à la théorie des automates ainsi qu'à l'analyse lexicale et syntaxique. 1.3 Objectifs spécifiques À la fin de cette activité pédagogique, l étudiante ou l étudiant sera capable : 1. de comprendre et d expliquer les principales notions et méthodes liées à l analyse lexicale des langages de programmation; 2. de comprendre et d expliquer les principales méthodes de spécification et d analyse lexicale et syntaxique; 3. d appliquer les notions vues en cours à des exemples concrets; 4. d utiliser des outils d écriture automatique d analyseurs lexicaux et syntaxiques. 1.4 Thèmes couverts Le tableau suivant contient la matière présentée dans ce cours. L étude de cette matière est accompagnée d au moins cinq devoirs couvrant tous les sujets, dont au moins deux travaux pratiques utilisant des outils de construction automatique d analyseurs lexicaux et syntaxiques ÉTÉ 2014 IFT313 2

Thème Contenu Heures Objectifs 1 Introduction : présentation du domaine des automates et des langages 2 formels; présentation du plan de cours. 2 Langage régulier : alphabet, chaîne et langage; opérations sur les 6 1,3 chaînes et les langages; façons de définir formellement un langage; ensemble régulier et expressions régulières; exemples concrets à partir de langages de programmation 3 Automate fini déterministe : automate fini déterministe, automate fini 6 1 non déterministe, exemples d automates finis; algorithmes de traduction directe d une expression régulière en un automate fini déterministe. 4 Construction d analyseurs lexicaux : introduction à un outil de 2 4 construction automatique d analyseurs lexicaux. 5 Grammaire hors contexte : notion de grammaire hors contexte, 8 1,3 exemples concrets de langages hors contexte; notions de dérivation, d arbre de dérivation et de grammaire ambiguë; transformation d une grammaire ambiguë en une grammaire non ambiguë; formes de règles de production et formes de grammaire hors-contexte; grammaires régulières et grammaires linéaires. 6 Du lexical au syntaxique : frontière entre l analyse lexicale et 1 2 syntaxique, lemme de l étoile. 7 Introduction à l analyse syntaxique : graphe d une grammaire; analyse 3 2 descendante et analyse ascendante à l aide d une recherche en largeur. 8 Automate à pile : notion d automate à pile, types d automate à pile et 4 1 leur équivalence. 9 Analyse syntaxique descendante : notion de grammaire LL(k); calcul 8 2,4 des ensembles First, Follow et calcul des lookaheads; construction d analyseurs syntaxiques descendants, descente récursive; transformation d une grammaire non LL(k) en une grammaire LL(k); introduction à un outil de construction automatique d analyseurs syntaxiques descendants. 10 Analyse syntaxique ascendante : notion de grammaire LR(k) et notions d items; construction d analyseurs syntaxiques ascendants; grammaires LR(0), SLR(1), LR(1), LALR(1); transformation d une grammaire non LR(k) en une grammaire LR(k); à un outil de construction automatique d analyseurs syntaxiques ascendants. 8 2,4 2 Organisation Cette section propre à l approche pédagogique de chaque enseignante ou enseignant présente la méthode pédagogique, le calendrier, le barème et la procédure d évaluation ainsi que l échéancier des travaux. Cette section doit être cohérente avec le contenu de la section précédente. 2.1 Méthode pédagogique Le cours comprend trois heures d exposé magistral, une heure d exercices dirigés et cinq heures de travail personnel par semaine, durant 12 semaines. Si la situation l exige, selon l appréciation du professeur, il pourrait y avoir quatre heures d exposé magistraux durant une semaine, suivi de deux heures d exposé magistral et deux heures d exercices la semaine suivante. ÉTÉ 2014 IFT313 3

2.2 Calendrier du cours Les dates et les heures consacrés à chaque thème pourraient varier légèrement selon la progression. 1 2 3 Date Thème Contenu Lecture * 1 Plan de cours et introduction. [1] :1, [4] :1 28/4 Langages réguliers [1] : 2, [3] :1, [4] :3.1-2 Expressions régulières. 3.3 29/4 3 Automates fini (AF) [1] : 5.1-5.3, [3] :2 Analyse lexicale par un automate fini déterministe (AFD). 5/5 3 6/5 3 12/5 4 Convertir une expression régulière en un automate fini non déterministe (AFN). Convertir un AFN en un AFD. Minimiser un AFD. Lab #1 : Exercices sur les expressions régulières, AFN, AFD Devoir #1 : Analyseur lexical avec un AFD. Reconaître des unités lexicales avec et sans Regex en Java. Regex en Java [1] : 5.4-5.7, 6.1-6.4 [4] :3.6-3.7 Générateurs d analyseur lexicaux : JFlex. [2] :2.5 [4] :3.4-3.5, 3.8 [5] : Doc JFlex 6 Lemme de l étoile [1] : 6.5-6.7 5 13/5 4 Grammaires. Langages générés par une grammaire. Dérivation. Arbre d analyse. Lab #2 : Se familiariser avec JFLEX Devoir #2 : Programmer un analyseur lexical avec JFLEX. [1] : 3-4, [4] : 4.1 4 5 6 19/5 Congé universitaire - Journée nationale des Patriotes 20/5 5, 7 26/5 8, 9 27/5 8 2/6 9 3/6 7 9/6 9 Grammaires ambiguës. Grammaires hors contexte (GHC). Automates à pile pour une GHC. Automate à pile LL. Notions d ensembles First et Follow pour les grammaires LL(1). Lab # 3 : Exercices sur les grammaires et les automates à pile. Tables d analyse LL(1). LL driver. Analyseurs syntaxiques descendants non-récursifs LL(1) avec un driver LL(1). 9 Lab #4 : Exercices : grammaires LL(1) 9 Devoir #3 : Grammaires LL(1) Analyseurs syntaxiques descendants récursifs LL(1). Générateurs d analyseurs syntaxiques LL(1) JavaCC et [1] : 3-4, 10 [2] : 3.1, [4] :4.2 [1] :7.17.4, 19.1-19.5 [2] :3.2 [3] :4 [4] :4.3-4.4 [1] : 19.6 [1] : 20 [2] : 3.3-3.5, 4 ÉTÉ 2014 IFT313 4

notions de grammaires attribués et d arbres syntaxiques. [6] : Doc de Java CC Révision de mi-session 10/6 1-9 Lab #5 : Se familiariser avec JavaCC Devoir #4 : Programmer un parseur avec JavaCC. 8 9 16/6 8,10 Automates à piles LR. Notion de poignée (handle). 17/6 Période des examens périodiques : pas de cours (du 17 au 27 juin) 23/6 Période des examens périodiques : pas de cours (du 17 au 27 juin) 24/6 Congé universitaire - Journée nationale du Québec 30/6 Congé universitaire Fête du Canada (report du 1 er juillet) 1-9 Correction de l examen périodique. 10 1/7 8, 10 Rappel sur automates à piles LR et notion de poignée (handle). Analyseurs LR(0) : notion de préfixes viables (viable prefixes) ; notion d éléments (items) LR(0); [1] : 20 [2]: 3.3, 3.4-3.5 [4] :4.5-4.6 7/7 10 Analyseurs LR(0), suite : AFD pour reconnaître les préfixes viables. 11 8/7 10 Analyseurs SLR(1) : pilote LR(1); générer une table d analyse SLR(1). Analyseurs LR(1) et LALR(1) : générer une table d analyser LR(1) et LALR(1). [4] : 4.7 12 14/7 10 Lab #6 : Exercices : grammaires LR(0) et SLR(1). Devoir #5 : grammaires LR(0), SLR(1), LR(1), LALR(1) 15/7 10 Lab #7 : Exercices: grammaires LR(1) et LALR(1). 13 21/7 10 10 Générateurs d analyseurs syntaxiques LR: Java CUP. [4] : 4.9 [6] : Doc de Java CUP Lab #8 : Laboratoire supervisé sur Java CUP Devoir #6 : Programmer un parseur avec Java CUP. 22/7 1-10 Révision finale 14 28/7 10 Consultation au laboratoire sur Java CUP 29/7 10 Consultation au laboratoire sur Java CUP 15 4/8 10 Consultation au laboratoire sur Java CUP 15 5/8 Période des examens finaux (du 5 au 15 août) * Pour les lectures, les chiffres entre crochets correspondent aux documents référencés à la fin du plan de cours et les chiffres après les deux points correspondent aux sections du document. 2.3 Évaluation Devoirs (6) : 40 % Examen périodique : 20 % Examen final : 40 % ÉTÉ 2014 IFT313 5

2.4 Échéancier des devoirs Devoir Spécification Thème Pondération Date de remise donnée le 1 6 mai Analyseur lexical avec un AFD. Trouver des unités 5 % 20 mai lexicales avec et sans Regex en Java. 2 13 mai Programmer un analyseur lexical avec JFlex 5 % 3 juin 3 3 juin Grammaires LL(1) 5 % 10 juin 4 10 juin Programmer un parseur avec JavaCC 10 % 15 juillet 5 14 juillet Grammaires LR(0), SLR(1), LR(1) et LALR(1) 5 % 22 juillet 6 21 juillet Programmer un parseur avec JavaCUP 10 % 4 août Directives particulières Certains devoirs seront individuels, d autres pourront être faits en équipe de 2 personnes. La qualité du français et de la présentation peut être considérée dans le résultat du travail. Toute soumission en retard vaut zéro, sauf celles motivées par des raisons valables, conformes au règlement des études de la Faculté. Le plagiat n est pas toléré. Les étudiants doivent clairement référencer toute composante de leurs solutions aux devoirs tirée ou inspirée d une tierce partie. À défaut ils risquent des sanctions sévères conformément au règlement des études et pouvant aller d une note nulle pour le devoir à l exclusion du programme. La correction des évaluations sera entre autres basée sur le fait que chacune de vos réponses soit : o claire, c est-à-dire lisible et compréhensible pour le correcteur o précise, c est-à-dire exacte ou sans erreur ; o complète, c est-à-dire que toutes les étapes de résolution du problème sont présentes ; o concise, c est-à-dire que la méthode de résolution est la plus courte possible. D autres directives plus spécifiques, les dates de remise et les barèmes relatifs aux devoirs seront connus à la publication de l énoncé de chaque devoir. 3 Matériel nécessaire pour le cours Le livre de Sudkamp [1] est le manuel du cours. D autres livres complémentaires sont suggérés. Tous les programmes et les diapositives présentés dans le cours sont disponibles sur le site du cours. [1] Sudkamp, T. A.. Languages and Machines. Third Edition Edition. Addison-Wesley, 2005. [2] Appel, A. and Palsberg, J. Modern Compiler Implementation in Java. Second Edition. Cambridge, 2004. [3] Wolper, P. Introduction à la calculabilité, 3è édition. Dunod, 2006 [4] Aho, A., Lam, M., Sethi R., Ullman J. Compilers: Principles, Techniques, and Tools, 2 nd Edition. Addison Wesley, 2007. [5] JFlex : A Fast Scanner Generator for Java: http://jflex.de/ [6] JavaCC : A parser / scanner generator for Java: https://java.net/projects/javacc [7] JavaCUP : An LALR Parser Genetrator for Java: http://www2.cs.tum.edu/projects/cup/ ÉTÉ 2014 IFT313 6