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

5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

Embed Size (px)

Citation preview

Page 1: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

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

Tabela de análise LR = Tabela de análise LR =

Tabela de ações Tabela de ações Tabela de Tabela de transiçõestransições

Gramáticas LR(k) Gramáticas LR(k) ou simplesmente ou simplesmente LRLR permitem a construção dessas tabelaspermitem a construção dessas tabelas

YaccYacc usa essas tabelas usa essas tabelas

Gramáticas ambíguas Gramáticas ambíguas não são não são LRLR, mas em , mas em YaccYacc há dispositivos para resolver há dispositivos para resolver ambiguidadesambiguidades

Page 2: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

NNuma uma gramática LRgramática LR, os analisadores por , os analisadores por deslocamento e redução têm a capacidade de deslocamento e redução têm a capacidade de reconhecer asas no topo da pilhareconhecer asas no topo da pilha

Na realidade, eles utilizam um Na realidade, eles utilizam um autômato autômato determinístico reconhecedor de prefixos determinístico reconhecedor de prefixos viáveisviáveis na pilha na pilha

Nesses analisadores, Nesses analisadores, nãonão é necessário é necessário percorrer a pilhapercorrer a pilha para saber quando uma para saber quando uma asaasa aparece aparece no topono topo::

O O estadoestado no topo da pilha no topo da pilha contémcontém toda a toda a informaçãoinformação necessária necessária

Page 3: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

São conhecidos São conhecidos três métodostrês métodos para a para a construção de uma construção de uma tabela de análise LRtabela de análise LR::

Método SLRMétodo SLR ( (simplesimple LR): aplica-se a um LR): aplica-se a um menor número de gramáticas; é o de mais menor número de gramáticas; é o de mais fácil implementaçãofácil implementação

Método CLRMétodo CLR ( (canonicalcanonical LR): mais LR): mais poderoso e de mais difícil implementaçãopoderoso e de mais difícil implementação

Método LALRMétodo LALR ( (look-aheadlook-ahead LR): LR): intermediário em potência e dificuldade de intermediário em potência e dificuldade de implementaçãoimplementação

Page 4: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

Métodos SLRMétodos SLR ( (simplesimple LR), LR), CLRCLR ( (canonicalcanonical LR) e LR) e LALRLALR ( (look-aheadlook-ahead LR): LR):

O O segundo segundo e o e o terceiro métodoterceiro método usam os usam os mesmos princípios do mesmos princípios do primeiroprimeiro e acrescentam e acrescentam a esse informações sobre os a esse informações sobre os átomos átomos seguintesseguintes do que está em análise do que está em análise

O O terceiro métodoterceiro método é uma é uma simplificaçãosimplificação do do segundo, diminuindo muito a segundo, diminuindo muito a memóriamemória gasta gasta no processono processo

É o É o mais usadomais usado na prática na prática YaccYacc usa o método usa o método LALRLALR

Page 5: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

Métodos SLRMétodos SLR ( (simplesimple LR), LR), CLRCLR ( (canonicalcanonical LR) e LR) e LALRLALR ( (look-aheadlook-ahead LR): LR):

Nesta disciplinaNesta disciplina será apresentado somente o será apresentado somente o método SLRmétodo SLR

Os outros dois usam os Os outros dois usam os princípios básicosprincípios básicos desse primeirodesse primeiro

Fundamental é a concepção do Fundamental é a concepção do autômato autômato finito determinísticofinito determinístico, reconhecedor de , reconhecedor de prefixos viáveisprefixos viáveis, para o controle da , para o controle da pilhapilha do do analisadoranalisador

Page 6: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

5.5.5 – Autômato finito não-5.5.5 – Autômato finito não-determinístico LRdeterminístico LR

Origem do autômato finitoOrigem do autômato finito determinístico determinístico ((AFDAFD): ):

Autômato finito Autômato finito não-determinísticonão-determinístico ((AFNDAFND) reconhecedor de ) reconhecedor de prefixos viáveisprefixos viáveis

  O O AFNDAFND é transformado num é transformado num AFD AFD equivalenteequivalente

Seja então a Seja então a concepção de um AFNDconcepção de um AFND reconhecedor de reconhecedor de prefixos viáveisprefixos viáveis de uma de uma gramáticagramática

Page 7: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

Os Os estadosestados de um de um AFNDAFND são chamados são chamados itensitens de produções de produções

Item de produçãoItem de produção de uma gramática é a de uma gramática é a mesma mesma produçãoprodução contendo um contendo um pontoponto ( (‘.’‘.’) em ) em alguma posição do lado direitoalguma posição do lado direito

A produção A produção AAXYZXYZ tem 4 itens, a saber: tem 4 itens, a saber:

AA. XYZ . XYZ ,, A AX . YZ X . YZ ,,

AAXY . Z XY . Z ee A AXYZ .XYZ .

A produção vazia A produção vazia AAεε tem 1 item : tem 1 item : AA . .

Page 8: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

Interpretação de um item:Interpretação de um item:

Seja o item Seja o item A A αα..ββ

É um É um estadoestado do AFND no qual já foi vista na do AFND no qual já foi vista na entrada uma sub-sentença derivada de entrada uma sub-sentença derivada de α α e se e se espera encontrar a seguir outra derivada deespera encontrar a seguir outra derivada de β β

O O AFND AFND de uma gramática trabalha com a de uma gramática trabalha com a mesma mesma aumentadaaumentada de um novo símbolo inicial de um novo símbolo inicial S’S’ e uma nova produção, e uma nova produção, S’S’SS

Page 9: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

Exemplo:Exemplo: gramática de expressões aumentada e gramática de expressões aumentada e seus 20 itensseus 20 itens

Um Um itemitem pode ser representado por um pode ser representado por um par de par de inteirosinteiros: :

O primeiro sendo o O primeiro sendo o número da produçãonúmero da produção e o e o segundo a segundo a posição do pontoposição do ponto

Page 10: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

Num Num AFNDAFND, há , há dois tiposdois tipos de transições: de transições:

De qualquer estado do tipo De qualquer estado do tipo A A .X.X para para outro estado do tipo outro estado do tipo A A X.X., cuja condição , cuja condição para transição é o símbolo para transição é o símbolo XX ( (X X {N {N }}))

De qualquer estado do tipo De qualquer estado do tipo A A .B.B para para outro estado do tipo outro estado do tipo B B . ., cuja condição para , cuja condição para transição é o símbolo transição é o símbolo εε (vazio) (vazio)

A .X A X.

A .B B .

X

ε

O 2º tipo caracteriza o não-determinismo

Page 11: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

p/ e4

+E

e1: E’ .E inicial

Ee8: E’ E.

e2: E

.E+T e9: E E.

+T e15: E

E+.T

T e18: E

E+T.

e3: E .T T

e10: E T.

e4: T .T*F T e11: T

T.*F e16: T

T*.F

F e19: T

T*F.

*

e5: T .F F

e12: T F.

e6: F .(E) (

e13: F (.E) e17: F (E.) )

e20: F (E). E

e7: F .id id

e14: F id.

p/ e5

p/ e6

p/ e7

p/ e2

p/ e3

AFND da gramática anterior

Todos os estados são finais

Page 12: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

e1: E’ .E inicial

Ee8: E’ E.

e2: E

.E+T

E e9: E E.

+T e15: E

E+.T

T e18: E

E+T.

+

e3: E .T T

e10: E T.

e4: T .T*F T e11: T

T.*F e16: T

T*.F

F e19: T

T*F.

*

e5: T .F F

e12: T F.

e6: F .(E) (

e13: F (.E) e17: F (E.) )

e20: F (E). E

e7: F .id id

e14: F id.

p/ e4

p/ e5

p/ e6

p/ e7

p/ e2

p/ e3

Na impossibilidade de transição, o percurso sobre o prefixo é paralisado

O prefixo a ser analisado é o conteúdo da pilha

Page 13: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

e1: E’ .E inicial

Ee8: E’ E.

e2: E

.E+T

E e9: E E.

+T e15: E

E+.T

T e18: E

E+T.

+

e3: E .T T

e10: E T.

e4: T .T*F T e11: T

T.*F e16: T

T*.F

F e19: T

T*F.

*

e5: T .F F

e12: T F.

e6: F .(E) (

e13: F (.E) e17: F (E.) )

e20: F (E). E

e7: F .id id

e14: F id.

p/ e4

p/ e5

p/ e6

p/ e7

p/ e2

p/ e3

