Chap. 2. Langages et automates



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

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

Java Licence Professionnelle CISII,

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)

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

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

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

Théorie des Langages

INF 232: Langages et Automates. Travaux Dirigés. Université Joseph Fourier, Université Grenoble 1 Licence Sciences et Technologies

Conception des systèmes répartis

Algorithmique et Programmation, IMA

Initiation à l algorithmique

Cours d algorithmique pour la classe de 2nde

Compilation (INF 564)

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

Modèles de Calcul. Yassine Lakhnech. 2007/08 Université Joseph Fourier Lab.: VERIMAG. Modèles de Calcul Start p.

1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions

La NP-complétude. Johanne Cohen. PRISM/CNRS, Versailles, France.

Quatrième partie IV. Test. Test 15 février / 71

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

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

Calculs de probabilités

GPA770 Microélectronique appliquée Exercices série A

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

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

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping

Exemples de problèmes et d applications. INF6953 Exemples de problèmes 1

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Cours de Génie Logiciel

SNT4U16 - Initiation à la programmation TD - Dynamique de POP III - Fichiers sources

Programmer en JAVA. par Tama

Cours 1 : La compilation

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

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

Les algorithmes de base du graphisme

Machines virtuelles Cours 1 : Introduction

Traduction des Langages : Le Compilateur Micro Java

1 Introduction C+ + Algorithm e. languag. Algorigramm. machine binaire. 1-1 Chaîne de développement. Séance n 4

Les chaînes de caractères

Resolution limit in community detection

MIS 102 Initiation à l Informatique

Grammaires d unification

1 Définition et premières propriétés des congruences

Recherche dans un tableau

Architecture des ordinateurs

Cours de Programmation 2

STAGE IREM 0- Premiers pas en Python

Objets Combinatoires élementaires

Licence Sciences et Technologies Examen janvier 2010

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

Machines virtuelles fonctionnelles (suite) Compilation ML Java

Pourquoi l apprentissage?

Université Paris-Dauphine DUMI2E 1ère année, Applications

Décision Markovienne appliquée à un jeu de stop ou encore : Pickomino (Heckmeck Am Bratwurmeck)

TP3 : Manipulation et implantation de systèmes de fichiers 1

Concept de machine virtuelle

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

Les structures de données. Rajae El Ouazzani

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

chapitre 4 Nombres de Catalan

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

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

Algorithmes de recherche d itinéraires en transport multimodal

Plus courts chemins, programmation dynamique

UE C avancé cours 1: introduction et révisions

Évaluation et implémentation des langages

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

Organigramme / Algorigramme Dossier élève 1 SI

Algorithmique I. Algorithmique I p.1/??

I. Introduction aux fonctions : les fonctions standards

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Conception de circuits numériques et architecture des ordinateurs

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

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

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

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

CCI Génie Logiciel UFR - IMA. Objectifs du cours d'aujourd'hui. Génie Logiciel Validation par le test. Qu est-ce que tester un programme?

Utilisation des tableaux sémantiques dans les logiques de description


3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

Représentation d un entier en base b

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

Vision industrielle et télédétection - Détection d ellipses. Guillaume Martinez 17 décembre 2007

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

Vers l'ordinateur quantique

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

VÉRIFICATION DES SYSTÈMES À PILE AU MOYEN DES ALGÈBRES DE KLEENE

Qualité du logiciel: Méthodes de test

UML et les Bases de Données

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

Théorie de la Programmation

Cours 1 : Qu est-ce que la programmation?

ACTIVITÉ DE PROGRAMMATION

LE PROCESSUS ( la machine) la fonction f. ( On lit : «fonction f qui à x associe f (x)» )

Préparation à l examen EFA en Macro

CONFIGURATION DE L AUTOMATE SIEMENS

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

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

Transcription:

