Vous êtes sur la page 1sur 3

Université A/ Mira de Béjaia.

Février 2021
Département d’informatique
3eme année Licence académique
Module Compilation

Corrigé de la Série TD N° 02

Exercice 01
Considérons la grammaireG2 :
𝑆 → 𝑎𝑏𝑐𝑆 / 𝑎𝑏𝑑𝐴 / 𝑎𝑏𝑑𝐴𝑆𝑐
𝐴 → 𝐴𝑎 / 𝐴𝑏 / 𝑐 / 𝜀 / 𝐴𝑏𝑆
- Factoriser G
- Eliminer la récursivité à gauche

G’’ :

S →ab S’
Factorisation Factorisation
G’ :
G’ : de G
S’→ cS / dAS’’
de G’
S →ab S’
S →abc S / abdA / abdASc S’’ → Ɛ / Sc
S’→cS / dA / dASc
A→Aa / Ab / c / Ɛ / AbS A→A A’/ c / Ɛ
A→A A’/ c / Ɛ
A’→a / bA’’
A’→a / b / bS
A’’ → Ɛ / S

G’’’ :

S →ab S’ Enlever la récursivité à gauche

S’→ cS / dAS’’

S’’ → Ɛ / Sc

A→ c D / D

D →A’ D / Ɛ

A’→a / bA’’

A’’ → Ɛ / S
Université A/ Mira de Béjaia. Février 2021
Département d’informatique
3eme année Licence académique
Module Compilation

Exercice 02
Eliminer la récursivité à gauche des grammaires :
G3:𝑇 → 𝑇𝑡𝑡/ 𝐸𝑡𝑠 / 𝑟𝑡
𝐸 → 𝐸𝑡 / 𝐸𝑇𝑟 / 𝑐 / 𝜀

G3 : Enlever la récursivité les deux


G3’ :
récursivités directes
T →Ttt / Ets / rt T →Ets T’ / rt T’

E→Et / ETr / c / Ɛ T’→ ttT’ / Ɛ

E→ c E’ / E’

E’→ tE’ / TrE’ / Ɛ

Apparition d’une récursivité indirecte T →E→E’→T

Remplacer E’ dans E : E→cE’ / tE’ / TrE’ / Ɛ

Remplacer E dans T : T→ cE’ ts T’ / tE’ ts T’ / TrE’ ts T’ / ts T’ / rtT’

Enlever la récursivité directe dans T :

T→ cE’ ts T’ X / tE’ ts T’ X / ts T’ X / rtT’ X

X→ rE’ ts T’ X /Ɛ

Enlever la récursivité directe dans T :

T→ cE’ ts T’ X / tE’ ts T’ X / ts T’ X / rtT’ X

X→ rE’ ts T’ X /Ɛ

Résultat : Résultat final:

T→ cE’ ts T’ X / tE’ ts T’ X / ts T’ X / rtT’ T→ cE’ ts T’ X / tE’ ts T’ X / ts T’ X / rtT’


X X

X→ rE’ ts T’ X /Ɛ X→ rE’ ts T’ X /Ɛ

T’→ ttT’ / Ɛ inaccessible E→cE’ / tE’ / TrE’ / Ɛ

E→cE’ / tE’ / TrE’ / Ɛ E’→ tE’ / TrE’ / Ɛ

E’→ tE’ / TrE’ / Ɛ


Université A/ Mira de Béjaia. Février 2021
Département d’informatique
3eme année Licence académique
Module Compilation

G4: 𝑇 → 𝑇𝑟/ 𝑟𝑠 / 𝑡𝑠𝐸


𝐸 → 𝐸𝑣 / 𝑇𝐸𝑟 / 𝑘𝐸

G4 : G4’ :
Enlever la récursivité les deux
T →Tr / rs / tsE récursivités directes T →rs T’ / tsE T’

E→Ev / TEr / kE T’→ rT’ / Ɛ

E→ Ter E’ / kE E’

E’→ vE’ / Ɛ

G5 :𝑇 → 𝑅𝑎/ 𝑟𝑠𝐸

𝐸 → 𝑅𝑣 / 𝑟𝑣 / 𝑇𝑘𝑡
𝑅 → 𝐸𝑡 / 𝑟𝑣 / 𝜀
Enlever la récursivité indirecte : T→R→E→T

Remplacer E dans R : R→ Rv t / rv t/ Tkt t /rv /Ɛ

Apparition d’une récursivité directe au niveau de R

Enlever la récursivité directe dans R avant de le remplacer dans T :

R→ rv t X/ Tkt t X /rv X / X

X→ vt X/ Ɛ

Remplacer R dans T : T→ rv t X a/ Tkt t X a/rv X a / X a / rsE

Apparition d’une récursivité directe .

Enlever la récursivité directe dans T :

T→ rv t X a Y/rv X a Y / X a Y / rsE Y

Y → kt t X a Y / Ɛ

Résultat :

T→ rv t X a Y/rv X a Y / X a Y / rsE Y

Y → kt t X a Y / Ɛ

E→Rv / rv / Tkt

R→ rv t X/ Tkt t X /rv X / X

X→ vt X/ Ɛ

G6: Il n’existe aucune récursivité à gauche.

Vous aimerez peut-être aussi