































Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Compiladores ensinado por Patrick Pedreira.
Tipologia: Notas de aula
1 / 39
Esta página não é visível na pré-visualização
Não perca as partes importantes!
































Este material é baseado nos materiais de autoria da profa. V. Feltrim
Recursividade à Esquerda
Aa | b
-^ recursividade indireta
AA | a A^ →
SS | b
Eliminação de Recursividade à
Esquerda
direta
:
Aα
α^2
αn^
|^ β^1
|^ β
βm
→ β
β^2
βm
→ α
α^2
αn
λ
Se produções vazias não são permitidas, asubstituição deve ser:A^ → β
|^ β 1
| ... | 2
βm
|^ β
A’^1 |^ β^2
A’^ | ... |
βm
A’
A’^ → α
|^ α 1
| ... | 2
αn^
|^ α^1
A’^ |^
αA’^2
| ... |
αA’n
Eliminação de Recursividade à
Esquerda
indireta
:
S • elimine a recursividade direta
AA | a A^ →
SS | b
AA | a A^ →
AAS | aS | b
O 1º S da regra A
→^
SS é substituído pelas produções de S,
i.e., S
→^
AA e S
→^
a
Eliminação de Recursividade à
Esquerda
indireta
:
AA | a A^ →
SS | b
AA | a A^ →
AAS | aS | b
AA | a A^ →
AAS | aS | b
AA | a A^
aSA’ | bA’ A’^
λ
Recursãodireta
Eliminação de Recursividade à
Esquerda
-^
λ
(E) | id
λ
(E) | id
e
A análise só é eficiente quando se eliminam retrocessos– Sabe-se de antemão qual r gra aplicar
-^
Além de não serem recursivas à esquerda, asgramáticas devem obedecer duas outras restrições– O lado direito das produções devem começar por terminais– Para um não terminal qualquer, não devem existir duas regras
que comecem com um mesmo terminal
-^
Com isso, olhando o primeiro símbolo da entrada, sabe-se qual regra aplicar
a * b a (1) E
a * b a (2) E + E E
(3) a * b aE + E E
(4) a * b aE + E Ea
(5) * b aE + E Ea
(6) * b aE + E Ea
1.^
2.^
3.^
4.^
(7) b a E + E Ea^
(8) b a E + E Ea^
(9) a E + E Ea^ * E E
b
(10)a E + E Ea^ * E E
b^ a
(11)^ ^ E + E Ea^ * E E
b^ a
1.^
2.^
3.^
4.^
Além de não serem recursivas à esquerda, asgramáticas devem obedecer duas restrições^ – O lado direito das produções devem começar por
terminais – Para um não terminal qualquer, não devem existir duas regrasque comecem com um mesmo terminal
-^
: podem existir não terminais
começando os lados direitos das regras de um nãoterminal,
mas
seus conjuntos
Primeiro
( First
) devem
ser disjuntos
Cálculo dos Conjuntos
Primeiro
-^
terminais – Para um não terminal qualquer, não devem existirduas regras que comecem com um mesmo símbolo
-^
Restrição muito severa!– Generalização
: podem existir não terminais começando os lados
direitos das regras de um não terminal, mas seus conjuntos Primeiro
devem ser disjuntos
-^
-^
α
comum a duas ou mais alternativas;– se há um prefixo em comum, então substituir aprodução A
→ αβ
αβ
|^ n
(em que
^ representa as alternativas que não
começam por
α) por
A^ → α
→ β
βn
A^ → αβ
|^ αβ 1
2 A^ → α
→ β
|^ β 1 2