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

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

III – Análise sintáctica

Apresentações semelhantes


Apresentação em tema: "III – Análise sintáctica"— Transcrição da apresentação:

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 TT*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 EE+T Aceita Jorge Morais LFA 1999/


Carregar ppt "III – Análise sintáctica"

Apresentações semelhantes


Anúncios Google