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

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

5.5.4 – Métodos para a construção da tabela de análise LR

Apresentações semelhantes


Apresentação em tema: "5.5.4 – Métodos para a construção da tabela de análise LR"— Transcrição da apresentação:

1 5.5.4 – Métodos para a construção da tabela de análise LR
Tabela de ações  Tabela de transições Gramáticas LR(k) ou simplesmente LR permitem a construção dessas tabelas Yacc usa essas tabelas Gramáticas ambíguas não são LR, mas em Yacc há dispositivos para resolver ambiguidades

2 Numa gramática LR, os analisadores por deslocamento e redução têm a capacidade de reconhecer asas no topo da pilha Na realidade, eles utilizam um autômato determinístico reconhecedor de prefixos viáveis na pilha Nesses analisadores, não é necessário percorrer a pilha para saber quando uma asa aparece no topo: O estado no topo da pilha contém toda a informação necessária

3 São conhecidos três métodos para a construção de uma tabela de análise LR:
Método SLR (simple LR): aplica-se a um menor número de gramáticas; é o de mais fácil implementação Método CLR (canonical LR): mais poderoso e de mais difícil implementação Método LALR (look-ahead LR): intermediário em potência e dificuldade de implementação

4 Métodos SLR (simple LR), CLR (canonical LR) e LALR (look-ahead LR):
O segundo e o terceiro método usam os mesmos princípios do primeiro e acrescentam a esse informações sobre os átomos seguintes do que está em análise O terceiro método é uma simplificação do segundo, diminuindo muito a memória gasta no processo É o mais usado na prática Yacc usa o método LALR

5 Métodos SLR (simple LR), CLR (canonical LR) e LALR (look-ahead LR):
Nesta disciplina será apresentado somente o método SLR Os outros dois usam os princípios básicos desse primeiro Fundamental é a concepção do autômato finito determinístico, reconhecedor de prefixos viáveis, para o controle da pilha do analisador

6 5.5.5 – Autômato finito não-determinístico LR
Origem do autômato finito determinístico (AFD): Autômato finito não-determinístico (AFND) reconhecedor de prefixos viáveis  O AFND é transformado num AFD equivalente Seja então a concepção de um AFND reconhecedor de prefixos viáveis de uma gramática

7 Os estados de um AFND são chamados itens de produções
Item de produção de uma gramática é a mesma produção contendo um ponto (‘.’) em alguma posição do lado direito A produção AXYZ tem 4 itens, a saber: A. XYZ , AX . YZ , AXY . Z e AXYZ . A produção vazia Aε tem 1 item : A .

8 Interpretação de um item:
Seja o item A  α.β É um estado do AFND no qual já foi vista na entrada uma sub-sentença derivada de α e se espera encontrar a seguir outra derivada de β O AFND de uma gramática trabalha com a mesma aumentada de um novo símbolo inicial S’ e uma nova produção, S’S

9 Exemplo: gramática de expressões aumentada e seus 20 itens
Um item pode ser representado por um par de inteiros: O primeiro sendo o número da produção e o segundo a posição do ponto

10 Num AFND, há dois tipos de transições:
De qualquer estado do tipo A  .X para outro estado do tipo A  X., cuja condição para transição é o símbolo X (X  {N  }) De qualquer estado do tipo A  .B para outro estado do tipo B  ., cuja condição para transição é o símbolo ε (vazio) X A  .X A  X. ε A  .B B  . O 2º tipo caracteriza o não-determinismo

11 AFND da gramática anterior e8: E’  E. p/ e4 p/ e5    E + T
inicial E AFND da gramática anterior e8: E’  E. p/ e4 p/ e5 E + T e2: E  .E+T e9: E  E.+T e15: E  E+.T e18: E  E+T. Todos os estados são finais T e3: E  .T e10: E  T. p/ e6 p/ e7 T * F e4: T  .T*F e11: T  T.*F e16: T  T*.F e19: T  T*F. p/ e2 F e5: T  .F e12: T  F. p/ e3 ( E ) e6: F  .(E) e13: F  (.E) e17: F  (E.) e20: F  (E). id e7: F  .id e14: F  id.

12 O prefixo a ser analisado é o conteúdo da pilha 
e1: E’  .E inicial E e8: E’  E. p/ e4 p/ e5 E + T e2: E  .E+T e9: E  E.+T e15: E  E+.T e18: E  E+T. O prefixo a ser analisado é o conteúdo da pilha T e3: E  .T e10: E  T. p/ e6 p/ e7 T * F e4: T  .T*F e11: T  T.*F e16: T  T*.F e19: T  T*F. p/ e2 F e5: T  .F e12: T  F. p/ e3 ( E ) e6: F  .(E) e13: F  (.E) e17: F  (E.) e20: F  (E). Na impossibilidade de transição, o percurso sobre o prefixo é paralisado id e7: F  .id e14: F  id.

