Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouMartim Cambra Alterado mais de 10 anos atrás
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 AXYZ tem 4 itens, a saber: A. XYZ , AX . YZ , AXY . Z e AXYZ . 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 Sa.ABe
inicial S S’S. Início da análise O AFND a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe. A b c A.Abc AA.bc AAb.c AAbc. Pilha Entrada b A.b Ab. abbcde d B.d Bd.
23
Início da análise S’.S S S’S. a A B e S.aABe Sa.ABe SaA.Be
inicial S S’S. Início da análise a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe. A b c A.Abc AA.bc AAb.c AAbc. Pilha Entrada b A.b Ab. abbcde a é prefixo viável Os 2 estados não são finais de produção d B.d Bd. 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 Sa.ABe SaA.Be SaAB.e SaABe.
inicial S S’S. a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe. A b c A.Abc AA.bc AAb.c AAbc. Pilha Entrada b A.b Ab. a bbcde d B.d Bd.
25
Os 3 estados não são finais de produção d B.d Bd.
S’.S inicial S S’S. a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe. A b c A.Abc AA.bc AAb.c AAbc. Pilha Entrada b A.b Ab. a bbcde ab é prefixo viável Os 3 estados não são finais de produção d B.d Bd. Ação: Deslocar b
26
S’.S S S’S. a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe.
inicial S S’S. a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe. A b c A.Abc AA.bc AAb.c AAbc. Pilha Entrada b A.b Ab. ab bcde d B.d Bd.
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 Sa.ABe SaA.Be SaAB.e SaABe. A b c A.Abc AA.bc AAb.c AAbc. Pilha Entrada b A.b Ab. 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 Bd. 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 Sa.ABe SaA.Be SaAB.e SaABe.
inicial S S’S. a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe. A b c A.Abc AA.bc AAb.c AAbc. Pilha Entrada b A.b Ab. aA bcde d B.d Bd.
29
Os 3 estados não são finais de produção d B.d Bd.
S’.S inicial S S’S. a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe. A b c A.Abc AA.bc AAb.c AAbc. Pilha Entrada b A.b Ab. aA bcde aA é prefixo viável aAb é prefixo viável Os 3 estados não são finais de produção d B.d Bd. Ação: Deslocar b
30
S’.S S S’S. a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe.
inicial S S’S. a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe. A b c A.Abc AA.bc AAb.c AAbc. Pilha Entrada b A.b Ab. aAb cde d B.d Bd.
31
O estado não é final de produção d B.d Bd.
S’.S inicial S S’S. a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe. A b c A.Abc AA.bc AAb.c AAbc. Pilha Entrada b A.b Ab. aAb cde aAbc é prefixo viável O estado não é final de produção d B.d Bd. b é lado direito de produção, mas não há redução pois o estado não é final de produção; só no item (Ab.) isso poderia acontecer Ação: Deslocar c
32
S’.S S S’S. a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe.
inicial S S’S. a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe. A b c A.Abc AA.bc AAb.c AAbc. Pilha Entrada b A.b Ab. aAbc de d B.d Bd.
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 Sa.ABe SaA.Be SaAB.e SaABe. A b c A.Abc AA.bc AAb.c AAbc. Pilha Entrada b A.b Ab. aAbc de aAbcd não é prefixo viável O estado é final de produção d Seguinte (A) (d na entrada) d B.d Bd. Ação: Reduzir Abc para A
34
S’.S S S’S. a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe.
inicial S S’S. a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe. A b c A.Abc AA.bc AAb.c AAbc. Pilha Entrada b A.b Ab. aA de d B.d Bd.
35
Os 3 estados não são finais de produção d B.d Bd.
S’.S inicial S S’S. a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe. A b c A.Abc AA.bc AAb.c AAbc. Pilha Entrada b A.b Ab. aA de aA é prefixo viável aAd é prefixo viável Os 3 estados não são finais de produção d B.d Bd. Ação: Deslocar d
36
S’.S S S’S. a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe.
inicial S S’S. a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe. A b c A.Abc AA.bc AAb.c AAbc. Pilha Entrada b A.b Ab. aAd e d B.d Bd.
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 Sa.ABe SaA.Be SaAB.e SaABe. A b c A.Abc AA.bc AAb.c AAbc. Pilha Entrada b A.b Ab. aAd e aAde não é prefixo viável O estado é final de produção e Seguinte (B) (e na entrada) d B.d Bd. Ação: Reduzir d para B
38
S’.S S S’S. a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe.
inicial S S’S. a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe. A b c A.Abc AA.bc AAb.c AAbc. Pilha Entrada b A.b Ab. aAB e d B.d Bd.
39
O estado não é final de produção d B.d Bd.
S’.S inicial S S’S. a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe. A b c A.Abc AA.bc AAb.c AAbc. Pilha Entrada b A.b Ab. aAB e aAB é prefixo viável aABe é prefixo viável O estado não é final de produção d B.d Bd. Ação: Deslocar e
40
S’.S S S’S. a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe.
inicial S S’S. a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe. A b c A.Abc AA.bc AAb.c AAbc. Pilha Entrada b A.b Ab. aABe d B.d Bd.
41
O estado é final de produção d B.d Bd.
S’.S inicial S S’S. a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe. A b c A.Abc AA.bc AAb.c AAbc. Pilha Entrada b A.b Ab. aABe Acabou a entrada O estado é final de produção d B.d Bd. Ação: Reduzir aABe para S
42
S’.S S S’S. a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe.
inicial S S’S. a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe. A b c A.Abc AA.bc AAb.c AAbc. Pilha Entrada b A.b Ab. S d B.d Bd.
43
O estado é final da produção inicial A entrada está vazia d B.d Bd.
S’.S inicial S S’S. a A B e S.aABe Sa.ABe SaA.Be SaAB.e SaABe. A b c A.Abc AA.bc AAb.c AAbc. Pilha Entrada b A.b Ab. S S é prefixo viável O estado é final da produção inicial A entrada está vazia d B.d Bd. 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
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.