III – Análise sintáctica

10
III – Análise sintáctica Parsers ascendentes • Instruções shift-reduce • Bibliografia aconselhada: – Aho, Sethi e Ullman – secção 4.5 LFA 1999/2000 - 1 Jorge Morais

description

III – Análise sintáctica. DEI. Parsers ascendentes Instruções shift-reduce Bibliografia aconselhada: Aho, Sethi e Ullman – secção 4.5. Jorge Morais. LFA 1999/2000 - 1. Parsers ascendentes. DEI. Reconhecimento das folhas para o nó principal - PowerPoint PPT Presentation

Transcript of III – Análise sintáctica

Page 1: III – Análise sintáctica

III – Análise sintáctica

• Parsers ascendentes

• Instruções shift-reduce

• Bibliografia aconselhada:– Aho, Sethi e Ullman – secção 4.5

LFA 1999/2000 - 1Jorge Morais

Page 2: III – Análise sintáctica

Parsers ascendentes

• Reconhecimento das folhas para o nó principal

• Redução duma sequência ao símbolo inicial da gramática

• Ponto de apoio (handle) é uma subsequência que pode ser associada à parte direita duma produção permitindo a sua redução à parte esquerda da mesma

LFA 1999/2000 - 2Jorge Morais

Page 3: III – Análise sintáctica

Pontos de apoio (handle)

• Forma Derivada à Direita – sequência resultante de uma derivação

• Um ponto de apoio duma Forma Derivada à Direita é uma produção A e uma posição de onde pode ser substituído por A de modo a produzir a Forma Derivada à Direita anterior

LFA 1999/2000 - 3Jorge Morais

Page 4: III – Análise sintáctica

Exemplo

• S aABeA Abc | bB d

• abbcde (b – ponto de apoio)aAbcde (Abc)aAde (d)aABe (aABe)S

LFA 1999/2000 - 4Jorge Morais

Page 5: III – Análise sintáctica

Implementação do parser

• Pilha – na pilha são colocadas os símbolos da gramática

• Entrada – sequência a ser analisada

• Acção – acção a tomar perante o símbolo no topo da pilha e o próximo símbolo na entrada

LFA 1999/2000 - 5Jorge Morais

Page 6: III – Análise sintáctica

shift-reduce

• Acções possíveis:– shift – deslocamento do símbolo de entrada

para a pilha– reduce – reduz o lado direito duma produção

(que está no topo da pilha) ao lado esquerdo– erro – chamada à rotina de erro– aceitação – derivação bem sucedida

LFA 1999/2000 - 6Jorge Morais

Page 7: III – Análise sintáctica

Aceitação duma sequência

• Duma forma geral, uma sequência u é reconhecida por uma gramática se S * u, onde S é o símbolo inicial

• Configuração inicial:– Pilha: $– Entrada: u $

• Configuração final:– Pilha: $ S– Entrada: $

LFA 1999/2000 - 7Jorge Morais

Page 8: III – Análise sintáctica

Exemplo

• E E + E | E * E | ( E ) | id

• id + id * id

• E * id + id * id

• E E + E id + E id + E * E id + id * E id + id * id

LFA 1999/2000 - 8Jorge Morais

Page 9: III – Análise sintáctica

Exemplo - Parser

LFA 1999/2000 - 9Jorge Morais

Pilha Entrada Acção

$ id+id*id$ shift

$id +id*id$ redução E id

$E +id*id$ shift

$E + id*id$ shift

$E + id *id$ redução E id

$E + E *id$ shift

$E + E * id$ shift

Page 10: III – Análise sintáctica

Exemplo - Parser (cont.)

• NOTA: a escolha do ponto de apoio depende da precedência de operadores

LFA 1999/2000 - 10Jorge Morais

Pilha Entrada Acção

$E + E * id $ redução E id

$E + E * E $ redução EE*E

$E + E $ redução EE+E

$E $ aceitação