Théorie des Langages Formels Chapitre 7 : Grammaires

Documents pareils
AC AB. A B C x 1. x + 1. d où. Avec un calcul vu au lycée, on démontre que cette solution admet deux solutions dont une seule nous intéresse : x =

Continuité et dérivabilité d une fonction

Calcul matriciel. Définition 1 Une matrice de format (m,n) est un tableau rectangulaire de mn éléments, rangés en m lignes et n colonnes.

Résolution d équations non linéaires

Limites finies en un point

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

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

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

TP 1. Prise en main du langage Python

Théorie des Langages

2.4 Représentation graphique, tableau de Karnaugh

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

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

chapitre 4 Nombres de Catalan

Algorithme. Table des matières

Représentation d un entier en base b

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

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

* très facile ** facile *** difficulté moyenne **** difficile ***** très difficile I : Incontournable T : pour travailler et mémoriser le cours

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

Exo7. Calculs de déterminants. Fiche corrigée par Arnaud Bodin. Exercice 1 Calculer les déterminants des matrices suivantes : Exercice 2.

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

Cours d Informatique

Exercices - Polynômes : corrigé. Opérations sur les polynômes

Comparaison de fonctions Développements limités. Chapitre 10

Chapitre 6. Fonction réelle d une variable réelle

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Objets Combinatoires élementaires

Présentation du langage et premières fonctions

Dérivation : cours. Dérivation dans R

Chapitre 3. Quelques fonctions usuelles. 1 Fonctions logarithme et exponentielle. 1.1 La fonction logarithme

Logique. Plan du chapitre

Chapitre 1 I:\ Soyez courageux!

Note de cours. Introduction à Excel 2007

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

BAREME sur 40 points. Informatique - session 2 - Master de psychologie 2006/2007

1 Introduction au codage

Introduction à la théorie des graphes. Solutions des exercices

Compter à Babylone. L écriture des nombres

Taux d évolution moyen.

Construction d un cercle tangent à deux cercles donnés.

1.1 Rappels sur le produit cartésien Relations Graphes dirigés Arbres Exercices Motivation...

a et b étant deux nombres relatifs donnés, une fonction affine est une fonction qui a un nombre x associe le nombre ax + b

Chapitre 1 : Évolution COURS

Maple: premiers calculs et premières applications

Guide de l Administrateur

Excel 2007 Niveau 3 Page 1

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Rappels sur les suites - Algorithme

Dualité dans les espaces de Lebesgue et mesures de Radon finies

Bac Blanc Terminale ES - Février 2011 Épreuve de Mathématiques (durée 3 heures)

Introduction à l étude des Corps Finis

Factorisation Factoriser en utilisant un facteur commun Fiche méthode

PROJET ALGORITHMIQUE ET PROGRAMMATION II

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

Le théorème de Thalès et sa réciproque

Exercices - Fonctions de plusieurs variables : corrigé. Pour commencer

Fonctions homographiques

* très facile ** facile *** difficulté moyenne **** difficile ***** très difficile I : Incontournable

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

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

Initiation à la Programmation en Logique avec SISCtus Prolog

Résolution de systèmes linéaires par des méthodes directes

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

Planche n o 22. Fonctions de plusieurs variables. Corrigé

Les indices à surplus constant

La fonction exponentielle

Exo7. Limites de fonctions. 1 Théorie. 2 Calculs

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

108y= 1 où x et y sont des entiers

Chapitre 2. Matrices

CORRIGE LES NOMBRES DECIMAUX RELATIFS. «Réfléchir avant d agir!»

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

6. Les différents types de démonstrations

CRÉER UN COURS EN LIGNE

Codage d information. Codage d information : -Définition-

Programmation linéaire

Les Conditions aux limites

Théorème du point fixe - Théorème de l inversion locale

Partie 1 - Séquence 3 Original d une fonction

Le chiffre est le signe, le nombre est la valeur.

La programmation linéaire : une introduction. Qu est-ce qu un programme linéaire? Terminologie. Écriture mathématique

3 ème 2 DÉVELOPPEMENT FACTORISATIONS ET IDENTITÉS REMARQUABLES 1/5 1 - Développements

3 Approximation de solutions d équations

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Calcul différentiel sur R n Première partie

Chp. 4. Minimisation d une fonction d une variable

ÉPREUVE COMMUNE DE TIPE Partie D

Microsoft Excel. Tableur

L informatique en BCPST

Fonctions de plusieurs variables

Enoncé et corrigé du brevet des collèges dans les académies d Aix- Marseille, Montpellier, Nice Corse et Toulouse en Énoncé.

Intégration et probabilités TD1 Espaces mesurés Corrigé

Chapitre 2 Le problème de l unicité des solutions

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

Débuter avec Excel. Excel

Algorithmique et programmation : les bases (VBA) Corrigé

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

Problème 1 : applications du plan affine

Les chaînes de caractères

Transcription:

1/22 Théorie des Langages Formels Chapitre 7 : Grammaires Florence Levé Florence.Leve@u-picardie.fr Année 2014-2015

2/22 Reconnaître ou engendrer Un automate peut être vu comme une machine permettant de reconnaître des mots. On entre un mot dans la machine, et en résultat, on a comme réponse le mot appartient au langage ou le mot n appartient pas au langage. Avec une grammaire, on s intéresse plus à la structure des mots du langage pour expliquer comment ils se fabriquent. Une fois qu on a les règles de fabrication (appelées "règles de production"), on peut engendrer tel ou tel mot. Exemple : Phrase = ujet + Verbe ujet = "L étudiant" "Le professeur" Verbe = "écoute" "enseigne"

3/22 Récursivité Les langages peuvent contenir un nombre infini de mots, de phrases... qui peuvent être exprimés par un nombre fini de productions. Pour cela, on utilise la répétition des éléments contenus dans les règles de production de la grammaire : on construit les éléments récursivement. Exemple : nombre = chiffre chiffre nombre chiffre = "0" "1" "2" "3" "4" "5" "6" "7" "8" "9"

Grammaire algébrique Une grammaire algébrique s appelle aussi grammaire hors contexte ou non contextuelle (en anglais, context-free grammar). Une grammaire algébrique est un quadruplet G = (Σ, N, P, ) où : Σ est un alphabet, dit alphabet des terminaux ; N est un alphabet, dit alphabet des non-terminaux ou des variables, tel que N Σ = ; P est une partie finie de N (Σ N) Chaque élément de P est appelé une règle de production ; est un élément de N appelé axiome de G (symbole initial). Tous les mots de la grammaire peuvent être obtenus en appliquant des règles de production successivement à partir de l axiome. Remarques : en général, les lettres terminales sont notées par des lettres minuscules ou des lettres grecques, et les lettres non terminales sont notées par des lettres majuscules. 4/22

5/22 Exemple : les mots bien parenthésés Décrivons le langage des mots bien parenthésés en ne nous occupant que des parenthèses (le langage de Dyck). Un mot bien parenthésé est : un mot sans parenthèse (le mot vide ε puisqu on ne considère que le langage des parenthèses), la concaténation de deux mots bien parenthésés : ( ) ( ), une parenthèse ouvrante, un mot bien parenthésé, une parenthèse fermante : ( ( ) ). i représente une expression bien parenthésée, ces trois règles peuvent s écrire : ε, et (). Les lettres terminales sont ( et ) et est une lettre non terminale, qui est également l axiome de la grammaire.

6/22 Exemple Remarques. Plutôt que de noter (X, u) une règle de production, on note usuellement X u. Quand il existe plusieurs règles de production (X, u 1 ), (X, u 2 ),..., (X, u n ), on note usuellement X u 1 u 2... u n (le symbole signifiant ou dans ce contexte). La grammaire des mots bien parenthésés peut donc se noter : G bp = ({(, )}, {}, {(, ε), (, ), (, ())}, ) ou encore : G bp = ({(, )}, {}, { ε ()}, ). Cette grammaire peut aussi s écrire : G bp = ({(, )}, {}, { ε ()}, ).

7/22 Mots dérivés directement Mot dérivé directement. oient u et v deux mots sur Σ N. Le mot v se dérive directement de u par la grammaire algébrique G = (Σ, N, P, ) s il existe des mots u 1 et u 2 et une règle de production X w tels que u = u 1 Xu 2 et v = u 1 wu 2. Exemple : Les mots ε, () et sont les seuls mots qui se dérivent directement de par la grammaire G bp.

8/22 Mots dérivés Mot dérivé. oient u et v deux mots sur Σ N. Le mot v se dérive de u par la grammaire algébrique G = (Σ, N, P, ) s il existe des mots w 0, w 1,..., w n tels que u = w 0, v = w n et pour tout entier i (0 i < n), w i+1 se dérive directement de w i. Exemples : Les mots ((())()), ()(), () et se dérivent de par la grammaire G bp.

9/22 Notation Une dérivation s écrit souvent : u = w 0 w 1 w 2... w n = v Par exemple : () ()() (())() Remarque. On observera que si on prend n = 0, on peut avoir v = u, et donc tout mot se dérive directement de lui-même.

10/22 Appartenance d un mot au langage de la grammaire Pour montrer qu un mot appartient au langage, il faut et il suffit de montrer qu il s obtient à partir des règles de production de la grammaire (en commençant par l axiome). Par exemple, le mot (())() s obtient par : () (()) ((ε)) = (()) (())() (())(ε) = (())(). Chaque dérivation peut être représentée sous la forme d un arbre de dérivation.