Chapitre 2. Langages et automates 1. Quelques définitions et description d un langage. 2. Les expressions régulières. 3. Les automates fini déterministes et non-déterministes. 4. Construction automatique d un analyseur lexical. M. KRAJECKI 1 Licence Informatique 1. Alphabets, mots Pour représenter un problème, nous devons définir un ensemble fini de symboles appelé alphabet (par la suite, noté ). Définition 1 (alphabet) Un alphabet est un ensemble fini de symboles appelés caractères. En fait, la seule caractéristique essentielle est sa taille, les caractères choisis ne sont pas importants (construction d une bijection entre les symboles). Exemple, alphabet de taille 3 : ; ; Définition 2 (mot, longueur) Un mot est une séquence finie d éléments (chaîne) issus d un même alphabet. La longueur du mot (notée ) est définie par le nombre de caractères composant ce mot. Le mot vide, noté a une longueur égale à 0. Exemple :,, sont des mots de l alphabet. M. KRAJECKI 2 Licence Informatique

2. Description d un langage Définition 3 (langage) Un langage est un ensemble de mots définis sur le même alphabet. Exemple : soit l alphabet, l ensemble des mots est un langage sur cet alphabet. Attention : le langage vide, noté, est différent du langage. Description d un langage : langage fini énumération de tous les mots ; langage infini définition directe des langages simples + composition. M. KRAJECKI 3 Licence Informatique Description d un langage Définition 4 (Union de 2 langages) est le langage contenant tous les mots de et de : ou Définition 5 (Concaténation de 2 langages) est le langage contenant tous les mots formés d un mot de suivi d un mot de : et Définition 6 (Fermeture itérative (ou de Kleene) de ) La fermeture itérative est définie par l ensemble des mots formés par une concaténation finie des mots de "! #%$ et &'( )* tels que +'( ) M. KRAJECKI 4 Licence Informatique

Langages réguliers et expressions régulières Définition 7 (Langages réguliers) L ensemble des langages réguliers sur un alphabet est le plus petit ensemble des langages satisfaisant les conditions suivantes : 1. 2. pour tout 3. si alors * et Les expressions régulières sont une notation qui indique comment l ensemble régulier est construit à partir des ensembles réguliers élémentaires. M. KRAJECKI 5 Licence Informatique Expressions régulières Définition 8 (Expressions régulières) Les expressions régulières pour un alphabet sont les expressions formées par les règles suivantes : 1., et les éléments de sont des expressions régulières 2. Si et sont des expressions régulières, alors, et sont des expressions régulières. Le langage représenté par l expression régulière est défini ainsi : 1., 2. pour tout 3. 4. 5. M. KRAJECKI 6 Licence Informatique

