CTC Departamento de Informática e Estatística – INE

Propaganda
Universidade Federal de Santa Catarina – UFSC
Centro Tecnológico – CTC
Departamento de Informática e Estatística – INE
Linguagens Formais e Compiladores – INE5317
Professor Ricardo Silveira Azambuja
Alunos: Gustavo Henrique Nihei
Léo Willian Kölln
0513222-3
0513227-4
Lista de Exercícios n.º 2
1. Construir GLCs e autômatos de pilha para as seguintes linguagens:
a) L={ w|w possui aaa como subpalavra}
G = ({S, A}, {a, b}, P, S)
P:
S → aaa | AaaaS | aaaAS
A → aA | bA | ε
Autômato de Pilha:
M = ({a, b}, {q0, qf}, F, q0, {qf}, {1, 2, 3})
F(q0, a, ε) = {(q0, 1)}
F(q0, a, 1) = {(q0, 2)}
F(q0, a, 2) = {(q0, 3)}
F(q0, b, ε) = {(q0, ε)}
F(q1, ?, 3) = {(qf, ε)}
b) L={uanvanw | n ∈ {1,2}, u, v, w são palavras de {a,b}* e |u| = |v| = 5}
G = ({S, A, B, C, D, U, W}, {a, b}, P, S)
P:
S → UaUaW | UaaUaaW
U → aA | bA
A → aB | bB
B → aC | bC
C → aD | bD
D→a|b
W → aW | bW | ε
Autômato de Pilha:
M = ({a, b}, {q0, q1, q2, q3, q4, qf}, F, q0, {qf}, {1, 2, 3, 4, 5, X})
F(q0, ε, ε) = {(q1, 5)}
F(q1, a, 5) = {(q1, 4)}
F(q1, a, 4) = {(q1, 3)}
F(q1, a, 3) = {(q1, 2)}
F(q1, a, 2) = {(q1, 1)}
F(q1, a, 1) = {(q1, ε)}
F(q1, b, 5) = {(q1, 4)}
F(q1, b, 4) = {(q1, 3)}
F(q1, b, 3) = {(q1, 2)}
F(q1, b, 2) = {(q1, 1)}
F(q1, b, 1) = {(q1, ε)}
F(q1, a, ?) = {(q2, X)}
F(q2, a, ε) = {(q3, X)}
F(q3, a, ε) = {(q3, 5)}
F(q3, a, 5) = {(q3, 4)}
F(q3, a, 4) = {(q3, 3)}
F(q3, a, 3) = {(q3, 2)}
F(q3, a, 2) = {(q3, ε)}
F(q3, b, ε) = {(q3, 5)}
F(q3, b, 5) = {(q3, 4)}
F(q3, b, 4) = {(q3, 3)}
F(q3, b, 3) = {(q3, 2)}
F(q3, b, 2) = {(q3, ε)}
F(q3, a, X) = {(q4, ε)}
F(q4, a, X) = {(q4, ε)}
F(q4, ε, ?) = {(qf, ε)}
F(qf, a, ε) = {(qf, ε)}
F(qf, b, ε) = {(qf, ε)}
c) L={w|w é expressão regular sobre alfabeto {x}}
G = ({S}, {(,+, *, ), x}, P, S)
P:
S → Sx | S+S | S* | (S) | ε
Autômato de Pilha:
M = ({(, +, *, ), x}, {q0, q1, qf}, F, q0, {qf}, {X, P})
F(q0, x, ε) = {(q0, X)}
F(q0, (, ε) = {(q0, P)}
F(q0, +, X) = {(q0, X)}
F(q0, *, X) = {(q0, ε)}
F(q0, x, ε) = {(q1, ε)}
F(q0, ε, ε) = {(q1, ε)}
F(q1, x, X) = {(q1, ε)}
F(q1, ), P) = {(q1, ε)}
F(q1, ?, ?) = {(qf, ε)}
2. Obtenha autômatos de pilha que reconheçam as seguintes linguagens:
a) L={anb2ncmdm+2 | n é maior ou igual a zero e m é maior ou igual a 1}
G = ({S, A, B, C}, {a, b, c, d}, P, S)
P:
S → Abdd
A → aAbb | ε
B → cCd
C → cCd | ε
M = ({a, b, c, d}, {q0, q1, q2, q3, q4, qf}, F, q0, {qf}, {A, B})
F(q0, a, ε) = {(q0, A)}
F(q0, ε, ε) = {(q1, ε)}
F(q1, b, A) = {(q1, B)}
F(q1, b, B) = {(q1, ε)}
F(q1, ε, ?) = {(q2, ε)}
F(q2, c, ε) = {(q2, A)}
F(q2, ε, A) = {(q3, A)}
F(q3, d, A) = {(q3, ε)}
F(q3, ε, ε) = {(q4, ε)}
F(q4, d, ε) = {(q4, B)}
F(q4, d, B) = {(q4, ε)}
F(q4, ?, ?) = {(qf, ε)}
b) L={aibnci | i > 0, n é maior ou igual a 1}
G = ({S, A, B}, {a, b, c}, P, S)
P:
S → aSc | A
A → bB
B → bB | ε
M = ({a, b, c}, {q0, q1, q2, qf}, F, q0, {qf}, {X, A, B})
F(q0, a, ε) = {(q0, X)}
F(q0, ε, ε) = {(q1, A)}
F(q1, b, A) = {(q1, B)}
F(q1, b, B) = {(q1, B)}
F(q1, ε, B) = {(q2, ε)}
F(q2, c, X) = {(q2, ε)}
F(q2, ?, ?) = {(qf, ε)}
3. Construa os autômatos de pilha equivalentes as gramáticas abaixo:
a) G = ({S, B, C}, {a, b}, P, S)
P: S → aB | aC
B → aBC | aCC | b
C → bB
M = ({a, b}, {q0, q1, qf}, F, q0, {qf}, {S, B, C})
F(q0, ε, ε) = {(q1, S)}
F(q1, a, S) = {(q1, B)}
F(q1, a, S) = {(q1, C)}
F(q1, a, B) = {(q1, BC)}
F(q1, a, B) = {(q1, CC)}
F(q1, b, B) = {(q1, ε)}
F(q1, b, C) = {(q1, B)}
F(q1, ?, ?) = {(qf, ε)}
b) G = ({E,T,P}, {(,a,t,+,*,-,?,), P, E)
P: E → (EP | at | a
T → +E | *E| -E | /E
P→)
Gramática simplificada na FNG:
G = ({E, P}, {(, a, t, )}, P, E)
P:
E → (EP | aB | a
B→t
P→)
M = ({(, a, t, )}, {q0, q1, qf}, F, q0, {qf}, {S, B, P})
F(q0, e, e) = {(q1, S)}
F(q1, (, S) = {(q1, SP)}
F(q1, a, S) = {(q1, B)}
F(q1, a, S) = {(q1, ε)}
F(q1, t, B) = {(q1, ε)}
F(q1, ), P) = {(q1, ε)}
F(q1, ?, ?) = {(qf, ε)}
4. Para a gramática:
G = ({S, A}, {a, b}, P, S)
P: S → bAS | a
A → SaA | SS | ab
a) obtenha a árvore de derivação de sentença “bbabaaabbaba”
b) descreva qual a linguagem gerada pela gramática
L = {w | w ∈ {a,b}* e a quantidade de a's é maior ou igual a quantidade de b's. Além disso, a
palavra ou é iniciada com b, ou |w| = 1}
c) obtenha as árvores de derivação para outras sentenças quaisquer
bbbbabaaaaaaaba
5. Eliminar símbolos inúteis, produções simples, recursão à esquerda da gramática:
G = ({S, A, B, C}, {a, b, c}, P, S)
P: S → aBa | A
A → aA | a | B | Sa
B → bB | b | C
C → cC | abC
* Símbolos Inúteis
Não há símbolos inúteis
* Produções Simples
P':
S → aBa | aA | a | Sa | bB | b | cC | abC
A → aA | a | Sa | bB | b | cC | abC
B → bB | b | cC | abC
C → cC | abC
* Recursões à Esquerda
P'':
A1 → aA3a | aA2 | a | bA3 | b | cA4 | abA4 | aA3aB | aA2B | aB | bA3B | bB | cA4B |
abA4B
B → a | aB
A2 → aA2 | a | bA3 | b | cA4 | abA4 | aA3aa | aA2 | aa | bA3a | ba | cA4a | abA4a | aA3aBa
| aA2Ba | aBa | bA3Ba | bBa | cA4Ba | abA4Ba
A3 → bA3 | b | cA4 | abA4
A4 → cA4 | abA4
G = ({A1, A2, A3, A4, B}, {a, b, c}, P'', A1)
6. Colocar a GLC nas formas normais de Chomsky e Greibach:
G = ({S, A, B}, {a, b, c}, P, S)
P: S → AB
A → aBc | a
B → bSa | b
* Chomsky
GFNC = ({S, A, A1, B, B1, X, Z}, {a, b, c}, PFNC, S)
PFNC:
S → AB
A → XA1 | a
A1 → BZ
B → YB1 | b
B1 → SX
X→a
Z→c
* Greibach
GFNG = ({A1, A2, A3, B, C, D}, {a, b, c}, PFNG, A1)
PFNG:
A1 → aA3B | aA3
A2 → aA3C | a
A3 → bA1D | b
B → cA3
C→c
D→a
7. Considerando a GLC a seguir:
G = ({S, A, B, C}, {a, b}, P, S)
P: S → A | B | AB
A → aB | bS | b
B → bB | Ba | c
C → AS | AB | b
a) Eliminar símbolos inúteis.
Não há símbolos inúteis.
b) Eliminar produções simples da gramática obtida no item anterior.
G = ({S, A, B, C}, {a, b, c}, P', S)
P':
S → aB | bS | b | bB | Ba | c | AB
A → aB | bS | b
B → bB | Ba | c
C → AS | AB | b
c) Eliminar recursão à esquerda da gramática do item b.
G = ({A1, A2, A3, B, A4}, {a, b, c}, P'', A1)
P'':
A1 → aA3 | bA1 | b | bA3 | A3a | c | A2A3
A2 → aA3 | bA1 | b
A3 → bA3 | c | bA3B | cB
B → a | aB
A4 → aA3A1 | bA1A1 | bA1 | aA3A3 | bA1A3 | bA3 | b
d) Colocar na FNC
GFNC = ({S, A, B, C, X, Y, Z}, {a, b, c}, PFNC, S)
PFNC:
S → XB | YS | b | YB | BX | c | AB
A → XB | YS | b
B → YB | BX | c
C → AS | AB | b
X→a
Y→b
Z→c
e) Colocar na FNG
GFNG = ({A1, A2, A3, A4, B, X}, {a, b, c}, PFNG, A1)
PFNG:
A1 → aA3 | bA1 | b | bA3 | c | bA3X | cX | bA3BX | cBX | aA3A3 | bA1A3 | bA3
A2 → aA3 | bA1 | b
A3 → bA3 | c | bA3B | cB
B → a | aB
A4 → aA3A1 | bA1A1 | bA1 | aA3A3 | bA1A3 | bA3 | b
X→a
8. Simplificar a gramática:
G = ({S, A, B, C}, {a, b, c}, P, S)
P: S → aA | aB | C
A → CA | a
B → bB | bC
C → aC | c
G = ({S, A, B, C}, {a, b, c}, P', S)
P':
S → aA | bB | aC | c
A → CA | a
B → bB | bC
C → aC | c
Download