Seja a análise do prefixo E + ( T * id

E + ( T * id

Page 14: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

e1: E’ .E inicial

Ee8: E’ E.

e2: E

.E+T

E e9: E E.

+T e15: E

E+.T

T e18: E

E+T.

+

e3: E .T T

e10: E T.

e4: T .T*F T e11: T

T.*F e16: T

T*.F

F e19: T

T*F.

*

e5: T .F F

e12: T F.

e6: F .(E) (

e13: F (.E) e17: F (E.) )

e20: F (E). E

e7: F .id id

e14: F id.

p/ e4

p/ e5

p/ e6

p/ e7

p/ e2

p/ e3

E + ( T * idE + ( T * id

Page 15: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

e1: E’ .E inicial

Ee8: E’ E.

e2: E

.E+T

E e9: E E.

+T e15: E

E+.T

T e18: E

E+T.

+

e3: E .T T

e10: E T.

e4: T .T*F T e11: T

T.*F e16: T

T*.F

F e19: T

T*F.

*

e5: T .F F

e12: T F.

e6: F .(E) (

e13: F (.E) e17: F (E.) )

e20: F (E). E

e7: F .id id

e14: F id.

p/ e4

p/ e5

p/ e6

p/ e7

p/ e2

p/ e3

E + ( T * idE + ( T * id

Page 16: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

e1: E’ .E inicial

Ee8: E’ E.

e2: E

.E+T

E e9: E E.

+T e15: E

E+.T

T e18: E

E+T.

+

e3: E .T T

e10: E T.

e4: T .T*F T e11: T

T.*F e16: T

T*.F

F e19: T

T*F.

*

e5: T .F F

e12: T F.

e6: F .(E) (

e13: F (.E) e17: F (E.) )

e20: F (E). E

e7: F .id id

e14: F id.

p/ e4

p/ e5

p/ e6

p/ e7

p/ e2

p/ e3

E + ( T * idE + ( T * id

Page 17: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

e1: E’ .E inicial

Ee8: E’ E.

e2: E

.E+T

E e9: E E.

+T e15: E

E+.T

T e18: E

E+T.

+

e3: E .T T

e10: E T.

e4: T .T*F T e11: T

T.*F e16: T

T*.F

F e19: T

T*F.

*

e5: T .F F

e12: T F.

e6: F .(E) (

e13: F (.E) e17: F (E.) )

e20: F (E). E

e7: F .id id

e14: F id.

p/ e4

p/ e5

p/ e6

p/ e7

p/ e2

p/ e3

E + ( T * idE + ( T * id

Page 18: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

e1: E’ .E inicial

Ee8: E’ E.

e2: E

.E+T

E e9: E E.

+T e15: E

E+.T

T e18: E

E+T.

+

e3: E .T T

e10: E T.

e4: T .T*F T e11: T

T.*F e16: T

T*.F

F e19: T

T*F.

*

e5: T .F F

e12: T F.

e6: F .(E) (

e13: F (.E) e17: F (E.) )

e20: F (E). E

e7: F .id id

e14: F id.

p/ e4

p/ e5

p/ e6

p/ e7

p/ e2

p/ e3

E + ( T * idE + ( T * id

Page 19: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

e1: E’ .E inicial

Ee8: E’ E.

e2: E

.E+T

E e9: E E.

+T e15: E

E+.T

T e18: E

E+T.

+

e3: E .T T

e10: E T.

e4: T .T*F T e11: T

T.*F e16: T

T*.F

F e19: T

T*F.

*

e5: T .F F

e12: T F.

e6: F .(E) (

e13: F (.E) e17: F (E.) )

e20: F (E). E

e7: F .id id

e14: F id.

p/ e4

p/ e5

p/ e6

p/ e7

p/ e2

p/ e3

E + ( T * idE + ( T * id

Page 20: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

e1: E’ .E inicial

Ee8: E’ E.

e2: E

.E+T

E e9: E E.

+T e15: E

E+.T

T e18: E

E+T.

+

e3: E .T T

e10: E T.

e4: T .T*F T e11: T

T.*F e16: T

T*.F

F e19: T

T*F.

*

e5: T .F F

e12: T F.

e6: F .(E) (

e13: F (.E) e17: F (E.) )

e20: F (E). E

e7: F .id id

e14: F id.

p/ e4

p/ e5

p/ e6

p/ e7

p/ e2

p/ e3

E + ( T * idE + ( T * id - Prefixo viável

E + ( T * id - Prefixo viável

O prefixo E + ( T * id ) é inviável

Page 21: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

No No exemplo anteriorexemplo anterior, analisou-se apenas um , analisou-se apenas um prefixoprefixo

No No exemplo a seguir exemplo a seguir será analisada uma será analisada uma sentençasentença e também os e também os prefixosprefixos necessários para essa análise necessários para essa análise

Exemplo: Exemplo: Seja a Seja a gramáticagramática do exemplo inicial do exemplo inicial aumentadaaumentada

SS’ ’ S S S S a A B e A a A B e A A b c | b B A b c | b B d d

E a análise da sentença E a análise da sentença abbcdeabbcde

Relembrando sua redução:Relembrando sua redução:

a a bb b c d e b c d e a a A b c A b c d e d e a A a A dd e e a A B e a A B e SS

Page 22: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

A

a eB

cb

A

d

b

SS’.S inicial S’S.

S.aABe

Sa.ABe

SaA.Be

SaAB.e

SaABe.

A.Abc AA.bc AAb.c AAbc.

A.b Ab.

B.d Bd.

abbcdeabbcde

Pilha Entrada

O AFNDInício da análise

Page 23: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

S’.S inicial

SS’S.

S.aABe

a Sa.ABe

SaA.B

e B SaAB.

e SaABe

.

A.Abc A

AA.bc AAb.c AAbc.

A.b Ab.

B.d Bd.

A e

b c

b

d

abbcdeabbcde

Pilha Entrada

a é prefixo viávelOs 2 estados não são finais de produção

Ação: Deslocar a

Início da análise

Obs.: só se pode reduzir, caso pelo menos um dos estados seja final de produção

Page 24: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

S’.S inicial

SS’S.

S.aABe

a Sa.ABe

a

SaA.Be

B SaAB.e

SaABe.

A.Abc A

AA.bc AAb.c AAbc.

A.b Ab.

B.d Bd.

A e

b c

b

d

bbcdebbcde

Pilha Entrada

Page 25: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

S’.S inicial

SS’S.

S.aABe

a Sa.ABe

a

SaA.Be

B SaAB.e

SaABe.

A.Abc A

AA.bc AAb.c AAbc.

A.b Ab.

B.d Bd.

A e

b c

b

d

bbcdebbcde

Pilha Entrada

ab é prefixo viávelOs 3 estados não são finais de produção

Ação: Deslocar b

Page 26: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

S’.S inicial

SS’S.

S.aABe

a Sa.ABe

ab

SaA.Be

B SaAB.e

SaABe.

A.Abc A

AA.bc AAb.c AAbc.

A.b Ab.

B.d Bd.

A e

b c

b

d

bcdebcde

Pilha Entrada

Page 27: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

S’.S inicial

SS’S.

S.aABe

a Sa.ABe

ab

SaA.Be

B SaAB.e

SaABe.

A.Abc A

AA.bc AAb.c AAbc.

A.b Ab.

B.d Bd.

A e

b c

b

d

bcdebcde

Pilha Entrada

abb não é prefixo viável: não deslocar bO estado é final de produção;b Seguinte (A) (b na entrada)

Ação: Reduzir b para A

Se b Seguinte (A), não reduziria;

Nesse caso haveria erro

Page 28: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

S’.S inicial

SS’S.

S.aABe

a Sa.ABe

aA

SaA.Be

B SaAB.e

SaABe.

A.Abc A

AA.bc AAb.c AAbc.

A.b Ab.

B.d Bd.

A e

b c

b

d

bcdebcde

Pilha Entrada

Page 29: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

S’.S inicial

SS’S.

S.aABe

a Sa.ABe

aA

SaA.Be

B SaAB.e

SaABe.

A.Abc A

AA.bc AAb.c AAbc.

A.b Ab.

B.d Bd.

A e

b c

b

d

bcdebcde

Pilha Entrada

aA é prefixo viávelaAb é prefixo viávelOs 3 estados não são finais de produção

Ação: Deslocar b

Page 30: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

S’.S inicial

SS’S.

S.aABe

a Sa.ABe

aAb

SaA.Be

B SaAB.e

SaABe.

A.Abc A

AA.bc AAb.c AAbc.

A.b Ab.

B.d Bd.

A e

b c

b

d

cdecde

Pilha Entrada

Page 31: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

S’.S inicial

SS’S.

S.aABe

a Sa.ABe

aAb

SaA.Be

B SaAB.e

SaABe.

A.Abc A

AA.bc AAb.c AAbc.

A.b Ab.

B.d Bd.

A e

b c

b

d

cdecde

Pilha Entrada

aAbc é prefixo viávelO estado não é final de produção

Ação: Deslocar c

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

Page 32: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

S’.S inicial

SS’S.

S.aABe

a Sa.ABe

aAbc

SaA.Be

B SaAB.e

SaABe.

A.Abc A

AA.bc AAb.c AAbc.

A.b Ab.

B.d Bd.

A e

b c

b

d

dede

Pilha Entrada

Page 33: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

S’.S inicial

SS’S.

S.aABe

a Sa.ABe

aAbc

SaA.Be

B SaAB.e

SaABe.

A.Abc A

AA.bc AAb.c AAbc.

A.b Ab.

B.d Bd.

A e

b c

b

d

dede

Pilha Entrada

aAbcd não é prefixo viávelO estado é final de produçãod Seguinte (A) (d na entrada)

Ação: Reduzir Abc para A

Page 34: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

S’.S inicial

SS’S.

S.aABe

a Sa.ABe

aA

SaA.Be

B SaAB.e

SaABe.

A.Abc A

AA.bc AAb.c AAbc.

A.b Ab.

B.d Bd.

A e

b c

b

d

dede

Pilha Entrada

Page 35: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

S’.S inicial

SS’S.

S.aABe

a Sa.ABe

aA

SaA.Be

B SaAB.e

SaABe.

A.Abc A

AA.bc AAb.c AAbc.

A.b Ab.

B.d Bd.

A e

b c

b

d

dede

Pilha Entrada

aA é prefixo viávelaAd é prefixo viávelOs 3 estados não são finais de produção

Ação: Deslocar d

Page 36: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

S’.S inicial

SS’S.

S.aABe

a Sa.ABe

aAd

SaA.Be

B SaAB.e

SaABe.

A.Abc A

AA.bc AAb.c AAbc.

A.b Ab.

B.d Bd.

A e

b c

b

d

ee

Pilha Entrada

Page 37: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

S’.S inicial

SS’S.

S.aABe

a Sa.ABe

aAd

SaA.Be

B SaAB.e

SaABe.

A.Abc A

AA.bc AAb.c AAbc.

A.b Ab.

B.d Bd.

A e

b c

b

d

ee

Pilha Entrada

aAde não é prefixo viávelO estado é final de produçãoe Seguinte (B) (e na entrada)

Ação: Reduzir d para B

Page 38: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

S’.S inicial

SS’S.

S.aABe

a Sa.ABe

aAB

SaA.Be

B SaAB.e

SaABe.

A.Abc A

AA.bc AAb.c AAbc.

A.b Ab.

B.d Bd.

A e

b c

b

d

ee

Pilha Entrada

Page 39: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

S’.S inicial

SS’S.

S.aABe

a Sa.ABe

aAB

SaA.Be

B SaAB.e

SaABe.

A.Abc A

AA.bc AAb.c AAbc.

A.b Ab.

B.d Bd.

A e

b c

b

d

ee

Pilha Entrada

aAB é prefixo viávelaABe é prefixo viávelO estado não é final de produção

Ação: Deslocar e

Page 40: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

S’.S inicial

SS’S.

S.aABe

a Sa.ABe

aABe

SaA.Be

B SaAB.e

SaABe.

A.Abc A

AA.bc AAb.c AAbc.

A.b Ab.

B.d Bd.

A e

b c

b

d

Pilha Entrada

Page 41: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

S’.S inicial

SS’S.

S.aABe

a Sa.ABe

aABe

SaA.Be

B SaAB.e

SaABe.

A.Abc A

AA.bc AAb.c AAbc.

A.b Ab.

B.d Bd.

A e

b c

b

d

Pilha Entrada

Acabou a entradaO estado é final de produção

Ação: Reduzir aABe para S

Page 42: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

S’.S inicial

SS’S.

S.aABe

a Sa.ABe

S

SaA.Be

B SaAB.e

SaABe.

A.Abc A

AA.bc AAb.c AAbc.

A.b Ab.

B.d Bd.

A e

b c

b

d

Pilha Entrada

Page 43: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

S’.S inicial

SS’S.

S.aABe

a Sa.ABe

S

SaA.Be

B SaAB.e

SaABe.

A.Abc A

AA.bc AAb.c AAbc.

A.b Ab.

B.d Bd.

A e

b c

b

d

Pilha Entrada

S é prefixo viávelO estado é final da produção inicialA entrada está vazia

Ação: Aceitar a sentença

Se a entrada não estivesse vazia: erro

Page 44: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

Observações:Observações:

Se não chegar ao final de alguma produção e o Se não chegar ao final de alguma produção e o deslocamento for inviável: deslocamento for inviável: erro na sentençaerro na sentença

Se deslocamento for viável, tendo chegado ao Se deslocamento for viável, tendo chegado ao final de alguma produção final de alguma produção AA, mas , mas entrada entrada Seguinte(A)Seguinte(A): : deslocadesloca

Se deslocamento for inviável, tendo chegado ao Se deslocamento for inviável, tendo chegado ao final de alguma produção final de alguma produção AA, mas , mas entrada entrada Seguinte(A)Seguinte(A): : erro na sentençaerro na sentença

Se deslocamento for viável, tendo chegado ao Se deslocamento for viável, tendo chegado ao final de alguma produção final de alguma produção AA e e entrada entrada Seguinte(A)Seguinte(A): : conflito shift-reduceconflito shift-reduce

Se deslocamento for inviável, tendo chegado ao Se deslocamento for inviável, tendo chegado ao final de duas produções e final de duas produções e entrada entrada Seguinte(Ambos lados esquerdos)Seguinte(Ambos lados esquerdos): : conflito conflito reduce-reducereduce-reduce

Page 45: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

Diferenças entre o método SLRDiferenças entre o método SLR e os métodos e os métodos CLRCLR e e LALRLALR::

A principal diferença está em A principal diferença está em conflitosconflitos que que aparecem no primeiro método e são aparecem no primeiro método e são resolvidosresolvidos nos outros doisnos outros dois

Exemplo:Exemplo: seja uma gramática não-ambígua e a seja uma gramática não-ambígua e a seguinte situação na seguinte situação na Pilha Pilha Entrada Entrada

Seja por hipótese o deslocamento de Seja por hipótese o deslocamento de a a viável, a viável, a existência da produção existência da produção AAα e α e aa Seguinte(A) Seguinte(A)

O método O método SLRSLR visto notificará conflito visto notificará conflito shift-shift-reducereduce

β α a _ _ _ _a _ _ _ _Pilha Entrada

Page 46: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

Os métodos Os métodos CLRCLR e e LALRLALR exploram as duas exploram as duas alternativas desse conflitoalternativas desse conflito

Na alternativa de redução, Na alternativa de redução, Pilha Pilha Entrada Entrada fica:fica:

Há casos em que Há casos em que βA βA não contém asa enão contém asa e βAa βAa não é não é viável, ou seja, não pode reduzir nem deslocarviável, ou seja, não pode reduzir nem deslocar

Então a hipótese da redução de Então a hipótese da redução de para para AA pode pode ser descartada e o ser descartada e o conflitoconflito detectado pelo detectado pelo método método SLRSLR não é real não é real

β α a _ _ _ _a _ _ _ _Pilha Entrada

β A a _ _ _ _a _ _ _ _Pilha Entrada

Page 47: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

Conclui-se que os estados do Conclui-se que os estados do AFNDAFND do método do método SLRSLR não têm informações do contexto mais à não têm informações do contexto mais à esquerda (esquerda (), afim de decidir por um ), afim de decidir por um shiftshift diante de um diante de um reducereduce falso falso

Há Há gramáticas não-ambíguasgramáticas não-ambíguas para as quais, para as quais, qualquerqualquer método LR gera tabelas de ações método LR gera tabelas de ações contendo contendo conflitosconflitos

Felizmente, tais gramáticas podem geralmente Felizmente, tais gramáticas podem geralmente ser ser evitadasevitadas para aplicações em para aplicações em linguagens linguagens de programaçãode programação

Page 48: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

5.5.6 – Autômato finito determinístico 5.5.6 – Autômato finito determinístico LRLR

O percurso em um O percurso em um AFNDAFND consome consome muito muito tempotempo; melhor é ; melhor é transformátransformá-lo em um -lo em um AFDAFD

Seja agora a Seja agora a transformaçãotransformação de um de um AFNDAFND num num AFDAFD equivalente equivalente

Cada Cada estadoestado do do AFDAFD é representado por um é representado por um conjunto de itensconjunto de itens das produções da gramática das produções da gramática

Um Um itemitem pode estar em pode estar em mais de ummais de um desses desses conjuntosconjuntos

Page 49: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

e1 inicial

e8

e2 e9 e1

5 e18

e3 e1

0

e4 e11 e16 e19

e5 e12

e6 e13 e17 e20

e7 e1

4

E

E T+

T

T F*

F

()E

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

Page 50: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

e1 inicial

Ee8

e2 E e9 e1

5

T e18 +

e3 T e1

0

e4 T e11 e16 F e19 *

e5 F

e12

e6

(e13 e17 ) e20 E

e7 id e1

4

p/ e4

p/ e5

p/ e6

p/ e7

p/ e2

p/ e3

Itens acessados por e1

e1 e2

e3 e4 e5 e6 e7

I0 - inicial

Page 51: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

e1 inicial

Ee8

e2 E e9 e1

5

T e18 +

e3 T e1

0

e4 T e11 e16 F e19 *

e5 F

e12

e6

(e13 e17 ) e20 E

e7 id e1

4

p/ e4

p/ e5

p/ e6

p/ e7

p/ e2

p/ e3

Transições de I0 por E

e1 e2

e3 e4 e5 e6 e7

I0 - inicial

Page 52: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

e1 inicial

Ee8

e2 E e9 e1

5

T e18 +

e3 T e1

0

e4 T e11 e16 F e19 *

e5 F

e12

e6

(e13 e17 ) e20 E

e7 id e1

4

p/ e4

p/ e5

p/ e6

p/ e7

p/ e2

p/ e3

e1 e2

e3 e4 e5 e6 e7

I0 - inicial

Transições de I0 por E

e8

e9

I1

E

Page 53: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

e1 inicial

Ee8

e2 E e9 e1

5

T e18 +

e3 T e1

0

e4 T e11 e16 F e19 *

e5 F

e12

e6

(e13 e17 ) e20 E

e7 id e1

4

p/ e4

p/ e5

p/ e6

p/ e7

p/ e2

p/ e3

e1 e2

e3 e4 e5 e6 e7

I0 - inicial e

8

e9

I1

E

Transições de I0 por T

Page 54: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

T

e1 inicial

Ee8

e2 E e9 e1

5

T e18 +

e3 T

e10

e4 T e11 e16 F e19 *

e5 F

e12

e6

(e13 e17 ) e20 E

e7 id e1

4

p/ e4

p/ e5

p/ e6

p/ e7

p/ e2

p/ e3

e1 e2

e3 e4 e5 e6 e7

I0 - inicial

Transições de I0 por T

e8

e9

I1

e1

0

e1

1

I2

E

Page 55: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

T

e1 inicial

Ee8

e2 E e9 e1

5

T e18 +

e3 T

e10

e4 T e11 e16 F e19 *

e5 F

e12

e6

(e13 e17 ) e20 E

e7 id e1

4

p/ e4

p/ e5

p/ e6

p/ e7

p/ e2

p/ e3

e1 e2

e3 e4 e5 e6 e7

I0 - inicial e

8

e9

I1

e1

0

e1

1

I2

E

Transições de I0 por F e id

Page 56: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

F

id

e1 inicial

Ee8

e2 E e9 e1

5

T e18 +

e3 T e1

0

e4 T e11 e16 F e19 *

e5 F

e12

e6

(e13 e17 ) e20 E

e7 id e14

p/ e4

p/ e5

p/ e6

p/ e7

p/ e2

p/ e3

e1 e2

e3 e4 e5 e6 e7

I0 - inicial

Transições de I0 por F e id

e8

e9

I1

e1

0

e1

1

I2

E

T

e1

2

e1

4

I3

I5

Page 57: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

F

id

e1 inicial

Ee8

e2 E e9 e1

5

T e18 +

e3 T e1

0

e4 T e11 e16 F e19 *

e5 F

e12

e6

(e13 e17 ) e20 E

e7 id e14

p/ e4

p/ e5

p/ e6

p/ e7

p/ e2

p/ e3

e1 e2

e3 e4 e5 e6 e7

I0 - inicial e

8

e9

I1

e1

0

e1

1

I2

E

T

e1

2

e1

4

I3

I5

Transições de I0 por (

Page 58: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

(

e1 inicial

Ee8

e2 E e9 e1

5

T e18 +

e3 T e1

0

e4 T e11 e16 F e19 *

e5 F

e12

e6

(e13 e17 ) e20 E

e7 id e1

4

p/ e4

p/ e5

p/ e6

p/ e7

p/ e2

p/ e3

e1 e2

e3 e4 e5 e6 e7

I0 - inicial

Transições de I0 por (

e8

e9

I1

e1

0

e1

1

I2

E

T

e1

2

e1

4

I3

I5

e13 e2

e3 e4 e5 e6 e7

I4

F

id

Page 59: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

(

e1 inicial

Ee8

e2 E e9 e1

5

T e18 +

e3 T e1

0

e4 T e11 e16 F e19 *

e5 F

e12

e6

(e13 e17 ) e20 E

e7 id e1

4

p/ e4

p/ e5

p/ e6

p/ e7

p/ e2

p/ e3

e1 e2

e3 e4 e5 e6 e7

I0 - inicial e

8

e9

I1

e1

0

e1

1

I2

E

T

e1

2

e1

4

I3

I5

e13 e2

e3 e4 e5 e6 e7

I4

F

idTransições de I1 por +

Page 60: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

+

e1 inicial

Ee8

e2 E e9 e1

5

T e18 +

e3 T e1

0

e4 T e11 e16 F e19 *

e5 F

e12

e6

(e13 e17 ) e20 E

e7 id e1

4

p/ e4

p/ e5

p/ e6

p/ e7

p/ e2

p/ e3

e1 e2

e3 e4 e5 e6 e7

I0 - inicial

Transições de I1 por +

e8

e9

I1

e1

0

e1

1

I2

E

T

e1

2

e1

4

I3

I5

e13 e2

e3 e4 e5 e6 e7

I4

e15

e4 e5 e6 e7

I6

F

id

(

Page 61: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

+

e1 inicial

Ee8

e2 E e9 e1

5

T e18 +

e3 T e1

0

e4 T e11 e16 F e19 *

e5 F

e12

e6

(e13 e17 ) e20 E

e7 id e1

4

p/ e4

p/ e5

p/ e6

p/ e7

p/ e2

p/ e3

e1 e2

e3 e4 e5 e6 e7

I0 - inicial e

8

e9

I1

e1

0

e1

1

I2

E

T

e1

2

e1

4

I3

I5

e13 e2

e3 e4 e5 e6 e7

I4

e15

e4 e5 e6 e7

I6

F

id

(

Transições de I2 por *

Page 62: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

*

e1 inicial

Ee8

e2 E

e9e1

5

T e18 +

e3 T

e10

e4 T e11 e16 F e19 *

e5 F

e12

e6

(e13 e17 ) e20 E

e7 id e1

4

p/ e4

p/ e5

p/ e6

p/ e7

p/ e2

p/ e3

e1 e2

e3 e4 e5 e6 e7

I0 - inicial

Transições de I2 por *

e8

e9

I1

e1

0

e1

1

I2

E

T

e1

2

e1

4

I3

I5

e13 e2

e3 e4 e5 e6 e7

I4

e15

e4 e5 e6 e7

I6

F

id

(

+

e16

e6 e7

I7

Page 63: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

*

e1 inicial

Ee8

e2 E

e9e1

5

T e18 +

e3 T

e10

e4 T e11 e16 F e19 *

e5 F

e12

e6

(e13 e17 ) e20 E

e7 id e1

4

p/ e4

p/ e5

p/ e6

p/ e7

p/ e2

p/ e3

e1 e2

e3 e4 e5 e6 e7

I0 - inicial e

8

e9

I1

e1

0

e1

1

I2

E

T

e1

2

e1

4

I3

I5

e13 e2

e3 e4 e5 e6 e7

I4

e15

e4 e5 e6 e7

I6

F

id

(

+

e16

e6 e7

I7

Transições de I4 por E

Page 64: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

e1 inicial

Ee8

e2 E

e9e1

5

T e18 +

e3 T e1

0

e4 T e11 e16 F e19 *

e5 F

e12

e6

(e13 e17 ) e20 E

e7 id e1

4

p/ e4

p/ e5

p/ e6

p/ e7

p/ e2

p/ e3

e1 e2

e3 e4 e5 e6 e7

I0 - inicial

Transições de I4 por E

e8

e9

I1

e1

0

e1

1

I2

E

T

e1

2

e1

4

I3

I5

e13 e2

e3 e4 e5 e6 e7

I4

e15

e4 e5 e6 e7

I6

F

id

(

+

e16

e6 e7

I7

*

e9

e1

7

I8

E

Page 65: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

e1 inicial

Ee8

e2 E

e9e1

5

T e18 +

e3 T e1

0

e4 T e11 e16 F e19 *

e5 F

e12

e6

(e13 e17 ) e20 E

e7 id e1

4

p/ e4

p/ e5

p/ e6

p/ e7

p/ e2

p/ e3

e1 e2

e3 e4 e5 e6 e7

I0 - inicial e

8

e9

I1

e1

0

e1

1

I2

E

T

e1

2

e1

4

I3

I5

e13 e2

e3 e4 e5 e6 e7

I4

e15

e4 e5 e6 e7

I6

F

id

(

+

e16

e6 e7

I7

*

e9

e1

7

I8

E

Transições de I4 por T

Page 66: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

e1 inicial

Ee8

e2 E

e9e1

5

T e18 +

e3 T

e10

e4 T e11 e16 F e19 *

e5 F

e12

e6

(e13 e17 ) e20 E

e7 id e1

4

p/ e4

p/ e5

p/ e6

p/ e7

p/ e2

p/ e3

e1 e2

e3 e4 e5 e6 e7

I0 - inicial

Transições de I4 por T

e8

e9

I1

e1

0

e1

1

I2

E

T

e1

2

e1

4

I3

I5

e13 e2

e3 e4 e5 e6 e7

I4

e15

e4 e5 e6 e7

I6

F

id

(

+

e16

e6 e7

I7

*

e9

e1

7

I8

E

T

Page 67: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

e1 inicial

Ee8

e2 E

e9e1

5

T e18 +

e3 T

e10

e4 T e11 e16 F e19 *

e5 F

e12

e6

(e13 e17 ) e20 E

e7 id e1

4

p/ e4

p/ e5

p/ e6

p/ e7

p/ e2

p/ e3

e1 e2

e3 e4 e5 e6 e7

I0 - inicial e

8

e9

I1

e1

0

e1

1

I2

E

T

e1

2

e1

4

I3

I5

e13 e2

e3 e4 e5 e6 e7

I4

e15

e4 e5 e6 e7

I6

F

id

(

+

e16

e6 e7

I7

*

e9

e1

7

I8

E

T

Transições de I4 por F e id

Page 68: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

F

id

e1 inicial

Ee8

e2 E

e9e1

5

T e18 +

e3 T e1

0

e4 T e11 e16 F e19 *

e5 F

e12

e6

(e13 e17 ) e20 E

e7 id e1

4

p/ e4

p/ e5

p/ e6

p/ e7

p/ e2

p/ e3

e1 e2

e3 e4 e5 e6 e7

I0 - inicial

Transições de I4 por F e id

e8

e9

I1

e1

0

e1

1

I2

E

T

e1

2

e1

4

I3

I5

e13 e2

e3 e4 e5 e6 e7

I4

e15

e4 e5 e6 e7

I6

F

id

(

+

e16

e6 e7

I7

*

e9

e1

7

I8

E

T

Page 69: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

F

id

e1 inicial

Ee8

e2 E

e9e1

5

T e18 +

e3 T e1

0

e4 T e11 e16 F e19 *

e5 F

e12

e6

(e13 e17 ) e20 E

e7 id e1

4

p/ e4

p/ e5

p/ e6

p/ e7

p/ e2

p/ e3

e1 e2

e3 e4 e5 e6 e7

I0 - inicial e

8

e9

I1

e1

0

e1

1

I2

E

T

e1

2

e1

4

I3

I5

e13 e2

e3 e4 e5 e6 e7

I4

e15

e4 e5 e6 e7

I6

F

id

(

+

e16

e6 e7

I7

*

e9

e1

7

I8

E

T

Transições de I4 por (

Page 70: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

e1 inicial

Ee8

e2 E

e9e1

5

T e18 +

e3 T e1

0

e4 T e11 e16 F e19 *

e5 F

e12

e6

(e13 e17 ) e20 E

e7 id e1

4

p/ e4

p/ e5

p/ e6

p/ e7

p/ e2

p/ e3

e1 e2

e3 e4 e5 e6 e7

I0 - inicial

Transições de I4 por (

e8

e9

I1

e1

0

e1

1

I2

E

T

e1

2

e1

4

I3

I5

e13 e2

e3 e4 e5 e6 e7

I4

e15

e4 e5 e6 e7

I6

F

id

(

+

e16

e6 e7

I7

*

e9

e1

7

I8

E

(

F

id

TF

Page 71: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

e1 inicial

Ee8

e2 E

e9e1

5

T e18 +

e3 T e1

0

e4 T e11 e16 F e19 *

e5 F

e12

e6

(e13 e17 ) e20 E

e7 id e1

4

p/ e4

p/ e5

p/ e6

p/ e7

p/ e2

p/ e3

e1 e2

e3 e4 e5 e6 e7

I0 - inicial e

8

e9

I1

e1

0

e1

1

I2

E

T

e1

2

e1

4

I3

I5

e13 e2

e3 e4 e5 e6 e7

I4

e15

e4 e5 e6 e7

I6

F

id

(

+

e16

e6 e7

I7

*

e9

e1

7

I8

E

(

F

id

TF

Transições de I6 por T

Page 72: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

T

e1 inicial

Ee8

e2 E

e9 e15 T e18 +

e3 T e1

0

e4 T e11 e16 F e19 *

e5 F

e12

e6

(e13 e17 ) e20 E

e7 id e1

4

p/ e4

p/ e5

p/ e6

p/ e7

p/ e2

p/ e3

e1 e2

e3 e4 e5 e6 e7

I0 - inicial

Transições de I6 por T

e8

e9

I1

e1

0

e1

1

I2

E

T

e1

2

e1

4

I3

I5

e13 e2

e3 e4 e5 e6 e7

I4

e15

e4 e5 e6 e7

I6

F

id

(

+

e16

e6 e7

I7

*

e9

e1

7

I8

E

(

e1

1

e1

8

I9

F

id

TF

Page 73: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

T

e1 inicial

Ee8

e2 E

e9 e15 T e18 +

e3 T e1

0

e4 T e11 e16 F e19 *

e5 F

e12

e6

(e13 e17 ) e20 E

e7 id e1

4

p/ e4

p/ e5

p/ e6

p/ e7

p/ e2

p/ e3

e1 e2

e3 e4 e5 e6 e7

I0 - inicial e

8

e9

I1

e1

0

e1

1

I2

E

T

e1

2

e1

4

I3

I5

e13 e2

e3 e4 e5 e6 e7

I4

e15

e4 e5 e6 e7

I6

F

id

(

+

e16

e6 e7

I7

*

e9

e1

7

I8

E

(

e1

1

e1

8

I9

F

id

TF

Transições de I6 por F e id

Page 74: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

e1 inicial

Ee8

e2 E

e9 e15 T e18 +

e3 T e1

0

e4 T e11 e16 F e19 *

e5 F

e12

e6

(e13 e17 ) e20 E

e7 id e14

p/ e4

p/ e5

p/ e6

p/ e7

p/ e2

p/ e3

e1 e2

e3 e4 e5 e6 e7

I0 - inicial

Transições de I6 por F e id

e8

e9

I1

e1

0

e1

1

I2

E

T

e1

2

e1

4

I3

I5

e13 e2

e3 e4 e5 e6 e7

I4

e15

e4 e5 e6 e7

I6

F

id

(

+

e16

e6 e7

I7

*

e9

e1

7

I8

E

(

e1

1

e1

8

I9 T

F

id

F

id

TF

Page 75: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

e1 inicial

Ee8

e2 E

e9 e15 T e18 +

e3 T e1

0

e4 T e11 e16 F e19 *

e5 F

e12

e6

(e13 e17 ) e20 E

e7 id e14

p/ e4

p/ e5

p/ e6

p/ e7

p/ e2

p/ e3

e1 e2

e3 e4 e5 e6 e7

I0 - inicial e

8

e9

I1

e1

0

e1

1

I2

E

T

e1

2

e1

4

I3

I5

e13 e2

e3 e4 e5 e6 e7

I4

e15

e4 e5 e6 e7

I6

F

id

(

+

e16

e6 e7

I7

*

e9

e1

7

I8

E

(

e1

1

e1

8

I9 T

F

id

F

id

TF

Transições de I6 por (

Page 76: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

e1 inicial

Ee8

e2 E

e9 e15 T e18 +

e3 T e1

0

e4 T e11 e16 F e19 *

e5 F

e12

e6

(e13 e17 ) e20 E

e7 id e1

4

p/ e4

p/ e5

p/ e6

p/ e7

p/ e2

p/ e3

e1 e2

e3 e4 e5 e6 e7

I0 - inicial

Transições de I6 por (

e8

e9

I1

e1

0

e1

1

I2

E

T

e1

2

e1

4

I3

I5

e13 e2

e3 e4 e5 e6 e7

I4

e15

e4 e5 e6 e7

I6

F

id

(

+

e16

e6 e7

I7

*

e9

e1

7

I8

E

(

e1

1

e1

8

I9 T

F

id

(F

id

TF

Page 77: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

e1 inicial

Ee8

e2 E

e9 e15 T e18 +

e3 T e1

0

e4 T e11 e16 F e19 *

e5 F

e12

e6

(e13 e17 ) e20 E

e7 id e1

4

p/ e4

p/ e5

p/ e6

p/ e7

p/ e2

p/ e3

e1 e2

e3 e4 e5 e6 e7

I0 - inicial e

8

e9

I1

e1

0

e1

1

I2

E

T

e1

2

e1

4

I3

I5

e13 e2

e3 e4 e5 e6 e7

I4

e15

e4 e5 e6 e7

I6

F

id

(

+

e16

e6 e7

I7

*

e9

e1

7

I8

E

(

e1

1

e1

8

I9 T

F

id

(F

id

TF

Transições de I7 por F e id

Page 78: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

e1 inicial

Ee8

e2 E

e9e1

5

T e18 +

e3 T e1

0

e4 T e11 e16 F e19 *

e5 F

e12

e6

(e13 e17 ) e20 E

e7 id e14

p/ e4

p/ e5

p/ e6

p/ e7

p/ e2

p/ e3

e1 e2

e3 e4 e5 e6 e7

I0 - inicial

Transições de I7 por F e id

e8

e9

I1

e1

0

e1

1

I2

E

T

e1

2

e1

4

I3

I5

e13 e2

e3 e4 e5 e6 e7

I4

e15

e4 e5 e6 e7

I6

F

id

(

+

e16

e6 e7

I7

*

e9

e1

7

I8

E

(

e1

1

e1

8

I9 T

F

id

(

e1

9

I1

0

F

id

TF

F

Page 79: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

e1 inicial

Ee8

e2 E

e9e1

5

T e18 +

e3 T e1

0

e4 T e11 e16 F e19 *

e5 F

e12

e6

(e13 e17 ) e20 E

e7 id e14

p/ e4

p/ e5

p/ e6

p/ e7

p/ e2

p/ e3

e1 e2

e3 e4 e5 e6 e7

I0 - inicial e

8

e9

I1

e1

0

e1

1

I2

E

T

e1

2

e1

4

I3

I5

e13 e2

e3 e4 e5 e6 e7

I4

e15

e4 e5 e6 e7

I6

F

id

(

+

e16

e6 e7

I7

*

e9

e1

7

I8

E

(

e1

1

e1

8

I9 T

F

id

(

e1

9

I1

0

F

id

TF

F

Transições de I7 por (

Page 80: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

e1 inicial

Ee8

e2 E

e9e1

5

T e18 +

e3 T e1

0

e4 T e11 e16 F e19 *

e5 F

e12

e6

(e13 e17 ) e20 E

e7 id e1

4

p/ e4

p/ e5

p/ e6

p/ e7

p/ e2

p/ e3

e1 e2

e3 e4 e5 e6 e7

I0 - inicial

Transições de I7 por (

e8

e9

I1

e1

0

e1

1

I2

E

T

e1

2

e1

4

I3

I5

e13 e2

e3 e4 e5 e6 e7

I4

e15

e4 e5 e6 e7

I6

F

id

(

+

e16

e6 e7

I7

*

e9

e1

7

I8

E

(

e1

1

e1

8

I9 T

F

id

(

e1

9

I1

0

(F

id

TF

F

Page 81: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

e1 inicial

Ee8

e2 E

e9e1

5

T e18 +

e3 T e1

0

e4 T e11 e16 F e19 *

e5 F

e12

e6

(e13 e17 ) e20 E

e7 id e1

4

p/ e4

p/ e5

p/ e6

p/ e7

p/ e2

p/ e3

e1 e2

e3 e4 e5 e6 e7

I0 - inicial e

8

e9

I1

e1

0

e1

1

I2

E

T

e1

2

e1

4

I3

I5

e13 e2

e3 e4 e5 e6 e7

I4

e15

e4 e5 e6 e7

I6

F

id

(

+

e16

e6 e7

I7

*

e9

e1

7

I8

E

(

e1

1

e1

8

I9 T

F

id

(

e1

9

I1

0

(F

id

TF

F

Transições de I8 por )

Page 82: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

e1 inicial

Ee8

e2 E

e9e1

5

T e18 +

e3 T e1

0

e4 T e11 e16 F e19 *

e5 F

e12

e6

(e13 e17 ) e20 E

e7 id e1

4

p/ e4

p/ e5

p/ e6

p/ e7

p/ e2

p/ e3

e1 e2

e3 e4 e5 e6 e7

I0 - inicial

Transições de I8 por )

e8

e9

I1

e1

0

e1

1

I2

E

T

e1

2

e1

4

I3

I5

e13 e2

e3 e4 e5 e6 e7

I4

e15

e4 e5 e6 e7

I6

F

id

(

+

e16

e6 e7

I7

*

e9

e1

7

I8

E

(

e1

1

e1

8

I9 T

F

id

(

e1

9

I1

0

(F

id

T

e2

0

I1

1 )

F

F

Page 83: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

e1 inicial

Ee8

e2 E

e9e1

5

T e18 +

e3 T e1

0

e4 T e11 e16 F e19 *

e5 F

e12

e6

(e13 e17 ) e20 E

e7 id e1

4

p/ e4

p/ e5

p/ e6

p/ e7

p/ e2

p/ e3

e1 e2

e3 e4 e5 e6 e7

I0 - inicial e

8

e9

I1

e1

0

e1

1

I2

E

T

e1

2

e1

4

I3

I5

e13 e2

e3 e4 e5 e6 e7

I4

e15

e4 e5 e6 e7

I6

F

id

(

+

e16

e6 e7

I7

*

e9

e1

7

I8

E

(

e1

1

e1

8

I9 T

F

id

(

e1

9

I1

0

(F

id

T

e2

0

I1

1 )

F

F

Transições de I8 por +

Page 84: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

e1 inicial

Ee8

e2 E

e9 e15 T e18 +

e3 T e1

0

e4 T e11 e16 F e19 *

e5 F

e12

e6

(e13 e17 ) e20 E

e7 id e1

4

p/ e4

p/ e5

p/ e6

p/ e7

p/ e2

p/ e3

e1 e2

e3 e4 e5 e6 e7

I0 - inicial

Transições de I8 por +

e8

e9

I1

e1

0

e1

1

I2

E

T

e1

2

e1

4

I3

I5

e13 e2

e3 e4 e5 e6 e7

I4

e15

e4 e5 e6 e7

I6

F

id

(

+

e16

e6 e7

I7

*

e9

e1

7

I8

E

(

e1

1

e1

8

I9 T

F

id

(

e1

9

I1

0

(F

id

T

e2

0

I1

1 )

+

F

F

Page 85: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

e1 inicial

Ee8

e2 E

e9 e15 T e18 +

e3 T e1

0

e4 T e11 e16 F e19 *

e5 F

e12

e6

(e13 e17 ) e20 E

e7 id e1

4

p/ e4

p/ e5

p/ e6

p/ e7

p/ e2

p/ e3

e1 e2

e3 e4 e5 e6 e7

I0 - inicial e

8

e9

I1

e1

0

e1

1

I2

E

T

e1

2

e1

4

I3

I5

e13 e2

e3 e4 e5 e6 e7

I4

e15

e4 e5 e6 e7

I6

F

id

(

+

e16

e6 e7

I7

*

e9

e1

7

I8

E

(

e1

1

e1

8

I9 T

F

id

(

e1

9

I1

0

(F

id

T

e2

0

I1

1 )

+

F

F

Transições de I9 por *

Page 86: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

e1 inicial

Ee8

e2 E

e9e1

5

T e18 +

e3 T e1

0

e4 T e11 e16 F e19 *

e5 F

e12

e6

(e13 e17 ) e20 E

e7 id e1

4

p/ e4

p/ e5

p/ e6

p/ e7

p/ e2

p/ e3

e1 e2

e3 e4 e5 e6 e7

I0 - inicial

Transições de I9 por *

e8

e9

I1

e1

0

e1

1

I2

E

T

e1

2

e1

4

I3

I5

e13 e2

e3 e4 e5 e6 e7

I4

e15

e4 e5 e6 e7

I6

F

id

(

+

e16

e6 e7

I7

*

e9

e1

7

I8

E

(

e1

1

e1

8

I9 T

F

id

(

e1

9

I1

0

(F

id

T

e2

0

I1

1 )

+

*

AFD completo

F

F

Page 87: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

Algoritmos para transformar um Algoritmos para transformar um AFNDAFND em um em um AFD:AFD:

FechamentoFechamento, , GotoGoto e e EstadosAFDEstadosAFD

Algoritmo 5.9: Algoritmo 5.9: Cálculo do Cálculo do Fechamento (I)Fechamento (I), , sendo sendo II um conjunto de itens de uma gramática um conjunto de itens de uma gramática

Page 88: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

Fechamento (I)Fechamento (I) é um conjunto de itens é um conjunto de itens constituídos a partir de constituídos a partir de II, usando as seguintes , usando as seguintes regrasregras: :

1.1.Inicialmente, acrescentar todo item Inicialmente, acrescentar todo item i i II ao ao Fechamento (I)Fechamento (I)

2.2.Se o item Se o item i i Fechamento (I) Fechamento (I) e, no AFND e, no AFND existe uma transição de existe uma transição de ii para um item para um item jj pela pela cadeia vazia cadeia vazia εε, acrescentar o item , acrescentar o item jj ao ao Fechamento (I)Fechamento (I), caso ainda aí não esteja, caso ainda aí não esteja

3.3.Aplicar a Aplicar a regra 2regra 2 até que nenhum item seja até que nenhum item seja mais acrescentado ao mais acrescentado ao Fechamento (I)Fechamento (I)

Page 89: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

Algoritmo 5.10: Algoritmo 5.10: Cálculo do Cálculo do Goto (I, X)Goto (I, X), sendo , sendo II um conjunto de itens de uma gramática e um conjunto de itens de uma gramática e X X um um de seus terminais ou não-terminaisde seus terminais ou não-terminais

Goto (I, X)Goto (I, X) é o fechamento do conjunto de é o fechamento do conjunto de todos os itenstodos os itens

(A(AαX.αX.)) tais que tais que (A(Aα.Xα.X) ) I I

Page 90: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

Exemplo: Exemplo: Dado o AFND abaixo, calcular Dado o AFND abaixo, calcular

I = I = Fechamento ( {a})Fechamento ( {a}) e J = e J = Goto (I, X)Goto (I, X)

X

a

r

d

b

t

c

e

p g

f

q

s

ε

εε

ε

ε

εX

X

ε

ε

I = Fechamento ( {a}) =

{ a,

Page 91: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

Exemplo: Exemplo: Dado o AFND abaixo, calcular Dado o AFND abaixo, calcular

I = I = Fechamento ( {a})Fechamento ( {a}) e J = e J = Goto (I, X)Goto (I, X)

a

r

d

b

t

c

e

p g

f

q

s

ε

εε

ε

ε

ε

X

XX

ε

ε

I = Fechamento ( {a}) =

{ a, b, c, d

Page 92: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

Exemplo: Exemplo: Dado o AFND abaixo, calcular Dado o AFND abaixo, calcular

I = I = Fechamento ( {a})Fechamento ( {a}) e J = e J = Goto (I, X)Goto (I, X)

a

r

d

b

t

c

e

p g

f

q

s

ε

εε

ε

ε

ε

X

XX

ε

ε

I = Fechamento ( {a}) =

{ a, b, c, d, e, f, g}

Page 93: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

Exemplo: Exemplo: Dado o AFND abaixo, calcular Dado o AFND abaixo, calcular

I = I = Fechamento ( {a})Fechamento ( {a}) e J = e J = Goto (I, X)Goto (I, X)

a

r

d

b

t

c

e

p g

f

q

s

ε

εε

ε

ε

ε

X

XX

ε

ε

I = Fechamento ( {a}) =

{ a, b, c, d, e, f, g}

J = Goto (I, X) =

Goto ({ a, b, c, d, e, f, g}, X) =

Page 94: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

Exemplo: Exemplo: Dado o AFND abaixo, calcular Dado o AFND abaixo, calcular

I = I = Fechamento ( {a})Fechamento ( {a}) e J = e J = Goto (I, X)Goto (I, X)

a

r

d

b

t

c

e

p g

f

q

s

ε

εε

ε

ε

ε

X

XX

ε

ε

I = Fechamento ( {a}) =

{ a, b, c, d, e, f, g}

J = Goto (I, X) =

Goto ({ a, b, c, d, e, f, g}, X) =

Fechamento ({r, p, q}) =

Page 95: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

Exemplo: Exemplo: Dado o AFND abaixo, calcular Dado o AFND abaixo, calcular

I = I = Fechamento ( {a})Fechamento ( {a}) e J = e J = Goto (I, X)Goto (I, X)

a

r

d

b

t

c

e

p g

f

q

s

ε

εε

ε

ε

ε

X

XX

ε

ε

I = Fechamento ( {a}) =

{ a, b, c, d, e, f, g}

J = Goto (I, X) =

Goto ({ a, b, c, d, e, f, g}, X) =

Fechamento ({r, p, q}) =

{r, p, q

Page 96: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

Exemplo: Exemplo: Dado o AFND abaixo, calcular Dado o AFND abaixo, calcular

I = I = Fechamento ( {a})Fechamento ( {a}) e J = e J = Goto (I, X)Goto (I, X)

a

r

d

b

t

c

e

p g

f

q

s

ε

εε

ε

ε

ε

X

XX

ε

ε

I = Fechamento ( {a}) =

{ a, b, c, d, e, f, g}

J = Goto (I, X) =

Goto ({ a, b, c, d, e, f, g}, X) =

Fechamento ({r, p, q}) =

{r, p, q, t, s}

Page 97: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

Exemplo: Exemplo: Dado o AFND abaixo, calcular Dado o AFND abaixo, calcular

I = I = Fechamento ( {a})Fechamento ( {a}) e J = e J = Goto (I, X)Goto (I, X)

a

r

d

b

t

c

e

p g

f

q

s

ε

εε

ε

ε

ε

X

XX

ε

ε

a, b, c, d, e, f, g

r, p, q, t, s

I

J

X

Page 98: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

Algoritmo 5.11: Algoritmo 5.11: Calculo do conjunto de estados Calculo do conjunto de estados do AFD para análise SLRdo AFD para análise SLR

EstadosAFD (G’) EstadosAFD (G’) é a coleção dos conjuntos dos é a coleção dos conjuntos dos itens da gramática aumentada itens da gramática aumentada G’G’

Cada conjunto de itens é um estado do AFDCada conjunto de itens é um estado do AFD

Page 99: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

EstadosAFD ( gramática aumentada G’ ) {EstadosAFD ( gramática aumentada G’ ) {

C C { {Fechamento ( {S’Fechamento ( {S’.S}).S})} ;} ;

RepetirRepetir { {

ParaPara (cada conjunto (cada conjunto II CC e cada símbolo e cada símbolo XX de de

G’G’ tal que tal que Goto (I, X)Goto (I, X) { } e { } e Goto (I, X)Goto (I, X) CC) {) {

Acrescentar Acrescentar Goto (I, X)Goto (I, X) a a CC;;

}}

} } Até queAté que (nenhum conjunto seja acrescentado a (nenhum conjunto seja acrescentado a CC););

Retornar Retornar C;C;

}} No No AFDAFD, existe uma transição de , existe uma transição de IIii parapara I Ij j por por XX,,

com (com (IIii , I , Ijj C C) e () e (X X (N (N ))) se ) se Goto (IGoto (Iii, X) =, X) = IIjj

TodosTodos os estados do os estados do AFDAFD são são finaisfinais

Page 100: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

5.5.7 – Tabela de analise SLR5.5.7 – Tabela de analise SLR

As tabelas de As tabelas de açõesações e de e de transiçõestransições de um de um analisador sintático LR são baseadas no analisador sintático LR são baseadas no AFDAFD reconhecedor de reconhecedor de prefixos viáveisprefixos viáveis

Algoritmo 5.12:Algoritmo 5.12: Construção de uma tabela SLR Construção de uma tabela SLR

Entrada:Entrada: Gramática aumentada Gramática aumentada G’G’

Saída:Saída: Tabelas Tabelas Ação [e, a] Ação [e, a] e e Goto [e, A]Goto [e, A] p/ G’ p/ G’

((a a e e A A N N))

1.1.Construir Construir C = { IC = { I00, I, I11, I, I22, . . . , I, . . . , Inn}}, a coleção , a coleção de conjuntos de itens de de conjuntos de itens de G’G’;;

Page 101: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

e1 inicial

Ee8

e2 E

e9e1

5

T e18 +

e3 T e1

0

e4 T e11 e16 F e19 *

e5 F

e12

e6

(e13 e17 ) e20 E

e7 id e1

4

p/ e4

p/ e5

p/ e6

p/ e7

p/ e2

p/ e3

e1 e2

e3 e4 e5 e6 e7

I0 - inicial e

8

e9

I1

e1

0

e1

1

I2

E

T

e1

2

e1

4

I3

I5

e13 e2

e3 e4 e5 e6 e7

I4

e15

e4 e5 e6 e7

I6

F

id

(

+

e16

e6 e7

I7

*

e9

e1

7

I8

E

(

e1

1

e1

8

I9 T

F

id

(

e1

9

I1

0

(F

id

T

e2

0

I1

1 )

+

*

F

F

Page 102: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

Algoritmo 5.12:Algoritmo 5.12: Construção de uma tabela SLR Construção de uma tabela SLR

2.2.O estado O estado ii corresponde a corresponde a IIii; as ações para o ; as ações para o estado estado ii são assim estabelecidas: são assim estabelecidas:

a) Sea) Se ( (Goto (IGoto (Iii, a) = I, a) = Ijj))

Ação [i, a] Ação [i, a] (deslocar, j); (deslocar, j);

b) Seb) Se ( ((A(A.) .) I Iii e e A A S’ S’))

ParaPara todo todo a a Seguinte (A) Seguinte (A)

Ação [i, a] Ação [i, a] (reduzir, A (reduzir, A););

c) Sec) Se ( ((S’(S’S.) S.) I Iii) Ação [i, $] ) Ação [i, $] (aceitar) (aceitar)

Page 103: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

Algoritmo 5.12:Algoritmo 5.12: Construção de uma tabela SLR Construção de uma tabela SLR

3.3.Para todo estado Para todo estado ii e todo não terminal e todo não terminal AA

SeSe ( (Goto (IGoto (Iii, A) = I, A) = Ijj)) Goto [i, A] Goto [i, A] j j

4.4.Toda entrada não definida nos passos 2 e 3 são Toda entrada não definida nos passos 2 e 3 são erro’serro’s

5.5.O estado inicial é o que contém (S’O estado inicial é o que contém (S’.S).S)

Page 104: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

F

E

T

id

(

+

*

E

(

T

F

id

(

(F

id

T

)

+

*

F

F

e1 e2

e3 e4 e5 e6 e7

I0 - inicial e

8

e9

I1

e1

0

e1

1

I2

e1

2

e1

4

I3

I5

e13 e2

e3 e4 e5 e6 e7

I4

e15

e4 e5 e6 e7

I6

e16

e6 e7

I7

e9

e1

7

I8

e1

1

e1

8

I9

e1

9

I1

0

e2

0

I1

1

Exemplo: Para a gramática G’ definida anteriormente:

1. Construir C = { I0, I1, I2, . . . , I11}, a coleção de conjuntos de itens de G’;

Page 105: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

2.a) Se (Goto (Ii, a) = Ij) Ação [i, a] (deslocar, j);

id + * ( ) $

0 d 5 d 4

1 d 6

2 d 7

3

4 d 5 d 4

5

6 d 5 d 4

7 d 5 d 4

8 d 6 d 11

9 d 7

10

11

F

E

T

id

(

+

*

E

(

T

F

id

(

(F

id

T

)

+

*

F

F

e1 e2

e3 e4 e5 e6 e7

I0 - inicial e

8

e9

I1

e1

0

e1

1

I2

e1

2

e1

4

I3

I5

e13 e2

e3 e4 e5 e6 e7

I4

e15

e4 e5 e6 e7

I6

e16

e6 e7

I7

e9

e1

7

I8

e1

1

e1

8

I9

e1

9

I1

0

e2

0

I1

1

Page 106: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

b) Se ((A.) Ii e A S’)Para todo a Seguinte (A)

Ação [i, a] (reduzir, A);

Número da

Produção

Item de final de Produção

Estado do AFD

- E’ E. 1

1 E E+T. 9

2 E T. 2

3 T T*F. 10

4 T F. 3

5 F (E). 11

6 F id. 5

Não-terminal

Seguinte

E + ) $

T + * ) $

F + * ) $

E’ $

id + * ( ) $

0 d 5 d 4

1 d 6

2 d 7

3

4 d 5 d 4

5

6 d 5 d 4

7 d 5 d 4

8 d 6 d 11

9 d 7

10

11

Page 107: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

b) Se ((A.) Ii e A S’)Para todo a Seguinte (A)

Ação [i, a] (reduzir, A);id + * ( ) $

0 d 5 d 4

1 d 6

2 r 2 d 7 r 2 r 2

3 r 4 r 4 r 4 r 4

4 d 5 d 4

5 r 6 r 6 r 6 r 6

6 d 5 d 4

7 d 5 d 4

8 d 6 d 11

9 r 1 d 7 r 1 r 1

10 r 3 r 3 r 3 r 3

11 r 5 r 5 r 5 r 5

Número da

Produção

Item de final de Produção

Estado do AFD

- E’ E. 1

1 E E+T. 9

2 E T. 2

3 T T*F. 10

4 T F. 3

5 F (E). 11

6 F id. 5

Não-terminal

Seguinte

E + ) $

T + * ) $

F + * ) $

E’ $

Page 108: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

c) Se ((S’S.) Ii) Ação [i, $] (aceitar)

id + * ( ) $

0 d 5 d 4

1 d 6

2 r 2 d 7 r 2 r 2

3 r 4 r 4 r 4 r 4

4 d 5 d 4

5 r 6 r 6 r 6 r 6

6 d 5 d 4

7 d 5 d 4

8 d 6 d 11

9 r 1 d 7 r 1 r 1

10 r 3 r 3 r 3 r 3

11 r 5 r 5 r 5 r 5

Número da

Produção

Item de final de Produção

Estado do AFD

- E’ E. 1

1 E E+T. 9

2 E T. 2

3 T T*F. 10

4 T F. 3

5 F (E). 11

6 F id. 5

Não-terminal

Seguinte

E + ) $

T + * ) $

F + * ) $

E’ $

Page 109: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

c) Se ((S’S.) Ii) Ação [i, $] (aceitar)

id + * ( ) $

0 d 5 d 4

1 d 6 act

2 r 2 d 7 r 2 r 2

3 r 4 r 4 r 4 r 4

4 d 5 d 4

5 r 6 r 6 r 6 r 6

6 d 5 d 4

7 d 5 d 4

8 d 6 d 11

9 r 1 d 7 r 1 r 1

10 r 3 r 3 r 3 r 3

11 r 5 r 5 r 5 r 5

Número da

Produção

Item de final de Produção

Estado do AFD

- E’ E. 1

1 E E+T. 9

2 E T. 2

3 T T*F. 10

4 T F. 3

5 F (E). 11

6 F id. 5

Não-terminal

Seguinte

E + ) $

T + * ) $

F + * ) $

E’ $

Page 110: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

3) Para todo estado i e todo não- terminal A: Se (Goto (Ii, A) = Ij)

Goto [i, A] jE T F

0 1 2 3

1

2

3

4 8 2 3

5

6 9 3

7 10

8

9

10

11

F

E

T

id

(

+

*

E

(

T

F

id

(

(F

id

T

)

+

*

F

F

e1 e2

e3 e4 e5 e6 e7

I0 - inicial e

8

e9

I1

e1

0

e1

1

I2

e1

2

e1

4

I3

I5

e13 e2

e3 e4 e5 e6 e7

I4

e15

e4 e5 e6 e7

I6

e16

e6 e7

I7

e9

e1

7

I8

e1

1

e1

8

I9

e1

9

I1

0

e2

0

I1

1

Page 111: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

Tabelas de ações e transições: Tabelas de ações e transições:

Estado inicial: 0Estado inicial: 0 Posições vazias: Posições vazias: ErrosErros

id + * ( ) $

0 d 5 d 4

1 d 6 act

2 r 2 d 7 r 2 r 2

3 r 4 r 4 r 4 r 4

4 d 5 d 4

5 r 6 r 6 r 6 r 6

6 d 5 d 4

7 d 5 d 4

8 d 6 d 11

9 r 1 d 7 r 1 r 1

10 r 3 r 3 r 3 r 3

11 r 5 r 5 r 5 r 5

E T F

1 2 3

8 2 3

9 3

10

Page 112: 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de análise LR = Tabela de ações Tabela de transições Gramáticas

Se houver Se houver mais de uma ação para a mesma mais de uma ação para a mesma entradaentrada, a gramática , a gramática não é SLRnão é SLR; ela pode ser ; ela pode ser CLRCLR ou ou LALRLALR..

A linguagem A linguagem PascalPascal gera gera centenascentenas de estados de estados SLRSLR e e LALRLALR e e milharesmilhares de estados de estados CLRCLR; infactível à mão.; infactível à mão.

id + * ( ) $

0 d 5 d 4

1 d 6 act

2 r 2 d 7 r 2 r 2

3 r 4 r 4 r 4 r 4

4 d 5 d 4

5 r 6 r 6 r 6 r 6

6 d 5 d 4

7 d 5 d 4

8 d 6 d 11

9 r 1 d 7 r 1 r 1

10 r 3 r 3 r 3 r 3

11 r 5 r 5 r 5 r 5

E T F

1 2 3

8 2 3

9 3

10