Expressions régulières : exemples L ensemble de tous les mots définis à partir d un alphabet est dénoté par l expression régulière. Cette expression est souvent abrégée en. L ensemble de tous les mots non vides (! #, noté $ ou $%. de " ) est noté &'()' &'( définit l ensemble des mots composés par et ' contenant au moins un '. M. KRAJECKI 7 Licence Informatique 3. Les automates finis Les automates finis sont très utilisés en informatique. Pour la compilation : recherche de chaîne de caractères dans un texte. Abstraction d un ordinateur, un ordinateur est composé de : un processeur avec des registres (compteur de programme) ; une mémoire pour stocker le programme ; une mémoire pour les données. Exécution d un programme : 1. Chargement de l instruction indiquée par le compteur de programme. 2. Exécution de l instruction modification des registres et / ou de la mémoire de données. 3. Le compteur de programme est modifié. M. KRAJECKI 8 Licence Informatique

Automate fini déterministe Pour prévoir l effet d un cycle (l exécution d une instruction), il suffit de connaître l état de la mémoire + registres. Un état est défini par le contenu de la mémoire et des registres de l ordinateur. À chaque cycle, l état de la machine est modifiée. La transformation de cet état est une fonction (appelée fonction de transition) de l ensemble des états de la machine vers elle-même. Si, de plus, nous connaissons l état initial de la machine, nous pouvons en déduire l exécution exacte de la machine. M. KRAJECKI 9 Licence Informatique Automate fini déterministe : définition informelle Un automate fini déterministe se compose ainsi : un ruban d entrée sur lequel est placé le mot (les données) à traiter. Le ruban est composé d un ensemble de cases, chaque case contenant un caractère. L automate utilise une tête de lecture pour connaître le caractère suivant. Un ensemble d états dont un état initial (état au début de l exécution) et des états d acceptation qui définissent les mots acceptés par l automate. Une fonction de transition qui indique pour chaque état et symbole lu, le prochain état de l automate. M. KRAJECKI 10 Licence Informatique

Automate fini déterministe : définition Définition 9 (Automate fini déterministe) Un Automate Fini Déterministe (noté AFD) est défini formellement par un quintuplet où : est un ensemble fini d états ; est un alphabet ; est la fonction de transition ; est l état initial (start) ; est l ensemble des états accepteurs. Définition 10 (Configuration d un AFD) Une configuration d un AFD est une paire composée de l état de l automate plus la partie du mot restant à traiter :. M. KRAJECKI 11 Licence Informatique Dérivation Définition 11 (Dérivation) La configuration est dérivable en une étape de par (noté ) si :! (, est le premier caractère de et est égal à privé de ). " ( est le prochain état déterminé par la fonction de transition pour et ). Une configuration est dérivable (en plusieurs cylces) d une autre, si elle peut être obtenue par une séquence finie de dérivations en une étape : est dérivable par de (noté ) s il existe! # $ et des configurations $# %# $'&()&! telle que : +*,* ) ) -.( 0/ $!1 +# %# +#32,#42. M. KRAJECKI 12 Licence Informatique

Exécution d un automate Donc, nous pouvons en déduire l exécution d un automate : où est l état initial et (( le mot vide. Il n y a qu une exécution possible pour chaque mot. Définition 12 (Acceptation) Un mot est accepté si le dernier état de la machine est un état accepteur : est accepté par si et * Le langage accepté par (noté ) est défini par l ensemble des mots acceptés par : et * M. KRAJECKI 13 Licence Informatique Représentation par un graphe À chaque état, on associe un nœud du graphe. La relation de transition est représentée par des arcs valués : si, il existe un arc entre les sommets et. L état initial est signalé par une flèche et les états accepteurs par des doubles cercles. Voici un automate :! Accepte tous les mots se terminant par : #" %$. M. KRAJECKI 14 Licence Informatique

Simulation du comportement d un AFD SIMULATIONAFD 1 ( ( $ {début du mot} 2 while 3 do if 4 then return 5 else if est défini 6 then 7 else return 8 ( ( +( ( {on a traité un symbole} 9 if 10 then return ( 11 else return M. KRAJECKI 15 Licence Informatique Les automates finis non déterministes Les automates finis non déterministes sont des automates où les constructions suivantes sont autorisées : plusieurs transitions correspondent au même caractère (ou symbole) dans chaque état ; des transitions sur le mot vide sont autorisées ; des transitions sur des mots de longueur supérieur à 1 sont possibles (regroupement de transition). M. KRAJECKI 16 Licence Informatique

Automate fini non déterministe Définition 13 (Automate fini non déterministe) Un Automate Fini Non déterministe (noté AFN) est défini formellement par un quintuplet où : est un ensemble fini d états ; est un alphabet ; est la relation de transition ; est l état initial (start) ; est l ensemble des états accepteurs. nouvelle définition de la dérivation : est dérivable en une étape par de si : ; (le triplet est un élément de la relation de transition). M. KRAJECKI 17 Licence Informatique Remarques sur les AFN Un mot est accepté par un automate non détermnisite s il existe une dérivation qui accepte ce mot. Nous laissons l automate choisir la bonne dérivation. Le non déterminisme permet de construire facilement des automates utilisant la disjonction et l itération, mais ne reconnaît pas plus de langages que les automates déterministes. M. KRAJECKI 18 Licence Informatique

Exemple d un AFN a Les mots et sont acceptés par cet automate. M. KRAJECKI 19 Licence Informatique Simulation d un AFN Problème : il existe plusieurs dérivations pour un même mot! 1. Il faut vérifier si l une d entre elles permet d accepter le mot. 2. Il faut être en mesure de revenir en arrière (backtrack). 0 1 2 0, bb échec 0, abb 0, aabb 1, bb 2, b 1, abb échec 3 3, le mot est accepté Utilisation de la récursivité. M. KRAJECKI 20 Licence Informatique

Principe de la simulation d un AFN SIMULATIONAFN 1 {on commence avec e=start et p=0} 2 if 3 then return 4 else 5 if états pour notés * &'( 6 then 7 ( $ 8 while et ( 9 do 10 SIMULATIONAFN # 11 ( ( 12 return M. KRAJECKI 21 Licence Informatique Construction d un AFN qui reconnait le langage d une expression regulière La construction se fait sur la syntaxe de l expression régulière. : : Soit et, 2 epxressions régulières, on représente par l AFN de et celui de par : Remarque : on ajoute un arc étiqueté depuis l état accepteur de vers l état initial de. M. KRAJECKI 22 Licence Informatique

Construction d un AFN qui reconnait le langage d une expression regulière Pb : si " " : Solution : on ajoute un nouvel état accepteur. nouvelle état d acceptation " : M. KRAJECKI 23 Licence Informatique Construction d un AFN qui reconnait le langage d une expression regulière $ : { permet d accepter le mot vide } Exemple : #" $ M. KRAJECKI 24 Licence Informatique

Transformation d un AFN vers un AFD équivalent Un AFD est équivalent à un AFN s il accepte le même langage. 1) 2) On simule "en parallèle" les 2 états possibles pour une transition de sur. M. KRAJECKI 25 Licence Informatique -closure Définition 14. Soit un ensemble d états d un AFN. L -closure(a) est alors défini par l ensemble des états de accessibles depuis tout état par des -transitions uniquement. Remarque :. Il est donc possible, en utilisant cette définition, de construire automatiquement un AFD équivalent à un AFN donné. À partir de l -closure de l état initial (qui correspondra à l état initial de l AFD), on construit de proche en proche (en suivant les transitions de l AFN) les états de l AFD correspondant. M. KRAJECKI 26 Licence Informatique

AFNVERSAFD Algorithme de transformation AFN vers AFD 1 $* {s est l état initial de M} 2 * MARQUE * 3 while tel que MARQUE 4 do MARQUE 5 for - 6 do 7 8 if 9 then 10 MARQUE 11 12 M. KRAJECKI 27 Licence Informatique Exemple Exemple : #" $ 0 1 2 3 6 7 8 9 10 4 5 A B D C E E est le seul état accepteur car il contient l état 10 de l AFN. M. KRAJECKI 28 Licence Informatique

) Exécution de l algorithme x M(x) T y A={0,1,2,4,7} V A {3,8} {3,8,6,1,7,2,4} A B B={3,8,6,1,7,2,4} F V A {5} {5,6,7,1,2,4} A C={1,2,4,5,6,7} F V B {3,8} B B B {5,9} {5,9,6,7,1,2,4} B D D={1,2,4,5,6,7,9} F V C {3,8} C B C {5} C D {3, 8} D B D {5, 10} {5,6,1,2,4,7,10} D E={1,2,4,5,6,7,10} F V E {3, 8} E B E {5} E C C E C M. KRAJECKI 29 Licence Informatique Partitionnement Soient et deux états de et une partition de. et sont équivalents dans si et seulement si pour tout symbole, les états et ont des transitions vers des états appartenant au même bloc de. Définition 15 Équivalence entre deux états. Soit &(( ) une partition, c est à dire : -.( # ; -.( # et -.( ( # ; # #. Les états et sont équivalent dans ( ) si et seulement si : - et Le but du partitionnement est de réduire le nombre d états d un AFD. M. KRAJECKI 30 Licence Informatique

Algorithme de minimisation des états MINIMISATION - 1 2 while 3 do 4 for 5 do positionner B en sous bloc B tel que 2 états s et t de B sont 6 dans le même bloc s ils sont équivalents pour 7 while 8 do 9 while $ ' 10 do 11 if 12 then 13 M. KRAJECKI 31 Licence Informatique Exemple (suite) On doit sortir à cause de la transition sur. Donc : M. KRAJECKI 32 Licence Informatique

Exemple (suite) On doit sortir (transition sur ). On en déduit : Donc et sont équivalents. M. KRAJECKI 33 Licence Informatique 4. Construction automatique d un analyseur lexical L analyseur lexical est la première composante de la phase d analyse nécessaire à un compilateur. Le rôle de l analyseur lexical (AL) : AL lit les caractères en entrée (le prog. source) et reconnait des lexèmes. Le résultat de l AL est une suite de lexèmes qui propose une première structuration du programme. Il existe une interaction très forte entre l AL et l analyseur syntaxique. programme source Analyseur lexical lexème obtenir un lexème Analyseur syntaxique Table des symboles M. KRAJECKI 34 Licence Informatique

Construction automatique de l AL à l aide d automates L analyse lexicale permet : 1. Une simplification de la phase d analyse. 2. Efficacité du compilateur accrue. 3. Portabilité du compilateur. Objectifs : construire un AL qui accepte unités lexicales notées &((. 1. Représenter chaque unité lexicale par une expression régulière. 2. Construire un AFN pour chaque expression régulière. 3. Transformer chaque AFN en AFD (optimisation). 4. Réduire le nombre d états des AFD (optimisation). M. KRAJECKI 35 Licence Informatique Construction automatique de l AL à l aide d automates ANALYSEURLEXICAL 1 on essaie 2 if! 3 then return 4 else on essaie 5 if! 6 then return +(( 7 else on essaie 8 if 9 then return M. KRAJECKI 36 Licence Informatique

Construction automatique de l AL à l aide d automates En pratique, on cherche à reconnaître le lexème le plus grand (qui comporte le plus grand nombre de caractères). Attention : 1. Un lexème est différent d une unité lexicale : une unité lexicale définit un langage régulier représenté par une expression régulière ; un lexème est un mot de ce langage. 2. L ordre de définition des unités lexicales est important : si 2 unités lexicales peuvent être choisies pour un même lexème, c est l unité lexicale définie le plus tôt qui est choisie. M. KRAJECKI 37 Licence Informatique 5. Limite des expressions régulières et automates à pile On ne peut pas définir tous les langages à l aide d expressions régulières. Exemple : L = { # $ } ne peut être défini par une expression régulière. Preuve : voir TD. Un automate à pile non déterministe est composé des mêmes éléments qu un AFN : un ruban d entrée et une tête de lecture ; un ensemble d états dont on distingue un état initial et un ensemble d états d acceptation ; une relation de transition. On ajoute à ces composantes, une pile de capacité infinie initialement vide. À chaque étape du calcul, l automate à pile consulte le sommet de la pile et la remplace par une autre suite de symboles. M. KRAJECKI 38 Licence Informatique

Automate fini non déterministe à pile Définition 16 Un Automate fini non déterministe à pile est défini par : Où : est un ensemble fini d états ; est un alphabet ; est l aphabet de la pile ; est la relation de transition : ; est le symbole initial de la pile ; est l état initial ; est l ensemble des états d acceptations. M. KRAJECKI 39 Licence Informatique Configuration et dérivation d un automate à pile Remarque : & ) & signifie que : l automate passe de l état à l état sur le mot si la chaîne est au sommet de la pile ; à l état, le sommet de la pile a été remplacé par. M. KRAJECKI 40 Licence Informatique

Configuration et dérivation d un automate à pile Définition 17 Configuration et dérivation. Une configuration d un automate à pile est définie par un triplet ( état, mot en entrée, contenu de la pile) :. La configuration est dérivable en une étape de par ( ) si : (le mot commence par le préfixe ) ; (avant la transition, le sommet de la pile contient ) ; (après la transition, est enlevé du sommet de la pile et il est remplacé par ) ; M. KRAJECKI 41 Licence Informatique Exécution d un automate à pile Une configuration est dérivable en plusieurs étapes de la configuration par ( ) s il existe!# $ et des configurations intermédiaires * (' ) telles que : * ; ) ; # #42 pour $'&()&%!. Une exécution d un automate à pile sur un mot est une suite de configurations : (' ( est l état initial et, le symbole initial au sommet de la pile). M. KRAJECKI 42 Licence Informatique

Acceptation d un mot par un automate à pile Un mot est accepté par un automate à pile si ( acceptation sur état final) : avec Ou bien (acceptation sur pile vide) : accepte s il existe une exécution sur menant à une configuration où la pile est vide : Les deux définitions sont équivalentes (i.e. les automates reconnaissent les mêmes langages). M. KRAJECKI 43 Licence Informatique Exemple Définition de, l automate à pile qui reconnaît # $ sur pile vide. * + * $* $* * (on empile le symbole ) $* + (on dépile) + (on dépile) * Exécution pour : $* $* $* + + + est accepté. M. KRAJECKI 44 Licence Informatique