A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

III – Análise sintáctica Análise sintáctica ascendente LR Bibliografia aconselhada: –Aho, Sethi e Ullman – secção 4.7 –Crespo – secção 5.4 –Appel – secção.

Apresentações semelhantes


Apresentação em tema: "III – Análise sintáctica Análise sintáctica ascendente LR Bibliografia aconselhada: –Aho, Sethi e Ullman – secção 4.7 –Crespo – secção 5.4 –Appel – secção."— Transcrição da apresentação:

1 III – Análise sintáctica Análise sintáctica ascendente LR Bibliografia aconselhada: –Aho, Sethi e Ullman – secção 4.7 –Crespo – secção 5.4 –Appel – secção 3.3 LFA 1999/ Jorge Morais

2 Vantagem dos parsers LR Reconhecem praticamente todas as construções de linguagens de programação expressas por gramáticas independentes de contexto É o melhor método conhecido para parsers não recursivos com instruções shift-reduce, mantendo o grau de eficiência LFA 1999/ Jorge Morais

3 Vantagem dos parsers LR (cont.) A classe das gramáticas que podem ser derivadas com parsers LR contém a classe das gramáticas que podem ser derivadas usando parser predictivos Pode detectar rapidamente erros, assim que seja possível numa pesquisa da entrada da esquerda para a direita LFA 1999/ Jorge Morais

4 Modelo dum parser LR LFA 1999/ Jorge Morais

5 Elementos dum parser LR Tabela de acções – acção(s, a), s estado actual e a o símbolo na entrada: –shift s, onde s é um estado –reduce A –aceitação –erro Tabela de salto (goto) – salto(s, X), s estado actual e X estado no topo da pilha: –retorna o estado de destino LFA 1999/ Jorge Morais

6 Configurações Configuração inicial: –Pilha: 0 –Entrada: u $ Configuração final: –Pilha: s 0 X 1 s 1... X m s m, com acção(s m,a)=aceit. –Entrada: u $ LFA 1999/ Jorge Morais

7 Algoritmo Em cada passo, para a na entrada e s o estado actual: –Se acção(s,a) = shift s, trocar s por s na pilha –Se acção(s,a) = reduce A, retirar os elementos relativos a do topo da pilha, inserindo A seguido de s = salto(a,s), onde s é o estado que ficou anteriormente no topo –Se acção(s,a) = aceitação, aceita a sequência –Se acção(s,a) = erro, vai para rotina de erro LFA 1999/ Jorge Morais

8 Exemplo 1.E E + T 2.E T 3.T T * F 4.T F 5.F ( E ) 6.F id Sequência: id * id + id $ LFA 1999/ Jorge Morais

9 Exemplo – Tabela LFA 1999/ Jorge Morais Sacçãosalto id+*()$ETF 0S5S4123 1S6Aceit. 2R2S7R2 3R4 4S5S4823 5R6 6S5S493 7S5S410 8S6S11 9R1S7R1 10R3 11R5

10 Exemplo - Parser LFA 1999/ Jorge Morais PilhaEntradaAcção 0id*id+id$Shift 0 id 5*id+id$ Reduce F id 0 F 3*id+id$ Reduce T F 0 T 2*id+id$Shift 0 T 2 * 7id+id$Shift 0 T 2 * 7 id 5+id$ Reduce F id 0 T 2 * 7 F 10+id$ Reduce T T*F

11 Exemplo – Parser (cont.) LFA 1999/ Jorge Morais PilhaEntradaAcção 0 T 2+id$ Reduce E T 0 E 1+id$Shift 0 E 1 + 6id$Shift 0 E id 5$ Reduce F id 0 E F 3$ Reduce T F 0 E T 9$ Reduce E E+T 0 E 1$Aceita


Carregar ppt "III – Análise sintáctica Análise sintáctica ascendente LR Bibliografia aconselhada: –Aho, Sethi e Ullman – secção 4.7 –Crespo – secção 5.4 –Appel – secção."

Apresentações semelhantes


Anúncios Google