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

Post on 17-Apr-2015

320 views 1 download

Transcript of 5.5.4 – Métodos para a construção da tabela de análise LR Tabela de análise LR = Tabela de...

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

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

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

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

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

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

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 . .

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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’.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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 (

(

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

(

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 +

+

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

(

+

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 *

*

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

*

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

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

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

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

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

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

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 (

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

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

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

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

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

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 (

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

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

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

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 (

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

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 )

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

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 +

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

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 *

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

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

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)

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

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,

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

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}

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) =

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}) =

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

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}

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

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

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

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’;;

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

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)

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)

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’;

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

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

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’ $

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’ $

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’ $

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

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

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