Escolar Documentos
Profissional Documentos
Cultura Documentos
2.1 a. E ⇒ T ⇒ F ⇒ a
E + T
T F
F a
E + T
E + T F
T F a
F a
( E )
( E )
2.9 S → BC | AD
B → aBb | ε
C → cC | ε
A → aA | ε
D → bDc | ε
A gramática é ambígua. A cadeia abc possui duas derivações mais à esquerda:
S ⇒ BC ⇒ aBbC ⇒ abC ⇒ abcC ⇒ abc,
S ⇒ AD ⇒ aAD ⇒ aD ⇒ abDc ⇒ abc.
2.13 a. L(G) é o conjunto de cadeias de 0s e #s tais que: ou contêm exatamente dois #s e qualquer quantidade
de 0s antes e depois de cada #, ou contêm exatamente um # e a quantidade de 0s à direita de # é o
dobro da quantidade de 0s à esquerda.
b. Suponha L(G) regular e faça A = L(G) ∩ 0∗ #0∗ . Se L(G) é regular, então A é regular e satisfaz o
lema do bombeamento. Seja p o comprimento de bombeamento. Considere a cadeia s = 0p #02p ∈ A,
de comprimento |s| = 3p + 1 ≥ p. Faça s = xyz, com |xy| ≤ p e |y| > 0. Então, y deve conter
somente 0s à esquerda de #. Faça y = 0k , com 0 < k ≤ p. Temos então xz = 0p−k #02p ∈ / A, pois a
quantidade de 0s à direita do # é menor que o dobro da quantidade de 0s à esquerda, o que comtradiz
o lema do bombeamento.
2.14 S → AB | CC | BA | BD | BB | ε
A → AB | CC | BA | BD | BB
B → CC
D → AB
C→0
2.15 Seja G: S → a. Então, A = L(G) = {a} e A∗ = {an | n ≥ 0}. Seguindo a construção indicada, G′ :
S → SS | a. No entanto, L(G′ ) = {an | n > 0} 6= A∗ .
2.16 Sejam L1 e L2 LLCs arbitrárias, e G1 = (V1 , Σ, R1 , S1 ) e G2 = (V2 , Σ, R2 , S2 ) as GLCs que as geram,
respectivamente. Suponha que V1 e V2 são disjuntos (caso não sejam, mude os nomes das variáveis para
obter conjuntos disjuntos). Então, as seguintes GLCs geram L1 ∪ L2 , L1 ◦ L2 e L∗1 , respectivamente:
2.17 Seja R uma expressão regular sobre um alfabeto Σ. Mostramos como construir uma GLC G equivalente a
R, considerando os seis casos da definição formal de expressão regular.
2.19 L(G) é o conjunto de todas as cadeias em {a, b}∗ que não têm a forma an bn com n ≥ 0; i.e., L(G) =
{am bn | m > n ≥ 0} ∪ {am bn | n > m ≥ 0} ∪ {w ∈ {a, b}∗ | w contém a subcadeia ba}. O complemento é o
conjunto das cadeias que sim têm essa forma, e uma GLC para essa linguagem é S → aSb | ε.
2.26 Considere a derivação da cadeia w ∈ L(G), com |W | = n ≥ 1. Cada aplicação de uma regra do tipo
A → BC aumenta o comprimento da cadeia gerada em 1. Para gerar uma sequencia de n variáveis a
partir da variável inicial, é necessário aplicar n − 1 substituições desse tipo. Ainda, são necessárias n
aplicações de regras do tipo A → a para substituir todas as variáveis por terminais. Assim, w é gerada
com exatamente 2n − 1 substituições.
2.27 a. A cadeia if condition then if condition then a:= 1 else a:= 1 possui duas árvores sintáti-
cas diferentes:
hSTMTi
hIF-THENi
hIF-THEN-ELSEi
hASSIGNi hASSIGNi
a := 1 a := 1
hSTMTi
hIF-THEN-ELSEi
hIF-THENi hASSIGNi
hASSIGNi
a := 1
b. Na primeira derivação acima, else casa com o segundo if...then, enquanto que na segunda de-
rivação, else casa com o primeiro if...then. Podemos evitar a ambiguidade impossibilitando a
introdução de if...then antes de else. Desta forma, else sempre irá casar com o if...then mais
próximo. Assim, uma GLC não ambígua equivalente é:
hSTMTi → hASSIGNi | hIF-THENi | hMTCHi
hMTCHi → hASSIGNi | if condition then hMTCHi else hMTCHi
hIF-THENi → if condition then hSTMTi | if condition then hMTCHi
else hIF-THENi
hASSIGNi → a:= 1