11.07.2015 Views

Compiladores: PASCALjr - WWW2 - Udesc

Compiladores: PASCALjr - WWW2 - Udesc

Compiladores: PASCALjr - WWW2 - Udesc

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

AAAβAαAαAααβαA'A'α A'α A'α A'εFigura 4.4: Exemplos de Recursão à Esquerda e à DireitaAo analisarmos o token a não há como saber qual das duas alternativas utilizar (ocomando com ou sem o “cZ”). Quando houver duas produções A → αβ 1 | αβ 2 , devemospostergar a decisão expandindo A para αA ′ e então expandir A’ para β 1 | β 2 . Fatorandoesta gramática temos: S → aXbY S ′ S ′ → cZ | ε.4.4 Reconhecedor de Gramáticas Preditivas DescendentesUm reconhecedor preditivo descendente (orientado por tabela) compreende uma fita deentrada, uma pilha e uma tabela de análise, conforme é mostrado na figura 4.5. A fitacontém a sentença a ser analisada seguida de $. A pilha contém os símbolos utilizadosdurante o processo de análise. A tabela de análise é uma matriz com n linhas (correspondendoaos símbolos não-terminais) e t+1 colunas (correspondendo aos símbolos terminaismais o símbolo especial $).Considerando X o elemento no topo da pilha e a o símbolo de entrada sob análise, oanalisador executa uma de três ações possíveis:1. se X = a = $, o analisador pára, aceitando a sentença;2. se X = a ≠ $, o analisador desempilha a e avança o cabeçote de leitura para opróximo símbolo na fita de entrada;3. se X é um símbolo não-terminal, o analisador consulta a tabela M[X,a] da tabelade análise. Essa entrada poderá conter uma produção da gramática ou ser vazia.Supondo M[X,a] = { X → XY Z }, o analisador substitui X (no topo da pilha) porZYX (ficando X no topo). Se M[X,a] for vazio isto é um erro sintático.Na implementação de um analisador sintático, a maior dificuldade está na construçãoda tabela de análise. Para construir essa tabela, é necessário computar duas funçõesassociadas à gramática: FIRST e FOLLOW.27

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!