Carregar apresentação
A apresentação está carregando. Por favor, espere
1
III – Análise sintáctica
DEI 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 Jorge Morais LFA 1999/
2
Vantagem dos parsers LR
DEI 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 Jorge Morais LFA 1999/
3
Vantagem dos parsers LR (cont.)
DEI 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 Jorge Morais LFA 1999/
4
Modelo dum parser LR DEI Jorge Morais LFA 1999/
5
Elementos dum parser LR
DEI 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 Jorge Morais LFA 1999/
6
Configurações DEI Configuração inicial: Configuração final: Pilha: 0
Entrada: u $ Configuração final: Pilha: s0 X1 s1 ... Xmsm , com acção(sm,a)=aceit. Entrada: u’ $ Jorge Morais LFA 1999/
7
Algoritmo DEI 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 Jorge Morais LFA 1999/
8
Exemplo DEI E E + T E T T T * F T F F ( E ) F id
Sequência: id * id + id $ Jorge Morais LFA 1999/
9
Exemplo – Tabela DEI Jorge Morais LFA 1999/2000 - 9 S acção salto id +
* ( ) $ E T F S5 S4 1 2 3 S6 Aceit. R2 S7 R4 4 8 5 R6 6 9 7 10 S11 R1 R3 11 R5 Jorge Morais LFA 1999/
10
Exemplo - Parser DEI Pilha Entrada Acção id*id+id$ Shift 0 id 5
id*id+id$ Shift 0 id 5 *id+id$ Reduce F id 0 F 3 Reduce T F 0 T 2 0 T 2 * 7 id+id$ 0 T 2 * 7 id 5 +id$ 0 T 2 * 7 F 10 Reduce TT*F Jorge Morais LFA 1999/
11
Exemplo – Parser (cont.)
DEI Pilha Entrada Acção 0 T 2 +id$ Reduce E T 0 E 1 Shift 0 E 1 + 6 id$ 0 E id 5 $ Reduce F id 0 E F 3 Reduce T F 0 E T 9 Reduce EE+T Aceita Jorge Morais LFA 1999/
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.