Grammaires et Langages DS

Transcription

Grammaires et Langages DS
INSA de Lyon
4IF
Année scolaire 2014-2015
GL - DS
Grammaires et Langages
DS
Jeudi 2 avril 2015 - Durée : 1h30 - Documents autorisés
Répondre directement sur le sujet à toutes les questions dans les cases prévues à cet effet
1
Automate fini et expressions régulières (6 pts)
Dans l’expression régulière suivante, le ou est indiqué par le symbole | et le symbole ∗ indique de zéro à
plusieurs répétitions (étoile de Kleene). Utiliser la même notation dans vos réponses.
Soit l’expression régulière E = abc(a*|b)a.
Dériver successivement l’expression afin de trouver l’automate déterministe de manière directe. Correction :
— Da (E) = bc(a∗ |b)a = F
— Db (F ) = c(a∗ |b)a = G
— Dc (G) = (a∗ |b)a = H
— Db (H) = a = I
— Da (I) = = J
— Da (H) = a∗ = K
— Da (K) = a∗ = K
Et l’automate associé :
b
E
a
F
b
G
c
H
a
I
a
J
a
K
Eric Guérin
[email protected]
19 avril 2015
1/4
Année scolaire 2014-2015
GL - DS
INSA de Lyon
4IF
Donner l’automate fini non-déterministe associé à E (construction de Thompson). Correction :
ε
abc
0
ε
1
2
a
3
ε
ε
4
ε
ε
b
a
6
7
5
Donner la version déterministe de cet automate (chaque état de cet automate donnera l’ensemble des états de
l’automate précédent) Correction :
5,6
a
7
b
0
abc
a
1,2,3,4,6
a
2,3,6,7
2/4
19 avril 2015
Eric Guérin
[email protected]
INSA de Lyon
4IF
2
Année scolaire 2014-2015
GL - DS
Analyse prédictive (6 pts)
Voici la grammaire qui permet de décrire une grammaire formelle hors-contexte :
G
G
R
L
L
L
→
→
→
→
→
→
RpG
nf L
nL
tL
Les symboles terminaux sont les suivants : n, t, p et f . G symbolise la grammaire, R une règle, et L une liste
de symboles terminaux (t) ou non-terminaux (n). f est une flèche et p un séparateur de type point-virgule. Le
symbole indique le mot vide (epsilon production).
Indiquer l’ensemble des nuls N de cette grammaire ainsi que pour chaque symbole non terminal l’ensemble
des premiers P et des suivants S (on représentera la fin d’un mot par le symbole $).
N = {G, L}
P(G) = { n, }
P(R) = { n }
P(L) = { n, t, }
S(G) = { $ }
S(R) = { p }
S(L) = { p }
Compléter sa table d’analyse LL(1) :
— indiquer la partie droite de la règle
— laisser la case vide si l’automate doit se retrouver en état d’erreur
G
R
L
3
$
p
n
RpG
nf L
nL
t
f
tL
Analyse ascendante (8 pts)
La grammaire suivante est équivalente à la précédente en terme de langage produit mais plus adaptée à une
analyse ascendante :
G
G
R
L
L
L
→
→
→
→
→
→
GRp
nf L
Ln
Lt
Les symboles terminaux et non-terminaux ont la même signification que précédemment.
Recopier cette grammaire en l’augmentant et dessiner son automate LR(0) Correction :
Eric Guérin
[email protected]
19 avril 2015
3/4
Année scolaire 2014-2015
GL - DS
INSA de Lyon
4IF
Correction :
$
E1
A→•G
G →•G R p
G →•
G
E2
A→G •
G →G • Rp
R →•nf L
R
n
Accept
E4
G →G R • p
E3
R →n • f L
p
f
E5
G →G Rp•
E6
R →nf • L
L→•Ln
L→•Lt
L→•
L
E7
R →nf L•
L→L • n
L→L • t
n
t
E8
L→Ln•
E9
L→Lt•
Identifier les états en conflit et calculer les symboles suivants de G, R et L. Correction :
Etats E1 , E2 , E6 et E7 . S(G) = {n, $}. S(R) = {p}. S(L) = {n, t, p}.
Donner la table d’analyse SLR(1) qui permet de résoudre les conflits obtenus précédemment.
La règle R0
$
E1
R2
E2 R0 (A)
E3
E4
E5
R1
E6
E7
E8
E9
est celle de l’axiome, les autres sont numérotées comme dans l’ordre du sujet.
p
n
t
f
G
R
L
R2
E2
E3
E4
E6
E5
R1
R6 R6 R6
E7
R3 E 8 E 9
R4 R4 R4
R5 R5 R5
Simuler l’exécution de l’automate (donner à chaque symbole lu l’état de la pile des états) sur la lecture du flux
suivant : n f n t p $.
États
E1
E1
E1 E2
E1 E2 E3
E1 E2 E3 E6
E1 E2 E3 E6
E1 E2 E3 E6 E7
E1 E2 E3 E6 E7 E8
E1 E2 E3 E6
E1 E2 E3 E6 E7
E1 E2 E3 E6 E7 E9
E1 E2 E3 E6
E1 E2 E3 E6 E7
E1 E2
E1 E2 E4
E1 E2 E4 E5
E1
E1 E2
E1 E2
4/4
Action
R2
transition G
lecture n
lecture f
R6
transition L
lecture n
R4
transition L
lecture t
R5
transition L
R3
transition R
lecture p
R1
transition G
Accept
Reste à lire
nf ntp$
nf ntp$
nf ntp$
f ntp$
ntp$
ntp$
ntp$
tp$
tp$
tp$
p$
p$
p$
p$
p$
$
$
$
$
19 avril 2015
Eric Guérin
[email protected]