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

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

III – Análise sintáctica 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.

Apresentações semelhantes


Apresentação em tema: "III – Análise sintáctica 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."— Transcrição da apresentação:

1 III – Análise sintáctica 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 LFA 1999/ Jorge Morais

2 Gramáticas LR(0) 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 LFA 1999/ Jorge Morais

3 Itens LR(0) 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. LFA 1999/ Jorge Morais

4 Operação de fecho 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) LFA 1999/ Jorge Morais

5 Operação de salto (goto) 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 LFA 1999/ Jorge Morais

6 Construção de conjuntos de itens 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 LFA 1999/ Jorge Morais

7 Exemplo E E E + T E T T T * F T F F ( E ) F id LFA 1999/ Jorge Morais

8 goto(I 0, X) I 1 =goto(I 0, E) = {E E., E E. + T} I 2 =goto(I 0, T) = {E T., T T. * F} I 3 =goto(I 0, F) = {T F.} I 4 =goto(I 0, ( ) = {F (. E ), E. E + T, E. T, T. T * F, T. F, F. ( E ), F. id} I 5 =goto(I 0, id ) = {F id.} LFA 1999/ Jorge Morais

9 Restantes conjuntos I 6 =goto(I 1, +) = {E E +. T, T. T * F, T. F, F. ( E ), F. id} I 7 =goto(I 2, *)={T T*.F,F.( E ),F. id} I 8 =goto(I 4, E) = {F ( E. ), E E. + T} I 9 =goto(I 6, T) = {E E + T., T T.* F} I 10 =goto(I 8, F) = {T T * F.} I 11 =goto(I 8, )) = {F ( E ).} LFA 1999/ Jorge Morais

10 Autómato finito Cada um dos I k 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. }) LFA 1999/ Jorge Morais

11 SLR – Simple LR Construir C={I 0, I 1,..., I n } Se {A. a } pertence a I i e goto(I i,a) = I j, então acção(i,a) = shift j Se {A. } pertence a I i, 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 I i, então acção(i,$) = aceit. Se {A. X } pertence a I i, X variável (não terminal), então salto(i,X) = j LFA 1999/ Jorge Morais

12 LR(1) 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 LFA 1999/ Jorge Morais

13 LALR(1) – LookAhead LR(1) 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 LFA 1999/ Jorge Morais

14 Hierarquia de gramáticas LFA 1999/ Jorge Morais


Carregar ppt "III – Análise sintáctica 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."

Apresentações semelhantes


Anúncios Google