13 Seja a análise do prefixo E + ( T * id T e3: E  .T e10: E  T. p/ e6
e1: E’  .E inicial E e8: E’  E. p/ e4 p/ e5 E + T e2: E  .E+T e9: E  E.+T e15: E  E+.T e18: E  E+T. Seja a análise do prefixo E + ( T * id T e3: E  .T e10: E  T. p/ e6 p/ e7 T * F e4: T  .T*F e11: T  T.*F e16: T  T*.F e19: T  T*F. p/ e2 F e5: T  .F e12: T  F. p/ e3 ( E ) e6: F  .(E) e13: F  (.E) e17: F  (E.) e20: F  (E). E + ( T * id id e7: F  .id e14: F  id.

14 E + ( T * id e1: E’  .E E e8: E’  E. p/ e4 p/ e5    E + T
inicial E e8: E’  E. p/ e4 p/ e5 E + T e2: E  .E+T e9: E  E.+T e15: E  E+.T e18: E  E+T. T e3: E  .T e10: E  T. p/ e6 p/ e7 T * F e4: T  .T*F e11: T  T.*F e16: T  T*.F e19: T  T*F. p/ e2 F e5: T  .F e12: T  F. p/ e3 ( E ) e6: F  .(E) e13: F  (.E) e17: F  (E.) e20: F  (E). E + ( T * id E + ( T * id id e7: F  .id e14: F  id.

15 E + ( T * id E + ( T * id e1: E’  .E E e8: E’  E. p/ e4 p/ e5   
inicial E e8: E’  E. p/ e4 p/ e5 E + T e2: E  .E+T e9: E  E.+T e15: E  E+.T e18: E  E+T. T e3: E  .T e10: E  T. p/ e6 p/ e7 T * F e4: T  .T*F e11: T  T.*F e16: T  T*.F e19: T  T*F. p/ e2 F e5: T  .F e12: T  F. p/ e3 ( E ) e6: F  .(E) e13: F  (.E) e17: F  (E.) e20: F  (E). E + ( T * id E + ( T * id id e7: F  .id e14: F  id.

16 E + ( T * id E + ( T * id e1: E’  .E E e8: E’  E. p/ e4 p/ e5   
inicial E e8: E’  E. p/ e4 p/ e5 E + T e2: E  .E+T e9: E  E.+T e15: E  E+.T e18: E  E+T. T e3: E  .T e10: E  T. p/ e6 p/ e7 T * F e4: T  .T*F e11: T  T.*F e16: T  T*.F e19: T  T*F. p/ e2 F e5: T  .F e12: T  F. p/ e3 ( E ) e6: F  .(E) e13: F  (.E) e17: F  (E.) e20: F  (E). E + ( T * id E + ( T * id id e7: F  .id e14: F  id.

17 E + ( T * id E + ( T * id e1: E’  .E E e8: E’  E. p/ e4 p/ e5   
inicial E e8: E’  E. p/ e4 p/ e5 E + T e2: E  .E+T e9: E  E.+T e15: E  E+.T e18: E  E+T. T e3: E  .T e10: E  T. p/ e6 p/ e7 T * F e4: T  .T*F e11: T  T.*F e16: T  T*.F e19: T  T*F. p/ e2 F e5: T  .F e12: T  F. p/ e3 ( E ) e6: F  .(E) e13: F  (.E) e17: F  (E.) e20: F  (E). E + ( T * id E + ( T * id id e7: F  .id e14: F  id.

18 E + ( T * id E + ( T * id e1: E’  .E E e8: E’  E. p/ e4 p/ e5   
inicial E e8: E’  E. p/ e4 p/ e5 E + T e2: E  .E+T e9: E  E.+T e15: E  E+.T e18: E  E+T. T e3: E  .T e10: E  T. p/ e6 p/ e7 T * F e4: T  .T*F e11: T  T.*F e16: T  T*.F e19: T  T*F. p/ e2 F e5: T  .F e12: T  F. p/ e3 ( E ) e6: F  .(E) e13: F  (.E) e17: F  (E.) e20: F  (E). E + ( T * id E + ( T * id id e7: F  .id e14: F  id.

19 E + ( T * id E + ( T * id e1: E’  .E E e8: E’  E. p/ e4 p/ e5   
inicial E e8: E’  E. p/ e4 p/ e5 E + T e2: E  .E+T e9: E  E.+T e15: E  E+.T e18: E  E+T. T e3: E  .T e10: E  T. p/ e6 p/ e7 T * F e4: T  .T*F e11: T  T.*F e16: T  T*.F e19: T  T*F. p/ e2 F e5: T  .F e12: T  F. p/ e3 ( E ) e6: F  .(E) e13: F  (.E) e17: F  (E.) e20: F  (E). E + ( T * id E + ( T * id id e7: F  .id e14: F  id.

20 E + ( T * id - Prefixo viável E + ( T * id
e1: E’  .E inicial E e8: E’  E. p/ e4 p/ e5 E + T e2: E  .E+T e9: E  E.+T e15: E  E+.T e18: E  E+T. T e3: E  .T e10: E  T. p/ e6 p/ e7 T * F e4: T  .T*F e11: T  T.*F e16: T  T*.F e19: T  T*F. p/ e2 F e5: T  .F e12: T  F. p/ e3 ( E ) e6: F  .(E) e13: F  (.E) e17: F  (E.) e20: F  (E). E + ( T * id - Prefixo viável E + ( T * id - Prefixo viável O prefixo E + ( T * id ) é inviável E + ( T * id id e7: F  .id e14: F  id.

21 a b b c d e  a A b c d e  a A d e  a A B e  S
No exemplo anterior, analisou-se apenas um prefixo No exemplo a seguir será analisada uma sentença e também os prefixos necessários para essa análise Exemplo: Seja a gramática do exemplo inicial aumentada S’  S S  a A B e A  A b c | b B  d E a análise da sentença abbcde Relembrando sua redução: a b b c d e  a A b c d e  a A d e  a A B e  S

22 Início da análise O AFND S’.S S S’S.  a A B e S.aABe Sa.ABe
inicial S S’S. Início da análise O AFND a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe. A b c A.Abc AA.bc AAb.c AAbc. Pilha Entrada b A.b Ab. abbcde d B.d Bd.

23 Início da análise S’.S S S’S.  a A B e S.aABe Sa.ABe SaA.Be
inicial S S’S. Início da análise a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe. A b c A.Abc AA.bc AAb.c AAbc. Pilha Entrada b A.b Ab. abbcde a é prefixo viável Os 2 estados não são finais de produção d B.d Bd. Obs.: só se pode reduzir, caso pelo menos um dos estados seja final de produção Ação: Deslocar a

24 S’.S S S’S.  a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe.   
inicial S S’S. a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe. A b c A.Abc AA.bc AAb.c AAbc. Pilha Entrada b A.b Ab. a bbcde d B.d Bd.

25 Os 3 estados não são finais de produção d B.d Bd.
S’.S inicial S S’S. a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe. A b c A.Abc AA.bc AAb.c AAbc. Pilha Entrada b A.b Ab. a bbcde ab é prefixo viável Os 3 estados não são finais de produção d B.d Bd. Ação: Deslocar b

26 S’.S S S’S.  a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe.   
inicial S S’S. a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe. A b c A.Abc AA.bc AAb.c AAbc. Pilha Entrada b A.b Ab. ab bcde d B.d Bd.

27 abb não é prefixo viável: não deslocar b O estado é final de produção;
S’.S inicial S S’S. a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe. A b c A.Abc AA.bc AAb.c AAbc. Pilha Entrada b A.b Ab. ab bcde abb não é prefixo viável: não deslocar b O estado é final de produção; b  Seguinte (A) (b na entrada) d B.d Bd. Se b  Seguinte (A), não reduziria; Nesse caso haveria erro Ação: Reduzir b para A

28 S’.S S S’S.  a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe.   
inicial S S’S. a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe. A b c A.Abc AA.bc AAb.c AAbc. Pilha Entrada b A.b Ab. aA bcde d B.d Bd.

29 Os 3 estados não são finais de produção d B.d Bd.
S’.S inicial S S’S. a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe. A b c A.Abc AA.bc AAb.c AAbc. Pilha Entrada b A.b Ab. aA bcde aA é prefixo viável aAb é prefixo viável Os 3 estados não são finais de produção d B.d Bd. Ação: Deslocar b

30 S’.S S S’S.  a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe.   
inicial S S’S. a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe. A b c A.Abc AA.bc AAb.c AAbc. Pilha Entrada b A.b Ab. aAb cde d B.d Bd.

31 O estado não é final de produção d B.d Bd.
S’.S inicial S S’S. a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe. A b c A.Abc AA.bc AAb.c AAbc. Pilha Entrada b A.b Ab. aAb cde aAbc é prefixo viável O estado não é final de produção d B.d Bd. b é lado direito de produção, mas não há redução pois o estado não é final de produção; só no item (Ab.) isso poderia acontecer Ação: Deslocar c

32 S’.S S S’S.  a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe.   
inicial S S’S. a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe. A b c A.Abc AA.bc AAb.c AAbc. Pilha Entrada b A.b Ab. aAbc de d B.d Bd.

33 aAbcd não é prefixo viável O estado é final de produção
S’.S inicial S S’S. a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe. A b c A.Abc AA.bc AAb.c AAbc. Pilha Entrada b A.b Ab. aAbc de aAbcd não é prefixo viável O estado é final de produção d  Seguinte (A) (d na entrada) d B.d Bd. Ação: Reduzir Abc para A

34 S’.S S S’S.  a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe.   
inicial S S’S. a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe. A b c A.Abc AA.bc AAb.c AAbc. Pilha Entrada b A.b Ab. aA de d B.d Bd.

35 Os 3 estados não são finais de produção d B.d Bd.
S’.S inicial S S’S. a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe. A b c A.Abc AA.bc AAb.c AAbc. Pilha Entrada b A.b Ab. aA de aA é prefixo viável aAd é prefixo viável Os 3 estados não são finais de produção d B.d Bd. Ação: Deslocar d

36 S’.S S S’S.  a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe.   
inicial S S’S. a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe. A b c A.Abc AA.bc AAb.c AAbc. Pilha Entrada b A.b Ab. aAd e d B.d Bd.

37 aAde não é prefixo viável O estado é final de produção
S’.S inicial S S’S. a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe. A b c A.Abc AA.bc AAb.c AAbc. Pilha Entrada b A.b Ab. aAd e aAde não é prefixo viável O estado é final de produção e  Seguinte (B) (e na entrada) d B.d Bd. Ação: Reduzir d para B

38 S’.S S S’S.  a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe.   
inicial S S’S. a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe. A b c A.Abc AA.bc AAb.c AAbc. Pilha Entrada b A.b Ab. aAB e d B.d Bd.

39 O estado não é final de produção d B.d Bd.
S’.S inicial S S’S. a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe. A b c A.Abc AA.bc AAb.c AAbc. Pilha Entrada b A.b Ab. aAB e aAB é prefixo viável aABe é prefixo viável O estado não é final de produção d B.d Bd. Ação: Deslocar e

40 S’.S S S’S.  a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe.   
inicial S S’S. a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe. A b c A.Abc AA.bc AAb.c AAbc. Pilha Entrada b A.b Ab. aABe d B.d Bd.

41 O estado é final de produção d B.d Bd.
S’.S inicial S S’S. a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe. A b c A.Abc AA.bc AAb.c AAbc. Pilha Entrada b A.b Ab. aABe Acabou a entrada O estado é final de produção d B.d Bd. Ação: Reduzir aABe para S

42 S’.S S S’S.  a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe.   
inicial S S’S. a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe. A b c A.Abc AA.bc AAb.c AAbc. Pilha Entrada b A.b Ab. S d B.d Bd.

43 O estado é final da produção inicial A entrada está vazia d B.d Bd.
S’.S inicial S S’S. a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe. A b c A.Abc AA.bc AAb.c AAbc. Pilha Entrada b A.b Ab. S S é prefixo viável O estado é final da produção inicial A entrada está vazia d B.d Bd. Se a entrada não estivesse vazia: erro Ação: Aceitar a sentença

44 Observações: Se não chegar ao final de alguma produção e o deslocamento for inviável: erro na sentença Se deslocamento for viável, tendo chegado ao final de alguma produção A, mas entrada  Seguinte(A): desloca Se deslocamento for inviável, tendo chegado ao final de alguma produção A, mas entrada  Seguinte(A): erro na sentença Se deslocamento for viável, tendo chegado ao final de alguma produção A e entrada  Seguinte(A): conflito shift-reduce Se deslocamento for inviável, tendo chegado ao final de duas produções e entrada  Seguinte(Ambos lados esquerdos): conflito reduce-reduce

45 Diferenças entre o método SLR e os métodos CLR e LALR:
A principal diferença está em conflitos que aparecem no primeiro método e são resolvidos nos outros dois Exemplo: seja uma gramática não-ambígua e a seguinte situação na Pilha  Entrada Seja por hipótese o deslocamento de a viável, a existência da produção Aα e a  Seguinte(A) O método SLR visto notificará conflito shift-reduce β α a _ _ _ _ Pilha Entrada

46 Os métodos CLR e LALR exploram as duas alternativas desse conflito
Na alternativa de redução, Pilha  Entrada fica: Há casos em que βA não contém asa e βAa não é viável, ou seja, não pode reduzir nem deslocar Então a hipótese da redução de  para A pode ser descartada e o conflito detectado pelo método SLR não é real β α a _ _ _ _ Pilha Entrada β A a _ _ _ _ Pilha Entrada

47 Conclui-se que os estados do AFND do método SLR não têm informações do contexto mais à esquerda (), afim de decidir por um shift diante de um reduce falso Há gramáticas não-ambíguas para as quais, qualquer método LR gera tabelas de ações contendo conflitos Felizmente, tais gramáticas podem geralmente ser evitadas para aplicações em linguagens de programação

48 5.5.6 – Autômato finito determinístico LR
O percurso em um AFND consome muito tempo; melhor é transformá-lo em um AFD Seja agora a transformação de um AFND num AFD equivalente Cada estado do AFD é representado por um conjunto de itens das produções da gramática Um item pode estar em mais de um desses conjuntos

49 e1 e8 e2 e9 e15 e18 e3 e10 e4 e11 e16 e19 e5 e12 e6 e13 e17 e20 e7 e14
inicial e8 e2 e9 e15 e18 e3 e10 e4 e11 e16 e19 e5 e12 e6 e13 e17 e20 e7 e14 E T + F * ( ) id p/ e4 p/ e5 p/ e6 p/ e7 p/ e2 p/ e3 Exemplo: transformação do AFND da gramática de expressões anterior num AFD Itens acessados por e1

50 e1 E e8 I0 - inicial p/ e4 p/ e5 e1 e2 e3 e4 e5 e6 e7    E + T e2
* e16 F e19 p/ e2 F e5 e12 p/ e3 ( e13 e17 e20 e6 E ) Itens acessados por e1 e7 id e14

51 e1 E e8 I0 - inicial p/ e4 p/ e5 e1 e2 e3 e4 e5 e6 e7    E + T e2
* e16 F e19 p/ e2 F e5 e12 p/ e3 ( e13 e17 e20 e6 E ) Transições de I0 por E e7 id e14

52 e1 E e8 I0 - inicial I1 p/ e4 p/ e5 e1 e2 e3 e4 e5 e6 e7 e8 e9  E  
+ T e2 e9 e15 e18 p/ e6 T e3 e10 p/ e7 T e4 e11 * e16 F e19 p/ e2 F e5 e12 p/ e3 ( e6 e13 e17 e20 E ) Transições de I0 por E e7 id e14

53 e1 E e8 I0 - inicial I1 p/ e4 p/ e5 e1 e2 e3 e4 e5 e6 e7 e8 e9  E  
+ T e2 e9 e15 e18 p/ e6 T e3 e10 p/ e7 T e4 e11 * e16 F e19 p/ e2 F e5 e12 p/ e3 ( e6 e13 e17 e20 E ) Transições de I0 por T e7 id e14

54 e1 E e8 I0 - inicial I1 p/ e4 p/ e5 e1 e2 e3 e4 e5 e6 e7 e8 e9  E  
+ T e2 e9 e15 e18 I2 p/ e6 T e10 e11 T e3 e10 p/ e7 T e4 e11 * e16 F e19 p/ e2 F e5 e12 p/ e3 ( e13 e17 e20 e6 E ) Transições de I0 por T e7 id e14

55 Transições de I0 por F e id e7 id e14
inicial E e8 I0 - inicial I1 p/ e4 p/ e5 e1 e2 e3 e4 e5 e6 e7 e8 e9 E E + T e2 e9 e15 e18 I2 p/ e6 T e10 e11 T e3 e10 p/ e7 T e4 e11 * e16 F e19 p/ e2 F e5 e12 p/ e3 ( e13 e17 e20 e6 E ) Transições de I0 por F e id e7 id e14

56 Transições de I0 por F e id e7 id e14
inicial E e8 I0 - inicial I1 p/ e4 p/ e5 e1 e2 e3 e4 e5 e6 e7 e8 e9 E E + T e2 e9 e15 e18 I2 p/ e6 e10 e11 T T e3 e10 p/ e7 I3 F T e12 e4 e11 * e16 F e19 p/ e2 F e5 e12 p/ e3 ( e6 e13 e17 e20 E ) I5 id e14 Transições de I0 por F e id e7 id e14

57 e1 E e8 I0 - inicial I1 p/ e4 p/ e5 e1 e2 e3 e4 e5 e6 e7 e8 e9  E  
+ T e2 e9 e15 e18 I2 p/ e6 e10 e11 T T e3 e10 p/ e7 I3 F T e12 e4 e11 * e16 F e19 p/ e2 F e5 e12 p/ e3 ( e6 e13 e17 e20 E ) I5 id e14 Transições de I0 por ( e7 id e14

58 e1 E e8 I0 - inicial I1 p/ e4 p/ e5 e1 e2 e3 e4 e5 e6 e7 e8 e9  E  
+ T e2 e9 e15 e18 I2 p/ e6 e10 e11 T T e3 e10 p/ e7 I3 F T e12 e4 e11 * e16 F e19 I4 p/ e2 F e5 e12 e13 e2 e3 e4 e5 e6 e7 ( p/ e3 ( e13 e17 e20 e6 E ) I5 id e14 Transições de I0 por ( e7 id e14

59 e1 E e8 I0 - inicial I1 p/ e4 p/ e5 e1 e2 e3 e4 e5 e6 e7 e8 e9  E  
+ T e2 e9 e15 e18 I2 p/ e6 e10 e11 T T e3 e10 p/ e7 I3 F T e12 e4 e11 * e16 F e19 I4 p/ e2 F e5 e12 e13 e2 e3 e4 e5 e6 e7 ( p/ e3 ( e17 e20 e6 e13 E ) I5 id e14 Transições de I1 por + e7 id e14

60 e1 E e8 I0 - inicial I1 I6 p/ e4 p/ e5 e1 e2 e3 e4 e5 e6 e7 e8 e9 +
E E + T e2 e9 e15 e18 I2 p/ e6 e10 e11 T T e3 e10 p/ e7 I3 F T e12 e4 e11 * e16 F e19 I4 p/ e2 F e5 e12 e13 e2 e3 e4 e5 e6 e7 ( p/ e3 ( e17 e20 e6 e13 E ) I5 id e14 Transições de I1 por + e7 id e14

61 e1 E e8 I0 - inicial I1 I6 p/ e4 p/ e5 e1 e2 e3 e4 e5 e6 e7 e8 e9 +
E E + T e2 e9 e15 e18 I2 p/ e6 e10 e11 T T e3 e10 p/ e7 I3 F T e12 e4 e11 * e16 F e19 I4 p/ e2 F e5 e12 e13 e2 e3 e4 e5 e6 e7 ( p/ e3 ( e6 e13 e17 e20 E ) I5 id e14 Transições de I2 por * e7 id e14

62 e1 E I0 - inicial I1 I6 e8 p/ e4 p/ e5 e1 e2 e3 e4 e5 e6 e7 e8 e9 +
E E T e2 + e15 e18 e9 I2 I7 p/ e6 e10 e11 * e16 e6 e7 T T e3 e10 p/ e7 I3 F T e12 e4 e11 * e16 F e19 I4 p/ e2 F e5 e12 e13 e2 e3 e4 e5 e6 e7 ( p/ e3 ( e6 e13 e17 e20 E ) I5 id e14 Transições de I2 por * e7 id e14

63 e1 E I0 - inicial I1 I6 e8 p/ e4 p/ e5 e1 e2 e3 e4 e5 e6 e7 e8 e9 +
E E T e2 + e15 e18 e9 I2 I7 p/ e6 e10 e11 * e16 e6 e7 T T e3 e10 p/ e7 I3 F T e12 e4 e11 * e16 F e19 I4 p/ e2 F e5 e12 e13 e2 e3 e4 e5 e6 e7 ( p/ e3 ( e6 e13 e17 e20 E ) I5 id e14 Transições de I4 por E e7 id e14

64 e1 E I0 - inicial I1 I6 e8 p/ e4 p/ e5 e1 e2 e3 e4 e5 e6 e7 e8 e9 +
E E T e2 + e15 e18 e9 I2 I7 p/ e6 e10 e11 * e16 e6 e7 T T e3 e10 p/ e7 I3 F T e12 e4 e11 * e16 F e19 I4 I8 p/ e2 F e5 e12 e13 e2 e3 e4 e5 e6 e7 e9 e17 E ( p/ e3 ( e13 e17 e20 e6 E ) I5 id e14 Transições de I4 por E e7 id e14

65 e1 E I0 - inicial I1 I6 e8 p/ e4 p/ e5 e1 e2 e3 e4 e5 e6 e7 e8 e9 +
E E T e2 + e15 e18 e9 I2 I7 p/ e6 e10 e11 * e16 e6 e7 T T e3 e10 p/ e7 I3 F T e12 e4 e11 * e16 F e19 I4 I8 p/ e2 F e5 e12 e13 e2 e3 e4 e5 e6 e7 e9 e17 E ( p/ e3 ( e17 e20 e6 e13 E ) I5 id e14 Transições de I4 por T e7 id e14

66 e1 E I0 - inicial I1 I6 e8 p/ e4 p/ e5 e1 e2 e3 e4 e5 e6 e7 e8 e9 +
E E T e2 + e15 e18 e9 I2 I7 p/ e6 e10 e11 * e16 e6 e7 T T e3 e10 p/ e7 I3 F T e12 e4 e11 * e16 F e19 T I4 I8 p/ e2 F e5 e12 e13 e2 e3 e4 e5 e6 e7 e9 e17 E ( p/ e3 ( e13 e17 e20 e6 E ) I5 id e14 Transições de I4 por T e7 id e14

67 Transições de I4 por F e id e7 id e14
inicial E I0 - inicial I1 I6 e8 p/ e4 p/ e5 e1 e2 e3 e4 e5 e6 e7 e8 e9 + e15 e4 e5 e6 e7 E E T e2 + e15 e18 e9 I2 I7 p/ e6 e10 e11 * e16 e6 e7 T T e3 e10 p/ e7 I3 F T e12 e4 e11 * e16 F e19 T I4 I8 p/ e2 F e5 e12 e13 e2 e3 e4 e5 e6 e7 e9 e17 E ( p/ e3 ( e13 e17 e20 e6 E ) I5 id e14 Transições de I4 por F e id e7 id e14

68 Transições de I4 por F e id e7 id e14
inicial E I0 - inicial I1 I6 e8 p/ e4 p/ e5 e1 e2 e3 e4 e5 e6 e7 e8 e9 + e15 e4 e5 e6 e7 E E T e2 + e15 e18 e9 I2 I7 p/ e6 e10 e11 * e16 e6 e7 T T e3 e10 p/ e7 I3 F T e12 e4 e11 * e16 F e19 T F I4 I8 p/ e2 F e5 e12 e13 e2 e3 e4 e5 e6 e7 e9 e17 E ( p/ e3 ( e13 e17 e20 e6 E ) id I5 id e14 Transições de I4 por F e id e7 id e14

69 e1 E I0 - inicial I1 I6 e8 p/ e4 p/ e5 e1 e2 e3 e4 e5 e6 e7 e8 e9 +
E E T e2 + e15 e18 e9 I2 I7 p/ e6 e10 e11 * e16 e6 e7 T T e3 e10 p/ e7 I3 F T e12 e4 e11 * e16 F e19 T F I4 I8 p/ e2 F e5 e12 e13 e2 e3 e4 e5 e6 e7 e9 e17 E ( p/ e3 ( e17 e20 e6 e13 E ) id I5 id e14 Transições de I4 por ( e7 id e14

70 e1 E I0 - inicial I1 I6 e8 p/ e4 p/ e5 e1 e2 e3 e4 e5 e6 e7 e8 e9 +
E E T e2 + e15 e18 e9 I2 I7 p/ e6 e10 e11 * e16 e6 e7 T T e3 e10 p/ e7 I3 F F T e12 e4 e11 * e16 F e19 T F I4 I8 p/ e2 F e5 e12 e13 e2 e3 e4 e5 e6 e7 e9 e17 E ( p/ e3 ( e13 e17 e20 e6 E ) id I5 id ( e14 Transições de I4 por ( e7 id e14

71 e1 E I0 - inicial I1 I6 e8 p/ e4 p/ e5 e1 e2 e3 e4 e5 e6 e7 e8 e9 +
E E T e2 + e15 e18 e9 I2 I7 p/ e6 e10 e11 * e16 e6 e7 T T e3 e10 p/ e7 I3 F F T e12 e4 e11 * e16 F e19 T F I4 I8 p/ e2 F e5 e12 e13 e2 e3 e4 e5 e6 e7 e9 e17 E ( p/ e3 ( e13 e17 e20 e6 E ) id I5 id ( e14 Transições de I6 por T e7 id e14

72 e1 E I0 - inicial I1 I6 I9 e8 p/ e4 p/ e5 e1 e2 e3 e4 e5 e6 e7 e8 e9 +
T e11 e18 E E T e2 + e15 e18 e9 I2 I7 p/ e6 e10 e11 * e16 e6 e7 T T e3 e10 p/ e7 I3 F F T e12 e4 e11 * e16 F e19 T F I4 I8 p/ e2 F e5 e12 e13 e2 e3 e4 e5 e6 e7 e9 e17 E ( p/ e3 ( e17 e20 e6 e13 E ) id I5 id ( e14 Transições de I6 por T e7 id e14

73 Transições de I6 por F e id e7 id e14
inicial E I0 - inicial I1 I6 I9 e8 p/ e4 p/ e5 e1 e2 e3 e4 e5 e6 e7 e8 e9 + e15 e4 e5 e6 e7 T e11 e18 E E T e2 + e15 e18 e9 I2 I7 p/ e6 e10 e11 * e16 e6 e7 T T e3 e10 p/ e7 I3 F F T e12 e4 e11 * e16 F e19 T F I4 I8 p/ e2 F e5 e12 e13 e2 e3 e4 e5 e6 e7 e9 e17 E ( p/ e3 ( e6 e13 e17 e20 E ) id I5 id ( e14 Transições de I6 por F e id e7 id e14

74 Transições de I6 por F e id id e7 id e14
inicial E I0 - inicial I1 I6 I9 e8 p/ e4 p/ e5 e1 e2 e3 e4 e5 e6 e7 e8 e9 + e15 e4 e5 e6 e7 T e11 e18 E E T e2 + e15 e18 e9 I2 I7 p/ e6 e10 e11 * e16 e6 e7 T T e3 e10 p/ e7 I3 F F F T e12 e4 e11 * e16 F e19 T F I4 I8 p/ e2 F e5 e12 e13 e2 e3 e4 e5 e6 e7 e9 e17 E ( p/ e3 ( e6 e13 e17 e20 E ) id I5 id ( e14 Transições de I6 por F e id id e7 id e14

75 e1 E I0 - inicial I1 I6 I9 e8 p/ e4 p/ e5 e1 e2 e3 e4 e5 e6 e7 e8 e9 +
T e11 e18 E E T e2 + e15 e18 e9 I2 I7 p/ e6 e10 e11 * e16 e6 e7 T T e3 e10 p/ e7 I3 F F F T e12 e4 e11 * e16 F e19 T F I4 I8 p/ e2 F e5 e12 e13 e2 e3 e4 e5 e6 e7 e9 e17 E ( p/ e3 ( e17 e20 e6 e13 E ) id I5 id ( e14 Transições de I6 por ( id e7 id e14

76 e1 E I0 - inicial I1 I6 I9 e8 p/ e4 p/ e5 e1 e2 e3 e4 e5 e6 e7 e8 e9 +
T e11 e18 E E T e2 + e15 e18 e9 I2 I7 p/ e6 e10 e11 * e16 e6 e7 T T e3 e10 p/ e7 I3 F F F T e12 e4 e11 * e16 F e19 ( T F I4 I8 p/ e2 F e5 e12 e13 e2 e3 e4 e5 e6 e7 e9 e17 E ( p/ e3 ( e17 e20 e6 e13 E ) id I5 id ( e14 Transições de I6 por ( id e7 id e14

77 Transições de I7 por F e id id e7 id e14
inicial E I0 - inicial I1 I6 I9 e8 p/ e4 p/ e5 e1 e2 e3 e4 e5 e6 e7 e8 e9 + e15 e4 e5 e6 e7 T e11 e18 E E T e2 + e15 e18 e9 I2 I7 p/ e6 e10 e11 * e16 e6 e7 T T e3 e10 p/ e7 I3 F F F T e12 e4 e11 * e16 F e19 ( T F I4 I8 p/ e2 F e5 e12 e13 e2 e3 e4 e5 e6 e7 e9 e17 E ( p/ e3 ( e13 e17 e20 e6 E ) id I5 id ( e14 Transições de I7 por F e id id e7 id e14

78 Transições de I7 por F e id id e7 id e14
inicial E I0 - inicial I1 I6 I9 e8 p/ e4 p/ e5 e1 e2 e3 e4 e5 e6 e7 e8 e9 + e15 e4 e5 e6 e7 T e11 e18 E E T e2 + e15 e18 e9 I2 I7 I10 F p/ e6 e10 e11 * e16 e6 e7 e19 T T e3 e10 p/ e7 I3 F F F T e12 e4 e11 * e16 F e19 ( T F I4 I8 p/ e2 F e5 e12 e13 e2 e3 e4 e5 e6 e7 e9 e17 E ( p/ e3 ( e17 e20 e6 e13 E ) id I5 id ( e14 Transições de I7 por F e id id e7 id e14

79 e1 E I0 - inicial I1 I6 I9 e8 p/ e4 p/ e5 e1 e2 e3 e4 e5 e6 e7 e8 e9 +
T e11 e18 E E T e2 + e15 e18 e9 I2 I7 I10 F p/ e6 e10 e11 * e16 e6 e7 e19 T T e3 e10 p/ e7 I3 F F F T e12 e4 e11 * e16 F e19 ( T F I4 I8 p/ e2 F e5 e12 e13 e2 e3 e4 e5 e6 e7 e9 e17 E ( p/ e3 ( e6 e13 e17 e20 E ) id I5 id ( e14 Transições de I7 por ( id e7 id e14

80 e1 E I0 - inicial I1 I6 I9 e8 p/ e4 p/ e5 e1 e2 e3 e4 e5 e6 e7 e8 e9 +
T e11 e18 E E T e2 + e15 e18 e9 I2 I7 I10 F p/ e6 e10 e11 * e16 e6 e7 e19 T T e3 e10 p/ e7 I3 ( F F F T e12 e4 e11 * e16 F e19 ( T F I4 I8 p/ e2 F e5 e12 e13 e2 e3 e4 e5 e6 e7 e9 e17 E ( p/ e3 ( e17 e20 e6 e13 E ) id I5 id ( e14 Transições de I7 por ( id e7 id e14

81 e1 E I0 - inicial I1 I6 I9 e8 p/ e4 p/ e5 e1 e2 e3 e4 e5 e6 e7 e8 e9 +
T e11 e18 E E T e2 + e15 e18 e9 I2 I7 I10 F p/ e6 e10 e11 * e16 e6 e7 e19 T T e3 e10 p/ e7 I3 ( F F F T e12 e4 e11 * e16 F e19 ( T F I4 I8 p/ e2 F e5 e12 e13 e2 e3 e4 e5 e6 e7 e9 e17 E ( p/ e3 ( e13 e17 e20 e6 E ) id I5 id ( e14 Transições de I8 por ) id e7 id e14

82 e1 E I0 - inicial I1 I6 I9 e8 p/ e4 p/ e5 e1 e2 e3 e4 e5 e6 e7 e8 e9 +
T e11 e18 E E T e2 + e15 e18 e9 I2 I7 I10 F p/ e6 e10 e11 * e16 e6 e7 e19 T T e3 e10 p/ e7 I3 ( F F F T e12 e4 e11 * e16 F e19 ( T F I4 I8 I11 p/ e2 F ) e5 e12 e13 e2 e3 e4 e5 e6 e7 e9 e17 e20 E ( p/ e3 ( e17 e20 e6 e13 E ) id I5 id ( e14 Transições de I8 por ) id e7 id e14

83 e1 E I0 - inicial I1 I6 I9 e8 p/ e4 p/ e5 e1 e2 e3 e4 e5 e6 e7 e8 e9 +
T e11 e18 E E T e2 + e15 e18 e9 I2 I7 I10 F p/ e6 e10 e11 * e16 e6 e7 e19 T T e3 e10 p/ e7 I3 ( F F F T e12 e4 e11 * e16 F e19 ( T F I4 I8 I11 p/ e2 F ) e5 e12 e13 e2 e3 e4 e5 e6 e7 e9 e17 e20 E ( p/ e3 ( e6 e13 e17 e20 E ) id I5 id ( e14 Transições de I8 por + id e7 id e14

84 e1 E I0 - inicial I1 I6 I9 e8 p/ e4 p/ e5 e1 e2 e3 e4 e5 e6 e7 e8 e9 +
T e11 e18 E E T e2 + e15 e18 e9 I2 I7 I10 F p/ e6 e10 e11 * e16 e6 e7 T e19 T e3 e10 p/ e7 I3 ( F F F T e12 + e4 e11 * e16 F e19 ( T F I4 I8 I11 p/ e2 F ) e5 e12 e13 e2 e3 e4 e5 e6 e7 e9 e17 e20 E ( p/ e3 ( e17 e20 e6 e13 E ) id I5 id ( e14 Transições de I8 por + id e7 id e14

85 e1 E I0 - inicial I1 I6 I9 e8 p/ e4 p/ e5 e1 e2 e3 e4 e5 e6 e7 e8 e9 +
T e11 e18 E E T e2 + e15 e18 e9 I2 I7 I10 F p/ e6 e10 e11 * e16 e6 e7 T e19 T e3 e10 p/ e7 I3 ( F F F T e12 + e4 e11 * e16 F e19 ( T F I4 I8 I11 p/ e2 F ) e5 e12 e13 e2 e3 e4 e5 e6 e7 e9 e17 e20 E ( p/ e3 ( e17 e20 e6 e13 E ) id I5 id ( e14 Transições de I9 por * id e7 id e14

86 AFD completo e1 E I0 - inicial I1 I6 I9 e8 p/ e4 p/ e5
e1 e2 e3 e4 e5 e6 e7 e8 e9 + e15 e4 e5 e6 e7 T e11 e18 E E T e2 + e15 e18 e9 * I2 I7 I10 F p/ e6 e10 e11 * e16 e6 e7 e19 T T e3 e10 p/ e7 I3 ( F F F T e12 + e4 e11 * e16 F e19 ( T F I4 I8 I11 p/ e2 F ) e5 e12 e13 e2 e3 e4 e5 e6 e7 e9 e17 e20 E ( p/ e3 ( e6 e13 e17 e20 E ) id I5 id ( e14 Transições de I9 por * id e7 id e14 AFD completo

87 Algoritmos para transformar um AFND em um AFD:
Fechamento, Goto e EstadosAFD Algoritmo 5.9: Cálculo do Fechamento (I), sendo I um conjunto de itens de uma gramática

88 Fechamento (I) é um conjunto de itens constituídos a partir de I, usando as seguintes regras:
Inicialmente, acrescentar todo item i  I ao Fechamento (I) Se o item i  Fechamento (I) e, no AFND existe uma transição de i para um item j pela cadeia vazia ε, acrescentar o item j ao Fechamento (I), caso ainda aí não esteja Aplicar a regra 2 até que nenhum item seja mais acrescentado ao Fechamento (I)

89 (AαX.) tais que (Aα.X)  I
Algoritmo 5.10: Cálculo do Goto (I, X), sendo I um conjunto de itens de uma gramática e X um de seus terminais ou não-terminais Goto (I, X) é o fechamento do conjunto de todos os itens (AαX.) tais que (Aα.X)  I

90 I = Fechamento ( {a}) e J = Goto (I, X)
Exemplo: Dado o AFND abaixo, calcular I = Fechamento ( {a}) e J = Goto (I, X) ε r t I = Fechamento ( {a}) = { a, X ε a b ε e ε ε ε c f d ε X X q g p ε s

91 I = Fechamento ( {a}) e J = Goto (I, X)
Exemplo: Dado o AFND abaixo, calcular I = Fechamento ( {a}) e J = Goto (I, X) ε r t I = Fechamento ( {a}) = { a, b, c, d X ε a b ε e ε ε ε c f d ε X X q g p ε s

92 I = Fechamento ( {a}) e J = Goto (I, X)
Exemplo: Dado o AFND abaixo, calcular I = Fechamento ( {a}) e J = Goto (I, X) ε r t I = Fechamento ( {a}) = { a, b, c, d, e, f, g} X ε a b ε e ε ε ε c f d ε X X q g p ε s

93 I = Fechamento ( {a}) e J = Goto (I, X)
Exemplo: Dado o AFND abaixo, calcular I = Fechamento ( {a}) e J = Goto (I, X) ε r t I = Fechamento ( {a}) = { a, b, c, d, e, f, g} X ε a b ε e ε ε ε J = Goto (I, X) = Goto ({ a, b, c, d, e, f, g}, X) = c f d ε X X q g p ε s

94 I = Fechamento ( {a}) e J = Goto (I, X)
Exemplo: Dado o AFND abaixo, calcular I = Fechamento ( {a}) e J = Goto (I, X) ε r t I = Fechamento ( {a}) = { a, b, c, d, e, f, g} X ε a b ε e ε ε ε J = Goto (I, X) = Goto ({ a, b, c, d, e, f, g}, X) = Fechamento ({r, p, q}) = c f d ε X X q g p ε s

95 I = Fechamento ( {a}) e J = Goto (I, X)
Exemplo: Dado o AFND abaixo, calcular I = Fechamento ( {a}) e J = Goto (I, X) ε r t I = Fechamento ( {a}) = { a, b, c, d, e, f, g} X ε a b ε e ε ε ε J = Goto (I, X) = Goto ({ a, b, c, d, e, f, g}, X) = Fechamento ({r, p, q}) = {r, p, q c f d ε X X q g p ε s

96 I = Fechamento ( {a}) e J = Goto (I, X)
Exemplo: Dado o AFND abaixo, calcular I = Fechamento ( {a}) e J = Goto (I, X) ε r t I = Fechamento ( {a}) = { a, b, c, d, e, f, g} X ε a b ε e ε ε ε J = Goto (I, X) = Goto ({ a, b, c, d, e, f, g}, X) = Fechamento ({r, p, q}) = {r, p, q, t, s} c f d ε X X q g p ε s

97 I = Fechamento ( {a}) e J = Goto (I, X)
Exemplo: Dado o AFND abaixo, calcular I = Fechamento ( {a}) e J = Goto (I, X) ε r t I a, b, c, d, e, f, g X ε a b ε e X ε ε ε J r, p, q, t, s c f d ε X X q g p ε s

98 Algoritmo 5.11: Calculo do conjunto de estados do AFD para análise SLR
EstadosAFD (G’) é a coleção dos conjuntos dos itens da gramática aumentada G’ Cada conjunto de itens é um estado do AFD

99 EstadosAFD ( gramática aumentada G’ ) {
C  {Fechamento ( {S’.S})} ; Repetir { Para (cada conjunto I  C e cada símbolo X de G’ tal que Goto (I, X)  { } e Goto (I, X) C) { Acrescentar Goto (I, X) a C; } } Até que (nenhum conjunto seja acrescentado a C); Retornar C; No AFD, existe uma transição de Ii para Ij por X, com (Ii , Ij  C) e (X  (N  )) se Goto (Ii, X) = Ij Todos os estados do AFD são finais

100 5.5.7 – Tabela de analise SLR As tabelas de ações e de transições de um analisador sintático LR são baseadas no AFD reconhecedor de prefixos viáveis Algoritmo 5.12: Construção de uma tabela SLR Entrada: Gramática aumentada G’ Saída: Tabelas Ação [e, a] e Goto [e, A] p/ G’ (a   e A  N) Construir C = { I0, I1, I2, , In}, a coleção de conjuntos de itens de G’;

101 e1 E I0 - inicial I1 I6 I9 e8 p/ e4 p/ e5 e1 e2 e3 e4 e5 e6 e7 e8 e9 +
T e11 e18 E E T e2 + e15 e18 e9 * I2 I7 I10 F p/ e6 e10 e11 * e16 e6 e7 e19 T T e3 e10 p/ e7 I3 ( F F F T e12 + e4 e11 * e16 F e19 ( T F I4 I8 I11 p/ e2 F ) e5 e12 e13 e2 e3 e4 e5 e6 e7 e9 e17 e20 E ( p/ e3 ( e6 e13 e17 e20 E ) id I5 id ( e14 id e7 id e14

102 Algoritmo 5.12: Construção de uma tabela SLR
O estado i corresponde a Ii; as ações para o estado i são assim estabelecidas: a) Se (Goto (Ii, a) = Ij) Ação [i, a]  (deslocar, j); b) Se ((A.)  Ii e A  S’) Para todo a  Seguinte (A) Ação [i, a]  (reduzir, A); c) Se ((S’S.)  Ii) Ação [i, $]  (aceitar)

103 Algoritmo 5.12: Construção de uma tabela SLR
Para todo estado i e todo não terminal A Se (Goto (Ii, A) = Ij) Goto [i, A]  j Toda entrada não definida nos passos 2 e 3 são erro’s O estado inicial é o que contém (S’.S)

104 Exemplo: Para a gramática G’ definida anteriormente:
( + * ) e1 e2 e3 e4 e5 e6 e7 I0 - inicial e8 e9 I1 e10 e11 I2 e12 e14 I3 I5 e13 e2 e3 e4 e5 e6 e7 I4 e15 e4 e5 e6 e7 I6 e16 e6 e7 I7 e9 e17 I8 e11 e18 I9 e19 I10 e20 I11 Exemplo: Para a gramática G’ definida anteriormente: 1. Construir C = { I0, I1, I2, , I11}, a coleção de conjuntos de itens de G’;

105 Ação [i, a]  (deslocar, j);
F E T id ( + * ) e1 e2 e3 e4 e5 e6 e7 I0 - inicial e8 e9 I1 e10 e11 I2 e12 e14 I3 I5 e13 e2 e3 e4 e5 e6 e7 I4 e15 e4 e5 e6 e7 I6 e16 e6 e7 I7 e9 e17 I8 e11 e18 I9 e19 I10 e20 I11 2.a) Se (Goto (Ii, a) = Ij) Ação [i, a]  (deslocar, j); id + * ( ) $ d 5 d 4 1 d 6 2 d 7 3 4 5 6 7 8 d 11 9 10 11

106 Item de final de Produção
b) Se ((A.)  Ii e A  S’) Para todo a  Seguinte (A) Ação [i, a]  (reduzir, A); id + * ( ) $ d 5 d 4 1 d 6 2 d 7 3 4 5 6 7 8 d 11 9 10 11 Número da Produção Item de final de Produção Estado do AFD - E’  E. 1 E  E+T. 9 2 E  T. 3 T  T*F. 10 4 T  F. 5 F  (E). 11 6 F  id. Não-terminal Seguinte E + ) $ T + * ) $ F E’ $

107 Item de final de Produção
b) Se ((A.)  Ii e A  S’) Para todo a  Seguinte (A) Ação [i, a]  (reduzir, A); id + * ( ) $ d 5 d 4 1 d 6 2 r 2 d 7 3 r 4 4 5 r 6 6 7 8 d 11 9 r 1 10 r 3 11 r 5 Número da Produção Item de final de Produção Estado do AFD - E’  E. 1 E  E+T. 9 2 E  T. 3 T  T*F. 10 4 T  F. 5 F  (E). 11 6 F  id. Não-terminal Seguinte E + ) $ T + * ) $ F E’ $

108 Item de final de Produção
c) Se ((S’S.)  Ii) Ação [i, $]  (aceitar) id + * ( ) $ d 5 d 4 1 d 6 2 r 2 d 7 3 r 4 4 5 r 6 6 7 8 d 11 9 r 1 10 r 3 11 r 5 Número da Produção Item de final de Produção Estado do AFD - E’  E. 1 E  E+T. 9 2 E  T. 3 T  T*F. 10 4 T  F. 5 F  (E). 11 6 F  id. Não-terminal Seguinte E + ) $ T + * ) $ F E’ $

109 Item de final de Produção
c) Se ((S’S.)  Ii) Ação [i, $]  (aceitar) id + * ( ) $ d 5 d 4 1 d 6 act 2 r 2 d 7 3 r 4 4 5 r 6 6 7 8 d 11 9 r 1 10 r 3 11 r 5 Número da Produção Item de final de Produção Estado do AFD - E’  E. 1 E  E+T. 9 2 E  T. 3 T  T*F. 10 4 T  F. 5 F  (E). 11 6 F  id. Não-terminal Seguinte E + ) $ T + * ) $ F E’ $

110 3) Para todo estado i e todo não- terminal A: Se (Goto (Ii, A) = Ij)
Goto [i, A]  j F E T id ( + * ) e1 e2 e3 e4 e5 e6 e7 I0 - inicial e8 e9 I1 e10 e11 I2 e12 e14 I3 I5 e13 e2 e3 e4 e5 e6 e7 I4 e15 e4 e5 e6 e7 I6 e16 e6 e7 I7 e9 e17 I8 e11 e18 I9 e19 I10 e20 I11 E T F 1 2 3 4 8 5 6 9 7 10 11

111 Tabelas de ações e transições:
Estado inicial: 0 Posições vazias: Erros id + * ( ) $ d 5 d 4 1 d 6 act 2 r 2 d 7 3 r 4 4 5 r 6 6 7 8 d 11 9 r 1 10 r 3 11 r 5 E T F 1 2 3 8 9 10

112 Se houver mais de uma ação para a mesma entrada, a gramática não é SLR; ela pode ser CLR ou LALR.
A linguagem Pascal gera centenas de estados SLR e LALR e milhares de estados CLR; infactível à mão. id + * ( ) $ d 5 d 4 1 d 6 act 2 r 2 d 7 3 r 4 4 5 r 6 6 7 8 d 11 9 r 1 10 r 3 11 r 5 E T F 1 2 3 8 9 10


Carregar ppt "5.5.4 – Métodos para a construção da tabela de análise LR"

Apresentações semelhantes


Anúncios Google