IFT 313 Introduction aux langages formels ric Beaudry
IFT 313 – Introduction aux langages formels Éric Beaudry Département d’informatique Université de Sherbrooke Exercices sur les grammaires et les automates à pile
Exercice 1 - Questions : a. Donnez une un automate à pile déterministe acceptant le langage L(M) = {wc+w. R | w est un mot du langage décrit par l’expression régulière (a|b)*} b. Donnez une grammaire acceptant le même langage. - Réponses : b) G = (V, A, R, S) tel que : a) M = (S, V, T, R, s, {p}, $), tel que : • S = {s, p, q} • V = {A, B} • T = {a, b, c} • R = { (s, a, ε) (s, A), (s, b, ε) (s, B), (s, c, ε) (p, ε), (p, a, A) (q, ε), (p, b, B) (q, ε), (q, a, A) (q, ε), (q, b, B) (q, ε), } V = {S, C} A = {a, b, c} R = { S a. Sa , S b. Sb, S C, C c. C, C c }
Exercice 2 - Question : Donnez une grammaire régulière générant le langage décrit par l’expression régulière a*bc+, sur l’alphabet {a, b, c, d}. G 1 = ({C, S}, {a, b, c, d}, R 1, S) G 2 = ({A, C, S}, {a, b, c, d}, R 2, S) R 1 = {S a. S , S b. C, C c. C, C c} R 2 = {S Cc , C Cc, C Ab, A Aa, A ε } La grammaire G est régulière droite parce que toutes les règles ont la forme A x. A ou A x, où A est un non terminal et x une suite de zéro ou plusieurs terminaux. La récursivité est à droite. La grammaire G est régulière gauche parce que toutes les règles ont la forme A Ax ou A x, où A est un non terminal et x un terminal. La récursivité est à droite.
Exercice 3 - Questions : a. Décrivez le langage généré par la grammaire G = ({S, A}, {a, b}, R, S), tel que R = { S AS , A a , S b } b. Est-ce que la grammaire est régulière? c. Est-ce que le langage accepté par la grammaire est régulier? Si oui, donnez l’expression régulière correspondante. Si non, expliquez pourquoi. - Réponses : a. Chaînes de ‘a’ terminés par un seul b. b. Non. c. Oui, le langage est régulier : a*b.
Exercice 3 (suite) - Conclusion : - Les grammaires réguliers génèrent des langages réguliers. - Mais il peut y avoir aussi des grammaires non régulières qui génèrent un langage régulier. - Dans ce dernier cas, on peut trouver une grammaire régulière qui accepte le même langage. Ceci est vrai parce que tout langage régulier est généré par une grammaire régulière.
Exercice 4 - Questions : a. Donnez un automate à pile non déterministe qui accepte le langage généré par la grammaire : G = ({S, A}, {a, b}, R, S), tel que : R = { S AS , A a , S b } b. Même question mais avec un automate à pile déterministe. - Réponse : a. La grammaire génère le langage a*b. M = ({s, p}, {a, b}, R, s, {p}, $) : • R = { (s, a, ε) (s, ε), (s, b, ε) (p, ε)} b. Même solution qu’au point a. Rappel: l’ensemble des automates non déterministes inclut le sous-ensemble des automates déterministe.
Exercice 5 - Question : Soient les langages générés par une grammaire G dont les productions ont une des formes suivantes : A w. A, A Aw, A ε où A est un non terminal quelconque et w est une chaine de terminaux. Est-ce que la classe de ces langages coïncide avec la classe des langages réguliers ? - Réponse : Non. La grammaire S a. B , B Sb, S ε est de la forme proposée et génère le langage anbn qui n’est pas régulier.
Exercice 6 - Question : Soit L un langage hors contexte quelconque. Le langage LR contenant les mots de L renversés est-il toujours hors contexte? Justifier. - Réponse : Oui. La grammaire pour le langage LR en inversant les parties droites des règles de production.
Exercice 7 Soit la grammaire G=(V, A, Enonce, R), où A = {if, else, ==, id, =, num } V = {Enonce, Enonce. IF, Assign, Cond} R = {Enonce Enonce. IF | Assign Enonce. IF if Cond Enonce else Enonce Cond id == id Assign id = num } a) Donner un mot du langage b) Est-ce que la grammaire G est ambiguë? Justifiez. c) Si oui, comment régler le problème?
Exercice 7 (réponses) a) • • • Exemple de mots du langage : if a==b c=1 if a==a b=1 else c=1 if a==a if b==1 else c=1 else d=1 …
Exercice 7 (réponses) b) Est-ce que la grammaire G est ambiguë? Oui. La chaîne « if a==a if b==b c=1 else d=1 » possède deux arbres de dérivation possibles. IF IF a==a b==b if a==a { if b==b c=1 else d=1 } a==a IF c=1 d=1 b==b if a==a { if b==b c=1 }else d=1 IF c=1 d=1
Exercice 7 (réponses) c) Comment résoudre le problème? 1)Nous verrons plus tard qu’il est parfois possible de transformer une grammaire ambigüe en une grammaire non ambigüe. 2) Selon la méthode d’analyse lexicale utilisée, il est possible de donner une priorité à une dérivation. Ici, un else pourrait être associé au dernier if. 3) En dernier recours, il est possible de modifier le langage. Par exemple, on pourrait forcer l’usage d’accolades {} ou même forcer que tout if ait une partie else.
Exercice 8 Soit l’automate à pile M=({p, q, r}, {A, B}, {a, b, c}, R, p, {r}, $), R={ (p, a, ε) (p, AA), (p, b, ε) (p, BB), (p, c, ε) (q, ε), (q, a, ε) (q, A), (q, b, ε) (q, B), (q, c, ε) (r, ε), (r, a, A) (r, ε), (r, b, B) (r, ε), } a) Donnez la trace d’exécution des chaînes: cabcba acbcbaa aaccaaa b) Décriver la langage accepté c) Donner une grammaire qui accepte le même langage.
Exercice 8, a) (réponse) Trace de «cabcba» : (p, cabcba$, $) (q, bcba$, $A) (q, cba$, $AB) (r, a$, $A) (r, $, $) chaîne acceptée Trace de «acbcbaa» : (p, acbcbaa$, $) (p, cbcbaa$, $AA ) (q, cbaa$, $AAB) (r, aa$, $AA) (r, a$, $A) (r, $, $) chaîne acceptée M=({p, q, r}, {A, B}, {a, b, c}, R, p, {r}, $), R={ (p, a, ε) (p, AA), (p, b, ε) (p, BB), (p, c, ε) (q, ε), (q, a, ε) (q, A), (q, b, ε) (q, B), (q, c, ε) (r, ε), (r, a, A) (r, ε), (r, b, B) (r, ε), } Trace de «aaccaaa» : (p, aaccaaa$, $) (p, accaaa$, $AA) (p, ccaaa$, $AAAA) (q, caaa$, $AAAA) (r, aa$, $AAA) (r, a$, $AA) (r, $, $A) La chaîne est lue, mais la pile n’est pas vide. Donc la chaîne est refusée.
Exercice 8, b) (réponse) • Le langage peut être plus facile à comprendre sous forme graphique. a, ε/AA p b, ε/BB • • a, ε/A c, ε/ε q b, ε/B Une chaine ayant la forme : ucwcw. Rv. R u et w dans [ab]* |u| = |v| * 2 v 2 i = v 2 i+1 = ui a, A/ε c, ε/ε r b, B/ε
Exercice 8, c) (réponse) • Le langage peut être plus facile à comprendre sous forme graphique. G=( {S, T}, {a, b, c}, R, S) R={ S a. Saa S b. Sbb S c. T T a. Ta T b. Tb T c }
- Slides: 16