11/22 Arbre de dérivation Un arbre de dérivation est défini de la manière suivante : les sommets sont étiquetés par une lettre ou par ε, les feuilles par une lettre terminale ou ε, les sommets internes par une lettre non terminale ; un sommet interne étiqueté X a pour fils (dans cet ordre) x 1,..., x n avec x i Σ N, si X x 1... x n est une règle de production de la grammaire. Un arbre de dérivation est traditionnellement dessiné la racine en haut. ur un tel arbre dessiné, le mot dérivé s obtient en concaténant les étiquettes des feuilles de gauche à droite.

12/22 Exemple Arbre de dérivation du mot (())() : ( ) ( ) ( ) ε ε Remarque : deux dérivations peuvent être associées au même arbre de dérivation (les règles de productions peuvent être appliquées dans un ordre différent).

13/22 Autre exemple Certains mots peuvent s obtenir par plusieurs arbres de dérivations, comme par exemple le mot : ()()(). ( ) ( ) ε ( ) ( ) ( ) ( ) ε ε ε ε ε

14/22 Langages algébriques Le langage engendré par une grammaire algébrique (Σ, N, P, ) est l ensemble des mots de Σ qui se dérive de par la grammaire. Exemple : le langage des mots bien parenthésés est engendré par la grammaire G bp. Un langage est dit algébrique s il existe une grammaire algébrique qui l engendre. Exemple : le langage des mots bien parenthésés est un langage algébrique.

15/22 Exercice Ecrire une grammaire permettant d engendrer l ensemble des mots sur {a, b} ayant le même nombre d occurrences de a que de b. Ecrire une grammaire permettant d engendrer l ensemble des mots sur {a, b} ayant deux fois plus de a que de b.

16/22 Ambiguïté Une grammaire est ambiguë s il existe un mot qui admet deux arbres de dérivations distincts. Langage ambigu. Un langage est ambigu si toute grammaire qui l engendre est ambiguë. Théorème : Le problème de déterminer si une grammaire est ambiguë est indécidable (i.e. il n est pas possible d élaborer un algorithme qui soit capable de dire, après un temps fini, si une grammaire que l on lui soumet est ambiguë ou non.). Remarque : on peut toutefois montrer qu une grammaire donnée est ambiguë en donnant un mot engendré par cette grammaire admettant deux arbres de dérivations distincts...

17/22 Dérivation la plus à gauche On peut décider de toujours remplacer en premier la lettre non terminale la plus à gauche d une expression. Cela permet de simplifier la recherche d une dérivation entre deux mots, de montrer plus facilement qu il n y a pas de dérivation entre deux mots, ou qu il n y en a qu une seule...

18/22 Dérivation la plus à gauche Lemme : oit G = (Σ, N, P, ) une grammaire. i u 1, u 2, v sont trois mots tels que u 1 u 2 se dérivent en v, alors il existe des mots v 1 et v 2 tels que v = v 1 v 2, v 1 se dérive de u 1, et v 2 se dérive de u 2. oit G = (Σ, N, P, ) une grammaire. Une dérivation gauche d un mot v en un mot u est une suite de mots w 0,..., w n tels que u = w 0, v = w n et pour tout entier i, 0 i < n, w i = u i X i u i et w i+1 = u i v i u i avec u i Σ, (X i v i ) P, u i (Σ N). Proposition : oit G = (Σ, N, P, ) une grammaire. Pour tout mot u et v sur Σ N, si v se dérive de u alors v se dérive de u par une dérivation gauche.

19/22 Grammaires et langages reconnaissables Proposition : L union, le produit et l étoile de langages algébriques sont des langages algébriques. Pour tout langage fini, on peut donner facilement une grammaire engendrant le langage. Donc tout langage reconnaissable est un langage algébrique. La réciproque est fausse.

20/22 Grammaires linéaires Une grammaire G = (Σ, N, P, ) est dite linéaire gauche si toutes les règles de production appartiennent à N (NΣ Σ ). Une grammaire G = (Σ, N, P, ) est dite linéaire droite si toutes les règles de production appartiennent à N (Σ N Σ ). Une grammaire G = (Σ, N, P, ) est dite linéaire si toutes les règles de production appartiennent à N (Σ NΣ Σ ). Proposition : ont équivalents pour un langage L : 1. L est reconnaissable, 2. L est engendré par une grammaire linéaire gauche, 3. L est engendré par une grammaire linéaire droite.

21/22 Idée de la preuve : 1) 2) i un langage L est reconnaissable, nous avons vu précédemment comment définir des équations définissant le langage. Ces équations peuvent être vues commes des règles de grammaires linéaires droites. b A a a b B D C La grammaire associée est : A ab bd B bc C aa D ε

22/22 Idée de la preuve : 2) 1) Réciproquement, si nous avons une grammaire linéaire gauche, grâce au lemme d Arden, nous pouvons donner une expression régulière représentant le langage engendré. Ce langage est donc reconnaissable. Remarques : Pour l équivalence avec grammaire linéaire droite, il faut "lire" l automate à l envers. Attention : un langage engendré par une grammaire linéaire n est pas nécessairement reconnaissable.