de atributos bien denidas
Marelo Arroyo, Jorge Aguirre, Niolás Florio *
Dpto.deComputaión-Fa.deCs.Exatas,Fo-QasyNat.
UniversidadNaionaldeRíoCuarto
Resumen
En elpresente trabajo sedesribe unaherramienta degeneraión estátiade
evaluadores de gramátias de atributos (GA) para la familia de GA bien
de-nidas (GABD), denominada wag. Las GABD imposibilitan la derivaión de
árboles sintátios on dependenias irulares entre las instanias de los
atri-butos. wag se basa en los oneptos desarrollados por Wuu Yang en[7℄ para
la omputaión estátia de planes de evaluaión on algunas mejoras omo por
ejemplola prevenión de lageneraión de planes espúreos, loual afeta
signi-ativamente altamañodelevaluadorgeneradoyeltiempoyespaioutilizadoen
su generaión. El desarrollode wagonrma elresultado de Riisy Skyum[6℄
quienes estableieron que todas las GABD permiten eldesarrollo de un
evalua-dorestátiomulti-visita.Hastaelmomento,noseonoenherramientassimilares
basadas enésta familia deGA.
Palabraslave:GramátiasdeAtributos,Compiladores-Compiladores,
Len-guajes, Gramátias deAtributos biendenidas.
1. Introduión
Desde queD.Knuth en1968[4℄introdujolaideade lasGramátiasde Atributos,éstas
han sido de gran interés en las ieniasde la omputaióny en ingenieríade software
yaque permiten desribiromputaiones en lenguajes libresde ontexto y sehan
uti-lizado ampliamente para el desarrollo de herramientas de generaión de proesadores
de lenguajes basados en espeiaiones, onoidos generalmente omo ompilador
es-ompiladores o sistemas de generaión de ompiladores o tradutores.
Unagramátiadeatributosesunaextensióndelasgramátiaslibresdeontexto,alas
uales se les inluyen valores asoiados a los símbolos de la gramátia (denominados
*
tosenunárbolsintátioderivadoapartirdelagramátialibredeontextosubyaente.
Laseuaiones induen lasdependeniasentre lasinstanias de losatributos delárbol
sintátio. El orden de evaluaión debe ser onsistente on las dependenias, es deir,
el atributo a debe ser evaluado luego que hayan sido evaluados las instanias de los
atributos de los que depende en la euaión orrespondiente. Una dependenia
iru-lar en el árbol sintátio hará generalmente imposible la evaluaión, lo que suguiere
la siguiente pregunta: dada una GA, existe algún árbol sintátio, derivado a partir
de la GA, que ontenga dependenias irulares?. Esta pregunta es onoido omo el
problema deirularidad,elualsehaprobado queesun problemaomplejoquetoma
tiempoexponenial en base al tamañode la gramátia[5℄.
UnaGABD tieneomoaraterístiaquenoesposiblequesegenerenárboles
sintáti-oson dependenias irularesyeslafamiliamasamplia(onmenosrestriiones)en
lalasiaióntradiionaldeGA.Lasherramientasmas omunesqueseutilizanestán
basadasen sublases deGABDomolasANCAG(absolutamentenoirulares)oaún
en subfamilias omo las OAG (ordenadas)[2℄ y reientemente las EOAG (ordenadas
extendidas) [9℄.
Para éstasfamiliasde GA,esposiblegenerarun únioplan(orden)de evaluaiónpara
ada produión, mientras que en las GABD 1
pueden tener más de un plan asoiado
por produión y el evaluador deberá realizar la seleión dinámiamente (lookahead
behavior). Poreste motivopertenen alas GAdenominadas multiplan.
2. Gramátias de Atributos
En esta seión se denen los prinipales oneptos a ser utilizados en las seiones
siguientes.
DEFINICIÓN 2.1 Una gramátia de atributos es una tupla GA =< G;A;R >
donde Ges una gramátia libre de ontexto, A esun onjunto nitode atributos
y R es un onjunto nito de reglas semántias.
G =< N;T;P;S > donde N es un onjunto de símbolos no terminales, T es el
onjunto de símbolos terminales, V = N S
T, P es un onjunto de pares de la
forma X ! denominadas produiones, donde X 2V , 2 V
(se denotará a la
adena vaía omo ".), S 2N es elsímbolo se omienzo.
EnunaGAseasoiaunonjuntodeatributosA(X)=H(X) S
S(X),(H(X) T
S(X)=
;),on adasímboloX 2V.El onjunto H(X)es elonjuntode atributos heredados
de X y S(X) es el onjunto de atributos sintetizados de X, H(S) = ; y S(X) =
;; 8X 2T. 2
1
WDAG(WellDenedAttributeGrammars),porsussiglaseninglés.
2
wag permite que los símbolos terminales tengan un únio atributo sintetizado denominado
0 1 n
X
i
:a sia2A(X
i
), 0in.
Unonjuntodereglassemántias R
p
de laformaX
i
:a:=f(y
1 :::y
k
) seasoiaonuna
produiónp on las siguientes restriiones:
1. i=0si a2S(X
i
), o 1in si a2H(X
i ).
2. ada y
j
; 1ik, es un atributoque ourre en p.
3. f esunafunión(denominadafuniónsemántia)quemapeavaloresdey
1 ;:::;y
k
alvalorde X
i :a.
En una regla de la forma X
i
:a :=f(y
1 :::y
k
), se die que la ourrenia X
i
:a depende
de las ourrenias y
i
; 1ik.
R es el onjunto de reglas semántias R = S
p2P R
p .
DEFINICIÓN 2.2 Un árbol de derivaión para una adena , generado por G =<
N;T;P;S >, es un árbol donde:
1. Cada nodo tiene rótulo X o ".
2. El rótulo de la raízes S.
3. Si un nodo uyo rótulo es X y tiene sus hijosrotulados X
1
;:::;X
n
(de izquierda
a dereha), entones X !X
1 :::X
n
es una produión en P.
4. Los rótulos de las hojas, onatenados de izquierda a dereha forman .
DEFINICIÓN 2.3 Un árbol atribuido para una adena es un árbol de
deri-vaión donde ada nodo n, rotulado X, ontiene instanias que orresponden a los
atributos de X.Por adaatributo a2A(X) lainstania orrespondiente ontenida en
n se denotará n.a.
3. La jerarquía NC
Reientemente, en [7℄, Wuu Yang propuso una nueva lasiaión de GA's basadas
en dependenias de losontextos inferiores (look-ahead behavior). Laidea se basa en
onstruir grafos de dependenias para los atributos que ourren en una produión
para ada posible ontexto inferior. Un evaluador de esta familia de GA, deberá
se-leionarelplanadeuadoenbasealainspeióndelontextoinferiorde adasímbolo.
La jeraquíaNCse basa en el númerode pasos desendentes tomadosen uentaporel
evaluador para seleionar un plan. Así por ejemplo, la familia NC(0) es equivalente
a lafamiliaANCAG y la familiaNC(1) se orresponde alas GAbien denidas.
Para evaluar las instanias de los atributos en un árbol sintátio, orrespondientes a
las dependenias entre las instanias de los atributos del símbolo de la parte
izquierda de p, lasuales están determinadaspor suontexto superior.
lasdependeniasentrelasinstaniasdeatributosdelossímbolosnoterminalesde
laparte derehade p,lasuales están determinadas porsus ontextos inferiores
(las produiones apliadas en el subárbol uya raíz está rotulada por ese no
terminal).
3.1. La familia NC(0)
La familia NC(0) se orresponde on la familia ANCAG, la que está araterizada
por lasiguientedeniión:
DEFINICIÓN 3.1 Sea p una produión de P de la forma
X
0
!
0 X1
1
X2:::X
k
k
(1)
IDP(p)=DP(p) k
[
i=1
Down(X
i )
Down(X)=
[
q2PjX=l hs(q)
IDP(q)k
A(X)
dondeIDP(q)k
A(X)
denotalaproyeióndelgrafoIDP(q)onteniendosólolas
depen-denias (transitivas)de los atributos de X, siendo X elsímbolode la parte izquierda
de la produiónq ( lhs(q) ).
Los grafos Down(X) son una aproximaión segura al grafo de dependenias de los
atributos de X en elsentido queinluyen todas lasposiblesdependeniasen ualquier
árbol sintátio, pero además puede ontener algunas dependenias espúreas
(depen-denias queno pueden ourrir simultáneamenteen ningún árbolsintátio).
Los grafosIDP(q) 3
son los grafosde dependenias induidas porada produión.
DEFINICIÓN 3.2 Una GA es ANCAG o ( NC(0) ) si ada grafo IDP(p), 8p 2 P
es no irular.
Un evaluador para GA's NC(0) utiliza el orden de evaluaión (orden topológio)
P3:
i2 s2 Y i3 s3
n
P4:
i1 X s1
P5:
Z s4
i2 s2 Y i3 s3
m
1
2
3
i1 X s1
Z s4
S s0
i2 s2 Y i3 s3
i1 X s1
Z s4
S s0
i2 s2 Y i3 s3
ADP(P1|P4,P2,P5)
ADP(P1|P4,P3,P5)
b)
a)
P1:
i1 X s1
Z s4
S s0
i2 s2 Y i3 s3
P2:
i2 s2 Y i3 s3
m
Figura1: GANC(1) pero noANCAG
3.2. La familia NC(1)
Enlagura1a) 4
semuestraunaGAquenoesANCAG,yaqueIDP(P1)esirular 5
,
aunquelaGAnoloes. EstosedebeaquelosgrafosDown(X)representan lasposibles
dependeniasenualquierárbolsitátio,perolasproduionesP2yP3nunapueden
apliarsesimultáneamentey ésta es laausa de lairularidad.
Si setomanen uenta losposibles diferentes ontextos inferiores sería posible
diferen-iar las dependenias en diferentes grafos y se podrían asoiar a ada produión un
onjuntode grafosposibles(uno poradaontexto inferior).Si ningunode esos grafos
es irular, la GA no es irular y un evaluador podría seguir el plan de evaluaión
generado apartir de ada grafo.Elevaluadordebería seleionar(en tiempode
ejeu-ión) elplan adeuado para adaproduión (inspeionando su ontexto inferior).
DEFINICIÓN 3.3 Sea q una produión omo en (1), y sean p
i
, (1i k)
produ-iones uyo lhs(p
i ) es X
i ,
DCG
X (q)=
[
q2PjX=l hs(q)
ADP(qjp
1 ;p
2 ;:::;p
k )k
A(X)
3
InduedDependeniesGraphs
4
Lasehasgruesasdenotanlasproduionesylasnaslasdependenias entre losatributos.
5
ADP(qjp
1 ;p
2 ;:::;p
k
)=DP(q) [ i=1 DCG Xi (p i )
Un grafo DCG
X
(q) se denomina el downward harateristi graph de X en los
subár-boles derivados a partir de la produión q y denotan las dependenias (transitivas)
entre los atributos de X en algún subárbol derivado a partir de la apliaión de la
produiónq.
Un grafo ADP(qjp
1 ;p
2 ;:::;p
k
) se denomina augmented dependeny graph de la
pro-duión q on los subárboles derivados a partir de la apliaión de p
1 ;p
2 ;:::;p
k .
DEFINICIÓN 3.4 Una GA es NC(1) si ada grafo delonjunto
SADP(q)=fADP(qjp
1 ;p
2 ;:::;p
k )g
es aílio, 8q2P.
Lagura1b)muestraquelaGAesNC(1)(sólosemuestranlosgrafosdelaproduión
que ausaba la irularidadpara las ANCAG).
Se debe notar que los grafos DCG
X
(q) son estimaiones más exatas que los grafos
Down(X) ya que esfáil demostrar que
[
qjX=l hs(q) DCG
X
(q)Down(X)
3.3. La familia NC(m)
LosgrafosADP(qj:::)tienenenuentaunageneraión dedesendentes de la
produ-ión q. Si extendemos la idea para tener en uenta más generaiones se puede denir
unanuevafamiliadelasesde GA:lasGANC(m):nonirularAGwithm-generation
lookahead.
DEFINICIÓN 3.5 Sea q una produión de la forma (1), =< X;m > un árbol de
profundidad m, uya raíz está rotulada X y es un subárbol de algún árbol sintátio
derivado por la GA 6
y sean
i
=< X
i
;m >, para 1ik,
DCG X ()= [ ADP <m> (qj 1 ; 2 ;:::; k )k A(X) ADP <m> (qj 1 ; 2 ;:::; k
)=DP(q) k [ i=1 DCG Xi ( i )
DEFINICIÓN 3.6 Una GA es NC(m) si ada grafo del onjunto
SADP
<m>
(q)=fADP
<m> (qj 1 ; 2 ;:::; k )g
es aílio, 8q2P y 8
i
=< X
i
;m > , 1ik.
6
(y por ende en NC(1)). El resultado sólo tiene interés teório, ya que el número de
produiones se puedeinrementaren formaexponenial.
3.4. La familia NC(1)
i2 s2 Y i3 s3
i5 s5 Q i6 s6 a
i5 s5 Q i6 s6
i2 s2 Y i3 s3
P6:
P7:
Figura2: Produiones adiionales quehaen que laGA sea NC(1)
Existen GAs que no son NC(m), para ningún m. Si a la GA de la gura 1 a)le
adi-ionamos dos produiones omo las de la gura 2, ésta última no es NC(m) (para
ningún m nito),ya que ontiene produiones mutuamente reursivas.Un árbol
sin-tátiopodríaontenerderivaionesY !Q!Y ualquiernúmerode vees.Además,
se puedeobservarque lanueva AGno esirular (es GABD).
UnevaluadorparalasGANC(1)neesitateneren uentaun númeropotenialmente
(no atualmente) innito de desendientes. En términos de un árbol sintátio, lo
anterior signia que el evaluador neesitará mirar hasta las hojas para seleionar
un plan para una instaniade una produión.
Para realizar la seleión el evaluador neesitará realizar un reorrido asendente del
árbol sintátio para marar los nodos on la informaión sobre las dependenias
a-tuales transitivasen base al subárbol.
AadanoterminalXseleasoiaunonjunto(X)deposiblesgrafosdedependenias
entresusatributos.Elalgoritmo1omputatodoslosposiblesgrafos.SialgúnÆ2(X)
es ílio,entones la GAno esNC(1).
Sean p una produiónomo en (1) el algoritmoInniteLookAhead,además,
onstru-ye la funión [qjÆ
1 ;Æ
2 ;:::;Æ
k
℄, la ual representa el grafo de dependenias entre los
atributos de X
0
uandoseaplia laproduiónp ylas dependenias transitivasde los
símbolosX
i son Æ
i
, (1ik), respetivamente.
La informaión denotada por será utilizada por el evaluador para la seleión de
planesElalgoritmo1esbásiamenteeltestde irularidad de Knuth[5 ℄ onlaadiión
delómputo de lafunión y losonjuntos (X).
La omplejidad del algoritmo es O(jNjjPj(h!) l +1
l 3
h 3
), donde h es el número máximo
de atributos de lossímbolosy l es elnúmero máximo de noterminales de laparte
de-reha de las produiones. El análisis de omplejidadse basa en que j(X)j=O(h!).
(X) ;,8X 2V
repeat
hange false
for adaq: X
0
!
0 X
1
1 :::X
k
k do
for ada Æ
i
2(X
i
),1ik do
G DP(q) S
k
i=1 Æ
i
Æ Gk
X
0
if Æ es irularthen error(CirularAG)
[qjÆ
1 ;:::;Æ
k ℄ Æ
if Æ2= (X
0
) then
hanged true
(X
0
) (X
0 )[Æ
end if
endfor
end for
until not hanged
el número de vees máximo que se ejeuta el ilo repeat, ya que en ada iteraión se
debeagregaralmenosun nuevoÆ).lasentenia for másexterna seejeutajPjveesy
elfor másinternoseejeutaalosumo(h!) l
.Laoperaiónde uniónG DP(q) S
k
i=1 Æ
i
tomaO(l)(k l)ylaoperaióndeproyeión(k
X
0
tieneO(h 3
(l+1) 3
),yaquesedebe
realizarla lausuratransitiva.
Sibienelordendeomplejidadesexponenialonrespetoal,éstevalorgeneralmente
nosuperaa4en laprátia(unaGAon numerosos noterminales en laparte dereha
de lasproduiones es muy inusual,ya que sería poolegible e indiaríaque nose ha
modularizado omo orresponde). Si bien se pueden llegar a realizar un gran número
de operaiones y las funiones omputadas pueden tener un número onsiderable de
entradas,elproblemaesperfetamentetratableonlapoteniaomputaionalquehoy
brinda ualquierPC de esritorio.
3.4.1. Generaión de planes de evaluaión
Unavezqueseapliaelalgoritmo1ysehadetetadoquelaGAesNC(1),segeneran
losplanes de evaluaiónasoiados aada produión.
El algoritmo 2 realiza la generaión de planes y es una modiaión del algoritmo
propuesto en [7℄. Una de las modiaiones es la lista de trabajo WL, que ontiene
pares de símbolos y ordenes en lugar de sólo ordenes omo propone Wuu Yang y el
uso de un ltro para evitar lageneraiónde planes espúreos quepueden ser generados
(aunque algunosposteriormentedesartados)inútilmenteporelalgoritmooriginal.El
ltro es lafunión (boolean) appliable, la ual sedene omo laexpresión lógia:
appliable(q;!;Æ
1 ;:::;Æ
k
)[qjÆ
1 ;Æ
2 ;:::;Æ
k ℄=Æ
0
!
0
ualquier orden de A(S)
WL f(S;!
0 )g
repeat
(X
0
;!) un elemento de WL; WL WL f(X
0 ;!)g
sea q :X
0 ! 0 X 1 1 :::X
k
k
y appliable(q;!;Æ
1 ;:::;Æ
k )
for adaADP(qjÆ
1 ;:::;Æ
k
)2SADP(q) do
TSort(ADP(qjÆ
1 ;:::;Æ
k )[!)
[q;!;Æ
1 ;:::;Æ
k ℄
for ada X
i
2rhs(q)do
! i k A(X i )
[q;!;i;Æ
1 ;:::;Æ k ℄ ! i if (X i ;! i
)=undefined then
(X
i ;!
i
) defined;WL WL[f(X
i ;! i )g end if endfor end for
until WL=;
donde Æ 0
i
es talque ! =[q;! 0
;i;:::;Æ 0
i ;:::℄
Elusode lafuniónappliable reduesigniativamenteelnúmerodeplanesagenerar
evitandolageneraiónde planesespúreos. En[7℄plantea desartarlosplanesespúreos
si es que éstos son irulares (ya que en ésta etapa la AG obviamente no esirular).
El uso de ésta funión redue signiativamenteel aso promedio de omplejidaddel
algoritmo.
Para lagramátia de lagura 2el algoritmo1 omputa 7
:
(S) =fÆ
1
=[s0℄ },(Y)=fÆ
2
= [i2!s2s3s4℄, Æ
3
=[i2 s2i3!s3℄ },(X)=fÆ
4
=[i1!s1℄ },
(Z)=fÆ
5
=[s4℄},(Q)=fÆ
6
=[i5!s5i6s6℄,Æ
7
=[i5s5i6!s6℄}.
[P1℄=[s0℄,[P2℄=[i2!s2i3s3℄,[P3℄=[i2s2i3!s3℄,[P4℄=[i1!s1℄,[P5jÆ
2 ℄=[P5jÆ 3 ℄=[s4℄, [P6jÆ 6
℄=[i2!s2i3s3℄,[P6jÆ
7
℄=[i2s2i3!s3℄, [P7jÆ
2
℄=[i5!s5i6s6℄,[P7jÆ
3
℄=[i5s5 i6!s6℄.
y el algoritmo2omputa:
[P1,<s0>,Æ 4 ;Æ 2 ;Æ 5 ℄=<s3,i1,s1,i2,s2,i3,s4,s0>, [P1,<s0>,Æ 4 ;Æ 3 ;Æ 5 ℄=<s2,i3,s3,i1,s1,i2,s4,s0>,
[P2,<s3,i2,s2,i3>℄=<s3,i2,s2,i3>, [P3,<s2,i3,s3,i2>℄=<s2,i3,s3,i2>, [P4,<i1,s1>℄=<i1,s1>,
[P5,<s4>,Æ 2 ℄=<s3,i2,s2,i3,s4>, [P5,<s4>,Æ 3 ℄=<s2,i3,s3,i2,s4>, [P6,<s3,i2,s2,i3>,Æ 6 ℄=<s6,s3,i2,i5,s5,s2,i3,i6>, [P6,<s2,i3,s3,i2>,Æ 7 ℄=<s5,s2,i3,i6,s6,s3,i2,i5>, [P7,<s6,i5,s5,i6>,Æ 2 ℄=<s3,s6,i5,i2,s2,s5,i6,i3>, [P7,<s5,i6,s6,i5>,Æ 3 ℄=<s2,s5,i6,i3,s3,s6,i5,i2>.
3.4.2. Un evaluador para la familia NC(1)
Elproedimientoeval(T)delalgoritmo3evalúalosatributosde un árbolsintátioT.
La primerfase (mark y selet seleiona el plan a utilizaren ada nododel árbol
uti-lizando lainformaiónomputada estátiamentepor los algoritmosenterioresy luego
7
proeduremark(n)
fori=1tokdo
mark(n.hild[i℄)
endfor
n:mark [n:qjn:hild[1℄:mark;:::;hild[k℄:mark℄
proedureselet(n,!)
n:plan [n:q;!;m
1
:mark;:::;m
k :mark℄
fori=1tokdo
selet_plan(n.hild[i℄,[n:q;!;i;n:hild[1℄:mark;:::;n:hild[k℄:mark℄)
endfor
proedurevs_eval(n)
r n
whilevs[r.plan℄[r.op℄6=LEAVEdo
asevs[n.plan℄[n.op++℄do
VISIT(i):n n:hild[i℄
COMPUTE(j):ompute(j)
LEAVE:n n.parent
endase
endwhile
proedureeval(T)
mark(T);selet(T,);vs_eval(T)
invoa alevaluador basadoen seuenias de visitas.
Enrealidadlosplanesdeevaluaiónnosealmaenanomouna seueniade atributos
sino quese transforman en seueniasde operaiones denominadasseuenias de
visi-ta. Existen tres operaiones: visit(i)que signiavisitar alhijo i-ésimo,ompute(j)
que es omputar la funión semántia j y leave que es visitar al nodo padre. Cada
seuenia de visitadebenalizar on una operaiónleave.
La transformaión de un plan en seuenias de visitaes simple: ada subseuenia de
atributosheredadosdelsímbolodelaparteizquierdadelaproduiónsereemplazapor
una operaión leave, ada subseuenia de atributos sintetizados del símbolo X
i de la
partederehasereemplazaonunaoperaiónvisit(i) yadaourreniade unatributo
sintetizadodel símbolode laparte izquierda oun atributoheredado de un símbolode
la parte dereha, se reemplaza por una operaión ompute(j), donde j es en número
(asignado por elgenerador) de la funión semántia quedene adiho atributo.
4. wag
El generadorwag toma omoinput una deniión de una gramátiade atributos y
generaunaespeiaiónlex-ya laualsintetizaun árbolsintátioT yluegoinvoa
a eval(T). La gura 4 muestra gráamente la generaión del evaluador. El produto
semantic
functions
(user defined)
WDAG
specification
lex−yacc
specification
wagcc
lex−yacc
yyparse()
yylex()
eval(T)
lexer−parser
ag−evaluator
Figura3: Esquema de uso de wag
(yyparse())y la funión de evaluaión de losatributos (eval()).
LagramátiasubyaentedeberíaserLALR(1),yaqueelparserserágeneradoporya.
Laespeiaiónlex-ya generadainluyelosalgoritmosdesriptosy lasfuniones,
, y (representadas omo arreglosde enteros). Lasseuenias de visitageneradas
están representadas por un arreglo vs[plan℄[℄ donde ada la representa un plan el
ual onsistede un vetorde operaiones (odiadas omoenteros: ipara VISIT(i),
j para COMPUTE(j) y 0para LEAVE).Además segenera lafunión ompute(j)
que ontiene las invoaiones (en una sentenia swith(j)) alasfuniones semántias
provistasporel usuario.
Se haelegido implementarelevaluador basadoen seuenias de visitasomo un
autó-mataporqueesmasompatoquelasténias alternativaspropuestasen[3℄,laualse
basaen lageneraiónde proedimientosreursivospero noeslaténiamasadeuada
para un evaluador multi-plan.
Los nodos del árbol sintetizado ontienen los siguientes ampos: (prod) (ontiene el
número de produión que seaplió en el nodo), hildrens (ontiene elnúmero hijos),
hild[℄ (vetor de punteros anodos hijos),op (número de operaiónde laseuenia de
visita orrespondiente al nodo), plan (plan seleionado), mark (usado para la
sele-ión) y además ontiene los ampos orrespondientes alos atributos delsímbolo.
5. Conlusiones y futuras extensiones
Sehapresentadounaherramientadegeneraióndeproesadoresdelenguajes
(general-menteonoidos omo ompiladores de ompiladores) uyo lenguaje de espeiaión
está basadoen gramátiasde atributos bien denidas.Esta familiade GAeslamayor
familiapara laqueesposiblegenerarevaluadoresestátios. Losevaluadoresgenerados
son ompatos ya que toda la informaióngenerada se odia en arreglos de enteros
y no es neesario generar grafos de dependenias omo lo requieren los evaluadores
la generaión de planes espúreos. Hasta el momento no se onoe otra herramienta
basada en los oneptos desarrolladosen este trabajo.
Es neesario realizar mayores experimientos on gramátias mas reales (omo las de
algún lenguaje de programaión)para analizarlos requerimientosde espaioutilizado
por lasfuniones desriptas y el número de planes generador porproduión.
En éstos momentosse está desarrollando una versión para C++ on un diseño
orien-tadoaobjetoselualpermitirádesarrollarversionesparaotroslenguajesomúnmente
usados omo porejemplo Java.
Referenias
[1℄ M.Arroyo,J.Aguirre,N.Florio.2002.NCEval,ungenerador deevaluadoresonurrentespara
gramátiasde atributosnoirulares.CACIC2002.BuenosAires.
[2℄ U. Kastens.1980.OrderedAttributeGrammars.AtaInformatia,vol.13,pag:229-256.
[3℄ U. Kastens. 1991, Implementation of Visit-Oriented Attribute Evaluators. Pro. International
SummerShoolSAGA, vol.545,pág:114-139.
[4℄ D. Knuth. 1968. Semantis of ontext free languages. Math Systems Theory 2, June 2.Pag:
127-145.
[5℄ D. Knuth. 1971. Semantis of ontextfree languages. Math SystemsTheory Vol5, no1. Pag:
95-96.(orretion)
[6℄ H.Riis,S.Skyum.1981.K-VisitAttributeGrammars.MathSystemsTheory,vol.15,pág:17-28.
[7℄ Wuu Yang. Marh 2002. A Classiation of Non-Cirular Attribute Grammars Based on the
Look-AheadBehavior.IEEETransationsonSoftwareEngineering,vol.28,No3.Pag:210-227.
[8℄ WuuYang.1999. A FinestPartitioning Algorithm for AttributeGrammars. SeondWorkshop
onAttributeGrammarsandtheirAppliations-WAGA99.
[9℄ WuuYang.1998.SSCC:ASoftwareToolBasedonExtendedOrderedAttributeGrammars.Pro.
National SieneCounil (Rep.ofChina), ParteA, PhysialSiene and Engineering,vol.23,