Vous êtes sur la page 1sur 5

ISI

IN S T I TUT ‫الجـمـــھـورية التــــونـسـيـة‬


SUPERIEUR ‫وزارة الـتعليم العالي‬
INFORMATIQUE
‫جامــــعــة تــونــس المــنـار‬
‫الـمعھـد العـالـي لإلعـالمــيـة‬ ‫المعـھـد الـعالـي لإلعـالمـيـة‬

Année Universitaire : 2013-2014

Examen de Rattrapage
Niveau d’étude : ING 1 Semestre : 2
Matière : Techniques de compilation Date : Juin 2014
Nombre de pages : 2 Durée : 2H00
Chargé (s) de cours : Ramzi GUETARI Documents : Nonon Autorisés

EXERCICE 1 : ANALYSE SYNTAXIQUE


Considérons la grammaire hors contexte G = {{S, {S, U, V, W}, {a, b, c, d}, R} avec R :

S → UVW
U → (S) | aSb | d
V → aV | ε
W → cW | ε

a) Construire la table d'analyse prédictive de cette grammaire;

Cette grammaire n'est pas récursive à gauche et factorisé


factorisée à gauche, nul besoin de la modifier. Onn commence par calculer les PREMIERS et
SUIVANTS de chaque non terminal :

PREMIER (S) = {(, a, d} SUIVANT (S) = {), b, $}


PREMIER (U) = {(, a, d} SUIVANT (U) = {a, c, ), b, $}
$
PREMIER (V) = {ε, a} SUIVANT (V) = {c, ), b, $}}
PREMIER (W) = {ε, c} SUIVANT (W) = {), b, $}

Table prédictive

b) Donner la trace de l'analyse de la chaîne ““(dc)ac”.

Pile Input Règle


$S (dc)ac$ S → UVW
$WVU (dc)ac$ U → (S)
S)
$WV)S( (dc)ac$ Correspondance
orrespondance entre (
$WV)S dc)ac$ S → UVW
$WV)WVU dc)ac$ U→d
$WV)WVd dc)ac$ Correspondance
orrespondance entre d
$WV)WV c)ac$ V→ε
$WV)W c)ac$ W → ccW
$WV)Wc c)ac$ Correspondance
orrespondance entre c
$WV)W )ac$ W→ε
$WV) )ac$ Correspondance
orrespondance entre )
$WV ac$ V → aV
$WVa ac$ Corres
Correspondance entre a
$WV c$ V→ε
$W c$ W → ccW
$Wc c$ Correspondance
orrespondance entre c
$W $ W→ε
$ $ Acceptation

Barème :
Ex. 1 : 4 points -- Ex. 2 : 6 points -- Ex. 4 : 4 points -- Ex. 4 : 6 points1
ISI
IN S T I TUT ‫الجـمـــھـورية التــــونـسـيـة‬
SUPERIEUR ‫وزارة الـتعليم العالي‬
INFORMATIQUE
‫جامــــعــة تــونــس المــنـار‬
‫الـمعھـد العـالـي لإلعـالمــيـة‬ ‫المعـھـد الـعالـي لإلعـالمـيـة‬
EXERCICE 2 : GRAMMAIRES

1. Décrire chacun des langages engendré par les grammaires suivantes :


a) S → aSb | a
(ab)*a
b) S → aSb | ε
anbn, n ≥ 0
c) S → aSb | A A → aA | ε
a a*b , n ≥ 0
n n

d) S → AS | B A → aAc | Aa | ε B → bBb | ε
chaînes composées de 'a' et de 'c' avec un nombre de 'c' inférieur ou u égal au nombre de 'a'.
'a' Le préfixe ne
peut pas avoir plus de 'c' que de 'a' le tout se terminant par un nombre pair de b de
e) S → S and S | S or S | (S) | true | false
Les expressions boolé léennes 'true' et 'false' séparées par 'and' et 'or' avec des expression entre
paraenthèses.
f) Quelle est celle qui est récursive à gauche ?
d) et e)
g) Quelle est celle qui est récursive à droite ?
a) c) d) et e)
h) Quelle est la grammaire ambigüe ? Donner une justification.

2. Ecrire une grammaire hors contexte pour le langage défini sur Σ = {x, y, z} ; L = {w ∈ Σ* / w = xi y j z k ;
k = i - j}

S → xSz | L
L → xLy | ε

Barème :
Ex. 1 : 4 points -- Ex. 2 : 6 points -- Ex. 4 : 4 points -- Ex. 4 : 6 points2
ISI
IN S T I TUT ‫الجـمـــھـورية التــــونـسـيـة‬
SUPERIEUR ‫وزارة الـتعليم العالي‬
INFORMATIQUE
‫جامــــعــة تــونــس المــنـار‬
‫الـمعھـد العـالـي لإلعـالمــيـة‬ ‫المعـھـد الـعالـي لإلعـالمـيـة‬
EXERCICE 3 : GRAMMAIRES

Soit G1 et G2 deux grammaires hors contexte engendrant, respectivement, les langages L(G1) et L(G2). Montrer qu'il existe une grammaire hors
contexte engendrant chacun des langages suivants :

