Ybadoo - Soluções em Software Livre
Turmas
2º Semestre de 2026

(Poscomp, 2023) Seja a seguinte linguagem, onde ε representa a string vazio e $ representa um marcador de fim de entrada.

G = ({S, A, B, C, D}, {a, b, c, d, e}, P, A)
P = {SABCD
A → aA | ε
B → bB | ε
C → cC | e
D → d | ε}

É correto afirmar que:

a. O conjunto FIRST(A) é igual ao conjunto FIRST(B).

b. O conjunto FIRST(D) é igual ao conjunto FIRST(S).

c. O conjunto FIRST(C) é igual ao conjunto FOLLOW(B).

d. O conjunto FOLLOW(B) é igual ao conjunto FOLLOW(S).

e. O conjunto FOLLOW(A) é igual a FOLLOW(D).

Para respondermos a essa questão, primeiramente precisaremos calcular os conjuntos FIRST e FOLLOW de cada um dos não-terminais presentes na gramática livre de contexto apresentada.

Tabela com os conjuntos FIRST e FOLLOW dos não-terminais da gramática G
Não-terminalFIRSTFOLLOW
S{a, b, c, e}{$}
A{a, ε}{b, c, e}
B{b, ε}{c, e}
C{c, e}{d, $}
D{d, ε}{$}

Diante do exposto, vamos analisar cada uma das afirmações a seguir:

a. O conjunto FIRST(A) é igual ao conjunto FIRST(B).

FIRST(A) = {a, ε} e FIRST(B) = {b, ε}, logo FIRST(A) ≠ FIRST(B)

b. O conjunto FIRST(D) é igual ao conjunto FIRST(S).

FIRST(D) = {d, ε} e FIRST(S) = {a, b, c, e}, logo FIRST(D) ≠ FIRST(S)

c. O conjunto FIRST(C) é igual ao conjunto FOLLOW(B).

FIRST(C) = {c, e} e FOLLOW(B) = {c, e}, logo FIRST(C) = FOLLOW(B)

d. O conjunto FOLLOW(B) é igual ao conjunto FOLLOW(S).

FOLLOW(B) = {c, e} e FOLLOW(S) = {$}, logo FOLLOW(B) ≠ FOLLOW(S)

e. O conjunto FOLLOW(A) é igual a FOLLOW(D).

FOLLOW(A) = {b, c, e} e FOLLOW(D) = {$}, logo FOLLOW(A) ≠ FOLLOW(D)