linguagens formais e autômatos (lfa) - departamento de...
Post on 16-Dec-2018
221 Views
Preview:
TRANSCRIPT
InformáticaPUC-RioINF1626 Linguagens Formais e Autômatos (2013-2)
Linguagens Formais e Autômatos (LFA)
Aula de 16/09/2013
Conversões e Transformações
©Clarisse S. de Souza, 2013 1
InformáticaPUC-RioINF1626 Linguagens Formais e Autômatos (2013-2)
Conversões de Gramáticas LR em LL e vice-versa
Qual é a ideia?
Seja GRD uma gramática linear à direita: Existe uma gramática GRE linear à esquerda que gera o mesmo conjunto de cadeias que GRD?
©Clarisse S. de Souza, 2013 2
=
S
c
ba
aaε
a
aa
bc ε
S
InformáticaPUC-RioINF1626 Linguagens Formais e Autômatos (2013-2)
Uma exploração interessanteAs regras de LR, gerada por GRD, têm o seguinte padrão:
a cadeia β de toda produção α β é (Σ ∪ ε) . ((V-Σ) ∪ ε) para Σ = alfabeto de LR e V = vocabulário da GRD que gera LR
Seja T a seguinte transformação definida sobre as produções de GRD:
Para toda produção α β de GRD onde |β| > 1• criar uma produção α δ onde δ é o inverso de βPara toda produção α β de GRD onde |β| ≤ 1• criar uma produção α δ idêntica a α β
Qual o perfil da linguagem LT gerada pelas produções resultantes da transformações, se comparado a LR?
©Clarisse S. de Souza, 2013 3
InformáticaPUC-RioINF1626 Linguagens Formais e Autômatos (2013-2)
Exemplo
LRS aSS bXX bX c
LΓS’ S’aS’ X’bX’ bX’ c
©Clarisse S. de Souza, 2013 4
InformáticaPUC-RioINF1626 Linguagens Formais e Autômatos (2013-2)
Exemplo
LRS aSS bXX bX c
a*b(b|c)
LTS’ S’aS’ X’bX’ bX’ c
©Clarisse S. de Souza, 2013 5
InformáticaPUC-RioINF1626 Linguagens Formais e Autômatos (2013-2)
Exemplo
LRS aSS bXX bX c
a*b(b|c)
LTS’ S’aS’ X’bX’ bX’ c
(b|c)ba*
©Clarisse S. de Souza, 2013 6
InformáticaPUC-RioINF1626 Linguagens Formais e Autômatos (2013-2)
Para gerar GRE a partir de GRDSeja L uma linguagem LR e LRev e linguagem reversa de LR.
Seja GRDRev a gramática regular à direita capaz de gerar LRev
A gramática regular à esquerda GRE, que gera as mesmas cadeias que LR, resulta das seguintes transformações sobre as produções de GRDRev:
Para toda produção α β de GRDRev onde |β| > 1• criar uma produção α δ onde δ é o inverso de βPara toda produção α β de GRDRev onde |β| ≤ 1• criar uma produção α δ idêntica a α β
Nosso desafio: Encontrar GRDRev, a gramática regular à direita que gera LRev
©Clarisse S. de Souza, 2013 7
InformáticaPUC-RioINF1626 Linguagens Formais e Autômatos (2013-2)
O valor de AF na busca da versão LL de LR
1. Para encontrar a linguagem reversa de LR, invertemos a GRD que gera LR (= GRE de LRev)
©Clarisse S. de Souza, 2013 8
Note-se que asexpansões do símboloRAIZ (“S”) numa LR,quando incluem umterminal, indicam oPREFIXO das cadeiasda linguagem quedefinem.
}As expansões do símboloRAIZ (“S”) numa LL,quando incluem umterminal, indicam oSUFIXO das cadeiasda linguagem quedefinem.
}GRD que gera LR GRE que gera LRev
InformáticaPUC-RioINF1626 Linguagens Formais e Autômatos (2013-2)
2. Para encontrar GRDRev (gramática regular à direita que gera LRev) podemos usar o AF de GRE:
©Clarisse S. de Souza, 20139
GRES’ S’aS’ X’bX’ bX’ c
(b|c)ba*
AFRevestado inicial : q0estado final : q2
Transições:q0,b,q1 ................ S b Xq0,c,q1 ................ S c Xq1,b,q2 ................ X b Yq2,a,q2 ................ Y a Y | ε
(b|c)ba*
GRDRev
O valor de AF na busca da versão LL de LR
InformáticaPUC-RioINF1626 Linguagens Formais e Autômatos (2013-2)
3. A GRE que gera o mesmo conjunto de cadeias de LR é o resultado da inversão das regras de GRDRev
©Clarisse S. de Souza, 2013 10
GRDRev
S b XS c XX b YY a YY ε
(b|c)ba*
GRE Final
S X bS X cX Y bY Y aY ε
a*b(b|c)
O valor de AF na busca da versão LL de LR
InformáticaPUC-RioINF1626 Linguagens Formais e Autômatos (2013-2)
Aspectos interessantes de estruturas LR e LLA linguagem de programação
PROLOG (baseada em lógica, muito utilizada em aplicações de Inteligência Artificial), tem facilidades interessantes para se trabalhar com ‘Gramáticas’.
Uma destas facilidades é um formalismo denominado “Definite Clause Grammars” ou DCG.
Neste formalismo, a GRD inicial (que gera LR) se escreve assim:
s --> [a], s.s --> [b], x.x --> [b].x --> [c].
©Clarisse S. de Souza, 2013 11
O uso de ‘[ ]’ marcaos terminais do alfabetode GRD. Os demaisliterais marcam os nãoterminais do vocabuláriode GRD.
InformáticaPUC-RioINF1626 Linguagens Formais e Autômatos (2013-2)
Execução de uma “consulta à base gramatical”
©Clarisse S. de Souza, 2013 12
Base Gramatical
s(S,[]).
Mostre TODAS as formas deinstanciar avariável “S” detal modo aSATISFAZER a(s)regra(s) relativa(s)ao nó “s” dagramática.
InformáticaPUC-RioINF1626 Linguagens Formais e Autômatos (2013-2)
Como o Prolog busca “respostas” para consultas
Uma consulta constitui uma “meta” a ser provada.O Prolog busca satisfazer a “meta” em questão, varrendo
toda a sua base de fatos e regras, de cima para baixo, da esquerda para a direita.
Ao encontrar uma condição que satisfaz a meta, uma resposta é produzida e a busca por uma nova resposta possível é retomada.
Observem no próximo slide o que ocorre se alteramos a ordem das cláusulas na base gramatical do programa.
©Clarisse S. de Souza, 2013 13
InformáticaPUC-RioINF1626 Linguagens Formais e Autômatos (2013-2)
“Stack Overflow” se 1a cláusula da base é recursiva
©Clarisse S. de Souza, 2013 14
Se a regra recursivas --> [a], s. for retiradada base gramatical(ou reposicionada) podem-sefazer novamente consultas sem riscos de “stack overflow”.
InformáticaPUC-RioINF1626 Linguagens Formais e Autômatos (2013-2)
A GRE gera a linguagem reversa de LR (LRev)
©Clarisse S. de Souza, 2013 15
GRE=GRD invertida(gera LRev)
InformáticaPUC-RioINF1626 Linguagens Formais e Autômatos (2013-2)
A GRDRev (GRD que gera a linguagem LRev)
©Clarisse S. de Souza, 2013 16
InformáticaPUC-RioINF1626 Linguagens Formais e Autômatos (2013-2)
A GRE equivalente à GRD, ambas gerando a*b(b|c)
©Clarisse S. de Souza, 2013 17
Quase... Por que o “stack overflow”?
Várias ordensalternativas dasregras vão sempreacabar em “overflow”.A menos de um desviode controle na estruturade execução, o Prologtem problemas com estruturas que se expandem “à esquerda” (ou “primeiro” [antes] doque uma solução que éterminal, não se expande).O teste de alternativasfrequentemente leva a“overflow”.
Eis um exemplo de por queinteressa saber e poderconverter LL’s em LR’s!Se recebemos uma baseLL para trabalhar, podemostransformá-la em LR.Da mesma forma perceberque as condições deparada devem preceder asde expansão é fundamental.
InformáticaPUC-RioINF1626 Linguagens Formais e Autômatos (2013-2)
Exercícios
Criar uma GRE para LR’s definidas a seguir:
1. S a A; A b C; A b D ; C c C; C c; D d
2. (a(b|c)*)+ | d*e+
3. AF
©Clarisse S. de Souza, 2013 18
top related