Posons G1 = ({w1, ... wk}, {S1, A1, ... Am}, S1, R1)
G2 = ({q1, ... qk}, {S2, B1, ... Bm}, S2, R2)

a) L(G1) ∪ L(G2)

La grammaire G3 qui engendre le langage L(G3) = L(G1) ∪ L(G2) est définie par :
G3 = ({q1, ... qk, w1, ... wk }, {S, S1, S2, A1, ... Am, B1, ... Bm }, S, R1 ∪ R2 ∪ {S → S1|S2}

b) L(G1) L(G2)

La grammaire G3 qui engendre le langage L(G3) = L(G1).L(G2) est définie par :


G3 = ({q1, ... qk, w1, ... wk }, {S, S1, S2, A1, ... Am, B1, ... Bm }, S, R1 ∪ R2 ∪ {S → S1S2}

c) L(G1)*

La grammaire G3 qui engendre le langage L(G3) = L(G1)* est définie par :


G1 = ({w1, ... wk}, {S1, A1, ... Am}, S, R1 ∪ {S → ε | S1S)

Barème :
Ex. 1 : 4 points -- Ex. 2 : 6 points -- Ex. 4 : 4 points -- Ex. 4 : 6 points3
ISI
IN S T I TUT ‫الجـمـــھـورية التــــونـسـيـة‬
SUPERIEUR ‫وزارة الـتعليم العالي‬
INFORMATIQUE
‫جامــــعــة تــونــس المــنـار‬
‫الـمعھـد العـالـي لإلعـالمــيـة‬ ‫المعـھـد الـعالـي لإلعـالمـيـة‬
EXERCICE 4
Les instructions dans le langage Lisp sont des listes imbriquées. Chaque liste contient des atomes ou des listes. Les atomes sont entre
parenthèses. Les parenthèses de chacune des instruction sont, bien évidemment équilibrés. Exemple d'instruction Lisp, en considérant l'unique
atome "a" :

( (a a) (a)) (a (a a) (a a a))

1. Si on considère que l'ensemble des terminaux est Vt = {(, ), a}, Construire une grammaire LL1 permettant d'engendrer ce langage. donner sa
table prédictive.

L → (S)
L → a
S → LS
S → ε

G est LL1

Calcul de PREMIERS et SUIVANTS

PREMIERS (L) = { (, a }
PREMIERS (S) = { (, a, ε }
SUIVANTS (L) = { (, a, ), $ }
SUIVANTS (S) = { ) }

Table

a ( )
L L→a L → (S)
S S → LS S → LS S→ε

2. Transformer la grammaire en schéma de traduction permettant l'impression numérotée et indentée d'une instruction. Voir l'exemple suivant :

Exemple : Pour la liste ( ( x y ) x ( y ) ( y ( x y ) ) ), l’impression doit donner :

1. (
1.1 (
1.1.1 : x
1.1.2 : y
)
1.2 : x
1.3 (
1.3.1 y
)
1.4 (
1.4.1 : y
1.4.2 (
1.4.2.1 : x
1.4.2.2 : y
)
)
)

L’algorithme est quasiment donné dans l’exemple. Les opérations sont simples et basiques. Il s’agit d’avoir un attribut hérité (que j’ai
nommé dewey dans le schéma de traduction) qui représente le numéro de Dewey à imprimer. L’évolution de cette chaine se fait
comme suit :

Au départ, il vaut 0 (avant la création d’un niveau) chaque fois qu’on crée une nouvel item à un niveau donné il est incrémenté de 1.
La création d’un item se fait par les règles de production L → … Le mécanisme est el même pour les sous listes. Chaque fois qu’on
remonte d’un niveau, on soustrait la dernière partie du numéro de Dewey à la chaine.
L’attribut hérité dewey est la concaténation des valeurs de tous les niveaux séparés par un point.

Barème :
Ex. 1 : 4 points -- Ex. 2 : 6 points -- Ex. 4 : 4 points -- Ex. 4 : 6 points4
ISI
IN S T I TUT ‫الجـمـــھـورية التــــونـسـيـة‬
SUPERIEUR ‫وزارة الـتعليم العالي‬
INFORMATIQUE
‫جامــــعــة تــونــس المــنـار‬
‫الـمعھـد العـالـي لإلعـالمــيـة‬ ‫المعـھـد الـعالـي لإلعـالمـيـة‬
L’ → { L.str := ""; L.level := 0 } L

L → { L.level++; L.str := L.str + itoa (L.level) + "." }


( { S.level := 0 ; S.str := L.str }
S
) { L.str := substr (L.str, pos, strlen (L.str)) }
L → { L.level++; L.str = L.str + itoa (L.level) + "." }
a { print (L.str + " : " + a; L.str = substr (L.str, pos, strlen (L.str)) }
S → { L.str := S.str; L.level = S.level} L { S1.str = L.str; S1.level = L.level } S1
S → ε

Barème :
Ex. 1 : 4 points -- Ex. 2 : 6 points -- Ex. 4 : 4 points -- Ex. 4 : 6 points5

Vous aimerez peut-être aussi