100 likes | 191 Views
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
E N D
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 • 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 Jorge Morais LFA 1999/2000 - 2
Pontos de apoio (handle) DEI • 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 Jorge Morais LFA 1999/2000 - 3
Exemplo DEI • S aABeA Abc | bB d • abbcde (b – ponto de apoio)aAbcde (Abc)aAde (d)aABe (aABe)S Jorge Morais LFA 1999/2000 - 4
Implementação do parser DEI • 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 Jorge Morais LFA 1999/2000 - 5
shift-reduce DEI • 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 Jorge Morais LFA 1999/2000 - 6
Aceitação duma sequência DEI • 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: $ Jorge Morais LFA 1999/2000 - 7
Exemplo DEI • 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 Jorge Morais LFA 1999/2000 - 8
Exemplo - Parser DEI Jorge Morais LFA 1999/2000 - 9
Exemplo - Parser (cont.) DEI • NOTA: a escolha do ponto de apoio depende da precedência de operadores Jorge Morais LFA 1999/2000 - 10