Você está na página 1de 2

Gramticas Recursivas

Definio:
Uma gramtica dita recursiva esquerda se ela tiver um no-terminal A tal
que A =>A para alguma cadeia w.
Mtodo de Parsing TOP-DOWN no manipulam gramticas recursivas
esquerda.
Eliminando Recursividade a Esquerda:
Recursividade Direita:

A A |

=>

A A'
A' A' |

Exemplo:
E E + T | T
T T * F | F
F (E) | id

=>

A A| AAAn | | | ... | n
A A'| A' | nA'
A' A'| A'nA' |
Recursividade Indireta

Exemplo:

S Aa | b
A Ac | Sd |

S Aa Sda
Algoritmo para Eliminar Recursividade a Esquerda
Input: G - gramtica sem ciclos
1. Sejam A1, A2 ... An os no terminais de G
2. for i := 2 to n do
for j := 1 to i - 1 do

E TE'
E' +TE' |
T FT'
T' *FT' |
F > (E) | id

begin
(a) substitua cada produo da forma pelas produes da
forma Ai Ajpelas produes Ai , se Aj i
forem produes de G.
(b) elimine as recursividades direta das produes Ai.
end
Exemplo:
1. S, A
2. (a) i = 2, j = 1, A Sd => AAad
Abd
(b) A bdA'
A'adA' | cA' |
Fatorao Esquerda:
Para adiar o impasse entre duas regras de produo que podem ser aplicadas.
A

=Fatorao a esquerda=> A A'


A'

Mtodo de Fatorao : Para cada no-terminal a, achar o maior prefixo


comum a 2 ou mais de suas alternativas. Se diferente de(prefixo
comum no-trivial) substituir todas as produes de A
n, onde representa as alternativas que no comeam
por , por:
A A' |
A' n
Exemplo: (1) S iEtS | iEtSeS | a
E b
(1) e (2) so
ambguas
(2) S iEtSS' | a
S'eS |
E b

Você também pode gostar