algorithmique is very good, Exercises of Law of Obligations

is very competitive and very good

Typology: Exercises

2021/2022

Uploaded on 11/30/2022

RedaOu
RedaOu 🇲🇦

1 document

1 / 3

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
TD3 : Transformation de grammaires
29 septembre 2015
1. Soit le langage L1sur le vocabulaire V= {l’,homme,ours,qui,a,vu} formé de l’ensemble des
phrases finies de la forme l’homme qui a vu l’ours,l’homme qui a vu l’homme qui a vu l’ours,
l’homme qui a vu l’homme qui a vu . . . qui a vu l’ours.
Donner une grammaire algébrique (context-free) engendrant L1.
2. Transformer en forme normale de Greibach la grammaire suivante (qui est déjà non récursive
gauche) : SAa |b
AbdC |cC
CcC |adC |c|ad
Solution: La grammaire de départ est déjà non récursive gauche. On obtient l’ordre partiel
S < A. Arbitrairement on le rend total par exemple avec S<A<C .
La règle SAa est changée en SbdCa|cCa La suite est triviale : il ne reste plus de règles
dont la partie droite commence par un non terminal. Les terminaux en position non initiale de
partie droite sont changés en non terminaux équivalents (i.e. produisant le terminal équivalent
seul : Ww).
1SbDCA0|cCA0|b
Dd
A0a
2AbDC |cC
3CcC |aDC |c|aD
3. Appliquer l’algorithme de dé-récursivation (gauche) vu en cours à la grammaire suivante, gram-
maire de la liste :
S(L)|a
LL, S |S
Solution: On a une seule règle récursive gauche (directe) et aucune indirecte. À la place du
couple règle récursive gauche LL, S plus règle de terminaison de la récursion LS, on
commence par dériver la terminaison par S avec la nouvelle règle LSL0puis c’est L0qui
capte la récursion L0, SL0ou bien termine L0ε.
4. Soit la grammaire suivante : S−→ aSbS |bSaS |ε.
(a) Donner l’algorithme permettant de rendre ε-libre une grammaire algébrique quelconque.
Solution:
1. On construit A={AV/A +
ε}.
2. On supprime toutes les règles Aε.
1
pf3

Partial preview of the text

Download algorithmique is very good and more Exercises Law of Obligations in PDF only on Docsity!

TD3 : Transformation de grammaires

29 septembre 2015

  1. Soit le langage L 1 sur le vocabulaire V = {l’, homme, ours, qui, a, vu} formé de l’ensemble des phrases finies de la forme l’homme qui a vu l’ours, l’homme qui a vu l’homme qui a vu l’ours, l’homme qui a vu l’homme qui a vu... qui a vu l’ours. Donner une grammaire algébrique (context-free) engendrant L 1.
  2. Transformer en forme normale de Greibach la grammaire suivante (qui est déjà non récursive gauche) : S → Aa | b A → bdC | cC C → cC | adC | c | ad Solution: La grammaire de départ est déjà non récursive gauche. On obtient l’ordre partiel S < A. Arbitrairement on le rend total par exemple avec S < A < C. La règle S → Aa est changée en S → bdCa|cCa La suite est triviale : il ne reste plus de règles dont la partie droite commence par un non terminal. Les terminaux en position non initiale de partie droite sont changés en non terminaux équivalents (i.e. produisant le terminal équivalent seul : W → w). 1 S → bDCA′^ | cCA′^ | b D → d A′^ → a 2 A → bDC | cC 3 C → cC | aDC | c | aD
  3. Appliquer l’algorithme de dé-récursivation (gauche) vu en cours à la grammaire suivante, gram- maire de la liste : S → ( L ) | a L → L, S | S

Solution: On a une seule règle récursive gauche (directe) et aucune indirecte. À la place du couple règle récursive gauche L → L, S plus règle de terminaison de la récursion L → S, on commence par dériver la terminaison par S avec la nouvelle règle L → SL′^ puis c’est L′^ qui capte la récursion L′^ →, SL′^ ou bien termine L′^ → ε.

  1. Soit la grammaire suivante : S −→ aSbS | bSaS | ε. (a) Donner l’algorithme permettant de rendre ε-libre une grammaire algébrique quelconque.

Solution:

  1. On construit A = {A ∈ V /A −→+ ε}.
  2. On supprime toutes les règles A → ε.
  1. Pour toute règle B −→ α 0 A 0 α 1 A 1 ...αn où les Ai appartiennent à l’ensemble A, on remplace la règle par toutes les règles B −→ σ(α 0 A 0 α 1 A 1 ...αn) où σ(m) est l’ensemble de toutes les combinaisons où les Ai sont remplacés ou non par ε.
  2. Si S ∈ A, ajouter S′^ dans V , et S′^ −→ S | ε dans P , et remplacer l’axiome S par S′.

(b) Appliquer l’algorithme à la grammaire donnée ci-dessus.

Solution: S′^ → S | ε S → aSbS | bSaS | ab | ba | aSb | abS | bSa | baS

  1. Transformer la grammaire suivante en grammaire sans règles singulières :

S → AB | A ; A → aB | bA | aSb ; B → S | b

Solution: S → AB | aB | bA | aSb ; A → aB | bA | aSb ; B → AB | aB | bA | aSb | b

  1. Enlever la récursivité gauche de la grammaire suivante :

E → Ea | b

Solution: E → bE′ E′^ → aE′^ | ε

  1. Mettre sous forme normale de Chomsky la grammaire définie par les règles de production suivantes : S → AB | aS | a A → Ab | ε B → AS Solution: Il faut commencer par rendre la grammaire ε-libre, ce qui est assez simple dans ce cas particulier, puisque seul A est susceptible de s’effacer :

S → AB | aS | a A → Ab | ε B → AS

S′^ → S | ε S → AB | (ε)B | aS | a A → Ab | (ε)b B → AS | (ε)S

S′^ → S | ε S → AB | B | aS | a A → Ab | b B → AS | S Il faut ensuite débarrasser la grammaire des productions singulières, qui sont exclues dans une grammaire quadratique. L’algorithme général est le suivant :

  1. Partir d’une grammaire ε-libre.
  2. Pour tout A ∈ V , construire NA = {B ∈ V / A −→∗ B}
  3. Soit P l’ensemble initial de règles ; on construit P ′^ le nouvel ensemble de productions de la manière suivante : (a) Ajouter dans P ′^ toutes les règles non singulières de P. (b) Pour toute règle B −→ α de P ′^ (non singulière par hypothèse), pour tout A ∈ V tel que B ∈ NA, ajouter A −→ α à P ′.

Page 2