1.5 Gram´aticas que identificam a classe RE
1.5.2 Gram´aticas Adapt´aveis Recursivas de Shutt
Este formalismo gramatical n˜ao distingue terminais, n˜ao terminais, meta-sintaxe, nem atributos; ao inv´es disso, cada gram´atica adapt´avel recursiva (RAG pelas suas iniciais em inglˆes: Recursive Adaptable Grammar), possui um ´unico dom´ınio chamado ´Algebra de Respostas, cujos valores (as respostas) podem atuar como sintaxe, meta-sintaxe ou semˆantica, dependendo de como s˜ao usados. Neste resumo seguimos informalmente Shutt[11].
Defini¸c˜ao 1.5.1 (Regras livres) Uma regra livre r sobre V ´e uma constru¸c˜ao da forma:
< v0, e0 >→ t0 < e1, v1 > t1... < en−1, vn−1 > tn−1 < en, vn > tn
onde n ≥ 0, os vk s˜ao vari´aveis distintas, os tk s˜ao respostas (usualmente terminais,
mas nem sempre) e os ek s˜ao polinˆomios sobre as vari´aveis v0, ..., vn. O dom´ınio de
1.5. GRAM ´ATICAS QUE IDENTIFICAM A CLASSE RE 21 Defini¸c˜ao 1.5.2 (Pares livres) Os pares livres s˜ao os pares ordenados de polinˆo- mios em uma regra livre, < v0, e0 > e todos os < ek, vk >. O primeiro elemento
de um par livre tem papel meta-sint´atico, enquanto o segundo tem papel semˆantico. Os tk no lado direito (as respostas fora de pares livres) de uma regra atuam como
sintaxe, no sentido que se convertem em elementos da palavra (usualmente formada por terminais) que ´e gerada pela gram´atica.
Defini¸c˜ao 1.5.3 (Interpreta¸c˜ao semˆantica) Numa deriva¸c˜ao < a, c >→ b, com respostas em a, b, c ∈ AG, diz-se que o valor meta sint´atico a sintetiza (ou computa)
o valor semˆantico c quando gera o valor sint´atico b ou, mais simplesmente, que associa o valor semˆantico c ao valor sint´atico b.
Defini¸c˜ao 1.5.4 (Regras versus Respostas) O dom´ınio RG das regras livres est´a relacionado ao dom´ınio das respostas AG atrav´es de uma fun¸c˜ao regra:
ρG : AG→ 2RG
Ao ligar as vari´aveis livres de uma regra livre como r anteriormente definida, a vari´avel mais `a esquerda v0 deve ser ligada a alguma resposta a ∈ AG tal que r ∈ ρG(a).
Defini¸c˜ao 1.5.5 (Regras ligadas) Seja x uma resposta da ´algebra de respostas da RAG G: x ∈ AG. O conjunto de regras ligadas, denotado βG(x), ´e constru´ıdo
fazendo todas as poss´ıveis liga¸c˜oes de respostas a vari´aveis nas regras livres de ρG(x)
com a ´unica restri¸c˜ao que v0, em cada regra livre, deve ser ligado a x.
Pela quantidade de detalhes na defini¸c˜ao deste formalismo vamos usar o recurso de examinar seus conceitos `a luz do seguinte exemplo.
Exemplo 1.5.2 Gram´atica Adapt´avel Recursiva para a linguagem L = {www : w ∈
Σ∗}, onde Σ ´e um alfabeto finito.
S : < v0, v3 >→< W, v1 >< v1, v2 >< v1, v3 > W : < v0, λ >→ λ
< v0, v1v2 >→< v0, v1 >< C, v2 > C : ∀z ∈ Σ, < v0, z >→ z
Os terminais s˜ao λ (a palavra vazia) e os elementos de Σ; os n˜ao terminais s˜ao S (o s´ımbolo inicial), W e C. O n˜ao-terminal C gera todas e cada letra z de Σ, e
associa a ela o valor semˆantico z; para ver isto, consideremos o alfabeto Σ = {a, b}. O conjunto de regras livres de C ´e:
ρG(C) = {< v0, a >→ a, < v0, b >→ b}
e como ´e necess´ario fazer a liga¸c˜ao v0 = C, para as regras ligadas, ent˜ao conclu´ımos
que βG(C) consiste das seguintes regras de produ¸c˜ao:
βG(C) = {< C, a >→ a, < C, b >→ b}
que permitem derivar as letras do alfabeto Σ. Por sua vez, o n˜ao-terminal W gera qualquer palavra w ∈ Σ∗, baseando-se no efeito de C, e associa a ela o valor semˆantico w; com efeito, continuando com nossa ilustra¸c˜ao podemos ver que o con- junto de regras livres:
ρG(W ) = {< v0, λ >→ λ, < v0, v1v2 >→< v0, v1 >< C, v2 >}
com a liga¸c˜ao da vari´avel v0 = W , nos fornece uma regra ligada: < W, λ >→ λ
e uma regra livre:
< W, v1v2 >→< W, v1 >< C, v2 >
Agora ´e necess´ario determinar quais as liga¸c˜oes adequadas para v1 e v2. Essa
´
ultima regra somente pode ser reduzida a uma resposta se < C, v2 > aparece no lado
esquerdo de uma regra em βG(C). O ´unicos lados esquerdos de regras em βG(C) s˜ao < C, a > e < C, b >; deste modo conclu´ımos que v2 tem que ser ligado a a ou ent˜ao
a b. Assim, a regra anterior produz o seguinte par de regras parcialmente ligadas:
< W, v1a >→< W, v1 >< C, a >, < W, v1b >→< W, v1 >< C, b > .
Finalmente devemos encontrar o conjunto ´util de liga¸c˜oes para v1. A ´unica
restri¸c˜ao ´e que as liga¸c˜oes devem permitir reduzir a regra a uma resposta. Mas isso acontece justamente quando v1 = wa ou v1 = wb, para algum w que permite reduzir a
regra a uma resposta. Deste modo, podemos construir o conjunto de todos os valores ´
uteis de v1 por indu¸c˜ao: o caso-base ´e que pode ser ligado a λ (j´a que λ ´e redut´ıvel
a λ), e para cada valor ´util w, temos que wa e wb s˜ao tamb´em ´uteis.
Temos assim que o conjunto de regras livres ρG(W ) consiste de um conjunto
infinito de produ¸c˜oes, fazendo a liga¸c˜ao das vari´aveis v1, v2, como ilustra a tabela a
1.5. GRAM ´ATICAS QUE IDENTIFICAM A CLASSE RE 23 v1 v2 Produ¸c˜ao obtida interpreta¸c˜ao semˆantica
λ a < W, a >→< W, λ >< C, a >= λa = a a λ b < W, a >→< W, λ >< C, b >= λb = b b a a < W, aa >→< W, a >< C, a >= aa aa a b < W, ab >→< W, a >< C, b >= ab ab b a < W, ba >→< W, b >< C, a >= ba ba b b < W, bb >→< W, b >< C, b >= bb bb
e assim por diante...
A ´ultima linha da tabela faz referˆencia ao fato de que, para continuar ilus- trando deriva¸c˜oes, s˜ao necess´arios resultados da ´Algebra das respostas que escapam ao escopo desta discuss˜ao. Finalmente o s´ımbolo inicial S usa W para gerar uma palavra arbitr´aria w ∈ Σ∗, que fica ligada a v
1; por sua vez, as vari´aveis v2 e v3
ficam ligadas a λ, e os outros dois pares restantes da produ¸c˜ao de S tamb´em geram
w pois r(t) = {< v0, λ >→ t} (ou seja, terminais usados como meta-sintaxe geram
linguagens unit´arias formadas por eles pr´oprios, e sintetizam o valor semˆantico λ.); assim sendo, a regra livre: S :< v0, v3 >→< W, v1 >< v1, v2 >< v1, v3 >, nos
fornece a regra livre (referente `as vari´aveis v1, v2 e v3) < S, v3 >→< W, v1 >< v1, v2 >< v1, v3 >, e, ligando as vari´aveis v2 e v3 a λ, obtemos a regra livre (refer-
ente `a vari´avel v1) < S, λ >→< W, v1 >< v1, λ >< v1, λ >, que gera um conjunto
de produ¸c˜oes como o listado na tabela a seguir:
v1 Produ¸c˜ao obtida interpreta¸c˜ao semˆantica λ < S, λ >→< W, l >< λ, λ >< v1, λ >= λ λ
a < S, λ >→< W, a >< a, λ >< a, λ >= aaa aaa b < S, λ >→< W, b >< b, λ >< b, λ >= bbb bbb aa < S, λ >→< W, aa >< aa, λ >< aa, λ >= aaaaaa aaaaaa ab < S, λ >→< W, ab >< ab, λ >< ab, λ >= ababab ababab ba < S, λ >→< W, ba >< ba, λ >< ba, λ >= bababa bababa bb < S, λ >→< W, bb >< bb, λ >< bb, λ >= bbbbbb bbbbbb
e assim por diante...