1 / 14

III – Análise sintáctica

III – Análise sintáctica. DEI. Construção de tabelas para parsers LR Bibliografia aconselhada: Aho, Sethi e Ullman – secção 4.7 Crespo – secção 5.5, 5.6 e 5.7 Appel – secção 3.3. Jorge Morais. LFA 1999/2000 - 1. Gramáticas LR(0). DEI.

Download Presentation

III – Análise sintáctica

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. III – Análise sintáctica DEI • Construção de tabelas para parsers LR • Bibliografia aconselhada: • Aho, Sethi e Ullman – secção 4.7 • Crespo – secção 5.5, 5.6 e 5.7 • Appel – secção 3.3 Jorge Morais LFA 1999/2000 - 1

  2. Gramáticas LR(0) DEI • Podem ser derivadas usando apenas o símbolo no topo da pilha, fazendo instruções shift-reduce sem ler nenhum símbolo à frente • Demasiado fracas, servem de base às outras formas de construções de tabelas Jorge Morais LFA 1999/2000 - 2

  3. Itens LR(0) DEI • Proução: • A  X Y Z • Itens LR(0): • A  . X Y Z • A  X . Y Z • A  X Y . Z • A  X Y Z . • No caso A  , temos apenas o item A  . Jorge Morais LFA 1999/2000 - 3

  4. Operação de fecho DEI • Sendo I um conjunto de itens, fecho(I) é um novo conjunto construído usando as seguintes regras: • Todos os itens em I pertencem a fecho(I) • Se A   . B  está em fecho(I) e B   é uma produção da gramática, B  .  é adicionado ao fecho(I) Jorge Morais LFA 1999/2000 - 4

  5. Operação de salto (goto) DEI • goto(I,X) onde I é um conjunto de itens e X é um símbolo da gramática • Fecho do conjunto de itens de todos os itens da forma A   X .  onde A   . X  pertence a I Jorge Morais LFA 1999/2000 - 5

  6. Construção de conjuntos de itens DEI • Algoritmo: • C = {fecho ({S’  . S})} • Para cada I em C e cada X símbolo da gramática (até não haver mais itens a adicionar) • Adicionar goto(I,X) a C Jorge Morais LFA 1999/2000 - 6

  7. Exemplo DEI • E’  E • E  E + T • E  T • T  T * F • T  F • F  ( E ) • F  id Jorge Morais LFA 1999/2000 - 7

  8. goto(I0 , X) DEI • I1=goto(I0 , E) = {E’  E . , E  E . + T} • I2=goto(I0 , T) = {E  T . , T  T . * F} • I3=goto(I0 , F) = {T  F .} • I4=goto(I0 , ‘(‘ ) = {F  ( . E ) , E  . E + T, E  . T, T  . T * F, T  . F, F  . ( E ), F  . id} • I5=goto(I0 , id ) = {F  id .} Jorge Morais LFA 1999/2000 - 8

  9. Restantes conjuntos DEI • I6=goto(I1 , +) = {E  E + . T, T  . T * F, T  . F, F  . ( E ), F  . id} • I7=goto(I2 , *)={TT*.F,F.( E ),F . id} • I8=goto(I4 , E) = {F  ( E . ) , E  E . + T} • I9=goto(I6 , T) = {E  E + T . , T T .* F} • I10=goto(I8 , F) = {T  T * F .} • I11=goto(I8 , ‘)’) = {F  ( E ) .} Jorge Morais LFA 1999/2000 - 9

  10. Autómato finito DEI • Cada um dos Ik vai ser um estado dum autómato finito determinístico • As transições são dadas por (I,X,goto(I,X)) • O estado inicial será o que contém E’  E • Este autómato pode ser construído usando a Construção de Thompson e a construção de subconjuntos, partindo das transições: • ({A   . X }, X, {A  X . }) • ({A   . X },  , {X . }) Jorge Morais LFA 1999/2000 - 10

  11. SLR – Simple LR DEI • Construir C={I0, I1, ..., In} • Se {A   . a } pertence a Ii e goto(Ii,a) = Ij , então acção(i,a) = shift j • Se {A   . } pertence a Ii, então para todo o a em FOLLOW(A), então acção(i,a) = reduce A  ; A não pode ser S’ • Se {S’  S} pertence a Ii, então acção(i,$) = aceit. • Se {A   . X } pertence a Ii, X variável (não terminal), então salto(i,X) = j Jorge Morais LFA 1999/2000 - 11

  12. LR(1) DEI • LR(1) – usa um símbolo de lookahead • os itens LR(1) são da forma (A  . , a) onde a é um símbolo terminal • se  não é , a não tem qualquer significado • os itens(A  . , a) vão corresponder a uma redução A  se a for o próximo símbolo na entrada Jorge Morais LFA 1999/2000 - 12

  13. LALR(1) – LookAhead LR(1) DEI • LALR(1) – diminui número de estados relativamente a LR(1) e é mais forte que SLR • Junta qualquer par de estados iguais que apenas tenham o símbolo de lookahead diferente Jorge Morais LFA 1999/2000 - 13

  14. Hierarquia de gramáticas DEI Jorge Morais LFA 1999/2000 - 14

More Related