Ybadoo - Soluções em Software Livre
Tutoriais
Compiladores

Elimine a recursividade à esquerda, considerando a palavra vazia, das produções da gramática a seguir.

G = ({S, A, B, C}, {a, b, c,}, P, S)
P = {SABc
ABA | CcB | a
BABb | b
CCA | c}

 

1. Simplificação da gramática livre de contexto:

G = ({S, A, B, C}, {a, b, c,}, P, S)
P = {SABc
ABA | CcB | a
BABb | b
CCA | c}

2. Renomeação das variáveis em uma ordem crescente qualquer:

G = ({A, B, C, D}, {a, b, c,}, P, A)
P = {ABCc
BCB | DcC | a
CBCb | b
DDB | c}

3. Transformação das produções da forma ArAsα, onde rs:

G = ({A, B, C, D}, {a, b, c,}, P, A)
P = {ABCc
BCB | DcC | a
CCBCb | DcCCb | aCb | b
DDB | c}

4. Exclusão das recursões da forma ArArα:

G = ({A, B, C, C₀, D, D₀}, {a, b, c,}, P, A)
P = {ABCc
BCB | DcC | a
CDcCCbC₀ | aCbC₀ | bC₀
C₀BCbC₀ | ε
D → cD₀
D₀BD₀ | ε}