Вы находитесь на странице: 1из 806

Compiladores

P r in c ip io s , té c n ic a s y h e r r a m ie n t a s
Compiladores
Principios, técnicas y herramientas

ALFRED V. A H O
RAVI SETH I
A T & T Bell Laboratories Murray HilU Nueva Jersey

JEFFREY D. U L L M A N
Stanford University, Stanford, California

V ersión e n esp a ñ o l de
Pedro Flores Suárez
U niversidad A u tó n o m a M etropolitana,
U nidad Iztapalapa, M éxico
y
Pere Botella i López
U niversidad Politécnica d e Cataluña,
Barcelona, España

M éxico • A rgentina • Brasil • C o lo m b ia • C osta R ica • C h ile • E cuador


España • G uatem ala • Panam á • Perú • P u erto R ic o • U ruguay • Venezuela
V e r s i ó n e n e s p a ñ o l d e la o b r a t i t u l a d a C o m p ile n : l*rináp¡es, T ech n iq u es, and T o o ls de
A lf te d V . A h o , R a v i S c th i y J c f fre y D . U llm a n , p u b lic a d a o r ig in a lm e n te e n in g lé s por
A d d is o n -W e s le y P u b lis h in g C o m p a n y , R e a d in g , M a s s a c h u s c tts . E . U . A . © 1 9 8 6 p o r B e ll
T e le p h o n e L a b o ra to rie s , In c .

E s ta e d ic ió n e n e s p a ñ o l e s la ú n ic a a u to r iz a d a .

PRIM ERA EDICIÓ N, 1990


Prim era Reim presión en México, 1998

© 1990 por Addison W esley Iberoam ericana, S.A.

D .R .© 1998 por Addison W esley Longman de México S.A. de C.V.


A tlaco m u lco 5 0 ()-5 io. piso
Industrial A to to
5 3 5 1 9 N a u ca lp a n d e Juárez, E d o. d e M é x ic o

CNIEM 1031

Reservados todos los derechos. Ni la totalidad ni parte de esta


publicación pueden reproducirse, registrarse o transmitirse, por un
sistema de recuperación de información, de ninguna forma, ni por
ningún medio, sea electrónico, mecánico, fotoquímico, magnético o
electroóptico, por fotocopia, grabación o cualquier otro, sin permiso
previo por escrito del editor. El préstamo, alquiler o cualquier otra
forma de cesión de uso de este ejem plar requerirá también la
autorización del editor o de sus representates.

ISBN 968 444 333 1

Im preso en México. Printed in México

C o p y r i g h t e d r r a lo r ia J
ni

CAPITULO 1

Introducción
a la compilación

Los p rin c ip io s y té c n ic a s d e e scritu ra d e c o m p ila d o re s s o n ta n a m p lio s q u e las ideas


e n c o n tra d a s e n este libro se u sarán m u c h a s veces en la c a rre ra de u n científico d e la
c o m p u ta c i ó n . L a e s c r itu r a d e c o m p ila d o r e s c o m p r e n d e lo s le n g u a je s d e p r o g r a ­
m a c ió n , la a rq u ite c tu ra d e c o m p u ta d o re s , la te o ría d e lenguajes, los a lg o ritm o s y la
in g e n ie ría d e softw are. P o r f o r tu n a , c o n a lg u n a s té c n ic a s b á s ic a s d e e s c r it u r a de
c o m p ila d o re s se p u e d e n c o n s tr u ir tra d u c to re s p a r a u n a g ra n v aried ad d e len g u ajes y
m á q u in a s . E n este cap itu lo , se in tr o d u c e el te m a de la c o m p ila c ió n d e sc rib ie n d o los
c o m p o n e n te s d e u n c o m p ila d o r, el e n t o r n o en el q u e tra b a ja n los c o m p ila d o re s y
alg u n as h e rra m ie n ta s d e softw are q u e facilitan la c o n s tru c c ió n d e co m p ilad o res.

1.1 C O M P I L A D O R E S

A g ran d es rasgos, u n c o m p ila d o r es u n p ro g ra m a q u e lee u n p ro g ra m a escrito en u n


len g u aje, el le n g u a je fu en te, y lo tra d u c e a u n p r o g r a m a e q u iv a le n te e n o t r o le n ­
g uaje, el len g u aje objeto (véase Fig. 1.1). C o m o p a rte im p o r ta n te d e este p ro ceso d e
tra d u c c ió n , el c o m p ila d o r in fo rm a a su u s u a rio de la p re se n c ia d e e rro re s e n el p ro ­
g ra m a fuente.

program a program a
fu en te objeto

m en sajes
d e error

Fig. 1 .1 . U n com pilador.

A p r im e ra vista, la d iv e rsid ad d e c o m p ila d o re s p u e d e p a re c e r a b r u m a d o ra . H ay


m iles d e len g u ajes fuente, d e sd e los len g u ajes d e p ro g ra m a c ió n tra d ic io n a le s, c o m o
F O R T R A N o Pascal, h a s ta los le n g u a je s e sp e c ia liz a d o s q u e h a n s u rg id o v ir tu a l­
m e n te e n to d a s las áreas d e a p licació n d e la in fo rm á tic a . L o s len g u ajes o b je to son
ig u a lm e n te variados; u n len g u aje o b je to p u e d e s e r o t r o len g u aje d e p ro g ra m a c ió n o
2 IN T R O D U C C IO N A I A COM PILACION

el lenguaje d e m á q u in a d e c u a lq u ie r c o m p u ta d o r e n tre u n m ic ro p ro c e s a d o r y u n su-


p e rc o m p u ta d o r. L o s c o m p ila d o re s a m e n u d o se clasifican c o m o d e u n a p a sa d a , d e
m ú ltip le s p a s a d a s , d e ca rg a y e je c u c ió n , d e d e p u r a c ió n o d e o p ti m a c i ó n , d e p e n ­
d ie n d o d e c ó m o h a y a n sido c o n s tru id o s o d e q u é fu n c ió n se s u p o n e q u e realizan . A
p esar d e e s ta a p a r e n te c o m p le jid a d , las ta re a s b ásicas q u e d e b e re a liz a r c u a lq u ie r
c o m p ila d o r son e s e n c ia lm e n te las m ism a s. Al c o m p r e n d e r tales ta re as, se p u e d e n
c o n s tr u ir c o m p ila d o re s p a r a u n a gran d iv e rsid ad d e lenguajes fu e n te y m á q u in a s ob ­
j e t o u tiliz a n d o las m is m a s té c n ic a s básicas.
N u e s tro c o n o c im ie n to so b re c ó m o o rg a n iz a r y escrib ir c o m p ila d o re s h a a u m e n ­
ta d o m u c h o d e sd e q u e c o m e n z a r o n a a p a re c e r los p rim e ro s c o m p ila d o re s a p rin ci­
pios d e los a ñ o s c in c u e n ta . E s difícil d a r u n a fecha e x a c ta d e la a p a ric ió n del p rim e r
c o m p ila d o r , p o r q u e e n u n p r in c ip io g r a n p a r te del tr a b a jo d e e x p e r im e n ta c ió n y
a p licació n se realizó d e m a n e r a in d e p e n d ie n te p o r v ario s gru po s. G r a n p a rte d e los
p rim e ro s tra b a jo s de c o m p ila c ió n e s ta b a re la c io n a d a c o n la tr a d u c c ió n d e fó rm u las
a ritm é tic a s a código d e m á q u in a .
En la d é c a d a de 1950, se c o n s id e ró a los c o m p ila d o re s c o m o p ro g ra m a s n o ta b le ­
m e n te difíciles d e escribir. El p r im e r c o m p ila d o r d e F O R T R A N , p o r e jem p lo , n e­
cesitó p a r a s u im p la n ta c ió n 18 a ñ o s d e tra b a jo en g ru p o (B ack u s y o tro s [1975]).
D esd e e n to n c e s, se h a n d e sc u b ie rto té c n ic a s sistem áticas p a ra m a n e ja r m u c h a s de
las im p o r ta n te s ta re a s q u e su rg en e n la c o m p ila c ió n . T a m b ié n se h a n d esarro llad o
b u e n o s le n g u a je s d e im p la n ta c ió n , e n t o r n o s d e p r o g r a m a c ió n y h e r r a m ie n ta s de
softw are. C o n esto s av an ce s, p u e d e h acerse u n c o m p ila d o r real in clu so c o m o p ro ­
yecto d e e s tu d io e n u n cu rso d e u n se m e stre s o b re d is e ñ o d e co m p ilad o res.

M o d e lo d e a n á lis is y s í n t e s is d e la c o m p ila c ió n

E n la c o m p ila c ió n hay d o s p artes: a n álisis y síntesis. La p a rte del análisis d iv id e al


p r o g r a m a f u e n te e n s u s e le m e n to s c o m p o n e n te s y c r e a u n a re p re s e n ta c ió n in te r­
m e d ia del p ro g ra m a fu en te . L a p arte d e la síntesis c o n s tru y e el p ro g ra m a o b je to d e ­
se a d o a p a r tir de la rep re se n ta c ió n in te rm e d ia . D e las d o s partes, la síntesis es la q u e
req u iere las técn icas m á s especializadas. E n la sección 1.2 se e x a m in a r á el análisis
d e m a n e r a in fo rm a l y e n la sección 1.3 se e sb o z a rá la fo rm a d e sin te tiz a r el código
o b je to e n u n c o m p ila d o r están d ar.
D u r a n te el análisis, se d e te rm in a n las o p eracio n es q u e im plica el p ro g ram a fuente
y se registran e n u n a estru ctu ra je rá rq u ic a llam ad a árbol. A m e n u d o , se usa u n a clase
especial d e árb o l lla m a d o árb o l sin tá ctic o , d o n d e c a d a n o d o re p re s e n ta u n a o p e ra ­
c ió n y los h ijo s de u n n o d o s o n los a r g u m e n to s d e la o p e ra c ió n . P o r e je m p lo , e n la
figura 1.2 se m u e s tra u n á rb o l s in tá c tic o p a r a u n a p ro p o sició n d e asignación.

posición +

velocidad 60

Fig. 1.2. Arbol sintáctico para p o s i c i ó n := in i c i a l + v e l o c i d a d * 60.


1.1 CO M PILADO RES 3

M u c h a s h e rra m ie n ta s d e so ftw are q u e m a n ip u la n p ro g ra m a s fu e n te realizan p ri­


m e r o alg ú n tip o d e análisis. A lg u n o s e je m p lo s d e tales h e r r a m ie n ta s son:

1. E ditores de estructuras. U n e d i to r d e e s tr u c tu r a s t o m a c o m o e n t r a d a u n a se­


c u e n c ia d e ó rd e n e s p a r a c o n s tr u ir u n p r o g r a m a fuente. El e d ito r d e e s tru c tu ra s
n o só lo realiza las fu n c io n e s d e c re a c ió n y m o d ific a c ió n d e te x to s d e u n e d ito r
d e te x to s o r d i n a r i o , s in o q u e t a m b i é n a n a l iz a el te x to d e l p r o g r a m a , i m p o ­
n ie n d o al p r o g r a m a fu e n te u n a e s tr u c tu r a je rá rq u ic a a p ro p ia d a . D e esa m a n e ra ,
el e d ito r d e e s tru c tu ra s p u e d e re a liz a r ta re a s a d ic io n a le s útiles p a r a la p r e p a ra ­
c ió n d e p ro g ra m a s. P o r e je m p lo , p u e d e c o m p r o b a r si la e n t r a d a e s tá fo rm a d a
c o r re c ta m e n te , p u e d e p r o p o r c io n a r p a la b ra s c lav e d e m a n e r a a u to m á tic a (p o r
e jem p lo , c u a n d o el u s u a rio escrib e w h i l e , el e d ito r p ro p o r c io n a el c o r r e s p o n ­
d ie n te d o y le re c u e rd a al u s u a rio q u e e n tre las d o s p a la b ra s d e b e ir u n c o n d i­
c io n a l) y p u e d e s a lt a r d e s d e u n b e g i n o u n p a ré n te s is iz q u ie r d o h a s ta su c o ­
rre s p o n d ie n te e n d o p arén tesis d e re c h o . A d e m á s, la salid a d e ta l e d ito r suele ser
sim ila r a la salid a d e la fase d e análisis d e u n c o m p ila d o r.
2. Im presoras estéticas. U n a im p re s o ra esté tic a a n a liz a u n p r o g r a m a y lo im p r im e
d e fo rm a q u e la e s tru c tu ra d e l p ro g ra m a resulte c la r a m e n te visible. P o r e jem p lo ,
los c o m e n ta r io s p u e d e n a p a re c e r c o n u n tip o d e letra especial, y las p ro p o s ic io ­
n e s p u e d e n a p a re c e r c o n u n a in d e n ta c ió n p ro p o rc io n a l a la p r o f u n d id a d de su
a n id a m ie n to e n la o rg a n iz a c ió n je rá rq u ic a d e las p ro p o sicio n es.
3. Verificadores estáticos. U n v erificad o r e stá tic o lee u n p ro g ra m a , lo a n a liz a e in ­
te n ta d e s c u b r ir e rro re s p o te n c ia le s s in e je c u ta r el p ro g ra m a . L a p a rte del análisis
a m e n u d o es s im ila r a la q u e se e n c u e n tr a en los c o m p ila d o re s d e o p tim a c ió n
del tip o e s tu d ia d o e n el c a p ítu lo 10. Así, u n v erificad o r e stá tic o p u e d e d e te c ta r
si hay p a rte s d e u n p ro g ra m a q u e n u n c a se p o d r á n e je c u ta r o si c ie rta variable
se u s a a n te s d e s e r d e fin id a . A d e m á s, p u e d e d e te c ta r e rro re s d e lógica, c o m o in­
te n ta r u tiliz a r u n a v ariab le real c o m o a p u n ta d o r , e m p le a n d o las té c n ic a s d e ve­
rificació n d e tip o s q u e se a n a liz a n e n el c a p ítu lo 6.
4. Intérpretes . E n lu g a r d e p r o d u c ir u n p ro g ra m a o b je to c o m o re s u lta d o d e u n a
tra d u c c ió n , u n in térp rete realiza las o p eracio n es q u e im plica el p ro g ra m a fuente.
P a ra u n a p ro p o sic ió n d e asig n ació n , p o r e je m p lo , u n in té rp re te p o d ría c o n s tru ir
u n á rb o l c o m o el d e la figura 1.2, y d e s p u é s e fe c tu a r las o p e ra c io n e s d e lo s n o ­
d o s c o n f o r m e “ re c o rre ” el á rb o l. E n la ra íz d e sc u b riría q u e tie n e q u e rea liz a r
u n a a sig n a c ió n , y lla m a ría a u n a r u ti n a p a r a e v a lu a r la e x p re sió n d e la d e re c h a
y d e s p u é s a lm a c e n a r ía el v alo r re s u lta n te e n la lo c alid a d d e m e m o r ia aso ciad a
c o n el id e n tific a d o r p o s i c i ó n . E n el h ijo d e r e c h o d e la raíz, la r u tin a d e sc u b ri­
ría q u e tien e q u e c a lc u la r la s u m a d e d o s ex p resio n es. Se lla m a ría a si m is m a de
m a n e r a re c u rs iv a p a r a c a lc u la r el v a lo r d e la e x p re s ió n v e l o c i d a d * 60. D es­
p u é s s u m a ría ese v alo r al v alo r d e la v a ria b le i n i c i a l .
M u c h a s veces los in té rp re te s se u sa n p a ra e je c u ta r len g u ajes d e ó rd en es, pues
c a d a o p e r a d o r q u e se e je c u ta e n u n len g u aje d e ó r d e n e s su ele ser u n a in v o c a c ió n
d e u n a r u tin a c o m p le ja , c o m o u n e d ito r o u n c o m p ila d o r. Del m is m o m o d o ,
a lg u n o s len g u ajes d e “ m u y a lto n iv e l”, c o m o A P L , n o r m a lm e n te s o n in te rp re ­
ta d o s, p o r q u e h a y m u c h a s c o sas so b re los d a to s, c o m o el t a m a ñ o y la fo rm a de
las m atrices, q u e n o se p u e d e n d e d u c ir en el m o m e n to d e la c o m p ila c ió n .
4 I N T R O D U C C I O N A LA C O M P I L A C I O N

T r a d ic io n a lm e n te , se c o n c ib e u n c o m p ila d o r c o m o u n p r o g r a m a q u e tr a d u c e u n
p ro g ra m a fu en te , c o m o F O R T R A N , al len g u aje e n s a m b la d o r o d e m á q u in a d e a l­
g ú n c o m p u ta d o r . S in e m b a r g o , h a y lugares, a l p a re c e r, n o re la c io n a d o s d o n d e la
tecn olo gía d e los c o m p ila d o re s se usa c o n re g u la rid ad . L a p a n e d e a n álisis d e c a d a
u n o de los sig u ientes e je m p lo s es p a re c id a a la d e u n c o m p ila d o r c o n v e n c io n a l.

1. Form adores d e textos. U n f o r m a d o r d e tex to s t o m a c o m o e n tr a d a u n a c a d e n a


d e caracteres, la m a y o r p a rte d e la cual e s te x to p a ra c o m p o n e r , p e ro a lg u n a in­
c lu y e ó r d e n e s p a r a in d ic a r p á rra fo s, fig u ras o e s tr u c tu r a s m a te m á tic a s , c o m o
su b ín d ic es o su p erin d ices. E n la sigu ien te secció n se m e n c io n a algo del análisis
q u e realizan los fo rm a d o re s de textos.

2. C om piladores de circuitos de silicio. U n c o m p ila d o r d e c irc u ito s d e silicio tien e


u n lenguaje fu e n te s im ila r o id é n tic o a u n len g u aje de p ro g ra m a c ió n c o n v e n c io ­
n a l. S in e m b a r g o , la s v a r ia b le s d e l le n g u a je n o r e p r e s e n t a n l o c a lid a d e s d e
m e m o ria , s in o señales lógicas (0 ó 1) o g ru p o s d e señales e n u n c irc u ito d e c o n ­
m u tació n . La salida es el d iseñ o de u n c irc u ito e n u n lenguaje a p ro p ia d o . V éanse
J o h n s o n [1983], U llm a n [19 84], o T rick ey [1985] so b re u n a n álisis d e los c o m ­
p ilad o res d e c irc u ito s d e silicio.

3. Intérpretes d e consultas. U n in té rp re te d e c o n s u lta s tra d u c e u n p re d ic a d o q u e


c o n tie n e o p e ra d o re s relació n ales y b o o le a n o s a ó r d e n e s p a r a b u s c a r e n u n a base
d e d a to s registros q u e satisfagan ese p re d ic a d o . (V éase U llm a n [1982] o D ate
[1986].)

El c o n te x to d e un co m p ila d o r

A d e m á s de un c o m p ila d o r, se p u e d e n n ecesitar o tro s p ro g ra m a s p a r a c re a r u n p ro ­


g r a m a o b je to e je c u ta b le . U n p r o g r a m a f u e n te se p u e d e d iv id ir e n m ó d u l o s a l m a ­
c e n a d o s e n a rc h iv o s d is tin to s . L a ta r e a d e r e u n ir el p r o g r a m a f u e n te a m e n u d o se
c o n f ia a u n p r o g r a m a d is tin to , lla m a d o p r e p ro c e s a d o r. El p r e p r o c e s a d o r ta m b ié n
p u e d e e x p a n d ir a b re v ia tu ra s, lla m a d a s m a c ro s, a p ro p o sic io n e s del len g u aje fuente.
L a figura 1.3 m u e s tra u n a “c o m p ila c ió n " típica. El p ro g ra m a o b je to c re a d o p o r
el c o m p ila d o r p u e d e re q u e rir p ro c e s a m ie n to a d ic io n a l a n te s d e p o d e rlo e je c u ta r. El
c o m p ila d o r d e la fig u ra 1.3 c re a c ó d ig o e n len g u aje e n s a m b la d o r el c u a l es tr a d u c id o
p o r u n e n s a m b la d o r a código d e m á q u in a y d e s p u é s se en laza a a lg u n a s ru tin a s de
b ib lio te ca p a ra p r o d u c ir el código q u e re a lm e n te se e je c u te e n la m á q u in a .
E n las d o s secciones sig uien tes se e s tu d ia rá n los c o m p o n e n te s d e u n c o m p ila d o r;
los p ro g ra m a s restan tes d e la figura 1.3 se a n a liz a n e n la sección 1.4.

1 .2 A N A L I S I S D E L P R O G R A M A F U E N T E

En esta sección se in tr o d u c e el análisis y se ilustra s u uso en a lg u n o s len g u ajes d e


fo rm a c ió n d e textos. E ste te m a se tr a ta c o n m á s d etalle en los c ap ítu lo s 2 al 4 y en
el 6. E n la c o m p ila c ió n , el análisis c o n s ta d e tres fases:
1. A nálisis lineal , en el q u e la c a d e n a d e c a ra c te re s q u e c o n s titu y e el p r o g r a m a
fu e n te se lee d e iz q u ie rd a a d e r e c h a y se a g ru p a en com ponentes léxicos , q u e son
secu en cias d e carac teres q u e tie n e n u n sig nificad o colectivo.
1.2 A N A L I S I S DF1 P R O G R A M A FIJENTE 5

estru ctu ra del program a fu en te

*
program a o b je to e n len g u a je e n sa m b la d o r

i __________________

en sa m b la d o r

*
c ó d ig o d e m á q u in a rclo ca liza b ie
i _______________
b ib lio teca ,
e d ito r d e carga y e n la c e
a r ch iv o s o b je to r elo ca liza b lcs
i
c ó d ig o d e m á q u in a a b so lu to

F ig. 1.3. Sistem a para procesam iento de u n lenguaje.

2. A nálisis jerárquico, en el q u e los carac teres o los c o m p o n e n te s léxicos se a g r u ­


p a n je r á r q u ic a m e n te e n c o leccio n es a n id a d a s c o n un sign ificado colectivo.

3. A nálisis sem ántico, en el q u e se realizan ciertas revisio nes p a ra aseg u rar q u e los
c o m p o n e n te s d e u n p r o g r a m a se a ju s ta n d e u n m o d o significativo.

A n á lis is lé x ic o

En u n c o m p ila d o r, el análisis lineal se lla m a análisis léxico o exploración. P o r e je m ­


plo , en el análisis léxico los carac teres d e la p ro p o sic ió n d e asignación

p o sic ió n := i n i c i a l + v e lo c id a d * 60

se a g ru p a ría n en los c o m p o n e n te s léxicos siguientes:

1. El id e n tific ad o r p o s i c i ó n .
2. El s ím b o lo d e asig n ac ió n := .
3. El id e n tific a d o r i n i c i a l .
4. El signo d e s u m a .
5. El id e n tific a d o r v e l o c i d a d .
6. El signo d e m u ltip licació n .
7. El n ú m e r o 60.

Los esp acio s e n b la n c o q u e s e p a ra n los carac teres d e estos c o m p o n e n te s léxicos n o r ­


m a lm e n te se e lim in a n d u r a n te el a n álisis léxico.
6 I N T R O D U C C I O N A LA C O M P I L A C I O N

A n á lis is sin tá ctico

El análisis je rá rq u ic o se d e n o m in a análisis sintáctico. E ste im p lic a a g ru p a r los c o m ­


p o n e n te s léxicos del p ro g ra m a fu e n te e n frases g ra m a tic a le s q u e el c o m p ila d o r u ti­
liza p a ra sintetizar la salida. P o r lo general, las frases gram aticales del p ro g ra m a fuente
se rep resen ta n m e d ia n te u n árb o l d e análisis sin tá ctic o c o m o el q u e se ilu stra en la
figura 1.4.

proposición
de asignación

identificador
I
posición
expresión
i
¡dentificador
I
in icial
identificador
l
velocidad

Fig. 1.4. Arbol d e análisis sintáctico para p o s i c i ó n := i n i c i a l + v e l o c i d a d * 60.

E n la ex p resió n i n i c i a l + v e l o c i d a d * 6 0 , la frase v e l o c i d a d * 6 0 es una


u n id a d lógica, p o r q u e las c o n v e n c io n e s usuales d e las e x p resio n es a ritm é tic a s in d i­
c a n q u e la m u ltip lic a c ió n se h a c e a n te s q u e la s u m a . P u esto q u e la e x p re sió n i n i -
c i a l + v e l o c i d a d v a s e g u id a d e u n *, n o se a g r u p a e n u n a so la frase in d e p e n ­
d ie n te en la figura 1.4.
La e s tru c tu ra je rá rq u ic a d e u n p r o g r a m a n o r m a lm e n te se ex p resa u tiliz a n d o re­
glas recursivas. P o r e jem p lo , se p u e d e n d a r las sig uien tes reglas c o m o p arte d e la d e ­
finición d e expresiones:

1. C u a lq u ie r ¡dentificador es u n a expresión.
2. C u a lq u ie r núm ero es u n a expresión.
3. Si expresiónt y expresión2 son ex p resio n es, e n to n c e s ta m b ié n lo son

expresión \ + expresión 2
expresión , * expresión2
( expresión i )

L as reglas ( I ) y (2 ) s o n reglas b ásicas ( n o recu rsivas), e n t a n t o q u e la regla (3) d e ­


fine e x p re sio n e s e n f u n c ió n d e o p e r a d o r e s a p lic a d o s a o tr a s e x p re s io n e s . A sí, p o r
la regla (1). i n i c i a l y v e l o c i d a d s o n e x p re s io n e s . P o r la regla (2), 6 0 e s u n a
ex p re sió n , m ie n tr a s q u e p o r la regla (3), p r im e r o p o d e m o s in fe rir q u e v e l o c i d a d
* 60 es u n a e x p re s ió n , y fin a lm e n te , q u e i n i c i a l + v e l o c i d a d * 60 ta m b ié n es
u n a ex p resió n .
1.2 ANALISIS D LL P R O G R A M A PU E N T E 7

D e m a n e r a sim ilar, m u c h o s lenguajes d e fin e n recu rsiva m e n te las p ro p o sic io n e s


m e d ia n te reglas c o m o :

1. Si identificador , es u n id c n tific a d o r y expresión■>e s u n a ex p resió n , e n to n c e s

identijicador , : = expresión2

es u n a p "oposición.

2. Si expresión i e s u n a e x p re sió n y p ro p o sic ió n es u n a p ro p o sició n , e n to n c e s

w hile í expresión i ) d o proposición 2


if ( expresiónt ) th e n p ro p o sició n

son p rop o sicio nes.

La d ivisió n e n tre a n álisis léxico y a n álisis s in tá c tic o es algo a rb itra ria . G e n e r a l­


m e n te se elige u n a d iv isión q u e s im p lifiq u e la ta re a c o m p le ta del análisis. U n facto r
p a ra d e te r m in a r la d iv isió n es si u n a c o n s tru c c ió n del len g u aje fu e n te es in h e re n te ­
m e n te recu rsiv a o n o . L as c o n s tru c c io n e s léxicas n o re q u ie re n re c u rsió n , m ie n tra s
q u e las c o n s tru c c io n e s sin tácticas su elen req u erirla. L as g ra m á tic a s in d e p e n d ie n te s
del c o n te x to son u n a form alizació n d e reglas recursivas q u e se p u e d e n u s a r p a ra guiar
el análisis sin táctico . E stas g ra m á tic a s se d a n a c o n o c e r e n el c a p itu lo 2 y se estu d ia n
a m p lia m e n te en el cap ítu lo 4.
P o r e je m p lo , n o se r e q u ie re r e c u r s ió n p a r a re c o n o c e r los id e n tific a d o re s , q u e
su elen ser c a d e n a s d e letras y d íg itos q u e c o m ie n z a n c o n u n a letra. N o r m a lm e n te ,
se re c o n o c e n lo s id e n tific a d o re s p o r el s im p le e x a m e n d e l flu jo d e e n t r a d a , e sp e ­
ra n d o h a s ta e n c o n tr a r u n c a rá c te r q u e n o sea ni letra ni d íg ito , y a g r u p a n d o después
tocias las letras y d íg ito s e n c o n tr a d o s h asta ese p u n t o e n u n c o m p o n e n te léx ico iden-
tificador. Los carac teres así a g ru p a d o s se registran e n u n a ta b la, lla m a d a ta b la d e
sím b o lo s, y se retiran d e la e n tra d a , p a r a q u e p u e d a e m p e z a r el p r o c e s a m ie n to del
sigu ien te e le m e n to léxico.
P o r o tr a parte, esta clase d e análisis léxico lineal n o es s u fic ie n te m e n te p o d ero so
p a ra a n a liz a r e x p resio n es o p ro p o sicio n es. P o r e jem p lo , n o p o d e m o s e m p a r e ja r d e
m a n e r a a p r o p ia d a los p arén tesis d e las ex p resio n es, o las p a la b ra s b e g i n y e n d en
p ro p o s ic io n e s sin im p o n e r a lg u n a clase d e e s tru c tu ra je rá rq u ic a o d e a n id a m ie n to a
la e n tra d a .
El árb o l d e a n álisis s in tá c tic o de la figura 1.4 describ e la e s tru c tu ra sin tá c tic a d e
la e n t r a d a . U n a r e p r e s e n t a c i ó n i n t e r n a m á s c o m ú n d e e s t a e s t r u c t u r a s i n t á c t i c a e s

/ \ / \
posición + posición +
/ \ / \
in icial * in icial
/ \ / \
velocidad 60 velocidad e n ta r e a l

(a) <b) 60

Fig. 1.5. El análisis sem ántico inserta un a conversión d e en tero a real.


S I\IR O l> l> ( < I t ) \ \ I \ COM PILACION

la q u e d a el á rb o l s in tá c tic o d e la figura L 5(a). U n árb o l s in tá c tic o es u n a re p re se n ­


ta c ió n c o m p a c ta del árb o l d e análisis s in tá c tic o e n el q u e los o p e ra d o re s a p a re c e n
c o m o los n o d o s in te rio re s y los o p e r a n d o s d e u n o p e r a d o r s o n los h ijo s d e l n o d o
p a ra ese o p e ra d o r. L a c o n s tru c c ió n d e á rb o le s c o m o el d e la fig u ra 1.5(a) se e stu d ia
e n la sección 5.2. En el c a p ítu lo 2, y c o n m á s d e ta lle e n el c a p ítu lo 5, se e s tu d ia rá el
te m a d e la traducción dirigida por la sin ta xis , e n la q u e el c o m p ila d o r u tiliz a la es­
tr u c tu r a je rá rq u ic a d e la e n tr a d a p a ra a y u d a r a g e n e ra r la salida.

A n á lis is s e m á n tic o

L a fase d e a n á lis is s e m á n t ic o rev isa el p r o g r a m a f u e n te p a r a t r a t a r d e e n c o n t r a r


e rro re s s e m á n tic o s y re ú n e la in fo rm a c ió n so b re los tip o s p a r a la fase p o s te rio r d e
g e n e ra c ió n d e código. En ella se utiliza la e s tru c tu ra je rá rq u ic a d e te r m in a d a p o r la
fase d e análisis s in tá c tic o p a ra id e n tific a r los o p e ra d o re s y o p e r a n d o s d e ex p resio n es
y p ro p o sicio n es.
U n c o m p o n e n t e i m p o r ta n te del a n álisis s e m á n tic o es la v erific a c ió n d e tipos.
A q u í, el c o m p ila d o r verifica si c a d a o p e r a d o r tie n e o p e r a n d o s p e rm itid o s p o r la es­
p ecificació n del len g u aje fuente. P o r e je m p lo , las d efin ic io n e s d e m u c h o s len g u ajes
d e p ro g ra m a c ió n re q u ie re n q u e el c o m p ila d o r in d iq u e u n e r r o r c a d a vez q u e se use
u n n ú m e r o real c o m o ín d ice d e u n a m a triz. Sin e m b a rg o , la especificación del len­
g u a je p u e d e p e r m itir c ie rta s c o e rc io n e s a los o p e r a n d o s . p o r e je m p lo , c u a n d o u n
o p e r a d o r a ritm é tic o b in a rio se ap lica a u n n ú m e r o e n te r o y a u n n ú m e r o real. En
este caso, el c o m p ila d o r p u e d e n ecesitar c o n v e rtir el n ú m e r o e n te r o a real. I-a c o m ­
p ro b a c ió n d e tip o s y el análisis s e m á n tic o se e s tu d ia n e n el c a p ítu lo 6.

E je m p lo I . l . D e n tr o d e u n a m á q u in a el p a tró n d e b its q u e re p re s e n ta u n e n te r o es
e n g en eral d is tin to del p a tró n d e b its p a ra u n real, a u n c u a n d o el n ú m e r o e n t e r o y
el real te n g a n el m is m o valor. P o r e je m p lo , su p ó n g a se q u e to d o s los id e n tific ad o res
d e la figura 1.5 se h a n d e c la ra d o reales y q u e ta n sólo 6 0 se s u p o n e e n te ro . L a veri­
ficación d e tip o s de la figura 1.5(a) revela q u e * se ap lica a u n real, v e l o c i d a d , y a
u n e n te ro . 60. El tr a ta m ie n to general es c o n v e rtir el e n te r o a real. E sto se h a logrado
en la figura l.5 (b ) c r e a n d o u n n o d o e x tra p a ra el o p e r a d o r e n ta r e a l q u e d e m a n e ra
ex p lícita c o n v ie rte u n e n te r o a real. P o r o tr a p arte , c o m o el o p e r a n d o d e en ta r ea l es
u n a c o n s ta n te , el c o m p ila d o r p o d ría re e m p la z a r la c o n s ta n te e n te r a p o r u n a c o n s­
ta n te real eq u iv alen te. □

A n á lis is en fo r m a d o r e s d e te x to s

Es útil c o n s id e ra r q u e la e n tra d a d e u n f o r m a d o r d e tex to s especifica u n a je ra rq u ía


d e cajas: reg io n es re c ta n g u la re s q u e se van a lle n a r c o n alg ú n p a tró n d e bits, rep re­
s e n ta n d o píxeles c la ro s y o s c u ro s p a r a ser im p re so s p o r el d isp o sitiv o d e salida.
P o r e jem p lo , el s is te m a TfcX ( K n u th 11984a]) c o n sid e ra su e n tr a d a d e esta m a ­
nera. C a d a c a r á c te r q u e n o sea p arte d e u n a o rd e n re p re s e n ta u n a c a ja q u e c o n tie n e
el p a tró n d e b its d e ese c a rá c te r c o n el tip o y t a m a ñ o a p ro p ia d o s. L os c a ra c te re s c o n ­
se cu tiv o s n o sep a ra d o s p o r “esp acio s e n blanco*’ (esp acio s o carac teres d e n u e v a li­
n e a ) se a g r u p a n e n p alab ras, q u e c o n siste n e n u n a se c u e n c ia d e cajas d is p u e s ta s h o­
rizo n talm en te. m o strad as en el d ib u jo d e la figura 1.6. El a g ru p a m ie n to d e caracteres
1.2 ANALISIS DLL P R O G R A M A F U E N T E 9

d o P a 1a b a
Fig. 1.6. A grupam iento d e caracteres y palabras en cajas.

en p a la b ra s (u ó rd en es) es el asp ecto lineal o léxico del análisis e n u n f o r m a d o r de


textos.
L as cajas e n TfcX se p u e d e n c o n s tru ir a p a r tir d e cajas m á s p e q u e ñ a s en c o m ­
b in a c io n e s a rb itra ria s h o riz o n ta le s y verticales. P o r ejem plo .

\ h b o x { d is ta d e cajas> }

a g ru p a la lista d e cajas y u x ta p o n ié n d o la s h o riz o n ta lm e n te , m ie n tra s q u e el o p e ra d o r


v b o x a g ru p a d e m a n e r a sim ila r u n a lista d e cajas p o r y u x ta p o sic ió n vertical. Así.
si se in d ic a en T g X

hbox{ vbox{¡ 1} v b o x ) © 2}}

se o b tie n e la d isp o sició n d e cajas q u e se m u e stra en la figura 1.7. D e te r m in a r la dis­


posición je rá rq u ic a d e las cajas im p lic a d a s e n la e n tr a d a es p a rte del a n álisis sin tá c ­
tico en T ^ X .

Fig. 1 .7 . Jerarquía d e cajas en T ^ X .

C o m o o tro ejem plo, el prcprocesador E Q N para m atem áticas (K em ig h a n y Cherry


[1975]). o el p ro c e s a d o r m a te m á tic o d e T e X . c o n s tru y e e x p resio n es m a te m á tic a s a
p a r tir d e o p e r a d o r e s c o m o s u b y s u p p a r a s u b ín d ic e s y s u p e rín d ic e s . Si E Q N e n ­
c u e n tra u n te x to d e e n tr a d a d e la fo rm a
CAJA s u b caja
reduce el ta m a ñ o d e caja y la u n e a C A JA cerca d e la e s q u in a in ferio r d e re c h a , c o m o
se ilu stra e n la figura 1.8. D e m a n e r a sim ilar, el o p e r a d o r s u p u n e caja a la e s q u in a
su p e rio r d erecha.

Fig. 1.8. C onstrucción d e la estru ctura d e subíndice en texto m atem ático.


II) INTRO DUCCIO N \ I \ C O M P I l AC IO N

Estos o p e ra d o re s se p u e d e n a p lic a r rec u rsiv a m e n te . asi q u e . p o r e jem p lo , el te x to


en E Q N

a s u b ¡ i s u p 2}

d a c o m o resu ltad o a,2 . A g ru p a r los o p e ra d o re s s u b y s u p e n c o m p o n e n te s léxicos


es p a rte del análisis léxico del te x to e n E Q N . S in e m b a rg o , se necesita la e s tru c tu ra
sin tá ctic a del te x to p a ra d e te r m in a r el ta m a ñ o y la p o sició n d e las cajas.

1.3 L A S F A S E S D E E N C O M P I L A D O R

C o n c e p tu a lm c n te . u n c o m p ila d o r o p e ra e n fa se s, c a d a u n a d e las cu ales tra n s fo rm a


al p ro g ra m a fu e n te d e u n a rep re se n ta c ió n e n o tra . En la figura 1.9 se m u e stra un a
d esc o m p o sic ió n típ ica d e un c o m p ila d o r. E n la p ráctica, se p u e d e n a g ru p a r alg u n as
fases, c o m o se m e n c io n a en la sección 1.5. y las re p re se n ta c io n e s in te rm e d ia s e n tre
las fases a g ru p a d a s n o n ecesitan ser c o n s tr u id a s ex p lícitam en te.

program a fu en te

programa objeto

Fig. 1.9. Fases d e un com pilador.

Las tres p rim e ra s fases, q u e fo rm a n la m a y o r p a rte d e la p o rc ió n d e análisis d e


u n c o m p ila d o r, se in tro d u je ro n e n la sección a n te rio r. O tra s d o s a ctiv id a d es, la a d ­
m in istració n d e la ta b la d e s ím b o lo s y el m a n e jo d e errores, se m u e s tra n en in te ra c ­
c ió n c o n las seis fases d e a n á lis is lé x ico , a n á lis is s in tá c tic o , a n á lis is s e m á n tic o .
1.3 LAS FASES DE U N C O M P IL A D O R II

g e n e ra c ió n d e c ó d ig o in te rm e d io , o p tim a c ió n d e c ó d ig o y g e n e ra c ió n d e códig o . De
m o d o in fo rm a l, ta m b ié n se lla m a rá n “ fases" al a d m in is tr a d o r d e la ta b la d e s ím b o ­
los y al m a n e ja d o r d e errores.

A d m in istra ció n d e la ta b la d e s ím b o lo s

U n a fu n c ió n esencial d e u n c o m p ila d o r es reg istra r los id e n tific ad o res u tiliz ad o s en


el p ro g ra m a fu e n te y r e u n ir in fo rm a c ió n so b re los d is tin to s a tr ib u to s d e c a d a id e n ­
tificad o r. E stos a trib u to s p u e d e n p r o p o r c io n a r in fo rm a c ió n sobre la m e m o r ia asig­
n a d a a u n id e n tif ic a d o r , s u ti p o , s u á m b i t o (la p a r t e d e l p r o g r a m a d o n d e tie n e
validez) y. en el c a so d e n o m b r e s d e p ro c e d im ie n to s , cosas c o m o el n ú m e r o y tipos
d e s u s a rg u m e n to s , el m é to d o d e p a s a r c a d a a r g u m e n to ( p o r e je m p lo , p o r referen ­
cia) y el tip o q u e d ev uelve, si lo hay.
U n a tabla d e sím bolos es u n a e s tru c tu ra d e d a to s q u e c o n tie n e un registro por
c a d a id e n tific a d o r. c o n los c a m p o s p a ra los a tr ib u to s del id en tificad o r. La e s tru c tu ra
d e d a to s p e rm ite e n c o n tr a r r á p id a m e n te el registro d e c a d a id e n tific a d o r y a lm a c e ­
n a r o c o n s u lta r rá p id a m e n te d a to s d e ese registro. L as tab las d e s ím b o lo s se estu d ian
e n los c a p ítu lo s 2 y 7.
C u a n d o el a n a liz a d o r léxico d e te c ta u n id e n tific a d o r en el p ro g ra m a fu en te , el
id e n tific a d o r se in tr o d u c e e n la ta b la d e sím b o lo s. S in e m b a rg o , n o r m a lm e n te los
a tr ib u to s d e u n id e n tific a d o r n o se p u e d e n d e te r m in a r d u r a n te el análisis léxico. P or
e je m p lo , en u n a d eclaració n en P ascal c o m o
var posición, inicial, velocidad : real ;

el tip o real n o se c o n o c e c u a n d o el a n a liz a d o r léxico e n c u e n t r a p o s i c i ó n , i n i -


cial, y v e l o c i d a d .
Las fases re s ta n te s in tro d u c e n in fo rm a c ió n so b re los id e n tific ad o res e n la tabla
d e s ím b o lo s y d esp u és la utilizan d e v arias fo rm as. P o r e jem p lo , c u a n d o se está h a ­
c ie n d o el análisis s e m á n tic o y la g e n e ra c ió n d e c ó d ig o in te rm e d io , se necesita sab er
cuáles son los tip o s d e los identificadores, p a ra p o d e r c o m p ro b a r si el p ro g ram a fuente
los usa d e u n a fo rm a v álid a y así p o d e r g e n e ra r las o p e ra c io n e s a p ro p ia d a s c o n ellos.
El g e n e ra d o r d e códig o , p o r lo general, in tr o d u c e y u tiliza in f o r m a c ió n d e ta lla d a so­
bre la m e m o r ia asig n ad a a los id entificadores.

D e te c c ió n e in fo rm a ción d e errores

C a d a fase p u e d e e n c o n tr a r erro res. S in e m b a rg o , d e s p u é s d e d e te c ta r un e rro r, cada


fase d e b e tr a ta r d e a lg u n a fo rm a ese erro r, p a ra p o d e r c o n t in u a r la c o m p ila c ió n , per­
m itie n d o la d e te c c ió n d e m á s e rro re s e n el p ro g ra m a fuente. U n c o m p ila d o r q u e se
d e tie n e c u a n d o e n c u e n tr a el p r im e r erro r, n o resu lta ta n útil c o m o debiera.
L as fases d e a n álisis s in tá c tic o y s e m á n tic o p o r lo general m a n e ja n u n a gran p o r­
ción d e los e rro re s d e te c ta b le s p o r el c o m p ila d o r. L a fase léxica p u e d e d e te c ta r e r r o ­
re s d o n d e los c a r a c te r e s r e s ta n t e s d e la e n t r a d a n o f o r m a n n in g ú n c o m p o n e n t e
léxico del lenguaje. L os e rro re s d o n d e la c a d e n a d e c o m p o n e n te s léxicos v io lan las
reglas de e s tr u c tu r a (sin tax is) del le n g u a je son d e te r m in a d o s p o r la fase d e análisis
sintáctico . D u r a n te el a n álisis s e m á n tic o el c o m p ila d o r in te n ta d e le c ta r c o n s tru c c io ­
nes q u e te n g a n la e s tru c tu ra sin tá c tic a co rrecta, p e r o q u e n o te n g a n sig n ificad o para
la o p e ra c ió n im p lic a d a , por e je m p lo , si se in te n ta s u m a r d o s id en tificad o res. u n o d e
12 IN T R O D U C C IO N A LA COM PILACION

los cu ales es el n o m b r e d e u n a m a triz, y el o tr o , el n o m b r e d e u n p r o c e d im ie n to . En


c a d a p arte del libro d e d ic a d a a c a d a fase se e s tu d ia el m a n e jo d e e rro re s d e esa fase.

L a s f a s e s d e a n á lis is

C o n f o r m e a v a n z a la tra d u c c ió n , la re p re s e n ta c ió n in te rn a del p r o g r a m a fu e n te qu e
tiene el c o m p ila d o r se m o d ifica. P a ra ilu stra r esas rep resen ta cio n es, c o n sid érese la
tr a d u c c ió n de la p ro p o sició n
p o sic ió n := i n i c i a l + v e lo c id a d * 60 (1.1)

L a figura 1.10 m u e s tra la rep re se n ta c ió n d e esta p ro p o sic ió n d e s p u é s d e c a d a fase.


La fase d e análisis léxico lee los c a ra c te re s e n el p r o g r a m a fu e n te y los a g ru p a en
u n a c a d e n a d e c o m p o n e n te s léxicos e n los q u e c a d a c o m p o n e n te re p re s e n ta u n a se­
c u e n c ia ló g ic a m e n te c o h e r e n te d e c a ra c te re s , c o m o u n id e n tific a d o r, u n a p a la b ra
clave ( i f , w h i l e , etcétera), u n c a rá c te r d e p u n tu a c ió n , o u n o p e r a d o r d e varios
caracteres, c o m o : =. L a se c u e n c ia d e c a ra c te re s q u e fo rm a u n c o m p o n e n te léxico se
d e n o m in a le.xema del c o m p o n e n te .
A cierto s c o m p o n e n te s léxicos se les agregará u n “ v a lo r léxico” . A sí. c u a n d o se
e n c u e n tr a u n id e n tific a d o r c o m o v e l o c i d a d , el a n a liz a d o r léxico n o sólo genera
u n c o m p o n e n te léxico, p o r e je m p lo , id, sin o q u e ta m b ié n in tr o d u c e el le x e m a v e -
l o c i d a d en la ta b la d e sím bolos, si a ú n n o e s ta b a allí. El v alo r léxico a so c ia d o co n
esta a p a ric ió n de id señala la e n tr a d a d e la ta b la d e s ím b o lo s c o rre s p o n d ie n te a v e •
locid a d .
E n esta sección, se u s a rá n ¡ d |. id2 e id i p a ra p o s i c i ó n , i n i c i a l y v e l o c i d a d ,
re sp e c tiv a m e n te , p a r a e n fa tiz a r q u e la re p re s e n ta c ió n in te r n a d e u n id e n tific a d o r es
d ife re n te d e la se c u e n c ia d e carac teres q u e f o r m a n el id e n tific a d o r. P o r ta n to , la re­
p re se n ta c ió n d e ( I . I ) d e s p u é s del análisis léxico q u e d a su g erid a por:

id , := id> + id , * 6 0 (1 .2 )

Se d e b e ría n c o n s tr u ir c o m p o n e n te s léxicos p a r a el o p e r a d o r d e v ario s c a ra c te re s : =


y el n ú m e r o 60. p a r a reflejar su re p re s e n ta c ió n in te rn a , p e ro esto se d e ja p a r a el ca­
p ítu lo 2. El análisis léxico se tra ta e n d e ta lle e n el c a p ítu lo 3.
E n la secció n 1.2 y a se in tr o d u je r o n las fases s e g u n d a y tercera: los análisis sin­
tá c tic o y s e m á n tic o . El análisis s in tá c tic o im p o n e u n a e s tr u c tu r a je rá rq u ic a a la c a ­
d e n a d e c o m p o n e n te s léxicos, q u e se re p re s e n ta rá p o r m e d io d e á rb o le s sin táctico s,
c o m o se m u e s tra e n la figura 1.1 l(a). U n a e s tr u c tu r a d e d a to s típ ica p a r a el árb o l se
m u e s tra en la figura 1.1 l(b ), e n la q u e u n n o d o in te r io r es u n registro c o n u n c a m p o
p a r a el o p e r a d o r y d o s c a m p o s q u e c o n tie n e n a p u n ta d o r e s a los registros d e los hijos
iz q u ie rd o y d e re c h o . U n a h o ja es u n reg istro c o n d o s o m á s c a m p o s , u n o p a r a id e n ­
tificar al c o m p o n e n te léxico d e la h o ja , y los o tro s p a ra registrar in fo rm a c ió n sobre
el c o m p o n e n te léxico. Se p u e d e te n e r in fo rm a c ió n a d ic io n a l so b re las c o n s tru c c io ­
nes del len g u aje a ñ a d ie n d o m á s c a m p o s a los registros d e los n o d o s. E n los c a p ítu lo s
4 y 6 se e s tu d ia n el análisis s in tá c tic o y el a n álisis s e m á n tic o , re sp e c tiv a m e n te .

G e n e r a c ió n d e c ó d ig o in term ed io

D e s p u é s d e los a n álisis s in tá c tic o y s e m á n tic o , a lg u n o s c o m p ila d o re s g e n e ra n u n a


re p re s e n ta c ió n in te rm e d ia e x p lícita del p r o g r a m a fuente. S e p u e d e c o n s id e r a r esta
1.3 LAS FASES DE U N C O M PIL A D O R 13

posición := i n i c i a l + velocidad * 60

id,
id .
id» 60

J ______
a n a liza d o r se m á n tic o

id) +
T abla d e S í m b o l o s id
• • •
1 posición
id.» e n tu r e a l
• • •
2 in icial I
velocidad • • • 60
3
4 i
g en era d o r d e c ó d ig o in term ed io

I
tem pl := e n t a r e a l ( 6 0 )
temp2 := id 3 * templ
temp3 : « i d 2 -t t e m p 2
i d l := temp3

_______i______
o p tim a d o r d e c ó d ig o

t
tem pl := id3 * 60.0
i d l :•= i d 2 + t e m p l

i_____
g en era d o r d e c ó d ig o

í
MOVF i d 3 , R2
MULF # 6 0 . 0 , R2
MOVF i d 2 , R1
ADDF R 2 , R1
MOVF R l, id l

Fig. 1.10. T raducción d e un a proposición.


14 I N T R O D U C C I O N A LA C O M P I L A C I O N

/ \
idi +
/ \
id • *
/ \
id 60

(a ) (b)

Fig. 1 .1 1. La estructura d e dalos en (b) corresponde al árbol en (a).

re p re s e n ta c ió n in te r m e d ia c o m o u n p r o g r a m a p a r a u n a m á q u in a ab stra c ta . E sta re­


p re s e n ta c ió n in te rm e d ia d e b e te n e r d o s p ro p ie d a d e s im p o rta n te s ; d e b e s e r fácil de
p r o d u c ir y fácil d e tr a d u c ir al p ro g ra m a objeto.
La rep re se n ta c ió n in te rm e d ia p u e d e te n e r d iv ersas fo rm a s. E n el c a p ítu lo 8 se
tr a ta u n a fo rm a in te rm e d ia lla m a d a “c ó d ig o d e tres d ire c c io n e s”, q u e es c o m o el
len g u aje e n s a m b la d o r p a ra u n a m á q u in a e n la q u e c a d a p o sició n d e m e m o r ia p u e d e
a c t u a r c o m o u n registro. El c ó d ig o d e tres d ire c c io n e s co n siste en u n a se c u e n c ia d e
in s tru c c io n e s , c a d a u n a d e la s c u a le s tie n e c o m o m á x im o tr e s o p e r a n d o s . El p r o ­
g ra m a fu e n te d e (1.1) p u e d e a p a re c e r e n c ó d ig o d e tres d ire c c io n e s c o m o

tem pl := e n t a r e a l ( 6 0 )
tem p2 := id3 * tem pl (L3)
tem p3 := id2 + tem p2
id l := tem p3

E sta rep re se n ta c ió n in te rm e d ia tie n e v arias p ro p ie d a d e s. P rim e ra , c a d a in s tru c ­


c ió n de tres d ire c c io n e s tien e a lo s u m o u n o p e ra d o r, a d e m á s d e la a sig n a c ió n . P or
ta n to , c u a n d o se g e n e ra n esas in stru ccio n es, el c o m p ila d o r tie n e q u e d e c id ir el o rd e n
en q u e d e b e n e fectu arse las o p eracio n es; la m u ltip lic a c ió n p reced e a la a d ic ió n en el
p r o g r a m a fu en te d e (1.1). S e g u n d a , el c o m p ila d o r d e b e g e n e ra r u n n o m b r e te m p o ra l
p a r a g u a rd a r los valores c alcu lad o s p o r c a d a in stru c c ió n . T e rc e ra , a lg u n a s in s tru c ­
c io n e s d e “ tres d ir e c c io n e s ” tie n e n m e n o s d e tr e s o p e r a n d o s , p o r e je m p lo , la p ri­
m e ra y la ú ltim a in s tru c c io n e s d e (1.3).
E n el c a p ítu lo 8 se tr a ta n las p rin c ip a le s re p re se n ta c io n e s in te rm e d ia s e m p le a d a s
en lo s c o m p ila d o re s . E n g e n e ra l, estas re p r e s e n ta c io n e s d e b e n h a c e r a lg o m á s q u e
c a lc u la r ex p resio n es; ta m b ié n d e b e n m a n e ja r c o n s tru c c io n e s de flu jo d e c o n tro l y
lla m a d a s a p ro c e d im ie n to s . L o s c ap ítu lo s 5 y 8 p re s e n ta n a lg o ritm o s p a r a g e n e ra r
c ó d ig o in te r m e d io p a r a c o n s tru c c io n e s típ ic a s d e lenguajes d e p ro g ra m a c ió n .

O p tim a c ió n d e có d igo

L a fase d e o p tim a c ió n d e c ó d ig o tra ta d e m e jo ra r el c ó d ig o in te r m e d io , d e m o d o


q u e resulte u n c ó d ig o de m á q u in a m á s r á p id o d e e je c u ta r. A lg u n as o p tim a c io n e s
son triviales. P o r e jem p lo , u n a lg o ritm o n a tu ra l g en era el c ó d ig o in te rm e d io (1.3)
u tiliz a n d o u n a in stru c c ió n p a r a c a d a o p e r a d o r d e la rep re se n ta c ió n d e árb o l d esp u és
1.3 LAS FASES D E U N C O M P I L A D O R 15

del a n álisis s e m á n tic o , a u n q u e hay u n a fo rm a m e jo r d e rea liz a r los m is m o s cálculos


u s a n d o las d o s in stru ccio n es

templ := i d 3 * 60.0 .j
idl := i d 2 + templ

Este sencillo a lg o ritm o n o tien e n a d a d e m a lo , p u e s to q u e el p r o b le m a se p u e d e so­


lu c io n a r e n la fase d e o p tim a c ió n d e cód ig o. E sto es. el c o m p ila d o r p u e d e d e d u c ir
q u e la c o n v e rsió n d e 60 d e e n t e r o a real se p u e d e h a c e r de u n a vez p o r to d a s e n el
m o m e n to d e la c o m p ila c ió n , d e m o d o q u e la o p e ra c ió n e n t a r e a l se p u e d e e lim i­
nar. A d em ás, t e m p 3 se usa sólo u n a vez. p a r a tr a n s m itir su v a lo r a idl. E n to n ces
resulta seg u ro s u stitu ir i d l p o r t e m p 3 . a p a r tir d e lo c u a l la ú ltim a p ro p o sic ió n d e
(1 .3 ) n o se necesita y se o b tie n e el c ó d ig o d e (1.4).
H a y m u c h a v ariació n e n la c a n tid a d d e o p tim a c ió n d e c ó d ig o q u e e je c u ta n los
d is tin to s c o m p ila d o re s . E n los q u e h a c e n m u c h a o p tim a c ió n , lla m a d o s " c o m p il a ­
d o re s o p tim a d o re s " . u n a p a rte significativa del tie m p o del c o m p ila d o r se o c u p a en
e s ta fase. S in e m b a r g o , h a y o p tim a c io n e s sen cillas q u e m e jo r a n s e n s ib le m e n te el
tie m p o d e e je c u c ió n del p ro g ra m a o b je to sin r e ta rd a r d e m a s ia d o la c o m p ila c ió n . En
el c a p ítu lo 9 se e s tu d ia n m u c h o s d e estos asp ecto s, m ie n tra s q u e e n el c a p ítu lo 10 se
d a la tecno log ía u tiliz ad a p o r los c o m p ila d o re s o p tim a d o r e s m á s p o ten tes.

G e n e r a c ió n d e cód igo

La fase final d e u n c o m p ila d o r e s la g e n e ra c ió n de c ó d ig o o b je to , q u e p o r lo general


co n siste e n c ó d ig o d e m á q u in a relocalizable o c ó d ig o e n s a m b la d o r . L as p osicion es
d e m e m o r ia se selec cio n an p a ra c a d a u n a d e las variables u s a d a s p o r el p ro g ra m a .
D esp ués, c a d a u n a d e las in stru c c io n e s in te r m e d ia s se tra d u c e a u n a se c u e n c ia d e
in stru ccio n es d e m á q u in a q u e e je c u ta la m is m a ta re a. U n a s p e c to decisiv o es la asig­
n ació n d e variables a registros.
P o r e jem p lo , u tiliz a n d o los registros 1 y 2, la tr a d u c c ió n del c ó d ig o d e (1.4) p o ­
d ría co n v ertirse en

MOVF id3, R2
MULF #60.0, R2
MOVF id2, R1 (1.5)
A D D F R 2 , R1
MOVF Rl, idl

E l p r im e r o y s e g u n d o o p e r a n d o s d e c a d a in s tr u c c ió n e s p e c ific a n u n a f u e n t e y u n
d e s tin o , re sp e c tiv a m e n te . L a F d e c a d a in stru c c ió n in d ic a q u e las in s tru c c io n e s tra ­
b ajan c o n n ú m e r o s d e p u n t o flo tan te. E ste c ó d ig o tra s la d a el c o n te n id o d e la d irec­
c i ó n 1 i d 3 al reg istro 2, d e s p u é s lo m u ltip lic a p o r la c o n s ta n te real 6 0 . 0 . El signo
# significa q u e 6 0 . o se tr a ta c o m o u n a c o n s ta n te . L a tercera in stru c c ió n p a sa i d 2
al registro 1. L a c u a r ta in stru c c ió n le s u m a el v alo r p r e v ia m e n te c a lc u la d o e n el re-

S e h a e v ita d o e l im p o r ta n te a sp e c to d e la a sig n a c ió n d e m em o ria para lo s id e n tific a d o r es d e l p r o ­


gram a fu en te. C o m o se verá e n el c a p itu lo 7 . la o r g a n iza c ió n d e m e m o r ia e n el tie m p o d e e je cu ció n
d e p e n d e d e l len g u a je q u e s e e s té c o m p ila n d o . I-as d e c is io n e s d e a sig n a c ió n d e m e m o r ia se hacen
d u ran te la g en era ció n del c ó d ig o in te r m e d io o d u ra n te la g en era ció n d e có d ig o .
16 IN T R O D U C C IO N A LA COM PILACION

g istro 2. P o r ú ltim o , el v a lo r del registro 1 se p a sa a la d ire c c ió n d e i d l , d e m o d o


q u e el c ó d ig o a p lic a la asig n ac ió n d e la fig u ra 1.10. E n el c a p ítu lo 9 se tr a ta la ge­
n e ra c ió n d e código.

1.4 P R O G R A M A S D E S I S T E M A S R E L A C I O N A D O S
C O N U N C O M P IL A D O R

C o m o se vio en la fig u ra 1.3, la e n tr a d a p a r a u n c o m p ila d o r p u e d e p ro d u c irs e p o r


u n o o v ario s p rep ro cesad o res, y p u e d e n ecesitarse o tr o p r o c e s a m ie n to d e la salida
q u e p ro d u c e el c o m p ila d o r a n te s d e o b te n e r u n c ó d ig o d e m á q u in a e jecu tab le. En
esta secció n se a n a liz a el c o n te x to e n el q u e suele f u n c io n a r u n c o m p ila d o r.

P r e p r o c e sa d o r e s

Los p re p ro c e sa d o re s p r o d u c e n la e n tr a d a p a r a u n c o m p ila d o r, y p u e d e n rea liz a r las


fu n c io n e s siguientes:

1. Procesam iento d e macros. U n p re p ro c e s a d o r p u e d e p e r m itir a u n u s u a rio defi­


n ir m a c ro s. q u e s o n a b re v ia tu ra s d e c o n s tru c c io n e s m á s g randes.

2. Inclusión d e archivos. U n p re p ro c e s a d o r p u e d e in s e rta r a rc h iv o s d e e n c a b e z a ­


m ie n to en el te x to del p ro g ra m a . P o r e je m p lo , el p re p ro c e s a d o r d e C h a c e q u e
el c o n te n id o del a rc h iv o < g l o b a l . h > re e m p la c e a la p ro p o sic ió n # i n c l u d e
< g l o b a l .h > c u a n d o p ro cesa u n a rc h iv o q u e c o n te n g a a esa p ro p o sició n .

3. Preprocesadores "racionales". E sto s p re p ro c e s a d o re s e n r iq u e c e n los len g u ajes


an tig u o s c o n recu rso s m á s m o d e rn o s d e flu jo d e c o n tro l y d e e s tr u c tu r a s d e d a ­
tos. P o r e jem p lo , u n p re p ro c e s a d o r d e este tip o p o d ría p r o p o r c io n a r al u su ario
m a c r o s in c o rp o ra d a s p a r a c o n s tru c c io n e s , c o m o p ro p o s ic io n e s w h i l e o i f , en
u n lenguaje d e p r o g ra m a c ió n q u e n o las tenga.

4. Extensiones a lenguajes. E stos p rocesado res tra ta n d e c rear posibilidades al len­


g u a je q u e e q u iv a le n a m a c r o s in c o r p o r a d a s . P o r e j e m p lo , el le n g u a je E q u e l
( S to n e b r a k e r y o tr o s [1 9 7 6 ]) e s u n le n g u a je d e c o n s u lta d e b a se d e d a to s in te ­
grado e n C. El p re p ro c e sa d o r c o n sid e ra las propo sicio n es q u e e m p ie z a n c o n # #
c o m o p ro p o s ic io n e s d e acce so a la b a se d e d a to s , sin re la c ió n c o n C , y se tr a ­
d u c e n a lla m a d a s d e p r o c e d im ie n to a ru tin a s q u e realizan el acce so a la base d e
d atos.

L o s p ro c e s a d o re s d e m a c r o s tr a t a n d o s clases d e p ro p o s ic io n e s : d e fin ic ió n d e
m a c ro s y uso d e m a c ro s. L as d efin ic io n e s n o r m a lm e n te se in d ic a n c o n alg ú n cará c ­
te r exclusivo o p a la b ra clave, c o m o d e f i n e o m a c r o . C o n s ta n d e u n n o m b r e p a ra
la m a c ro q u e se está d e fin ie n d o y d e u n cuerpo , q u e c o n s titu y e su d efin ició n. A m e­
n u d o , los p ro cesad ores d e m a c ro s a d m ite n parám etros form ales e n su d efin ició n, esto
es, sím b o lo s q u e se re e m p la z a rá n p o r v alo res (en este c o n te x to , u n “ v a lo r” es u n a
c a d e n a d e caracteres). El u s o d e u n a m a c r o co n siste en d a r n o m b r e a la m a c r o y
p ro p o rc io n a r parám etros reales , es d ecir, v alo res p a r a s u s p a rá m e tro s fo rm ales. El
p ro c e s a d o r d e m a c ro s s u stitu y e los p a r á m e tr o s reales p o r los p a r á m e tr o s form ales
1.4 P R O G R A M A S DE SISTEMAS R E L A C IO N A D O S C O N U N CO M PILADO R 17

del c u e rp o de la m a c ro ; d esp u és, el c u e r p o tr a n s f o r m a d o re e m p la z a el uso d e la p ro ­


p ia m acro .

E je m p lo 1 .2 . El s is te m a d e c o m p o s ic ió n tip o g ráfica T ^ X m e n c io n a d o e n la sección


1.2 c o n tie n e u n re c u rs o d e m a c r o s g en eral. L as d e fin ic io n e s d e m a c r o s son d e la
forma
\ d e f i n e < n o m b re d e l a m a c ro < p la n tilla > { < cu erp o > }

El n o m b r e d e u n a m a c ro es c u a lq u ie r c a d e n a d e letras p re c e d id a p o r u n a d iag o n al
in v ertida. La p la n tilla es c u a lq u ie r c a d e n a d e c a ra c te re s en d o n d e las c a d e n a s d e la
fo rm a # 1 , # 2 , . . . , # 9 se co n sid e ra n p a rá m e tro s form ales. E stos sím b o lo s
ta m b ié n p u e d e n a p a r e c e r e n el c u e r p o las veces q u e se q u ie r a . P o r e je m p lo , la si­
g u ie n te m a c ro d efin e u n a c ita del Journal o f th e A C M .

\d e fin e \JA C M # 1 ; # 2 ; # 3 .
{{\s 1 J . ACM} { \ b f # l } : # 2 , págs. # 3 .}

El n o m b r e d e la m a c ro es JACM. y la p la n tilla es " # 1 ; # 2 y # 3 . " ; los s ím b o lo s de


p u n t o y c o m a s e p a r a n los p a r á m e t r o s y d e s p u é s d e l ú l t i m o p a r á m e t r o se p o n e
u n p u n t o . U n u s o d e esta m a c r o d e b e t o m a r la f o r m a d e la p la n tilla , e x c e p to q u e
se p u e d e n s u s titu ir c a d e n a s a r b itr a r ia s p o r los p a r á m e tr o s f o r m a le s '. A sí. se p u e d e
escribir

\JACM 1 7 ; 4 ; 7 1 5 - 7 2 8 .

y se esp era q u e ap arezca

J. A C M 17:4, págs. 715-728.


La p arte del c u e r p o { \ s l J . ACM} p id e "J. A C M " en cursiva (si e s p o r slanted , “ in­
c lin a d o " en inglés). L a ex p resió n { b f # 1 } in d ic a q u e el p r im e r p a r á m e tr o real se
escrib irá e n n eg rita s ( b f es p o r boldface, “ n e g rita" e n inglés); este p a r á m e tr o es el
n ú m e r o d e v o lu m e n .
T g X a d m i t e c u a l q u i e r p u n t u a c i ó n o c a d e n a d e t e x t o p a r a s e p a r a r el v o l u ­
m e n . el n ú m e r o d e l e j e m p l a r y lo s n ú m e r o s d e p á g in a d e la d e f in ic ió n d e la m a ­
c r o \ j a c m . I n c lu s o se p o d r ía h a b e r p r e s c in d id o t o t a l m e n t e d e la p u n t u a c i ó n , en
c u y o c a so T g X t o m a r í a c a d a p a r á m e t r o re a l c o m o u n s o lo c a r á c te r o u n a c a d e n a
en cerrad a e n tre { } □

E n sa m b la d o r e s

A lg u n o s c o m p ila d o re s p r o d u c e n código e n s a m b la d o r , c o m o e n el c a so (1.5), q u e se


p a sa a u n e n s a m b la d o r p a r a su p ro c e s a m ie n to . O tro s c o m p ila d o re s re a liz a n el tr a ­
b a jo del e n s a m b la d o r , p ro d u c ie n d o c ó d ig o d e m á q u in a relocalizable q u e se p u e d e

B u e n o , c a d e n a s c a si arbitrarias, p u esto q u e s ó lo se h a c e u n sim p le a n á lisis lé x ic o d e izq u ierd a a


d erech a d e l u s o d e la m a c r o , y tan p r o n to c o m o s e e n c u e n tr e un s ím b o lo q u e c o n c u e r d e c o n el tex to
q u e sig u e a u n s ím b o lo i d e la p lan tilla, s e co n sid era q u e la c a d e n a p r e c e d e n te c o n c u e r d a c o n # i.
P o r ta n to , si se in ten tara su stitu ir a b ; c d por # 1 . resu ltaría q u e s ó lo a b c o n c u e r d a c o n # 1 y q u e
c d c o n cu erd a c o n it 2 .
18 I N T R O D U C C I O N A LA C O M P I L A C I O N

p a s a r d ir e c ta m e n te al e d ito r d e ca rg a y enlace. Se s u p o n e q u e el lecto r tie n e cierta


fam iliarid ad sobre c ó m o es u n lenguaje e n s a m b la d o r y q u é h ace el e n s a m b la d o r, aquí
se revisará la re la c ió n e n tr e el código e n s a m b la d o r y el c ó d ig o d e m á q u in a .
El código ensam blador e s u n a v e rs ió n m n e m o té c n ic a del c ó d ig o d e m á q u in a ,
d o n d e se u sa n n o m b r e s e n lu g a r d e códigos b in a rio s p a ra o p e ra c io n e s , y ta m b ié n se
u sa n n o m b r e s p a r a las d ire c c io n e s d e m e m o r ia . U n a secu en cia típ ica d e in s tru c c io ­
nes e n e n s a m b la d o r p u e d e ser

M O V a, R1
ADD #2, R1 (|.6)
MOV R1 , b

E ste c ó d ig o pasa el c o n te n id o d e la d ire c c ió n a al registro 1; d e s p u é s le s u m a la c o n s­


ta n te 2, tr a ta n d o al c o n te n id o del registro 1 c o m o u n n ú m e r o d e p u n to fijo, y p o r
ú ltim o a lm a c e n a el resu ltad o en la po sició n de m e m o r ia q u e re p re s e n ta b. D e ese
m o d o , c a lc u la b : = a + 2.
E s c o m ú n q u e los le n g u a je s e n s a m b la d o r e s te n g a n re c u rso s p a r a m a n e ja r m a-
c ro s q u e son sim ilares a las c o n sid e ra d a s a n te s p a ra los p rep ro c e sa d o re s d e m acros.

E n s a m b la d o d e d o s p a sa d a s

L a fo rm a m á s sim ple d e u n e n s a m b la d o r h a c e d o s pasadas sobre la e n tra d a , en d o n d e


u n a pasada co n siste en leer u n a vez u n a rc h iv o d e e n tra d a . E n la p r im e ra pasad a,
se e n c u e n tr a n to d o s los id e n tific ad o res q u e d e n o te n p o sicio n es d e m e m o r ia y se a l­
m a c e n a n e n u n a ta b la d e s ím b o lo s ( d is tin ta d e la d e l c o m p ila d o r ) . C u a n d o se e n ­
c u e n tr a n p o r p r im e ra v ez los id en tificad o res, se les asig n an p o sicio n es d e m e m o ria ,
d e m o d o q u e d esp u és d e leer (1.6), p o r e je m p lo , la ta b la d e s ím b o lo s c o n te n d r ía las
e n tra d a s q u e a p a re c e n e n la figura 1.12. E n esa figura, se s u p o n e q u e se reserv a u n a
p alab ra, q u e c o n s ta d e c u a tr o bytes, p a r a c a d a id e n tific a d o r, y q u e las d ire c c io n e s se
asig n an e m p e z a n d o a p a r tir del byie 0.

Id e n t i f i c a d o r D irección
a 0
b 4

Fig. 1.12. T abla de sím bolos de u n en sam b lad o r con los identificadores de (1.6).

E n la seg u n d a p a sa d a , el e n s a m b la d o r e x a m in a el a rc h iv o d e e n tr a d a d e n u ev o .
E sta v ez tra d u c e c a d a código d e o p e ra c ió n a la se c u e n c ia d e b its q u e re p re s e n ta esa
o p e r a c ió n e n len g u aje d e m á q u in a , y tra d u c e c a d a id e n tific a d o r q u e re p re s e n ta une.
p o sic ió n d e m e m o r ia a la d ir e c c ió n d a d a p o r ese id e n tif ic a d o r e n la ta b la d e s ím ­
bolos.
El re s u lta d o d e la seg u n d a p a s a d a n o r m a lm e n te es c ó d ig o d e m á q u in a relocali-
zable, lo c u a l significa q u e p u e d e carg arse e m p e z a n d o e n c u a lq u ie r p o sició n L d e la
m e m o ria ; e s decir, si se s u m a L a to d a s las d ire c c io n e s d e l cód ig o, e n to n c e s to d a s
las referen cias serán correctas. P o r ta n to , la salid a del e n s a m b la d o r d e b e d istin g u ir
aq u e lla s p a rte s d e in s tru c c io n e s q u e se refieren a d ire c c io n e s q u e se p u e d e n reloca-
lizar.
1.4 PR O G R A M A S DE SISTEM AS RELA CION ADO S C O N U N CO M PILADO R 19

E je m p lo 1 .3 . El sig uiente es u n c ó d ig o d e m á q u in a h ip o té tic o al q u e se p u e d e n tr a ­


d u c ir las in s tru c c io n e s en e n s a m b la d o r ( 1.6).

0 0 0 1 0 1 00 0 0 0 0 0 0 0 0 *
0011 01 10 00000010 ( 1.7)
0 0 1 0 0 1 00 0 0 0 0 0 1 0 0 *

Se c o n c ib e u n a p e q u e ñ a p a la b ra d e in stru c c ió n , en la q u e los c u a tr o p r im e r o s bits


son el c ó d ig o d e la in stru c c ió n , d o n d e 0001, 0010 y 0011 re p re s e n ta n las in s tru c ­
cio n es L O A D , S T O R E y A D D , re s p e c tiv a m e n te . L O A D y S T O R E sig nifican tras­
la d ar d e m e m o r ia a u n registro y viceversa. L os d o s bits sig u ie n tes d e sig n a n u n re­
gistro y 01 se refiere al registro 1 d e c a d a u n a d e las tres in s tru c c io n e s a n terio res.
L o s d o s b its sigu ien tes re p re se n ta n u n m a rc a d o r, d o n d e 00 es el m o d o d e direccio-
n a m ie n to o r d in a rio , y los ú ltim o s o c h o b its se refieren a u n a d ire c c ió n d e m e m o ria .
El m a rc a d o r 10 e s el m o d o “ in m e d ia to ”, d o n d e lo s ú ltim o s o c h o bits se t o m a n li­
te ra lm e n te c o m o el o p e ra n d o . Este m o d o a p a re c e e n la s e g u n d a in s tru c c ió n d e (1.7).
E n (1.7) ta m b ié n se ve un * a so c ia d o c o n la p r im e ra y la te rc e ra in stru ccio n es.
E ste * re p re s e n ta el bit de relocalización q u e se asocia c o n c a d a o p e r a n d o en c ó d ig o
d e m á q u in a relocalizable. S u p ó n g a se q u e el esp acio d e d ire c c io n e s q u e c o n tie n e los
d a to s se va a c a rg a r e m p e z a n d o e n la p o sic ió n L . L a p re se n c ia del * sig n ifica q u e se
d e b e s u m a r L a la d ire c c ió n d e la in stru c c ió n . P o r ta n to , si L = 00001111 , esto es,
15, e n to n c e s a y b e s ta ría n e n las p o sicio n es 15 y 19, re s p e c tiv a m e n te , y las in s tru c ­
cio n es d e (1.7) a p a re c e ría n c o m o

0 0 0 1 01 0 0 0 0 0 0 1 1 1 1
0011 01 10 o o o o o o i o (1.8)
0 0 1 0 01 0 0 0 0 0 1 0 0 1 1

en código d e m á q u in a absoluto o n o relo calizab le. N ótese q u e n o h a y n in g ú n * aso­


c ia d o c o n la s e g u n d a in stru c c ió n d e (1.7), d e m o d o q u e L n o se s u m ó a s u d irección
en ( 1.8), lo c u a l es c o rre c to , p o r q u e los bits re p re s e n ta n la c o n s ta n te 2 y n o la
p o sició n 2. □

C a rg a d o re s y e d ito r e s d e e n la c e

P o r lo general, un p r o g r a m a lla m a d o cargador realiza las d o s fu n c io n e s d e ca rg a y


ed ició n d e enlaces. El p ro ceso d e ca rg a co n siste e n t o m a r el c ó d ig o d e m á q u in a re­
localizable, m o d ific a r las direccion es relocalizables, c o m o se in d ica en el ejem p lo 1.3,
y u b ic a r las in s tru c c io n e s y los d a to s m o d ific a d o s e n las p o sicio n es a p ro p ia d a s d e la
m e m o ria .
El e d ito r d e en lace p e rm ite f o r m a r u n sólo p ro g ra m a a p a r tir d e v ario s arch iv o s
d e código d e m á q u in a relocalizable. E stos a rc h iv o s p u e d e n h a b e r sid o el resu ltad o
d e v arias c o m p ila c io n e s d istin tas, y u n o o v ario s d e ellos p u e d e n s e r a rc h iv o s d e bi­
b lioteca d e ru tin a s p ro p o rc io n a d a s p o r el s is te m a y d isp o n ib le s p a ra c u a lq u ie r p ro ­
g ra m a q u e las necesite.
Si los a rc h iv o s se v a n a u s a r j u n t o s d e m a n e r a útil, p u e d e h a b e r a lg u n a s referen ­
cia s externas , en las q u e el código d e u n a rc h iv o h a c e referen cia a u n a p o sic ió n de
o t r o a rc h iv o . E sta re fe re n c ia p u e d e s e r a u n a p o s ic ió n d e d a to s d e f in id a e n u n a r ­
20 I N T R O D U C C I O N A LA C O M P I L A C I O N

c h iv o y u tiliz ad a en o tro , o p u e d e s e r el p u n t o d e e n tra d a d e u n p r o c e d im ie n to que


a p a re c e e n el código d e u n a rc h iv o y se lla m a d e sd e o tro . El a rc h iv o c o n el código
d e m á q u in a relocalizable d e b e c o n s e rv a r la in fo rm a c ió n d e la ta b la d e s ím b o lo s para
c a d a p o sic ió n d e d a to s o e tiq u e ta d e in s tr u c c ió n a la q u e se h a c e re fe re n c ia e x te r­
n a m e n te . Si n o se sabe p o r a n tic ip a d o a q u é se v a a h a c e r referencia, es p reciso in ­
c lu ir c o m p le ta la ta b la d e s ím b o lo s del e m s a m b la d o r c o m o p arte del c ó d ig o d e m á ­
q u in a relocalizable.
P o r e jem p lo , el código d e (1.7) iría p re c e d id o de
a o
b 4
Si u n a rc h iv o c a r g a d o c o n (1 .7 ) h ic ie ra re fe re n c ia a b . e n to n c e s esa re fe re n c ia se
re e m p la z a ría p o r 4 m á s el d e s p la z a m ie n to c o n el q u e se localizaron las posiciones
del a rc h iv o (1.7).

1.5 E L A G R U P A M I E N T O D E L A S F A S E S

El e s tu d io d e las fases d e la sección 1.3 tra ta la o rg a n iz a c ió n lógica d e un c o m p ila ­


d o r. E n u n a im p la n ta c ió n , a m e n u d o se a g ru p a n las a c tiv id a d e s e n d o s o m á s fases.

E tap a in icia l y e ta p a final

C o n frecu en cia, las fases se a g ru p a n en u n a etapa inicial y u n a etapa final. L a e tap a


inicial c o m p r e n d e aq u e lla s fases, o p a rte s d e fases, q u e d e p e n d e n p r in c ip a lm e n te del
lenguaje fu e n te y q u e son e n g ra n p a rte in d e p e n d ie n te s de la m á q u in a o b je to . Ahí
n o r m a lm e n te se in clu y en los a n álisis léxico y sin tá ctic o , la c re a c ió n d e la ta b la de
sím bolos, el análisis s e m á n tic o y la g e n e ra c ió n d e c ó d ig o in te rm e d io . L a e ta p a ini­
cial ta m b ié n p u e d e h a c e r c ie rta o p tim a c ió n d e códig o . L a e ta p a in icial incluye, a d e ­
m ás. el m a n e jo de e rro re s c o rre s p o n d ie n te a c a d a u n a d e esas fases.
L a e ta p a fin al in c lu y e a q u e lla s p a rte s del c o m p ila d o r q u e d e p e n d e n d e la m á ­
q u i n a o b je to y. e n g en eral, esas p a rte s n o d e p e n d e n del len g u aje fu en te , sin o sólo
del len g u aje in te rm e d io . E n la e ta p a final, se e n c u e n tr a n a sp e c to s d e la fase d e o p ­
tim a c ió n d e c ó d ig o , a d e m á s d e la g e n e r a c ió n d e c ó d ig o , j u n t o c o n el m a n e j o d e
erro res n e c e sa rio y las o p e ra c io n e s c o n la ta b la d e sím bolos.
Se h a c o n v e rtid o e n r u tin a el t o m a r la e ta p a inicial d e un c o m p ila d o r y re h a c e r
su e ta p a final a so c ia d a p a r a p r o d u c ir u n c o m p ila d o r p a ra el m is m o len g u aje fu en te
e n u n a m á q u in a d istin ta . Si la e ta p a final se d is e ñ a c o n c u id a d o , in c lu so p u e d e n o
ser n ecesario red iseñ arla d e m a sia d o ; este te m a se e s tu d ia e n el c a p ítu lo 9. T a m b ié n
resulta te n ta d o r c o m p ila r v ario s len g u ajes d is tin to s e n el m is m o len g u aje in te rm e d io
y u sa r u n a e ta p a final c o m ú n p a r a las d is tin ta s e ta p a s iniciales, o b te n ié n d o s e a s i va­
rios c o m p ila d o re s p a r a u n a m á q u in a . S in e m b a rg o , d a d a s las sutiles d iferen c ias en
los p u n to s d e v ista d e los d is tin to s lenguajes, só lo se h a o b te n id o u n éx ito lim ita d o
e n ese aspecto.

P asadas

N o r m a lm e n te se a p lic a n varias fases d e la c o m p ila c ió n e n u n a sola pasada , q u e c o n ­


siste en la le c tu ra d e u n a rc h iv o d e e n tr a d a y e n la e s c ritu ra d e u n a rc h iv o d e salida.
1.5 LL A G R U P A M I E N T O D E L A S F A S E S 21

E n la p rá c tic a , hay m u c h a s f o r m a s d e a g r u p a r en p a s a d a s las fases d e u n c o m p i ­


la d o r. asi q u e es preferible o r g a n iz a r el a n álisis d e la c o m p ila c ió n p o r las fases, en
lu g a r d e p o r las p asad as. En el c a p itu lo 12 se a n a liz a n a lg u n o s c o m p ila d o re s r e p re ­
se n ta tiv o s y se m e n c io n a la fo rm a en q u e e s tr u c tu r a n las fases e n p asadas.
C o m o ya se señaló, e s c o m ú n a g r u p a r varias fases en u n a p a sa d a , y e n tre la z a r la
a ctiv id a d d e estas fases d u r a n te la p a sa d a . P or e jem p lo , el a n álisis léxico, el análisis
sin tá ctic o , el análisis s e m á n tic o y la g e n e ra c ió n d e c ó d ig o in te rm e d io p u e d e n a g r u ­
p arse e n u n a p a s a d a . E n esc c a s o . la c a d e n a d e c o m p o n e n t e s léx ico s d e s p u é s del
a n álisis léxico p u e d e tra d u c irs e d ir e c ta m e n te a c ó d ig o in te rm e d io . C o n m á s detalle,
el a n a liz a d o r s in tá c tic o p u e d e c o n s id e ra rs e c o m o el " e n c a rg a d o '' del c o n tro l. Este
in te n ta d e s c u b r ir la e s tr u c tu r a g r a m a tic a l de los c o m p o n e n te s léx ico s observados*,
o b tie n e los c o m p o n e n te s léxicos c u a n d o los necesita, lla m a n d o al a n a liz a d o r léxico
p a r a q u e le p ro p o rc io n e el sig u ie n te c o m p o n e n te léxico. A m e d id a q u e se d escu b re
la e s tru c tu ra g ra m a tic a l, el a n a liz a d o r s in tá c tic o lla m a al g e n e r a d o r d e c ó d ig o in te r­
m e d io p a ra q u e hag a el a n álisis s e m á n tic o y g en ere u n a p arte del códig o . E n el ca­
p ítu lo 2 se p re se n ta u n c o m p ila d o r o rg a n iz a d o d e esta form a.

R ed u cció n d e l n úm ero d e p a sa d a s

E s d eseab le te n e r re la tiv a m e n te p o c a s p asadas, d a d o q u e la le c tu ra y e s c ritu ra d e a r ­


c h iv o s in te rm e d io s lleva tie m p o . A d e m á s, si se a g r u p a n varias fases d e n t r o d e u n a
p a sa d a , p u e d e s e r n e c e sa rio te n e r q u e m a n te n e r el p r o g r a m a c o m p le to e n m e m o ria ,
p o r q u e u n a fase p u e d e n ecesitar in f o r m a c ió n e n u n o rd e n d is tin to al q u e p r o d u c e
u n a fase previa. L a fo rm a in te r n a del p ro g ra m a p u e d e s e r c o n s id e ra b le m e n te m a y o r
q u e el p ro g ra m a fu e n te o el p ro g ra m a o b je to , d e m o d o q u e este esp acio n o es un
te m a trivial.
P a ra a lg u n a s fases, el a g o lp a m ie n to e n u n a p asad a p re s e n ta p o c o s p ro b lem as.
P o r e je m p lo , c o m o se m e n c io n ó a n te s, la in te rfa z e n tre los a n a liz a d o re s léxico y s in ­
tá c tic o a m e n u d o p u e d e lim ita r s e a u n s o lo c o m p o n e n t e léxico. P o r o t r a p a rte ,
m u c h a s v e c e s re s u lta m u y d ifícil g e n e r a r c ó d ig o h a s ta q u e se h a y a g e n e r a d o p o r
c o m p l e t o la r e p re s e n ta c ió n in te r m e d ia . P o r e je m p lo , le n g u a je s c o m o P L /I y A L ­
G O L 68 p e rm ite n u sa r las variables a n te s d e d eclararlas. N o se p u e d e g e n e ra r el c ó ­
d ig o o b je to p a r a u n a c o n s tru c c ió n si n o se c o n o c e n los tip o s d e las v aria b les im p li­
c a d a s e n esa c o n s tru c c ió n . D e m a n e r a sim ilar, la m a y o ría d e los len g u ajes a d m ite n
c o n s tru c c io n e s g o t o q u e sa lta n h acia a d e la n te e n el cód igo . N o se p u e d e d e te r m in a r
la d ire c c ió n o b je to d e d ic h o s salto s h a s ta h a b e r visto el c ó d ig o fu en te im p lic a d o y
h a b e r g e n e ra d o c ó d ig o o b je to p a r a él.
E n a lg u n o s casos, es p o sib le d e ja r un se g m e n to e n b la n c o p a ra la in fo rm a c ió n
q u e falta, y lle n a r la r a n u r a c u a n d o la in f o r m a c ió n esté d isp o n ib le. E n p a rtic u la r, la
g e n e ra c ió n d e c o d ig o in te r m e d io y d e c ó d ig o o b je to a m e n u d o se p u e d e n fu sio n a r
e n u n a so la p a s a d a u tiliz a n d o u n a té c n ic a lla m a d a “re lle n o d e re tro c e so ” (backpal-
ching). A u n q u e n o se p u e d e n ex p lic a r to d o s los d e ta lle s h asta q u e e n el c a p itu lo 8 se
e stu d ie la g e n e ra c ió n d e c ó d ig o in te rm e d io , se p u e d e ilu stra r el re lle n o d e retro ceso
p a r tie n d o d e u n e n s a m b la d o r. R ecu érd ese q u e e n la sección a n te r io r se a n a liz ó u n
e n s a m b la d o r de d o s p asad as, e n el q u e la p r im e r a p a s a d a d e s c u b ría to d o s los iden-
tificad o res q u e re p re s e n ta b a n p o sicio n es d e m e m o r ia y d e d u c ía s u s d ire c c io n e s al
22 I N T R O D U C C I O N A LA C O M P I L A C I O N

d escu b rirlas. D esp u és, e n u n a s e g u n d a p a s a d a su stitu ía las d ire c c io n e s p o r identifi-


cadores.
Se p u e d e c o m b in a r la acció n d e las p a s a d a s c o m o sigue. Al e n c o n t r a r u n a p ro ­
p o sició n e n e n s a m b la d o r q u e sea u n a referencia h acia a d e la n te , p o r e jem p lo ,

GOTO destino

se g en era la e s tru c tu ra d e u n a in stru c c ió n , c o n el c ó d ig o d e o p e r a c ió n d e m á q u in a


p a ra G O T O y se d e ja n esp acio s e n b la n c o p a r a la d ire c c ió n . T o d a s las in s tru c c io n e s
c o n esp acio s en b la n c o p a ra la d ire c c ió n d e d e s t i n o se g u a r d a n en u n a lista aso­
c ia d a c o n la e n t r a d a d e d e s t i n o e n la ta b la d e s ím b o lo s. L os e s p a c io s se llen an
c u a n d o p o r fin se e n c u e n tr a u n a in stru c c ió n c o m o

destino: M O V algo, R1

y se d e te r m in a el v alo r de d e s t i n o ; es la d ire c c ió n de la in s tru c c ió n e n c u rso . E n ­


to n c e s se h a c e el re lle n o d e retro ceso , re c o rrie n d o la lista d e d e s t i n o d e to d a s las
in s tru c c io n e s q u e n ecesitan su d ire c c ió n , s u s titu y e n d o la d ire c c ió n d e d e s t i n o en
los e sp a c io s en b la n c o q u e a p a re c e n e n los c a m p o s d e d ire c c ió n d e esas in s tru c c io ­
nes. E ste e n f o q u e e s fácil de im p la n ta r si las in stru c c io n e s se p u e d e n g u a r d a r e n m e ­
m o ria h asta q u e se h a y a n d e te r m in a d o to d a s las d ire c c io n e s d e d estin o .
E ste e n f o q u e es ra z o n a b le p a ra u n e n s a m b la d o r q u e p u e d a g u a r d a r to d a u n a sa­
lid a e n m e m o r ia . C o m o las re p re s e n ta c io n e s in te rm e d ia y final d e l c ó d ig o p a r a un
e n s a m b la d o r s o n a p r o x im a d a m e n te iguales, y c o n seg u rid ad casi d e la m is m a lo n ­
gitud. el rellen o d e retro ceso e n to d a la lo n g itu d d e l p ro g ra m a e n s a m b la d o r n o es
in v iab le. S in e m b a rg o , en u n c o m p ila d o r, c o n u n c ó d ig o in te rm e d io q u e c o n s u m a
m u c h o espacio, h a b rá q u e te n e r c u id a d o c o n la d is ta n c ia e n q u e se h a c e el relleno
d e retroceso.

1 .6 H E R R A M I E N T A S PAILA L A C O N S T R U C C I O N D E C O M P I L A D O R E S

El e scrito r del c o m p ila d o r, c o m o c u a lq u ie r p r o g r a m a d o r , p u e d e u sa r c o n p r o v e c h o


h e r r a m ie n ta s d e so ftw a re tales c o m o d e p u r a d o r e s , a d m in is tr a d o r e s d e v ersio n es,
a n a liz a d o re s, etcétera. E n el c a p ítu lo 11, se verá c ó m o se u sa n a lg u n a s d e estas h e ­
r ra m ie n ta s p a ra im p la n ta r u n c o m p ila d o r. A d e m á s d e estas h e r r a m ie n ta s d e d e sa ­
r r o llo d e s o ftw a re , se h a n c r e a d o h e r r a m i e n t a s m á s e s p e c ia liz a d a s p a r a a y u d a r
a im p la n t a r v a ria s fases d e un c o m p ila d o r . E n esta secció n se m e n c io n a n b re v e ­
m e n te: e n los c a p ítu lo s a p r o p ia d o s se tr a ta n en detalle.
P o c o d e s p u é s d e escribirse el p r im e r c o m p ila d o r, a p a re c ie ro n siste m a s p a r a a y u ­
d a r e n el p ro ceso d e e s c ritu ra de c o m p ila d o re s. A m e n u d o se h a c e referen cia a estos
siste m a s c o m o com piladores d e compiladores, generadores de com piladores o siste­
m a s generadores d e traductores. E n g ra n p arte , se o r ie n ta n e n to r n o a u n m o d e lo
p a rtic u la r d e lenguaje, y son m á s a d e c u a d o s p a r a g e n e ra r c o m p ila d o re s d e lenguajes
sim ilares al del m o d e lo .
P o r e je m p lo , es te n t a d o r s u p o n e r q u e los a n a liz a d o re s léxicos p a r a to d o s los le n ­
g u ajes son e n esen cia iguales, e x c e p to p o r las p a la b ra s c lav e y signos p a rtic u la re s q u e
se re c o n o c e n . M u c h o s c o m p ila d o re s de c o m p ila d o re s d e h e c h o p r o d u c e n ru tin a s fi­
j a s de análisis léxico p a ra u s a r en el c o m p ila d o r g en erad o . E stas ru tin a s só lo difieren
1.6 H E R R A M I E N T A S P A R A LA C O N S T R U C C I O N D E C O M P I L A D O R E S 23

e n la lista d e p a la b ra s clave q u e re c o n o c e n , y esta lista es t o d o lo q u e d e b e p r o p o r ­


c io n a r el u su ario . El p la n te a m ie n to es válido, p e ro p u e d e n o ser fu n c io n a l si se re­
q u ie re q u e re c o n o z c a c o m p o n e n te s léxicos n o e stá n d a r, c o m o id e n tific a d o re s q u e
p u e d e n in c lu ir c ie rto s c a ra c te re s d is tin to s d e letras y dígitos.
Se h a n c r e a d o a lg u n a s h e r r a m ie n ta s g en erales p a r a el d is e ñ o a u t o m á t i c o d e c o m ­
p o n e n te s específicos d e c o m p ila d o r. E stas h e r r a m ie n ta s u tiliz an le n g u a je s esp ecia­
liz a d o s p a r a e s p e c ific a r e i m p l a n t a r el c o m p o n e n t e , y p u e d e n u tiliz a r a lg o ritm o s
b a s ta n te co m p lejo s. L as h e r r a m ie n ta s m á s efectivas s o n las q u e o c u lta n los detalles
del a lg o ritm o d e g e n e ra c ió n y p r o d u c e n c o m p o n e n te s q u e se p u e d e n in te g ra r co n
facilid ad al resto del c o m p ila d o r. L.a sig u ie n te e s u n a lista de a lg u n a s h e rra m ie n ta s
útiles p a r a la c o n s tru c c ió n d e co m p ila d o re s:

1. G eneradores de analizadores sintácticos. E sto s g e n e ra d o re s p r o d u c e n a n a liz a ­


d o re s sin tá ctic o s, n o r m a lm e n te a p a r tir d e u n a e n tr a d a f u n d a m e n ta d a e n u n a
g ra m á tic a in d e p e n d ie n te del c o n te x to . E n los p rim e ro s c o m p ila d o re s , el análisis
s in tá c tic o c o n s u m ía n o só lo g r a n p a rte del tie m p o d e ejecu ció n del c o m p ila d o r,
sin o g r a n p a rte del esfu erzo in te le c tu a l d e escribirlo. E sta fase se c o n sid e ra a h o ra
u n a d e las m á s fáciles d e ap licar. M u c h o s d e lo s " p e q u e ñ o s len g u ajes" u tiliz ad o s
en la c o m p o s ic ió n d e este libro, c o m o P IC (K e rn ig h a n [1 9 8 2 ]) y E Q N , se a p li­
c a ro n e n u n o s d ía s p o r m e d io del g e n e r a d o r d e a n a liz a d o re s s in tá c tic o s d e sc rito
en la secció n 4.7. M u c h o s d e lo s g e n e ra d o re s d e a n a liz a d o re s s in tá c tic o s utilizan
p o d e r o s o s a lg o ritm o s d e a n á lis is s in tá c tic o , y s o n d e m a s i a d o c o m p le jo s p a r a
realizarlo s m a n u a lm e n te .

2. G eneradores d e analizadores léxicos. E stas h e r r a m ie n ta s g e n e ra n a u to m á tic a ­


m e n te a n a liz a d o re s léxicos, p o r lo g en eral a p a r ti r d e u n a esp ecificació n b asad a
en e x p resio n es regulares, q u e se e s tu d ia n e n el c a p ítu lo 3. 1.a o rg a n iz a c ió n b á ­
sica d e l a n a liz a d o r léxico re s u lta n te e s e n re a lid a d u n a u tó m a ta finito. E n las
seccio n es 3 .5 y 3.8 se e s tu d ia u n g e n e r a d o r d e a n a liz a d o re s léxicos típ ic o y su
im p la n ta c ió n .

3. D ispositivos de traducción dirigida p o r Ia sintaxis. E stos p r o d u c e n g ru p o s de


ru tin a s q u e re c o rre n el á rb o l d e análisis sin tá ctic o , c o m o el d e la figura 1.4, ge­
n e r a n d o c ó d ig o in te r m e d io . L a id e a b á s ic a es q u e se a s o c ia n u n a o m á s " t r a ­
d u c c io n e s " c o n c a d a n o d o del árb o l d e a n álisis sin tá ctic o , y c a d a tr a d u c c ió n se
d efin e p a r tie n d o d e tra d u c c io n e s e n s u s n o d o s v ecin o s e n el á rb o l. D ic h a s h e rra ­
m ie n ta s se e s tu d ia n e n el c a p ítu lo 5.

4. G eneradores autom áticos d e código. T ales h e r r a m ie n ta s to m a n un c o n ju n to d e


reglas q u e d e fin e n la tr a d u c c ió n d e c a d a o p e r a c ió n del len g u aje in te r m e d io al
len g u aje d e m á q u in a p a r a la m á q u in a o b je to . L as reglas d e b e n in c lu ir su ficiente
d e ta lle p a r a p o d e r m a n e ja r los d is tin to s m é to d o s d e acce so p o sib les a los datos:
p o r e je m p lo , las variab les p u e d e n e s ta r e n registros, e n u n a p o sic ió n fija (está­
tica) d e m e m o r ia o p u e d e n te n e r a sig n a d a u n a po sició n en u n a pila. L a técn ica
fu n d a m e n ta l es la d e “c o n c o r d a n c ia d e p la n tillas". Las p ro p o s ic io n e s d e c ó d ig o
in t e r m e d i o se r e e m p la z a n p o r “ p la n tilla s ” q u e re p re s e n ta n s e c u e n c ia s d e in s ­
tru c c io n e s d e m á q u in a , d e m o d o q u e las su p o sic io n e s so b re el a lm a c e n a m ie n to
d e las variables c o n c u e r d e n d e p la n tilla a plan tilla. C o m o suele h a b e r m u c h a s
24 IN TR O D U C C IO N \ LA C O M P I L A C I O N

o p c io n e s en relació n c o n la u b ic a c ió n d e las variab les ( p o r e je m p lo , en u n o o


varios registros o e n m e m o ria ), h a y m u c h a s fo rm a s posibles d e “c u b r ir ” el có ­
digo in te rm e d io c o n u n c o n ju n to d a d o d e p lantillas, y es n e c e sa rio seleccio n ar
u n a b u e n a c o b e r tu ra sin u n a e x p lo sió n c o m b in a to r ia e n el tie m p o d e e je c u c ió n
del c o m p ila d o r. Las h e rra m ie n ta s d e esta n a tu ra le z a se e s tu d ia n en el c a p ítu lo 9.

5. D ispositivos para análisis de flu jo d e datos. M u c h a d e la in fo rm a c ió n necesaria


p a ra h a c e r u n a b u e n a o p tim a c ió n d e c ó d ig o im p lic a h a c e r u n “a n álisis d e flujo
d e d a to s ” , q u e co nsiste e n la reco lecció n d e in fo rm a c ió n so b re la fo rm a en q u e
se tra n s m ite n los v alo res d e u n a p a rte d e u n p ro g ra m a a c a d a u n a d e las o tra s
partes. L as d is tin ta s ta re a s d e esta n a tu ra le z a se p u e d e n e fe c tu a r e se n c ia lm e n te
c o n la m is m a ru tin a , en la q u e el u s u a rio p ro p o r c io n a los detalles relativo s a la
relación q u e hay e n tre las p ro p o sic io n e s e n c ó d ig o in te r m e d io y la in fo rm a c ió n
q u e se está re c o le c ta n d o . E n la sección 1 0 .1 1 se describ e u n a h e r r a m ie n ta d e
esta n a tu ra leza.

N O T A S B IB L IO G R A F IC A S

K n u th (1 962]. al escrib ir s o b re la h isto ria d e la e s c ritu ra d e c o m p ila d o re s e n 1962.


o b serv ab a q u e “en este c a m p o h a h a b id o u n a c a n tid a d in só lita d e d e s c u b rim ie n to
p a ra le lo d e la m is m a té c n ic a p o r g en te q u e tra b a ja b a d e m a n e r a in d e p e n d ie n te ”. A
c o n tin u a c ió n h acía la o b serv ació n d e q u e , d e h e c h o , varios in d iv id u o s d e sc u b rie ro n
“v ario s asp ecto s d e u n a té cn ica, q u e se h a re fin a d o c o n los aftos p a r a p r o d u c ir un
a lg o ritm o ideal, q u e n in g u n o d e los a u to re s originales h ab ía llegado a im a g in a r”. D ar
c ré d ito a las té c n ic a s es u n a ta re a arriesg ada; la in te n c ió n d e las n o ta s bibliográficas
d e este lib ro es se n c illa m e n te serv ir d e a y u d a p a r a el p o s te rio r e s tu d io d e las p u b li­
caciones.
L o s d a to s h istó rico s so b re el d e s a rro llo d e los len g u ajes d e p ro g ra m a c ió n y c o m ­
p ila d o re s h a s ta la lleg ad a d e F O R T R A N se p u e d e n e n c o n t r a r e n K n u t h y T r a b b
P a rd o (1977]. El lib ro d e W ex elb lat [1981] c o n tie n e m e m o ria s históricas so b re v a­
rio s len g u ajes d e p ro g ra m a c ió n h ech as p o r q u ie n e s p a rtic ip a ro n e n s u d esarro llo .
A lg u n o s d e los p rim e ro s a rtíc u lo s fu n d a m e n ta le s so b re la c o m p ila c ió n e s tá n re u ­
n id o s e n las o b ra s d e R o se n [ 1967] y d e P o llack [ 1972]. El n ú m e r o d e e n e ro d e 1961
d e C om m unications o f th e A C M d a u n a im a g e n del e s ta d o e n q u e se e n c o n tr a b a la
escritura de com piladores en ese m o m e n to . En los trabajos d e R andell y Russell [1964]
se d a u n in fo rm e d etalla d o d e u n o d e los p rim e ro s c o m p ila d o re s d e A L G O L 60.
D esd e p rin c ip io s de los artos sesen ta, c o n el e s tu d io d e la sin tax is, las investiga­
cio n es p rácticas h a n in flu id o d e m a n e r a p r o f u n d a e n el d esarro llo d e la tecn olo gía
d e los c o m p ila d o re s , h a n te n id o al m e n o s ta n ta in flu en cia c o m o e n c u a lq u ie r o tro
á r e a d e la c ie n c ia d e la c o m p u ta c i ó n . L a fa sc in a c ió n p o r la s in ta x is h a d e c lin a d o
b a s ta n te , p e r o la c o m p ila c ió n e n c o n j u n t o c o n t i n ú a s ie n d o o b je to d e u n a in v e sti­
gación m u y d in á m ic a . L o s fru to s d e esta in v estigación re s u lta rá n e v id e n te s c u a n d o
se e x a m in e la c o m p ila c ió n c o n m á s d e ta lle e n los sig u ie n tes capítulos.
I25|

CA PITU LO 2

Un compilador
sencillo
de una pasada

Este c a p ítu lo es u n a in tro d u c c ió n al m a te ria l d e los c a p ítu lo s 3 al 8 d e este libro. Se


p re s e n ta n varias té c n ic a s d e c o m p ila c ió n básicas ilu strad as c o n el d e s a rro llo d e un
p ro g ra m a en C o p e r a tiv o q u e tra d u c e e x p resio n es in fijas a la fo rm a postfija. A quí,
se h a c e énfasis e n la e ta p a inicial d e u n c o m p ila d o r, esto es. en el a n álisis léxico, el
análisis s in tá c tic o y la g e n e ra c ió n d e c ó d ig o in te rm e d io . En los c a p ítu lo s 9 y 10 se
tr a ta n los te m a s d e g e n e ra c ió n y o p tim a c ió n d e código.

2.1 P E R S P E C T I V A

Se p u e d e d e fin ir u n len g u aje d e p r o g ra m a c ió n d e s c rib ie n d o el a s p e c to d e sus p ro g ra ­


m a s (la sin ta xis del leng u aje) y el sign ificado d e sus p ro g ra m a s (la sem ántica del le n ­
guaje). P ara especificar la sintax is d e u n lenguaje, se p resen ta u n a n o ta c ió n m u y usada
lla m a d a g r a m á tic a s in d e p e n d ie n te s d e l c o n te x to o B N F (a b r e v ia tu r a e n in g lés d e
F o rm a d e B ack u s-N au r). C o n las n o ta c io n e s d isp o n ib le s h o y . es m u c h o m á s difícil
d e scrib ir la s e m á n tic a d e u n len g u aje q u e su sin tax is. P o r co n sig u ien te, p a ra especi­
ficar la s e m á n tic a d e u n le n g u a je se u sarán d e sc rip c io n e s in fo rm a le s y e je m p lo s ilus­
trativos.
A d e m á s d e serv ir p a ra esp ecificar la sin ta x is d e u n lenguaje, se p u e d e u s a r d e
a p o y o u n a g ra m á tic a in d e p e n d ie n te del c o n te x to p a ra g u ia r la tr a d u c c ió n d e p ro g ra­
m a s. U n a té c n ic a de c o m p ila c ió n o r ie n ta d a a la g ra m á tic a , c o n o c id a c o m o traduc­
ción dirigida p o r la sintaxis, es m u y útil p a r a o r g a n iz a r la e ta p a inicial d e u n c o m ­
p ila d o r y se u sará m u c h o e n to d o este c a p ítu lo .
D u r a n t e el e s tu d i o d e la t r a d u c c i ó n d ir ig id a p o r la s in ta x is , se c o n s t r u i r á u n
c o m p ila d o r q u e tra d u c e e x p re sio n e s in fijas a la fo rm a postfija, u n a n o ta c ió n e n la
q u e los o p e ra d o re s a p a re c e n d e s p u é s d e s u s o p e ra n d o s . P o r e jem p lo , la fo rm a p o s t­
fija d e la e x p re sió n 9 - 5 + 2 e s 9 5 - 2 + . La n o ta c ió n po stfija p u e d e ser c o n v e n i d a d i ­
recta m e n te en código p o r u n c o m p u ta d o r q u e haga to d o s sus cálculos u tiliz an d o un a
e s tru c tu ra de d a to s d e p ila ( stack ). Se e m p ie z a a c o n s tru ir u n p r o g r a m a sencillo p a ra
tra d u c ir e x p resio n es c o n s is te n te s e n d íg ito s s e p a ra d o s p o r los signos m á s y m e n o s en
la fo rm a postfija. C u a n d o las id e as b ásicas resu lten ev id en tes, se e x te n d e r á el p ro ­
26 U N C O M P I L A D O R S L N C 'IL L O D E U N A P A S A D A

g ra m a p a ra p o d e r m a n e ja r c o n s tru c c io n e s d e len g u ajes d e p ro g ra m a c ió n m á s gen e­


rales. C a d a tr a d u c to r se fo rm a p o r la e x te n sió n siste m á tic a del tr a d u c to r a n te rio r.
E n este c o m p ila d o r, el analizador léxico c o n v ie r te la c a d e n a d e c a ra c te re s d e e n ­
trad a en u n a c a d e n a d e c o m p o n e n te s léxicos q u e se c o n v ie rte e n la e n tr a d a p a r a la
sig u ie n te fase, c o m o se m u e s tra e n la figura 2.1. El “ tr a d u c to r d irigid o p o r la s in ta ­
xis" d e la figura es u n a c o m b in a c ió n d e u n a n a liz a d o r s in tá c tic o y u n g e n e r a d o r de
c ó d ig o in te rm e d io . U n a ra z ó n p a r a e m p e z a r c o n e x p re sio n e s f o rm a d a s p o r d íg ito s y
o p e ra d o re s co n siste e n h a c e r q u e el a n a liz a d o r léxico sea e n u n p r in c ip io m u y fácil;
c a d a c a rá c te r d e e n tr a d a fo rm a u n c o m p o n e n te léxico ú n ic o . M á s a d e la n te , se a m ­
p lia el len g u aje p a r a in c lu ir c o n s tru c c io n e s léxicas, c o m o n ú m e ro s , id e n tific ad o res
y p a la b ra s clave. P ara este len g u aje a m p lia d o se c o n s tr u irá u n a n a liz a d o r léxico q u e
re ú n a los c a ra c te re s c o n se c u tiv o s d e la e n tr a d a e n c o m p o n e n te s léxicos a p ro p ia d o s.
La c o n s tru c c ió n d e a n a liz a d o re s léxicos se e s tu d ia rá en d etalle e n el c a p ítu lo 3.

c a d e n a de traductor
ca d e n a de an a liza d o r rep resen tación
— ^ c o m p o n e n te s -* d irigid o
caracteres lé x ico in term ed ia
lé x ic o s por la sin ta x is

Fig. 2.1. E structura d e la e tap a inicial del com pilador.

2 .2 D E F I N I C I O N D E L A S I N T A X I S

E n esta secció n se in t r o d u c e u n a n o ta c ió n , lla m a d a g r a m á tic a in d e p e n d ie n te del


c o n te x to ( p a ra ab rev iar, g ra m á tic a ), p a r a esp ecificar la sin ta x is d e u n lenguaje. Esta
n o ta c ió n se u sará e n to d o el lib ro c o m o p a rte d e la esp ecificación d e la e ta p a inicial
d e u n c o m p ila d o r.
U n a g r a m á tic a d e s c rib e d e f o r m a n a tu r a l la e s tr u c tu r a je r á r q u i c a d e m u c h a s
c o n s tru c c io n e s d e los len g u ajes d e p ro g ra m a c ió n . P o r e je m p lo , u n a p ro p o sic ió n ¡f-
e lse e n C tie n e la fo rm a

¡f ( e x p re sió n ) p ro p o sic ió n e ls e p ro p o sició n

E sto es, la p ro p o sició n es la c o n c a te n a c ió n d e la p a la b ra c lav e if, u n p arén tesis q u e


ab re, u n a ex p resió n , u n p a ré n te sis q u e cierra, u n a p ro p o s ic ió n , la p a la b ra clave e ls e
y o tr a p ro p o s ic ió n . (E n C n o ex iste la p a la b ra c lav e th e n .) E m p le a n d o la variable
expr p a r a d e n o t a r u n a ex p resió n , y la v ariab le prop , p a ra u n a p ro p o s ic ió n , esta regla
d e e s tru c tu ra c ió n se expresa

prop —> if ( ex p r ) prop e ls e prop (2.1)

d o n d e e s posible leer la flecha c o m o “ p u e d e te n e r la fo rm a " . D ic h a regla se d e n o ­


m in a producción. E n u n a p ro d u c c ió n , los e le m e n to s léxicos, c o m o la p a la b ra clave
if y los p arén tesis, se lla m a n com ponentes léxicos. L a s v aria b les expr y prop rep re­
s e n ta n s e c u e n c ia s d e c o m p o n e n te s léxicos y se lla m a n no term inales.

U n a gram ática independiente de! contexto tie n e c u a t r o c o m p o n e n te s :

1. U n c o n ju n to d e c o m p o n e n te s léxicos, d e n o m in a d o s s ím b o lo s term inales.


2.2 D E F I N I C I O N D F LA S I N T A X I S 27

2. U n c o n j u n t o d e n o te rm in ales.

3. L’n c o n ju n to d e p ro d u ccio n es, e n el q u e c a d a p ro d u c c ió n c o n s ta d e u n n o te r­


m in a l. lla m a d o lado izquierdo d e la p ro d u c c ió n , u n a flech a y u n a se c u e n c ia de
c o m p o n e n te s léxicos y n o te rm in a le s , o a m b o s, lla m a d o lado derecho d e la p ro ­
d u cció n .

4. L a d e n o m in a c ió n d e u n o d e los n o te rm in a le s c o m o s ím b o lo inicia!.

S e sigue la regla c o n v e n c io n a l d e esp ecificar las g ra m á tic a s d a n d o u n a lista d e


sus p ro d u c c io n e s, d o n d e las p ro d u c c io n e s del s ím b o lo inicial se listan p r im e ro . Se
s u p o n e q u e los dígitos, los signos c o m o <= y las c a d e n a s en n e g r ita s, c o m o w h ile
son te rm in ales. U n n o m b r e en cursiva es u n n o te rm in a l, y se s u p o n d r á q u e c u a l­
q u ie r n o m b r e o s ím b o lo q u e n o este e n cursiva es u n c o m p o n e n te lé x ic o 1. P o r c o ­
m o d id a d d e n o ta c ió n , las p ro d u c c io n e s c o n el m is m o n o te rm in a l del la d o iz q u ie rd o
p u e d e n te n e r sus la d o s d e re c h o s a g ru p a d o s , c o n los la d o s d e re c h o s a lte rn a tiv o s se­
p a ra d o s p o r el s ím b o lo I. q u e se le erá “o".

E je m p lo 2 .1 . E n v ario s e je m p lo s d e este c a p itu lo se u tiliz an e x p re sio n e s fo rm a d a s


p o r d íg ito s y sig n o s m á s y m enos, sea el caso. 9 - 5 + 2 , 3 - 1 , y 7. C o m o un sig n o m ás
o m enos d e b e a p a re c e r e n tre d o s dígitos, se d ic e d e d ic h a s e x p re sio n e s q u e s o n “ lis­
ta s de d ígito s s e p a ra d o s p o r signos m á s o m enos". La sig u ie n te g ra m á tic a d escrib e
la sintax is d e e sa s ex p resio n es. Las p ro d u c c io n e s son:

lista -* lista + dígito (2.2)


lis ta - * lista - dígito (2.3)
lis ta - * dígito (2.4)
d íg ito - * 0 | l | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 (2.5)

L o s la d o s d e r e c h o s d e las tres p r o d u c c io n e s c o n n o te rm in a l lista del la d o iz­


q u ie r d o p u e d e n a g ru p a rs e d e fo rm a eq u iv alen te:

lista -* lista + dígito \ lista - dígito | dígito

D e a c u e r d o c o n las c o n v e n c io n e s , los c o m p o n e n te s léxicos de la g ra m á tic a son


los s ím b o lo s

+ —0 1 2 3 4 5 6 7 8 9

L o s n o te rm in a le s son los n o m b r e s e n cursivas lista y dígito, s ie n d o lista el n o te r­


m in a l inicial, p o r q u e sus p ro d u c c io n e s se d ie ro n p rim e ro . □

Se d ic e q u e u n a p ro d u c c ió n es para u n n o te rm in a l si el n o te rm in a l a p a re c e en
el la d o iz q u ie rd o d e la p ro d u c c ió n . U n a c a d e n a d e c o m p o n e n te s léxicos es u n a se­
c u e n c ia d e c e ro o m á s c o m p o n e n te s léxicos. L a c a d e n a q u e c o n tie n e c e r o c o m p o ­
n e n te s léxicos, q u e se escribe € , recib e el n o m b r e d e c a d e n a vacia.

1 Las letras cursivas individuales se usarán para propósitos adicionales cuando se estudien en detalle
las gramáticas en el capítulo 4. Por ejemplo, se usaran X. Y y / cuando se trata de un símbolo que
es un componente léxico o un no terminal. Sin embargo, un nombre en cursivas con dos o más
caracteres seguirá representando un no terminal.
28 l N C O M P I L A D O R SENC IL L O D E U N A PASADA

D e u n a g ra m á tic a se d e riv a n c a d e n a s e m p e z a n d o c o n el s ím b o lo in icial y r e e m ­


p la z a n d o re p e tid a m e n te u n n o te rm in a l p o r el la d o d e re c h o d e u n a p ro d u c c ió n p a ra
ese n o te rm in a l. L as c a d e n a s d e c o m p o n e n te s léxicos d e riv a d a s del s ím b o lo inicial
fo rm a n el lenguaje q u e d efin e la g ram ática.

E jem p lo 2.2. El lenguaje d efin id o p o r la g ra m á tic a del e je m p lo 2.1 está fo r m a d o p o r


listas d e d ígito s s e p a ra d o s p o r los signos m á s y m en o s.
Las diez p ro d u c c io n e s p a r a el n o te rm in a l d íg ito h a c e n p o sib le la re p re s e n ta c ió n
d e c u a lq u ie ra de los c o m p o n e n te s léxicos 0 , 1 ........... 9. A p a rtir d e la p ro d u c c ió n (2.4).
u n d íg ito p o r sí so lo es u n a lista. L as p ro d u c c io n e s (2.2) y (2.3) e x p re s a n el h e c h o d e
q u e al to p i a r c u a lq u ie r lista y p o n e r a c o n tin u a c ió n u n signo m á s o m e n o s, y des­
p u é s o t r o dígito, se tien e o tr a lista n u ev a.
T o d o lo q u e se p recisa p a r a d e fin ir el len g u aje q u e in te re sa s o n las p ro d u c c io n e s
(2.2) a (2.5). P o r e je m p lo , se p u e d e d e d u c ir q u e 9 - 5 + 2 es u n a lista c o m o sigue:

a) 9 es u n a lista d e la p ro d u c c ió n (2.4), d a d o q u e 9 es u n dígito.

b) 9 - 5 es u n a lista d e la p ro d u c c ió n (2 .3), d a d o q u e 9 es u n a lista y 5 es u n dí­


gito.
c) 9 - 5 + 2 es u n a lista d e la p ro d u c c ió n (2 .2), d a d o q u e 9 - 5 es u n a lista y 2 e s un
dígito.
E s t e r a z o n a m i e n t o s e i l u s t r a c o n e l á r b o l d e la f i g u r a 2 . 2 . C a d a n o d o e n e l á r b o l
está e tiq u e ta d o c o n u n s ím b o lo d e la g ra m á tic a . U n n o d o in te r io r y sus h ijo s c o rre s ­
p o n d e n a u n a p ro d u c c ió n : el n o d o in te rio r c o rre s p o n d e al la d o iz q u ie rd o d e la p r o ­
d u c c ió n . los hijos, al la d o d e re c h o . Estos á rb o le s se c o n o c e n c o n el n o m b r e d e á r ­
boles d e a n álisis s in tá c tic o y se e s tu d ia n m á s a d e la n te . □

lista

lis ia
\dígito
lis ia
\dígito
i
dígito

Fig. 2.2. Arbol d e análisis sintáctico para 9 - 5 + 2 según la gram ática del ejem plo 2.1.

E je m p lo 2.3. U n a clase a lg o d is tin ta d e listas e s la s e c u e n c ia d e p r o p o s ic io n e s se­


p a ra d a s p o r los s ím b o lo s d e p u n t o y c o m a q u e se e n c u e n tr a n en los b lo q u e s b egin -
en d d e Pascal. U n a característica d e estas listas es q u e u n a lista vacía d e p ro p o s ic io ­
n e s p u e d e e n c o n tr a r s e e n tre los c o m p o n e n te s léxicos b e g in y end. S e p u e d e e m p e z a r
a d e s a rro lla r u n a g ra m á tic a p a ra los b lo q u e s b eg in -en d in c lu y e n d o las p ro d u c c io n e s:
2.2 DEFINICIO N DE LA S IN T A X IS 29

bloque - > b egin props.


p ro p s-o p c - > lisia-props *
lista -p ro p s —* lista-props ; prop | prop

O bsérvese q u e el s e g u n d o la d o d e re c h o p o sib le p a r a p ra p s-o p e (“ lista d e p ro p o s ic io ­


nes o p c io n a l" ) es € . q u e re p re s e n ta la c a d e n a d e s ím b o lo s v acía. E sto es, p ro p s-o p c
se p u e d e re e m p la z a r p o r la c a d e n a vacia, d e m o d o q u e u n bloque p u e d e e s ta r for­
m a d o p o r la c a d e n a d e d o s c o m p o n e n te s léxicos b egin e n d . F íjese q u e las p r o d u c ­
c io n e s p a r a lista -p ro p s son a n á lo g a s a las d e lista del e je m p lo 2.1. c o n u n p u n to y
c o m a e n lu g a r d e u n o p e r a d o r a ritm é tic o , y prop, e n lu g a r d e dígito. N o se h a n m o s ­
tr a d o las p ro d u c c io n e s p a ra prop. U n p o c o m á s a d e la n te se e s tu d ia rá n las p r o d u c ­
c io n e s a p ro p ia d a s p a r a v arias clases d e p ro p o sicio n es: p ro p o sic io n e s ¡f. p ro p o sicio ­
nes d e asign ación y otras.

A r b o le s d e a n á lis is sin tá ctico

U n árb o l de a n álisis s in tá c tic o in d ica g rá fic a m e n te c ó m o del s ím b o lo inicial d e u n a


g ra m á tic a d e riv a u n a c a d e n a d e l lenguaje. Si el n o te rm in a l A tie n e u n a p ro d u c c ió n
A —►XY Z . e n to n c e s u n árb o l d e análisis s in tá c tic o p u e d e te n e r u n n o d o in te rio r eti­
q u e t a d o c o n A y tres h ijo s e tiq u e ta d o s c o n X. Y y Z. d e iz q u ie rd a a d erech a:

X Y Z

F o r m a lm e n te , d a d a u n a g ra m á tic a in d e p e n d ie n te del c o n te x to , u n árbol d e a n á ­


lisis sintáctico es u n árb o l c o n las p ro p ie d a d e s siguientes:

1. La raíz está e tiq u e ta d a c o n el s ím b o lo inicial.

2. C a d a h o ja está e tiq u e ta d a c o n u n c o m p o n e n te léxico o con € .

3. C a d a n o d o in te r io r está e tiq u e ta d o c o n u n n o te rm in a l.

4. Si A e s el n o te r m in a l q u e e t i q u e t a a a lg ú n n o d o in te r io r y A’,. \ : ............ X„
s o n la s e t i q u e t a s d e lo s h ijo s d e e s e n o d o , d e i z q u i e r d a a d e r e c h a , e n t o n c e s
A - > X \ X i . . . X„ es u n a p ro d u c c ió n . A q u í, A'i, A > , X„ re p re s e n ta u n s ím ­
b o lo q u e e s u n te rm in a l o un n o te rm in a l. C o m o caso especial, si A —► € . e n ­
to n c e s u n n o d o e tiq u e ta d o c o n A tie n e só lo un h ijo e tiq u e ta d o c o n t .

E je m p lo 2 .4 . En la figura 2 .2 , la raíz está e tiq u e ta d a c o n lista, q u e es el s ím b o lo


inicial d e la g ra m á tic a del e je m p lo 2.1. L o s h ijo s de la ra íz están e tiq u e ta d o s, d e iz­
q u ie rd a a d erech a , lista . +, y dígito. O b sérv ese q u e

lista - » lista + dígito

es u n a p ro d u c c ió n e n la g ra m á tic a del e je m p lo 2.1. El m is m o p a tró n c o n - se repite


e n el hijo iz q u ie rd o d e la raíz, y c a d a u n o d e los tres n o d o s e tiq u e ta d o s c o n dígito
tien e u n hijo q u e está e tiq u e ta d o c o n u n dígito. ü

L as h o ja s d e u n á rb o l d e a n á lis is s in tá c tic o , leíd as d e iz q u ie r d a a d e re c h a , for­


m a n la producción del á rb o l, q u e es la c a d e n a generada o derivada del n o te rm in a l
30 U N C O M PIL A D O R SENCILLO D E U N A PASADA

d e la raíz del á rb o l d e a n á lis is s in tá c tic o . E n la fig u ra 2 .2 . la c a d e n a g e n e r a d a es


9 - 5 + 2 , y to d a s las h o ja s se m u e s tr a n en el nivel inferior. A p a rtir d e a q u í, las hojas
n o se a l i n e a r á n d e e s a f o r m a . C u a l q u i e r á r b o l i m p a r t e u n o r d e n n a t u r a l , d e iz­
q u ie rd a a d e re c h a , a sus hojas, b a sá n d o se e n la id e a d e q u e si a y b son d o s hijos
c o n el m is m o p a d re , y a está a la iz q u ie rd a d e b , e n to n c e s lo d o s los d esc e n d ie n te s
d e a e s tá n a la iz q u ie rd a d e los d e s c e n d ie n te s d e b.
O t r a d e f in ic ió n del le n g u a je g e n e r a d o p o r u n a g r a m á tic a e s el c o n j u n t o d e c a ­
d e n a s q u e p u e d e n ser g e n e ra d a s p o r un á rb o l d e a n álisis sin táctico . El p ro ceso d e
b ú s q u e d a d e u n árb o l d e a n álisis s in tá c tic o p a r a u n a c a d e n a d a d a d e c o m p o n e n te s
léxicos se d e n o m in a análisis sintáctico d e esa c a d e n a .

A m b igü ed a d

S e h a d e te n e r c u id a d o al c o n s id e ra r la e s tr u c tu r a d e u n a c a d e n a s e g ú n u n a g r a m á ­
tica. A u n q u e e s e v id e n te q u e c a d a á rb o l d e a n álisis s in tá c tic o d e riv a e x a c ta m e n te la
c a d e n a q u e se lee en s u s hojas, u n a g ra m á tic a p u e d e te n e r m á s d e u n á rb o l d e a n á ­
lisis s in tá c tic o q u e g e n e re u n a c a d e n a d a d a d e c o m p o n e n te s léxicos. E sta clase d e
g ra m á tic a se d ic e q u e es am bigua. P a ra d e m o s tr a r q u e u n a g ra m á tic a es a m b ig u a ,
lo ú n ic o q u e se re q u ie re es e n c o n t r a r u n a c a d e n a d e c o m p o n e n te s léxicos q u e tenga
m á s d e u n árb o l d e a n álisis sin táctico . C o m o u n a c a d e n a q u e c u e n ta c o n m á s d e un
árb o l d e análisis s in tá c tic o su ele te n e r m á s d e u n significado, p a r a ap lic a c io n e s de
c o m p ila c ió n es n ecesario d is e ñ a r g ra m á tic a s n o a m b ig u a s o u tiliz ar g ra m á tic a s a m ­
biguas c o n reglas a d ic io n a le s p a r a reso lver las a m b ig ü e d a d e s.

E je m p lo 2.5. S u p ó n g a se q u e n o se h iz o la d is tin c ió n e n tre d íg ito s y listas según el


e je m p lo 2.1. Se p o d ía h a b e r e sc rito la g ra m á tic a

cadena -> cadena + cadena I cadena - cadena 1 0 i 1 I 2 I 3 I 4 5 6 7 8 9

C o m b i n a n d o la n o c ió n d e dígito y lista e n el n o te rm in a l cadena p arece te n e r s e n ­


tid o superficial, p o r q u e u n solo dígito es u n c a so especial d e u n a lista.
Sin e m b a rg o , e n la fig u ra 2 .3 se m u e s tra la e x p re sió n 9 - 5 + 2 tien e a h o r a m á s de
u n árb o l de análisis sin táctico . L o s d o s á rb o le s d e 9 - 5 + 2 c o rre s p o n d e n a d o s fo rm a s
d e a g r u p a m ie n to e n tr e p a ré n te s is d e la e x p re s ió n : ( 9 - 5 ) + 2 y 9 - ( 5 + 2 ) . E sta se­
g u n d a fo rm a d e a g r u p a m ie n to e n tre p arén tesis d a a la e x p re sió n el v alo r 2, en lugar
del v a lo r a c o s tu m b r a d o 6. L a g r a m á tic a d e l e je m p lo 2.1 n o p e r m itía esta i n ­
terpretació n. □

A so c ia tiv id a d d e o p era d o res

P o r c o n v e n c i ó n , 9 + 5 + 2 es e q u i v a le n t e a ( 9 + 5 ) + 2 , y 9 - 5 - 2 es e q u iv a le n te a
( 9 - 5 ) - 2. C u a n d o u n o p e r a n d o c o n 5 tie n e o p e ra d o re s a su iz q u ie rd a y d erech a , se
n e c e sita n c o n v e n c io n e s p a r a d e c id ir q u é o p e r a d o r c o n s id e ra ese o p e r a n d o . Se dice
q u e el o p e r a d o r + asocia a la izquierda , p o rq u e u n o p e r a n d o q u e te n g a u n signo
m ás a a m b o s la d o s es to m a d o p o r el o p e r a d o r q u e esté a su iz q u ie rd a . E n la m a y o ría
d e los le n g u a je s d e p r o g r a m a c ió n , lo s c u a t r o o p e r a d o r e s a r itm é tic o s , a d ic ió n , s u s ­
tra c c ió n . m u ltip lic a c ió n y d iv isió n s o n aso cia tiv o s p o r la izq u ierd a.
2.2 DEFINICIO N D E I A S IN T A X IS 31

cadena cadena

cadena
l\
+ cadena
/l\
cadena - cadena

cadena
/l\ - cadena 2
I I /I
9 cadena + cadena

Fig. 2.3. D os árboles d e análisis sintáctico para 9 -5 + 2 .

A lg u n o s o p e ra d o re s c o m u n e s , c o m o la e x p o n e n c ia c ió n . son a so c ia tiv o s p o r la
d erech a . O tr o e je m p lo a n álo g o , el o p e r a d o r d e asig nació n = e n C e s a s o c ia tiv o por
la d e re c h a : en C. la ex p resió n a = b = c se tra ta igual q u e la e x p re sió n a = ( b = c ) .
L as c a d e n a s c o m o a = b = c . c o n u n o p e r a d o r a s o c ia tiv o p o r la d e re c h a , son g e­
n e ra d a s p o r la sig u ie n te g ram ática:

derecha -> letra = derecha \ letra


letra —* a

El c o n tra ste e n tr e u n árb o l d e a n álisis s in tá c tic o p a ra un o p e r a d o r a s o c ia tiv o p o r


la iz q u ie rd a c o m o - , y u n árb o l d e a n álisis s in tá c tic o p a ra u n o p e r a d o r a so cia tiv o
p o r la d e re c h a c o m o =, se m u e s tra e n la fig u ra 2.4. A d v iértase q u e el á rb o l d e a n á ­
lisis s in tá c tic o p a r a 9 - 5 - 2 d e s c ie n d e h a c ia la iz q u ie r d a , m i e n t r a s q u e el á r b o l d e
a n álisis s in tá c tic o p a ra a = b = c d esc ie n d e h acia la d erech a .

lista derecha

/l\ lista - d íg ito


/l\
letra = derecha

/l\
lista
I - d íg ito 2 a
I /IX letra = derecha

I I
d íg ito 5
I I b letra

Fig. 2.4. Arboles de análisis sintáctico para operadores asociativos por la izquierda y |
la derecha.

P r e c e d e n c ia d e o p e r a d o r e s

C o n s id é re s e la e x p re s ió n 9 + 5 * 2 . H a y d o s in te r p r e ta c io n e s p o sib le s d e esta e x p r e ­
sión: ( 9 + 5 ) * 2 o 9 + ( 5 * 2 ) . L a a so c ia tiv id a d d e + y * n o resu elv e esta a m b ig ü e d a d .
P o r esta ra z ó n , se necesita c o n o c e r la p re c e d e n c ia relativ a d e los o p e r a d o r e s c u a n d o
esté p re se n te m á s d e u n a clase d e o p erad o res.
S e d ic e q u e * tien e m a yo r precedencia q u e + si * c o n s id e ra s u s o p e r a n d o s a n ­
tes d e q u e lo hag a +. E n a ritm é tic a e le m e n ta l, la m u ltip lic a c ió n y d iv isió n tien en
32 U N C O M PIL A D O R SENCILLO DE U N A PASADA

m a y o r p re c e d e n c ia q u e la a d ic ió n y s u stra c c ió n . P o r ta n to , 5 es c o n s id e r a d o p o r *
e n 9 + 5 * 2 y e n 9 * 5 + 2 : e s d e c ir, las e x p r e s io n e s s o n e q u i v a l e n t e s a 9 + ( 5 * 2 ) y
( 9 * 5 ) + 2. re sp e c tiv a m e n te .

S in ta x is d e expresiones. U tiliz a n d o u n a ta b la q u e m u e s tr e la a s o c ia tiv id a d y


p re c e d e n c ia d e o p e ra d o re s se p u e d e c o n s tr u ir u n a g ra m á tic a p a ra e x p re s io n e s a r it­
m éticas. S e e m p ie z a c o n los c u a tr o o p e ra d o re s a ritm é tic o s b ásico s y u n a ta b la de
p reced e n cias, m o s tr a n d o los o p e ra d o re s e n o rd e n d e p re c e d e n c ia cre c ie n te , c o n los
o p e ra d o re s d e la m is m a p reced e n cia e n la m is m a línea:

a so c ia tiv o s p o r la iz q u ierd a: + -
aso cia tiv o s p o r la iz q u ierd a: * /

S e c re a n d o s n o te rm in a le s expr y térm in o p a r a los d o s niveles d e p re c e d e n c ia , y


u n n o te rm in a l ad ic io n a l factor p a ra g e n e ra r u n id a d e s básicas en las expresiones. Las
u n id a d e s básicas d e las e x p re sio n e s son d e m o m e n to d íg itos y e x p re sio n e s e n tr e p a ­
réntesis.

fa cto r - > d íg ito | ( expr )

A h o ra , c o n sid érese los o p e ra d o re s b in a rio s, * y / , q u e tie n e n m a y o r p re c e d e n ­


cia. C o m o esto s o p e ra d o re s aso cian p o r la iz q u ie rd a , las p ro d u c c io n e s s o n sim ilares
a las d e las listas q u e a s o c ia n p o r la izq u ierd a.

térm ino —►térm in o * factor


térm in o / factor
fa ctor

D e m a n e r a sim ilar, expr g en era listas d e té rm in o s s e p a ra d o s p o r los o p e ra d o re s a d i­


tivos.

expr —> ex p r + térm ino


expr - térm ino
térm ino
P o r ta n to . la g ra m á tic a re su lta n te es

expr -> expr + térm in o | e x p r - térm in o | térm ino


térm ino —> térm in o * fa c to r \ térm ino / fa c to r | factor
factor - * d íg ito | ( e x p r )

E sta g ra m á tic a c o n s id e ra u n a ex p resió n c o m o u n a lista d e té rm in o s s e p a ra d o s p o r


los signos + o y u n te r m in o , c o m o u n a lista d e facto res s e p a ra d o s p o r los signos
* o / . A d v ié rta se q u e c u a lq u ie r e x p re sió n e n tr e p a ré n te sis es u n factor, d e m a n e ra
q u e c o n los p a ré n te sis se p u e d e n d e s a rro lla r e x p re sio n e s q u e te n g a n a n id a m ie n to d e
p ro f u n d id a d a rb itra ria (y ta m b ié n á rb o le s d e p ro f u n d id a d a rb itra ria ).

S in ta xis de proposiciones. L as p a la b ra s clave p e rm ite n re c o n o c e r p ro p o sicio n es


e n la m a y o ría d e los lenguajes. T o d a s las p ro p o s ic io n e s d e P ascal c o m ie n z a n co n
u n a p alab ra clave, e x c e p to las a s ig n a c io n s y las lla m a d a s a p ro c e d im ie n to s . A lgunas
p ro p o sic io n e s d e Pascal se d e fin e n p o r m e d io d e la sig uiente g ra m á tic a (a m b ig u a )
e n la q u e el c o m p o n e n te léxico ¡d re p re s e n ta u n id en tificad o r.
2.3 T R A D U C C I O N D I R I G I D A P O R LA S I N T A X I S 33

prop —> id s = expr


i f ex p r th e n prop
i f expr th en prop e l s e prop
vvhile expr d o prop
b eg in p ro p s-o p c end

El n o te rm in a l p ro p s-o p e g e n e ra u n a lista d e p ro p o sicio n es, p o s ib le m e n te vacia, se­


p a r a d a p o r lo s s ím b o lo s d e p u n t o y c o m a , u t i liz a n d o las p r o d u c c i o n e s del
e je m p lo 2.3.

2 .3 T R A D U C C I O N D I R I G I D A P O R L A S I N T A X I S

P a ra tr a d u c ir u n a c o n s tr u c c ió n d e u n le n g u a je d e p r o g r a m a c ió n , u n c o m p ila d o r
p u e d e n ecesitar te n e r en c u e n ta m u c h a s características, a d e m á s del c ó d ig o g e n e ra d o
p a ra la c o n s tru c c ió n . P o r e je m p lo , p u e d e o c u rrir q u e el c o m p ila d o r n ecesite c o n o c e r
el tip o d e la c o n s tru c c ió n , la p o sició n d e la p r im e r a in stru c c ió n del c ó d ig o o b je to o
el n ú m e r o d e in s tr u c c io n e s g e n e ra d a s . P o r ta n to , los a tributos a s o c ia d o s c o n las
c o n s tru c c io n e s se m e n c io n a n d e m a n e r a ab stra c ta . U n a tr ib u to p u e d e re p re s e n ta r
c u a l q u i e r c a n t id a d , p o r e je m p lo , u n tip o , u n a c a d e n a , u n a p o s ic ió n d e m e m o r ia
o c u a l q u i e r o tr a co sa.
E n esta secció n , se p re s e n ta u n f o r m a lis m o lla m a d o d e fin ic ió n d irig id a p o r la
sintax is p a ra especificar las tra d u c c io n e s p a r a las c o n s tru c c io n e s d e len g u ajes d e p r o ­
g ra m a c ió n . U n a d e fin ic ió n dirigid a p o r la sin taxis especifica la tr a d u c c ió n d e u n a
c o n stru c c ió n en fu n c ió n d e a tr ib u to s a so c ia d o s c o n s u s c o m p o n e n te s sin tá ctic o s. E n
c a p ítu lo s posterio res, las tra d u c c io n e s d irig id as p o r la sin ta x is se usan p a r a especifi­
c a r m u c h a s d e las tra d u c c io n e s q u e o c u rre n e n la e ta p a inicial d e u n c o m p ila d o r.
P a ra esp ecificar tra d u c c io n e s , se in tr o d u c e ta m b ié n u n a n o ta c ió n m á s o rie n ta d a
a p ro c e d im ie n to s , d e n o m in a d a e s q u e m a d e tra d u c c ió n . En este c a p ítu lo , se e m p le a n
e s q u e m a s d e tr a d u c c ió n p a ra tr a d u c ir e x p re sio n e s in fijas a la fo rm a postfija. E n el
c a p itu lo 5 se h a c e u n a n álisis m á s d e ta lla d o d e las d efin ic io n e s dirigidas p o r la s in ­
tax is y su im p la n ta c ió n .

N o ta c ió n postfija

La notación postfija d e u n a ex p resió n E se p u e d e d e fin ir d e m a n e r a in d u c tiv a c o m o


sigue:

1. Si E e s u n a v a r ia b le o u n a c o n s t a n t e , e n t o n c e s la n o ta c ió n p o s tfija d e E es
ta m b ié n E.

2. Si E e s u n a ex p resió n d e la fo rm a £ j op E 2, d o n d e op es c u a lq u ie r o p e r a d o r
b in a rio , e n to n c e s la n o ta c ió n po stfija d e E es E \ E { op. d o n d e A',' y AY s o n las
n o ta c io n e s po stfijas d e E\ y A*, re sp e c tiv a m e n te .

3. Si E es u n a e x p re sió n d e la fo rm a ( £ j ). e n to n c e s la n o ta c ió n postfija d e E \ es
ta m b ié n la n o ta c ió n po stfija d e E.

La n o ta c ió n postfija no n e c e sita p arén tesis, p o r q u e la p o sic ió n y la ariedad ( n ú ­


m e r o d e a rg u m e n to s ) d e los o p e ra d o re s p e r m ite n sólo u n a d esco d ificació n d e u n a
34 U N C O M PIL A D O R SENCILLO D E U N A PASADA

e x p r e s i ó n p o s i f i j a . P o r e j e m p l o , la n o t a c i ó n p o s t f i j a d e ( 9 - 5 ) + 2 es 9 5 -2 + y la n o ­
t a c i ó n p o s t f ij a d e 9 - ( 5 + 2 ) es 9 5 2 + -.

D e f in ic io n e s d ir ig id a s p or la s in t a x is

U n a definición dirigida p o r la sin ta xis u tiliza u n a g ra m á tic a in d e p e n d ie n te del c o n ­


te x to p a ra esp ecificar la e s tru c tu ra sin tá c tic a d e la e n tra d a . A c a d a s ím b o lo d e la gra­
m á tic a le aso cia u n c o n j u n t o d e a tr ib u to s y a c a d a p ro d u c c ió n , u n c o n j u n t o d e re­
glas sem ánticas p a r a c a lc u la r los v alo res d e los a tr ib u to s a s o c ia d o s c o n los s ím b o lo s
q u e a p a re c e n en esa p ro d u c c ió n . L a g ra m á tic a y el c o n j u n t o d e reglas se m á n tic a s
c o n s titu y e n la d e fin ic ió n d irig id a p o r la sintaxis.
U n a tr a d u c c ió n es u n a tr a n s fo rm a c ió n d e u n a e n tr a d a e n u n a salida. L a salida
p a r a c a d a e n tr a d a x se especifica d e la fo rm a sig u ien te. P rim e ro , se c o n s tr u y e un
árb o l d e a n álisis s in tá c tic o p a ra x . S u p ó n g a s e q u e u n n o d o n del árb o l d e análisis
s in tá c tic o está e tiq u e ta d o c o n el s ím b o lo X d e la g ra m á tic a . S e escrib e X .a p a ra in ­
d ic a r el v a lo r del a tr ib u to a d e X e n ese n o d o . El v alo r d e X .a en n se calcu la p o r la
regla s e m á n tic a p a r a el a trib u to a a so c ia d o c o n la p ro d u c c ió n d e X u tiliz a d a en el
n o d o n. Al á rb o l d e a n álisis s in tá c tic o q u e m u e s tre los v alo res d e los a tr ib u to s en
c a d a n o d o se d ic e q u e e s u n árb o l d e a n álisis s in tá c tic o con anotaciones.

A tr ib u to s sin te tiz a d o s

Se d ic e q u e u n a tr ib u to está sintetizado si su v alo r e n u n n o d o del árb o l d e análisis


s in tá c tic o se d e te r m in a a p a r tir d e los v alo res d e a tr ib u to s d e los h ijo s del n o d o . L o s
a tr i b u to s s in te tiz a d o s tie n e n la a tr a c tiv a p r o p ie d a d d e q u e se p u e d e n c a lc u la r d u ­
r a n te u n so lo re c o rrid o a s c e n d e n te del á rb o l d e a n álisis sin tá ctic o . E n este c a p itu lo
sólo se usan a trib u to s sintetizados; los a trib u to s “h e re d a d o s'’ se tr a ta n e n el cap ítu lo 5.

E je m p lo 2 .6 . E n la fig u ra 2.5 se m u e s tra u n a d e fin ic ió n d irig id a p o r la s in ta x is p a ra


tr a d u c ir ex p resio n es, f o rm a d a s p o r d íg itos s e p a r a d o s p o r los signos m á s o m e n o s , a
n o ta c ió n postfija. A c a d a n o te rm in a l está a s o c ia d o u n a trib u to / c o n u n v a lo r d e la
c a d e n a q u e re p re s e n ta la n o ta c ió n po stfija d e la e x p re sió n g e n e ra d a p o r ese n o te r­
m in a l e n u n árb o l d e a n álisis sin táctico .

P r o d u c c ió n R e g la S e m á n t ic a

expr —► e x p t\ + térm ino expr.t := e x p r {A || térm ino . / || '+'


expr - * exprt - térm ino expr.t : = expr xA || térm ino t ||
expr - > térm ino expr A térm ino A
térm ino -> 0 té rm in o A := '0'
térm ino —► 1 térm inoA := T
• • • • • •
térm ino -* 9 té rm in o t : = '9'

F ig. 2 .5 . Definición dirigida p o r la sintaxis para traducción de infija a postfija.


2.3 T R A D U C C I O N D I R I G I D A P O R LA S I N T A X I S 35

L a fo rm a postfija d e un d íg ito es el p ro p io díg ito; p o r e je m p lo , la regla s e m á n tic a


a s o c ia d a c o n la p r o d u c c ió n térm in o - » 9 d e f in e q u e térm inoA es 9 c u a n d o esta
p ro d u c c ió n se use e n u n n o d o d e u n árb o l d e a n álisis sin tá ctic o . C u a n d o se ap lica
la p ro d u c c ió n ex p r —> térm ino , el v alo r d e térm ino.t se tr a n s f o r m a e n el v alo r de
expr.t.
La p ro d u c c ió n e x p r -> expr¡ + térm ino d eriv a u n a e x p re sió n c o n u n o p e ra d o r
m as (el su b ín d ic e e n e x p r{ d is tin g u e el c a so d e expr e n el la d o d e r e c h o d e a q u e l q u e
está en el la d o izq u ierd o ). El o p e r a n d o iz q u ie rd o del o p e r a d o r m á s está d a d o p o r
ex p r t. y el o p e r a n d o d e re c h o , p o r térm ino. L a regla s e m á n tic a

expr.t :« expry.t || térm ino.t || '+'

a s o c ia d a c o n esta p ro d u c c ió n d efin e el v alo r del a tr ib u to expr.t m e d ia n te la c o n c a ­


te n a c ió n d e la s fo rm as p ostfijas exprx.t y térm ino.t d e los o p e r a n d o s iz q u ie r d o y d e ­
re c h o . r e s p e c tiv a m e n te , y d e s p u é s a g r e g a n d o el s ig n o m á s. El o p e r a d o r || e n las
reglas se m á n tic a s re p re s e n ta la c o n c a te n a c ió n d e cad en a s.
L a figura 2 .6 c o m p r e n d e el á rb o l d e análisis s in tá c tic o c o n a n o ta c io n e s c o rre s ­
p o n d ie n te al á rb o l d e la figura 2 .2 . El v a lo r del a trib u to / e n c a d a n o d o se c a lc u ló
p o r la regla s e m á n tic a a so c ia d a c o n la p ro d u c c ió n e m p le a d a en ese n o d o . El valor
del a tr ib u to en la ra íz es la n o ta c ió n postfija d e la c a d e n a g e n e ra d a p o r el árb o l d e
a n álisis sin tá ctic o . □

expr.t 9 5 -2 +

expr.t - 9 5 - térm ino.! = 2

expr.t = 9 térm ino.t - 5

I
térm ino.! - 9

Vig. 2.6. Valores d e atrib utos en los no dos d e u n árbol de análisis sintáctico.

E je m p lo 2.7. S u p ó n g a se q u e un r o b o t se p u e d e in s tr u ir p a r a m o v e rse u n p a so al
este, n o rte , o este o s u r d e s d e su p o sic ió n inicial. U n a se c u e n c ia d e estas in s tru c c io ­
n e s se g en era c o n la g ra m á tic a siguiente:

sec —> sec instr | c o m ie n z a


instr - + e s t e | n o rte | o e s t e | sur

E n la figura 2 .7 se m u e s tra n los c a m b io s e n la p o sició n del r o b o t si se le p ro p o rc io n a


la e n tra d a

c o m ie n z a o e s t e sur e s t e e s t e e s t e n o rte n orte


36 U N C O M PILA D O R SENCILLO DE U N A PASADA

(2.1)

Fig. 2.7. Seguim iento de un a posición del robot.

E n la figura, u n a posición se m a rc a c o n u n p a r ( v.r). d o n d e X e y re p re s e n ta n el


n ú m e r o d e pasos al este y al n o rte , re sp e c tiv a m e n te , d e sd e la p o sició n inicial. (Si v
es n eg ativ o , e n to n c e s el r o b o t se e n c u e n tr a al o este d e la po sició n inicial; d e m a n e r a
s im ila r, si y es negativo, e n to n c e s el r o b o t se e n c u e n tr a al s u r d e la p o sic ió n inicial.)
P a ra tr a d u c ir u n a se c u e n c ia d e in s tru c c io n e s a u n a po sició n del ro b o t, se c o n s ­
tr u ir á u n a d e fin ic ió n dirig id a p o r la sintaxis. Se u sarán d o s a trib u to s , sec.x y sec.y,
p a r a seg u ir la po sició n q u e resulte d e u n a se c u e n c ia d e in s tru c c io n e s g e n e ra d a p o r
el n o te rm in a l sec. Al p rin c ip io , sec g e n e ra c o m ie n z a , a s ig n a n d o el v a lo r inicial 0 a
sec.x y sec.y, según se in d ica e n el n o d o in te rio r del árb o l d e análisis s in tá c tic o de
com ien za o e s te sur. s itu a d o e n el e x tr e m o iz q u ie rd o d e la figura 2.8.

sec.x = - 1
sec.y = - 1

sec.x = - 1 instr.dx = 0
sec.y = 0 instr.dv = - 1

sec.x - 0 instr.dx = - I sur


sec.y = 0 in s trd y = 0

com ien za o e ste

Fig. 2.8. Arbol d e análisis sintáctico co n an o tacio n es para comienza oeste sur.

El c a m b io en la po sició n a c a u sa d e u n a in s tru c c ió n in d iv id u a l d e r iv a d a d e instr


se d a p o r los a trib u to s instr.dx e instr dy. P o r e jem p lo , si instr d e riv a o e ste , e n to n c e s
instr.dx = - 1 e instr.dv = 0. S u p ó n g a se q u e u n a se c u e n c ia se c se fo rm a c o n u n a
secu en cia sec\ seg u id a d e u n a n u e v a in s tru c c ió n instr. E n to n c e s , la n u e v a posición
del ro b o t está d a d a p o r las reglas

sec.x : = sec\.x + instr.dx


sec.y : = sec'i.y + instr.dv
E n la figura 2 .9 se m u e s tra u n a d e fin ició n d irig id a p o r la sin ta x is p a ra tr a d u c ir u n a
se c u e n c ia d e in s tru c c io n e s a u n a p o sició n del ro b o t. □
2.3 TRA DUC CIO N D I R I G I D A P O R LA S I N T A X I S 37

P r o d u c c ió n R e g la S e m á n t ic a

sec ..v : = 0
sec —> c o m ie n z a
sec.y : = 0
sec..v : = s c c \x + instr.dx
sec —> sec\ instr
s e c .v := sec\.y + instr.dy
instr.dx : = 1
instr —* e s t e
instr.dy : = 0
instr.dx : = 0
instr —* norte
instr dy : = 1
instr.dx : = - 1
instr - * o e s t e
instr.dy : = 0
instr.dx : = 0
instr -> sur
instr d y : = - 1

Fig. 2.9. Definición dirigida por la sintaxis d e la posición del robot.

R e c o r r i d o s e n p r o f u n d id a d

U n a d e fin ició n d irig id a p o r la sin ta x is n o im p o n e n in g ú n o rd e n específico a la e v a ­


lu a c ió n d e a tr i b u to s e n u n á rb o l d e a n á lis is s in tá c tic o : c u a lq u ie r o r d e n d e e v a lu a ­
c ió n q u e c a lc u le u n a tr ib u to a , d e s p u é s d e h a b e r c a lc u la d o to d o s los d e m á s a trib u to s
d e los q u e a d e p e n d e es acep tab le. E n g en eral, es p o sib le q u e hay a q u e e v a lu a r a l­
g u n o s a trib u to s c u a n d o se llega p o r p r im e ra vez a u n n o d o d u r a n te u n re c o rrid o del
árb o l d e análisis sin tá ctic o , otros, d e s p u é s d e h a b e r v isita d o to d o s sus h ijo s o e n al­
g ú n p u n t o e n tre las visitas a los hijos del n o d o . E n el c a p ítu lo 5 se a n a liz a n c o n m ás
d etalle los ó r d e n e s d e ev a lu a c ió n a p ro p ia d o s.
T o d a s las tra d u c c io n e s d e este c a p ítu lo se p u e d e n h a c e r e v a lu a n d o las reglas se­
m á n tic a s d e los a t r i b u t o s en u n á rb o l d e a n álisis s in tá c tic o e n u n o rd e n p r e d e te r ­
m in a d o . U n recorrido d e u n á rb o l c o m ie n z a e n la ra íz y v isita c a d a n o d o del árbol
en u n o rd e n in d e te rm in a d o . E n este c a p ítu lo , las reglas s e m á n tic a s se e v a lu a rá n m e­
d ia n te el re c o rrid o e n p ro f u n d id a d q u e se d e fin e en la figura 2.10. E ste re c o rrid o
e m p ie z a en la ra íz y visita re c u rs iv a m e n te a los h ijo s d e c a d a n o d o e n o rd e n d e iz­
q u ie rd a a d e re c h a , c o m o se m u e s tra e n la fig u ra 2.11. Las reglas s e m á n tic a s e n un
n o d o d a d o se e v a lú a n c u a n d o to d o s los d e s c e n d ie n te s d e esc n o d o h a y a n sid o v isi-

p ro eed u re visita (/?: nodo):


begin
f o r cada hijo m d e n. d e izquierda a derecha do
visita (w);
evalúa reglas sem ánticas en el no d o n
end

Fig. 2.10. U n recorrido en profundidad d e u n árbol.


38 L N C O M PILA D O R SENCILLO DE U N A PASADA

tados. S e lla m a “e n profundidad** p o r q u e s ie m p re q u e p u e d a , visita a u n h ijo n o vi­


s ita d o d e u n n o d o , d e m o d o q u e in te n ta v isitar los n o d o s m á s a le ja d o s d e la raíz lo
a n te s posible.

E s q u e m a s d e tradu cción

En el resto d e este c a p ítu lo , se usa u n a esp ecificación o r ie n ta d a a p ro c e d im ie n to s


p a ra d e fin ir u n a tra d u c c ió n . U n esquem a de traducción e s u n a g ra m á tic a in d e p e n ­
d ie n te del c o n te x to en la q u e se e n c u e n tr a n in tercala d o s, e n los la d o s d e re c h o s de
las p ro d u c c io n e s , fra g m e n to s d e p r o g r a m a lla m a d o s acciones sem ánticas. U n e s ­
q u e m a d e tr a d u c c ió n es c o m o u n a d e fin ic ió n d irig id a p o r la sintaxis, c o n la ex cep­
c ió n d e q u e el o r d e n d e e v a lu a c ió n d e las reg las s e m á n tic a s se m u e s tr a e x p líc ita ­
m e n te . L a p o sició n en la q u e se e je c u ta a lg u n a acció n se d a e n tr e llaves y se escribe
e n el la d o d e r e c h o d e u n a p ro d u c c ió n , p o r e jem p lo ,

resto -* + térm in o { print ( V ) } resto ¡

Fig. 2 .1 1. Ejem plo d e un recorrido en profundidad de u n árbol.

U n e s q u e m a d e tr a d u c c ió n g e n e ra u n a salid a p a r a c a d a frase a* g e n e ra d a p o r la
g ra m á tic a s u b y a c e n te m e d ia n te la e je c u c ió n d e las a c c io n e s e n el o r d e n e n q u e a p a ­
re c e n d u r a n te u n re c o rrid o e n p r o f u n d id a d d e u n á rb o l d e a n álisis s in tá c tic o p a r a x.
Sea el caso d e u n árb o l d e a n álisis s in tá c tic o c o n u n n o d o e tiq u e ta d o c o n resto q u e
re p re s e n te a esta p ro d u c c ió n . L a a c c ió n { p rin t ('+ ')} se e fe c tu a rá d e s p u é s d e re c o rre r
el su b á rb o l d e térm ino , p e ro a n te s d e v isitar al h ijo restO\.

resto

+ . térm in o {p rin t ('+')( resto,

Fig. 2.12. C onstrucción d e una hoja adicional corresp o nd iente a un a acción semántica.
9

C u a n d o se d ib u ja u n árb o l d e a n álisis s in tá c tic o d e u n e s q u e m a d e tra d u c c ió n ,


se in d ica u n a a c c ió n c o n s tr u y e n d o u n h ijo a d ic io n a l, c o n e c ta d o al n o d o p a r a s u p ro ­
d u c c ió n p o r u n a lin ea d e p u n to s . P o r e je m p lo , la p a rte del á rb o l d e a n álisis sin tá c ­
tico p a ra la p ro d u c c ió n y la acció n a n te rio re s se re p re s e n ta e n la figura 2.12. El n o d o
p a ra u n a a c c ió n s e m á n tic a n o tie n e hijos, d e m o d o q u e la acció n se realiza c u a n d o
se ve p o r p r im e ra vez ese n o d o .
2.3 T R A D U C C I O N D I R I G I D A P O R LA S I N T A X I S 39

E m is ió n d e una traducción

En este c a p ítu lo , las a c c io n e s s e m á n tic a s e n los e s q u e m a s d e tr a d u c c ió n escrib irán


la salid a d e u n a tr a d u c c ió n en u n a rc h iv o , u n a c a d e n a o un c a r á c te r a la vez. P or
e jem p lo , se tra d u c e 9 - 5 + 2 a 9 5 - 2 + im p r im ie n d o c a d a c a rá c te r d e 9 - 5 + 2 j u s t o un a
vez. sin u sa r n in g ú n a l m a c e n a m ie n to p a ra la tr a d u c c ió n d e su b ex p resio n es. C u a n d o
la salid a se c re a in c re m e n ta !m e n te d e este m o d o , es im p o r ta n te el o rd e n e n q u e se
im p rim e n los caracteres.
A dviértase q u e las d efin icio n es dirigidas p o r las sintaxis m e n c io n a d a s h asta a h o ra
tie n e n la sig u ie n te p ro p ie d a d im p o r ta n te : la c a d e n a q u e re p re s e n ta la tra d u c c ió n del
n o te rm in a l del la d o iz q u ie r d o d e c a d a p r o d u c c ió n es la c o n c a te n a c ió n d e las tr a ­
d u c c io n e s d e los n o te rm in a le s d e la d e re c h a , en igual o r d e n q u e en la p ro d u c c ió n ,
c o n a lg u n a s c a d e n a s a d ic io n a le s (tal vez n in g u n a ) in tercala d as. C o n esta p ro p ie d a d ,
u n a d e fin ic ió n d irig id a p o r la s in ta x is se d e n o m i n a sim p le. P o r e je m p lo , c o n s id é ­
rense la p r im e ra p ro d u c c ió n y la regla s e m á n tic a d e la d e fin ició n d irig id a p o r la s in ­
tax is d e la figura 2.5:

P r o d u c c ió n R e g l a S e m á n t ic a
expr - * ex p rx + térm in o ex p r t : = expr^.t || térm in o i | | '+ ' (2.6)

A q u í, la tr a d u c c ió n expr.t e s la c o n c a te n a c ió n d e la s tra d u c c io n e s d e e x p r x y tér­


m ino\ seguida del s ím b o lo +. A d v ié rta se q u e expr y a p a re c e a n te s q u e térm in o en el
la d o d e r e c h o d e la p ro d u c c ió n . \
E n tre térm ino.! y restO\.t a p a re c e u n a c a d e n a ad ic io n a l en

P r o d u c c ió n R e g l a S e m á n t ic a
r e s t o - * + térm in o restO\ resto.t : = térm in o A | | '+ ' || resto \.t (2.7)

p e ro , d e n u e v o , el n o te rm in a l térm in o a p a re c e a n te s q u e resto\ e n el la d o d e re c h o .
L as d efin ic io n e s sim p le s d irig id as p o r la s in ta x is se p u e d e n im p la n t a r c o n e sq u e ­
m a s d e tr a d u c c ió n e n los q u e las a c c io n e s im p r im a n las c a d e n a s a d ic io n a le s e n el
o rd e n e n q u e a p a re c e n e n la d e fin ic ió n . L as a c c io n e s d e las sig u ie n tes p ro d u c c io n e s
im p r im e n las c a d e n a s a d ic io n a le s d e (2.6) y (2.7), re sp ectiv am en te:

expr - > expr{ + térm in o {/?/*/>?/(V ) }


resto - > + térm ino ( p r im é * ’) ) resto{

E jem p lo 2.8. La figura 2.5 c o n tie n e u n a d e fin ició n s im p le p a r a tr a d u c ir e x p resio n es


a la fo rm a postfija. E n la fig u ra 2 .1 3 se d a u n e s q u e m a d e tr a d u c c ió n d e r iv a d o de
esta d e fin ició n y e n la fig u ra 2 .1 4 se m u e s tra u n árb o l d e a n álisis s in tá c tic o c o n ac-

expr —* expr * térm ino { p rim é * ') }


expr expr - térm ino { print ( '- ') )
expr —►término
término -* 0 { print ( ' 0') )
término -> 1 { print ( ' 1') )
•• •

término 9 ( p r im é 9') )

Eig. 2.13. Acciones q u e traducen expresiones a la notación poslfija.


40 U N C O M PIL A D O R SENCILLO D E U N A PASADA

d o n e s p a ra 9 - 5 + 2 . O bsérvese q u e a u n q u e las figuras 2.6 y 2.14 rep resen ta n la m ism a


tr a n s fo rm a c ió n d e e n tr a d a a salida, la tr a d u c c ió n se c o n s tru y e d e m a n e r a d is tin ta
en los d o s casos: la figura 2 .6 v in c u la la salid a a la raíz del á rb o l d e a n álisis sin tá c ­
tico. m ie n tr a s q u e la figura 2 .1 4 im p r im e la salid a d e fo rm a in c re m e n ta l.
La raíz d e la figura 2 .1 4 re p re s e n ta la p r im e r a p ro d u c c ió n d e la figura 2.13. En
u n re c o rrid o en p ro fu n d id a d , p rim e ro se realizan to d a s las acciones del su b árb o l para
el o p e r a n d o iz q u ie rd o expr c u a n d o se re c o rre el su b á rb o l s itu a d o m á s a la iz q u ie rd a
d e la raíz, d e s p u é s se visita la h o ja +. e n la q u e n o h a y n in g u n a a cció n , a c o n t i n u a ­
c ió n realizan las a c c io n e s del s u b á rb o l p a r a el o p e r a n d o d e r e c h o térm ino y. p o r úl­
tim o . se realiza la acció n s e m á n tic a { p rin t ('+ ')} en el n o d o adicio n al.
C o m o líLS p ro d u c c io n e s p a r a térm ino tie n e n só lo u n d íg ito en el la d o d e re c h o ,
esc d íg ito se im p r im e p o r m e d io d e las a c c io n e s p a ra las p ro d u c c io n e s. N o se nece­
sita n in g u n a salid a p a ra la p ro d u c c ió n expr —> térm ino, y só lo se re q u ie re im p r im ir
el o p e r a d o r e n las d o s p r im e r a s p ro d u c c io n e s . C u a n d o se e je c u ta n d u r a n t e u n r e ­
c o rrid o e n p r o f u n d id a d del árb o l de a n álisis sin tá ctic o , las a c c io n e s d e la figura 2.14
im p r im e n 9 5 - 2 + . D

{print ('+')}
term ino
/ " .
[print ('-')} 2 {p rin t ( ' 2 ')}

i’.xpr term ino


I / " .
term in o 5 {p rin t ('5')}
/
9 {p rin t ('9')}

Fig. 2.14. A cciones qu e traducen 9 - 5 + 2 a 9 5 -2 + .

C o m o regla general, la m a y o ría d e los m é to d o s d e a n álisis s in tá c tic o p ro c e s a n su


e n tr a d a d e iz q u ie rd a a d e re c h a d e fo rm a “ vo raz": esto es, c o n s tru y e n el m á x im o p o ­
sible d e u n árb o l d e a n álisis s in tá c tic o a n te s d e leer el sig u ie n te c o m p o n e n te léxico
d e la e n t r a d a . E n u n e s q u e m a d e tr a d u c c ió n s im p le ( o b te n id o d e u n a d e fin ic ió n
s im p le d irig id a p o r la sin ta x is) las a c c io n e s se e fe c tú a n ta m b ié n d e iz q u ie rd a a d e ­
re c h a . P o r ta n to , p a r a i m p l a n t a r u n e s q u e m a d e tr a d u c c ió n s im p le se p u e d e n e je ­
c u ta r las a c c io n e s s e m á n tic a s d u r a n te el a n álisis sin tá c tic o ; n o es n ecesario c o n s tru ir
el árb o l d e análisis sin táctico.

2.4 A N A L I S I S S I N T A C T I C O

El a n álisis s in tá c tic o es el p ro ceso d e d e te r m in a r si u n a c a d e n a d e c o m p o n e n te s lé­


xicos p u e d e ser g e n e ra d a p o r u n a g ra m á tic a . E n el e s tu d io d e este p ro b le m a , es útil
p e n s a r e n c o n s tru ir u n árb o l d e análisis s in tá c tic o , a u n q u e , d e h e c h o , u n c o m p ila d o r
n o lo c o n s tru y a . Sin e m b a rg o , u n a n a liz a d o r s in tá c tic o d e b e rá p o d e r c o n s tr u i r el á r ­
bo l, p u e s d e o t r o m o d o , n o se p u e d e g a r a n tiz a r q u e la tr a d u c c ió n sea co rrecta.
2.4 ANALISIS SIN T A C T IC O 41

E n esta se c c ió n se in t r o d u c e u n m é to d o d e a n á lis is s in tá c tic o q u e p u e d e a p l i ­


c a rs e e n la c o n s t r u c c i ó n d e t r a d u c t o r e s d ir ig id o s p o r la s in ta x is . E n la s ig u ie n te
se c c ió n se p r e s e n ta u n p r o g r a m a c o m p le to en C q u e im p l a n t a el e s q u e m a d e t r a ­
d u c c ió n d e la figura 2 .1 3 . U n a p o sib ilid ad v iab le es u tiliz ar u n a h e r r a m ie n ta d e so ft­
w are p a r a g e n e ra r u n tr a d u c to r d ir e c ta m e n te a p a r tir d e u n e s q u e m a d e tra d u c c ió n .
P a ra la d escrip ció n d e esa h e rra m ie n ta , véase la sección 4.9 ; c o n ella se p u e d e i m ­
p la n ta r sin m o d ificació n el e s q u e m a d e tr a d u c c ió n d e la figura 2.13.
P a ra c u a lq u ie r g ra m á tic a , se p u e d e c o n s tr u ir u n a n a liz a d o r s in tá c tic o . S in e m ­
b a rg o , las g r a m á tic a s q u e se u s a n e n la p r á c tic a ti e n e n u n a f o r m a e s p e c ia l. P a ra
c u a l q u ie r g r a m á tic a in d e p e n d ie n te d e l c o n te x to h a y u n a n a liz a d o r s in tá c tic o q u e
t o m a c o m o m á x im o u n tie m p o d e 0 ( n 3) p a r a h a c e r el a n álisis d e u n a c a d e n a d e n
c o m p o n e n te s léxicos. P e ro u n tie m p o d e o rd e n c ú b ic o es d e m a s ia d o c a ro . D a d o u n
len g u aje d e p ro g ra m a c ió n , en general se p u e d e c o n s tru ir u n a g ra m á tic a q u e se p u e d a
a n a liz a r s in tá c tic a m e n te c o n ra p id e z . L o s a lg o ritm o s lin e a le s s o n s u fic ie n te s p a ra
h a c e r el a n álisis s in tá c tic o d e casi to d o s los len g u ajes q u e su rg en e n la p rá c tic a . Los
a n a liz a d o re s sin tá c tic o s d e len g u ajes d e p ro g ra m a c ió n su elen h a c e r u n e x a m e n s im ­
ple de iz q u ie rd a a d e r e c h a d e la e n tr a d a , v ie n d o u n c o m p o n e n te léxico a la vez.
La m a y o ría d e los m é to d o s d e a n álisis s in tá c tic o e s tá n c o m p r e n d id o s e n d o s c la ­
ses. lla m a d a s m é to d o s descendente y ascendente. E stos té r m in o s h a c e n referen cia al
o rd e n en q u e se c o n s tru y e n los n o d o s del á rb o l d e a n álisis s in tá c tic o . E n el p rim e ro ,
la c o n s tru c c ió n se in icia en la raíz y a v a n z a h acia las hojas, m ie n tr a s q u e en el se­
g u n d o . la c o n s tru c c ió n se in icia e n las h o ja s y a v a n z a h a c ia la raíz. L a p o p u la rid a d
d e los a n a liz a d o re s s in tá c tic o s d e s c e n d e n te s se d e b e al h e c h o d e p o d e r c o n s tr u ir m a ­
n u a lm e n te a n a liz a d o re s s in tá c tic o s efic ien te s c o n m a y o r facilidad, u tiliz a n d o m é to ­
d o s d escen d en tes. S in e m b a rg o , el a n álisis s in tá c tic o a s c e n d e n te p u e d e m a n e ja r u n a
clase m a y o r d e g ra m á tic a s y e s q u e m a s d e tra d u c c ió n , d e m o d o q u e las h e rra m ie n ta s
d e so ftw a re p a ra g e n e r a r a n a liz a d o r e s s in tá c tic o s d ir e c ta m e n te a p a r ti r d e la s g ra ­
m á tic a s tie n d e n a u tiliz a r m é to d o s a scen d en tes.

A n á lis is s in tá c tic o d e s c e n d e n te

Se p re se n ta el análisis s in tá c tic o d e s c e n d e n te c o n s id e r a n d o u n a g ra m á tic a a d e c u a d a


p a r a esta clase d e m é to d o . M á s a d e la n te , e n esta sección, se c o n s id e ra la c o n s tr u c ­
c ió n d e a n a liz a d o r e s s in tá c tic o s d e s c e n d e n te s e n g en eral. L a sig u ie n te g ra m á tic a
g en era u n s u b c o n ju n to d e los tip o s d e Pascal. Se u tiliza el c o m p o n e n te léxico pun-
to p u n to p a ra e n fa tiz a r q u e la se c u e n c ia d e c a ra c te re s se tra ta c o m o u n a u n id a d .

tipo -> sim p le


t id
array [ sim p le ] o f tipo
sim p le -* in te g e r (2.8)
char
n ú m p u n to p u n to núm

L a c o n s tr u c c ió n d e s c e n d e n te d e u n á rb o l d e a n á lis is s in tá c tic o se h a c e e m p e ­
z a n d o p o r la ra íz , e t iq u e ta d a c o n el n o te r m in a l in icial, y r e a liz a n d o d e f o r m a r e ­
p e tid a los d o s p a so s sig u ie n tes (véase u n e je m p lo en la Fig. 2.5).
42 U N C O M PIL A D O R SENCILLO D L U N A PASADA

(a ) tipo

tipo
(b)
/ \
arra> sim ple tipo

le) arra\ tipo

num puntopunto núm

(d) arra) tipo

num puntopunto núm \ im p le

J*rra> ( sim ple J of tipo


(c) x " I \ I
núm puntopunto núm sim p le

¡nteger

l i g . 2.15. Pasos en la construcción descendente d e u n árbol d e análisis sintáctico.

1. En el n o d o n. e tiq u e ta d o c o n el n o te rm in a l A , selecciónese u n a d e las p r o d u c ­


cio n es p a r a A y c o n s tru y a s e los h ijo s d e n p a ra los s ím b o lo s del la d o d e r e c h o de
la p ro d u c c ió n .

2. E n c u é n tre s e el sig u ie n te n o d o e n el q u e h a d e c o n s tru irs e u n s u b á rb o l.

P a ra a lg u n a s g ra m á tic a s, los p a so s a n te r io r e s se a p lic a n d u r a n te u n e x a m e n sencillo,


d e iz q u ie rd a a d e re c h a , d e la c a d e n a d e e n tr a d a . M u c h a s veces, el c o m p o n e n te lé­
xico e n c u rs o a n a liz a d o e n la e n tr a d a se d e n o m in a s ím b o lo d e preanálisis. Inicial-
m e n te . el s ím b o lo d e p re a n á lis is es el p r im e r o , es d e c ir, el c o m p o n e n t e léx ico si­
tu a d o m á s a la iz q u ie rd a d e la c a d e n a d e e n tr a d a . L a figura 2 .1 6 ¡lustra el análisis
s in tá c tic o d e la cad e n a

array [ núm p u n top u n to n ú m ] o f in teger

In ic ia lm e n te , el c o m p o n e n te léxico array es el s ím b o lo d e p re a n á lisis y la p a rte co ­


n o cid a del árb o l d e a n álisis s in tá c tic o co n siste en la raíz, e tiq u e ta d a c o n el n o te r­
m in a l inicial tipo en la figura 2.1 6 (a). El o b je tiv o es c o n s tr u ir el resto d e l á rb o l d e
2.4 ANALISIS SIN T A C T IC O 43

A rbol de
tipo
A n á l is is

(a)
S in t á c t ic o t
a rr a y [ núm puntopunto núm 1 of integer
Entrada ^

t ip o
A r bo l di

A n a u s ,s array [ s im p le ] of t ip o
S in t á c t ic o |
(b)
a rr a y ( núm puntopunto núm 1 «f integer
En t r a d a ^

t ip o
A r b o i di

A n á u s ,s a rr a y " ( s im p le ) of t ip o
S in t á c t ic o
t
(c)
núm puntopunto núm 1 »f integer
En t r a d a a rr a y ‘

F ig . 2 .1 6 . Análisis sintáctico descendente d u ra n te el ex am en d e la e n tra d a d e izquierda


a derecha.

a n álisis s in tá c tic o d e m o d o q u e la c a d e n a g e n e ra d a p o r él c o n c u e r d e c o n la c a d e n a
d e e n tra d a .
P a ra q u e o c u r r a u n a c o n c o rd a n c ia , el n o te rm in a l tipo d e la figura 2 . 16(a) d e b e
d e riv a r u n a c a d e n a q u e e m p ie c e c o n el s ím b o lo d e p rcan álisis a r r a y . E n la g r a m á ­
tica (2.8) h a y e x a c ta m e n te u n a p ro d u c c ió n p a r a tipo q u e d e riv a tal c a d e n a , p o r lo
q u e se elige, y se c o n s tru y e n los h ijo s d e la raíz e tiq u e ta d o s c o n los s ím b o lo s d e l lado
d e re c h o d e la p ro d u c c ió n .
C a d a u n a d e las tres im ág en es d e la figura 2 .1 6 tie n e flechas q u e in d ic a n el s ím ­
b o lo d e p rean álisis d e la e n tr a d a y el n o d o q u e se está c o n s id e ra n d o . C u a n d o se han
c o n s tr u i d o los h ijo s d e u n n o d o , d e s p u é s se c o n s id e r a el h ijo q u e está m á s a la iz­
q u ie rd a . E n la figura 2.16(b), se h a n c o n s tr u id o los h ijo s d e la raíz, y se está co n si­
d e r a n d o el h ijo s itu a d o m á s a la iz q u ie rd a , e tiq u e ta d o c o n a r r a y .
C u a n d o el n o d o q u e se está c o n s id e r a n d o e n el árb o l d e a n álisis s in tá c tic o es el
d e u n te rm in a l y el te rm in a l c o n c u e r d a c o n el s ím b o lo d e prcanálisis, se a v a n z a en
el á rb o l d e a n álisis s in tá c tic o y e n la e n tra d a . El sig u ie n te c o m p o n e n te léxico d e la
e n tr a d a se c o n v ie rte e n el n u e v o s ím b o lo d e p re a n á lisis y se c o n s id e ra el siguiente
h ijo del árb o l d e a n álisis sin tá ctic o . En la fig u ra 2.16(c), la flecha d e l árb o l d e a n á ­
lisis sintáctico av a n z a hasta el siguiente h ijo d e la raíz y la flecha d e la e n tra d a av a n z a
44 U N C O M PILA D O R SENCILLO DE U N A PASADA

h asta el sig u ie n te c o m p o n e n te léxico [. D e s p u é s del sigu ien te a v a n c e , la flecha del


árb o l d e a n álisis s in tá c tic o a p u n t a r á al h ijo e tiq u e ta d o c o n el n o te rm in a l sim ple.
C u a n d o se c o n s id e ra u n n o d o e tiq u e ta d o c o n u n n o te rm in a l, se re p ite el p ro c e s o d e
selec cio n ar u n a p ro d u c c ió n p a r a el n o te rm in a l.
E n general, la selección d e u n a p ro d u c c ió n p a r a u n n o te rm in a l p u e d e im p lic a r
u n p ro c e s o d e p r u e b a y e rro r; e s to es, se p u e d e p r o b a r c o n u n a p ro d u c c ió n y re tro ­
c e d e r p a r a h a c e r el in te n to c o n o tr a p ro d u c c ió n si la p r im e ra resulta in a d e c u a d a .
U n a p ro d u c c ió n es in a d e c u a d a c u a n d o , d esp u és d e u sa r las p ro d u ccio n es, n o se pued e
c o m p le ta r el árb o l p a r a q u e c o n c u c r d e c o n la c a d e n a d e e n tra d a . S in e m b a rg o , hay
u n c a so d e especial im p o rta n c ia , lla m a d o a n a liz a d o r s in tá c tic o p re d ic tiv o , en el q u e
n o h a y retroceso.

A n á lis is s in tá c tic o p red ictivo

El análisis sintáctico descendente recursivo es u n m é to d o d e s c e n d e n te en el q u e se


e je c u ta u n c o n j u n t o d e p r o c e d im ie n to s re c u rs iv o s p a r a p ro c e s a r la e n tra d a . A cada
n o te rm in a l d e u n a g ra m á tic a se a s o c ia u n p r o c e d im ie n to . A q u í, se c o n s id e ra u n a
fo rm a especial d e a n álisis s in tá c tic o d e s c e n d e n te recu rsiv o , lla m a d o a n álisis sin tá c ­
tico p red ic tiv o . e n el q u e el s ím b o lo de p rean álisis d e te r m in a sin a m b ig ü e d a d el p ro ­
c e d im ie n to selec cio n ad o p a r a c a d a n o te rm in a l. La se c u e n c ia de p r o c e d im ie n to s lla­
m a d o s e n el p r o c e s a m ie n to d e la e n tr a d a d e fin e im p líc ita m e n te u n á rb o l d e análisis
s in tá c tic o p a r a la e n tra d a .
El a n a liz a d o r sintáctico p red ic tiv o d e la figura 2.17 co n sta d e p ro c e d im ie n to s para
los n o te rm in a le s tipo y sim p le d e la g ra m á tic a (2 .8 ) y u n p r o c e d im ie n to a d ic io n a l.
¡tarea. Se usa parea p a r a s im p lific a r el c ó d ig o d e tipo y sim p le ; si su a r g u m e n to t
c o n c u e r d a c o n el s ím b o lo d e prean álisis, a v a n z a h acia el sig u ie n te c o m p o n e n te lé­
xico d e e n tra d a . D e ese m o d o , parea m o d ific a a la v a ria b le preanálisis , q u e es el
c o m p o n e n te léx ico e n c u rs o q u e a c a b a d e e n tre g a r el a n álisis léxico.
El análisis s in tá c tic o c o m ie n z a c o n u n a lla m a d a al p r o c e d im ie n to del n o te r m i­
nal inicial tip o d e esta g ra m á tic a . C o n la m is m a e n t r a d a q u e en la figura 2.16, prea­
nálisis es in ic ia lm e n te el p r im e r c o m p o n e n t e léxico a r r a y . El p r o c e d i m ie n t o tipo
e je c u ta el código.

parea (arrav); parea ( '[ ') ; sim p le ; parea (']') parea (o f) ; tipo (2.9)

q u e c o r r e s p o n d e al la d o d e r e c h o d e la p ro d u c c ió n

tip o —> array [ sim p le ] o f tipo


O b sérv ese q u e c a d a te rm in a l del la d o d e r e c h o se p a re a c o n el s ím b o lo d e p reanálisis
y q u e c a d a n o te rm in a l d e la d e r e c h a p ro p o r c io n a u n a lla m a d a a su p r o c e d im ie n to .
C o n la e n tr a d a d e la fig u ra 2 .1 6 , d e s p u é s d e h a b e r c o n c o r d a n c ia e n tr e los c o m ­
p o n e n te s léxicos array y [, el s ím b o lo d e p rean álisis es n ú m . E n este p u n t o se lla m a
al p r o c e d im ie n to sim ple y se e je c u ta el c ó d ig o d e su c u e rp o .

parea (n ú m ); parea (p u n top u n to); parea (núm )


El s ím b o lo d e p rean álisis g u ía la selección d e la p ro d u c c ió n q u e se d e se a utilizar.
Si el la d o d e r e c h o d e u n a p ro d u c c ió n e m p ie z a c o n un c o m p o n e n te léxico, e n to n c e s
la p ro d u c c ió n se u s a c u a n d o el s ím b o lo d e p re a n á lisis c o in c id e c o n el c o m p o n e n te
2.4 ANALISIS SIN T A C T IC O 45

procedure parea (/: complex):


begin
¡f preanálisis = / then
preanálisis : = sigcomplex
else pfro/
end;

procedure tipo:
begin
if preanálisis is in { integer, ch ar, núm } then
simple
else if preanálisis = 'T' then begin
parea ('t'): parea (id)
end
else if preanálisis = array then begin
parea (array): parea ('['): simple: parea (']'): parea (of): tipo
end
else error
end:

procedure simple,;
begin
if preanálisis = integer then
parea (integer)
else if preanálisis = c h a r then
parea (char)
else if preanálisis = núm then begin
parea (núm): parea (puntopunto): parea (núm)
end
else errar
end:

Fig. 2.17. Seudocódigo d e un analizador sintáctico predictivo.

léxico. A h o ra , c o n sid é re se u n la d o d e r e c h o q u e e m p ie c e c o n u n n o te rm in a l, c o m o
en el caso

tipo sim ple (2.10)


E sta p ro d u c c ió n se e m p le a c u a n d o el s ím b o lo d e p re a n á lisis se p u e d e g e n e ra r a p a r­
tir d e sim ple. P o r e je m p lo , d u r a n t e la e je c u c ió n d e l fra g m e n to d e c ó d ig o (2.9). s u ­
p ó n g ase q u e el s ím b o lo d e p re a n á lisis es in te g e r c u a n d o el c o n tro l llega a la lla m a d a
a p r o c e d im ie n to tipo. N o h a y n in g u n a p ro d u c c ió n p a r a tipo q u e c o m ie n c e c o n el
c o m p o n e n te léxico integer. Sin e m b a rg o , sí h a y u n a p ro d u c c ió n p a r a sim p le q u e co ­
m ie n z a c o n in teg er. d e m a n e r a q u e se usa la p ro d u c c ió n (2 .10) te n ie n d o e n c u e n ta
q u e tip o lla m a al p r o c e d im ie n to sim p le en el s ím b o lo d e p re a n á lisis integer.
El a n á lis is s in tá c tic o p r e d ic tiv o d e p e n d e d e la in f o r m a c ió n s o b re los p r im e r o s
s ím b o lo s q u e p u e d e n s e r g e n e r a d o s p o r el la d o d e r e c h o d e u n a p r o d u c c ió n . P a ra
46 U N CO M PILADO R SENCILLO D E U N A PASADA

precisar, sea a el la d o d e r e c h o d e u n a p ro d u c c ió n p a r a el n o te rm in a l A . S e d efin e


P R I M E R O ! a ) c o m o el c o n j u n t o d e c o m p o n e n te s léx ico s q u e o p e r e c o m o lo s p ri­
m e ro s s ím b o lo s d e u n a o m á s c a d e n a s g e n e ra d a s a p a r tir d e u . Si a es € o p u e d e
g e n e ra r € . e n to n c e s € ta m b ié n está e n P R I M E R O ( a ) 2. P o r e jem p lo ,

P R I M E R O ( sim p le ) = { in teger, c h a r . n ú m }
P R I M E R O ( t id ) = { f }
P R I M E R O (a rra y [ sim p le ] o f tipo ) = { array }

E n la p rá c tic a , m u c h o s la d o s d e r e c h o s d e u n a p ro d u c c ió n c o m ie n z a n c o n c o m p o ­
n e n te s léxicos, lo q u e sim p lific a la c o n s tru c c ió n d e c o n ju n to s P R I M E R O . E n la sec­
c ió n 4 .4 se d a u n a lg o ritm o p a r a c a lc u la r los c o n j u n to s P R I M E R O .
Se d e b e n c o n s id e ra r los c o n j u n to s P R I M E R O si h a y d o s p ro d u c c io n e s A -* a y
A - » ¡l. El a n álisis s in tá c tic o d e s c e n d e n te re c u rsiv o sin re tro c e so re q u ie re q u e P R I-
M E R O ( a ) y P R IM E R O ((i) se a n d is ju n to s . El s ím b o lo d e p re a n á lisis se p u e d e u sa r
e n to n c e s p a r a d e c id ir el tip o d e p r o d u c c ió n a u tiliz a r; si el s ím b o lo d e p re a n á lis is
e s tá e n P R I M E R O ( a ) . e n t o n c e s se u s a a . D e o t r o m o d o , si el s í m b o l o d e p r e ­
análisis está e n P R I M E R O (p ) . e n to n c e s se u s a p.

C u á n d o s e u sa n las p r o d u c c io n e s €

L as p ro d u c c io n e s c o n e del la d o d e r e c h o n e c e s ita n u n tr a ta m ie n to especial. El a n a ­


lizad o r sin tá ctic o d e s c e n d e n te rccu rsiv o usará u n a p ro d u c c ió n € p o r d efecto c u a n d o
n o se p u e d a a p lic a r o tr a p ro d u c c ió n . P o r e je m p lo , con sidérese:

prop -> b eg in propS-Opc end


p ro p s-o p c —* lista -p ro p s | €
D u r a n te el a n álisis s in tá c tic o d e p ro p s-o p c , si el s ím b o lo d e p rean álisis n o está
en P R 1M E R O ( listci-props). e n to n c e s se u s a la p ro d u c c ió n € . E sta elecció n es ju s to
la c o rre c ta si el s ím b o lo d e p re a n á lisis es end. C u a lq u ie r s ím b o lo d e p re a n á lisis d i­
feren te d e en d d a r á c o m o re s u lta d o u n e rro r, q u e se d e te c ta r á d u r a n te el a n álisis s in ­
tá c tic o d e prop.

D is e ñ o d e un a n a liz a d o r s in tá c tic o p red ictivo

U n a n a liza d o r sintáctico predictivo es u n p r o g r a m a q u e c o n s is te e n u n p r o c e d i­


m i e n to p a ra c a d a n o te rm in a l. C a d a p r o c e d im ie n to h a c e d o s cosas:

1. D e c id e la p r o d u c c ió n q u e u tiliz a rá a n a l iz a n d o el s ím b o lo d e p re a n á lisis. Si el
s ím b o lo d e p re a n á lisis está e n P R I M E R O (a ) . se usa la p ro d u c c ió n c o n la d o d e ­
re c h o a. Si hay u n c o n flic to e n tr e d o s la d o s d e re c h o s d e c u a lq u ie r s ím b o lo d e
preanálisis. e n to n c e s e n e s a g ra m á tic a n o se p u e d e e m p le a r este m é to d o d e a n á ­

2 Las producciones con € en el lado derecho complican la determinación de los primeros símbolos
generados por un no terminal. Por ejemplo, si el no terminal B deriva la cadena vacía y hay una
producción A -> BC\ entonces el primer símbolo generado por C puede ser también el primer sím­
bolo generado por A . Si ( ’ también puede generar € . entonces tanto PRIMERO (.4) como PRI­
MERO ( /iO contienen a c .
2.4 ANALISIS SIN T A C T IC O 47

lisis sin tá ctic o . Si el s ím b o lo d e p re a n á lisis n o está en el c o n j u n t o P R I M E R O d e


n in g ú n o tr o la d o d erech o , se u s a u n a p ro d u c c ió n c o n € e n el la d o d erech o .

2. El p r o c e d im ie n to usa u n a p ro d u c c ió n im ita n d o al la d o d e re c h o . U n n o te rm in a l
d a c o m o re s u lta d o u n a lla m a d a al p r o c e d im ie n to del n o te rm in a l, y u n c o m p o ­
n e n te léxico q u e c o in c id a c o n el s ím b o lo d e p rean álisis d a c o m o re s u lta d o q u e se
lea el sig u ie n te c o m p o n e n te léxico. Si el c o m p o n e n te léxico d e la p ro d u c c ió n no
c o in c id e en algún p u n t o c o n el s ím b o lo d e p re a n á lisis. se d e c la ra u n erro r. La
figura 2 .1 7 e s el re s u lta d o d e a p lic a r estas reglas a la g ra m á tic a (2.8).

Al igual q u e se c re a u n e s q u e m a d e tr a d u c c ió n e x te n d ie n d o u n a g ra m á tic a , se
p u e d e c re a r u n tr a d u c to r d irig id o p o r la s in ta x is e x te n d ie n d o u n a n a liz a d o r sin tá c ­
tic o p r e d ic tiv o . E n la s e c c ió n 5 .5 se d a u n a l g o r i t m o p a r a e s te p r o p ó s ito . L a si­
g u ie n te c o n s tru c c ió n lim ita d a e s su fic ie n te p o r el m o m e n to , p u e s los e s q u e m a s de
tr a d u c c ió n q u e se i m p l a n t a n e n este c a p ítu lo n o a s o c ia n a tr i b u to s a lo s n o te r m i­
nales:

1. C o n s tr ú v a s e u n a n a l iz a d o r s in tá c tic o p re d ic tiv o . ig n o r a n d o las a c c io n e s e n las


p ro d u ccio n es.

2. C ó p ie n s e las a c c io n e s d e l e s q u e m a d e tr a d u c c ió n e n el a n a liz a d o r s in tá c tic o . Si


u n a acció n a p a re c e d e s p u é s del s ím b o lo g ra m a tic a l X e n la p ro d u c c ió n p. e n t o n ­
c e s se c o p ia d e s p u é s del c ó d ig o q u e im p la n ta X. D e o t r o m o d o , si a p a re c e al p r in ­
c ip io d e la p ro d u c c ió n , e n to n c e s se c o p ia j u s t o a n te s d e l c ó d ig o q u e im p la n ta la
p ro d u c c ió n .

E n la sig u ie n te sección se c o n s tr u irá u n tr a d u c to r d e este tipo.

R ecu rsiv id a d p or la izquierda

Es p o sib le q u e u n a n a liz a d o r s in tá c tic o d e s c e n d e n te re c u rsiv o e n tre e n u n la z o (b u ­


cle) in d e fin id o . H ay u n p r o b le m a c o n p ro d u c c io n e s recu rsiv as p o r la iz q u ie rd a del
tip o

expr -> expr + térm ino

en la q u e el s ím b o lo s itu a d o m á s a la iz q u ie rd a del la d o d e r e c h o e s el m is m o q u e el
n o te rm in a l d e l lado iz q u ie rd o d e la p ro d u c c ió n . S u p ó n g a se q u e el p r o c e d im ie n to
p a ra expr d e c id e a p lic a r esta p ro d u c c ió n . El la d o d e r e c h o c o m ie n z a c o n expr , de
m o d o q u e el p r o c e d im ie n to p a r a e x p r se lla m a re c u rs iv a m e n te , y el a n a liz a d o r s in ­
táctico e n tr a e n u n lazo in d e fin id o . O b sérv ese q u e el s ím b o lo d e p re a n á lisis c a m b ia
sólo c u a n d o c o in c id e u n te rm in a l del la d o d e re c h o . C o m o la p ro d u c c ió n c o m ie n z a
c o n el n o te rm in a l expr. n o se realiza n in g ú n c a m b io e n la e n tr a d a e n tr e lla m a d a s
recu rsiv as, lo c u a l c a u sa el la z o infin ito .
R e e sc rib ie n d o la p ro d u c c ió n tra n sg re so ra . se p u e d e e lim in a r u n a p ro d u c c ió n re-
cu rsiv a p o r la iz q u ie rd a . C o n s id é re s e u n n o te rm in a l A c o n d o s p ro d u c c io n e s

A -+ A a | (3

d o n d e a y p son se cu en cias d e te rm in a le s y n o te rm in a le s q u e n o c o m ie n z a n c o n A.
48 U N C O M PIL A D O R SENCILLO D E U N A PASADA

A R

A R
i
I
~P « u u P a a u

(a) (b)

Fig. 2.18. F o rm as recursivas izquierda y derecha d e generar u n a cadena.

P o r e jem p lo , en

expr -> ex p r + térm ino | térm ino

A = expr, a = + térm ino . y (5 = térm ino .


El n o te rm in a l .4 es recursivo por la izquierda, p o r q u e la p ro d u c c ió n .4 —>A a
tie n e la p ro p ia A c o m o el s ím b o lo s itu a d o m á s a la iz q u ie rd a del la d o d e re c h o . La
a p licació n re p e tid a d e esta p ro d u c c ió n f o r m a u n a s e c u e n c ia d e s ím b o lo s a a la d e­
re c h a d e .4, c o m o en el caso d e la figura 2 . 18(a). C u a n d o fin a lm e n te se re e m p la z a A
p o r p , se tie n e u n a p seguida d e u n a s e c u e n c ia d e c e r o o m á s a.
El m is m o efecto se p u e d e lograr, c o m o en la figura 2 .1 8(b), re e sc rib ie n d o las p ro ­
d u c c io n e s p a r a A d e la fo rm a siguiente.

A P R
(2 .11)
R a R

A q u í, R es un te rm in a l n u e v o . La p ro d u c c ió n R a R es recursiva por la derecha ,


p o rq u e esta p ro d u c c ió n p a ra R tie n e al p r o p io R c o m o ú lt im o s ím b o lo del la d o d e ­
re c h o . L as p r o d u c c io n e s re c u rs iv a s p o r la d e r e c h a f o r m a n á rb o le s d e c r e c im ie n to
d e s c e n d e n te h acia la d e re c h a , c o m o e n la fig u ra 2 .l8 ( b ) . L o s á rb o le s d e c r e c im ie n ­
t o d e s c e n d e n te h acia la d e re c h a d ific u lta n la tr a d u c c ió n d e e x p re sio n e s q u e c o n t e n ­
gan o p e ra d o re s aso cia tiv o s a la iz q u ie rd a , c o m o el o p e r a d o r m enos. S in e m b a rg o , en
la sig u ie n te sección se ex p lic a rá ta m b ié n la m a n e r a d e o b te n e r la tr a d u c c ió n a p r o ­
p ia d a d e e x p re sio n e s a n o ta c ió n p o stfija m e d ia n te u n d is e h o c u id a d o s o del e s q u e m a
d e tra d u c c ió n , b a s a d o en u n a g ra m á tic a re c u rs iv a p o r la derecha.
E n el c a p ítu lo 4 se c o n s id e r a n f o r m a s m á s g e n e r a le s d e r e c u r s iv id a d p o r la iz­
q u ie rd a y se m u e s tra c ó m o se p u e d e e lim in a r d e u n a g ra m á tic a to d a recu rsiv id ad
p o r la izq u ierd a.
2.5 TRADUCTOR DE EXPRESIONES SIMPLES 49

2 .5 T R A D U C T O R D E E X P R E S I O N E S S I M P L E S

U tiliz a n d o la s té c n ic a s d e las tr e s s e c c io n e s a n te r io r e s , se c o n s tr u i r á a h o r a u n tr a ­
d u c t o r d irig id o a la sin tax is, en f o r m a d e p r o g r a m a o p e ra tiv o e n C , el c u a l tra d u c e
e x p resio n es a r itm é tic a s a la fo rm a po stfija. C o n o b je to d e c o n s e rv a r el p r o g r a m a in i­
cial m a n e ja b le m e n te p e q u e ñ o , se e m p ie z a c o n e x p re sio n e s c o m p u e s ta s d e d íg ito s se­
p a ra d o s p o r los signos m á s y m e n o s . El le n g u a je se a m p lía e n las d o s seccio n es si­
g u ien tes p a ra incluir n ú m e ro s , id en tificad ores y o tro s o p erad o res. T e n ie n d o en c u e n ta
q u e las ex p resio n es a p a re c e n c o m o u n a c o n stru c c ió n e n ta n to s lenguajes, vale la pen a
e s tu d ia r en d e ta lle su tra d u c c ió n .

expr -* expr + término {print ('+') }


expr - » expr - término { print }
expr —> término
término -> 0 { print ('0') }
término -* 1 { print (' 1') }

término -> 9 { prm t {'9') }

Fig. 2 .1 9 . Especificación inicial del trad u c to r infijo a postfijo.

A m e n u d o , u n e s q u e m a d e tr a d u c c ió n d irig id a a la s in ta x is p u e d e serv ir c o m o
especificación d e u n tra d u c to r. El e s q u e m a d e la figura 2 .1 9 (rep etid o d e la Fig. 2.13)
se usa c o m o d e fin ició n d e la tr a d u c c ió n q u e h a d e ejecu tarse. M u c h a s veces, se d a
el c a so d e te n e r q u e m o d if ic a r la g ra m á tic a s u b y a d e n te d e u n e s q u e m a d a d o an tes
d e p o d e r la a n a liz a r p o r u n a n a l iz a d o r s in tá c tic o p re d ic tiv o . E n p a r tic u la r , la g ra ­
m á tic a s u b y a c e n te al e s q u e m a d e la figura 2 .1 9 es re c u rsiv a p o r la iz q u ie rd a , y según
se e x p u s o e n la ú ltim a sección, u n a n a liz a d o r s in tá c tic o p re d ic tiv o n o p u e d e m a n e ­
j a r u n a g r a m á t i c a r e c u r s iv a p o r la iz q u ie r d a . E l i m i n a n d o la r e c u r s ió n p o r la iz ­
q u ie rd a . se p u e d e o b te n e r u n a g ra m á tic a a d e c u a d a p a ra ser u sa d a e n u n tr a d u c to r
d e s c e n d e n te re c u rsiv o p red ic tiv o .

S in t a x i s a b s tr a c ta y s in t a x is co n c r e ta

U n p u n t o d e p a rtid a útil p a r a c o n s id e r a r la tr a d u c c ió n d e u n a c a d e n a d e e n tr a d a es
u n árbol d e sin ta xis abstracta , d o n d e c a d a n o d o r e p re s e n ta u n o p e ra d o r, y los hijos
d e ese n o d o , los o p e r a n d o s . P o r c o n tr a s te , u n á rb o l d e a n á lis is s in tá c tic o se d e n o ­
m i n a árbol d e sin ta xis concreta, y la g ra m á tic a s u b y a c e n te , sin ta xis concreta del len-

/ \ 2

9 5

F ig. 2.20. A rbol de sintaxis para 9 - 5 + 2 .


50 U N C O M PIL A D O R SENCILLO DE U N A PASADA

g uaje. L os á rb o le s de sin ta x is a b s tra c ta , o s im p le m e n te árboles sintácticos difieren


d e los á rb o le s d e a n á lis is s in tá c tic o e n q u e las d is tin c io n e s sup erficiales d e fo rm a , sin
im p o r ta n c ia e n la tra d u c c ió n , n o a p a re c e n e n los á rb o le s sintáctico s.
P o r e je m p lo , el árb o l s in tá c tic o p a r a 9 - 5 + 2 se m u e s tr a e n la figura 2 .2 0 . D a d o
q u e + y - tie n e n el m is m o nivel d e p reced e n cia, y los o p e ra d o re s c o n igual nivel de
p reced en cia se ev alú an d e iz q u ie rd a a d erech a , el árb o l p re se n ta 9 - 5 a g ru p a d o c o m o
u n a s u b e x p re s ió n . H a c ie n d o u n a c o m p a r a c ió n d e la fig u ra 2 .2 0 c o n el c o r r e s p o n ­
d ie n te árb o l d e a n álisis s in tá c tic o d e la figura 2.2, se o b s e rv a q u e el á rb o l sin tá ctic o
aso cia u n o p e r a d o r c o n un n o d o in te rio r, y n o h a c e q u e el o p e r a d o r sea u n o d e los
hijos.
Es d eseab le q u e u n e s q u e m a d e tr a d u c c ió n se base e n u n a g ra m á tic a c u y o s á r ­
boles d e a n álisis s in tá c tic o se p a re z c a n al m á x im o a á rb o le s sin tá ctic o s. El a g ru p a ­
m ie n to d e s u b e x p re s io n e s h e c h o p o r la g ra m á tic a d e la figura 2 .1 9 es sim ila r a su
a g r u p a m ie n to e n á rb o le s sin tá ctic o s. D e s a fo r tu n a d a m e n te , la g ra m á tic a d e la figura
2 .1 9 e s recu rsiv a p o r la iz q u ie rd a , y p o r ta n to , n o e s a d e c u a d a p a r a el a n álisis s in ­
tá c tic o p re d ic tiv o . E n e sto , p a r e c e e x is tir u n a c o n tr a d ic c ió n ; p o r u n a p a rte , se n e ­
cesita u n a g ra m á tic a q u e facilite el a n álisis sin tá ctic o , y p o r o tr a , se p recisa u n a gra­
m á tic a ra d ic a lm e n te d istin ta q u e facilite la tra d u c c ió n . L a so lu ció n o b v ia es e lim in a r
la recu rsiv id ad p o r la iz q u ie rd a . S in e m b a rg o , esto h a d e h a c e rs e c o n c u id a d o , c o m o
se m u e s tra en el sig u ie n te e jem p lo .

E je m p lo 2 .9 . L a g ra m á tic a sigu ien te n o e s a p r o p ia d a p a r a tr a d u c ir e x p re sio n e s a la


fo rm a p ostfija, a u n q u e g en ere e x a c ta m e n te el m is m o len g u aje q u e la g ra m á tic a de
la figura 2 .1 9 y se p u e d a u sa r p a r a a n álisis s in tá c tic o d e s c e n d e n te o recursivo.

ex p r —>térm ino resto


resto —>+ ex p r | - e x p r | €
térm ino —>0 | 1 | - . . | 9

El p r o b le m a d e esta g ra m á tic a es q u e los o p e r a n d o s d e los o p e r a d o r e s g e n e ra d o s p o r


resto —> + expr y resto - * - ex p r n o re su lta n e v id e n te s a p a r tir d e las p ro d u ccio n es.
N in g u n a d e las sig u ie n tes eleccio n es p a r a f o r m a r la tr a d u c c ió n de resto.t a p a r tir de
la d e expr.t e s acep tab le:

r e s to -* - expr {resto.t || e x p r .t } (2 .12)


resto - ex p r { resto.t : = expr.t || (2.13)

(S ólo se m u e s tra la p ro d u c c ió n y la a c c ió n s e m á n tic a p a ra el o p e r a d o r m e n o s .) La


tr a d u c c ió n d e 9 - 5 e s 9 5 - . S in e m b a rg o , u tiliz a n d o la acció n d e (2.12), e n to n c e s el
signo m e n o s a p a re c e a n te s q u e expr.t y 9 - 5 q u e d a in c o rr e c ta m e n te e n la tra d u c c ió n
com o 9 -5 .
P o r o tr a p a rte , u s a n d o (2 .1 3 ) y la regla a n á lo g a p a r a el o p e r a d o r m á s . lo s o p e ­
ra d o re s se tra s la d a n d e m a n e r a c o n s is te n te al e x tr e m o d e r e c h o y 9 - 5 + 2 se tra d u c e
in c o rre c ta m e n te a 9 5 2 + - (la tr a d u c c ió n c o rre c ta es 9 5 - 2 + ) . □

A d a p ta c ió n d el e s q u e m a d e tradu cción

La técn ica p a r a la e lim in a c ió n d e la re c u rsiv id a d p o r la iz q u ie rd a e sb o z a d a e n la fi­


g u r a 2 .1 8 se p u e d e a p lic a r ta m b ié n a p ro d u c c io n e s q u e c o n te n g a n a c c io n e s s e m á n -
2.5 TRADUCTOR DE EXPRESIO NES SIM PLES 51

ticas. En la sección 5.5 se a m p lia la tra n s fo rm a c ió n p a ra te n e r e n c u e n t a a trib u to s


sin tetizad o s. La té c n ic a tra n s fo rm a las p ro d u c c io n e s A - > .1 u .1 \) | y en

A yR
R a R M
C u a n d o las accio n es s e m á n tic a s se in te rc a la n e n las p ro d u c c io n e s, se tra s la d a n j u n ­
to c o n la tr a n s f o r m a c ió n . A q u í. si se h a c e A = expr. a = + term in o { p rin t ('+ ') ¡.
p = - term in o {print{' -’) ) y y = térm in o , la tr a n s f o r m a c ió n a n te r io r p r o d u c e el
e s q u e m a d e tra d u c c ió n (2.14). L as p ro d u c c io n e s p a ra e x p r d e la figura 2 .1 9 se tra n s ­
f o r m a r o n en las p ro d u c c io n e s p a ra e x p r y p a ra el n u e v o n o te rm in a l resto d e (2.14).
Las p ro d u c c io n e s p a ra térm in o se re p ite n e n la figura 2.19. F íjese q u e la g ra m á tic a
s u b y a c e n te es d is tin ta d e la del e je m p lo 2.9. y la d iferen c ia h ace p o sib le la tr a d u c ­
ción q u e se desea.

expr térm in o resto


resto + térm in o { print ('+') ¡ resto - térm ino { print {'- ' ) } resto
térm ino 0 print (' 0') ¡
térm ino 1 print ( T ) } (2 .14)

térm ino -> 9 { p r im é 9 ')}


La figura 2.21 m u e stra c ó m o se tra d u c e 9 - 5 + 2 u tiliz a n d o la g ra m á tic a an te rio r.

expr

term ino

9
/\{ p rin t ('9 ') térm ino { print

5
/ \
( p rin t ( ' 5 ' ) } + térm ino {p rin t ( V ) ¡ resto

2
/\
{ p rin t m 1 t
I
Fig. 2.21. T raducción de 9 - 5 + 2 a 9 5 -2 + .

P r o c e d im ie n to s para l o s n o te r m in a le s expr, térm ino y resto

A h o ra se a p lic a u n tr a d u c to r e n C u tiliz a n d o el e s q u e m a d e tr a d u c c ió n d irig id a p o r


la sintax is (2 .1 4 ). L a esen cia del tr a d u c to r es el c ó d ig o e n C d e la figura 2 .2 2 p a r a las
fu n c io n e s e x p r , t é r m i n o y r e s t o . E sta s f u n c io n e s a p lic a n los c o rre s p o n d ie n te s
n o te rm in a le s d e (2.14).
L a fu n c ió n p a r e a , q u e se p re s e n ta m á s a d e la n te , es la c o n tr a p a r te e n C del có ­
digo d e la figura 2.17 p a r a p a r e a r u n c o m p o n e n te léx ico c o n el s ím b o lo d e p r e a n á ­
lisis y a v a n z a r p o r la e n tra d a . P u e s to q u e c a d a c o m p o n e n te léxico es u n so lo c a rá c ­
te r en este lenguaje, p a r e a p u e d e h acerse c o m p a r a n d o y le y e n d o caracteres.
52 U N C O M PIL A D O R SENCILLO DE U N A PASADA

expr()

(
término(); resto();

}
re sto ()

{
if ( p r e a n á l i s i s = = '+') {
parea ( V ) ; término(); p u t c h a r ('+'); resto ( ) ;
}
else if (preanálisis) » {
p a r e a ('-'); t é r m i n o ( ) ; p u t c h a r ('-'); resto ( ) ;

}
else ;

}
término()

(
if (i s d i g i t ( p r e a n á l i s i s ) ) {
p u t c h a r ( p r e a n á l i s i s ) ; p a r e a (p r e a n á l i s i s );

e l s e e r r o r ();

F ig . 2 .2 2 . F u n c io n e s para lo s n o te r m in a le s expr, resto y térm ino.

P a ra los lecto res q u e n o estén fa m ilia riz a d o s c o n el len g u aje d e p ro g ra m a c ió n ( \


se m e n c io n a n las p rin c ip a le s d ife re n c ia s e n tr e C y o tro s len g u ajes d e riv a d o s d e A L ­
G O L . c o m o Pascal, c o n f o r m e se e n c u e n tr e n u so s a las c a ra c te rís tic a s d e C. U n p ro ­
g ra m a e n C está c o n s titu id o p o r u n a se c u e n c ia d e d e fin ic io n e s d e fu n c io n e s, d o n d e
la e je c u c ió n c o m ie n z a en u n a fu n c ió n d is tin g u id a lla m a d a m a i n . L as d efin ic io n e s
d e fu n c io n e s n o se p u e d e n a n id a r . L o s p a ré n te sis q u e e n c ie rra n a los p a r á m e tr o s d e
u n a f u n c ió n s o n n e c e s a rio s , a u n q u e n o h a y a p a r á m e tr o s : p o r t a n t o , se e sc rib e
e x p r ( ). t é r m i n o ( ) y r e s t o (). L as f u n c io n e s se c o m u n i c a n p o r el p a so d e p a ­
r á m e t r o s “ p o r v a lo r" o p o r el a c c e s o a d a t o s g lo b a le s a t o d a s las f u n c io n e s . P o r
e je m p lo , las f u n c io n e s t é r m i n o ( ) y r e s t o ( ) rev isan e l s ím b o lo d e p re a n á lis is
u tiliz a n d o el id e n tific a d o r global p r e a n á l i s i s .
L o s len g u ajes C y Pascal u sa n los sig u ie n tes s ím b o lo s p a r a a sig n a c io n e s y p r u e ­
b a s de igualdad:

O peración C P ascal

asignación = : =

prueba d e igualdad — 37

prueba de desigualdad != O
2.5 T R A D U C T O R DE EXPRESIO NES SIM PLES 53

L as fu n c io n e s p a r a los n o te rm in a le s im ita n a los lados d e re c h o s d e las p r o d u c ­


ciones. P o r e je m p lo , la p ro d u c c ió n e x p r - » térm in o resto se a p lic a p a r a las lla m a d a s
a t é r m i n o ( ) y r e s t o ( ) en la fu n c ió n e x p r ( ) .
O tr o e je m p lo , la f u n c ió n r e s t o ( ) u tiliz a la p r im e ra p ro d u c c ió n p a r a resto en
(2 .1 4 ) si el s ím b o lo d e p re a n á lisis es u n sig n o m ás; u tiliza la s e g u n d a p ro d u c c ió n si
el s ím b o lo d e p re a n á lisis e s m e n o s , y u tiliz a la p ro d u c c ió n resto —► * p o r o m isió n .
La p r im e ra p ro d u c c ió n p a r a resto q u e d a im p la n ta d a p o r la p r im e r a p ro p o s ic ió n i f
d e la figura 2.22. Si el s ím b o lo d e p re a n á lisis es + . el sig n o m á s se p a rc a m e d ia n te la
lla m a d a p a r e a ( V ) . D esp u és d e la lla m a d a a t é r m i n o ( ) , la r u ti n a d e b ib lio te ca
e s tá n d a r d e C p u t c h a r ( V ) im p la n ta la acció n s e m á n tic a m e d ia n te la im p re sió n
d e u n c a rá c te r “ m á s" . C o m o la te rc e ra p ro d u c c ió n p a ra resto tie n e € c o m o lado
d e re c h o , el ú ltim o e l s e d c r e s t o ( ) n o h a c e n ad a.
L as d ie z p ro d u c c io n e s p a r a té r m in o g e n e r a n los diez dígitos. En la figura 2 .2 2 . la
r u tin a i s d i g i t p ru e b a si el s ím b o lo d e p re a n á lisis es u n dígito. Si el r e s u lta d o es
p o sitiv o , se im p r im e y se p a re a el díg ito ; d e o tr o m o d o , a p a re c e u n erro r. (O bsérvese
q u e p a r e a m o d ific a al s ím b o lo d e prean álisis. d e m o d o q u e la im p re sió n d e b e p r o ­
d u c irs e a n te s d e e m p a r e ja r el dígito.) A n te s d e m o s tra r u n p r o g r a m a c o m p le to , se
h a rá u n a tra n s fo rm a c ió n p a ra m e jo ra r la velo cid ad del c ó d ig o d e la figura 2.22.

O p tim a c ió n d el traductor

C ie rta s lla m a d a s recu rsivas se p u e d e n r e e m p la z a r p o r iteracio nes. C u a n d o la ú ltim a


p ro p o sic ió n e je c u ta d a e n el c u e r p o d e u n p r o c e d im ie n to es u n a lla m a d a re c u rsiv a al
m is m o p r o c e d im ie n to , se d ic e q u e la lla m a d a es recursiva por e l fin a l. P o r e je m p lo ,
las lla m a d a s de r e s t o ( ) al final d e la c u a r ta y s é p tim a líneas d e la fu n c ió n r e s t o ( )
s o n recu rsiv as p o r el final, p o r q u e el c o n tro l fluye h acia el final del c u e r p o d e la fu n ­
c ió n d e s p u é s d e c a d a u n a d e esas llam adas.
Se p u e d e im p r im ir m a y o r velo cid ad a u n p r o g r a m a r e e m p la z a n d o la recu rsió n
p o r el final c o n u n a c o n s tru c c ió n d e ite ra c ió n . P a r a u n p r o c e d im ie n to sin p a r á m e ­
tros. u n a lla m a d a recu rsiv a p o r el final s im p le m e n te se p u e d e r e e m p la z a r p o r u n
salto al in icio del p r o c e d im ie n to . El c ó d ig o d e r e s t o se p u e d e reescrib ir c o m o ;

resto()

{L: if (preanálisis == '+') {


p a r e a ('+'); término(); putchar (V); goto L;
}
else if (preanálisis == '-') (
parea('-'); término(); p u t c h a r ; goto L;

}
else ;

M ie n tr a s el s í m b o l o d e p r e a n á lis is s e a u n s ig n o m á s o m e n o s , el p r o c e d i m i e n t o
r e s t o p a rc a el signo, lla m a a t é r m i n o p a r a q u e p a re e u n d íg ito , y re p ite el p r o ­
ceso. A d v iértase q u e , c o m o p a r e a e lim in a el signo c a d a v ez q u e e s lla m a d o , este
lazo o c u rre sólo e n s e c u e n c ia s a lte r n a n te s d e signos y dígitos. Si se h a c e este c a m b io
54 U N C O M P I L A D O R SENCIL L O D E U N A PASADA

e n la figura 2.22, la ú n ic a lla m a d a q u e q u e d a d e r e s t o es d e sd e e x p r (véase la


linea 3). P o r ta n to , las d o s fu n c io n e s se p u e d e n in te g ra r e n u n a sola, c o m o e n la
figura 2 .2 3 . E n C , u n a p ro p o sic ió n prop se p u e d e e je c u ta r re p e tid a m e n te e sc rib ie n d o

while(l) prop

p o r q u e la c o n d ic ió n 1 s ie m p re e s v e rd a d e ra . Se p u e d e salir d e u n ciclo e je c u ta n d o
u n a p ro p o sic ió n d e in te r r u p c ió n d e ciclo, la p ro p o s ic ió n b r e a k . L a fo rm a estilizada
del c ó d ig o d e la figura 2.23 p e rm ite a ñ a d i r o p o r t u n a m e n t e o tro s o p erad o res.

e x p r ()
{
t i r m i n o ( );
while(l)
if ( p r e a n á l i s i s = '+ ') {
p a r e a ( V ) ; té rm in o (); p u tc h a r(V );
)
e lse if (p re a n á lis is = (
p a re a ( '- ') ; té r m in o ( ) ; p u tc h a r ( '- ') ;
}
e lse b reak ;
)

Fig. 2.23. R eem plazo de las funciones e x p r y r e s t o d e la figura 2.22.

El program a completo

El p ro g ra m a c o m p le to en C p a ra el tr a d u c to r se m u e s tr a e n la figura 2.24. L a p ri­


m e ra linea, q u e c o m ie n z a c o n # i n c l u d e , ca rg a < c t y p e . h > , q u e e s u n a rc h iv o de
ru tin a s e s tá n d a r q u e c o n tie n e el c ó d ig o del p re d ic a d o i s d i g i t .
L o s c o m p o n e n te s léxicos, q u e c o n s is te n e n c a ra c te re s sim p les, los p ro p o r c io n a
la r u tin a d e b ib lio te ca e s tá n d a r g e t c h a r , q u e lee el sig u ie n te c a r á c te r del a rc h iv o
d e e n tra d a . S in e m b a r g o , p r e a n á l i s i s está d e c la r a d o c o m o e n te r o e n la lín ea 2
d e la figura 2.24 p a r a p re v e r los c o m p o n e n te s léxicos a d icio n ales, q u e n o s o n c a ra c ­
teres sim p les y q u e se in tro d u c irá n e n se c c io n e s posterio res. Y a q u e p r e a n á l i s i s
está d e c la r a d o fu era d e c u a lq u ie r a d e las fu n c io n e s, es global a c u a le s q u ie ra fu n c io ­
nes q u e se d e fin a n d e s p u é s d e la lín ea 2 d e la fig u ra 2.24.
La fu n ció n p a r e a revisa c o m p o n e n te s léxicos; lee el sig u ie n te c o m p o n e n te lé­
x ic o d e la e n tr a d a si el s ím b o lo d e p re a n á lisis c o n c u e r d a , y lla m a a la r u ti n a d e e rro r
e n o t r o caso.
L a f u n c ió n e r r o r u tiliz a la f u n c ió n d e b ib lio te c a e s t á n d a r p r i n t f p a r a i m ­
p r im ir el m e n s a je " e r r o r d e s i n t a x i s " , y d e s p u é s t e r m i n a la e je c u c ió n m e ­
d ia n te la lla m a d a e x i t ( 1 ) a o tr a fu n c ió n d e b ib lio te c a e stá n d a r.

2.6 A N A L IS IS L E X IC O
A h o ra se p u e d e a ñ a d i r al tr a d u c to r d e la secció n a n te r io r u n a n a liz a d o r léxico q u e
lea y c o n v ie rta la e n tr a d a e n u n a c a d e n a d e c o m p o n e n te s léxicos p a r a el a n a liz a d o r
sin tá ctic o . R e c u é rd e se d e la d e fin ició n d e u n a g ra m á tic a (Sec. 2.2 ) q u e las frases d e
2.6 ANALISIS LEXICO 55

#include < ctype.h> /* carga e l arch iv o que co n tien e al


predicado isdigit */
int preanálisis;

main()

<
preanálisis = getchar();
expr();
p u t c h a r ('\n'); /* a g r e g a un c a r á c t e r de l í n e a nueva a l final */
)
expr()
{
t é r m i n o ()
w hile(l)
if ( p r e a n á l i s i s == V ) (
p are a (V ); térm ino(); putchar ( V ) ;

}
else if (preanálisis = |
p a r e a ( ’- ' ) ; térm ino(); p u tc h a r ('-');
}
else break;

}
térm ino()
!
if ( i s d i g i t ( p r e a n á l i s i s )) {
p u t c h a r (p r e a n á l i s i s );
parea(preanálisis);
}
else e r r o r ();
)
parea(t)
int t;
(
if (preanálisis — t)
preanálisis = getchar();
else error();
}
e r r o r ()
{
p r in tf ("error de s i n t a x i s \ n " ); /* imprime m en saje de e r r o r */
exit(l); /* y después se detiene */
)

Fig. 2.24. P ro g ram a en C para tra d u c ir un a expresión d e la fo rm a infija a la form a


postfija.
56 l \ C O M PIL A D O R SENCILLO D E U N A PASADA

u n len g u aje c o n s ta n d e u n a c a d e n a d e c o m p o n e n te s léxicos. U n a se c u e n c ia d e c a ­


ra c te re s d e e n tr a d a q u e c o m p r e n d a un so lo c o m p o n e n te léxico se lla m a lex em a. U n
a n a liz a d o r léxico p u e d e aislar u n a n a liz a d o r s in tá c tic o d e la re p re s e n ta c ió n e n lexe-
m a s d e los c o m p o n e n te s léxicos. Se e m p ie z a h a c ie n d o u n a lista d e a lg u n a s d e las
fu n c io n e s p a ra q u e las realice u n a n a liz a d o r léxico.

E lim in a ció n d e e s p a c io s en b la n co y c o m e n ta r io s

El tr a d u c to r d e e x p re sio n e s d e la secció n a n te r io r r e c o n o c e to d o s los c a ra c te re s d e la


e n tr a d a , d e m o d o q u e los c a ra c te re s e x tra ñ o s, c o m o los e sp a c io s e n b la n co , h a rá n
q u e falle. M u c h o s len g u ajes p e rm ite n q u e a p a r e z c a n “esp acio s e n b la n c o ” (c a ra c te ­
res en b lanco, c a ra c te re s T A B y d e n u e v a lín ea) e n tr e los c o m p o n e n te s léxicos. L o s
c o m e n ta r io s ta m b ié n p u e d e n n o ser c o n s id e ra d o s p o r el a n a liz a d o r s in tá c tic o y el
tr a d u c to r, p o r ta n to ta m b ié n se p u e d e n t r a t a r c o m o esp acio s en b la n co .
Si el a n a liz a d o r léx ico e l im i n a los e s p a c io s e n b la n c o , el a n a l iz a d o r s in tá c tic o
n u n c a te n d r á q u e c o n s id e r a r lo s . L a a lte r n a tiv a d e m o d if ic a r la g r a m á tic a p a r a in ­
c o r p o r a r los esp acio s en b la n c o d e n t r o d e la situ a c ió n n o es ta n fácil d e im p la n ta r.

C o n sta n te s

E n c u a lq u ie r m o m e n t o q u e a p a r e c e u n d íg ito so lo e n u n a e x p r e s ió n , p a re c e r a z o ­
nable p o n e r u n a c o n s ta n te e n te r a a rb itra ria en su lugar. C o m o u n a c o n s ta n te e n te ra
es u n a se c u e n c ia d e dígitos, p u e d e n a d m itirs e c o n s ta n te s e n te ra s a ñ a d i e n d o p r o d u c ­
c io n e s a la g ra m á tic a d e las e x p resio n es o c r e a n d o u n c o m p o n e n te léx ico p a r a tales
c o n s ta n te s . La ta re a d e a g ru p a r d ígito s p a r a f o r m a r e n te ro s se le asigna, p o r lo ge­
n eral. a u n a n a liz a d o r léxico, p o r q u e los n ú m e r o s se p u e d e n tr a ta r c o m o u n id a d e s
sim p le s d u r a n t e la tra d u c c ió n .
Sea n ú m el c o m p o n e n te léxico q u e re p re s e n ta u n e n te ro . C u a n d o u n a secu en cia
d e d íg ito s a p a re c e en la c a d e n a d e e n tra d a , el a n a liz a d o r léxico p a s a rá n ú m al a n a ­
liz a d o r s in tá c tic o . El v a lo r d e l e n t e r o se p a s a r á c o m o a t r i b u t o del c o m p o n e n t e lé­
xico núm . L ó g ic a m e n te , el a n a liz a d o r léx ico p a sa al c o m p o n e n te léxico y el a trib u to
al a n a liz a d o r sin tá ctic o . Al e scrib ir u n c o m p o n e n te léxico y su a tr ib u to c o m o u n a
tu p ia e n c e r r a d a e n tr e < > , la e n tr a d a

31 + 2 8 + 59

se tr a n s f o r m a e n la se c u e n c ia d e tu p ias

< n ú m . 31 > < + . > < n ú m . 28 > < + , > < n ú m . 59 >

El c o m p o n e n te léxico + n o tie n e a trib u to s . L o s s e g u n d o s c o m p o n e n te s d e las tupias,


los a trib u to s , n o d e s e m p e ñ a n p a p e l a lg u n o d u r a n te el a n álisis s in tá c tic o , p e r o son
n ecesario s en la tra d u c c ió n .

R e c o n o c im ie n to d e ¡d en tifica d o re s y p a la b r a s cla v e

Los len g u ajes utilizan id e n tific a d o re s c o m o n o m b r e s d e variables, m a tric e s, fu n c io ­


nes y sim ilares. A m e n u d o , u n a g ra m á tic a p a ra u n len g u aje tra ta a u n id e n tific a d o r
c o m o u n c o m p o n e n te léxico. U n a n a liz a d o r b a s a d o en esta g ra m á tic a esp era ver el
2.6 ANALISIS L E X IC O 57

m is m o c o m p o n e n te léxico, p o r e je m p lo , id. c a d a v e / q u e un id e n tific a d o r a p a re z c a


e n la e n tra d a . P o r e je m p lo , la e n tra d a

c u e n ta = c u e n ta + in c re m e n to ; (2.15)

seria c o n v e rtid a p o r el a n a liz a d o r léxico e n la c a d e n a d e c o m p o n e n te s léxicos

id = id + i d ; (2 .16)

Esta c a d e n a d e c o m p o n e n te s léxicos se u tiliza e n el a n álisis sintáctico .


C u a n d o se c o n s id e ra el análisis léx ico d e la lín e a d e e n tr a d a ( 2 . 15). es útil d is tin ­
g u ir e n tre el c o m p o n e n te léxico id y los le x em as c u e n t a e i n c r e m e n t o aso ciad o s
c o n los c aso s d e este c o m p o n e n te léxico. El tr a d u c to r n ecesita s a b e r q u e el lex em a
c u e n t a fo rm a los d o s p r im e r o s c aso s d e id en (2 .1 6 ) y q u e el lex em a i n c r e m e n t o
fo rm a el te rc e r c a so d e id.
C u a n d o en la e n tr a d a a p a re c e u n le x e m a q u e fo rm a u n id e n tific a d o r. se n ecesita
algún m e c a n is m o p a ra d e t e r m in a r si el le x e m a a p a re c ió a n te s. P a ra tal m e c a n is m o
se usa u n a ta b la d e sím b o lo s, c o m o y a se m e n c io n ó e n el c a p ítu lo I. El le x e m a se
a lm a c e n a en la ta b la de s ím b o lo s y un a p u n t a d o r a esa e n tr a d a d e la ta b la d e s ím ­
b o lo s se c o n v ie rte en u n a trib u to del c o m p o n e n te léx ico id.
M u c h o s len g u ajes utilizan c a d e n a s d e c a ra c te re s fijas, c o m o b e g i n . e n d . i f . y
o tra s m á s. c o m o signos d e p u n tu a c ió n o p a r a id e n tific a r c ie rta s c o n s tru c c io n e s . Es­
ta s c a d e n a s d e caracteres, lla m a d a s palabras clave, su elen satisfacer las reglas para
f o r m a r id en tificad o res. p o r lo q u e se n ecesita u n m e c a n is m o p a ra d e c id ir c u á n d o u n
lexem a fo rm a u n a p a la b ra c lav e y c u á n d o fo rm a u n id e n tific a d o r. El p r o b le m a re­
su lta m á s fácil d e resolver si las p a la b ra s clave s o n reservadas, es d ecir, si n o se p u e ­
d e n u sa r c o m o id en tificad o res. E n to n c e s , u n a c a d e n a d e c a ra c te re s f o r m a u n iden-
tific a d o r sólo si n o es u n a p a la b ra clave.
El p ro b le m a del a is la m ie n to d e los c o m p o n e n te s léxicos ta m b ié n surge si a p a r e ­
cen los m is m o s c a ra c te re s en los le x e m a s d e m á s d e u n c o m p o n e n te léxico, c o m o
en <. <= y o e n Pascal. E n el c a p ítu lo 3 se e s tu d ia n té c n ic a s efic ien te s d e re c o n o c i­
m ie n to d e tales c o m p o n e n te s léxicos.

In terfaz con e l a n a liz a d o r lé x ic o

C u a n d o e n tr e el a n a liz a d o r s in tá c tic o y la c a d e n a d e e n tr a d a se in se rta u n a n a liz a ­


d o r lé x ico , é s te in t e r a c tú a c o n lo s d o s c o m o se in d i c a e n la fig u ra 2 .2 5 . L ee los
carac teres d e la e n tra d a , los a g ru p a e n le x em as y p a sa los c o m p o n e n te s léxicos fo r­
m a d o s p o r los lex em as, j u n t o c o n los v alo res d e s u s a trib u to s , a las e ta p a s p o s te rio ­
res d e l c o m p ila d o r . E n a lg u n a s s itu a c io n e s , el a n a liz a d o r léx ico tie n e q u e le er a l­
g u n o s carac teres p o r a d e la n ta d o a n te s d e p o d e r d e c id ir q u é c o m p o n e n te léxico va a
d ev o lv er al a n a liz a d o r sin tá ctic o . P o r e je m p lo , u n a n a liz a d o r léxico en P ascal tiene
q u e leer m ás a d e la n te d e s p u é s de ver el c a r á c te r >. Si el sig u ie n te c a rá c te r es =, e n ­
to n c e s la se c u e n c ia d e c a ra c te re s >= e s el le x e m a q u e fo rm a el c o m p o n e n te léxico
p a r a el o p e r a d o r “ m a y o r o igual q u e " . D e o t r o m o d o . > es el le x e m a q u e fo rm a el
o p e r a d o r “ m a y o r q u e ”, y el a n a liz a d o r léxico h a le íd o u n c a r á c te r d e m á s. El c a rá c ­
te r a d ic io n a l tie n e q u e d e v o lv e rse a la e n t r a d a , p o r q u e p u e d e s e r el in ic io del s i­
g u ie n te le x e m a d e la e n tra d a .
58 U N C O M PIL A D O R SENCILLO D E U N A PASADA

|ee p asa el

carácter

Fig. 2.25. Inserción de u n an alizad o r léxico e n tre la en trad a y el analizad or sintáctico.

El a n a liz a d o r léx ico y el a n a l iz a d o r s in tá c tic o f o r m a n u n p a r productor-consu­


m idor. El a n a liz a d o r léxico p r o d u c e c o m p o n e n te s léxicos y el a n a liz a d o r s in tá c tic o
los c o n s u m e . L o s c o m p o n e n te s léx ico s p r o d u c id o s se p u e d e n c o n s e r v a r e n u n buffer
h asta s e r c o n s u m id o s . L a in te r a c c ió n e n tr e los d o s só lo está r e s tr in g id a p o r el t a ­
m a ñ o del buffer, p u e s to q u e el a n a liz a d o r léxico n o p u e d e a v a n z a r c u a n d o el buffer
está llen o y el a n a liz a d o r s in tá c tic o n o p u e d e p ro s e g u ir c u a n d o el buffer está vacío.
P o r lo g en eral, el buffer c o n tie n e sólo u n c o m p o n e n te léxico. E n este caso , la in te ­
racció n se p u e d e a p lic a r s im p le m e n te h a c ie n d o q u e el a n a liz a d o r léxico sea u n p ro ­
c e d im ie n to lla m a d o p o r el a n a liz a d o r sin tá ctic o , q u e d e v u e lv a c o m p o n e n te s léxicos
c u a n d o se le p id a n .
La a p lic a c ió n d e la le c tu ra y d e v o lu c ió n d e c a ra c te re s suele h acerse e s ta b le c ie n d o
u n buffer d e e n tra d a . U n b lo q u e d e c a ra c te re s se lee al buffer d e u n a vez; u n a p u n ­
t a d o r s e ñ a la la p o rc ió n d e la e n tr a d a ya a n a liz a d a . L a o p e r a c ió n d e d e v o lu c ió n de
c a rá c te r se im p la n ta m o v ie n d o h acia a tr á s el a p u n ta d o r . T a m b ié n p u e d e s e r n e c e ­
sario te n e r q u e g u a r d a r los c a ra c te re s d e la e n t r a d a p a ra el in fo rm e d e erro res, p u e s
hay q u e d a r a lg u n a in d icació n d e d ó n d e se p r o d u jo el e r r o r e n el te x to d e e n tra d a .
A u n q u e só lo sea p o r ra z o n e s d e eficiencia, está ju s tif ic a d o el m a n e jo del buffer para
los c a ra c te re s d e e n tr a d a . L a e x tra c c ió n d e u n b lo q u e d e c a ra c te re s su ele s e r m á s
eficiente q u e la e x tra c c ió n d e u n c a r á c te r a la vez. E n la secció n 3 .2 se e s tu d ia n las
té c n ic a s p a ra el m a n e jo de los buffer d e e n tra d a .

U n a n a liz a d o r lé x ic o

A h o r a se c o n s tr u irá u n a n a liz a d o r léxico r u d im e n ta r io p a r a el tr a d u c to r d e e x p re sio ­


nes d e la secció n 2.5. El p ro p ó s ito del a n a liz a d o r léxico es p e r m itir q u e a p a re z c a n
esp acio s e n b la n c o y n ú m e r o s d e n t r o d e las ex p resio n es. E n la sig u ie n te secció n , se
a m p lía el a n a liz a d o r léxico p a r a a d m iti r ta m b ié n id en tificad o res.

u tiliza q e t c h a r ( ) d e v u e lv e el c o m p o n e n te
para leer u n carácter a n a liza d o r lé x ic o a q u ie n lla m ó
lé x ico
a n á l e x ()
re in ser ta c u tiliz a n d o
ungetc(c,stdin)
asign a a u n a variable
g lo b a l e l valor
v al c om p le x d e l atrib u to

Fig. 2.26. Im plantación de las interacciones d e la figura 2.25.


2.6 ANALISIS LEXICO 59

L a fig u ra 2 .2 6 sugiere c ó m o el a n a liz a d o r léxico realiza las in te ra c c io n e s d e la


figura 2 .2 5 , e sc rito c o m o la f u n c ió n a n á l e x e n C. Las ru tin a s g e t c h a r y ú n g e t e
del a rc h iv o in c lu id o e s tá n d a r < s t d i o . h > se e n c a rg a n del m a n e jo d e l buffer d e e n ­
tr a d a ; a n á l e x lee y d e v u e lv e los c a r a c te r e s d e la e n t r a d a ll a m a n d o a las ru tin a s
g e t c h a r y ú n g e t e , re s p e c tiv a m e n te . Si c se d e c la ra c o m o c a rá c te r, el p a r d e p ro ­
p o sicio nes

c = g e t c h a r ( ) ; u'ngetc(c, s t d i n ) ;

n o a lte ra la c a d e n a d e e n tra d a . L a lla m a d a a g e t c h a r a s ig n a el sig u ie n te c a rá c te r


d e la e n tr a d a a c; la lla m a d a a ú n g e t e d e v u e lv e el v alo r d e c a la e n tr a d a e s tá n d a r
stdin.
Si el le n g u a je d e im p la n ta c ió n n o p e rm ite q u e las fu n c io n e s d e v u e lv a n estru c­
tu r a s d e d a to s, e n to n c e s los c o m p o n e n te s léxicos y s u s a tr ib u to s se tie n e n q u e p asar
p o r s e p a ra d o . L a fu n c ió n a n á l e x d e v u e lv e u n e n te r o q u e es el c ó d ig o d e u n c o m ­
p o n e n te léxico. El c o m p o n e n te léxico p a ra un c a rá c te r p u e d e s e r c u a lq u ie r e n te ro
c o n v e n c io n a l q u e sea el c ó d ig o d e ese c a rá c te r. U n c o m p o n e n te léxico, c o m o n tim .
se p u e d e c o d ific a r e n to n c e s p o r u n e n te r o m a y o r q u e c u a lq u ie r e n t e r o q u e co d ifiq u e
u n carácter, p o r e je m p lo , 2 56. P a ra p e r m itir q u e la co d ificació n se p u e d a m o d ific a r
c o n facilidad, se usa u n a c o n s ta n te sim b ó lic a n u m p a r a h a c e r referen cia a la co d ifi­
cació n con u n n ú m e r o e n te r o d e n ú m . E n Pascal, la a so cia ció n e n tre n u m y la c o d i­
ficación se p u e d e n h a c e r m e d ia n te u n a d e c la ra c ió n co n st: e n C . se p u e d e h a c e r q u e
N U M re p re s e n te al e n te r o 2 56 m e d ia n te u n a p ro p o sic ió n d e f i n e :

# d e f i n e N U M 256

L a fu n c ió n a n á l e x d e v u e lv e N U M c u a n d o se o b serv e u n a se c u e n c ia d e d íg ito s e n la
e n tr a d a . A la v ariab le global v a l c o m p l e x se le asig n a la se c u e n c ia d e d íg ito s q u e
fo rm a el v alo r del c o m p o n e n te léxico. A sí. si u n 7 va seg u id o in m e d ia ta m e n te de
u n 6 en la e n tra d a , a v a l c o m p l e x se le asigna el v a lo r e n te r o 76.
Al a d m iti r n ú m e r o s d e n t r o d e las e x p re sio n e s se re q u ie re u n a m o d ific a c ió n d e la
g ra m á tic a d e la figura 2.19. Se re e m p la z a n los d ígito s in d iv id u a le s p o r el n o te r m i­
nal fa cto r y se in tro d u c e n las p ro d u c c io n e s y a c c io n e s s e m á n tic a s siguientes:

fa c to r ( expr)
núm { print ( n ú m .valor ) }

El c ó d ig o e n C p a ra fa cto r d e la figura 2 .2 7 es u n a im p la n ta c ió n d ire c ta d e las


p ro d u c c io n e s a n te rio re s . C u a n d o p r e a n á l i s i s es igual a NUM, el v alo r del a trib u to
n ú m . valor está d a d o p o r la v ariab le global v a l c o m p l e x . L a a c c ió n d e im p r i m i r este
v a lo r la realiza la fu n c ió n d e b ib lio te c a e s tá n d a r p r i n t f . El p r im e r a r g u m e n to de
p r i n t f es u n a c a d e n a e n tr e c o m illa s q u e especifica el f o rm a to q u e se ha d e u s a r en
la im p r e s ió n d e los r e s ta n te s a r g u m e n to s . E n el lu g a r d o n d e %d a p a r e c e en la c a ­
d e n a . se im p r im e la re p re s e n ta c ió n d e c im a l d e l sig u ie n te a rg u m e n to . P o r ta n to , la
p ro p o s ic ió n p r i n t f d e la figura 2 .2 7 im p r im e u n e s p a c io e n b la n c o s e g u id o d e la
re p re s e n ta c ió n d e c im a l d e v a l c o m p l e x y seg u id o d e o t r o e s p a c io e n b la n co .
E n la figura 2 .2 8 se m u e s tr a la im p la n ta c ió n d e la fu n c ió n a n á l e x . C u a n d o se
e je c u ta el c u e r p o d e la p ro p o sic ió n w h i l e e n las lineas 8 a 28, se lee u n c a r á c te r en
t en la lín ea 9. Si el c a rá c te r e s u n e s p a c io e n b la n c o o u n T A B (escrito '\t'). e n to n -
U N C O M PILA D O R SENCILLO DE U N A PASADA

f a c t o r ()
{
if (preanálisis == ' ( ' ) {
parea ( Y ) ; expr(); p a re a (')');
}
else if (preanálisis = NUM) {
p r i n t í ( " %d " , v a l c o m p l e x ) ; parea(NUM);
\
)
else e r r o r ();
}

Fig. 2.27. C ó d i g o e n C p a r a fa c to r c u a n d o los o p e r a n d o s p u e d e n s e r n ú me r o s .

(1) #include < stdio.h>


(2) if i n c l u d e < ctype.h>
(3) int n u m l í n e a = 1;
(4) i n t valcom plex = NINGUNO;

(5) int a n á l e x ()
(6 ) {
(7) int t;
(8 ) w hile(l) {
(9) t = getcharO ;
( 10) if (t “ ' ' 5 t “ \ t ')
(11) ; / • e lim in a e sp a c io s e n b la n c o y s ím b o lo s ta b
(12 ) else if ( t = = V » ')
(13) n u m lín e a = n u m lín e a + 1;
(14) else if (isdigit(t)) j
(15) v a l c o m p l e x = t — ’0 ’;
(16) t = getchar ();
(17) w hile ( i s d i g i t ( t )) {
(18) v a l c o m p l e x = v a l c o m p l e x * 1 0 + t - 'O ';
(19) t = getchar();
( 20) }
(2 1 ) ungetc(t, std in );
( 22 ) r e t u r n NUM;
( 23) }
(24) else j
( 25) valcom plex * NINGUNO;
( 26) return t;
( 27) }
( 28) i
(29) }

Kig. 2 .2 8 . C ó d ig o e n C p a r a el a n a liz a d o r léx ico q u e e l i m i n a e sp a c io s e n b la n c o


y re c o n o c e n ú m e ro s.
2.7 IN C O R PO R A C IO N D E U N A TABLA DE SIM BOLOS 61

ccs n o se d e v u e lv e n in g ú n c o m p o n e n te léx ico al a n a liz a d o r sin táctico ; s im p le m e n te


se in icia d e n u e v o el lazo w h i l e . Si el c a rá c te r es d e lín ea n u e v a (escrito '\ n ') , e n ­
to n c e s se in c r e m e n ta la v ariab le global n ú m l i n , c o n lo cual se c o n tr o la n los n ú m e ­
ros d e lín ea d e la e n tra d a , pero , d e n u e v o , n o se devuelve n in g ú n c o m p o n e n te léxico.
P r o p o r c io n a n d o un n ú m e r o d e lín e a c o n u n m e n sa je d e e r r o r se a y u d a a lo calizar
los errores.
E l c ó d ig o p a r a la le c tu ra d e u n a se c u e n c ia d e d íg ito s está en las lín eas 14 a 23.
El p re d ic a d o i s d i g i t ( t ) del a rc h iv o in c lu id o < c t y p e . h > se usa e n las lin eas 14
y 17 p a r a d e t e r m in a r si u n c a r á c te r d e e n t r a d a t e s u n dígito. Si lo es, e n to n c e s su
v a lo r e n te r o está d a d o p o r la e x p re sió n t - ' O ' e n los c ó d ig o s A S C II y E B C D IC . C o n
o tro s c o n j u n to s d e c arac teres, tal v ez se n ecesite h a c e r la c o n v e rs ió n d e m o d o d is ­
tin to . En la secció n 2 .9 se in c o rp o r a este a n a liz a d o r léxico al tr a d u c to r d e e x p re sio ­
nes.

2 .7 I N C O R P O R A C I O N D E U N A T A B L A D E S I M B O L O S

P a ra a lm a c e n a r in fo rm a c ió n e n v a ria s c o n s tru c c io n e s del le n g u a je fu en te , se usa p o r


lo general u n a e s tru c tu ra d e d a to s lla m a d a ta b la d e sím bolos. La in fo rm a c ió n se re ú n e
e n las fases d e a n álisis del c o m p ila d o r y la e m p le a la fase d e síntesis p a r a g e n e ra r el
c ó d ig o o b je to . P o r e je m p lo , d u r a n t e el a n álisis léxico, la c a d e n a de c arac teres, o le-
x em a, q u e fo rm a u n id e n tific a d o r se g u a r d a e n u n a e n t r a d a de la ta b la d e sím bolos.
L as fases po steriores del c o m p ila d o r p u e d e n a ñ a d ir a esta e n tra d a in fo rm a c ió n , c o m o
el tip o del id e n tific a d o r, su u s o ( p o r e je m p lo , p r o c e d im ie n to , v a ria b le o e tiq u e ta ) y
su p o sició n e n la m e m o r ia . L a fase d e g e n e ra c ió n d e c ó d ig o u saría d e s p u é s esta in ­
fo rm a c ió n p a r a g e n e ra r el c ó d ig o a p r o p ia d o p a ra a lm a c e n a r y a c c e d e r a esta v aria­
ble. E n la secció n 7.6, se e s tu d ia e n d e ta lle la im p la n ta c ió n y uso d e ta b la s d e s ím ­
bolos, y se ilu stra c ó m o el a n a liz a d o r léxico d e la secció n a n te r io r p u e d e in te r a c tu a r
c o n u n a ta b la d e sím b o lo s.

L a in terfa z d e la ta b la d e s ím b o lo s

Las r u tin a s d e la ta b la d e s ím b o lo s se refieren p r in c ip a lm e n te a la p ro te c c ió n y re­


c u p e ra c ió n d e lex em as. C u a n d o se g u a r d a u n lex em a, ta m b ié n se g u a r d a el c o m p o ­
n e n te léxico a s o c ia d o c o n él. S o b re la ta b la d e s ím b o lo s se realizarán las sig u ientes
o p eracio n es:

i n s e r t a ( s , t ): D ev u elv e el ín d ice d e la n u e v a e n tr a d a p a r a la c a d e n a s
y el c o m p o n e n te léxico t .
b u s c a ( s ): D ev u elv e el ín d ice d e la e n tr a d a p a ra la c a d e n a s.
o 0 si n o e n c o n tr ó a s .

El a n a liz a d o r léxico u tiliz a la o p e r a c ió n b u s c a p a r a d e t e r m in a r si hay o n o u n a


e n tr a d a p a ra u n le x e m a e n la ta b la d e s ím b o lo s. Si n o existe e n tra d a , e n to n c e s u ti­
liza la o p e r a c ió n i n s e r t a p a r a c r e a r u n a . S e e s tu d ia rá u n a im p la n ta c ió n e n la q u e
t a n t o el a n a liz a d o r léx ico c o m o el a n a liz a d o r s in tá c tic o c o n o c e n el f o r m a to d e las
e n tr a d a s d e la ta b la d e sím bolos.
62 U N C O M PIL A D O R SENCILLO DE U N A PASADA

M a n e jo d e p a la b r a s c la v e r e serv a d a s

L as r u tin a s a n te r io r e s d e la ta b la d e s ím b o lo s p u e d e n m a n e ja r c u a lq u ie r c o n ju n to
d e p a la b ra s clave reservadas. P o r e je m p lo , c o n s id é re n s e lo s c o m p o n e n te s léx ico s div
y m od c o n le x em as d i v y mod, re s p e c tiv a m e n te . Se p u e d e in ic ia liz a r la ta b la d e s ím ­
b o lo s m e d ia n te las lla m a d a s

i n s e r t a ( " d iv " , d iv );
i n s e r t a ( "m od", m o d );

C u a lq u ie r lla m a d a p o s te rio r b u s c a ( " d i v " ) d e v u e lv e el c o m p o n e n te léxico d iv, d e


m o d o q u e d i v n o p u e d e usarse c o m o id e n tific a d o r.
C u a lq u ie r c o n j u n t o d e p a la b ra s c lav e reserv ad as se p u e d e m a n e ja r d e esta fo rm a
in ic ia liz a n d o a p r o p ia d a m e n te la ta b la d e sím b o lo s.

l i n a im p la n ta c ió n d e u n a ta b la d e s ím b o lo s

E n la figura 2 .2 9 se esb o za u n a e s tr u c tu r a d e d a to s p a r a u n a im p la n ta c ió n p a rtic u la r


d e u n a t a b l a d e s ím b o lo s . N o se d e s e a a s ig n a r u n a c a n t i d a d fija d e e s p a c io p a r a
g u a r d a r los le x e m a s q u e f o r m a n los id e n tific a d o re s ; u n a c a n tid a d fija d e e s p a c io
p u e d e n o s e r su ficien tem en te g ran d e p a r a g u a rd a r u n id e n tific ad o r m u y largo y puede
ser in n e c e s a ria m e n te g r a n d e p a r a u n id e n tific a d o r c o rto c o m o i . E n la figura 2.29,
u n a m a triz se p a ra d a l e x e m a s g u a r d a la c a d e n a d e c a ra c te re s q u e fo rm a u n id en ti-
ficador. La c a d e n a está te r m in a d a m e d ia n te u n c a rá c te r d e fin -d e-ca d en a, re p re s e n ­
ta d o p o r FDC, y q u e n o p u e d a a p a r e c e r e n los id e n tific ad o res. C a d a e n t r a d a e n la
m a triz t a b l a s i m b d e la ta b la d e s ím b o lo s e s u n reg istro q u e c o n tie n e d o s c a m p o s ,
a p l e x , q u e a p u n t a al p rin c ip io d e u n le x e m a , y c o m p l e x . L o s c a m p o s a d ic io n a le s
p u e d e n c o n te n e r v alo res d e a trib u to s , a u n q u e a q u í n o se h a r á eso.
E n la figura 2 .2 9 la e n tr a d a 0 se d e ja vacía, p o r q u e b u s c a d e v u e lv e 0 p a r a in­
d ic a r q u e n o h a y e n tr a d a p a r a u n a c a d e n a . L a p r im e r a y s e g u n d a e n tra d a s son para
la s p a la b r a s c la v e d i v y m od. L a te r c e r a y la c u a r t a s o n p a r a los id e n tif ic a d o r e s
c u e n ta e i.

M a triz ta b la sim b
aplex complex atributos

Fig. 2.29. T abla d e sím bolos y m atriz para el a lm acen am ien to d e las cadenas.
2.7 IN C O R PO R A C IO N D E U N A TABLA DE SIM BOLOS 63

E n la figura 2 .3 0 se m u e s tra el s e u d o c ó d ig o de u n a n a liz a d o r léxico q u e m a n e je


id en tificad o res: en la secció n 2 .9 se in tr o d u c e u n a a p lic a c ió n en C . El a n a liz a d o r lé­
xico m a n e ja los esp acio s e n b la n c o y las c o n s ta n te s e n te ra s d e la m is m a fo rm a q u e
e n la figura 2 .2 8 d e la secció n a n te rio r.
C u a n d o este a n a liz a d o r léxico lee u n a letra, c o m ie n z a a g u a r d a r letras y dígitos
en un buffer. b u f l e x . L a c a d e n a reco g id a e n b u f l e x se b u sc a d e s p u é s e n la ta b la
d e sím b o lo s, u tiliz a n d o la o p e ra c ió n b u s c a . C o m o la ta b la d e s ím b o lo s está inicia-
lizad a c o n e n tra d a s p a r a las p a la b ra s clave d i v y mod, c o m o se m u e s tr a e n la figura
2 .2 9 . la o p e ra c ió n b u s c a e n c o n tr a r á estas e n tr a d a s si b u f l e x c o n tie n e d i v o mod.
Si n o h a y u n a e n tr a d a p a r a la c a d e n a q u e te n g a b u f l e x . e s to es. b u s c a d e v u e lv e 0.
e n to n c e s b u f l e x c o n tie n e u n le x e m a p a r a u n id e n tific a d o r n u e v o . M e d ia n te i n ­
s e r t a , se c r e a u n a e n tr a d a p a r a el id e n tific a d o r n u e v o . D esp u és d e h a c e r la in ser­
c ió n . p es el ín d ice d e la e n tr a d a de la ta b la d e s ím b o lo s p a ra la c a d e n a b u f l e x . Este
ín d ic e se le c o m u n ic a al a n a liz a d o r s in tá c tic o a s ig n a n d o p a v a l c o m p l e x . y e n el
c a m p o c o m p l e x d e la e n tr a d a se d e v u e lv e el c o m p o n e n te léxico.
C u a n d o n o se p re s e n ta n esos casos, la a c c ió n co n siste e n d e v o lv e r el e n te r o q u e
co d ific a el c a rá c te r c o m o c o m p o n e n te léxico. C o m o a q u í los c o m p o n e n te s léxicos
d e u n so lo c a r á c te r n o tie n e n a trib u to s , a v a l c o m p l e x se le asig n a n i n g u n o .

function análex : integer:


var huflex : a rra y [0.. 100] o f char;
c. char;
begin
loop begin
lee un carácter en r,
¡f <• es un espacio en blanco o u n sím bolo ta b then
n o hacer nada;
else if c es un carácter d e línea nuev a then
num linea : = num línea + 1
else if c es u n dígito then begin
asignar a valcomplex el valor d e éste y los dígitos siguientes;
return NUM
cnd
else if c es u n a letra then begin
p o n e r c y las letras y dígitos sucesivos en buflex.
p : = busca(buflex)\
if p = 0 then
p : = inserta(buflex , ID);
valcom plex : = p;
retu rn el c a m p o com plex d e la e n tra d a p d e la tabla
end
else begin /* el c o m p o n e n te léxico tien e u n solo carácter */
asignar NINGUNO a valcomplex ; /* no hay a trib u to */
return el n ú m e ro en tero del código del carácter c
end
end
end;

Fig. 2 3 0 . Seudocódigo d e u n analizad or léxico.


64 U N C O M PIL A D O R SENCILLO D E U N A PASADA

2 .8 M A Q U I N A S D E P I L A A B S T R A C T A S

L a e ta p a inicial d e u n c o m p ila d o r c o n s tr u y e u n a re p re s e n ta c ió n in te r m e d ia del p r o ­


g ra m a fu e n te a p a r ti r d e la c u a l la e ta p a final g e n e ra el p r o g r a m a o b je to . U n a fo rm a
c o m ú n d e re p r e s e n ta c ió n in t e r m e d i a es el c ó d ig o p a r a u n a m á q u i n a d e p ila a b s ­
tra c ta . C o m o se m e n c io n ó e n el c a p ítu lo 1. la d iv isió n d e u n c o m p ila d o r e n u n a
e ta p a in ic ia l y u n a e t a p a fin al facilita su m o d ific a c ió n p a r a q u e f u n c io n e e n u n a
n u e v a m á q u in a .
E n esta sección se p re s e n ta u n a m á q u in a d e p ila a b s tra c ta y se m u e s tr a c ó m o se
p u e d e g e n e ra r su cód ig o. L a m á q u in a tie n e m e m o r ia s in d e p e n d ie n te s p a r a las ins­
tru c c io n e s y los d a to s, y to d a s las o p e r a c io n e s a r itm é tic a s se re a liz a n c o n los valores
e n u n a pila. L as in s tru c c io n e s s o n b a s ta n te lim ita d a s y e s tá n c o m p r e n d id a s e n tres
clases: a r itm é tic a e n te r a , m a n ip u la c ió n d e la p ila y flu jo d e c o n tro l. E n la figura 2 . 3 1
se re p re s e n ta la m á q u in a . El a p u n t a d o r cp in d ic a la in stru c c ió n q u e se v a a e je c u ta r.
L o s sig n ificad o s d e las in s tru c c io n e s se e s tu d ia rá n u n p o c o m á s a d e la n te .

In str u c c io n e s a r itm é tic a s

L a m á q u in a a b s tra c ta h a d e im p la n ta r c a d a o p e ra d o r e n el lenguaje in te rm e d io . U n a
o p e ra c ió n básica, c o m o la a d ic ió n o la s u stra c c ió n , está s o p o r ta d a d ir e c ta m e n te p o r
la m á q u in a a b s tra c ta . S in e m b a rg o , u n a o p e r a c ió n m á s c o m p le ja , p u e d e te n e r q u e
s e r im p la n ta d a c o m o u n a se c u e n c ia de in s tru c c io n e s d e la m á q u in a a b s tra c ta . La
d e sc rip c ió n d e la m á q u in a se sim p lific a s u p o n ie n d o q u e h a y u n a in s tru c c ió n para
c a d a o p e r a d o r a ritm é tic o .

INSTRUCCIONRS P ila D atos

1
2
3
4
mete 5
valord
+
valord
2

3
to p e
\ 16 0
II
7
1
2
3
4

3 cp
6

Fig. 2.31. Estado d e la m á q u in a d e pila después d e ejecutarse las prim eras cuatro
instrucciones.

El c ó d ig o d e la m á q u in a a b s tr a c ta d e u n a ex p resió n a r itm é tic a s im u la la e v a lu a ­


c ió n d e u n a r e p r e s e n ta c ió n p o s lf ija d e e s a e x p r e s ió n u t i l i z a n d o u n a p ila . L a e v a ­
lu a c ió n se realiza p ro c e s a n d o la re p re s e n ta c ió n po stfija d e iz q u ie rd a a d e re c h a , in­
s e r ta n d o lo s o p e r a n d o s e n la pila a m e d id a q u e los e n c u e n tr a . C u a n d o se e n c u e n tr a
u n o p e r a d o r k- a rio , su a r g u m e n to s itu a d o m á s a la iz q u ie r d a está k - 1 p o s ic io n e s p o r
d e b a jo d e la c im a d e la p ila y su a r g u m e n to m á s a la d e r e c h a está e n la c im a . La
e v a lu a c ió n a p lic a el o p e r a d o r a los k valores d e la c i m a de la pila, e x tra e los o p e ra n -
d o s e in s e rta el re s u lta d o e n la pila. P o r e je m p lo , e n la e v a lu a c ió n d e la ex p resió n
po stfija 1 3 + 5 *, se re a liz a n las a c c io n e s siguientes:
2.8 M A Q U I N A S D E PILA A B S T R A C T A S 65

1. In s e rta r 1 e n la pila.
2. In s e rta r 3 e n la pila.
3. S u m a r los d o s e le m e n to s d e la cim a, ex tra erlo s e in sertar e n la pila el resu ltad o 4.
4. I n s e r ta r 5 e n la pila.
5. M u lti p lic a r los d o s e l e m e n t o s d e la c i m a , e x t r a e r lo s e in s e r ta r e n la p ila el
re s u lta d o 20.

Al fin al, el v alo r d e la c im a d e la p ila ( a q u í es 20) c o r r e s p o n d e a la e x p re sió n c o m ­


pleta.
E n el le n g u a je in te rm e d io , to d o s los v alo res serán en tero s, d o n d e 0 c o r r e s p o n d e
a f a l s e y los e n te r o s d is tin to s d e c e ro c o rre s p o n d e n a t r u e . L o s o p e r a d o r e s boo-
le an o s a n d y o r re q u ie re n la e v a lu a c ió n d e s u s d o s a rg u m e n to s .

V a lo re s d e la d o izq u ierd o y d e lado d erech o

H a y d ife re n c ia e n tr e el sig n ificad o d e los id e n tific a d o re s d e l la d o iz q u ie r d o y los del


la d o d e r e c h o d e u n a asig n ació n . E n c a d a u n a d e las asig n ac io n es

i := 5;
i := i + 1;

el la d o d e r e c h o especifica u n v a lo r e n te r o , m ie n tra s q u e el la d o iz q u ie r d o especifica


d ó n d e se va a a lm a c e n a r el valor. D e m a n e r a s im ila r, si p y q s o n a p u n ta d o r e s a
c arac teres, y

p t : = q t ;

el la d o d e r e c h o q t especifica u n c a rá c te r, m ie n tr a s q u e p í especifica d ó n d e se v a a
a lm a c e n a r el carácter. L o s té r m in o s valor de lado izquierdo y valor d e lado derecho
h a c e n referencia a los v alo res a p r o p ia d o s p a ra los la d o s iz q u ie rd o y d e re c h o , resp ec­
tiv a m e n te , d e u n a a sig n a c ió n . E sto es. los v alo res de la d o d e r e c h o s u e le n c o n s id e ­
rarse c o m o “ valores", m ie n tra s q u e los v alo res d e la d o iz q u ie rd o son posiciones.

M a n ip u la c ió n d e la pila

A d e m á s d e las in s tru c c io n e s o b v ia s p a r a in s e rta r u n a c o n s ta n te e n te r a e n la pila y


e x tra e r un v a lo r d e la c im a d e la pila, h a y in s tru c c io n e s p a r a a c c e d e r a la m e m o r ia
d e datos:

inserta v inserta v en la pila


va lo rd / in se rta el c o n t e n id o d e la p o sició n d e d a to s /
v a lo r i / in se rta la d ire c c ió n d e la p o sic ió n d e d a to s /
saca e lim in a el v alo r d e la c im a d e la pila
:= el v a lo r d e la d o d e r e c h o d e la c im a se p o n e e n el v alo r d e lado
iz q u ie rd o q u e está d e b a jo y se e x tra e n los dos
c o p ia in se rta u n a c o p ia del v a lo r d e la c im a en la pila

T ra d u c c ió n de e x p re sio n e s

El c ó d ig o q u e e v a lú a u n a e x p re sió n en u n a m á q u in a d e pila está e s tr e c h a m e n te re­


la c io n a d o c o n la n o ta c ió n postfija p a r a esa ex p re sió n . P o r d e fin ic ió n , la fo rm a p o st­
66 U N C O M PIL A D O R SENCILLO DE U N A PASADA

fija d e la e x p re sió n E + F es la c o n c a te n a c ió n d e la fo rm a postfija d e E, la fo rm a


po stfija d e F y + . D el m is m o m o d o , el c ó d ig o d e la m á q u in a d e p ila q u e sirv e p a ra
e v a lu a r E + F e s la c o n c a te n a c ió n del c ó d ig o p a r a e v a lu a r E , el c ó d ig o p a r a e v a lu a r
F y la in s tru c c ió n p a r a s u m a r s u s valores. L a tr a d u c c ió n d e e x p re sio n e s a l c ó d ig o d e
la m á q u in a d e p ila p u e d e h acerse, p o r ta n to , a d a p t a n d o los tr a d u c to r e s d e las sec­
c io n e s 2 .6 y 2.7.
A q u í se g en era c ó d ig o d e p ila p a r a las e x p re s io n e s e n las q u e las lo c a lid a d e s d e
d a to s se d ire c c io n a n s im b ó lic a m e n te . (L a a s ig n a c ió n d e lo c a lid a d e s d e d a to s p a ra
los id e n tific a d o re s se e s tu d ia e n el C a p . 7.) L a e x p re s ió n a + b se tr a d u c e a:

valord a
valord b
+
E x p re sa d o en p a lab ras: in s e r ta r los c o n te n id o s d e las lo c a lid a d e s d e d a to s p a r a a y b
e n la p ila; d esp u és, e x tra e r los d o s v alo res d e la c i m a d e la pila, s u m a r lo s e in s e rta r
el re s u lta d o en la pila.
L a tr a d u c c ió n d e a sig n a c io n e s a c ó d ig o d e m á q u in a d e p ila se h a c e c o m o sigue:
el v alo r d e la d o iz q u ie r d o a sig n a d o al id e n tif ic a d o r se in se rta e n la pila, se e v a lú a la
e x p re sió n y su v a lo r d e la d o d e r e c h o se asig n a al id e n tific a d o r. P o r e je m p lo , la asig­
n ació n

día := (1461*a) div 4 + (153*m + 2) div 5 + d (2 .17)

se tr a d u c e al c ó d ig o d e la figura 2.32.

valori día mete 2


mete 1461 +
valord a mete 5
* div
mete 4 +
div valord d
mete 153 +
valord m
*

Fig. 2.32. Traducción de d í a := (1461 * a ) div 4 + (153*m+2) d i v 5 + d.

E stos c o m e n ta r io s se p u e d e n e x p re s a r f o r m a lm e n te c o m o sigue. C a d a n o te r m i­
nal tie n e u n a t r i b u t o / q u e d a su tra d u c c ió n . El a tr ib u to lexem a d e id p ro p o r c io n a
la re p re s e n ta c ió n e n fo rm a d e c a d e n a d e l id e n tific a d o r.

prop -> id := expr


{ prop a : = 'valori' || id .lexem a II e x p r a || }

F lu jo d e co n tro l

La m á q u in a d e pila e je c u ta in s tru c c io n e s e n u n a s e c u e n c ia n u m é ric a , a n o ser q u e


se le in d iq u e algo d ife re n te c o n u n a p ro p o s ic ió n d e salto c o n d ic io n a l o in c o n d ic io ­
n al. E x isten v arias o p c io n e s p a r a la esp ecificació n d e los d e s tin o s d e los saltos:
2.8 M A Q U I N A S D E PILA A B S T R A C T A S 67

1. El o p e r a n d o d e la in stru c c ió n d a la lo c alid a d d e s tin o .


2. El o p e r a n d o d e la in s tru c c ió n especifica la d is ta n c ia relativa, p o sitiv a o negativa,
del salto.
3. El d e s tin o se especifica s im b ó lic a m e n te ; esto es. la m á q u in a m a n e ja etiq uetas.

C o n las d o s p r im e r a s o p c io n e s ex iste la p o sib ilid a d a d ic io n a l d e q u i t a r el o p e r a n d o


d e la c im a d e la pila.
A q u í se eligió la te rc e ra o p c ió n p a r a la m á q u in a a b s tra c ta p o r q u e es m á s fácil
g e n e ra r d ic h o s saltos. A d e m á s, n o e s n e c e s a rio m o d ific a r las d ire c c io n e s sim b ó licas
si. d e s p u é s d e g e n e ra r el c ó d ig o d e la m á q u in a a b s tra c ta , se h a c e n c ie rta s m e jo ra s al
c ó d ig o q u e d e n c o m o re s u lta d o la in serció n o b o r r a d o d e in stru ccio n es.
L as in s tru c c io n e s del flu jo d e c o n tro l d e la m á q u in a de p ila son:

e tiq u e ta / d e s tin o d e los salto s a /; n o tie n e o tr o efecto


vea / la sig u ie n te in s tr u c c ió n se t o m a d e la p ro p o rc ió n
e tiq u e ta d a c o n e t i q u e t a /
s i f a lso v e a / sa c a el v a lo r del to p e d e la p ila; salta si es d e cero
s i c i e r t o v e a / saca el v a lo r del to p e d e la pila; salta si e s d is tin to d e c e ro
a lto d e tie n e la ejecu ció n

T ra d u c ció n d e p r o p o s ic io n e s

El e s q u e m a d e la figura 2 .3 3 d e sc rib e el c ó d ig o d e la m á q u in a a b s tra c ta p a r a las p r o ­


p o s ic io n e s c o n d ic io n a le s w hile. El sig u ie n te a n á lis is se c e n tr a e n la c re a c ió n d e e ti­
q uetas.
C o n sid érese la disposición del código p a ra p ro p o sicio n es i f d e la figura 2.33. Sólo
p u e d e h a b e r u n a in s tr u c c ió n e t i q u e t a e t i q e n la t r a d u c c i ó n d e u n p r o g r a m a
fu en te; d e o t r o m o d o , n o se s a b rá c o n c e rte z a h a c ia d ó n d e fluye el c o n tro l d e s d e un a
p ro p o sició n v e a e t i q . P o r ta n to , c u a n d o se tr a d u z c a u n a p ro p o s ic ió n if. se necesita
alg ú n m e c a n is m o q u e re e m p la c e c o n s is te n te m e n te e t i q e n la e s tr u c tu r a del código
u tiliz a n d o u n a e tiq u e ta ún ica.

Ii W hile

e tiq u e ta prueba
c ó d ig o d e e x p r

sifalsovea etiq c ó d ig o d e e x p r

sifalsovea etiq
c ó d ig o d e p ro p i
c ó d ig o d e propx
etiq u eta etiq
vea prueba
etiq u eta etiq

F ig. 2 .3 3 . Disposición del código para las proposiciones condicional y while.

S u p ó n g a se q u e eliqnueva es u n p r o c e d im ie n to q u e d e v u e lv e u n a e tiq u e ta n u e v a
c a d a v ez q u e se le lla m a . E n la sig u ie n te a c c ió n s e m á n tic a , la e tiq u e ta d e v u e lta p o r
u n a lla m a d a a eliqnueva se reg istra u tiliz a n d o u n a v a ria b le local etiq :
68 U N C O M PIL A D O R SENCILLO D E U N A PASADA

prop - » ¡ f ex p r th e n p ro p { { eiiq ; = el i (¡nueva:


prop. I : = expr t II
' s i f a l s o v e a etiq || (2 .18)
p r o p I ||
e t i q u e t a ' etiq (

E m isió n d e un a trad u cció n

L o s tr a d u c to r e s d e e x p re sio n e s d e la sección 2 .5 u s a b a n p ro p o s ic io n e s print p a r a ge­


n e ra r in c r e m e n ta lm e n te la tr a d u c c ió n d e u n a ex p resió n . S e p u e d e n u sa r p ro p o s ic io ­
n e s print se m e ja n te s p a r a e m iti r la tr a d u c c ió n d e p ro p o sicio n es. E n lu g a r d e p r o p o ­
siciones print. se usa u n p ro c e d im ie n to em ite p a ra o c u lta r los detalles d e la im presión.
P o r e je m p lo , e m ite se o c u p a d e si c a d a in stru c c ió n d e la m á q u in a a b s tra c ta necesita
e s ta r e n u n a lín e a a p a rte . P o r m e d io del p r o c e d im ie n to em ite, en lu g a r d e (2 .18) se
p u e d e e scrib ir lo siguiente:

prop - » if
expr { etiq : = etiqnueva : e m ite ( ' s í f a l s o v e a . e tiq ) : }
then
propx { e m ite ( ' e t i q u e t a ' , etiq ) : }

C u a n d o las a c c io n e s s e m á n tic a s a p a re c e n en u n a p ro d u c c ió n , los e le m e n to s del lado


d e r e c h o d e la p ro d u c c ió n se c o n s id e ra n e n u n o rd e n d e iz q u ie rd a a d e re c h a . P a ra la
p ro d u c c ió n a n te rio r, el o rd e n d e las a c c io n e s es el sig uiente: se re a liz a n las a c c io n e s
d u r a n t e el a n á lis is s in tá c tic o d e e x p r , a e tiq se le a s ig n a la e t i q u e t a d e v u e l t a p o r
etiqnueva y se e m ite la in stru c c ió n s i f a l s o v e a . se re a liz a n las a c c io n e s d u r a n te el
a n álisis s in tá c tic o d e prop\ y. fin a lm e n te , se e m ite la in s tru c c ió n e t i q u e t a . S upo-

procedure prop:
var prueba, etiq: integer; /* para etiquetas */
begin
if preanálisis = id then begin
em ite ('valori', valcomplex ); parea (id); parea (':-'); expr
end
else if preanálisis = ' i f ' then begin
parea ( 'i f ') ;
expr:
e tiq : = etiqnueva:
em ite ('si falsovea', etiq);
parea ('then');
prop:
em ite ('etiqueta', etiq)
end
/* a q u í va el código del resto d e las proposiciones */
else error
end:

Fig. 2.34. Seudocódigo d e la tradu cción d e proposiciones.


2.9 R E U N IO N D E LAS TECNIC AS 69

n ie n d o q u e las a c c io n e s d u r a n te el a n á lis is s in tá c tic o d e e x p r y prop\ e m ite n el c ó ­


d ig o p a ra esos n o te rm in a le s , la p ro d u c c ió n a n te r io r im p la n ta el e s q u e m a del c ó d ig o
d e la figura 2.33.
El s e u d o c ó d ig o p a r a tr a d u c i r las p r o p o s ic io n e s d e a s ig n a c ió n y c o n d ic io n a l se
m u e s tra e n la fig u ra 2.34. C o m o la v a ria b le etiq es local al p r o c e d im ie n to prop. su
v alo r n o se ve a fe c ta d o p o r las lla m a d a s a los p r o c e d im ie n to s e x p r y prop. S u p ó n ­
gase q u e las e tiq u e ta s d e la tr a d u c c ió n tie n e n la f o r m a L l . L 2 El se u d o c ó d ig o
m a n e ja tales e tiq u e ta s u tiliz a n d o el e n t e r o q u e sigue a L. P o r ta n to , etiq se d eclara
c o m o e n te r o , etiqnueva d e v u e lv e un e n t e r o q u e se c o n v ie r te en el v a lo r d e etiq. y se
d e b e e scrib ir e m ite p a ra q u e im p r im a u n a e tiq u e ta d a d o u n e n tero .
La d isp o sic ió n del c ó d ig o p a r a las p ro p o s ic io n e s w h ile d e la figura 2 .3 3 se p u e d e
c o n v e r tir e n c ó d ig o d e u n a fo rm a s im ila r. L a tr a d u c c ió n d e u n a se c u e n c ia d e p ro ­
p o sicio n es es s im p le m e n te la c o n c a te n a c ió n d e las p ro p o s ic io n e s d e la se c u e n c ia , y
se d e ja c o m o ejercicio p a ra el lector.
La tr a d u c c ió n d e la m a y o ría d e las c o n s tru c c io n e s d e u n a e n t r a d a y u n a salida
e s s im ila r a la d e las p ro p o s ic io n e s w h ile . E sto se ex p lica c o n s id e r a n d o el flu jo d e
c o n tro l e n la s expresiones.

E je m p lo 2 .1 0 . El a n a liz a d o r léxico d e la sección 2 .7 c o n tie n e u n c o n d ic io n a l d e la


fo rm a:

i f / = b la n co o r t = tab th en . . .

Si l es un e s p a c io en b la n co , es e v id e n te q u e n o e s n e c e sa rio p r o b a r si t es u n LAB.
p o r q u e la p r im e r a ig u a ld a d im p lic a q u e la c o n d ic ió n es v e rd a d e ra . L a ex p resió n

ex p r{ o r expr2

se p u e d e im p la n ta r , p o r ta n to , d e la fo rm a

i f ex p rt th e n tru c e l s e expr2

El lecto r p u e d e v erificar q u e el c ó d ig o sigu ien te im p la n ta el o p e r a d o r or:

c ó d ig o p a r a e.\:prt
c o p ia / * c o p ia el v a lo r d e e x p r{ * /
s ic ie rto v e a e tiq
saca / * sa c a el v alo r d e expr¡ * /
c ó d ig o p a ra expr2
etiqueta etiq

R e c u é rd e se q u e las in s tru c c io n e s s i c i e r t o v e a y s i f a l s o v e a sa c a n el v alo r del


to p e d e la p ila p a r a s im p lific a r la g e n e ra c ió n d e c ó d ig o p a r a las p ro p o s ic io n e s c o n ­
d ic io n a l y w h ile . C o p ia n d o el v a lo r d e e x p r y se aseg u ra q u e el v alo r d e la c i m a d e la
p ila es v e rd a d e ro si la in s tru c c ió n s i c i e r t o v e a o rig in a u n salto . O

2 .9 R E U N I O N D E L A S T E C N I C A S

E n este c a p ítu lo se p re s e n ta r o n v arias té c n ic a s d irig id as p o r la sin ta x is p a r a la c o n s ­


tr u c c ió n d e la e t a p a in icial d e u n c o m p ila d o r . P a r a h a c e r u n r e s u m e n d e e sa s té c ­
nicas. en esta sección se c o n s tr u y e u n p r o g r a m a e n C q u e f u n c io n a c o m o tr a d u c to r
70 U N CO M PILADO R SENCILLO DE U N A PASADA

infijo a po stfijo p a ra u n len g u aje q u e c o n s ta d e se cu en cias d e e x p re sio n e s te r m in a ­


d a s p o r s ím b o lo s d e p u n t o y c o m a . L as e x p re sio n e s están c o n s titu id a s p o r n ú m e ro s ,
id e n tific a d o re s y los o p e ra d o re s d i v y mod. L a salid a q u e p r o d u c e el tra ­
d u c t o r es u n a re p re s e n ta c ió n postfija d e c a d a ex p resió n . El tr a d u c to r es u n a a m p lia ­
c ió n d e los p ro g r a m a s d e s a rro lla d o s e n las se c c io n e s 2.5 a 2.7. Al final d e esta sec­
c ió n se d a u n lista d o c o m p le to del p r o g r a m a en C.

D escrip ció n del trad u c to r

El tr a d u c to r se d iseñ a u tiliz a n d o el e s q u e m a d e tr a d u c c ió n d irig id a p o r la s in ta x is de


la figura 2 .3 5 . El c o m p o n e n te léxico id re p re s e n ta u n a se c u e n c ia n o vacía d e letras
y d íg ito s q u e c o m ie n z a n c o n u n a letra, n ú m . u n a secu en cia d e dígitos, y fd a, u n ca­
rácter d e fin d e arch iv o . Los c o m p o n e n te s léx ico s se s e p a ra n p o r se cu en cias d e b la n ­
cos. T A B y n u e v a linea (“ esp acio s en b la n c o ” ). El a trib u to lexem a del c o m p o n e n te
léxico id d a la c a d e n a d e c a ra c te re s q u e fo rm a el c o m p o n e n te léxico: el a tr ib u to va­
lor del c o m p o n e n te léxico núm d a el e n t e r o re p re s e n ta d o p o r el núm.
El c o d ig o p a ra el tr a d u c to r se o rg a n iz a e n siete m ó d u lo s, c a d a u n o a lm a c e n a d o
e n u n a r c h i v o a p a r t e . La e je c u c ió n c o m i e n z a e n el m ó d u l o p r i n c i p a l . c , q u e
c o n s ta d e u n a lla m a d a a i n i c ( ) p a r a la in icializac ió n , seguida d e u n a lla m a d a a
a n a l i z s i n t ( ) p a r a la tra d u c c ió n . L o s seis m ó d u lo s re s ta n te s se m u e s tr a n e n la
figura 2.36. T a m b ié n h a y u n a rc h iv o d e e n c a b e z a m ie n to g lo b a l g l o b a l . h q u e c o n ­
tien e las d e fin ic io n e s c o m u n e s a m á s d e u n m ó d u lo ; la p r im e ra p ro p o sic ió n d e c a d a
m ódulo

# in c lu d e " g lo b a l.h "

h a c e q u e este a rc h iv o d e e n c a b e z a m ie n to se in c lu y a c o m o p a rte del m ó d u lo . A ntes


d e m o s tra r el c ó d ig o del tr a d u c to r , se d e s c rib irá b re v e m e n te c a d a m ó d u l o y s u c o n s­
tru cció n .

inicia! —* Usía e o f
lista - » e x p r : lista
I «
expr - » expr + térm ino { print ( V ) )
| expr - térm ino { print )
término
térm ino - * término * factor j print (' *' )}
térm ino / factor { print ( '/ ') }
término div factor { print CDIV') }
término mod factor { print ('MOD') }
factor
factor -* ( expr )
| id {print (Iá.lexema) }
núm ¡print (núm.valor) )

l ig. 2 3 5 . Especificación del trad uctor de form a iníija a postfija.


2.9 R E U N IO N D E LAS TECNIC AS 71

e x p r e sio n e s in fijas

e x p r e sio n e s p ostfijas

Fig. 2.36. M ódulos del trad u c to r de expresiones infijas a postfijas.

M ó d u lo d e a n á lis is léxico a n a l i z l é x . c

El a n a liz a d o r léxico es u n a r u tin a d e n o m in a d a a n á l e x ( ). q u e lla m a el a n a liz a d o r


s in tá c tic o p a ra q u e e n c u e n tr e c o m p o n e n te s léxicos. A p lic a d a a p a r tir del scu d o có -
d ig o d e la figura 2 .3 0 . la r u ti n a lee la e n tr a d a , u n c a rá c te r a la vez. y d e v u e lv e al
a n a l iz a d o r s in tá c tic o el c o m p o n e n t e léx ico e n c o n t r a d o . El v alo r d e l a t r i b u t o a s o ­
c ia d o c o n el c o m p o n e n te léxico se asig n a a u n a v a ria b le global v a l c o m p l e x .
L o s c o m p o n e n te s léxicos q u e esp era el a n a liz a d o r s in tá c tic o son los siguientes:

+ - * / D I V M O D ( ) ID N U M FIN

A q u í. ID re p re s e n ta u n id e n tific a d o r. NUM. u n n ú m e r o , y F IN . el c a rá c te r d e fin de


a rc h iv o . El a n a l iz a d o r lé x ic o e l im i n a los e s p a c io s e n b la n c o sin d e v o lv e r n a d a al
a n a liz a d o r sin tá ctic o . L a ta b la d e la fig u ra 2 .3 7 m u e s tra el c o m p o n e n te léxico y el
v a lo r d e a t r i b u t o p r o d u c id o p o r el a n a l iz a d o r léx ico e n c a d a le x e m a d e l le n g u a je
fuente.

Componente
Lexema V a l o r del atributo
léxico

espacio en b l a n c o ..........
secuencia de dígitos ........ NUM valor numérico de la secuencia
d i v ....................... DIV
m o d ....................... MOD
otras secuencias de u n a letra
seguida de letras y dígitos .... ID índice d e t a b l a s i m b
carácter fin-de-archivo...... FIN
cualquier carácter.......... ese carácter NINGUNO

Fig. 2.37. D escripción d e c o m p o n e n te s léxicos.


72 U N C O M PIL A D O R SENCILLO DE U N A PASADA

E! a n a liz a d o r léxico u tiliza la r u ti n a d e la ta b la d e s ím b o lo s b u s c a p a r a d e te r­


m in a r si el le x e m a de u n id e n tific a d o r ya se e n c o n tr ó , y la r u tin a i n s e r t a , p a ra
a lm a c e n a r u n le x e m a n u e v o e n la ta b la d e sím b o lo s. T a m b ié n in c re m e n ta u n a v a­
riab le global n u m l í n e a c u a n d o e n c u e n t r a u n c a rá c te r d e n u e v a linca.

M ó d u lo d e a n á lis is s in tá c tic o a n a l i z s i n t . c

El a n a liz a d o r s in tá c tic o se c o n s tr u y e u tiliz a n d o las té c n ic a s d e la se c c ió n 2.5. Pri­


m e r o se e lim in a la re c u rsiv id a d p o r la iz q u ie rd a del e s q u e m a d e tr a d u c c ió n d e la
figura 2 .3 5 , p a r a p o d e r a n a liz a r la g ra m á tic a s u b y a c e n te c o n u n a n a liz a d o r s in tá c ­
tico d e s c e n d e n te recu rsiv o . El e s q u e m a tr a n s f o r m a d o se m u e s tra e n la figura 2.38.
D esp u és se c o n s tr u y e n las fu n c io n e s d e los n o te rm in a le s expr, térm in o y facto r
igual q u e en la figura 2.24. L a f u n c ió n a n á l s i n t ( ) a p lic a el s ím b o lo in icial d e la
g ra m á tic a y lla m a a a n á l e x c u a n d o n ecesita u n n u e v o c o m p o n e n te léxico. El a n a ­
lizad o r sin tá ctic o utiliza la fu n ció n e m i t e p a ra g e n e ra r la salida, y la fu n ció n e r r o r ,
p a r a in f o r m a r d e u n e r r o r sin tá ctic o .

inicio lisia eof


lista - * expr : lista

expr - * térm ino masterminos
masterminos -* + término { print ( V ) } masterminos
- término { print ) masterminos
e
término -> factor mas/actores
masfaetores -> * factor { print ('* ') } masfactores
/ factor { print ( '/ ') } masfactores
div factor { print ('D iv ') } masfactores
mod factor { print ('MOD') ¡ masfactores
I €
factor -> ( expr )
id { print (id.lexema) }
núm { print (núm .valor) }

F ig . 2 . 3 8 . E s q u e m a d e t r a d u c c i ó n d i r ig i d a p o r la s i n t a x i s p o s t e r i o r a la e l i m i n a c i ó n d e
la recursividad por la izquierda.

M ó d u lo e m is o r e m i s o r . c

El m ó d u lo e m is o r c o n s ta d e u n a so la fu n c ió n e m i t e ( t . t v a l ). q u e g e n e ra la salida
p a r a el c o m p o n e n te léxico t c o n v alo r d e a tr ib u to t v a l .

M ó d u lo s d e la ta b la d e s ím b o lo s s í m b o l o s . c e i n i c . c

El m ó d u l o s i m b o l o s . c d e la ta b la d e s ím b o lo s im p la n ta la e s tr u c tu r a d e d a to s q u e
se m u e stra e n la figura 2 .2 9 d e la secció n 2.7. L os e le m e n to s d e e n tr a d a en la m a triz
t a b l a s i m b s o n p ares q u e c o n siste n en un a p u n t a d o r a la m a tr iz l e x e m a s y un
e n t e r o in d ic a tiv o d e l le x e m a a l m a c e n a d o allí. L a o p e r a c ió n i n s e r t a ( s , t ) d e ­
2.9 R EU NIO N DE LAS TECNIC AS 73

v u elv e el ín d ice d e t a b l a s i m b p a r a el le x e m a s q u e fo rm a el c o m p o n e n te léx ico t .


L a f u n c ió n b u s c a ( s ) d e v u e lv e el ín d ic e d e la e n t r a d a d e t a b l a s i m b p a r a el le­
x e m a s , o d e v u e lv e 0 si s n o está allí.
El m ó d u l o i n i c . c se usa p a r a p rc c a rg a r t a b l a s i m b c o n p a la b ra s clave. Las
rep resen tacio n es d e los le x em as y los c o m p o n e n te s léxicos d e to d a s las p alab ras clave
se a lm a c e n a n en la m a triz p a l s c l a v e . q u e es del m is m o tip o q u e la m a triz t a b l a -
s im b . La fu n c ió n i n i c ( ) re c o rre s e c u e n c ia lm e n te la m a triz p a l s c l a v e u s a n d o la
fu n c ió n i n s e r t a p a ra m e te r las p a la b ra s c lav e e n la ta b la d e sím b o lo s. E sta d is p o ­
sición p e rm ite m o d ific a r d e m a n e r a a p r o p ia d a la re p re s e n ta c ió n d e los c o m p o n e n ­
tes léxicos d e las p a la b ra s clave.

M ó d u lo de errores e r r o r . c

El m ó d u l o de e rro re s a d m in is tr a la e m is ió n d e in fo rm e s d e e rro r, q u e e s m u y p ri­


m itiv o . Al e n c o n t r a r u n e r r o r d e sintaxis, el c o m p ila d o r im p r im e u n m e n s a je in fo r­
m a n d o d e u n e r r o r e n la lín ea e n c u rs o y d e s p u é s se d e tie n e . U n a té c n ic a m e jo r d e
re c u p e ra c ió n d e e rro re s p o d r ía s a lta r al sig u ie n te s ím b o lo d e p u n t o y c o m a y c o n ti­
n u a r el a n álisis sin tá c tic o ; se in v ita al le c to r a q u e h a g a esta m o d ific a c ió n al tr a d u c ­
to r. E n el c a p itu lo 4 se p re s e n ta n té c n ic a s d e re c u p e ra c ió n d e e rro re s m á s c o m p li­
cadas.

C r e a c ió n d el co m p ila d o r

El c ó d ig o d e los m ó d u l o s a p a r e c e e n s ie te a r c h iv o s : a n a l i z l é x . c . a n a l i z -
s i n t . c , e m i s o r . c , s í m b o l o s . c , i n i c . c , e r r o r . c , y p r i n c i p a l . c . El a r­
c h iv o p r i n c i p a l . c c o n tie n e la r u t i n a p r in c ip a l d e l p r o g r a m a e n C q u e lla m a a
i n i c ( ), d e s p u é s lla m a a a n á l s i n t ( ) y, si se te r m in a c o n é x ito , lla m a a e x i t ( 0 ).
En el s is te m a o p e r a tiv o U N I X , el c o m p ila d o r se p u e d e c re a r e je c u ta n d o el m a n ­
d a to

c c a n a l i z l é x . c a n a l i z s i n t . c e m is o r .c s ím b o lo s .c
in ic .c e r r o r .c p rin c ip a l.c

o c o m p ila n d o p o r s e p a r a d o los arch iv o s, co n

c c - c nom brearch . c

y e n la z a n d o los a rc h iv o s re su lta n te s nom brearch .o:

cc a n a l i z l é x .o a n a l i z s i n t . o e m is o r.o s ím b o lo s .o
in ic .o e r r o r .o p rin c ip a l.o

El m a n d a to c c c re a u n a rc h iv o a . o u t q u e c o n tie n e al tr a d u c to r. D esp u és se p u e d e
u tiliz ar el tr a d u c to r te c le a n d o a . o u t seg u id o d e la e x p re sió n q u e se d e se a tra d u c ir,
p o r e jem p lo ,

2+3*5;
1 2 d i v 5 mod 2 ;

o c u a lq u ie r o tr a e x p re sió n q u e se desee. H á g a se la p ru e b a .
74 U N C O M PIL A D O R SENCILLO DE U N A PASADA

E l listad o

El sig u ie n te es u n lista d o d e l p r o g r a m a e n C q u e ap lica el tr a d u c to r . S e m u e s tr a el


a rc h iv o d e e n c a b e z a m ie n to g lo b a l g l o b a l . h . seg u id o d e siete a rc h iv o s fu en te . P o r
c la rid a d , el p r o g r a m a está e sc rito en u n estilo e le m e n ta l d e C.

/* g l o b a l .h '/

¿ i n c l u d e <stdio.h> /* carga las rutinas de e n t r a d a y s a l i d a */


¿include <ctype.h> /* carga las r u t i n a s d e p r u e b a de
caracteres */

¿ d e f i n e T A M B U F F 128 /* tamaño del buffer */


¿define NINGUNO -1
¿define FDC '\ 0 '

¿define NUM 256


¿define DIV 257
¿ d e f i n e MOD 258
¿define ID 259
¿define FIN 260

int v a l c o m p l e x ; /* v a l o r del a t r i b u t o del c o m p o n e n t e l é x i c o */

int n u m l í n e a ;

struct entrada { /* forma del e l e m e n t o de e n t r a d a de la tabla


de s í m b o l o s */
char *aplex;
int complex;

);
struct entrada tablasimb]]; /* tabla de símbolos */

/* * ** an a liz léx .c

¿include "global.h"

char b u f l e x ( T A M B U F F ] ;
int numlínea ■ 1;
int v a l c o m p l e x = NINGU N O ;

int a n á l e x () /* analizador léxico */

{
int t;
while(l) {
t * getchar();
it (t = " ¡ ¡ t = ’\ f )
; /* e l i m i n a e s p a c i o s e n b l a n c o */
e l s e if (t = = '\n')
n u m l í n e a = n u m l í n e a + 1;
2.9 R E U N IO N DE LAS TECNICAS 75

e l s e if (isdigit(t)) { /* t es un d í g i t o */
ungetc(t, st d i n ) ;
scanf("%d", & v a l c o m p l e x );
r e t u r n NUM;

}
e l s e if (isalpha(t)) ( /* t e s una letra */
int p, b = 0;
while (isalnum(t)) { /* t es alfanumérico */
buflex(b) = t;
t = getchar();
b = b + 1;
if (b >= T A M B U F F )
error("error del compilador");

}
b u f l e x [bJ = FDC;
if (t 1= EOF)
ungetc(t, st d i n ) ;
p = busca(buflex);
if (p = = 0)
p = inserta(buflex, ID);
valcomplex = p;
return tablasimb(pj.complex;

}
e l s e if (t = = EOF)
return FIN;
else {
v a l c o m p l e x = NING U N O ;
r e t u r n t;

1
)
}

/**** analizsint.c *****************************************/

#include "global.h"

int p r e a n á l i s i s ;

análsint() /* a n a l i z a s i n t á c t i c a m e n t e y t r a d u c e la l i s t a de
la e x p r e s i ó n */

{
preanálisis = análex();
while (preanálisis 1= F I N ) {
expr(); parea( V ) ;

}
}
76 l ' N C O M PIL A D O R SENCILLO D F U N A PASADA

e x p r ( )

{
int t;
t é r m i n o ( );
w h i l e (1 )
sw itc h ( p r e a n á lis is ) {
ca se V : case

t = p r e a n á lis is ;
parea (preanálisis); término(); emite(t, NINGUNO);
continúe;
default:
re t u r n ;

}
i

término()

(
int t;
f a c t o r ();
while(1 )
switch (preanálisis) {
case case c a s e DIV: c a s e MOD:
t = preanálisis;
parea (preanálisis); factor(); emite(t, NINGUNO)
continúe;
default:
return;

}
(

f a c t o r ()

{
s w i t c h ( p r e a n á l i s i s ) {
ca se '(':
p a r e a ('('); e x p r ( ) ; p a r e a (')'); b r e a k ;
c a s e NUM:
e m i t e (NUM, valcomplex); parea(NUM); break;
c a s e ID:
emite(ID, valcomplex); parea(ID); break;
default:
error("error de sintaxis");

}
)
p a r e a (t )
int t;

(
2.9 R E U N IO N D E LAS TECNICAS 77

if (preanálisis = t)
preanálisis = análex();
else error ("error de sintaxis");

}
/**** emisor.c *********************************************/

# include "global.h"

emite(t, tval) / * g e n e r a la s a l i d a */
int t, tval;

{
switch(t) {
case case case case
p r i n t f ("%c\n", t); break;
c a s e DIV:
p r i n t f ("DIV\n" ); break;
c a s e MOD:
p r i n t f ( "MOD\n" ) ; break;
c a s e NUM:
p r i n t f (" % d \ n " , t v a l ) ; break;
case ID:
p r i n t f (" % s \ n " , t a b l a s i m b [ t v a l } .a p l e x ); break;
default:
p r i n t f (" c o m p l e x %d, v a l c o m p l e x %d\n", t, tval);

}
}
/**** símbolos.c *******************************************/

# include "global.h"
^define MAXLEX 999 /* t a m a ñ o de la m a t r i z d e lexemas */
# d e f i n e MAXSIMB 100 /* tamaño de tablasimb */

char lexemas(MAXLEX];
int u l t c a r = -1; /* última posición usada en los l e x e m a s */
struct entrada t a b l a s i m b [ M A X S I M B ] ;
int ultent = 0 ; /* ú l t i m a p o s i c i ó n u s a d a e n t a b l a s i m b */

int busca(s) /* d e v u e l v e la p o s i c i ó n d e l e l e m e n t o de e n t r a d a
d e s */
c h a r s [];

{
int p;
for (p = u l t e n t ; p > 0 ; p = p - l )
if (s t r c m p ( t a b l a s i m b [ p ] . a p l e x , s) = = 0)
r e t u r n p;
return 0;
78 U N C O M PIL A D O R SENCILLO D E U N A PASADA

int i n s e r t a (s , c l e x ) /* devuelve la p o s i c i ó n d e l e l e m e n t o de
e n t r a d a d e s */
c h a r s (];
int clex;

¡
int Ion;
Ion = s t r l e n ( s ) ; /* strlen evalúa la l o n g i t u d d e s */
if (u l t e n t + 1 >= M A X S I M B )
e r r o r (" t a b l a d e símbolos llena " ) ;
if (u l t c a r + I o n + 1 >= M A X L E X )
e r r o r (" m a t r i z d e lexemas llena " ) ;
ultent = u l t e n t + 1;
t a b l a s i m b í u l t e n t ] . c o m p l e x = clex;
t a b l a s i m b [ u l t e n t ] .aplex = ¿¿lexemas (u l t c a r + 1 );
ultcar = ultcar + Ion + 1;
s t r c p y (t a b l a s i m b [ u l t e n t ] . a p l e x , s);
r e t u r n ul t e n t ;

/**** inic.c /

# include "global.h"

struct entrada palsclave(] = {


"div", DIV,
"mod", MOD,
0, 0

struct entrada *p;


for (p = p a l s c l a v e ; p->complex; p++)
i n s e r t a (p - > a p l e x , p - > c o m p l e x );

/**** error.c /

# include "global.h"

error(m) /* genera todos los m e n s a j e s d e e r r o r */


char *m;

i
f p r i n t f (s t d e r r , " l í n e a %d: %s\n", numlínea, m);
exit(l); /* t e r m i n a c i ó n s i n é x i t o */

)
EJERCICIOS 79

/**** principal.c ******************************************/

# include "global.h"

main()

{
inic( )t
a n á l s i n t ();
exit(O); /* t e r m i n a c i ó n c o n é x i t o */

) -

E JE R C IC IO S

2.1 C o n s id é re s e la g ra m á tic a in d e p e n d ie n te del c o n te x to

S - > S S + | S S * |a

a) D e m u é s tre s e c ó m o se p u e d e g e n e ra r la c a d e n a a a + a * c o n esta g ra m á tic a .


b) C o n s tru y a s e u n á rb o l d e a n álisis s in tá c tic o p a r a esta c a d e n a .
c) ¿ Q u é le n g u a je g e n e ra esta g ra m á tic a ? E x p liq ú e se la respuesta.

2 .2 ¿ Q u é len g u ajes g e n e r a n la s sig u ie n tes g ra m á tic a s? E n c a d a caso, e x p liq ú e s e la


respuesta.
a) S -* o S 1 o i
b) S - > + S .S - S S |a
c) S - > S ( S ) S | €
d) S - > a S b S \b S a S \ c
e) S - > a | 5 + 5 | 5 5 | 5 * | ( S )

2 3 ¿ C u á le s d e las g ra m á tic a s del e jercicio 2 .2 s o n a m b ig u a s?

2 .4 C o n stru y ase u n a g ra m á tic a in d e p e n d ie n te del c o n te x to n o a m b ig u a p a ra cada


u n o d e los len g u ajes siguientes. E n c a d a caso, d e m u é s tre s e q u e la g ra m á tic a
es co rrecta.
a ) E x p r e s io n e s a r it m é t ic a s d e n o t a c ió n p o s tfija .
b) L istas a so c ia tiv a s p o r la iz q u ie r d a d e id e n tific a d o re s s e p a ra d o s p o r co m as.
c) L istas a so c ia tiv a s p o r la d e r e c h a d e id e n tific a d o re s s e p a ra d o s p o r co m as.
d ) E x p re s io n e s a r itm é tic a s d e e n te r o s e id e n tific a d o re s c o n los c u a t r o o p e ra ­
d o re s b in a rio s +, *, / .
e) A ñ á d a n s e los o p e r a d o r e s m á s y m e n o s u n a rio s a los o p e r a d o r e s a r itm é ti­
cos d e (d).

* 2 .5 a) D e m u é s tre s e q u e to d a s las c a d e n a s b in a ria s g e n e r a d a s p o r la sig u ie n te g ra ­


m á tic a tie n e n v alo res d iv isib les p o r 3. Sugerencia : U tilícese in d u c c ió n so­
bre el n ú m e r o d e n o d o s e n u n á rb o l d e a n á lis is sin tá ctic o .

n ú m —» 11 | í o o i ! n ú m o | n ú m nú m
80 U N CO M PILADO R SENCILLO DE U N A PASADA

b) ¿ G e n e ra la g ra m á tic a to d a s las c a d e n a s b in a ria s c o n v alo res divisibles p o r 3?

2.6 C o n s tru y a s e u n a g ra m á tic a in d e p e n d ie n te del c o n te x to p a r a los n ú m e r o s r o ­


m a n o s.

2.7 C o n s tr ú y a s e un e s q u e m a d e tr a d u c c ió n d irig id a p o r la s in ta x is q u e tra d u z c a


e x p r e s io n e s a r itm é tic a s d e n o ta c ió n in flja a n o ta c ió n p re fija , e n la q u e u n
o p e r a d o r a p a re c e a n te s q u e s u s o p e ra n d o s ; p o r e je m p lo , - x y es la n o ta c ió n
prefija d e x —y . C o n s tru y a n s e á rb o le s d e a n álisis s in tá c tic o c o n a n o ta c io n e s
p a r a las e n tr a d a s 9 - 5 + 2 y 9 - 5 * 2 .

2.8 C o n s trú y a s e u n e s q u e m a d e tr a d u c c ió n d irig id a p o r la s in ta x is q u e tra d u z c a


e x p re s io n e s a r itm é tic a s d e n o ta c ió n p o stfija a n o ta c ió n infija. C o n s trú y a n s e
á r b o le s d e a n á lis is s in tá c tic o c o n a n o t a c i o n e s p a r a la s e n t r a d a s 9 5 - 2 * y
9 5 2 * -.
2 .9 C o n s trú y a s e u n e s q u e m a d e tr a d u c c ió n d irig id a p o r la sin ta x is q u e tra d u z c a
e n te ro s a n ú m e r o s ro m a n o s .

2 .1 0 C o n s tr ú y a s e u n e s q u e m a d e tr a d u c c ió n d irig id a p o r la s in ta x is q u e tra d u z c a
n ú m e r o s r o m a n o s a en tero s.
2.11 C o n s tr ú y a n s e lo s a n a liz a d o r e s s in tá c tic o s d e s c e n d e n te s re c u rs iv o s p a r a las
g ra m á tic a s del ejercicio 2 .2 a), b) y c).
2.12 C o n s trú y a s e u n tr a d u c to r d irig id o p o r la s in ta x is q u e c o m p r u e b e si to d o s los
p a ré n te sis d e u n a c a d e n a d e e n t r a d a e s tá n e q u ilib ra d o s d e m a n e r a a p ro p ia d a .
2 .1 3 L as s ig u ie n te s reglas d e fin e n la t r a d u c c ió n d e u n a p a la b r a e n in g lés al scu-
d o la tín :
a) Si la p a la b ra c o m ie n z a c o n u n a c a d e n a n o v acía d e c o n s o n a n te s , d e sp la z a r
la c a d e n a in icial d e c o n s o n a n te s al final d e la p a la b ra y a ñ a d i r el su fijo a y ;
p o r e je m p lo , p i g se c o n v ie r te e n i g p a y .
b) Si la p a la b ra c o m ie n z a c o n u n a v o cal, a ñ a d i r el su fijo y a y ; p o r e je m p lo ,
o w l se c o n v ie rte e n o w l y a y .
c) u d e s p u é s d e u n a Q es u n a c o n s o n a n te .
d ) Y al in ic io d e u n a p a la b ra es u n a vocal si n o v a s e g u id a d e u n a vocal.
e ) L as p a la b ra s d e u n a sola letra n o se m o d ific a n .

C o n s tr ú y a s e u n e s q u e m a d e tr a d u c c ió n d irig id a p o r la s in ta x is p a r a el seu-
d o latin .
2 .1 4 E n el le n g u a je d e p r o g ra m a c ió n C . la p ro p o s ic ió n fo r tie n e la fo rm a:
f o r ( e x p ry ; expr 2 ; e x p r y ) prop

La p r im e ra ex p resió n se ejecu ta a n te s del lazo; g e n e ra lm e n te se utiliza p a ra ini-


cializar el ín d ice del lazo. La seg u n d a expresión es u n a p ru e b a realizad a an tes
d e c a d a iteració n del lazo; se sale del lazo si la ex p resió n se co n v ie rte e n 0. El
ciclo en si m is m o consiste en u n a p ro p o sició n { prop cxpry \ }. L a tercera expre­
sión se ejecu ta al final d e c a d a iteració n ; p o r lo general, se usa p a r a in c re m e n ­
ta r el ín d ice del lazo. El significado d e la p ro p o sició n for es sim ila r a

e x p rx ; w h i l e ( expr2 ) { prop e x p r y ; [
EJERCICIOS D E P R O G R A M A C I O N 81

C o n s tr u y a s e u n e s q u e m a d e tr a d u c c ió n d irig id a p o r la sin ta x is p a ra tra d u c ir


p ro p o s ic io n e s fo r d e C al c ó d ig o d e la m á q u in a d e pila.

* 2 .1 5 C o n s id é re s e la sig u ien te p ro p o sic ió n for:

for / : = 1 s t e p 10 - j u n til 10 * j d o j : = j + I

S e p u e d e n d a r tres d efin ic io n e s s e m á n tic a s p a r a esta p ro p o s ic ió n . L a p rim e ra


es q u e el lim ite 10 * j y el in c re m e n to 10 - j d e b e n ser e v a lu a d o s u n a vez
a n te s del la z o c o m o e n P L /I . P o r e je m p lo , si j = 5 a n te s del lazo, h a b ría q u e
re c o rre r el lazo d ie z veces y se sald ría. E xiste u n s e g u n d o sig n ificad o, c o m p le ­
ta m e n te d istin to , c u a n d o es n ecesario e v a lu a r el lím ite y el in c r e m e n to c a d a
vez q u e se re c o rre el lazo. P o r e je m p lo , si j = 5 a n te s d e l lazo, el ciclo n o
te rm in a r ía n u n c a . U n te rc e r sig n ificad o e sta ría d e te r m in a d o p o r los len g u ajes
d e tip o A L G O L . C u a n d o el in c r e m e n to es n eg ativ o , la p r u e b a re a liz a d a para
la c o n c lu s ió n del lazo es /' < 10 * j , y n o / > 10 * j. P a ra c a d a u n a d e estas
tres d e fin ic io n e s se m á n tic a s , c o n s tru y a s e u n e s q u e m a d e tr a d u c c ió n dirigid a
p o r la sin ta x is p a r a tr a d u c ir esto s tres la zo s fo r al c ó d ig o d e la m á q u in a de
pila.

2 .1 6 C o n sid érese el siguiente fra g m e n to d e g ra m á tic a p a ra las p ro p o sicio n es if-then


e ¡f-th en -else:

prop —> if e x p r th e n prop


| i f e x p r th en prop e l s e prop
o tra s

d o n d e o t r a s re p re s e n ta a las d e m á s p ro p o s ic io n e s del lenguaje.


a ) D e m u é s tre s e q u e esta g ra m á tic a es a m b ig u a .
b) C o n s tru y a s e u n a g ra m á tic a n o a m b ig u a e q u iv a le n te q u e aso cie c a d a e l s e
c o n el th en sin e m p a r e ja r in m e d ia ta m e n te an te rio r.
c) C o n s tru y a s e u n e s q u e m a d e tr a d u c c ió n d irig id a p o r la sin ta x is b a s a d o en
esta g ra m á tic a p a ra tr a d u c ir p ro p o s ic io n e s c o n d ic io n a le s al c ó d ig o d e la
m á q u in a d e pila.

* 2 .1 7 C o n s tru y a s e u n e s q u e m a d e tr a d u c c ió n d irig id a p o r la s in ta x is q u e tra d u z c a


e x p re sio n e s a r itm é tic a s d e n o ta c ió n in fija a e x p re sio n e s a r itm é tic a s d e n o t a ­
c ió n in fija sin p a ré n te sis re d u n d a n te s . M u éstrese el árb o l d e a n álisis s in tá c ­
tico c o n a n o ta c io n e s p a r a la e n t r a d a ( ( ( 1 + 2 ) * ( 3 * 4 ) ) + 5 ) .

E JE R C IC IO S D E P R O G R A M A C IO N

P 2 .1 A p liq ú e se u n tr a d u c to r d e e n te ro s a n ú m e r o s r o m a n o s b a s a d o e n el e s q u e m a
d e tr a d u c c ió n d irig id a p o r la sin ta x is d e s a rro lla d o en el e jercicio 2.9.

P 2 .2 M o d ifiq ú e se el tr a d u c to r d e la secció n 2.9 c o n o b je to d e p r o d u c ir c o m o s a ­


lida u n c ó d ig o p a r a la m á q u in a d e p ila a b s tra c ta d e la secció n 2.8.

P 2 .3 M o d ifiq ú e se el m ó d u l o d e re c u p e ra c ió n d e e rro re s del tr a d u c to r d e la sección


2.9 p a r a s a lta r a la sig u ie n te e x p re s ió n d e e n t r a d a al e n c o n t r a r u n erro r.
82 U N C O M PIL A D O R SENCILLO DE U N A PASADA

P 2 .4 A m p líe s e el tr a d u c to r d e la secció n 2 .9 p a r a m a n e ja r to d a s la s e x p re s io n e s de
Pascal.

P 2 .5 A m p líe s e el c o m p i l a d o r d e la se c c ió n 2 .9 p a r a tr a d u c i r a c ó d ig o d e la m á ­
q u i n a d e pila las p ro p o s ic io n e s g e n e ra d a s p o r la g ra m á tic a siguiente:

prop - » id : = expr
I i f expr th e n prop
w hile e x p r d o prop
begin p ro p s-o p c end
p ro p s-o p c - > listd -p ro p s | €
lislu -p ro p s - » lista-props : prop | prop

* P 2 .6 C o n s tr u y a s e u n c o n j u n t o d e e x p re sio n e s d e p r u e b a p a r a el c o m p ila d o r d e la
secció n 2.9. d e m o d o q u e c a d a p ro d u c c ió n se use c o m o m í n i m o u n a v ez p a ra
o b te n e r a lg u n a ex p resió n d e p ru e b a . C o n s tru y a s e u n p ro g ra m a d e p ru e b a q u e
p u e d a s e r u tiliz a d o c o m o h e r r a m i e n ta g e n e ra l d e p r u e b a p a r a los c o m p i l a ­
d ores. U tilícese el p r o g r a m a d e p r u e b a p a r a e je c u ta r su c o m p ila d o r c o n esas
e x p re sio n e s d e p ru e b a .

P 2 .7 C o n s tr ú y a s e u n c o n ju n to d e p ro p o s ic io n e s d e p r u e b a p a r a el c o m p ila d o r del
ejercicio P2.5, d e m o d o q u e c a d a p ro d u c c ió n se use c o m o m í n i m o u n a vez
p a ra g e n e ra r a lg u n a s p ro p o sicio n es d e p ru e b a . U tilícese el p ro g ra m a d e p ru e b a
del ejercicio P2.6 para ejecutar el compilador con estas expresiones de prueba.

N O T A S B IB L IO G R A F IC A S

E ste c a p ítu lo p r e li m in a r h a c e r e fe re n c ia a d iv e rs o s t e m a s tr a t a d o s m á s d e t a lla d a ­


m e n te e n el resto del libro. E n los c a p ítu lo s q u e c o n tie n e n in f o r m a c ió n ad ic io n a l se
h a c e referen cia a la b ibliografía r e c o m e n d a d a .
C h o m s k y [1956] in tro d u jo las g ram á tica s in d e p e n d ie n te s del c o n te x to c o m o parte
d e u n e s tu d io so b re los le n g u a je s n a tu ra le s . S u u tiliz a c ió n p a r a esp ecificar la sin taxis
d e lo s le n g u a je s d e p r o g ra m a c ió n su rg ió in d e p e n d ie n te m e n te . M ie n tra s tr a b a ja b a en
u n b o r r a d o r d e A L G O L 6 0 . J o h n B acku s “ a d a p t ó d e in m e d ia to (las p ro d u c c io n e s
d e E m il Post] a ese uso** (W e x e lb la t [1 98 1 , pág. 162]). L a n o ta c ió n r e s u lta n te fue
u n a v a ria n te d e las g ra m á tic a s in d e p e n d ie n te s del c o n te x to . El ling ü ista P a n in i d i­
s e ñ ó u n a n o ta c ió n sin tá c tic a e q u iv a le n te p a r a esp ecificar las reglas d e la g ra m á tic a
del s á n s c rito d e e n tr e el 4 0 0 a. d e C. y el 20 0 a. d e C . ( I n g e r m a n [1967]).
E n u n a c a rta d e K n u th [1964], está c o n t e n id a la p ro p u e s ta d e q u e B N F , q u e co ­
m e n z ó c o m o a b re v ia tu r a d e B ackus N o rm a l F orm (fo rm a n o r m a l d e B ackus), se le­
yera B ackus-N aur F orm ( f o r m a d e B a c k u s -N a u r), p a ra re c o n o c e r las c o n trib u c io n e s
d e N a u r c o m o e d i to r del in fo rm e d e A L G O L 6 0 ( N a u r [1963]).
L as d e fin ic io n e s d irig id a s p o r la sin ta x is s o n u n a fo rm a d e d e fin ic ió n in d u c tiv a
e n la c u a l la in d u c c ió n se e n c u e n t r a e n la e s tr u c tu r a sin tá ctic a. C o m o tales, h a n sido
m u y u tiliz a d a s in f o r m a lm e n te e n m a te m á tic a s . S u a p lic a c ió n a los le n g u a je s d e p ro ­
g ra m a c ió n se in tr o d u jo c o n el u s o d e u n a g ra m á tic a p a r a e s tr u c tu r a r el in f o r m e de
A L G O L 6 0 . P o c o ti e m p o d esp u és. Iro n s [1961] c o n s tr u y ó u n c o m p ila d o r d irig ido
p o r la sintaxis.
N O T A S BIBLIOGRAFICAS 83

El a n á lis is s in tá c tic o d e s c e n d e n te r e c u r s iv o se u tiliz a a p r o x i m a d a m e n t e d e s d e


1960. B a u e r [ 19 7 6 ] a trib u y e el m é to d o a l.u c a s (1961 ]. H o a re [ 19 6 2 b . pág. 128] d e s ­
c rib e u n c o m p ila d o r d e A L G O L o rg a n iz a d o c o m o “ u n c o n j u n t o d e p ro c e d im ie n to s ,
c a d a u n o d e los cu ales p u e d e p r o c e s a r u n a d e las u n id a d e s s in tá c tic a s del in fo rm e
d e A L G O L 6 0 ”. F o s te r [1 9 6 8 ] a n a l iz a la e l im in a c ió n d e la r e c u r s iv id a d p o r la iz­
q u ie r d a d e las p ro d u c c io n e s c o n a c c io n e s s e m á n tic a s q u e n o a fe c te n a los v alo res d e
los a trib u to s.
M c C a r th y [1963] a b o g a b a p o r q u e la tr a d u c c ió n d e u n le n g u a je se b a s a ra e n u n a
sin ta x is a b s tra c ta . E n el m is m o a r tíc u lo , M c C a r th y (1 9 6 3 , pág. 24] d e ja b a “q u e el
le c to r se c o n v e n c ie ra p o r sí m is m o “d e q u e u n a fo rm u la c ió n re c u rsiv a p o r el final
d e la f u n c ió n facto rial es e q u iv a le n te a u n p r o g r a m a iterativ o .
L as v e n ta ja s d e d iv id ir u n c o m p ila d o r e n u n a e ta p a in icial y o tr a final se a n a li­
z a ro n e n u n in fo rm e d e c o m ité d e S tr o n g y c o la b o ra d o re s [1 958]. El in fo rm e a c u ñ ó
el té r m in o U N C O L (siglas, e n inglés, d e len g u aje o r ie n t a d o a u n c o m p u t a d o r u n i­
versal. universal Computer oriented language) p a r a u n len g u aje in te r m e d io u n iv ersal.
El c o n c e p to h a q u e d a d o c o m o u n ideal.
U n a b u e n a fo rm a d e a p r e n d e r té c n ic a s d e im p la n ta c ió n es le er el c ó d ig o d e los
c o m p ila d o re s ex isten tes. L a m e n ta b le m e n te , n o se su ele p u b lic a r el cód ig o. R an d ell
y R ussell [1 9 6 4 ] h a c e n u n a a m p lia d e s c rip c ió n d e u n o d e los p r im e r o s c o m p ila d o re s
d e A L G O L . El c ó d ig o d e c o m p ila d o r e s ta m b ié n e s t r a t a d o p o r M c K e e m a n . H o r-
n in g y W o r tm a n [ 1970]. B a rro n [ 1981 ], es u n c o n j u n t o d e a r tíc u lo s s o b re la im p la n ­
ta c ió n d e Pascal, q u e in c lu y e n o ta s so b re im p la n ta c ió n d is trib u id a s c o n el c o m p ila ­
d o r d e Pascal P (N o ri y c o la b o r a d o r e s [1981]), d e ta lle s d e la g e n e ra c ió n d e código
( A m m a n n [1 9 7 7 ]) y el c ó d ig o p a r a u n a im p la n ta c ió n d e P ascal S. u n s u b c o n ju n to
d e Pascal d is e ñ a d o p o r W ir th [1 9 8 1 ] p a r a el u s o d e e s tu d ia n te s . K n u th [1985] d a
u n a d escrip ció n e x c e p c io n a lm e n te c la ra y d e ta lla d a del t r a d u c t o r d e T e X .
K e rn ig h a n y P ike [1 9 8 4 ] d e s c rib e n e n d e ta lle c ó m o c o n s tr u ir u n p r o g r a m a d e
c a lc u la d o ra d e e sc rito rio a p a r ti r d e u n e s q u e m a d e tr a d u c c ió n d irig id a p o r la s in ­
taxis. u tiliz a n d o las h e r r a m ie n ta s p a r a la c o n s tr u c c ió n d e c o m p ila d o r e s d isp o n ib le s
en el s is te m a o p e r a tiv o U N I X . I-a e c u a c ió n (2 .1 7 ) está t o m a d a d e T a n t z e n [1963].
1851

C A P IT U L O 3

Análisis
léxico

E ste c a p ítu lo tr a ta so b re las té c n ic a s p a r a e s p e c ific a r e im p la n t a r a n a liz a d o r e s léxi­


cos. U n a fo rm a sen cilla d e c re a r u n a n a liz a d o r léx ico co n siste e n la c o n s tru c c ió n d e
u n d ia g ra m a q u e ilu stre la e s tru c tu ra d e los c o m p o n e n te s léxicos del lenguaje fuente,
y d e s p u é s h a c e r la tr a d u c c ió n “a m a n o " d e l d ia g ra m a a u n p r o g r a m a p a r a e n c o n tr a r
los c o m p o n e n te s léxicos. D e esta fo rm a , se p u e d e n p r o d u c ir a n a liz a d o re s léxicos efi­
cientes.
L as té c n ic a s u tiliz a d a s p a r a c o n s t r u i r a n a liz a d o r e s léx ico s ta m b ié n se p u e d e n
a p lic a r a o tra s áreas, c o m o , p o r e je m p lo , a le n g u a je s d e c o n s u lta y s is te m a s d e re­
c u p e ra c ió n d e in f o r m a c ió n . E n c a d a a p lic a c ió n , el p r o b le m a d e f o n d o es la especi­
ficació n y d is e ñ o d e p r o g r a m a s q u e e je c u te n las a c c io n e s a c tiv a d a s p o r p a tr o n e s
d e n t r o d e las c a d e n a s. C o m o la p r o g r a m a c ió n d irig id a p o r p a tro n e s es d e m u c h a u ti­
lidad, se in tr o d u c e u n le n g u a je d e p a tró n - a c c ió n , lla m a d o L E X . p a ra esp ecificar los
a n a liz a d o re s léxicos. E n este len g u aje, los p a tr o n e s se esp ecifican p o r m e d io d e ex­
p re sio n e s regulares, y u n c o m p ila d o r d e L E X p u e d e g e n e ra r u n r e c o n o c e d o r d e las
e x p re sio n e s reg u lares m e d ia n te u n a u t ó m a t a fin ito eficiente.
O tr o s len g u ajes u tiliz an e x p re s io n e s reg u la re s p a r a d e s c rib ir p a tro n e s . P o r e je m ­
plo , el len g u aje a n a liz a d o r d e p a tr o n e s A W K u tiliz a e x p re sio n e s reg u la re s p a r a se­
le c c io n a r las lín e a s d e la e n t r a d a q u e se h a n d e p ro cesar, y el shell del s is te m a U N I X
p e rm ite al u s u a rio referirse a u n c o n j u n t o d e n o m b r e s d e a rc h iv o m e d ia n te la escri­
tu r a d e u n a e x p re sió n regular. L a in s tr u c c ió n rm * . o d e U N I X , p o r e je m p lo , b o rra
to d o s los a rc h iv o s c u y o s n o m b r e s t e r m i n e n e n “ . o " 1.
U n a h e r r a m ie n ta d e softw are q u e a u t o m a ti z a la c o n s tru c c ió n d e a n a liz a d o re s lé­
x ic o s p e rm ite q u e p e rs o n a s c o n d ife re n te s c o n o c im ie n to s utilicen la c o n c o rd a n c ia
d e p a tro n e s e n s u s p ro p ia s á re a s d e a p lic a c ió n . P o r e je m p lo , J a r v is [1 9 7 6 ] u tiliz ó un
g e n e r a d o r d e a n a liz a d o re s léx ico s p a r a c re a r u n p r o g r a m a q u e r e c o n o c e im p e rfe c ­
c io n e s e n ta rjetas d e c irc u ito s im p re s o s. L o s c irc u ito s se e x a m in a n d ig ita lm e n te y se
tr a n s f o r m a n e n “cadenas** d e s e g m e n to s d e recta a d is tin to s á n g u lo s. El “a n a liz a d o r
lé x ic o " b u sc a p a tro n e s c o r r e s p o n d ie n te s a im p e rfe c c io n e s e n la c a d e n a d e s e g m e n ­
to s d e recta. L a g ra n v e n ta ja d e u n g e n e r a d o r d e a n a liz a d o re s léxicos es q u e p u e d e

1 La e x p r e sió n * . o e s u n a v a ria n te d e la n o ta c ió n u su a l para la s e x p r e s io n e s regu lares. E n lo s ejer­


c ic io s 3 .1 0 y 3 .1 4 so m e n c io n a n a lg u n a s v a r ia n te s d e u s o c o m ú n d e la s n o ta c io n e s d e la s e x p r esio n es
regulares.
86 ANALISIS LEXICO

u tiliz ar los a lg o ritm o s m á s c o n o c id o s d e c o n c o r d a n c ia d e p a tro n e s, c o n lo c u a l crea


a n a liz a d o re s léxicos efic ien te s p a r a los n o esp ecialistas e n d ic h a s técnicas.

3.1 F U N C I O N D E L A N A L I Z A D O R L E X I C O

El a n a liz a d o r léxico es la p r im e ra fase d e u n c o m p ila d o r. Su p rin cip al fu n c ió n c o n ­


siste e n leer los c a ra c te re s d e e n t r a d a y e la b o r a r c o m o salid a u n a se c u e n c ia d e c o m ­
p o n e n te s léxicos q u e u tiliza el a n a liz a d o r s in tá c tic o p a r a h a c e r el análisis. E sta in­
te ra c c ió n . e s q u e m a tiz a d a e n la figura 3 .1 , su ele a p licarse c o n v irtie n d o al a n a liz a d o r
léxico en u n a s u b r u tin a o c o r r u tin a del a n a liz a d o r sin tá ctic o . R e c ib id a la o rd e n “ob-
té n el sig u ie n te c o m p o n e n te léxico'* del a n a liz a d o r s in tá c tic o , el a n a liz a d o r léxico
lee los c a ra c te re s d e e n tr a d a h asta q u e p u e d a id e n tific a r el sig u ien te c o m p o n e n t e lé­
xico.

Fig. 3.1. Interacción d e un an alizado r léxico co n el an alizado r sintáctico.

C o m o el a n a liz a d o r léxico e s la p a rte del c o m p ila d o r q u e lee el te x to fu e n te , ta m ­


bién p u e d e rea liz a r c ie rta s f u n c io n e s s e c u n d a r ia s e n la in te rfa z d e l u s u a rio , c o m o
e lim in a r del p ro g ra m a f u e n te c o m e n ta r io s y e sp a c io s e n b la n c o en f o r m a d e c a ra c ­
teres d e e s p a c io e n b la n c o , c a ra c te re s T A B y d e lín ea n u e v a . O t r a fu n c ió n e s relacio ­
n a r los m e n sa je s d e e r r o r d e l c o m p ila d o r c o n el p r o g r a m a fu e n te . P o r e je m p lo , el
a n a liz a d o r léxico p u e d e te n e r lo c a liz a d o el n ú m e r o d e c a ra c te re s d e n u e v a lín e a d e ­
tectados. d e m o d o q u e se p u e d a aso ciar u n n ú m e r o d e línea c o n u n m e n saje d e error.
E n algu i o s c o m p ila d o re s , el a n a liz a d o r léx ico se e n c a rg a d e h a c e r u n a c o p ia d e l p ro ­
g ra m a fu e n te e n el q u e e s tá n m a rc a d o s los m e n s a je s d e e rro r. Si el le n g u a je fu en te
es la a s e d e a lg u n a s fu n c io n e s d e p r e p r o c e s a m ie n to d e m a c ro s . e n to n c e s esas fu n ­
c io n e s del p re p ro c e s a d o r ta m b ié n se p u e d e n a p lic a r al h a c e r el a n álisis léxico.
E n a lg u n a s o casio n es, lo s a n a liz a d o re s léxicos se d iv id e n e n u n a c a s c a d a d e dos
fases; la p r im e ra , lla m a d a ‘" e x a m e n " , y la seg u n d a, “a n álisis léxico” . El e x a m in a d o r
se en carg a d e rea liz a r ta re a s sencillas, m ie n tr a s q u e el a n a liz a d o r léxico e s el q u e rea­
liza las o p e r a c i o n e s m á s c o m p le ja s . P o r e j e m p lo , u n c o m p i l a d o r d e F O R T R A N
•uede u tiliz ar u n e x a m in a d o r p a r a e lim in a r e sp a c io s e n b la n c o d e la e n tra d a .

A sp e c to s del a n á lis is léxico


H a y v arias r a z o n e s p a r a d iv id ir la fase d e a n álisis d e la c o m p ila c ió n en análisis
léxico y a n álisis sin táctico.
3.1 F U N C IO N DEL A N A L IZ A D O R LEXICO 87

1. U n d is e ñ o se n c illo es q u iz á la c o n s id e ra c ió n m á s im p o r ta n te . S e p a ra r el análisis
léxico del a n álisis s in tá c tic o a m e n u d o p e r m ite s im p lific a r u n a u o tr a d e d ic h a s
fases. P o r e je m p lo , u n a n a liz a d o r s in tá c tic o q u e in clu y a las c o n v e n c io n e s d e los
c o m e n ta r io s y esp acio s e n b la n c o es b a s ta n te m á s c o m p le jo q u e u n o q u e p u e d a
c o m p r o b a r si los c o m e n ta r io s y e sp a c io s e n b la n c o ya h a n sid o e lim in a d o s p o r
el a n a liz a d o r léxico. Si se está d is e ñ a n d o u n len g u aje n u e v o , la s e p a r a c ió n d e las
c o n v e n c io n e s léxicas d e las s in tá c tic a s p u e d e d a r o rig en a u n d is e ñ o del len g u aje
m á s claro.
2. S e m e jo r a la efic ien cia del c o m p ila d o r. U n a n a liz a d o r léxico in d e p e n d ie n te p e r­
m ite c o n s tr u ir u n p ro c e s a d o r esp e c ia liz a d o y p o tc n c ia lm c n tc m á s e fic ien te p a ra
esta fu n c ió n . G r a n p a rte d e tie m p o se c o n s u m e en leer el p r o g r a m a f u e n te y d i­
v id irlo e n c o m p o n e n te s léxicos. C o n té c n ic a s e sp ecializ ad as d e m a n e jo d e bu -
ffe rs p a r a la le c tu ra d e c a ra c te re s d e e n tr a d a y p r o c e s a m ie n to d e c o m p o n e n te s
léxicos se p u e d e m e jo r a r s ig n ific a tiv a m e n te el r e n d im ie n to d e u n c o m p ila d o r.
3. Se m e jo ra la tra n s p o r ta b iü d a d del c o m p ila d o r. L as p e c u lia rid a d e s del alfa b e to
d e e n t r a d a y o tra s a n o m a lía s p ro p ia s d e los d is p o s itiv o s p u e d e n lim ita rs e al a n a ­
liz a d o r léxico. L a re p re s e n ta c ió n d e s ím b o lo s especiales o n o e s tá n d a r, c o m o t
e n P ascal, p u e d e n ser a isla d a s e n el a n a liz a d o r léxico.
S e h a n d is e ñ a d o h e r r a m ie n ta s e sp ecializ ad as q u e a y u d a n a a u to m a tiz a r la c o n s ­
tru c c ió n d e a n a liz a d o re s léxicos y a n a liz a d o re s s in tá c tic o s c u a n d o e s tá n sep arad o s.
E n este lib ro se tr a ta r á n a lg u n o s e je m p lo s d e estas h e rra m ie n ta s .

C o m p o n e n t e s lé x ic o s , p a tr o n e s y le x e m a s

C u a n d o se m e n c io n a el a n á lis is s in tá c tic o , los t é r m i n o s “c o m p o n e n t e lé x ic o " (to-


k e n ), “ p a t r ó n ” y “ le x e m a " se e m p le a n c o n sig n ificad o s específicos. E n la fig u ra 3.2
a p a re c e n e je m p lo s d e d ic h o s usos. E n g en eral, h a y u n c o n j u n t o d e c a d e n a s e n la e n ­
tra d a p a r a el c u a l se p r o d u c e c o m o salid a el m i s m o c o m p o n e n te léxico. E ste c o n ­
j u n t o d e c a d e n a s se d e sc rib e m e d ia n te u n a regla lla m a d a pairan a s o c ia d o al c o m ­
p o n e n t e léxico. S e d ic e q u e el p a tró n concuerda c o n c a d a c a d e n a del c o n ju n to . U n
le x e m a es u n a s e c u e n c ia d e c a ra c te re s en el p r o g r a m a fu e n te c o n la q u e c o n c u e r d a
el p a tró n p a r a u n c o m p o n e n te léxico. P o r e je m p lo , e n la p ro p o sic ió n d e Pascal

const pi = 3.1416;

la s u b e a d e n a p i e s u n le x e m a p a r a el c o m p o n e n te léx ico “ id e n tific a d o r”.

C o m ponente
Le x e m a s d e Eje m pl o D e s c r ip c ió n I n f o r m a i d e i P a t r ó n
L é x ic o

eo n st const const
if if if
re la ció n <, <=. =, O , >, >= < o <= 0 = 0 0 0 > = 0 >
id pi, cuenta, D2 letra seguida de letras y dígitos
núm 3. 1 4 1 6 , 0, 6.02E23 cualquier constante numérica
lite r a l "vaci a d o d e m e m o r i a " cualquier carácter entre " y excepto "

Fig. 3 . 2 . E je m p lo s d e c o m p o n e n t e s léxicos.
88 ANALISIS LEXICO

L o s c o m p o n e n te s léxicos se tr a ta n c o m o s ím b o lo s te rm in a le s d e la g ra m á tic a del


len g u aje fu en te , c o n n o m b r e s en n e g r ita s p a r a rep resen ta rlo s. L os le x e m a s p a r a el
c o m p o n e n te léxico q u e c o n c u e r d a n c o n el p a tró n re p re s e n ta n c a d e n a s d e carac teres
e n el p ro g ra m a fu e n te q u e se p u e d e n t r a t a r j u n t o s c o m o u n a u n id a d léxica.
E n la m a y o ría d e los le n g u a je s d e p r o g ra m a c ió n , se c o n s id e ra n c o m p o n e n te s lé­
x ic o s las sig u ie n tes c o n stru c c io n e s: p a la b ra s clave, o p e ra d o re s , id e n tific a d o re s, c o n s ­
ta n te s . c a d e n a s literales y signos d e p u n tu a c ió n , c o m o parén tesis, c o m a y p u n t o y
c o m a . E n el e je m p lo a n te r io r , c u a n d o la s e c u e n c ia d e c a ra c te re s p i a p a re c e en el
p r o g r a m a fu en te , se d e v u e lv e al a n a liz a d o r s in tá c tic o u n c o m p o n e n te léx ico q u e re­
p re s e n ta u n id e n tific a d o r. L a d e v o lu c ió n d e u n c o m p o n e n te léxico a m e n u d o se re a ­
liza m e d ia n te el p a s o d e u n n ú m e r o e n te r o c o r r e s p o n d ie n te al c o m p o n e n te léxico.
E ste e n te r o es al q u e h a c e referen cia el id en n e g r ita s d e la figura 3.2.
U n p a tró n es u n a regla q u e d e sc rib e el c o n j u n t o d e le x em as q u e p u e d e n r e p re ­
s e n ta r a u n d e te r m in a d o c o m p o n e n te léxico e n los p ro g ra m a s fu en te . E l p a t r ó n p a ra
el c o m p o n e n te léxico c o n s t d e la figura 3.2 es s im p le m e n te la c a d e n a sen cilla c o n s t
q u e d e le tre a la p a la b ra clave. El p a tró n p a r a el c o m p o n e n te léxico r e la c ió n es el c o n ­
j u n t o d e los seis o p e r a d o r e s relació n ales d e P ascal. P a ra d e s c rib ir c o n precisió n los
p a tro n e s p a r a c o m p o n e n te s léxicos m á s c o m p le jo s, c o m o id ( p a ra id e n tific a d o r) y
núni ( p a ra n ú m e ro ) , se u tiliz a rá la n o ta c ió n d e e x p re sio n e s reg u lares d e s a rro lla d a en
la secció n 3.3.
C ie rta s c o n v e n c io n e s del le n g u a je se reflejan e n la d ific u lta d d e l a n álisis léxico.
A lg u n o s lenguajes, c o m o F O R T R A N , exigen q u e c i e ñ a s c o n s tru c c io n e s a p a re z c a n
e n posiciones fijas e n la línea d e e n tra d a . P o r ta n to , la a lin eació n d e u n lexem a pued e
ser i m p o r ia n te p a r a d e te r m in a r si u n p r o g r a m a f u e n te es o n o c o rre c to . E n el d iseñ o
d e le n g u a je s m o d e r n o s se tie n d e a la e n t r a d a in d e p e n d ie n t e d e l f o r m a to , p e r m i ­
tie n d o la co lo c a c ió n d e las c o n s tru c c io n e s e n c u a lq u ie r p a r te d e la lin ea d e e n tra d a ,
d e m o d o q u e este a s p e c to del a n álisis léxico está p e r d ie n d o im p o r ta n c ia .
El tr a ta m ie n to d e los esp acio s e n b la n c o v aría m u c h o d e u n le n g u a je a o tr o . En
a lg u n o s lenguajes, c o m o F O R T R A N o A L G O L 6 8 . los e sp a c io s e n b la n c o n o son
significativos, e x c e p to en las c a d e n a s literales, y se p u e d e n a ñ a d i r a v o lu n ta d para
m e jo r a r la legibilidad d e u n p ro g ra m a . I-as c o n v e n c io n e s rela tiv as a los e sp a c io s en
b la n c o p u e d e n c o m p lic a r m u c h o la ta re a d e id e n tific a r los c o m p o n e n te s léxicos.
U n e je m p lo b a s ta n te c o n o c id o q u e ilu stra la d ific u lta d p o te n c ia l de re c o n o c e r
los c o m p o n e n te s léxicos e s la p ro p o s ic ió n d o d e F O R T R A N . E n la p ro p o sic ió n

DO 5 I = 1 .2 5

n o se p u e d e s a b e r h asta v e r el p u n t o d e c im a l si do es u n a p a la b ra clave, o es m ás
b ie n p a rte del id e n tific a d o r D 0 5 I . P o r o tr o la d o , e n la p ro p o sició n

DO 5 I = 1 , 2 5

hay siete c o m p o n e n te s léxicos, q u e c o rre s p o n d e n a la p a la b ra clave DO. la e tiq u e ta


d e p ro p o s ic ió n 5 . el id e n tific a d o r I , el o p e r a d o r =, la c o n s ta n te 1, la c o m a y la c o n s ­
ta n te 2 5 . A q u í, n o se p u e d e e s ta r seg u ro h a s ta e n c o n t r a r la c o m a si DO es u n a p a la ­
b ra clave. P a r a s o lv e n ta r esta in c e r tid u m b r e , F O R T R A N 77 p e r m i te in c lu ir u n a
c o m a o p c io n a l e n tr e la e tiq u e ta y el ín d ic e d e la p ro p o s ic ió n DO. S e r e c o m ie n d a el
u s o d e esta c o m a p o r q u e a y u d a a h a c e r m á s c la ra y legible la p ro p o sic ió n DO.
3.1 FU N C IO N DEL A N ALIZADO R LEXICO 89

E n m u c h o s lenguajes, c ie rta s c a d e n a s s o n reservadas ; es d ecir, su sig n ificad o está


p re d e f in id o y el u s u a r io n o lo p u e d e m o d if ic a r . Si las p a la b r a s c lav e n o s o n reser­
v a d a s, e n to n c e s el a n a l i z a d o r lé x ic o d e b e d is tin g u ir e n t r e u n a p a la b r a c la v e y un
id e n tific a d o r d e fin id o p o r el u s u a rio . E n P L /I , las p a la b ra s clave n o s o n reservadas,
p o r lo q u e las reglas p a r a d is tin g u ir las p a la b ra s clave d e lo s id e n tific a d o re s son bas­
ta n te c o m p lic a d a s , c o m o ilustra la sig u ie n te p ro p o s ic ió n d e P L /I:

IF T H E N T H E N T H E N = ELSE; ELSE ELSE = THEN;

A trib u to s d e los c o m p o n e n te s léxicos

C u a n d o c o n c u e r d a c o n u n le x e m a m á s d e u n p a tró n , el a n a liz a d o r léxico d e b e p ro ­


p o r c io n a r in fo rm a c ió n a d ic io n a l so b re el le x e m a c o n c r e to q u e c o n c o r d ó c o n las si­
g u ie n te s fases del c o m p ila d o r . P o r e je m p lo , el p a tró n n ú m c o n c u e r d a c o n la s c a d e ­
n a s 0 y 1, p e ro es in d isp e n sa b le q u e el g e n e r a d o r d e c ó d ig o c o n o z c a q u é c a d e n a fue
re a lm e n te la q u e se e m p a re jó .
El a n a l iz a d o r léx ico reco g e i n f o r m a c ió n s o b r e los c o m p o n e n t e s léx ico s e n sus
a tr ib u to s aso ciad o s. L o s c o m p o n e n te s léx ico s in flu y e n e n las d ecisio n es del análisis
s in tá c tic o , y los a trib u to s , e n la tr a d u c c ió n d e los c o m p o n e n te s léxicos. E n la p r á c ­
tica, los c o m p o n e n te s léxicos su elen te n e r u n so lo a tr ib u to — u n a p u n t a d o r a la e n ­
tra d a d e la ta b la d e s ím b o lo s d o n d e se g u a r d a la in f o r m a c ió n s o b re el c o m p o n e n te
léxico; el a p u n t a d o r se c o n v ie rte en el a tr ib u to del c o m p o n e n te léxico. A efecto s d e
d ia g n ó stico , p u e d e c o n s id e ra rs e t a n t o el le x e m a p a r a u n id e n tific a d o r c o m o el n ú ­
m e r o d e lin e a en el q u e éste se e n c o n t r ó p o r p r im e ra vez. E stos d o s e le m e n to s d e
in fo rm a c ió n se p u e d e n a lm a c e n a r e n la e n t r a d a d e la ta b la d e s ím b o lo s p a r a el id e n ­
tificad o r.

E jem p lo 3 .1 . L o s c o m p o n e n te s léx ico s y los v alo res de a tr i b u to s a s o c ia d o s p a r a la


p ro p o sic ió n d e F O R T R A N .

E = M * C ** 2

se e sc rib e n a c o n tin u a c ió n c o m o u n a se c u e n c ia d e parejas:

c i d . a p u n t a d o r a la e n t r a d a d e la ta b la d e s ím b o lo s p a r a E >
c o p _ a s ig n .>
c i d . a p u n t a d o r a la e n tr a d a d e la ta b la d e s ím b o lo s p a r a M>
c o p _ m u lt.>
c i d . a p u n t a d o r a la e n t r a d a d e la ta b la d e s ím b o lo s p a ra C >
C o p _ e x p .>
c n ú m . v a lo r e n t e r o 2 >

O bsérvese q u e en c ie rta s p a re ja s n o se n ecesita u n v a lo r d e a tr ib u to ; el p r im e r c o m ­


p o n e n te es suficiente para id en tificar el lexem a. E n este p e q u e ñ o e jem p lo , se h a d a d o
al c o m p o n e n te léxico n ú m u n a t r i b u t o d e v a lo r e n te ro . El c o m p ila d o r p u e d e a l m a ­
c e n a r la c a d e n a d e c a ra c te re s q u e fo rm a u n n u m e r o e n u n a ta b la d e s ím b o lo s y d e ­
j a r q u e el a trib u to del c o m p o n e n te léxico n ú m sea u n a p u n t a d o r a la e n t r a d a d e la
tabla.
90 \\M ISIS I E X ICO

E r r o r e s léxicos

S o n p o c o s los e rro re s q u e se p u e d e n d e te c ta r s im p le m e n te e n el nivel léxico p o r q u e


u n a n a l iz a d o r léx ico tie n e u n a v isió n m u y r e s tr in g id a d e u n p r o g r a m a fu e n te . Si
a p a re c e la c a d e n a f i p o r p r im e ra v ez e n u n p r o g r a m a e n C e n el c o n te x to

fi ( a =** f ( x ) ) ...

u n a n a liz a d o r léxico n o p u e d e d is tin g u ir si f i es u n e r r o r d e e s c ritu ra d e la p a la b ra


c lav e i f o si es u n id e n tific a d o r d e f u n c ió n n o d e c la ra d o . C o m o f i e s u n identifi-
c a d o r válido, el a n a liz a d o r léxico d e b e d e v o lv e r el c o m p o n e n te léxico d e u n id en ti-
fic a d o r y d e ja r q u e a lg u n a o tr a fase del c o m p ila d o r se o c u p e d e los erro res.
P ero , s u p ó n g a s e q u e su rg e u n a situ a c ió n e n la q u e el a n a liz a d o r léxico n o p u e d e
c o n t i n u a r p o r q u e n i n g u n o d e los p a tr o n e s c o n c u e r d a c o n u n p re fijo d e la e n tra d a
re sta n te . T a l vez la estrateg ia d e re c u p e ra c ió n m á s sen cilla sea la re c u p e ra c ió n en
“ m o d o d e p á n ic o " . Se b o r r a n c a ra c te re s su cesiv o s d e la e n tr a d a re s ta n te h a s ta q u e
el a n a liz a d o r léxico p u e d a e n c o n t r a r u n c o m p o n e n te léx ico b ie n fo rm a d o . E sta té c ­
n ic a d e re c u p e ra c ió n p u e d e c o n f u n d ir e n o c a s io n e s al a n a liz a d o r s in tá c tic o , p e r o en
u n a m b ie n te d e c o m p u ta c ió n in te ra c tiv o p u e d e re s u lta r b a s ta n te a d e c u a d a .
O tr a s p o sib les a c c io n e s d e re c u p e ra c ió n d e e rro re s son:

1. b o r r a r u n c a r á c te r e x tra ñ o
2. in s e rta r u n c a rá c te r q u e falta
3. r e e m p la z a r u n c a r á c te r in c o rre c to p o r o t r o c o rre c to
4. in te r c a m b ia r d o s c a ra c te re s a d y a c e n te s.

Se p u e d e p r o b a r este tip o d e tr a n s f o r m a c io n e s d e e r r o r p a r a in te n ta r r e p a ra r la
e n t r a d a . L a m á s s e n c illa d e ta le s e s tr a te g ia s c o n s is te e n o b s e r v a r si u n p re fijo d e
la e n t r a d a r e s ta n te se p u e d e t r a n s f o r m a r e n u n le x e m a v á lid o m e d i a n t e u n a sola
tr a n s fo rm a c ió n d e erro r. E sta estrateg ia d a p o r s u p u e s to q u e la m a y o ría d e los e r r o ­
re s léx ico s se d e b e n a u n a so la tr a n s f o r m a c ió n d e e r r o r , s u p o s ic ió n q u e n o r m a l ­
m e n te . p e ro n o s ie m p re , se c u m p le e n la p ráctica.
U n a fo rm a d e e n c o n t r a r los e rro re s en u n p r o g r a m a co n siste en c a lc u la r el n ú ­
m e r o m í n i m o d e tr a n s f o rm a c io n e s n ecesarias p a r a tr a n s f o r m a r el p r o g r a m a e rró n e o
e n o t r o q u e e s té s i n t á c t i c a m e n t e b ie n c o n s t r u i d o . S e d ic e q u e el p r o g r a m a e r r ó ­
n e o tie n e k e rro re s c u a n d o la se c u e n c ia m á s c o r ta d e tr a n s f o r m a c io n e s d e e r r o r q u e
lo tr a n s f o r m a r á e n alg ú n p r o g r a m a v álid o tie n e la lo n g itu d k. L a c o rre c c ió n d e e r r o ­
re s d e d is ta n c ia m í n i m a e s u n c rite rio te ó ric o a p ro p ia d o , p e ro n o se su ele u sa r e n la
p ra c tic a p o r q u e su a p lic a c ió n e s d e m a s ia d o co sto sa. S in e m b a rg o , a lg u n o s c o m p i­
lad o res e x p e rim e n ta le s h a n e m p le a d o el c rite rio d e la d is ta n c ia m í n im a p a r a h a c e r
c o rre c c io n e s locales.

3 .2 M A N E J O D E L O S B V F F E R S D E E N T R A D A

E sta secció n tr a ta a lg u n o s a s p e c to s d e la efic ien cia re la c io n a d o s c o n el m a n e jo de


los buffers d e e n tr a d a . P r im e r o se m e n c io n a u n e s q u e m a d e d o s buffers d e e n tr a d a
q u e re su lta útil c u a n d o es n e c e sa rio u n p rean álisis e n la e n tr a d a p a r a id e n tific a r los
c o m p o n e n te s léxicos. D e s p u é s se in tr o d u c e n a lg u n a s té c n ic a s ú tiles p a r a a u m e n t a r
3.2 M A N E J O D E LOS BUFFERS DE ENTRADA 91

la v e lo c id a d del a n a liz a d o r léxico, c o m o el uso d e “c e n tin e la s " q u e sirv en p a r a m a r ­


c a r el final d e l buffer.
H ay tres m é to d o s g e n e ra le s d e im p la n ta c ió n d e u n a n a liz a d o r léxico.

1. U tiliz a r u n g e n e r a d o r d e a n a liz a d o re s léxicos, c o m o el c o m p ila d o r L E X d e la


secció n 3.5, p a r a p r o d u c ir el a n a liz a d o r léx ico a p a r tir d e u n a esp ecificació n b a­
sa d a e n e x p resio n es regulares. E n este caso, el g e n e ra d o r p ro p o r c io n a ru tin a s para
leer la e n t r a d a y m a n e ja r la c o n buffers.

2. E sc rib ir el a n a liz a d o r léx ico e n u n le n g u a je c o n v e n c io n a l d e p r o g r a m a c ió n d e


siste m a s, u tiliz a n d o las p o s ib ilid a d e s d e e n t r a d a y salid a d e este le n g u a je p a ra
leer la e n tra d a .

3. E sc rib ir el a n a liz a d o r léxico e n le n g u a je e n s a m b la d o r y m a n e ja r e x p líc ita m e n te


la le c tu ra d e la e n tra d a .

L as tr e s o p c io n e s se re la c io n a n e n o r d e n d e d if ic u lta d c r e c ie n te p a r a el e n c a r ­
g a d o de la im p la n ta c ió n . L a m e n ta b le m e n te , los e n fo q u e s m ás difíciles d e im p la n ta r,
m u c h a s veces d a n c o m o re s u lta d o a n a liz a d o re s léx ico s m á s rá p id o s . C o m o el a n a ­
liz a d o r léxico e s la ú n ic a fase del c o m p ila d o r q u e lee el p r o g r a m a fu e n te c a r á c te r a
c a rá c te r, e s p o s ib le q u e se c o n s u m a m u c h o ti e m p o en la fase d e a n álisis léxico, a u n ­
q u e las fases p o s te rio re s se a n c o n c e p tu a l m e n te m á s c o m p le ja s . A sí, la v e lo c id a d del
a n álisis léxico s u p o n e u n p r o b le m a e n el d is e ñ o d e c o m p ila d o re s . A u n q u e la m a y o r
p a rte del c a p ítu lo está d e d ic a d o al p r i m e r m é to d o , el d is e ñ o y uso d e u n g e n e r a d o r
a u t o m á t i c o , ta m b ié n se c o n s id e r a n té c n ic a s ú tile s e n el d is e ñ o m a n u a l . E n la sec­
c ió n 3 .4 se e s tu d ia n los d ia g ra m a s d e tra n s ic io n e s , u n c o n c e p to útil p a r a la o r g a n i­
z a c ió n d e u n a n a liz a d o r léxico d is e ñ a d o a m a n o .

P a re ja s de buffers

E n m u c h o s le n g u a je s f u e n te h a y v e c e s e n q u e el a n a l i z a d o r lé x ic o n e c e s ita p re -
a n a liz a r v a rio s c arac teres, a d e m á s del le x e m a p a r a u n p a tró n , a n te s d e p o d e r a n u n ­
c ia r u n a c o n c o r d a n c ia . L os a n a liz a d o re s léx ico s del c a p ítu lo 2 u tiliz a ro n la fu n c ió n
ú n g e t e p a ra re in s e rta r c a ra c te re s p re a n a liz a d o s e n la c a d e n a d e e n t r a d a . C o m o se
p u e d e c o n s u m ir m u c h o ti e m p o m o v ie n d o c a ra c te re s , se h a n d e s a rro lla d o té c n ic a s
e sp ecializ ad as e n el m a n e jo d e buffers p a ra re d u c ir el n ú m e r o d e o p e r a c io n e s n e c e ­
sa ria s p a r a p ro c e s a r u n c a r á c te r d e e n tr a d a . Se p u e d e n e m p le a r m u c h o s e s q u e m a s
d e m a n e jo d e buffers . p e ro , c o m o las té c n ic a s d e p e n d e n en c ie r to m o d o d e los p a ­
r á m e tr o s d e l sistem a, a q u í ta n só lo se s e ñ a la rá n los p rin c ip io s q u e h a y d e trá s d e u n a
clase d e esq u em a s.
S e u tiliz a u n buffer d iv id id o e n d o s m ita d e s d e N c a ra c te re s c a d a u n a . tal c o m o
se in d ic a en la fig u ra 3.3. P o r lo g en eral. N e s el n ú m e r o d e c a ra c te re s e n u n b lo q u e
d e d isc o , p o r e je m p lo , 1024 ó 4 0 9 6 .
S e leen N c a ra c te re s d e e n tr a d a e n c a d a m ita d del buffer c o n u n a o r d e n d e lec­
tu r a d e s is te m a , e n vez d e in v o c a r u n a in s tr u c c ió n d e le c tu ra p a r a c a d a c a r á c te r d e
e n tr a d a . Si q u e d a n m e n o s d e N c a ra c te re s e n la e n tr a d a , e n to n c e s se lee u n c a rá c te r
esp ecial e o f e n el buffer d e s p u é s d e los c a ra c te re s d e e n tr a d a , c o m o e n la figura 3.3.
E s d ecir, e o f m a rc a el final del a rc h iv o f u e n te y es d is tin to a c u a lq u ie r c a r á c te r d e la
e n tra d a .
92 ANALISIS LEXICO

E = M * C ‘* * ; 2 eof

T— í -----------------------
delantero
com ienzo Je x e m a

F ig . 3 .3 . U n b u l l ir d e e n t r a d a e n d o s m it a d e s .

Se m a n tie n e n d o s a p u n ta d o r e s al huffer d e e n tra d a . L a c a d e n a d e c a ra c te re s e n ­


tr e lo s d o s a p u n t a d o r e s es el le x e m a e n c u r s o . AI p r in c i p io , lo s d o s a p u n t a d o r e s
a p u n ta n al p r im e r c a rá c te r del p r ó x im o le x e m a q u e hay q u e e n c o n tra r. U n o d e ellos,
lla m a d o a p u n t a d o r d e la n te ro , e x a m in a h acia a d e la n te h asta e n c o n t r a r u n a c o n c o r ­
d a n c ia c o n u n p a tró n . U n a vez d e t e r m in a d o el sig u ie n te le x e m a , el a p u n t a d o r d e ­
la n te ro se c o lo c a e n el c a r á c te r d e su e x tr e m o d e re c h o . D e s p u é s d e h a b e r p ro c e s a d o
el le x e m a . a m b o s a p u n t a d o r e s se c o lo c a n e n el c a r á c te r s itu a d o i n m e d i a t a m e n t e
d e s p u é s d e l le x e m a . C o n este e s q u e m a , se p u e d e n c o n s id e r a r los c o m e n ta r io s y los
e sp a c io s e n b la n c o c o m o p a tro n e s q u e n o p r o d u c e n c o m p o n e n te s léxicos.
C u a n d o el a p u n t a d o r d e la n te r o está a p u n t o d e s o b re p a s a r p o r la m a r c a in te r­
m e d ia d e l huffer. se lle n a la m i t a d d e r e c h a c o n N n u e v o s c a r a c te r e s d e e n t r a d a .
C u a n d o el a p u n t a d o r d e la n te r o está a p u n t o d e s o b re p a s a r el e x tr e m o d e r e c h o del
huffer. se llen a la m ita d iz q u ie rd a c o n A' n u e v o s c a ra c te re s d e e n t r a d a y el a p u n t a d o r
d e la n te r o se regresa al p r in c ip io del huffer.
E ste e s q u e m a d e m a n e jo d e buffers casi s ie m p re f u n c io n a m u y b ie n , p e r o lim ita
la c a n tid a d d e c a ra c te re s d e preanálisis, y esto p u e d e im p o s ib ilita r el r e c o n o c im ie n to
d e los c o m p o n e n te s léx ico s c u a n d o la d is ta n c ia re c o rrid a p o r el a p u n t a d o r d e la n te r o
sea m a y o r q u e la lo n g itu d del huffer. P o r e je m p lo , si se e n c u e n tr a

DECLARE ( A R G 1 , ARG2, . . . , ARG ti )


e n u n p r o g r a m a d e P L /I , n o s e p u e d e d e t e r m i n a r si d e c l a r e e s u n a p a l a b r a c l a v e
o u n n o m b r e d e a rre g lo h a s ta v e r el c a r á c te r q u e sig u e al p a r é n te s is d e r e c h o . En
c u a l q u i e r c a s o , el l e x e m a t e r m i n a e n la s e g u n d a E, p e r o la c a n t i d a d d e p r e a n á l i s i s
necesaria es p ro p o rc io n a l al n ú m e r o d e a r g u m e n to s , q u e , e n p rin cip io , es ilim itado.

¡f delantero está al final de la p rim era m itad then begin


recargar la segunda m itad;
delantero : = delantero + 1
end
else if delantero está al final de la segunda m itad then begin
recargar la p rim era m itad;
pasar delantero al principio d e la p rim era m itad
end
else delantero : = delantero + 1;

Fig. 3.4. C ódigo para av an za r el a p u n ta d o r delantero.


3.2 M A N E J O D E LOS BUFFERS DE E N T R A D A 93

C e n tin e la s

Si se u tiliz a el e s q u e m a d e la fig u ra 3.3 tal c o m o se h a e x p u e sto , c a d a v ez q u e se


m u e v a el a p u n t a d o r d e la n te r o se d e b e c o m p r o b a r si se h a salid o d e u n a m ita d del
buffer, si así o c u r r ie r a se d e b e r á re c a rg a r la o t r a m ita d . E s d ecir, el c ó d ig o p a r a h a c e r
a v a n z a r el a p u n t a d o r d e l a n t e r o re a liz a p r u e b a s c o m o las q u e se m u e s t r a n e n la
figura 3.4.
E x ce p to e n los e x tre m o s d e las m ita d e s del buffer, el c ó d ig o d e la figura 3.4 n e ­
cesita d o s p r u e b a s p a r a c a d a a v a n c e del a p u n t a d o r d e la n te r o . Se p u e d e n r e d u c ir es­
ta s d o s p r u e b a s a u n a si se a m p lia c a d a m ita d del buffer p a r a a d m iti r u n c a rá c te r
centinela al final. E l c e n tin e la es u n c a r á c te r especial q u e n o p u e d e s e r p a rte del p ro ­
g r a m a fu en te . U n a elecció n n a tu ra l e s e o f (fin d e a rc h iv o , e n inglés): en la figura 3.5
se m u e s tra la m is m a d isp o sic ió n d e buffer q u e la fig u ra 3.3. a ñ a d id o s los c en tin elas.

~e ~: “ m : * :eofl c : * : » : 2 eof ; : :eof|


------------------------- t ----------------------------------------------

| delantero
comienzo-lexema

Fig. 3.5. C en tin elas al final d e cada m itad del buffer.

C o n la d isp o sició n d e la figura 3 .5 , se p u e d e u tiliz a r el c ó d ig o d e la figura 3.6


p a r a h a c e r a v a n z a r el a p u n t a d o r d e la n te r o (y d e t e r m in a r el final del a rc h iv o fuente).
E n la m a y o ría d e las o c a s io n e s el c ó d ig o realiza sólo u n a p r u e b a p a r a v e r si ciclan-
tero a p u n t a h a c ia u n c a rá c te r eof. S ó lo se re a liz a n m á s p r u e b a s c u a n d o se a lc a n z a el
final d e u n a m ita d del buffer o el fin al d e l a rc h iv o . C o m o se e n c u e n t r a n A carac teres
d e e n tr a d a e n tre los s ím b o lo s eof, el p r o m e d io d e p r u e b a s p o r c a d a c a r á c te r d e e n ­
tr a d a es p r ó x im o a 1.

delantero : = delantero + 1;
if delantero t = eof th e n begin
if delantero qstá al final d e la p rim era m itad th e n begin
recargar la segunda m itad;
delantero : = delantero + 1
end
else if delantero está al final de la segunda m itad then begin
recargar la p rim era m itad:
pasar delantero al principio de la prim era m itad
end
else / * e o f d e n tro d e un buffer significa el final de la e n tra d a */
te rm in a r el análisis léxico
end

F ig. 3 .6 . C ó d ig o d e preanálisis c o n cen tin ela s.


94 A N A L ISIS LEXICO

T a m b ié n h a y q u e d e c id ir c ó m o p ro c e s a r el c a r á c te r e x a m in a d o p o r el a p u n t a d o r
d e la n te ro ; ¿ m a r c a el fin d e u n c o m p o n e n te léxico?, ¿ re p re s e n ta u n a v a n c e p a r a la
b ú s q u e d a d e d e te r m in a d a p a la b r a clave?, ¿o q u é h a c e ? U n a f o r m a d e e s tr u c tu r a r es­
ta s p r u e b a s es u tiliz a r u n a p ro p o s ic ió n c a s e , si e x iste e n el len g u aje d e im p la n ta c ió n .
L a p ru e b a

i f delantero í = e o f

se p u e d e im p la n t a r e n to n c e s c o m o u n o d e los d is tin to s casos.

33 E S P E C IF IC A C IO N D E L O S C O M P O N E N T E S L E X IC O S

L as e x p r e s io n e s r e g u la re s s o n u n a n o ta c ió n i m p o r t a n t e p a r a e s p e c ific a r p a tro n e s .
C a d a p a t r ó n c o n c u e r d a c o n u n a serie d e c a d e n a s , d e m o d o q u e las e x p re sio n e s re­
g u la re s se rv irá n c o m o n o m b r e s p a r a c o n j u n to s d e c a d e n a s. L a secció n 3 .5 a m p lía
esta n o ta c ió n a u n le n g u a je d irig id o p o r p a tro n e s p a r a el a n á lis is léxico.

C a d e n a s y le n g u a je s

El té r m in o alfabeto o clase d e carácter d e n o t a c u a lq u ie r c o n j u n t o fin ito d e s ím b o ­


los. E je m p lo s típ ic o s d e s ím b o lo s s o n las le tra s y lo s caracteres. El c o n j u n t o ( o , 1)
es el alfabeto binario. L o s c ó d ig o s A S C II y E B C D IC s o n d o s e je m p lo s d e alfa b eto s
d e c o m p u ta d o r .
U n a cadena so b re a lg ú n a lfa b e to es u n a s e c u e n c ia fin ita d e s ím b o lo s t o m a d o s de
ese a lfa b e to . E n te o ría del len g u aje, lo s té r m in o s fra se y palabra a m e n u d o se utili­
z a n c o m o s in ó n im o s d e l t é r m i n o “c a d e n a " L a lo n g itu d d e u n a c a d e n a s, q u e suele
escrib irse |s|, e s el n ú m e r o d e a p a ric io n e s d e s ím b o lo s e n s. P o r e je m p lo , c a m i n o es
u n a c a d e n a d e lo n g itu d seis. L a c a d e n a vacia , re p re s e n ta d a p o r € , e s u n a c a d e n a
esp ecial d e lo n g itu d c e ro . E n la fig u ra 3.7 se reco g en a lg u n o s té r m in o s c o m u n e s aso­
c ia d o s c o n la s p a rte s d e u n a c a d e n a .
El té r m in o lenguaje se refiere a c u a lq u ie r c o n j u n t o d e c a d e n a s d e u n alfa b e to
fijo. E sta d e fin ic ió n e s m u y a m p lia , y a b a r c a le n g u a je s a b s tra c to s c o m o 0 , el c o n ­
j u n t o vacio, o {c } y el c o n j u n t o q u e s ó l o c o n t i e n e la c a d e n a v a c ía , a s i c o m o al
c o n j u n t o d e to d o s los p ro g r a m a s d e Pascal s in tá c tic a m e n te b ie n f o r m a d o s y el c o n ­
j u n t o d e to d a s las o r a c io n e s e n inglés g r a m a tic a lm e n te co rre c ta s, a u n q u e los d o s úl­
tim o s c o n j u n to s s o n m u c h o m á s dificiles d e especificar. O b sérv ese ta m b ié n q u e esta
d e fin ic ió n n o a trib u y e n in g ú n sig n ificad o a las c a d e n a s d e u n lenguaje. L o s m é to d o s
p a ra a s ig n a r sig n ificad o s a las c a d e n a s se e s tu d ia n e n el c a p ítu lo 5.
Si .v e y s o n c a d e n a s, e n to n c e s la concatenación d e a e y , q u e se e sc rib e x y , es la
c a d e n a q u e re su lta d e ag reg ar y a x . P o r e je m p lo , si x = c a z a e y = f o r t u n a s ,
e n to n c e s x y = c a z a f o r t u n a s . L a c a d e n a v acía es el e le m e n to id e n tid a d q u e se
c o n c a te n a . E s d e c ir. = c s - s.
C u a n d o se c o n s id e ra la c o n c a te n a c ió n c o m o u n “ p r o d u c to " , c a b e d e fin ir la “ cx-
p o n e n c ia c ió n " d e c a d e n a s d e la sig u ie n te m a n e r a . S e d e fin e c o m o € , y p a r a /> ( )
se d efin e V c o m o V 1s . D a d o q u e e.v e s .v, .v1 = s. E n to n ces, . r = ss%s~ - sss. etcétera.
3.3 ESPECIFICACION D E LOS C O M P O N E N T E S LEXICO S 95

T é r m in o D efinición

U n a cad e n a q u e se o b tien e e lim in a n d o cero o m ás sím bolos


prefijo d e s desde la d erech a de la cadena s: por ejem plo, b a n es u n prefijo
de b an d era.

U n a cad e n a q u e se fo rm a su p rim ien d o cero o m ás sím bolos


sufijo d e s desde la izquierda d e u n a cad e n a s\ por ejem plo, e r a es u n su­
fijo d e b a n d e r a .

U n a cadena q u e se o b tien e su p rim ien d o un prefijo y un sufijo


d e s: por ejem plo, a n d e es u n a su beadena de b a n d e r a . T o d o
subeadena d e .v prefijo y sufijo d e s es u n a cad e n a d e v, p e ro n o to d a su b e a ­
d e n a de 5 es un prefijo o u n sufijo d e s. P ara to d a cad e n a s,
ta n to s c o m o € son prefijos, sufijos y subeadenas de s.

prefijo, sufijo o C u alq u ier cad e n a no vacía x que sea, respectivam ente, u n pre­
su beadena propios d e s fijo, sufijo o subeadena d e s tal q u e s # x.

C u alq u ier cad e n a fo rm ad a m ediante la elim inación de cero o


subsecuencia d e s m ás sím bolos no necesariam ente co n tig u o s a .v; por ejem plo,
b a d a es u n a subsecuencia d e b a n d e r a .

Fig. 3.7. T é rm in o s de p artes d e u n a cadena.

O p e ra c io n e s a p lic a d a s a len g u ajes

H ay v a ria s o p e ra c io n e s im p o r ta n te s q u e se p u e d e n a p lic a r a los lenguajes. P a r a el


a n álisis léxico, in te re s a n p r in c ip a lm e n te la u n ió n , la c o n c a te n a c ió n y la c e rra d u ra ,
d efin id as en la fig u ra 3.8. T a m b ié n se p u e d e e x te n d e r el o p e r a d o r d e “e x p o n e n c ia -
c ió n " a lo s len g u ajes d e f in ie n d o L ° c o m o {c}, y L ' c o m o L ' 'L . P o r ta n to , L ' es L
c o n c a te n a d o co n sig o m is m o i — I veces.

E je m p lo 3 .2 S ea L el c o n j u n t o ¡A, B, . . . , Z , a , b , . . . , z ¡ y D el
c o n j u n t o {0, 1 , . . . , 9). S e p u e d e n c o n s id e r a r L y D d e d o s m a n e ra s : /„,
c o m o el a lf a b e to q u e c o n t i e n e el c o n j u n t o d e le tr a s m a y ú s c u l a s y m i n ú s c u la s , y
P , c o m o el a lfa b e to q u e c o n tie n e el c o n j u n t o d e los d ie z d íg ito s d e c im a le s. Se p u e d e
d a r el caso, p u e s to q u e u n s ím b o lo p u e d e s e r c o n s id e r a d o c o m o u n a c a d e n a d e lo n ­
g itu d u n o . d e q u e L y D se a n los d o s le n g u a je s fin itos. L os sig u ie n te s s o n a lg u n o s
e je m p lo s d e n u e v o s len g u ajes c r e a d o s a p a r tir d e L y D m e d ia n te la a p lic a c ió n d e
los o p e ra d o re s d e fin id o s en la figura 3.8.

1. L U D es el c o n j u n t o d e le tra s y dígitos.
2. L D es el c o n ju n to d e c a d e n a s q u e c o n s ta d e u n a letra s e g u id a d e u n dígito.

3. L 4 es el c o n j u n t o d e to d a s las c a d e n a s d e c u a t r o letras.

4. L * es el c o n j u n t o d e to d a s las c a d e n a s d e letras, in c l u y e n d o c , la c a d e n a vacía.


96 ANALISIS LEXICO

O p e r a c ió n D e f in ic ió n

unión d e L y M. q u e se
L U M = { s | s está en ¿ o s está e n M }
escribe L U M

concatenación d e L y M.
L M = { st | s e s t á e n L y t está e n M ¡
q u e se escrib e L M
CéS

cerradura de Kleene d e /.. I * = u /-'


#-0
q u e se escrib e L*
L* d e n o t a “c e r o o m á s c o n c a t e n a c i o n e s d e ” L.

cerradura positiva d e L. L* = U U
/-i
q u e se escrib e /. *
/ . ’ d e n o t a “ u n a o m á s c o n c a t e n a c i o n e s d e ” L.

Fig. 3.8. D efiniciones d e operaciones sobre lenguajes.

5. L ( L U D)* es el c o n j u n t o d e to d a s las c a d e n a s d e letras y d íg ito s q u e c o m ie n z a n


c o n u n a letra.

6. /)* es el c o n j u n t o d e to d a s las c a d e n a s d e u n o o m á s d íg ito s. □

E x p r e s io n e s r e g u la r e s

E n P ascal, u n id e n tific a d o r e s u n a le tra seg u id a d e c e r o o m á s letras o díg ito s; es


d ecir, u n id e n tific a d o r es u n m i e m b r o d e l c o n j u n t o d e f in id o e n el a p a r ta d o 5 del
e je m p lo 3.2. E n esta sección, se p r e s e n ta u n a n o ta c ió n , lla m a d a e x p re s io n e s reg u la­
res. q u e p e r m ite d e f in ir d e m a n e r a p recisa c o n j u n to s c o m o éste. C o n esta n o ta c ió n ,
se p u e d e n d e f in ir los id e n tific a d o re s d e P ascal c o m o

letra ( letra | d íg ito ) *

L a b a r r a vertical a q u í sig n ifica “o ” , lo s p a ré n te sis se u sa n p a r a a g r u p a r su bexp resio -


nes. el a sterisc o significa “c e ro o m á s c aso s d•e ” la e x p re sió n e n tr e p arén tesis, y la
y u x ta p o sic ió n d e letra c o n el resto d e la e x p re sió n sig n ifica c o n c a te n a c ió n .
U n a e x p re sió n re g u la r se c o n s tr u y e a p a r ti r d e e x p re sio n e s reg u lares m á s sim p les
u tiliz a n d o u n c o n j u n t o d e reglas d e fin ito ria s. C a d a e x p re sió n re g u la r r r e p re s e n ta un
len g u aje L(r). L as reglas d e d e fin ic ió n esp ecifican c ó m o se f o r m a L(r) c o m b in a n d o
d e v arias m a n e r a s lo s len g u ajes re p r e s e n ta d o s p o r las s u b e x p re s io n e s d e r.
L as sig u ie n tes s o n las reglas q u e d e fin e n las expresiones regulares d e l alfabeto
A so c iad a a c a d a regla h a y u n a esp ecificació n del le n g u a je re p r e s e n ta d o p o r la e x p re ­
sió n reg u lar q u e se está d e fin ie n d o .

1. € e s u n a e x p re sió n re g u la r d e s ig n a d a p o r je}: es d ecir, el c o n j u n t o q u e c o n tie n e


la c a d e n a vacia.

2. Si a es un s ím b o lo d e e n to n c e s a e s u n a e x p re s ió n re g u la r d e sig n a d a p o r {¿i};
p o r e je m p lo , e l c o n j u n t o q u e c o n tie n e la c a d e n a a. A u n q u e se usa la m is m a no ­
ta c ió n p a r a las tres, té c n ic a m e n te , la e x p re sió n re g u la r a es d is tin ta d e la c a d e n a
3.3 ESPECIFICACION D E LOS C O M P O N E N T E S LEXICO S 97

a o del s ím b o lo a. El c o n te x to a c la r a r á si se h a b la d e a c o m o e x p re s ió n regular,
c a d e n a o sím b o lo .

3. S u p o n ie n d o q u e r y s se a n e x p re s io n e s regu lares re p r e s e n ta d a s p o r los len g u ajes


L (r) y L ( j), en to n ces.

a) (r) | (s) e s u n a e x p re s ió n re g u la r re p re s e n ta d a p o r L(r) U L(s).


b) (rK v) e s u n a e x p re s ió n re g u la r re p re s e n ta d a p o r L(r)L(s).
c) (r)* es u n a e x p re sió n re g u la r re p re s e n ta d a p o r ( L (r ))*.
d) (z) e s u n a e x p re s ió n re g u la r re p r e s e n ta d a p o r L(r).2

Se dice q u e u n len g u aje d e sig n a d o p o r u n a ex p resió n reg u lar es u n conjunto regular.


L a esp ecificació n d e u n a e x p re s ió n re g u la r e s u n e je m p lo d e d e fin ic ió n recursiva.
L as reglas 1 y 2 s o n la base d e la d e fin ic ió n ; se u s a el té r m in o sím b o lo básico p a ra
referirse a € o a un s ím b o lo d e 2 Que a p a r e z c a n e n u n a e x p re s ió n regular. L a regla
3 p r o p o r c io n a el p a so in d u c tiv o .
Se p u e d e n e v i ta r los p a r é n te s is in n e c e s a r io s e n la s e x p r e s io n e s re g u la re s si se
a d o p t a n las c o n v e n c io n e s :

1. el o p e r a d o r u n a r io * tien e la m a y o r p re c e d e n c ia y e s a s o c ia tiv o p o r la iz q u ie rd a .
2. la c o n c a te n a c ió n tie n e la s e g u n d a m a y o r p re c e d e n c ia y es a s o c ia tiv a p o r la iz­
q u ie rd a .
3. i tie n e la m e n o r p re c e d e n c ia y es a s o c ia tiv o p o r la izq u ierd a.
#
S eg ú n estas c o n v e n c io n e s , (a) | ((¿>)*(c)) es e q u iv a le n te a a\b*c. E sta s d o s e x p resio n es
d e sig n a n el c o n j u n t o d e c a d e n a s q u e tie n e n u n a so la a . o c e r o o m á s b seg u id as d e
u n a c.

E je m p lo 3 .3 S ea y = {a, b).

1. La e x p re sió n re g u la r a \ b d esig n a el c o n j u n t o {a , />}.

2. j
La e x p re sió n re g u la r ( a b)(a | b) se in d ic a c o n {aa. ab, ba , bb}%el c o n j u n t o de
to d a s las c a d e n a s d e a y b d e lo n g itu d dos. O tr a ex p resió n regular p a r a este m ism o
c o n j u n t o e s a a | ab \ ba \ bb.

3. L a e x p re s ió n re g u la r a* d e s ig n a el c o n j u n t o d e to d a s las c a d e n a s d e c e r o o m ás
a , p o r e je m p lo , (c, a , aa , a a a }.

4. L a e x p re sió n re g u la r (a | b)* d e s ig n a el c o n j u n t o d e to d a s las c a d e n a s q u e c o n ­


tie n e n c e r o o m á s c aso s d e u n a a o b. es d ecir, el c o n j u n t o d e to d a s las c a d e n a s
d e a y h. O tr a e x p re s ió n re g u la r p a r a este c o n j u n t o es (a* b*)*.

5. L a e x p re sió n re g u la r a | a*b d e s ig n a el c o n j u n t o q u e c o n tie n e la c a d e n a a y to ­


d a s las q u e se c o m p o n e n d e c e r o o m á s a seg u id as d e u n a b. □

Si d o s e x p re sio n e s reg u la re s r y s re p re s e n ta n al m is m o len g u aje, se d ic e q u e r y


s s o n equivalentes y se escrib e r = s. P o r e je m p lo , ( a \ b ) = {b \ a).

: Esta regla e sta b le c e q u e . si s e d e se a , s e p u e d e n p o n e r p a res d e p a r é n tesis a d ic io n a le s e n to r n o a las


e x p r e sio n e s regulares.
98 ANALISIS LEXICO

------------------
A x io m a D e s c r ip c ió n

r \ s = .«| r e s c o n m u t a t iv o

r |( . v |/ ) = (r | s ) 1 1 e s a s o c ia tiv o

(rs)l = r(sl) la c o n c a t e n a c ió n e s a s o c ia tiv a

r(.y 11 ) = rs ri
la c o n c a t e n a c ió n d is tr ib u y e so b r e
(.y | t)r = sr tr
€r = r
e e s el e l e m e n t o id e n tid a d p ara la c o n c a t e n a c ió n
re = r
r* = (r | 0 * la r e la c ió n e n tr e * y e
r** = r* * e s id e m p o t e n t e

Fig. 3.9. Propiedades algebraicas d e las expresiones regulares.

S o n v a ria s las leyes alg eb raicas q u e o b e d e c e n las e x p re sio n e s reg u la re s y p u e d e n


ser u tiliz ad as p a r a tr a n s f o r m a r las e x p re s io n e s regu lares a f o r m a s e q u iv a le n te s. E n
la figura 3 .9 se m u e s tr a n a lg u n a s leyes alg eb raicas q u e se c u m p le n p a r a las ex p resio ­
nes reg u lares r, s y /.

D efin icio nes reg u la re s

P o r c o n v e n ie n c ia d e n o ta c ió n , p u e d e s e r d eseab le d a r n o m b r e s a la s e x p re sio n e s re­


g u la re s y d e f in ir e x p r e s io n e s re g u la re s u tiliz a n d o d ic h o s n o m b r e s c o m o si fu eran
sím b o lo s. Si 2 es u n alfa b e to d e s ím b o lo s básicos, e n to n c e s u n a definición regular
e s u n a se c u e n c ia d e d e fin ic io n e s d e la fo rm a

d\ - > r,
d 2 -> r2

d o n d e c a d a d, e s u n n o m b r e d is tin to , y c a d a r, e s u n a e x p re s ió n re g u la r so b re los
s ím b o lo s d e 2 U {í/i, ¿ 2, . . . , d¡-\}> p o r e je m p lo , los s ím b o lo s b ásico s y los n o m b r e s
p r e v ia m e n te d e fin id o s. A l lim ita r c a d a r, a los s ím b o lo s d e 2 y a l ° s n o m b r e s pre­
v ia m e n te d e fin id o s, se p u e d e c o n s tr u ir u n a e x p re sió n re g u la r e n 2 p a r a c u a lq u ie r r„
r e e m p la z a n d o u n a y o t r a vez los n o m b r e s d e las e x p re sio n e s reg ulares p o r las e x p re ­
s io n e s q u e d e sig n a n . Si r, u tiliz a ra d, p a r a a l g u n a /, e n to n c e s r¡ se p o d r ía d e fin ir
re c u rs iv a m e n te y este p ro c e s o d e s u s titu c ió n n o te n d r ía fin.
P a ra d is tin g u ir los n o m b r e s d e los s ím b o lo s , se im p r im e n e n n e g rita s los n o m ­
b re s d e las d e fin ic io n e s regulares.

E je m p lo 3 .4 . C o m o y a se estab leció a n te s, el c o n j u n t o d e id e n tific a d o re s d e Pascal


es el c o n j u n t o d e c a d e n a s d e le tra s y d íg ito s q u e e m p ie z a n c o n u n a letra. A c o n ti­
n u a c ió n se d a u n a d e fin ic ió n re g u la r p a r a este c o n ju n to .
3.3 ESPECIFICACION D E LOS C O M P O N E N T E S LEXICO S 99

le t r a A B • • • Z a | b . . . |
d íg ito - > 0 1 • • • 9
id —> le tr a ( e t r a 1 d í g i t o )*

E je m p lo 3 .5 . L o s n ú m e r o s s in sig n o e n P ascal s o n c a d e n a s, c o m o 5 2 8 0 , 3 9 . 3 7 ,
6 . 3 3 6 E 4 , o 1 . 8 9 4 E - 4 . L a sig u ie n te d e fin ic ió n re g u la r p r o p o r c io n a u n a esp ecifi­
c a c ió n p recisa p a r a esta clase d e cad en as:

d íg ito —> 0 | 1 | . . . | 9
d í g it o s d íg ito d íg ito *
fr a c c ió n -o p ta tiv a —* . d íg it o s | *
e x p o n e n t o - o p t a t i v o — » ( E ( + |— | € ) d íg it o s ) | e
n ú m —> d íg it o s f r a c c ió n - o p t a t iv a e x p o n e n t e - o p t a t iv o

E sta d e fin ic ió n estab lece q u e u n a f r a c c i ó n - o p t a t i v a e s u n p u n t o d e c im a l s e g u id o d e


u n o o m á s d íg ito s, o está a u s e n te (la c a d e n a vacía). U n e x p o n e n t e - o p t a t iv o . si no
está a u s e n te , es u n a E s e g u id a d e u n sig n o + o - o p c io n a l, s e g u id o d e u n o o m á s
dígitos. O b sé rv e se q u e , c o m o m ín im o , d e b e ir u n d íg ito d e s p u é s del p u n to , d e m o d o
q u e n ú m n o c o n c u c r d e c o n 1, p e r o sí c o n 1 . 0. □

A b r e v ia tu r a s e n la n o ta c ió n

C ie rta s c o n s tr u c c io n e s a p a r e c e n c o n t a n t a fre c u e n c ia e n u n a e x p re s ió n reg u la r, q u e


e s c o n v e n ie n te in tr o d u c ir a lg u n a s a b re v ia tu ra s .

1. U no o m á s casos. El o p e r a d o r u n ita r io po stfijo * significa “ u n o o m á s c aso s d e ” .


Si r es u n a e x p re s ió n re g u la r q u e d e s ig n a al le n g u a je L (r), e n to n c e s (r)‘ e s u n a
e x p re sió n re g u la r q u e d e s ig n a al le n g u a je (L(r))*. A sí, la e x p re s ió n re g u la r a* re­
p r e s e n ta a l c o n j u n t o d e to d a s las c a d e n a s d e u n a o m á s a. El o p e r a d o r * tie n e la
m is m a p re c e d e n c ia y a s o c ia tiv id a d q u e el o p e r a d o r *. L as d o s id e n tid a d e s alge­
b raicas r* = r* |c y r* = rr* r e la c io n a n los o p e r a d o r e s d e la c e r r a d u r a d e K le e n e
y los d e la c e r r a d u r a p o sitiv a.

2. Cero o un caso. El o p e r a d o r u n ita r io p o stfijo ? significa '‘c e r o o u n c a s o d e ”. La


n o ta c ió n r ? e s u n a a b r e v ia tu r a d e r | e . Si r e s u n a e x p re s ió n reg u la r, e n to n c e s
( r ) ? e s u n a e x p re s ió n re g u la r q u e d e s ig n a el le n g u a je L(r) U {«}. P o r e je m p lo ,
u s a n d o los o p e r a d o r e s ‘ y ?, se p u e d e re e sc rib ir la d e fin ic ió n re g u la r p a r a núm
del e je m p lo 3.5 e n la fo rm a

d íg it o 0 | 1 | . . . | 9
d í g it o s -> d íg it o '
f r a c c ió n - o p t a t iv a - > ( . d íg it o s )?
e x p o n e n t e - o p t a t i v o —» ( E ( + | — )? d íg it o s )?
n ú m - » d íg it o s f r a c c i ó n - o p t a t i v a e x p o n e n t e - o p t a t i v o

3. Clases d e caracteres. L a n o ta c ió n ( a b e ] , d o n d e a , b y c s o n s ím b o lo s d e l al­


fab eto , d e s ig n a la e x p re s ió n re g u la r a | b | c . U n a clase a b re v ia d a d e c a rá c te r
c o m o [ a - z ] d e s ig n a la e x p re s ió n re g u la r a | b | . . . | z . U tiliz a n d o cía-
100 ANALISIS LEXICO

ses d e c arac teres, se p u e d e d e f in ir los id e n tific a d o re s c o m o c a d e n a s g e n e ra d a s


p o r la e x p re s ió n reg u lar

[A-Za-z][A-Za-zO-9]*

C o n ju n to s n o r e g u la r e s

A lg u n o s le n g u a je s n o se p u e d e n d e s c rib ir c o n n in g u n a e x p re s ió n regular. P a r a ilus­


t r a r los lím ite s del p o d e r d e sc rip tiv o d e las e x p re sio n e s regulares, se d a n a c o n t i n u a ­
c ió n e je m p lo s d e c o n s tr u c c io n e s d e le n g u a je s d e p r o g r a m a c ió n q u e n o se p u e d e n
d e s c rib ir c o n e x p re s io n e s regulares. E n las referen cias e s tá n las p r u e b a s d e ta le s a fir­
m a cio n es.
N o se p u e d e n u tiliz a r las e x p r e s io n e s re g u la re s p a r a d e s c r ib ir c o n s tr u c c io n e s
e q u ilib ra d a s o a n id a d a s . P o r e je m p lo , el c o n j u n t o d e to d a s las c a d e n a s d e p a ré n te sis
e q u ilib r a d o s n o se p u e d e d e s c rib ir c o n u n a e x p re s ió n regular. P o r o t r a p a rte , este
c o n j u n t o se p u e d e e s p e c ific a r m e d ia n te u n a g r a m á tic a in d e p e n d ie n te del c o n te x to .
Las c a d e n a s d e re p e tic ió n n o se p u e d e n d e s c rib ir c o n e x p re sio n e s regulares. El
c o n ju n to

{ wcw ¡ ví’ es u n a c a d e n a d e s ím b o lo s a y b }

n o se p u e d e r e p r e s e n ta r c o n n in g u n a e x p re s ió n reg u la r, ni se p u e d e d e s c rib ir con


u n a g ra m á tic a in d e p e n d ie n te d e l c o n te x to .
L as e x p re sio n e s reg u la re s se p u e d e n u tiliz a r p a r a d e s ig n a r só lo u n n ú m e r o fijo
d e re p e tic io n e s o u n n ú m e r o n o e sp e c ific a d o d e re p e tic io n e s d e u n a d e te r m in a d a
c o n s tru c c ió n . N o se p u e d e n c o m p a r a r d o s n ú m e r o s a r b itr a r io s p a r a c o m p r o b a r si
s o n iguales. P o r ta n to , la s c a d e n a s H o lle rith d e la f o r m a nH a\a2 . . . any p e rte n e c ie n ­
te s a las p r im e r a s v e rsio n e s d e F O R T R A N , n o se p u e d e n d e s c rib ir c o n u n a e x p re ­
sió n reg u la r, p u e s el n ú m e r o d e c a ra c te re s q u e sigue a H d e b e c o n c o r d a r c o n el n ú ­
m e r o d e c im a l n q u e p re c e d e a H .

3.4 R E C O N O C IM IE N T O D E C O M P O N E N T E S L E X IC O S

E n la secció n a n te r io r , se tr a tó el p r o b le m a d e c ó m o esp ecificar lo s c o m p o n e n te s


léxicos. E n esta secció n , se e s tu d ia el r e c o n o c im ie n to d e los c o m p o n e n te s léxicos y
se u tiliz a c o m o e je m p lo el le n g u a je g e n e ra d o p o r la sig u ie n te g ra m á tic a .

E je m p lo 3 . 6 . C o n s id é re s e el sig u ie n te fra g m e n to g ram a tica l:

prop - * i f expr th e n prop


i f expr th e n prop e l s e prop

expr -> térm in o o p r e l térm ino
| térm ino
térm in o - » id
núm
3.4 R E C O N O C IM IE N T O DE C O M P O N E N T E S LEXICOS 101

d o n d e los te rm in a le s ¡f. th e n . else, o p re l, id y n ú m g e n e r a n c o n j u n to s d e c a d e n a s


d a d o s p o r las sig u ie n tes d e fin ic io n e s regulares:

if-» if
th e n —» th e n
e lse -» e lse
o p re l —» < | <= | = | o | > | >=
id -» le tr a ( le tra | d íg ito )*
núm -» dígito* ( . d íg ito * )? ( E ( + | - )? d íg ito )?

d o n d e le tr a y d íg ito se h a n d e f in id o a n te r io r m e n te .
P a ra este fra g m e n to d e lenguaje, el a n a liz a d o r léxico re c o n o c e rá las p a la b ra s clave
i f . t h e n , e l s e . al igual q u e los le x e m a s re p re s e n ta d o s p o r o p re l, id y núm . P ara
s im p lific a r las cosas, se s u p o n e q u e las p a la b r a s c lav e son reserv ad as; es d ecir, n o se
p u e d e n u s a r c o m o id e n tific a d o re s. C o m o e n el e je m p lo 3.5. n ú m re p re s e n ta los n ú ­
m e ro s e n te r o s y reales s in signo d e Pascal.
A d e m á s, se s u p o n e q u e los le x e m a s e s tá n s e p a r a d o s p o r e s p a c io e n b la n c o , for­
m a d o s p o r s e c u e n c ia s n o n u la s d e e sp a c io s en b la n co , c a ra c te re s T A B y carac teres
d e n u e v a lín ea. El a n a liz a d o r léx ico e lim in a r á los e sp a c io s e n b la n c o . E sto lo h a rá
c o m p a r a n d o u n a c a d e n a c o n la d e fin ic ió n d e la e x p re sió n reg u lar e b sig u ien te.

d e lim - » b la n co 1 ta b | linean u ev a
eb —> d e lim '

Si se e n c u e n t r a u n a c o n c o r d a n c ia p a r a eb , el a n a liz a d o r léxico n o d e v u e lv e u n c o m ­
p o n e n t e léxico al a n a liz a d o r s in tá c tic o , s in o q u e se d is p o n e a e n c o n t r a r u n c o m p o ­
n e n te léxico a c o n tin u a c ió n del esp acio e n b la n c o y lo d e v u e lv e al a n a liz a d o r s in tá c ­
tico.
El o b je tiv o es c o n s tr u i r u n a n a liz a d o r léxico q u e aísle el le x e m a p a r a el sig uiente
c o m p o n e n t e léx ico d e l buffer d e e n t r a d a y q u e p r o d u z c a c o m o sa lid a u n p a r for-

E xpresión Componente
V alor del A tributo
R egular Léxico

eb — —

if if —
then then —

else e ls e —
¡d id apuntador a la entrada en la tabla
núm núm apuntador a la entrada en la tabla
< oprel MEN
<= oprel MEI
= oprel IGU
o oprel DIF
> oprel MAY
>= oprel MAI

F ig . 3 .1 0 . P a tr o n e s d e e x p r e s io n e s regu lares p ara c o m p o n e n t e s léxicos.


102 ANALISIS LEXICO

m a d o p o r el c o m p o n e n te léxico a p r o p ia d o y el v a lo r d e a trib u to , u tiliz a n d o la ta b la


d e tr a d u c c ió n d e la figura 3.10. L o s v alo res d e a tr ib u to p a r a los o p e r a d o r e s relació ­
nales están d a d o s p o r las c o n s ta n te s s im b ó lic a s men. m e i. ig u . may. m a i . n

D ia g r a m a s d e tr a n s ic io n e s

C o m o p a so in te r m e d io e n la c o n s tru c c ió n d e u n a n a liz a d o r léxico, p r im e r o se p ro ­


d u c e un d ia g ra m a d e flu jo estiliza d o , lla m a d o diagram a d e transiciones. L os d ia g ra ­
m a s d e tra n s ic io n e s re p re s e n ta n las a c c io n e s q u e tie n e n lu g a r c u a n d o el a n a liz a d o r
léxico es lla m a d o p o r el a n a liz a d o r s in tá c tic o p a r a o b te n e r el sig u ie n te c o m p o n e n te
léxico, c o m o sugiere la fig u ra 3.1. S u p ó n g a s e q u e el buffer d e e n t r a d a es c o m o el de
la figura 3.3 y q u e el a p u n t a d o r del p r in c ip io del le x e m a a p u n t a al c a r á c te r q u e sigue
al ú ltim o le x e m a e n c o n tr a d o . Se u tiliz a u n d ia g ra m a d e tra n s ic ió n p a r a lo c aliz ar la
in fo rm a c ió n so b re los c a ra c te re s q u e se d e te c ta n a m e d id a q u e el a p u n t a d o r d e la n ­
te ro e x a m in a la e n tra d a . E sto se h a c e c a m b ia n d o d e p o sició n e n el d ia g ra m a según
se leen los caracteres.
L as p o sicio n es e n u n d ia g ra m a d e tra n s ic ió n se re p re s e n ta n c o n u n c írc u lo y se
lla m a n estados. L os e s ta d o s se c o n e c ta n m e d ia n te flechas, lla m a d a s aristas. L as aris­
ta s q u e salen del e s ta d o s tie n e n e tiq u e ta s q u e in d ic a n los c a ra c te re s d e e n t r a d a q u e
p u e d e n a p a r e c e r d e s p u é s d e h a b e r lleg ad o el d ia g ra m a d e tra n s ic ió n al e s ta d o .v. La
e tiq u e ta o tr o se refiere a t o d o c a r á c te r q u e n o h a y a sid o in d ic a d o p o r n in g u n a d e las
o tra s arista s q u e salen d e s.
Se s u p o n e q u e los d ia g ra m a s d e tra n s ic io n e s d e esta secció n son determ inistas;
es d ecir, n in g ú n s ím b o lo p u e d e c o n c o r d a r c o n las e tiq u e ta s d e d o s arista s q u e salgan
d e u n estad o . Al e m p e z a r la secció n 3.5, se h a r á m e n o s rig u ro sa esta c o n d ic ió n , fa­
c ilita n d o las c o sas al d is e ñ a d o r del a n a liz a d o r léxico y, c o n las h e r r a m ie n ta s a d e c u a ­
d as. ta m b ié n al e n c a r g a d o d e su im p la n ta c ió n .
U n e s ta d o se e tiq u e ta c o m o el e s ta d o d e inicio ; e s e n el e s ta d o in ic ia l d e l d ia ­
g ra m a d e tra n s ic ió n d o n d e reside el c o n tr o l c u a n d o se e m p ie z a a re c o n o c e r u n c o m ­
p o n e n te léxico. C ierto s e s ta d o s p u e d e n te n e r accio n es q u e se e je c u ta n c u a n d o el flujo
del c o n tro l a lc a n z a d ic h o estad o . Al e n t r a r e n u n e s ta d o se lee el sig u ie n te c a rá c te r
d e e n t r a d a . Si h a y u n a a r is ta del e s ta d o e n c u r s o d e e je c u c ió n c u y a e t i q u e t a c o n -
c u e rd e c o n ese c a rá c te r d e e n tra d a , e n to n c e s se v a al e s ta d o a p u n t a d o p o r la arista.
D e o t r o m o d o , se in d ic a u n fallo.
En la fig u ra 3.11 se m u e s tra u n d ia g ra m a d e tra n s ic io n e s p a r a los p a tro n e s >= y
>. F.I d ia g ra m a d e tra n s ic io n e s fu n c io n a d e la sig u ie n te fo rm a . S u e s ta d o d e in icio es
el e s ta d o 0 . E n el e s ta d o 0 se lee el sig u ie n te c a r á c te r d e e n tr a d a . L a a ris ta e tiq u e ta d a
c o n > del e s ta d o 0 se d e b e seg u ir h a s ta el e s ta d o 6 si este c a rá c te r d e e n t r a d a es >. De
o tr o m o d o , significa q u e n o se h a b r á re c o n o c id o ni > ni >=.

F ig . 3 .1 1 . D ia g r a m a d e tr a n s ic io n e s para >=.
3.4 R E C O N O C IM IE N T O DE C O M P O N E N T E S LEXICOS 103

Ai llegar al e s ta d o 6 se lee el sig u ie n te c a rá c te r d e e n tr a d a . L a a ris ta e tiq u e ta d a


c o n = q u e sa le del e s ta d o 6 d e b e r á seguirse h a s ta el e s ta d o 7 si este c a r á c te r d e e n ­
tra d a es u n =. D e o t r o m o d o , la a ris ta e tiq u e ta d a c o n o tr o in d ica q u e se d e b e r á ir al
e s ta d o 8. El c írc u lo d o b le del e s ta d o 7 in d ic a q u e éste es u n e s ta d o d e a c e p ta c ió n ,
u n e s ta d o e n el c u a l se h a e n c o n t r a d o el c o m p o n e n te léxico >=.
O b sé rv e se q u e el c a r á c te r > y o t r o c a r á c te r a d ic io n a l se leen a m e d id a q u e se
sigue la se c u e n c ia d e arista s d e sd e el e s ta d o in icial al e s ta d o d e a c e p ta c ió n 8. C o m o
el c a rá c te r a d ic io n a l n o e s p a rte del o p e r a d o r re la c io n a l >. se d e b e re tro c e d e r u n ca­
r á c te r el a p u n t a d o r d e la n te r o . Se u s a u n * p a r a in d ic a r los e s ta d o s en q u e s e d e b e
llev ar a c a b o este re tro c e so e n la e n tra d a .
E n g en eral, p u e d e h a b e r v ario s d ia g r a m a s d e tra n s ic io n e s , c a d a u n o d e los cuales
esp ecifiq u e u n g ru p o d e c o m p o n e n te s léxicos. Si su rg e u n fallo m ie n tr a s se e s tá si­
g u ie n d o u n d ia g ra m a d e tran sicion es, se d e b e re tro c e d e r el a p u n t a d o r d e la n te r o hasta
d o n d e estab a e n el e s ta d o in icial d e d ic h o d ia g ra m a , y a c tiv a r el sig u ie n te d ia g ra m a
d e tra n sic io n e s. D a d o q u e los a p u n ta d o r e s d e in ic io d e le x e m a y los d e la n te r o s m a r ­
c a b a n la m is m a po sició n e n el e s ta d o inicial del d ia g ra m a , se re tro c e d e el a p u n t a d o r
d e la n te r o h a s ta la p o sic ió n q u e m a rc a el a p u n t a d o r al in ic io d e lex em a. Si el fallo
surge en to d o s los d ia g ra m a s d e tra n s ic io n e s , e s q u e se h a d e te c ta d o u n e r r o r léxico
y se in v o c a u n a r u ti n a d e re c u p e ra c ió n d e errores.

E je m p lo 3 .7 . E n la figura 3 .1 2 se m u e s tra u n d ia g ra m a d e tra n s ic io n e s p a r a el c o m ­


p o n e n te léxico o p r e l. O b sé rv e se q u e la figura 3 . 11 es u n a p a rte d e este d ia g ra m a d e
tra n s ic ió n m á s c o m p le jo . □

inicio „ , „ „
devuelve! o p rc l. M E I )

devuelve!oprel. DIF)

devuelve(oprel. MEN)

dc\uelve(oprcl, IG U )

7 í¡ devuelve(oprel. MAI)
*
devuelve!oprel. MAY)

Fig. 3.12. D iagram a d e transiciones p a ra o p erad o res relaciónales.

E je m p lo 3 .8 . C o m o las p a la b r a s c lav e r o n s e c u e n c ia s d e letras, son la e x c e p c ió n a la


regla d e q u e u n a s e c u e n c ia d e letras y d íg ito s q u e c o m ie n c e c o n u n a letra e s u n id e n -
tificad o r. E n vez d e c o d ific a r las e x c e p c io n e s en u n d ia g ra m a d e tra n s ic io n e s , e s m e ­
j o r c o n s id e r a r las p a la b r a s clave c o m o id e n tific a d o re s especiales, c o m o en la sección
2.7. C u a n d o se llega al e s ta d o d e a c e p ta c ió n d e la figura 3 .1 3 , se e je c u ta alg ú n c ó ­
d ig o p a ra d e t e r m in a r si el le x e m a q u e c o n d u j o al e s ta d o d e a c e p ta c ió n e s u n a p a la ­
b ra c lav e o u n id en tificad o r.
104 A N A L IS IS LEXICO

le tr a o d íg ito

d e v u e lv e ( o b l e n - c o m p l e x (). i n s i a l a - i d ())

Fig. 3.13. D iagram a d e transiciones para identificadores y palabras clave.

U n a té c n ic a sencilla p a r a s e p a ra r las p a la b ra s c lav e d e los id e n tific a d o re s es ini-


c ializ ar a d e c u a d a m e n te la ta b la d e s ím b o lo s e n d o n d e se g u a r d a la in f o r m a c ió n so­
bre id e n tific ad o res. P a ra los c o m p o n e n te s léxicos d e la figura 3.10. es n e c e s a rio in ­
tro d u c ir las c a d e n a s i f . t h e n y e l s e e n la ta b la d e sím b o lo s a n te s de q u e ap arezca
n in g ú n c a r á c te r en la e n tra d a . T a m b i é n se p o n e u n a n o t a e n la ta b la d e s ím b o lo s
del c o m p o n e n te léxico q u e d e b e s e r d e v u e lto c u a n d o se r e c o n o c e u n a d e estas ca­
d e n a s. L a p ro p o s ic ió n devuelve d e s p u é s del e s ta d o d e a c e p ta c ió n d e la figura 3.13
u tiliza o b te n -c o m p le x o c in s ta la -id i ) p a r a o b te n e r el c o m p o n e n te léx ico y el v a lo r
d e a trib u to , re s p e c tiv a m e n te , q u e d e b e n s e r d ev u e lto s. El p r o c e d im ie n to in sta la -i d()
tien e acce so al buffer, e n d o n d e está lo c a liz a d o el le x e m a del id e n tific a d o r. S e e x a ­
m in a la ta b la d e s ím b o lo s y si se e n c u e n tr a el le x e m a m a r c a d o c o m o u n a p a la b ra
clave. in sta la -id O d e v u e lv e 0. Si se e n c u e n t r a el le x e m a y e s u n a v a ria b le d e p ro ­
g ra m a . in sta la -id O d e v u e lv e u n a p u n t a d o r a la e n tr a d a d e la ta b la d e s ím b o lo s. Si
el le x e m a n o se e n c u e n t r a e n la ta b la d e s ím b o lo s, se in sta la c o m o u n a v a ria b le y se
d e v u e lv e u n a p u n t a d o r a la e n tr a d a recién c read a .
El p r o c e d im ie n to o b té n -c o m p le x b u sc a el le x e m a d e fo rm a p a re c id a e n la ta b la
d e s ím b o lo s. Si el le x e m a e s u n a p a la b ra clave, se d e v u e lv e el c o r r e s p o n d ie n te c o m ­
p o n e n te léxico; si n o . se d e v u e lv e el c o m p o n e n t e léx ico id.
O b sérv ese q u e el d ia g ra m a d e tra n s ic io n e s n o se m o d ific a si se re c o n o c e n p a la ­
b ra s c lav e ad ic io n a le s; s im p le m e n te se in icializa la ta b la d e s ím b o lo s c o n las c a d e n a s
\ c o m p o n e n te s léxicos d e las p a la b ra s clave a d icio n ales.

in ic io

in ic io

F ig. 3 .1 4 . D ia g r a m a s d e tr a n s ic io n e s para n ú m e r o s sin s i g n o e n P ascal.


3.4 R E C O N O C IM IE N T O D E C O M P O N E N T E S LEXICOS 105

L a té c n ic a d e c o lo c a r las p a la b ra s c lav e e n la ta b la d e s ím b o lo s es casi in d is p e n ­


sable c u a n d o el a n a liz a d o r léxico se co difica m a n u a lm e n te . D e n o h a c e rlo así, el n ú ­
m e r o d e e s ta d o s e n u n a n a liz a d o r léxico p a r a u n len g u aje d e p r o g ra m a c ió n típ ic o es
d e v ario s cien to s, m ie n tr a s q u e u tiliz a n d o el tru c o , q u iz á b aste c o n m e n o s d e cien
estados.

E je m p lo 3 .9 . C u a n d o se c o n s tr u y e u n re c o n o c c d o r d e n ú m e r o s sin signo d a d o s p o r
la d e fin ic ió n reg u lar

n ú m -* d ígito * (.d íg ito * )? (E (+ | - ) ? d ígito* )?

su rg en v arias c u estio n es. O b sé rv e se q u e la d e fin ic ió n tie n e la fo rm a d íg ito s fracción ?


e x p o n e n te ? , d o n d e fra cció n y e x p o n e n t e s o n o p c io n a le s.
El le x e m a d e u n d e te r m in a d o c o m p o n e n t e léx ico d e b e s e r el m á s g r a n d e posible.
P o r e je m p lo , el a n a liz a d o r léx ico n o d e b e d e te n e r s e d e s p u é s d e a p a r e c e r 12 o in ­
clu so 12 .3 c u a n d o la e n t r a d a es 12 . 3E4. E m p e z a n d o e n los e s ta d o s 25. 2 0 y 12
d e la figura 3 .1 4 . los e s ta d o s d e a c e p ta c ió n se a lc a n z a r á n d e s p u é s d e q u e h a y a n a p a ­
re c id o 12. 1 2 . 3 y 12 . 3E4, r e s p e c tiv a m e n te , s u p o n ie n d o q u e 12 . 3E4 v a y a se­
g u id o d e u n c a r á c te r d is tin to d e d íg ito e n la e n tra d a . L o s d ia g ra m a s d e tra n sic io n e s
c o n e s ta d o s d e in ic io 2 5. 2 0 y 12 s o n p a ra d íg ito s , d íg it o s fra cció n y d íg it o s frac­
ció n ? e x p o n e n te , re s p e c tiv a m e n te , d e m o d o q u e se d e b e n p r o b a r los e s ta d o s d e in i­
c io e n el o r d e n in v e rs o 12, 20, 25.
L a a cció n , c u a n d o se llega a c u a lq u ie r a d e los e s ta d o s d e a c e p ta c ió n 1 9 . 2 4 ó
2 7 , e s lla m a r al p r o c e d im ie n to / n s ta la -n w n , q u e in tr o d u c e el le x e m a en u n a ta b la
d e n ú m e r o s y d e v u e lv e u n a p u n t a d o r a la e n t r a d a c read a . El a n a liz a d o r léx ico d e ­
vuelve el c o m p o n e n te léxico n ú m c o n este a p u n t a d o r c o m o v alo r léxico.

Se p u e d e u tiliz a r la in f o r m a c ió n so b re el len g u aje q u e n o está e n las d e fin ic io n e s


r e g u la r e s d e lo s c o m p o n e n t e s lé x ic o s p a r a s e ñ a la r lo s e r r o r e s e n la e n t r a d a . P o r
e je m p lo , c o n la e n t r a d a l.<x. se fracasa e n los e s ta d o s 14 y 2 2 d e la fig u ra 3.14
c o n < c o m o sig u ie n te c a r á c te r d e e n tra d a . E n v ez d e d e v o lv e r el n ú m e r o 1. se p o d ría
i n f o r m a r d e u n e r r o r y c o n t i n u a r c o m o si la e n t r a d a f u e ra 1 . 0 < x . E ste c o n o c i ­
m i e n to se p u e d e u sa r ta m b ié n p a r a s im p lific a r los d ia g r a m a s de tra n sic io n e s, p u e s to
q u e el m a n e jo d e e rro re s se p u e d e u tiliz a r p a r a re c u p e ra rs e d e a lg u n a s situ a c io n e s
q u e d e o tr o m o d o c o n d u c ir ía n a u n fallo.
H a y v a ria s f o r m a s d e e v i ta r la c o n c o r d a n c ia r e d u n d a n t e d e lo s d ia g r a m a s d e
tr a n s i c io n e s d e la fig u ra 3 .1 4 . U n a d e e lla s c o n s is te e n r e e s c r ib ir lo s d ia g r a m a s
d e tra n s ic io n e s c o m b in á n d o lo s e n u n o . ta re a g e n e r a lm e n te la b o rio sa . O tr a fo rm a es
m o d ific a r la respu esta al fallo d u r a n te el p r o c e s o d e s e g u im ie n to d e u n d ia g ra m a .
U n m é to d o e s tu d ia d o m á s a d e la n te e n este c a p ítu lo p e r m ite a tra v e s a r v ario s estad o s
d e a c e p ta c ió n : se re tro c e d e al ú ltim o e s ta d o d e a c e p ta c ió n q u e se a tra v e s ó c u a n d o
se p r o d u jo el fallo.

E jem p lo 3 .1 0 . U n ie n d o los d ia g ra m a s d e tra n sic io n e s d e las figuras 3.12. 3.13 y 3.14.


se p u e d e o b te n e r u n a s e c u e n c ia d e d ia g r a m a s d e tr a n s ic io n e s p a r a to d o s los c o m ­
p o n e n te s léxicos del e je m p lo 3.6. L o s e s ta d o s d e in icio c o n n ú m e r o s m e n o r e s d e b e n
s e r a lc a n z a d o s a n te s q u e los e s ta d o s d e in ic io c o n n ú m e r o s m ayo res.
106 ANALISIS LEXICO

L a ú n ic a c u e s tió n q u e re s ta es la re la c io n a d a c o n el e s p a c io e n b la n c o . El tr a ta ­
m i e n to d e eb . q u e r e p re s e n ta el e s p a c io e n b la n c o , es d is tin to d e l d e lo s p a tro n e s
a n a liz a d o s a n te r io r m e n te , p o rq u e n o se d ev u elv e n a d a al a n a liz a d o r s in tá c tic o c u a n d o
se e n c u e n tr a el e s p a c io e n b la n c o e n la e n tr a d a . U n d ia g ra m a d e tra n s ic io n e s q u e
re c o n o c e a e b p o r si m is m o es

delim

N o se d e v u e lv e n a d a c u a n d o se a lc a n z a el e s ta d o d e a c e p ta c ió n ; s im p le m e n te se re­
g resa al e s ta d o in icial d e l p r im e r d ia g r a m a d e tra n s ic io n e s p a r a b u s c a r o t r o p a tró n .
S ie m p re q u e sea posible, e s m e jo r b u s c a r c o m p o n e n te s léxicos q u e a p a re z c a n co n
m a y o r fre c u e n c ia a n te s q u e los m e n o s frecu en tes, p o r q u e a u n d ia g ra m a d e tr a n s i­
c io n e s só lo se llega d esp u és d e h a b e r fallado e n to d o s los d ia g ra m a s a n terio res. C o m o
se e s p e ra q u e el e s p a c io e n b la n c o a p a re z c a c o n frec u e n c ia , e s m e jo r p o n e r el d ia ­
g ra m a d e tr a n s ic io n e s p a r a el e s p a c io e n b la n c o cerc a del p r in c ip io q u e p r o b a r el
e s p a c io e n b la n c o al final. □

Im p la n ta ció n d e un d ia g r a m a d e tr a n s ic io n e s

U n a se c u e n c ia d e d ia g ra m a s d e tra n s ic io n e s se p u e d e c o n v e r tir e n u n p r o g r a m a q u e
b u s q u e los c o m p o n e n te s léxicos e sp e c ific a d o s p o r los d ia g ra m a s . S e a d o p t a u n e n ­
fo q u e s is te m á tic o q u e sirve p a r a to d o s los d ia g ra m a s d e tra n s ic io n e s y q u e c o n s tr u y e
p ro g ra m a s c u y o t a m a ñ o e s p ro p o rc io n a l al n ú m e r o d e e s ta d o s y d e arista s d e los
d ia g ra m as.
A c a d a e s ta d o le c o r r e s p o n d e u n s e g m e n to d e cód igo . Si h a y arista s q u e salen d e
u n e s ta d o , e n to n c e s su c ó d ig o lee u n c a r á c te r y selec cio n a u n a a ris ta p a r a seguir, si
es posible. S e u tiliz a la fu n c ió n s i g t e c a r ( ) p a r a le er el sig u ie n te c a r á c te r d e l buffer
d e e n tr a d a , p a r a a v a n z a r el a p u n t a d o r d e l a n te r o e n c a d a lla m a d a y p a r a d e v o lv e r el
c a r á c te r le íd o 1. Si h a y u n a a ris ta e tiq u e ta d a c o n el c a r á c te r leído, o e tiq u e ta d a c o n
u n a clase d e c a ra c te re s q u e c o n te n g a a l c a r á c te r le íd o , e n to n c e s el c o n tro l se tra n s ­
fiere al c ó d ig o del e s ta d o a p u n t a d o p o r e s a arista. Si n o h a y ta l a r is ta y el e s ta d o en
c u r s o d e e je c u c ió n n o es el q u e in d ic a q u e se h a e n c o n t r a d o u n c o m p o n e n t e léxico,
e n to n c e s se lla m a a la r u ti n a f a l l o ( ) p a r a h a c e r re tro c e d e r el a p u n t a d o r d e la n te r o
a la p o sic ió n del a p u n t a d o r al c o m ie n z o e in ic ia r la b ú s q u e d a d e l c o m p o n e n te léxico
e s p e c ific a d o p o r el s ig u ie n te d i a g r a m a d e tr a n s ic io n e s . Si n o h a y q u e p r o b a r m á s
d ia g r a m a s d e tra n sic io n e s. f a l l o ( ) lla m a a u n a r u ti n a d e re c u p e ra c ió n d e erro res.
Para d ev o lv er los c o m p o n e n te s léxicos se utiliza la variable global v a l o r _ l é x i c o ,
a la q u e se a s ig n a n los a p u n t a d o r e s d e v u e lto s p o r las fu n c io n e s i n s t a l a _ i d ( ) e
i n s t a l a _ n ú m ( ) c u a n d o se e n c u e n t r a u n id e n tif ic a d o r o u n n ú m e r o , r e s p e c tiv a ­
m e n te . Se d e v u e lv e la clase del c o m p o n e n t e léx ico p o r el p r o c e d im ie n to p rin cip al
del a n a liz a d o r léxico, lla m a d o s i g t e _ c o m p l e x ( ) .

1 U n a im p la n ta c ió n m a s e fic ie n t e u tiliz a r ía u n a m a c r o e n lin e a e n lu g a r d e la f u n c ió n s i g t e -


c a r ( ).
3.4 R E C O N O C IM IE N T O DE C O M P O N E N T E S LEXICOS 107

Se u tiliza u n a p ro p o sic ió n c a se p a r a e n c o n t r a r el e s ta d o in icial d e l sig u ie n te d ia ­


g r a m a d e tra n sic io n e s. E n la a p lic a c ió n e n C d e la fig u ra 3 . 15, d o s v ariab les, e s t a d o
e i n i c i o , re c o rre n el e s ta d o a c tu a l y el e s ta d o in icial del d ia g ra m a d e tra n s ic io n e s
e n c u r s o . L o s n ú m e r o s d e e s t a d o d e l c ó d i g o s o n p a r a lo s d i a g r a m a s d e tr a n s i c io ­
nes d e las figuras 3.12 a 3.14.
L as a n s t a s d e los d ia g r a m a s d e tra n s ic io n e s se e n c u e n t r a n s e le c c io n a n d o r e p e ti­
d a m e n te el fra g m e n to d e c ó d ig o p a r a u n e s ta d o y e je c u ta n d o ese fra g m e n to d e c ó ­
d ig o p a r a d e t e r m i n a r el sig u ie n te e s ta d o , c o m o se in d ic a e n la figura 3 .1 6 . Se m u e s ­
t r a n el c ó d ig o p a r a el e s t a d o 0 , ta l c o m o s e m o d i f i c ó e n el e j e m p l o 3 .1 0 p a r a
c o n s id e r a r los e sp a c io s e n b la n co , y el c ó d ig o p a r a d o s d e los d ia g ra m a s d e tra n s ic io ­
nes d e la s fig u ras 3 .1 3 y 3 .1 4 . O b sérv ese q u e la c o n s tr u c c ió n en C

while(l) prop
re p ite prop “ i n d e f i n id a m e n te ” , e s d e c ir, h a s ta q u e a p a r e z c a u n a in s tr u c c ió n r e ­
turn.

int e s t a d o = 0 , inicio = 0;
int v a l o r _ l é x i c o ;
/* para "devolver" el segundo componente del componente
léxico */

int fallo()

{
delantero = inicio_lexema;
switch (inic i o ) {
c a s e 0: inicio = 9; break;
c a s e 9: inicio = 12; break;
c a s e 12: inicio = 2 0 ; break;
c a s e 20: i n i c i o = 25; break;
c a s e 25: r e c u p e r a n ; break;
default: /* e r r o r d e l c o m p i l a d o r */

}
}

Fig. 3.15. C ódigo en C p a ra e n c o n tra r el siguiente estad o d e inicio.

C o m o e n C n o se p e rm ite q u e se d e v u e lv a n u n c o m p o n e n t e léxico y u n v alo r d e


a trib u to , i n s t a l a _ i d ( ) e i n s t a l a _ n ú m ( ) a s ig n a n e n c o n s e c u e n c ia a lg u n a v a­
riab le g lo b a l al v alo r d e a tr ib u to c o r r e s p o n d ie n te a la e n tr a d a e n la ta b la d e l id o
n ú m e n c u e stió n .
Si el le n g u a je d e im p la n ta c ió n n o tie n e u n a p ro p o s ic ió n case, se p u e d e c re a r u n a
m a tr iz p a r a c a d a e s ta d o , in d e x a d a p o r c arac teres. Si esta d o 1 es u n a m a triz d e este
tip o , e n to n c e s estado\[c] e s u n a p u n t a d o r a u n a p a r te d e c ó d ig o q u e d e b e ejecu tarse
s ie m p re q u e el c a r á c te r d e p re a n á lisis sea c. P o r lo g en eral, este c ó d ig o fin alizaría
c o n u n a in s tr u c c ió n g o t o a l c ó d ig o p a r a el sig u ie n te estad o . L a m a tr iz del e s ta d o s
se c o n o c e c o m o ta b la d e tra n s fe re n c ia in d ire c ta d e s.
ANALISIS LEXICO

complex sigte_complex()
w h i l e (1) {
switch (esta d o ) {
case 0: c = sigtecar();
/* c es el c a r á c t e r d e p r e a n á l i s i s */
if (c==blanco ¡ ¡ c==tab ¡ ¡ c = l í n e a _ n u e v a ) {
estado = 0;
inicio_lexema++;
/* se a v a n z a el i n i c i o d e l lexema

>
else if (c = = '<') estado = 1;
else if (c = = '=') estado = 5;
else if (c = = '>') estado = 6;
else e s t a d o = fallo ( ) ;
break;

.../* a q u í v a n los c a s o s d e l 1 al 8 */
case 9: c * sigtecar();
if (i s l e t t e r ( c ) ) e s t a d o = 10;
else e s tado » fallo();
break;
case 10: c = sigtecar();
if (i s l e t t e r ( c ) ) e s t a d o = 10;
else if (isdigit(c)) estado * 10;
else estado = 11;
break;
case 11: regresa(l); instala_id;
return ( o b t é n _ c o m p l e x () );

.../* a q u í v a n los c a s o s d e l 12 al 24 */
case 25: c = sigtecar();
if (isdigit(c)) estado = 26;
else estado = f allo ( ) ;
break;
case 26: c = sigtecar();
if (isdigit(c)) estado = 26;
else estado = 27;
break;
c a s e 27: regresa(l); i n s t a l a _ n ú m ( );
r eturn( NUM );

)
}
}

Fig. 3.16. C ódigo en C p a ra el an alizado r léxico.


3.5 L E N G U A JE P A R A ESPECIFICACION D E A N A L IZ A D O R E S LEXICO S 109

3 .5 U N L E N G U A J E P A R A L A E S P E C IF IC A C IO N
D E A N A L IZ A D O R E S L E X IC O S

Se h a n d e s a rro lla d o a lg u n a s h e r r a m ie n ta s p a r a c o n s tr u ir a n a liz a d o re s léx ico s a p a r ­


tir d e n o ta c io n e s d e p r o p ó s ito esp ecial b a s a d a s e n e x p re sio n e s regulares. Y a se h a
e s tu d ia d o el u s o d e e x p re sio n e s reg u la re s e n la esp ecificació n d e p a tro n e s d e c o m ­
p o n e n te s léxicos. A n te s d e c o n s id e r a r lo s a lg o ritm o s p a r a c o m p ila r e x p re s io n e s re­
g u la re s e n p ro g r a m a s d e c o n c o r d a n c ia d e p a tro n e s , se d a u n e je m p lo d e u n a h e rra ­
m ie n ta q u e p u e d a ser u tiliz a d a p o r d ic h o alg o ritm o .
E n esta secció n se d e sc rib e u n a h e r r a m ie n ta c o n c re ta , lla m a d a L E X , m u y utili­
z a d a e n la e s p e c ific a c ió n d e a n a liz a d o r e s léx ico s p a r a v a r io s le n g u a je s . E sa h e r r a ­
m ie n ta se d e n o m i n a com pilador L E X , y la esp ecificació n d e s u e n tr a d a , lenguaje
L E X . El e s tu d io d e u n a h e r r a m ie n ta e x iste n te p e r m itir á m o s tr a r c ó m o , u tiliz a n d o
e x p re sio n e s reg u lares, se p u e d e c o m b in a r la e sp ecificació n d e p a tro n e s c o n accio n es,
p o r e je m p lo , h a c ie n d o e n tra d a s e n u n a ta b la d e s ím b o lo s, c u y a e je c u c ió n se p u e d a
p e d ir a u n a n a liz a d o r léxico. Se p u e d e n u tiliz a r las esp ecificacio n es tip o L E X a u n ­
q u e n o se d is p o n g a d e u n c o m p ila d o r L E X ; las esp ecificacio n es se p u e d e n tra n s c ri­
b ir m a n u a lm e n te a u n p r o g r a m a o p e r a tiv o e m p le a n d o las té c n ic a s d e d ia g r a m a s d e
tra n s ic io n e s d e la sección a n te rio r.

program a
fu en te c o m p ila d o r
-► l e x .yy-c
e n LEX d e LEX
lex. 1

c o m p ila d o r
lex.yy.c a.out
deC

a r c h iv o d e se c u e n c ia de
en tra d a » c o m p o n e n te s
lé x ic o s

F ig . 3 .1 7 . C r e a c ió n d e u n a n a liz a d o r lé x ic o c o n L E X .

P o r lo g en eral, se u tiliz a el L E X d e la f o r m a re p re s e n ta d a e n la figura 3 .1 7 . P ri­


m e r o , se p r e p a r a u n a e s p e c ific a c ió n d e l a n a l i z a d o r lé x ic o c r e a n d o u n p r o g r a m a
l e x . 1 e n le n g u a je L E X . D e s p u é s l e x . 1 se p a sa p o r el c o m p ila d o r L E X p a r a p ro ­
d u c i r el p r o g r a m a e n C l e x . y y . c . El p r o g r a m a l e x . y y . c c o n s ta d e u n a r e p re ­
s e n ta c ió n ta b u la r d e u n d ia g ra m a d e tra n s ic io n e s c o n s tr u id o a p a r tir d e la s e x p re sio ­
nes reg ulares d e l e x . 1. j u n t o c o n u n a r u ti n a e s tá n d a r q u e u tiliz a la ta b la p a r a r e ­
c o n o c e r le x em as. L as a c c io n e s a s o c ia d a s a las e x p re s io n e s reg u la re s d e l e x . 1 son
p a r te s d e c ó d ig o e n C y se t r a n s f ie r e n d i r e c t a m e n t e a l e x . y y . c . P o r ú ltim o .
110 A N A L ISIS LEXICO

l e x . y y . c se e je c u ta e n el c o m p i l a d o r d e C p a r a p r o d u c i r u n p r o g r a m a o b je to
a . o u t . q u e es el a n a liz a d o r léx ico q u e tr a n s f o r m a u n a r c h iv o d e e n tr a d a e n u n a
se c u e n c ia d e c o m p o n e n te s léxicos.

E s p e c ific a c io n e s en L E X

U n p r o g r a m a e n L E X c o n s ta d e tres partes:

d e c la ra c io n e s
%%
reglas d e tr a d u c c ió n
%%
p r o c e d im ie n to s au x iliares

L a secció n d e d e c la ra c io n e s in c lu y e d e c la ra c io n e s d e v ariab les, c o n s ta n te s m a n ifie s­


ta s y d e fin ic io n e s reg u lares. ( U n a c o n s ta n t e m a n ifie s ta es u n id e n tific a d o r q u e se d e ­
c la ra p a r a r e p r e s e n ta r u n a c o n s ta n te .) L as d e fin ic io n e s reg u la re s s o n p ro p o s ic io n e s
sim ila re s a las e s tu d ia d a s e n la secció n 3.2, y se u tiliz an c o m o c o m p o n e n te s d e las
e x p re sio n e s reg ulares q u e a p a re c e n e n las reglas d e tra d u c c ió n .
L as reglas d e tr a d u c c ió n d e u n p r o g r a m a e n L E X s o n p ro p o s ic io n e s d e la fo rm a

P\ { acción , }
P2 { acción2 }
• •• •••

p„ { acción , , }

d o n d e p¡ es u n a e x p re s ió n re g u la r y c a d a acción es u n fra g m e n to d e p r o g r a m a q u e
d e sc rib e c u á l h a d e ser la a c c ió n d e l a n a liz a d o r léx ico c u a n d o el p a t r ó n p , c o n c u e r d a
c o n u n le x e m a . E n L E X , las a c c io n e s se e sc rib e n e n C , e n g en eral, sin e m b a r g o , p u e ­
d e n e s ta r en c u a lq u ie r le n g u a je d e im p la n ta c ió n .
L a te rc e ra secció n c o n tie n e to d o s los p r o c e d im ie n to s a u x ilia re s q u e p u e d a n n e ­
c e sita r las a c c io n e s. A veces, esto s p r o c e d im ie n to s se p u e d e n c o m p i l a r p o r se p a ra d o
y c a r g a r c o n el a n a liz a d o r léxico.
U n a n a liz a d o r léxico c r e a d o p o r L E X se c o m p o r t a e n s in c ro n ía c o n u n a n a liz a ­
d o r s in tá c tic o c o m o sigue. C u a n d o es a c tiv a d o p o r el a n a liz a d o r s in tá c tic o , el a n a ­
liz a d o r léxico c o m ie n z a a le er su e n t r a d a re s ta n te , u n c a r á c te r a la vez, h a s ta q u e
e n c u e n tr e el m a y o r p refijo d e la e n t r a d a q u e c o n c u e r d e c o n u n a d e las e x p re sio n e s
reg u lares p,. E n to n c e s , e je c u ta la acción,. G e n e r a lm e n te , acción, d e v o lv e rá el c o n tro l
al a n a liz a d o r s in tá c tic o . S in e m b a r g o , si n o lo h ace, el a n a liz a d o r léx ico se d is p o n e
a e n c o n t r a r m á s le x em as, h a s ta q u e u n a a c c ió n h a c e q u e el c o n tr o l regrese al a n a li­
z a d o r s in tá c tic o . L a b ú s q u e d a re p e tid a d e le x e m a s h a s ta e n c o n t r a r u n a in s tru c c ió n
return e x p lícita p e r m ite al a n a liz a d o r léx ico p ro c e s a r e sp a c io s e n b la n c o y c o m e n ­
ta rio s d e m a n e r a a p r o p ia d a .
El a n a liz a d o r léxico d e v u e lv e u n a ú n ic a c a n tid a d , el c o m p o n e n t e léxico, al a n a ­
liz a d o r s in tá c tic o . P a r a p a s a r u n v a lo r d e a t r i b u t o c o n la in f o r m a c ió n d e l le x e m a , se
p u e d e a s ig n a r u n a v a ria b le g lo b a l lla m a d a y y l v a l .
3.5 L E N G U A JE P A R A ESPECIFICACION DE A N A L IZ A D O R E S L E X IC O S III

E jem p lo 3 .1 1 . L a figura 3 .1 8 e s u n p r o g r a m a e n L E X q u e r e c o n o c e los c o m p o n e n ­


te s léxicos d e la figura 3 .1 0 y d e v u e lv e el c o m p o n e n te léxico e n c o n tr a d o . A lg u n as
o b s e r v a c io n e s s o b re el c ó d ig o s e r v ir á n p a r a i n t r o d u c i r m u c h a s c a ra c te r ís tic a s im ­
p o r ta n te s d e L E X .

%{
/* d e f i n i c i ó n d e las c o n s t a n t e s m a n i f i e s t a s
MEN, MEI, IGU, DIF, M A Y , MAI,
IF, THEN, ELSE, ID, NUMERO, OPREL */

%}
/* definiciones regulares */
delim l \t\nj
eb {d e 1 i m }+
letra (A -Za-z]
dígito (0 -9 )
id ¡ l e t r a { ( (letra) i {dígito})*
número {d í g i t o ) + (\. { d í g i t o }+ )?(E [+\— ] ? { d í g i t o } +)?

%%

¡eb¡ {/* n o h a y a c c i ó n ni se d e v u e l v e n a d a */}


if r e t u r n ( I F ) ;}
then r e t u r n ( T H E N ) ;}
else r e t u r n ( E L S E ) ;}
(id } {yylval = i n s t a l a _ i d ( ); return(ID);}
{núme r o } iyylval = instala_núm; return{NUMERO);¡
{yylval = MEN; r e t u r n ( O P R E L ) ;}
{yylval = MEI; r e t u r n ( O P R E L ) ;}
tiM ti
{yylval = IGU; r e t u r n ( O P R E L ) ;}
H < > «
'yylval = DIF; r e t u r n ( O P R E L ) ;}
{y y l v a l = MAY; r e t u r n ( O P R E L ) ;}
">=» (y y l v a l = MAI; r e t u r n ( O P R E L ) ;}

%%

instala_id() {
/* pro ced im ien to para in stala r el lexem a, cuyo prim er
carácter está apuntado por yytexto y cuya l o n g i t u d es
yylong, dentro de la t a b l a d e s í m b o l o s y d e v u e l v e un
a p u n t a d o r a él */

}
instala_núm() {
/* procedimiento similar para i n s t a l a r un l e x e m a q u e es
un número */

Fig. 3.18. P rogram a en LEX para los c o m p o n e n te s léxicos d e la figura 3.10.


112 A N A L ISIS LEXICO

E n la secció n d e d e c la ra c io n e s, a p a re c e ( u n lu g a r p a r a ) la d e c la ra c ió n d e c ie rta s
c o n s ta n te s m a n ifie sta s u tiliz a d a s p o r las reglas d e traducción*1. E sta s d e c la ra c io n e s
e s tá n e n c e r r a d a s e n tr e llaves esp eciales %{ y %}. T o d o lo q u e a p a r e z c a e n tr e estas lla­
ves se c o p ia d ir e c ta m e n te e n el a n a liz a d o r léx ico l e x . y y . c , y n o se c o n s id e r a c o m o
p a rte d e las d e fin ic io n e s reg u la re s ni d e las reglas d e tra d u c c ió n . L o s p r o c e d im ie n to s
a u x ilia re s d e la te rc e ra secció n tie n e n a s ig n a d o e x a c ta m e n te el m is m o tr a ta m ie n to .
E n la fig u ra 3 .1 8 h a y d o s p ro c e d im ie n to s , i n s t a l a - i d e i n s t a l a _ n ú m . q u e son
u tilizados p o r las reglas d e tra d u c c ió n , y q u e se c o p ia rá n lite ra lm e n te e n l e x . y y . c .
E n la se c c ió n d e d e fin ic io n e s ta m b ié n se in c lu y e n a lg u n a s d e fin ic io n e s regulares.
C a d a u n a d e estas d e fin ic io n e s co n siste e n u n n o m b r e y u n a e x p re s ió n re g u la r re­
p r e s e n ta d a p o r ese n o m b r e . P o r e je m p lo , el p r im e r n o m b r e d e fin id o es d e l i m , q u e
re p r e s e n ta a la clase d e c a ra c te re s ( \ t \ n ] , es d e c ir, c u a lq u ie r a d e los tres sím b o lo s,
b la n c o , T A B (re p r e s e n ta d o p o r \ t ) , o n u e v a línea. L a s e g u n d a d e fin ic ió n es la d e
e s p a c io e n b la n c o , re p re s e n ta d a p o r el n o m b r e eb. El e s p a c io e n b la n c o es to d a se­
c u e n c ia d e u n o o m á s c a ra c te re s d e lim ita d o re s . O b sé rv e se q u e en L E X la p a la b ra
d e l i m d e b e e s ta r e n tr e llaves p a r a d is tin g u irla del p a t r ó n q u e c o n s ta d e las c in c o
le tra s delim.
E n la d e fin ic ió n d e l e t r a , se v e el u s o d e u n a clase d e c a ra c te re s . L a a b re v ia tu r a
( A - Z a - z ] r e p re s e n ta c u a lq u ie r a d e las le tra s m a y ú sc u la s d e la A a la z o d e las le­
tras m in ú s c u la s d e la a a la z. L a q u i n t a d e fin ic ió n , d e id. usa p arén tesis, q u e son
m e ta s ím b o lo s d e L E X . c o n su sig n ificad o n a tu ra l d e a g ru p a d o re s . Ig u a lm e n te , la b a ­
rra v e rtic a l es u n m e ta s im b o lo d e L E X q u e sig nifica u n ió n .
E n la ú ltim a d e fin ic ió n reg u la r, d e n ú m e r o , se o b s e rv a a lg ú n o tr o d e ta lle . ? se
u tiliz a c o m o m e ta s im b o lo , c o n su sig n ificad o h a b itu a l d e “c e r o o u n c a so d e ” . T a m ­
b ié n se o b s e rv a la d ia g o n a l in v e rtid a u tiliz a d a c o m o salid a, p a r a p e r m itir q u e u n c a ­
r á c te r q u e sea m e ta s im b o lo d e L E X te n g a su sig n ific a d o n a tu r a l. E n p a rtic u la r, el
p u n t o d e c im a l e n la d e fin ic ió n d e n ú m e r o se e x p re s a c o n u n \ . , p o r q u e u n p u n t o
p o r sí m is m o re p r e s e n ta la clase d e c a ra c te re s d e to d o s los c a ra c te re s s a lv o la n u e v a
lín ea, t a n t o e n L E X c o m o e n m u c h o s p r o g r a m a s d e siste m a s e n U N I X q u e tr a b a ja n
c o n e x p re sio n e s reg u lares. E n la clase d e c a ra c te re s [ + \ - J , se c o lo c a u n a d ia g o n a l
in v e rtid a d e la n te del sig n o m e n o s , p o r q u e solo, el signo m e n o s se p o d r ía c o n f u n d ir
c o n su uso p a r a r e p r e s e n ta r u n in te rv a lo , c o m o e n [ A - z J\
H a y o tr a f o r m a d e h a c e r q u e los c a ra c te re s te n g a n su sig n ificad o n a tu r a l, a u n q u e
se a n m e ta s ím b o lo s d e L E X : e n c e rra rlo s e n tr e co m illas. E n el a p a r ta d o d e las reglas
d e tr a d u c c ió n se m u e s tr a u n e je m p lo d e e s ta c o n v e n c ió n d o n d e los seis o p e ra d o re s
re la c ió n a le s están e n tr e c o m illa s6.

4 E s n o r m a l u sar e l p ro g ra m a l e x . y y . c c o m o su b r u tin a d e u n a n a liz a d o r s in tá c tic o g e n e r a d o por


Y a c e , u n g en era d o r d e a n a liz a d o r e s sin tá c tic o s q u e s e e stu d ia r á e n e l c a p itu lo 4 . E n e ste c a s o , el
a n a liz a d o r s in tá c tic o p r o p o rcio n a ría la d e c la r a ció n d e la s c o n s ta n te s m a n ifie s ta s al c o m p ila r lo co n
el p ro g ra m a l e x . y y . c .
5 E n rea lid a d . L E X m a n e ja la c la s e d e c a ra cteres [ + - ) c o r r e c ta m e n te s in la d ia g o n a l in v e rtid a , por­
q u e el s ig n o m e n o s q u e a p arece a l fin al n o p u e d e rep resen tar u n in terv a lo .
h S e h iz o a sí p o r q u e < y > s o n m e ta s ím b o lo s d e L E X ; e n c ie r r a n e n tr e c o m illa s a lo s n o m b r e s d e lo s
“e sta d o s" , p e r m itie n d o a L E X c a m b ia r d e e sta d o al e n c o n tr a r d e te r m in a d o s c o m p o n e n t e s lé x ic o s,
c o m o c o m e n ta r io s o c a d e n a s e n tr e c o m illa s , q u e h a n d e te n e r u n tr a ta m ie n to d ife r e n te al d e l te x to
h a b itu a l. N o e s n e c esa r io e n tr e c o m illa r e l s ig n o ig u a l, p e r o ta m p o c o e stá p r o h ib id o .
3.5 L E N G U A J E P A R A ESPECIFICACION D E A N A L IZ A D O R E S L E X IC O S 113

Se v a n a c o n s id e r a r a h o r a las reglas d e tr a d u c c ió n d e la secció n q u e sig u e a los


p r im e r o s %%. L a p r im e r a reg la e s ta b le c e q u e si se e n c u e n t r a u n e b . e s d e c ir, c u a l ­
q u i e r s e c u e n c ia m á x im a d e e sp a c io s e n b la n co , c a ra c te re s T A B o d e n u e v a lín ea, n o
se h a c e n a d a . S o b re to d o , n o se d e v u e lv e el c o n tro l al a n a liz a d o r s in tá c tic o . R e c u é r ­
d e se q u e la e s tr u c tu r a del a n a liz a d o r léx ico e s ta l q u e sigue in t e n t a n d o re c o n o c e r
c o m p o n e n te s léxicos h a s ta q u e la a c c ió n a s o c ia d a a u n e n c u e n t r o ex ija u n return.
L a s e g u n d a regla esta b le c e q u e si a p a re c e n las le tra s i f . se d e v u e lv e el c o m p o ­
n e n te léxico I F , q u e es u n a c o n s ta n t e m a n ifie s ta q u e r e p re s e n ta u n n ú m e r o e n te r o
q u e el a n a liz a d o r s in tá c tic o in te r p r e ta c o m o el c o m p o n e n t e léx ico i f . L as d o s reglas
sig u ie n tes tr a t a n las p a la b ra s c lav e t h e n y e l s e d e fo rm a sim ilar.
E n la regla p a r a id, a p a r e c e n d o s p ro p o s ic io n e s e n la a c c ió n a so c ia d a . P rim e ro ,
a la v a ria b le y y v a l se le a s ig n a el v alo r d e v u e lto p o r el p r o c e d im ie n to i n s t a l a \ i d ;
la d e fin ic ió n d e este p r o c e d im ie n to está e n la te rc e ra sección, y y l v a l es u n a v a ria ­
ble c u y a d e fin ic ió n a p a re c e e n la salid a d e L E X l e x . y y . c . q u e ta m b ié n está a d is ­
p o sic ió n del a n a liz a d o r s in tá c tic o . El p r o p ó s ito d e y y l v a l es re te n e r el v a lo r léxico
d e v u e lto , p u e s to q u e la s e g u n d a p ro p o s ic ió n d e la a cció n , r e t u r n ( I D ) , só lo p u e d e
d e v o lv e r u n c ó d ig o p a r a la clase d e c o m p o n e n te s léxicos.
N o se m u e s t r a n los d e ta lle s del c ó d ig o p a r a i n s t a l a _ i d ( ) . S in e m b a r g o , se
p u e d e s u p o n e r q u e b u s c a en la ta b la d e s ím b o lo s el le x e m a q u e c o n c o r d ó c o n el p a ­
tr ó n id. L E X p o n e el le x e m a a d isp o sic ió n d e las r u tin a s q u e a p a re c e n e n la te rc e ra
se c c ió n m e d i a n t e la s d o s v a r ia b le s y y t e x t o e y y l o n g . L a v a r ia b le y y t e x t o
c o r r e s p o n d e a la v a ria b le q u e se h a e s ta d o ll a m a n d o in ic io -le x e m a , e s d e c ir, un
a p u n t a d o r al p r im e r c a r á c te r del le x em a; y y l o n g e s u n e n te r o q u e in d ic a la lo n g i­
tu d d e l lex em a. P o r e je m p lo , si i n s t a l a _ i d n o e n c u e n t r a al id e n tific a d o r e n la ta ­
bla d e s ím b o lo s, le p u e d e c re a r u n a n u e v a e n tr a d a . L o s y y l o n g c a ra c te re s d e la e n ­
tr a d a . c o m e n z a n d o en y y t e x t o , se p u e d e n c o p ia r e n u n a m a tr iz d e c a ra c te re s y de­
lim itarse c o n u n m a rc a d o r d e fin de c a d e n a (F D C ), c o m o en la sección 2.7. L a nuev a
e n t r a d a en la ta b la d e s ím b o lo s a p u n t a r ía al p r in c ip io d e esta co pia.
L a sig u ie n te regla c o n s id e ra d e igual m a n e r a los n ú m e ro s . E n las seis ú ltim a s re­
glas, y y l v a l se u tiliz a p a r a d e v o lv e r u n c ó d ig o p a r a el o p e r a d o r re la c io n a l e n c o n ­
tra d o . m ie n tr a s q u e el v e rd a d e r o v a lo r q u e se d e v u e lv e e n c a d a c a so es el c ó d ig o del
c o m p o n e n te léxico op rel.
S u p ó n g a se q u e al a n a liz a d o r léx ico q u e re su lta del p r o g r a m a d e la figura 3.1 se
le d a u n a e n t r a d a f o r m a d a p o r d o s c a ra c te re s T A B . las le tra s i f y u n e s p a c io en
b la n co . L o s d o s c a ra c te re s T A B son el p re fijo inicial m á s la rg o d e la e n tr a d a e m p a ­
re ja d o p o r u n p a tró n , o sea. el p a t r ó n e b . L a a c c ió n q u e c o r r e s p o n d e a e b e s n o
h a c e r n a d a , d e m o d o q u e el a n a l i z a d o r léx ico p a s a el a p u n t a d o r d e in ic io del le­
x e m a , y y t e x t o , a la i y e m p ie z a a b u s c a r o t r o c o m p o n e n te léxico.
El sig u ie n te le x e m a a e m p a r e ja r es i f . A d v ié rta se q u e los p a tro n e s , i f e { id ¡.
c o n c u e r d a n c o n este le x e m a , y n in g ú n p a tró n c o n c u e r d a c o n u n a c a d e n a m a y o r.
C o m o el p a tró n d e la p a la b ra clave i f p re c e d e al p a tró n d e los id e n tific a d o re s d e la
lista d e la fig u ra 3 .1 8 , el c o n flic to se resu elv e a fav o r d e la p a la b ra clave. E n general,
esta estrateg ia d e reso lu ció n d e a m b ig ü e d a d e s facilita el re se rv a r p a la b r a s c lav e re­
la c io n á n d o la s p o r d e la n te del p a t r ó n d e los id en tificad o res.
C o m o o t r o e je m p lo , s u p ó n g a s e q u e <= s o n los d o s p r im e r o s c a ra c te re s q u e se
leen. A u n q u e el p a tró n < c o n c u e r d a c o n el p r im e r carácter, n o es el p a tró n m á s largo
114 ANALISIS LEXICO

q u e c o n c u e r d a c o n u n prefijo d e la e n tr a d a . D e este m o d o , la e stra te g ia d e L E X d e


se le c c io n a r el m a y o r p re fijo q u e c o n c u e r d e c o n u n p a t r ó n facilita la re s o lu c ió n del
c o n flic to e n tr e < y <= s e g ú n se e s p e ra b a (e lig ien d o <= c o m o el sig u ie n te c o m p o n e n te
léxico). □

E l o p e r a d o r d e p re a n á lis is

C o m o se h a in d ic a d o e n la secció n 3.1, lo s a n a liz a d o re s léxicos p a r a a lg u n a s c o n s ­


tr u c c io n e s d e los le n g u a je s d e p r o g r a m a c ió n n e c e s ita n h a c e r u n p re a n á lisis d e l fin
d e u n le x e m a a n t e s d e p o d e r d e t e r m i n a r c o n c e r te z a u n c o m p o n e n t e léxico. R e ­
c u é rd e se el e je m p lo d e F O R T R A N p a r a el p a r d e p ro p o sic io n e s

DO 5 I = 1 .2 5
DO 5 I = 1 ,2 5

E n F O R T R A N , los e sp a c io s e n b la n c o n o s o n sig n ificativ o s f u e ra d e lo s c o m e n ta ­


rio s y d e las c a d e n a s H o lle rith , d e m o d o q u e su p ó n g a se q u e to d o s los e sp a c io s en
b la n c o e lim in a b le s se s u p r im e n a n te s d e c o m e n z a r el a n álisis léxico. E n ta l caso , las
p ro p o s ic io n e s a n te rio re s a p a re c e ría n al a n a liz a d o r léxico c o m o

D 0 5 1 = l.2 5
D 0 5 I= 1 ,2 5

E n la p r im e r a p ro p o s ic ió n , n o se p u e d e s a b e r q u e la c a d e n a d o es p a rte del id e n ti­


fic a d o r D 0 5 I , h a s ta h a b e r visto el p u n t o d e c im a l. E n la s e g u n d a p ro p o s ic ió n , DO p o r
sí so la es u n a p a la b ra clave.
E n L E X , u n p a t r ó n se p u e d e e scrib ir d e la f o r m a r , / r 2, d o n d e r¡ y r 2 s o n ex p re-

s io n e s reg u lares, y q u ie re d e c ir q u e se e m p a r e je u n a c a d e n a e n r u p e ro só lo si v a
seg u id a d e u n a c a d e n a e n r 2. L a e x p re sió n re g u la r r2 d e s p u é s d e l o p e r a d o r d e p r e a ­
nálisis in d ic a el c o n te x to a d e c u a d o p a r a u n a c o n c o r d a n c ia ; só lo se u tiliza p a r a res­
trin g ir u n a c o n c o r d a n c ia , n o p a r a ser p a rte d e ella. P o r e je m p lo , u n a esp ecificación
e n L E X q u e re c o n o c e la p a la b ra clave DO e n el c o n te x to a n te r io r es

D O / ({letra} ¡ ¡dígito})* = ({letra} ¡ ¡dígito})*.

C o n e s ta e s p e c ific a c ió n , el a n a l i z a d o r léx ico b u s c a r á e n su b u ffer d e e n t r a d a u n a


s e c u e n c ia d e letras y d íg ito s seg u id a d e u n sig n o igual, seg u id o d e letras y dígitos,
se g u id o s d e u n a c o m a , p a r a te n e r la s e g u rid a d d e q u e n o te n ía u n a p ro p o s ic ió n d e
a s ig n a c ió n . S ó lo e n to n c e s lo s c a ra c te re s D y o , q u e p re c e d e n al o p e r a d o r d e p r e a n á ­
lisis / serán p a rte del le x e m a e m p a r e ja d o . D esp u és d e u n a c o n c o r d a n c ia c o n éxito,
y y t e x t o a p u n t a a D y a y y l o n g = 2. O b s é rv e s e q u e e s te s e n c illo p a t r ó n d e p r e ­
a n álisis p e rm ite el r e c o n o c im ie n to d e d o c u a n d o v a y a seg u id o d e b a s u ra , c o m o en
Z4=6Q, p e r o n u n c a re c o n o c e rá a d o c o m o p a r te d e u n id e n tific a d o r.

E jem p lo 3 .1 2 . Se p u e d e u tiliz a r el o p e r a d o r d e p re a n á lisis p a r a t r a t a r o t r o p ro b le m a


difícil d e a n álisis léxico en F O R T R A N : d is tin g u ir las p a la b ra s c lav e d e lo s identifi­
cad o res. P o r e je m p lo , la e n tr a d a

I F (I , J) = 3

es u n a p ro p o s ic ió n d e a s ig n a c ió n p e r f e c ta m e n te v á lid a e n F O R T R A N , n o u n a p ro ­
3.6 A U T O M A T A S FINITO S 115

p o sic ió n i f lógica. U n a fo rm a d e e s p e c ific a r la p a la b r a c lav e i f u tiliz a n d o L E X es


d e f in ir s u s p o s ib le s c o n t e x to s a d e c u a d o s u tiliz a n d o el o p e r a d o r d e p re a n á lis is . L a
f o r m a s im p le d e la p ro p o s ic ió n i f ló g ica es

if ( condición ) proposición

F O R T R A N 77 in tr o d u jo o t r a fo rm a d e la p ro p o s ic ió n i f lógica:

if ( condición ) then
b lo q u e-th en
ELSE
bloque ~else
END IF

Se o b s e rv a q u e to d a p ro p o s ic ió n n o e tiq u e ta d a d e F O R T R A N c o m ie n z a c o n u n a
letra y q u e to d o p a ré n te sis d e r e c h o u tiliz a d o p a r a s u b in d iz a r o a g r u p a r o p e r a n d o s
d e b e ir s e g u id o d e u n s ím b o lo d e o p e r a d o r , c o m o =, + o c o m a , o t r o p a ré n te s is d e ­
re c h o o el fin d e la p ro p o s ic ió n . E ste p a ré n te sis d e r e c h o n o p u e d e ir s e g u id o d e u n a
letra. E n e s ta situ a c ió n , p a r a c o n f ir m a r q u e I F es u n a p a la b r a c lav e e n v ez d e u n
n o m b r e d e m a tr iz , se e x a m in a p o r a d e la n ta d o , b u s c a n d o u n p a ré n te s is d e r e c h o se­
g u id o d e u n a le tra a n te s d e q u e a p a re z c a u n c a r á c te r d e n u e v a lín ea (se s u p o n e q u e
las ta rje ta s d e c o n t in u a c i ó n “ c a n c e la n ” el c a r á c te r d e n u e v a lín ea a n te rio r). E ste p a ­
tr ó n p a r a la p a la b ra c lav e I F se p u e d e e s c rib ir c o m o

IF / \( .* \) (letra}

El p u n t o r e p re s e n ta “c u a lq u ie r c a r á c te r salv o n u e v a lín e a ” y las d ia g o n a le s in v e rti­


d a s d e la n te d e lo s p a ré n te sis e x ig en q u e L E X las c o n s id e re lite ra lm e n te , y n o c o m o
m e ta s ím b o lo s p a r a a g r u p a r e x p re s io n e s reg u la re s (véase E jercicio 3.10). □

O t r a f o r m a d e a b o r d a r el p r o b le m a p la n te a d o p o r las p ro p o s ic io n e s i f d e F O R ­
T R A N es, d e s p u é s d e h a b e r v isto I F ( , d e t e r m i n a r si I F se d e c la ró c o m o m a triz.
S ó lo e n ta l c a so se b u s c a t o d o el p a t r ó n a n te r io r . E sta s p r u e b a s h a c e n m á s difícil la
ap licació n a u to m á tic a d e u n a n a liz a d o r léxico a p a r tir d e u n a especificación e n L E X ,
y a la rg o p la zo p u e d e n in c lu so h a c e r p e r d e r tie m p o , d a d a s las f re c u e n te s v erificacio ­
n e s q u e d e b e h a c e r el p r o g r a m a q u e s im u la u n d ia g ra m a d e tra n s ic io n e s p a r a d e te r ­
m i n a r si se d e b e n e f e c tu a r tales p ru e b a s . O b sé rv e se q u e d iv id ir F O R T R A N e n c o m ­
p o n e n te s léxicos es u n a ta r e a ta n irre g u la r q u e m u c h a s veces es m á s fácil e s c rib ir u n
a n a l iz a d o r léx ico esp e c ia l p a r a F O R T R A N e n u n le n g u a je d e p r o g r a m a c ió n c o n ­
v e n c io n a l, q u e u s a r u n g e n e r a d o r a u t o m á t i c o d e a n a liz a d o re s léxicos.

3 .6 A U T O M A T A S F IN IT O S

U n reconocedor d e u n le n g u a je es u n p r o g r a m a q u e t o m a c o m o e n t r a d a u n a c a d e n a
x y re s p o n d e “ sí” si x es u n a frase del p r o g r a m a , y “ n o ” , si n o lo es. S e c o m p ila u n a
e x p re sió n re g u la r e n u n r e c o n o c e d o r c o n s tr u y e n d o u n d ia g ra m a d e tra n s ic io n e s g e­
n e r a liz a d o lla m a d o a u t ó m a t a fin ito . U n a u t ó m a t a fin ito p u e d e s e r d e te r m in is ta o
n o d e te rm in is ta , d o n d e “ n o d e te r m in is ta ” sign ifica q u e e n u n e s ta d o se p u e d e d a r el
c a so d e te n e r m á s d e u n a tr a n s ic ió n p a r a el m i s m o s ím b o lo d e e n tra d a .
116 A N A L ISIS LEXICO

T a n to los a u t ó m a t a s fin ito s d e te r m in is ta s c o m o los n o d e te r m in is ta s p u e d e n re­


c o n o c e r c o n p recisió n a los c o n j u n t o s reg u lares. P o r ta n to , a m b o s p u e d e n re c o n o c e r
c o n p re c isió n lo q u e d e n o t a n la s e x p r e s io n e s re g u la re s. S in e m b a r g o , h a y u n c o n ­
flicto e n tr e e s p a c io y tie m p o ; m ie n tr a s q u e u n a u t ó m a t a f in ito d e t e r m in i s t a p u e d e
d a r re c o n o c e d o re s m á s r á p id o s q u e u n o n o d e te r m in is ta , u n a u t ó m a t a fin ito d e te r ­
m in is ta p u e d e s e r m u c h o m a y o r q u e u n a u t ó m a t a n o d e te r m in is ta e q u iv a le n te . E n
la sig u ie n te secció n , se in tr o d u c e n m é to d o s p a r a c o n v e r tir e x p re s io n e s reg u la re s en
a m b a s clases d e a u t ó m a t a s finitos. L a c o n v e rs ió n e n u n a u t ó m a t a n o d e te r m in is ta
e s m á s d ire c ta , p o r lo q u e p r im e r o se e s tu d ia este caso.
L o s e je m p lo s d e esta secció n y d e la sig u ie n te se refieren p r in c ip a lm e n te a l le n ­
g u aje re p re s e n ta d o p o r la e x p re sió n re g u la r ( a | b)*abb, q u e e s tá f o r m a d a p o r el c o n ­
j u n t o d e to d a s las c a d e n a s d e c a ra c te re s a y b q u e te r m in e n e n abb. E n la p rá c tic a
ex isten le n g u a je s sim ilares. P o r e je m p lo , u n a e x p re s ió n re g u la r p a r a los n o m b r e s d e
to d o s los a rc h iv o s q u e te r m in e n e n . o es d e la f o r m a ( . | o | c)* . o , d o n d e e r e -
p re s e n ta c u a lq u ie r c a r á c te r salv o u n p u n t o o u n a o . O tr o e je m p lo : d e s p u é s d e la se­
c u e n c ia d e a p e r t u r a / * , los c o m e n ta r io s e n C c o n s is te n e n c u a l q u ie r s e c u e n c ia d e
c a ra c te re s q u e te r m in e e n * / , c o n el re q u is ito a d ic io n a l d e q u e n in g ú n p re fijo p ro ­
p io te r m in e e n * / .

A u tó m a t a s fin ito s n o d e te r m in is ta s

U n a u tó m a ta fin ito no determ in ista (a b re v ia d o , A F N ) es u n m o d e lo m a te m á tic o


f o r m a d o por:

1. u n c o n j u n t o d e estados S
2. u n c o n j u n t o d e s ím b o lo s d e e n t r a d a 2 (el alfabeto de sím bolos d e entrada)
3. u n a f u n c ió n d e tra n s ic ió n m u eve q u e tr a n s f o r m a p a re s e s ta d o -s ím b o lo e n c o n ­
j u n t o s d e estad o s
4. u n e s ta d o s0 q u e se c o n s id e r a el esta d o d e inicio ( o inicial)
5. u n c o n j u n t o d e e s ta d o s F c o n s id e ra d o s c o m o estados d e aceptación ( o finales)

U n A F N se p u e d e r e p r e s e n ta r d i a g r a m á t i c a m e n t e m e d i a n t e u n g r a f o d ir ig id o e ti­
q u e ta d o , lla m a d o grafo d e transiciones , e n el q u e los n o d o s s o n los e s ta d o s y las aris­
ta s e tiq u e ta d a s re p re s e n ta n la f u n c ió n d e tra n s ic ió n . E ste g rafo se p arece a u n d ia ­
g ra m a d e tran sicio nes, p e ro el m is m o c a rá c te r p u e d e e tiq u e ta r d o s o m á s tra n sic io n e s
fu era d e u n e s ta d o , y las arista s p u e d e n e tiq u e ta rs e c o n el s ím b o lo esp ecial € y c o n
s ím b o lo s d e e n tra d a .
E n la figura 3 .1 9 se m u e s tra el grafo d e tra n s ic io n e s d e u n A F N q u e r e c o n o c e al

Fig. 3 .1 9 . U n a u tó m a ta finito n o determ inista.


3.6 A U T O M A T A S FINITO S 117

le n g u a je (a \ b )* a b b . El c o n j u n t o d e e s ta d o s d e l A E N es ¡0. 1. 2. 3) y el a lfa b e to de
s ím b o lo s d e e n tr a d a e s {a, b}. El e s ta d o 0 d e la figura 3 .1 9 se c o n s id e r a el e s ta d o d e
inicio, y el e s ta d o d e a c e p ta c ió n 3 está in d ic a d o m e d ia n te u n c ír c u lo dob le.
C u a n d o se d e sc rib e u n A F N . se u tiliz a la re p re s e n ta c ió n d e g rafo d e tra n sic io n e s.
E n u n c o m p u ta d o r , p u e d e a p licarse la f u n c ió n d e tra n s ic ió n d e u n A F N d e varias
fo rm a s, c o m o se verá m á s a d e la n te . L a im p la n ta c ió n m á s sen cilla es u n a ta b la d e
tra n sicio n es e n d o n d e hay u n a fila p o r c a d a e s ta d o y u n a c o l u m n a p o r c a d a s ím b o lo
d e e n t r a d a y e . si es n ecesario . L a e n tr a d a p a ra la fila i y el s ím b o lo a e n la ta b la es
el c o n j u n t o d e e s ta d o s ( o m á s p r o b a b le m e n te en la p rá c tic a , u n a p u n t a d o r al c o n ­
j u n t o d e esta d o s) q u e p u e d e s e r a lc a n z a d o p o r u n a tra n s ic ió n del e s ta d o / c o n la e n ­
t r a d a a. E n la fig u ra 3 .2 0 se m u e s t r a la ta b la d e tr a n s i c i o n e s p a r a el A F N d e la
fig u ra 3.19.

S ím b o l o d e E n t r a d a
Est a d o
a b

0 { 0 .1 } {0}
1 —
{2}
2 —
{3}

Fig. 3.20. T a b la d e transiciones p a ra el a u tó m a ta finito d e la figura 3.19.

La re p re s e n ta c ió n e n f o r m a d e ta b la d e tra n s ic io n e s tie n e la v e n ta ja d e q u e p r o ­
p o rc io n a r á p id o acce so a las tra n s ic io n e s d e u n d e t e r m in a d o e s ta d o en u n c a rá c te r
d a d o ; su in c o n v e n ie n te es q u e p u e d e o c u p a r g ra n c a n tid a d d e e s p a c io c u a n d o el a l­
fa b e to d e e n t r a d a e s g r a n d e y la m a y o ría d e las tra n s ic io n e s son h acia el c o n j u n t o
vacío. L a s re p re s e n ta c io n e s d e listas d e a d y a c e n c ia s d e la fu n c ió n d e tra n s ic ió n p ro ­
p o r c io n a n im p la n ta c io n e s m á s c o m p a c ta s , p e ro el a c c e s o a u n a tra n s ic ió n d a d a es
m á s le n to . D e b e q u e d a r c la ro q u e se p u e d e tr a n s f o r m a r f á c ilm e n te c u a lq u ie r a d e es­
ta s im p la n ta c io n e s d e u n a u t ó m a t a fin ito e n otra.
U n A F N a cep ta u n a c a d e n a d e e n t r a d a x si. y só lo si, h a y a lg ú n c a m i n o e n el
grafo d e tra n sic io n e s d e sd e el estad o d e in ic io a algún e s ta d o d e ac e p ta c ió n , d e fo rm a
q u e las e tiq u e ta s d e las arista s a lo la rg o d e d i c h o c a m i n o d e le tre e n .v. El A F N d e la
fig u ra 3 .1 9 a c e p ta las c a d e n a s d e e n t r a d a a b b , a a b b , b a h b . a a a b b ,. . . . P o r e je m p lo .
a a b b es a c e p ta d a p o r el c a m in o d e s d e 0 , s ig u ie n d o la a ris ta e tiq u e ta d a a d e n u e v o
al e s ta d o 0 y d e s p u é s a los e s ta d o s 1, 2 y 3 p o r las arista s e tiq u e ta d a s a , b y b. res­
p e c tiv a m e n te .
Se p u e d e r e p r e s e n ta r u n c a m in o m e d ia n te u n a s e c u e n c ia d e tra n s ic io n e s d e es­
ta d o s lla m a d a m o v im ie n to s . El sig u ie n te d ia g ra m a m u e s tra los m o v im ie n to s reali­
z a d o s p a r a a c e p ta r la c a d e n a d e e n t r a d a a a b b ;

t\ a í\ a t a
O --------- ► 0 1 ► 2 --------- ► 3

E n g en eral, p u e d e h a b e r m á s d e u n a s e c u e n c ia d e m o v im ie n to s q u e c o n d u z c a a u n
e s ta d o d e a c e p ta c ió n . O b s é rv e s e q u e p u e d e n re a liz a rse o tr a s s e c u e n c ia s d e m o v i­
118 ANALISIS LEXICO

m ie n to s en la c a d e n a d e e n t r a d a aabb. p e r o o c u r r e q u e n in g u n a d e d ic h a s s e c u e n ­
cia s te r m in a e n u n e s ta d o d e a c e p ta c ió n . P o r e je m p lo , o tr a s e c u e n c ia d e m o v i m ie n ­
to s e n la e n tr a d a aabb sigue r e in s e r ta n d o el e s ta d o d e n o a c e p ta c ió n 0:

0 _ 0 _í _* 0 — o — - o

El lenguaje definido p o r u n A F N es el c o n ju n to d e c a d e n a s d e e n tr a d a q u e acepta.


N o es difícil d e m o s t r a r q u e el A F N d e la figura 3 .1 9 a c e p ta (a | b)*abb.

E je m p lo 3 .1 3 . E n la figura 3 .2 1 , se ve c ó m o u n A F N r e c o n o c e aa* \bb*. L a c a d e n a


a a a es a c e p ta d a re c o r r ie n d o los e s ta d o s 0 , !, 2 , 2 y 2. L as e tiq u e ta s d e e s ta s arista s
son e. a. a y a . c u y a c o n c a te n a c ió n e s aaa. O b sérv ese q u e los s ím b o lo s € “ d e s a p a ­
re c e n " e n u n a c o n c a te n a c ió n . □

inicio
O

E ír. 3.21. U n A F N q u e acep ta un* : />/>*.

A u tó m a ta s fin ito s d e te rm in is ta s

U n a u tó m a ta fin ito determ in ista (a b re v ia d o A F D ) es u n c a so especial d e u n a u t ó ­


m a ta fin ito n o d e te r m in is ta e n el cual

1. n in g ú n e s ta d o tien e u n a tran sició n t . es d ecir, u n a tran sició n c o n la e n tra d a e. y


2. p a r a c a d a e s ta d o s y c a d a s ím b o lo d e e n t r a d a a . h a y a lo s u m o u n a a ris ta e t i­
q u e t a d a ¿ / q u e sale d e s.
U n a u t ó m a t a fin ito d e te r m in is ta tie n e a lo s u m o u n a tra n s ic ió n d e sd e c a d a e s ta d o
c o n c u a lq u ie r e n tr a d a . Si se e s tá u s a n d o u n a ta b la d e tr a n s ic io n e s p a ra re p re s e n ta r
la f u n c ió n d e tra n s ic ió n d e u n A F D , e n to n c e s c a d a e n tr a d a e n la ta b la d e tr a n s ic io ­
nes es u n so lo e s ta d o . C o m o c o n s e c u e n c ia , e s m u y fácil d e t e r m i n a r si u n a u tó m a ta
f in ito d e te r m in is ta a c e p ta o n o u n a c a d e n a d e e n tr a d a , p u e s to q u e h a y a lo s u m o u n
c a m in o d e sd e el e s ta d o d e in ic io e tiq u e ta d o c o n esa c a d e n a . El sig u ie n te a lg o ritm o
m u e s tr a c ó m o s im u la r el c o m p o r t a m i e n t o d e u n A F D c o n u n a c a d e n a d e e n tra d a .

A lg o ritm o 3 .1 . S im u la c ió n d e u n A F D .

E ntrada. U n a c a d e n a d e e n t r a d a x q u e te r m in a c o n u n c a r á c te r d e fin d e a rc h iv o
eof. U n A F D D c o n u n e s ta d o d e in ic io s0 y u n c o n j u n t o E d e e s ta d o s d e a c e p ta c ió n .

Salida. L a re s p u e s ta “sí” , si D a c e p ta x: “ n o " , e n c a so c o n tra rio .


3.6 A U T O M A T A S FINITO S 119

M étodo. A p liq ú e s e el a lg o ritm o d e la figura 3.22 a la c a d e n a d e e n t r a d a x . L a f u n ­


c ió n m u e v e (5, c) d a el e s ta d o al c u a l h a y u n a tra n s ic ió n d e sd e el e s ta d o s e n u n c a ­
r á c te r d e e n tr a d a c. La fu n c ió n sigtecar d e v u e lv e el sig u ie n te c a r á c te r d e la c a d e n a
d e e n tr a d a x . a

.v v.
c : = sigtecar
while c ¿ e o f do
v : = m ueve ts. <):
<’ : = sigtecar
end;
if ' está en / then
return “ si"
else retu rn “ no";

Fig. 3.22. S im ulación d e un AFD.

E je m p lo 3 .1 4 . E n la figura 3.23 se v e al g rafo d e tra n s ic io n e s d e u n a u t ó m a t a finito


d e te r m in is ta a c e p ta r el m is m o len g u aje (a | b)*ahb a c e p ta d o p o r el A F N d e la figura
3.19. C o n este A F D y la c a d e n a d e e n tr a d a ababb , el a lg o ritm o 3.1 sigue la s e c u e n ­
c ia d e e s ta d o s 0 . 1 . 2 , 1. 2, 3 y d e v u e lv e “s í” . □

F ír . 3 .2 3 . A F D q u e a c e p ta (a | b)*abb.

C o n v e rsió n d e u n A F N en un A F D

O b sérv ese q u e el A F N d e la figura 3 .1 9 tien e d o s tra n s ic io n e s d e s d e el e s ta d o 0 c o n


la e n t r a d a u \ es d ecir, p u e d e ir al e s ta d o 0 o al 1. Ig u a lm e n te , el A F N d e la fig u ra
3.21 tie n e d o s tra n s ic io n e s e n € d e s d e el e s ta d o 0. A u n q u e n o se h a y a ilu s tra d o c o n
u n e je m p lo , u n a situ a c ió n e n la q u e se p o d r ía elegir u n a tra n s ic ió n c o n e o c o n u n
s ím b o lo d e e n t r a d a real ta m b ié n p r o d u c e a m b ig ü e d a d . D ic h a s s itu a c io n e s, d o n d e la
fu n c ió n d e tra n s ic ió n tien e v ario s valores, h a c e n difícil s im u la r u n A F N c o n u n p r o ­
g r a m a d e c o m p u ta d o r . L a d e fin ic ió n d e a c e p ta c ió n s im p le m e n te esta b le c e q u e d e b e
h a b e r a lg ú n c a m in o e tiq u e ta d o p o r la c a d e n a d e e n t r a d a e n c u e s tió n q u e c o n d u z c a
d e sd e el e s ta d o d e in ic io a u n e s ta d o d e a c e p ta c ió n . P e ro si h a y m u c h o s c a m in o s q u e
d e le tre e n la m is m a c a d e n a d e e n tr a d a , q u iz á s h a y a q u e c o n s id e ra rlo s to d o s a n te s d e
e n c o n t r a r u n o q u e c o n d u z c a a la a c e p ta c ió n o d e s c u b r ir q u e n in g ú n c a m i n o c o n ­
d u c e a u n e s ta d o d e ac e p ta c ió n .
120 ANALISIS LEXICO

A h o ra se in tr o d u c e u n a lg o ritm o p a r a c o n s tr u i r a p a r tir d e u n A F N u n A F D q u e
r e c o n o z c a el m i s m o le n g u a je . E ste a lg o r itm o , a m e n u d o ll a m a d o construcción de
subconjunios . es ú til p a r a s im u l a r u n A F N p o r m e d io d e u n p r o g r a m a d e c o m p u ­
ta d o r. E n el sig u ie n te c a p ítu lo u n a lg o ritm o e s tr e c h a m e n te re la c io n a d o d e s e m p e ñ a
u n p a p e l f u n d a m e n ta l e n la c o n s tru c c ió n d e a n a liz a d o r e s s in tá c tic o s LR.
E n la ta b la d e tra n s ic io n e s d e u n A F N , c a d a e n tr a d a es u n c o n j u n t o d e estados;
e n la ta b la d e tra n s ic io n e s d e u n A F D , c a d a e n t r a d a es ta n sólo u n e s ta d o . L a idea
g en eral tras la c o n s tru c c ió n A F N a A F D es q u e c a d a e s ta d o d e A F D c o r r e s p o n d e a
u n c o n j u n t o d e e s ta d o s del A F N . El A F D u tiliz a u n e s ta d o p a r a lo c aliz ar to d o s los
p o sib les e s ta d o s e n los q u e p u e d e e s ta r el A F N d e s p u é s d e leer c a d a s ím b o lo d e la
e n tr a d a . E s d ecir, d e s p u é s d e leer la e n t r a d a a \a 2 . . . a n. el A F D se e n c u e n t r a e n un
e s ta d o q u e r e p re s e n ta al s u b c o n j u n t o T d e los e s ta d o s del A F N a lc a n z a b le s d e s d e el
e s ta d o d e in icio del A F N a lo largo d e a lg ú n c a m i n o e tiq u e ta d o c o n a^a 2 . . . a„. El
n ú m e r o d e estad o s d e A F D p u e d e ser e x p o n e n c ia l en el n ú m e r o d e estad o s del A F N ,
p e ro e n la p rá c tic a este p e o r c a so o c u r r e ra ra m e n te .

A lg o ritm o 3 .2 . {Construcción d e subconj untos.) C o n s tr u c c ió n d e un A F D a p a r tir


d e un A F N .

E ntrada. U n A F N N .

Salido. U n A F D D q u e a c e p ta el m is m o lenguaje.
M étodo. El a lg o r itm o c o n s tr u y e u n a ta b la d e tra n s ic io n e s tranD p a r a D . C a d a es­
t a d o d e l A F D es u n c o n j u n t o d e e s ta d o s del A F N y se c o n s tr u y e tranD d e m o d o q u e
D s im u la ra “e n p a ra le lo ” to d o s los p o sib le s m o v im ie n to s q u e A’ p u e d e re a liz a r con
u n a d e te r m in a d a c a d e n a d e e n tra d a .
Se u tiliz an las o p e r a c io n e s d e la figura 3 .2 4 p a r a lo c aliz ar los c o n j u n to s d e los
e s ta d o s del A F N (s r e p re s e n ta u n e s ta d o del A F N . y T u n c o n j u n t o d e e s ta d o s del
A F N ).

■ -------—----■•■■■■ 1
O p e r a c ió n D e s c r ip c ió n

cerradura - € ( v) C o n ju n to d e estados del A FN alcanzables desde el estado 5


del A FN con transiciones c solam ente.

cerradura -€ (7') C o n ju n to d e estad o s del A FN alcanzables desde algún es­


ta d o 5 en T c o n transiciones t solam ente.

m ueve(T . a) C o n ju n t o de e s ta d o s del A F N h a c ia los cu ales h a y u n a


transición co n el sím bolo d e e n tra d a a desde algún estado
5 en T del A FN .

Fig. 3.24. O peraciones sobre los estados de u n AFN.

A n te s d e d e te c ta r el p r im e r s ím b o lo d e e n t r a d a , Ar se p u e d e e n c o n t r a r e n c u a l­
q u ie ra d e los e s ta d o s del c o n j u n t o cerradura - « (5o), d o n d e 50 e s el e s ta d o d e in icio de
N . S u p ó n g a s e q u e e x a c ta m e n te los e s ta d o s del c o n j u n t o T s o n a lc a n z a b le s d e s d e Sq
3.6 A U T O M A T A S FINITO S 121

c o n u n a s e c u e n c ia d a d a d e s ím b o lo s d e e n tr a d a , y sea a el sig u ie n te s ím b o lo d e e n ­
tra d a . Al v e r a, N p u e d e tr a s la d a r s e a c u l q u ie r a d e los e s ta d o s del c o n j u n t o m u eve
( T. a). C u a n d o se p e r m ite n tra n s ic io n e s -c . A p u e d e e n c o n tr a r s e en c u a lq u ie ra d e los
e s ta d o s d e cerradura-*. (T . ¿/)). d e s p u é s d e v e r la a.

al inicio, cerradura-* (s0) es el ú n ic o estado d e n tro d e esiadosD y n o está m arcado:


w hile haya un estado n o m a rc ad o 7 en estadosl) d o begin
m arcar 7;
for cada sím bolo de e n tra d a a do begin
V : = cerradura-* (mueve(T, a)):
¡f U n o esta en estados!) then
añ ad ir i c o m o estad o n o m a rc ad o a estadosD:
tranD [ 7 r/] : = V
end
end

Fig. 3.25. La co n strucció n d e subconjuntos.

Se c o n s tru y e n estadosD , el c o n j u n t o d e e s ta d o s d e D, y tranD , la ta b la d e t r a n ­


sic io n e s d e D. d e la sig u ie n te fo rm a . C a d a e s ta d o d e D c o r r e s p o n d e a u n c o n ju n to
d e e s ta d o s d e A F N e n los q u e p o d r ía e s ta r N d e s p u é s d e le er a lg u n a se c u e n c ia d e
s ím b o lo s d e e n tra d a , in c lu id a s to d a s las p o sib le s tra n s ic io n e s -€ a n te r io r e s o p o s te rio ­
res a la le c tu ra d e s ím b o lo s. El e s ta d o d e in ic io d e D es cerradura -e (.v0). Se a ñ a d e n
los e s ta d o s y las tra n s ic io n e s a D u tiliz a n d o el a lg o ritm o d e la fig u ra 3.25. U n e s ta d o
d e D es u n e s ta d o d e a c e p ta c ió n si es u n c o n j u n t o d e e s ta d o s d e A F N q u e c o n te n g a
al m e n o s u n e s ta d o d e a c e p ta c ió n d e N.

m eter to d o s los estados d e T en pila:


inicializar cerradura- * (T ) a T:
while pila no esté vacia d o begin
sacar /. el elem en to del tope, d e pila:
for cada estado u co n un a arista desde i a u etiq uetad a co n € do
if u n o está en cerradura-* (T ) do begin
a ñ a d ir u a cerradura - e ( 7 ) :
m eter u e n pila
end
end

Fig. 3.26. C álculo de cerradura - c .

El c á lc u lo d e cerradura-*.(T) e s u n p ro c e s o típ ic o d e b ú s q u e d a e n u n g rafo d e


n o d o s a lc a n z a b le s d e s d e un c o n j u n t o d a d o d e n o d o s. E n este caso, los e s ta d o s d e T
s o n el c o n j u n t o d a d o d e n o d o s, y el g rafo está c o m p u e s t o s o la m e n te p o r las arista s
del A F N e tiq u e ta d a s p o r €. U n a lg o r itm o se n c illo p a r a c a lc u la r cerradura -e (T ) u ti­
liza u n a e s tr u c tu r a d e d a to s tip o p ila p a r a g u a r d a r e s ta d o s e n c u y a s arista s n o se h a ­
y a n b u s c a d o tr a n s ic io n e s e t iq u e ta d a s c o n e. E ste p r o c e d i m ie n t o se m u e s t r a e n la
figura 3 .2 6 . □
122 A N A L ISIS I E X ICO

E jem plo 3 .1 5 . Luí figura 3.27 m u e stra o t r o A F N A a c e p ta n d o el len g u aje (a ¡ b)*abb.


(E l d e la sig u ie n te secció n es el q u e se c o n s tr u ir á m e c á n ic a m e n te a p a r ti r d e la e x ­
p re s ió n re g u la r.) S e a p lic a el a l g o r i t m o 3.2 a A'. El e s ta d o d e in ic io del A F D e q u i ­
v a le n te es cerradura -€ (0), q u e e s A = {0. 1. 2, 4 , 7}. p u e s to q u e e s to s s o n e x a c t a ­
m e n te los e s ta d o s a lc a n z a b le s d e s d e el e s ta d o 0 p o r u n c a m i n o en el q u e to d a s las
arista s e s tá n e tiq u e ta d a s p o r € . O b sé rv e se q u e un c a m i n o p u e d e n o t e n e r aristas, de
m o d o q u e 0 es a lc a n z a d o d e sd e si m i s m o p o r d ic h o c a m in o .
A q u í, el a lfa b e to d e s ím b o lo s d e e n t r a d a es {a. b }. El a lg o ritm o d e la figura 3.25
in d ic a q u e h a y q u e m a r c a r A y d e s p u é s c a lc u la r
cerradura-€ (m u eve (A . a)).
P r im e r o se c a lc u la m ueve(A . a), el c o n j u n t o d e e s ta d o s d e q u e tie n e tra n s ic io n e s
e n a d e sd e m ie m b r o s d e A. E n tr e los e s ta d o s 0 . 1. 2. 4 y 7 só lo 2 y 7 tie n e n d ic h as
tra n s ic io n e s , a 3 y a 8 , d e m o d o q u e

cerradura - c (w i« n v ({ 0 , I. 2. 4, 7¡. a )) = cerradura - t ({3.8}) = {I. 2. 3. 4. 6. 7. 8,

E ste c o n j u n t o se d e n o m i n a r á B. A sí. tranD [A. a] =■ B.

E n tre los e s ta d o s d e A %sólo 4 tie n e n u n a tra n s ic ió n e n b a 5. d e m o d o q u e el


A F D tie n e u n a tr a n s ic ió n e n b d e s d e A a

C = cerradura-*. ({5}) = {1, 2 , 4 , 5, 6 , 7}.


P o r ta n to . tra n D lA , b] = C.

Fig. 3.27. A FN A’ q u e acep ta (a ¡ b)*abh.

Si se c o n t i n ú a este p r o c e s o c o n lo s c o n j u n t o s B y C. a h o r a s in m a r c a r , fin al­


m e n t e se llegará al p u n t o e n q u e to d o s los c o n j u n to s q u e s o n e s ta d o s del A F D estén
m a r c a d o s . E s to e s c ie r to p o r q u e “s ó lo " h a y 2 " s u b c o n j u n t o s d is ti n to s d e u n c o n ­
j u n t o d e 11 estad o s, y u n c o n j u n to , u n a vez m a r c a d o , q u e d a m a r c a d o p a r a s ie m p re .
L o s c in c o c o n j u n to s d e e s ta d o s d ife re n te s r e a lm e n te c o n s tr u id o s son:

A = {0. 1. 2. 4 . 7} D = { 1 .2 . 4 , 5. 6 . 7, 9}
B = { 1 . 2 . 3 , 4. 6 , 7. 8} E = { 1 .2 . 4 . 5. 6. 7. 10}
C = { 1 . 2 . 4 . 5. 6 . 7}
3.7 PASO DE U N A EXPRESIO N R E G U L A R A UN AFN 123

El e s ta d o A es el e s ta d o d e inicio, y el e s ta d o E es el ú n ic o e s ta d o d e a c e p ta c ió n . La
ta b la d e tra n s ic io n e s c o m p le ta ira n D se m u e s tr a e n la figura 3.28.

----

Sí m b o l o d e E n t r a d a
Es t a d o
a b
A B C
B B D
C B C
/) B E
E B C

Fig. 3.28. T abla d e transiciones tranD para el A FD .

A d e m á s , e n la fig u ra 3 .2 9 s e m u e s t r a u n g ra fo d e tr a n s i c i o n e s p a r a el A F D
r e s u lt a n te . D e b e t e n e r s e e n c u e n t a q u e el A F D d e la f ig u r a 3 .2 3 t a m b i é n a c e p t a
(a | b )* a b b y tie n e u n e s ta d o m e n o s . E n la sección 3 .9 se e s tu d ia la c u e s tió n d e m i-
n im iz a c ió n del n ú m e r o d e e s ta d o s d e u n A F D . □

Fig. 3 .2 9 . R esultado d e ap licar la co n strucció n d e su b co n ju n tos a la figura 3.27.

3 .7 P A S O D E U N A E X P R E S IO N R E G U L A R A U N A F N

E x isten m u c h a s estrateg ias p a ra c o n s tr u ir u n re c o n o c e d o r a p a r tir d e u n a e x p re sió n


reg u la r, c a d a u n a c o n sus p u n to s fu e rte s y s u s p u n to s débiles. LJna e stra te g ia utili­
z a d a e n v ario s p ro g r a m a s d e e d ic ió n d e te x to s co n siste en c o n s tr u ir u n A F N a p a r tir
d e u n a e x p re s ió n re g u la r y d e s p u é s s im u la r el c o m p o r t a m i e n t o del A F N c o n u n a
c a d e n a d e e n t r a d a u tiliz a n d o los a lg o ritm o s 3.3 y 3.4 d e esta sección. Si la v elo cid ad
d e e je c u c ió n e s f u n d a m e n ta l, se p u e d e c o n v e r tir el A F N e n u n A F D u tiliz a n d o la
c o n s tr u c c ió n d e s u b c o n ju n to s d e la secció n a n te r io r . E n la secció n 3 .9 se p re se n ta
u n a a p lic a c ió n o p c io n a l d e u n A F D a p a r ti r d e u n a e x p re sió n re g u la r e n la q u e n o
124 ANALISIS LEXICO

se c o n s tr u y e d e m a n e r a e x p lícita u n A F N in te r m e d io . E sta secció n c o n c lu y e c o n u n


a n á lis is d e l a s p e c to tie m p o -e s p a c io e n la im p la n ta c ió n d e re c o n o c e d o re s b a s a d o s en
A FN y AFD.

C o n str u c c ió n d e un A F N a p artir d e u n a e x p r e s ió n reg u la r

A c o n t in u a c i ó n se p r o p o r c io n a u n a lg o r itm o p a r a c o n s tr u i r u n A F N a p a r ti r d e u n a
e x p re s ió n reg u la r. H a y m u c h a s v a ria n te s d e este a lg o ritm o , p e r o a q u í se in tr o d u c e
u n a v ersió n se n c illa fácil d e a p lic a r. El a lg o r itm o está d irig id o p o r la s in ta x is e n el
s e n tid o d e q u e u tiliz a la e s tr u c tu r a s in tá c tic a d e la e x p re s ió n re g u la r p a r a g u ia r el
p ro c e s o d e c o n s tru c c ió n . L o s c a s o s d e l a lg o r itm o sig u en a lo s c a s o s d e la d e fin ició n
d e u n a e x p r e s ió n re g u la r. P r im e r o , se m u e s t r a c ó m o c o n s t r u i r a u t ó m a t a s p a r a r e ­
c o n o c e r t y c u a lq u ie r s ím b o lo del a lfa b e to . D e sp u é s, se m u e s tr a c ó m o c o n s tr u i r a u ­
tó m a ta s p a r a e x p re s io n e s q u e c o n te n g a n u n a a lte r n a c ió n , c o n c a te n a c ió n o el o p e ­
r a d o r d e la c e r r a d u r a d e K le e n e . P o r e je m p lo , p a r a la e x p re s ió n r | s. se c o n s tr u y e
u n A F N d e m a n e r a in d u c tiv a a p a r ti r d e los A F N p a r a r y .y.
A m e d id a q u e a v a n z a la c o n s tru c c ió n , c a d a p a so in tr o d u c e a lo s u m o d o s n u e ­
vos e s ta d o s , d e m o d o q u e el A F N r e s u lta n te c o n s tr u id o p a r a u n a e x p re s ió n re g u la r
te n d r á a lo s u m o el d o b le d e e s ta d o s q u e s ím b o lo s y o p e r a d o r e s h a y e n la e x p re sió n
regular.

A lg o r itm o 3 .3 . (Construcción d e T hom pson.) C o n s tr u c c ió n d e u n A F N a p a r ti r d e


u n a e x p re s ió n regular.

E ntrada. U n a e x p re s ió n re g u la r r e n u n a lfa b e to £ .

Salida. U n A F N N q u e a c e p te L{r).

M étodo. P r im e r o se h a c e el a n álisis s in tá c tic o d e r e n s u s s u b e x p re s io n e s c o n s titu ­


y entes. D espu és, p o r las reglas 1 y 2 q u e se v e rá n m á s a d e la n te , se c o n s tr u y e n los
A F N p a r a c a d a u n o d e los s ím b o lo s b á s ic o s d e r ( a q u e llo s q u e se a n c o un s ím b o lo
del alfa b e to ). L o s s ím b o lo s b ásico s c o r r e s p o n d e n a las p a r te s 1 y 2 d e la d e fin ic ió n
d e u n a e x p re s ió n regular. E s i m p o r ta n te c o m p r e n d e r q u e si u n s ím b o lo a ap arec e
v arias veces en /*. se c o n s tr u y e u n A F N in d e p e n d ie n te e n c a d a caso.
D e sp u é s, g u iá n d o s e p o r la e s tr u c tu r a s in tá c tic a d e la e x p re s ió n re g u la r r, se c o m ­
b in a n in d u c tiv a m e n te e so s A F N u tiliz a n d o la regla 3 q u e se v e rá m á s a d e la n te hasta
o b te n e r el A F N p a r a la e x p re s ió n c o m p le ta . T o d o s los A F N in te r m e d io s p r o d u c id o s
d u r a n te el c u rs o d e la c o n s tr u c c ió n c o r r e s p o n d e n a u n a s u b e x p re s ió n d e r y tie n e n
v arias p ro p ie d a d e s im p o rta n te s : tie n e n e x a c ta m e n te u n e s ta d o final, n in g u n a a ris ta
e n tr a e n el e s ta d o d e in icio , y n in g u n a a ris ta sale del e s ta d o final.

1. P a r a € . c o n s tr u i r el A F N

A q u í, i e s u n n u e v o e s ta d o d e in ic io y / e s u n n u e v o e s ta d o d e a c e p ta c ió n . C ie r ­
ta m e n te este A F N r e c o n o c e je}.
3.7 PASO DE U N A EXPRESIO N R E G U L A R A U N A F N 125

2. P a ra a d e 2 * c o n s tr u ir el A F N

D e n u e v o , / es u n n u e v o e s ta d o d e in icio , y / u n n u e v o e s ta d o d e a c e p ta c ió n .
E sta m á q u i n a r e c o n o c e {a}.

3. S u p ó n g a s e q u e A(.v) y Ar(/) son A F N p a r a las e x p re sio n e s reg u la re s s y /.

a) P a ra la e x p re sió n reg u lar s | /, c o n stru y a se el sig u ien te A F N c o m p u e s to A\s | /):

A q u í, i es u n n u e v o e s ta d o d e in icio , y f u n n u e v o e s ta d o d e a c e p ta c ió n . H ay
u n a tra n s ic ió n c o n € d e s d e / a los e s ta d o s d e in ic io d e N (s) y N (t). H a y u n a
tra n s ic ió n c o n € d e sd e lo s e s ta d o s d e a c e p ta c ió n d e A (s) y A'(/) al n u e v o es­
t a d o d e a c e p t a c ió n / L o s e s ta d o s d e in ic io y a c e p ta c ió n d e N (s) y A'(/) n o son
e s ta d o s d e in ic io o a c e p ta c ió n d e N (s | /). O b sérv ese q u e to d o s los c a m in o s
d e s d e / a / d e b e n p a s a r e x c lu s iv a m e n te p o r Ar(.v) o p o r A’(/). A sí. se v e q u e el
A F N c o m p u e s to r e c o n o c e L(s) U L(t).

b) P a r a la e x p re s ió n re g u la r st. c o n s tr u y a s e el A F N c o m p u e s t o A'(v/):

El e s ta d o d e in ic io d e N (s) se c o n v ie r te e n el e s ta d o d e in ic io d e l A F N c o m ­
p u e s to y el e s ta d o d e a c e p ta c ió n d e N (t) se c o n v ie r te e n el e s ta d o d e a c e p ta ­
c ió n d e l A F N c o m p u e s to . El e s ta d o d e a c e p ta c ió n d e N (s) se f u s io n a c o n el
e s ta d o d e in ic io d e N (t)\ es d e c ir, to d a s las tra n s ic io n e s d e s d e el e s ta d o d e in i­
cio d e N (t) se c o n v ie rte n e n tra n sic io n e s d e sd e el e s ta d o d e a c e p tació n d e Ar(s).
El n u e v o e s ta d o fu s io n a d o p ie rd e su c o n d ic ió n d e e s ta d o d e in ic io o d e a c e p ­
ta c ió n e n el A F N c o m p u e s to . U n c a m i n o d e s d e / a / d e b e p a s a r p r im e r o a
tra v é s d e N(s), y d esp u és, p o r Ar(/), d e m o d o q u e la e tiq u e ta d e ese c a m in o
se rá u n a c a d e n a d e L (s)U t). P u e s to q u e n in g u n a a ris ta e n tr a e n el e s ta d o de
in ic io d e A (/) ni sale del e s ta d o d e a c e p ta c ió n d e N(s), n o p u e d e h a b e r n in ­
g ú n c a m i n o d e s d e i a / q u e v u e lv a d e N (t) a N(s). P o r t a n t o , el A F N c o m ­
p u e s to r e c o n o c e L(s)L(t).
126 ANALISIS LEXICO

c) P a ra la e x p re sió n re g u la r s *, c o n s tru y a s e el A F N c o m p u e s t o N(s*):

A q u í. / es u n n u e v o e s ta d o d e in ic io y / u n n u e v o e s ta d o d e a c e p ta c ió n . En
el A F N c o m p u e s to , se p u e d e ir d e s d e i a / d ir e c ta m e n te , a lo la rg o d e u n a
a ris ta e tiq u e ta d a p o r €. q u e re p r e s e n ta el h e c h o d e q u e € está en L(s))*. o se
p u e d e ir d e s d e / a / p a s a n d o p o r A /v) u n a o m á s veces. C ie r ta m e n te , el A F N
c o m p u e s to r e c o n o c e (/-(5))*.

d ) P a ra la e x p re sió n re g u la r e n tr e p a ré n te s is (.v), utilícese N (s) c o m o A F N .

C a d a vez q u e se c o n s tr u y e u n n u e v o e s ta d o , se le d a u n n o m b r e d is tin to . D e esta


fo rm a , n o p u e d e h a b e r d o s e s ta d o s d e u n A F N c o m p o n e n te s c o n el m is m o n o m b r e .
A u n q u e a p a r e z c a n lo s m is m o s s ím b o lo s v a ria s veces en r. se c r e a p a r a c a d a e je m p lo
d e ese s ím b o lo u n A F N a p a r t e c o n s u s p r o p io s estad o s. □

Se p u e d e c o m p r o b a r q u e c a d a p a so d e la c o n s tr u c c ió n d e l a lg o ritm o 3 .3 p r o d u c e
u n A F N q u e reco n o ce el len g u aje co rrecto . A d e m á s, la c o n s tru c c ió n p ro d u c e u n A F N
N (r) c o n las sig u ie n te s p ro p ie d a d e s.

1. \ ( r ) tie n e a lo s u m o el d o b le d e e s ta d o s q u e d e s ím b o lo s y o p e r a d o r e s e n r. E sto
se d e b e ai h e c h o d e q u e e n c a d a p a so d e la c o n s tr u c c ió n se c r e a n a lo s u m o dos
n u e v o s estados.

2. A’(r) tie n e e x a c ta m e n te u n e s ta d o d e in ic io y o t r o d e a c e p ta c ió n . El e s ta d o de
a c e p ta c ió n n o tie n e tra n s ic io n e s salien tes. E sta p ro p ie d a d se c u m p le ig u a lm e n te
p a r a to d o s los a u t ó m a ta s c o n s titu y e n te s .

''u

rV r II)
\ I
r» b
I
'•<, b
I
r4 * "
I \
( r, )
/ " I \
r, | '2

a í
Fig. 3.30. D escom posición de (a | b)*abb.
3.7 PASO DE U N A E X PR E SIO N R EG U LA R A U N A F N 127

3. C a d a e s ta d o d e A (r) tie n e u n a tra n s ic ió n s a lie n te c o n u n s ím b o lo e n 2 o a lo


s u m o d o s tra n s ic io n e s € salientes.

E je m p lo 3 .1 6 . U tilíc e s e el a lg o r itm o 3.3 p a r a c o n s t r u i r N (r) p a r a la e x p re s ió n r e ­


g u la r r = (a | b)*abb. E n la figura 3 .3 0 se m u e stra u n árb o l d e análisis s in tá c tic o para
r a n á lo g o a los á r b o le s d e a n á lis is s in tá c tic o c o n s tr u i d o s p a r a la s e x p r e s io n e s a r i t ­
m é tic a s d e la secció n 2.2. P a ra el c o n s titu y e n te r ,. la p r im e ra a . se c o n s tr u y e el AFIN

P a ra r2. se c o n s tr u y e

in i c i o b ¿sss*.
H 4 ------------5 J)

A h o ra se p u e d e n c o m b in a r A ( r,) y A (r2) u tiliz a n d o la regla d e la u n i ó n p a r a o b te n e r


el A F N p a r a r3 = \ r2

El AF'N p a ra (r3) e s el m is m o q u e p a r a r 3. E n to n c e s , el A F N p a r a ( r 3)* es

El A F N p a r a r6 = a es
128 A N A L ISIS LEXICO

P a ra o b te n e r el a u t ó m a t a p a r a r 5 se fu s io n a n los e s ta d o s 7 y 7', lla m a n d o al es­


ta d o 7 re s u lta n te , p a r a o b te n e r

Si se c o n tin ú a así, se o b tie n e el A F N p a r a r u = {a \ b)*abb m o s tr a d o p o r p r im e ra


vez e n la figura 3.27. □

S im u la c ió n d e un A F N p or m e d io d e d o s p ila s

A c o n tin u a c ió n se in tr o d u c e u n a lg o r itm o q u e , d e s d e u n A F N N c o n s tr u id o p o r el
a lg o ritm o 3.3 y u n a c a d e n a d e e n tr a d a jv. d e t e r m in a si A a c e p ta o n o a x . El algo­
r itm o f u n c io n a le y e n d o la e n t r a d a u n c a r á c te r a la v ez y c a lc u la n d o t o d o el c o n ju n to
d e e s ta d o s e n los q u e p o d r ía e s ta r A' d e s p u é s d e h a b e r le íd o to d o s lo s p re fijo s d e la
e n tra d a . E l a lg o ritm o a p r o v e c h a las p ro p ie d a d e s esp eciales d e l A F N p r o d u c id o p o r
el a lg o r itm o 3.3 p a r a c a lc u la r e fic a z m e n te c a d a c o n j u n t o d e e s ta d o s n o d e te r m in is ­
tas. P u e d e im p la n ta r s e p a r a q u e se e je c u te e n u n ti e m p o p r o p o r c io n a l a | A' | x | .v |,
d o n d e | A' | es el n ú m e r o d e e s ta d o s d e N y | x j e s la lo n g itu d d e x .

A lg o r itm o 3 .4 . S im u la c ió n d e u n A F N .

Entrada. U n A F N A c o n s tr u id o p o r el a lg o ritm o 3.3 y u n a c a d e n a d e e n t r a d a x . Se


s u p o n e q u e x te r m in a c o n u n c a r á c te r d e fin d e a rc h iv o e o f . N tie n e e s ta d o inicial 50
y u n c o n j u n t o d e e s ta d o s d e a c e p ta c ió n F.

Salida. L a re s p u e s ta “s f \ si N a c e p ta x: “ n o " , en c a so c o n tra rio .


M étodo . A p liq ú e s e el a lg o ritm o e s b o z a d o e n la fig u ra 3.31 a la c a d e n a d e e n tra d a
.v. El a lg o ritm o realiza d e h e c h o la c o n s tr u c c ió n d e s u b c o n j u n to s e n el m o m e n t o d e
la eje c u c ió n . C a lc u la u n a tra n s ic ió n d e s d e el c o n j u n t o e n c u rs o d e e s ta d o s S al si­
g u ie n te c o n j u n t o d e e s ta d o s e n d o s e ta p a s . P r im e ro , d e t e r m in a m u ev e (S . a), to d o s
los e s ta d o s q u e se p u e d e n a lc a n z a r d e sd e u n e s ta d o e n S m e d ia n te u n a tra n s ic ió n
c o n a. el c a rá c te r d e e n tra d a en c u rso . D esp ués, c a lc u la la cerradura -€ d e m u eve (s. a).
es d ecir, to d o s los e s ta d o s q u e se p u e d e n a lc a n z a r d e sd e m u ev e (.v, a ) m e d ia n te cero
o m á s tra n s ic io n e s e . El a lg o ritm o u tiliza la f u n c ió n sigtecar p a r a leer los c a ra c te re s
d e .v, u n o a la vez. C u a n d o h a n a p a r e c id o to d o s los c a ra c te re s d e x , el a lg o ritm o
d e v u e lv e “sí", si u n e s ta d o d e a c e p ta c ió n está e n el c o n j u n t o S d e e s ta d o s en c u rs o ;
d e lo c o n tra rio , d e v u e lv e “ n o ". □
3.7 PASO D E U N A EXPRESIO N R EG U LA R A U N A F N 129

S : = cerradlira-€ (¡5o));
a : = sigtecan
w h ile a * e o f do bcgin
S : = cerradura - 1 (m ueve(S, a)):
a : = sigtecar
end
if S fi /■ * 0 then
return " s i” :
e ls e return " n o ” :

F ig . 3.31. S i m u l a c i ó n del A F N d el a l g o r i t m o 3.3.

El a lg o ritm o 3 .4 p u e d e s e r im p la n ta d o d e m a n e r a e fic ie n te u tiliz a n d o d o s pilas


y u n v e c to r d e b its in d e x a d o p o r e s ta d o s del A F N . Se u tiliz a u n a pila p a r a te n e r lo­
c a liz a d o el c o n j u n t o e n c u rs o d e e s ta d o s n o d e te rm in is ta s , y la o tra , p a r a c a lc u la r el
sig u ie n te c o n j u n t o d e e s ta d o s n o d e te r m in is ta s . S e p u e d e u s a r el a lg o ritm o d e la fi­
g u r a 3 .2 6 p a r a c a lc u la r la cerradura -€. y el v e c to r d e bits, p a r a d e t e r m in a r en u n
tie m p o c o n s ta n te si u n e s ta d o n o d e te r m in is ta ya está e n u n a pila, p a ra n o s e r a ñ a ­
d i d o d o s veces. U n a v ez c a lc u la d o el sig u ie n te e s ta d o e n la s e g u n d a pila, se p u e d e n
in te r c a m b ia r las f u n c io n e s d e las d o s pilas. P u e s to q u e c a d a e s ta d o n o d e te rm in is ta
tie n e a lo s u m o d o s tra n s ic io n e s d e salida, c a d a e s ta d o p u e d e d a r lu g a r a lo s u m o a
d o s n u e v o s e s ta d o s e n u n a tra n s ic ió n . S ea | A | el n ú m e r o d e e s ta d o s d e A . C o m o
p u e d e h a b e r a lo s u m o | A | e s ta d o s e n u n a p ila , se p u e d e h a c e r el c á lc u lo del s i­
g u ie n te c o n j u n t o d e e s ta d o s a p a r ti r del c o n j u n t o a c tu a l d e e s ta d o s en u n tie m p o
p ro p o rc io n a l a | ;V|. A si. el ti e m p o to ta l n e c e s a rio p a ra s im u la r el c o m p o r ta m ie n to
d e N c o n la e n t r a d a x es p r o p o r c io n a l a | A' | x | .v |.

E jem plo 3.17. S ea A’ el A F N d e la figura 3 .2 7 y sea x la c a d e n a c o m p u e s t a ú n i c a ­


m e n te p o r el c a r á c te r a. El e s ta d o d e in icio es cerradura -e (¡0)) = ¡0. 1, 2. 4 , 7}. C o n
el s ím b o lo d e e n tr a d a a h a y u n a tr a n s ic ió n d e s d e 2 a 3 y d e sd e 7 a 8. P o r t a n t o . T
es (3. 8). T o m a n d o la cerradura - e d e T se o b tien e el siguiente estad o {1. 2 . 3. 4. 6 , 7. 8).
C o m o n in g u n o d e esto s e s ta d o s n o d e te r m in is ta s es d e a c e p ta c ió n , el a lg o ritm o d e ­
vuelve “ n o ” .
O b sérv ese q u e el a lg o ritm o 3 .4 h a c e la c o n s tr u c c ió n d e s u b c o n ju n t o s e n el m o ­
m e n to d e la eje c u c ió n . P o r e je m p lo , c o m p á r e n s e las tra n s ic io n e s a n te r io r e s c o n los
e s ta d o s del A F D d e la fig u ra 3 .2 9 c o n s tr u id o a p a r ti r del A F N d e la figura 3.27. Los
c o n j u n t o s d e e s t a d o d e in i c io y e s t a d o s ig u ie n te e n la e n t r a d a a c o r r e s p o n d e n a
lo s e s ta d o s A y B d e l A F D . □

E l a s p e c to tie m p o -e sp a c io

D a d a u n a e x p re s ió n re g u la r r y u n a c a d e n a d e e n tr a d a x , e x iste n a h o r a d o s m é to d o s
p a r a d e t e r m in a r si x está e n L(r). U n e n f o q u e c o n s is te e n u tiliz a r el a lg o r itm o 3.3
p a r a c o n s tr u i r u n A F N A a p a r tir d e r. S e p u e d e rea liz a r d ic h a c o n s tr u c c ió n e n u n
tie m p o d e O (| r |), d o n d e | r | e s la lo n g itu d d e r. A tie n e a lo s u m o el d o b le d e e s ta ­
d o s q u e ¡ r |, y a lo s u m o d o s tra n s ic io n e s d e sd e c a d a estad o , d e m o d o q u e se p u e d e
130 A N A L ISIS LEXICO

a lm a c e n a r u n a ta b la d e tra n s ic io n e s p a r a N en u n e s p a c io d e 0 ( \ r |). E n to n c e s se
p u e d e u t i l i z a r el a l g o r i t m o 3 .4 p a r a d e t e r m i n a r si N a c e p t a a a* e n u n t i e m p o
0 ( \ r \ x | a |). P o r ta n to , u tiliz a n d o este e n f o q u e , se p u e d e d e t e r m i n a r si x está en
L{r) e n u n t i e m p o to ta l p ro p o rc io n a l a la lo n g itu d d e r m u ltip lic a d a p o r la lo n g itu d
d e x . E ste e n f o q u e h a sid o u tiliz a d o en v ario s e d ito re s d e te x to p a r a b u s c a r p a tro n e s
d e e x p re s io n e s reg u la re s d o n d e la c a d e n a o b je tiv o x n o su ele s e r m u y larga.
U n s e g u n d o e n f o q u e es c o n s tr u i r u n A F D a p a r tir d e la e x p re s ió n re g u la r r a p li­
c a n d o la c o n s tr u c c ió n d e T h o m p s o n a r y d e s p u é s la c o n s tru c c ió n d e s u b c o n ju n to s .
a lg o ritm o 3.2. al A F N re s u lta n te . (E n la Sec. 3 .9 se d a u n a im p la n ta c ió n q u e evita
c o n s tr u i r el A F N in te r m e d io d e m a n e r a e x p líc ita .) I m p l a n ta n d o la f u n c ió n d e t r a n ­
sició n c o n u n a ta b la d e tra n s ic io n e s , se p u e d e u tiliz a r el a lg o r itm o 3.1 p a ra s im u la r
el A F D c o n la e n t r a d a v e n u n tie m p o p r o p o r c io n a l a la lo n g itu d d e a *, in d e p e n d ie n ­
te m e n te del n ú m e r o d e e s ta d o s del A F D . E ste e n f o q u e h a sid o u tiliz a d o a m e n u d o
en p ro g r a m a s d e c o n c o r d a n c ia d e p a tr o n e s q u e b u s c a n e n a rc h iv o s d e te x to p a tr o ­
nes d e e x p r e s io n e s re g u la re s. U n a vez c o n s t r u i d o el a u t ó m a t a fin ito , la b ú s q u e d a
a v a n z a m u y rá p id o , d e m o d o q u e este e n f o q u e es el m á s a d e c u a d o c u a n d o la c a d e n a
o b je tiv o v e s m u y larga.
H a y . s in e m b a r g o , c ie rta s e x p re sio n e s reg u la re s c u y o m e n o r A F D tie n e u n n ú ­
m e r o d e e s ta d o s c o n u n t a m a ñ o d e e x p re sió n re g u la r e x p o n e n c ia l. P o r e je m p lo , la
expresión reg u lar (a ¡ b)*a(a | b)(a | / > ) . . . (a | b). d o n d e hay //— I e x p resio n es (a ¡ />) al
final, n o tie n e n in g ú n A F D c o n m e n o s d e 2" estad o s. E sta e x p re sió n re g u la r r e p re ­
s e n ta t o d a s las c a d e n a s d e c a r a c te r e s a y b d o n d e el n-c s im o c a r á c t e r d e s d e el ex ­
t r e m o d e r e c h o es u n a a. N o es difícil d e m o s t r a r q u e c u a lq u ie r A F D p a ra esta e x p re ­
sió n d e b e reg istra r lo s n ú ltim o s c a ra c te re s q u e v e a e n la e n tr a d a : d e lo c o n tra rio ,
p u e d e d a r u n a re sp u e sta e r ró n e a . E s e v id e n te q u e se r e q u ie re n al m e n o s 2" e s ta d o s
p a r a lo c a liz a r to d a s las p o sib le s s e c u e n c ia s d e n c a ra c te re s a y b. A f o r tu n a d a m e n te ,
e x p re s io n e s c o m o ésta n o se p r e s e n ta n c o n fre c u e n c ia en a p lic a c io n e s d e a n á lis is lé­
x ico, p e r o si e n o tra s ap licacio n es.
U n te rc e r e n fo q u e co nsiste e n u tiliz ar u n A F D . p e ro h a y q u e e v ita r c o n s tru ir to d a
la ta b la d e tra n s ic io n e s m e d ia n te la té c n ic a lla m a d a “e v a lu a c ió n d ife rid a d e tr a n s i­
c io n e s " . A q u í, se c a lc u la n las tra n s ic io n e s e n el m o m e n t o d e la e je c u c ió n , p e r o n o
se d e te r m in a u n a tra n s ic ió n d e sd e u n e s ta d o d e te r m in a d o c o n u n c a rá c te r d a d o hasta
q u e es r e a lm e n te n ecesario . L as tra n s ic io n e s c a lc u la d a s se a l m a c e n a n e n u n cache.
S e c o n s u lta el cache c a d a vez q u e se v a a h a c e r u n a tr a n s ic ió n . Si la tra n s ic ió n no
está a h í, se c a lc u la y se a lm a c e n a e n el cache. Si el cache está llen o , se p u e d e b o r r a r
a lg u n a tra n s ic ió n y a c a lc u la d a p a r a d e ja r s itio a la n u e v a tra n s ic ió n .
E n la figura 3.32 se re s u m e n los req uisitos d e e s p a c io y ti e m p o del p e o r c a so para
d e t e r m i n a r si u n a c a d e n a d e e n t r a d a x e s tá e n el le n g u a je re p r e s e n ta d o p o r u n a ex-

A utóm ata E sp a c io T ie m po

A FN 0 ( M ) 0 < M x \x\)
A FD 0 ( 2 ' i) 0 (1 * 1 )

F ig . 3 .3 2 . Espacio y tiem p o o c u p a d o s en reconocer expresiones regulares.


3.8 DISEÑ O DE U N G E N E R A D O R D E A N A L IZ A D O R E S LEXICOS 131

p re s ió n re g u la r r u tiliz a n d o re c o n o c e d o re s c o n s tr u id o s a p a r tir d e a u t ó m a t a s finitos


d e te r m in is ta s y n o d e te rm in is ta s . L a té c n ic a d e “e v a lu a c ió n d if e r id a " c o m b in a los
re q u is ito s d e e s p a c io d e l m é t o d o del A F N c o n el r e q u e r im ie n to d e ti e m p o d e l e n ­
fo q u e d e l A F D . S u r e q u e r im ie n to d e e s p a c io es el t a m a ñ o d e la e x p re s ió n reg u lar
m á s el t a m a ñ o del cache, su ti e m p o d e e je c u c ió n o b s e r v a d o es casi ta n r á p id o c o m o
el d e l r e c o n o c e d o r d e te rm in is ta . E n a lg u n a s a p lic a c io n e s , la té c n ic a d e “e v a lu a c ió n
d ife rid a " es c o n s id e r a b le m e n te m á s r á p id a q u e el e n f o q u e d e l A F D , p o r q u e n o se
p ie rd e ti e m p o e n c a lc u la r tra n s ic io n e s d e e s ta d o s q u e n u n c a se utilizan .

3 .8 D I S E Ñ O D E U N G E N E R A D O R D E A N A L I Z A D O R E S L E X I C O S

E n esta secció n se c o n s id e r a el d is e ñ o d e u n a h e r r a m ie n ta d e softw are q u e c o n s tr u y e


a u t o m á t i c a m e n t e u n a n a liz a d o r léxico a p a r tir d e u n p r o g r a m a e s c rito e n len g u aje
L E X . A u n q u e se a n a l i z a n v a r io s m é to d o s , y n i n g u n o es id é n tic o al u s a d o p o r el
m a n d a t o L E X d e l s is te m a U N I X , d ic h o s p ro g r a m a s p a r a c o n s tr u i r a n a liz a d o r e s lé­
xicos se d e n o m i n a r á n c o m p ila d o r e s d e L E X .
S u p ó n g a s e q u e se tie n e u n a esp ecificació n d e u n a n a liz a d o r léx ico d e la fo rm a

p\ { acción \ }
Pi { acción2 }
• • • • a •

Pn { acción n }

d o n d e , c o m o e n la se c c ió n 3.5, c a d a p a t r ó n p, es u n a e x p re s ió n re g u la r y c a d a a c c ió n
acción, e s u n fra g m e n to d e p r o g r a m a q u e d e b e e je c u ta rs e s ie m p re q u e se e n c u e n t r e
e n la e n t r a d a u n le x e m a q u e c o n c u e r d e c o n p¡.
El p r o b le m a es c o n s tr u i r u n r e c o n o c e d o r q u e b u s q u e le x e m a s e n el b u ffer d e la
e n t r a d a . Si c o n c u e r d a m á s d e u n p a t r ó n , el r e c o n o c e d o r eleg irá el le x e m a m á s largo
q u e h a y a c o n c o r d a d o . Si h a y d o s o m á s p a tro n e s q u e c o n c u e r d e n c o n el le x e m a m á s
largo, se elige el p r i m e r p a tró n q u e h a y a c o n c o r d a d o d e la lista.
U n a u t ó m a t a fin ito e s u n m o d e lo n a tu r a l s o b re el q u e se c o n s tr u y e u n a n a liz a ­
d o r léxico, y el c o n s tr u id o p o r este c o m p ila d o r d e L E X tie n e la f o r m a q u e se m u e s ­
tra e n la fig u ra 3.33(b). H a y u n buffer d e e n t r a d a c o n d o s a p u n t a d o r e s h a c ia él. u n o
al in ic io del le x e m a y el o tr o u n a p u n t a d o r d e la n te r o , c o m o se vio en la secció n 3.2.
El c o m p ila d o r d e L E X c o n s tr u y e u n a ta b la d e tr a n s ic io n e s p a r a u n a u t ó m a t a fin ito
a p a r ti r d e p a tr o n e s d e e x p re s io n e s reg u la re s e n la esp ecificació n d e L E X . El a n a li­
z a d o r léx ico e n sí c o n s ta d e u n s im u l a d o r d e a u t ó m a t a f in ito q u e u tiliz a e s ta ta b la
d e tr a n s ic io n e s p a r a b u s c a r los p a tr o n e s d e la s e x p re s io n e s reg u la re s en el buffer d e
e n tra d a .
El re s to d e esta se c c ió n d e m u e s t r a q u e la i m p l a n t a c i ó n d e u n c o m p i l a d o r d e
L E X se p u e d e b a s a r e n a u t ó m a t a s d e t e r m in i s t a s o n o d e te r m in is ta s . Al final d e la
ú lt im a secció n se v io q u e la ta b la d e tr a n s i c io n e s d e u n A F N p a r a u n p a t r ó n de
u n a e x p re s ió n re g u la r p u e d e s e r c o n s id e r a b l e m e n t e m e n o r q u e la d e u n A F D . p e ro
el A F D tie n e la g r a n v e n ta ja d e q u e p u e d e r e c o n o c e r p a t r o n e s m á s r á p id a m e n te
q u e el A F N .
132 A N A L ISIS LEXICO

especificación compilador tabla de


de LEX de LEX transiciones

(a) Compilador de LEX

buffer de entrada

(b) Analizador léxico esquemático

Fig. 3.33. M o d elo d e c o m p ila d o r d e LEX.

C o n c o rd a n c ia de p a tr o n e s b a s a d a e n los A F N

U n m é t o d o es c o n s tr u i r la ta b la d e tra n s ic io n e s d e u n a u t ó m a t a f in ito n o d e t e r m i­
n is ta N p a r a el p a tró n c o m p u e s t o p { \ p 2 1 • • • | p H. E sto s e p u e d e h a c e r c r e a n d o p r i­
m e r o u n A F N N{p¡) p a r a c a d a p a t r ó n p, u tiliz a n d o el a lg o ritm o 3.3. a ñ a d i e n d o d e s ­
p u é s u n n u e v o e s ta d o d e in ic io s0t y p o r ú lt im o e n l a z a n d o s0 al e s ta d o d e in ic io de
c a d a A\p ,) c o n u n a tra n s ic ió n € , tal c o m o se m u e s tr a e n la fig u ra 3.34.
P a ra s im u la r este A F N , se p u e d e u tiliz a r u n a m o d ific a c ió n d e l a lg o r itm o 3.4. La
m o d ific a c ió n g a r a n tiz a q u e el A F N c o m b i n a d o r e c o n o c e el p re fijo m á s la rg o d e la

Fig. 3.34. A FN co n stru id o a partir d e un a especificación d e LEX.


3.8 DISEÑO DE U N G E N E R A D O R DE A N A L IZ A D O R E S LEXICOS 133

e n t r a d a q u e h a y a c o n c o r d a d o c o n u n p a t r ó n . E n el A F N c o m b in a d o , hay u n e s ta d o
d e a c e p ta c ió n p a r a c a d a p a t r ó n p,. C u a n d o se s im u la el A F N u tiliz a n d o el a lg o ritm o
3.4. se c o n s tr u y e la s e c u e n c ia d e c o n j u n t o s d e e s ta d o s d o n d e p u e d e e s ta r el A F N
c o m b in a d o d e s p u é s d e leer c a d a c a r á c te r d e e n tr a d a . In c lu s o si se e n c u e n t r a u n c o n ­
j u n t o d e e s ta d o s q u e c o n te n g a u n e s ta d o d e a c e p ta c ió n , p a r a e n c o n t r a r la c o n c o r ­
d a n c ia m á s larga se d e b e seg u ir s im u l a n d o el A F N h a s ta a lc a n z a r term inación, es
d ecir, u n c o n j u n t o d e e s ta d o s d e s d e el q u e n o hay tr a n s ic io n e s c o n el s ím b o lo d e
e n t r a d a en cu rso.
S e p r e s u p o n e q u e la e sp ecificació n d e L E X está d is e ñ a d a d e m o d o q u e u n p ro ­
g r a m a fu e n te v álid o n o p u e d e lle n a r p o r c o m p le to el buffer d e e n tr a d a , a n o s e r q u e
el A F N h a y a a lc a n z a d o la te r m in a c ió n . P o r e je m p lo , c a d a c o m p ila d o r im p o n e a l­
g u n a s restric cio n es a la lo n g itu d d e u n id e n tific a d o r. y se s a b rá q u e n o se h a resp e­
t a d o este lím ite c u a n d o se d e s b o r d e el buffer d e la e n t r a d a o in c lu s o a n te s.
P a ra e n c o n t r a r la c o n c o r d a n c ia a d e c u a d a , se h a c e n d o s m o d ific a c io n e s al algo­
r itm o 3.4. P r im e r o , s ie m p re q u e se a ñ a d a u n e s ta d o d e a c e p ta c ió n al c o n j u n t o d e
e s ta d o s e n c u rso , se re g istra n la p o s ic ió n e n c u rs o d e e n t r a d a y el p a t r ó n p, c o rre s ­
p o n d ie n te a este e s ta d o d e a c e p ta c ió n . Si el c o n j u n t o d e e s ta d o s e n c u r s o y a c o n tie n e
u n e s ta d o d e a c e p ta c ió n , e n to n c e s só lo se reg istra el p a tró n q u e a p a r e z c a p r im e r o en
la esp ecificació n d e L E X . S e g u n d o , se c o n t i n ú a h a c ie n d o tra n s ic io n e s h a s ta q u e se
a lc a n z a la te r m in a c ió n . E n la te r m in a c ió n , se re tro c e d e el a p u n t a d o r d e la n te r o a la
p o sició n e n q u e o c u r r ió la ú lt im a c o n c o r d a n c ia . El p a t r ó n q u e h iz o d ic h a c o n c o r ­
d a n c ia id e n tific a al c o m p o n e n te léx ico e n c o n t r a d o , y el le x e m a e m p a r e ja d o es la c a ­
d e n a e n tre los a p u n ta d o r e s d e in ic io d e l le x e m a y los d e la n te ro s .
N o r m a lm e n te , la e sp ecificació n d e L E X es tal q u e alg ú n p a tró n , p o s ib le m e n te
u n p a tró n d e e rro r, s ie m p re c o n c u e r d e . S in e m b a r g o , si esto n o es asi se tie n e u n a
c o n d ic ió n d e e r r o r n o p re v is ta y el a n a liz a d o r léx ico d e b e r á tra n s fe rir el c o n tro l a
a lg u n a r u ti n a d e re c u p e ra c ió n d e e r r o r p o r o m is ió n .

E je m p lo 3 .1 8 . U n s e n c illo e j e m p lo ilu s tra la s id e a s a n te r io r e s . S u p ó n g a s e q u e se


tie n e el s ig u ie n te p r o g r a m a e n L E X . q u e c o n s t a d e t r e s e x p r e s io n e s r e g u la r e s y
n in g u n a d e f in ic ió n regular.
a { } /* a q u í se o m i t e n las a c c io n e s */
abb j }
a*h' { }
L o s tr e s c o m p o n e n te s léxicos a n te r io r e s se re c o n o c e n p o r m e d io d e l a u t ó m a t a
d e la fig u ra 3.35(a). S e h a sim p lific a d o u n p o c o el te rc e r a u t ó m a t a c o n re la c ió n al
q u e p r o d u c ir í a el a lg o r i tm o 3 .3 . C o m o se h a in d i c a d o a n t e r i o r m e n t e , se p u e d e n
c o n v e r tir los A F N d e la fig u ra 3 .3 5 (a) e n u n A F N c o m b i n a d o N de la fig u ra 3.35(b).
A h o r a se c o n s id e r a r á el c o m p o r t a m i e n t o d e N c o n la c a d e n a d e e n t r a d a aaba
u tiliz a n d o la m o d ific a c ió n del a lg o r itm o 3.4. E n la fig u ra 3 .3 6 se m u e s tr a n lo s c o n ­
j u n t o s d e e s ta d o s y p a tr o n e s q u e c o n c u e r d a n c o n f o r m e se p ro c e s a c a d a c a r á c te r d e
la e n t r a d a aaba. E sta fig u ra m u e s tr a q u e el c o n j u n t o inicial d e e s ta d o s e s {0, 1. 3, 7).
C a d a u n o d e los e s ta d o s 1, 3 y 7 tie n e u n a tr a n s ic ió n e n a . a los e s ta d o s 2, 4 y 7,
r e s p e c tiv a m e n te . P u e s to q u e el e s ta d o 2 es el e s ta d o d e a c e p ta c ió n del p r i m e r p a ­
tr ó n . se registra el h e c h o d e q u e el p r im e r p a t r ó n c o n c u e r d a d e s p u é s d e leer la p ri­
m e r a a.
134 ANALISIS LEXICO

inicio

inicio

( a ) A F N p a ra a, abb y a*b'.

• • 4

(b) A F N c o m b in a d o .

F ír . 3.35. A F N q u e reconoce tres p atro n es distintos.

Pi P3
a a b^ •
a
0 ~
~ m 0 n in g u n o

T T
T T

T
F í r . 3.36. Secuencia d e c o n ju n to s de estados visitados al procesar la e n tra d a aaba.

S in e m b a r g o , h a y u n a tr a n s ic ió n d e l e s ta d o 7 al e s ta d o 7 e n el s e g u n d o c a r á c te r
d e la e n t r a d a , d e m o d o q u e se d e b e se g u ir h a c ie n d o tr a n s ic io n e s . H a y u n a tr a n s i­
c ió n d e s d e el e s ta d o 7 al e s ta d o 8 e n el c a r á c te r d e e n t r a d a b. E l e s ta d o 8 e s el es­
t a d o d e a c e p ta c ió n p a r a el t e r c e r p a t r ó n . U n a v ez a l c a n z a d o el e s ta d o 8 , n o hay
tr a n s i c io n e s p o sib le s c o n el s ig u ie n te c a r á c te r d e e n t r a d a a , a s í q u e se h a a lc a n z a d o
la te r m in a c ió n . P u e s to q u e se p r o d u j o la ú l t i m a c o n c o r d a n c i a d e s p u é s d e le e r el
te rc e r c a r á c te r d e e n t r a d a , se in f o r m a d e q u e el t e r c e r p a t r ó n h a c o n c o r d a d o c o n
el le x e m a aab. □
3.8 DISEÑO DE U N G E N E R A D O R DE A N A L IZ A D O R E S LEXICOS 135

El papel d e acción , aso ciad o c o n el p a tró n p, e n la especificación d e L E X e s c o m o


sigue. C u a n d o se re c o n o c e u n c a so d e /;, el a n a liz a d o r léx ico e je c u ta el p ro g ra m a
a s o c ia d o a c c i ó n O b sérv ese q u e acción, n o se e je c u ta p o r q u e el A F N e n tr a en u n
e s ta d o q u e in c lu y e el e s ta d o d e a c e p ta c ió n d e p,\ acción, se e je c u ta s o la m e n te si p ,
re su lta ser el p a tró n q u e p r o d u c e la c o n c o r d a n c ia m á s larga.

A F D p ara a n a liz a d o r e s lé x ic o s

O tr o e n f o q u e p a ra la c o n s tr u c c ió n d e u n a n a liz a d o r léxico a p a r tir d e u n a esp ecifi­


cació n d e L E X e s utilizar u n A F D p a r a realizar la c o n c o rd a n c ia d e p a tro n e s. La única
d ife re n c ia es aseg u rarse d e e n c o n t r a r las a d e c u a d a s c o n c o r d a n c ia s c o n los p a tro n e s.
L a s itu a c ió n es c o m p le ta m e n te a n á lo g a a la s im u la c ió n m o d ific a d a del A F N q u e se
a c a b a d e d escrib ir. C u a n d o se c o n v ie r te u n A F N e n u n A F D u tiliz a n d o el a lg o ritm o
3.2 p a r a la c o n s tr u c c ió n d e s u b c o n ju n to s . p u e d e h a b e r v a rio s e s ta d o s d e a c e p ta c ió n
e n u n s u b c o n j u n t o d a d o d e e s ta d o s n o d e te r m in is ta s . E n tal caso , tie n e p r io rid a d el
e s ta d o d e a c e p ta c ió n c o r r e s p o n d ie n te al p a t r ó n lista d o e n p r im e r lu g a r en la e sp e ­
cificació n d e L E X . C o m o en la s im u la c ió n del A F N . la ú n ic a m o d ific a c ió n q u e hay
q u e re a liz a r e s c o n t i n u a r h a c ie n d o tra n s ic io n e s d e e s ta d o s h a s ta a lc a n z a r un e s ta d o
sin e s ta d o sig u ie n te ( p o r e je m p lo , el e s ta d o 0 ) p a r a el s ím b o lo d e e n t r a d a e n c u rso .
P a r a e n c o n t r a r el le x e m a e m p a r e ja d o , se reg resa a la ú lt im a p o s ic ió n d e e n t r a d a
d o n d e el A F D e n tr ó e n u n e s ta d o d e a c e p ta c ió n .

E jem p lo 3 .1 9 . Si se c o n v ie r te el A F N d e la figura 3.35 en u n A F D . se o b tie n e la


ta b la d e tra n s ic io n e s d e la fig u ra 3.37. d o n d e se h a n n o m b r a d o los e s ta d o s del A F D
m e d ia n te listas d e los e s ta d o s del A F N . L a ú ltim a c o l u m n a d e la figura 3 .3 7 in d ica
u n o d e lo s p a tr o n e s re c o n o c id o s al e n t r a r e n ese e s ta d o d e l A F D . P o r e je m p lo , e n tre
los e s ta d o s 2, 4 y 7 d e l A F N . só lo el 2 e s d e a c e p ta c ió n , y es el e s ta d o d e a c e p ta c ió n
del a u t ó m a t a p a r a la e x p re s ió n re g u la r a d e la figura 3.35(a). P o r ta n to , el e s ta d o 247
del A F D r e c o n o c e el p a tró n a.
O b sé rv e se q u e la c a d e n a abb c o n c u e r d a c o n d o s p a tro n e s , abb y a * b ', r e c o n o ­
c id o s e n los e s ta d o s 6 y 8 del A F N . El e s ta d o 68 d e l A F D , e n la ú ltim a lín ea d e la
ta b la d e tra n sic io n e s, in c lu y e p o r t a n t o d o s e s ta d o s d e a c e p ta c ió n d e l A F N . Se ob-

S ím bolo d e E n t r a d a
Es t a d o Patr ó n A nun c ia d o
a b
0137 247 8 n inguno
247 7 58 a
8 — 8 a*b'
7 7 8 n inguno
58 — 68 a *b'
68 — 8 abb

Fig. 3.37. T abla de transiciones para un A FD .


136 ANALISIS LEXICO

serv a q u e a b b a p a re c e a n te s q u e a*b* e n las reglas d e tr a d u c c ió n d e la esp ecificació n


d e L E X . d e m o d o q u e se a n u n c i a q u e a b b h a s id o h a lla d o e n el e s ta d o 6 8 d e l A F D .
C o n la c a d e n a d e e n t r a d a a a b a , el A F D e n t r a e n el e s ta d o s u g e r id o p o r la si­
m u la c ió n del A F N q u e se m u e s tr a e n la fig u ra 3 .3 6 . C o n s id é re s e u n s e g u n d o e je m ­
p lo . la c a d e n a d e e n t r a d a aba. El A F D d e la fig u ra 3 .3 7 e m p ie z a e n el e s ta d o 0 1 3 7 .
C o n la e n tr a d a a, va al e s ta d o 2 4 7 . D e sp u é s, c o n la e n t r a d a b a v a n z a h a s ta el e s ta d o
58, y c o n la e n t r a d a a n o tie n e u n e s ta d o sig u ien te. P o r ta n to , se h a a lc a n z a d o la
te r m in a c ió n , a v a n z a n d o p o r los e s ta d o s del A F D 0 1 3 7 , d e s p u é s 2 4 7 y lu e g o 58. El
ú lt im o d e ésto s in c lu y e el e s ta d o d e a c e p ta c ió n 8 d e l A F N d e la fig u ra 3.3 5(a). A sí,
en el e s ta d o 5 8 el A F D a n u n c i a q u e h a sid o re c o n o c id o el p a t r ó n a*b*, y selec cio n a
a ab, el p re fijo d e la e n t r a d a q u e c o n d u j o al e s ta d o 5 8 , c o m o le x e m a . □

Im p la n ta c ió n d e l o p e r a d o r d e p r e a n á lisis

R e c u é rd e se d e la se c c ió n 3.4 q u e es n e c e sa rio el o p e r a d o r d e p re a n á lisis / e n a lg u n a s


s itu a c io n e s, p u e s to q u e el p a tró n q u e re p r e s e n ta u n d e t e r m in a d o c o m p o n e n t e léxico
p u e d e n e c e s ita r d e s c r ib ir a lg ú n c o n t e x t o p o s te r io r a l le x e m a real. C u a n d o se c o n ­
v ie rte u n p a tró n c o n / e n u n A F N . se p u e d e c o n s id e r a r al / c o m o si f u e ra € . d e
m o d o q u e e n re a lid a d n o se b u s c a / e n la e n tr a d a . S in e m b a rg o , si u n a c a d e n a re­
p r e s e n ta d a p o r esta e x p re s ió n re g u la r es re c o n o c id a e n el buffer d e e n tr a d a , el final
del le x e m a n o es la p o sic ió n del e s ta d o d e a c e p ta c ió n del A F N . M á s b ie n e s tá e n la
ú ltim a a p a r ic ió n del e s ta d o d e este A F N e n q u e tu v o u n a tra n s ic ió n e n el / (im a g i­
nario).

E je m p lo 3 .2 0 . E n la figura 3.38, se m u e s tr a el A F N q u e r e c o n o c e el p a t r ó n p a r a i f
d a d o e n el e je m p lo 3.12. El e s ta d o 6 in d ic a la p re s e n c ia d e la p a la b ra c lav e I F ; sin
e m b a r g o , se e n c u e n t r a el c o m p o n e n t e lé x ic o i f b u s c a n d o h a c ia a tr á s h a s ta la úl­
ti m a a p a r ic ió n d e l e s ta d o 2. □

cualquiera

F ig. 3 .3 8 . A F N q u e reconoce la palabra clave i f de F O R T R A N .

3 .9 O P T I M A C I O N D E B U S C A D O R E S P O R C O N C O R D A N C I A
DE PATRO NES BASADO S EN AFD

E n esta se c c ió n se in tr o d u c e n tres a lg o ritm o s q u e se h a n u tiliz a d o p a r a i m p l a n t a r y


o p t i m a r b u s c a d o re s p o r c o n c o r d a n c ia d e p a tr o n e s c o n s tr u id o s a p a r ti r d e e x p re sio ­
n e s regulares. E l p r im e r a lg o r itm o se p u e d e in c lu ir e n u n c o m p ila d o r d e L E X p o r ­
q u e c o n s tr u y e u n A F D d ir e c ta m e n te a p a r tir d e u n a e x p re s ió n reg u la r, s in c o n s tr u ir
u n A F N in te r m e d io d u r a n t e el p roceso.
3.9 O PT IM A C IO N DE B U S C A D O R E S POR C O N C O R D A N C IA 137

El s e g u n d o a lg o ritm o m in im iz a el n ú m e r o d e e s ta d o s d e c u a lq u ie r A F D , así q u e
p u e d e u tilizarse p a r a re d u c ir el t a m a ñ o d e u n b u s c a d o r p o r c o n c o r d a n c ia d e p a tr o ­
n e s b a s a d o e n A F D . El a lg o ritm o es eficien te; s u ti e m p o d e e je c u c ió n es O (n log n),
d o n d e n es el n ú m e r o d e e s ta d o s d e l A F D . El te rc e r a lg o ritm o se p u e d e u tiliz a r p a r a
p r o d u c ir r e p r e s e n ta c io n e s rá p id a s y m á s c o m p a c ta s p a r a la ta b la d e tr a n s ic io n e s d e
u n A F D q u e u n a sen cilla ta b la d e d o s d im e n s io n e s .

E s ta d o s s ig n ific a tiv o s d e un A F N

Se lla m a significativo a u n e s ta d o d e u n A F D si tie n e u n a tran sició n d e salida q u e n o


sea co n e . L a c o n s tru c c ió n d e s u b c o n ju n to s d e la figura 3.25 sólo utiliza los estad o s
significativos e n u n s u b c o n ju n to T c u a n d o d e te r m in a cerradura - € {m ueve (T . a)), el
c o n ju n to d e estad o s es a lc an zab le d e sd e T c o n e n tr a d a a. El c o n ju n to m u eve ( v. a) es
n o vacío sólo c u a n d o el e s ta d o .v es significativo. D u r a n te la c o n s tru c ió n . se p u e d e n
identificar d o s s u b c o n ju n to s si tie n e n los m is m o s e s ta d o s significativos, y los d o s o
n in g u n o in clu y en estad o s d e a c e p ta c ió n del A F N .
C u a n d o se a p lic a la c o n s tr u c c ió n d e s u b c o n ju n to s a u n A F N o b te n id o a p a r tir
d e u n a e x p re sió n re g u la r m e d ia n te el a lg o r itm o 3 .3 , se p u e d e n a p r o v e c h a r las p ro ­
p ie d a d e s ex clu siv as del A F N p a r a c o m b in a r las d o s c o n s tru c c io n e s . L a c o n s tr u c c ió n
c o m b in a d a r e la c io n a los e s ta d o s sig n ificativ o s del A F N c o n los s ím b o lo s d e la ex ­
p re s ió n reg u la r. L a c o n s tr u c c ió n d e T h o m p s o n realiza u n e s ta d o sig n ificativ o ju s to
c u a n d o u n s ím b o lo del a lfa b e to a p a re c e e n u n a e x p re sió n reg u la r. P o r e je m p lo , se
c o n s tr u ir á n e s ta d o s sign ificativ os p a ra c a d a a y b en ( a | b)*abb.
A d e m á s , el A F N re s u lta n te tie n e e x a c ta m e n te u n e s ta d o d e a c e p ta c ió n , p e r o el
e s ta d o d e a c e p ta c ió n n o es sig n ificativ o p o r q u e n o tie n e tra n s ic io n e s q u e salg an de
él. C o n c a t e n a n d o u n m a r c a d o r ú n i c o d e l e x t r e m o d e r e c h o # a u n a e x p r e s ió n re­
g u la r r, se d a al e s ta d o d e a c e p ta c ió n d e r u n a tr a n s ic ió n e n # , c o n v ir tié n d o lo en
e s ta d o sig n ificativ o d e l A F N p a r a r # . E n o tra s p a la b ra s, u tiliz a n d o la e x p re s ió n re­
g u la r a u m e n t a d a ( r ) # n o h a c e falta o c u p a rs e d e los e s ta d o s d e a c e p ta c ió n c o n f o r m e
a v a n z a la c o n s t r u c c i ó n d e s u b c o n j u n t o s ; c u a n d o la c o n s t r u c c i ó n e s tá c o m p le ta ,
c u a l q u ie r e s ta d o d e l A F D c o n u n a tr a n s ic ió n e n # d e b e s e r u n e s ta d o d e a c e p t a ­
ción.
U n a ex p resió n reg u lar a u m e n ta d a se re p re s e n ta m e d ia n te u n árb o l s in tá c tic o co n
s ím b o lo s b ásico s e n las h o ja s y o p e r a d o r e s e n los n o d o s in te rio re s. U n n o d o in te rio r
se d e n o m i n a nodo-cal , nodo-o o nodo-ast si está e tiq u e ta d o c o n u n o p e r a d o r d e c o n ­
c a te n a c ió n , d e |, o d e *, re s p e c tiv a m e n te . E n la fig u ra 3 .3 9 (a) se m u e s tr a u n árb o l
s in tá c tic o p a r a u n a e x p re sió n re g u la r a u m e n t a d a d o n d e los nodos-cat están m a r c a ­
d o s c o n p u n to s . S e p u e d e c o n s tr u i r el á r b o l s in tá c tic o p a r a u n a e x p re s ió n reg u lar
igual q u e u n á rb o l s in tá c tic o p a r a u n a e x p re sió n a r itm é tic a (véase C a p . 2).
S e e t i q u e t a n la s h o ja s d e l á rb o l s in tá c tic o p a r a u n a e x p re s ió n re g u la r c o n s ím ­
b o lo s d e l alfa b e to o c o n € . A c a d a h o ja n o e tiq u e ta d a c o n c se le aso cia u n e n te r o
ú n ic o y este e n t e r o se d e n o m i n a posición d e la h o ja y ta m b ié n p o sic ió n d e s u s ím ­
b o lo . U n s ím b o lo re p e tid o tie n e p o r t a n t o v arias p o sicio n es. E n el árb o l s in tá c tic o
d e la fig u ra 3 .39(a) las p o s ic io n e s se m u e s tr a n p o r d e b a j o d e los s ím b o lo s. L o s e s ta ­
d o s n u m e r a d o s del A F N d e la fig u ra 3 .39(c) c o r r e s p o n d e n a las p o s ic io n e s d e las
h o ja s e n el á rb o l s in tá c tic o d e la fig u ra 3.3 9(a). N o es u n a c o in c id e n c ia q u e esto s
138 ANALISIS LEXICO

e s ta d o s s e a n lo s e s ta d o s s ig n if ic a tiv o s d e l A F N . L o s e s ta d o s n o s ig n if ic a tiv o s se
n o m b r a n c o n le tra s m a y ú s c u la s e n la figura 3.39(c).
S e p u e d e o b te n e r el A F D d e la figura 3.3 9(b) a p a r tir del A F N d e la figura 3.39(c)
si se a p lic a la c o n s tr u c c ió n d e s u b c o n ju n t o s y se id e n tific a n los s u b c o n ju n t o s q u e
c o n te n g a n lo s m is m o s e s ta d o s sig n ificativ o s. L a id e n tific a c ió n d a c o m o r e s u lta d o la
c o n s t r u c c i ó n d e u n e s ta d o m e n o s , ta l c o m o d e m u e s t r a u n a c o m p a r a c i ó n c o n la
fig u ra 3.29.

C o n str u c c ió n d e un A F D a p a r ti r d e u n a e x p r e s ió n regu lar

E n esta secció n se m u e s tr a c ó m o c o n s tr u i r d ir e c ta m e n te u n A F D a p a r tir d e u n a


e x p re s ió n re g u la r a u m e n t a d a ( r ) # . P r im e r o se c o n s tr u y e u n á rb o l s in tá c tic o 7 p a ra
( r ) # y d e s p u é s se c a lc u la n c u a t r o fu n cio n e s: anulable. p rim era pos, ú h im a p o s y si-

/ \
#
/ \ 6 (a ) A rb ol d e s in ta x is para (< /1 h ) * a b b # .
h
\ 5
b
/ \ 4
a
3

/ \
a h
I 2

(b) A F D resultante.

(c ) A F N su b x a c e n te .

Fig. 3.39. A F D y A F N co n stru id o s a p artir d e (a b)* a b b # .


3.9 O PT IM A C IO N DE B U S C A D O R E S POR C O N C O R D A N C IA 139

guienlepos, h a c ie n d o re c o rrid o s s o b re T. P o r ú ltim o se c o n s tr u y e el A F D a p a r tir d e


siguientepos. L as f u n c io n e s anuladle, p rim era p o s y últim apos se d e fin e n s o b re los
n o d o s del á rb o l s in tá c tic o y se u sa n p a r a c a lc u la r siguientepos , q u e está d e f in id a en
el c o n j u n t o d e p o sicio n es.
R e c o r d a n d o la e q u iv a le n c ia e n t r e los e s ta d o s sig nificativ o s del A F N y las p o si­
c io n e s d e las h o ja s e n e! á rb o l s in tá c tic o d e la e x p re s ió n regular, se p u e d e a b re v ia r
la c o n s tru c c ió n del A F N c o n s tr u y e n d o el A F D c u y o s e s ta d o s c o r r e s p o n d e n a c o n ­
j u n t o s d e p o s ic io n e s e n el á rb o l. L a s tr a n s ic io n e s € d e l A F N re p re s e n ta n a lg u n a s
e s tr u c tu r a s d e las p o s ic io n e s b a s ta n te c o m p lic a d a s ; e n p a rtic u la r, co d ific a n la in fo r­
m a c ió n referen te a la p o s ib ilid a d d e q u e u n a p o sic ió n p u e d a seg u ir a o tra . E s decir,
c a d a s ím b o lo d e u n a c a d e n a d e e n t r a d a p a r a u n A F N p u e d e s e r e m p a r e ja d o p o r d e ­
te r m in a d a s p o sicio n es. U n s ím b o lo d e e n t r a d a c só lo p u e d e e m p a r e ja r s e c o n p o si­
c io n e s e n las q u e h a y a u n a c, p e r o n o to d a s las p o s ic io n e s c o n u n a c c o n c u e r d a n
n e c e s a r ia m e n te c o n u n d e t e r m i n a d o c a so d e c e n la c a d e n a d e e n tra d a .
L a n o c ió n d e u n a p o s ic ió n c o n c o r d a n d o c o n u n s í m b o l o d e e n t r a d a se rá d e fi­
n id a e n c u a n t o a la f u n c ió n siguientepos e n p o s ic io n e s del á rb o l s in tá c tic o . Si / es
u n a p o sic ió n , siguientepos (/) e s el c o n j u n t o d e p o s ic io n e s j tales q u e h a y a lg u n a c a ­
d e n a d e e n t r a d a . . . o / . . . tal q u e i c o r r e s p o n d e a e s ta a p a r ic ió n d e c y / a esta a p a ­
rició n d e d.

E je rc ic io 3 .2 1 . E n la fig u ra 3 .3 9 (a ), siguientepos{ 1) = j l , 2. 3}. E l r a z o n a m i e n t o


e s q u e si se ve u n a s c o r r e s p o n d ie n t e a la p o s ic ió n 1, se h a o b s e r v a d o s o la m e n te
u n a a p a r i c ió n d e a | b e n la c e r r a d u r a ( a \ b)*. A c o n t i n u a c i ó n se p o d r ía v e r la p r i­
m e r a p o s ic ió n d e o t r o c a s o d e a | b, lo q u e e x p lic a p o r q u é 1 y 2 e s tá n e n sig u ien ­
tepos (1). L u e g o se p o d r ía o b s e r v a r la p r i m e r a p o s ic ió n d e lo q u e sig u e a (a \ b)*.
es d e c ir, la p o s ic ió n 3 . □

P a r a c a lc u la r la f u n c ió n siguientepos , e s n e c e s a rio c o n o c e r q u é p o s ic io n e s p u e ­
d e n c o n c o r d a r c o n el p r i m e r o ú lt im o s ím b o lo d e u n a c a d e n a g e n e ra d a p o r u n a d e­
te r m in a d a s u b e x p re s ió n d e u n a e x p re s ió n reg u la r. (E sta in f o r m a c ió n se u tiliz ó in ­
f o r m a lm e n te e n el E je m p lo 3 .2 1 .) Si r* es ta l s u b e x p re s ió n . e n to n c e s to d a p o sic ió n
q u e p u e d a e s ta r p r im e r o e n r sigue a to d a po sició n q u e p u e d a e s ta r al final e n r. De
f o r m a s im ila r, si rs es u n a s u b e x p re s ió n , e n to n c e s to d a p r im e r a p o sic ió n d e s sigue
a to d a ú ltim a p o sic ió n d e r.
E n c a d a n o d o n del á rb o l s in tá c tic o d e u n a e x p re s ió n reg u la r, se d e fin e la f u n ­
c ió n prim erapos {n) q u e p r o p o r c io n a el c o n j u n t o d e p o s ic io n e s q u e p u e d e n c o n c o r ­
d a r c o n el p r im e r s ím b o lo d e u n a c a d e n a g e n e r a d a p o r la s u b e x p re s ió n c o n ra íz en
n. A s im is m o , se d e fin e la f u n c ió n ú ltim a p o s (n) q u e p r o p o r c io n a el c o n j u n t o d e p o ­
sic io n e s q u e p u e d e n c o n c o r d a r c o n el ú lt im o s ím b o lo e n esa c a d e n a . P o r e je m p lo ,
si n e s la r a íz del á r b o l c o m p l e t o d e la fig u ra 3 .3 9 (a ), e n t o n c e s p rim era p o s (n) =
= {1. 2. 3) y últim a p o s (n) = {6¡. E n b re v e se d a r á u n a lg o ritm o p a r a c a lc u la r estas
fu n c io n e s.
P a r a c a lc u la r prim erapos y últim apos , es n e c e s a rio c o n o c e r q u é n o d o s s o n las
raíces d e las s u b e x p re s io n e s q u e g e n e r a n le n g u a je s q u e in c lu y e n la c a d e n a v acía. A
d ic h o s n o d o s se les d e n o m in a anuladles , y se d e f in e anulab/e{n) c o m o v e r d a d e r o si
el n o d o n es a n u la b le , y falso e n c a so c o n tra rio .
A h o r a se p u e d e n d a r las reglas p a r a c a lc u la r las f u n c io n e s anulable . primerap< '
140 ANALISIS LEXICO

últim apos y siguientepos. P a r a las tr e s p r im e r a s fu n c io n e s, h a y u n a regla b a se a c e rc a


d e e x p re s io n e s d e u n s ím b o lo b ásico , y ta m b ié n tres reg las in d u c tiv a s q u e p e r m ite n
d e t e r m in a r el v a lo r d e las f u n c io n e s q u e c o n s titu y e n el á rb o l s in tá c tic o d e s d e a b a jo ;
e n to d o s e s to s casos. las reglas in d u c tiv a s c o r r e s p o n d e n a los tres o p e ra d o re s , u n ió n ,
c o n c a t e n a c i ó n y c e r r a d u r a . E n la fig u ra 3 .4 0 se d a n la s reg las p a r a a n u la b le y p ri­
m erapos. L as reglas p a r a últim a p o s (ri) s o n la s m is m a s q u e p a r a prim erapos (/?), pero
c o n Ci y í '2 in v e rtid as, y n o se m o s tr a rá n .
L a p r im e r a regla p a r a anu lable esta b le c e q u e si n es u n a h o ja e tiq u e ta d a c o n € ,
e n to n c e s anulable (n) e s v e rd a d e ra . L a s e g u n d a regla esta b le c e q u e si n es u n a h o ja
e tiq u e ta d a c o n u n s ím b o lo del a lfa b e to , e n to n c e s a n u lable (n) e s falsa. E n este caso ,
c a d a h o ja c o r r e s p o n d e a u n so lo s ím b o lo d e e n tr a d a , y p o r t a n t o n o p u e d e g e n e ra r
a € . L a ú ltim a regla p a r a an u lable esta b le c e q u e si n es u n n o d o - a s t c o n h ijo C\,
e n to n c e s anulable (n) es v e rd a d e ra , p u e s to q u e la c e r r a d u r a d e u n a e x p re s ió n g en era
u n len g u aje q u e in c lu y e a € .
O tr o e je m p lo , la c u a r t a regla p a r a prim erapos esta b le c e q u e si n e s u n n o d o -c a t
c o n h ijo iz q u ie rd o c, e h ijo d e r e c h o c2, y si anulable {c{) es v e rd a d e ra , e n to n c e s

prim erapos (n) = prim erapos (c ,) U prim erapos (c2)

d e lo c o n tr a r io , prim erapos (n) = prim erapos (c*). L o q u e esta regla esta b le c e es q u e


si e n u n a e x p re s ió n rs, r g e n e r a € , e n to n c e s las p r im e r a s p o s ic io n e s d e s “a p a re c e n
a lo largo d e " r y ta m b ié n s o n las p r im e r a s p o s ic io n e s d e rs: d e o tr o m o d o , só lo las
p r im e r a s p o s ic io n e s d e r s o n p r im e r a s p o s ic io n e s d e rs. E l r a z o n a m i e n t o es sim ila r
p a r a el resto d e las reglas p a r a a n u lable y prim erapos.
L a fu n c ió n siguientepos (i) in d ic a q u é p o s ic io n e s p u e d e n seg u ir a la p o sic ió n i
e n el árb o l s in tá c tic o . D o s reglas d e fin e n to d a s las f o r m a s e n q u e u n a p o sic ió n p u e d e
seg u ir a otra.

N odo n anulable {n) primerapos (n)

n es una hoja
true 0
eliquetada con €

n es una hoja
false {/}
etiquetada con la posición i

anulable (ct) or anulable (c2) primerapos (C\) U primerapos (C:)

n C \) ¡f anulable{C\) then
anulable{C\) and anulable{C:) primerapos (c») U primerapos (ci)
© © else primerapos (c,)

n (jT )
true primerapos (c,)
©
Fig. 3.40. Reglas p a ra calcu lar anulable y primerapos.
3.9 O P T I M A C I O N D E B U S C A D O R E S P O R C O N C O R D A N C IA 141

1. Si zi e s u n n o d o -c a t c o n h ijo iz q u ie r d o c ( e h ijo d e r e c h o c2. e / es u n a p o sició n


d e n t r o d e últim a p o s (c,), e n to n c e s to d a s las p o s ic io n e s d e prim erapos ( o ) están
e n siguientepos (/).

2. Si n e s u n n o d o -a st. e i e s u n a p o sic ió n d e n t r o d e ú ltim a p o s (n), e n to n c e s to d a s


las p o s ic io n e s d e prim erapos (n) e s tá n e n siguientepos (/).

Si se h a n c a lc u la d o prim erapos y últim apos p a r a c a d a n o d o , siguientepos d e c a d a


p o sició n se p u e d e c a lc u la r h a c ie n d o u n r e c o r r id o e n p r o f u n d id a d del á rb o l s in tá c ­
tico.

E je m p lo 3 .2 2 . E n la figura 3.41 se m u e s tr a n los v alo res d e prim erapos y últim apos


e n to d o s lo s n o d o s d e l á r b o l d e la f ig u r a 3 .3 9 (a ): p rim era p o s (n) a p a r e c e a la iz­
q u ie r d a del n o d o n y ú ltim a p o s (n) a la d e re c h a . P o r e je m p lo , prim erapos d e la h o ja
s itu a d a m á s a la iz q u ie r d a e t iq u e ta d a c o n a es {1}, p u e s to q u e d i c h a h o ja e s tá e t i­
q u e t a d a c o n la p o sic ió n 1. A sim is m o , prim erapos d e la s e g u n d a h o ja e s {2}. p u esto
q u e esta h o ja está e tiq u e ta d a c o n la p o sic ió n 2. P o r la te rc e ra regla d e la figura 3.40,
prim erapos d e s u s p a d r e s es {1. 2}.

{1.2.3} • {61

{1.2,31 • {51 {61 # {61

{1.2.3} • {41 {51 b {51

{1.2.31 • {31 ( 4 | b {41

{ 1.21 * { 1.21 (3> </ {31


I
{1.21 | {l.2|

{II </ H l (2) b {2)

Fig. 3.41. primerapos y últimapos para los nodos del árbol de sintaxis para (a ¡ b)*abb#

El n o d o e tiq u e ta d o c o n * es el ú n ic o n o d o a n u la b le . P o r ta n to , p o r la c o n d ic ió n
if d e la c u a r t a regla, prim erapos p a r a el p a d re d e este n o d o (el q u e re p r e s e n ta la ex ­
p re s ió n (a | b)*a) es la u n i ó n d e {1, 2} y {3}, q u e s o n las prim erapos d e s u s h ijo s iz­
q u ie r d o y d e r e c h o . P o r o t r a p arte , la c o n d ic ió n e ls e se a p lic a a ú ltim a p o s d e este
n o d o , p u e s to q u e la h o ja d e la p o s ic ió n 3 n o es a n u la b le . P o r ta n to , ú ltim a p o s del
p a d r e d e l n o d o -a s t c o n tie n e só lo 3.
A h o r a se c a lc u la siguientepos d e a b a jo a a r r ib a p a r a c a d a n o d o del á rb o l s in tá c ­
tic o d e la fig u ra 3 . 4 1. E n el n o d o -a s t, se a ñ a d e n 1 y 2 a siguientepos (1 ) y a siguien­
tepos (2) u tiliz a n d o la regla 2. E n el p a d re del n o d o -a s t, se a ñ a d e 3 a siguientepos (1)
y a siguientepos (2 ) p o r la regla 1. E n el sig u ie n te n o d o -a s t, se a ñ a d e 4 a siguiente-
142 A N A L ISIS LEXICO

p o s (3 ) p o r la regla 1. E n los d o s n o d o s-e st sig u ie n te s se a ñ a d e 5 a siguientepos (4) y


6 a siguientepos (5 ) u tiliz a n d o la m i s m a regla. E sto c o m p le ta la c o n s tr u c c ió n d e si-
guien! epos. E n la fig u ra 3 .4 2 se r e s u m e siguientepos.

N odo siguientepos
1 ( 1 . 2 , 3}
2 ( 1 , 2 , 3}
3 {4}
4 {5}
5 (6)
6 —

Fig. 3.42. La función siguientepos.

S e p u e d e ilu s tr a r la f u n c ió n siguientepos c r e a n d o u n g ra fo d irig id o c o n u n n o d o


p a r a c a d a p o s ic ió n y u n a a r is ta d irig id a d e s d e el n o d o / al m o d o j si j e s tá e n siguien­
tepos (/). E n la figura 3 .4 3 se m u e s tra este g rafo d irig id o p a r a siguientepos d e la figu­
ra 3.42.

Es in te r e s a n te o b s e rv a r q u e este d ia g r a m a se c o n v e r tir ía e n u n A F N s in tr a n s i­
c io n e s € p a r a la e x p re s ió n re g u la r e n c u e s tió n si:

1. se c o n v ie r te n to d a s las p o s ic io n e s d e prim erapos d e la ra íz e n e s ta d o s d e inicio.


2. se e tiq u e ta c a d a a ris ta d irig id a (/, j ) c o n el s ím b o lo d e la p o s ic ió n j , y
3. se c o n v ie r te la p o sic ió n a s o c ia d a c o n # e n el ú n ic o e s ta d o d e a c e p ta c ió n .

P o r t a n t o , n o es s o r p r e n d e n te q u e se p u e d a c o n v e r tir el g rafo d e siguientepos e n u n


A F D u tiliz a n d o la c o n s tr u c c ió n d e s u b c o n ju n to s . T o d a la c o n s tr u c c ió n p u e d e efec­
tu a rs e s o b re la s p o sicio n es, u s a n d o el sig u ie n te a lg o ritm o . □

A lg o ritm o 3 .5 . C o n s tr u c c ió n d e u n A F D a p a r tir d e u n a e x p re s ió n re g u la r r.

E ntrada. U n a e x p re s ió n re g u la r r.
Salida. U n A F D D q u e r e c o n o c e a L(r).
3.9 O PTIM A CIO N D E B U SC A D O R E S POR C O N C O R D A N C IA 143

M étodo.

1. C o n s tru y a s e u n á rb o l sin tá ctic o p a r a la ex p resió n re g u la r a u m e n ta d a (r) # , d o n d e


# es u n m a r c a d o r d e final ú n ic o q u e se a ñ a d e a (r).

2. C o n s tr u y a n s e las f u n c io n e s anulable , prim erapos , ú llim a p o s y siguienlepos h a ­


c ie n d o re c o rrid o s e n p r o f u n d id a d d e T.

3. C o n s tr u y a n s e estadosD , el c o n j u n t o d e e s ta d o s d e D , y /r¿wZ>, la ta b la d e t r a n ­
sic io n e s p a r a D p o r el p r o c e d im ie n to d e la fig u ra 3 4 4 . L o s e s ta d o s d e n t r o d e
estadosD s o n c o n j u n to s d e p o sicio n es; al p rin c ip io , c a d a e s ta d o está “ n o m a r ­
c a d o " , y u n e s ta d o se c o n v ie r te e n “ m a r c a d o " j u s t o a n te s d e c o n s id e r a r s u s t r a n ­
sic io n e s d e salid a. El e s ta d o d e in ic io d e D e s prim erapos ( ra íz). y lo s e s ta d o s d e
a c e p ta c ió n s o n to d o s los q u e c o n t ie n e n la p o s ic ió n a s o c ia d a c o n el m a r c a d o r d e
final # . □

E je m p lo 3 .2 3 . C o n s tr u y a s e u n A F D p a r a la e x p re s ió n re g u la r (a | b)*abb. E n la fi­
g u r a 3 .3 9 (a) se m u e s tra el á rb o l s in tá c tic o p a r a ((a | b )* a b b )# . a n u lable es v e rd a ­
d e r o só lo p a r a el n o d o e t iq u e ta d o c o n *. E n la fig u ra 3.41 se m u e s tr a n las fu n c io n e s
prim erapos y úllim apos. y siguientepos se m u e s tra e n la fig u ra 3.42.
E n la figura 3 .4 1 . prim erapos d e la raíz es {I, 2, 3(. S ea A este c o n j u n t o y c o n s i­
d érese el s ím b o lo d e e n tr a d a a. L as p o s ic io n e s 1 y 3 son p a r a a. a s í q u e sea B = si-
guientepos ( 1) U siguienlepos (3 ) = {I. 2. 3. 4). P u e s to q u e este c o n j u n t o n o h a a p a ­
re c id o h a s ta a h o r a se h a c e tra n D (/i, a] : = B.

al principio, el único estado n o m a rc ad o en estadosD es


primerapos (raíz), d o n d e raíz es la raíz del árbol
d e sintaxis p a ra (r) # ;
while hay u n estado sin m a rc ar T en estadosD do begin
m a rc ar T :
for cada sím bolo d e e n tra d a a d o begin
sea U el c o n ju n to d e posiciones q u e están en
siguientepos (p) p a ra alguna posición p en tal
q u e el sím b o lo en la posición p es a:
if i n o está vacio y n o está en estadosD then
a ñ a d ir V c o m o estado no m a rc a d o a estadosD ;
tranD [T. a \ : = U
end
end
Fig. 3.44. C o n stru cción de u n A FD .

C u a n d o se c o n s id e r a la e n t r a d a by se o b s e rv a q u e d e la s p o s ic io n e s d e A. só lo 2
está a s o c ia d a a b, a s í q u e se d e b e c o n s id e r a r el c o n j u n t o siguientepos (2 ) = (1, 2, 3}.
P u e s to q u e este c o n j u n t o ya h a b ía a p a r e c id o , n o se a ñ a d e a estadosD , s in o q u e se
a ñ a d e la tra n s ic ió n tranD [.A , b] : = A.
A h o r a se c o n t i n ú a c o n B = { I, 2 , 3, 4}. L os e s ta d o s y tr a n s ic io n e s q u e fin a l­
m e n te se o b tie n e n s o n los m is m o s q u e se m o s tr a r o n e n la figura 3 .3 9 (b). □
144 A N A L ISIS LEXICO

M in im iz a c ió n del n ú m e ro d e e s ta d o s d e un A F D

U n a c o n c lu s ió n te ó ric a i m p o r t a n t e es q u e to d o c o n j u n t o re g u la r es re c o n o c id o p o r
u n A F D c o n el m í n i m o d e e s ta d o s q u e es ú n ic o h a s ta n o m b r e s d e e s ta d o s . E n esta
secció n , se m u e s tr a c ó m o c o n s tr u i r este A F D del m í n i m o d e e s ta d o s re d u c ie n d o al
m í n i m o p o s ib le el n ú m e r o d e e s ta d o s e n u n A F D d e t e r m i n a d o s in a f e c ta r al le n ­
g u aje q u e se está re c o n o c ie n d o . S u p ó n g a s e q u e se tie n e u n A F D M c o n su c o n ju n to
d e e s ta d o s S y su alfa b e to d e s ím b o lo s d e e n tr a d a 2 - Se s u p o n e q u e c a d a estad o tiene
u n a tra n s ic ió n c o n c a d a s ím b o lo d e la e n tr a d a . Si n o fu era así, se p u e d e in tr o d u c ir
u n n u e v o “e s ta d o in a c tiv o " d . c o n tra n s ic io n e s d e d a d c o n to d a s las e n tra d a s , y
a ñ a d i r u n a tr a n s ic ió n d e s d e el e s ta d o s a l d e n la e n t r a d a a si n o h u b o tra n s ic ió n
d e sd e 5 en a.
S e d ic e q u e la c a d e n a w d istin g u e al e s ta d o s del e s ta d o 1 si. e m p e z a n d o c o n el
A F D M e n el e s ta d o s y a l im e n t á n d o lo c o n la e n t r a d a w, se te r m in a e n u n e s ta d o d e
a c e p ta c ió n , p e r o c o m e n z a n d o e n el e s ta d o / y a l im e n t á n d o lo c o n la e n t r a d a w, se
t e r m i n a e n u n e s ta d o d e n o a c e p ta c ió n o viceversa. P o r e je m p lo . € d is tin g u e c u a l­
q u i e r e s ta d o d e a c e p ta c ió n d e c u a lq u ie r e s ta d o d e n o a c e p ta c ió n , y e n el A F D d e la
fig u ra 3 .2 9 , los e s ta d o s A y B h a n sid o d ife re n c ia d o s p o r la e n tr a d a bb , p u e s to q u e
A v a al e s ta d o d e n o a c e p ta c ió n C e n la e n t r a d a bb, m ie n tr a s q u e B v a al e s ta d o de
a c e p ta c ió n E e n la m is m a e n tr a d a .
El a lg o ritm o p a r a m i n im i z a r el n ú m e r o d e e s ta d o s d e u n A F D f u n c io n a e n c o n ­
tr a n d o to d o s los g r u p o s d e e s ta d o s q u e p u e d e n s e r d ife r e n c ia d o s p o r u n a c a d e n a d e
e n tr a d a . C a d a g r u p o d e e s ta d o s q u e n o p u e d e d ife re n c ia rs e se f u s io n a e n to n c e s en
u n ú n i c o e s ta d o . E l a lg o r i tm o o p e r a m a n t e n i e n d o y r e f i n a n d o u n a p a r ti c ió n del
c o n j u n t o d e estad o s. C a d a g r u p o d e e s ta d o s d e n t r o d e la p a rtic ió n está f o r m a d o p o r
e s ta d o s q u e a ú n n o h a n sid o d is tin g u id o s u n o s d e o tro s , y to d o s los p a re s d e e s ta d o s
esco g id o s d e e n t r e g r u p o s d ife re n te s h a n s id o c o n s id e r a d o s d is tin g u ib le p o r u n a e n ­
tra d a .
Al p r in c ip io , la p a rtic ió n c o n s ta d e d o s g ru p o s: los e s ta d o s d e a c e p ta c ió n y los
e s ta d o s d e n o a c e p ta c ió n . El p a so f u n d a m e n ta l c o n s is te e n t o m a r u n g r u p o d e esta ­
d o s , p o r e je m p lo A = {su s 2, . . . s*} y u n s ím b o lo d e e n t r a d a a y c o m p r o b a r q u é
tra n s ic io n e s tie n e n los e s ta d o s $ 1, s 2, . . . , s* c o n la e n t r a d a a. Si d ic h a s tra n s ic io n e s
s o n h acia e s ta d o s d e d o s o m á s g r u p o s d is tin to s d e la p a rtic ió n e n c u rso , e n to n c e s
h a y q u e d iv id ir A p a r a q u e la s tra n s ic io n e s d e s d e los s u b c o n ju n to s d e A q u e d e n to ­
d a s c o n f in a d a s e n u n ú n ic o g r u p o d e la p a rtic ió n e n c u rs o . S u p ó n g a se , p o r e je m p lo ,
q u e S| y s2 v a n a lo s e s ta d o s t\ y t2 c o n la e n t r a d a a, y q u e /, y t2 e s tá n e n d ife re n te s
g ru p o s d e la p a rtic ió n . E n to n c e s se d e b e d iv id ir A al m e n o s e n d o s s u b c o n ju n to s ,
p a r a q u e u n s u b c o n ju n to c o n te n g a a y el o tr o , a 52. O b sé rv e se q u e t\ y t2 son
d ife re n c ia d o s p o r a lg u n a c a d e n a >v, y s { y s 2, p o r la c a d e n a aw.
E ste p ro c e s o d e d iv id ir g ru p o s d e n t r o d e la p a r tic ió n e n c u rs o se re p ite h asta q u e
n o sea n e c e sa rio d iv id ir n in g ú n o t r o g ru p o . A u n q u e se h a ju s tif ic a d o p o r q u é p u e ­
d e n re a lm e n te d ife re n c ia rs e lo s e s ta d o s q u e h a n sid o d iv id id o s e n d ife re n te s gru p os,
n o se h a in d ic a d o p o r q u é lo s e s ta d o s q u e n o h a n s id o d iv id id o s e n g r u p o s d ife re n te s
n o p u e d e n e n n in g ú n c a so s e r d ife r e n c ia d o s p o r n in g u n a c a d e n a d e e n tr a d a . S in e m ­
bargo . tal es el c a so y se d e ja la p r u e b a d e ese h e c h o al le c to r in te r e s a d o e n la te o ría
(véase, p o r e je m p lo , H o p c r o f t y U llm a n [1979]). T a m b ié n se d e ja al le c to r in te re ­
3.9 O PT IM A C IO N D E B U S C A D O R E S POR C O N C O R D A N C IA 145

s a d o la p r u e b a d e q u e el A F D c o n s tr u i d o t o m a n d o u n e s ta d o d e c a d a g r u p o d e la
p a rtic ió n fin al y e l im i n a n d o d e s p u é s lo s e s ta d o s in a c tiv o s y los e s ta d o s n o a lc a n z a -
bles d e sd e el e s ta d o d e in ic io q u e tie n e ta n p o c o s e s ta d o s c o m o c u a l q u ie r A F D q u e
a c e p te el m is m o lenguaje.

A lg o ritm o 3 .6 . M in im iz a c ió n d e l n ú m e r o d e e s ta d o s d e u n A F D .

E ntrada . U n A F D M c o n u n c o n j u n t o d e e s ta d o s 5 , u n c o n j u n t o d e e n tr a d a s
tra n s ic io n e s d e fin id a s p a r a to d o s los e s ta d o s y las e n tra d a s , u n e s ta d o d e in ic io s 0 y
u n c o n j u n t o d e e s ta d o s d e a c e p ta c ió n F.

Salida. U n A F D Af q u e a c e p ta el m i s m o le n g u a je q u e M y tie n e el m e n o r n ú m e r o
d e e s ta d o s posible.

M étodo.

1. C o n s tr ú y a s e u n a p a rtic ió n in icial f] del c o n j u n t o d e e s ta d o s c o n d o s g ru p o s : los


e s ta d o s d e a c e p ta c ió n F y los e s ta d o s d e n o a c e p ta c ió n S - F .

2. A p liq ú e se el p r o c e d im ie n to d e la fig u ra 3.45 a H p a r a c o n s tr u i r u n a n u e v a p a r ­


tic ió n 0 nueva*

3. Si I]nueva = II' h a c e r |'|finBi = | | y c o n t i n u a r c o n el p a so (4). Si n o . re p e tir el paso


(2) c o n f| : = n nutfva.
4. E scó jase u n e s ta d o e n c a d a g r u p o d e la p a rtic ió n [ | fina, c o m o representante d e
este g ru p o . L o s re p r e s e n ta n te s serán los e s ta d o s d e A F D r e d u c id o s M \ S ea s u n
e s ta d o re p r e s e n ta n te , y s u p ó n g a s e q u e c o n la e n t r a d a a h a y u n a tr a n s ic ió n d e M
d e sd e 5 a / . S ea r el re p re s e n ta n te del g ru p o d e / ( r p u e d e s e r /). E n to n c e s Af tien e
u n a tr a n s ic ió n d e sd e 5 a r c o n la e n t r a d a a. S ea el e s ta d o d e in ic io d e M ' el re­
p r e s e n ta n te del g r u p o q u e c o n tie n e al e s ta d o d e in ic io s0 d e A /, y se a n lo s esta ­
d o s d e a c e p ta c ió n d e \ V los re p r e s e n ta n te s q u e e s tá n e n F. O b sé rv e se q u e c a d a
g ru p o de firmal c o n s ta ú n ic a m e n te d e e s ta d o s e n F o n o tien e n in g ú n e s ta d o e n F.

5. Si M ' tie n e u n e s ta d o in a c tiv o , es d e c ir, u n e s ta d o d q u e n o es d e a c e p ta c ió n y


q u e tie n e tr a n s ic io n e s h a c ia él m i s m o c o n to d o s los s ím b o lo s d e e n t r a d a , eli­
m ín e s e d d e M \ E lim ín e n s e ig u a lm e n te to d o s los e s ta d o s q u e n o se a n a lc a n z a -
bles d e sd e el e s ta d o inicial. T o d a s las tr a n s ic io n e s a d d e sd e o tro s e s ta d o s se c o n ­
v ie rte n e n in d e fin id a s . □

for cada g rupo G d e f] do begin


partición d e G en su b g ru p o s tales q u e d o s estados s y /
d e G están en el m ism o su b g ru p o si. y sólo si, para todos
los sím bolos d e en trad a a , los estados s y / tienen
transiciones en a hacia estados del m ism o g rupo de [];
/* e n el p e o r caso, u n estad o estará sólo e n u n su b g ru p o */
su stitu ir G en ünueva p o r el c o n ju n to de to d o s los subgrupos fo rm ados
end

Fig. 3 .4 5 . C o n stru cció n d e flnucva


146 A N A L ISIS L E X IC O

E je m p lo 3 .2 4 . C o n s id é re s e d e n u e v o el A F D re p r e s e n ta d o e n la fig u ra 3.29. L a p a r ­
tic ió n in icial [I c o n s ta d e d o s g ru p o s : ( £ ) , el e s ta d o d e a c e p ta c ió n , y {A B C D ). los
e s ta d o s d e n o a c e p ta c ió n . P a r a c o n s t r u i r Hnueva» el a lg o r i tm o d e la fig u ra 3 .4 5 p r i­
m e r o c o n s id e r a (£'). P u e s to q u e este g r u p o c o n s ta d e u n so lo e s ta d o , y a n o se p u e d e
d iv id ir m ás, así q u e ( £ 7 ) se coloca en flnuevu- E nto n ces, el alg o ritm o con sid era el g ru p o
(A B C D ). C o n la e n t r a d a a, c a d a u n o d e e s to s e s ta d o s tie n e u n a tr a n s ic ió n a B. asi
q u e to d o s p o d r ía n p e r m a n e c e r e n u n m i s m o g r u p o e n lo q u e a la e n t r a d a a se r e ­
fiere. S in e m b a r g o , c o n la e n t r a d a b, A , B y C v a n a m ie m b r o s d e l g r u p o (A B C D )
d e I], m ie n tr a s q u e D v a a E , u n m i e m b r o d e o t r o g ru p o . P o r ta n to , d e n t r o d e Hnueva
el g r u p o (A B C D ) se d e b e d iv id ir e n d o s n u e v o s g ru p o s , (A B C ) y (D )\ [jnueva es e n ­
to n c e s (A B C )(D )(E ).
E n el sig u ie n te r e c o r r id o p o r el a lg o r itm o d e la fig u ra 3 .4 5 , d e n u e v o n o h a y d i­
v isió n e n la e n t r a d a a , p e r o (A B C ) d e b e d iv id irs e e n d o s n u e v o s g ru p o s , (A C )(B ).
p u e s to q u e e n la e n t r a d a b y A y C tie n e n a m b a s u n a tra n s ic ió n a C. m ie n tr a s q u e B
tie n e u n a tra n s ic ió n a D , u n m i e m b r o d e u n g r u p o d e la p a rtic ió n d is tin to d e l d e C
A sí, el sig u ie n te v a lo r d e [] es (A C )(B )(D )(E ).
E n el sig u ie n te re c o rrid o p o r el a lg o ritm o d e la figura 3 .4 5 . n o se p u e d e d iv id ir
n in g u n o d e los g ru p o s d e u n so lo estado. I-a ú n ic a p o sib ilid ad e s in te n ta r d iv id ir ( . 4 0 .
S in e m b a r g o . A y C v a n al m is m o e s ta d o B en la e n t r a d a a y al m is m o e s ta d o C en
la e n t r a d a b. P o r c o n s ig u ie n te , d e s p u é s d e este re c o rrid o , Flnueva = I I- ílfinai e s e n t o n ­
ces ( A C t B W t E ) .
Si se escoge A c o m o re p r e s e n ta n te d e l g r u p o (A C )%y B. D y E, c o m o re p re s e n ­
ta n te s d e los g r u p o s d e u n so lo e s ta d o , se o b tie n e el a u t ó m a t a re d u c id o c u y a ta b la
d e tra n s ic io n e s se m u e s tr a e n la fig u ra 3.46. El e s ta d o A es el e s ta d o d e in ic io y el
e s ta d o E es el ú n ic o e s ta d o d e ac e p ta c ió n .

S ím b o l o d e E n t r a d a
Estado
a b

A B A
B B D
D B E
E B A

F ig . 3 .4 6 . T abla de transiciones del A F D reducido.

P o r e je m p lo , e n el a u t ó m a t a re d u c id o , el e s ta d o E tie n e u n a tr a n s ic ió n al e s ta d o
A c o n la e n t r a d a b, p u e s to q u e A es el r e p r e s e n ta n te d e l g r u p o d e C y h a y u n a t r a n ­
sició n d e E a C c o n la e n t r a d a b e n el a u t ó m a t a o rig in a l. U n a m o d ific a c ió n s im ila r
tu v o lu g a r e n la e n t r a d a p a r a A y la e n t r a d a b. T o d a s las d e m á s tr a n s ic io n e s están
c o p ia d a s d e la fig u ra 3 .2 9 . N o h a y n in g ú n e s ta d o in a c tiv o e n la fig u ra 3 .4 6 . y to d o s
los e s ta d o s s o n a lc a n z a b le s d e s d e él e s ta d o d e in ic io A . □
3.9 O PTIM A CIO N D E B U S C A D O R E S POR C O N C O R D A N C IA 147

M in im iz a c ió n d e e s t a d o s e n a n a liz a d o r e s lé x ic o s

P a r a a p lic a r el p r o c e d im ie n to d e m in im iz a c ió n d e e s ta d o s a lo s A F D c o n s tr u id o s en
la secció n 3.7, se d e b e c o m e n z a r el a lg o r itm o 3 .5 c o n u n a p a r tic ió n in ic ia l q u e c o ­
lo q u e en g r u p o s d ife re n te s a to d o s los e s ta d o s q u e in d iq u e n d is tin to s c o m p o n e n te s
léxicos.

E je m p lo 3 .2 5 . E n el c a so del A F D d e la fig u ra 3 .3 7 , la p a rtic ió n in icial a g ru p a r ía


0 1 3 7 c o n 7, p u e s to q u e n i n g u n o d e ello s in d ic ó u n c o m p o n e n t e léxico; ta m b ié n se
a g r u p a r ía n 8 y 5 8 , p o r q u e a m b o s in d ic a r o n el c o m p o n e n t e léxico a * b ' . O tr o s es­
ta d o s e s ta r ía n so lo s e n u n g ru p o . I n m e d i a ta m e n te se d e s c u b r e q u e 0 1 3 7 y 7 p e r te ­
n e c e n a g r u p o s d is tin to s , p u e s to q u e v a n a d if e r e n te s g r u p o s e n la e n t r a d a a. A si­
m is m o , 8 y 5 8 n o están j u n t o s d a d a s s u s tr a n s ic io n e s e n la e n t r a d a b. P o r ta n to , el
A F D d e la fig u ra 3 .3 7 es el a u t ó m a t a c o n el n ú m e r o m í n i m o d e e s ta d o s q u e h a c e
este tra b a jo . □

M é to d o s p a ra c o m p r e s ió n d e ta b la s

C o m o y a se h a in d ic a d o , e x iste n m u c h a s f o r m a s d e i m p l a n t a r la f u n c ió n d e tr a n s i­
c ió n d e u n a u t ó m a t a fin ito . El p r o c e s o d e l a n álisis léxico o c u p a u n a p a r te c o n s id e ­
r a b le d e l ti e m p o d e l c o m p ila d o r , p u e s to q u e e s el ú n ic o p r o c e s o q u e d e b e o b s e rv a r
e n la e n t r a d a u n c a r á c te r a la vez. P o r ta n to , el a n a liz a d o r léxico d e b e m i n i m i z a r el
n ú m e r o d e o p e ra c io n e s q u e realiza p o r c a d a c a rá c te r d e e n tra d a . Si se u tiliza u n A F D
p a ra a y u d a r a i m p l a n t a r el a n a liz a d o r léxico, es a c o n s e ja b le u n a re p re s e n ta c ió n e fi­
c ie n te d e la f u n c ió n d e tra n s ic ió n . U n a m a tr iz b id im e n s io n a l. in d e x a d a p o r e s ta d o s
y c a ra c te re s , p r o p o r c io n a el a c c e s o m á s rá p id o , p e r o p u e d e o c u p a r d e m a s i a d o es­
p acio ( p o r e je m p lo , v ario s c ie n to s d e e s ta d o s p o r 128 c a ra c te re s). U n e s q u e m a m á s
c o m p a c to , p e r o m á s le n to , es u tiliz a r u n a lista e n la z a d a p a r a a l m a c e n a r las tr a n s i­
c io n e s d e salid a d e c a d a e s ta d o , c o n u n a tr a n s ic ió n “ p o r o m i s i ó n ” al final d e la lista.
O b v i a m e n t e la tr a n s ic ió n q u e o c u r r e c o n m á s fr e c u e n c ia e s la e le g id a p a r a d ic h a
o m isió n .
E x iste u n a im p la n ta c ió n m á s s u til q u e c o m b in a el acce so r á p id o d e la re p re s e n ­
ta c ió n p o r m e d io d e m a tric e s c o n la c o m p a c id a d d e las e s tr u c tu r a s d e listas. Se u ti­
liza u n a e s tr u c tu r a d e d a t o s q u e c o n s ta d e c u a t r o m a tr ic e s in d e x a d a s p o r n ú m e r o s
d e e s ta d o s , c o m o se m o s tr ó e n la fig u ra 3 .4 7 7. S e u tiliz a la m a tr iz base p a r a d e te r ­
m i n a r la p o sic ió n b a se d e las e n t r a d a s p a r a c a d a e s ta d o a l m a c e n a d o e n las m a tric e s
siguiente y revisa. S e u tiliz a la m a tr iz o m isió n p a r a d e t e r m i n a r u n a p o s ic ió n base
a lte r n a tiv a e n c a so d e q u e la p o s ic ió n base e n c u r s o n o sea válida.
P a r a c a lc u la r sig te ed o (5, a), la tr a n s ic ió n p a r a el e s ta d o s c o n el s ím b o lo d e e n ­
tr a d a a , p r im e r o se c o n s u lta el p a r d e m a tr ic e s sig u ien te y revisa. S u s e n t r a d a s p a ra
el e s ta d o s s e e n c u e n t r a n e n la p o s ic ió n / = b a se [5] -f a. d o n d e el c a r á c te r a e s c o n ­
s id e ra d o c o m o u n e n te r o . Se c o n s id e r a sig u ien te [/ ] c o m o el sig u ie n te e s ta d o d e s en

E n la p rá ctica h a y o tra m a tr iz in d e x a d a p o r 5 . q u e d a e l p a tró n c o n e l q u e c o n c u e r d a , si lo h a y .


c u a n d o se e n tr a e n e l e s ta d o s . E sta in fo r m a c ió n s e d e r iv a d e lo s e sta d o s d e l A F N q u e c o n stitu y e n
al e sta d o s d e l A F D .
148 A N A L IS IS L E X IC O

la e n t r a d a a si revisa [I J = s. Si revisa [/ ] ¿ s, se d e t e r m i n a q = o m isió n [5 ] y se


re p ite el p r o c e d im ie n to r e c u rs iv a m e n te , u tiliz a n d o q e n lu g a r d e s. El p r o c e d im ie n to
es el siguiente:

p ro c e d u re sigte ed o (s, a)\


i f revisa [base [5] + a] = 5 th e n
r e tu r n sig u ien te [base [5] + a ]
else
r e tu r n sig te edo (o m isió n [5 ], a)

L a fin a lid a d d e la e s tr u c tu r a d e la fig u ra 3.47 es a c o r t a r las m a tr ic e s sig u ien te y


revisa p e q u e ñ a s , a p r o v e c h a n d o las s im ilitu d e s e n tr e estad o s. P o r e je m p lo , el e s ta d o
q. el v alo r p o r o m is ió n p a r a el e s ta d o s, p u e d e s e r el e s ta d o q u e e stab lezca q u e se
está “t r a b a ja n d o c o n u n id e n tific a d o r'’, c o m o el e s ta d o 10 d e la fig u ra 3 .1 3 . Q u iz á
se e n tr e e n s d e s p u é s d e m o s tr a r t h u n p refijo d e la p a la b ra c lav e t h e n a d e m á s de
c o m o u n p refijo d e u n id e n tific a d o r. E n el c a r á c te r d e e n t r a d a e se d e b e ir a u n es­
ta d o especial q u e re c u e rd e q u e se h a o b s e r v a d o la c a d e n a t h e , p e ro si n o . el e s ta d o
s se c o m p o r t a c o m o el e s ta d o q. P o r ta n to , se asig n a revisa [base [5+ ] + e ) a s y si­
g u ien te [base[s] - f e ] al e s ta d o d e t h e .

o m is ió n ba se s ig u ie n te re v is a

Fig. 3.47. E structura de d ato s para rep resen ta r tablas d e transiciones.

A u n q u e q u iz á n o se p u e d a n elegir lo s v a lo re s d e base p a r a q u e n o q u e d e n sin


u tiliz a r e n tr a d a s d e siguiente y revisa , la e x p e r ie n c ia m u e s t r a q u e la se n c illa e s tra ­
te g ia d e a s ig n a r la base al n ú m e r o m e n o r d e f o r m a q u e las e n tr a d a s esp eciales pu e­
d a n lle n a rse sin in te rfe rir c o n las e n tr a d a s y a e x isten tes, es b a s ta n te b u e n a y u tiliz a
p o c o m á s e s p a c io q u e el m í n i m o posible.
Se p u e d e re d u c ir revisa a u n a m a tr iz in d e x a d a p o r e s ta d o s si el A F D tie n e la
p r o p ie d a d d e q u e las a ris ta s e n t r a n te s e n c a d a e s ta d o t te n g a n la m i s m a e tiq u e ta a.
P a r a im p la n t a r este e s q u e m a , se h a c e revisa [f ] = a y se re e m p la z a la p r u e b a d e la
lín ea 2 de) *'f,o c e d i m i e n t o sig te ed o p o r

[base[s] + a]] = a th e n
EJERCICIOS 149

E JE R C IC IO S

3.1 ¿ C u á l es el a lfa b e to d e e n t r a d a d e c a d a u n o d e los sig u ie n te s lenguajes?


a ) Pascal
b) C
c ) F O R T R A N 77
d ) A da
e) LISP

3 .2 ¿C u áles s o n las c o n v e n c io n e s c o n c e r n ie n te s al u s o d e e s p a c io s e n b la n c o en
c a d a u n o d e los le n g u a je s d e l e je rc ic io 3.1?

3 .3 Id e n tif iq ú e n s e los le x e m a s q u e f o r m a n lo s c o m p o n e n t e s lé x ic o s e n lo s si­


g u ie n te s p ro g ra m a s . D e n s e v a lo re s ra z o n a b le s d e a tr ib u to p a r a los c o m p o ­
n e n te s léxicos.
a ) Pascal

fu n c tio n m ax (i, j, : in te g e r ) : in te g e r;
{ d e v u e l v e e l m á x im o d e l o s e n te ro s i y j }
b e g in
i f i > j t h e n m ax : = i
e l s e m ax : = j
end;

b) C

i n t m ax ( i, j ) in t i, j;
/* d e v u e l v e e l m á x im o d e lo s e n te ro s i y j */
{
re tu rn i> j ? i : j ;
}
c ) F O R T R A N 77

FUNCTION MAX ( I, J )
C DEVUELVE EL MAXIMO DE LOS ENTEROS I Y J
IF (I .GT. J) THEN
MAX = I
ELSE
MAX = J
END IF
RETURN

3 .4 E scrib ase u n p r o g r a m a p a r a la f u n c ió n s i g t e c a r ( ) d e la se c c ió n 3.4 utili­


z a n d o e l e s q u e m a d e m a n e j o d e b u ffers c o n c e n t i n e l a s d e s c r i t o e n la
secció n 3.2.

3 .5 E n u n a c a d e n a d e lo n g itu d n , ¿ c u á n to s d e lo s sig u ie n te s h ay?


a) prefijos
b) su fijo s
c) s u b c a d e n a s
150 A N A L IS IS LEXICO

d ) p re fijo s p ro p io s
e) s u b s e c u e n c ia s

* 3 .6 D e s c ríb a n s e los le n g u a je s re p r e s e n ta d o s p o r las sig u ie n te s e x p re s io n e s re g u ­


lares:
a) 0 (0 0 *0
b ) ((€ 0)1*)*
c ) ( 0 1 1)*0(01 1 X 0 1 1)
d ) 0 * 1 0 * 10 * 1 0 *
e) ( 0 0 1 11)* ( ( 0 1 1 1 0 X 0 0 1 1 1)* ( 0 1 1 1 0 X 0 0 1 11)*)*

* 3 .7 E sc ríb a n se d e fin ic io n e s re g u la re s p a r a los sig u ie n te s lenguajes.


a ) T o d a s las c a d e n a s d e le tra s q u e c o n tie n e n la s c in c o v o cales e n o rd e n .
b ) T o d a s las c a d e n a s d e letras e n la s q u e las le tra s e s tá n e n o r d e n lex ico grá­
fico a s c e n d e n te .
,c) C o m e n ta r io s q u e c o n s is te n e n u n a c a d e n a e n c e r r a d a e n t r e / * y * / sin
n in g ú n * / in te r m e d io , a m e n o s q u e a p a r e z c a e n tr e las c o m illa s “ y
* d ) T o d a s las c a d e n a s d e d íg ito s s in n in g ú n d íg ito rep etid o ,
e ) T o d a s las c a d e n a s d e d íg ito s c o n a lo s u m o u n d íg ito re p e tid o .
0 T o d a s las c a d e n a s d e 0 y 1 c o n u n n ú m e r o p a r d e d íg ito s 0 y u n n ú m e r o
i m p a r d e d íg ito s 1.
g) El c o n j u n t o d e m o v im ie n to s d e l a je d re z , c o m o p - k 4 o k b p x qn.
h ) T o d a s las c a d e n a s d e 0 y 1 q u e n o c o n t ie n e n la s u b c a d e n a '0 1 1.
i) T o d a s las c a d e n a s d e 0 .y 1 q u e n o c o n tie n e n la s u b s e c u e n c ia 011.

3 .8 E sp ecífiq u ese la f o r m a lex icográfica d e las c o n s ta n te s n u m é r ic a s e n lo s le n ­


g u ajes d e l e je rc ic io 3.1.

3 .9 E sp ecífiq u ese la f o r m a lex ico g ráfica d e los id e n tific a d o re s y p a la b ra s c lav e


d e los le n g u a je s del e jercicio 3.1.

3 .1 0 E n la fig u ra 3 .4 8 se r e la c io n a n e n o r d e n d e c re c ie n te d e p re c e d e n c ia las c o n s ­
tr u c c io n e s d e e x p re s io n e s reg u la re s q u e p e r m ite L E X . E n esta ta b la , c r e p re ­
s e n ta t o d o c a r á c te r s im p le , r re p r e s e n ta u n a e x p re s ió n re g u la r, y 5 u n a c a ­
dena.
a ) S e d e b e e lim in a r el sig n ific a d o esp e c ia l d e los s ím b o lo s d e o p e ra d o re s

\ " . s [ i * + ? { } : /

si el s ím b o lo d e o p e r a d o r se u tiliz a c o m o c a rá c te r d e e m p a r e ja m ie n to . Esto
se p u e d e h a c e r e n c e r r a n d o e n tr e c o m illa s el c a rá c te r, u tiliz a n d o u n o de
d o s estilo s d e e n tr e c o m illa d o . L a e x p r e s ió n " s " se e m p a r e j a c o n la ca-
d e n a s lite ra lm e n te , s ie m p re q u e n o a p a re c e n in g u n a " e n s. P o r e je m p lo ,
H*•*" c o n c u e r d a c o n la c a d e n a * * . T a m b ié n se p o d r ía h a b e r e m p a r e ja d o
esta c a d e n a c o n la e x p re s ió n \ * \ * . O b sé rv e se q u e u n * s in c o m illa s e s u n
e je m p lo d e l o p e r a d o r d e la c e r r a d u r a d e K le e n e . E scríb ase u n a e x p re s ió n
re g u la r e n L E X q u e c o n c u e r d e c o n la c a d e n a " \ .
b) E n L E X , u n a clase d e c a r a c te r e s co m p lem en ta d a es u n a clase d e c a ra c ­
te r e s e n la q u e el p r i m e r s í m b o l o e s U n a c la s e d e c a r a c te r e s c o m p le -
EJER C IC IO S 151

E xpresión Empareja con Ejemplo

c cu a lq u ie r carácter c q u e no sea o p erad o r a


\c el c a rá c te r c literalm ente \*
“s" la cad e n a s literalm ente " * *"
• cu a lq u ie r carácter excepto d e n u e v a línea a . *b
A
el c o m ien zo de línea ~abc
$ el fin de línea abc$
IV] cu a lq u ie r c a rá c te r en s [ab e]
rs i cu a lq u ie r carácter q u e n o esté en s ("ab e]
r* c e ro o m á s r a*
r+ u n a o m ás r a+
r? cero o u n a r a?
r{m .n} m a n casos d e r a{l,5}
n r2 r, y en to n ces r2 ab
r\ r2 r\ o r2 a b
(r ) T (a b)
r\/r2 r, c u a n d o va seguida d e r 2 a b c /1 2 3

Fig. 3.48. Expresiones regulares en LEX.

m e n ta d a c o n c u e r d a c o n c u a lq u ie r c a r á c te r q u e n o esté e n la clase. P o r
ta n to , P a ] c o n c u e rd a c o n c u a lq u ie r c a rá c te r q u e no sea u n a a ,
p A - Z a - z ] c o n c u e r d a c o n c u a l q u ie r c a r á c te r q u e n o s e a u n a letra m a ­
y ú s c u la o m in ú s c u la , e tc é te ra . D e m u é s tr e s e q u e p a r a to d a d e fin ic ió n re­
g u l a r c o n c la se s d e c a r a c te r e s c o m p l e m e n t a d a s e x is te u n a e x p r e s ió n
re g u la r e q u iv a le n te s in clases d e c a ra c te re s c o m p le m e n ta d a s .
c) L a e x p re s ió n re g u la r r {m,/i} e m p a r e j a d e m a n o c u rr e n c ia s del p a t r ó n r.
P o r e je m p lo , a { 1 ,5 } c o n c u e r d a c o n u n a c a d e n a d e u n a a c in c o a . D e ­
m u é s tre s e q u e p a r a to d a e x p re s ió n re g u la r q u e c o n te n g a o p e r a d o r e s d e
re p e tic ió n ex iste u n a e x p re s ió n re g u la r e q u iv a le n te s in d ic h o s o p e ra d o re s .
d ) El o p e r a d o r ~ c o n c u e r d a c o n el e x t r e m o iz q u ie r d o d e u n a línea. E ste es
el m i s m o o p e r a d o r q u e i n t r o d u c e u n a c la s e d e c a r a c te r e s c o m p l e m e n ­
ta d a . p e r o el c o n te x to e n d o n d e a p a r e z c a ~ s ie m p re d e t e r m in a r á u n sig­
n if ic a d o ú n i c o p a r a este o p e r a d o r . El o p e r a d o r $ c o n c u e r d a c o n el ex-
t r e m o d e r e c h o d e u n a línea. P o r e je m p lo , ' ' p a e i o u ] * $ c o n c u e r d a c o n
c u a l q u ie r lín ea q u e n o c o n te n g a u n a vocal e n m in ú s c u la s . ¿E xiste p a r a
to d a e x p re s ió n re g u la r q u e c o n te n g a lo s o p e r a d o r e s ~ y $ u n a e x p re sió n
re g u la r e q u iv a le n te s in d ic h o s o p e ra d o re s ?

3.11 E scríb ase u n p r o g r a m a e n L E X q u e c o p ie u n a rc h iv o , s u s titu y e n d o c a d a se­


c u e n c ia n o n u la d e e sp a c io s e n b la n c o p o r u n solo e s p a c io e n b la n co .

3 .1 2 E scríb ase u n p r o g r a m a e n L E X q u e c o p ie u n p r o g r a m a e n F O R T R A N , s u s ­
titu y e n d o to d o s los e je m p lo s d e d o u b l e p r e c i s i ó n p o r r e a l .
152 ANALISIS LEXICO

3 .1 3 U tilícese u n a e sp ecificació n p r o p ia p a r a p a la b r a s clave e id e n tific a d o re s p a ra


el F O R T R A N 7 7 d e l e jercicio 3 .9 p a r a id e n tific a r los c o m p o n e n te s léxicos
d e las sig u ie n tes p ro p o sic io n e s:

I F (I ) = CMPLEX
I F (I ) A S S I G N 5 C M P L E X
I F (I ) 1 0 , 2 0 , 3 0
I F (I ) G O T O 15
I F (I ) T H E N

P u e d e escrib irse u n a e sp ecificació n p r o p ia p a r a p a la b ra s c lav e e id e n tific a -


d o re s en L E X .

3 .1 4 E n el s is te m a U N I X , el m a n d a t o s h d e l sh ell u tiliz a los o p e r a d o r e s d e la fi­


g u ra 3 .4 9 e n e x p re s io n e s d e n o m b r e s d e a r c h iv o p a r a d e s c rib ir c o n j u n to s d e
n o m b r e s d e a rc h iv o . P o r e je m p lo , la e x p re s ió n d e n o m b r e s d e a r c h iv o * . o
c o n c u e r d a c o n to d o s lo s n o m b r e s d e a rc h iv o q u e te r m in e n c o n . o ; s o r t . ?
c o n c u e r d a c o n t o d o s lo s a r c h i v o s d e la f o r m a s o r t . c , d o n d e c
es c u a l q u i e r c a r á c te r . L a s clases d e c a r a c te r e s se p u e d e n a b r e v ia r c o m o en
[ a - z ]. D e m u é s tre s e c ó m o se p u e d e n e x p re s a r p o r m e d io d e e x p re s io n e s re­
g u la re s las e x p re s io n e s d e n o m b r e s d e a r c h iv o s d e l shell.

3 .1 5 M o d ifiq ú e se el a lg o ritm o 3.1 p a r a e n c o n t r a r el m a y o r p re fijo d e la e n tr a d a


q u e sea aceptado por el A F D .

3 .1 6 C o n s tr u y a n s e a u t ó m a t a s fin ito s n o d e te r m in is ta s p a r a las sig u ie n te s e x p re ­


s io n e s re g u la re s u tiliz a n d o el a lg o r itm o 3.3. M u é stre se la s e c u e n c ia d e m o ­
v im ie n to re a liz a d a p o r c a d a u n o d e ello s al p ro c e s a r la c a d e n a d e e n t r a d a
ababbab.
a) ( a | b)*
b) (a* | b * r
c) ( ( « | ü)b*)*
d) (b | b)*abb (a \ b )*

EXPRESIÓN Empareja con Ejemplo

'5' la cad e n a 5 literalm ente Y


el c a rá c te r c literalm ente V
★ cu a lq u ie r cadena * .O
? cu alq uier carácter s o r t l .?
IV) cu alq uier carácter en s s o r t . [eso]

Fig. 3 .4 9 . Expresiones d e n o m b re d e archivo en el p ro g ram a sh .

3 .1 7 C o n v ié r ta n s e los A F N del e jercicio 3 .1 6 e n A F D u tiliz a n d o el a lg o r itm o 3.2.


M u é stre se la s e c u e n c ia d e m o v i m ie n to s re a liz a d a p o r c a d a u n o d e ello s al
p r o c e s a r la c a d e n a d e e n t r a d a ababbab .
EJERCICIOS 153

3 .1 8 C o n s tr u y a n s e A F D p a r a las e x p re s io n e s reg u la re s del e jercicio 3 .1 6 u s a n d o


el a lg o ritm o 3.5. C o m p á r e s e el t a m a ñ o d e lo s A F D c o n el d e los c o n s tr u id o s
e n el e jercicio 3.17.

3 .1 9 C o n s tr u y a s e u n a u t ó m a t a fin ito d e te r m in is ta a p a r ti r del d ia g r a m a d e t r a n ­


sic io n e s p a r a lo s c o m p o n e n t e s léxicos d e la fig u ra 3.10.

3 .2 0 A m p líe s e la ta b la d e la fig u ra 3 .4 0 p a r a in c lu ir los o p e r a d o r e s d e e x p re sio n e s


reg u la re s ? y +.

3 .2 1 M in im íc e s e el n ú m e r o d e e s ta d o s e n los A F D del e jercicio 3 .1 8 u tiliz a n d o el


a lg o ritm o 3.6.

3 .2 2 Se p u e d e d e m o s t r a r q u e d o s e x p re s io n e s reg u la re s s o n e q u iv a le n te s c o m p r o ­
b a n d o q u e su A F D d e n ú m e r o m í n i m o d e e s ta d o s s o n los m is m o s , e x c e p to
p a r a los n o m b r e s d e e s ta d o s . U tiliz a n d o e s ta té c n ic a , d e m u é s tr e s e q u e las si­
g u ie n te s e x p re s io n e s reg u la re s s o n to d a s eq u iv alen tes.
a ) (a | b)*
b) ( a * |/ > * r
c) ( ( € | a)b*)*

3 .2 3 C o n s tr ú y a n s e A F D c o n m í n i m o d e e s ta d o s p a ra las sig u ie n te s e x p re sio n e s


regulares.
a) (a b)*a (a b)
b) (a b f a <« b){a
c) (a b)*a (a bXa
**d) D e m u é s tre s e q u e c u a l q u ie r a u t ó m a t a fin ito d e te r m in is ta p a r a las e x p re ­
s io n e s reg u la re s (a | b)*a (a | b){a | b) . . . (a | b). d o n d e h a y n ~ 1 (a \ b) al
final, d e b e te n e r al m e n o s 2" estad o s.

3 .2 4 C o n s tr ú y a s e la re p re s e n ta c ió n d e la fig u ra 3 .4 7 p a r a la ta b la d e tra n s ic io n e s
del e je rc ic io 3 .1 9 . S e le c c ió n e n s e e s ta d o s p o r o m is ió n y p r u é b e n s e los d o s
m é to d o s sig u ie n tes d e c o n s tr u c c ió n d e la m a tr iz siguióm e y c o m p á r e n s e las
c a n tid a d e s d e e s p a c io utilizado:
a) C o m e n z a n d o c o n lo s e s ta d o s m á s d e n s o s ( a q u e llo s c o n el m a y o r n ú m e r o
d e e n tr a d a s q u e d ifie ra n d e s u s e s ta d o s d e o m is ió n ), p r im e r o c o lo q ú e n s e
las e n tr a d a s p a r a los e s ta d o s e n la m a tr iz siguiente.
b) C o ló q u e n s e las e n tr a d a s p a r a los e s ta d o s e n la m a triz siguiente e n o rd e n
ale a to rio .

3 .2 5 U n a v a r ia n te del e s q u e m a d e c o m p re s ió n d e ta b la s d e la secció n 3 .9 sería


e v i ta r u n p r o c e d i m i e n t o s ig te - e d o re c u rs iv o , u t i liz a n d o u n a p o s ic ió n p o r
o m is ió n fija p a r a c a d a estado. C o n s trú y a s e la rep re se n ta c ió n d e la figura 3.47
p a r a la ta b la d e tra n s ic io n e s d e l e jercicio 3 .1 9 u tiliz a n d o esta té c n ic a n o r e ­
cu rsiv a. C o m p á r e n s e los re q u isito s d e e s p a c io c o n los del e jercicio 3.24.

3 .2 6 S ea b ]b 2 . . . b„, u n a c a d e n a d e p a tro n e s , lla m a d a palabra clave. U n trie p a ra


u n a p a la b r a c lav e e s u n d ia g r a m a d e tr a n s ic io n e s c o n m + 1 e s ta d o s d o n d e
c a d a e s ta d o c o r r e s p o n d e a u n p re fijo d e la p a la b ra clave. P a r a 1 < s ^ in.
154 A N A L ISIS LEXICO

h a y u n a tr a n s ic ió n del e s ta d o s - 1 a l e s ta d o s e n el s ím b o lo bs. L o s e s ta d o s
in icial y final c o r r e s p o n d e n a la c a d e n a v acía y a la p a la b ra c o m p le ta , res­
p e c tiv a m e n te . El trie p a r a la p a l a b r a c lav e ababaa es:

A h o r a se d e fin e u n a fu n c ió n d e f a l l o / e n c a d a e s ta d o del d ia g r a m a d e t r a n ­
sicio n es. e x c e p to el e s ta d o d e in icio . S u p ó n g a s e q u e lo s e s ta d o s s y i r e p re ­
s e n ta n a los p re fijo s u y v d e la p a la b r a c la v e . E n to n c e s se d e f in e f ( s ) = t si,
y só lo si, v e s el s u fijo p r o p io m a y o r d e u q u e ta m b ié n e s el p re fijo d e la
p a la b r a clave. L a f u n c ió n d e f a llo / p a r a el trie a n t e r i o r es

s 1 2 3 4 5 6

A s) 0 0 1 2 3 1

P o r e je m p lo , lo s e s ta d o s 3 y 1 r e p r e s e n ta n a los prefijos a b a y a d e la p a la b ra
c lav e ababaa. / ( 3 ) = 1 p o r q u e a e s el s u fijo p r o p io m a y o r d e a b a q u e es
p re fijo d e la p a la b r a clave.
a ) C o n s tr ú y a s e la f u n c ió n d e fallo p a r a la p a la b ra c lav e abababaab.
*b) S e a n 0 , 1 m los e s ta d o s d e l trie, d o n d e 0 es el e s ta d o d e in icio . D e ­
m u é s tr e s e q u e el a lg o r itm o d e la fig u ra 3 .5 0 c a lc u la c o r r e c ta m e n te la fu n ­
c ió n d e fallo.
*c) D e m u é stre se q u e d u r a n te to d a la e je c u c ió n del a lg o ritm o d e la figura 3.50,
se e je c u ta la p ro p o s ic ió n d e a s ig n a c ió n t : = / ( / ) e n el la z o in t e r n o a lo
s u m o m veces.
*d) D e m u é s tre s e q u e el a lg o ritm o f u n c io n a e n u n t i e m p o O (m ).

/* calcula la función de f a l l o / p a r a / > , . . . b,„ */


t : = 0 ; / ( l ) : = 0;
for 5 : = 1 to m - 1 d o begin
while / > 0 a n d b„ i * b ,+1 d o t : = /( /> ;
if 1= then begin t : = / + I ; / ( s + 1 ) := t end;
e l s e ./'(.?+ I) : = 0
end

Fig. 3.50. A lgoritm o p a ra calcular la fu n ció n de fallo del ejercicio 3.26.

3 .2 7 E l a lg o r itm o K M P d e la fig u ra 3.51 u tiliz a la f u n c ió n d e f a l l o / c o n s t r u i d a


c o m o e n el e jercicio 3 .2 6 p a r a d e t e r m i n a r si la p a la b r a c lav e . . . bm es o
n o u n a s u b c a d e n a d e u n a c a d e n a o b je tiv o a x . . ^ a n. S e n u m e r a n lo s e s ta d o s
e n el trie p a r a b\ . . . bm d e 0 a m c o m o e n el e je rc ic io 3.26(b).
a ) A p liq ú e se el a lg o ritm o K M P p a r a d e t e r m i n a r si ababaa es o n o u n a s u b ­
c a d e n a d e abababaab.
EJERCICIOS 155

/* revisa si a\ . . . an co n tien e a b \ . . . bm c o m o su b ead en a */


5 : = 0;
for i : = 1 t o a/ d o b eg in
w h ile s .9 > 0 and a, ± do s : = f( s ) \
if a, = then s : = s + 1
if .9 = rn th en retiirn “si"
end;
return “ n o "

Fig. 3.51. A lgoritm o K M P .

*b) D e m u é s tre s e q u e el a lg o r itm o K M P d e v u e lv e “sí" si, y só lo si, b\ . . . bm


es u n a s u b e a d e n a d e
*c) D e m u é s tre s e q u e el a lg o r itm o K M P se e je c u ta e n u n ti e m p o O (m + n ).
*d) D a d a u n a p a la b ra c lav e y , d e m u é s tr e s e q u e la f u n c ió n d e fallo p u e d e u ti­
lizarse p a r a c o n s tr u ir , e n u n ti e m p o O (| >’ |), u n A F D c o n | y | + 1 e s ta d o s
p a r a la e x p re sió n re g u la r .*y.*. d o n d e . r e p re s e n ta c u a lq u ie r c a r á c te r de
e n tra d a .

**3.28 D efín ase el periodo d e u n a c a d e n a .9 c o m o u n e n t e r o p tal q u e s se p u e d e


e x p re s a r c o m o [u v ^ u . p a r a u n a k 0 , d o n d e \itv \ = p y v n o e s la c a d e n a
v acía. P o r e je m p lo , 2 y 4 s o n p e rio d o s d e la c a d e n a abobaba.
a) D e m u é s tre s e q u e p e s u n p e r io d o d e u n a c a d e n a s si, y só lo si, st = us
p a r a a lg u n a s c a d e n a s / y // d e lo n g itu d p.
b) D em uéstrese q u e si p y q s o n p erio d o s d e u n a c a d e n a s y si p + q < \s \ +
+ mcd(yx</). e n to n c e s m e d (/>,</) es u n p e r io d o d e .9, d o n d e m e d (p,q) es el
m á x i m o c o m ú n d iv is o r d e p y q.
c) S e a m p (S i) el m e n o r p e r i o d o d e u n p r e f i j o d e l o n g i t u d / d e u n a c a ­
d e n a v. D e m u é s t r e s e q u e la f u n c ió n d e f a l l o / t i e n e la p r o p i e d a d d e q u e
f ( j ) = J ~ m p { s ¡ - ,).

* 3 .2 9 S ea el prefijo repetitivo m á s corto d e u n a c a d e n a s el prefijo m á s c o r t o u d e


5 tal q u e s = u k, p a r a u n a k ^ 1. P o r e je m p lo , ab e s el p re fijo re p e titiv o m á s
c o r to d e abababab y aba es el p re fijo re p e titiv o m á s c o r to d e aba. C o n s tr u ­
yase u n a lg o r itm o q u é e n c u e n t r e el p re fijo re p e titiv o m á s c o r to d e u n a c a ­
d e n a .9 en u n ti e m p o O ( | s | ). Sugerencia. U tilícese la f u n c ió n d e fallo del
e jercicio 3.26.

3 .3 0 U n a cadena d e F ibonacci se d e fin e c o m o sigue:

S\ = b
s2 = a
s k = i * . , 5*_2, p a r a k > 2.

P o r e je m p lo , s 3 = ab , 54 = aba y s 5 = abaab.
a ) ¿ C u á l e s la lo n g itu d d e s„?
**b) ¿ C u á l e s el p e rio d o m á s p e q u e ñ o d e s f .
c ) C o n s tr u y a s e la f u n c ió n d e fallo p a r a s 6.
156 A \ \ l ISIS L E X I C O

*d) P o r in d u c c ió n , d e m u é s tr e s e q u e la f u n c ió n d e fallo p a r a .v„ se p u e d e e x ­


p re s a r p o r / ( /) = ¡ - [sk i i. d o n d e k e s tal q u e | s k ¡ < / + I < | , | p a ra
i « / « i | .
e) A p liq ú e se el a lg o r itm o K M P p a r a d e t e r m i n a r si s(. e s o n o u n a s u b e a d e n a
d e la c a d e n a o b je to a ? .
f) C o n s tr u y a s e un A F D p a r a la e x p re s ió n re g u la r *sh *.
**g) E n el a lg o ritm o K M P . ¿c u a l e s el n ú m e r o m á x im o d e a p lic a c io n e s c o n ­
s e c u tiv a s d e la f u n c ió n d e fallo e je c u ta d a p a r a d e t e r m i n a r si sk e s u n a
s u b e a d e n a d e la c a d e n a o b je to vt*i?

3.31 Se p u e d e n a m p lia r los c o n c e p to s d e trie y f u n c ió n d e fallo d e l e je rc ic io 3.26


d e u n a sola p a la b ra c lav e a u n c o n j u n t o d e p a la b ra s c lav e c o m o sigue. C a d a
e s ta d o d e l trie c o r r e s p o n d e a u n p re fijo d e u n a o m á s p a la b ra s clave. El es­
ta d o d e in ic io c o r r e s p o n d e a la c a d e n a v acía, y u n e s ta d o q u e c o r r e s p o n d a a
u n a p alab ra clave c o m p le ta es u n e s ta d o final. E sta d o s a d ic io n a le s p u e d e n
c o n v e rtirs e e n fin ales d u r a n t e el c á lc u lo d e la d e f u n c ió n d e fallo. E n la fi­
g u r a 3.52 se m u e s tr a el d ia g r a m a d e tr a n s ic io n e s p a r a el c o n j u n t o d e p a la ­
b ra s c lav e ( h e , s h e , h i s , h e r s } .

P a r a el trie s e d e f in e u n a fu n c ió n d e transición q q u e t r a n s f o r m a p a r e s e s ­
ta d o -s ím b o lo e n e s ta d o s tal q u e g ( s , b,+ó = s f si el e s ta d o s c o r r e s p o n d e a
u n p re fijo b\ . . . b, d e u n a p a la b ra clave, y s' c o r r e s p o n d e a u n p refijo by . . .
/>;/>„,. Si Sq es el e s ta d o d e in ic io , se d e f in e g ( s 0, a) = s0 p a r a to d o s los s ím ­
b o lo s d e e n t r a d a a q u e n o se a n el s ím b o lo in icial d e n in g u n a p a la b r a clave.
E n to n c e s se esta b le c e íMv. a ) = Jallo p a r a c u a lq u ie r tra n s ic ió n n o d e fin id a .
O b sé rv e se q u e n o h a y tr a n s ic io n e s fa llo p a r a el e s ta d o d e in icio .

S u p ó n g a s e q u e los e s ta d o s s y t re p re s e n ta n a lo s p re fijo s u y v d e a lg u n a s
p a la b ra s clave. E n to n c e s , se d e f i n e / ( a ) = t si, y sólo si, v es el m a y o r sufijo
p r o p io d e u q u e es a d e m á s p re fijo d e u n a p a la b r a clave. L a f u n c ió n d e fallo
/ p a r a el d ia g r a m a d e tra n s ic io n e s a n t e r i o r es:

1 3 4 5 6 7 8 9
0 0 0 1 2 0 3 0 3
EJERCICIOS 157

P o r e je m p lo , los e s ta d o s 4 y 1 r e p r e s e n ta n a los p re fijo s s h y h . / ( 4 ) = 1


p o r q u e h e s el m a y o r s u fijo p r o p io d e s h prefijo d e a lg u n a p a la b r a clave. Se
p u e d e c a lc u la r la f u n c ió n d e f a l l o / p a r a e s ta d o s d e p r o f u n d id a d c re c ie n te
u tiliz a n d o el a lg o r itm o d e la fig u ra 3.53. L a p r o f u n d id a d d e u n e s ta d o e s su
d is ta n c ia d e sd e el e s ta d o d e inicio.

for cada estad o .s d e p ro fu n d id ad 1 do


./'(•*) : = v0:
for cada pro fu n d id ad d > 1 do
for cada estad o s,¡ d e p ro fu n d id ad d y c a rá c te r a
tal q u e !'(\/. a) = v' do begin
.v: = ./(.vv/):
" h i l e ¿'(v. a ) = Jallo d o s : = f{ s):
/ ( . O : * tf(.v.a):
end

Fig. 3.53. A lgoritm o para c a lc u la r la función d e fallo para el trie


d e palabras clave.

O b sé rv e se q u e c o m o g (.v0, c) # Jallo p a r a c u a lq u ie r c a r á c te r c\ se g a ra n tiz a


la te r m in a c ió n del lazo w h ile d e la fig u ra 3.53. D e s p u é s d e a s ig n a r g ( t, a) a
/ ( / ) , si g (/, a) es u n e s ta d o final, ta m b ié n se c o n v ie r te / e n u n e s ta d o final,
si n o lo es ya.
a) C o n s tr ú y a s e la f u n c ió n d e fallo p a r a el c o n j u n t o d e p a la b r a s c lav e {aaa.
abaaa . ababaaa).
*b) D e m u é s tre s e q u e el a lg o r itm o d e la figura 3 .5 3 c a lc u la c o r r e c ta m e n te la
f u n c ió n d e fallo.
*c) D e m u é s tre s e q u e se p u e d e c a lc u la r la f u n c ió n d e fallo e n u n ti e m p o p ro ­
p o rc io n a l a la s u m a d e las lo n g itu d e s d e las p a la b ra s clave.

3 .3 2 S ea g la f u n c ió n d e tr a n s ic ió n , y / la f u n c ió n d e fallo d e l e je rc ic io 3.31 p a ra
u n c o n j u n t o d e p a la b r a s c lav e K = y 2, . . . , y k). El a lg o r itm o A C d e la
figura 3 .5 4 u tiliz a g y / p a r a d e t e r m i n a r si u n a c a d e n a o b je to a { . . . a,, c o n ­
tie n e o n o u n a s u b e a d e n a q u e s e a u n a p a la b r a clave. El e s ta d o s0 es el e s ta d o
d e in ic io del d ia g ra m a d e tr a n s ic io n e s p a r a K , y F es el c o n j u n t o d e e s ta d o s
finales.

/* revisa si ¿/, . . . a„ c o n tie n e una palabra clave c o m o su b ead en a */


s : = sol
for / : = 1 to n do begin
while g (s . a,) = Jallo d o v : = / ( y ) ;
.* := g (s.a ,):
if s está en h then retu rn **sí"
end;
return “ no"

Fig. 3 .5 4 . A lgoritm o AC.


158 A N A L ISIS L E X IC O

a) A p liq ú e se el a lg o ritm o A C a la c a d e n a d e e n t r a d a u s h e r s u tiliz a n d o las


f u n c io n e s d e tr a n s ic ió n y d e fallo del e je rc ic io 3.31.
*b) D e m u é s tre s e q u e el a lg o r itm o A C d e v u e lv e “s í" si. y só lo si, a lg u n a p a ­
la b ra c lav e y es u n a s u b c a d e n a d e a y . . . a„.
*c) D e m u é s tr e s e q u e el a lg o r i tm o A C h a c e a lo s u m o 2 n tr a n s ic io n e s al p r o ­
c e s a r u n a c a d e n a d e e n t r a d a d e lo n g itu d n.
*d) D e m u é s tre s e q u e a p a r ti r d e l d ia g r a m a d e tra n s ic io n e s y la f u n c ió n d e fa­
llo p a r a u n c o n j u n t o d e p a la b r a s c lav e {>’i, y 2, . . . , y*}, se p u e d e c o n s tru ir
k
u n A F D c o n a lo s u m o 2 1y¡ | + 1 e s ta d o s e n u n ti e m p o lin eal p a r a la cx-
/-i
p re s ió n reg u lar.* (y , | y 2 1 . . . |y*).*
e) M o d ifiq ú e s e el a lg o ritm o A C p a r a i m p r i m i r c a d a p a la b r a c lav e q u e se e n ­
c u e n t r e e n la c a d e n a o b je to .

3 3 3 U tilícese el a lg o r itm o del e je rc ic io 3 .3 2 p a r a c o n s tr u i r u n a n a liz a d o r léxico


p a r a la s p a la b r a s c lav e d e Pascal.

3 3 4 D e fín a se scm(x, y), u n a subsecuencia común más larga d e d o s c a d e n a s x e


y , c o m o u n a c a d e n a q u e e s s u b s e c u e n c ia t a n t o d e x c o m o d e y y e s t a n larga
c o m o c u a l q u ie r a d e e s ta s s u b s e c u e n c ia s . P o r e j e m p lo , r a n a e s u n a s u b s e ­
c u e n c ia c o m ú n m á s la rg a d e r a z o n a y r e b a n a . S e d e fin e d (x, y), la distan­
cia e n tr e x e j \ c o m o el n ú m e r o m í n i m o d e in s e rc io n e s y s u p re s io n e s n e c e ­
s a rio p a r a t r a n s f o r m a r x e n y. P o r e je m p lo , d ( r a z o n a , r e b a n a ) = 4.
a ) D e m u é s tre s e q u e p a r a d o s c a d e n a s c u a le s q u ie ra x e y, la d is ta n c ia e n tr e
.v e y y la lo n g itu d d e s u s u b s e c u e n c ia c o m ú n m á s larga están re la c io n a -
d a s p o r d (.v, y) = | x | + |j»| - | scm (x, y) |.
*b) E scrib ase u n a lg o ritm o q u e c o n s id e r e d o s c a d e n a s x e y c o m o e n tra d a y
p r o d u z c a u n a s u b s e c u e n c ia c o m ú n m á s la rg a d e x e y c o m o salida.
3 .3 5 D e fín a se e ( a \ y), la distancia de edición e n tr e d o s c a d e n a s x e y. c o m o el
n ú m e r o m í n i m o d e in sercio n es, s u p re s io n e s y s u s titu c io n e s d e c a ra c te re s n e ­
c e sa rio p a r a tr a n s f o r m a r x e n y. S e a x - a x . . . a,„ e y = Se puede
c a l c u l a r e(x. y) m e d i a n t e u n a l g o r i t m o d e p r o g r a m a c i ó n d i n á m i c a u t i l i ­
z a n d o u n a m a tr iz d e d is ta n c ia s d [ 0 ..m , 0..w ], d o n d e d [i, j] es la d is ta n c ia d e
e d ic ió n e n tr e a x . . . a, y b x . . . b,. S e p u e d e u tiliz a r el a lg o r itm o d e la figura
3.55 p a r a c a lc u la r la m a tr iz d. L a f ü n c ió n reemp es el c o s te d e re e m p la z a r
u n c a rá c te r: reemp ( a ,, b¡) = 0 si a¡ = bh 1 e n o t r o caso.

for / : = 0 t o m (te d [/, 0 ] : = /;


for j : = 1 to n d o d f0 , i ] : = j ;
for / : = 1 to m do
for j : = i to n do
O ( / , / ] : = m in ( < / [ / - 1J - \ ] + reem p(ah b,)%
d [ i ~ \ J ] + I,
d [ i . j - 1) + I)

Fig. 3.55. A lgoritm o p a ra calcular la distan cia d e edición e n tre d o s cadenas.


N O T A S B IB L IO G R A FIC A S 159

a ) ¿ C u á l es la re la c ió n e n t r e la d is ta n c ia d e l e jercicio 3 .3 4 y la d is ta n c ia d e
e d ic ió n ?
b) U tilícese el a lg o ritm o d e la fig u ra 3 .5 5 p a r a c a lc u la r la d is ta n c ia d e e d i­
c ió n e n t r e a b a b b y babaaa.
c) C o n s tr u y a s e u n a lg o r itm o q u e i m p r i m a la s e c u e n c ia m í n i m a d e tr a n s f o r ­
m a c io n e s d e e d ic ió n n e c e s a ria p a r a t r a n s f o r m a r x e n y.

3 .3 6 D ése u n a lg o r itm o q u e t o m e c o m o e n t r a d a u n a c a d e n a x y u n a e x p re sió n


re g u la r r, y p r o d u z c a c o m o sa lid a u n a c a d e n a y e n U r ) ta l q u e d{x, y ) sea lo
m á s p e q u e ñ a p o s ib le , d o n d e d es la f u n c ió n d e d is ta n c ia d e l e je rc ic io 3.34.

E JE R C IC IO S D E P R O G R A M A C IO N

P 3 .1 E scríb ase u n a n a liz a d o r léx ico e n P ascal o C p a r a los c o m p o n e n te s léxicos


m o s tr a d o s e n la fig u ra 3.10.

P 3 .2 E scríb ase u n a e sp ecificació n p a r a los c o m p o n e n te s léx ico s d e P ascal, y a p a r ­


ti r d e e s ta e sp ecificació n c o n s tr u y a n s e los d ia g r a m a s d e tra n s ic io n e s . U tilí­
c e n se los d ia g r a m a s d e tra n s ic io n e s p a r a i m p l a n t a r u n a n a l iz a d o r léx ico p a r a
P ascal e n u n le n g u a je c o m o C o P ascal.

P 3 .3 C o m p lé te s e el p r o g r a m a e n L E X d e la fig u ra 3.18. C o m p á r e n s e el t a m a ñ o y
la v e lo c id a d d e l a n a liz a d o r léx ico r e s u lta n te p r o d u c id o p o r L E X c o n el p r o ­
g r a m a e s c rito e n el e je rc ic io P3.1.

P 3 .4 Escríbase u n a especificación e n L E X p a r a los c o m p o n e n te s léxicos d e Pascal


y c o n el c o m p ila d o r d e L E X c o n stru y a se u n a n a liz a d o r léxico p a r a Pascal.

P 3 .5 E scríb ase u n p r o g r a m a q u e t o m e c o m o e n t r a d a u n a e x p re s ió n re g u la r y el
n o m b r e d e u n a rc h iv o , y p r o d u z c a c o m o sa lid a to d a s las lín e a s d e l a rc h iv o
q u e c o n te n g a n u n a s u b c a d e n a re p r e s e n ta d a p o r la e x p re s ió n reg u la r.

P 3 .6 A ñ á d a s e u n e s q u e m a d e re c u p e r a c ió n d e e rro re s a l p r o g r a m a e n L E X d e la
fig u ra 3 .1 8 p a r a p e r m itir le se g u ir b u s c a n d o c o m p o n e n te s léx ico s e n p re s e n ­
c ia d e erro res.

P 3 .7 P ro g rá m e s e u n a n a liz a d o r léx ico a p a r ti r del A F D c o n s tr u id o e n el ejercicio


3 .1 8 y c o m p á r e s e este a n a l iz a d o r léx ico c o n el c o n s tr u id o e n los ejercicios
P3.1 y P3.3.

P 3 .8 C o n s tr u y a s e u n a h e r r a m i e n ta q u e p r o d u z c a u n a n a l iz a d o r léx ico a p a r ti r d e
u n a d e s c rip c ió n d e u n a e x p re s ió n re g u la r d e u n c o n j u n t o d e c o m p o n e n te s
léxicos.

N O T A S B IB L IO G R A F IC A S

L as lim ita c io n e s im p u e s ta s a lo s a s p e c to s léx ico s d e u n le n g u a je :su e le n e s ta r d e te r ­


m in a d a s p o r el a m b i e n t e e n q u e se c r e ó el le n g u a je . C u a n d o se d is e ñ ó F O R T R A N
e n 1954, las ta rje ta s p e r f o r a d a s e r a n u n m e d io c o m ú n d e e n tr a d a . E n F O R T R A N
160 A N A L ISIS LEXICO

se ig n o r a r o n los e sp a c io s e n b la n c o d e b id o e n p a r te a q u e los p e rfo rista s. q u e p re ­


p a r a b a n las ta rje ta s a p a r ti r d e n o ta s e scritas a m a n o te n d ía n a e q u iv o c a rs e al c o n t a r
los e sp a c io s en b la n c o (B a c k u s [ 1 98 1 J). L a s e p a ra c ió n e n A L G O L 58 d e la re p re s e n ­
ta c ió n e n hardw are a p a r ti r del le n g u a je d e re fe re n c ia fue u n a c u e r d o a lc a n z a d o d e ­
b id o a q u e u n m i e m b r o d e l c o m ité d e d is e ñ o insistió , “ N o , n u n c a u s a ré u n p u n t o
p a r a el sig n o d e c im a l” . (W e g ste in [1981]).
K n u t h [1 9 7 3 a] p r e s e n ta o tr a s té c n ic a s p a r a m a n e ja r la e n t r a d a c o n buffers. F eld-
m a n [1 9 7 9 b ] a n a liz a las d ific u lta d e s p rá c tic a s d e l r e c o n o c im ie n to d e c o m p o n e n te s
léxicos e n F O R T R A N 77.
L as e x p re s io n e s reg u la re s f u e r o n e s tu d ia d a s p o r p r im e r a vez p o r K le e n e [1956],
q u e e s ta b a in teresad o e n d e scrib ir los a c o n te c im ie n to s q u e se p o d ía n re p re s e n ta r con
el m o d e lo d e a u t ó m a t a fin ito d e a c tiv id a d n e rv io s a d e M c C u Ilo c h y P itts [19 43]. La
m in im iz a c ió n d e los a u t ó m a t a s fin ito s fue e s tu d ia d a p o r p r im e r a vez p o r H uíT m an
[1954] y M o o r e [19 56]. L a e q u iv a le n c ia e n tr e a u t ó m a t a s d e te r m in is ta s y n o d e te r ­
m in is ta s e n c u a n t o a su c a p a c id a d p a r a r e c o n o c e r le n g u a je s fue m o s tr a d a p o r R a b in
y S co tt [1 959]. M c N a u g h to n y Y a m a d a [1960] d e s c rib e n u n a lg o ritm o p a r a c o n s­
tr u ir u n A F D d ir e c ta m e n te a p a r ti r d e u n a e x p re sió n reg u la r. E n H o p c r o f t y U llm a n
[1 9 7 9 ] se p u e d e e n c o n t r a r m á s in f o r m a c ió n s o b re la te o ría d e las e x p re s io n e s regu­
lares.
P r o n to se c o m p r e n d ió q u e las h e r r a m i e n ta s p a r a c o n s tr u i r a n a liz a d o r e s léxicos
a p a r ti r d e esp ecificacio n es e n fo rm a d e e x p re s io n e s reg u la re s se ría n ú tiles e n la im ­
p la n ta c ió n d e c o m p ila d o re s . E n J o h n s o n y o tr o s [1 9 6 8 ] se a n a liz a u n o d e esto s p ri­
m e ro s sistem as. L E X , el le n g u a je e s tu d ia d o e n este c a p ítu lo , se d e b e a L esk [1975],
y se ha u tiliz a d o p a r a c o n s tr u i r a n a liz a d o r e s léx ico s p a r a m u c h o s c o m p ila d o r e s a u e
u sa n el s is te m a U N I X . El c o m p a c to e s q u e m a d e la secció n 3 .9 p a r a las ta b la s de
tra n s ic ió n es o b r a d e S. C. J o h n s o n , q u e fue el p r im e r o e n u s a rlo p a r a la im p l a n t a ­
c ió n del g e n e r a d o r d e a n a liz a d o r e s s in tá c tic o s Y a c e ( J o h n s o n [1975]). E n D e n c k e r,
D ü rre y H e u ft [1 9 84], se e s tu d ia n y e v a lú a n o tr o s e s q u e m a s d e c o m p re s ió n d e t a ­
blas.
El p r o b le m a d e la im p la n ta c ió n c o m p a c t a d e ta b la s d e tr a n s ic io n e s h a sid o es­
tu d i a d o te ó r ic a m e n te e n u n p la n te a m ie n to g e n e ra l p o r T a r j a n y Y a o [1 9 7 9 ], y p o r
F r e d m a n , K o m ló s y S z e m e ré d i [1 9 8 4 ]. C o r m a c k . H o r s p o o l y K a is e rs w e rth [1985]
in tr o d u c e n u n a lg o r itm o d e d is p e rs ió n p e rfe c ta b a s a d o e n este tra b a jo .
S e h a n u tiliz a d o e x p re s io n e s reg u la re s y a u t ó m a t a s fin ito s p a r a m u c h a s a p lic a ­
cio n es, a d e m á s d e p a r a la c o m p ila c ió n . M u c h o s e d ito re s d e te x to u s a n e x p re sio n e s
reg u lares p a r a b ú s q u e d a s e n c o n te x to . T h o m p s o n [1 9 6 8 ], p o r e je m p lo , d e s c rib e la
c o n s tr u c c ió n d e u n A F N a p a r tir d e u n a e x p re s ió n re g u la r ( A lg o r itm o 3 .3 ) e n el c o n ­
te x to d e l e d i to r d e te x to s Q E D . E l s is te m a U N I X tie n e tr e s p r o g r a m a s d e b ú s q u e d a
d e p r o p ó s ito g e n e ra l b a s a d o s e n e x p re s io n e s reg ulares: grep, e g r e p y f grep. g r e p
n o p e r m ite u n ió n o p a ré n te s is p a r a a g r u p a r e n s u s e x p re s io n e s reg u lares, p e r o sí u n a
fo rm a lim ita d a d e re fe re n c ia h a c ia a tr á s c o m o e n S N O B O L . g r e p e m p le a lo s algo­
r itm o s 3.3 y 3 .4 p a r a b u s c a r s u s p a tr o n e s d e e x p re sio n e s reg u lares. L as e x p re sio n e s
reg u lares d e e g r e p s o n sim ila re s a las d e L E X , salv o p a r a ite ra c ió n y preanálisis.
e g r e p u tiliz a u n A F D c o n u n a c o n s tr u c c ió n d ife rid a d e e s ta d o s p a r a b u s c a r s u s p a ­
tro n e s d e e x p resio n es regulares, c o m o se in d ic ó en la sección 3.7. f g r e p b u sc a p a tro ­
nes f o r m a d o s p o r c o n j u n to s d e p a la b ra s c lav e u tiliz a n d o el a lg o r itm o d e A h o y C o -
N O T A S BIBLIO GRAFICA S 161

ra s ic k [1 9 7 5 ] , q u e se a n a l i z a e n lo s e je r c ic io s 3.31 y 3 .3 2 . A h o [ 1 9 8 0 ] a n a l i z a el
r e n d im ie n to re la tiv o d e d ic h o s p ro g ra m a s .
L as e x p re s io n e s reg u la re s h a n sid o m u y u tiliz a d a s en s is te m a s d e re c u p e ra c ió n
d e te x to s , e n le n g u a je s d e c o n s u l t a d e b a s e s d e d a t o s y e n le n g u a je s p a r a p r o c e s a ­
m i e n t o d e a r c h iv o s , c o m o A W K ( A h o , K e r n i g h a n y W e i n b e r g e r [ 1 9 7 9 ]). J a r v is
[1976] u tiliz ó e x p re s io n e s reg u la re s p a r a d e s c rib ir im p e rfe c c io n e s e n c irc u ito s i m ­
presos. C h e r r y [1982] u tiliz ó el a lg o r itm o d e c o n c o r d a n c ia d e p a la b r a s c lav e del e jer­
cicio 3.32 p a r a b u s c a r m a l le n g u a je e n m a n u s c rito s .
El a lg o ritm o d e c o n c o rd a n c ia d e p a tro n e s d e c a d e n a s d e los ejercicios 3.26 y 3.27
es o b r a d e K n u th , M o rris y P r a tt [1 9 7 7 ]. E ste a r tíc u lo ta m b ié n c o n tie n e u n b u e n
e s tu d io d e p e r io d o s d e n t r o d e c a d e n a s . O t r o a lg o r itm o e fic ie n te p a r a la c o n c o r d a n ­
c ia d e c a d e n a s fue in v e n ta d o p o r B o y er y M o o re [19 77], q u ie n e s d e m o s t r a r o n q u e
n o r m a l m e n t e se p u e d e d e t e r m i n a r la c o n c o r d a n c ia d e u n a s u b c a d e n a sin te n e r q u e
e x a m i n a r to d o s los c a ra c te re s d e la c a d e n a o b je to . L a d is p e rs ió n ta m b ié n h a resu l­
t a d o ser u n a té c n ic a efectiv a p a r a la c o n c o r d a n c ia d e p a tr o n e s d e c a d e n a s (H a r r is o n
[1971]).
E l c o n c e p to d e s u b s e c u e n c ia c o m ú n m á s la rg a a n a liz a d o e n el e jercicio 3 .3 4 h a
sid o u tiliz a d o e n el d is e ñ o d e l p r o g r a m a d i f f p a r a c o m p a r a c ió n d e a r c h iv o s del sis­
t e m a U N I X ( H u n t y M c llro y [1 9 7 6 ]). S e d e s c rib e e n H u n t y S z y m a n s k i [1 9 7 7 ] u n
a lg o ritm o p r á c tic o eficaz p a r a c a lc u la r s u b s e c u e n c ia s c o m u n e s m á s largas. El a lg o ­
r itm o p a r a c a lc u la r las d is ta n c ia s d e e d ic ió n m í n im a s del e jercicio 3 .3 5 es o b r a d e
W a g n e r y F is c h e r [1 974]. W a g n e r [1 9 7 4 ] in c lu y e u n a s o lu c ió n al e je rc ic io 3 .3 6 . El
tr a b a jo d e S a n k o f f y K r u s k a l [1 9 8 3 ] c o n tie n e u n e s tu d io f a s c in a n te d e la g r a n v arie­
d a d d e a p lic a c io n e s d e los a lg o ritm o s d e r e c o n o c im ie n to d e d is ta n c ia m ín im a , d e sd e
el e s tu d io d e p a tr o n e s e n s e c u e n c ia s g e n é tic a s h a s ta p r o b le m a s e n el p r o c e s a m ie n to
del le n g u a je h a b la d o .
|1 6 3 |

C A P IT U L O 4

Análisis
sintáctico

T o d o le n g u a je d e p r o g r a m a c ió n tie n e reglas q u e p r e s c rib e n la e s tr u c tu r a sin tá c tic a


d e p ro g r a m a s b ie n fo rm a d o s . E n P ascal, p o r e je m p lo , u n p r o g r a m a se c o m p o n e d e
b lo q u e s, u n b lo q u e d e p ro p o s ic io n e s , u n a p r o p o s ic ió n d e e x p re s io n e s , u n a e x p re sió n
d e c o m p o n e n te s léxicos, y a s í s u c e s iv a m e n te . S e p u e d e d e s c rib ir la s in ta x is d e las
c o n s tr u c c io n e s d e los le n g u a je s d e p r o g r a m a c ió n p o r m e d io d e g r a m á tic a s in d e p e n ­
d ie n te s d e l c o n te x to o n o ta c ió n B N F ( f o r m a d e B a c k u s -N a u r), q u e se in tr o d u jo en
la s e c c ió n 2 .2 . L as g r a m á tic a s o f r e c e n v e n ta ja s s ig n ific a tiv a s a lo s d is e ñ a d o r e s d e
le n g u a je s y a los e sc rito re s d e c o m p ila d o re s .

• U n a g r a m á tic a d a u n a e sp ecificació n s in tá c tic a p re c isa y fácil d e e n t e n d e r d e u n


le n g u a je d e p r o g ra m a c ió n .

• A p a r ti r d e a lg u n a s ciases d e g r a m á tic a s se p u e d e c o n s tr u i r a u t o m á t i c a m e n t e u n
a n a liz a d o r s in tá c tic o e fic ie n te q u e d e t e r m in e si u n p r o g r a m a f u e n te está sin tá c ­
ti c a m e n te b ie n f o r m a d o . O t r a v e n ta ja es q u e el p ro c e s o d e c o n s tr u c c ió n d e l a n a ­
liz a d o r s in tá c tic o p u e d e re v e la r a m b ig ü e d a d e s s in tá c tic a s y o tr a s c o n s tr u c c io n e s
difíciles d e a n a liz a r q u e d e o t r o m o d o p o d r ía n p a s a r sin d e te c ta r e n la fase in i­
cial d e d is e ñ o d e u n le n g u a je y d e su c o m p ila d o r.

• U n a g r a m á tic a d is e ñ a d a a d e c u a d a m e n t e im p a r te u n a e s tr u c tu r a a u n len g u aje


d e p r o g r a m a c ió n ú til p a r a la tr a d u c c ió n d e p r o g r a m a s f u e n te a c ó d ig o o b je to
c o r r e c to y p a r a la d e te c c ió n d e e rro re s . E x iste n h e r r a m ie n ta s p a r a c o n v e r tir d e s ­
c rip c io n e s d e tr a d u c c io n e s b a s a d a s e n g r a m á tic a s e n p r o g r a m a s o p e ra tiv o s .

• L o s le n g u a je s e v o lu c io n a n c o n el tie m p o , a d q u i r i e n d o n u e v a s c o n s tr u c c io n e s y
r e a liz a n d o ta re a s a d ic io n a le s. E sta s n u e v a s c o n s tr u c c io n e s se p u e d e n a ñ a d i r c o n
m á s facilid ad a u n le n g u a je c u a n d o ex iste u n a a p lic a c ió n b a s a d a e n u n a d e s c rip ­
c ió n g ra m a tic a l del len g u aje.

L a m a y o r p a r te d e este c a p itu lo e s tá d e d ic a d a a lo s m é to d o s d e a n á lis is s in tá c tic o


d e uso típ ic o e n c o m p ila d o re s . P r im e r o se in tr o d u c e n los c o n c e p to s b ásico s, d e s p u é s
las té c n ic a s a d e c u a d a s p a r a la a p lic a c ió n m a n u a l y, p o r ú ltim o , los a lg o r itm o s q u e
h a n s id o u tiliz a d o s e n h e r r a m i e n t a s a u t o m a t i z a d a s . C o m o lo s p r o g r a m a s p u e d e n
c o n t e n e r e rro re s sin tá c tic o s, se a m p lía n los m é to d o s d e a n á lis is s in tá c tic o p a r a q u e
se re c u p e r e n d e los e rro re s d e o c u r r e n c ia m á s frecu en te.
164 ANALISIS SINTA CTIC O

4.1 E L P A P E L D E L A N A L I Z A D O R S I N T A C T I C O

E n este m o d e lo d e c o m p ila d o r , el a n a liz a d o r s in tá c tic o o b tie n e u n a c a d e n a d e c o m ­


p o n e n te s léx ico s d e l a n a l i z a d o r lé x ico , c o m o se m u e s t r a e n la fig u ra 4 .1 , y c o m ­
p r u e b a si la c a d e n a p u e d a s e r g e n e r a d a p o r la g r a m á tic a del le n g u a je fu en te . S e s u ­
p o n e q u e el a n a liz a d o r s in tá c tic o in f o r m a r á d e c u a l q u ie r e r r o r d e s in ta x is d e m a n e r a
inteligible. T a m b ié n d e b e ría re c u p e ra rs e d e los e rro re s q u e o c u r r e n f r e c u e n te m e n te
p a r a p o d e r c o n t i n u a r p r o c e s a n d o el resto d e s u e n tr a d a .

c o m p o n e n te
lé x ic o
program a a n a liz a d o r m á rb o l d e r ep resen ta ció n
u n a liz a tlo r
■ . • • * « ^ r esto d e la
• •

fu en te lé x ico s in tá c tic o a n á lisis e ta p a inicial in te r m e d ia


o b te n e r
s in tá c tic o
s ig u ie n te
c o m p o n e n te lé x ic o

tab la de
s ím b o lo s

Fig. 4.1. Posición del analizad or sintáctico en el m o d e lo del co m p ilador.

E x isten tres tip o s g e n e ra le s d e a n a liz a d o r e s s in tá c tic o s p a r a g ra m á tic a s . L os m é ­


to d o s u n iv e rsa le s d e a n á lis is s in tá c tic o , c o m o el a lg o ritm o d e C o c k e -Y o u n g e r-K a -
s a m i y el d e E arley, p u e d e n a n a liz a r c u a lq u ie r g r a m á tic a (v é a n s e las n o ta s b ib lio g rá ­
ficas). E s to s m é to d o s , s in e m b a r g o , s o n d e m a s i a d o in e fic ie n te s p a r a u s a rlo s e n la
p ro d u c c ió n d e c o m p ila d o re s . L o s m é to d o s e m p le a d o s g e n e r a lm e n te e n los c o m p i­
la d o re s se clasifican c o m o d e s c e n d e n te s o a s c e n d e n te s . C o m o s u s n o m b r e s in d ic a n ,
lo s a n a liz a d o r e s s in tá c tic o s d e s c e n d e n t e s c o n s t r u y e n á r b o le s d e a n á lis is s in tá c tic o
d e sd e a r r ib a (la raíz) h a s ta a b a jo (las hojas), m ie n tr a s q u e los a n a liz a d o re s s in tá c ti­
c o s a s c e n d e n te s c o m ie n z a n e n las h o ja s y s u b e n h a c ia la raíz. E n a m b o s casos, se
e x a m in a la e n t r a d a al a n a liz a d o r s in tá c tic o d e iz q u ie r d a a d e re c h a , u n s ím b o lo a la
vez.
L o s m é to d o s d e s c e n d e n te s y a s c e n d e n te s m á s efic ien te s tr a b a ja n só lo c o n s u b ­
clases d e g ra m á tic a s , p e r o v a ria s d e e s ta s su b clases, c o m o las g r a m á tic a s L L y L R .
s o n lo s u f ic ie n te m e n te e x p r e s iv a s p a r a d e s c r ib i r la m a y o r í a d e la s c o n s tr u c c io n e s
s in tá c tic a s d e los le n g u a je s d e p r o g r a m a c ió n . L o s a n a liz a d o r e s s in tá c tic o s im p la n ­
ta d o s a m a n o a m e n u d o tr a b a ja n c o n g r a m á tic a s L L 1 ; p o r e je m p lo , el m é t o d o d e la
secció n 2.4 c o n s tr u y e a n a liz a d o r e s s in tá c tic o s p a r a g r a m á tic a s L L 1 . L o s a n a liz a d o ­
res s in tá c tic o s p a r a la clase m á s g r a n d e d e g r a m á tic a s L R se c o n s t r u y e n n o r m a l ­
m e n te c o n h e r r a m ie n ta s a u to m a tiz a d a s .
E n este c a p ítu lo se a s u m e q u e la salid a del a n a l iz a d o r s in tá c tic o es u n a re p re s e n ­
ta c ió n d e l á r b o l d e a n á lis is s in tá c tic o p a r a la c a d e n a d e c o m p o n e n t e s lé x ic o s p ro -
4.1 EL PAPEL DEL A N A L IZ A D O R SIN T A C T IC O 165

elucida p o r el a n a liz a d o r léxico. E n la p rá c tic a , h a y v a ria s ta re a s q u e se p u e d e n re a ­


liz a r d u r a n t e el a n á lis is s in tá c tic o , c o m o r e c o g e r i n f o r m a c i ó n s o b r e d i s t i n t o s
c o m p o n e n te s léxicos e n la ta b la d e s ím b o lo s, rea liz a r la v erific a c ió n d e tip o y o tra s
clases d e a n á lis is s e m á n tic o , y g e n e r a r c ó d ig o in te r m e d io c o m o e n el c a p ítu lo 2. Se
h a n a g r u p a d o to d a s estas a c tiv id a d e s e n la casilla d e “re s to d e la e ta p a in ic ia l" d e la
figura 4.1 y se a n a liz a r á c o n d e ta lle e n los tr e s c a p ítu lo s siguientes.
E n el resto d e esta secció n , se c o n s id e r a la n a tu ra le z a d e los e rro re s s in tá c tic o s y
las estrateg ias g e n e ra le s p a r a su re c u p e ra c ió n . D o s d e e s ta s estrateg ias, lla m a d a s re­
c u p e ra c ió n e n m o d o d e p á n ic o y a nivel d e frase, se e s tu d ia n c o n m á s d e ta lle j u n t o
c o n los m é to d o s d e a n álisis s in tá c tic o in d iv id u a le s. L a im p la n ta c ió n d e c a d a e s tra ­
tegia d e p e n d e del c rite rio d e l q u e e sc rib e el c o m p ila d o r , p e ro a q u í se d a r á n a lg u n a s
s u g e re n c ia s re sp e c to al m é to d o .

M a n e jo d e e r r o r e s sin tá c tic o s

Si u n c o m p i l a d o r tu v ie r a q u e p r o c e s a r s ó lo p r o g r a m a s c o r r e c to s , su d is e ñ o e i m ­
p la n ta c ió n se s im p lif ic a r ía n m u c h o . P e r o lo s p r o g r a m a d o r e s a m e n u d o e sc rib e n
p r o g r a m a s in c o r r e c to s , y u n b u e n c o m p i l a d o r d e b e r í a a y u d a r al p r o g r a m a d o r a
id e n tific a r y lo c aliz ar e rro re s . E s s o r p r e n d e n te q u e a u n q u e los e rro re s se a n ta n fre­
c u e n te s , p o c o s le n g u a je s h a n sid o d is e ñ a d o s te n ie n d o e n c u e n t a el m a n e jo d e e r r o ­
res. E sta civ ilizació n sería c o m p le ta m e n te d is tin ta si lo s le n g u a je s h a b la d o s ex ig ieran
t a n t a e x a c titu d s in tá c tic a c o m o los le n g u a je s d e p r o g ra m a c ió n . L a m a y o ría d e las
esp ecificacio n es d e lo s le n g u a je s d e p r o g r a m a c ió n n o d e s c rib e n c ó m o d e b e re s p o n ­
d e r u n c o m p ila d o r a los e rro re s: la r e s p u e s ta se d e ja al d is e ñ a d o r d e l c o m p ila d o r .
C o n s id e r a r d e s d e el p r in c ip io el m a n e jo d e e rro re s p u e d e s im p lific a r la e s tr u c tu r a d e
u n c o m p ila d o r y m e jo r a r s u r e s p u e s ta a los erro res.
Se sa b e q u e los p r o g r a m a s p u e d e n c o n t e n e r e r r o r e s d e m u y d iv e r s o tip o . P o r
e je m p lo . los e rro re s p u e d e n ser:

• léxicos, c o m o e s c rib ir m al u n id e n tific a d o r. p a la b r a c lav e u o p e r a d o r


• sin tá c tic o s, c o m o u n a e x p re s ió n a r itm é tic a c o n p a ré n te sis n o e q u ilib ra d o s
• se m á n tic o s , c o m o u n o p e r a d o r a p lic a d o a u n o p e r a n d o in c o m p a tib le
• lógicos, c o m o u n a lla m a d a in f in ita m e n te re c u rsiv a

A m e n u d o , g ra n p a rte d e la d e te c c ió n y re c u p e ra c ió n d e e rro re s e n u n c o m p ila ­


d o r se c e n tr a en la fase d e a n álisis s in tá c tic o . U n a ra z ó n es q u e m u c h o s e rro re s son
d e n a tu ra le z a s in tá c tic a o se m a n if ie s ta n c u a n d o la c a d e n a d e c o m p o n e n te s léxicos
q u e p ro v ie n e del a n a liz a d o r léxico d e s o b e d e c e las reglas g ra m a tic a le s q u e d e fin e n al
le n g u a je d e p r o g r a m a c ió n . O t r a ra z ó n es la p recisió n d e los m é to d o s m o d e r n o s de
a n álisis sin tá c tic o s, q u e p u e d e n d e te c ta r la p re s e n c ia d e e rro re s d e n t r o d e los p ro g ra ­
m a s d e u n a fo rm a m u y efic ien te . I,a d e te c c ió n e x a c ta d e la p re s e n c ia d e e rro re s se­
m á n tic o s y lógicos e n el m o m e n t o d e la c o m p ila c ió n es m u c h o m á s difícil. E n esta
secció n se p re s e n ta n a lg u n a s té c n ic a s b á sic a s p a r a re c u p e ra rs e d e e rro re s sin tá c tic o s;
en este c a p ítu lo se e s tu d ia su im p la n ta c ió n j u n t o c o n los m é to d o s d e a n á lis is s in tá c ­
tico.
El m a n e ja d o r d e e rro re s e n u n a n a liz a d o r s in tá c tic o tie n e o b je tiv o s fáciles d e es­
tablecer:
166 A N A LISIS SINTA CTIC O

• D e b e in f o r m a r d e la p re se n c ia d e e rro re s c o n c la rid a d y e x a c titu d .

• Se d e b e r e c u p e r a r d e c a d a e r r o r c o n la s u fic ie n te r a p id e z c o m o p a r a d e te c ta r
e rro re s posterio res.

• N o d e b e re tra s a r d e m a n e r a sig n ificativ a el p r o c e s a m ie n to d e p r o g r a m a s c o rre c ­


tos.

La re a liz a c ió n e fe c tiv a d e e s to s o b je tiv o s p la n te a d esafío s im p o rta n te s .


A f o r tu n a d a m e n te , lo s e rro re s m á s c o m u n e s s o n sim p le s y a m e n u d o b a s ta c o n
u n m e c a n is m o sencillo d e m a n e jo d e erro res. S in e m b a rg o , e n alg u n o s casos u n e rro r
p u d o h a b e r o c u r r id o m u c h o a n te s d e la p o sic ió n en q u e se d e te c tó su p re se n c ia , y
p u e d e s e r m u y difícil d e d u c i r la n a tu ra le z a p recisa de! e rro r. E n los c aso s d ifíciles, el
m a n e ja d o r d e e rro re s q u iz á te n g a q u e a d iv in a r q u é te n ía en m e n te el p r o g r a m a d o r
c u a n d o e sc rib ió el p ro g ra m a .
V ario s m é to d o s d e a n álisis s in tá c tic o , c o m o los m é to d o s L L y L R . d e te c ta n un
e r r o r lo a n te s posible. Es d ecir, tie n e n la propiedad d e l prefijo viable , lo c u a l q u ie re
d e c ir q u e d e te c ta n la p re se n c ia d e un e r r o r n a d a m á s ver u n p re fijo d e la e n tr a d a
q u e n o es p re fijo d e n in g u n a c a d e n a del lenguaje.

E jem p lo 4 .1 . P a ra c o m p r o b a r la clase d e e rro re s q u e o c u r r e n en la p rá c tic a , se e x a ­


m in a n los e r r o r e s q u e R ip le y y D r u s e ik is [1 9 7 8 ] e n c o n t r a r o n e n u n a m u e s t r a d e
p r o g r a m a s e n P a sc a l r e a liz a d o s p o r e s tu d ia n te s .
D e sc u b rie ro n q u e los e rro re s n o o c u rre n ta n fre c u e n te m e n te ; el 6 0 p o r 100 de
los p r o g r a m a s c o m p ila d o s e ra c o r r e c to s in tá c tic a y s e m á n t ic a m e n te . A u n c u a n d o
h ab ía erro res, ésto s e s ta b a n b a s ta n te d isp erso s: el 8 0 p o r 100 d e las p ro p o s ic io n e s
c o n e rro re s só lo te n ía u n e rro r, y el 13 p o r 100. d os. P o r ú ltim o , la m a y o ría e ra n
e rro re s triviales: el 9 0 p o r 100 e r a n e rro re s d e u n c o m p o n e n te léxico.
M u c h o s d e los e rro re s se p o d ría n clasificar s im p le m e n te : 6 0 p o r 100 e r a n erro res
d e p u n tu a c ió n , el 2 0 p o r 100 e r a n e rro re s d e o p e r a d o r y o p e r a n d o , el 15 p o r 100,
e rro re s d e p a la b ra s clave, y el re s ta n te 5 p o r 100, d e o tr a s clases. L a m a y o ría d e los
e rro re s d e p u n tu a c ió n g ira b a a lre d e d o r del u s o in c o rre c to del p u n t o y c o m a .
C o m o e je m p lo c o n c r e to , c o n s id é re s e el sig u ie n te p r o g r a m a e n Pascal.

(1) p ro g ram im p m a x (in p u t, o u tp u t);


(2) var
(3) x, y: in te g e r;

(4) fu n c tio n m a x (i: i n t e g e r ; j : i n t e g e r ) : in te g e r;


(5) ( d e v u e l v e e l m á x im o d e l o s e n t e r o s i y j}
(6 ) b e g in
(7 ) i f i > j t h e n m ax : = i
(8 ) e l s e m ax : = j
(9) end;

(1 0 ) b e g in
( 11) re a d ln ( x , y ) ;
(1 2 ) w rite ln (max(x,y))
( 13) end.
4.1 EL PAPEL D E L A N A L IZ A D O R SIN T A C T IC O 167

U n e r r o r d e p u n tu a c ió n f r e c u e n te e s u s a r u n a c o m a e n lu g a r del p u n t o y c o m a en
la lista d e a r g u m e n to s d e u n a d e c la r a c ió n d e f u n c ió n ( p o r e je m p lo , u s a r u n a c o m a
e n lu g a r del p r im e r p u n t o y c o m a e n la lín e a (4)): o t r o e s n o p o n e r u n p u n t o y c o m a
o b lig a to rio al fin al d e u n a lín ea ( p o r e je m p lo , el p u n t o y c o m a d e l final d e la línea
(4)); o t r o e s p o n e r u n p u n t o y c o m a in d e b id o al final d e u n a lin ea a n te s d e u n e l s e
( p o r e je m p lo , p o n e r u n p u n t o y c o m a al final d e la lín e a (7)).
T a l v ez lo s e rro re s d e p u n t o y c o m a s o n ta n c o m u n e s p o r q u e el u s o d e l p u n t o y
c o m a v a ría m u c h o d e u n le n g u a je a o tr o . E n P ascal, u n p u n t o y c o m a e s u n se p a ­
r a d o r d e p ro p o s ic io n e s; e n P L / I y e n C . te r m in a u n a p ro p o s ic ió n . A lg u n o s e stu d io s
h a n s u g e rid o q u e este ú lt im o u s o es m e n o s p r o p e n s o a e rro re s ( G a n n o n y H o r n in g
[1975]).
U n e je m p lo típ ic o d e u n e r r o r d e o p e r a d o r es n o p o n e r los d o s p u n to s e n := .
L o s e rro re s d e e s c ritu ra d e las p a la b r a s c lav e son b a s ta n te raro s, p e ro u n e je m p lo
ilu stra tiv o e s o lv id a r la i en w r i t e l n .
M u c h o s c o m p ila d o r e s d e P ascal n o tie n e n d ific u lta d e s p a r a m a n e ja r e rro re s c o ­
m u n e s d e in s e rc ió n , b o r r a d o y m u ta c ió n . D e h e c h o , v a rio s c o m p ila d o r e s d e Pascal
c o m p ila r á n c o r r e c ta m e n te el p r o g r a m a a n te r io r c o n u n e r r o r c o m ú n d e p u n tu a c ió n
o d e o p e r a d o r , e m itir á n só lo u n d ia g n ó s tic o d e a d v e rte n c ia , s e ñ a la n d o la c o n s tr u c ­
c ió n e rró n e a .
S in e m b a r g o , h a y o t r a c la s e h a b i t u a l d e e r r o r m u c h o m á s d if íc il d e r e p a r a r
c o r r e c ta m e n te : n o p o n e r u n b e g i n o u n e n d ( p o r e je m p lo , la o m is ió n d e la línea
(9)). L a m a y o ría d e los c o m p ila d o r e s n o in te n ta r ía r e p a r a r esta clase d e erro r.

¿ C ó m o d e b e in f o r m a r u n m a n e j a d o r d e e rro re s d e la p re s e n c ia d e u n e rro r? Al
m e n o s d e b e i n f o r m a r del lu g a r e n el p r o g r a m a f u e n te d o n d e se d e te c ta el e rro r, p o r ­
q u e es m u y p r o b a b le q u e el e r r o r re a l se h a y a p r o d u c id o e n a lg u n o d e lo s c o m p o ­
n e n te s léxicos a n te rio re s . U n a e stra te g ia c o m ú n e m p le a d a p o r m u c h o s c o m p ila d o ­
res es im p r im ir la lín ea e r r ó n e a c o n u n a p u n t a d o r a la p o sic ió n d o n d e se d e te c ta el
e rro r. Si h a y u n a p o sib ilid a d ra z o n a b le d e s a b e r c u á l es re a lm e n te el e rro r, ta m b ié n
se in clu y e u n m e n sa je d e d ia g n ó stic o in fo rm a tiv o y co m p re n sib le ; p o r e je m p lo , “ falta
p u n t o y c o m a e n esta p o s ic ió n " .
U n a vez d e t e c t a d o el e r r o r , ¿ c ó m o se d e b e r e c u p e r a r el a n a l iz a d o r s in tá c tic o ?
C o m o se v e rá , e x iste n v a r ia s e s tr a te g ia s g e n e ra le s , p e r o n in g ú n m é t o d o e s c l a r a ­
m e n te s u p e rio r. E n la m a y o ría d e los casos, n o es a d e c u a d o q u e el a n a liz a d o r s in ­
tá c tic o a b a n d o n e d e s p u é s d e d e te c ta r el p r i m e r erro r, p o r q u e el p o s te rio r p ro c e s a ­
m i e n to d e la e n tr a d a p o d r ía re v e la r m á s e rro re s . N o r m a lm e n te , hay a lg u n a fo rm a
d e re c u p e ra c ió n del e r r o r d o n d e el a n a liz a d o r s in tá c tic o in te n ta v o lv e r él m is m o a
u n e s ta d o e n el q u e el p r o c e s a m ie n to d e la e n t r a d a p u e d a c o n t i n u a r c o n u n a e sp e ­
ra n z a ra z o n a b le d e q u e se h a r á el a n álisis d e la e n t r a d a c o r r e c ta o d e q u e será m a ­
n e ja d a c o r r e c ta m e n te p o r el c o m p ila d o r.
U n a re c u p e ra c ió n in a d e c u a d a p u e d e in t r o d u c ir u n a a v a la n c h a a b r u m a d o r a d e
e r r o r e s “ e s p u r io s " , n o c o m e t i d o s p o r el p r o g r a m a d o r , s i n o i n t r o d u c i d o s p o r los
c a m b io s h e c h o s al e s ta d o del a n a liz a d o r s in tá c tic o d u r a n t e la re c u p e ra c ió n d e l erro r.
D e fo rm a s im ila r, la re c u p e ra c ió n del e r r o r s in tá c tic o p u e d e in tr o d u c ir e rro re s se­
m á n tic o s e s p u rio s q u e m á s ta rd e d e te c ta r á n las fases d e a n álisis s e m á n tic o o d e ge­
n e ra c ió n d e cód igo . P o r e je m p lo , al re c u p e r a r s e d e u n e rro r, el a n a liz a d o r s in tá c tic o
168 A N A LISIS SINTACTICO

p u e d e h a b e r o m i tid o u n a d e c la ra c ió n d e a lg u n a v a ria b le , p o r e je m p lo z a p . C u a n d o
lu e g o se e n c u e n t r a z a p e n e x p re s io n e s , n a d a e s s in tá c tic a m e n t e in c o rr e c to , p e ro
c o m o n o h a y u n a e n t r a d a e n la ta b la d e s ím b o lo s p a r a z a p , se g e n e ra el m e n sa je
“ z a p in d e fin id a ” .
U n a estrateg ia c o n s e r v a d o r a p a r a u n c o m p ila d o r e s in h ib ir los m e n s a je s d e e rro r
q u e p ro v e n g a n d e e rro re s d e s c u b ie rto s d e m a s i a d o cerc a u n o s d e o tr o s e n la c a d e n a
d e e n tra d a . D esp u és d e d e sc u b rir u n e r r o r sin táctico, el c o m p ila d o r p o d ría exigir q u e
v ario s c o m p o n e n te s léxicos se a n a liz a r á n s in tá c tic a m e n te c o n é x ito a n te s d e p e r m i­
ti r o t r o m e n sa je d e e rro r. E n a lg u n o s c a so s, p u e d e h a b e r d e m a s ia d o s e rro re s c o m o
p a r a q u e el c o m p ila d o r c o n t i n ú e u n p r o c e s a m ie n to ra z o n a b le . ( P o r e je m p lo , ¿ c ó m o
d e b e r e s p o n d e r u n c o m p ila d o r d e P ascal a u n p r o g r a m a e n F O R T R A N c o m o e n ­
tra d a ? ) P arece q u e u n a estrateg ia d e re c u p e ra c ió n d e e rro re s tie n e q u e s e r u n c o m ­
p r o m is o c u id a d o s a m e n te c o n s id e ra d o , te n ie n d o e n c u e n t a las clases d e e rro re s q u e
se p u e d e n p r e s e n ta r y q u e se a n d e p r o c e s a m ie n to ra z o n a b le .
C o m o ya se h a m e n c i o n a d o , a lg u n o s c o m p ila d o r e s in t e n t a n r e p a r a r el e rro r,
p ro ceso e n el c u a l el c o m p ila d o r i n t e n ta a d iv in a r lo q u e p r e te n d ía e scrib ir el p r o g r a ­
m a d o r. El c o m p ila d o r d e P L /C ( C o n w a y y W ilc o x [1 9 7 3 ]) es u n e je m p lo d e este
tip o d e c o m p ila d o r . E x c e p to ta l vez e n u n e n t o r n o d e p ro g r a m a s c o r to s e sc rito s p o r
e s tu d ia n te s in e x p e rto s , n o es p r o b a b le q u e la re c u p e ra c ió n c o m p le ta d e los e rro re s
sea re n ta b le . D e h e c h o , c o n la im p o r ta n c ia c re c ie n te d e la in f o r m á tic a in te r a c tiv a y
los b u e n o s e n t o r n o s d e p r o g r a m a c ió n , la te n d e n c ia p a r e c e s e r h a c ia m e c a n is m o s
sen cillo s d e re c u p e ra c ió n d e erro res.

E s tr a te g ia s d e re c u p e ra c ió n d e e rro re s

H a y m u c h a s e stra te g ia s g e n e ra le s d is tin ta s q u e p u e d e e m p le a r un a n a liz a d o r sin tá c ­


tic o p a r a re c u p e ra rs e d e u n e r r o r s in tá c tic o . A u n q u e n in g u n a d e ellas h a d e m o s tr a d o
s e r d e a c e p ta c ió n u n iv e rsa l, a lg u n o s m é to d o s tie n e n u n a a m p lia a p lic a b ilid a d . A q u í
se in tr o d u c e n la s sig u ie n te s estrategias:
• en m o d o d e p á n ic o
• a nivel d e frase
• de p ro d u c c io n e s d e e rro r
• d e c o rre c c ió n global

Recuperación en m o d o d e pánico. E ste es el m é to d o m á s se n c illo d e im p la n ta r


y p u e d e n u tiliz a rlo la m a y o r ía d e los m é to d o s d e a n álisis s in tá c tic o . Al d e s c u b r ir un
erro r, el a n a liz a d o r s in tá c tic o d e s e c h a s ím b o lo s d e e n t r a d a , d e u n o e n u n o , h asta
q u e e n c u e n t r a u n o p e rte n e c ie n te a u n c o n j u n t o d e s ig n a d o d e c o m p o n e n te s léxicos
d e s in c ro n iz a c ió n . E stos c o m p o n e n te s léx ico s d e s in c ro n iz a c ió n s o n g e n e ra lm e n te
d e lim ita d o re s , c o m o el p u n t o y c o m a o la p a la b r a c lav e en d . c u y o p a p e l e n el p ro ­
g ra m a fu e n te está c laro . E s e v id e n te q u e q u ie n d is e ñ a el c o m p ila d o r d e b e seleccio­
n a r los c o m p o n e n te s léxicos d e s in c ro n iz a c ió n a d e c u a d o s p a r a el le n g u a je fu en te .
A u n q u e la c o r r e c c ió n e n m o d o d e p á n i c o a m e n u d o o m i t e u n a c a n t i d a d c o n s id e ­
rab le d e e n t r a d a sin c o m p r o b a r la e x iste n c ia d e e rro re s a d ic io n a le s, tie n e la v e n ta ja
d e la sencillez y, a d ife re n c ia d e o tr o s m é to d o s c o n s id e r a d o s m á s a d e la n te , está g a­
r a n tiz a d o c o n t r a la zo s in fin ito s. E n s itu a c io n e s e n d o n d e s o n ra ro s los e r r o r e s m ú l ­
tiples e n la m is m a p ro p o s ic ió n , este m é to d o p u e d e re s u lta r b a s ta n te a d e c u a d o .
4.2 G RAM ATICAS IN D EPENDIENTES DEL C O N T E X T O 169

Recuperación a nivel d e frase. Al d e s c u b r ir u n e rro r, el a n a liz a d o r s in tá c tic o


p u e d e re a liz a r u n a c o r re c c ió n local d e la e n t r a d a re s ta n te ; es d ecir, p u e d e s u s titu ir
u n p re fijo d e la e n t r a d a r e s ta n te p o r a lg u n a c a d e n a q u e p e r m i ta c o n t i n u a r al a n a li­
z a d o r s in tá c tic o . U n a c o r re c c ió n local típ ic a sería s u s titu ir u n a c o m a p o r u n p u n to
y c o m a , s u p r im ir u n p u n t o y c o m a s o b r a n te , o in s e r ta r u n p u n t o y c o m a q u e falta.
L a e le c c ió n d e la c o r re c c ió n local c o r r e s p o n d e al d is e ñ a d o r del c o m p ila d o r . P o r s u ­
p u esto , se d e b e te n e r c u i d a d o d e eleg ir s u s titu c io n e s q u e n o c o n d u z c a n a la zo s in fi­
nitos, c o m o sería el c a s o , p o r e je m p lo , si s ie m p re se in s e rta ra a lg o e n la e n t r a d a p o r
d e la n te d e l s ím b o lo d e e n t r a d a e n c u rso .
E ste ti p o d e s u s titu c ió n p u e d e c o r r e g ir c u a l q u i e r c a d e n a d e e n t r a d a y h a sid o
e m p le a d o e n v a rio s c o m p ila d o r e s q u e c o rrig e n los e rro re s . El m é t o d o se u s ó p o r p ri­
m e r a vez e n el a n álisis s in tá c tic o d e s c e n d e n te . S u p rin c ip a l d e s v e n ta ja es su d ific u l­
ta d p a r a a f r o n t a r s itu a c io n e s en q u e el e r r o r real se p r o d u jo a n te s del p u n t o d e d e ­
te cció n .
Producciones d e error . Si se tie n e u n a b u e n a id e a d e los e rro re s c o m u n e s q u e
p u e d e n e n c o n tr a r s e , se p u e d e a u m e n t a r la g r a m á tic a del le n g u a je c o n p ro d u c c io n e s
q u e g e n e re n la s c o n s tr u c c io n e s e rró n e a s . E n to n c e s se u s a esta g r a m á tic a a u m e n t a d a
c o n las p ro d u c c io n e s d e e r r o r p a r a c o n s tr u i r el a n a liz a d o r s in tá c tic o . Si el a n a liz a d o r
s in tá c tic o u s a u n a p r o d u c c i ó n d e e r r o r , s e p u e d e n g e n e r a r d ia g n ó s t i c o s d e e r r o r
a p r o p ia d o s p a ra in d ic a r la c o n s tr u c c ió n e r r ó n e a re c o n o c id a e n la e n tra d a .
Corrección global. Id e a lm e n te , seria d e se a b le q u e u n c o m p ila d o r h ic ie ra el m í­
n im o d e c a m b io s p o sibles al p r o c e s a r u n a c a d e n a d e e n t r a d a in c o rre c ta . E x isten a l­
g o r itm o s p a r a elegir u n a s e c u e n c ia m í n i m a d e c a m b io s p a r a o b te n e r u n a c o rre c c ió n
global d e m e n o r c o sto . D a d a u n a c a d e n a d e e n t r a d a in c o rr e c ta x y la g r a m á tic a G.
e s to s a lg o ritm o s e n c o n tr a r á n u n á rb o l d e a n á lis is s in tá c tic o p a r a u n a c a d e n a re la c io ­
n a d a y , ta l q u e el n ú m e r o d e in se rc io n e s, s u p re s io n e s y m o d ific a c io n e s d e c o m p o ­
n e n te s léx ico s n e c e s a rio p a r a t r a n s f o r m a r x e n y sea el m í n i m o p o sib le. P o r d esg ra­
cia, la im p la n ta c ió n d e e s to s m é to d o s es e n g e n e ra l d e m a s ia d o c o s to s a e n té rm in o s
d e ti e m p o y esp acio , a s í q u e e s ta s té c n ic a s e n la a c tu a lid a d só lo s o n d e in te ré s te ó ­
rico.
S e d e b e s e ñ a la r q u e u n p r o g r a m a c o r r e c to m á s p a r e c id o al o rig in a l p u e d e n o ser
lo q u e el p r o g r a m a d o r te n ía e n m e n te . S in e m b a rg o , la n o c ió n d e co rrecció n d e costo
m í n i m o p r o p o r c io n a u n a escala p a r a e v a lu a r las té c n ic a s d e re c u p e ra c ió n d e e rro re s ,
y se h a u s a d o p a r a e n c o n t r a r c a d e n a s d e s u s titu c ió n ó p ti m a s p a r a la re c u p e ra c ió n a
nivel d e frase.

4 .2 G R A M A T I C A S I N D E P E N D I E N T E S D E L C O N T E X T O

M u c h a s c o n s tr u c c io n e s d e los le n g u a je s d e p r o g r a m a c ió n tie n e n u n a e s tr u c tu r a in ­
h e re n te m e n te recu rsiva q u e se p u e d e d e fin ir m e d ia n te g ra m á tic a s in d e p e n d ie n te s del
c o n te x to . P o r e je m p lo , se p u e d e te n e r u n a p ro p o s ic ió n c o n d ic io n a l d e f in id a p o r u n a
regla c o m o

Si S i y S 2 s o n p ro p o s ic io n e s y E e s u n a e x p re s ió n , e n to n c e s

“if E th e n S \ e ls e S { ' e s u n a p ro p o s ic ió n . (4.1)


170 ANALISIS SIN T A C T IC O

N o se p u e d e e s p e c ific a r esta fo rm a d e p ro p o s ic ió n c o n d ic io n a l u s a n d o la n o ta c ió n
d e las e x p re s io n e s reg u lares; e n el c a p ítu lo 3 se vio q u e las e x p re s io n e s reg u la re s p u e ­
d e n esp ecificar la e s tr u c tu r a lex ico g ráfica d e los c o m p o n e n te s léxicos. P o r o t r o lado,
u tiliz an d o la v a ria b le sin tá ctic a prop p a ra d e n o t a r la clase d e las p ro p o s ic io n e s y expr
p a r a la clase d e las ex p resio n es, y a se p u e d e e x p r e s a r (4.1) u s a n d o la p r o d u c c ió n gra­
m atical

prop —> if ex p r th e n prop e ls e prop (4.2)

E n esta secció n se revisa la d e fin ic ió n d e u n a g r a m á tic a in d e p e n d ie n te del c o n ­


te x to y se in tr o d u c e te rm in o lo g ía p a r a el a n álisis s in tá c tic o . S eg ún la se c c ió n 2.2,
u n a g ra m á tic a in d e p e n d ie n te d e l c o n te x to (g ra m á tic a , p o r b re v e d a d ) c o n s ta d e te r ­
m in ales. n o te rm in a le s , u n s ím b o lo inicial y p ro d u c c io n e s .

1. Los te rm in a le s s o n los s ím b o lo s b ásico s c o n q u e se f o r m a n las c a d e n a s . “C o m ­


p o n e n te léxico " es u n s in ó n im o d e “te r m in a l” c u a n d o se tra ta d e g ra m á tic a s p a ra
len g u ajes d e p r o g r a m a c ió n . E n (4 .2 ), c a d a u n a d e las p a la b r a s c lav e if. t h e n y
e lse es u n te rm in a l.

2. Los n o te rm in a le s s o n v aria b les s in tá c tic a s q u e d e n o t a n c o n j u n t o s d e c a d e n a s.


E n (4 .2 ), prop y ex p r son n o te rm in a le s . L o s n o te r m in a le s d e fin e n c o n j u n to s
d e c a d e n a s q u e a y u d a n a d e f in i r el le n g u a je g e n e r a d o p o r la g r a m á tic a . T a m ­
b ié n i m p o n e n u n a e s tr u c tu r a je r á r q u i c a s o b re el le n g u a je q u e es útil t a n t o p a ra
el a n álisis s in tá c tic o c o m o p a r a la tra d u c c ió n .

3. E n u n a g ra m á tic a , u n n o te rm in a l es c o n s id e r a d o c o m o el s ím b o lo in icial, y el
c o n j u n t o d e c a d e n a s q u e r e p re s e n ta e s el le n g u a je d e f in id o p o r la g ra m á tic a .

4. L as p ro d u c c io n e s d e u n a g r a m á tic a esp ecifican c ó m o se p u e d e n c o m b i n a r los


te rm in a le s y los n o te rm in a le s p a r a f o r m a r c a d e n a s. C a d a p r o d u c c ió n c o n s ta d e
u n n o te rm in a l, seg u id o p o r u n a flech a (a veces se u s a el s ím b o lo , e n lu g a r
d e la flecha), s e g u id a p o r u n a c a d e n a d e n o te rm in a le s y te rm in a le s .

E je m p lo 4 .2 . L a g r a m á tic a c o n las sig u ie n te s p ro d u c c io n e s d e fin e e x p re s io n e s a r i t ­


m é tic a s sim ples.

ex p r - » ex p r op expr
expr —►( e x p r )
ex p r -> - expr
ex p r - » id
op -» +
op -
op -> *
op -* /
Op -> t

E n esta g ra m á tic a , los s ím b o lo s te r m in a le s son

id + - */ T()

L o s s ím b o lo s n o te rm in a le s s o n e x p r y op, y e x p r e s el s ím b o lo inicial. □
4.2 G R A M A T IC A S IN D E PE N D IE N T E S D EL C O N T E X T O 171

C o n v e n c io n e s d e n o ta ció n

P a r a e v ita r te n e r q u e e s ta b le c e r s ie m p re q u e “ esto s s o n los term inales*', “e s to s son


los n o te rm in a le s ” , e tc é te ra , a p a r tir d e a h o r a se e m p le a r á n las sig u ie n te s c o n v e n c io ­
n e s d e n o ta c ió n c o n re s p e c to a las g ra m á tic a s.

1. E stos s ím b o lo s son te rm in a le s:

a) L as p r im e r a s letras m in ú s c u la s del a lfa b e to , c o m o a. b . c.


b) L o s s ím b o lo s d e o p e r a d o r , c o m o + . etcétera.
c ) L os s ím b o lo s d e p u n tu a c ió n , c o m o p arén tesis, c o m a , etcétera.
d ) Los d íg ito s 0 , 1........... 9.
e) C a d e n a s e n n e g rita s, c o m o id o if.

2. E sto s s ím b o lo s s o n n o te rm in a le s:

a ) Las p r im e r a s le tra s m a y ú s c u la s del a lfa b e to , c o m o A. li, C.


b) La le tra S . q u e c u a n d o a p a re c e su ele s e r el s ím b o lo inicial.
c ) L o s n o m b r e s e n c u rs iv a s m in ú s c u la s , c o m o expr o prop.

3. L as ú ltim a s le tra s m a y ú s c u la s del a lfa b e to , c o m o X. Y. / . re p re s e n ta n sím bolos


gram aticales . es d ecir, te r m in a le s o n o te rm in ales.

4. L as ú lt im a s le tra s m in ú s c u la s del a lfa b e to , p r in c ip a lm e n te u. v z. re p re s e n ­


ta n c a d e n a s d e te rm in ales.

5. L as letras griegas m in ú s c u la s , a . (3, y, p o r e je m p lo , re p re s e n ta n c a d e n a s d e s ím ­


b o lo s g ra m a tic a le s. P o r ta n to , u n a p ro d u c c ió n g e n é ric a p o d ría escrib irse A -* a.
in d ic a n d o q u e h a y u n so lo n o te rm in a l A a la iz q u ie rd a d e la flecha (el lado iz ­
quierdo d e la p ro d u c c ió n ) y u n a c a d e n a d e s ím b o lo s g ra m a tic a le s a a la d e r e c h a
d e la flecha (el lado derecho d e la p ro d u c c ió n ).

6. Si A - » a , . A - > a 2 I -* ai son to d a s p ro d u ccio n es c o n A a la izq uierd a (se


les llam a producciones de A ), se pued e escribir ,^1 —> a i | a? | . . . | a*. a t. Gb a*
se d e n o m in a n alternativas d e A.
7. A m e n o s q u e se d ig a o t r a co sa, el la d o iz q u ie r d o d e la p r im e r a p ro d u c c ió n e s el
s ím b o lo inicial.

E je m p lo 4 .3 . U s a n d o estas a b re v ia tu ra s , se p o d r ía e scrib ir e n fo rm a c o n c isa la g ra ­


m á tic a del e je m p lo 4 .2 c o m o

E-+EA E\[E) \- E|id

L as c o n v e n c io n e s d e n o ta c ió n in d ic a n q u e E y A son n o te rm in a le s , c o n E c o m o
s ím b o lo in icial. El resto d e los s ím b o lo s s o n te rm in a le s . □

D e r iv a c io n e s

H a y v arias f o r m a s d e c o n s id e r a r el p ro c e s o m e d ia n te el c u a l u n a g r a m á tic a d efin e


u n len g u aje. E n la secció n 2.2 se c o n s id e r ó este p r o c e s o c o m o el d e c o n s tr u c c ió n de
á rb o le s d e a n á lis is s in tá c tic o , p e r o e x iste ta m b ié n u n a v isió n d e riv a tiv a re la c io n a d a
q u e su ele r e s u lta r ú til. D e h e c h o , esta v isió n d e riv a tiv a d a u n a d e sc rip c ió n precisa
172 ANALISIS SIN T A C T IC O

d e la c o n s tr u c c ió n d e s c e n d e n te d e u n á rb o l d e a n á lis is s in tá c tic o . L a id e a c e n tra l es


q u e se c o n s id e r a u n a p ro d u c c ió n c o m o u n a regla d e re e sc ritu ra , d o n d e el n o t e r m i ­
nal d e la iz q u ie r d a es s u s titu id o p o r la c a d e n a d e l la d o d e r e c h o d e la p ro d u c c ió n .
P o r e je m p lo , c o n s id é r e s e la s ig u ie n te g r a m á t i c a p a r a e x p r e s io n e s a r itm é tic a s ,
d o n d e el n o te rm in a l E re p r e s e n ta u n a ex p re sió n .

E -> E + E \ E + E \ { E ) \ - E |id (4.3)

L a p ro d u c c ió n E - » - E sig n ifica q u e u n a e x p re sió n p re c e d id a p o r u n sig n o m e n o s


es ta m b ié n u n a e x p re s ió n . E sta p ro d u c c ió n se p u e d e u s a r p a r a g e n e ra r e x p re sio n e s
m á s c o m p le ja s a p a r tir d e e x p re s io n e s m á s s im p le s p e r m i tie n d o s u s titu ir c u a lq u ie r
p re s e n c ia d e E p o r - E. E n el c a s o m á s sim p le, se p u e d e s u s titu ir u n a so la E p o r
- E. S e p u e d e d e s c rib ir esta a c c ió n e s c rib ie n d o

E => - E

q u e se lee ”E d e r iv a - E ”. L a p ro d u c c ió n E - » ( / ; ) esta b le c e q u e ta m b ié n se p o d ria


s u s titu ir u n a p re s e n c ia d e u n a E e n c u a lq u ie r c a d e n a d e s ím b o lo s g ra m a tic a le s p o r
( £ ) ; p o r e je m p lo . E * E => ( E )* E o E * E => F*{E).
Se p u e d e t o m a r u n a so la E y a p lic a r r e p e tid a m e n te p ro d u c c io n e s en c u a lq u ie r
o r d e n p a r a o b te n e r u n a s e c u e n c ia d e s u s titu c io n e s . P o r e je m p lo .

E => - E => - ( £ ) = > - ( i d )


A d ic h a s e c u e n c ia d e s u s titu c io n e s se le lla m a derivación d e —(id) a p a r tir d e E . E sta
d e riv a c ió n p r o p o r c io n a u n a p r u e b a d e q u e u n c a s o d e t e r m i n a d o d e u n a ex p resió n
es la c a d e n a —(id).
D e f o r m a m á s a b s tra c ta , se d ic e q u e a.Tp => ay¡5 si A - » y es u n a p ro d u c c ió n y
a y p son c a d e n a s a r b itr a r ia s d e s ím b o lo s g ra m a tic a le s . Si a i => a i => . . . => a„. se
d ic e q u e a i deriva a u„. El s ím b o lo => sig n ifica “d e r iv a e n u n p a s o " . A m e n u d o se
d e s e a d e c ir “d e r iv a e n c e r o o m á s p a s o s ” . P a r a este p r o p ó s ito se p u e d e u s a r el
s im b o lo = > . Asi:

1. a = > a p a r a c u a lq u ie r c a d e n a a . y
2. Si a => p y p => y. e n to n c e s a => y.

D el m i s m o m o d o se p u e d e u s a r => p a r a e x p r e s a r " d e riv a e n u n o o m á s p a s o s ” .


D a d a u n a g ra m á tic a G c o n s ím b o lo in ic ia l S , se p u e d e u tiliz a r la re la c ió n =>
p a r a def i ni r L ( G \ el lenguaje generado p o r G. L as c a d e n a s d e L (G ) p u e d e n c o n te n e r
só lo s ím b o lo s te rm in a le s d e G. S e d ic e q u e u n a c a d e n a d e te rm in a le s iv está e n L(G )
si, y só lo si, S= > w\ A la c a d e n a w se le ll a m a frase d e G. D e u n le n g u a je q u e p u e d a
s e r g e n e r a d o p o r u n a g r a m á tic a se d ic e q u e es u n lenguaje independiente deI con­
texto. Si d o s g r a m á tic a s g e n e r a n el m is m o le n g u a je , se d ic e q u e s o n equivalentes.
Si 5 = > a . d o n d e a p u e d e c o n t e n e r n o te rm in a le s , e n to n c e s se d ic e q u e a es u n a
fo rm a d e frase d e G. U n a frase e s u n a f o r m a d e frase sin n o te rm in a le s .

E je m p lo 4 .4 . L a c a d e n a —(id -f- id) e s u n a frase d e la g r a m á tic a (4 .3 ), p o r q u e existe


la d e riv a c ió n

E=> - E => - (E)= > - ( E + E )= > - (¡d + E )= > - (id + id) (4.4)
4.2 G R A M A T IC A S IN D E PE N D IE N T E S DEL C O N T E X T O 173

L as c a d e n a s E . - E . - ( £ ) , . . . , - ( i d + i d) q u e a p a r e c e n en esta d e riv a c ió n son t o ­


d a s fo rm a s d e frases d e esta g ra m á tic a . Se e sc rib e £ = > - ( i d + id ) p a r a in d ic a r q u e
- ( i d 4- id) se p u e d e d e r iv a r d e E.
S e p u e d e d e m o s t r a r p o r in d u c c ió n s o b re la lo n g itu d d e u n a d e riv a c ió n q u e to d a
frase del len g u aje d e la g r a m á tic a (4.3) e s u n a e x p re sió n a r itm é tic a q u e c o m p r e n d e
a los o p e ra d o re s b in a rio s + y *. al o p e r a d o r u n a r io p a ré n te sis y al o p e r a n d o id.
D e m a n e r a s im ila r, se p u e d e d e m o s t r a r p o r in d u c c ió n s o b re la lo n g itu d d e u n a ex ­
p re s ió n a r it m é t ic a q u e t o d a s e s ta s e x p r e s io n e s p u e d e n s e r g e n e r a d a s p o r e s ta g ra ­
m á tic a . A sí. la g ra m á tic a (4 .3 ) g e n e ra p re c is a m e n te el c o n j u n t o d e to d a s las e x p re ­
sio n es a r itm é tic a s q u e c o m p r e n d e n a los b in a rio s + y *, al - u n a rio . a los p a r é n ­
tesis y al o p e r a n d o id. □

En c a d a p a so d e u n a d e riv a c ió n h a y q u e h a c e r d o s eleccio n es. E s n e c e sa rio es­


coger q u é n o te rm in a l se d e b e s u s titu ir y. u n a vez h e c h a esta elecció n , q u é a l te r n a ­
tiv a u sa r p a r a este n o te rm in a l. P o r e je m p lo . la d e riv a c ió n (4.4) del e je m p lo 4 .4 p o ­
d ría c o n t i n u a r d e s d e —( £ + £ ) c o m o sigue

- { E + E ) = > - ( £ + i d ) => - ( i d + ¡d) (4.5)

Se s u stitu y e c a d a n o te rm in a l d e (4.5) p o r el m i s m o la d o d e r e c h o q u e e n el e je m p lo
4 .4 , p e ro el o r d e n d e s u s titu c ió n e s d ife re n te .
P a ra c o m p r e n d e r c ó m o tr a b a ja n a lg u n o s a n a liz a d o re s sin tá c tic o s, h a y q u e c o n ­
s id e ra r d e r iv a c io n e s d o n d e t a n s ó lo el n o te r m in a l d e m á s a la iz q u ie r d a d e c u a l­
q u ie r fo rm a d e frase se s u s titu y a a c a d a paso . D ic h a s d e riv a c io n e s se d e n o m i n a n por
la izquierda. Si a = > p m e d ia n te u n p a so e n el q u e se s u s titu y e el n o te rm in a l m á s a
la iz q u ie rd a d e a , se escrib e u ^ > p . P u e s to q u e la d e riv a c ió n (4 .4 ) e s p o r la iz q u ie rd a ,
se p u e d e e s c rib ir así:

- < £ + * ) = ? - (¡d + £ ) ^ " (¡d + id)

U s a n d o las c o n v e n c io n e s d e n o ta c ió n , t o d o p a s o p o r la iz q u ie rd a se p u e d e escrib ir
wAy=^>w6y. d o n d e w c o n s ta só lo d e te rm in a le s . A —* 8 e s la p ro d u c c ió n a p lic a d a y y
e s u n a c a d e n a d e s ím b o lo s g ra m a tic a le s . P a ra s u b r a y a r el h e c h o d e q u e a d e riv a a (3
p o r m e d io de u n a d e riv a c ió n p o r la iz q u ie rd a , se e sc rib e a=^*p. Si S=>a, e n to n c e s se
d ic e q u e a es u n a fo r m a de fr a s e izquierda d e la g r a m á tic a e n c u e stió n .
A n á lo g a s d e fin ic io n e s se a p lic a n a las d e riv a c io n e s derechas , d o n d e el n o t e r m i ­
nal m á s a la d e r e c h a se s u s titu y e e n c a d a p aso . L a s d e riv a c io n e s d e r e c h a s a m e n u d o
se d e n o m i n a n d e riv a c io n e s canónicas.

A r b o le s d e a n á lis is s in tá c tic o y d e r iv a c io n e s

U n á rb o l d e a n á lis is s in tá c tic o se p u e d e c o n s id e r a r c o m o u n a r e p re s e n ta c ió n g ráfica


d e u n a d e riv a c ió n q u e n o m u e s tr a la e le c c ió n re la tiv a al o r d e n d e s u s titu c ió n . C o m o
se vio e n la secció n 2 .2 , c a d a n o d o in te r io r d e u n á rb o l d e a n álisis s in tá c tic o se e ti­
q u e t a c o n alg ú n n o te rm in a l .4, y q u e lo s h ijo s d e ese n o d o se e tiq u e ta n , d e iz q u ie rd a
a d e re c h a , c o n los s ím b o lo s del la d o d e r e c h o d e la p ro d u c c ió n p o r la c u a l se s u s ti­
tu y ó esta A e n la d e riv a c ió n . L as h o ja s d e l á rb o l d e a n álisis s in tá c tic o se e tiq u e ta n
174 ANALISIS SINTA CTIC O

c o n t e r m in a l e s o n o t e r m in a l e s y, le íd a s d e iz q u ie r d a a d e r e c h a , c o n s ti tu y e n u n a
f o r m a d e frase, lla m a d a el p r o d u c t o o f r o n te r a d e l á rb o l. P o r e je m p lo , e n la figura
4 .2 se m u e s tr a el árb o l d e a n álisis s in tá c tic o p a r a - ( i d + id) in d ic a d o p o r la d e r iv a ­
c ió n (4.4).
P a r a v e r la re la c ió n e n t r e d e r iv a c io n e s y á rb o le s d e a n á lis is s in tá c tic o , c o n s id é ­
rese c u a l q u ie r d e riv a c ió n a i = > a 2= > . . .=> a„. d o n d e a , es u n so lo n o te r m in a l A.
P a r a c a d a f o r m a d e frase a, d e la d e riv a c ió n , se c o n s tr u y e u n á rb o l d e a n á lis is s in ­
tá c tic o c u y o p r o d u c to e s a,. El p ro c e s o es u n a in d u c c ió n s o b re /. P a r a la base, el á r ­
bol p a ra Q| = A es u n so lo n o d o e tiq u e ta d o c o n A. P a r a h a c e r la in d u c c ió n , s u p ó n ­
gase q u e y a se h a c o n s tr u id o u n á rb o l d e a n á lis is s in tá c tic o c u y o p r o d u c to es a, t =
= ViX 2 . . . ( R e c o r d a n d o las c o n v e n c io n e s , c a d a X , e s o u n te rm in a l o u n n o
te r m in a l.) S u p ó n g a s e q u e a , se d e riv a d e a , _ t s u s titu y e n d o Xp q u e es u n n o t e r m i ­
n al. p o r p = Y\ Y 2 . . . Y,. E s d ecir, e n el /-é s im o p a so d e la d e r iv a c ió n , la p ro d u c c ió n
X, —> P se a p lic a a a , _, p a r a d e riv a r a , = X \X 2 . . . X ,- \ PAT,*, . . . A*.
P a ra m o d e la r este p a so d e la d e riv a c ió n , h a y q u e e n c o n t r a r la y -ésim a h o ja p o r
la iz q u ie r d a e n el á rb o l d e a n á lis is s in tá c tic o e n c u rs o . E sta h o ja está e tiq u e ta d a c o n
X ,. A e s ta h o ja se le a s ig n a n r h ijo s , e t i q u e t a d o s c o n Y u Y2. , Y, d e s d e la iz­
q u ie rd a . C o m o c a so esp ecial, si r = 0 . e s d ecir, p = e , e n to n c e s a la y -é sim a h o ja se
le asig n a u n h ijo e t iq u e ta d o c o n € .

E
/ X
E
/ 1X
( E )

E
/ +1X
E
1 1
id id

Eig. 4.2. Arbol d e análisis sintáctico p a ra —(id + id).

E je m p lo 4 .5 . C o n s id é r e s e la d e r iv a c ió n (4.4 ). L a s e c u e n c ia d e á r b o le s d e a n á lis is
s in tá c tic o c o n s tr u id o s a p a r ti r d e e s ta d e r iv a c ió n se m u e s tr a e n la fig u ra 4 .3 . E n el
p r im e r p a so d e la d e r iv a c ió n , E=> — E . P a r a m o d e la r este p a s o , se a ñ a d e n d o s hijos,
e tiq u e ta d o s c o n — y c o n E, a la ra íz E del á rb o l in ic ia l p a r a c r e a r el s e g u n d o á rb o l.
E n el s e g u n d o p a so d e la d e riv a c ió n , - E = > - ( E ) . E n c o n s e c u e n c ia , se a ñ a d e n
tr e s hijos, e tiq u e ta d o s c o n (. E y ). a la h o ja e tiq u e ta d a c o n E d e l s e g u n d o á r b o l p a r a
o b te n e r el te rc e r á rb o l c o n p r o d u c t o -(£ * ). Si se c o n t i n ú a a s í se o b tie n e el á r b o l d e
a n á lis is s in tá c tic o c o m p le to c o m o sex to á rb o l. □

C o m o ya se h a m e n c io n a d o , u n á rb o l d e a n á lis is s in tá c tic o ig n o ra la s v a ria c io n e s


e n el o r d e n e n q u e se s u s titu y e n los s ím b o lo s e n las f o r m a s d e frases. P o r e je m p lo ,
si se c o n t i n u a r a la d e riv a c ió n (4 .4 ) c o m o e n la lín ea (4.5 ), d a ría c o m o re s u lta d o el
4.2 G R A M A TIC A S IN D EPENDIENTES DEL C O N T E X T O 175

\ / \
E
/ I \
( E )

E => E => E
\ / \
E E E
/ 1 \ / 1 \ / 1 \
( E ) ( E ) ( E )
/ 1 \ / 1 \ / 1 \
E + E E + E E + E
é
1 l l
id id id

Fig. 4.3. C o n stru cció n del árbol d e análisis sintáctico a partir d e la derivación (4.4).

m is m o árb o l d e a n álisis s in tá c tic o final d e la fig u ra 4 .3 . T a m b ié n se p u e d e n e lim in a r


e s ta s v a ria c io n e s e n el o rd e n e n q u e se a p lic a n las p r o d u c c io n e s si se c o n s id e r a n ú n i­
c a m e n te d e riv a c io n e s p o r la iz q u ie r d a ( o p o r la d e re c h a ). N o es difícil v e r q u e to d o
árbol d e a n álisis s in tá c tic o tien e a so c ia d o u n a ú n ic a d e riv a c ió n iz q u ie rd a y u n a única
d e riv a c ió n d e re c h a . E n lo q u e sigue, a m e n u d o se h a r á el a n álisis s in tá c tic o p r o d u ­
c ie n d o u n a d e riv a c ió n p o r la iz q u ie r d a o p o r la d e re c h a , s a b ie n d o q u e e n lu g a r d e
esta d e r iv a c ió n s e p o d r ía p r o d u c i r el p r o p i o á r b o l d e a n á lis is s in tá c tic o . S in e m ­
bargo , n o se d e b e s u p o n e r q u e to d a frase tie n e o b lig a to r ia m e n te u n solo á rb o l d e
a n álisis s in tá c tic o o u n a so la d e r iv a c ió n p o r la iz q u ie rd a o p o r la d erech a .

E je m p lo 4 .6 . Se c o n s id e r a d e n u e v o la g r a m á tic a (4 .3 ) d e e x p re s io n e s a ritm é tic a s .


L a frase id + id*id tie n e las d o s c la ra s d e riv a c io n e s p o r la iz q u ierd a:

E => E + E E => E+E


=> id + E = > E+ E*E
=> id + E+E => id + E+E
=> id + ¡d * £ => id + i d+E
=> id + id*id => id f id*id

c o n los d o s á rb o le s d e a n á lis is s in tá c tic o c o r r e s p o n d ie n te s q u e se m u e s tr a n e n la fi­


g u r a 4 .4 . □

O b sé rv e se q u e el á rb o l d e a n á lis is s in tá c tic o d e la figura 4 .4 (a ) refleja la p re c e ­


d e n c ia c o m ú n m e n t e a c e p ta d a d e + y *, m ie n tr a s q u e el á rb o l d e la fig u ra 4 .4 (b ) n o .
E s d e c ir, e s h a b itu a l c o n s id e r a r q u e el o p e r a d o r * tie n e m a y o r p re c e d e n c ia q u e + .
lo c u a l c o r r e s p o n d e al h e c h o d e q u e u n a e x p re s ió n c o m o a + b*c n o r m a l m e n t e se
e v a lu a ría c o m o a + {b+c\ e n lu g a r d e c o m o (a + b)+c.
176 ANALISIS SINTA C TIC O

E E

£
/i\ + £
E/ i x E
£ * £

id
/ I\
£ * £ £
/ I\ + E id
l i
id id
l id
i id

(a) <»»

Fig. 4.4. D o s árboles d e análisis sintáctico p a ra id + id*id.

Ambigüedad
Se d ic e q u e u n a g r a m á tic a q u e p r o d u c e m á s d e u n á rb o l d e a n á lis is s in tá c tic o p a r a
a lg u n a frase e s am bigua. O , d ic h o d e o t r o m o d o , u n a g r a m á tic a a m b ig u a es la q u e
p r o d u c e m á s d e u n a d eriv a ció n p o r la iz q u ie rd a o p o r la d e re c h a p a r a la m is m a frase.
P a r a a lg u n o s tip o s d e a n a liz a d o re s s in tá c tic o s e s p referib le q u e la g r a m á tic a n o sea
a m b ig u a , p u e s si lo fu e ra , n o se p o d r ía d e t e r m i n a r d e m a n e r a e x c lu siv a q u é árb o l
d e a n á lis is s in tá c tic o se le c c io n a r p a r a u n a frase. P a r a a lg u n a s a p lic a c io n e s se c o n s i­
d e r a r á n ta m b ié n los m é to d o s m e d ia n te lo s c u a le s se p u e d a n u tiliz a r c ie rta s g r a m á ­
ticas a m b ig u a s , j u n t o c o n reglas para elim in a r a m b ig ü ed a d es q u e d e s e c h a n á rb o le s
d e a n álisis s in tá c tic o in d e sea b les, d e j a n d o só lo u n á rb o l p a r a c a d a frase.

4 .3 E S C R I T U R A D E U N A G R A M A T I C A

L as g r a m á tic a s s o n c a p a c e s d e d e s c rib ir la m a y o ría , p e r o n o to d a s, d e las s in ta x is de


los le n g u a je s d e p r o g r a m a c ió n . U n a n a liz a d o r léx ico e fe c tú a u n a c a n t i d a d lim ita d a
d e a n álisis s in tá c tic o c o n f o r m e p r o d u c e la s e c u e n c ia d e c o m p o n e n te s léxicos a p a r tir
d e los c a ra c te re s d e e n tr a d a . C ie rta s lim ita c io n e s d e la e n t r a d a , c o m o el r e q u is ito d e
q u e los id e n tific a d o re s se d e c la re n a n t e s d e s e r u tiliz a d o s, n o p u e d e n d e sc rib irse m e ­
d ia n te u n a g r a m á tic a in d e p e n d ie n te d e l c o n te x to . P o r t a n t o , las s e c u e n c ia s d e c o m ­
p o n e n te s léxicos a c e p ta d a s p o r u n a n a l iz a d o r s in tá c tic o f o r m a n u n s u p e r c o n ju n t o
d e u n le n g u a je d e p r o g r a m a c ió n ; las fases p o s te r io r e s d e b e n a n a l i z a r la s a lid a del
a n a liz a d o r s in tá c tic o p a r a g a r a n tiz a r la o b e d ie n c ia a reg las q u e el a n a liz a d o r s in tá c ­
tic o n o c o m p r u e b a . (V é a s e C a p . 6.)
E sta secció n se in ic ia c o n s id e r a n d o la d iv isió n del tr a b a jo e n tr e u n a n a liz a d o r
léxico y u n a n a liz a d o r sintáctico . P u e s to q u e c a d a m é to d o d e a n álisis s in tá c tic o p u e d e
m a n e ja r só lo g r a m á tic a s d e u n a c ie rta fo rm a , q u iz á se d e b a re e sc rib ir la g ra m á tic a
in icial p a r a h a c e rla a n a liz a b le p o r el m é t o d o elegido. A m e n u d o se p u e d e n c o n s tr u ir
g r a m á tic a s a d e c u a d a s p a r a e x p re s io n e s u tiliz a n d o la in f o r m a c ió n a c e r c a d e la aso-
c ia tiv id a d y la p r e c e d e n c ia , c o m o e n la se c c ió n 2 .2 . A q u í, se c o n s i d e r a n tr a n s f o r ­
m a c io n e s ú tiles p a r a reescrib ir g r a m á tic a s y h a c e rla s a p r o p ia d a s p a r a el a n á lis is s in ­
tá c tic o d e s c e n d e n te . E sta secció n c o n c lu y e c o n s id e r a n d o a lg u n a s c o n s tr u c c io n e s d e
los le n g u a je s d e p r o g r a m a c ió n q u e n o p u e d e n s e r d e s c rita s p o r n in g u n a g ra m á tic a .
4.3 ESCRITURA DE U N A GRAM ATICA 177

E x p r e s io n e s r e g u la r e s, o g r a m á tic a s in d e p e n d ie n te s d el c o n te x to

T o d a c o n s tr u c c ió n q u e se p u e d a d e s c rib ir m e d ia n te u n a e x p re s ió n re g u la r ta m b ié n
se p u e d e d e s c rib ir p o r m e d io d e u n a g r a m á tic a . P o r e je m p lo , la e x p re s ió n reg u lar
(a\b)*abb y la g ra m á tic a

A q —» (lA o | b A o j íl 4 i
A , -+ bA 2
A 2 —* bAy
A 3 —> €

d e s c rib e n el m is m o len g u aje, el c o n j u n t o d e c a d e n a s d e c a ra c te re s a y b q u e te r m i­


n a n e n abb.
S e p u e d e c o n v e r t i r d e m a n e r a m e c á n i c a u n a u t ó m a t a f in i to n o d e t e r m i n i s t a
( A F N ) e n u n a g r a m á tic a q u e g e n e re el m is m o le n g u a je re c o n o c id o p o r el A F N . La
g r a m á tic a a n te r io r se c o n s tr u y ó a p a r ti r d e l A F N d e la fig u ra 3 .2 3 u tiliz a n d o la si­
g u ie n te c o n s tru c c ió n : p a r a c a d a e s ta d o i d e l A F N , créese u n s ím b o lo n o te rm in a l A,.
Si el e s ta d o i tie n e u n a tr a n s i c ió n al e s ta d o j c o n el s í m b o l o d e e n t r a d a a , i n t r o ­
d ú z c a s e la p ro d u c c ió n A, -*■ aAj. Si el e s ta d o i v a al e s ta d o j c o n la e n t r a d a € , i n ­
tr o d ú z c a s e la p r o d u c c i ó n A¡ —> A ,. S i i es u n e s t a d o d e a c e p t a c i ó n , in t r o d ú z c a s e
A , —►€ . Sj / es el e s ta d o d e in ic io , h a c e r d e A , el s ím b o lo in ic ia l d e la g ra m á tic a .
P u e s to q u e t o d o c o n j u n t o re g u la r es u n le n g u a je in d e p e n d ie n te del c o n te x to , es
ra z o n a b le p r e g u n ta r: ¿ P o r q u é u tiliz a r e x p re s io n e s reg u la re s p a r a d e f in ir la sin ta x is
lexicográfica d e u n le n g u a je ? E x iste n v a ria s razo n es.

1. L as reglas lexicográficas d e u n le n g u a je a m e n u d o s o n b a s ta n te sen cillas, y p a ra


d e s c rib irla s n o se n e c e s ita u n a n o ta c ió n ta n p o d e r o s a c o m o la s g ra m á tic a s.

2. L a s e x p re s io n e s reg u la re s p o r lo g e n e ra l p r o p o r c io n a n u n a n o ta c ió n m á s c o n ­
cisa y fácil d e e n t e n d e r p a r a los c o m p o n e n te s léx ico s q u e u n a g ra m á tic a .

3. S e p u e d e n c o n s tr u i r a u t o m á t i c a m e n t e a n a liz a d o r e s léx ico s m á s e fic ie n te s a p a r ­


ti r d e e x p re s io n e s reg u la re s q u e d e g r a m á tic a s a rb itra ria s.

4. S e p a ra r la e s tr u c tu r a s in tá c tic a d e u n le n g u a je e n p a rte s léx icas y n o léxicas p ro ­


p o r c io n a u n a f o r m a c o n v e n ie n te d e m o d u la r iz a r la e ta p a in icial d e u n c o m p i ­
la d o r en d o s c o m p o n e n te s d e t a m a ñ o ra z o n a b le .

N o ex isten n o r m a s fijas e n c u a n t o a q u é p o n e r e n las reg las lexicográficas, e n vez


d e las reglas sin tácticas. L as e x p re s io n e s reg u la re s s o n m u y ú tiles p a r a d e s c rib ir la
e s tr u c tu r a d e las c o n s tr u c c io n e s léxicas, c o m o id e n tific a d o re s . c o n s ta n te s , p a la b ra s
clave, e tc é te ra . L as g ra m á tic a s , p o r o t r a p arte , son m u y ú tiles p a r a d e s c rib ir e s tr u c ­
tu r a s a n id a d a s , c o m o p a ré n te s is e q u ilib ra d o s , c o n c o r d a n c ia d e las p a la b r a s c lav e b e­
g in y en d . los c o rr e s p o n d ie n te s if-t h e n -e ls e . e tc é te ra . C o m o y a se h a s e ñ a la d o , estas
e s tr u c tu r a s a n id a d a s n o se p u e d e n d e s c rib ir c o n e x p re s io n e s regulares.

C o m p ro b a ció n d el le n g u a je g e n e r a d o p or u n a g ra m á tica

A u n q u e los d is e ñ a d o r e s d e c o m p ila d o r e s r a r a vez lo h a c e n p a r a u n a g r a m á tic a c o m ­


p le ta d e u n le n g u a je d e p r o g r a m a c ió n , es i m p o r t a n t e s e r c a p a z d e r a z o n a r q u e un
c o n j u n t o d a d o d e p ro d u c c io n e s g e n e ra u n le n g u a je d e te r m in a d o . L as c o n s tr u c c io ­
178 ANALISIS SIN TA CTIC O

n e s p ro b le m á tic a s se p u e d e n e s tu d ia r e s c rib ie n d o u n a g r a m á tic a a b s tr a c ta c o n c is a y


e s tu d ia n d o el le n g u a je q u e g e n e ra . M ás a d e la n te se c o n s tr u ir á u n a d e estas g r a m á ­
ticas p a r a los co n d ic io n a le s.
U n a p r u e b a d e q u e u n a g r a m á tic a O g e n e r a u n le n g u a je L tie n e d o s p a rte s: se
d e b e d e m o s t r a r q u e to d a c a d e n a g e n e r a d a p o r G e s tá e n L , y lo o p u e s to , q u e to d a
c a d e n a d e L p u e d e d e h e c h o s e r g e n e r a d a p o r G.

E je m p lo 4 .7 . C o n s id é re s e la g r a m á tic a (4.6)

S - » (S ) S | € (4.6)

Al p r in c ip io p u e d e n o r e s u lta r e v id e n te , p e r o esta s im p le g r a m á tic a g e n e ra to d a s las


c a d e n a s d e p a ré n te sis e q u ilib r a d o s y só lo e s ta s c a d e n a s. P a r a c o m p r o b a r lo , p r im e r o
se d e m o s tr a r á q u e to d a frase d e riv a b le d e S está e q u ilib r a d a , y d e s p u é s , q u e to d a
c a d e n a e q u ilib r a d a es d e r iv a b le d e 5 . P a r a d e m o s t r a r q u e to d a frase d e r iv a b le d e S
está e q u ilib r a d a , se usa u n a p r u e b a in d u c tiv a s o b re el n ú m e r o d e p a s o s d e u n a d e ­
riv a c ió n . P a ra el p a so base, se o b s e rv a q u e la ú n ic a c a d e n a d e te rm in a le s d e riv a b le
d e S e n u n p a s o es la c a d e n a vacía, q u e s in d u d a e s tá e q u ilib ra d a .
A h o ra , s u p ó n g a s e q u e to d a s la s d e riv a c io n e s d e m e n o s d e n p a s o s p r o d u c e n fra ­
ses e q u ilib r a d a s y c o n s id é re s e u n a d e riv a c ió n p o r la iz q u ie r d a d e e x a c ta m e n te n p a ­
sos. D ic h a d e riv a c ió n d e b e te n e r la fo rm a

5 =>(5)5 (a)S (x)y


L as d e riv a c io n e s d e x e y a p a r tir d e S o c u p a n m e n o s d e n p aso s, d e m o d o q u e , p o r
la hipó tesis d e in d u c c ió n , .v e y e s tá n e q u ilib ra d a s . P o r ta n to , la c a d e n a (x ) y d e b e
e s ta r e q u ilib ra d a .
S e h a d e m o s t r a d o asi q u e c u a lq u ie r c a d e n a d e riv a b le d e S está e q u ilib r a d a . A
c o n tin u a c ió n se d e b e d e m o s t r a r q u e to d a c a d e n a e q u ilib r a d a es d e r iv a b le d e S . P a ra
h acerlo , se u tiliz a in d u c c ió n so b re la lo n g itu d d e u n a c a d e n a . P a r a el p a s o base, la
c a d e n a v acía e s d e riv a b le d e 5 .
A h o ra , s u p ó n g a s e q u e to d a c a d e n a e q u ilib r a d a d e lo n g itu d m e n o r q u e 2 n es de-
riv a b lc d e S y c o n s id é re s e u n a c a d e n a e q u ilib r a d a w d e lo n g itu d 2 n, n ^ 1. S in d u d a .
w c o m ie n z a c o n u n p a ré n te s is iz q u ie rd o . S ea (x) el p re fijo m á s c o r t o d e w q u e te n g a
u n n ú m e r o igual d e p a ré n te s is iz q u ie rd o s y d e re c h o s. E n to n c e s w* se p u e d e escrib ir
(A)y. d o n d e t a n t o x c o m o y e s tá n e q u ilib ra d o s . P u e s to q u e x e y s o n d e lo n g itu d
m e n o r q u e 2//. s o n d e riv a b le s d e S p o r la h ip ó te s is d e in d u c c ió n . P o r t a n t o , se p u e d e
e n c o n t r a r u n a d e riv a c ió n d e la fo rm a

S => { S )S = > ( a ) 5 => (x)v

lo c u a l d e m u e s tr a q u e w = {x )y ta m b ié n es d e riv a b le d e S. □

S u p r e s ió n d e la a m b ig ü ed a d

A veces, u n a g ra m á tic a a m b ig u a se p u e d e re c sc rib ir p a r a e lim in a r la a m b ig ü e d a d .


C o m o e je m p lo , se e l im i n a r á la a m b ig ü e d a d d e la sig u ie n te g r a m á tic a c o n “e ls e a m ­
b ig u o":
4.3 ESCRITURA DF U N A G R A M A T IC A 179

prop —> if ex p r th e n prop


if ex p r th e n prop e ls e prop (4.7)
o tra

A q u í, o t r a r e p re s e n ta c u a lq u ie r o tr a p ro p o s ic ió n . D e a c u e r d o c o n esta g r a m á tic a , la
p ro p o s ic ió n c o n d ic io n a l c o m p u e s ta

if th e n 5 , e lse if E 2 th e n S 2 e lse Sy

tien e el árb o l d e análisis s in tá c tic o q u e se m u e stra e n la figura 4.5. La g ra m á tic a (4.7)


es a m b ig u a , p u e s to q u e la c a d e n a

if E ) th e n if E \ th e n .S| e lse S 2 (4.8)

tie n e los d o s a rb o le s d e a n á lis is s in tá c tic o q u e se m u e s tr a n en la llg u ra 4.6.

Prop

if expr th e n prop e ls e p ro p

ZA ZA
if

Fig. 4.5. A rbol d e análisis sintáctico para la proposición condicional.

prop

if

prop th e n p ro p e ls e p ro p

ZA ZA ZA
El Si S2
prop

if expr th e n prop e ls e p ro p

^ / / \ \ e
if expr th e n prop

ZA ZA
e 2 s ,

F ig . 4 .6 . D o s árboles d e análisis sintáctico para un a frase am bigua.


180 A N A L IS IS S IN T A C T IC O

E n to d o s los le n g u a je s d e p r o g r a m a c ió n c o n p ro p o s ic io n e s c o n d ic io n a le s d e esta
fo rm a , se p refiere el p r im e r á rb o l d e a n á lis is s in tá c tic o . L a regla g e n e ra l es, “ e m p a ­
re ja r c a d a e ls e c o n e l th e n s in e m p a r e j a r a n t e r i o r m á s c e r c a n o ”. E sta regla p a r a eli­
m i n a r a m b ig ü e d a d e s se p u e d e in c o r p o r a r d ir e c ta m e n te a la g r a m á tic a . P o r e jem p lo ,
se p u e d e reescrib ir la g r a m á tic a (4 .7 ) c o m o la sig u ie n te g r a m á tic a n o a m b ig u a . La
id e a es q u e u n a p ro p o s ic ió n q u e a p a re z c a e n tr e u n th e n y u n e l s e d e b e e s ta r “e m ­
p a r e ja d a ” ; es d e c ir, n o d e b e t e r m i n a r c o n u n th e n s in e m p a r e j a r s e g u id o d e c u a l ­
q u ie r p ro p o sició n , p o r q u e e n to n c e s el e ls e estaría o b lig a d o a c o n c o r d a r c o n este th en
n o e m p a r e ja d o . U n a p ro p o s ic ió n e m p a r e ja d a e s o u n a p ro p o s ic ió n ¡f-th e n -e ls e q u e
n o c o n te n g a p ro p o s ic io n e s sin e m p a r e ja r o c u a lq u ie r o t r a clase d e p ro p o s ic ió n n o
c o n d ic io n a l. A sí, se p u e d e u tiliz a r la g ra m á tic a

prop - » p r o p - em parejada
| p r o - n o -e m p a reja d a
p ro p -em p a reja d a —> i f e x p r th e n p ro p -e m p a reja d a e l s e p ro p -em p a reja d a
| o tr a ( 4 .9 )
p r o p -n o -e m p a re ja d a —►i f e x p r th e n prop
| i f e x p r th e n p ro p -e m p a reja d a e l s e p r o p -n o -e m p a re ja d a

E sta g r a m á tic a g e n e ra el m i s m o c o n j u n t o d e c a d e n a s q u e (4.7 ), p e r o p e rm ite sólo


u n a n álisis s in tá c tic o p a r a la c a d e n a (4.8), es d ecir, el q u e aso cia c a d a e l s e c o n el
th e n s in e m p a r e ja r a n te r io r m á s c e rc a n o .

E lim in a c ió n d e la r e c u r sió n p or la izq u ierd a

U n a g r a m á tic a es recursiva p o r ía izquierda si tie n e u n n o te rm in a l A tal q u e existe


u n a d e r iv a c ió n A = > A a p a r a a lg u n a c a d e n a a. L o s m é to d o s d e a n á lis is s in tá c tic o
d e s c e n d e n te n o p u e d e n m a n e ja r g r a m á tic a s re c u rs iv a s p o r la iz q u ie rd a , así q u e se
n ecesita u n a tr a n s f o r m a c ió n q u e e lim in e la r e c u r s ió n p o r la iz q u ie rd a . E n la sección
2 .4 se a n a liz ó la r e c u r s ió n s im p le p o r la iz q u ie r d a , d o n d e h a b ía u n a p ro d u c c ió n de
la fo rm a A -> A a . A q u í se e s tu d ia el c a so g e n e ra l. E n la secció n 2 .4 se d e m o s tr ó q u e
el p a r d e p r o d u c c io n e s re c u rs iv a s p o r la iz q u ie r d a A - > .4 a 113 p o d ía n s u stitu irs e por
las p ro d u c c io n e s n o re c u rs iv a s p o r la iz q u ie rd a

A fiA '
A ' - » a /Y | e

sin m o d if ic a r el c o n j u n t o d e c a d e n a s d e riv a b le s d e A . E sta regla y a es su fic ie n te en


m u c h a s g ra m á tic a s.

E je m p lo 4 .8 . C o n s id é re s e la sig u ie n te g r a m á tic a p a r a e x p re s io n e s a ritm é tic a s .

E-+E + T | T
T-+T*F\F (4 .10)
F ( E ) | id

E l im i n a n d o la recursión directa p o r la izquierda (p r o d u c c io n e s d e la fo rm a A A a)


a las p ro d u c c io n e s d e E y d e s p u é s a las d e T. se o b tie n e
4.3 ESCRITURA D E U N A G R A M A T IC A 181

E-+TE
+ TE |c
T -+ F T (4.11)
T -> * F T | €
F - * ( E ) | id □

I n d e p e n d ie n te m e n te d e c u á n t a s p ro d u c c io n e s d e .4 e x ista n , se p u e d e e lim in a r de
ellas la re c u rs ió n d ire c ta p o r la iz q u ie r d a m e d ia n te la sig u ie n te té cn ica. P r im e r o se
a g r u p a n las p ro d u c c io n e s d e .4 e n la fo rm a

A .4 a , | .4 a : | . . . | .4a,„ | p , | (3: | . . . | P„
d o n d e n in g u n a P, c o m ie n z a c o n u n a A . D e s p u é s se s u s titu y e n las p ro d u c c io n e s de
A por

A -» M ' P: A ' • • • P„ A 1
V -» a ,/T a2A' • • • a,„ A ' |

El n o te rm in a l A g e n e r a las m i s m a s c a d e n a s q u e a n te s , p e ro y a n o es re c u rs iv o p o r
la iz q u ie r d a . E ste p r o c e d i m i e n t o e l i m i n a t o d a la r e c u r s ió n i n m e d i a t a p o r la iz ­
q u ie r d a d e las p ro d u c c io n e s A y A ' ( s u p o n ie n d o q u e n in g ú n a, es € ) , p e r o n o eli­
m in a la re c u rs ió n p o r la iz q u ie r d a q u e in c lu y a d e riv a c io n e s d e d o s o m á s paso s. P o r
e je m p lo , c o n sid é re se la g ra m á tic a

aZ A - <4 - , 2 >

El n o te rm in a l S es re c u rs iv o p o r la iz q u ie r d a , p o r q u e S =>Aa =>Sda. p e r o n o es
re c u rsiv o in m e d ia to p o r la iz q u ie rd a .
El a lg o ritm o 4 .1 , e lim in a r á s is te m á tic a m e n te la re c u rsió n p o r la iz q u ie rd a d e u n a
g ra m á tic a . S ie m p re fu n c io n a si la g ra m á tic a n o tien e ciclos (d e riv a c io n e s d e la fo rm a
A =>A) o p ro d u c c io n e s € ( p r o d u c c io n e s d e la f o r m a A -+ c ). L o s ciclos, al igual
q u e la s p r o d u c c i o n e s € , se p u e d e n e l i m i n a r s i s t e m á t i c a m e n t e d e u n a g r a m á t i c a
(v é a n s e E jercicios 4 .2 0 y 4 .2 2 ).

A lg o ritm o 4 .1 . E lim in a c ió n d e la re c u rs ió n p o r la izq u ierd a.

Entrada. L a g r a m á tic a G s in c ic lo s ni p ro d u c c io n e s € .

Salida. U n a g r a m á tic a e q u iv a le n te s in re c u rs ió n p o r la iz q u ie rd a .
1. O rd én en se los n o term in ales en u n o rd e n .4,. A 2 , • • • • A n.
2. for i : = 1 to n do
begin
for / : = I to / — 1 do
sustituir c a d a p ro d u cció n d e la fo rm a A, -* A ff
p o r las p ro d uccio nes A, 5 ,y 1b 2y | • • • |
d o n d e A¡ - * 8, | 621. . . | 5* son todas
las p ro d u ccio n es actuales d e A/,
e lim in a r la recursividad in m e d ia ta p o r la izq uierd a e n tre las p ro d uccio nes d e A,
end

Fig. 4.7. A lgoritm o p a ra e lim in a r la recursividad p o r la izqu ierd a d e u n a gram ática.


182 A N A LISIS SINTA CTIC O

M étodo. A p liq ú e se el a lg o r itm o d e la fig u ra 4 .7 a G. O b sé rv e se q u e la g r a m á tic a sin


re c u rsiv id a d p o r la iz q u ie r d a re s u lta n te p u e d e te n e r p ro d u c c io n e s € . □

La ra z ó n p o r la q u e el p r o c e d im ie n to d e la figura 4 .7 f u n c io n a es q u e d e s p u é s d e
la (/ - 1 )-é s im a it e r a c ió n d e l la z o fo r e x t e r n o e n el p a s o 2 , c u a l q u i e r p r o d u c c i ó n
d e la fo rm a A i - > A ¡a, d o n d e k < d e b e te n e r l > k . C o m o re s u lta d o , e n la sig uiente
ite ra c ió n , el la z o in te r n o (so b re j ) a u m e n t a p ro g re s iv a m e n te el lím ite in fe rio r e n m
e n c u a lq u ie r p ro d u c c ió n A -> A„,a. h a s ta q u e se te n g a m > i . E n to n c e s , e l i m i n a r la
re c u rs ió n d ire c ta p o r la iz q u ie rd a d e las p r o d u c c io n e s d e A, h a c e q u e m sea m a y o r
q u e i.

E jem p lo 4 .9 . A plicación d e este p r o c e d im ie n to a la g ra m á tic a (4.12). D esd e el p u n to


d e v ista té c n ic o , el a lg o ritm o 4.1 n o s ie m p r e fu n c io n a , d e b i d o a la p ro d u c c ió n e .
p e r o e n este c a so la p ro d u c c ió n A —> € re s u lta s e r in o fen siv a.
S e o r d e n a n los n o te rm in a le s 5 . A. N o h a y re c u rs ió n d ire c ta p o r la iz q u ie r d a e n ­
tre las p r o d u c c io n e s d e S, d e m o d o q u e n o o c u r r e n a d a d u r a n t e el p a s o 2 p a r a el
c a so / = I. P a ra i = 2. se s u s titu y e n las p r o d u c c io n e s d e S e n A S d p a r a o b te n e r
las sig u ie n tes p ro d u c c io n e s d e A.

A -+ A c I A a d I h d í c

E lim in a n d o la re c u rs ió n d ire c ta p o r la iz q u ie r d a e n t r e las p r o d u c c io n e s d e A. se o b ­


tie n e la sig u ie n te g ra m á tic a .

S - > -Aa | h
A - > bdA ' | A'
A ' - > cAf | adA ' | c rj

F a c to r iz a c ió n p or la izq u ierd a

1.a factorización p o r la iz q u ie rd a es u n a tr a n s fo rm a c ió n g ra m a tic a l útil p a r a p ro d u c ir


u n a g ra m á tic a a d e c u a d a p a ra el análisis s in tá c tic o p red ictivo . La idea básica es q u e
c u a n d o n o está claro cuál d e d o s p ro d u c c io n e s a lte rn a tiv a s u tiliz ar p a r a a m p lia r u n
n o te rm in a l A . se p u e d e n reescrib ir las p ro d u c c io n e s d e A p a r a re tra s a r la decisión
hasta h a b e r visto lo suficiente d e la e n t r a d a c o m o p a ra eleg ir la o p c ió n correcta.
P o r e je m p lo , si se tie n e n las d o s p ro d u c c io n e s

prop - > i f expr th e n prop e ls e prop


i f expr th e n prop

al v e r el c o m p o n e n te léxico d e e n t r a d a if. n o se p u e d e s a b e r d e in m e d ia t o q u é p r o ­
d u c c ió n eleg ir p a r a e x p a n d ir prop. E n g en eral, si A —►a p i | a p 2 s o n d o s p r o d u c c io ­
n e s d e A y la e n t r a d a c o m ie n z a c o n u n a c a d e n a n o v acia d e r iv a d a d e a . n o se sabe
si e x p a n d ir A a a P , o a a p : . S in e m b a r g o , se p u e d e re tra s a r la d e c is ió n e x p a n d ie n d o
A a a . 4 \ E n to n c e s , d e s p u é s d e v e r la e n t r a d a d e r iv a d a d e a , se p u e d e e x p a n d i r A ' a
(3i o a p 2- Es d ecir, fa c to riz a d a s p o r la iz q u ie r d a , las p r o d u c c io n e s o rig in a le s se c o n ­
v ie rte n en
4.3 ESCRITURA DE U N A G R A M A T IC A 183

A lg o r itm o 4 .2 . F a c to riz a c ió n p o r la iz q u ie r d a d e u n a g ra m á tic a .

E ntrada. L a g ra m á tic a G.
Salida. U n a g ra m á tic a e q u iv a le n te fa c to riz a d a p o r la iz q u ie rd a .

M étodo. P a ra c a d a n o te r m in a l A , e n c u é n tr e s e el p re fijo a m á s la rg o c o m ú n a dos


o m á s d e s u s a l t e r n a t i v a s . Si a # € , e s d e c ir , e x is te u n p r e f ijo c o m ú n n o triv ia l,
su stitu y a n se to d a s las p r o d u c c io n e s d e -4. A —►<xpi | a p 2 ¡ • • • | «P/» i Y- d o n d e y r e p re ­
s e n ta to d a s las a lte r n a tiv a s q u e n o c o m ie n z a n c o n a . p o r

A -+ < l 4' |y
A' - p , | p 2 1. . . | p„

A q u í. A ' es u n n u e v o n o te rm in a l. A p lic a r r e p e tid a m e n te e s ta tr a n s f o r m a c ió n h asta


q u e n o h a y a d o s a lte r n a tiv a s p a r a u n n o te rm in a l c o n u n p re fijo c o m ú n .

E je m p lo 4 .1 0 . L a sig u ie n te g r a m á tic a r e s u m e el p r o b le m a del e l s e a m b ig u o :

P - * iE iP | iE tP eP | a
( 4. 13)
E -* b
A q u í, / . / y e re p re s e n ta n if. th e n y e ls e ; E y P r e p r e s e n ta n “e x p r e s ió n " y “ p ro p o s i­
c ió n " . F a c to riz a d a p o r la iz q u ie rd a , e s ta g r a m á tic a se c o n v ie r te en:

P iE tP F | a
F -> e P |c (4 .14)
E -* b

Así, se p u e d e e x p a n d ir P a iE tP F c o n la e n t r a d a /. y e s p e ra r h a s ta q u e iE tP h a y a
a p a re c id o p a r a d e c id ir si e x p a n d ir F a e P o a € . P o r s u p u e s to , las g r a m á tic a s ( 4 . 13)
y (4 .1 4 ) s o n a m b ig u a s , y c o n la e n t r a d a e. n o está c la ro q u é a lte r n a tiv a d e P' se d e ­
b ería elegir. El e je m p lo 4 .1 9 a n a liz a u n a m a n e r a d e s o lu c io n a r este d ile m a .

C o n s tr u c c io n e s d e le n g u a je s n o in d e p e n d ie n te s d e l c o n te x to

N o d e b e s o r p r e n d e r q u e a lg u n o s le n g u a je s n o p u e d a n s e r g e n e r a d o s p o r n in g u n a
g ra m á tic a . D e h e c h o , u n a s c u a n t a s c o n s tr u c c io n e s s in tá c tic a s d e m u c h o s len g u ajes
d e p r o g r a m a c ió n n o se p u e d e n e s p e c ific a r u tiliz a n d o ta n sólo g ra m á tic a s . E n esta
secció n se in tr o d u c e n a lg u n a s d e estas c o n s tr u c c io n e s u s a n d o le n g u a je s a b s tra c to s
sen cillos p a r a ilu s tr a r las d ific u lta d e s.

E je m p lo 4 . 1 1. C o n s id é re s e el le n g u a je a b s tr a c to L , = {wov | n* está en (a | /?)*}. L {


c o n s ta d e to d a s las p a la b ra s c o m p u e s ta s p o r u n a c a d e n a re p e tid a d e carac teres a y h
s e p a r a d o s p o r u n a c. c o m o aabcaab. S e p u e d e d e m o s t r a r q u e este le n g u a je n o es
in d e p e n d ie n te del c o n te x to . E ste le n g u a je r e s u m e el p r o b le m a d e a s e g u ra r q u e los
id e n tific a d o re s se d e c la re n a n te s d e su u s o en u n p r o g r a m a . E s d ecir, la p r im e r a w
d e h x ’h * r e p re s e n ta la d e c la r a c ió n d e u n id e n tif ic a d o r w. L a s e g u n d a w r e p re s e n ta su
u so . M ie n tr a s q u e d e m o s tr a r lo está m á s a llá d e l p r o p ó s ito d e este lib ro , la falta d e
in d e p e n d e n c ia d e l c o n t e x t o d e L \ im p lic a d i r e c t a m e n t e la n o in d e p e n d e n c ia del
c o n te x to d e le n g u a je s d e p r o g r a m a c ió n c o m o A L G O L y P ascal, q u e exigen d ecía-
184 ANALISIS SIN TA CTIC O

ra c ió n d e los id e n tific a d o re s a n t e s d e s u u s o , y q u e a d m ite n id e n tific a d o re s d e c u a l­


q u ie r lo n g itu d .
P o r esta ra z ó n , u n a g r a m á tic a p a r a la s in ta x is d e A L G O L o P ascal n o especifica
los c a ra c te re s e n u n id e n tific a d o r, s in o q u e to d o s los id e n tific a d o re s se re p re s e n ta n
en la g ra m á tic a m e d ia n te u n c o m p o n e n t e léx ico c o m o id. E n u n c o m p ila d o r p a r a
u n le n g u a je d e este ti p o , la fase d e a n á lis is s e m á n t i c o c o m p r u e b a si lo s id e n tific a -
d o r e s h a n s id o d e c la r a d o s a n te s d e su u so. □

E je m p lo 4 .1 2 . El len g u aje L 2 = {anb n'c"(f” | n ^ 1 y m ^ 1} n o e s in d e p e n d ie n te


del c o n te x to . E s d ecir. L 2 c o n s ta d e c a d e n a s e n el le n g u a je g e n e r a d o p o r la e x p re sió n
reg u lar a*b*c*d* tales q u e lo s n ú m e r o s d e a y e s o n iguales, lo m i s m o q u e los n ú ­
m e ro s d e b y d. (R e c u é rd e s e q u e a” sig n ifica a e sc rita n veces.) L 2 r e s u m e el p r o ­
b le m a d e c o m p r o b a r si el n ú m e r o d e p a r á m e tr o s fo rm a le s e n la d e c la r a c ió n d e u n
p r o c e d i m ie n t o c o in c id e c o n el n ú m e r o d e p a r á m e t r o s a c tu a le s e n u n u s o d e este
p r o c e d im ie n to . E s d e c ir. an y b m p o d r ía n r e p r e s e n ta r las listas d e p a r á m e tr o s for-
m á le s e n d o s p r o c e d i m ie n t o s c o n n y ni a r g u m e n to s , r e s p e c tiv a m e n te . E n to n c e s ,
<•" y d m r e p r e s e n ta n la s lista s d e p a r á m e t r o s re a le s e n ll a m a d a s a d ic h o s p r o c e d i­
m ie n to s .
D e n u e v o , se o b s e rv a q u e la s in ta x is típ ic a d e las d e fin ic io n e s y u so s d e p ro c e ­
d im ie n t o s n o se o c u p a d e c o n t a r el n ú m e r o d e p a r á m e tr o s . P o r e je m p lo , la p r o p o ­
sició n c a l l e n u n le n g u a je del ti p o F O R T R A N se p o d r ía d e scrib ir
prop - > c a li id (lista -e x p r)
Usta-expr -* lisia -exp r, expr
| expr
c o n las p r o d u c c i o n e s a d e c u a d a s p a r a exp r. G e n e r a l m e n t e se c o m p r u e b a si el n ú ­
m e r o d e p a r á m e tr o s a c tu a le s e n la lla m a d a es c o r r e c to d u r a n t e la fase d e análisis
s e m á n tic o . □

E jem p lo 4 .1 3 . El len g u aje Ly = {anf f c n | n > 0}. es d ecir, c a d e n a s e n L(a*b*c*) c o n


el m is m o n ú m e r o d e c a ra c te re s a. b y c, n o es in d e p e n d ie n te del c o n te x to . U n e je m ­
p lo d e u n p r o g r a m a q u e in c lu y e ¿3 e s el sig u ie n te . L os te x to s d e tip o g rafía u tiliz an
cursivas d o n d e lo s te x to s c o r r ie n te s u tiliz an el s u b r a y a d o . Al c o n v e r tir u n a rc h iv o
d e te x to d e s tin a d o a im p r im ir s e e n u n a im p r e s o r a d e lín e a s e n te x to a d e c u a d o p a r a
u n d is p o s itiv o d e f o to c o m p o s ic ió n , h a y q u e s u s t it u ir la s p a la b r a s s u b r a y a d a s p o r
cursivas. U n a p a la b ra s u b r a y a d a es u n a c a d e n a d e letras s e g u id a d e u n m is m o n ú ­
m e r o d e re tro c e so s (c a ra c te re s d e b a c k s p a c e d e A S C II) y d e u n n ú m e r o ig u a l d e
c a ra c te re s d e s u b r a y a d o . Si se c o n s id e r a a c o m o u n a le tra, b c o m o el c a r á c te r d e
re tro c e so y c c o m o el c a r á c te r d e s u b r a y a d o , el le n g u a je L y re p r e s e n ta p a la b ra s s u ­
b ra y a d a s. L a c o n c lu s ió n es q u e n o se p u e d e u tiliz a r u n a g r a m á tic a p a r a d e s c rib ir
p a la b ra s s u b r a y a d a s d e esta fo rm a . P o r o t r a p a rte , si se re p r e s e n ta u n a p a la b r a s u ­
b r a y a d a m e d i a n t e u n a s e c u e n c ia d e tr ip le s le tr a - r e tr o c e s o - s u b r a y a d o , e n t o n c e s se
p u e d e n r e p r e s e n ta r la s p a la b ra s s u b r a y a d a s c o n la e x p re s ió n re g u la r (abe)*. □

E s in te r e s a n te o b s e r v a r q u e le n g u a je s m u y sim ila re s a L \, L 2 y L y s o n in d e p e n ­
d ie n te s del c o n te x to . P o r e je m p lo , L \ = {w nv* | w e s tá e n (a | b)*}, d o n d e w R rep re­
s e n ta u n a w in v e rtid a , es in d e p e n d ie n te del c o n te x to . S e g e n e ra p o r la g ra m á tic a
4.3 ESCRITURA D E U N A G R A M A T IC A 185

S -+ a S a | b S b | c

El le n g u a je V 2 = {a"b”'c,nd" | n ^ 1 y ni ^ 1} es in d e p e n d ie n te del c o n te x to , c o n la
g ra m á tic a

S aSci ciAci
A - » bA c be

A s im is m o . L " = | n ^ I y m > 1} e s in d e p e n d ie n te d e l c o n te x to , c o n la
g ra m á tic a

S -» AB
A -> a A h | ab
B -> c B J | cd

P o r ú ltim o . L'y = ja"b" | n > I } es in d e p e n d ie n te del c o n te x to , c o n la g ra m á tic a

5 -► a S b | ab

E s c o n v e n ie n te o b s e rv a r q u e L \ e s el típ ic o e je m p lo d e le n g u a je n o d e fin ib le p o r
n in g u n a e x p re s ió n reg u la r. C o m o p r u e b a , s u p ó n g a s e q u e Z /3 fu era el le n g u a je d e fi­
n id o p o r u n a e x p re s ió n reg u la r. A s im is m o , s u p ó n g a s e q u e se p u d ie r a c o n s tr u i r un
A F D D q u e a c e p ta r a L \ . D d e b e te n e r u n n ú m e r o fin ito d e e s ta d o s , p o r e je m p lo k.
C o n s id é re s e la s e c u e n c ia d e e s ta d o s s0, s ,, s 2 s k in tr o d u c id o s p o r D al h a b e r
le íd o € , a. aa ak. E s d ecir, s, es el e s ta d o v is ita d o p o r D al h a b e r le íd o i c a ra c ­
teres a.

camino etiquetado a’ '

Fig. 4.8. A F D D q u e acepta a'b' y a ‘b‘.

P u e s to q u e D só lo tie n e k e s ta d o s d is tin to s , al m e n o s d o s e s ta d o s d e la s e c u e n c ia
% s i. s2 sk d e b e n s e r el m is m o , p o r e je m p lo s , y Sj. D e sd e el e s ta d o .y„ u n a
s e c u e n c ia d e i c a ra c te re s b lleva a D a u n e s ta d o d e a c e p ta c ió n f y a q u e a'b' e s tá en
L y . P e r o e n to n c e s ta m b ié n h a y u n c a m i n o d e s d e el e s ta d o in icial s0 a s¡ y d e a h í a /
e tiq u e ta d o c o n a 'b \ c o m o se m u e s tr a e n la fig u ra 4 .8 . P o r t a n t o , D ta m b ié n a c e p ta
a'b'. q u e n o está e n Z /3, c o n tr a d ic ie n d o el s u p u e s to d e q u e L ’y es el le n g u a je a c e p ­
t a d o p o r D.
C o lo q u ia lm c n te , se d ic e q u e “ u n a u t ó m a t a fin ito n o p u e d e c o n t a r ” , lo c u a l sig­
nifica q u e u n a u t ó m a t a fin ito n o p u e d e a c e p ta r u n le n g u a je c o m o L '3, q u e le exigiría
llev ar la c u e n ta del n ú m e r o d e c a ra c te re s a a n te s d e v e r lo s c a ra c te re s b. A sim is m o ,
se dice q u e “ u n a g ra m á tic a p u e d e llev ar la c u e n ta d e d o s e le m e n to s , p e r o n o d e tres”,
p u e s to q u e c o n u n a g r a m á tic a se p u e d e d e f in ir L'y p e r o n o Ly.
186 ANALISIS SINTA C TIC O

4.4 A N A LISIS SIN TA CTICO D ESC EN D EN TE

En esta secció n se in tr o d u c e n las ¡deas b á sic a s d e l a n á lis is s in tá c tic o d e s c e n d e n te y


se e n s e ñ a a c o n s tr u i r u n a fo rm a e fic ien te s in r e tr o c e s o d e u n a n a liz a d o r s in tá c tic o
d e s c e n d e n te lla m a d a a n a liz a d o r s in tá c tic o p re d ic tiv o . S e d e f in e la clase d e g r a m á ti­
c a s LL( 1). a p a r ti r d e las c u a le s se p u e d e n c o n s tr u i r d e m a n e r a a u t o m á ti c a a n a liz a ­
d o r e s s in tá c tic o s p r e d ic tiv o s . A d e m á s d e f o r m a liz a r el e s tu d i o d e los a n a liz a d o r e s
s in tá c tic o s p re d ic tiv o s d e la secció n 2 .4 . se c o n s id e r a n a n a liz a d o r e s s in tá c tic o s p re ­
d ic tiv o s n o recu rsiv o s. E sta secció n c o n c lu y e c o n u n a n álisis s o b re la re c u p e ra c ió n
d e erro res. L os a n a liz a d o r e s s in tá c tic o s a s c e n d e n te s se e s tu d ia n e n la s se c c io n e s 4.5
a 4.7.

A n á lis is s in tá c tic o p or d e s c e n s o re c u r siv o

S e p u e d e c o n s id e r a r el a n á lis is s in tá c tic o d e s c e n d e n te c o m o u n in t e n to d e e n c o n t r a r
u n a d e riv a c ió n p o r la iz q u ie rd a p a r a u n a c a d e n a d e e n tr a d a . T a m b ié n se p u e d e c o n ­
s id e ra r c o m o u n in t e n to d e c o n s tr u i r u n á rb o l d e a n álisis s in tá c tic o p a r a la e n tr a d a
c o m e n z a n d o d e sd e la ra íz y c r e a n d o lo s n o d o s del á rb o l e n o r d e n p rev io . E n la sec­
c ió n 2 .4 se e s tu d ió el c a so esp ecial del a n á lis is s in tá c tic o p o r d e sc e n so re c u rsiv o , lla­
m a d o a n á lis is s in tá c tic o p red ic tiv o . d o n d e n o se n e c e sita re tro c e so . A h o r a se c o n s i­
d e r a u n a fo rm a g en eral d e a n álisis s in tá c tic o d esc e n d e n te , d e n o m in a d o p o r d escen so
re c u rsiv o , q u e p u e d e in c lu ir retro ceso s, es d e c ir, v a rio s e x á m e n e s d e la e n tr a d a . S in
e m b a r g o , n o h a y m u c h o s a n a liz a d o r e s s in tá c tic o s c o n re tro c e so . E n p a rte , p o r q u e
casi n u n c a se n e c e sita el re tro c e so p a r a a n a liz a r s in tá c tic a m e n te las c o n s tru c c io n e s
d e los le n g u a je s d e p r o g ra m a c ió n . E n c aso s c o m o el a n á lis is s in tá c tic o del len g u aje
n a tu r a l, el re tro c e so t a m p o c o es m u y efic ien te , y se p re fie re n los m é to d o s ta b u la re s,
c o m o el a lg o r itm o d e p r o g r a m a c ió n d i n á m i c a d e l e jercicio 4 .6 3 o el m é t o d o d e E ar-
lev [1 9 70]. V éase e n A h o y U llm a n [1 9 7 2 b ] u n a d e s c rip c ió n d e m é to d o s g e n e ra le s
d e a n á lis is sin tá ctic o .
E n el sig u ie n te e je m p lo , el re tro c e so e s n e c e sa rio , y se su g iere u n a fo rm a d e no
p e r d e r la e n t r a d a c u a n d o tie n e lu g a r el retro ceso .

E je m p lo 4 .1 4 . C o n s id é re s e la g r a m á tic a

S —►cA d
A -* a b \a (4 .15)

y la c a d e n a d e e n t r a d a w = cad. P a r a c o n s tr u i r u n á rb o l d e a n á lis is s in tá c tic o d e s ­


c e n d e n te p a r a esta c a d e n a , p r im e r o se c r e a u n á rb o l f o r m a d o p o r u n s o lo n o d o e ti­
q u e t a d o c o n S . U n a p u n t a d o r a la e n t r a d a a p u n t a a c. el p r i m e r s ím b o lo d e w. D es­
p u é s se u tiliza la p r im e r a p ro d u c c ió n d e S p a r a e x p a n d ir el á rb o l y o b te n e r el árb o l
d e la fig u ra 4.9(a).
Se e m p a r e ja la h o ja s itu a d a m á s a la iz q u ie rd a , e tiq u e ta d a c o n t\ c o n el p r im e r
s ím b o lo d e \\\ y a c o n t in u a c i ó n se a p r o x im a el a p u n t a d o r d e e n t r a d a a a. el s e g u n d o
s ím b o lo d e ir, y se c o n s id e r a la sig u ie n te h o ja e tiq u e ta d a c o n A . E n to n c e s se p u e d e
e x p a n d ir A u tiliz a n d o la p r im e r a a lte r n a tiv a d e A p a r a o b te n e r el á rb o l d e la figura
4 .9 (b ). C o m o y a se tie n e u n a c o n c o r d a n c ia p a r a el s e g u n d o s ím b o lo d e la e n t r a d a se
lleva el a p u n t a d o r d e e n t r a d a a d. el te rc e r s ím b o lo d e la e n t r a d a , y se c o m p a r a d
4.4 ANALISIS SINTA CTIC O D E S C E N D E N T E 187

S S S

c
/IV A J c
/l\A J c
/l\A d

a b a
(a) (b) (c)

Fig. 4 .9 . Pasos en el análisis sintáclico descendente.

c o n la h o ja sig u ie n te , e tiq u e ta d a c o n b . C o m o b n o c o n c u e r d a c o n d , se in d ic a fallo


y se regresa a A p a r a s a b e r si ex iste o t r a a lte r n a tiv a d e A q u e n o se h a y a in te n ta d o ,
p e r o q u e p u e d a d a r lu g a r a u n e m p a r e ja m ie n to .
Al reg resar a A, se d e b e re s ta b le c e r el a p u n t a d o r d e e n t r a d a a la p o sic ió n 2 . a q u e ­
lla q u e te n ía al ir a A p o r p r im e r a vez. lo c u a l sig nifica q u e el p r o c e d im ie n to p a r a A
(a n á lo g o al p r o c e d i m i e n t o p a r a n o t e r m i n a l e s d e la Fig. 2 .1 7 ) d e b e a l m a c e n a r el
a p u n t a d o r a la e n t r a d a e n u n a v a ria b le local. S e i n t e n ta a c o n tin u a c ió n la s e g u n d a
a lte r n a tiv a d e .4 p a r a o b te n e r el á rb o l d e la fig u ra 4.9(c). Se e m p a r e ja la h o ja a con
el s e g u n d o s ím b o lo d e w. y la h o ja d. c o n el te rc e r s ím b o lo . C o m o ya se h a p r o d u ­
c id o u n árb o l d e a n á lis is s in tá c tic o p a r a w. se p a r a y se a n u n c i a el é x ito d e la reali­
z a c ió n c o m p le ta del a n álisis s in tá c tic o . □

U n a g ra m á tic a re c u rsiv a p o r la iz q u ie r d a p u e d e h a c e r q u e u n a n a liz a d o r s in tá c ­


tic o p o r d e s c e n s o re c u rsiv o , in c lu s o u n o c o n re tro c e so , e n tr e en u n lazo in fin ito . Es
d ecir, c u a n d o se i n t e n ta e x p a n d ir .4, p u e d e q u e d e n u e v o se esté in t e n t a n d o e x p a n ­
d ir A s in h a b e r c o n s u m i d o n in g ú n s ím b o lo d e e n tra d a .

A n a liz a d o r e s s in tá c tic o s p red ictiv o s

E n m u c h o s casos, e s c rib ie n d o c o n c u id a d o u n a g r a m á tic a , e lim in a n d o s u re c u rsió n


p o r la iz q u ie rd a y fa c to riz a n d o p o r la iz q u ie r d a la g ra m á tic a re s u lta n te , se p u e d e o b ­
te n e r u n a g ra m á tic a a n a liz a b le c o n u n a n a liz a d o r s in tá c tic o p o r d e s c e n s o re c u rsiv o
q u e n o n e c e site re tro c e so , es d ecir, u n a n a liz a d o r s in tá c tic o p red ic tiv o . c o m o se es­
tu d ió e n la secció n 2.4. P a ra c o n s tr u i r u n a n a liz a d o r s in tá c tic o p re d ic tiv o , se d e b e
c o n o c e r, d a d o el s ím b o lo a c tu a l a d e e n t r a d a y el n o te rm in a l A a e x p a n d ir , c u á l d e
las a lte rn a tiv a s d e p ro d u c c ió n A-> a , ¡ a 2 1. . . | a „ es la ú n ic a a lte r n a tiv a q u e d a lu g a r
a u n a c a d e n a q u e c o m ie n c e c o n a. Es d ecir, la a lte r n a tiv a a p r o p ia d a d e b e s e r d etec-
ta b le c o n só lo v e r el p r im e r s ím b o lo al q u e d a lu g a r. Así se d e te c ta n g e n e ra lm e n te
las c o n s tr u c c io n e s d e (lujo d e c o n tr o l d e la m a y o ría d e los len g u ajes d e p r o g r a m a ­
c ió n , c o n s u s p a la b ra s c lav e d ife re n c ia d o ra s . P o r e je m p lo , si se tie n e n las p ro d u c c io ­
nes

prop —> i f ex p r th e n prop e l s e prop


w h ile expr d o prop
b eg in lista —props end

las p a la b ra s c lav e if. w h ile y b eg in in d ic a n q u é a lte r n a tiv a es la ú n ic a c o n p o sib ilid ad


d e é x ito p a r a e n c o n t r a r u n a p ro p o s ic ió n .
188 A N A LISIS SINTA CTIC O

D ia g r a m a s d e tr a n s ic io n e s p ara a n a liz a d o r e s s in t á c tic o s p r e d ic tiv o s

E n la secció n 2 .4 se e s tu d ió la im p la n ta c ió n d e a n a liz a d o r e s s in tá c tic o s p re d ic tiv o s


m e d ia n te p r o c e d im ie n to s recu rsiv o s, c o m o los d e la fig u ra 2 .1 7 . Igual q u e e n la sec­
c ió n 3.4 se v io q u e u n d ia g r a m a d e tr a n s ic io n e s es u n p la n o d ia g ra m a d e flu jo útil
p a r a u n a n a liz a d o r léxico, se p u e d e c r e a r u n d ia g r a m a d e tra n s ic io n e s c o m o p la n
p a r a u n a n a liz a d o r s in tá c tic o p red ic tiv o .
E n seg u id a se e v id e n c ia n v a ria s d ife re n c ia s e n t r e los d ia g r a m a s d e tra n s ic io n e s
p a r a u n a n a liz a d o r léx ico y p a r a u n a n a liz a d o r s in tá c tic o p re d ic tiv o . E n el c a so d e
u n a n a liz a d o r s in tá c tic o , h a y u n d ia g ra m a p a r a c a d a n o te rm in a l. L as e tiq u e ta s d e
las a ris ta s s o n c o m p o n e n t e s lé x ic o s y n o te r m in a le s . U n a tr a n s ic ió n c o n u n c o m ­
p o n e n t e léx ico ( te r m in a l) s u p o n e q u e se d e b e t o m a r d ic h a tr a n s ic ió n si e s e c o m p o ­
n e n te léxico es el sig u ie n te s ím b o lo d e e n t r a d a . U n a tra n s ic ió n c o n u n n o te rm in a l
A es u n a lla m a d a al p r o c e d im ie n to p a r a A.
P a r a c o n s tr u ir el d ia g r a m a d e tra n s ic io n e s d e u n a n a l iz a d o r s in tá c tic o p re d ic tiv o
a p a r tir d e u n a g r a m á tic a , p r im e r o se d e b e e lim in a r la re c u rs ió n p o r la iz q u ie rd a d e
la g r a m á tic a , y d e s p u é s fa c to riz a r d ic h a g r a m á tic a p o r la iz q u ie rd a . L u eg o , p a r a c a d a
n o te r m in a l A se h a c e lo siguiente:

1. C ré e s e u n e s ta d o in icial y u n e s ta d o final (d e re to rn o ).

2. P a ra c a d a p ro d u c c ió n A —> X \X 2 . . . X„. créese u n c a m i n o d e sd e el e s ta d o inicial


al e s ta d o final, c o n a ris ta s e tiq u e ta d a s c o n X t, X 2 Y„.

El a n a liz a d o r s in tá c tic o p re d ic tiv o q u e se d e s p r e n d e d e los d ia g r a m a s d e tr a n s i­


c io n e s se c o m p o r t a c o m o sigue. C o m ie n z a e n el e s ta d o d e in ic io d e l s ím b o lo inicial.
Si d e s p u é s d e a lg u n o s m o v im ie n to s se e n c u e n t r a e n el e s ta d o s c o n u n a a ris ta e ti­
q u e t a d a c o n el te r m in a l a al e s ta d o /. y si el sig u ie n te s ím b o lo d e e n t r a d a e s a , e n ­
to n c e s el a n a liz a d o r s in tá c tic o c a m b i a el c u r s o r d e la e n t r a d a u n a p o s ic ió n a la d e ­
recha y se va al e s ta d o /. Si, p o r o tr a parte, la a ris ta está e tiq u e ta d a c o n u n n o te rm in a l
.4. el a n a liz a d o r s in tá c tic o va al e s ta d o d e in ic io d e A, s in m o v e r el c u r s o r d e la e n ­
tr a d a . Si llega a a l c a n z a r el e s ta d o fin al d e A , i n m e d i a t a m e n t e va al e s ta d o l. h a ­
b ie n d o e n e fe c to “ le íd o " A d e la e n t r a d a c u a n d o se tr a s la d ó del e s ta d o s al /. P or
ú ltim o , si h a y u n a a ris ta d e s a / e tiq u e ta d a c o n € , el a n a liz a d o r s in tá c tic o va in ­
m e d ia ta m e n te del e s ta d o s al t s in a v a n z a r la e n tra d a .
U n p r o g r a m a p a r a h a c e r a n á lis is s in tá c tic o p re d ic tiv o b a s a d o e n u n d ia g r a m a d e
tra n s ic io n e s in te n ta e m p a r e ja r s ím b o lo s te rm in a le s c o n la e n tr a d a , y re a liz a u n a lla­
m a d a p o t e n c i a l m e n t e r e c u r s iv a a u n p r o c e d i m i e n t o s ie m p r e q u e d e b a se g u ir u n a
a r is ta e tiq u e ta d a c o n u n n o te rm in a l. Se p u e d e o b te n e r u n a im p la n ta c ió n n o r e c u r ­
siv a c o n u n a p ila p a r a g u a r d a r los e s ta d o s s c u a n d o h a y u n a tra n s ic ió n c o n u n no
te rm in a l s a lie n d o d e s, y e l im i n a n d o la p ila al a lc a n z a r el e s ta d o final d e u n n o te r­
m in a l. M u y p r o n to se a n a liz a r á m á s d e ta lla d a m e n te la im p la n ta c ió n d e d ia g ra m a s
d e tra n s ic ió n .
El e n f o q u e a n t e r i o r f u n c io n a si el d ia g ra m a d e tr a n s ic io n e s d a d o n o p r e s e n ta in ­
d e t e r m in i s m o , e n el s e n tid o d e q u e h a y a m á s d e u n a tr a n s ic ió n d e s d e u n e s ta d o c o n
la m is m a e n tr a d a . Si ex iste a m b ig ü e d a d , se p u e d e s o lu c io n a r d e u n a f o r m a esp eci­
fica. c o m o se v e rá e n el s ig u ie n te e je m p lo . Si n o se p u e d e e l i m i n a r el i n d e t e r m i ­
n ism o . n o se p u e d e c o n s tr u i r u n a n a liz a d o r s in tá c tic o p re d ic tiv o , p e r o sí u n a n a li­
4.4 AN ALISIS SINTA CTIC O D E SC E N D E N T E 189

z a d o r s i n t á c t i c o p o r d e s c e n s o r e c u r s iv o u t i l i z a n d o el r e tr o c e s o p a r a i n t e n t a r
s is te m á tic a m e n te to d a s las p o sib ilid a d e s, si é s a f u e ra la m e jo r e stra te g ia d e análisis
posible.

E je m p lo 4 .1 5 . L a figura 4 . 10 c o n tie n e u n c o n ju n to d e d ia g ra m a s d e tra n sic io n e s para


la g r a m á tic a (4 .11 ). L as ú n ic a s a m b ig ü e d a d e s se re fie re n a si se d e b e o n o t o m a r u n a
a ris ta € . Si se in te r p r e ta q u e las a ris ta s q u e salen del e s ta d o inicial d e E c o m o in ­
d ic a tiv a s d e t o m a r la tra n s ic ió n c o n + s ie m p r e q u e ésta sea la e n t r a d a sig u ie n te o
t o m a r la tr a n s ic ió n c o n € e n o tr o c a s o , y re a liz a r el m i s m o s u p u e s to p a r a 7V, e n t o n ­
ces se e lim in a la a m b ig ü e d a d y se p u e d e e s c rib ir u n p r o g r a m a d e a n á lis is s in tá c tic o
p re d ic tiv o p a r a la g r a m á tic a (4 .1 1 ). □

S e p u e d e n s im p lif ic a r lo s d i a g r a m a s d e tr a n s i c io n e s s u s t i t u y e n d o u n o s d ia g r a ­
m a s p o r o tro s ; e s ta s s u s titu c io n e s s o n s im ila r e s a las t r a n s f o r m a c io n e s e n las g r a ­
m á tic a s d e la secció n 2.5. P o r e je m p lo , e n la fig u ra 4.1 l(a ), la lla m a d a d e E se h a
r e e m p la z a d o a sí m is m a p o r u n s a lto h a s ta el p r in c ip io d e l d ia g r a m a d e E .

F ig . 4 .1 0 . D i a g r a m a s d e t r a n s i c i o n e s p a r a la g r a m á t i c a ( 4 . 1 1).

E n la figura 4.1 l( b ) se m u e s tr a u n d ia g r a m a d e tra n s ic io n e s e q u iv a le n te p a r a E .


D e s p u é s se p o d r ía s u s titu ir el d ia g r a m a d e la fig u ra 4.11 p a r a la tr a n s ic ió n p a r a E
e n el d ia g r a m a d e E d e la figura 4 .1 0 . o b te n ié n d o s e el d ia g ra m a d e la fig u ra 4 . 1 1(c).
P o r ú ltim o , se o b s e rv a q u e el p r im e r o y te rc e r n o d o s d e la fig u ra 4.11 (c) s o n e q u i ­
v a le n te s y se fu s io n a n . El r e s u lta d o , fig u ra 4.1 l(d ). se re p ite e n el p r im e r d ia g ra m a
190 ANALISIS SIN TA CTIC O

(c) (d)

F ig . 4 . 1 1 . D iagram as d e transiciones simplificados.

d e la figura 4 .1 2 . L as m is m a s té c n ic a s sirv e n p a r a los d ia g r a m a s d e T y T . E n la


figura 4 .1 2 se m u e s tr a el c o n j u n t o c o m p l e t o d e los d ia g r a m a s o b te n id o s . U n a im ­
p la n ta c ió n e n C d e este a n a liz a d o r s in tá c tic o p re d ic tiv o f u n c io n a u n 2 0 ó 25 p o r
100 m á s r á p id a m e n te q u e u n a im p la n ta c ió n en el m is m o le n g u a je d e la figura 4.10.

F ig. 4 .1 2 . D iag ram as d e transiciones sim plificados para las expresiones aritm éticas.

A n á lis is s in tá c tic o p r e d ic tiv o n o re c u r siv o

Se p u e d e c o n s tr u i r u n a n a liz a d o r s in tá c tic o p re d ic tiv o n o re c u rs iv o e x p líc ita m e n te


m a n t e n i e n d o u n a p ila , e n lu g a r d e h a c e r lo i m p l í c i t a m e n t e m e d i a n t e lla m a d a s r e ­
cursivas. El p r o b le m a c lav e d u r a n te el a n á lis is s in tá c tic o p r e d ic tiv o e s d e t e r m in a r la
4.4 ANALISIS SIN T A C T IC O D E S C E N D E N T E 191

p ro d u c c ió n q u e d e b e a p lic a rs e a u n n o te rm in a l. El a n a liz a d o r s in tá c tic o n o r e c u r­


sivo d e la figura 4 .1 3 b u s c a la p ro d u c c ió n q u e d e b e a p lic a rs e e n u n a ta b la d e a n álisis
sin tá ctic o . A c o n tin u a c ió n se verá c ó m o se p u e d e c o n s tr u i r d ir e c ta m e n te la ta b la a
p a r tir d e c ie rta s g ra m á tic a s.

PILA SAI IDA

Fig. 4.13. M odelo de u n an alizad o r sintáctico predictivo n o recursivo.

U n a n a liz a d o r s in tá c tic o p re d ic tiv o g u ia d o p o r ta b la s tie n e u n buffer d e e n tra d a ,


u n a pila, u n a ta b la d e a n á lis is s in tá c tic o y u n a c a d e n a d e salida. El buffer d e e n tra d a
c o n tie n e la c a d e n a q u e se v a a a n a liz a r , s e g u id a d e $. u n s ím b o lo u tiliz a d o c o m o
d e lim ita d o r d e r e c h o p a r a in d ic a r el fin d e la c a d e n a d e e n tr a d a . L a p ila c o n tie n e u n a
se c u e n c ia d e s ím b o lo s g ra m a tic a le s c o n $ e n la p a r te d e a b a jo , q u e in d ic a la b a se d e
la pila. Al p rin c ip io , la p ila c o n tie n e el s ím b o lo inicial d e la g r a m á tic a e n c i m a d e S.
L a ta b la d e a n á lis is s in tá c tic o es u n a m a tr iz b id im e n s io n a l M [ A %a], d o n d e A es u n
n o te rm in a l, y a e s u n te r m in a l o el s ím b o lo $.
S e c o n tro la el a n a liz a d o r s in tá c tic o m e d ia n te u n p ro g ra m a q u e se c o m p o r ta c o m o
sigue. El p r o g r a m a tie n e e n c u e n t a X , el s ím b o lo d e la c im a d e la p ila , y a %el s ím ­
b o lo en c u r s o d e la e n tr a d a . E sto s d o s s ím b o lo s d e t e r m i n a n la a c c ió n del a n a liz a d o r.
E xisten tres posibilidades:

1. Si X = a = S. el a n a liz a d o r s in tá c tic o se d e tie n e y a n u n c i a el éx ito d e la reali­


z a c ió n del análisis.

2. Si .V = a ?£$. el a n a liz a d o r s in tá c tic o sa c a a X d e la p ila y m u e v e el a p u n t a d o r


d e e n t r a d a al sig u ie n te s ím b o lo d e e n tra d a .

3. Si X es u n n o te rm in a l, el p r o g r a m a c o n s u lta la e n t r a d a M [X . a] d e la ta b la M
d e a n á lis is s in tá c tic o . E sta e n t r a d a se rá o u n a p ro d u c c ió n d e X d e la g ra m á tic a
o u n a e n t r a d a d e e rro r. Si, p o r e je m p lo . M [X , a) = {A '-» ÍT W -}, el a n a liz a d o r
sin tá ctic o su stitu y e la A' de la c i m a d e la p ila p o r H T U (con V e n la c im a ). C o m o
salida, se sa b e q u e el a n a liz a d o r s in tá c tic o só lo im p r im e la p ro d u c c ió n u tiliz a d a ;
a h í se p o d r ía e je c u ta r c u a l q u ie r o t r o cód ig o. Si \ f \ X . a] = erro r, el a n a liz a d o r
s in tá c tic o lla m a a u n a r u ti n a d e re c u p e ra c ió n d e erro r.
192 A N A LISIS SINTA CTIC O

Se p u e d e d e s c rib ir el c o m p o r t a m i e n t o d e l a n a liz a d o r s in tá c tic o e n f u n c ió n d e sus


configuraciones, q u e d a n el c o n t e n id o d e la p ila y la e n t r a d a re sta n te .

A lg o r itm o 4 .3 . A n á lisis s in tá c tic o p re d ic tiv o n o recu rsiv o .

E n tra da . U n a c a d e n a w y u n a ta b la d e a n á lis is s in tá c tic o M p a r a la g r a m á tic a G.

Salida. Si w e s tá e n L (G ), u n a d e r iv a c ió n p o r la iz q u ie r d a d e wr, d e lo c o n tr a r io , u n a
in d ic a c ió n d e erro r.

M étodo. Al p r in c ip io , el a n a liz a d o r s in tá c tic o está e n u n a c o n fig u ra c ió n e n la q u e


tie n e a S S en la p ila c o n S . el s ím b o lo inicial d e G e n el to p e , y \\$ e n el buffer d e
e n tr a d a . E n la fig u ra 4 .1 4 se m u e s tr a el p r o g r a m a q u e u tiliza la ta b la d e a n á lis is s in ­
tá c tic o p re d ic tiv o M p a r a p r o d u c i r u n a n á lis is d e la e n tr a d a . □

a p u n ta r ae al p rim e r sím b o lo d e w$;


rep ea t
sea X el sím b o lo d e la cim a d e la pila y a el sím bolo a p u n ta d o por ae:
i f X es un term in al o $ then
if X = a then
ex traer X de la pila y av an za r ae
else error ()
else /* X e s u n n o te r m in a l * /
if M [X, a \ = X - * Y\ Y2 . . . Yk th en begin
extraer X d e la pila;
m eter Yk. y * ., T, en la pila, co n Y { en la cim a:
em itir la p ro d u cció n X -► Y\ . . . Yk
en d
e lse error()
until X = $ /* la pila está vacia */

Fig. 4.14. P ro gram a p a ra análisis sintáctico predictivo.

E je m p lo 4 .1 6 . C o n s id é re s e la g r a m á tic a (4 .1 1 ) del e je m p lo 4 .8 . E n la fig u ra 4 .1 5 se


m u e s tra u n a ta b la d e a n á lis is s in tá c tic o p re d ic tiv o p a r a e s ta g r a m á tic a . L os e sp a c io s
e n b la n c o s o n e n tr a d a s d e e rro r; lo s o t r o s e s p a c io s in d ic a n u n a p ro d u c c ió n c o n la
c u a l e x p a n d ir el n o te rm in a l d e la c i m a e n la p ila . O b sé rv e se q u e a ú n n o se h a in ­
d ic a d o c ó m o se le c c io n a r d ic h a s e n tra d a s , p e r o se in d ic a r á e n brev e.
C o n la e n t r a d a id + id * id el a n a l iz a d o r s in tá c tic o p re d ic tiv o realiza la s e c u e n ­
c ia d e m o v im ie n to s d e la fig u ra 4 .1 6 . El a p u n t a d o r d e e n t r a d a a p u n t a al s ím b o lo d e
la e x tr e m a iz q u ie r d a d e la c a d e n a e n la c o l u m n a E N T R A D A . Si se o b s e r v a n con
a te n c ió n las a c c io n e s d e este a n a l iz a d o r s in tá c tic o , se n o t a q u e está b u s c a n d o u n a
d e riv a c ió n p o r la iz q u ie r d a p a r a la e n t r a d a , es d ecir, las p r o d u c c io n e s e m itid a s son
las d e u n a d e riv a c ió n p o r la iz q u ie rd a . L o s s ím b o lo s d e e n t r a d a q u e y a se h a n e x a ­
m in a d o . se g u id o s d e los s ím b o lo s g ra m a tic a le s d e la p ila (d e la c i m a al fo n d o ), son
las f o r m a s d e frase iz q u ie r d a s d e la d e riv a c ió n . □
4.4 ANALISIS SIN T A C T IC O D E S C E N D E N T E 193

• Sí m b o l o de En t r a d a
No
T erminal *
id + ( ) $

E E -* T E ' e - * te:
E' £'_»+ TE' r->€
T T -+ F T t -* f t
T T '-> t r-+ * F r r->€ r->€
F F -M F-*(E)

Fig. 4.15. T abla d e análisis siniáctico M para la g ram ática (4.11).

P ila Entrada Sa l i d a

SE id + id * id$
SET id + id * id$ E -> T E '
SET F id + id * idS T FT
S E T id id + id * id$ F - * id-
SET + id * idS
SE- + id * idS r-> c
SET + + id * id$ E' + TE'
SET id * idS
SETF id * idS T -» F T
SETi d id * id$ F - > id
SET * id$
SETF* ♦ id$ r *FT
SETF idS
S E T id idS F -* id
SET $
SE ' $ r-> €
S $ E' ~*f

Fig. 4 .1 6 . M o v im ien to s realizados por el an alizad o r sintáctico predictivo c o n la


e n tra d a id + id*id.

P R IM E R O y S IG U IE N T E

S e facilita la c o n s tr u c c ió n d e u n a n a l iz a d o r s in tá c tic o p re d ic tiv o c o n d o s fu n c io n e s


a s o c ia d a s a u n a g r a m á tic a G. E sta s fu n c io n e s . P R I M E R O y S I G U I E N T E , p e r m ite n
rellen ar, s ie m p re q u e sea p o sib le, las e n tr a d a s d e u n a ta b la d e a n á lis is s in tá c tic o p r e ­
d ic tiv o p a r a G . T a m b i é n se p u e d e n u tiliz a r los c o n j u n t o s d e c o m p o n e n te s léxicos
d e v u e lto s p o r la f u n c ió n S I G U I E N T E c o m o c o m p o n e n te s léxicos d e s in c ro n iz a c ió n
d u r a n te la re c u p e ra c ió n d e e rro re s e n m o d o d e p án ico .
194 ANALISIS SIN TA CTIC O

Si a es u n a c a d e n a d e s ím b o lo s g ra m a tic a le s , se c o n s id e r a P R /M E R O (a ) c o m o
el c o n j u n t o d e te rm in a le s q u e in ic ia n la s c a d e n a s d e r iv a d a s d e a. Si a=> e , e n to n c e s
€ ta m b ié n está e n P R I M E R O ( a ) .
S e d e f in e S I G U I E N T E {A ), p a r a el n o t e r m i n a l A , c o m o el c o n j u n t o d e t e r m i ­
n ales a q u e p u e d e n a p a r e c e r in m e d ia t a m e n t e a la d e r e c h a d e A e n a lg u n a fo rm a d e
frase, e s d ecir, el c o n j u n t o d e te rm in a le s a tal q u e h a y a u n a d e r iv a c ió n d e la fo rm a
5= >cl4í?P p a r a a lg ú n a y [5. O b sé rv e se q u e e n a lg ú n m o m e n t o d e la d e riv a c ió n p u ­
d ie ro n h a b e r e x is tid o s ím b o lo s e n tr e A y a . p e r o si asi fu e. d e r iv a r o n a € y d e s a p a ­
re c ie ro n . Si A p u e d e s e r el s ím b o lo s itu a d o m á s a la d e r e c h a en u n a fo rm a d e frase,
e n to n c e s S está en S I G U I E N T E S ).
P a ra c a lc u la r P R I M E R O ( A ) p a r a to d o s los s ím b o lo s g ra m a tic a le s X . a p liq ú e n s e
las reglas sig u ie n te s h a s ta q u e n o se p u e d a n a ñ a d i r m á s te r m in a le s o c a n in g ú n
c o n ju n to P R IM E R O .

1. Si X e s te rm in a l, e n to n c e s P R IM E R O (A ') es {A’¡.

2. Si X c e s u n a p ro d u c c ió n , e n to n c e s a ñ á d a s e e a P R IM E R O (A ^ .

3. Si X es n o te r m in a l y A '—* y , Y 2 . . . Yk e s u n a p ro d u c c ió n , e n to n c e s p ó n g a s e a
en P R I M E R O S ) si, p a r a a lg u n a i, a está e n P R I M E R O S , ) y € está en to d o s
los P R I M E R O S , ) P R I M E R O S , ,): es d ecir, y , . . . Y, , ^ > c . Si c está
e n P R I M E R O ) y ,) p a r a t o d a j = 1 . 2 k % e n to n c e s a ñ á d a se c a P R I­
M E R O S ) . P o r e je m p lo , t o d o lo q u e está e n P R I M E R O ! Y t) s in d u d a está en
P R I M E R O S ). Si y , n o d e r i v a a e , e n t o n c e s n o se a ñ a d e n a d a m á s a P R I ­
M E R O S ) , p e r o si } ', = > € . e n to n c e s se le a ñ a d e P R I M E R O ! T:), y así s u c e siv a ­
m e n te .

A h o r a se p u e d e c a lc u la r P R I M E R O p a r a c u a l q u ie r c a d e n a X \X 2 d e la si­
g u ie n te fo rm a : a ñ á d a n s e a P R I M E R O S ,A % • • • X n) to d o s los s ím b o lo s d is tin to s d e
€ d e P R I M E R O S , ) . Si € está e n P R I M E R O S , ) , a ñ á d a n s e ta m b ié n lo s s ím b o lo s
d is tin to s d e 6 d e P R I M E R O S : ) : si e e s tá t a n t o e n P R I M E R O S ', ) c o m o e n P R I ­
M E R O S : ) , a ñ á d a n s e ta m b ié n los s ím b o lo s d is tin to s d e c d e P R I M E R O S ;» ) , y así
s u c e s iv a m e n te . P o r ú ltim o , a ñ á d a s e c a P R I M E R O S , A " : • - • A'»,) si, p a r a to d a /.
P R I M E R O S , ) c o n tie n e c .
P a r a c a lc u la r S I G U I E N T E S ) p a r a to d o s lo s n o te r m in a le s A, a p liq ú e n s e las re­
g la s s ig u ie n te s h a s ta q u e n o se p u e d a a ñ a d i r n a d a m á s a n i n g ú n c o n j u n t o S I ­
G U IE N T E .

1. P ó n g a s e $ e n S I G U I E N T E S ) , d o n d e S es el s ím b o lo in icial y $ e s el d e lim ita ­


d o r d e r e c h o d e la e n tra d a .

2. Si h a y u n a p ro d u c c ió n A -+ ü # p , e n to n c e s t o d o lo q u e esté e n P R I M E R O ( P )
e x c e p to € se p o n e e n S I G U I E N T E ! # ) .

3. Si h a y u n a p ro d u c c ió n A a B o u n a p r o d u c c i ó n A - * a # p , d o n d e P R I-
M E R O ( P ) c o n t e n g a e (e s d e c ir , P = > * ) , e n t o n c e s t o d o lo q u e e s té e n S I ­
G U I E N T E S ) se p o n e e n S I G U I E N T E ! # ) .
4.4 ANALISIS S IN T A C T IC O D E S C E N D E N T E 195

E je m p lo 4 .1 7 . C o n s id é re s e d e n u e v o la g r a m á tic a (4 .1 1 ). q u e se re p ite a c o n t i n u a ­
ción:
E -> T E
E -+ + T E | €
T FT
Tf *FT | €
F - > ( E ) | id
E n to n c e s:
P R I M E R O ( F ) = P R I M E R O ( T ) = P R I M E R O ( F ) = {(, id}

P R I M E R O S ) = {+ , * }

P R I M E R O ! 7") = {*>*}

S I G U I E N T E ! F ) = S I G U I E N T E ^ ) = {), $}

S IG U IE N T E ! T ) = S IG U IE N T E ! T ) = { + , ) , $ }

S IG U IE N T E ! F ) = { + , * ) , $ }

P o r e je m p lo , se a ñ a d e n id y el p a r é n te s is iz q u ie r d o a P R I M E R O ( F ) p o r la r e ­
g la 3 d e la d e f in ic ió n d e P R I M E R O , c o n / = 1 e n c a d a c a s o , p u e s t o q u e P R I-
M E R O (id ) = {id} y P R I M E R O ! '! ') = { ( } p o r la regla 1. E n to n c e s p o r la regla 3. c o n
/ = 1. la p r o d u c c i ó n T —» F T ' s u p o n e q u e id y el p a r é n t e s i s i z q u i e r d o e s tá n a s i­
m i s m o e n P R I M E R O ! T). O tr o e j e m p lo m á s . € e s tá e n P R I M E R O ! F ) p o r la r e ­
gla 2.
P a ra c a lc u la r los c o n j u n to s S I G U I E N T E , se p o n e $ e n S I G U I E N T E ( F ) p o r la
regla 1 d e S I G U I E N T E . P o r la regla 2 a p lic a d a a la p ro d u c c ió n F - > ( F ) , el p a r é n ­
tesis d e r e c h o ta m b ié n está e n S I G U I E N T E ! E ). P o r la regla 3 a p lic a d a a la p r o d u c ­
c ió n E T E \ $ y el p a ré n te s is d e r e c h o e s tá n e n S I G U I E N T E ! F ') . C o m o F ^ > €.
ta m b ié n e s tá n e n S I G U I E N T E ! T). C o m o ú l t i m o e je m p lo d e la a p lic a c ió n d e la s re­
glas d e S I G U I E N T E , la p ro d u c c ió n F T E s u p o n e , p o r la regla 2 , q u e t o d o lo q u e
esté e n P R I M E R O ! F ) , salv o € . d e b e p o n e r s e e n S I G U I E N T E ! T ). V a se h a visto
q u e $ está e n S I G U I E N T E ! T ). □

C o n str u c c ió n d e ta b la s d e a n á lis is s in tá c tic o

Se p u e d e u tiliz a r el sig u ie n te a lg o ritm o p a r a c o n s tr u i r u n a ta b la d e a n álisis s in tá c ­


tic o p r e d ic tiv o p a r a u n a g r a m á tic a G . L a id e a e n q u e se b a s a el a lg o r i tm o e s la si­
g u ie n te . S u p ó n g a s e q u e A -> a e s u n a p r o d u c c ió n c o n a e n P R I M E R O ! » ) . E n t o n ­
ces, el a n a liz a d o r s in tá c tic o e x p a n d ir á A p o r a c u a n d o el s ím b o lo a c tu a l d e la e n tra d a
sea a. L a ú n ic a c o m p lic a c ió n su rg e c u a n d o a = € o a = > . E n este caso, se d e b e
e x p a n d ir d e n u e v o A e n a si el s ím b o lo a c tu a l d e la e n t r a d a e s tá e n S I G U I E N T E ! /! ),
o si ya se h a a lc a n z a d o e n S d e la e n t r a d a y S e s tá e n S I G U I E N T E ! /! ).

A lg o r itm o 4 .4 . C o n s tr u c c ió n d e u n a ta b la d e a n á lis is s in tá c tic o p red ictiv o .

E ntrada. U n a g ra m á tic a G.

Salida. L a tab la d e a n á lisis sin tá ctico M.


196 ANALISIS SIN TA CTIC O

M étodo.

1. P a r a c a d a p ro d u c c ió n A —> a d e la g r a m á tic a , d e n s e los p a so s 2 y 3.

2. P a ra c a d a te rm in a l a d e P R I M E R O í a ) , a ñ á d a s e A - > a a M \A %a].

3. Si « e s t á e n P R IM E R C X a ), a ñ á d a s e A a a M [A , b] p a r a c a d a te rm in a l b d e
S I G U I E N T E S ) . Si € está e n P R I M E R O ( a ) y $ está e n S I G U I E N T E S ) , a ñ á ­
d a se A a a M [ A %$).

4. H á g a se q u e c a d a e n t r a d a n o d e f in id a d e M sea error.

E je m p lo 4 .1 8 . A p lic a c ió n d e l a lg o r itm o 4 .4 a la g r a m á tic a (4 .1 1 ). P u e s to q u e P R I-


M E R O C T F ) = P R I M E R O C D = {(, id}, la p ro d u c c ió n E T E h a c e q u e M [ E , (J y
M [ E >id] a d q u i e r a n la e n t r a d a E - > T E .
L a p r o d u c c i ó n E -* + T E h a c e q u e M [ E , + ] a d q u i e r a E - > + T E . L a p r o ­
d u c c i ó n E - * t h a c e q u e M [ E %)] y M [ E , $] a d q u i e r a n E -> p u e s to q u e S I­
G U I E N T E ^ ) = {), $}.
E n la fig u ra 4 .1 5 se m o s t r ó la t a b l a d e a n á lis is s i n t á c t i c o p r o d u c i d a p o r el
a lg o r itm o 4 .4 p a r a la g ra m á tic a (4 . I I ) . □

G r a m á tic a s L L (1 )

S e p u e d e a p lic a r el a lg o r itm o 4 .4 a c u a l q u ie r g r a m á tic a G p a r a p r o d u c ir u n a ta b la


d e a n álisis s in tá c tic o M . S in e m b a r g o , p a r a a lg u n a s g ra m á tic a s , M p u e d e te n e r a l­
g u n a s e n tr a d a s c o n d e fin ic io n e s m ú ltip le s . P o r e je m p lo , si G es re c u rsiv a p o r la iz­
q u ie r d a o a m b ig u a , e n to n c e s M te n d r á a l m e n o s u n a e n t r a d a c o n d e fin ic ió n m ú l t i ­
ple.

E je m p lo 4 . 1 9 . C o n s id é re s e d e n u e v o la g r a m á tic a (4 .1 3 ) del e je m p lo 4 .1 0 ; c o n v ie n e
re p e tirla a c o n tin u a c ió n .

P -> iE tP F | a
F -> e P | €
E-> b

E n la fig u ra 4 .1 7 se m u e s tr a la ta b la d e a n á lis is s in tá c tic o p a r a e s ta g r a m á tic a .

N o Sí m b o l o de Entrada
T e r m in a l •

a b e / t $

P P-*a P-+ iEtPF


F -+ c
F F -» €
F -* e P
E E -* b

F ig. 4 .1 7 . T ab la d e an álisis sin tá c tico M para la g r a m á tic a (4 .1 3 ).


4.4 ANALISIS SIN T A C T IC O D E S C E N D E N T E 197

L a e n t r a d a p a r a A i [ P \ e] c o n t i e n e a P ' -> e P y a P ' - > € , p u e s t o q u e S I ­


G U I E N T E ^ ) = (í', $). L a g r a m á tic a e s a m b ig u a y la a m b ig ü e d a d se m a n ifie s ta en
la elecció n d e la p ro d u c c ió n q u e se v a a u tiliz a r c u a n d o se e n c u e n t r a u n e ( e ls e ) . Se
p u e d e re so lv e r la a m b ig ü e d a d e s c o g ie n d o F - * eP. E sta e le c c ió n c o r r e s p o n d e a a s o ­
c ia r los e l s e c o n los th e n p re v io s m á s c e rc a n o s . O b sé rv e se q u e la elecció n d e S ' -+ *
im p e d ir ía q u e c se in s e rta ra e n la p ila o se e lim in a r a d e la e n tr a d a . lo c u a l, p o r s u ­
p u e s to . e s in c o rre c to . □

U n a g r a m á tic a c u y a ta b la d e a n á lis is s in tá c tic o n o tie n e e n tr a d a s c o n d e fin ic io ­


nes m ú ltip le s se d e f in e c o m o LIA I). L a p r im e r a “ L ” d e L L (1 ) r e p re s e n ta ( p o r lefl,
en inglés, izquierda ) el e x a m e n d e la e n t r a d a d e iz q u ie r d a a d e re c h a , la s e g u n d a “ L "
re p re s e n ta u n a d e riv a c ió n p o r la iz q u ie rd a , y el “ 1” es p o r u tiliz a r u n s ím b o lo de
e n t r a d a d e e x a m e n p o r a n t i c i p a d o a c a d a p a s o p a r a t o m a r la s d e c is io n e s d e la a c ­
c ió n en el a n á lis is s in tá c tic o . S e p u e d e d e m o s t r a r q u e el a lg o r itm o 4 .4 p r o d u c e p a ra
to d a g r a m á tic a G en fo rm a LL( I ) u n a ta b la d e a n álisis s in tá c tic o q u e a n a liz a todas,
y e x c lu s iv a m e n te , las frases d e G.
L as g r a m á tic a s L L ( I ) tie n e n v a ria s p ro p ie d a d e s d is tin tiv a s. N in g u n a g ra m á tic a
a m b ig u a o re c u rs iv a p o r la iz q u ie rd a p u e d e s e r LL( I ). T a m b ié n se p u e d e d e m o s t r a r
q u e u n a g ra m á tic a G es LL( I ) si. y só lo si, c u a n d o A - » a | (3 se a n d o s p ro d u c c io n e s
d is tin ta s d e G se c u m p le n las sig u ie n te s c o n d ic io n e s:

1. P a ra n in g ú n te rm in a l a t a n t o u c o m o P d e riv a n a la vez c a d e n a s q u e c o m ie n c e n
c o n a.

2. A lo s u m o u n a d e a y P p u e d e d e r iv a r la c a d e n a vacía.
3. Si P = > e , a n o d e r iv a n in g u n a c a d e n a q u e c o m i e n c e c o n u n te r m in a l e n SI-
G U IE N T E M ).

E stá c la ro q u e la g r a m á tic a (4 .1 1 ) p a r a las e x p re s io n e s a r itm é tic a s es LL (1). N o lo


e s la g ra m á tic a (4 .1 3 ). q u e m o d e la las p ro p o s ic io n e s ¡f-th e n -e b e .
Q u e d a la c u e s tió n d e lo q u e se d e b e h a c e r c u a n d o la ta b la d e a n á lis is s in tá c tic o
tie n e e n tr a d a s c o n d e fin ic io n e s m ú ltip le s. U n r e c u rs o es t r a n s f o r m a r la g ra m á tic a
e l im i n a n d o to d a re c u rs ió n p o r la iz q u ie r d a y fa c to riz a n d o p o r la iz q u ie rd a s ie m p re
q u e sea posible, c o n la e s p e r a n z a d e p r o d u c ir u n a g r a m á tic a p a r a la c u a l la ta b la d e
a n álisis s in tá c tic o n o te n g a e n tr a d a s c o n d e fin ic io n e s m ú ltip le s. D e s g ra c ia d a m e n te ,
hay a lg u n a s g r a m á tic a s a las q u e n in g u n a tr a n s f o r m a c ió n c o n v e r tir á en L L (1). p o r
e jem p lo , la g ra m á tic a ( 4 . 13). c u y o len g u aje n o tien e n in g u n a g ra m á tic a LL( 1). C o m o
y a se h a visto, ta m b ié n e s p o s ib le a n a liz a r s in tá c tic a m e n te la g r a m á tic a (4 .1 3 ) c o n
u n a n a liz a d o r p re d ic tiv o h a c ie n d o a r b i t r a r i a m e n t e q u e M [ P \ e) = { F —* eP). En
g en eral, n o h a y reglas u n iv e rs a le s p o r las q u e las e n tr a d a s c o n e n tr a d a s m ú ltip le s se
p u e d a n c o n v e r tir en e n t r a d a s d e u n s o lo v a lo r sin q u e a fe c te al le n g u a je re c o n o c id o
p o r el a n a liz a d o r.
L a m a y o r d ific u lta d al u s a r el a n á lis is s in tá c tic o p re d ic tiv o c o n s is te e n escrib ir
u n a g r a m á tic a p a r a el le n g u a je f u e n te tal q u e el a n a liz a d o r se p u e d a c o n s tr u i r a p a r ­
ti r d e d ic h a g r a m á tic a . A u n q u e son fáciles d e realizar, la e lim in a c ió n d e la recursi-
v id a d p o r la iz q u ie rd a y la fa c to riz a c ió n p o r la iz q u ie rd a , h a c e n q u e la g ra m á tic a
re s u lta n te sea d ifícil d e le er y d e u tiliz a r p a r a la tra d u c c ió n . P a ra d i s m i n u i r esta d i­
ficu ltad . u n a o rg a n iz a c ió n h a b itu a l d e u n a n a liz a d o r s in tá c tic o e n u n c o m p i l a d o r es
198 A N A LISIS SINTA CTIC O

u tiliz ar u n a n a liz a d o r s in tá c tic o p re d ic tiv o p a r a las c o n s tr u c c io n e s d e c o n tr o l y la


p re c e d e n c ia d e o p e r a d o r e s ( q u e se e s tu d ia n e n la S ec. 4 .6 ) p a r a las ex p resio n es. Sin
e m b a rg o , si h a y d is p o n ib le u n g e n e r a d o r d e a n a liz a d o r e s s in tá c tic o s L R , c o m o el
q u e se e s tu d ia e n la secció n 4 .9 . se p u e d e n a p r o v e c h a r a u t o m á t i c a m e n t e to d a s las
v e n ta ja s del a n álisis s in tá c tic o p re d ic tiv o y d e la p re c e d e n c ia d e o p e ra d o re s .

R ec u p er a ció n d e e r r o r e s en e l a n á lis is s in tá c tic o p red ictiv o

L a pila d e u n a n a liz a d o r s in tá c tic o n o re c u rs iv o h a c e e x p líc ito s lo s te rm in a le s y n o


te rm in a le s q u e el a n a liz a d o r e s p e ra e m p a r e ja r c o n el re s to d e la e n tr a d a . P o r ta n to ,
se h a r á re fe re n c ia a los s ím b o lo s d e la p ila d e u n a n a l iz a d o r s in tá c tic o e n la sig u ie n te
e x p o sic ió n . D u r a n te el a n á lis is s in tá c tic o p r e d ic tiv o se d e te c ta u n e r r o r c u a n d o el
te rm in a l d e la c i m a d e la p ila n o c o n c u e r d a c o n el sig u ie n te s ím b o lo d e e n t r a d a o
c u a n d o el n o te rm in a l A está en la c im a d e la p ila , a es el sig u ie n te s ím b o lo d e e n ­
tra d a . y la e n t r a d a M [ A %a] d e la ta b la d e a n álisis s in tá c tic o está vacía.
L a re c u p e ra c ió n e n m o d o d e p á n ic o se b a s a e n la id e a d e sa lta rse s ím b o lo s d e la
e n tra d a hasta q u e a p a re z c a u n c o m p o n e n te léxico q u e p e rte n e z c a a u n c o n ju n to se­
le c c io n a d o d e c o m p o n e n te s léx ico s d e s in c ro n iz a c ió n . S u e fe c tiv id a d d e p e n d e d e la
elecció n del c o n j u n t o d e s in c ro n iz a c ió n . L os c o n j u n to s d e b e n elegirse d e fo rm a q u e
el a n a liz a d o r s in tá c tic o se re c u p e re c o n r a p id e z d e lo s e rro re s c o n m á s p r o b a b ilid a ­
d e s d e o c u r r ir e n la p rá c tic a . A lg u n a s té c n ic a s h e u r ís tic a s s o n las siguientes:
1. C o m o p u n t o d e p a r ti d a , se p u e d e n c o l o c a r to d o s lo s s ím b o l o s d e SI-
G U IE N T E (.-I) d e n t r o del c o n j u n t o d e s in c ro n iz a c ió n p a r a el n o te r m in a l A. Si
se saltan c o m p o n e n te s léxicos h a s ta e n c o n t r a r u n e l e m e n t o d e S I G U I E N T E S )
y se saca a A d e la pila, es p ro b a b le q u e el a n á lis is s in tá c tic o p u e d a c o n tin u a r .

2. N o es su fic ie n te u sa r S I G U I E N T E S ) c o m o c o n j u n t o d e s in c ro n iz a c ió n p a r a A.
P o r e je m p lo , si los s ím b o lo s d e p u n t o y c o m a t e r m i n a n las p ro p o s ic io n e s , c o m o
e n C . e n to n c e s las p a la b ra s c lav e q u e c o m ie n z a n p ro p o s ic io n e s p u e d e n n o a p a ­
recer e n el c o n j u n t o S I G U I E N T E d e l n o te r m in a l q u e g e n e ra las ex p resio n es.
P o r ta n to , u n p u n to y c o m a q u e falte d e s p u é s d e u n a asig n ac ió n p u e d e d a r c o m o
re s u lta d o q u e se salte la p a la b ra c la v e q u e in ic ia la sig u ie n te p ro p o s ic ió n . A m e ­
n u d o h a y u n a e s tr u c tu r a je r á r q u i c a e n la s c o n s tr u c c io n e s d e u n len g uaje: p o r
e je m p lo , las e x p re s io n e s a p a r e c e n d e n t r o d e p ro p o s ic io n e s, las c u a le s a p a re c e n
d e n tro d e blo ques, y a s í su c e siv a m e n te . Se p u e d e n a ñ a d i r al c o n ju n to d e sin cro ­
n iz a c ió n d e u n a c o n s tr u c c ió n d e m e n o r je r a r q u í a los s ím b o lo s q u e in ic ia n las
c o n s tru c c io n e s d e m a y o r je ra rq u ía . P o r e jem p lo , se p u e d e n ag reg ar p a la b ra s clave
q u e c o m ie n z a n p ro p o s ic io n e s a los c o n j u n t o s d e s in c ro n iz a c ió n p a r a lo s n o te r­
m in a le s q u e g e n e r a n ex p resio n es.

3. Si se a ñ a d e n s ím b o lo s d e P R I M E R O S ) al c o n j u n t o d e s in c ro n iz a c ió n p a r a el
n o te r m in a l A. e n to n c e s se p u e d e c o n t i n u a r el a n á lis is s in tá c tic o s e g ú n A si a p a ­
rece e n la e n t r a d a u n s ím b o lo d e PR IM ER C X .4).

4. Si u n n o te r m in a l p u e d e g e n e r a r la c a d e n a v acía, se p u e d e u s a r la p ro d u c c ió n
q u e d e riv e a € c o m o a lte r n a tiv a p o r o m is ió n . E sto p u e d e p o s p o n e r a lg u n a d e ­
te c c ió n d e e r r o r e s p e r o n o la o m is ió n d e u n e r r o r . E ste m é t o d o r e d u c e el n ú ­
m e r o d e n o te rm in a le s q u e h a y q u e c o n s id e ra r d u r a n te la re c u p e ra c ió n del error.
4 .4 ANALISIS SIN T A C T IC O D E S C E N D E N T E 199

5. Si n o se p u e d e e m p a r e ja r u n te rm in a l d e la c i m a d e la pila, u n a idea sen cilla es


s a c a r el te rm in a l, e m iti r u n m e n s a je q u e in d i q u e q u e se in s e rtó el te r m in a l y
c o n t i n u a r el an álisis. E n re a lid a d , este m é to d o c o n s id e r a al c o n j u n t o d e sin c ro ­
n iz a c ió n d e u n c o m p o n e n t e léx ico c o m o si e s tu v ie ra c o m p u e s t o p o r to d o s los
o tro s c o m p o n e n te s léxicos.

E je m p lo 4 .2 0 . U tiliz a r lo s s ím b o lo s d e S I G U I E N T E y P R I M E R O c o m o c o m p o ­
n e n te s léxicos d e s in c ro n iz a c ió n f u n c io n a b a s ta n te b ie n c u a n d o las e x p re s io n e s se
a n a liz a n s in tá c tic a m e n te s e g ú n la g r a m á tic a (4 .1 1 ). L a ta b la d e a n á lis is s in tá c tic o
p a r a esta g r a m á tic a d e la fig u ra 4 .1 5 se re p ite e n la fig u ra 4 .1 8 . d o n d e “s i n c ” in d ic a
los c o m p o n e n te s léx ico s d e s in c ro n iz a c ió n o b te n id o s d e l c o n j u n t o S I G U I E N T E del
n o te rm in a l e n c u e s tió n . L o s c o n j u n t o s S I G U I E N T E p a r a los n o te r m in a le s se o b ­
tie n e n del e je m p lo 4.17.
L a ta b la d e la figura 4 .1 8 d e b e u tiliz a rse d e la f o r m a sig u ie n te . Si el a n a liz a d o r
s in tá c tic o b u sc a la e n t r a d a ;l/[.-L a] y v e q u e e s tá en b la n c o , d e b e sa lta rse el s ím b o lo
d e e n t r a d a a. Si la e n t r a d a es sin c . se saca el n o te rm in a l d e la c i m a d e la p ila para
c o n t i n u a r el an álisis. Si u n c o m p o n e n t e léx ico d e la c im a d e la pila n o c o n c u e r d a
c o n el s ím b o lo d e e n tr a d a , e n to n c e s se saca el c o m p o n e n t e léxico d e la pila, c o m o
y a se ha m e n c io n a d o .
C o n la e n t r a d a e r r ó n e a )id* + ¡d. el a n a liz a d o r s in tá c tic o y el m e c a n is m o d e r e ­
c u p e r a c ió n d e e rro re s d e la fig u ra 4 .1 8 se c o m p o r t a n c o m o en la fig u ra 4 .1 9 .

No Sí m b o l o de Entrada
T erminal *
id + ( ) $
E E-+TE' E -* T E ' sinc sinc
E' E'-> + T E ' /;-> €
I T -* F T sinc T -* E T sinc sinc
T r-> € r-> * F T /■->€ /'*->€
F E->id sinc sinc F-M E) sinc sinc

Fig. 4 .1 8 . C o m p o n e n te s léxicos d e sincronización a ñ a d id o s a la tabla d e análisis


sintáctico de la figura 4 . 15.

El a n álisis a n t e r i o r d e la re c u p e ra c ió n e n m o d o d e p á n i c o n o tr a ta c! a s p e c to im ­
p o r t a n t e d e los m e n s a je s d e e rro r. E n g e n e ra l, el d is e ñ a d o r del c o m p ila d o r tie n e q u e
p r o p o r c io n a r los m e n s a je s in f o r m a tiv o s d e los erro res.

Recuperación a nivel d e fra se . L a re c u p e ra c ió n a nivel d e frase se a p lic a lle­


n a n d o la s e n tr a d a s e n b la n c o en la ta b la d e a n álisis s in tá c tic o p re d ic tiv o c o n a p u n ­
ta d o r e s a r u ti n a s d e e r r o r . E sta s r u ti n a s p u e d e n c a m b ia r , in s e r ta r o e l i m i n a r s í m ­
b o lo s d e e n t r a d a y e n v ia r los m e n s a je s d e e r r o r a p ro p ia d o s . T a m b ié n p u e d e n s a c a r
e le m e n to s d e la pila. S e c u e s tio n a si se d e b e p e r m itir la a lte ra c ió n d e los s ím b o lo s
d e la pila o la in tr o d u c c ió n d e s ím b o lo s n u e v o s e n ella, p u e s to q u e lo s p a s o s llev ad o s
a c a b o p o r el a n a liz a d o r s in tá c tic o p o d r ía n n o c o r r e s p o n d e r a la d e riv a c ió n d e n in -
200 ANALISIS SINTA CTIC O

P ila Entrada Comentario

SE ) id * + id $ error, saltar)
SE id * + id S id está en P R IM E R O < £ )
S E 'T id * + id $
SET E id * + id $
S E T ió id * + id $
SET * + id $
S E T F* * + id S
SET E + id $ error. M [ £ , + ] = sinc
SET + id S E ha sido extraída de la pila
SE' + id S
SET + + ¡d S
S E 'T id S
S E ’T F id $
$ £ ' 7 vid ¡d $
SET $
SE ' s
S $

F ír. 4 .1 9 . M o v im ien to s p a ra el análisis y la recuperación d e erro res realizados p o r el


an alizad o r sintáctico predictivo.

g u n a p a la b ra d e l le n g u a je . E n c u a lq u ie r c a s o , se d e b e e s ta r seg u ro d e q u e n o p u e d e
h a b e r u n lazo in fin ito . C o m p r o b a r q u e c u a lq u ie r acció n d e re c u p e ra c ió n s u p o n e q u e
se c o n s u m a u n s ím b o lo d e e n t r a d a (o q u e la p ila se a c o r te si y a se h a a lc a n z a d o el
final d e la e n tr a d a ) es u n a b u e n a f o r m a d e p ro te g e rs e c o n t r a d ic h o s lazos.

4 .5 A N A L I S I S S I N T A C T I C O A S C E N D E N T E

E n esta se c c ió n se in tr o d u c e u n e s tilo g en eral d e a n álisis s in tá c tic o a s c e n d e n te , c o ­


n o c id o c o m o a n álisis s in tá c tic o p o r d e s p la z a m ie n to y re d u c c ió n . E n la se c c ió n 4 .6
se in tr o d u c e u n a f o r m a fácil d e a p lic a r el a n á lis is p o r d e s p la z a m ie n to y re d u c c ió n ,
lla m a d a a n álisis s in tá c tic o p o r p re c e d e n c ia d e o p e ra d o re s . E n la secció n 4.7 se es­
tu d ia u n m é to d o m u c h o m á s g e n e ra l d e a n á lis is s in tá c tic o p o r d e s p la z a m ie n to y re­
d u c c ió n . lla m a d o a n álisis s in tá c tic o L R . El a n álisis s in tá c tic o L R se u tiliz a en varios
g e n e r a d o r e s a u t o m á ti c o s d e a n a liz a d o r e s sin tá c tic o s.
El a n á lis is s in tá c tic o p o r d e s p la z a m ie n to y re d u c c ió n i n t e n ta c o n s tr u i r u n árbol
d e a n á lis is s in tá c tic o p a r a u n a c a d e n a d e e n t r a d a q u e c o m i e n z a p o r las h o ja s (el
f o n d o ) y a v a n z a h a c ia la r a íz (la c im a ). Se p u e d e c o n s id e r a r este p ro c e s o c o m o de
“ r e d u c ir " u n a c a d e n a w al s ím b o lo in icial d e la g r a m á tic a . E n c a d a p a so d e reduc­
ción se s u stitu y e u n a s u b e a d e n a d e t e r m in a d a q u e c o n c u e r d e c o n el la d o d e r e c h o d e
u n a p ro d u c c ió n p o r el s ím b o lo del la d o iz q u ie r d o d e d ic h a p r o d u c c ió n y si e n c a d a
p a so se elige c o r r e c ta m e n te la s u b e a d e n a . se tra z a u n a d e riv a c ió n p o r la d e r e c h a en
s e n tid o in v e rso .
4.5 ANALISIS SINTA C TIC O A S C E N D E N T E 201

E je m p lo 4 .2 1 . C o n s id é re s e la g ra m á tic a

S - * a A fíe
A Abe ¡ h
fí-> d

L a frase abhecle se p u e d e re d u c ir a S p o r los sig u ie n te s pasos:

abbcde
aAhcde
a A de
a A fíe
S

S e e x a m in a abbcde b u s c a n d o u n a s u b c a d e n a q u e c o n c u e r d c c o n el la d o d e r e c h o d e
a lg u n a p ro d u c c ió n . L as s u b c a d e n a s b y d sirv en . E líjase la b s itu a d a m á s a la iz­
q u ie r d a y s u stitu y a se p o r A , el la d o iz q u ie r d o d e la p ro d u c c ió n A - » b\ a s í se o b tie n e
la c a d e n a aAbcde. A c o n t in u a c i ó n , las s u b c a d e n a s A be, b y d c o n c u e r d a n c o n el lado
d e r e c h o d e a lg u n a p ro d u c c ió n . A u n q u e b es la s u b c a d e n a s itu a d a m á s a la iz q u ie rd a
q u e c o n c u e r d a c o n el l a d o d e r e c h o d e u n a p r o d u c c i ó n , se elige s u s t it u ir la s u b c a ­
d e n a A b e p o r A . q u e es el la d o d e r e c h o d e la p ro d u c c ió n A -* A be. Se o b tie n e a h o ra
tiAde. S u s titu y e n d o d e s p u é s d p o r B. q u e es el la d o iz q u ie rd o d e la p ro d u c c ió n f í - * d ,
se o b tie n e a A fíe . A h o r a se p u e d e s u s t it u ir to d a esta c a d e n a p o r S. P o r t a n t o , m e ­
d ia n te u n a s e c u e n c ia d e c u a t r o re d u c c io n e s se p u e d e r e d u c ir abbcde a S. D e h e c h o ,
e s ta s re d u c c io n e s tr a z a n la sig u ie n te d e r iv a c ió n p o r la d e r e c h a e n o r d e n in v erso:

S => a A fíe => a A d e => a A b cd e => abbcde □

M angos

I n f o r m a lm e n te , u n “ m a n g o " d e u n a c a d e n a es u n a s u b c a d e n a q u e c o n c u e r d a c o n el
la d o d e r e c h o d e u n a p ro d u c c ió n y c u y a re d u c c ió n al n o te rm in a l del la d o iz q u ie r d o
d e la p ro d u c c ió n re p r e s e n ta u n p a s o a lo la rg o d e la in v e rs a d e u n a d e riv a c ió n p o r
la d e r e c h a . E n m u c h o s c a so s, la s u b c a d e n a s itu a d a m á s a la iz q u ie r d a p q u e c o n ­
c u e r d a c o n el la d o d e r e c h o d e a lg u n a p ro d u c c ió n A P no es un m ango, porque
u n a r e d u c c ió n p o r la p r o d u c c ió n A - » p p r o d u c e u n a c a d e n a n o r e d u c ib le a l s ím ­
b o lo inicial. E n el e je m p lo 4.21, si se su stitu y e ra b p o r / i e n la seg u n d a c a d e n a aAbcde
se o b te n d r ía la c a d e n a a A A cd e q u e n o se p u e d e re d u c ir p o s te r io r m e n te a S . P o r esta
ra z ó n , se d e b e d a r u n a d e fin ic ió n m á s p re c isa d e u n m a n g o .
F o r m a l m e n t e , u n m a n g o d e u n a f o r m a d e frase d e r e c h a y es u n a p r o d u c c ió n
A - * p y u n a p o sic ió n d e y d o n d e la c a d e n a P p o d r ía e n c o n tr a r s e y s u stitu irs e p o r A
p a r a p r o d u c ir la fo rm a d e frase d e r e c h a p re v ia en u n a d e riv a c ió n p o r la d e r e c h a de
y. Es d ecir, si S => aA w => a p u \ e n to n c e s A p si la p o sic ió n q u e sigue d e a e s un
m a n g o d e aP»r. L a c a d e n a w a la d e r e c h a del m a n g o c o n tie n e só lo s ím b o lo s te r m i­
nales. O b sé rv e se q u e d ic e “ u n m a n g o " e n lu g a r d e “el m a n g o " , p o r q u e la g ra m á tic a
p o d ría s e r a m b ig u a , c o n m á s d e u n a d e riv a c ió n p o r la d e r e c h a d e «Pu*. Si u n a g ra ­
m á tic a n o es a m b ig u a , e n to n c e s to d a f o r m a d e frase d e r e c h a d e la g r a m á tic a tien e
e x a c ta m e n te u n m a n g o .
202 ANALISIS SIN TA CTIC O

E n el e je m p lo a n te r io r , abbcde e s u n a f o r m a d e frase d e r e c h a c u y o m a n g o es
. I -* b e n la p o sic ió n 2. Del m is m o m o d o . aA bcde e s u n a fo rm a d e frase d e re c h a
c u y o m a n g o es A - * A b e e n la p o sic ió n 2. A lg u n a s veces se d ic e "la s u b e a d e n a p es
u n m a n g o d e « P h " si están c la ra s la p o sic ió n d e (i y la p ro d u c c ió n .-I - * P q u e se
tie n e n e n m e n te .
E n la fig u ra 4 .2 0 se re p re s e n ta el m a n g o A - » p en el á rb o l d e a n á lis is s in tá c tic o
d e u n a fo rm a d e frase d e r e c h a ap»r. El m a n g o re p re s e n ta al s u b á rb o l c o m p le to si­
t u a d o m á s a la iz q u ie rd a q u e c o n s ta d e u n n o d o y to d o s s u s hijos. E n la fig u ra 4.20,
A es el n o d o in te r io r s itu a d o m á s a b a jo y m á s a la iz q u ie r d a c o n to d o s s u s h ijo s en
el á rb o l. S e p u e d e c o n s id e r a r c o m o “p o d a d e l m a n g o " , es d ecir, e lim in a c ió n d e los
hijos d e A del á rb o l d e a n á lis is s in tá c tic o .

E je m p lo 4 .2 2 . C o n s id é r e s e la sig u ie n te g ra m á tic a :

(1 ) E -*E + E
( 2) e ^ > e*e a
(3 ) E -* (£ ) (4 I6)
(4) E - > id
> la d e riv a c ió n p o r la iz q u ie rd a

fc 3 - fL U i
E = E- E

9 * •+ * > « »
=> I¿ + id: * id ,
=> id, + id; * id.

Fig. 4 .2 0 . El m a n g o A -+ p en el árbol d e análisis sintáctico para apw .

P a ra facilitar la n o ta c ió n se h a n p u e s to s u b ín d ic e s a los s ím b o lo s id y se h a s u b r a ­
y a d o u n m a n g o d e c a d a fo rm a d e frase d e re c h a . P o r e je m p lo , id ( es u n m a n g o d e la
f o r m a d e frase d e r e c h a ¡d| + id? * id*, p o r q u e ¡d es el la d o d e r e c h o d e la p ro d u c c ió n
4.5 ANALISIS SINTA C TIC O A S C E N D E N T E 203

E - > id , y s u s titu ir id , p o r E p r o d u c e la f o r m a d e frase d e r e c h a p re v ia E + id 2 * id».


O b sé rv e se q u e la c a d e n a q u e a p a re c e a la d e r e c h a d e u n m a n g o c o n tie n e só lo s ím ­
b o lo s te rm in a le s .
P u e s to q u e la g ra m á tic a (4 .1 6 ) es a m b ig u a , h a y o tr a d e riv a c ió n p o r la d e r e c h a d e
la m is m a c a d e n a :

e 3 K l£

E + E * id 3

3- E + « 2 * id ,

C o n s id é re s e la fo rm a d e frase d e r e c h a E + E * id ,. E n esta d e riv a c ió n . E + E e s u n


m a n g o d e E + E * id 3, m ie n tr a s q u e i d , p o r si m i s m o e s u n m a n g o d e esta m ism a
fo rm a d e frase d e r e c h a según la d e r iv a c ió n a n te rio r.
L a s d o s d e riv a c io n e s p o r la d e r e c h a d e este e je m p lo s o n a n á lo g a s a las d o s d e r i­
v a c io n e s p o r la iz q u ie r d a d e l e je m p lo 4 .6 . La p r im e r a d e riv a c ió n le d a a * u n a m a ­
y o r p re c e d e n c ia q u e a + , m ie n tr a s q u e la s e g u n d a le d a a + la m a y o r p reced e n cia.

P od a

S e p u e d e o b te n e r u n a d e riv a c ió n p o r la d e r e c h a e n o rd e n in v e rs o m e d i a n t e la “ p o d a
d e m a n g o s ” . E s d e c ir, se c o m ie n z a c o n u n a c a d e n a d e te rm in a le s w q u e se desee
a n a liz a r s in tá c tic a m e n t e . Si w es u n a frase d e la g r a m á tic a e n c u e s tió n , e n to n c e s
ví- = y,,. d o n d e y„ e s la //-ésim a f o r m a d e frase d e r e c h a d e u n a . a ú n d e s c o n o c id a , d e ­
riv ació n p o r la d e re c h a .

S = 7o 3 Y» 3 Y: 3 ••• 3 7 .-. 3 7 , = *■.

P a ra r e c o n s tr u ir esta d e riv a c ió n e n o r d e n in v e rso , se c o lo c a el m a n g o (3„ e n y„ y se


re e m p la z a p„ p o r el la d o iz q u ie r d o d e a lg u n a p ro d u c c ió n A„ —* p„ p a r a o b te n e r la
(n - 1 E ésim a f o r m a d e frase d e r e c h a y„_,. O b sé rv e se q u e a ú n n o se sa b e c ó m o e n ­
c o n t r a r lo s m a n g o s , p e r o p r o n t o se v e rá n los m é to d o s p a r a hacerlo.
D e s p u é s se re p ite este p ro ceso . E s d e c ir, se s itú a el m a n g o p„ i e n y„ i y se r e ­
d u c e este m a n g o p a ra o b te n e r la f o r m a d e frase d e re c h a y„ 2* Si al c o n t i n u a r este
p ro c e s o se p r o d u c e u n a f o r m a d e frase d e r e c h a q u e c o n s te só lo del s ím b o lo inicial
S , e n to n c e s se p a r a y se a n u n c i a la re a liz a c ió n c o n é x ito del a n álisis s in tá c tic o . La
in v e rs a d e la s e c u e n c ia d e p ro d u c c io n e s u tiliz a d a e n estas re d u c c io n e s es u n a deri-
, v ació n p o r la d e r e c h a d e la c a d e n a d e e n tra d a .

E je m p lo 4 .2 3 . C o n s id é re s e la g r a m á tic a (4 .1 6 ) del e je m p lo 4 .2 2 y la c a d e n a d e e n ­
tr a d a id i + ¡d: * id 3. L a s e c u e n c ia d e re d u c c io n e s q u e se m u e s tr a e n la fig u ra 4.21
re d u c e id , + id : * id , al s ím b o lo inicial E . O b sé rv e se q u e la se c u e n c ia d e f o r m a s de
frase d e r e c h a d e este e j e m p lo e s p r e c i s a m e n t e la in v e rs a d e la s e c u e n c ia d e la p ri­
m e r a d e riv a c ió n p o r la d e r e c h a d e l e je m p lo 4 .2 2 . □
204 AN ALISIS SINTA CTIC O

F o r m a df. F r a s e D e r e c h a M a n g o P r o d u c c ió n d e R e d u c c ió n

id , + id: * id? ¡d, F - > id


/: + id : * ¡d? id> id
E + E * id? ¡di E - + id
E + E* E E *E E E* E
E + E E + E E-+ E + E
E

lig . 4.21. R educciones realizadas por el a n a liz a d o r sintáctico p o r d esp laz am ie n to y


reducción.

Im p la n ta c ió n p or m e d io d e u n a p ila d e l a n á lis is s in tá c tic o


por d e s p la z a m ie n to y red u cción

H a y d o s p r o b le m a s a re so lv e r si se va a h a c e r el a n á lis is s in tá c tic o m e d i a n t e p o d a .
El p r im e r o c o n s is te e n s itu a r la s u b e a d e n a a re d u c ir e n u n a f o r m a d e frase d e re c h a ,
y el se g u n d o , e n d e t e r m i n a r q u é p r o d u c c ió n eleg ir e n c a so d e q u e h a y a m á s d e u n a
p ro d u c c ió n c o n d ic h a s u b e a d e n a e n el la d o d e r e c h o . A n te s d e c o n s id e r a r estas c u e s ­
tio n es. c o n sid é re se p r im e r o el tip o d e e s tr u c tu r a s d e d a t o s q u e se d e b e u tiliz a r en un
a n a liz a d o r s in tá c tic o p o r d e s p la z a m ie n to y re d u c c ió n .
U n m o d o a d e c u a d o d e i m p l a n t a r u n a n a liz a d o r s in tá c tic o p o r d e s p la z a m ie n to y
re d u c c ió n e s m e d ia n te la u tiliz a c ió n d e u n a p ila p a r a m a n e ja r los s ím b o lo s g r a m a ­
ticales. y u n buffer d e e n t r a d a p a r a m a n e ja r la c a d e n a n* q u e se h a d e a n a liz a r. Se
u tiliz a $ p a r a m a r c a r el fo n d o d e la p ila y el e x t r e m o d e r e c h o d e la e n t r a d a . Al p r i n ­
c ip io . la p ila e s tá v acia, y la c a d e n a w e s tá e n la e n tr a d a , c o m o sigue:

P il a E n tr a d a

S wS

El a n a liz a d o r s in tá c tic o f u n c io n a d e s p la z a n d o c e r o o m á s s ím b o lo s d e la e n t r a d a a
la p ila h a s ta q u e u n m a n g o (3 esté e n su c im a . E n to n c e s , el a n a l iz a d o r re d u c e p al
la d o iz q u ie rd o d e la p ro d u c c ió n a d e c u a d a . E l a n a liz a d o r re p ite este la z o h a s ta q u e
d e te c ta un e r r o r o h a s ta q u e la pila c o n tie n e el s ím b o lo inicial y la e n tr a d a está vacia:

P il a E n tr a d a

SS $
D e s p u é s d e esta c o n fig u ra c ió n , el a n a liz a d o r se p a r a y a n u n c i a la te r m in a c ió n con
é x ito del a n álisis sin tá ctic o .

E je m p lo 4 .2 4 . H á g a se el r e c o r r id o p a s o a p a so d e las a c c io n e s q u e p u e d e re a liz a r u n
a n a liz a d o r s in tá c tic o p o r d e s p la z a m ie n to y re d u c c ió n p a r a a n a liz a r la c a d e n a d e e n ­
tr a d a id , + id : * id? s e g ú n la g r a m á tic a (4.1 6). u tiliz a n d o la p r im e r a d e r iv a c ió n del
e je m p lo 4 .2 2 . L a s e c u e n c ia se m u e s tr a e n la figura 4 .2 2 . O b s é rv e s e q u e . c ó m o la g ra ­
m á tic a (4 .1 6 ) tie n e d o s d e riv a c io n e s p o r la d e r e c h a p a r a esta e n t r a d a , e x iste o tr a se­
c u e n c ia d e p a so s q u e p u e d e d a r u n a n a liz a d o r p o r d e s p la z a m ie n to y re d u c c ió n , n
4.5 A N A L I S I S SINTACTIC O A S C E N D E N T E 205

P ila Entrada A c ci ó n

(1 ) $ id, + id2 * id3$ desplazar


(2 ) Sid, + id2 * id $ 3 reducir por»K id
(3) SE + id2 * idiS desplazar
(4) SE + id> * id $ 3 desplazar
(5) SE + ¡d> * id $ 3 reducir por •F- -> id
(6) SE + E * id $ 3 desplazar
(7) SE + £* id 3$ desplazar
(8 ) SE + E * íd3 $ reducir por i id
19) SE + E * E $ reducir por iE - > E * E
(1 0 ) SE + E S reducir por .K E + E
(1 1 ) SE $ aceptar

Fig. 4.22. C onfiguraciones del an alizad o r sintáctico p o r d esp laz am ie n to y reducción


co n la e n tra d a id ( + id?*idi.

A u n q u e las p rin c ip a le s o p e r a c io n e s d e l a n a liz a d o r son el d e s p la z a m ie n to y la re­


d u c c ió n . ex isten e n re a lid a d c u a t r o a c c io n e s p o sib le s q u e u n a n a liz a d o r p o r d e s p la ­
z a m ie n to y re d u c c ió n p u e d e realizar: I ) d e s p la z a r. 2) r e d u c ir, 3) a c e p t a r y 4) erro r.

1. En u n a acció n d e desplazar. el sigu ien te s ím b o lo d e e n t r a d a se d e sp la z a a la c im a


d e la pila.

2. E n u n a a c c ió n d e reducir , el a n a l iz a d o r sa b e q u e el e x t r e m o d e r e c h o del m a n g o
está e n la c im a d e la pila. E n to n c e s d e b e localizar el e x tr e m o iz q u ie r d o del m a n g o
d e n t r o d e la pila y d e c id ir el n o te r m in a l c o n q u é d e b e s u s titu ir el m a n g o .

3. E n u n a a c c ió n d e aceptar, el a n a liz a d o r a n u n c i a la te r m in a c ió n c o n é x ito del


a n á lis is s in tá c tic o .

4. E n u n a a c c ió n d e error, el a n a l iz a d o r d e s c u b r e q u e se h a p r o d u c id o u n e r r o r
s in tá c tic o y lla m a a u n a r u ti n a d e re c u p e ra c ió n d e erro res.

H a y u n h e c h o i m p o r t a n t e q u e ju s tific a el u s o d e u n a p ila en el a n álisis s in tá c tic o


p o r d e s p la z a m ie n to y re d u c c ió n : el m a n g o s ie m p re a p a re c e r á e n la c i m a d e la pila,
n u n c a d e n tro . E sto re s u lta o b v io c u a n d o se c o n s id e r a n las fo rm a s p o sib le s d e dos
p a so s su c e siv o s e n c u a lq u ie r d e r iv a c ió n p o r la d e re c h a . E sto s d o s p a s o s p u e d e n ser
d e la fo rm a

(1) .5 => a A z => a f i f l i c => a p y y z

(2) S = * a B x A z => a B x y z => ay x y z

E n el c a so (1). A se s u stitu y e p o r p B \\ y d e s p u é s , el n o te rm in a l s itu a d o m á s a la


d e r e c h a B e n ese la d o d e r e c h o se s u s titu y e p o r y. E n el c a so (2). A se s u s titu y e o tr a
v ez el p r im e r o , p e r o e s ta v ez el la d o d e r e c h o es u n a c a d e n a y q u e c o n s ta só lo d e
te rm in a le s . El sig u ie n te n o te r m in a l s itu a d o m á s a la d e r e c h a B e s ta rá e n a lg ú n lu g a r
a la iz q u ie r d a d e y.
206 ANALISIS SINTA CTIC O

C o n s id é re s e el c a s o ( I ) e n o r d e n in v e rs o , d o n d e u n a n a l iz a d o r s in tá c tic o p o r d e s ­
p la z a m ie n to y re d u c c ió n a c a b a d e a lc a n z a r la c o n fig u ra c ió n

Pila En t r a d a
Sapy vr$

El a n a liz a d o r re d u c e a h o r a el m a n g o y a B p a r a a lc a n z a r la c o n fig u ra c ió n

P ila Entrada
$apB vzS

C o m o tí e s el n o te rm in a l m á s a la d e r e c h a e n a p f t y r . el e x tr e m o d e r e c h o d e l m a n g o
d e a p / f y z n o p u e d e a p a r e c e r d e n t r o d e la p ila . P o r ta n to , el a n a liz a d o r p u e d e des­
p la z a r la c a d e n a y s o b re la pila p a r a a lc a n z a r la c o n fig u ra c ió n

P ila Entrada
Sap By r$

e n la q u e p tf r es el m a n g o , q u e q u e d a re d u c id o a A.
E n el c a so (2). e n la c o n fig u ra c ió n

P ila Entrada
Say xyz$

el m a n g o y está e n la c im a d e la pila. D e s p u é s d e re d u c ir el m a n g o y a tí. el a n a li­


z a d o r p u e d e d e s p la z a r la c a d e n a x y p a r a c o lo c a r el sig u ie n te m a n g o y e n la c im a d e
la pila:

P ila En t r a d a
S a tíx *v r$

El a n a liz a d o r re d u c e a h o r a y a A.
E n a m b o s casos, d e s p u é s d e re a liz a r u n a re d u c c ió n , el a n a liz a d o r tu v o q u e d e s ­
p la z a r c e r o o m á s s ím b o lo s p a r a c o lo c a r el m a n g o sig u ie n te e n la c i m a d e la pila.
N u n c a t u v o q u e b u s c a r d e n t r o d e la p ila p a r a e n c o n t r a r el m a n g o . E ste a s p e c to d e
p o d a d o e s el q u e c o n v ie r te u n a p ila e n u n a e s tr u c tu r a d e d a to s p a r tic u la r m e n te a d e ­
c u a d a p a r a a p lic a r u n a n a liz a d o r s in tá c tic o p o r d e s p la z a m ie n to y re d u c c ió n . A ú n
q u e d a p o r e x p lic a r c ó m o e le g ir la s a c c io n e s p a r a q u e el a n a l i z a d o r p o r d e s p la z a ­
m i e n to y re d u c c ió n tra b a je a d e c u a d a m e n t e . L os a n a liz a d o r e s s in tá c tic o s L R y p o r
p re c e d e n c ia d e o p e r a d o r e s s o n d o s d e e s ta s té c n ic a s y se e s tu d ia r á n e n breve.

Prefijos viables

L o s p re fijo s d e las f o r m a s d e frase d e r e c h a q u e p u e d e n a p a r e c e r e n la pila d e u n a n a ­


liz a d o r sin tá ctic o p o r d e s p la z a m ie n to y red u c c ió n se d e n o m i n a n prefijos viables. U n a
d e fin ic ió n e q u iv a le n te d e u n p re fijo v ia b le e s la d e q u e es u n p re fijo d e u n a fo rm a
d e frase d e r e c h a q u e n o c o n t i n ú a m á s a llá del e x tr e m o d e r e c h o d e l m a n g o s itu a d o
m á s a la d e r e c h a d e esta f o r m a d e frase. C o n e s ta d e fin ic ió n , s ie m p re e s p o sib le a ñ a ­
d ir s ím b o lo s te r m in a le s al final d e u n p re fijo v ia b le p a r a o b te n e r u n a f o r m a d e frase
d e re c h a . P o r ta n to , a p a r e n t e m e n t e n o h a y e r r o r s ie m p re q u e la p o r c ió n e x a m in a d a
d e la e n t r a d a h a s ta u n p u n t o d a d o p u e d a re d u c irs e a u n p re fijo viable.
4.5 ANALISIS SIN T A C T IC O A S C E N D E N T E 207

C o n flic to s d u r a n te e l a n á lis is s in tá c tic o p or d e s p la z a m ie n to y red u cción

E x isten g r a m á tic a s in d e p e n d ie n te s d e l c o n te x to p a r a la s c u a le s n o se p u e d e n u tiliz ar


a n a liz a d o re s s in tá c tic o s p o r d e s p la z a m ie n to y re d u c c ió n . T o d o a n a liz a d o r p o r d e s ­
p la z a m ie n to y re d u c c ió n p a r a e s ta s g r a m á tic a s p u e d e a lc a n z a r u n a c o n fig u ra c ió n en
la q u e el a n a liz a d o r s in tá c tic o , c o n o c ie n d o el c o n t e n id o to ta l d e la p ila y el sig u ie n te
s ím b o lo d e e n tr a d a , n o p u e d e d e c id ir si d e s p la z a r o re d u c ir (u n conflicto d e despla­
zam iento/reducción), o n o p u e d e d e c id ir q u é tip o d e re d u c c ió n e fe c tu a r ( u n conflicto
d e reducción/reducción). A c o n t in u a c i ó n se v e rá n a lg u n o s e je m p lo s d e c o n s tr u c c io ­
nes s in tá c tic a s q u e d a n lu g a r a d ic h a s g ra m á tic a s . T é c n ic a m e n te , estas g ra m á tic a s
n o están d e n t r o d e la clase L R (k) d e g ra m á tic a s d e fin id a e n la secció n 4.7: se les
d e n o m in a g r a m á tic a s n o L R . L a A: d e LR(/c) se refiere al n ú m e r o d e s ím b o lo s d e
p re a n á lisis s o b re la e n tr a d a . P o r lo g en eral, la s g r a m á tic a s u tiliz a d a s e n c o m p ila c ió n
se in c lu y e n e n la clase L R (1 ). c o n u n s ím b o lo d e a n tic ip a c ió n .

E je m p lo 4 . 2 5 . U n a g ra m á tic a a m b ig u a n o p u e d e s e r n u n c a L.R. P o r e je m p lo , c o n ­
sidérese la g ra m á tic a (4 .7 ) d e e l s e a m b ig u o d e la secció n 4.3:

prop - * i f ex p r th e n prop
( i f ex p r th e n prop e l s e prop
' o tro

Si se tie n e u n a n a liz a d o r s in tá c tic o p o r d e s p la z a m ie n to y re d u c c ió n e n la c o n fig u ­


ración

Pita Entrada
. . . i f expr th e n prop e ls e . . . $

n o se p u e d e s a b e r si i f e x p r th e n prop e s el m a n g o , in d e p e n d ie n te m e n te d e lo q u e
a p a r e z c a d e b a j o d e él e n la p ila . A q u í h a y u n c o n f lic to d e d e s p l a z a m i e n t o / r e d u c ­
c ió n . D e p e n d ie n d o d e lo q u e siga al e l s e d e la e n tr a d a , p u e d e s e r c o r r e c to re d u c ir if
ex p r th e n prop a prop, o p u e d e ser c o r r e c to d e s p la z a r e l s e p a r a luego b u s c a r o tr a
prop p a r a c o m p le ta r la a lte r n a tiv a i f e x p r th e n prop e l s e prop. P o r ta n to , n o se p u e d e
s a b e r e n este c a s o si d e s p la z a r o re d u c ir, así q u e la g r a m á tic a n o e s L R ( I). E n g e n e ­
ral. n in g u n a g r a m á tic a a m b ig u a , y c ie r ta m e n te ésta lo es, p u e d e s e r LR(A) p a r a n i n ­
g u n a k.
S in e m b a r g o , se d e b e m e n c io n a r q u e el a n álisis s in tá c tic o p o r d e s p la z a m ie n to y
re d u c c ió n se p u e d e a d a p t a r f á c ilm e n te p a r a a n a liz a r a lg u n a s g r a m á tic a s a m b ig u a s ,
c o m o la g ra m á tic a d e l if-t h e n -e ls e an terio » . C u a n d o se c o n s tr u y e u n o d e e s to s a n a ­
lizad o res p a r a u n a g r a m á tic a q u e c o n te n g a las d o s p ro d u c c io n e s a n te rio re s , h a b rá
u n c o n flic to d e d e s p la z a m ie n to /r e d u c c ió n : c o n e ls e . o b ie n d e s p la z a r o re d u c ir en
p r o p - * i f expr th e n prop. Si el c o n flic to se resu elv e e n f a v o r del d e s p la z a m ie n to , el
a n a liz a d o r se c o m p o r t a r á d e m a n e r a n a tu ra l. E n la secció n 4 .8 se e s tu d ia n lo s a n a ­
lizad ores p a r a d ic h a s g r a m á tic a s a m b ig u a s . □

O t r a c a u s a c o m ú n d e la falta d e c a ra c te rís tic a s L R se p r o d u c e c u a n d o se sabe


q u e se tie n e u n m a n g o , p e r o el c o n t e n id o d e la pila y el sig u ie n te s ím b o lo d e e n tr a d a
n o s o n su fic ie n te s p a r a d e t e r m i n a r q u é p r o d u c c ió n d e b e s e r u tiliz a d a en u n a re d u c ­
c ió n . El sig u ie n te e je m p lo ilu stra esta situ a c ió n .
208 ANALISIS SIN TA CTIC O

E je m p lo 4 .2 6 . S u p ó n g a s e q u e se tie n e u n a n a l i z a d o r léx ico q u e d e v u e lv e el c o m ­


p o n e n t e léxico id p a r a to d o s los id e n tific a d o re s, in d e p e n d ie n t e m e n t e d e su u so . S u ­
p ó n g a s e t a m b i é n q u e el le n g u a je in v o c a p r o c e d i m ie n t o s d a n d o s u s n o m b r e s , c o n
p a r á m e tr o s e n c e r r a d o s e n tr e p arén tesis, y q u e c o n la m is m a s in ta x is se h a c e re fe re n ­
c ia a las m a tric e s. D a d o q u e la tr a d u c c ió n d e ín d ic e s e n las re fe re n c ia s a m a tric e s y
la d e lo s p a r á m e tr o s e n las lla m a d a s a p r o c e d im ie n to s es d is tin ta , se u tiliz an d is tin ­
ta s p ro d u c c io n e s p a r a g e n e r a r listas d e p a r á m e tr o s a c tu a le s e ín d ices. P o r t a n t o , la
g ra m á tic a d e b e t e n e r ( e n tr e o tra s ) p ro d u c c io n e s c o m o :

(1) p r o p - * \á( lista -p a ra m s)


( 2) p r o p - * e x p r : = expr
(3) lista-.param s - * lista -p a ra m s, parám etro
(4) lista -p a ra m s - * parám etro
(5 ) parám etro - * id
(6) expr - * id( lista -e x p r)
(7 ) e x p r-* \ d
(8) lis ta -e x p r - * lis ta -e x p r , expr
(9 ) lis ta - e x p r - * expr

U n a p ro p o s ic ió n q u e c o m ie n c e c o n A( i , J ) p a re c e ría , p a r a el a n a liz a d o r s in ­
táctico , c o m o la c a d e n a d e c o m p o n e n te s léxicos ¡d (id .id ). D e s p u é s d e d e s p la z a r los
tres p r im e r o s c o m p o n e n te s léx ico s d e n t r o d e la pila, u n a n a liz a d o r s in tá c tic o p o r
d e s p la z a m ie n to y re d u c c ió n te n d r ía la c o n fig u ra c ió n

Pi l a Entrada
. . . idl id , id)...

E s e v id e n te q u e se d e b e re d u c ir el id d e la c i m a d e la pila, p e r o ¿ p o r q u é p ro d u c c ió n ?
La e le c c ió n c o r r e c ta e s la p ro d u c c ió n (5 ) si A e s u n p r o c e d im ie n to y si A e s u n a m a ­
triz. la elecció n c o rre c ta es la p r o d u c c ió n (7). L a p ila n o d ic e c u á l; se d e b e u tiliz a r la
in f o r m a c ió n d e la ta b la d e s ím b o lo s o b te n id a d e la d e c la ra c ió n d e A.
U n a s o lu c ió n e s c a m b ia r el c o m p o n e n t e léx ico id e n la p ro d u c c ió n (1 ) a id proc
y u sa r u n a n a liz a d o r léx ico m á s c o m p le jo q u e d e v u e lv a el c o m p o n e n t e léxico id p ro c
c u a n d o re c o n o z c a un id e n tific a d o r q u e sea el n o m b r e d e u n p r o c e d im ie n to . E sto
exig iría q u e el a n a liz a d o r léx ico c o n s u lta r a la ta b la d e s ím b o lo s a n te s d e d e v o lv e r un
c o m p o n e n t e léxico.
Si se h ic ie ra esta m o d ific a c ió n , e n to n c e s al p ro c e s a r A ( i , J ) el a n a liz a d o r s in ­
tá c tic o e sta ría e n la c o n fig u ra c ió n

P ila Entrada
. . . id p r o c (id , id). . .

o e n la c o n fig u ra c ió n a n te r io r . E n el p r im e r caso , se elige la re d u c c ió n p o r la p ro ­


d u c c ió n (5): e n el se g u n d o , p o r la p ro d u c c ió n (7). O b sé rv e se c ó m o el s ím b o lo te r­
c e ro d e la c im a d e la p ila d e t e r m in a q u é re d u c c ió n se d e b e h a c e r, a u n q u e n o esté
im p lic a d o e n la r e d u c c ió n . El a n á lis is s in tá c tic o p o r d e s p l a z a m i e n t o y re d u c c ió n
p u e d e u tiliz a r in f o r m a c ió n q u e esté m u y p o r d e b a jo d e la c i m a d e la p ila p a r a g u ia r
el análisis. D
4.6 ANALISIS SIN T A C T IC O POR PRECED ENCIA D E O P E R A D O R E S 209

4 .6 A N A L I S I S S I N T A C T I C O P O R P R E C E D E N C I A D E O P E R A D O R E S

E n la secció n 4 .7 se e s tu d ia r á la m a y o r clase d e g r a m á tic a s p a r a las q u e se p u e d e n


c o n s tr u i r c o n é x ito a n a liz a d o r e s s in tá c tic o s p o r d e s p la z a m ie n to y re d u c c ió n (las g ra ­
m á tic a s L R ). S in e m b a r g o , p a r a u n a p e q u e ñ a , p e r o im p o r ta n te , clase d e g ra m á tic a s ,
se p u e d e n c o n s tr u i r c o n facilid ad a m a n o e fic ie n te s a n a liz a d o r e s s in tá c tic o s p o r d e s ­
p la z a m ie n to y re d u c c ió n . E sta s g r a m á tic a s tie n e n la p r o p ie d a d ( e n tr e o tr o s re q u isi­
to s f u n d a m e n ta le s ) d e q u e n in g ú n la d o d e r e c h o d e la p ro d u c c ió n e s c ni tie n e d o s
n o te rm in a le s a d y a c e n te s . U n a g r a m á tic a c o n esta ú ltim a p r o p ie d a d se d e n o m in a
gram ática d e operadores.

E je m p lo 4 .2 7 . L a sig u ie n te g r a m á tic a p a r a e x p re s io n e s

E E A E | ( £ ) | - E | id
A - > +-1- | * | / 11

n o e s u n a g r a m á tic a d e o p e ra d o re s , p o r q u e el la d o d e r e c h o E A E tie n e d o s (de h e c h o


tres) n o te rm in a le s c o n s e c u tiv o s . S in e m b a r g o , si se s u stitu y e c a d a u n a d e s u s a lte r­
n a tiv a s p o r A , se o b tie n e la sig u ie n te g r a m á tic a d e o p e ra d o re s:

£ • _ * e + E \ E - E \ E * E I E / E \ E t E \ ( E ) | - E \ id (4 .17)

A c o n tin u a c ió n se d e sc rib e u n a té c n ic a d e a n álisis s in tá c tic o fácil d e im p la n t a r


lla m a d a a n á lis is s in tá c tic o p o r p r e c e d e n c ia d e o p e r a d o r e s . H is tó r ic a m e n t e , la té c ­
n ic a se d e s c rib ió p r im e r o c o m o u n a m a n ip u la c ió n d e c o m p o n e n te s léxicos sin h a c e r
re fe re n c ia a n in g u n a g r a m á tic a s u b y a c e n te . D e h e c h o , c u a n d o se te r m in a d e c o n s ­
t r u i r u n a n a l iz a d o r s in tá c tic o p o r p r e c e d e n c ia d e o p e r a d o r e s a p a r ti r d e u n a g r a ­
m á tic a , se p u e d e e f e c tiv a m e n te p re s c in d ir d e la g r a m á tic a , u tiliz a n d o los n o t e r m i ­
n a le s d e la p ila ta n s ó lo c o m o i n d i c a d o r e s d e lo s a t r i b u t o s a s o c i a d o s a lo s n o
te rm in a le s .
C o m o té c n ic a g e n e ra l d e a n á lis is s in tá c tic o , el a n álisis p o r p re c e d e n c ia d e o p e ­
ra d o re s tie n e v ario s in c o n v e n ie n te s . P o r e je m p lo , es difícil m a n e ja r c o m p o n e n te s lé­
xicos c o m o el sig n o m e n o s , q u e tie n e d o s p re c e d e n c ia s d is tin ta s ( d e p e n d ie n d o d e si
es u n a r io o b in ario ). P e o r a ú n . c o m o la relació n e n tr e u n a g ra m á tic a p a r a el lenguaje
q u e está s ie n d o a n a liz a d o y el m i s m o a n a liz a d o r s in tá c tic o p o r p re c e d e n c ia d e o p e ­
r a d o re s es m u y frágil, n o s ie m p r e se p u e d e t e n e r la s e g u rid a d d e q u e el a n a liz a d o r
a c e p ta e x a c ta m e n te el le n g u a je d e s e a d o . P o r ú ltim o , s ó lo u n a p e q u e ñ a clase d e g ra ­
m á tic a p u e d e a n a liz a rs e u s a n d o las té c n ic a s d e p re c e d e n c ia d e o p e ra d o re s .
S in e m b a r g o , d a d a su se n c ille z , s e h a n c o n s t r u i d o c o n é x ito m u c h o s c o m p i l a ­
d o re s q u e u tiliz a n las té c n ic a s d e a n á lis is s in tá c tic o p o r p re c e d e n c ia d e o p e r a d o r e s
p a r a ex p resio n es. C o n frec u e n c ia , e s to s a n a liz a d o r e s u tiliz a n el d e sc e n so recu rsiv o ,
d e sc rito en la secció n 4 .4 . p a r a p ro p o s ic io n e s y c o n s tr u c c io n e s d e a lto nivel. In clu so
se h a n c o n s tr u i d o a n a liz a d o r e s s in tá c tic o s p o r p re c e d e n c ia d e o p e r a d o r e s p a r a le n ­
g u ajes c o m p le to s.
E n el a n álisis s in tá c tic o p o r p re c e d e n c ia d e o p e ra d o re s , se d e fin e n tr e s relaciones
de precedencia d is ju n ta s . < • . = . y • > , e n tr e a lg u n o s p a re s d e te rm in a le s . E sta s re­
la c io n e s d e p re c e d e n c ia g u ía n la selecció n d e m a n g o s y tie n e n los sig u ie n te s signifi­
cados:
210 A N A LISIS SINTA CTIC O

R e la c i ó n S ignificado

a <■ b a “cede la precedencia a” b


a = b a “tiene la misma precedencia que” b
a •> b tí "tiene más precedencia q u e " b

S e d e b e p r e v e n ir al le c to r d e q u e a u n q u e e s ta s re la c io n e s p u e d e n p a re c e r sim ila re s a
las re la c io n e s a r itm é tic a s “ m e n o r q u e ”, “ igual a ” y “ m a y o r q u e ” , las re la c io n e s de
p re c e d e n c ia tie n e n p ro p ie d a d e s m u y d ife re n te s . P o r e je m p lo , se p o d r ía t e n e r a < • b
y a • > b p a r a el m is m o len g u aje, o p o d r ía n o c u m p lir s e n in g u n a d e a < • b, a = b
y a • > b p a r a a lg u n o s te r m in a le s a y b.
H a y d o s m a n e r a s h a b itu a le s d e d e t e r m i n a r q u é re la c io n e s d e p re c e d e n c ia d e b e n
c u m p lir s e e n tr e u n p a r d e te rm in a le s . El p r im e r m é t o d o q u e se e s tu d ia es in tu itiv o
y se b a sa e n las n o c io n e s tra d ic io n a le s d e a s o c ia tiv id a d y p re c e d e n c ia d e o p e ra d o re s .
P o r e je m p lo , si * tie n e m a y o r p re c e d e n c ia q u e + , se h a c e + < • * y * • > + . Este
m é to d o se e s tu d ia r á p a r a re s o lv e r las a m b ig ü e d a d e s d e la g r a m á tic a (4 .1 7 ) y p e r m i­
tir á e scrib ir p a r a ella u n a n a liz a d o r s in tá c tic o p o r p re c e d e n c ia d e o p e ra d o re s ( a u n ­
q u e el s ig n o m e n o s u n ita r io c a u s e p ro b le m a s ).
El s e g u n d o m é t o d o p a r a s e le c c io n a r las re la c io n e s d e p re c e d e n c ia d e o p e ra d o re s
co n siste e n c o n s tr u i r p r im e r o u n a g ra m á tic a n o a m b ig u a p a r a el len g u aje, u n a g ra ­
m á tic a q u e refleje la a s o c ia tiv id a d y p re c e d e n c ia c o rre c ta s e n s u s á rb o le s d e análisis
s in tá c tic o . E sta ta re a n o es difícil p a r a las e x p re sio n e s: la s in ta x is d e la s e x p re sio n e s
d e la se c c ió n 2 .2 p r o p o r c i o n a el p a r a d ig m a . P a r a la o t r a f u e n te h a b itu a l d e a m b i ­
g ü e d a d , el e ls e a m b ig u o , la g r a m á tic a (4 .9 ) es u n m o d e lo ú til. U n a v e z o b te n id a u n a
g ra m á tic a n o a m b ig u a , ex iste u n m é t o d o m e c á n ic o p a ra , a p a r ti r d e ella, c o n s tr u ir
las re la c io n e s d e p re c e d e n c ia d e o p e r a d o r e s . E sta s re la c io n e s p o d r ía n n o s e r d is ju n ­
tas. y p o d r ía n a n a liz a r u n le n g u a je d is tin to d e l g e n e r a d o p o r la g r a m á tic a , p e r o co n
las clases e s tá n d a r d e e x p re s io n e s a r itm é tic a s , se e n c u e n t r a n p o c o s p r o b le m a s e n la
p rá c tic a . E sta s c o n s tr u c c io n e s n o se e s tu d ia r á n a q u í; véase A h o y U llm a n [1 97 2 b].

U s o d e la s r e la c io n e s d e p r e c e d e n c ia d e o p e r a d o r e s

L a in te n c ió n d e la s re la c io n e s d e p re c e d e n c ia e s d e l im i ta r el m a n g o d e u n a fo rm a
d e frase d e re c h a , c o n < • m a r c a n d o el e x tr e m o iz q u ie rd o , = a p a r e c ie n d o e n el in ­
te rio r d e l m a n g o y • > m a r c a n d o el e x t r e m o d e r e c h o . P a r a m a y o r p re c isió n , s u p ó n ­
gase q u e se tie n e u n a f o r m a d e frase d e r e c h a d e u n a g r a m á tic a d e o p e ra d o re s . El
h e c h o d e q u e n o a p a r e z c a n n o te rm in a le s a d y a c e n te s e n los la d o s d e r e c h o s d e las
p ro d u c c io n e s s u p o n e q u e t a m p o c o n in g u n a f o r m a d e frase d e r e c h a te n d r á d o s n o
te rm in a le s a d y a c e n te s . P o r ta n to , se p u e d e e s c rib ir la f o r m a d e frase d e r e c h a c o m o
Po^ip! . . . a , e n d o n d e c a d a p/ es o € (la c a d e n a v acía) o u n so lo n o te rm in a l, y
c a d a a, es u n so lo te rm in a l.
S u p ó n g a s e q u e e n tr e a, y a , . , se c u m p le e x a c ta m e n te u n a d e las re la c io n e s < • ,
==, o • > . A d e m á s, úsese $ p a r a m a r c a r c a d a e x tr e m o d e la c a d e n a y d e fín a n se $ < • b
y b • > $ p a r a to d o s los te rm in a le s b. A h o r a s u p ó n g a s e q u e se e lim in a n los n o te r­
m in a le s d e la c a d e n a y se c o lo c a la re la c ió n c o rre c ta < *, = o • > , e n t r e c a d a p a r d e
te rm in a le s y e n tr e los te rm in a le s d e los e x tr e m o s y los s ím b o lo s $ q u e m a r c a n los
4.6 ANALISIS S IN T A C T IC O P O R P R E C E D E N C IA D E O P E R A D O R E S 211

finales d e la c a d e n a . P o r e je m p lo , s u p ó n g a s e q u e in ic ia lm e n te se tie n e la fo rm a d e
frase d e re c h a id + id * id y q u e las rela cio n es d e p reced e n cia s o n las d e la figura 4.23.
E stas re la c io n e s s o n a lg u n a s d e las q u e se p o d r ía n esco g er p a r a a n a liz a r s e g ú n la g ra ­
m á tic a (4.17).

¡d + * $
¡d •> •> •>
+ <• •> <• •>
* <• •> •> •>
$ <• <• <•

F ig. 4 .2 3 . R elaciones de precedencia d e operadores.

E n to n c e s , la c a d e n a c o n las re la c io n e s d e p re c e d e n c ia in s e rta d a s es:

$ < • id • > + < • id > * < • id > $ (4 .18)

P o r e je m p lo , se in se rta < • e n t r e el $ d e la iz q u ie r d a e id p u e s to q u e < • es la e n tr a d a


e n la fila $ y la c o l u m n a id . S e p u e d e e n c o n t r a r el m a n g o m e d ia n te el sig u ie n te p ro ­
ceso:

1. E x a m ín e s e la c a d e n a d e s d e el e x t r e m o iz q u ie r d o h a s ta e n c o n t r a r el p r im e r • > .
E n (4 .18 ), e s to o c u r r e e n tr e el p r i m e r id y + .

2. D e sp u é s, e x a m ín e s e h a c ia a tr á s (a la iz q u ie rd a ) s a lta n d o so b re los = h a s ta e n ­
c o n t r a r u n < • . E n (4 .1 8 ) se e x a m in a h a c ia a tr á s h a s ta el s ím b o lo $.

3. El m a n g o c o n tie n e t o d o lo q u e esté a la iz q u ie r d a del p r im e r • > y a la d e r e c h a


del < • e n c o n t r a d o e n el p a s o 2, in c lu id o s los n o te rm in a le s in te r m e d io s o q u e
ro d e e n a < • y • > . (E s n ec e sa ria la in c lu s ió n d e los n o te r m in a le s q u e ro d e a n
p a r a q u e n o a p a r e z c a n d o s n o te r m in a le s a d y a c e n te s e n u n a f o r m a d e frase d e ­
rech a.) E n (4 .1 8 ), el m a n g o e s el p r i m e r id.

Si se tr a b a ja c o n la g r a m á tic a (4 .1 7 ), e n to n c e s se re d u c e id a E. L leg ad o s a este


p u n to , se tie n e la f o r m a d e frase d e r e c h a £ + id * id . D e s p u é s d e re d u c ir los restan tes
id a E c o n los m is m o s p aso s, se o b tie n e la f o r m a d e frase d e r e c h a E + E * E . C o n s i­
d érese a h o r a la c a d e n a $ 4 -* $ o b te n id a e l i m i n a n d o lo s n o te rm in a le s . Si se in s e rta n
las re la c io n e s d e p re c e d e n c ia , se o b tie n e

$ <• + < • * • > $

q u e in d ic a q u e el e x tr e m o iz q u ie r d o d e l m a n g o se e n c u e n t r a e n tr e + y * y q u e el
e x tr e m o d e r e c h o se e n c u e n t r a e n tr e * y $ . E sta s re la c io n e s d e p re c e d e n c ia in d ic a n
q u e , e n la f o r m a d e frase d e r e c h a £ + £ * £ , el m a n g o e s £ * £ . O b sé rv e se c ó m o la s E
q u e r o d e a n * se c o n v ie r te n e n p a r te d e l m a n g o .
C o m o los n o te rm in a le s n o in flu y e n e n el a n á lis is s in tá c tic o , n o h a y q u e p r e o ­
c u p a rs e p o r d ife re n c ia rlo s e n tr e sí. S e p u e d e g u a r d a r u n so lo m a r c a d o r *‘n o te r m i­
n a r ' e n la p ila d e u n a n a liz a d o r s in tá c tic o p o r d e s p la z a m ie n to y re d u c c ió n p a r a in­
d ic a r las p o s ic io n e s p a r a los v alo res d e lo s a trib u to s .
212 A N A LISIS SINTA CTIC O

P o r la e x p o s ic ió n a n te r io r p o d r ía p a re c e r q u e se d e b e e x a m i n a r to d a la f o r m a de
frase d e r e c h a e n c a d a p a so p a r a e n c o n t r a r el m a n g o . E ste n o e s el c a so si se u s a u n a
pila p a r a a l m a c e n a r lo s s ím b o lo s d e e n t r a d a q u e y a h a n a p a r e c id o y si se u tiliz a n las
rela cio n es d e p re c e d e n c ia p a r a g u ia r las a c c io n e s d e u n a n a liz a d o r s in tá c tic o . Si se
c u m p le n las re la c io n e s d e p re c e d e n c ia < • o = e n t r e el s ím b o lo te r m in a l m á s a la
c im a d e la p ila y el sig u ie n te s ím b o lo d e e n tr a d a , el a n a liz a d o r s in tá c tic o h a c e un
d e s p l a z a m i e n t o ; to d a v ía n o h a e n c o n t r a d o el e x t r e m o d e r e c h o d e l m a n g o . Si se
c u m p le la re la c ió n • > , e s n ec e sa ria u n a r e d u c c ió n . E n este p u n t o , el a n a liz a d o r ya
h a e n c o n t r a d o el e x tr e m o d e r e c h o del m a n g o y se p u e d e n u tiliz a r las re la c io n e s d e
p re c e d e n c ia p a r a e n c o n t r a r el e x t r e m o iz q u ie r d o del m a n g o e n la pila.
Si n o se c u m p le n in g u n a re la c ió n d e p re c e d e n c ia e n tr e u n p a r d e te rm in a le s (in ­
d ic a d o c o n u n a e n t r a d a e n b la n c o e n la Fig. 4 .2 3 ). e n to n c e s es q u e se h a d e te c ta d o
u n e r r o r s in tá c tic o y d e b e in v o c a rse u n a r u t i n a d e re c u p e ra c ió n d e l e rro r, c o m o se
e s tu d i a r á m á s a d e l a n t e e n e s ta s e c c ió n . L as id e a s a n t e r io r e s p u e d e n fo rm a liz a rs e
m e d ia n te el sig u ie n te a lg o ritm o .

A lg o ritm o 4 .5 . A lg o ritm o d e a n álisis s in tá c tic o p o r p re c e d e n c ia d e o p e ra d o re s .

Entrada. U n a c a d e n a d e e n t r a d a w y u n a ta b la d e re la c io n e s d e p reced e n cia.

Salida. Si w está b ie n fo r m a d a , re su lta u n a estructura d e á rb o l d e a n á lis is s in tá c tic o ,


c o n u n n o te r m in a l d e p o sic ió n E q u e e tiq u e ta to d o s los n o d o s in te rio re s ; d e lo c o n ­
tra rio , re s u lta u n a in d ic a c ió n d e erro r.

M étodo. In ic ia lm e n te , la p ila c o n tie n e $, y el buffer d e e n tr a d a , la c a d e n a w 4. P ara


h a c e r el a n á lis is s in tá c tic o , se e je c u ta el p r o g r a m a d e la fig u ra 4 .2 4 . □

(1) a p u n ta r ae al p rim e r sím b o lo d e u$;


(2) re pea t forever
(3 ) i f $ está en la cima de la pila y ae apunta a $ then
(4 ) return
e ls e begin
(5) sea a el símbolo terminal más a la cima de la pila y
sea b el símbolo apuntado por ae,
(6) i f a < • b o a = b then begin
(7) meter b en la pila:
(8 ) avanzar ae al siguiente símbolo deentrada;
end;
(9 ) e ls e if a > b th en / * red u ce * /
(1 0 ) repeat
(11) extraer el elemento de la cima de la pila
(1 2 ) until el terminal de la cima de lapila esté relacionado por < •
con el terminal más recientemente extraído de la pila.
(13) e ls e error ()
end

F ig. 4 .2 4 . A lg o r itm o d e an álisis sin tá ctico p o r p reced en cia d e operadores.


4 .6 AN ALISIS SIN T A C T IC O POR P R E C E D E N C IA D E O P E R A D O R E S 213

O b te n c ió n d e r e la c io n e s d e p r e c e d e n c ia d e o p e r a d o r e s
a p a rtir d e la a s o c ia tiv id a d y la p r e c e d e n c ia

S ie m p re se p u e d e n c r e a r re la c io n e s d e p re c e d e n c ia d e o p e r a d o r e s d e la fo rm a q u e se
c o n s id e r e a d e c u a d a y e s p e ra r q u e el a lg o r itm o d e a n álisis s in tá c tic o p o r p re c e d e n c ia
d e o p e r a d o r e s f u n c io n e c o r r e c t a m e n t e a l g u ia rs e p o r ellas. P a ra u n le n g u a je d e ex ­
p re s io n e s a ritm é tic a s , c o m o el g e n e r a d o p o r la g ra m á tic a (4.1 7). se p u e d e n u sa r las
sig u ie n tes té c n ic a s h e u rístic a s p a r a p r o d u c i r u n c o n j u n t o a d e c u a d o d e re la c io n e s d e
p re c e d e n c ia . O b sé rv e se q u e la g r a m á tic a (4 .1 7 ) es a m b ig u a , y las f o r m a s d e frase d e ­
re c h a s p o d r ía n te n e r m u c h o s m a n g o s . S e e s ta b le c e n las sig u ie n te s reglas p a r a selec­
c i o n a r m a n g o s “a p r o p i a d o s " p a r a re fle ja r u n d e t e r m i n a d o c o n j u n t o d e reg las d e
a s o c ia tiv id a d y p re c e d e n c ia p a r a o p e r a d o r e s b in ario s.

1. Si el o p e r a d o r 0 , tie n e m a y o r p re c e d e n c ia q u e el o p e r a d o r 0 : . h ág ase 0 , • > 0 2 y


0 : < • 0 ,. P o r e je m p lo , si * tie n e m a y o r p r e c e d e n c ia q u e + h á g a s e * • > + y
+ < • * . E s t a s r e l a c i o n e s g a r a n t i z a n q u e , e n u n a e x p r e s i ó n d e la f o r m a
E + E * E + E . el c e n tra l E * E se rá el m a n g o q u e se r e d u c irá p r im e ro .

2. Si 0 | y 02 s o n o p e r a d o r e s d e igual p re c e d e n c ia (d e h e c h o , p u e d e n s e r el m is m o
o p e r a d o r ) , e n to n c e s h ág ase 0j • > 0 2 y 0 : • > 0 | si los o p e r a d o r e s s o n a so c ia tiv o s
p o r la iz q u ie rd a , o h ág ase 0 ( < • 0? y 0> < • 0i si son a so c ia tiv o s p o r la d e re c h a .
P o r e je m p lo , si + y - s o n a s o c ia tiv o s p o r la iz q u ie rd a , e n to n c e s h ág ase + • >
+ . + •> - y - • > + . Si í es a s o c ia tiv o p o r la d e re c h a , e n to n c e s
h ág ase í < • t . E sta s re la c io n e s g a r a n tiz a n q u e p a r a E - E + E se s e le c c io n a rá
E —E c o m o m a n g o y q u e p a r a E í E í E se s e le c c io n a rá la ú lt im a E T E.

3. H á g a se 0 < • id. id • > 0, 0 < • (, ( < • 0. ) • > 0, 0 • > ), 0 • > S. y S < • 0 p a ra


to d o s lo s o p e r a d o r e s 0. H á g a se ta m b ié n

( = ) $ < • ( $ < • id
(< •( id - > S )•> $
( < • id id • > ) )•> )

E sta s reglas g a r a n tiz a n q u e t a n t o id c o m o ( E ) se r e d u c irá n a E. A s im is m o , $


sirve c o m o m a r c a d o r d e los e x tr e m o s iz q u ie r d o y d e r e c h o , lo c u a l h a c e q u e los
m a n g o s se e n c u e n tr e n e n t r e los d o s s ím b o lo s $ s ie m p re q u e s e a posible.

E je m p lo 4 .2 8 . L a figura 4 .2 5 c o n tie n e la s re la c io n e s d e p re c e d e n c ia d e o p e r a d o r e s
p a r a la g r a m á tic a (4 .17 ), a s u m i e n d o q u e

1. T tie n e la m a y o r p re c e d e n c ia y es a s o c ia tiv o p o r la d e re c h a ,

2. * y / tie n e n la sig u ie n te m a y o r p re c e d e n c ia y s o n a s o c ia tiv o s p o r la iz q u ie rd a , y

3. + y - tie n e n la m e n o r p re c e d e n c ia y s o n a s o c ia tiv o s p o r la iz q u ie rd a .

(L o s esp acio s e n b la n c o s e ñ a la n e n tra d a s d e erro r.) El le c to r d e b e p ra c tic a r c o n la ta ­


bla p a ra c o m p r o b a r si fu n c io n a c o r r e c ta m e n te , ig n o r a n d o p o r e l m o m e n t o los p ro b le­
m a s c o n el m e n o s u n a rio . P ru éb ese la ta b la c o n la e n t r a d a id *(id T id)-id/id. p o r
e jem p lo . □
214 A N A L IS IS S IN T A C T IC O

+ — • / í id ( $
)
+ •> •> <• <• <• <• <• •> •>

•> •> <• <• <• <• <• •> ■>
* •> •> •> •> <• <• <• •> •>
/ •> •> •> •> <• <• <• •> •>
í •> •> •> •> <• <• <• •> •>
id •> •> •> •> •> •> •>
( <• <• <• <• <• <• <•
) •> •> •> •> ■> •> •>
$ <• <• <• <• <• <• <•

Fig. 4.25. Relaciones de precedencia d e operadores.

M a n e jo d e o p e r a d o r e s u n arios

Si se tie n e u n o p e r a d o r u n a r i o c o m o - (n e g a c ió n lógica), q u e n o s e a a s im is m o u n
o p e r a d o r b in a rio , se p u e d e in c o r p o r a r al e s q u e m a a n t e r i o r p a r a c r e a r las rela cio n es
d e p re c e d e n c ia d e o p e ra d o re s . S u p o n ie n d o q u e - sea u n o p e r a d o r u n a r io p refijo ,
se h a c e 0 < • - p a r a c u a l q u ie r o p e r a d o r 0. y a sea u n a r io o b in a rio . S e h a c e - • > 0.
si - tie n e m a y o r p re c e d e n c ia q u e 0 y si n o . - < • 0. P o r e je m p lo , si - tie n e m a y o r
p re c e d e n c ia q u e & . y & e s a s o c ia tiv o p o r la iz q u ie r d a , m e d ia n te d ic h a s reglas se p o ­
d r ía a g r u p a r £ & - . E & E c o m o (E&{ - £ ) ) & £ . L a regla p a r a los o p e r a d o r e s u n a rio s
p o stfijo s es sim ilar.
L a s itu a c ió n c a m b i a c u a n d o se tie n e u n o p e r a d o r c o m o el s ig n o m e n o s - q u e
es t a n t o p re fijo u n a r io c o m o in fijo b in a rio . A u n d a n d o la m is m a p re c e d e n c ia a los
s ig n o s m e n o s u n a r i o y b i n a r i o , la t a b l a d e la f ig u r a 4 .2 5 n o c o n s e g u ir á a n a l i z a r
c o r r e c ta m e n te c a d e n a s c o m o id * - id . El m e j o r m é to d o e n este c a so es u s a r el a n a ­
liz a d o r léxico p a r a d if e r e n c ia r el m e n o s u n a r io d e l b in a r io , h a c ie n d o q u e d e v u e lv a
u n c o m p o n e n t e léx ico d is tin to c u a n d o vea u n m e n o s u n a r io . L a m e n ta b le m e n te , el
a n a liz a d o r léxico n o p u e d e u tiliz ar el e x a m e n p o r a n tic ip a d o p a ra d ife re n c ia r los dos;
d e b e r e c o r d a r el c o m p o n e n t e léx ico a n te r io r . E n F O R T R A N , p o r e je m p lo , u n signo
m e n o s e s u n a r io si el c o m p o n e n t e léx ico a n t e r i o r e ra u n o p e r a d o r , u n p a ré n te s is iz­
q u ie r d o , u n a c o m a o u n s ím b o lo d e a sig n a c ió n .

F u n c io n e s d e p rec e d e n c ia

L o s c o m p ila d o r e s q u e u s a n a n a liz a d o r e s s in tá c tic o s p o r p re c e d e n c ia d e o p e ra d o re s


n o n e c e sita n a l m a c e n a r la ta b la d e re la c io n e s d e p re c e d e n c ia . E n la m a y o r ía d e los
casos, la ta b la se p u e d e c o d ific a r m e d ia n te d o s fu n c io n e s d e precedencia f y g q u e
tr a n s f o r m a n s ím b o lo s te r m in a le s e n e n te ro s. Se i n t e n ta s e le c c io n a r / y g d e m o d o
q u e , p a r a los s ím b o lo s a y b ,

1. f { a ) < g (/>) s ie m p re q u e a < ■b.


2. J'(a) = g ( b ) s ie m p r e q u e a = />, y
3. f ( a ) > g ( b ) s ie m p r e q u e a • > /?.
4.6 ANALISIS SIN T A C T IC O POR P R E C E D E N C IA DE O P E R A D O R E S 215

p o r ta n to , se p u e d e n d e t e r m i n a r la s re la c io n e s d e p re c e d e n c ia e n tr e a y b m e d ia n te
u n a c o m p a r a c ió n n u m é r ic a e n t r e / ( a ) y g ( b ). S in e m b a r g o , o b sé rv e se q u e la s e n t r a ­
d a s d e e r r o r e n la m a tr iz d e p re c e d e n c ia e s tá n o scu recid a s, y a q u e se c u m p le 1, 2 ó
3, in d e p e n d ie n t e m e n t e d e c ó m o s e a n f ( á ) y g ( b ) . P o r lo g e n e ra l, la p é rd id a d e c a ­
p a c id a d d e d e te c c ió n d e e rro re s n o se c o n s id e r a lo s u f ic ie n te m e n te seria c o m o p a ra
im p e d ir el u s o d e las f u n c io n e s d e p re c e d e n c ia c u a n d o sea p o sible; se p u e d e n seguir
lo c a liz a n d o e rro re s c u a n d o se lla m a a u n a re d u c c ió n y n o se p u e d a e n c o n t r a r n in ­
gún m ango.
N o to d a s las ta b la s d e re la c io n e s d e p re c e d e n c ia tie n e n fu n c io n e s d e p re c e d e n c ia
q u e la s c o d ifiq u e n , p e r o e n c aso s p r á c tic o s s u e le n e x is tir d ic h a s fu n cio n es.

E je m p lo 4 .2 9 . L a ta b la d e p re c e d e n c ia d e la fig u ra 4 .2 5 tie n e el sig u ie n te p a r d e fu n ­


c io n e s d e p re c e d e n c ia

+ — * / t ( ) id $

/ 2 2 4 4 4 0 6 6 0
8 1 1 3 3 5 5 0 5 0

P o r e jem p lo . * < • id, y / ( * ) < g (id ). O b sérv ese q u e / ( i d ) > g (id ) sugiere q u e id > id;
p e r o e n re a lid a d n o se c u m p le n in g u n a re la c ió n d e p re c e d e n c ia e n tr e id e id . E n la
fig u ra 4 .2 5 se s u s titu y e n d e m a n e r a s im ila r o tr a s e n tr a d a s d e e r r o r e s p o r u n a u o tra
re la c ió n d e p re c e d e n c ia . □

U n m é to d o se n c illo p a r a e n c o n t r a r las f u n c io n e s d e p re c e d e n c ia d e u n a ta b la, si


ex isten d ic h a s fu n c io n e s , es el sig u ie n te .

A lg o r itm o 4 .6 . C o n s tr u c c ió n d e la s f u n c io n e s d e p reced e n cia.

Entrada. U n a m a tr iz d e p re c e d e n c ia d e o p e ra d o re s .

Salida. L as f u n c io n e s d e p re c e d e n c ia q u e re p re s e n te n a la m a tr iz d e e n tr a d a , o u n a
in d ic a c ió n d e q u e n o existen.

M étodo.

1. C ré e n s e los s í m b o l o s / y g a p a r a c a d a a q u e sea u n te rm in a l o $.

2. D iv íd a n s e los s ím b o lo s c r e a d o s e n ta n to s g r u p o s c o m o s e a p o sib le, d e m a n e r a


q u e si a = b, e n t o n c e s / y g h e s tá n e n el m i s m o g ru p o . O b s é rv e s e q u e q u iz á s
h a y a q u e p o n e r s ím b o lo s e n el m i s m o g ru p o , a u n q u e n o estén re la c io n a d o s
p o r = . P o r e je m p lo , s\ a = b y c = b, e n to n c e s / y f d e b e n e s ta r e n el m is m o
g ru p o , p u e s to q u e a m b o s e s tá n e n el m i s m o g r u p o q u e gh. Si a d e m á s c = b , e n ­
t o n c e s / y g j e s tá n e n el m is m o g r u p o a u n q u e a = d p u e d a n o c u m p lirse .

3. C ré e s e u n g ra fo d ir ig id o c u y o s n o d o s se a n los g r u p o s e n c o n t r a d o s e n 2. P a ra
t o d o a y b %si a < • b, c o ló q u e s e u n a a ris ta d e s d e el g r u p o d e gh al g ru p o d e / . Si
a • > b, c o ló q u e s e u n a a r is ta d e s d e el g r u p o d e / al d e g h. O b sé rv e se q u e u n a
a r is t a o c a m i n o d e s d e / a g¡, sig n ifica q u e / ( a ) d e b e s o b r e p a s a r a g[b)\ u n c a ­
m i n o d e s d e gh a / sign ifica q u e g ( b ) d e b e s o b r e p a s a r a /(<*).
216 A N A LISIS SINTA CTIC O

4. S i el g r a f o c o n s t r u i d o e n 3 t i e n e u n c ic lo , e n t o n c e s n o e x is te n f u n c i o n e s d e
p re c e d e n c ia . Si n o h a y ciclos, s e a J (a) la lo n g itu d d e l c a m i n o m á s la rg o q u e c o ­
m ie n z a e n el g ru p o d e j a\ sea g (a) la lo n g itu d d e l c a m i n o m á s la rg o d e sd e el
g r u p o d e ga. □

E jem p lo 4 .3 0 . C o n sid érese la m a triz d e la figura 4 .2 3 . N o hay relacio nes = , d e m o d o


q u e c a d a s ím b o lo está so lo e n u n g ru p o . E n la fig u ra 4 .2 6 se m u e s t r a el g rafo c o n s ­
tr u i d o u tiliz a n d o el a lg o r itm o 4.6.

F ig. 4.26. G ra fo q u e rep resenta las funciones d e precedencia.

N o hay ciclos, así q u e e x iste n las f u n c io n e s d e p re c e d e n c ia . Como_/$ y g% no


tie n e n a ris ta s d e salid a. / ( $ ) = # ( $ ) = 0 . E l c a m i n o m á s la rg o d e s d e g+ tien e
lo n g itu d 1, d e m o d o q u e g ( + ) = 1. H a y u n c a m i n o d e s d e g ió a f a g , a / » a
d e m o d o q u e g (id ) = 5. L as f u n c io n e s d e p re c e d e n c ia a s í o b te n id a s son

+ * id $

f 2 4 4 0
X l 3 5 0

R e c u p e r a c ió n d e e r r o r e s e n e l a n á lis is s in tá c tic o p o r p r e c e d e n c ia d e o p e r a d o r e s

E x isten d o s p u n t o s e n los p ro c e so s d e a n á lis is s in tá c tic o e n lo s q u e u n a n a liz a d o r


p o r p re c e d e n c ia d e o p e r a d o r e s p u e d e d e s c u b r ir e rro re s sin tá c tic o s:

1. Si n o se c u m p le n in g u n a re la c ió n d e p re c e d e n c ia e n tr e el te r m in a l d e la c i m a d e
la p ila y la e n t r a d a e n c u r s o 1.

2. S i se h a e n c o n t r a d o u n m a n g o , p e r o n o e x is te n i n g u n a p r o d u c c i ó n c o n este
m a n g o c o m o la d o d e re c h o .

R e c u é rd e s e q u e el a lg o r i tm o d e a n á lis is s in tá c tic o p o r p r e c e d e n c ia d e o p e r a d o r e s
(A lg o ritm o 4 .5 ) a p a re c e c o m o si re d u je se m a n g o s c o m p u e s t o s só lo p o r te rm in a le s .

' En compiladores que usan funciones de precedencia para representar las tablas de precedencia,
esta fuente de detección de error puede no estar disponible.
4.6 ANALISIS S IN T A C T IC O PO R P R E C E D E N C IA DE O P E R A D O R E S 217

S in e m b a r g o , a u n q u e se c o n s id e r a n los n o t e r m in a l e s a n ó n i m a m e n t e , s ig u e n te ­
n ie n d o s u lu g a r e n la p ila d e a n á lis is s in tá c tic o . A sí q u e c u a n d o e n 2 se h a b la d e
u n m a n g o q u e c o n c u e r d a c o n el la d o d e r e c h o d e u n a p ro d u c c ió n , se e n t i e n d e q u e
lo s t e r m in a l e s s o n los m i s m o s al ig u a l q u e la s p o s ic io n e s o c u p a d a s p o r los n o te r ­
m inales.
S e d e b e o b s e r v a r q u e , a d e m á s d e lo s p u n t o s 1 v 2 a n te r io r e s , n o e x is te n o tro s
e n los q u e se p u e d a n d e te c ta r e rro re s . C u a n d o se e x a m in a la p ila p a r a e n c o n t r a r el
e x tr e m o iz q u ie r d o del m a n g o e n lo s p a so s (10 al 12) d e la fig u ra 4 .2 4 . el a lg o ritm o
d e a n álisis s in tá c tic o p o r p re c e d e n c ia d e o p e ra d o re s , se tie n e la s e g u rid a d d e e n c o n ­
t r a r u n a re la c ió n < • , p u e s to q u e $ m a r c a el f o n d o d e la p ila y está re la c io n a d a p o r
< • c o n c u a lq u ie r s ím b o lo q u e p u d ie r a a p a r e c e r in m e d ia ta m e n te p o r e n c i m a d e él
e n la pila. O b sérv ese a s im is m o q u e n u n c a se a d m ite n s ím b o lo s a d y a c e n te s e n la pila
d e la fig u ra 4 .2 4 , a m e n o s q u e e s té n re la c io n a d o s p o r < • o = . P o r ta n to , los p a so s
(1 0 al 12) d e b e n t e n e r é x ito al h a c e r u n a re d u c c ió n .
El h e c h o d e e n c o n t r a r u n a s e c u e n c ia d e s ím b o lo s a < • b { = b2 = . . . = e n la
pila n o significa, sin e m b a r g o , q u e /> ,/> :... ^ sea la c a d e n a d e s ím b o lo s te rm in a le s
del la d o d e r e c h o d e u n a p ro d u c c ió n . N o se ex ig ió e s ta c o n d ic ió n e n la fig u ra 4 .2 4 ,
p e ro es e v id e n te q u e se p u e d e , y d e h e c h o se d e b e , h a c e r si se q u ie r e n a s o c ia r reglas
s e m á n tic a s a re d u c c io n e s . P o r ta n to , se tie n e la o p o r tu n i d a d d e d e te c ta r e r r o r e s en
la figura 4 .2 4 . m o d ific a d a e n los p a so s ( 1 0 a l 12) p a r a d e t e r m i n a r q u é p ro d u c c ió n es
el m a n g o e n u n a re d u c c ió n .

M anejo de errores d u ra n te las reducciones

Se p u e d e d iv id ir la r u tin a d e d e te c c ió n y re c u p e ra c ió n d e e rro re s en v a ria s partes.


U n a p a rte m a n e ja los e rro re s del tip o 2 . P o r e je m p lo , esta r u ti n a p u e d e e x tra e r s ím ­
b o lo s d e la pila, c o m o e n los p a s o s 10 al 12 d e la fig u ra 4 .2 4 . S in e m b a r g o , c o m o
n o hay n in g u n a p ro d u c c ió n p o r la c u a l r e d u c ir, n o se t o m a n a c c io n e s se m á n tic a s ,
s in o q u e se im p r im e u n m e n s a je d e d ia g n ó stic o . P a r a d e t e r m in a r lo q u e d e b e esta ­
b lecer el d ia g n ó stic o , la r u t i n a q u e m a n e ja el c a so 2 d e b e d e c id ir a q u é p ro d u c c ió n
se “p a re c e " el la d o d e r e c h o q u e se está e x tra y e n d o . P o r e je m p lo , s u p ó n g a s e q u e se
sa c a abe , y n o h a y la d o d e r e c h o d e p ro d u c c ió n q u e c o n s te d e a, b y c j u n t o c o n c e ro
o m á s n o te rm in a le s . E n to n c e s se d e b e c o n s id e r a r si la e lim in a c ió n d e u n o d e a . b o
c p r o d u c e u n la d o d e r e c h o legal ( o m i tie n d o los n o te rm in a le s ). P o r e je m p lo , si h u ­
b ie ra u n la d o d e r e c h o a E c E , se p o d r ía e m iti r el d ia g n ó stic o

hay una b i l e g a l en la lín e a (lín e a q u e c o n tie n e b)

T a m b ié n se p u e d e c o n s id e r a r el c a m b io o in s e rc ió n d e u n te rm in a l. Así, si abF.dc
fu era u n la d o d e re c h o , se p o d r ía e m i t i r el d ia g n ó s tic o

fa lta una d en la lín e a (lín e a q u e c o n tie n e c)

A s im is m o , p u e d e o c u r r ir q u e h a y a u n la d o d e r e c h o c o n la s e c u e n c ia a p r o p ia d a
d e te rm in a le s , p e ro c o n el p a t r ó n d e n o te r m in a le s e r r ó n e o . P o r e je m p lo , si se saca
abe d e la p ila s in n o te rm in a le s in te r n o s o q u e lo ro d e e n , y a b e n o e s u n la d o d e r e ­
c h o p e ro sí lo es aEbc, se p u e d e e m i t i r el d ia g n ó s tic o

fa lta un E en la lín e a (lín ea q u e c o n tie n e b)


218 A N A LISIS SINTA CTIC O

A q u í, E r e p re s e n ta u n a cate g o ría s in tá c tic a a p r o p ia d a s e ñ a la d a p o r el n o te rm in a l


E. P o r e je m p lo , si a, b o c es u n o p e r a d o r , se p u e d e d e c ir “e x p r e s ió n '’; si a es u n a
p a la b ra c lav e c o m o id; se p u e d e d e c ir “c o n d i c io n a r '.
E n g en eral, la d ific u lta d d e d e t e r m i n a r los d ia g n ó s tic o s a d e c u a d o s c u a n d o n o se
e n c u e n t r a n in g ú n la d o d e r e c h o d e p e n d e d e si h a y u n n ú m e r o fin ito o in f in ito d e
p o sib le s c a d e n a s q u e se p u e d a n e x tra e r e n las lín e a s (1 0 a 12) d e la fig u ra 4 .2 4 . T o ­
d a s estas c a d e n a s b¡b2 . . . bk d e b e n te n e r re la c io n e s = q u e se c u m p l a n e n tr e s ím ­
b o lo s a d y a c e n te s , d e m o d o q u e b\ = b2 = . . . = bk. Si u n a ta b la d e p re c e d e n c ia d e
o p e ra d o re s in d ic a q u e só lo h a y u n n ú m e r o fin ito d e s e c u e n c ia s d e te rm in a le s re la ­
c io n a d o s p o r = , e n to n c e s se p u e d e n m a n e ja r estas s e c u e n c ia s c a so p o r caso. P ara
c a d a u n a d e estas c a d e n a s x se p u e d e d e t e r m i n a r c o n a n te la c ió n u n la d o d e r e c h o
legal y d e d is ta n c ia m í n i m a y e m iti r u n d ia g n ó s tic o q u e in d iq u e q u e se e n c o n t r ó x
c u a n d o se e s p e ra b a y.
E s fácil d e t e r m i n a r to d a s las c a d e n a s q u e p o d r ía n e x tra e rse d e la p ila e n los p a so s
(1 0 al 12) d e la figura 4 .2 4 . E stas s o n e v id e n te s e n el g rafo d irig id o c u y o s n o d o s re­
p re s e n ta n los te rm in a le s , c o n u n a a ris ta d e sd e a a b si, y só lo si, a = b. E n este caso,
las p o sib les c a d e n a s s o n la s e tiq u e ta s d e los n o d o s a lo la rg o d e los c a m in o s d e este
g rafo. E s p o sib le q u e h a y a c a m in o s c o n u n so lo n o d o . S in e m b a r g o , p a r a q u e u n
c a m i n o b \b 2 . . . bk sea e x tra íb le e n u n a e n t r a d a , d e b e h a b e r u n s ím b o lo a (p o sib le ­
m e n te $) ta l q u e a < - b \ . L lám ese a este b\ inicial. A s im is m o , d e b e h a b e r u n s ím ­
b o lo c ( p o s ib le m e n te $ ) tal q u e bk • > c. L lám ese a bk fin a l. S ó lo e n to n c e s se p u e d e
lla m a r a u n a re d u c c ió n y b \b 2 . . . bk s e ría la s e c u e n c ia d e s ím b o lo s e x tra íd o s. Si el
grafo tie n e u n c a m in o d e s d e u n n o d o in ic ia l a u n o fin al q u e c o n te n g a u n c iclo , e n ­
to n c e s h a y in fin id a d d e c a d e n a s q u e p u e d e n ex tra erse ; d e lo c o n tra río , h a y só lo u n
n ú m e r o finito.

© o o o © ©

© — *©
Fig. 4.27. G rafo p a ra la m a triz d e precedencia de la figura 4.25.

E je m p lo 4 .3 1 . R e c o n sid é re se la g ra m á tic a (4.17):

E -+ E + E \ E - E \ E * E | E / E | £ t £ | ( E ) | - £ | i d

E n la figura 4 .2 5 , se m o s tr ó la m a tr iz d e p re c e d e n c ia p a r a esta g r a m á tic a y s u grafo


a p a re c e e n la figura 4 .2 7 . S ólo h a y u n a a ris ta , p o r q u e el ú n ic o p a r re la c io n a d o p o r
= es el d e lo s p a ré n te sis iz q u ie r d o y d e r e c h o . T o d o s s o n in iciales, e x c e p to el p a r é n ­
tesis d e r e c h o , y to d o s s o n finales, e x c e p to el p a ré n te s is iz q u ie rd o . P o r ta n to , los ú n i­
c o s c a m in o s d e s d e u n n o d o in icial a u n o fin al s o n lo s c a m in o s + , id. y t d e
lo n g itu d u n o , y el c a m in o d e ( a ) d e lo n g itu d d o s . S ó lo h a y u n n ú m e r o f in ito y c a d a
u n o c o r r e s p o n d e a los te rm in a le s d e l la d o d e r e c h o d e u n a p ro d u c c ió n e n la g r a m á ­
tica. P o r t a n t o , el re v iso r d e e rro re s e n las re d u c c io n e s só lo n e c e sita c o m p r o b a r q u e
el c o n j u n t o a p r o p ia d o d e m a rc a d o r e s n o te rm in a le s a p a r e z c a e n tr e la s c a d e n a s d e
te rm in a le s s u je ta s a re d u c c ió n . E s p e c ífic a m e n te , el re v is o r h a c e lo siguiente:
4.6 ANALISIS SINTA CTIC O POR P R EC ED EN C IA DE O P E R A D O R E S 219

1. Si se r e d u c e + , —, *, / o t , se a s e g u ra d e q u e a p a r e z c a n n o te rm in a le s a a m b o s
lados. Si n o , e n v ía el d ia g n ó s tic o

f a l t a o p e ra n d o

2. Si se r e d u c e id , c o m p r u e b a q u e n o h a y a n o t e r m in a l e s a la d e r e c h a o a la iz­
q u ie r d a . S i los h a y , p u e d e av isar

f a l t a o p e r a d o r

3. Si se re d u c e ( ) , c o m p r u e b a q u e h a y a u n n o te rm in a l e n tr e los p arén tesis. Si n o


lo h a y , p u e d e in d ic a r

no hay e x p r e s ió n e n t r e lo s p a r é n t e s i s

T a m b ié n d e b e a s e g u ra rs e d e q u e n o h a y a n o te rm in a le s a n in g ú n la d o d e lo s p a r é n ­
tesis. Si h a y a lg u n o , e n v ía el m i s m o d ia g n ó s tic o q u e e n 2 □

Si p u e d e e x tra e rse u n a in fin id a d d e c a d e n a s, lo s m e n s a je s d e e r r o r n o se p u e d e n


ta b u la r c a so p o r caso. S e p u e d e u tiliz a r u n a r u ti n a g e n e ra l p a r a d e t e r m i n a r si el lado
d e r e c h o d e u n a p ro d u c c ió n está c e rc a ( p o r e je m p lo , a u n a d is ta n c ia d e I ó 2 , d o n d e
la d is ta n c ia se m id e e n f u n c ió n d e c o m p o n e n te s léxicos, e n lu g a r d e c a ra c te re s , in­
sertos, e lim in a d o s o m o d ific a d o s d e la c a d e n a e x tra íd a , y e n ese c a so e m iti r u n d ia g ­
n ó s tic o e sp ecífico b a s á n d o s e e n q u e se p r e te n d ía d ic h a p ro d u c c ió n . Si n in g u n a p ro ­
d u c c ió n e s tá cerc a d e la c a d e n a e x tra íd a , se p u e d e e m iti r u n d ia g n ó s tic o g e n e ra l a
efecto s d e q u e “ h a y a lg o e r r ó n e o e n la lín e a e n c u r s o "

T ratam iento d e errores d e desplazam iento/reducción

A h o r a se e s tu d ia o tr a f o r m a q u e tie n e el a n a l iz a d o r s in tá c tic o p o r p re c e d e n c ia de
o p e r a d o r e s d e d e te c ta r erro res. C u a n d o se c o n s u lta la m a tr iz d e p re c e d e n c ia s p a r a
d e c id ir si d e s p la z a r o r e d u c ir [líneas (6) y (9 ) d e la Fig. 4 .2 4 ], se p u e d e d a r el c a so d e
q u e n o se c u m p l a n in g u n a re la c ió n e n t r e el s ím b o lo d e l to p e d e la p ila y el p r im e r
s ím b o lo d e e n tr a d a . P o r e je m p lo , s u p ó n g a s e q u e a y b s o n los d o s s ím b o lo s d e l to p e
d e la p ila (b e s tá e n el to p e ), c y d s o n los d o s s ím b o lo s sig u ie n te s d e e n tr a d a , y n o
h a y re la c ió n d e p re c e d e n c ia e n t r e b y c. P a r a r e c u p e r a r h a y q u e m o d if ic a r la pila, la
e n t r a d a o a m b a s . S e p u e d e n c a m b i a r s ím b o lo s, in s e r ta r s ím b o lo s e n la e n t r a d a o e n
la pila, o e lim in a r s ím b o lo s d e la e n t r a d a o d e la p ila . Si se in s e r ta n o m o d if ic a n , hay
q u e te n e r c u id a d o d e n o c a e r e n u n la z o in fin ito , d o n d e , p o r e je m p lo , se in s e rta n
in d e f in id a m e n te s ím b o lo s al p r in c ip io d e la e n t r a d a sin p o d e r r e d u c ir o d e s p la z a r
n i n g u n o d e lo s s ím b o lo s in sertad o s.
U n m é to d o q u e a s e g u ra la in e x is te n c ia d e la zo s in fin ito s es g a r a n tiz a r q u e des­
p u é s d e la re c u p e ra c ió n se p u e d e d e s p la z a r el s ím b o lo e n c u r s o d e e n t r a d a (si el s ím ­
b o lo e n c u r s o es $ . se g a r a n tiz a q u e n in g ú n s ím b o lo se c o lo q u e e n la e n t r a d a y se
a c o r ta e v e n tu a lm e n te la pila). P o r e je m p lo , d a d o ab e n la p ila y cd e n la e n t r a d a , si
a <>• c2, se p u e d e e x tra e r b d e la pila. O tr a o p c ió n e s e lim in a r c d e la e n tr a d a si b <>• d.
U n a te rc e ra o p c ió n e s e n c o n t r a r u n s ím b o lo e ta l q u e /; <> e < c e in s e r ta r e d e ­
la n te d e c e n la e n tr a d a . E n g e n e ra l, se d e b e in s e r ta r u n a c a d e n a d e s ím b o lo s tal q u e

b <, - e i ^ • e2 £ ' . . . <>• e„ <. c


220 A N A LISIS SINTA CTIC O

si n o se p u d ie ra e n c o n t r a r u n s ím b o lo s im p le q u e in s e rta r. L a a c c ió n e x a c ta elegida
d e b e reflejar la in tu ic ió n d e l d is e ñ a d o r d e l c o m p ila d o r e n c u a n t o al e r r o r q u e p u e d e
a p a r e c e r en c a d a caso.
P a r a c a d a e n t r a d a e n b la n c o e n la m a tr iz d e p re c e d e n c ia h a y q u e e s p e c ific a r u n a
r u ti n a d e re c u p e ra c ió n d e e rro re s; la m is m a r u ti n a p u e d e u tiliz a rse e n v a rio s lugares.
C u a n d o el a n a liz a d o r s in tá c tic o c o n s u lta la e n t r a d a p a r a a y b e n el p a s o (6 ) d e la
figura 4 .2 4 y n o se c u m p le n in g u n a re la c ió n d e p re c e d e n c ia e n tr e a y b %e n c u e n tr a
u n a p u n t a d o r a la r u ti n a d e re c u p e ra c ió n d e e r r o r e s p a r a d ic h o erro r.

E je m p lo 4 3 2 . C o n s id é re s e d e n u e v o la m a tr iz d e p re c e d e n c ia d e la fig u ra 4 .2 5 . E n
la fig u ra 4 .2 8 se m u e s tr a n las filas y las c o l u m n a s d e d ic h a m a tr iz q u e tie n e n u n a o
m á s e n t r a d a s e n b la n c o , y se h a n lle n a d o e s ta s e n tr a d a s c o n los n o m b r e s d e las r u ­
tin a s p a r a el m a n e jo d e erro res.

id ( ) $

id e3 e3 •> •>
( <• <•

e4
) e3 e3 •> •>
$ <• <• e2 el

F ig. 4 .2 8 . M atriz d e precedencia d e o perad o res co n en trad as d e error.

I^a b a s e d e e s ta s r u tin a s p a r a el t r a t a m i e n to d e e rro re s es la siguiente:

e l: /* se lla m a c u a n d o falta u n a e x p re s ió n c o m p le ta */
in s e r ta r id e n la e n tra d a
e m iti r el d ia g n ó stic o : “ f a l t a o p e r a n d o "

e2: /* se lla m a c u a n d o las e x p re s io n e s c o m ie n z a n c o n u n p a ré n te s is d e r e c h o */


e lim in a r ) d e la e n tr a d a
e m iti r el d ia g n ó stic o : “ p a r é n t e s i s d e r e c h o n o e q u i l i b r a d o "

e3: /* se lla m a c u a n d o id o ) v a s e g u id o d e id o ( */
in s e rta r -f e n la e n tr a d a
e m iti r el d ia g n ó stic o : “ f a l t a o p e r a d o r ”

e4: /* se lla m a c u a n d o la s e x p re s io n e s t e r m i n a n c o n u n p a ré n te s is iz q u ie r d o */
e x tr a e r ( d e la pila
e m i t i r el d ia g n ó stic o : “f a l t a p a r é n t e s i s d erech o '*

C o n s id é re s e c ó m o este m e c a n is m o d e m a n e jo d e e rro re s tr a ta r ía la e n t r a d a e r r ó ­
n ea id + ) . L as p r im e r a s a c c io n e s r e a liz a d a s p o r el a n a liz a d o r s in tá c tic o s o n d esp la-

: S e u tiliz a para rep resen tar < • o


4.7 A N A L IZ A D O R E S SINTA CTIC O S LR 221

z a r id. r e d u c irlo a E (d e n u e v o se u tiliz a E p a r a u n n o te rm in a l a n ó n i m o e n la pila),


y d e s p u é s d e s p la z a r el sig n o + . A h o r a se tie n e la co n fig u ra c ió n

P ila Entrada
$E+ )$

P u e s to q u e + • > ). se so lic ita u n a re d u c c ió n , y el m a n g o es + . S e n ecesita el rev iso r


d e e rro re s en las re d u c c io n e s p a r a q u e b u s q u e s ím b o lo s E a iz q u ie r d a y d e re c h a . Si
c o m p r u e b a q u e falta u n o , e m ite el d ia g n ó s tic o

fa lta o p eran d o

y re a liz a la re d u c c ió n d e to d a s m a n e ra s.
A h o r a la c o n fig u ra c ió n es

SE )$

N o h a y re la c ió n d e p re c e d e n c ia e n tr e $ y ), y la e n t r a d a e n la fig u ra 4 .2 8 p a r a este
p a r d e s ím b o lo s e s e2 . L a r u ti n a e2 h a c e q u e se i m p r i m a el d ia g n ó s tic o

paréntesis derecho no equilibrado

y e lim in a el p a ré n te s is d e r e c h o d e la e n tr a d a . A h o r a q u e d a la c o n fig u ra c ió n final


p a r a el a n a liz a d o r sin tá ctic o .

SE $ □

4 .7 A N A L I Z A D O R E S S I N T A C T I C O S L R

E n esta secció n se a n a liz a u n a té c n ic a e fic ie n te d e a n á lis is s in tá c tic o a s c e n d e n te q u e


se p u e d e u tiliz a r p a r a a n a liz a r u n a clase m á s a m p lia d e g r a m á tic a s in d e p e n d ie n te s
del c o n te x to . L a té c n ic a s e d e n o m i n a a n á lis is s in tá c tic o LR(/c); la “ L " es p o r el e x a ­
m e n d e la e n t r a d a d e iz q u ie r d a a d e r e c h a (e n inglés, / eft-to-right ), la “ R " p o r c o n s­
t r u i r u n a d e r iv a c ió n p o r la d e r e c h a (e n inglés, rig h im o st d eriva tio n ) e n o r d e n i n ­
verso, y la k p o r el n ú m e r o d e s ím b o lo s d e e n t r a d a d e e x a m e n p o r a n tic ip a d o utili­
z a d o s p a r a t o m a r las d e c is io n e s d e l a n á lis is s in tá c tic o . C u a n d o se o m ite , se a s u m e
q u e k . es 1. El a n á lis is s in tá c tic o L R es a tr a c tiv o p o r v a ria s razo n es.

• Se p u e d e n c o n s tr u i r a n a liz a d o r e s s in tá c tic o s L R p a r a re c o n o c e r p r á c tic a m e n te


to d a s las c o n s tr u c c io n e s d e los le n g u a je s d e p r o g r a m a c ió n p a r a lo s q u e se p u e ­
d e n e s c rib ir g r a m á tic a s in d e p e n d ie n te s del c o n te x to .

• El m é to d o d e a n á lis is s in tá c tic o L R e s el m é to d o d e a n á lis is p o r d e s p la z a m ie n to


y re d u c c ió n sin re tro c e so m á s g en eral q u e se c o n o c e , y s in e m b a r g o se p u e d e
a p lic a r ta n e f ic ie n te m e n te c o m o lo s o tr o s m é to d o s d e d e s p la z a m ie n to y r e d u c ­
c ió n .

• La clase d e g ra m á tic a s q u e p u e d e n a n a liz a rs e c o n lo s m é to d o s L R e s u n su p ra -


c o n j u n t o d e la clase d e g r a m á tic a s q u e se p u e d e n a n a liz a r c o n a n a liz a d o r e s s in ­
tá c tic o s predictiv os.

• U n a n a liz a d o r s in tá c tic o L R p u e d e d e te c ta r u n e r r o r s in tá c tic o ta n p r o n t o c o m o


sea p o sib le h a c e rlo e n u n e x a m e n d e iz q u ie r d a a d e r e c h a d e la e n tr a d a .
222 ANALISIS SIN T A C T IC O

El p r in c ip a l in c o n v e n ie n te del m é to d o es q u e s u p o n e d e m a s i a d o tr a b a jo c o n s­
t r u i r u n a n a liz a d o r s in tá c tic o L R a m a n o p a r a u n a g r a m á tic a d e u n le n g u a je d e p ro ­
g r a m a c ió n típ ico . S e n e c e sita u n a h e r r a m ie n ta e s p e c ia liz a d a — u n g e n e r a d o r d e a n a ­
li z a d o r e s s i n tá c tic o s L R — . P o r f o r t u n a , e x is te n d is p o n ib l e s e s t o s g e n e r a d o r e s , y
e n la se c c ió n 4 .9 se e s tu d ia rá el d is e ñ o y u s o d e u n o . el p r o g r a m a Y A C C . C o n este
g e n e r a d o r se p u e d e e s c rib ir u n a g r a m á tic a in d e p e n d ie n te d e l c o n te x to y el g e n e r a d o r
p r o d u c e a u t o m á t i c a m e n t e u n a n a l iz a d o r s in tá c tic o p a r a d ic h a g r a m á tic a . Si la gra­
m á tic a c o n t i e n e a m b ig ü e d a d e s u o tr a s c o n s tr u c c i o n e s d ifíc ile s d e a n a l i z a r e n u n
e x a m e n d e iz q u ie r d a a d e r e c h a d e la e n tr a d a , el g e n e r a d o r p u e d e lo c a liz a r d ic h a s
c o n s tr u c c io n e s e i n f o r m a r al d is e ñ a d o r d e l c o m p ila d o r d e s u p resen cia.
D e s p u é s d e e s tu d ia r la o p e r a c ió n d e u n a n a l iz a d o r s in tá c tic o L R , se in tr o d u c e n
tres té c n ic a s p a r a c o n s t r u i r u n a ta b la d e a n á lis is s in tá c tic o L R p a r a u n a g ra m á tic a .
El p r im e r m é to d o , lla m a d o L R sen cillo (S L R , e n inglés) es el m á s fácil d e im p la n ta r,
p e r o el m e n o s p o d e r o s o d e los tres. P u e d e q u e n o co n sig a p r o d u c ir u n a ta b la d e a n á ­
lisis s in tá c tic o p a r a a lg u n a s g r a m á tic a s q u e o tr o s m é to d o s si c o n sig u e n . E l s e g u n d o
m é to d o , lla m a d o L R c a n ó n ic o , es el m á s p o d e r o s o y co sto so . El te rc e r m é to d o , lla­
m a d o L R c o n e x a m e n p o r a n tic ip a d o (L A L R , e n inglés), está e n tr e los o tr o s d o s en
c u a n t o a p o d e r y c o sto . El m é to d o L A L R f u n c io n a c o n las g r a m á tic a s d e la m a y o ría
d e lo s le n g u a je s d e p r o g r a m a c ió n y, c o n u n p o c o d e e sfu e rz o , se p u e d e i m p l a n t a r en
fo rm a efic ien te . E n esta secció n se c o n s id e r a n m á s a d e la n te a lg u n a s té c n ic a s p a ra
c o m p r i m i r el t a m a ñ o d e u n a ta b la d e a n á lis is s in tá c tic o L R .

E l a lg o ritm o d e a n á lis is s in tá c tic o L R

E n la figura 4 .2 9 se m u e s tr a la f o r m a e s q u e m á tic a d e u n a n a liz a d o r s in tá c tic o L R .


C o n s ta d e u n a e n tr a d a , u n a salid a, u n a pila, u n p r o g r a m a c o n d u c t o r y u n a ta b la de
a n á lis is s in tá c tic o c o n d o s p a r te s (acción e ir-a ). El p r o g r a m a c o n d u c t o r e s el m is m o
p a r a to d o s los a n a liz a d o r e s s in tá c tic o s L R ; só lo c a m b ia n la s ta b la s d e u n a n a liz a d o r
a o tro . El p r o g r a m a a n a liz a d o r lee c a ra c te re s d e u n buffer d e e n t r a d a d e u n o e n u n o .
E l p r o g r a m a u tiliz a u n a p ila p a r a a l m a c e n a r u n a c a d e n a d e la f o r m a SqX\S\X2S2 • • •
d o n d e s m está e n la c im a . C a d a X, es u n s ím b o lo g ra m a tic a l y c a d a s, es u n
s ím b o lo lla m a d o estado. C a d a s ím b o lo d e e s ta d o r e s u m e la in f o r m a c ió n c o n te n id a

P ila S a l id a

F ig. 4 .2 9 . M o d e lo d e u n a n a liza d o r sin tá ctico LR.


4.7 A N A L IZ A D O R E S SINTA CTIC O S LR 223

d e b a jo d e él e n la pila, y se u sa n la c o m b in a c ió n del s ím b o lo d e e s ta d o e n la c im a
d e la p ila y el s ím b o lo e n c u rs o d e la e n t r a d a p a r a in d e x a r la ta b la d e a n á lis is s in tá c ­
tic o y d e t e r m in a r la d e c isió n d e d e s p la z a m ie n to a re d u c c ió n d e l a n a liz a d o r . E n u n a
im p la n ta c ió n n o es n e c e s a rio q u e los s ím b o lo s d e la g ra m á tic a a p a r e z c a n e n la pila;
s in e m b a r g o , s ie m p re se in c lu irá n e n las sig u ie n te s e x p o sic io n e s, p a r a fa c ilita r la e x ­
p lic a c ió n d e l c o m p o r t a m i e n t o d e u n a n a liz a d o r s in tá c tic o L R .
L a ta b la d e a n álisis s in tá c tic o c o n s ta d e d o s p a rte s, la f u n c ió n acción , q u e in d ic a
u n a a c c ió n del a n a liz a d o r , y la f u n c ió n ir -a , q u e in d ic a la s tr a n s ic io n e s e n tr e esta ­
d o s. El p r o g r a m a q u e m a n e ja el a n a liz a d o r s in tá c tic o L R se c o m p o r t a c o m o sigue:
d e t e r m in a sm, el e s ta d o d e la c i m a d e la p ila , y a,y el s ím b o lo e n c u r s o d e la e n tra d a .
D espu és c o n s u lta la e n tr a d a acáón[sm, a ,] d e la ta b la d e a c c io n e s del a n a liz a d o r para
el e s ta d o 5m, y la e n t r a d a a iy q u e p u e d e te n e r u n o d e esto s c u a t r o valores:

1. d e s p la z a r s , d o n d e 5 e s u n e s ta d o ,
2. re d u c ir p o r u n a p ro d u c c ió n g ra m a tic a l A -> p,
3. a c e p ta r y
4. erro r.

L a fu n c ió n i r - a t o m a u n e s ta d o y u n s ím b o lo g ra m a tic a l c o m o a r g u m e n to s y p r o ­
d u c e u n estad o . Se v e rá q u e la f u n c ió n i r - a d e u n a ta b la d e a n álisis s in tá c tic o c o n s­
tr u i d a a p a r ti r d e u n a g r a m á tic a G u tiliz a n d o el m é to d o S L R . L R c a n ó n ic o o L A L R
es la f u n c ió n d e tra n s ic io n e s d e u n a u t ó m a t a fin ito d e te r m in is ta q u e r e c o n o c e los
prefijos viables d e G. R e c u é rd e s e q u e lo s p re fijo s v iab les d e G s o n a q u e llo s prefijo s
d e f o r m a s d e frase d e r e c h a q u e p u e d e n a p a r e c e r e n la p ila d e u n a n a l iz a d o r sin tá c ­
tico p o r d e s p la z a m ie n to y re d u c c ió n , p o r q u e n o s o b re p a s a n el m a n g o s itu a d o m á s
a la d e re c h a . El e s ta d o in icial d e esta A F D e s el e s ta d o p u e s to in icial m e n te e n la
c i m a d e la p ila del a n a liz a d o r L R .
U n a configuración d e u n a n a liz a d o r s in tá c tic o L R e s u n p a r c u y o p r im e r c o m ­
p o n e n te es el c o n t e n id o d e la pila, y el se g u n d o , la e n t r a d a to d a v ía sin p ro c e s a r

(5o X i 5 1X 2 S2 . . . X m 5m, a¡ a ¡+1 . . . £?„$)

E sta c o n fig u ra c ió n r e p re s e n ta la f o r m a d e frase d e r e c h a

X \ X 2 . . . X ,n a¡ a¡+1 . . . an
f u n d a m e n ta lm e n te d e la m a n e r a e n q u e lo h a r ía u n a n a liz a d o r s in tá c tic o p o r d e s ­
p la z a m ie n to y r e d u c c ió n ; só lo e s n u e v a la p re s e n c ia d e los e s ta d o s e n la pila.
El s ig u ie n te m o v im ie n t o d e l a n a liz a d o r s e d e te r m in a le y e n d o a„ e l s ím b o lo d e la
e n t r a d a e n c u rs o , y sm, el e s ta d o del to p e d e la p ila , y c o n s u lta n d o d e s p u é s la e n tr a d a
acción[smy a¡\ d e la ta b la d e a c c io n e s d e l a n a liz a d o r . L as c o n fig u ra c io n e s o b te n id a s
d e s p u é s d e c a d a u n o d e lo s c u a t r o tip o s d e m o v i m ie n to s o n las siguientes:

1. Si acción\s m, a ] = d e s p la z a r 5, el a n a liz a d o r e je c u ta u n m o v i m ie n to d e d e s p la ­
z a m ie n to , e n t r a n d o e n la c o n fig u ra c ió n

(5o X \ S\ X 2 S2 . . . X,„ sm a, s, a, + 1. . . a /r$)

A q u í, el a n a liz a d o r h a d e s p la z a d o a la p ila al s ím b o lo d e e n t r a d a e n c u rs o a y
al sig u ie n te e s ta d o 5, q u e e s tá d a d o e n acción[smy a ,\, a,_ { se c o n v ie r te e n el s ím ­
b o lo d e e n tr a d a e n c u rso .
224 ANALISIS SIN TA CTIC O

2. Si acción [sm, a,] = r e d u c i r A -+ p. e n t o n c e s él a n a l iz a d o r e je c u ta u n m o v i­


m i e n to d e re d u c c ió n , e n t r a n d o e n la c o n fig u ra c ió n

(5o X \ 5, X i 52 . . . X m _ r S m _ r A 5, ü , a , , , . . . £/„$)

d o n d e s = ir-a[sm n A], y r es la lo n g itu d d e p , el la d o d e re c h o d e la p ro d u c c ió n .


A q u í el a n a liz a d o r e x tra jo p r im e r o 2 r s ím b o lo s d e la p ila ( r s ím b o lo s d e e s ta d o s
y r s ím b o lo s d e la g r a m á tic a ), e x p o n i e n d o el e s ta d o sm_r. L u e g o i n t r o d u j o A, el
la d o iz q u ie r d o d e la p ro d u c c ió n , y 5, la e n t r a d a d e ir-a[sm„r. A]y e n la pila. E n
u n m o v im ie n to d e re d u c c ió n n o se m o d ific a el s ím b o lo d e e n t r a d a e n c u rso .
P a r a lo s a n a l iz a d o r e s L R q u e se c o n s tr u i r á n , ATm_ r+, . . . X m, la s e c u e n c ia d e
s ím b o lo s g ra m a tic a le s e x tra íd o s d e la pila, s ie m p re c o n c o r d a r á n c o n p , el la d o
d e r e c h o d e la p ro d u c c ió n c o n q u e se e fe c tú a la re d u c c ió n .

D e s p u é s d e u n m o v i m ie n to d e re d u c c ió n , se g e n e r a la sa lid a d e u n a n a liz a d o r
L R e j e c u ta n d o la a c c ió n s e m á n tic a a s o c ia d a a la p ro d u c c ió n c o n q u e se e fe c tú a
la re d u c c ió n . P o r el m o m e n t o , se a s u m i r á q u e la sa lid a c o n s is te ú n ic a m e n t e en
im p r i m i r la p ro d u c c ió n c o n q u e se e fe c tú a la re d u c c ió n .

3. Si acción[smt a,] = a c e p ta r, el a n á lis is s in tá c tic o h a te rm in a d o .

4. Si acción[sm. a ,] = e rro r, el a n a liz a d o r h a d e s c u b ie rto u n e r r o r y lla m a a u n a


r u ti n a d e re c u p e ra c ió n d e errores.

El a lg o r i tm o d e a n á lis is s in tá c tic o L R se r e s u m e m á s a d e l a n te . T o d o s los a n a liz a ­


d o r e s s in tá c tic o s L R se c o m p o r t a n d e esta fo rm a ; la ú n ic a d ife re n c ia e n tr e u n o y
o t r o es la in f o r m a c ió n d e los c a m p o s d e a c c ió n y d e tra n s ic ió n d e la ta b la d e a n álisis
sintáctico .

A lg o ritm o 4 .7 . A lg o ritm o d e a n álisis s in tá c tic o L R .

E ntrada. U n a c a d e n a d e e n t r a d a w y u n a ta b la d e a n á lis is s in tá c tic o L R c o n la s f u n ­


c io n e s acción e ir - a p a r a la g r a m á tic a G.

Salida. Si w está e n L(G), u n a n álisis s in tá c tic o a s c e n d e n te d e »r, d e lo c o n tr a r io , se


in d ic a error.

M étodo. In ic ia lm e n te , s() está e n la p ila del a n a liz a d o r s in tá c tic o , d o n d e 50 es el es­


t a d o in icial, y »c$ e s tá en el buffer d e e n tr a d a . El a n a liz a d o r e je c u ta e n to n c e s el p r o ­
g r a m a d e la fig u ra 4 .3 0 h a s ta e n c o n t r a r u n a a c c ió n d e a c e p ta c ió n o d e e rro r. □

E je m p lo 4 .3 3 . E n la figura 4.31 se m u e s tr a n las f u n c io n e s acción e i r - a d e l a n álisis


s in tá c tic o d e u n a ta b la d e a n álisis s in tá c tic o L R p a r a la sig u ie n te g r a m á tic a p a r a e x ­
p re s io n e s a r itm é tic a s c o n los o p e r a d o r e s b in a rio s + y *:

(1) E -*E + T
(2) E-* T
(3) T-* T* F
(4) r —* v
(5) F - * (E)
(6) F - * id
4.7 A N A L I Z A D O R E S S I N T A C T I C O S LR 225

L o s c ó d ig o s d e las a c c io n e s son:

1. d / sig n ifica d e s p la z a r y m e te r e n la p ila el e s ta d o i.


2. rj significa re d u c ir p o r la p r o d u c c ió n c o n n ú m e r o j.
3. a c e p significa a c e p ta r.
4. el e s p a c io e n b la n c o sig n ifica erro r.

a p u n ta r ae al p rim er sím bolo d e h $ ;


repeat forever begin
sea s el estado en la cim a d e la pila y
a el sím b o lo a p u n ta d o por ae\
if acción [y. a] = desplazar s f th en begin
m e te r a y después .y' en la c im a de la pila;
av an za r ae al siguiente sím b o lo de en trad a
end
e ls e i f acción [s. a) = red u cir A -> p then begin
sacar 2* p | sím bolos d e la pila;
sea s' el estado q u e a h o ra está en la c im a de la pila;
m eter A y después ir -a [s\ A] en la c im a d e la pila;
em itir la p ro d u cció n A P
end
e ls e if acción [s, a] = a c e p ta r then
return
e ls e error ()
end

F ig. 4 .3 0 . P ro g ram a p a ra análisis sintáctico LR.

acción ir . a
Es t a d o
id + * ( ) $ E T F
0 d5 d4 1 2 3
1 d6 acep
i r2 d7 r2 r2
3 r4 r4 r4 r4
4 d5 d4 8 2 3
5 r6 r6 r6 r6
6 d5 d4 9 3
7 d5 d4 10
8 d6 di 1
9 rl d7 rl rl
10 r3 r3 r3 r3
11 r5 r5 r5 r5

F ig . 4 .3 1 . T a b l a d e a n á l i s i s s i n t á c t i c o p a r a la g r a m á t i c a d e e x p r e s i o n e s .
226 ANALISIS SIN TA CTIC O

O b sérv ese q u e el v alo r d e ir-a [s, a] p a r a el te r m in a l a se e n c u e n t r a e n el c a m p o


a c c ió n c o n e c t a d o c o n la a c c i ó n d e d e s p la z a r e n la e n t r a d a a p a r a el e s ta d o s. El
c a m p o d e ir - a d a ir-a [s. A] p a r a los n o te r m in a le s A. A s im is m o , té n g a se e n c u e n ta
q u e a ú n n o se h a e x p lic a d o c ó m o se s e le c c io n a r o n las e n t r a d a s d e la fig u ra 4 .3 1 ;
este a s p e c to se c o n s id e r a r á m á s a d e la n te .

P ila E ntrada A cció n

(1) 0 id • id + id $ desplazar
(2) 0 id 5 * id + id S reducir p o r 7 - > id
(3) 0 73 * id + id $ red u cir p o r 7 -> 7
(4) 0 T2 * id + id S desplazar
(5) 0 72*7 id + id $ desplazar
(6) 0 7 2 * 7 id 5 + id S red u cir p o r 7 id
(7) 0 72*7710 + id S red u cir p o r 7 -* 7*7
(8) 0 72 + id S red u cir p o r E -* T
(9) 0 7 1 + id $ desplazar
(10) 0 7 1 +6 id S desplazar
(ID 0 7 1 + 6 id 5 $ red u cir p o r 7 -* id
(12) 0 7 1 + 6 7 3 $ red u cir p o r 7 -> F
(13) 0 7 1 + 6 79 $ 7 —> 7 + 7
(14) 0 7 1 $ acep tar

Fig. 4.32. M o v im ien to s del an alizad o r sintáctico LR


co n la e n tra d a id * id + id.

C o n la e n tr a d a id * id + id, e n la fig u ra 4 .3 2 se m u e s tr a la s e c u e n c ia d e c o n te ­
n id o s d e la p ila y d e la e n tr a d a . P o r e je m p lo , e n la lín ea (1 ) el a n a liz a d o r L R está en
el e s ta d o 0 . s ie n d o id el p r im e r s ím b o lo d e e n tr a d a . L a a c c ió n e n la fila 0 y c o lu m n a
id d e l c a m p o a c c ió n d e la figura 4.31 es d 5 . q u e sign ifica d e s p la z a r y t a p a r la c im a
d e la p ila c o n el e s ta d o 5. E sto e s lo q u e h a o c u r r id o e n la lín e a (2): el p r im e r c o m ­
p o n e n t e léxico id y el s ím b o lo d e l e s ta d o 5 h a n sid o in tr o d u c id o s e n la p ila y se h a
e lim in a d o id d e la e n tra d a .
E n to n c e s , * se c o n v ie r te e n el s ím b o lo d e e n t r a d a e n c u r s o y la a c c ió n d e l e s ta d o
5 c o n la e n t r a d a * es r e d u c ir p o r 7 - > id. Se e x tra e n d o s s ím b o lo s d e la p ila ( u n s ím ­
b o lo d e e s ta d o y u n s ím b o lo g ra m a tic a l). El e s ta d o 0 q u e d a e x p u e s to e n la c im a d e
la pila. C o m o el ir a del e s ta d o 0 e n 7 e s 3. se in tr o d u c e n 7 y 3 en la pila. Y a se tien e
la c o n fig u ra c ió n d e la lín e a (3). L o s m o v im ie n to s r e s ta n te s se d e t e r m in a n d e m a n e r a
s im ila r. □

G r a m á tic a s LR

¿ C ó m o se c o n s tr u y e u n a ta b la d e a n á lis is s in tá c tic o L R p a r a u n a d e t e r m in a d a gra­


m á tic a ? U n a g ra m á tic a p a r a la q u e se p u e d e c o n s tr u ir u n a ta b la d e a n á lis is sin tá c ­
tico se d e n o m i n a gram ática L R . H a y g r a m á tic a s in d e p e n d ie n te s d e l c o n te x to q u e
4.7 A N A L I Z A D O R E S S I N T A C T I C O S LR 227

n o s o n L R . p e r o e n g e n e ra l se p u e d e n e v ita r e n las c o n s tr u c c io n e s típ ic a s d e lo s le n ­


g u ajes d e p r o g r a m a c ió n . I n tu itiv a m e n te , p a r a q u e u n a g r a m á tic a s e a L R b a s ta c o n
q u e u n a n a liz a d o r s in tá c tic o p o r d e s p la z a m ie n to y re d u c c ió n q u e o p e r e d e iz q u ie rd a
a d e r e c h a p u e d a re c o n o c e r lo s m a n g o s c u a n d o a p a r e z c a n e n la c i m a d e la pila.
U n a n a liz a d o r L R n o tie n e q u e e x a m i n a r la p ila c o m p le ta p a r a s a b e r c u á n d o
a p a r e c e n los m a n g o s e n la c im a . P o r el c o n tr a r io , el s ím b o lo del e s ta d o e n la c im a
d e la pila c o n tie n e to d a la in fo rm a c ió n necesaria. E s u n h e c h o c u rio s o q u e , si se p u e d e
re c o n o c e r u n m a n g o c o n o c i e n d o só lo lo s s ím b o lo s g ra m a tic a le s d e la p ila , e n to n c e s
ex iste u n a u t ó m a t a fin ito q u e p u e d e , le y e n d o lo s s ím b o lo s g ra m a tic a le s d e la p ila de
a r r ib a a a b a jo , d e t e r m i n a r el m a n g o , si ex iste, q u e e s tá e n el to p e d e la pila. L a f u n ­
c ió n ir - a d e u n a ta b la d e a n álisis s in tá c tic o L R es e s e n c ia lm e n te d ic h o a u t ó m a t a fi­
nito. S in e m b a r g o , el a u t ó m a t a n o n e c e s ita le er la p ila p a r a c a d a m o v im ie n to . El
s ím b o lo e s ta d o a lm a c e n a d o e n la c i m a d e la p ila es el e s ta d o e n q u e e s ta ría el a u t ó ­
m a ta fin ito r e c o n o c e d o r d e los m a n g o s si h u b ie r a le íd o los s ím b o lo s g r a m a tic a le s d e
la p ila d e s d e a b a jo h a s ta la c im a . P o r ta n to , el a n a liz a d o r s in tá c tic o L R p u e d e d e ­
t e r m i n a r a p a r tir del e s ta d o d e la c i m a d e la p ila t o d o lo q u e se n e c e s ita s a b e r so b re
lo q u e h a y e n ella.
O t r a fu e n te d e in f o r m a c ió n q u e p u e d e u tiliz a r u n a n a liz a d o r L R c o m o a y u d a
p a r a t o m a r las d e c is io n e s d e d e s p la z a m ie n to y re d u c c ió n s o n los k s ím b o lo s s ig u ie n ­
te s d e e n tr a d a . L o s c aso s e n q u e k = 0 o k = 1 tie n e n in te ré s p rá c tic o , y a q u í só lo
se c o n s id e ra rá n los a n a liz a d o r e s s in tá c tic o s L R c o n k < 1. P o r e je m p lo , la ta b la d e
a c c io n e s d e la fig u ra 4.31 u tiliz a u n s í m b o l o d e e x a m e n p o r a n t ic ip a d o . U n a g r a ­
m á tic a q u e se p u e d e a n a liz a r m e d ia n te u n a n a liz a d o r s in tá c tic o L R q u e e x a m in a
h a s ta k s ím b o lo s d e e n t r a d a e n c a d a m o v i m ie n to se d e n o m i n a g ra m á tica LR(k).
E xiste u n a d ife re n c ia sig n ificativ a e n t r e la s g r a m á tic a s L L y la s L R . P a r a q u e u n a
g r a m á tic a sea LR(/c), h a y q u e s e r c a p a z d e r e c o n o c e r la p re s e n c ia del la d o d e r e c h o
d e u n a p ro d u c c ió n , h a b ie n d o v is to t o d o lo q u e d e r iv a d e d ic h o la d o d e r e c h o c o n k
s ím b o lo s d e e x a m e n p o r a n tic ip a d o . E ste r e q u is ito e s m u c h o m e n o s rig u ro so q u e el
d e las g r a m á tic a s LL(/c), d o n d e h a y q u e s e r c a p a z d e re c o n o c e r el u s o d e u n a p r o ­
d u c c ió n v ie n d o só lo los p r im e r o s k s ím b o lo s d e lo s q u e se d e r iv a su la d o d e re c h o .
P o r c o n s ig u ie n te , la s g r a m á tic a s L R p u e d e n d e s c r ib ir m á s le n g u a je s q u e la s g r a ­
m á tic a s LL.

C o n stru c c ió n d e ta b la s d e a n á lis is s in tá c tic o S L R


A c o n t in u a c i ó n se m u e s tr a c ó m o c o n s tr u i r u n a ta b la d e a n álisis s in tá c tic o S L R a
p a r ti r d e u n a g ra m á tic a . S e d a r á n tr e s m é to d o s , q u e tie n e n d is tin to s g ra d o s d e p o d e r
y facilid ad d e a p lic a c ió n . E l p r im e r o , lla m a d o “ L R s e n c illo ” (o S L R . e n inglés), es
el m á s d éb il d e los tres e n c u a n t o al n ú m e r o d e g r a m á tic a s p a r a las q u e f u n c io n a
c o n é x ito , p e r o e s el m á s fácil d e im p la n t a r . L a ta b la d e a n álisis s in tá c tic o c o n s tr u id a
c o n este m é t o d o se d e n o m i n a r á ta b la S L R y u n a n a liz a d o r L R q u e u tilice u n a ta b la
d e a n álisis S L R se d e n o m i n a r á a n a liz a d o r s in tá c tic o S L R . U n a g r a m á tic a p a r a la
q u e se p u e d a c o n s tr u i r u n a n a l iz a d o r s in tá c tic o S L R se d e n o m i n a g r a m á tic a S L R .
L o s o tr o s d o s m é to d o s a m p l í a n el m é t o d o S L R c o n in f o r m a c ió n d e e x a m e n p o r
a n tic ip a d o , a s í q u e el m é to d o S L R e s u n b u e n p u n t o d e p a r tid a p a r a e s tu d ia r el a n á ­
lisis s in tá c tic o L R .
228 ANALISIS SIN TA CTIC O

U n elem ento d el análisis sintáctico LR(O) ( elem ento , p a r a a b re v ia r) d e u n a g ra ­


m á tic a G es u n a p ro d u c c ió n d e G c o n u n p u n t o e n a lg u n a p o sic ió n del la d o d e r e ­
c h o . P o r ta n to , la p ro d u c c ió n A - * X Y Z p r o d u c e los c u a t r o e le m e n to s

A -> XYZ
A -* X Y Z
A -> X Y Z
A -> X Y Z

L a p r o d u c c i ó n A - » € g e n e r a só lo u n e l e m e n t o . A - » •. U n e l e m e n t o se p u e d e re­
p r e s e n ta r m e d ia n te d o s e n te ro s , el p r im e r o d e los c u a le s d a el n ú m e r o d e la p r o d u c ­
c ió n . y el s e g u n d o , la p o sic ió n del p u n t o . I n tu itiv a m e n te , u n e l e m e n t o in d ic a h asta
d ó n d e se h a visto u n a p r o d u c c ió n e n u n m o m e n t o d a d o d e l p r o c e s o d e l a n álisis s in ­
táctico . P o r e je m p lo , el p r im e r e le m e n to d e a r r ib a in d ic a q u e se e s p e r a v e r a c o n ti­
n u a c ió n e n la e n t r a d a u n a c a d e n a d e r iv a b le d e X Y Z . El s e g u n d o e le m e n to in d ic a
q u e se a c a b a d e v e r e n la e n t r a d a u n a c a d e n a d e r iv a b le d e X y q u e a c o n tin u a c ió n
se e s p e ra v e r u n a c a d e n a d e riv a b le d e Y Z . .
L a id e a c e n tra l del m é to d o S L R e s c o n s tr u i r p r im e r o a p a r ti r d e la g r a m á tic a un
a u t ó m a t a f in ito d e te r m in is ta p a r a re c o n o c e r los prefijo s viables. L o s e le m e n to s se
a g r u p a n e n c o n ju n to s , q u e d a n lu g a r a los e s ta d o s d e l a n a liz a d o r s in tá c tic o S L R .
L o s e le m e n to s se p u e d e n c o n s id e r a r c o m o los e s ta d o s d e u n A F N q u e r e c o n o c e los
prefijos viables, y el ‘'a g o l p a m i e n t o ” es e n re a lid a d la c o n s tr u c c ió n d e s u b c o n ju n to s
e s tu d ia d a en la se c c ió n 3.6.
U n a serie d e c o n j u n t o s d e e l e m e n t o s L R (0 ), q u e se d e n o m i n a c o le c c ió n canó­
nica L R (0 ), p r o p o r c io n a la base p a r a c o n s tr u i r a n a liz a d o re s s in tá c tic o s S L R . P ara
c o n s tr u i r la c o le c c ió n c a n ó n ic a L R (0 ) p a r a u n a g r a m á tic a , se d e f in e u n a g ra m á tic a
a u m e n t a d a y d o s fu n c io n e s , cerradura e ir~a.
Si G es u n a g r a m á tic a c o n s ím b o lo inicial S , e n to n c e s G \ la gram ática a u m en ­
tada p a r a G . es G c o n u n n u e v o s ím b o lo inicial 5 ' y la p r o d u c c ió n 5" -> S. E l p ro ­
p ó s ito d e e s ta n u e v a p ro d u c c ió n in icial e s in d ic a r al a n a liz a d o r c u á n d o d e b e d e te n e r
el a n á lis is s in tá c tic o y a n u n c i a r la a c e p ta c ió n d e la c a d e n a . E s d ecir, la a c e p ta c ió n
se p r o d u c e c u a n d o , y só lo c u a n d o , el a n a liz a d o r está a p u n t o d e r e d u c ir p o r S ' -* S.

L a operación cerradura

Si / es u n c o n j u n t o d e e le m e n to s p a r a u n a g r a m á tic a G . e n to n c e s cerradura ( / ) es el
c o n j u n t o d e e le m e n to s c o n s tr u id o a p a r tir d e / p o r las d o s reglas:

1. In ic ia lm e n te , t o d o e le m e n to d e / se a ñ a d e a cerradura (/).

2. Si A - » u -/?p está e n cerradura ( / ) y 11 - » y es u n a p ro d u c c ió n , e n to n c e s a ñ á d a s e


el e le m e n to > y a cerradura ( / ) , si to d a v ía n o está a h í. Se a p lic a esta regla
h a s ta q u e n o se p u e d a n a ñ a d i r m á s e le m e n to s a cerradura ( /) .

I n tu itiv a m e n te , si A a Z ? P está en cerradura ( / ) in d ic a q u e , en a lg ú n m o m e n t o del


p r o c e s o d e a n á lis is s in tá c tic o , se c r e e p o s ib le v e r a c o n t i n u a c i ó n u n a c a d e n a d e r i ­
vable d e B c o m o e n tr a d a . Si B —> y e s u n a p ro d u c c ió n , ta m b ié n se e s p e ra v e r u n a
s u b e a d e n a d e r iv a b le d e y e n e s te p u n t o . P o r e s t a r a z ó n se in c lu y e B —» -y en
cerradura (/).
4.7 A N A L IZ A D O R E S SINTA CTIC O S LR 229

E je m p lo 4 .3 4 . C o n s id é re s e la g r a m á tic a d e e x p re s io n e s a u m e n ta d a :

ET-+E
E-> E + T \T
(4 .1 9 )
T-> T * F \ F
F - » ( F ) | id

Si I es el c o n j u n t o d e u n e le m e n to {[£' F]}, e n to n c e s cerradura ( / ) c o n tie n e los


e le m e n to s

E •£
F - F -f T
F -* T
r-> f *f
r-> f
F -> •(£ )
F - * id

A q u í. F ' -> F se c o lo c a e n cerradura ( / ) p o r la regla 1. C o m o h a y u n a F i n m e ­


d ia ta m e n te a la d e r e c h a d e u n p u n to , p o r la regla 2 se a ñ a d e n las p r o d u c c io n e s de
E c o n p u n to s e n el e x t r e m o iz q u ie r d o , es d ecir. F F + T y E - * - T . A h o r a hay-
u n a T in m e d ia t a m e n t e a la d e r e c h a d e u n p u n t o , a s í q u e se a ñ a d e T - * • T * F y
T -* F. A c o n t in u a c i ó n , la F a la d e r e c h a d e u n p u n t o o b lig a a a ñ a d i r F —> ( F ) y
F -> id. P o r la regla 2 n o se c o lo c a n m á s e l e m e n t o s d e n t r o d e cerradura ( / ) . □

S e p u e d e c a lc u la r la f u n c ió n cerradura c o m o se m u e s tr a e n la fig u ra 4 .3 3 . U n a
f o r m a a p r o p i a d a d e i m p l a n t a r la f u n c ió n cerradura e s m a n t e n e r u n a m a tr iz b o o -
le a n a a ñadida , in d e x a d a p o r los n o te rm in a le s d e G , d e f o r m a q u e a aña d id a [B ) se
le a s ig n a tr u c s ie m p re y c u a n d o se a ñ a d a n los e l e m e n t o s B y para cada p ro d u c­
c ió n d e B B y.

function cerradura ( I ):
begin
J := /;
repeat
for cada elem en to A - * a - # p en ./ y c a d a producción
B -► y d e G tal q u e B - » y n o esté e n J do
a ñ a d ir B -* y a J
until n o se p u e d a n a ñ a d ir m ás ele m e n to s a J ;
return J
end

Fig. 4.33. C álcu lo d e cerradura.

O b sérv ese q u e si se a ñ a d e u n a p r o d u c c ió n d e B a la c e r r a d u r a d e I c o n el p u n t o
e n el e x tr e m o iz q u ie r d o , e n to n c e s to d a s las p r o d u c c io n e s d e B se a ñ a d i r á n d e m a ­
n e ra s im ila r a la c e r r a d u r a . D e h e c h o , e n a lg u n a s c irc u n s ta n c ia s n o es r e a lm e n te n e ­
cesario listar los e l e m e n t o s B y a ñ a d id o s a / p o r cerradura. B astará c o n d a r u n a
230 A N A LISIS SINTA CTIC O

lista d e los n o te rm in a le s B c u y a s p r o d u c c io n e s se a ñ a d i e r o n asi. D e h e c h o , se p u e ­


d e n d iv id ir to d o s los c o n j u n t o s d e los e le m e n to s q u e in te re s a n e n d o s clases d e ele­
m e n to s.

1. E lem entos nucleares, q u e in c lu y e n el e le m e n to in icial. S ' - * S , y to d o s los ele­


m e n to s c u y o s p u n to s n o estén e n el e x t r e m o iz q u ie rd o .

2. E lem entos no nucleares , c u y o s p u n t o s están en el e x t r e m o iz q u ie rd o .

A d e m á s, c a d a c o n ju n to d e e le m e n to s q u e in teresa se fo rm a t o m a n d o la c e rra d u r a d e
u n c o n j u n t o d e e le m e n to s del n ú cleo : los e le m e n to s a ñ a d id o s e n la c e rra d u r a n u n c a
p u e d e n s e r e l e m e n t o s , p o r s u p u e s to . E n t o n c e s se p u e d e n r e p r e s e n ta r los c o n j u n t o s
d e e l e m e n t o s q u e r e a l m e n te in te re s e n c o n m u y p o c a m e m o r i a si se d e s e c h a n to d o s
los e l e m e n t o s n o n u c le a r e s , s a b ie n d o q u e se p o d r ía n r e g e n e r a r m e d i a n t e el p ro c e s o
de cerrad u ra.

L a operación ir - a

L a s e g u n d a f u n c ió n útil es / r _ a ( / . X ), d& nde / es u n c o n j u n t o d e e l e m e n t o s y A* es


u n s ím b o lo d e la g r a m á tic a . Se d e fin e ir - a ( L X ) c o m o la c e r r a d u r a d e l c o n j u n t o d e
to d o s los e l e m e n t o s [.I aV -fi] ta le s q u e \A —►a-A’P] esté e n /. I n tu itiv a m e n te , si /
e s el c o n j u n t o d e e le m e n to s v á lid o s p a r a a lg ú n prefijo viable, e n to n c e s /> _#(/. A') es
el c o n j u n t o d e e le m e n to s v á lid o s p a r a el p re fijo v iab le yX.

E je m p lo 4 .3 5 . Si / es el c o n j u n t o d e d o s e l e m e n t o s { [ E ' - t E ). [ £ - * £ • + 7*]}, e n t o n ­
ces /> _«(/. + ) c o n s ta de

E-> E + T
T-+ T * F
F
F - > (E)
F .-> id

Se c a lc u ló / r _ a ( / , + ) e x a m i n a n d o / p a r a b u s c a r e l e m e n t o s c o n + in m e d ia ta m e n te
a la d e r e c h a del p u n t o . E ' - » E • n o es u n o d e e s to s e l e m e n t o s p e ro E -> £ • + T, sí.
S e d e s p la z ó el p u n t o m á s allá d e + p a r a o b te n e r {E -+ E + - T ) y d e s p u é s se t o m ó la
c e r r a d u r a d e este c o n j u n to . O

L a construcción d e conjuntos d e elem entos

A h o r a y a se p u e d e d a r el a lg o ritm o p a r a c o n s tr u ir C . la c o le c c ió n c a n ó n ic a d e c o n ­
j u n t o s d e e le m e n to s L R (0 ) p a r a u n a g r a m á tic a a u m e n t a d a G'\ el a lg o r itm o se m u e s ­
tr a en la fig u ra 4.34.

E je m p lo 4 .3 6 . E n la fig u ra 4 .3 5 se m u e s tr a la c o le c c ió n c a n ó n ic a d e c o n j u n t o s d e
e le m e n to s L R (0 ) p a r a la g r a m á tic a (4 .1 9 ) del e je m p lo 4 .3 4 . L a f u n c ió n ir - a p a ra
este c o n j u n t o d e e le m e n to s se m u e s tr a e n la figura 4 .3 6 c o m o el d ia g r a m a d e t r a n ­
sic io n e s d e u n a u t ó m a t a fin ito d e te r m in is ta D. □
4.7 A N A L IZ A D O R E S SINTACTICO S LR 231

procedure elementos (G ');


begin
C : = {cerradura ( { [ y -> •£]})};
repeat
for cada c o n ju n to d e elem entos / en C y cada sím bolo
gram atical X tal que ir -a (/. X ) n o esté vacio y n o
esté en C do
a ñ a d ir ir - a (/. X ) a C
until n o se p u e d a n a ñ a d ir m ás c o n ju n to s d e elem entos a C
end

Fig. 4 3 4 . C o n strucció n d e c o n ju n to s d e elem entos.

Si c a d a e s ta d o d e D d e la fig u ra 4 .3 6 e s u n e s ta d o final e 70 es el e s ta d o inicial,


e n to n c e s D r e c o n o c e e x a c ta m e n te lo s p re fijo s viab les d e la g ra m á tic a (4.19). E sto n o
e s n in g u n a c a s u a lid a d . P a ra to d a g r a m á tic a G , la f u n c ió n ir - a d e la c o le c c ió n ca­
n ó n ic a d e los c o n j u n to s del e le m e n to s d e f in e u n a u t ó m a t a fin ito d e te r m in is ta q u e
r e c o n o c e los prefijo s v iab les d e G . D e h e c h o , se p u e d e v isu a liz a r u n a u t ó m a t a fin ito

/o: E ' -> E /i- id


E -> -E + T
E —> T ¡6- e -> £ + r
T -> T * F r-+
T -+ F T -> F
F -> •(£ ) F - + •(£’)
F -> -id F id

E' E h: r-> f *-f


E E-+ T • 7* - •(£)
F -► -id
h- T
T - * T *F U' F —* (E-)
E -> E + T
/*: 7’ - » F
h: E -> £ + r
U: F (-£) T - * T *F
E -£ + r
E -> r /|0-’ T 7*F
T-> T*F
T-> F F -> (£)■
F -» •(£ )
F -* -id

F ig . 4 . 3 5 . C o l e c c i ó n d e l a n á l i s i s s i n t á c t i c o L R ( 0 ) c a n ó n i c o p a r a la g r a m á t i c a ( 4 .1 9 ) .
232 ANALISIS SIN TA CTIC O

n o d e te r m in is ta N c u y o s e s ta d o s s o n los p ro p io s e le m e n to s . H a y u n a tr a n s ic ió n de
A -> a -.V P a A - > a A ' p e tiq u e ta d a c o n A', y h a y u n a tr a n s ic ió n d e A - > a a
B -> y e tiq u e ta d a c o n e . E n to n c e s , cerradura{I) p a r a el c o n j u n t o d e e le m e n to s (es­
ta d o s d e N ) I es e x a c ta m e n te la cerradura - € d e u n c o n j u n t o d e e s ta d o s d e A F N d e ­
fin id a e n la secció n 3.6. P o r ta n to , / r _ a ( / , X ) d a la tra n s ic ió n d e s d e / c o n el s ím b o lo
X e n el A F D c o n s tr u id o a p a r tir d e N p o r la c o n s tr u c c ió n d e s u b c o n ju n to s . A sí c o n ­
sid e ra d o , el p r o c e d im ie n to elem entos(G ') d e la fig u ra 4 .3 4 e s s im p le m e n te la p ro p ia
c o n s tru c c ió n d e s u b c o n ju n to s a p lic a d a al A F N N c o n s tr u i d o a p a r ti r d e G \ c o m o
y a se ha d escrito .

Fig. 4.36. D iag ram a de transiciones del A F D D para los prefijos viables.

E lem entos válidos. S e d ic e q u e el e l e m e n t o A —> P i P 2 es válido p a r a u n p refijo


viable a p , si ex iste u n a d e riv a c ió n S" = £ <l4w => a p i P 2w. E n g en eral, u n e le m e n to
se rá v álid o p a r a m u c h o s p re fijo s viables. El h e c h o d e q u e A -* P 1 P 2 sea v álid o p a ra
a p i in f o r m a so b re si d e s p la z a r o re d u c ir c u a n d o se e n c u e n t r e a P , e n la p ila d e a n á ­
lisis s in tá c tic o . E n c o n c r e to , si P> # € , e n to n c e s in d ic a q u e a ú n n o se h a d e s p la z a d o
el m a n g o h acia la pila, a s í q u e el m o v i m ie n to d e b e s e r d e sp la z a r. Si p 2 = € , e n t o n ­
ces p a re c e q u e A - > pi e s el m a n g o , y se d e b e r e d u c ir m e d ia n te e s ta p ro d u c c ió n . P o r
4.7 A N A L IZ A D O R E S SINTA CTIC O S LR 233

s u p u e s to , d o s e le m e n to s v á lid o s p u e d e n in d i c a r d o s c o sas d is tin ta s p a r a el m is m o


p re fijo válido. Se p u e d e n re so lv e r a lg u n o s d e e s to s c o n flic to s o b s e r v a n d o el sigu ien te
s ím b o lo d e e n tr a d a y o tr o s se p u e d e n re so lv e r c o n lo s m é to d o s d e la sig u ie n te sec­
c ió n . p e r o n o h a y q u e s u p o n e r q u e to d o s lo s c o n flic to s d e a c c io n e s d e a n á lis is s in ­
tá c tic o se p u e d e n re so lv e r u tiliz a n d o el m é t o d o L R p a r a c o n s tr u i r u n a ta b la d e a n á ­
lisis s in tá c tic o p a r a u n a g ra m á tic a a rb itra ria .
El c o n j u n t o d e e le m e n to s v á lid o s p a r a c a d a p re fijo v ia b le q u e p u e d a a p a r e c e r en
la p ila d e u n a n a liz a d o r L R es fácil d e c a lc u la r. D e h e c h o , un te o r e m a b ásico d e la
te o ría d e l a n álisis s in tá c tic o L R es q u e el c o n j u n t o d e e le m e n to s v álid o s p a r a u n p re ­
fijo v iab le y es e x a c ta m e n te el c o n j u n t o d e e le m e n to s a lc a n z a d o s d e s d e el e s ta d o in i­
cial a lo la rg o d e u n c a m i n o e tiq u e ta d o c o n y e n el A F D c o n s tr u i d o a p a r ti r d e la
c o le c c ió n c a n ó n ic a d e c o n j u n t o s d e e le m e n to s c o n tra n s ic io n e s d a d a s p o r ir - a . E n
r e s u m e n , el c o n j u n t o d e e le m e n to s v á lid o s a b a r c a to d a la in f o r m a c ió n ú til q u e se
p u e d e e x tra e r d e la pila. A u n q u e a q u í n o se d e m o s tr a r á , se d a r á u n e je m p lo d e este
te o re m a .

E jem p lo 4 .3 7 . C o n sid érese d e n u e v o la g ra m á tic a (4.19), c u y o s c o n ju n to s d e e le m e n ­


to s y fu n c ió n i r - a se e x h ib e n e n las fig u ras 4 .3 5 y 4 .3 6 . E v id e n te m e n te , la c a d e n a
E + T * e s u n p refijo viable d e (4.19). El a u t ó m a t a d e la figura 4 .3 6 se e n c o n tr a r á en
el estad o / 7 d esp u és d e h a b e r leído E + T *. El e s ta d o / 7 c o n tie n e los e le m e n to s

T -* T * F
F • (£ )
F -> id

q u e s o n p r e c is a m e n te los e le m e n to s v á lid o s p a r a E + T * . P a r a c o m p r o b a r lo , c o n ­
sid é re n se las tres sig u ie n te s d e riv a c io n e s p o r la d e r e c h a

E ' => E E'= > E FJ => E


=> E + T => E + T =>£ + T
=> E + T*F => E + T*F => E + T*F
=> E + T*(E) => E + 7>id

L a p r im e r a d e riv a c ió n m u e s tr a la v alid ez d e T T * F\ la se g u n d a , la v alid ez d e


F • ( £ ) , y la te rc e ra , la v alid ez d e F - * -id p a r a el p re fijo v iab le E + T * . S e p u e d e
d e m o s t r a r q u e n o h a y o tr o s e l e m e n t o s v á lid o s p a r a E 4* 7’ *; se d e ja la p r u e b a al
le c to r in te re s a d o . □

Tablas d e análisis sintáctico S L R

A c o n tin u a c ió n se m u e s tr a c ó m o c o n s tr u i r las f u n c io n e s d e a c c ió n e ir - a del a n á li­


s is s in tá c tic o S L R a p a r t i r d e l a u t ó m a t a f in i to d e t e r m i n i s t a q u e r e c o n o c e p re fijo s
viables. E ste a lg o r itm o n o p r o d u c ir á ú n ic a m e n t e ta b la s d e a c c io n e s d e fin id a s p a ra
to d a s la s g r a m á tic a s , p e r o f u n c io n a r á c o r r e c t a m e n t e c o n m u c h a s g r a m á tic a s p a r a
len g u ajes d e p r o g r a m a c ió n . D a d a u n a g r a m á tic a , (7, se a u m e n t a O p a r a p r o d u c i r G \
234 A N A L IS IS S IN T A C T IC O

y a p a r tir d e ( 7 se c o n s tr u y e C , la c o le c c ió n c a n ó n ic a d e c o n j u n to s d e e le m e n to s
p a r a G . S e c o n s tr u y e acción , la f u n c ió n d e a c c io n e s d e l a n a l iz a d o r s in tá c tic o , e ir-a ,
la f u n c ió n d e tra n s ic io n e s d e e s ta d o s , a p a r ti r d e C u tiliz a n d o el sig u ie n te alg o ritm o .
El a lg o ritm o exige q u e se c o n o z c a S I G U I E N T E ^ ) p a r a c a d a n o te rm in a l A d e u n a
g ra m á tic a (v éase Sec. 4.4).

A lg o ritm o 4 .8 . C o n s tr u c c ió n d e u n a ta b la d e a n álisis s in tá c tic o SL R .

Entrada. U n a g r a m á tic a a u m e n t a d a G'.

Salida. L as f u n c io n e s acción e ir - a d e la ta b la d e a n á lis is s in tá c tic o S L R p a r a G \

M étodo.

1. C o n s tru y a s e C = {/o, ¡ \ ............/„}, la c o le c c ió n d e c o n j u n to s d e e le m e n to s L R (0 )


p a ra G'.

2. El e s ta d o / se c o n s tr u y e a p a r ti r d e /,. L a s a c c io n e s d e a n á lis is s in tá c tic o p a r a el


e s ta d o i se d e t e r m in a n c o m o sigue:

a ) Si [.4 - » ct-tfP] está e n / , e ir-a (I,. a) = /,, e n to n c e s asígnese “ d e s p la z a r / ' a


acción[iy a\. A q u í, a d e b e s e r u n te rm in a l.

b) Si [.4 —►ex ] está e n /,. e n to n c e s asíg n ese “ r e d u c ir A - » a " a acción[i, a] p a ra


to d a a en S I G U I E N T E S ) ; a q u í, A p u e d e n o ser S \

c) Si [S ' - > S ] está e n /„ e n to n c e s asígnese “ a c e p ta r " a acción[i, $].

Si las reglas a n te r io r e s g e n e r a n a c c io n e s c o n tra d ic to r ia s , se d ic e q u e la g r a m á tic a n o


es S L R ( l) . El a lg o ritm o n o c o n sig u e e n este c a so p r o d u c i r u n a n a liz a d o r sin tá ctic o .

3. Las tra n s ic io n e s i r - a p a r a el e s ta d o i se c o n s tr u y e n p a r a to d o s los n o te rm in a le s


A u tiliz a n d o la regla: si ir-a (I¡, A ) = Ih e n to n c e s ir-a [i. A] = j.
4. T o d a s las e n tr a d a s n o d e fin id a s p o r las reglas 2 y 3 s o n c o n s id e ra d a s “ e rro r".

5. El e s ta d o in icial del a n a liz a d o r e s el c o n s tr u i d o a p a r tir d e l c o n j u n t o d e e l e m e n ­


to s q u e c o n tie n e I S ' - » •S ]. □

L a ta b la d e a n á lis is s in tá c tic o f o r m a d a p o r la s f u n c io n e s d e acción e i r - a del


a n álisis s in tá c tic o d e te r m in a d a p o r el a lg o ritm o 4 .8 se d e n o m i n a tabla S L R ( I ) para
G. U n a n a liz a d o r s in tá c tic o L R q u e use la ta b la S L R ( l ) p a r a G se d e n o m i n a a n a li­
z a d o r s in tá c tic o SLR ( 1) p a r a G , y u n a g r a m á tic a q u e te n g a u n a ta b la d e a n álisis s in ­
tá c tic o S L R ( l ) se d e n o m i n a S L R ( 1). N o r m a l m e n t e , se o m i t e el “( 1 ) " d e s p u é s d e
“ S L R " , y a q u e n o se c o n s id e ra n los a n a liz a d o re s s in tá c tic o s c o n m á s d e u n s ím b o lo
d e e x a m e n p o r a n tic ip a d o .

E je m p lo 4 .3 8 . C o n s tr u c c ió n d e la ta b la S L R p a r a la g r a m á tic a (4.1 9). E n la figura


4 .3 5 se m o s tr ó la serie c a n ó n ic a d e c o n j u n t o s d e e l e m e n t o s del a n álisis s in tá c tic o
L R (0 ) p a r a (4.1 9). P r im e r o c o n sid é re se el c o n j u n t o d e e le m e n to s 70:

£ ' -> £
£->•£ + T
E T
4.7 A N A L I Z A D O R E S S I N T A C T I C O S LR 235

T*F
f
F —> (E )
F - > ¡d

El e le m e n to F - * • ( £ ) d a lu g a r a la e n t r a d a acción[ 0 . (] = d e s p la z a r 4 . y el e le m e n to
F id a la e n t r a d a acción[ 0 , id] = d e s p la z a r 5. L o s o tro s e l e m e n t o s e n 70 n o d a n
lu g a r a accio n es. A h o r a c o n s id é re s e I\i

E '-+ E
E-> E + T

El p rim er e le m e n to p ro d u ce acción[ 1, $] = aceptar, el se g u n d o prcxluce acción\ 1. + ]


= d e s p la z a r 6. A h o r a c o n sid é re se Iy.

E -> T
T -* F*F

C o m o S I G U I E N T E ( £ ) = { $ , + , ) ) , el p r im e r e le m e n to h a c e q u e acción[ 2 , $) = ac­
ción [2, -f J = acción[2. )] = re d u c ir E —* T. El s e g u n d o e l e m e n t o h a c e a cción[2, *]
= d e s p la z a r 7. Si se c o n t i n ú a asi, se o b tie n e n las ta b la s d e acción e ir - a d e l a n álisis
s in tá c tic o d e la fig u ra 4 .3 1 . E n d ic h a figura, los n ú m e r o s d e p ro d u c c io n e s e n las a c ­
c io n e s d e re d u c c ió n s o n los m is m o s q u e el o r d e n e n q u e a p a r e c ie r o n e n la g ra m á tic a
orig inal (4.18). Es d ecir. E - * E + T es el n ú m e r o 1, E —►T e s el 2 , e tc é te ra . □

E je m p lo 4 .3 9 . T o d a g r a m á tic a S L R ( 1) e s n o a m b ig u a , p e ro h a y m u c h a s g ra m á tic a s
n o a m b ig u a s q u e n o son S L R ( 1). C o n s id é re s e la g ra m á tic a c o n p ro d u c c io n e s
S -+ L = R
S R
L-+ *R (4 .2 0 )
L-»¡ d
R -* L
S e p u e d e c o n s id e r a r q u e L y R r e p r e s e n ta n u n valor d e lado izquierdo y u n valor de
lado derecho , re s p e c tiv a m e n te , y q u e * es u n o p e r a d o r q u e in d ic a “c o n t e n i d o d e ”3.
E n la fig u ra 4 .3 7 se m u e s tr a la c o le c c ió n c a n ó n ic a d e c o n j u n t o s d e e le m e n to s L R (0)
p a r a la g r a m á tic a (4.20).
C o n s id é re s e el c o n j u n t o d e e le m e n to s /; . E l p r i m e r e le m e n to d e este c o n ju n to
h a c e q u e acción[ 2 , = ] sea “d e s p la z a r 6 ” . C o m o S I G U I E N T E ( R ) c o n t i e n e = , ( p a ra
s a b e r p o r q u é , c o n sid é re se S => L = R => * R = R ), el s e g u n d o e le m e n to h a c e q u e
acción\ 2 , = ] s e a “ r e d u c ir R -> L ". P o r t a n t o , la e n t r a d a acción[ 2 , = ] tie n e m ú lti­
p le s d e f in ic io n e s . C o m o e n acción[2y = ] , e x is te n la s d o s e n tr a d a s , d e s p la z a r y r e ­
d u c ir. el e s ta d o 2 tie n e u n c o n flic to d e d e s p la z a m ie n to /r e d u c c ió n c o n el s ím b o lo d e
e n tra d a = .
L a g ra m á tic a (4 .2 0 ) n o e s a m b ig u a . E ste c o n flic to d e d e s p la z a m ie n to /r e d u c c ió n
su rg e p o r q u e el m é to d o d e c o n s tr u c c ió n d e a n a liz a d o r e s s in tá c tic o s S L R n o e s lo

’ C o m o s e v io e n la s e c c ió n 2 .8 . u n v a lo r d e la d o iz q u ie r d o d e sig n a u n a p o s ic ió n , y u n v a lo r d e la d o
d e r e c h o e s u n v a lo r q u e se p u e d e a lm a c e n a r e n u n a p o sic ió n .
236 ANALISIS SIN TA CTIC O

lo' S -* S h- L -> id
S -> L = R
S -> R U: S -> L= R
L *R R -> -L
L -> id L -> *R
R -* L L -* id

S '-> S - / 7: L - » */?•

h: S -+ L =R /*: R - > L-
R - * L-
/<>: S — L =R
/?: S-> R

/<: L *•/?
R -* L
L -> *R
L id

F ig. 4 .3 7 . C olección del análisis sinláctico L R (0 ) c a n ó n ic o para la g ram ática (4.20).

s u f ic ie n te m e n te p o d e r o s o c o m o p a r a r e c o r d a r el c o n te x to a la iz q u ie r d a in d is p e n ­
sable p a r a d e c id ir q u é a c c ió n d e b e re a liz a r el a n a l iz a d o r c o n la e n t r a d a = h a b ie n d o
v isto u n a c a d e n a re d u c ib le a L. L o s m é to d o s c a n ó n ic o y L A L R , q u e se e s tu d ia n a
c o n tin u a c ió n , serán los a d e c u a d o s p a r a u n a serie m a y o r d e g ra m á tic a s , in c lu id a la
g ra m á tic a (4.20). S in e m b a r g o , h a y q u e re s a lta r q u e ex isten g r a m á tic a s n o a m b ig u a s
p a r a las q u e t o d o m é to d o d e c o n s tr u c c ió n d e a n a liz a d o r e s s in tá c tic o s L R p ro d u c ir á
u n a ta b la d e a c c io n e s d e a n á lis is s in tá c tic o c o n c o n flic to s d e a c c io n e s. A f o r tu n a d a ­
m e n te , d ic h a s g r a m á tic a s se s u e le n p o d e r e v ita r e n las a p lic a c io n e s d e le n g u a je s de
p r o g ra m a c ió n . □

C o n str u c c ió n d e ta b la s d e a n á lis is s in tá c tic o L R c a n ó n ic o

A c o n tin u a c ió n s e in tr o d u c e la té c n ic a m á s g e n e ra l p a r a c o n s tr u i r u n a ta b la d e a n á ­
lisis s in tá c tic o L R a p a r ti r d e u n a g r a m á tic a . R e c u é rd e se q u e e n el m é to d o S L R . el
e s ta d o i p id e u n a re d u c c ió n e n A a si el c o n j u n t o d e e le m e n to s / , c o n tie n e el ele­
m e n to [A -> a ] y a e s tá e n S I G U I E N T E S ) . S in e m b a r g o , a veces, c u a n d o el e s ta d o
/ a p a re c e en la c im a d e la p ila , el p re fijo v iab le P a d e la p ila es ta l q u e P A n o p u e d e
ir seguida d e u n a a en u n a fo rm a d e frase d erech a . P o r ta n to , la red u c c ió n p o r A - » a
seria n o v á lid a c o n la e n t r a d a a.

E je m p lo 4 . 4 0 . C o n s id é re s e d e n u e v o el e je m p lo 4 .3 9 . d o n d e e n el e s ta d o 2 e s ta b a el
e le m e n to R - * L - , q u e p o d ía c o r r e s p o n d e r a la reg la A —> a a n te r io r , y a p o d r ía ser
el signo = , q u e está e n S I G U I E N T E S ) . P o r ta n to , el a n a liz a d o r s in tá c tic o S L R pide
u n a re d u c c ió n p o r R - » L e n el e s ta d o 2 c o n = c o m o s ím b o lo d e e n t r a d a sig u ie n te
( ta m b ié n se p id e la a c c ió n d e d e s p la z a r a c a u s a d e lo s e le m e n to s S —►L- = R e n el
e s ta d o 2). S in e m b a r g o , n o h a y n in g u n a f o r m a d e frase d e r e c h a d e la g r a m á tic a q u e
4.7 A N A L I Z A D O R E S S I N T A C T I C O S LR 237

c o m ie n c e c o n R = . . . P o r ta n to , el e s ta d o 2, q u e c o r r e s p o n d e al p re fijo v iab le L
s o la m e n te , e n re a lid a d n o d e b e ría p e d ir u n a re d u c c ió n d e esa L a R . □

E s p o sib le lle v a r m á s in f o r m a c ió n e n el e s ta d o q u e p e r m i ta p r o h ib ir a lg u n a s d e
estas re d u c c io n e s n o v á lid a s p o r A -> a. D iv id ie n d o e s ta d o s s ie m p r e q u e sea n e c e ­
sario , se p u e d e lo g ra r q u e c a d a e s ta d o d e u n a n a liz a d o r s in tá c tic o L R in d iq u e e x a c ­
t a m e n t e q u é s ím b o lo s d e e n t r a d a p u e d e n se g u ir a u n m a n g o a p a r a el c u a l h a y u n a
p o sib le re d u c c ió n a A.
Se in c o r p o r a la in f o r m a c ió n a d ic io n a l al e s ta d o re d e f in ie n d o e le m e n to s p a r a in ­
c lu ir u n s ím b o lo te rm in a l c o m o s e g u n d o c o m p o n e n te . L a fo rm a g en eral d e u n ele­
m e n to se c o n v ie r te e n [A - » a - p , a], d o n d e A - » a p es u n a p ro d u c c ió n y a es u n te r­
m in a l o el m a r c a d o r d e l e x tr e m o d e r e c h o $. D ic h o o b je to se d e n o m i n a elem ento del
análisis sintáctico L R (1 ). El 1 se refiere a la lo n g itu d del s e g u n d o c o m p o n e n te , lla­
m a d o sím b o lo d e anticipación del e le m e n to 4. El s ím b o lo d e a n tic ip a c ió n n o tie n e
efecto e n u n e le m e n to d e la f o r m a \A - > a - p . a], d o n d e p n o e s € , p e r o u n e le m e n to
d e la f o r m a [A - * a - , a) p id e u n a r e d u c c ió n p o r A - > a s ó lo si el sig u ie n te s ím b o lo
d e e n t r a d a es a. P o r t a n t o , se d e b e r e d u c ir p o r A a só lo c o n a q u e llo s s ím b o lo s d e
e n t r a d a a p a r a los q u e [A - > a - , a] es u n e le m e n to L R ( 1) e n el e s ta d o d e la c i m a d e
la pila. El c o n j u n t o d e d ic h a s a s ie m p re se rá u n s u b c o n ju n t o d e S I G U I E N T E S ) ,
p e ro p o d r ía s e r u n s u b c o n ju n to p ro p io , c o m o e n el e je m p lo 4.40.
F o r m a l m e n t e , se d ic e q u e u n e l e m e n t o L R ( 1 ) [A a - p , a ] e s válido p a r a u n
p re fijo v iab le y si ex iste u n a d e r iv a c ió n S = > S A w Safiw, d o n d e
1. y = 8a, y
2. a e s el p r im e r s ím b o lo d e ve. o ve e s € y a e s $.

E je m p lo 4 .4 1 . C o n s id é re s e la g ra m á tic a

S -> B B
B -+ a B \ b

H ay u n a derivación p o r la d e re c h a S => aaB ab aaaBab. El e le m e n to [ # - » a B, a]


es v álid o p a r a u n p re fijo v iab le y = a a a h a c ie n d o 8 = aa, A = B, w = ab, a = a y
p = B e n la d e fin ic ió n a n te rio r.
T a m b ié n h a y u n a d e riv a c ió n p o r la d e r e c h a 5 => B a B => B aaB . D e a q u í se d e ­
d u c e q u e el e le m e n to [ /i - » a-B, $] es v á lid o p a r a el p re fijo viable Baa. □
E l m é t o d o p a r a c o n s t r u i r la c o l e c c i ó n d e c o n j u n t o s d e e l e m e n t o s L R ( 1) v á l id o s
es f u n d a m e n t a l m e n t e el m i s m o q u e la f o r m a e n q u e se c o n s tr u y ó la c o le c c ió n c a ­
n ó n ic a d e c o n j u n to s d e e l e m e n t o s d e l a n álisis s in tá c tic o L R (0 ). S ó lo h a y q u e m o ­
d ific a r los d o s p r o c e d im ie n to s cerradura e ir-a .
P a r a a p r e c ia r la n u e v a d e fin ic ió n d e la o p e r a c ió n cerradura, c o n sid é re se u n ele­
m e n t o d e la f o r m a [A —» a - f lp , a] e n el c o n j u n t o d e e l e m e n t o s v á lid o s p a r a u n p re ­
fijo v iab le y. E n to n c e s h a y u n a d e r iv a c ió n p o r la d e r e c h a S =j- 8.4 a x SaBfia.x,
d o n d e y = 8 a . S u p ó n g a s e q u e d e p a v s e d e r iv a la c a d e n a d e te rm in a le s by. E n t o n ­
ces. p a r a c a d a p ro d u c c ió n d e la f o r m a B -> q p a r a a lg ú n x\, se tie n e e n to n c e s la d e ­

4 S o n p o sib le s, d e s d e lu e g o , lo s s ím b o lo s d e a n lic ip a c ió n c o n c a d e n a s d e lo n g itu d m a y o r q u e u n o .


p e r o n o se tratarán a q u í.
238 ANALISIS SIN TA C TIC O

riv a c ió n 5 => y B b y 5 y n b y. P o r t a n t o , [B - > ti, b] es v álid o p a r a y . O b sé rv e se q u e


b p u e d e s e r el p r im e r te r m in a l d e r iv a d o d e p, o es p o s ib le q u e p d e riv e € e n la d e ­
riv a c ió n Pízy => by , y p o r t a n t o b p u e d e s e r a. P a r a r e s u m ir a m b a s p o sib ilid a d e s, se
estab lece q u e b p u e d e s e r c u a l q u ie r te rm in a l e n PRIM ERO (Ptf.Y ), d o n d e P R I M E R O
es la f u n c ió n d e la se c c ió n 4 .4 . O b s é rv e s e q u e .v n o p u e d e c o n t e n e r el p r i m e r te r ­
m in a l d e by\ d e m o d o q u e PR 1M ERO (P<?a) = P R I M E R O ( p « ) . A c o n tin u a c ió n se
d a la c o n s tru c c ió n d e los c o n j u n to s d e e le m e n to s L R ( 1).

A lg o ritm o 4 .9 . C o n s tr u c c ió n d e los c o n j u n t o s d e e le m e n to s L R (1 ).

E n tra da. U n a g ra m á tic a a u m e n t a d a G .

Salida. L os c o n j u n t o s d e e le m e n to s L R ( 1) q u e s o n el c o n j u n t o d e e le m e n to s v álid o
p a r a u n o o m á s p re fijo s viab les d e G .

M étodo. L o s p r o c e d im ie n to s cerradura e ir - a y la r u ti n a p rin c ip a l elem entos p a ra


c o n s tr u ir los c o n j u n t o s d e e le m e n to s se m u e s tr a n e n la fig u ra 4 .3 8 . □

function cerradura (/):


b e g in

repeat
cada elem ento [A —► a / f p , a] en / .
fo r

cada producción B -* y en G
y cada term in al b en P R IM E R O iP # )
tal q u e [B -► -y. b) n o esté en / do
añ ad ir [B - * y. />] a /;
until n o se p u e d a n a ñ a d ir m ás elem en to s a /:
return /
end:

fu n c tio n ir-a (/. X):


b e j-in
sea J el c o n ju n to d e elem en to s [A —* (lAT-fi, a] tal qu e
[A -> a-A'p. a \ esté en /;
return cerradura (J)
end:

p ro ced u re elementos ( 6 ” );
b e g in

C : = {cerradura{{[S1 —* -5, $]})};


repeat
fo r cada c o n ju n to d e elem entos / en C y cada sím bolo
gram atical X tal que ir - a (/. X ) no esté vacío y n o esté en C do
a ñ a d ir ir -a (/. X ) a C
u n til n o se p u e d a n a ñ a d ir m ás c o n ju n to s d e elem en to s a C
end

F ig . 4.38. C onstrucción d e c o n ju n to s d e elem entos LR( 1) para la gram ática G .


4.7 A N A L IZ A D O R E S SIN T A C T IC O S LR 239

E je m p lo 4 .4 2 . C o n s id é re s e la sig u ie n te g r a m á tic a a u m e n ta d a .

y - s
s-*cc
C cC \d (4 .21)

Se c o m ie n z a p o r c a lc u la r la c e r r a d u r a d e {[5' - > S , $)}. P a r a la c e r r a d u r a , se e m p a ­


re ja el e le m e n to [ 5 ' - > S, $] c o n el e le m e n to [A - » a Z?p, a] e n el p r o c e d im ie n to
cerradura. Es d ecir, A = S \ a = € , B = S. fi = € , y a = $ . L a fu n c ió n cerradura
in d ic a q u e h a y q u e a ñ a d i r [B y , b] p a r a c a d a p ro d u c c ió n B -> y y te rm in a l b en
P R IM E R O (p tf). E n f u n c ió n d e esta g r a m á tic a . B —> y d e b e s e r 6' —> C C . y c o m o (3 es
€ y a e s $ , b só lo p u e d e s e r $ . P o r ta n to , se a ñ a d e [S - * -C C , $].
S e c o n tin ú a el c á lc u lo d e la c e rra d u r a a ñ a d ie n d o to d o s los e le m e n to s [ C - * -y, b\
p a r a b e n P R I M E R O ( C $). E s d ecir, e m p a r e ja n d o [S —► C C $] c o n [/I a Bf¡, a]
se tie n e A = 5 , a = 6 , B = C , P = C y = $ . C o m o d e C n o se d e r iv a la c a d e n a
v acía. P R I M E R O ( C S ) = P R I M E R O ( C ) . P u e s to q u e P R I M E R O ( C ) c o n t i e n e los
te rm in a le s c y d. se a ñ a d e n los e le m e n to s [ C - > cC. c], [ C - > r C , </], [ C - * r/, c] y
[ C - ♦ •d . */]. N in g u n o d e lo s n u e v o s e l e m e n t o s tie n e u n n o te r m in a l i n m e d i a t a ­
m e n te a la d e r e c h a d e l p u n to , d e m a n e r a q u e se h a c o m p le ta d o el p r im e r c o n j u n t o
d e e le m e n to s L R (1 ). El c o n j u n t o in icial d e e le m e n to s es:

/„: y -> y $
S - * -C C , $
C —> "CC, c /d
C - » d. c /d

P a ra facilitar la n o ta c ió n se h a n o m i tid o los c o rc h e te s, y la n o ta c ió n [ C -> cC\ c/d]


se u tiliza c o m o a b re v ia tu r a d e los d o s e le m e n to s [ C - » cC . c] y [ C cC , </].
A h o ra se c a lc u la ir-aU o • Af) p a r a los d is tin to s v a lo re s d e Af. P a r a A' = 5 se d eb e
c e rra r el e le m e n to [ 5 ' —> S , $]. N o se p u e d e h a c e r n in g u n a o tr a c e r r a d u r a p o r q u e el
p u n to está en el la d o d e re c h o . E n to n c e s , se tie n e el sig u ie n te c o n j u n t o d e ele m e n to s:

/, : y - > y , $

P a r a X = C se c ie rra [ S - * C C , $ ]. S e a ñ a d e n las p ro d u c c io n e s d e C c o n s e g u n d o
c o m p o n e n t e $ y ya n o se p u e d e a ñ a d i r n in g u n a m á s . o b te n ié n d o s e :

I 2: S -+ C C ,$
C-»-cC,$
C - > •</,$

A c o n t in u a c i ó n , sea X = c. Se d e b e c e r r a r {[C -> c -C , c/¿/]}. S e a ñ a d e n las p r o d u c ­


c io n e s d e C c o n s e g u n d o c o m p o n e n t e c /d , re s u lta n d o :

h: C -* c C , c/d
C -+ cC, c /d
C -» d, c/d
P o r ú ltim o , se h a c e X = d y se te r m in a c o n el c o n j u n t o d e ele m e n to s:

/ 4: C - » d -, c /d
240 ANALISIS SIN TA CTIC O

Se te r m in a c o n s id e r a n d o ir - a e n / 0. N o se o b tie n e n n u e v o s c o n j u n t o s d e /1p e ro
12 tie n e e le m e n to s d e i r - a c o n C , c y d. E n C se o b tie n e :

/ 5: S-*C C ,S

n o se n e c e sita n in g u n a c e r r a d u r a . E n c se t o m a la c e r r a d u r a d e { [ C - * c C , $] p a ra
o b te n e r:

/ 6:
C ->cC.%
C-+-A $

O bsérvese q u e / 6 difiere d e /* sólo e n los s e g u n d o s c o m p o n e n te s . S e c o m p r o b a r á q u e


e s h a b itu a l q u e v a rio s c o n j u n to s d e e le m e n to s L R (1 ) d e u n a g r a m á tic a te n g a n los
m is m o s p r im e r o s c o m p o n e n te s y d ifie ra n e n s u s s e g u n d o s c o m p o n e n te s . C u a n d o se
c o n s tr u y e la c o le c c ió n d e c o n j u n t o s d e e le m e n to s L R (0 ) p a r a la m i s m a g ra m á tic a ,
c a d a c o n j u n t o d e e le m e n to s L R (0 ) c o in c id ir á c o n el c o n j u n t o d e p r im e r o s c o m p o ­
n e n te s d e u n o o m á s c o n j u n to s d e e le m e n to s L R (1 ). S e t r a t a r á este f e n ó m e n o m á s
a f o n d o al e s tu d ia r el a n álisis s in tá c tic o L A L R .
C o n t i n u a n d o c o n la f u n c ió n i r - a p a r a / 2, ir - a {/2, d ) resulta:

¡ i'. C —» < / • , $

V o lv ie n d o a / j . los e le m e n to s d e i r - a d e /* c o n c y d s o n ¡} e / 4. re s p e c tiv a m e n te .
e ir - a ( I h C ) es:

/ 8: C -► c C , c /d

/ 4 e ¡5 n o tie n e n e le m e n to s ir -a . L os e le m e n to s ir - a d e / 6 c o n c y d s o n / 6 e / 7,
re s p e c tiv a m e n te , e / r - t í ( / 6. C ) es:

/ 9: C -> c C , S

L o s re s ta n te s c o n j u n to s d e e le m e n to s n o p r o d u c e n e le m e n to s d e i r - a . p o r lo q u e se
a c a b a . E n la fig u ra 4 .3 9 se m u e s t r a n los d ie z c o n j u n t o s d e e l e m e n t o s c o n s u s e le ­
m e n to s ir -a . □

A c o n t in u a c i ó n se d a n las reglas p o r la s q u e se c o n s tr u y e n las f u n c io n e s d e a c ­


c ió n e ir a del a n álisis s in tá c tic o L R ( 1) a p a r ti r d e los c o n j u n to s d e e le m e n to s L R ( 1).
L as fu n c io n e s d e a c c ió n e ir a se re p re s e n ta n m e d ia n te u n a ta b la, c o m o se v io a n ­
te rio rm e n te . L a ú n ic a d ife re n c ia ra d ic a e n los v alo res d e las e n tra d a s.

A lg o ritm o 4 .1 0 . C o n s tr u c c ió n d e la ta b la d e a n álisis s in tá c tic o L R c a n ó n ic o .

E ntrada. U n a g r a m á tic a a u m e n t a d a G'.


Salida. L a s f u n c io n e s acción e i r - a d e la ta b la d e a n á lis is s in tá c tic o L R c a n ó n ic o
para G \

M étodo.

1. C o n s tr ú y a s e C = {/0, A . . . , /„}, la c o le c c ió n d e c o n j u n to s d e e le m e n to s L R ( 1)
para G \
4.7 A N A L IZ A D O R E S SINTA CTIC O S LR 241

2. El e s ta d o / del a n a liz a d o r s in tá c tic o se c o n s tr u y e a p a r ti r d e /,. L as a c c io n e s d e


a n álisis s in tá c tic o p a r a el e s ta d o i se d e t e r m in a n d e la sig u ie n te m a n e r a :

a ) Si [A - » a-flP, b\ está e n I, e ir- 0 ( 1 h a) = /,, e n to n c e s a trib ú y a s e acción[i, a]


a “d e s p la z a r j* . E n este c a so es n e c e s a rio q u e a sea u n te rm in a l.

b) Si [A a - , a] está e n / „ A # S \ e n to n c e s a trib ú y a s e acción[i, a] a “ re d u c ir


A -> a \

c) Si [ 5 ' —> S •, $] está e n /„ e n to n c e s a trib ú y a s e acción[i. $] a “a c e p ta r" .

Si se p r o d u c e u n c o n flic to p o r las reglas a n te rio re s , se d ic e q u e la g r a m á tic a n o es


L R (1 ) y q u e el a lg o ritm o falla.

Fig. 4.39. G ra fo de transiciones ir -a p a ra la gram ática (4.21).


242 ANALISIS SIN T A C T IC O

3. Las tra n s ic io n e s ir a p a r a el e s ta d o / se d e te r m in a n c o m o sigue: si / r _ a ( / „ A ) = /„


e n to n c e s />_#[/, A] = j.

4. T o d a s las e n tr a d a s n o d e fin id a s p o r las reglas 2 y 3 se c o n s id e r a n " e r r o r ”.

5. El e s ta d o in icial d e l a n a liz a d o r s in tá c tic o e s el c o n s tr u id o a p a r tir d e l c o n ju n to


q u e c o n tie n e el e le m e n to [S ' - » S %$ ]. □

L a ta b la f o r m a d a a p a r ti r d e las f u n c io n e s a c c ió n e ir a d e a n á lis is s in tá c tic o p ro ­


d u c i d a p o r el a l g o r i t m o 4 .1 0 sé d e n o m i n a ta b la d e a n á lis is s in tá c tic o L R (1 ) canó­
nico. U n a n a liz a d o r L R q u e utilice esta ta b la se d e n o m in a a n a liz a d o r sin tá ctic o LR( 1)
c a n ó n ic o . Si la f u n c ió n d e a c c ió n del a n á lis is s in tá c tic o n o tie n e e n t r a d a s d e m ú lti­
p le s d e fin ic io n e s , e n to n c e s la g r a m á tic a d a d a se d e n o m i n a g ra m á tica L R (1). C o m o
a n te s , si se s o b r e e n tie n d e , se o m i t e el “(1 )”.

E je m p lo 4 .4 3 . E n la fig u ra 4 . 4 0 se m u e s t r a la ta b la d e a n á lis is s i n t á c t i c o c a n ó ­
n ic o p a r a la g r a m á t i c a (4 .2 1 ). L a s p r o d u c c i o n e s 1. 2 y 3 s o n S -+ C C , C - * c C y
C -> d . □

T o d a g ra m á tic a S L R ( 1) es u n a g ra m á tic a L R ( 1), p e r o p a r a u n a g ra m á tic a S L R ( 1)


el a n a liz a d o r s in tá c tic o L R c a n ó n ic o p u e d e t e n e r m á s e s ta d o s q u e el a n a l iz a d o r S L R
p a r a la m is m a g r a m á tic a . L a g r a m á tic a d e los e je m p lo s a n te r io r e s e s S L R y tie n e u n
a n a liz a d o r sin tá ctic o S L R c o n siete estados, c o m p a r a d o s c o n los d ie z d e la fig u ra 4.40.

acción ir-a
Es t a d o
c d $ S C
0 d3 d4 1 2
1 acep
2 d6 d7 5
3 d3 d4 8
4 r3 r3
5 rl
6 d6 d7 9
7 r3
8 r2 r2
9 r2

F ig . 4 . 4 0 . T a b la d e a n á lis is s i n t á c t ic o c a n ó n i c o p a r a la g r a m á t ic a ( 4 .2 1 ) .

C o n str u c c ió n d e la s ta b la s d e a n á lis is s in tá c tic o L A L R

A c o n tin u a c ió n se a n a liz a el ú lt im o m é t o d o d e c o n s tr u c c ió n d e a n a liz a d o r e s sin tá c ­


ticos, la té c n ic a L A L R (d e l inglés. lo o ka h ea d -L R . a n á lisis sintáctico L R con sím bolo
d e anticipación). A m e n u d o se u tiliz a este m é t o d o e n la p r á c tic a p o r q u e las ta b la s
c o n él o b te n id a s s o n b a s ta n te m á s p e q u e ñ a s q u e la s ta b la s d e l a n álisis L R c a n ó n ic o ,
y la s c o n s tr u c c io n e s s in tá c tic a s m á s f r e c u e n te s d e lo s le n g u a je s d e p r o g r a m a c ió n
4.7 A N A L IZ A D O R E S SINTA CTIC O S LR 243

p u e d e n ex p resarse c o n v e n ie n te m e n te c o n u n a g r a m á tic a L A L R . A lg o p a r e c id o o c u ­
rre c o n las g ra m á tic a s S L R , p e r o e x iste n u n a s c u a n t a s c o n s tr u c c io n e s q u e n o se p u e ­
d e n m a n e ja r c o n v e n ie n te m e n te c o n las té c n ic a s S L R (véase E je m p lo 4.39).
A efecto s d e c o m p a r a r el t a m a ñ o d e u n a n a liz a d o r s in tá c tic o , las ta b la s S L R y
L A L R p a r a u n a g r a m á tic a s ie m p r e ti e n e n el m i s m o n ú m e r o d e e s ta d o s , n o r m a l ­
m e n te v a rio s c ie n to s d e e s ta d o s p a r a u n le n g u a je c o m o P ascal. L a ta b la d e l análisis
L R c a n ó n i c o t e n d r í a g e n e r a l m e n t e v a r io s m ile s d e e s ta d o s p a r a u n le n g u a je d e l
m i s m o ta m a ñ o . P o r t a n t o , e s m u c h o m á s fácil y e c o n ó m ic o c o n s tr u i r ta b la s S L R y
L A L R q u e ta b la s del a n álisis L R c a n ó n ic o .
C o m o in tr o d u c c ió n , c o n s id é re s e d e n u e v o la g r a m á tic a (4.2 1), c u y o s c o n j u n to s
d e e le m e n to s L R ( 1 ) se m o s tr a r o n e n la fig u ra 4 .3 9 . T ó m e s e u n p a r d e e s ta d o s q u e
p a r e z c a n s im ila re s , c o m o I A e /?. C a d a u n o d e e s to s e s ta d o s t i e n e ú n i c a m e n t e e le ­
m e n to s c o n el p r im e r c o m p o n e n t e C - > d •. E n / 4, los s ím b o lo s d e a n tic ip a c ió n son
c o d\ e n /?, $ es el ú n ic o s ím b o lo d e a n tic ip a c ió n .
P a r a v e r la d ife re n c ia e n tr e las f u n c io n e s d e / 4 e h e n el a n a liz a d o r sin tá ctic o ,
o b sérv ese q u e la g r a m á tic a (4 .2 1 ) g e n e r a el c o n j u n t o re g u la r c*dc*d. A l le er u n a e n ­
tr a d a cc . . . cdcc . . . cd, el a n a liz a d o r in t r o d u c e el p r im e r g r u p o d e s ím b o lo s c y su
d sig u ie n te e n la pila, e n t r a n d o e n el e s ta d o 4 d e s p u é s d e le er la d. El a n a liz a d o r
lla m a e n to n c e s u n a re d u c c ió n p o r C —>d. s u p o n ie n d o q u e el sig u ie n te s ím b o lo d e
e n t r a d a s e a c o d . El r e q u is ito d e q u e v a y a s e g u id a d e c o d tie n e s e n tid o , p u e s to q u e
ésto s s o n los s ím b o lo s q u e p o d r ía n c o m e n z a r c a d e n a s e n c*d. Si $ sig u e a la p r im e ra
d ’ se p r o d u c e u n a e n t r a d a c o m o ccd, q u e n o está e n el len g u aje, y el e s ta d o 4 d e c la ra
c o n v e n ie n te m e n te u n e r r o r si $ es el sig u ie n te s ím b o lo d e e n tra d a .
El a n a liz a d o r e n t r a e n el e s ta d o 7 d e s p u é s d e le er la s e g u n d a d. D e sp u é s, el a n a ­
liz a d o r d e b e v e r $ e n la e n t r a d a , o d e lo c o n tr a r io e s q u e e m p e z ó c o n u n a c a d e n a
d is tin ta del c+dc*d. P o r ta n to , tie n e s e n tid o q u e el e s ta d o 7 r e d u z c a p o r C - * d c o n
la e n t r a d a $ y d e c la re e r r o r c o n las e n t r a d a s c o d.
A c o n tin u a c ió n s u s titú y a n s e / 4 e / 7 p o r / 47, la u n ió n d e / 4 e / 7, q u e c o n s ta del
c o n ju n to d e tres e le m e n to s re p re se n ta d o s p o r ( C - > d-, c/d /S ]. L as tra n sic io n e s ir a
c o n d a / 4 o / 7 d e sd e 70, ¡i, h e h e n t r a n a h o r a e n / 47. L a a c c ió n del e s ta d o 4 7 es
r e d u c ir c o n c u a l q u i e r e n t r a d a . El a n a l i z a d o r s in tá c tic o re v is a d o se c o m p o r t a f u n ­
d a m e n t a l m e n t e c o m o el o rig in a l, a u n q u e es p o sib le q u e r e d u z c a d a C e n c a s o s en
q u e el orig inal d eclararía erro r, p o r e je m p lo , c o n e n tra d a s c o m o ccd o edede. El e rro r
se d e s c u b r ir á d e to d a s fo rm a s ; d e h e c h o , se d e s c u b r ir á a n te s d e q u e se d e s p la c e n m á s
s ím b o lo s d e e n tra d a .
Por lo general, se p u e d e n buscar conjuntos de elementos LR(1) q u e tengan el
m is m o corazón , es d ecir, el c o n j u n t o d e p r im e r o s e le m e n to s , y se p u e d e n fu s io n a r
e n u n c o n j u n t o d e e le m e n to s e s to s c o n j u n t o s c o n c o r a z o n e s c o m u n e s . P o r e je m p lo ,
e n la figura 4 .3 9 , / 4 e / 7 f o r m a n u n o d e d ic h o s p a re s, c o n c o r a z ó n ( C -> d ). D e m a ­
nera similar, h e A, fo rm a n o tr o par. c o n co razó n { C - > c-C, C -> cC, C —►•d ¡. Existe
o t r o p a r m á s, / g e / 9, c o n c o r a z ó n { C - * cC-}. O b sé rv e se q u e , e n g en eral, u n c o ra z ó n
es u n c o n j u n t o d e e l e m e n t o s L R ( 0 ) p a r a la g r a m á tic a e n c u e s tió n , y q u e u n a g ra ­
m á tic a L R ( 1) p u e d e p r o d u c ir m á s d e d o s c o n j u n t o s d e e le m e n to s c o n el m i s m o c o ­
ra z ó n .
C o m o el c o r a z ó n d e ir-a { I, X ) d e p e n d e só lo d e l c o r a z ó n d e / , las tr a n s ic io n e s ir
a d e los e s ta d o s f u s io n a d o s ta m b ié n se p u e d e n fu sio n a r. P o r t a n t o , re v isa r la f u n c ió n
244 ANALISIS SIN TA CTIC O

ir a c o n f o r m e se fu s io n a n c o n j u n to s d e e l e m e n t o s n o s u p o n e u n p r o b le m a . S e m o ­
d ific a n las f u n c io n e s d e a c c ió n p a r a reflejar las a c c io n e s d is tin ta s d e e r r o r d e to d o s
los c o n j u n to s d e e le m e n to s d e la fu sió n .
S u p ó n g a s e q u e se tie n e u n a g r a m á tic a L R (1 ), es d ecir, u n a c u y o s c o n j u n to s d e
e le m e n to s L R ( 1 ) n o p r o d u c e n c o n flic to s e n las a c c io n e s d e l an álisis. Si se s u stitu y e n
to d o s los e s ta d o s q u e te n g a n el m is m o c o r a z ó n p o r su u n i ó n , e s p o s ib le q u e la u n ió n
o b te n id a te n g a u n c o n flic to , p e r o n o es p r o b a b le p o r la sig u ie n te r a z ó n : s u p ó n g a s e
q u e e n la u n i ó n h a y u n c o n flic to c o n el s ím b o lo d e a n tic ip a c ió n a p o r q u e h a y u n
e le m e n to [A a - , a] q u e p id e u n a r e d u c c ió n p o r A - > a , y h a y o t r o e le m e n to
[ # - » $ a y , b] q u e p id e u n d e s p la z a m ie n to . E n to n c e s , a lg ú n c o n j u n t o d e e le m e n to s
a p a r ti r del c u a l se f o r m ó la u n i ó n tie n e el e le m e n to [A —* a - , a) y, c o m o los c o r a ­
z o n e s d e to d o s esto s e s ta d o s s o n el m is m o , d e b e t e n e r u n e le m e n to [ £ - > p ¿ r y , c]
p a r a a l g u n a c. P e r o e n t o n c e s e s te e s t a d o t i e n e el m i s m o c o n f li c to d e d e s p la z a ­
m ie n to /r e d u c c ió n c o n a , y la g r a m á tic a n o e r a L R ( 1) c o m o se d io p o r s u p u e s to . P o r
t a n t o , la fu sió n d e e s ta d o s c o n c o r a z o n e s c o m u n e s n u n c a p u e d e p r o d u c i r u n c o n ­
flicto d e d e s p la z a m ie n to /r e d u c c ió n q u e n o e s tu v ie ra y a p re s e n te e n u n o d e lo s es­
ta d o s o rig in ales, p o r q u e las a c c io n e s d e d e s p la z a r só lo d e p e n d e n del c o r a z ó n , n o del
s ím b o lo d e a n tic ip a c ió n .
S in e m b a r g o , es p o s ib le q u e u n a fu s ió n p r o d u z c a u n c o n flic to d e r e d u c c ió n /r e ­
d u c c ió n , c o m o se m u e s tr a e n el sig u ie n te e je m p lo .

E je m p lo 4 .4 4 . C o n s id é re s e la g ra m á tic a

S - » a sid | b B d | a B e | bA e
si - * c
B -* c

q u e g e n e ra las c u a t r o c a d e n a s acd, ace, b c d y bce. E l le c to r p u e d e c o m p r o b a r q u e la


g ra m á tic a es L R ( I ) c o n s tr u y e n d o los c o n j u n to s d e e le m e n to s . Al h a c e rlo , se ve q u e
el c o n j u n t o d e e le m e n to s {[A c-, d], [B c-, é]} e s v álid o p a r a el p refijo v iab le ac
y q u e a {[A - » c •, e], [B -> c-, c)} es v á lid o p a r a be. N in g u n o d e esto s c o n j u n to s g e­
n e ra u n c o n flic to , y s u s c o r a z o n e s s o n los m is m o s . S in e m b a r g o , s u u n ió n , q u e es

A - > c-, d /e
B -+ c •, d fe

g e n e ra u n c o n flic to d e r e d u c c ió n /r e d u c c ió n , p u e s to q u e c o n las e n tr a d a s d y e se
p id e n re d u c c io n e s p o r A - * c y p o r B - + c . □

A h o r a se e s tá e n c o n d ic io n e s d e d a r el p r im e r o d e d o s a lg o ritm o s p a r a la c o n s­
tr u c c ió n d e ta b la s L A L R . L a id e a g e n e ra l es c o n s tr u i r los c o n j u n to s d e e le m e n to s
L R ( 1 ) y, si n o s u rg e n c o n flic to s , f u s io n a r los c o n j u n t o s c o n c o r a z o n e s c o m u n e s .
D e sp u é s, se c o n s tr u y e la ta b la d e a n á lis is s in tá c tic o a p a r ti r d e la serie d e c o n j u n to s
d e e le m e n to s fu s io n a d o s . El m é to d o q u e se v a a d e s c rib ir sirv e e n p r in c ip io c o m o
d e fin ic ió n d e g r a m á tic a s L A L R ( 1). C o n s tr u ir la serie c o m p le ta d e c o n j u n to s d e e le ­
m e n to s L R ( 1) exige d e m a s ia d o e s p a c io y ti e m p o c o m o p a r a q u e re s u lte ú til e n la
p ráctica.
4.7 A N A L IZ A D O R E S SIN TA C TIC O S LR 245

A lg o ritm o 4 .1 1 . U n a c o n s tr u c c ió n fácil, p e r o q u e 'o c u p a m u c h o esp acio , d e u n a ta ­


b la L A L R .

E ntrada. U n a g r a m á tic a a u m e n t a d a G \
Salida. L as f u n c io n e s acción e i r - a d e la ta b la d e a n á lis is s in tá c tic o L A L R p a r a <7.

M étodo.
1. C o n s tr ú y a s e C = {/<>, / | , . . . , /*}> la c o le c c ió n d e c o n j u n t o s d e e le m e n to s L R ( 1).

2. P a r a c a d a c o r a z ó n p r e s e n te e n tr e el c o n j u n t o d e e le m e n to s L R ( 1), e n c u é n tr e n s e
to d o s los c o n j u n to s q u e te n g a n d ic h o c o r a z ó n , y s u s titu y a n s e e s to s c o n j u n to s
p o r su u n ió n .

3. Sea C = {«/o, 7 , .......... J,„ } los c o n ju n to s d e e le m e n to s LR( 1) o b te n id o s. S e c o n s­


tr u y e n las a c c io n e s d e a n álisis s in tá c tic o p a r a el e s ta d o i a p a r ti r d e J , d e l m is m o
m o d o q u e e n el a lg o r itm o 4 .1 0 . Si h a y u n c o n flic to e n las a c c io n e s d e l a n álisis
s in tá c tic o , el a lg o r itm o n o c o n s ig u e p r o d u c i r u n a n a liz a d o r s in tá c tic o , y se d ic e
q u e la g r a m á tic a n o es L A L R ( 1).

4. L a t a b l a i r - a se c o n s t r u y e d e la s ig u ie n te m a n e r a . S i 7 e s la u n i ó n d e u n o o
m á s c o n j u n t o s d e e l e m e n t o s L R ( 1 ) , e s d e c ir , J = / | u / 2 u /*, e n t o n c e s los
c o r a z o n e s d e />_*/(/,, X ) %i r - a ( h , A"). • • •» ir -a { G , X ) s o n el m i s m o , p u e s to
q u e / , , / 2. . . . , h t i e n e n to d o s el m i s m o c o r a z ó n . S e a K la u n i ó n d e to d o s los
c o n j u n t o s d e e l e m e n t o s q u e t i e n e n el m i s m o c o r a z ó n q u e />_<?(/ 1, X ). E n t o n ­
c e s i r - a (J , X ) = K . □

La ta b la p ro d u c id a p o r el a lg o ritm o 4 . 1 1 se d e n o m i n a tabla d e análisis sintáctico


L A L R p a r a G. Si n o h a y c o n flic to s e n las a c c io n e s d e l a n álisis sin tá ctic o , e n to n c e s
se dice q u e la g ra m á tic a d a d a e s u n a gram ática L A L R { 1). L a c o le c c ió n d e c o n j u n to s
d e e le m e n to s c o n s tr u id a e n el p a s o 3 se d e n o m i n a colección L A L R { 1).

E je m p lo 4 .4 5 . C o n s id é re s e d e n u e v o la g r a m á tic a 4.21 c u y o g ra fo d e i r - a se m o s tr ó
e n la fig u ra 4 .3 9 . C o m o ya se h a m e n c i o n a d o , h a y tr e s p a re s d e c o n j u n t o s d e e le ­
m e n to s q u e p u e d e n fu sio n arse. / 3 e / 6 se s u s titu y e n p o r su u n ió n :

U: C -*c-C ,c/d/$
C -> cC, c /d / $
C - d, c /d / $
U e h se s u stitu y e n p o r su u n ió n :

C —* d y C / d / $

e / Ke I* se s u s titu y e n p o r s u u n ió n :

/&: C - > c C , c /d / $

E n la figura 4.41 se m u e s tr a n las f u n c io n e s d e a c c ió n e ir a del a n álisis L A L R p a ra


los c o n j u n to s d e e le m e n to s c o n d e n s a d o s .
P a r a c o m p r o b a r c ó m o se c a lc u la n la s tra n s ic io n e s ir a. c o n sid é re se />_£/(/ 36, C ).
E n el c o n j u n t o o rig in a l d e e le m e n to s L R ( 1), />-¿K/3, C ) = / 8, y a h o r a / 8 e s p a r te d e
246 ANALISIS SINTA C TIC O

acción ir-a
Es t a d o
c d $ S C
0 d36 d47 \ 2
1 acep
2 d36 d47 5
36 d36 d47 89
47 r3 r3 r3
5 rl
89 r2 r2 r2

Fig. 4.41. T abla de análisis sintáctico L A L R para la gram ática (4.21).

/ 89, así q u e ir - a ( / 36, C ) e s igual a / 89. S e p o d r ía h a b e r lleg ad o a la m i s m a c o n c lu s ió n


si se h u b ie r a c o n s id e r a d o / 6, la o t r a p a r te d e / 36. E s d e c ir, / r _ a ( / 6> C ) = / 9, y a h o r a
/ 9 e s p a rte d e / 89. C o m o o t r o e je m p lo , c o n sid é re se /> _ a ( /2, c), u n a e n t r a d a q u e se
e je c u ta d e s p u é s d e la a c c ió n d e d e s p la z a m ie n to d e / 2 c o n la e n t r a d a c. E n los c o n ­
j u n t o s d e e le m e n to s L R ( 1) orig inales, / r _ a ( / 2, c) = / 6. C o m o /* es a h o r a p a rte d e / 36,
ir~a{/2, c) se c o n v ie r te e n / 36. A sí, la e n t r a d a en la fig u ra 4.41 p a r a el e s ta d o 2 y la
e n t r a d a c se ig u ala a d 3 6 . lo c u a l s u p o n e d e s p la z a r e in t r o d u c ir el e s ta d o 36 e n la
pila. □

C u a n d o se e n c u e n t r a n c o n u n a c a d e n a d e l le n g u a je c*dc*d , t a n t o el a n a liz a d o r
s in tá c tic o L R d e la fig u ra 4 .4 0 c o m o el a n a liz a d o r s in tá c tic o L A L R d e la fig u ra 4.41
re a liz a n e x a c ta m e n te la m is m a s e c u e n c ia d e d e s p la z a m ie n to s y re d u c c io n e s , a u n q u e
p u e d e n v a r ia r los n o m b r e s d e los e s ta d o s d e la p ila; e s d e c ir, si el a n a liz a d o r sin tá c ­
tico L R p o n e / 3 o U e n la p ila , el a n a liz a d o r s in tá c tic o L A L R p o n d r á e n la pila.
E sta re la c ió n se c u m p l e e n g e n e ra l p a r a u n a g r a m á tic a L A L R . L o s a n a liz a d o r e s s in ­
tá c tic o s L R y L A L R se im ita rá n u n o a o t r o c o n e n tr a d a s co rrectas.
S in e m b a r g o , c u a n d o se e n c u e n t r a n c o n u n a e n t r a d a e r r ó n e a , e s p o sib le q u e el
a n a liz a d o r s in tá c tic o L A L R c o n tin ú e h a c ie n d o a lg u n a s re d u c c io n e s d e s p u é s d e q u e
el a n a liz a d o r s in tá c tic o L R h a y a d e c la r a d o u n e r r o r , a u n q u e el a n a liz a d o r L A L R
n u n c a d e s p la z a rá n in g ú n o tr o s ím b o lo d e s p u é s d e q u e el a n a liz a d o r L R h a y a d e c la ­
r a d o u n e rro r. P o r e je m p lo , c o n la e n t r a d a ccd s e g u id a d e $, el a n a liz a d o r L R d e la
fig u ra 4 .3 4 p o n d r á

0 c 3 c 3 d 4.

e n la pila, y e n el e s ta d o 4 d e s c u b r ir á u n e rro r, p o r q u e $ e s el sig u ie n te s ím b o lo de


e n tr a d a y el e s ta d o 4 tie n e acció n d e e r r o r c o n $. P o r el c o n tra rio , el a n a liz a d o r L A L R
d e la fig u ra 4.41 h a r á los m o v im ie n to s c o r r e s p o n d ie n te s , p o n ie n d o

0 c 3 6 c 36 d 4 7

e n la pila. P e r o el e s ta d o 4 7 c o n e n t r a d a $ tie n e la a c c ió n d e r e d u c ir C —> d. P o r


ta n to , el a n a liz a d o r L A L R c a m b ia r á su p ila a

0 c 3 6 c 36 C 89
4.7 A N A L I Z A D O R E S S I N T A C T I C O S LR 247

L a a c c ió n del e s ta d o 8 9 c o n e n t r a d a $ es a h o r a re d u c ir C -> cC, y la p ila es

0 c 36 C 89

c o n lo c u a l se p id e u n a re d u c c ió n s im ila r, o b te n ié n d o s e la pila

0 C 2

P o r ú ltim o, el estad o 2 tien e acció n d e e rro r co n e n tra d a $. y se d escu b re a h o ra . □

C o n str u c c ió n e fic ie n te d e ta b la s d e a n á lis is s in tá c tic o L A L R

Se p u e d e n h a c e r v arias m o d ific a c io n e s al a lg o ritm o 4.11 p a r a e v ita r c o n s tr u i r la c o ­


lecció n c o m p le ta d e c o n j u n t o s d e e l e m e n t o s L R (1 ) e n el p ro c e s o d e c re a r u n a ta b la
d e a n á lis is s in tá c tic o L A L R ( 1). L a p r im e r a o b s e rv a c ió n es q u e se p u e d e r e p r e s e n ta r
u n c o n j u n t o c o n e le m e n to s / m e d ia n te s u n ú c le o , es d ecir, m e d ia n te a q u e llo s ele­
m e n to s q u e s o n el e le m e n to inicial [S ' S. $] o q u e te n g a n el p u n t o e n alg ú n lu g a r
q u e n o sea al p r in c ip io del la d o d erech o .
S e g u n d o , se p u e d e n c a lc u la r las a c c io n e s d e a n á lis is s in tá c tic o g e n e r a d a s p o r / a
p a r tir ú n ic a m e n te del n úcleo. C u a lq u ie r e le m e n to q u e p id a u n a red u c c ió n p o r A - * a
e s ta rá e n el n ú cleo , a m e n o s q u e a = € . S e p id e la re d u c c ió n p o r A - » e si, y só lo
si. existe u n e le m e n to d e l n ú c le o [ # —►yC 5. b] ta l q u e C Ai] p a r a a lg u n a ry y a
está e n PRIM ERO{r)8/>). Se p u e d e p re c a lc u la r el c o n j u n t o d e n o te rm in a le s A tales
q u e C => A t\ p a r a c a d a n o te r m in a l C.
Se p u e d e n d e t e r m in a r las a c c io n e s d e d e s p la z a m ie n to g e n e r a d a s p o r / a p a rtir
del n ú c le o d e / d e la sig u ie n te m a n e r a . Se h a c e u n d e s p la z a m ie n to c o n la e n t r a d a a
si h a y u n e le m e n to del n ú c le o [B -> y-C S, ¿>], d o n d e C => a x e n u n a d e riv a c ió n en
q u e el ú ltim o p a so n o u tiliz a u n a p ro d u c c ió n € . T a m b ié n se p u e d e p re c a lc u la r el
c o n ju n to d e d ic h a s a p a r a c a d a C.
Así es c ó m o se p u e d e n c a lc u la r las tr a n s ic io n e s ir a p a r a / a p a r ti r del n ú cleo . Si
( £ - * y-Xb, b] está en el n ú c le o d e / , e n to n c e s [ B - * y X d , b] está e n el n ú c le o d e
ir-a { /, X ). El e le m e n to [A X a] está ta m b ié n e n el n ú c le o d e /> _ « (/. X ) si hay
u n e le m e n to [ B - * y-C 8. b) e n el n ú c le o d e / , y C => Ar\ p a r a u n a ry Si p a r a c a d a
p a r d e n o te rm in a le s C y A se p r e c a lc u la si C Ar\ p a r a u n a ry e n to n c e s c a lc u la r
los c o n j u n to s d e e le m e n to s a p a r tir d e los n ú c le o s só lo e s u n p o c o m e n o s eficien te
q u e h a c e rlo c o n c o n j u n to s c e rra d o s d e e le m e n to s.
P a r a c a lc u la r los c o n j u n to s d e e le m e n to s L A L R ( l ) p a r a u n a g r a m á tic a a u m e n ­
ta d a G \ se c o m i e n z a c o n el n ú c l e o S ' -> S d e l c o n j u n t o in ic ia l d e e l e m e n t o s I o.
D e s p u é s se c a lc u la n los n ú c le o s d e las tra n s ic io n e s ir a a p a r ti r d e /o, c o m o y a se ha
m e n c io n a d o . Se sig u en c a lc u la n d o las tra n s ic io n e s ir a p a r a c a d a n u e v o n ú c le o g e­
n e r a d o h a s ta c o n s e g u ir los n ú c le o s d e la c o le c c ió n c o m p l e t a d e c o n j u n t o s d e e le ­
m e n to s LR (0).

E je m p lo 4 . 4 6 . C o n s id é re s e d e n u e v o la g r a m á tic a a u m e n t a d a

S -+ L = R \R
L - > *R | id
R L
248 A N A LISIS SINTA CTIC O

L o s n ú c le o s d e los c o n j u n t o s d e e le m e n to s L R (0 ) p a r a esta g r a m á tic a se m u e s tr a n


4.42. □

/o: y s ¡y L -> id
S' - >S- /*: S -> L = R

h- S - > L =R
R -+ L-
R -* L-
h‘ S -* R
/•)*. 5 -> L = R -
U L *R

Fig. 4.42. N úcleos d e los c o n ju n to s d e elem en to s LR(O) para la g ram ática (4.20).

A h o ra se a m p lía n los n ú cleo s, a s o c ia n d o a c a d a e le m e n to L R (0 ) lo s s ím b o lo s de


a n tic ip a c ió n a p ro p ia d o s (los s e g u n d o s c o m p o n e n te s ). P a r a ver c ó m o se p r o p a g a n los
s ím b o lo s d e a n tic ip a c ió n d e s d e u n c o n j u n t o d e e le m e n to s / h a s ta /r_¿r(/, X ), c o n s i­
d érese u n e le m e n to L R (0 ) B y C 5 e n el n ú c le o d e / . S u p ó n g a se q u e C => A t) p a r a
u n a q (tal v e z C = A y q = € ) , y A - * X fl es u n a p ro d u c c ió n . E n to n c e s el e le m e n to
L R (0 ) A X (5 está e n />_**(/, X).
A h o r a s u p ó n g a s e q u e se e s t á n c a l c u l a n d o e l e m e n t o s q u e n o s o n L R ( 0 ) , s in o
L R ( IX y q u e [B - > y -C 8 , b] e s tá e n el c o n j u n t o / . E n to n c e s , ¿ p a r a q u é v a lo re s d e a
e s ta rá [A -+ Af-p, a] e n /> _ # (/, X )1 E v id e n te m e n te , si u n a a e s tá e n P R I M E R O (r |5 ) ,
e n to n c e s la d e riv a c ió n C => Ax\ in d ic a q u e [A -> Af-p, a] d e b e e s ta r e n i r _ a ( / , X ) . En
este c a s o , el v a lo r d e b es ir r e le v a n te y se d ic e q u e a , c o m o s ím b o lo d e a n tic ip a c ió n
p a r a A -> X p . se g e n e ra espontáneam ente. P o r d e fin ic ió n . $ se g e n e ra e s p o n tá n e a ­
m e n te c o m o s ím b o lo d e a n tic ip a c ió n p a r a el e le m e n to S ' - * S e n el c o n j u n t o d e
e le m e n to s inicial.
P e ro ex iste o tr a f u e n te d e s ím b o lo s d e a n tic ip a c ió n p a r a el e le m e n to A AT-p.
Si € , e n to n c e s [A Af-p, b] e s ta r á ta m b ié n e n / r _ a ( / . X ). E n este caso , se dice
q u e lo s s ím b o lo s d e a n tic ip a c ió n se propagan d e s d e B y-C 5 h a s ta A - > Af p. E n el
sig u ie n te a lg o r itm o e s tá c o n t e n id o u n m é to d o se n c illo p a r a d e t e r m in a r c u á n d o u n
e le m e n to L R ( 1) e n / g e n e r a u n s ím b o lo d e a n tic ip a c ió n e n ir -a (I, X ) e s p o n tá n e a ­
m e n te . y c u á n d o se p r o p a g a n lo s s ím b o lo s d e a n tic ip a c ió n .

A l g o r i t m o 4 . 1 2 . D e te r m in a c ió n d e lo s s ím b o lo s d e a n tic ip a c ió n .

Entrada. El n ú c le o K d e u n c o n j u n t o d e e le m e n to s L R (0 ) y u n s ím b o lo g ram a tica l X.


Salida. L os s ím b o lo s d e a n tic ip a c ió n g e n e r a d o s e s p o n tá n e a m e n t e p o r e l e m e n t o s en
I p a r a e le m e n to s n u c le a re s e n ir~ a (I. X ) y los e le m e n to s e n / a p a r ti r d e los cu ales
los s ím b o lo s d e a n tic ip a c ió n se p r o p a g a n a e le m e n to s n u c le a re s e n ir~ a(I, X ).
t
M étodo. E n la fig u ra 4 . 4 3 se ilu s tr a el a l g o r i tm o . U til iz a u n s í m b o l o d e a n t i c i p a ­
c i ó n f ic tic io # p a r a d e t e c t a r s i t u a c i o n e s e n q u e se p r o p a g a n lo s s ím b o l o s d e
a n tic ip a c ió n . □
4.7 A N A L IZ A D O R E S SINTA CTIC O S LR 249

for cada elem en to B y-8 en K d o begin


J' : = cerradura ({[# - ♦ y - 8 , # ]));
if [A - ♦ a-.Vp, a] está en J ’ d o n d e a n o es # then
el sím bolo de preanálisis a se genera e sp o n tá n e a m e n te p a ra el elem ento
A -> aX-fi en ir-a (/. X );
i f [A -* a-A’P, # ] está en J ' then
los sím bolos d e preanálisis se propagan desde
B - » y-8 e n I hasta A -* aX-fi en ir-a (/, X )
end;

Fig. 4.43. D escu b rim ien to de sím bolos d e an ticip ació n propagados
y espontáneos.

C o n s id é re s e a h o r a c ó m o se b u s c a n lo s s ím b o lo s d e a n tic ip a c ió n a s o c ia d o s a los
e le m e n to s d e los n ú c le o s d e los c o n j u n t o s d e e le m e n to s L R (0 ). P r im e ro , se sa b e q u e
$ es u n s ím b o lo d e a n tic ip a c ió n p a r a 5 ' - ♦ S e n el c o n j u n t o inicial d e e le m e n to s
L R (0 ). El a lg o r itm o 4 .1 2 p r o p o r c io n a to d o s lo s s ím b o lo s d e a n tic ip a c ió n g e n e ra d o s
e s p o n tá n e a m e n te . D e s p u é s d e lis ta r to d o s e s to s s ím b o lo s d e a n tic ip a c ió n , se les p e r ­
m ite p ro p a g a rs e h a s ta q u e la p ro p a g a c ió n ya n o sea p o sib le. H a y m u c h o s e n fo q u e s
d is tin to s y to d o s , e n a lg ú n s e n tid o , ti e n e n re g istra d o s lo s s ím b o lo s d e a n tic ip a c ió n
“ n u e v o s ” q u e se h a n p ro p a g a d o a u n e le m e n to , p e r o q u e a ú n n o se h a n p ro p a g a d o
d e l to d o . El sig u ie n te a lg o r itm o d e sc rib e u n a té c n ic a p a r a p r o p a g a r lo s s ím b o lo s d e
p re a n á lisis a to d o s los e le m e n to s.

A lg o r itm o 4 .1 3 . C á lc u lo e fic ie n te d e los n ú c le o s d e la c o le c c ió n d e c o n j u n t o s d e ele­


m e n to s L A L R ( 1).

E ntrada. U n a g ra m á tic a a u m e n t a d a (7 .

Salida. L os n ú c le o s d e la c o le c c ió n d e c o n j u n t o s d e e le m e n to s L A L R ( 1) p a r a G \

M étodo.

1. U s a n d o el m é t o d o e s b o z a d o a n t e r i o r m e n t e , c o n s t r ú y a n s e lo s n ú c l e o s d e los
c o n j u n to s d e e le m e n to s L R (0 ) p a r a G.

2. A p liq ú e se el a lg o r itm o 4 .1 2 al n ú c le o d e c a d a c o n j u n t o d e e l e m e n t o s L R (0 ) y
s ím b o lo g ra m a tic a l X p a r a d e t e r m i n a r q u é s ím b o lo s d e a n tic ip a c ió n se g e n e ra n
e s p o n tá n e a m e n t e p a r a e l e m e n t o s d e l n ú c le o e n ir - a ( I , X ), y a p a r ti r d e q u é ele­
m e n to s e n / se p r o p a g a n los s ím b o lo s d e a n tic ip a c ió n a e le m e n to s d e l n ú c le o en
ir - a ( I 7 X ).

3. Inicialícese u n a ta b la q u e d é los s ím b o lo s d e a n tic ip a c ió n a s o c ia d o s p a r a c a d a


e l e m e n t o d e l n ú c le o d e c a d a c o n j u n t o d e e le m e n to s . I n ic i a lm e n te , c a d a ele­
m e n t o tie n e a s o c ia d o s só lo a q u e llo s s ím b o lo s d e a n tic ip a c ió n g e n e r a d o s e s p o n ­
t á n e a m e n t e q u e se d e t e r m i n a r o n e n 2.

4. H á g a n s e p a s a d a s re p e tid a s s o b re los e l e m e n t o s d e l n ú c le o d e to d o s los c o n j u n ­


tos. C u a n d o se v isite u n e le m e n to /, se b u s c a n los e l e m e n t o s d e l n ú c le o a los
250 ANALISIS SIN TA C TIC O

cu ales i p r o p a g a sus s ím b o lo s d e a n tic ip a c ió n , u s a n d o la in f o r m a c ió n ta b u la d a


e n 2. El c o n j u n t o e n c u r s o d e s ím b o lo s d e a n tic ip a c ió n p a r a / se a ñ a d e a lo s ya
a so c ia d o s a c a d a u n o d e lo s e le m e n to s a los q u e / p r o p a g a s u s s ím b o lo s d e a n t i ­
c ip a c ió n . S e c o n t i n ú a p a s a n d o so b re los e le m e n to s del n ú c le o h a s ta q u e n o se
p ro p a g u e n m á s s ím b o lo s n u e v o s d e a n tic ip a c ió n . □

E je m p lo 4 .4 7 . C o n s tr u c c ió n d e lo s n ú c le o s d e los e le m e n to s L A L R ( 1) p a r a la g ra ­
m á tic a del e je m p lo a n te r io r . E n la figura 4 .4 2 se m o s tr a r o n los n ú c le o s d e lo s ele­
m e n t o s L R ( 0 ) . C u a n d o se a p l i c a el a l g o r i t m o 4 . 1 2 al n ú c l e o d e l c o n j u n t o d e
e le m e n to s /0, se c a lc u la cerradura({[Sf - » S , #- ]}), q u e es

S ' -» 5, #
S -* L = R. #
S -> R. #
L -> *R. # / =
L -» id , # / =
R •/-, #

D o s e le m e n to s e n esta c e r r a d u r a h a c e n q u e los s ím b o lo s d e a n tic ip a c ió n se g e n e re n


e s p o n tá n e a m e n te . E l e le m e n to [L - > •*/?, = ) h a c e q u e el s ím b o lo d e a n tic ip a c ió n
= se g en ere e s p o n tá n e a m e n t e p a r a el e l e m e n t o del n ú c le o L -+ * R e n / 4 y el e le ­
m e n t o [L —> id . = ] h a c e q u e = se g e n e re e s p o n tá n e a m e n t e p a r a el e le m e n to del
n ú c le o L - * id e n / 5.

De A

/<>: y -+ -.S /,: S '- > S -


/ 2: S -* L - = R
/< R -+ L
ly. S -* R
/ 4: L -* * -R
/y L -> id-
/ 2: S —* L ‘ = R U: S -> L = R
/ 4: L -* * R / 4: L *R
/ 5: L -* id-
h: L —►+R-
/ 8: R - > L-
Co

oc

/ 4: L -> * R

ll

'C

/ 5: ¿
/»: R - * L-
/„: S -> L = R -

F ig . 4 .4 4 . P rop agación d e s ím b o lo s d e an ticip a ció n .


4.7 A N A L IZ A D O R E S SINTA CTIC O S LR 251

CON- S ím b o l o s d e A n t ic ip a c ió n

JU N TO C L tM W Ü
In ic Pa s o 1 Paso 2 Paso 3

/o: S '- » 5 $ $ $ $

/,: S ’ -> S- $ S $

S L= R $ $ $
/>: $ $ S

h: S — /? • $ $ $

U L —* * R = = /$ = /$ = /$

L - + id = = /$ = /$ = /$
/s:

/*: S -» L= R $ $

W. L -* = = /$ = /$
= = /$ = /$
/*: R - * L-

/*: S —* L = R - $

F ig . 4.45. C álculo de sím bolos d e anticipación.

E n la figura 4 .4 4 se r e s u m e el p a tró n d e p ro p a g a c ió n d e los s ím b o lo s d e a n tic i-


p a c ió n e n tr e los e le m e n to s d e l n ú c le o d e te r m in a d o s e n el p a so 2 del a lg o r itm o 4 .1 3 .
P o r e je m p lo , las tra n s ic io n e s ir a d e / 0 c o n los s ím b o lo s 5 , L , R, * e id s o n . resp ec­
tiv a m e n te , / 1, A , h , h e /?. P a r a /<> sólo se h a c a lc u la d o la c e r r a d u r a d e l ú n ic o e le ­
m e n to del n ú c le o [S ' S , # ] . P o r ta n to , S ' - > .S p r o p a g a su s ím b o lo d e a n tic i­
p a c ió n a c a d a e le m e n to del n ú c le o d e s d e I { h a s ta h .
E n la fig u ra 4 .4 5 se m u e s t r a n lo s p a s o s 3 y 4 d e l a lg o r itm o 4 .1 3 . L a c o l u m n a
e t iq u e ta d a c o n ¡ N I C m u e s t r a los s ím b o lo s d e a n tic ip a c ió n g e n e r a d o s e s p o n tá n e a ­
m e n te p a r a c a d a e le m e n to d e l n ú c le o . E n el p r im e r paso , el s ím b o lo d e a n tic ip a c ió n
$ se p r o p a g a d e s d e S ' - > S e n I0 a los seis e le m e n to s lista d o s e n la fig u ra 4 .4 4 . El
s ím b o lo d e a n tic ip a c ió n = se p r o p a g a d e s d e L - * * - R e n / 4 a los e le m e n to s
L —►*/?• e n / 7 y /?—►L • e n /*. T a m b ié n se p r o p a g a a sí m is m o y a L —►id - e n 1$,
p e ro esto s s ím b o lo s d e a n tic ip a c ió n y a e s tá n p re se n te s. E n el s e g u n d o y te rc e r pasos,
el ú n ic o s ím b o lo d e a n tic ip a c ió n n u e v o p ro p a g a d o es $, d e s c u b ie rto p a r a los su c e ­
so res d e ¡i e / 4 e n el p a so 2 y p a r a el s u c e s o r d e / 6 e n el p a so 3. E n el p a s o 4 n o se
p r o p a g a n in g ú n s í m b o l o d e a n t ic ip a c ió n n u e v o , d e m o d o q u e se m u e s t r a el c o n ­
j u n t o fin al d e s ím b o lo s d e a n tic ip a c ió n e n la c o l u m n a s itu a d a m á s a la d e r e c h a en
la fig u ra 4 .4 5 .
O b s é rv e s e q u e el c o n f lic to d e d e s p la z a m ie n to /r e d u c c ió n q u e se p r e s e n ta e n el
e jercicio 4 .3 9 al u s a r el m é to d o S L R h a d e s a p a re c id o c o n la té c n ic a L A L R . L a r a ­
z ó n es q u e só lo el s ím b o lo d e a n tic ip a c ió n $ está a s o c ia d o c o n R —> L e n / 3, a s í q u e
n o h a y c o n flic to c o n la a c c ió n del a n álisis s in tá c tic o de d e s p la z a r c o n = g e n e ra d o
p o r el e le m e n to S L ■ = R e n / 2. n
252 A N A LISIS SINTA CTIC O

C o m p a c ta c ió n d e la s ta b la s d e a n á lis is s in tá c tic o L R

U n a g r a m á tic a d e u n le n g u a je d e p r o g r a m a c ió n típ ic o c o n 5 0 a *100 te r m in a le s y


100 p r o d u c c i o n e s p u e d e t e n e r u n a t a b l a d e a n á lis is s i n t á c t i c o L A L R c o n v a rio s
c ie n to s d e estad o s. L a f u n c ió n d e a c c ió n p u e d e te n e r f á c ilm e n te 2 0 0 0 0 e n tra d a s , y
c a d a u n a n ecesita al m e n o s o c h o b its p a r a co d ificarse. E v id e n te m e n te , u n a co d ifi­
c a c ió n m á s e fic ie n te q u e u n a m a tr iz b id im e n s io n a l p u e d e s e r im p o r ta n te . P o s te rio r­
m e n te se m e n c io n a r á n u n a s c u a n t a s té c n ic a s e m p le a d a s p a r a c o m p r i m i r los c a m p o s
d e a c c ió n e ir a d e u n a ta b la d e a n á lis is s in tá c tic o LR.
U n a té c n ic a ú til p a r a c o n d e n s a r los c a m p o s d e a c c ió n e s r e c o n o c e r q u e g e n e ra l­
m e n t e m u c h a s filas d e la t a b l a d e a c c i ó n s o n id é n tic a s . P o r e j e m p lo , e n la fig u ­
ra 4 .4 0 . los e s ta d o s 0 y 3 tie n e n e n tra d a s de acció n id én ticas, al igual q u e 2 y 6. P or
ta n to , se p u e d e a h o r r a r b a s ta n te e s p a c io y n o h a y q u e e m p le a r m u c h o m á s tie m p o ,
si se c r e a u n a p u n t a d o r p a r a c a d a e s ta d o d e u n a m a tr iz u n id im e n s io n a l. L o s a p u n ­
ta d o re s p a r a e s ta d o s c o n las m i s m a s a c c io n e s a p u n t a n a la m is m a p o sic ió n . P a ra
a c c e d e r a la in f o r m a c ió n d e esta m a triz , se a s ig n a a c a d a te r m in a l u n n ú m e r o de
c e r o a l n ú m e r o d e t e r m in a l e s m e n o s u n o y se u tiliz a este e n t e r o c o m o d e s p la z a ­
m i e n to d e s d e el v a lo r del a p u n t a d o r p a r a c a d a e s ta d o . E n u n e s ta d o d e te r m in a d o ,
la a c c ió n d e a n á lis is s in tá c tic o p a r a el /-ésim o te rm in a l e s ta rá i p o s ic io n e s d esp u és
d e l v a lo r del a p u n t a d o r p a r a d ic h o estad o .
Se p u e d e a h o r r a r to d a v ía m á s esp acio a co sta d e u n a n a liz a d o r s in tá c tic o u n po co
m á s le n to ( g e n e r a lm e n te c o n s id e r a d o u n a rre g lo ra z o n a b le , p u e s to q u e u n a n a liz a ­
d o r s in tá c tic o d e l tip o L R c o n s u m e só lo u n a p e q u e ñ a fracció n del ti e m p o to ta l d e
c o m p ila c ió n ) c r e a n d o u n a lista p a r a las a c c io n e s d e c a d a estad o . L a lista c o n s ta d e
p a re s ( s ím b o lo te rm in a l-a c c ió n ). L a a c c ió n m á s fre c u e n te p a r a u n e s ta d o p u e d e si­
tu a rs e al e x tr e m o d e la lista, y e n lu g a r d e u n te rm in a l se p u e d e e m p le a r la n o ta c ió n
“cualqu iera* ’, in d ic a n d o q u e si to d a v ía n o se h a e n c o n t r a d o el s ím b o lo e n c u r s o de
e n t r a d a e n la lista, se d e b e re a liz a r esa a c c ió n , in d e p e n d ie n te m e n te d e c u á l sea el
s ím b o lo d e e n tr a d a . A d e m á s , las e n tr a d a s d e e r r o r p u e d e n s u stitu irs e s in p elig ro p o r
a c c io n e s d e re d u c c ió n , p a r a m a y o r u n if o r m id a d e n la fila. L o s e rro re s se d e te c ta r á n
d e s p u é s , a n te s d e u n m o v i m ie n to d e d e s p la z a m ie n to .

E je m p lo 4 .4 8 . C o n s id é re s e la ta b la d e a n á lis is s in tá c tic o d e la fig u ra 4 .3 1 . P r im e ro ,


o b sérv ese q u e las a c c io n e s p a r a los e s ta d o s 0 , 4 . 6 y 7 c o in c id e n . T o d a s se p u e d e n
r e p r e s e n ta r m e d ia n te la lista:

Sí m b o l o A cción
id d5
( d4
c u a lq u ie r a erro r

El e s ta d o 1 tie n e u n a lista sim ilar:

d6
acep
e rro r
4.7 A N A L IZ A D O R E S SINTA CTIC O S LR 253

E n el e s ta d o 2, se p u e d e n s u s titu ir la s e n tr a d a s d e e r r o r p o r r2 , d e m o d o q u e la re­
d u c c ió n p o r la p r o d u c c ió n 2 o c u r r ir á c o n c u a l q u ie r e n t r a d a , e x c e p to *. P o r t a n t o , la
lista p a r a el e s ta d o 2 es:

* di
c u a lq u ie r a r2

El e s ta d o 3 só lo tie n e a c c io n e s d e e r r o r y r4. S e p u e d e n s u s titu ir las p r im e r a s p o r las


ú ltim a s, d e m o d o q u e la lista p a r a el e s ta d o 3 c o n s ta só lo del p a r (c u a lq u ie ra , r4).
L o s e s ta d o s 5, 10 y 11 se p u e d e n t r a t a r d e m a n e r a s im ila r. L a lista p a r a el estad o
8 es:
+ d6
) di 1
c u a lq u ie r a e rro r

y p a r a el e s ta d o 9:

* d7
c u a lq u ie r a rl

T a m b ié n se p u e d e c o d ific a r la ta b la ir - a m e d ia n te u n a lista, p e r o a q u í resulta


m á s e fic ien te h a c e r u n a lista d e p a re s p a r a c a d a n o te rm in a l A. C a d a p a r d e la lista
d e A tie n e la f o r m a (esta d o -a c tu a l ’ sig u ie n te -e sta d o ), q u e in d ica

ir-a [e sta d o -a c tu a l. A] = sig u ien te-esta d o

E sta té c n ic a es ú til p o r q u e ti e n d e a h a b e r m e n o s e s ta d o s en c a d a c o l u m n a d e la ta ­
b la de tra n sic io n e s ir -a . L a ra z ó n es q u e la tra n s ic ió n c o n el n o te rm in a l A sólo p u e d e
s e r u n e s ta d o d e riv a b le d e u n c o n j u n t o d e e le m e n to s e n el q u e a lg u n o s e le m e n to s
ti e n e n A i n m e d i a t a m e n t e a la iz q u ie r d a d e u n p u n t o . N in g ú n c o n j u n t o tie n e ele­
m e n to s c o n X c Y i n m e d i a t a m e n t e a la iz q u ie r d a d e u n p u n t o si X # Y. P o r ta n to ,
c a d a e s ta d o a p a re c e a lo s u m o e n u n a c o l u m n a d e ir-a .
P a r a re d u c ir m á s esp acio , se o b s e rv a q u e n u n c a se c o n s u lta n las e n tra d a s d e e rro r
e n la ta b la ir a. P o r ta n to , se p u e d e s u s titu ir c a d a e n t r a d a d e e r r o r p o r la e n tr a d a
d is tin ta d e e r r o r m á s h a b itu a l e n su c o l u m n a . E sta e n t r a d a se c o n v ie r te e n el v a lo r
p o r o m is ió n ; se r e p re s e n ta e n la lista p a r a c a d a c o l u m n a m e d ia n te u n p a r c o n “c u a l­
q u ie ra " , e n lu g a r del e s ta d o a c tu a l.

E j e m p lo 4 . 4 9 . C o n s id é r e s e d e n u e v o la fig u ra 4 .3 1 . L a c o l u m n a p a r a F tie n e la
e n tr a d a 10 p a r a el e s ta d o 7 y to d a s las o tr a s e n t r a d a s s o n 3 o e r r o r . Se p u e d e su sti­
t u i r e r r o r p o r 3 y c r e a r p a r a la c o l u m n a F la lista:

e sta d o -a c t u a l sig u ie n te - estado


7 10
c u a lq u ie r a 3

D e m a n e r a s im ila r, u n a lista a d e c u a d a p a r a la c o l u m n a T es:

6 9
c u a lq u ie r a 2
254 A N A LISIS SINTA CTIC O

P a r a la c o l u m n a E se p u e d e e s c o g e r 1 u 8 c o m o v a lo r p o r o m is ió n ; e n a m b o s casos
se n e c e sita n d o s e n tra d a s . P o r e je m p lo , se p u e d e c r e a r p a r a la c o l u m n a E la lista:

4 8
c u a lq u ie r a 1 □

Si el le c to r s u m a el n ú m e r o d e e n tr a d a s e n la s listas c re a d a s e n este e je m p lo y en
el a n te r io r , y d e s p u é s a ñ a d e lo s a p u n t a d o r e s d e los e s ta d o s a las listas d e a c c io n e s y
d e los n o te rm in a le s a las listas d e sig u ie n te e s ta d o , n o q u e d a r á im p r e s io n a d o p o r
lo s a h o r r o s d e e s p a c io e n la i m p l a n t a c i ó n c o n m a tr ic e s d e la fig u ra 4 .3 1 . S in e m ­
bargo , n o h a y q u e d e ja rse e n g a ñ a r p o r este p e q u e ñ o e je m p lo . P a r a g r a m á tic a s p rá c ­
ticas, el e s p a c io n e c e sa rio p a r a la r e p re s e n ta c ió n c o n listas es g e n e r a lm e n te in ferio r
a l d ie z p o r c i e n to d e l n e c e sa rio p a r a la r e p re s e n ta c ió n c o n m atrices.
T a m b ié n h a y q u e s e ñ a la r q u e los m é to d o s d e c o m p r e s ió n d e ta b la s p a r a lo s a u ­
tó m a ta s fin ito s e s tu d ia d o s e n la secció n 3 .9 se p u e d e n u tiliz a r a s im is m o p a r a r e p re ­
s e n ta r ta b la s d e a n álisis s in tá c tic o L R . L a a p lic a c ió n d e e s to s m é to d o s se e s tu d ia e n
los ejercicios.

4 .8 U S O D E G R A M A T IC A S A M B IG U A S

E s u n te o r e m a q u e to d a g ra m á tic a a m b ig u a n o es L R , p o r lo q u e n o está e n n in g u n a
d e la s c la s e s d e g r a m á t ic a s e s t u d ia d a s e n la s e c c ió n a n te r io r . S in e m b a r g o , c ie r to s
tip o s d e g r a m á tic a s a m b ig u a s s o n útiles e n la e sp ecificació n e im p la n ta c ió n d e le n ­
g uajes. c o m o se v e rá e n esta secció n . P a r a c o n s tr u c c io n e s d e le n g u a je s c o m o la s ex ­
presiones, u n a g ra m á tic a a m b ig u a p ro p o r c io n a u n a especificación m á s n a tu ra l y c o rta
q u e c u a lq u ie r g ra m á tic a n o a m b ig u a e q u iv a le n te . O t r o u s o d e las g r a m á tic a s a m b i­
g u a s está e n el a is la m ie n to d e c o n s tr u c c io n e s s in tá c tic a s h a b itu a le s p a r a o p tim a c ió n
e n c aso s especiales. C o n u n a g r a m á tic a a m b ig u a se p u e d e n e s p e c ific a r las c o n s tr u c ­
c io n e s d e c aso s especiales a ñ a d i e n d o c u id a d o s a m e n te n u e v a s p ro d u c c io n e s a la gra­
m ática.
Se d e b e in s is tir e n q u e , a u n q u e la s g r a m á tic a s u tiliz a d a s s o n a m b ig u a s , e n to d o s
lo s c aso s se esp ecifican reglas p a r a e lim in a r a m b ig ü e d a d e s q u e p e r m ite n só lo u n á r ­
bol d e a n á lis is s in tá c tic o p a r a c a d a frase. D e e s ta m a n e r a , la e sp ecificació n to ta l del
le n g u a je sigue s ie n d o n o a m b ig u a . H a y q u e s e ñ a la r ta m b ié n q u e la s c o n s tru c c io n e s
a m b ig u a s se d e b e n u s a r r a r a m e n t e y d e u n a m a n e r a e s tr ic ta m e n te c o n tr o la d a , pues
d e lo c o n t r a r i o n o se p u e d e c o n o c e r c o n s e g u rid a d el le n g u a je q u e r e c o n o c e el a n a ­
lizador.

U s o d e p rec e d e n c ia y a so c ia tiv id a d p ara r e s o lv e r c o n flic to s en la s a c c io n e s


d e l a n á lis is s in tá c tic o

C o n s id é r e n s e las e x p r e s io n e s e n lo s le n g u a je s d e p r o g r a m a c ió n . L a s ig u ie n te g ra ­
m á tic a p a r a las e x p re s io n e s a r itm é tic a s c o n o p e r a d o r e s + y *

E - + E + £ | £ * £ | ( £ ) | id (4 .22)

es a m b ig u a p o r q u e n o especifica la a s o c ia tiv id a d o p re c e d e n c ia d e lo s o p e r a d o r e s +
y *. L a g ra m á tic a n o a m b ig u a
4.8 U S O DE G R A M A T IC A S A M B IG U A S 255

E -+ E + T\ T
T T * F \F (4 .23)
F - * ( E ) | ¡d
g e n e ra el m is m o le n g u a je , p e r o d a a + u n a m e n o r p re c e d e n c ia q u e a *, y c o n v ie rte
a a m b o s o p e ra d o re s e n a so c ia tiv o s p o r la iz q u ie rd a . H a y d o s r a z o n e s p o r las q u e se
p refiere u s a r la g r a m á tic a (4 .2 2 ) e n lu g a r d e la (4.2 3). P r im e ro , c o m o se verá m ás
a d e la n te , se p u e d e n c a m b ia r f á c ilm e n te las a so c ia tiv id a d e s y n iv eles d e p re c e d e n c ia
d e los o p e r a d o r e s + y * s in in te r f e r ir e n las p r o d u c c io n e s d e (4 .2 2 ) o e n el n ú m e r o
d e e s ta d o s del a n a liz a d o r s in tá c tic o resu ltan te. S e g u n d o , el a n a liz a d o r s in tá c tic o p a ra
(4 .2 3 ) c o n s u m i r á u n a fra c c ió n i m p o r t a n t e d e su ti e m p o re d u c ie n d o p o r las p r o d u c ­
c io n e s E - + T y T - + F, c u y a ú n ic a f u n c ió n es a s e g u r a r la a s o c ia tiv id a d y p r e c e d e n ­
c ia . El a n a liz a d o r p a r a (4 .2 2 ) n o p e r d e r á ti e m p o r e d u c ie n d o p o r e s ta s p ro d u c c io n e s
sim p les , c o m o se d e n o m in a n .

/o: F -+ E / 5: E -> E * E
E -> E + E E - * .E + E
-E*E E -> E*E
£ -* •(£ ) F - * •(£ )
E —> id E - * id

£ '-> £ • h: £ -> (£ •)
E -* E + E
£ -> £ •* £

£ -* (•£ ) h: E -* E + E-
E -> E + E E -* E + E
£ - » E+E E E-+E
£ -* •(£ )
E -+ id h’ E - > E+E-

£ —►id-

U £ - > £ + .£ h- E -> (E )-
£ -» E+E
E - > -E*E
E - > - (E )
E - * id

F ig. 4 .4 6 . C o n ju n to s de elem en to s L R (0) para la g ram ática a u m e n ta d a (4.22).

E n la fig u ra 4 .4 6 se m u e s tr a n lo s c o n j u n to s d e e le m e n to s L R (0 ) p a r a (4 .2 2 ) a u ­
m e n ta d a c o n F - * E . C o m o la g r a m á tic a (4 .2 2 ) e s a m b ig u a , se g e n e r a r á n c o n flic to s
e n las a c c io n e s d e l a n á lis is s in tá c tic o c u a n d o se i n t e n te p r o d u c ir u n a ta b la d e a n á ­
lisis s in tá c tic o L R a p a r t i r d e lo s c o n j u n t o s d e e l e m e n t o s . L o s e s ta d o s c o r r e s p o n ­
256 ANALISIS SIN T A C T IC O

d ie n te s a los c o n j u n to s d e e le m e n to s h e /« g e n e r a n e s to s c o n flicto s. S u p ó n g a s e q u e
se u tiliz a el m é to d o S L R p a r a c o n s tr u i r la ta b la d e a c c io n e s d e l a n á lis is sin tá ctic o .
El c o n flic to g e n e r a d o p o r / 7 e n tr e la re d u c c ió n p o r E - * E + E y el d e s p la z a m ie n to
c o n + y * n o se p u e d e re so lv e r p o r q u e + y * e s tá n e n S I G U I E N T E ( £ ) . P o r ta n to ,
a m b a s a c c io n e s se p e d iría n c o n las e n tr a d a s + y *. / 8 g e n e r a u n c o n flic to sim ila r
e n tr e la re d u c c ió n p o r E - + E + E y el d e s p la z a m ie n to c o n las e n tr a d a s + y *. D e
h e c h o , to d o s lo s m é to d o s d e c o n s tr u c c ió n d e las ta b la s d e a n á lis is s in tá c tic o L R g e­
n e r a r á n esto s co nflicto s.
S in e m b a r g o , esto s p r o b le m a s se p u e d e n re so lv e r u s a n d o la in f o r m a c ió n sobre
p re c e d e n c ia y a s o c ia tiv id a d p a r a + y *. C o n s id é re s e la e n t r a d a id + id * id . q u e
h a c e q u e u n a n a liz a d o r s in tá c tic o b a s a d o e n la fig u ra 4 .4 6 e n tr e e n el e s ta d o 7 d e s ­
p u é s d e p r o c e s a r id + id; e n p a rtic u la r, el a n a liz a d o r a lc a n z a u n a c o n fig u ra c ió n

Pila Entrada
0 E 1 + 4 E 7 * id $

D a n d o p o r s u p u e s to q u e * tie n e p re c e d e n c ia s o b re + , se sa b e q u e el a n a liz a d o r
d e b e d e s p la z a r * a la pila, p r e p a r á n d o s e p a r a r e d u c ir el * y sus id q u e lo r o d e a n a
u n a ex p re sió n . E sto es lo q u e h a r ía el a n a l iz a d o r s in tá c tic o S L R d e la fig u ra 4.31
p a r a el m is m o le n g u a je , y lo q u e h a r ía u n a n a liz a d o r s in tá c tic o p o r p re c e d e n c ia d e
o p e ra d o re s . P o r o tr a p arte , si + tie n e p re c e d e n c ia so b re ♦, se sa b e q u e el a n a liz a d o r
d e b e re d u c ir E + E a E . P o r ta n to , la p re c e d e n c ia re la tiv a d e + seg u id o d e * d e te r­
m i n a d e m a n e r a ú n ic a c ó m o se d e b e re s o lv e r el c o n flic to d e a c c ió n d e l a n álisis s in ­
tá c tic o e n tr e re d u c ir E —* E + E y d e s p la z a r c o n * e n el e s ta d o 7.
Si la e n tr a d a h u b ie ra sid o id + id + id , el a n a l iz a d o r ta m b ié n a lc a n z a ría u n a
c o n f ig u r a c ió n e n la q u e t u v i e r a la p ila 0 £ 1 +42T7 d e s p u é s d e p r o c e s a r la e n t r a d a
id + id . C o n la e n t r a d a + ta m b ié n h a y u n c o n flic to d e d e s p la z a m ie n to /r e d u c c ió n
e n el e s ta d o 7. S in e m b a r g o , a h o r a la a s o c ia tiv id a d del o p e r a d o r + d e t e r m in a c ó m o
se d e b e re so lv e r este c o n flic to . Si + e s a s o c ia tiv o p o r la iz q u ie rd a , la a c c ió n c o rre c ta
es r e d u c ir p o r E -+ E + E. E s d ecir, se d e b e n a g r u p a r p r im e r o los id q u e r o d e a n al
p r im e r + . D e n u e v o esta elecció n c o in c id e c o n lo q u e h a ría n los a n a liz a d o r e s s in ­
tá c tic o s S L R o d e p re c e d e n c ia d e o p e r a d o r e s p a r a la g r a m á tic a d e l e je m p lo 4.34.
E n r e s u m e n , s a b ie n d o q u e + es a s o c ia tiv o p o r la iz q u ie rd a , la a c c ió n del e s ta d o
7 c o n la e n t r a d a + d e b e ría ser re d u c ir p o r E E + E, y s a b ie n d o q u e * tie n e p r e ­
c e d e n c ia s o b re + , la a c c ió n d e l e s ta d o 7 c o n la e n t r a d a * d e b e ría s e r d e sp la z a r. De
m a n e r a s im ila r, s a b ie n d o q u e * e s a s o c ia tiv o p o r la iz q u ie r d a y tie n e p re c e d e n c ia
so b re + , se p u e d e a r g u m e n ta r q u e el e s ta d o 8 , q u e a p a re c e e n el to p e d e la p ila sólo
c u a n d o E * E son los tres s ím b o lo s g ra m a tic a le s del to p e , d e b e te n e r la acció n d e re­
d u c ir E - * E * E. ta n to c o n la e n tr a d a + c o m o c o n *. E n el caso d e la e n tr a d a + , la
ra z ó n e s q u e * tie n e p r e c e d e n c ia s o b r e + , m i e n t r a s q u e e n el c a s o d e la e n t r a d a *.
la ra z ó n es q u e * es a s o c ia tiv o p o r la iz q u ie rd a .
Si se c o n t i n ú a d e esta m a n e r a , se o b tie n e la ta b la d e a n álisis s in tá c tic o L R q u e
se m u e s tra en la fig u ra 4 .4 7 . L as p ro d u c c io n e s 1 a 4 s o n E E + £ , E -> E * £ ,
£ - * ( £ ) y E - * id. resp ectiv am en te. E s in te re s a n te c o m p r o b a r q u e se p ro d u c iría u n a
ta b la d e a c c io n e s d e a n álisis s in tá c tic o s im ila r e lim in a n d o las re d u c c io n e s p o r las
p ro d u c c io n e s s im p le s E -> T y T -* F de la ta b la S L R p a r a la g ra m á tic a (4 .2 3 ) q u e
4.8 U SO DE G RAM ATICAS A M BIG U A S 257

se m u e s tr a e n la fig u ra 4 .3 1 . L as g r a m á tic a s a m b ig u a s , c o m o la (4 .2 2 ), se p u e d e n
c o n s id e r a r d e u n a m a n e r a s im ila r e n el c o n te x to del a n á lis is s in tá c tic o L A L R y LR
c a n ó n ic o .

E l c a s o d e l else a m b ig u o

C o n s id é re s e d e n u e v o la sig u ie n te g r a m á tic a p a r a las p ro p o s ic io n e s c o n d ic io n a le s

prop - * i f ex p r th e n prop e l s e prop


i f expr th e n prop
o tra

acción ir-a
Es t a d o
id + * ( ) $ E
0 d3 d2 1
1 d4 d5 acep
2 d3 d2 6
3 r4 r4 r4 r4
4 d3 d2 8
5 d3 d2 8
6 d4 d5 d9
7 rl d5 rl rl
8 r2 r2 r2 r2
9 r3 r3 r3 r3

F ig . 4 .4 7 . T a b la de análisis sintáctico p a ra la g ram ática (4.22).

C o m o se in d ic ó e n la se c c ió n 4 .3 , e s ta g r a m á tic a e s a m b ig u a p o r q u e n o resu elv e la


a m b ig ü e d a d del e ls e . P a r a s im p lif ic a r el e s tu d io , c o n s id é re s e u n a a b s tr a c c ió n d e la
g r a m á tic a a n te r io r , d o n d e / re p r e s e n ta i f e x p r th e n , e r e p re s e n ta e l s e , y a r e p re s e n ta
“la s d e m á s p r o d u c c io n e s " . E n to n c e s , c o n la p r o d u c c ió n a u m e n t a d a S" - * S, la g ra ­
m á tic a se p u e d e escribir:

5 iS e S | i S | a (4 .2 4 )

E n la figura 4 .4 8 se m u e s tr a n los c o n j u n t o s d e e le m e n to s L R (0 ) p a r a la g r a m á ­
tic a (4 .2 4 ). L a a m b ig ü e d a d e n (4 .2 4 ) d a lu g a r a u n c o n f lic to d e d e s p la z a m ie n to /
r e d u c c i ó n e n / 4. E n t o n c e s , S —> i S e S p id e u n d e s p l a z a m i e n t o d e e y, c o m o
S I G U I E N T E ( S ) = {e , $}, el e le m e n to S - + i S p id e u n a re d u c c ió n p o r S - * i S c o n
la e n t r a d a e.
T r a d u c i e n d o d e n u e v o a la te rm in o lo g ía d e i f . . . th e n . . . e lse , d a d o s

i f expr th e n prop

e n la p ila y e l s e c o m o p r i m e r s ím b o lo d e e n t r a d a , ¿se d e b e d e s p la z a r e l s e d e n t r o d e
la p ila ( p o r e je m p lo , d e s p la z a r e) o r e d u c ir i f expr th e n prop a prop (es d e c ir, re d u c ir
258 ANALISIS SIN TA C TIC O

¡y S - » a-
S - * iS eS
S -+ ÍS U S iS eS
S -+ a S - * iS-

S ' -> S- h' S -> iSe-S


S -> •iSeS
S -* i-SeS S -> . iS
S i S S -+ a
S -> iS eS
S -> iS U- S iSeS-
S a

F ig. 4 .4 8 . E stados L R (0) para la gram ática a u m e n ta d a (4.24).

p o r S - > /.$)? L a re s p u e s ta es q u e se d e b e d e s p la z a r el e ls e . p o r q u e e s tá “ a s o c ia d o " al


th e n a n te r io r . E n la te rm in o lo g ía d e la g r a m á tic a (4 .2 4 ), la e d e la e n t r a d a , q u e re­
p re s e n ta a e ls e . só lo p u e d e f o r m a r p a rte d e l la d o d e r e c h o q u e c o m ie n z a c o n la iS
d e l to p e d e la pila. S i lo q u e sig u e a e e n la e n t r a d a n o se p u e d e a n a liz a r s in tá c tic a ­
m e n te c o m o u n a 5 , c o m p le ta n d o el la d o d e r e c h o d e iS e S y e n to n c e s se d e m u e s tr a
q u e n o h a y o t r o a n álisis s in tá c tic o posible.

acción ir„a
Es t a d o
i e a $ S
0 d2 d3 1
1 acep
2 d2 d3 4
3 r3 r3
4 d5 r2
5 d2 d3 6
6 rl rl

Fig. 4 .4 9 . T abla de análisis sintáctico LR para la gram ática abstracta del else am biguo.

S e llega a la c o n c lu s ió n d e q u e el c o n flic to d e d e s p la z a m ie n to /r e d u c c ió n e n / 4
d e b e reso lverse e n f a v o r d e l d e s p la z a m ie n to c o n la e n t r a d a e. E n la fig u ra 4 .4 9 se
m u e s tr a la ta b la d e a n á lis is s in tá c tic o S L R c o n s tr u i d a a p a r ti r d e los c o n j u n t o s d e
e le m e n to s d e la fig u ra 4 .4 8 , u tiliz a n d o e s ta re s o lu c ió n d e l c o n flic to d e a c c ió n del
análisis sin tá ctic o e n / 4 c o n la e n tra d a e. L as p ro d u c c io n e s 1 a 3 s o n S -> iS eS , S iS
y S —►a, re s p e c tiv a m e n te .
4.8 U SO DE G RAM ATICAS A M BIG U A S 259

P ila Entrada

(1) 0 iiaeaS
(2) 0 /2 iaeaS
(3 ) 0/ 2/ 2 acaS
(4) 0 / 2 / 2a 3 caS
(5) 0 /2 /2 5 4 eaS
(6) 0/ 2/ 25 4e 5 aS
(7) 0 / 2 / 2 5 4* 50 3 $
(8) 0 /2 /2 5 4 * 5 5 6 $
(9) 0/ 25 4 $
(10) 05 1 $

Fig. 4.50. A cciones d e análisis sintáctico realizadas co n la e n tra d a Haca.

P o r e je m p lo , c o n la e n t r a d a iiaea, el a n a liz a d o r s in tá c tic o re a liz a los m o v im ie n ­


to s ilu s tra d o s e n la fig u ra 4 .5 0 , c o r r e s p o n d ie n te s a la re s o lu c ió n c o r r e c ta d e l “ e l s e
a m b i g u o ” . E n la lin e a (5), el e s ta d o 4 s e le c c io n a la a c c i ó n d e d e s p la z a r c o n la e n ­
tr a d a *, m ie n tr a s q u e e n la lín e a (9), el e s ta d o 4 lla m a a u n a re d u c c ió n p o r S —♦ iS
c o n la e n t r a d a $.
A m o d o d e c o m p a r a c ió n , si n o se p u e d e u tiliz a r u n a g r a m á tic a a m b ig u a p a ra
e s p e c ific a r las p r o p o s ic io n e s c o n d ic io n a le s , e n t o n c e s h a b r ía q u e u tiliz a r u n a g ra ­
m á tic a m á s v o lu m in o s a , d e l ti p o d e la (4.9).

A m b ig ü e d ad es d e producciones d e caso s esp eciales

U n e je m p lo fin al q u e m u e s t r a la u tilid a d d e las g r a m á tic a s a m b ig u a s es el d e la in ­


t r o d u c c ió n d e u n a p r o d u c c i ó n a d i c io n a l p a r a e s p e c ific a r u n c a s o esp e c ia l d e u n a
c o n s tr u c c ió n s in tá c tic a g e n e r a d a d e u n a f o r m a m á s g e n e ra l p o r el r e s to d e la g ra ­
m á tic a . C u a n d o se a ñ a d e la p r o d u c c ió n a d ic io n a l, se g e n e r a u n c o n flic to d e a c c ió n
d e l a n álisis s in tá c tic o . A m e n u d o se p u e d e re so lv e r el c o n flic to s a tis f a c to ria m e n te
m e d ia n te u n a regla p a r a e lim in a r a m b ig ü e d a d e s q u e in d ic a r e d u c ir p o r la p r o d u c ­
c ió n del c a so especial. L a a c c ió n s e m á n t ic a a s o c ia d a a la p r o d u c c ió n a d ic io n a l p e r­
m ite e n to n c e s q u e el c a s o esp e c ia l sea m a n e ja d o p o r u n m e c a n is m o m á s específico.
U n u s o in te r e s a n te d e p r o d u c c io n e s d e c aso s esp eciales lo h ic ie ro n K e r n ig h a n y
C h e rry [1 9 7 5 ] e n s u p r e p r o c e s a d o r d e tip o g ra fía d e e c u a c io n e s E Q N , q u e se u tiliz ó
p a r a la c o m p o s ic ió n d e este lib ro . E n E Q N , la s in ta x is d e u n a e x p re s ió n m a te m á tic a
se d e sc rib e m e d ia n te u n a g r a m á tic a q u e u tiliz a u n o p e r a d o r d e s u b ín d ic e s u b y u n
o p e r a d o r d e s u p e r ín d ic e s u p , c o m o se m u e s t r a e n el f r a g m e n to d e g r a m á tic a (4.25).
El p r e p r o c e s a d o r u tiliz a la s llav es p a r a a g r u p a r e x p re s io n e s c o m p u e s ta s , y c se usa
c o m o u n c o m p o n e n t e lé x ic o q u e re p r e s e n ta c u a lq u ie r c a d e n a d e texto.
(1) E —♦ E sub E sup E
(2 ) E -* E sub E
(3) E -> E sup E (4 .2 5 )
(4) £ -* { £ }
(5) E ^ c
260 ANALISIS SINTA CTIC O

L a g r a m á tic a (4 .2 5 ) e s a m b ig u a p o r v arias ra z o n e s . L a g r a m á tic a n o esp ecifica la


a s o c ia tiv id a d y p re c e d e n c ia d e los o p e r a d o r e s s u b y s u p . A u n q u e se re s u e lv a n las
a m b ig ü e d a d e s d e b id a s a la a s o c ia tiv id a d y p re c e d e n c ia d e s u b y s u p , p o r e je m p lo ,
h a c ie n d o q u e e s to s d o s o p e r a d o r e s te n g a n igual p re c e d e n c ia y a s o c ia tiv id a d p o r la
d e re c h a , la g r a m á tic a se g u irá s ie n d o a m b ig u a , d e b i d o a q u e la p r o d u c c ió n (1 ) aísla
u n c a so especial d e e x p resio n es g e n e ra d a s p o r las p ro d u c c io n e s (2) y (3), q u e son ex ­
p r e s io n e s d e la f o r m a E s u b E s u p E. L a r a z ó n p a r a t r a t a r d e m a n e r a esp e c ia l las
e x p re s io n e s d e este tip o e s q u e m u c h o s tip ó g ra fo s p re fe riría n tip o g ra fia r u n a ex p re-

/<>: E' —► •£ /*: E E sub E sup E


E -* E s u b E s u p E E E sub E
E -* E sub E E -* E s u p E
E -* E sup E £ -* {£ ■ }
E ^ iE )
E -> c h: E -» E sub E s u p E
E -* E s u b E s u p E
/,: E' -> £• E E sub E
E -> E s u b E sup E E -» E sub £•
E E sub E E —* E -su p E
E -* E s u p E
/«: E -* E s u b E s u p E
I2: £ -* {• £ } E —► E sub E
E -* E sub E s u p E E E sup E'
E E sub E E -> E sup £•
E E sup E
£ -.{£ } /»: E -* { E }•
£ -» c
f I0: E -* E s u b E s u p -E
h: E -+ c- E -* E s u p -E
E -* E s u b E s u p E
/4: E -+ E s u b E s u p E E -> E s u b E
E -> E s u b E E —* - E sup E
E -* E sub E sup E E ^ .{ E )
E - E sub E E -> c
E E sup E
£ -* • {£ } fu* E -► E sub E sup E
E -* c E -+ E sub E sup E
E -» E sub E
/ 5: E -* E s u p •£ E -» E sup E
E -* - E s u b E sup E E -* E sup E-
E -> - E sub E
E E sup E
£ -> .{£ }
E -> *c

F¡ k- 4.51. C o n ju n to d e elem en to s LR (0) p a ra la g ram ática (4.25).


4.8 U SO DE G RAM ATICAS A M BIG U A S 261

sió n d e l ti p o a su b i s u p 2 c o m o a 2, e n lu g a r d e c o m o a,2. S im p le m e n te a ñ a d i e n d o
u n a p r o d u c c ió n d e c a s o especial, K e r n ig h a n y C h e r r y c o n s ig u ie ro n q u e E Q N p r o ­
d u je ra e s ta sa lid a d e c a s o especial.
P a r a v e r c ó m o se p u e d e t r a t a r e s ta clase d e a m b ig ü e d a d e n el c o n te x to L R , se
c o n s tr u ir á u n a n a l iz a d o r s in tá c tic o S L R p a r a la g r a m á tic a (4 .2 5 ). E n l a ‘fig u ra 4.51
se m u e s tr a n lo s c o n j u n to s d e e le m e n to s L R (0 ) p a r a e s ta g r a m á tic a . E n e s ta c o lec­
c ió n , tres c o n j u n to s d e e le m e n to s p r o d u c e n c o n flic to s d e a c c ió n d e a n á lis is sin tá c ­
tic o . h , / 8 e / | i g e n e r a n c o n flic to s d e d e s p la z a m ie n to /r e d u c c ió n c o n lo s c o m p o n e n ­
te s léx ico s s u b y s u p p o r q u e la a s o c ia tiv id a d y p re c e d e n c ia d e e s to s o p e r a d o r e s no
h a sid o esp ecificad a. E s to s c o n flic to s d e a c c io n e s d e l a n á lis is s in tá c tic o se re su e lv e n
h a c ie n d o q u e s u b y s u p s e a n d e ig u a l p re c e d e n c ia y a s o c ia tiv o s p o r la d e re c h a . P o r
t a n t o , e n a m b o s c aso s se p re fie re el d e s p la z a m ie n to .
/ , , ta m b ié n g e n e r a u n c o n flic to d e r e d u c c ió n /r e d u c c ió n c o n las e n t r a d a s ) y S
e n t r e la s d o s p ro d u c c io n e s

E -> E s u b E su p E
E - » E su p E

El e s ta d o I\ i e s ta r á e n el to p e d e la p ila c u a n d o se h a y a v isto u n a e n t r a d a re d u c id a
a E s u b E s u p E e n la p ila . S i se re su e lv e el c o n flic to d e r e d u c c ió n /r e d u c c ió n en
fav o r d e la p r o d u c c ió n (1), u n a e c u a c ió n d e la f o r m a E s u b E s u p E se c o n s id e r a r á
c o m o u n c a so esp ecial. C o n estas reg las p a r a e lim in a r a m b ig ü e d a d e s , se o b tie n e la
ta b la d e a n álisis s in tá c tic o s S L R d e la fig u ra 4 .5 2 .

acción ir-a
Es t a d o
su b su p { } c S E
0 d2 d3 I
1 d4 d5 acep
2 d2 d3 6
3 r5 r5 r5 r5
4 d2 d3 7
5 d2 d3 8
6 d4 d5 d9
7 d4 d lO r2 r2
8 d4 d5 r3 r3
9 r4 r4 r4 r4
10 d2 d3 11
11 d4 d5 rl rl

Fig. 4 .5 2 . l abia d e análisis sintáctico p a ra la g ram ática (4.25).

E sc rib ir g r a m á tic a s n o a m b ig u a s q u e fa c to ric e n c o n s tr u c c io n e s s in tá c tic a s d e c a ­


s o s esp eciales e s m u y difícil. P a r a a p r e c ia r el a lc a n c e d e la d ific u lta d , se in v ita al lec­
t o r a c o n s tr u i r u n a g r a m á tic a n o a m b ig u a e q u iv a le n te p a r a (4 .2 5 ) q u e aísle e x p re sio ­
nes d e la f o r m a E s u b E s u p E.
262 ANALISIS SIN TA C TIC O

R e c u p e r a c ió n d e e r r o r e s en e l a n á lis is s in tá c tic o L R

U n a n a liz a d o r s in tá c tic o L R d e te c ta r á u n e r r o r c u a n d o c o n s u lte la ta b la d e a c c io n e s


d e a n álisis s in tá c tic o y e n c u e n t r e u n a e n t r a d a d e e rro r. L o s e rro re s n u n c a se d e te c ­
ta n c o n s u lta n d o la ta b la d e tr a n s ic io n e s ir a. A d ife re n c ia d e u n a n a l iz a d o r sin tá c ­
tico p o r p reced e n cia d e o p e ra d o re s, u n a n a liz a d o r L R a n u n c ia r á u n e r r o r ta n p r o n to
c o m o n o h a y a u n a c o n t i n u a c i ó n v á lid a p a r a la p a r t e d e e n t r a d a e x a m i n a d a h a s ta
e n to n c e s . U n a n a liz a d o r s in tá c tic o L R c a n ó n ic o n u n c a h a r á n i u n a so la re d u c c ió n
a n te s d e a n u n c i a r u n e rro r. L os a n a liz a d o r e s S L R y L A L R p u e d e n h a c e r v a ria s r e ­
d u c c io n e s a n t e s d e a n u n c i a r u n e r r o r , p e r o n u n c a d e s p la z a r á n u n s í m b o l o d e e n ­
tr a d a e r r ó n e o a la pila.
E n el a n álisis s in tá c tic o L R . se p u e d e i m p l a n t a r u n a re c u p e r a c ió n d e e rro re s en
m o d o d e p á n i c o c o m o sigue. S e e x a m in a la p ila h a s ta e n c o n t r a r u n e s ta d o s c o n u n
v a lo r d e ir a p a r a u n d e t e r m in a d o n o te r m in a l A . E n to n c e s se d e s e c h a n c e r o o m á s
s ím b o lo s d e e n t r a d a h a s ta e n c o n t r a r u n s ím b o lo a q u e p u e d a se g u ir le g a lm e n te a A.
E n to n c e s , el a n a liz a d o r s in tá c tic o m e te e n la p ila el e s ta d o /r _ a [ s , A] y p ro s ig u e n o r ­
m a lm e n te el análisis sintáctico. P u e d e h a b e r m á s d e u n a o p ció n p a ra el n o te rm in a l A.
G e n e r a lm e n te , estas se ria n n o te rm in a le s q u e r e p r e s e n ta n las p a r te s m á s i m p o r t a n ­
te s d e u n p r o g r a m a , c o m o u n a e x p re s ió n , u n a p ro p o s ic ió n o u n b lo q u e . P o r e je m ­
plo , si A e s el n o te r m in a l prop , a p u e d e s e r el s ím b o lo d e p u n t o y c o m a o en d .
E ste m é to d o d e re c u p e ra c ió n in te n ta a isla r la frase q u e tie n e el e r r o r sin tá ctic o .
El a n a liz a d o r d e t e r m i n a q u e u n a c a d e n a d e r iv a b le d e A tie n e u n e rro r. P a r te d e esta
c a d e n a y a h a sid o p ro c e s a d a , y el r e s u lta d o d e este p r o c e s a m ie n to e s u n a s e c u e n c ia
d e e s ta d o s e n el to p e d e la pila. E l re s to d e la c a d e n a a ú n está e n la e n t r a d a , y el
a n a liz a d o r i n t e n ta s a lta r el re s to d e la c a d e n a b u s c a n d o u n s ím b o lo e n la e n t r a d a
q u e p u e d a seg u ir le g ítim a m e n te a A . E l im i n a n d o e s ta d o s d e la pila, s a lta n d o la e n ­
tr a d a e in t r o d u c ie n d o ir-a [s. A ] e n la p ila , el a n a liz a d o r s u p o n e q u e h a e n c o n tr a d o
u n c a so d e A y c o n t i n ú a el a n álisis n o rm a l.
L a re c u p e ra c ió n a n iv e l d e frase se im p la n ta e x a m i n a n d o c a d a e n t r a d a d e e rro r
e n la ta b la d e análisis sin tá ctic o L R y d e c id ie n d o , b a s á n d o s e e n el uso d e l lenguaje,
los e rro re s d e lo s p r o g r a m a d o r e s q u e m á s p r o b a b le m e n te d a r ía n lu g a r a d i c h o erro r.
E n to n c e s se p u e d e c o n s t r u i r u n p r o c e d i m i e n t o d e r e c u p e r a c ió n a p r o p i a d o ; p r e s u ­
m ib le m e n te , el to p e d e la p ila o lo s p r im e r o s s ím b o lo s d e e n t r a d a o a m b o s se m o ­
d ific a ría n d e la f o r m a a d e c u a d a a c a d a e n t r a d a d e erro r.
C o m p a r a d o c o n los a n a liz a d o r e s s in tá c tic o s p o r p re c e d e n c ia d e o p e ra d o re s , el
d is e ñ o d e r u tin a s esp ecíficas p a r a el m a n e jo d e e rro re s p a r a u n a n a liz a d o r L R e s re­
la tiv a m e n te sencillo. P o r e je m p lo , n o h a y q u e p re o c u p a r s e p o r la s re d u c c io n e s d e ­
fectuo sas; c u a lq u ie r re d u c c ió n p e d id a p o r u n a n a l iz a d o r L R e s c o rre c ta . P o r ta n to ,
se p u e d e lle n a r c a d a e n t r a d a e n b la n c o e n el c a m p o d e a c c ió n c o n u n a p u n t a d o r a
u n a r u ti n a d e e r r o r q u e re a liz a rá u n a a c c ió n a p r o p i a d a eleg id a p o r el d is e ñ a d o r del
c o m p ila d o r . L a s a c c io n e s p u e d e n i n c lu ir la in s e rc ió n o e lim in a c ió n d e s ím b o lo s de
la pila, d e la e n t r a d a o d e a m b a s , o la a lte r a c ió n y tr a n s p o s ic ió n d e s ím b o lo s d e e n ­
tra d a , al igual q u e p a r a el a n a liz a d o r s in tá c tic o p o r p re c e d e n c ia d e o p e ra d o re s . Lo
m is m o q u e p a r a ese a n a liz a d o r, se d e b e n eleg ir la s o p c io n e s d e m o d o q u e e l a n a li­
z a d o r L R n o p u e d a c a e r e n u n la z o in fin ito . A este re sp e c to , es su fic ie n te c o n u n a
estrateg ia q u e g a r a n tic e q u e al m e n o s u n s ím b o lo d e e n t r a d a se rá e l im i n a d o o q u iz á
4.8 U SO DE G RAM ATICAS A M BIG U A S 263

d e sp la z a d o , o q u e e n a lg ú n m o m e n t o la p ila se re d u c irá si se h a a lc a n z a d o el final


d e la e n t r a d a . S e d e b e e v i ta r e x tr a e r u n e s ta d o d e la p ila q u e a b a r q u e u n n o t e r m i ­
n al, p o r q u e esta m o d ific a c ió n e lim in a d e la p ila u n a c o n s tr u c c ió n q u e y a se h a b ía
a n a liz a d o c o n éxito.

E je m p lo 4 .5 0 . C o n s id é re s e d e n u e v o la g r a m á tic a d e e x p re sio n e s

E->E + E\E *E\(E)\¡á


E n la fig u ra 4 .5 3 se m u e s t r a la ta b la d e a n á lis is s in tá c tic o L R a p a r ti r d e la figura
4 .4 7 p a r a e s ta g r a m á tic a , m o d if ic a d a p a r a la d e te c c ió n y re c u p e ra c ió n d e e rro re s . Se
h a c a m b ia d o c a d a e s ta d o q u e p id e u n a re d u c c ió n d e t e r m in a d a c o n a lg u n o s s ím b o ­
los d e e n t r a d a s u s titu y e n d o las e n t r a d a s d e e r r o r e n d i c h o e s ta d o p o r la re d u c c ió n .
E sta m o d ific a c ió n p o s p o n e la d e te c c ió n d e e rro re s h a s ta q u e se h a y a n h e c h o u n a o
m á s re d u c c io n e s , p e ro , d e to d o s m o d o s , el e r r o r s e r á d e te c ta d o a n te s d e q u e te n g a
lu g a r c u a lq u ie r m o v i m ie n to d e d e s p la z a m ie n to . L as r e s ta n te s e n tr a d a s e n b la n c o de
la fig u ra 4 .4 7 se h a n s u s titu id o p o r lla m a d a s a r u tin a s d e erro res.

acción ir-a
C \ rw
t bc 1t ALKJ
id + * ( ) $ E
0 d3 el el d2 e2 el 1
1 c3 d4 d5 e3 e2 acep
2 d3 el el d2 e2 el 6
3 r4 r4 r4 r4 r4 r4
4 d3 el el d2 e2 e l 7
5 d3 el el d2 c2 el 8
6 e3 d4 d5 e3 d9 e4
7 rl rl d5 rl rl rl
8 r2 r2 r2 r2 r2 r2
9 r3 r3 r3 r3 r3 r3

Fig. 4.53. T a b la de análisis sintáctico L R co n ru tin a s d e error.

L a s r u ti n a s d e e r r o r s o n c o m o sigue. D e b e o b s e rv a rs e la s im ilitu d e n t r e e s ta s a c ­
c io n e s y los e rro re s q u e r e p r e s e n ta n y las a c c io n e s d e e r r o r d e l e je m p lo 4 .3 2 (d e p re ­
c e d e n c ia d e o p erad o res). S in e m b a rg o , el caso e l del a n a liz a d o r L R lo m a n e ja el p ro ­
c e s a d o r d e red u ccio n es d e l a n a liz a d o r s in tá c tic o p o r p reced e n cia d e o p erad o res.

e l: /* E sta r u t i n a se lla m a d e s d e los e s ta d o s 0 , 2 , 4 y 5, los c u a le s e s p e r a n el c o ­


m ie n z o d e u n o p e r a n d o , y a sea u n id o u n p a ré n te sis iz q u ie rd o . E n v ez d e eso,
se e n c o n t r ó u n o p e r a d o r , + o *, o el fin d e la e n tr a d a . */
in tro d ú z c a s e u n id im a g in a r io e n la p ila y c ú b ra s e c o n el e s ta d o 3 (la tra n s ic ió n
ir a d e los e s ta d o s 0 , 2, 4 y 5 c o n id)5
e m íta s e el d ia g n ó s tic o “ fa lta o p e r a n d o ”

5 Obsérvese que en la práctica los símbolos d e la gramática n o se colocan en la pila. Es útil imagi­
narlos ahí para recordar los símbolos que “ representan" los estados.
264 ANALISIS SIN TA CTIC O

e2: /* E sta r u ti n a se lla m a d e sd e los e s ta d o s 0 . 1, 2, 4 y 5 al e n c o n t r a r u n p a r é n ­


tesis. * /
e lim ín e se el p a ré n te sis d e r e c h o d e la e n t r a d a
e m íta s e el d ia g n ó s tic o “ p a ré n te sis d e r e c h o n o e q u ilib r a d o "

e3: /* E sta r u t i n a se lla m a d e sd e los e s ta d o s I ó 6 c u a n d o e s p e ra n u n o p e r a d o r y


se e n c u e n t r a u n id o u n p a ré n te s is d e re c h o . */
in tr o d ú z c a s e -f e n la p ila y c ú b ra s e c o n el e s ta d o 4.
e m íta s e el d ia g n ó s tic o “ falta o p e r a d o r "

e4: /* E sta r u ti n a se lla m a d e s d e el e s ta d o 6 c u a n d o se e n c u e n t r a el fin d e la e n ­


tra d a . El e s ta d o 6 e s p e ra u n o p e r a d o r a u n p a ré n te s is d e r e c h o . */
in tro d ú z c a s e u n p a ré n te s is d e r e c h o e n la p ila y c ú b ra s e c o n el e s ta d o 9.
e m íta s e el d ia g n ó s tic o “ falta p a ré n te sis d e r e c h o "

P ila E ntrada M en sa je de Error y A c c ió n

0 id + )$
Oíd 3 + )$
0 £T + )$
0 £ l+ 4 )$
0 £ l+ 4 S " p a r é n te s is d e re c h o no e q u ilib ra d o "
e 2 e l i m in a el p a ré n te s is d e r e c h o
0 £ l+ 4 id 3 s " f a l t a o p eran d o "
el m e te id 3 e n la pila
0£1 + 4 £ 7 $
0£1 $

F ig . 4 .5 4 . M ov im ien to s d e análisis y de recuperación d e errores realizados


p o r el an alizad o r sintáctico LR.

C o n la e n t r a d a e r r ó n e a id + ) d e l e je m p lo 4 .3 2 , e n la fig u ra 4 .5 4 se m u e s tr a la se­
c u e n c ia d e c o n fig u ra c io n e s e n q u e h a e n t r a d o el a n a liz a d o r s in tá c tic o . □

4 .9 G E N E R A D O R E S D E A N A L I Z A D O R E S S I N T A C T I C O S

E sta secció n m u e s tr a c ó m o u tiliz a r u n g e n e r a d o r d e a n a liz a d o r e s s in tá c tic o s p a r a fa­


c ilita r la c o n s tru c c ió n d e la e ta p a inicial d e u n c o m p ila d o r . El g e n e r a d o r d e a n a li­
z a d o re s s in tá c tic o s L A L R Y A C C se u s a rá c o m o b a se d e e s ta e x p o s ic ió n , p u e s to q u e
im p la n ta m u c h o s d e los c o n c e p to s e s tu d ia d o s e n las d o s se c c io n e s a n te r io r e s y es
fácil d e e n c o rn a r. Y A C C sig n ifica “o t r o c o m p ila d o r d e c o m p ila d o r e s m á s " (del in ­
glés Yet A nother C om piler-C om piler ), lo q u e refleja la p o p u la r id a d d e lo s g e n e ra ­
d o re s d e a n a liz a d o re s s in tá c tic o s al p r in c ip io d e lo s a ñ o s s e te n ta , c u a n d o S. C . J o h n -
4 .9 G E N E R A D O R E S DE A N A L IZ A D O R E S SINTA CTIC O S 265

s o n c r e ó la p r im e r a v e rs ió n d e Y A C C . E ste g e n e r a d o r se e n c u e n t r a d is p o n ib le c o m o
u n a o r d e n d e l s is te m a U N I X , y se h a u ti liz a d o p a r a f a c ilita r la i m p l a n t a c i ó n d e
c ie n to s d e c o m p ila d o re s .

E l g e n e r a d o r d e a n a liz a d o r e s s in tá c tic o s Y A C C

Se p u e d e c o n s tr u ir u n t r a d u c t o r u tiliz a n d o Y A C C d e la f o r m a q u e se ilu stra e n la


figura 4 .5 5 . P r im e ro , se p r e p a r a u n a rc h iv o , p o r e je m p lo t r a d u c e . y , q u e c o n tie n e
u n a e sp ecificació n e n Y A C C del tr a d u c to r . L a o r d e n d e l s is te m a U N I X

y a c e tr a d u c e .y

tr a n s f o r m a al a r c h iv o t r a d u c e . y e n u n p r o g r a m a e sc rito e n C lla m a d o y . t a b . c
u s a n d o el m é to d o L A L R e s b o z a d o e n el a lg o ritm o 4 .1 3 . El p r o g r a m a y . t a b . c es
u n a re p re s e n ta c ió n d e u n a n a liz a d o r s in tá c tic o e s c rito e n C , j u n t o c o n o tr a s ru tin a s
e n C q u e el u s u a rio p u d o h a b e r p r e p a r a d o . L a ta b la d e a n á lis is s in tá c tic o L A L R se
c o m p r im e c o m o se d e s c rib ió e n la se c c ió n 4 .7 . A l c o m p ila r y . t a b . c j u n t o c o n la
b ib lio te c a l y q u e c o n tie n e el p r o g r a m a d e a n á lis is s in tá c tic o L R u tiliz a n d o la o rd e n

c c y . t a b . c - l y

se o b tie n e el p r o g r a m a o b je to d e s e a d o a . o u t q u e realiza la tr a d u c c ió n esp ecificad a


p o r el p r o g r a m a o rig in a l e n Y A C C 6. Si se n e c e s ita n o tr o s p ro c e d im ie n to s , se p u e d e n
c o m p ila r o c a r g a r c o n y . t a b . c , ig u a l q u e e n c u a lq u ie r p r o g r a m a e n C.

F ig. 4 .5 5 . C reación d e u n tra d u c to r de en tra d a/salid a c o n YACC.

U n p r o g r a m a f u e n te e n Y A C C tie n e tres p artes:

d e c la r a c io n e s
%%
r e g la s d e tr a d u c c ió n
%%
r u t i n a s en C d e ap o y o

El nom bre l y depende del sistema.


266 A N A LISIS SINTA CTIC O

E je m p lo 4 .5 1 . P a r a ilu s tr a r la p r e p a r a c i ó n d e u n p r o g r a m a f u e n te e n Y A C C , se
c o n s tr u irá u n a c a lc u la d o r a se n c illa d e e sc rito rio q u e le a u n a e x p re s ió n a r itm é tic a , la
ev alú e y d e s p u é s i m p r i m a s u v a lo r n u m é ric o . S e c o n s tr u ir á la c a lc u la d o r a d e escri­
to rio c o m e n z a n d o c o n la sig u ie n te g r a m á tic a p a r a e x p re s io n e s a ritm é tic a s :

E E + T\ T
T *F \F
F - » ( £ ) | d íg ito
El c o m p o n e n te léx ico d íg ito e s u n so lo d íg ito e n tr e 0 y 9. E n la fig u ra 4 .5 6 se m u e s ­
tra u n p r o g r a m a e n Y A C C p a r a la c a lc u la d o r a d e e s c rito rio d e r iv a d o d e esta
g ra m á tic a . □

L a parte de declaraciones. H a y d o s s e c c io n e s o p c io n a le s e n la p a rte d e d e c la ­


ra c io n e s d e u n p r o g r a m a e n Y A C C . E n la p r im e r a secció n , se p o n e n d e c la ra c io n e s
o r d in a r ia s e n C , d e lim ita d a s p o r %{ y %}. A q u í se s itú a n las d e c la ra c io n e s d e to d a s
la s te m p o r a le s u s a d a s p o r las reg las d e t r a d u c c ió n o lo s p r o c e d i m ie n t o s d e la se­
g u n d a y te rc e ra seccio n es. E n la fig u ra 4 .5 6 , esta se c c ió n só lo c o n tie n e la p ro p o s i­
c ió n in clu d e

#include <ctype.h>

q u e h a c e q u e el p r e p r o c e s a d o r d e C in c lu y a el a r c h iv o d e e n c a b e z a m ie n to e s tá n d a r
c c t y p e . h> q u e c o n tie n e el p re d ic a d o i s d i g i t .
T a m b ié n e n la p a rte d e d e c la ra c io n e s h a y d e c la r a c io n e s d e los c o m p o n e n te s lé­
xicos d e la g ra m á tic a . E n la figura 4 .5 6 , la p ro p o s ic ió n

%token DIGITO

d e c la ra q u e d í g i t o es u n c o m p o n e n t e léx ico (token). L o s c o m p o n e n te s léx ico s q u e


se d e c la ra n e n esta secció n se p u e d e n u tiliz a r d e s p u é s e n la s e g u n d a y te rc e ra p artes
d e la e sp ecificació n en Y A C C .

L a parte d e las reglas d e traducción. E n la p a r te d e la e sp ecificació n e n Y A C C


d e s p u é s del p r im e r p a r %% se p o n e n la s reglas d e tra d u c c ió n . C a d a regla c o n s ta d e
u n a p r o d u c c i ó n d e la g r a m á tic a y la a c c ió n s e m á n t ic a a s o c ia d a . U n c o n j u n t o d e
p ro d u c c io n e s q u e se h a n escrito

d a d o iz q u ie r d o > - » < a l t 1 > | < a lt 2 > | . . . | < a l t n >

e n Y A C C se escrib iría

•Ciado i z q u i e r d o > : <alt 1> { acción semántica 1}


■¡ <alt 2> { acción semántica 2}
• • •

¡ <alt n> { acción semántica n}


;
E n u n a p r o d u c c i ó n e n Y A C C , u n c a r á c te r s im p le e n t r e c o m il la d o 'c se c o n s id e r a
c o m o el s ím b o lo te r m in a l c , y las c a d e n a s sin c o m illa s d e letras y d íg ito s n o d e c la ­
ra d o s c o m o c o m p o n e n te s léxicos se c o n s id e ra n n o te rm in a le s . L os la d o s d e re c h o s
a lte rn a tiv o s se p u e d e n s e p a ra r c o n u n a b a r r a v ertical, y u n s ím b o lo d e p u n t o y c o m a
4.9 G E N E R A D O R E S DE A N A L IZ A D O R E S SINTA CTIC O S 267

%{
finclude <ctype.h>

%}
%token DIGITO

%%
línea e x p r '\n' { p r i n t f (" % d \ n ” , SI); }

expr expr + término í SS = SI + S3; }


término

término término V factor { $$ 51 • 53; }


factor

factor ( e x p r ') { $$ = $ 2 ; }
DIGITO

%%
yylexo {
i n t c;
c = g e t c h a r ();
if (i s d i g i t ( c ) ) {
yylval = c-'O';
return DIGIT?

}
r e t u r n c;

Fig. 4 .5 6 . Especificación en Y A C C d e u n a calculadora d e escritorio sencilla.

sigue a c a d a la d o iz q u ie r d o c o n s u s a lte r n a tiv a s y s u s a c c io n e s s e m á n tic a s . El p r im e r


la d o iz q u ie r d o se c o n s id e r a c o m o el s ím b o lo inicial.
U n a a c c ió n s e m á n tic a e n Y A C C es u n a s e c u e n c ia d e p ro p o s ic io n e s e n C . E n u n a
a c c ió n s e m á n tic a , el s ím b o lo $ $ se refiere al v a lo r del a tr ib u to a s o c ia d o c o n el n o
t e r m i n a l d e l la d o iz q u i e r d o , m i e n t r a s q u e $ i se re fie re a l v a lo r a s o c i a d o c o n el
i-é s im o s ím b o lo g r a m a tic a l (te r m in a l o n o te rm in a l) d e l la d o d e re c h o . L a a c c ió n se­
m á n tic a se re a liz a s ie m p r e q u e se r e d u z c a p o r la p ro d u c c ió n a s o c ia d a , p o r lo q u e
n o r m a l m e n t e la a c c ió n s e m á n tic a c a lc u la u n v alo r p a r a $ $ e n f u n c ió n d e lo s $i. En
la e sp ecificació n e n Y A C C las d o s p ro d u c c io n e s d e £ se h a n escrito

E -*E + T\T

y s u s a c c io n e s s e m á n tic a s aso ciad as.

expr : expr V término { $$ = $1 + $3; }


! término
268 ANALISIS SINTA CTIC O

O b sé rv e se q u e el n o te rm in a l t é r m i n o d e la p r im e r a p ro d u c c ió n es el te rc e r s ím ­
b o lo g ra m a tic a l d e l la d o d e r e c h o , m ie n tr a s q u e V es el se g u n d o . L a a c c ió n s e m á n ­
tica aso ciad a a la p r im e ra p ro d u c c ió n a ñ a d e el v alo r d e e x p r y d e t é r m i n o , y asigna
el r e s u lta d o c o m o el v a lo r d e l n o te r m in a l e x p r d e l la d o iz q u ie rd o . Se h a o m itid o
to t a lm e n te la a c c ió n s e m á n tic a p a r a la s e g u n d a p r o d u c c ió n , p u e s to q u e c o p ia r el v a­
lo r es la a c c ió n p o r o m is ió n p a r a p r o d u c c io n e s c o n u n so lo s ím b o lo g ra m a tic a l del
la d o d e re c h o . E n g en eral, { $$ = $ 1 ; } es la a c c ió n s e m á n tic a p o r o m is ió n .
O b sérv ese q u e se h a a ñ a d i d o u n a n u e v a p r o d u c c ió n inicial

línea : expr '\n' { p r i n t f (" % d \ n " , $1); }

a la e sp ecificació n e n Y A C C . E sta p ro d u c c ió n esta b le c e q u e u n a e n t r a d a p a r a la c a l­


c u la d o r a d e b o lsillo d e b e ser u n a e x p re s ió n s e g u id a d e u n c a r á c te r d e n u e v a línea.
L a a c c ió n s e m á n tic a a s o c ia d a c o n esta p r o d u c c ió n im p r im e el v a lo r d e c im a l d e la
e x p re s ió n s e g u id a d e u n c a r á c te r d e n u e v a línea.

L a parte de las rutinas d e apoyo en C. L a te rc e ra p a r te d e u n a e sp ecificació n en


Y A C C c o n s ta d e r u tin a s d e a p o y o e scritas e n C . Se d e b e p r o p o r c io n a r u n análisis
léx ico d e n o m b r e y y l e x ( ) . E n c a so n e c e s a rio se p u e d e n a g re g a r o tr o s p r o c e d im ie n ­
tos. c o m o r u tin a s d e re c u p e ra c ió n d e erro res.
El a n a l iz a d o r léxico y y l e x ( ) p r o d u c e p a re s f o r m a d o s p o r u n c o m p o n e n t e lé­
x ic o y su v a lo r d e a t r i b u t o a s o c ia d o . Si se d e v u e lv e u n c o m p o n e n t e lé x ic o c o m o
D IG ITO , el c o m p o n e n t e léx ico se d e b e d e c la r a r en la p r im e r a secció n d e la esp eci­
fic a c ió n e n Y A C C . El v a lo r d e l a t r i b u t o a s o c ia d o a u n c o m p o n e n t e léx ico se c o ­
m u n i c a al a n a liz a d o r s in tá c tic o m e d i a n t e u n a v a ria b le Y A C C y y l v a l d e fin id a p or.
E l a n a liz a d o r léx ico d e la fig u ra 4 .5 6 e s m u y to sc o . L ee c a ra c te re s d e e n t r a d a d e
u n o e n u n o , u tiliz a n d o la f u n c ió n g e t c h a r ( ) d e C. Si el c a r á c te r es u n d íg ito , el
v a lo r del d íg ito se a lm a c e n a e n la v a ria b le y y l v a l , y se d e v u e lv e el c o m p o n e n te
lé x ic o d í g i t o . D e lo c o n t r a r i o , s e d e v u e l v e el p r o p i o c a r á c t e r c o m o c o m p o ­
n e n t e lé x ico .

U s o d e Y A C C c o n g r a m á tic a s a m b ig u a s

A c o n t in u a c i ó n se m o d ific a la e sp ecificació n e n Y A C C d e f o r m a q u e la c a lc u la d o ra
d e e sc rito rio o b te n id a sea m á s ú til. P r im e r o se p e r m itir á a la c a lc u la d o r a d e escri­
to r io e v a lu a r u n a s e c u e n c ia d e e x p re s io n e s , u n a p o r lín ea. T a m b i é n se a d m iti r á n lí­
n e a s e n b la n c o e n t r e las ex p resio n es. E sto se h a c e c a m b i a n d o la p r im e r a regla p o r

líneas : líneas expr '\n' { p r i n t f ( " % g \ n " , $ 2 ); }


¡ líneas '\n'
i
i

0

E n Y A C C , u n a a lte r n a tiv a vacia, c o m o lo e s la te rc e ra lin ea, in d ic a €.


S e g u n d o , se a m p lia r á la clase d e e x p re s io n e s p a r a in c lu ir n ú m e r o s e n lu g a r d e
d íg ito s sim p le s y p a r a in c lu ir lo s o p e r a d o r e s a r itm é tic o s + , - ( ta n t o b in a rio s c o m o
u n a rio s), * y / . L a m a n e r a m á s fácil d e esp ecificar esta clase d e e x p re sio n e s e s utili­
z a r la g r a m á tic a a m b ig u a

E - + E + E \ E - E \ E * E \ E / E \ ( E ) \ - E \ n ú m ero
4.9 G E N E R A D O R E S D E A N A L IZ A D O R E S SINTA CTIC O S 269

%{
#include <ctype.c>
#include <stdio.h>
¿ d e f i n e Y Y S T Y P E d o u b l e /* se u s a e l t i p o d o u b l e p a r a la p i l a
d e Y A C C */

%}
%token NUMERO
%left V
%left V '/'
%right MENOSU

%%
líneas l í n e a s e x p r '\n' j p r i n t f ("%g\n".
l í n e a s '\n'
/* f */

expr expr V expr { $$ = $1 + $3; }


expr expr $$ = $1 - $3; }
expr V expr $$ = $1 * $3; }
e x p r '/' e x p r $$ = $1 / $3; }
( expr ) $$ - $2; ¡
expr %prec MENOSU { $$ = - $2;
NUMERO

%%
yylex() {
i n t c;
while ( ( c = getcharO ) == );
if ( (c = = ! ! (i s d i g i t ( c ) ) ) {
ungetc(c, st d i n ) ;
scanf("%lf", ¿yylval);
r e turn NUMERO;

}
r e t u r n c;

Fig. 4.57. Especificación e n Y A C C para u n a calculad o ra d e escritorio m á s avanzada.

E n la fig u ra 4 .5 7 se m u e s t r a la e sp ecificació n e n Y A C C o b te n id a .
C o m o la g r a m á tic a d e la e s p e c ific a c ió n e n Y A C C d e la fig u ra 4 .5 7 es a m b ig u a ,
el a lg o r i tm o L A L R g e n e r a r á c o n f lic to s e n las a c c io n e s d e l a n a l iz a d o r s in tá c tic o .
Y A C C in f o r m a r á d e l n ú m e r o d e c o n flic to s e n las a c c io n e s del a n álisis s in tá c tic o q u e
se g e n e r e n . S e p u e d e o b te n e r u n a d e s c r ip c ió n d e los c o n j u n t o s d e e le m e n to s y d e los
c o n flic to s e n las a c c io n e s d e a n á lis is s in tá c tic o in v o c a n d o a Y A C C c o n la o p c ió n
“ V. E sta o p c ió n g e n e ra u n a r c h iv o a d ic io n a l y . o u t p u t q u e c o n tie n e lo s n ú c le o s de
270 ANALISIS SIN TA C TIC O

los c o n j u n t o s d e e l e m e n t o s e n c o n t r a d o s p o r el a n a l i z a d o r s in tá c tic o , u n a d e s c rip ­


c ió n d e lo s c o n flic to s e n las a c c io n e s del a n álisis g e n e r a d o s p o r el a lg o ritm o L A L R
y u n a r e p re s e n ta c ió n legible d e la ta b la d e a n á lis is s in tá c tic o L R q u e m u e s tr a c ó m o
se reso lv iero n los co n flicto s d e las a c c io n e s d e l a n álisis sintáctico . S ie m p re q u e Y A C C
in f o r m a d e q u e se h a n e n c o n t r a d o c o n flic to s e n la s a c c io n e s d e l a n álisis s in tá c tic o ,
es c o n v e n ie n te c r e a r y c o n s u lt a r el a r c h iv o y . o u t p u t p a r a s a b e r p o r q u é se g en e­
r a r o n los c o n flic to s e n las a c c io n e s d e l a n álisis s in tá c tic o y si se re so lv ie ro n c o rre c ­
ta m e n te .
A m e n o s q u e se le o r d e n e lo c o n tr a r io , Y A C C re so lv e rá to d o s los c o n flic to s en
las a c c io n e s d e l a n álisis s in tá c tic o u tiliz a n d o las d o s reg las siguientes:

1. U n c o n f li c to d e r e d u c c i ó n / r e d u c c i ó n se re s u e lv e e lig ie n d o la p r o d u c c i ó n e n
c o n flic to q u e se h a y a lista d o p r im e r o e n la esp ecificació n e n Y A C C . A sí q u e
p a r a lo g rar la re s o lu c ió n c o r r e c ta e n la g r a m á tic a d e tip o g ra fía (4.2 5), b a s ta c o n
lista r la p ro d u c c ió n (1 ) a n te s q u e la p r o d u c c ió n (3).

2. U n c o n f lic to d e d e s p la z a m ie n to /r e d u c c ió n se re s u e lv e e n f a v o r d e l d e s p la z a ­
m ie n to . E sta regla resu elv e c o r r e c ta m e n te el c o n flic to d e d e s p la z a m ie n to /r e d u c ­
c ió n q u e se d e riv a d e l e ls e a m b ig u o .

C o m o e s ta s reglas q u e se sig u en p o r o m is ió n , n o s ie m p r e reflejan lo q u e q u ie re


el e s c rito r d e l c o m p ila d o r , Y A C C p r o p o r c io n a u n m e c a n is m o g e n e ra l p a r a reso lver
los c o n flic to s d e d e s p la z a m ie n to /r e d u c c ió n . E n la p a rte d e d e c la ra c io n e s, se p u e d e n
a s ig n a r p re c e d e n c ia s y a so c ia tiv id a d e s a los te rm in a le s . L a d e c la ra c ió n

%left V

h a c e q u e + y - te n g a n la m is m a p re c e d e n c ia y q u e se a n a so c ia tiv o s p o r la iz q u ie rd a .
S e p u e d e d e c la r a r q u e u n o p e r a d o r es a s o c ia tiv o p o r la d e r e c h a d ic ie n d o

% rig h t

y se p u e d e o b lig a r a u n o p e r a d o r a ser u n o p e r a d o r b in a r io n o a s o c ia tiv o ( p o r e je m ­


plo . d o s c aso s del o p e r a d o r n o se p u e d e n c o m b in a r e n a b s o lu to ) d ic ie n d o

%nonassoc V

A los c o m p o n e n te s léx ico s se les d a n p re c e d e n c ia s e n el o r d e n e n q u e a p a re c e n


e n la p a r te d e d e c la ra c io n e s, los m á s b a jo s los p rim e ro s. L o s c o m p o n e n te s léx ico s de
la m is m a d e c la ra c ió n tie n e n la m is m a p re c e d e n c ia . Así, la d e c la ra c ió n

% r i g h t MENOSU

d e la fig u ra 4 .5 7 d a al c o m p o n e n te léxico m enosu u n nivel d e p re c e d e n c ia m a y o r


q u e el d e los c in c o te rm in a le s a n te rio re s .
Y A C C resu elv e lo s c o n flic to s d e d e s p la z a m ie n to /r e d u c c ió n a s o c ia n d o u n a p re ­
c e d e n c ia y a s o c ia tiv id a d a c a d a p r o d u c c ió n im p lic a d a e n u n c o n flic to , asi c o m o a
c a d a te rm in a l im p lic a d o e n u n c o n flic to . Si d e b e eleg ir e n tr e d e s p la z a r el s ím b o lo d e
e n tr a d a a y re d u c ir p o r la p ro d u c c ió n A - > a , Y A C C re d u c e si la p re c e d e n c ia d e la
p ro d u c c ió n es m a y o r q u e la d e a o si las p re c e d e n c ia s s o n las m is m a s y la a so c ia ti­
v id a d d e la p ro d u c c ió n es l e f t . D e lo c o n tr a r io , se elige la a c c ió n d e d esp lazar.
4.9 G E N E R A D O R E S D E A N A L IZ A D O R E S SINTA CTIC O S 271

G e n e r a lm e n te , la p re c e d e n c ia d e u n a p ro d u c c ió n se c o n s id e r a igual a la d e su
te rm in a l s itu a d o m á s a la d e re c h a . E n la m a y o r ía d e lo s casos, esta es la d e c isió n
sen sata. P o r e je m p lo , d a d a s las p ro d u c c io n e s

E - * E + E\ E * E

es p referib le re d u c ir p o r E E + E c o n s ím b o lo d e a n tic ip a c ió n + , p o r q u e -f en
el la d o d e r e c h o tie n e la m i s m a p re c e d e n c ia q u e el s ím b o lo d e a n tic ip a c ió n , p e r o es
a s o c ia tiv o p o r la iz q u ie rd a . C o n el s ím b o lo d e a n tic ip a c ió n *, es p re fe rib le d e sp la z a r,
p o r q u e el s ím b o lo d e a n tic ip a c ió n tie n e m a y o r p re c e d e n c ia q u e el + e n la p r o d u c ­
ción.
E n las s itu a c io n e s e n q u e el te r m in a l s itu a d o m á s a la d e r e c h a n o p r o p o r c io n e la
p r e c e d e n c ia a d e c u a d a a u n a p r o d u c c i ó n , s e p u e d e f o r z a r u n a p r e c e d e n c i a a ñ a ­
d ie n d o a la p ro d u c c ió n la e tiq u e ta

% p rec < te r m in a l >

E n to n c e s , la p re c e d e n c ia y a s o c ia tiv id a d d e la p ro d u c c ió n serán la s m is m a s q u e las


del te r m in a l, q u e se d e fin e s e g u r a m e n te e n la secció n d e d e c la ra c io n e s. Y A C C n o
in f o r m a d e los c o n flic to s d e d e s p la z a m ie n to /r e d u c c ió n q u e se re s u e lv e n u tiliz a n d o
este m e c a n is m o d e p re c e d e n c ia y aso c ia tiv id a d .
E s te “ t e r m i n a r ' p u e d e s e r u n m a r c a d o r , c o m o m enosu d e la fig u ra 4 .5 7 ; e s t e t e r ­
m i n a l n o e s d e v u e l t o p o r el a n a l i z a d o r l é x ic o , s i n o q u e s e d e c l a r a t a n s ó l o p a r a d e ­
f i n i r u n a p r e c e d e n c i a p a r a u n a p r o d u c c i ó n . E n la f i g u r a 4 .5 7 , la d e c l a r a c i ó n

right MENOSU

asig n a al c o m p o n e n te léxico u n a p re c e d e n c ia s u p e r io r a * y / . E n la p a r te d e la s re­


glas d e tra d u c c ió n , la e tiq u e ta

%prec MENOSU

al fin al d e la p ro d u c c ió n

expr : expr

h ace q u e el o p e r a d o r m e n o s u n a r io d e esta p ro d u c c ió n te n g a m a y o r p re c e d e n c ia q u e
c u a lq u ie r o t r o o p e ra d o r.

C r e a c ió n d e a n a liz a d o r e s lé x ic o s p ara Y A C C c o n L E X

L E X se d is e ñ ó p a r a p r o d u c i r a n a l iz a d o r e s léx ico s p a r a u tiliz a r c o n Y A C C . L a b i­


b lio te c a 1 1 d e L E X p r o p o r c io n a r á u n p r o g r a m a m a n e j a d o r lla m a d o y y l e x ( ), q u e
es el n o m b r e q u e Y A C C e x ig e p a r a su a n a l i z a d o r lé x ico . Si se u s a L E X p a r a p r o ­
d u c ir el a n a liz a d o r léxico, se s u s titu y e la r u ti n a y y l e x ( ) e n la te rc e ra p a rte d e la
esp ecificació n e n Y A C C p o r la p ro p o rc ió n

finclude "lex.yy.c"

y c a d a a c c ió n d e L E X d e v u e lv e u n te rm in a l c o n o c id o p o r Y A C C . U tiliz a n d o la p ro ­
p o sic ió n # i n c l u d e " l e x . y y . c " , el p r o g r a m a y y l e x tie n e acce so a los n o m b r e s
d e los c o m p o n e n te s léx ico s d e Y A C C , p u e s to q u e el a rc h iv o d e sa lid a d e L E X se
c o m p ila c o m o p a rte d e l a r c h iv o d e sa lid a d e Y A C C y . t a b . c .
272 A N A LISIS SINTA CTIC O

C o n el s is te m a U N I X , si la esp ecificació n e n L E X e s tá e n el a r c h iv o p r i m e r o . 1
y la e sp ecificació n e n Y A C C está e n s e g u n d o . y , se p u e d e d e c ir

lex primero.1
yace segundo.y
cc y.tab.c -ly -11

p a r a o b te n e r el t r a d u c t o r d esead o .
S e p u e d e u tiliz a r la e sp ecificació n e n L E X d e la fig u ra 4 .5 8 e n lu g a r d e l a n a li­
z a d o r léx ico d e la fig u ra 4 .5 7 . El ú lt im o p a t r ó n e s \ n i . p u e s to q u e . e n L E X c o n ­
c u e r d a c o n c u a l q u ie r c a rá c te r, e x c e p to c o n el d e n u e v a línea.

R e c u p e ra c ió n d e e r r o r e s e n Y A C C

E n Y A C C se p u e d e r e a liz a r la r e c u p e r a c ió n d e e r r o r e s u s a n d o u n a f o r m a d e p r o ­
d u c c io n e s d e e rro r. P r im e ro , el u s u a rio d e c id e q u é n o te rm in a le s “p r in c ip a le s " te n ­
d r á n re c u p e ra c ió n d e e rro re s a s o c ia d o s a ellos. L as e le c c io n e s típ ic a s s o n alg ú n sub-
c o n j u n t o d e lo s n o t e r m i n a l e s q u e g e n e r a n e x p r e s io n e s , p r o p o s ic i o n e s , b lo q u e s
y p r o c e d im ie n to s . E n to n c e s , el u s u a r io a ñ a d e a la g r a m á tic a p r o d u c c i o n e s d e e r r o r
d e la f o r m a A e r r o r a , d o n d e A e s u n n o t e r m i n a l p r in c ip a l y a es u n a c a d e n a
d e s ím b o lo s g ra m a tic a le s , q u iz á la c a d e n a v a c ía : e r r o r es u n a p a la b r a re s e r v a d a d e
Y A C C . Y A C C g e n e r a r á u n a n a l i z a d o r s in tá c tic o a p a r ti r d e d ic h a e s p e c ific a c ió n ,
c o n s i d e r a n d o las p r o d u c c i o n e s d e e r r o r c o m o p r o d u c c i o n e s n o r m a le s .

número [0-9]+\.?¡[0-9)*\.[0-9J+
%%
[1 { /* salta los espacios en blanco */ }
{núme r o } { s s c a n f ( y y t e x t , "%lf", í y y l v a l ) ;
return NUMERO; }
\n¡. { r e t u r n y y t e x t (01? }

Fig. 4 .5 8 . Especificación en L E X para y y l e x ( ) de la figura 4.57.

S in e m b a rg o , c u a n d o el a n a liz a d o r s in tá c tic o g e n e r a d o p o r Y A C C e n c u e n t r a u n
e rro r, tr a ta a los e s ta d o s c u y o s c o n j u n to s d e e le m e n to s c o n t e n g a n p r o d u c c io n e s d e
e r r o r d e m a n e r a esp ecial. A l e n c o n t r a r u n e rro r, Y A C C e x tra e s ím b o lo s d e s u pila
h a s ta q u e e n c u e n t r e el e s ta d o m á s a lto c u y o c o n j u n t o d e e le m e n to s s u b y a c e n te in ­
c lu y a u n e le m e n to d e la f o r m a A - > e rro r a . E n to n c e s , el a n a liz a d o r “d e s p la z a ” u n
c o m p o n e n t e léxico ficticio e rro r a la pila, c o m o si h u b ie r a v isto el c o m p o n e n t e lé­
xico error e n s u e n tra d a .
C u a n d o a es e . se p r o d u c e i n m e d i a t a m e n t e u n a re d u c c ió n a A y se in v o c a la
a c c ió n s e m á n tic a a s o c ia d a a la p r o d u c c ió n A - » e rro r ( q u e p u e d e s e r u n a r u t i n a d e
re c u p e ra c ió n d e e rro re s esp ecificad a p o r el u s u a rio ). D e sp u é s, el a n a liz a d o r s in tá c ­
tic o e lim in a s ím b o lo s d e e n t r a d a h a s ta q u e e n c u e n t r a u n s ím b o lo d e e n t r a d a c o n el
q u e p u e d a p ro s e g u ir el a n á lis is s in tá c tic o n o r m a l.
4.9 G E N E R A D O R E S D E A N A L IZ A D O R E S SINTA CTIC O S 273

Si a n o es vacía, Y A C C s a lla la e n t r a d a b u s c a n d o u n a s u b e a d e n a q u e se p u e d a
r e d u c ir a a. Si a c o n s ta s o la m e n te d e te rm in a le s , e n to n c e s b u s c a e s ta c a d e n a d e te r ­
m in a le s e n la e n tr a d a , y los “r e d u c e ” d e s p la z á n d o lo s a la pila. L leg ad o a este p u n t o ,
el a n a liz a d o r te n d r á e rro r a e n la c i m a d e s u pila. E n to n c e s , el a n a l iz a d o r re d u c irá
e rro r a a A , y p r o s e g u irá el a n álisis s in tá c tic o n o r m a l.
P o r e je m p lo , u n a p r o d u c c ió n d e e r r o r d e la fo rm a

p ro p - * error ;

e s p e c ific a ría a l a n a l i z a d o r q u e d e b e s a lt a r h a s ta d e s p u é s d e l s ig u ie n te s ím b o lo de
p u n t o y c o m a al v e r u n e rro r, y s u p o n e r q u e se h a e n c o n t r a d o u n a p ro p o s ic ió n . La
r u ti n a s e m á n tic a p a r a esta p r o d u c c ió n d e e r r o r n o n e c e s ita ría m a n i p u l a r la e n tr a d a ,
s in o q u e p o d r ía g e n e ra r u n m e n s a je d e d ia g n ó s tic o y le v a n ta r u n a b a n d e r a p a r a in ­
h ib ir la g e n e ra c ió n d e c ó d ig o o b je to , p o r e je m p lo .

%{
finclude <ctype.c>
#include <stdio.h>
¿define YYSTYPE double /* se u s a el t i p o d o u b l e p a r a la p i l a
d e Y A C C */

%}
%token NUMERO
%left V
%left V '/'
%right MENOSU

%%
líneas l í n e a s e x p r '\n' { p r i n t f (" % g \ n " , $2); }
l í n e a s '\n'
/* vacía */
e r r o r '\n' { y y e r r o r (" r e i n t r o d u z c a la ú l t i m a
línea:"); yyerrok; }

expr expr V expr { $$ = $1 + $3; }


expr expr { $$ - $1 - $3, )
expr V expr { $$ = $1 * $3; }
e x p r '/' e x p r { $$ = $1 / $3; }
'(' e x p r Y { $$ = $2;* }
expr %prec MENOSU { $$ - - $2, }
NUMERO

%%
¿include "lex.yy.c"

Fig. 4.59. C alcu lad o ra d e escritorio c o n recuperación d e errores.


274 ANALISIS SIN TA CTIC O

E je m p lo 4 .5 2 . E n la fig u ra 4 .5 9 se m u e s tr a la C alcu lad o ra d e e s c rito rio e n Y A C C d e


la fig u ra 4 .5 7 c o n la p ro d u c c ió n d e e r r o r

líneas : error '\n'

E sta p ro d u c c ió n d e e r r o r h a c e q u e la c a lc u la d o r a d e e s c rito rio s u s p e n d a el análisis


s in tá c tic o n o r m a l c u a n d o se e n c u e n t r a u n e r r o r d e s in ta x is e n u n a lín e a d e e n tra d a .
Al e n c o n t r a r e l e r r o r , el a n a l i z a d o r s in tá c tic o d e la c a l c u la d o r a d e e s c r it o r io c o ­
m ie n z a a e x tra e r s ím b o lo s d e su p ila h a s ta q u e e n c u e n t r a u n e s ta d o q u e te n g a u n a
a c c ió n d e d e s p la z a r c o n el c o m p o n e n te léx ico erro r. D ic h o e s ta d o e s el 0 (e n este
e je m p lo , e s el ú n ic o d e d ic h o s estad o s), p u e s to q u e sus e le m e n to s in c lu y e

lineas - * er ro r ' \ n '

A sim is m o , el e s ta d o 0 se e n c u e n t r a s ie m p re e n el f o n d o d e la p ila . E l a n a liz a d o r s in ­


tá c tic o d e sp la z a a l c o m p o n e n te léxico error a la pila, y d e s p u é s se d is p o n e a s a lta r
la e n t r a d a h a s ta q u e e n c u e n tr e u n c a r á c te r d e n u e v a lín ea. L leg ad o a este p u n to , el
a n a liz a d o r d e s p la z a el c a r á c te r d e n u e v a lín e a a la pila, re d u c e er ro r ' \ n ' a líneas, y
e m ite el m e n s a je d ia g n ó s tic o ‘T e in tr o d u c ir la ú lt im a lín e a :”. L a r u ti n a esp ecial d e
Y A C C y y e r r o k d e v u e l v e el a n a l i z a d o r s i n t á c t i c o a s u m o d o h a b i t u a l d e o p e ­
ra c ió n . □

E JE R C IC IO S

4.1 C o n s id é re s e la g ra m á tic a

S —»(L )|fl
L -* L , S \S

a) ¿ C u á le s s o n los te rm in a le s , n o te rm in a le s y el s ím b o lo inicial?
b) E n c u é n tr e n s e á rb o le s d e a n álisis s in tá c tic o p a r a las sig u ie n tes frases:
i) t e a)
ii) t e (a , a))
iü ) t e ( t e a \ (£7, a)))
c ) C o n s trú y a s e u n a d e riv a c ió n p o r la iz q u ie r d a p a r a c a d a u n a d e las frases
d e b).
d ) C o n s tr ú y a s e u n a d e r iv a c ió n p o r la d e r e c h a p a r a c a d a u n a d e las frases
d e b).
*e) ¿ Q u é le n g u a je g e n e ra esta g ra m á tic a ?

4 .2 C o n s id é re s e la g ra m á tic a

S aSbS | bSaS | e
a ) D e m u é s tre s e q u e e s ta g r a m á tic a e s a m b ig u a c o n s tr u y e n d o d o s d e riv a c io ­
n e s p o r la iz q u ie r d a d is tin ta s p a r a la frase abab.
b ) C o n s tr ú y a n s e las d e riv a c io n e s p o r la d e r e c h a c o r r e s p o n d ie n te a abab.
c ) C o n s tr ú y a n s e los á rb o le s d e a n á lis is s in tá c tic o c o rr e s p o n d ie n te s a abab.
*d) ¿ Q u é len g u aje g e n e ra e s ta g ra m á tic a ?
E JE R C IC IO S 275

4 .3 C o n s id é re s e la g ra m á tic a

b exp r - > b exp r o r b term | bíerm


b ie rm -► b term an d bfactor \ bfactor
bfactor —* n o t bfactor | ( b exp r ) | tr u e | fa ls e

a ) C o n s tru y a s e u n árb o l d e análisis sin tá ctic o p a r a la frase n o t (tr u e o r fa lse ).


b) D e m u é s tre s e q u e e s ta g r a m á tic a g e n e ra to d a s las e x p re s io n e s b o o le a n a s.
* c ) ¿E s a m b ig u a esta g r a m á tic a ? ¿ P o r q u é ?

4 .4 C o n s id é re s e la g r a m á tic a / ? - » / ? ' | ' / ? | / ? / ? i / ? * | ( / ? ) | f l | ¿


O b sé rv e se q u e la p r im e r a b a r r a v e rtic a l es el s ím b o lo “o ” , n o u n s e p a r a d o r
e n tr e alte rn a tiv a s.
a ) D e m u é s tr e s e q u e e s ta g r a m á tic a g e n e r a to d a s las e x p r e s io n e s re g u la re s
so b re los s ím b o lo s a y b.
b ) D e m u é s tre s e q u e e s ta g r a m á tic a e s a m b ig u a .
*c) C o n s tr u y a s e u n a g r a m á tic a n o a m b ig u a e q u iv a le n te q u e d é a los o p e r a ­
d o r e s * c o n c a te n a c ió n y | la s p re c e d e n c ia s y a s o c ia tiv id a d e s d e fin id a s en
la secció n 3.3
d ) C o n s tr u y a s e u n á rb o l d e a n á lis is s in tá c tic o e n a m b a s g r a m á tic a s p a r a la
frase a | b+c.

4 .5 S e p r o p o n e la sig u ie n te g r a m á tic a p a r a las p ro p o s ic io n e s if-t h e n -e ls e p a r a re­


m e d ia r la a m b ig ü e d a d d e l e ls e

prop —> i f e x p r th e n prop


| p ro p -em p a reja d a
p ro p -em p a reja d a - » i f e x p r th e n p ro p -e m p a reja d a e ls e prop
| o tra s

D e m u é s tre s e q u e esta g r a m á tic a sigue s ie n d o a m b ig u a .

* 4 .6 In té n te s e d is e ñ a r u n a g r a m á tic a p a r a c a d a u n o d e los sig u ie n te s lenguajes.


¿ Q u é le n g u a je s s o n reg u lares?
a ) E l c o n j u n t o d e to d a s las c a d e n a s d e s ím b o lo s 0 y 1 tales q u e t o d o 0 v a
seg u id o in m e d ia t a m e n t e d e al m e n o s u n 1.
b ) L a s c a d e n a s e n s ím b o lo s 0 y 1c o n u n n ú m e r o ig u a l d e 0 y 1.
c ) L as c a d e n a s d e s ím b o lo s 0 y 1 c o n u n n ú m e r o d is tin to d e s ím b o lo s 0 y 1.
d ) L a s c a d e n a s d e s ím b o lo s 0 y 1e n las q u e 011 n o a p a re c e c o m o u n a s u b ­
eadena.
e) L as c a d e n a s d e s ím b o lo s 0 y 1d e la f o r m a x y , d o n d e x * y.
0 L a s c a d e n a s d e s ím b o lo s 0 y 1d e la f o r m a x x .

4 .7 C o n s tru y a s e u n a g r a m á tic a p a r a las e x p re s io n e s d e c a d a u n o d e lo s s ig u ie n ­


tes lenguajes:
a) P ascal
b) C
c) F O R T R A N 77
d) A da
e) L IS P
276 ANALISIS SIN T A C T IC O

4 .8 C o n s tr u y a n s e g r a m á tic a s n o a m b ig u a s p a r a las p ro p o s ic io n e s d e c a d a u n o
d e los le n g u a je s d e l e je rc ic io 4.7.

4 .9 S e p u e d e n u s a r o p e r a d o r e s del ti p o d e las e x p re sio n e s reg u la re s e n lo s lados


d e re c h o s d e las p ro d u c c io n e s g ra m a tic a le s. Se p u e d e n u tiliz a r los co rc h e te s
p a r a in d ic a r u n a p a rte o p c io n a l d e u n a p ro d u c c ió n . P o r e je m p lo , se p u e d e
escribir

prop - » i f expr th e n prop ( e l s e prop }

p a r a i n d i c a r u n a p r o p o s ic i ó n e l s e o p c i o n a l. E n g e n e r a l, A -► a [ p ] y es
e q u iv a le n te a las d o s p ro d u c c io n e s A —►a P y y A —> ay .

L a s llaves se p u e d e n u s a r p a r a in d ic a r u n a frase q u e se p u e d e r e p e tir c e r o o


m á s veces. P o r e je m p lo ,

prop —* b e g in prop { ; prop } en d

in d ic a u n a lista d e p ro p o s ic io n e s prop s e p a r a d a s p o r s ím b o lo s d e p u n t o y
c o m a e n c e r r a d a e n tr e b eg in y en d . E n g en eral, A - * a { p } y es e q u iv a le n te a

A - > a B y y £ - > p # | c.

E n u n s e n tid o , [ P ] r e p re s e n ta a la e x p re s ió n re g u la r p | c y { p } re p re s e n ta
a P*. Se p u e d e n g e n e ra liz a r estas n o ta c io n e s p a r a a d m i t i r c u a lq u ie r e x p re ­
sió n re g u la r d e los s ím b o lo s g r a m a tic a le s d e los la d o s d e r e c h o s d e las p r o ­
d u c c io n e s.
a) M o d ifiq ú e s e la p ro d u c c ió n d e prop a n t e r i o r d e m o d o q u e a p a r e z c a e n el
la d o d e r e c h o u n a lis ta d e p ro p t e r m i n a d a c o n u n s í m b o l o d e p u n t o y
com a.
b) D ése u n c o n j u n t o d e p r o d u c c io n e s in d e p e n d ie n te s d e l c o n te x to q u e g e­
n e re n el m is m o c o n j u n t o d e c a d e n a s q u e A - > B *a{C \ D).
c) M u é s tre s e c ó m o s u s titu ir c u a lq u ie r p ro d u c c ió n A - » r, d o n d e r e s u n a ex ­
p re s ió n reg u la r, p o r u n a serie fin ita d e p ro d u c c io n e s in d e p e n d ie n te s del
c o n te x to .

4 .1 0 L a sig u ie n te g r a m á tic a g e n e r a d e c la ra c io n e s p a r a u n id e n tif ic a d o r sim ple:

prop —* d e c la r e id lista opciones


lisia opciones - * lista opciones opción | €
opción —> m o d o \ escala \ precisión \ base
m odo —» r e a l | c o m p le x
escala fix e d | flo a tin g
precisión - > s in g le | d o u b le
base -> b in a ry | d ecim a l

a) D e m u é s tr e s e c ó m o se p u e d e g e n e r a liz a r esta g r a m á t i c a p a r a a d m i t i r n
o p c io n e s A„ 1 < i < n, c a d a u n a d e las c u a le s p u e d e s e r a, o b¡.
b) L a g r a m á tic a a n t e r i o r a d m ite d e c la ra c io n e s r e d u n d a n te s o c o n tr a d ic to ­
rias. c o m o

declare zap real fixed real floating


EJERCICIOS 277

S e p o d r ía in sistir e n q u e la s in ta x is d e l le n g u a je p r o h íb e tales d e c la ra c io ­
nes. D e ese m o d o q u e d a u n n ú m e r o f in ito d e s e c u e n c ia s d e c o m p o n e n te s
léxicos s in tá c tic a m e n te c o rre c to s. O b v ia m e n te , e s ta s d e c la ra c io n e s lega­
les f o r m a n u n le n g u a je in d e p e n d ie n te del c o n te x to , e n re a lid a d u n c o n ­
j u n t o re g u la r. E s c ríb a se u n a g r a m á tic a p a r a d e c la r a c io n e s c o n n o p c io ­
nes, d o n d e c a d a o p c ió n a p a r e z c a a lo s u m o u n a vez.
**c) D e m u é s tre s e q u e u n a g r a m á tic a p a r a el a p a ñ a d o b) d e b e te n e r al m e n o s
2" sím b o lo s.
d ) ¿ Q u é in d ic a c) s o b re la p o s ib ilid a d d e fo rz a r la n o r e d u n d a n c ia y n o c o n ­
tr a d i c c ió n e n t r e o p c io n e s e n la s d e c la r a c io n e s a tr a v é s d e la d e f in ic ió n
s in tá c tic a d e u n len g u aje?

4.11 a) E lim ín ese la recu rsiv id ad p o r la iz q u ie rd a d e la g ra m á tic a d e l ejercicio 4 . 1.


b) C o n s tr ú y a s e u n a n a l iz a d o r s in tá c tic o p re d ic tiv o p a r a la g r a m á tic a d e a).
M u é s tr e s e el c o m p o r t a m i e n t o d e l a n a l i z a d o r c o n la s fra s e s del
e je rc ic io 4.1 b).

4 .1 2 C o n s tr ú y a s e u n a n a l iz a d o r s in tá c tic o p o r d e s c e n s o re c u rs iv o c o n re tro c e so
p a r a la g ra m á tic a d e l e jercicio 4 .2 . ¿Se p u e d e c o n s tr u i r u n a n a liz a d o r s in tá c ­
tic o p re d ic tiv o p a r a esta g ra m á tic a ?

4 .1 3 L a g ra m á tic a

S a S a | aa

g e n e ra to d a s las c a d e n a s d e lo n g itu d p a r d e s ím b o lo s a e x c e p to la c a d e n a
vacía.
a ) C o n s tr ú y a s e u n a n a l i z a d o r s in tá c tic o p o r d e s c e n s o r e c u r s iv o c o n r e tr o ­
ceso p a r a esta g r a m á tic a q u e i n t e n te la a lte r n a tiv a a S a a n te s q u e aa. D e­
m u é s tre s e q u e el p r o c e d im ie n to p a r a S f u n c io n a c o n 2 , 4 u 8 a, p e r o falla
c o n 6 a.
*b) ¿ Q u é le n g u a je r e c o n o c e este a n a liz a d o r sin tá c tic o ?

4 .1 4 C o n s t r ú y a s e u n a n a l i z a d o r s i n t á c t i c o p r e d ic tiv o p a r a la g r a m á t i c a d e l
e je rc ic io 4 .3 .

4 .1 5 C o n s tr ú y a s e u n a n a liz a d o r s in tá c tic o p re d ic tiv o a p a r ti r d e la g r a m á tic a n o


a m b ig u a p a r a e x p re s io n e s reg u la re s del e jercicio 4.4.

* 4 .1 6 D e m u é s tr e s e q u e n i n g u n a g r a m á t i c a r e c u r s iv a p o r la i z q u i e r d a p u e d e
s e r LL (1).

* 4 .1 7 D e m u é s tr e s e q u e n in g u n a g r a m á tic a L L (1 ) p u e d e s e r a m b ig u a .

4 .1 8 D e m u é s tr e s e q u e u n a g r a m á tic a s in p ro d u c c io n e s € d o n d e c a d a a lte r n a tiv a


c o m ie n c e c o n u n te r m in a l d if e r e n te s ie m p re e s LL (1).

4 .1 9 U n s ím b o lo g ra m a tic a l X e s in ú til si n o h a y n in g u n a d e riv a c ió n d e la fo rm a


5 => w X y => x y z . E s d e c ir, X n u n c a p u e d e a p a r e c e r e n la d e r iv a c ió n d e a l­
g u n a frase.
*a) E scríb ase u n a lg o r itm o p a r a e l i m i n a r d e u n a g r a m á tic a to d a s las p r o d u c ­
c io n e s q u e c o n te n g a n s ím b o lo s in ú tiles.
278 ANALISIS SIN TA C TIC O

b) A p liq ú e se este a lg o r itm o a la g ra m á tic a

S ->0\A
A-+AB
tí - > I

4 .2 0 Se d ic e q u e u n a g r a m á tic a está lib re d e p ro d u c c io n e s € si n o tie n e n in g u n a


p ro d u c c ió n € o si h a y e x a c ta m e n te u n a p ro d u c c ió n « 5 - * e y d e s p u é s el
s ím b o lo inicial S n o a p a re c e e n el la d o d e r e c h o d e n in g u n a p ro d u c c ió n .
a) E sc ríb a se u n a lg o r i tm o p a r a c o n v e r t i r u n a g r a m á tic a d a d a e n u n a g r a ­
m á tic a e q u iv a le n te lib re d e p ro d u c c io n e s e . Sugerencia : P r im e r o d e te r ­
m ín e n s e to d o s los n o te rm in a le s q u e p u e d e n g e n e ra r la c a d e n a vacía.
b ) A p liq ú e se este a lg o r itm o a la g r a m á tic a del e jercicio 4.2.

4.21 U n a p ro d u c c ió n sim p le es la q u e tie n e u n so lo n o te rm in a l p o r la d o d erech o .


a ) E scríb ase u n a lg o ritm o p a r a c o n v e r tir u n a g ra m á tic a e n u n a g ra m á tic a
e q u iv a le n te s in p ro d u c c io n e s sim ples.
b ) A p liq ú e se el a lg o ritm o a la g ra m á tic a d e e x p re s io n e s (4.10).

4 .2 2 U n a g ra m á tic a sin ciclos n o tie n e d e riv a c io n e s d e la f o r m a A A p a r a n in ­


g ú n n o te rm in a l A.
a) E scríb ase u n a lg o ritm o p a r a c o n v e r tir u n a g ra m á tic a e n u n a g ra m á tic a
e q u iv a le n te sin ciclos.
b) A p liq ú ese el a lg o ritm o a la g ra m á tic a

S S S I (S ) I € .
4 .2 3 a) U tiliz a n d o la g r a m á tic a del e jercicio 4 .1 , c o n s tr u y a s e u n a d e riv a c ió n p o r
la d e r e c h a p a r a ( a , (a . a )) y m u é s tre s e el m a n g o d e c a d a f o r m a d e frase
d e re c h a .
b) M u é s tre n s e los p a so s d e u n a n a liz a d o r s in tá c tic o p o r d e s p la z a m ie n to y
re d u c c ió n c o rr e s p o n d ie n te s a la d e r iv a c ió n p o r la d e r e c h a d e a).
c) M u é s tre n s e los p a so s d e la c o n s tr u c c ió n a s c e n d e n te d e u n á rb o l d e a n á ­
lisis s in tá c tic o d u r a n te el a n á lis is p o r d e s p la z a m ie n to y re d u c c ió n d e b).

4 .2 4 E n la figura 4 .6 0 se m u e s tr a n las re la c io n e s d e p re c e d e n c ia d e o p e ra d o re s
p a r a la g r a m á tic a d e l e jercicio 4 .1 . U tiliz a n d o estas re la c io n e s d e p r e c e d e n ­
cia, a n a líc e n s e las frases del e jercicio 4.1 b).

a ( ) y $

a •> •> •>


( <• <• <•


) •> •> •>
y <• <• •> •>
$ <• <•

Fig. 4.60. Relaciones d e precedencia de operadores para la gram ática


del ejercicio 4.1.
EJERCICIOS 279

4 .2 5 E n c u é n tr e n s e f u n c io n e s d e p r e c e d e n c ia d e o p e r a d o r e s p a r a la ta b la d e la
fig u ra 4.60.

4 .2 6 E x iste u n a f o r m a m e c á n ic a d e p r o d u c ir re la c io n e s d e p re c e d e n c ia d e o p e r a ­
d o r e s a p a r ti r d e u n a g r a m á tic a d e o p e ra d o re s , in c lu id a s las q u e te n g a n m u ­
c h o s n o te rm in a le s d istin to s. Se d e fin e inicial {A) p a r a el n o te rm in a l A c o m o
el c o n j u n t o d e t e r m in a l e s a ta le s q u e a e s el t e r m i n a l s i t u a d o m á s a la iz­
q u ie rd a en a lg u n a c a d e n a d e riv a d a d e A , y fin a l (A ) c o m o el c o n ju n to d e te r­
m in a le s q u e p u e d e n e s ta r s itu a d o s m á s a la d e r e c h a en u n a c a d e n a d e riv a d a
d e A. E n to n c e s , p a r a lo s te r m in a le s a y b. se d ic e q u e a = b si h a y u n la d o
d e r e c h o d e la f o r m a ouzp&y, d o n d e p e s la c a d e n a vacía o u n n o te rm in a l
s im p le , y a y y s o n a rb itra ria s . Se d ic e q u e a < ■b si h a y u n la d o d e r e c h o d e
la f o r m a aaA fi, y b e s tá e n inicial(A); se d ic e q u e a • > b si h a y u n la d o d e ­
re c h o d e la f o r m a aAbfi, y a está e n fin a l(A ). E n a m b o s casos, a y P s o n ca­
d e n a s a rb itra ria s . T a m b ié n $ < • / > , s ie m p re q u e b esté e n inicial(S), d o n d e
S es el s ím b o lo in icial, y a • > S s ie m p re q u e a esté e n final(S).
a ) P a r a la g r a m á tic a del e je rc ic io 4 .1 , c a lc ú le n s e inicial y fin a l p a r a S y T.
b ) C o m p r u é b e s e si la s re la c io n e s d e p re c e d e n c ia d e la fig u ra 4 .6 0 s o n las d e ­
riv a d a s d e e s ta g ra m á tic a .

4 .2 7 G e n é r e n s e la s re la c io n e s d e p r e c e d e n c ia d e o p e r a d o r e s p a r a la s sig u ie n te s
g ram á tica s:
a ) L a g r a m á tic a del e jercicio 4.2.
b ) L a g r a m á tic a del e jercicio 4 .3 .
c) L a g r a m á tic a d e e x p re s io n e s (4 .1 0 ).

4 .2 8 C o n s tr ú y a s e u n a n a l i z a d o r s in tá c tic o p o r p r e c e d e n c ia d e o p e r a d o r e s p a ra
e x p re s io n e s regulares.

4 .2 9 S e d ic e q u e u n a g r a m á tic a es u n a g ra m á tica d e precedencia d e operadores


(in v e rtib le d e m a n e r a ú n ic a ) si es u n a g r a m á tic a d e o p e r a d o r e s q u e n o te n g a
d o s la d o s d e r e c h o s c o n el m i s m o p a t r ó n d e te rm in a le s , y el m é to d o del e jer­
cicio 4 .2 6 p r o d u c e a lo s u m o u n a re la c ió n d e p re c e d e n c ia e n tr e c u a lq u ie r
p a r d e te rm in a le s . ¿ Q u é g r a m á tic a s del e jercicio 4 .2 7 s o n g r a m á tic a s d e p r e ­
c e d e n c ia d e o p e ra d o re s ?

4 .3 0 S e d ic e q u e u n a g r a m á tic a e s tá e n la fo r m a n o rm a l d e G reibach ( G N F ) si
está lib re d e p r o d u c c io n e s c y c a d a p ro d u c c ió n (e x c e p to S —> € , si es q u e
ex iste) e s d e la f o r m a A -*■ a a , d o n d e a e s u n te rm in a l, y a , u n a c a d e n a d e
n o te rm in a le s , p o s ib le m e n te vacía.
**a) E sc ríb a se u n a lg o ritm o p a r a c o n v e r tir u n a g r a m á tic a e n u n a g ra m á tic a
e q u iv a le n te e n la f o r m a n o r m a l d e G re ib a c h .
b) A p liq ú e s e el a lg o r itm o a la g r a m á tic a d e e x p re s io n e s (4.10).

*4.31 D e m u é s tr e s e q u e t o d a g r a m á t i c a se p u e d e c o n v e r t i r e n u n a g r a m á tic a d e
o p e r a d o r e s e q u iv a le n te . Sugerencia: P r im e r o tra n s fó rm e s e la g r a m á tic a en
la f o r m a n o r m a l d e G r e ib a c h .

* 4 .3 2 D e m u é s tr e s e q u e to d a g r a m á tic a se p u e d e c o n v e r t ir e n u n a g r a m á tic a d e
o p e r a d o r e s e n la q u e c a d a p ro d u c c ió n tie n e u n a d e las fo rm a s
280 ANALISIS SIN TA CTIC O

A —> a B cC A —* a fíb A —> a B A a

Si e está e n el len g u aje, e n to n c e s S - * c ta m b ié n e s u n a p ro d u c c ió n .

4 .3 3 C o n s id é re s e la g r a m á tic a a m b ig u a
b
a
a ) C o n s tr ú y a s e la c o le c c ió n d e c o n j u n t o s d e e le m e n to s L R (0 ) p a r a e s ta g ra ­
m á tica .
b) C o n s tr ú y a s e u n A F N e n el q u e c a d a e s ta d o s e a u n e le m e n to L R (0 ) d e a).
D e m u é s tre s e q u e el g rafo d e tr a n s ic io n e s ir a d e la c o le c c ió n c a n ó n ic a d e
e l e m e n t o s L R (0 ) p a r a esta g r a m á tic a e s el m i s m o q u e el d e l A F D c o n s­
tr u i d o a p a r ti r d e A F N u tiliz a n d o la c o n s tr u c c ió n d e s u b c o n ju n to s .
c ) C o n s trú y a s e la ta b la d e análisis s in tá c tic o u tiliz a n d o el a lg o ritm o 4 .8 SL R .
d ) M u é s tre n s e to d o s los m o v im ie n to s a d m iti d o s p o r la ta b la d e c) c o n la e n ­
tr a d a abab.
e ) C o n s tr ú y a s e la ta b la d e a n á lis is s in tá c tic o c a n ó n ic o .
f ) C o n s tr ú y a s e la ta b la d e a n á lis is s in tá c tic o u tiliz a n d o el a lg o r i tm o 4.11
LALR.
g) C o n s tr ú y a s e la ta b la d e a n á lis is s in tá c tic o u tiliz a n d o el a lg o r i tm o 4 .1 3
LALR.

4 .3 4 C o n s t r ú y a s e u n a ta b la d e a n á lis is s i n t á c t i c o S L R p a r a la g r a m á t i c a d e l
e jercicio 4.3.

4 .3 5 C o n s id é re s e la sig u ie n te g ra m á tic a :
E -> E + T\ T
T-> T F \ F
F -> F * \ a \ b

a) C o n s tr ú y a s e la ta b la d e a n á lis is s in tá c tic o S L R p a r a e s ta g ra m á tic a .


b) C o n s tr ú y a s e la ta b la d e a n á lis is s in tá c tic o L A L R .

4 .3 6 C o m p r í m a n s e las ta b la s d e a n á lis is s in tá c tic o c o n s tr u i d a s e n lo s ejercicio s


4 .3 3 , 4 .3 4 y 4 .3 5 s e g ú n el m é t o d o d e la secció n 4.7.

4 3 7 a ) D e m u é s tr e s e q u e la sig u ie n te g ra m á tic a
S —> A a A b | BbBa
A -* e
B -* €

e s L L ( 1) p e r o n o S L R ( I ).
** b ) D e m u é s tre s e q u e to d a g r a m á tic a LL( 1) e s u n a g r a m á tic a L R ( 1).

* 4 .3 8 D e m u é s tr e s e q u e n in g u n a g r a m á tic a L R (1 ) p u e d e s e r a m b ig u a .

4 3 9 D e m u é s tr e s e q u e la sig u ie n te g r a m á tic a

S - * A a | b A c | de | bda
A -+ d
e s L A L R ( 1), p e r o n o S L R ( I ).
EJERCICIOS 281

4 .4 0 D e m u é s tre s e q u e la sig u ie n te g r a m á tic a

S -+ A a | bA c | B e | bBa
A -> d
B d

es L R ( 1), p e r o n o L A R L ( 1).

* 4 .4 1 C o n s id é re s e la fa m ilia d e g r a m á tic a s G„ d e f in id a por:

S A,b¡ \ < i < n


A ,- > a ^ i l a , 1 < i j < nyj ¿ i

a ) D e m u é s tre s e q u e Gn tie n e 2n2 - n p r o d u c c io n e s y 2 n + n 2 + rt c o n j u n ­


to s d e e le m e n to s L R (0 ). ¿ Q u é in d ic a este r e s u lta d o a c e rc a d e lo g ra n d e
q u e p u e d e llegar a s e r u n a n a liz a d o r s in tá c tic o L R c o m p a r a d o c o n el ta ­
m a ñ o d e la g ra m á tic a ?
b ) ¿ E s Gn S L R ( 1)?
c) ¿E s Gn L A L R ( l) ?

4 .4 2 E sc rib a se u n a lg o r i tm o p a r a c a lc u la r p a r a c a d a n o t e r m i n a l A d e u n a g r a ­
m á tic a el c o n j u n t o d e n o te r m in a le s B tales q u e A => B a p a r a a lg u n a c a d e n a
d e s ím b o lo s g ra m a tic a le s a.

4 .4 3 E scríbase u n a lg o r itm o q u e c a lc u le p a r a c a d a n o te r m in a l A d e u n a g r a m á ­
tica el c o n j u n t o d e te rm in a le s a ta le s q u e A a w p a r a a lg u n a c a d e n a d e
te rm in a le s w, d o n d e el ú lt im o p a s o d e la d e riv a c ió n n o u tilic e u n a p r o d u c ­
c ió n € .

4 .4 4 C o n s tr ú y a s e u n a ta b la d e a n á lis is s in tá c tic o S L R p a r a la g r a m á tic a d e l e jer­


c ic io 4 .4 . R e s u é lv a n se los c o n flic to s e n las a c c io n e s del a n á lis is s in tá c tic o d e
fo rm a q u e las e x p re s io n e s reg u la re s se p u e d a n a n a liz a r n o r m a lm e n te .

4 .4 5 C o n s trú y a s e u n a n a liz a d o r s in tá c tic o S L R p a r a la g ra m á tic a d e l e l s e a m b i ­


g u o (4 .7), c o n s id e r a n d o e x p r c o m o u n te rm in a l. R e su é lv a se el c o n flic to d e
a c c io n e s d e a n álisis s in tá c tic o d e la f o r m a h a b itu a l.

4 .4 6 a ) C o n s tr ú y a s e u n a ta b la d e a n álisis s in tá c tic o S L R p a r a la g ra m á tic a :

E E su b R E su p E | { E } | c
R -* E s u p E E

R e s u é lv a n se los c o n flic to s e n las a c c io n e s del a n álisis s in tá c tic o d e m o d o


q u e la s e x p r e s io n e s se a n a l i c e n d e la m i s m a f o r m a q u e si lo h ic ie r a el
a n a liz a d o r s in tá c tic o L R d e la fig u ra 4 .5 2 .
b) ¿S e p u e d e n c o n v e r t ir to d o s los c o n flic to s d e r e d u c c ió n /r e d u c c ió n g e n e ­
ra d o s e n el p r o c e s o d e c o n s tr u c c ió n d e la ta b la d e a n á lis is s in tá c tic o L R
e n c o n flic to s d e d e s p la z a m ie n to /r e d u c c ió n tr a n s f o r m a n d o la g ra m á tic a ?

* 4 .4 7 C o n s tr ú y a s e u n a g r a m á tic a L R e q u iv a le n te p a r a la g ra m á tic a d e tip o g rafía


(4 .2 5 ) q u e facto rice las e x p re s io n e s d e la f o r m a E s u b E s u p E c o m o u n caso
especial.
282 ANALISIS SIN TA CTIC O

* 4 .4 8 C o n s id é re s e la sig u ie n te g r a m á tic a a m b ig u a p a r a n o p e r a d o r e s infijos b in a ­


rios:
£ - > £ 0, £ | £ 0, £ | ... | £ 0„ £ \ ( £ ) | ¡d
S u p ó n g a s e q u e to d o s lo s o p e r a d o r e s s o n a so c ia tiv o s p o r la iz q u ie r d a y q u e
0, tie n e p re c e d e n c ia s o b re 0, si / > j.
a) C o n s t r ú y a n s e lo s c o n j u n t o s d e e l e m e n t o s S L R p a r a e s ta g r a m á tic a .
¿ C u á n to s c o n j u n t o s d e e le m e n to s h a y , c o m o f u n c ió n d e n i
b) C o n s t r ú y a s e la t a b l a d e a n á lis is s in tá c tic o S L R p a r a e s ta g r a m á t i c a y
c o m p rím a s e u tiliz a n d o la rep re se n ta c ió n c o n listas d e la sección 4.7. ¿Cuál
es la lo n g itu d to tal d e to d a s las listas u tiliz a d a s e n la r e p re s e n ta c ió n en
f u n c ió n d e n i
c) ¿ C u á n to s p a so s n ecesita p a r a a n a liz a r id 0 , id 0 , id?
* 4 .4 9 R e p íta s e el e jercicio 4 .4 8 p a r a la g r a m á tic a n o a m b ig u a

£ , - * £ , 0, £ 2 Ei
E l —> E l 02 ¿ 3 £3

En En 0„ £ n+1 | £ „ + i
£ „ « - * < £ , ) |id

¿ Q u é in d ic a n las re s p u e s ta s a los ejercicio s 4 .4 8 y 4 .4 9 s o b re la efic ien cia re­


lativ a d e los a n a liz a d o r e s s in tá c tic o s p a r a g r a m á tic a s a m b ig u a s y n o a m b i­
g u a s e q u iv a le n te s? ¿ Q u é in d ic a n a c e rc a d e la efic ien cia re la tiv a d e c o n s tr u ir
el a n a liz a d o r sin tá c tic o ?

4 .5 0 E sc ríb a se u n p r o g r a m a e n Y A C C q u e t o m e e x p r e s io n e s a r it m é t ic a s c o m o
e n t r a d a y p r o d u z c a la c o r r e s p o n d ie n te e x p re s ió n p o stfija c o m o salida.

4 .5 1 E scríb ase u n p r o g r a m a “c a lc u la d o r a d e e s c rito rio " e n Y A C C q u e e v a lú e ex ­


p re s io n e s b o o le a n a s.

4 .5 2 E scríb ase u n p r o g r a m a e n Y A C C q u e t o m e c o m o e n t r a d a u n a e x p re s ió n re­


g u la r y p r o d u z c a u n á rb o l d e a n á lis is s in tá c tic o c o m o salida.
4 .5 3 I n d íq u e n s e los m o v im ie n to s q u e e je c u ta r ía n los a n a liz a d o r e s s in tá c tic o s p re ­
d ic tiv o . d e p re c e d e n c ia d e o p e r a d o r e s y L R d e los e je m p lo s 4 . 2 0 , 4 . 3 2 y 4 .5 0
c o n las sig u ie n tes e n tr a d a s erró neas:
a ) ( id + ( * id )
b) * + id ) + ( id *

* 4 .5 4 C o n s tr ú y a s e u n a n a liz a d o r s in tá c tic o p o r p re c e d e n c ia d e o p e r a d o r e s c o rre c ­


t o r d e e r r o r e s y u n o L R p a r a la sig u ie n te g ra m á tic a :
prop i f e th e n prop
i f e th e n prop e l s e prop
w h ile e d o prop
b eg in lista en d
I *
lista -> lista ; prop
I prop
EJERCICIOS 283

* 4 .5 5 L a g r a m á tic a d e l e je rc ic io 4 .5 4 se p u e d e c o n v e r t ir e n L L s u s t it u y e n d o las
p ro d u c c io n e s d e lista p o r

lista - » prop lista '


lista ' -> ; prop | c
C o n s tr ú y a s e u n a n a liz a d o r s in tá c tic o p re d ic tiv o c o r r e c to r d e e rro re s p a r a la
g ra m á tic a revisada.

4 .5 6 M u é s tr e s e el c o m p o r t a m i e n t o d e lo s a n a liz a d o r e s s in tá c tic o s d e lo s e je rc i­
c io s 4 .5 4 y 4 .5 5 c o n las e n tr a d a s e rró n e a s
a ) i f e t h e n s ; i f e th e n s en d
b ) w h ile e d o b eg in s ; i f e th e n s ; end

4 .5 7 E s c ríb a n s e a n a liz a d o r e s s in tá c tic o s p r e d ic ó vos, p o r p r e c e d e n c ia d e o p e r a ­


d o r e s y L R c o n re c u p e ra c ió n d e e rro re s e n m o d o d e p á n ic o p a r a las g ra m á ­
tic a s d e lo s ejercicio s 4 .5 4 y 4 .5 5 , u tiliz a n d o el s ím b o lo d e p u n t o y c o m a y
e n d c o m o c o m p o n e n te s léx ico s d e s in c ro n iz a c ió n . M u é stre se el c o m p o r t a ­
m i e n to d e los a n a liz a d o r e s c o n las e n tr a d a s e r r ó n e a s d e l e jercicio 4.56.

4 .5 8 E n la secció n 4 .6 se p r o p u s o u n m é t o d o o r ie n ta d o a grafos p a r a d e t e r m in a r
el c o n j u n t o d e c a d e n a s q u e se p o d r ía n e x tr a e r d e la p ila en u n m o v im ie n to
d e re d u c c ió n d e u n a n a liz a d o r s in tá c tic o p o r p re c e d e n c ia d e o p e ra d o re s.
*a) D ése u n a lg o ritm o p a r a e n c o n t r a r u n a e x p re s ió n re g u la r q u e re p re s e n te
a to d a s esas cad en a s.
b ) D é s e u n a lg o r itm o p a r a d e t e r m i n a r si el c o n j u n t o d e tales c a d e n a s es fi­
n ito o in fin ito , lis tá n d o la s si e s finito.
c) A p liq ú e n s e los a lg o ritm o s d e a ) y b ) a la g r a m á tic a del e jercicio 4.54.

**4.59 S e in s is tió p a r a lo s a n a l i z a d o r e s s i n tá c tic o s c o r r e c t o r e s d e e r r o r e s d e las


fig u ra s 4 .1 8 , 4 .2 8 y 4 .5 3 e n q u e c u a l q u i e r c o r r e c c ió n d e e r r o r d ie r a fin a l­
m e n te c o m o r e s u lta d o la e lim in a c ió n d e p o r lo m e n o s u n s ím b o lo m á s d e
e n t r a d a o q u e la p ila se a c o r ta r a si se h a b ía a lc a n z a d o el fin al d e la e n tra d a .
S in e m b a r g o , n o to d a s las c o rre c c io n e s eleg id as h a c ía n q u e se c o n s u m ie r a
in m e d ia t a m e n t e u n s ím b o lo d e e n t r a d a , ¿S e p u e d e d e m o s t r a r la im p o sib ili­
d a d d e lazos in fin ito s p a r a los a n a liz a d o re s sin tá c tic o s d e las figuras 4.18. 4.28
y 4 .5 3 ? S u g eren cia : E s ú til o b s e r v a r q u e p a r a el a n a l i z a d o r s in tá c tic o p o r
p re c e d e n c ia d e o p e r a d o r e s los te r m in a le s c o n s e c u tiv o s d e n t r o d e la p ila es­
tá n re la c io n a d o s p o r ^ \ a u n q u e h a y a h a b i d o erro res. P a r a el a n a l iz a d o r s in ­
tá c tic o L R , la p ila se g u irá c o n t e n ie n d o u n p re fijo viable, a u n e n p re se n c ia
d e errores.

**4.60 D é s e u n a lg o r itm o p a r a d e te c ta r e n t r a d a s in a lc a n z a b le s e n las ta b la s d e a n á ­


lisis p re d ic tiv o , p o r p re c e d e n c ia d e o p e r a d o r e s y L R .

4.61 El a n a liz a d o r s in tá c tic o L R d e la fig u ra 4 .5 3 m a n e ja los c u a t r o c aso s e n q u e


el e s ta d o d e l to p e es 4 ó 5 ( q u e o c u r r e n c u a n d o + y * e s tá n e n el to p e d e la
p il a , r e s p e c t i v a m e n t e ) y la s i g u i e n t e e n t r a d a e s + o * e x a c t a m e n t e d e
la m is m a fo rm a: ll a m a n d o a la r u ti n a e l . la c u a l in s e rta u n id e n tre ellos. Se
p o d ría im a g in a r fácilm en te u n a n a liz a d o r sin tá ctic o L R p a r a ex presion es qu e
284 ANALISIS SIN T A C T IC O

e n g lo b e n el c o n j u n t o c o m p le to d e o p e r a d o r e s a r itm é tic o s y q u e se c o m p o r ­
te n d e la m is m a m a n e r a : insértese id e n t r e los o p e r a d o r e s a d y a c e n te s . E n a l­
g u n o s le n g u a je s ( c o m o P L /1 o C , p e r o n o F O R T R A N o P ascal) sería c o n ­
v e n ie n te c o n s id e ra r, d e m a n e r a esp ecial, el c a so e n q u e / está e n el to p e d e
la pila y * es el sig u ie n te s ím b o lo d e e n tr a d a . ¿ P o r q u é ? ¿ Q u é c u r s o d e a c c ió n
ra z o n a b le d e b e ría seg u ir el c o r r e c to r d e e rro re s?

4 .6 2 S e d ic e q u e u n a g r a m á tic a está e n la fo r m a n o rm a l d e C h o m sk y ( C N F ) si
está lib re d e p ro d u c c io n e s € y c a d a p ro d u c c ió n d is tin ta d e € es d e la fo rm a
A B C o d e la A —» a.
*a) D ése u n a lg o r itm o p a r a c o n v e r tir u n a g ra m á tic a e n u n a g r a m á tic a e q u i­
v a le n te d e la f o r m a n o r m a l d e C h o m s k y .
b ) A p liq ú e s e el a lg o ritm o a la g r a m á tic a d e e x p re s io n e s (4.10).

4 .6 3 D a d a u n a g ra m á tic a G en la f o r m a n o r m a l d e C h o m s k y y u n a c a d e n a de
e n t r a d a w = ü \ü 2 . . . esc ríb a se u n a lg o r itm o p a r a d e t e r m in a r si w e s tá en
L{G). Sugerencia: U tiliz a n d o p r o g r a m a c ió n d i n á m i c a c o m p lé te s e u n a ta b la
T d e n x n e n la q u e T [i,j) = {A \ A a ,al+x . . . a,}. L a c a d e n a d e e n tr a d a
w está e n L (G ) si, y só lo si, S e s tá e n T [ 1, n].

* 4 .6 4 a ) D a d a u n a g r a m á tic a G e n la f o r m a n o r m a l d e C h o m s k y , m u é s tre s e c ó m o
a ñ a d i r p ro d u c c io n e s p a r a la in s e rc ió n , e lim in a c ió n y m u ta c ió n sim p les
d e e rro re s a la g r a m á tic a d e m a n e r a q u e la g ra m á tic a a u m e n t a d a g en ere
to d a s las p o sib le s c a d e n a s d e c o m p o n e n te s léxicos.
b ) M o d ifiq ú e se el a lg o r itm o d e a n á lis is s in tá c tic o d e l e jercicio 4 .6 3 d e m a ­
n e r a q u e , d a d a c u a lq u ie r c a d e n a w , e n c u e n t r e u n a n á lis is s in tá c tic o p a ra
q u e w u tilic e u n n ú m e r o m í n i m o d e p ro d u c c io n e s d e erro r.

4 .6 5 E scríb ase u n a n a liz a d o r s in tá c tic o e n Y A C C p a r a la s e x p re s io n e s a r itm é tic a s


q u e u tilice el m e c a n is m o d e re c u p e ra c ió n d e e rro re s del e je m p lo 4.50.

N O T A S B IB L IO G R A F IC A S

El m u y in flu y e n te in f o r m e d e A L G O L 6 0 ( N a u r [1 9 6 3 ]) u tiliz ó la f o r m a d e B ackus-


N a u r ( B N F ) p a r a d e f in ir la s in ta x is d e u n i m p o r ta n te le n g u a je d e p r o g r a m a c ió n . Se
d e s c u b r ió la e q u iv a le n c ia e n tr e B N F y las g r a m á tic a s in d e p e n d ie n te s d e l c o n te x to , y
la te o ría d e los le n g u a je s fo rm a le s fu e o b je to d e u n a g ra n a te n c ió n e n la d é c a d a de
1960. H o p c r o f t y U llm a n [1 9 7 9 ] c u b r e n lo s a s p e c to s b á s ic o s e n este c a m p o .
L o s m é to d o s d e a n álisis s in tá c tic o se h ic ie ro n m u c h o m á s sis te m á tic o s tr a s el d e ­
s a rro llo d e las g r a m á tic a s in d e p e n d ie n te s del c o n te x to . Se in v e n ta r o n d iv e rsa s té c ­
n ic as g e n e ra le s p a r a a n a liz a r c u a lq u ie r g r a m á tic a in d e p e n d ie n te del c o n te x to . U n a
d e la s lfrim e ra s es la té c n ic a d e p ro g ra m a c ió n d in á m ic a p ro p u e s ta e n el ejercicio 4.63,
d e s c u b ie r ta i n d e p e n d i e n t e m e n t e p o r J . C o c k e , Y o u n g e r [1 9 6 7 ] y K a s a m i [19 65].
C o m o tesis d o c to ra l, E arley [1 9 7 0 ] ta m b ié n d e s a rro lló u n a lg o r itm o d e a n á lis is s in ­
t á c t i c o u n iv e r s a l p a r a t o d a s la s g r a m á t i c a s i n d e p e n d i e n t e s d e l c o n t e x to . A h o y
U llm a n [1 9 7 2 b y 1973a] e s tu d ia n d e ta lla d a m e n te ésto s y o tr o s m é to d o s d e análisis
sin tá ctic o .
N O T A S BIBLIO GRAFICA S 285

S e h a n e m p le a d o m u c h o s m é to d o s d is tin to s d e a n álisis s in tá c tic o e n los c o m p i ­


la d o re s. S h e r id a n [1 9 5 9 ] d e s c rib e el m é t o d o d e a n á lis is s in tá c tic o u ti liz a d o e n el
c o m p ila d o r orig inal d e F O R T R A N q u e in tr o d u jo p arén tesis a d ic io n a le s a u n o y o tro
la d o d e lo s o p e r a n d o s p a r a p o d e r a n a liz a r s in tá c tic a m e n te la s ex p resio n es. L a idea
d e la p reced e n cia d e o p e ra d o re s y el uso d e fu n c io n e s d e p reced e n cia e s o b r a d e F loyd
[ 1963]. E n la d é c a d a d e 1960. se p r o p u s o u n a g ra n c a n tid a d d e e stra te g ia s d e a n álisis
s in tá c tic o a s c e n d e n te . E sta s in c lu y e n la p re c e d e n c ia s im p le ( W ir th y W e b e r [1966]),
el a c o ta m ie n to d e c o n te x to (F lo y d [1 9 6 4 ]. G r a h a m [1964]), la p re c e d e n c ia d e e s tra ­
tegia m ix ta ( M c K e c m a n . H o m in g y W o r tm a n [1970]) y d e p re c e d e n c ia d éb il (Ich b iah
y M o rse [1970]).
L o s a n álisis s in tá c tic o s p o r d e s c e n s o re c u rsiv o y p re d ic tiv o s o n m u y u tiliz ad o s
e n la p rá c tic a . D a d a su flex ib ilid ad , se u tiliz ó el a n álisis s in tá c tic o p o r d e s c e n s o re-
c u r s iv o e n m u c h o s d e lo s p r i m e r o s s i s t e m a s g e n e r a d o r e s d e c o m p i l a d o r e s c o m o
M E T A (S c h o rre [1 9 6 4 ]) y T M G ( M c C lu r e [1 9 6 5 ]). E n B ir m a n y U llm a n [1 9 7 3 ], se
p u e d e e n c o n t r a r u n a s o lu c ió n al e jercicio 4 .1 3 , j u n t o c o n u n a p a rte d e la te o ría de
este m é to d o d e a n álisis s in tá c tic o . P r a tt [1973] p r o p o n e u n m é t o d o d e a n á lis is s in ­
tá c tic o d e s c e n d e n te p o r p re c e d e n c ia d e o p e ra d o re s .
L a s g r a m á tic a s L L f u e r o n e s tu d i a d a s p o r L e w is y S te a r n s [1 9 6 8 ] y s u s p r o p ie ­
d a d e s se d e s a r r o lla r o n e n R o s e n k r a n tz y S te a rn s [1 9 70]. L o s a n a liz a d o r e s sin tá c tic o s
p r e d ic tiv o s f u e r o n e s tu d ia d o s a f o n d o p o r K n u t h [1 9 7 1 a ]. L ew is, R o s e n k r a n tz y
S te a rn s [1 9 7 6 ] d e s c r ib e n el u s o d e los a n a l iz a d o r e s s in tá c tic o s p r e d ic tiv o s e n los
c o m p ila d o re s . L o s a lg o ritm o s p a r a c o n v e r t ir g r a m á tic a s a la f o r m a L L (1 ) se in tr o ­
d u c e n e n F o s te r [ 1968], W o o d [1969], S te a rn s [ 1971 ] y S o isa lo n -S o in in e n y U k k o n e n
[1979].
L a s g r a m á tic a s y lo s a n a l iz a d o r e s s in tá c tic o s L R f u e r o n in t r o d u c i d o s p o r p ri­
m e r a vez p o r K n u t h [1 965], q u i e n d e s c rib ió la c o n s tr u c c ió n d e las ta b la s d e a n álisis
sin tá ctic o L R c a n ó n ic o . El m é to d o L R n o resu ltó p rá c tic o h a s ta q u e K o re n ja k [1969]
m o s tr ó q u e c o n él se p o d r ía n p r o d u c ir a n a liz a d o r e s s in tá c tic o s d e t a m a ñ o ra z o n a b le
p a r a g r a m á tic a s d e le n g u a je s d e p r o g r a m a c ió n . C u a n d o D e R e m e r [1 9 6 9 , 1971] in ­
v e n tó los m é to d o s S L R y L A L R , q u e s o n m á s sim p le s q u e el d e K o re n ja k , la técn ica
L R se c o n v ir tió e n el m é to d o eleg id o p a r a los g e n e r a d o r e s a u to m á tic o s d e a n a liz a ­
d o re s sin tá c tic o s. H o y e n d ía , los g e n e r a d o r e s d e a n a liz a d o re s L R s o n h a b itu a le s en
los e n to r n o s d e c o n s tr u c c ió n d e c o m p ila d o re s .
G r a n p a rte d e la in v e stig a c ió n se d e d ic ó a la c o n s tr u c c ió n d e a n a liz a d o r e s s in ­
tá c tic o s L R . E l u s o d e g r a m á tic a s a m b ig u a s e n el a n álisis s in tá c tic o L R se d e b e a
A h o . J o h n s o n y U llm a n [1975] y a E arley [1 9 7 5 a]. L a e lim in a c ió n d e re d u c c io n e s
p o r p ro d u c c io n e s sim p les h a sid o e s tu d ia d a en A n d e rso n , E v e y H o m in g [19 73], A h o
y U llm a n [1 9 7 3 b ], D e m e r s [1 9 7 5 ], B a c k h o u s e [1 9 76], J o lia t [1 9 76], P a g e r [1 97 7 b],
S o is a lo n -S o in in e n [1980] y T o k u d a [1 981].
L as té c n ic a s p a r a c a lc u la r c o n j u n t o s d e s ím b o lo s d e a n tic ip a c ió n L A L R ( 1) han
sido p ro p u e s ta s p o r L a L o n d e [ 1971 ], A n d e rs o n , E v e y H o m in g [1973], P ager [1977a],
K r is te n s e n y M a d s e n [1 9 8 1 ], D e R e m e r y P e n n e llo [1 9 8 2 ] y P a r k , C h o e y C h a n g
[1 985], q u ie n e s ta m b ié n p r o p o r c io n a n a lg u n a s c o m p a r a c io n e s e x p e rim e n ta le s .
A h o y J o h n s o n [1974] re a liz a n u n e s tu d io g e n e ra l del a n á lis is s in tá c tic o L R y
a n a liz a n a lg u n o s d e los a lg o ritm o s e n q u e se b a s a el g e n e r a d o r d e a n a liz a d o r e s s in ­
tá c tic o s Y A C C , in c lu id o el u s o d e p r o d u c c i o n e s d e e r r o r p a r a la r e c u p e r a c ió n de
286 ANALISIS SIN TA C TIC O

erro res. A h o y U llm a n [1 9 7 2 b y 1973a] d a n u n t r a t a m i e n t o b a s ta n te c o m p le to del


a n álisis s in tá c tic o L R y d e sus f u n d a m e n to s teó rico s.
S e h a n p r o p u e s to m u c h a s té c n ic a s d e re c u p e ra c ió n d e e rro re s p a r a los a n a liz a ­
d o r e s s in tá c tic o s . L a s té c n ic a s p a r a la r e c u p e r a c ió n d e e r r o r e s s o n e s tu d ia d a s p o r
C ie sin g e r [1979J y p o r S ip p u [1 9 8 1 ], I r o n s [1 9 6 3 ] p r o p u s o u n e n f o q u e p a r a la re­
c u p e ra c ió n d e e rro re s s in tá c tic o s b a s a d o e n la g r a m á tic a . L as p ro d u c c io n e s d e e r r o ­
res fu e ro n e m p le a d a s p o r W irth [1968] p a r a m a n e ja r e rro re s e n u n c o m p ila d o r d e
P L 3 6 0 . L e in iu s [1 9 7 0 ] p r o p u s o la e stra te g ia d e re c u p e ra c ió n e n la s frases. A h o y Pe-
te rs o n [1972] m u e s tr a n c ó m o lo g ra r u n a re c u p e ra c ió n d e e rro re s g lo b a l d e c o s to m í­
n im o u tiliz a n d o p ro d u c c io n e s d e e r r o r j u n t o c o n a lg o ritm o s d e a n álisis s in tá c tic o
g en eral p a r a g r a m á tic a s in d e p e n d ie n te s d e l c o n te x to . M a u n e y y F is c h e r [1 9 8 2 ] a p li­
c a n d ic h a s id e as a la r e p a ra c ió n lo c al d e c o s to m í n i m o p a r a a n a liz a d o re s sin tá c tic o s
L L y L R u tiliz a n d o la té c n ic a d e a n á lis is s in tá c tic o d e G r a h a m , H a r r is o n y R u z z o
[1980]. G r a h a m y R h o d e s [1 9 7 5 ] e s tu d ia n la re c u p e ra c ió n d e e rro re s e n el c o n te x to
del a n álisis s in tá c tic o p o r p reced e n cia.
H o r n in g [1976] e s tu d ia las c u a lid a d e s q u e d e b e n te n e r los b u e n o s m e n s a je s de
e rro r. S ip p u y S o is a lo n -S o in in e n [1983] c o m p a r a n el u s o d e la té c n ic a d e re c u p e ra ­
c ió n d e erro res e n el H elsinki L ang u ag e P ro cesso r (R á ih á y o tro s [1983]) c o n la téc­
n ic a d e r e c u p e r a c ió n d e “ m o v i m i e n t o h a c ia a d e l a n t e “ d e P e n n e l l o y D e R e m e r
[1 978]. c o n la té c n ic a d e re c u p e ra c ió n d e e r r o r e s d e G r a h a m , H a le y y J o y [1979] y
c o n la té c n ic a d e re c u p e ra c ió n d e “c o n te x to g lo b a l" d e P ai y K ie b u r tz [1980].
L a corrección de errores durante el análisis sintáctico es estudiada por C o n w a y
y M axw ell [19 63]. M o u lto n y M u lle r [1 9 67]. C o n w a y y W ilc o x [1 9 7 3 ], L evy [1975],
T a i [1 9 7 8 ] y R ó h r ic h [1 9 8 0 ]. E n A h o y P e te r s o n [ 1 9 7 2 ] se d a u n a s o lu c ió n al
ejercicio 4.63.
P87|

C A P IT U L O 5

Traducción
dirigida por
la sintaxis

E ste c a p itu lo d e s a rro lla el t e m a d e la secció n 2 .3 , la tr a d u c c ió n d e le n g u a je s g u ia d a


p o r g r a m á tic a s in d e p e n d ie n te s d e l c o n te x to . Se a s o c ia in f o r m a c ió n a u n a c o n s tr u c ­
c ió n del le n g u a je d e p r o g ra m a c ió n p r o p o r c io n a n d o a tr ib u to s a los s ím b o lo s d e la
g ra m á tic a q u e re p re s e n ta n la c o n s tr u c c ió n . L os v a lo re s d e los a tr i b u to s se c a lc u la n
m e d ia n te “ reglas s e m á n tic a s " a s o c ia d a s a las p r o d u c c io n e s g ra m a tic a le s.
H a y d o s n o ta c io n e s p a r a a s o c ia r reglas s e m á n tic a s c o n p ro d u c c io n e s , la s d e fin i­
c io n e s d irig id as p o r la s in ta x is y los e s q u e m a s d e tra d u c c ió n . L as d e fin ic io n e s d ir i­
g id a s p o r la sin ta x is s o n esp e c ific a c io n e s d e a lto nivel p a r a tra d u c c io n e s . O c u lta n
m u c h o s d e ta lle s d e la im p la n ta c ió n y n o es n e c e sa rio q u e el u s u a rio e sp e c ifiq u e e x ­
p líc ita m e n te el o r d e n e n el q u e tie n e lu g a r la tra d u c c ió n . L o s e s q u e m a s d e tr a d u c ­
c ió n in d ic a n el o rd e n e n q u e se d e b e n e v a lu a r las reglas s e m á n tic a s , a s í q u e a lg u n o s
d e ta lle s d e la im p la n ta c ió n q u e d a n visibles. E n el c a p itu lo 6 se u tiliz a n a m b a s n o ­
ta c io n e s p a r a e s p e c ific a r la c o m p r o b a c ió n s e m á n tic a , e n p a r tic u la r la d e te r m in a c ió n
d e tip o s, y e n el c a p ítu lo 8 p a r a g e n e r a r c ó d ig o in te rm e d io .
C o n c e p tu a lm e n te , t a n t o c o n las d e fin ic io n e s d irig id a s p o r la s in ta x is c o m o co n
los e s q u e m a s d e tra d u c c ió n , se a n a liz a s in tá c tic a m e n te la c a d e n a d e c o m p o n e n te s
léx ico s d e e n t r a d a , se c o n s tr u y e el á r b o l d e a n á lis is s in tá c tic o y d e s p u é s se re c o rre
el á r b o l p a r a e v a l u a r las reg las s e m á n t ic a s e n s u s n o d o s (v éase F ig. 5 .1 ). L a e v a l u a ­
c ió n d e las reglas s e m á n tic a s p u e d e g e n e r a r c ó d ig o , g u a r d a r in f o r m a c ió n e n u n a ta ­
b la d e s ím b o lo s, e m iti r m e n s a je s d e e r r o r o rea liz a r o tr a s a c tiv id a d e s. L a tr a d u c c ió n
d e la c a d e n a d e c o m p o n e n te s léx ico s es el r e s u lta d o o b te n id o al e v a lu a r las reglas
se m á n tic a s.

árbol
cadena » d e a n á lis is _____► g ra fo d e _____ ^ o r d e n d e e v a lu a c ió n
d e e n ir a d a s in tá c tic o d e p e n d e n c ia s d e la s reglas se m á n tic a s

Fig. 5.1. A specto co n c e p tu a l d e u n a trad u cció n dirigida por la sintaxis.

U n a i m p l a n t a c i ó n n o tie n e q u e s e g u ir al p ie d e la le tra el e s q u e m a d e la figu­


r a 5.1. H a y c aso s esp eciales d e d e fin ic io n e s d irig id a s p o r la sin ta x is q u e se p u e d e n
im p la n t a r e n u n a so la p a s a d a e v a l u a n d o las reglas s e m á n tic a s d u r a n t e el a n á lis is sin-
288 T R A D U C C IO N DIRIG IDA POR LA SIN TA X IS

lá c tic o , sin c o n s tr u ir e x p líc ita m e n te u n á rb o l d e a n álisis s in tá c tic o o u n g rafo q u e


m u e s tre las d e p e n d e n c ia s e n tr e lo s a trib u to s . C o m o la im p la n ta c ió n e n u n a so la p a ­
sa d a es im p o r ta n te p a r a la efic ien cia e n c u a n t o al ti e m p o d e c o m p ila c ió n , g ra n p arte
d e este c a p ítu lo está d e d ic a d a al e s tu d io d e d ic h o s c aso s especiales. U n a s u b c la se im ­
p o r ta n te , lla m a d a las d e fin ic io n e s “c o n a tr i b u to s p o r la iz q u ie r d a ”, a b a r c a p rá c tic a ­
m e n te to d a s las tra d u c c io n e s q u e se p u e d a n re a liz a r sin la c o n s tr u c c ió n e x p líc ita d e
u n á rb o l d e a n álisis sin tá ctic o .

5.1 D E F I N I C I O N E S D I R I G I D A S F O R L A S I N T A X I S

U n a d e fin ic ió n d irig id a p o r la s in ta x is es u n a g e n e ra liz a c ió n d e u n a g r a m á tic a in ­


d e p e n d ie n te del c o n te x to en la q u e c a d a s ím b o lo g ra m a tic a l tie n e u n c o n j u n t o d e
a tr ib u to s a so c ia d o , d iv id id o e n d o s s u b c o n ju n t o s lla m a d o s a tr ib u to s s in te tiz a d o s y
lo s h e re d a d o s d e d ic h o s ím b o lo g ra m a tic a l. Si se c o n s id e r a u n n o d o d e u n s ím b o lo
g r a m a tic a l d e u n á r b o l d e a n á lis is s i n t á c t i c o c o m o u n r e g is tro c o n c a m p o s p a r a
g u a r d a r in f o r m a c ió n , e n to n c e s u n a tr ib u to c o r r e s p o n d e al n o m b r e d e u n c a m p o .
U n a t r i b u t o p u e d e r e p r e s e n ta r c u a lq u ie r cosa: u n a c a d e n a , u n n ú m e r o , u n tipo,
u n a p o sic ió n d e m e m o r ia , etc. E l v a lo r d e u n a t r i b u t o e n u n n o d o d e u n á rb o l de
a n álisis s in tá c tic o se d e fin e m e d ia n te u n a regla s e m á n tic a a s o c ia d a a la p ro d u c c ió n
u tiliz ad a e n d ic h o n o d o . El v a lo r d e u n a t r i b u t o s in te tiz a d o e n u n n o d o se c a lc u la a
p a r tir d e los v alo res d e los a tr ib u to s d e los h ijo s d e d ic h o n o d o en el á rb o l d e análisis
sin tá c tic o ; el v a lo r d e u n a t r i b u t o h e r e d a d o se c a lc u la a p a r ti r d e lo s v alo res d e los
a tr ib u to s e n los h e r m a n o s y el p a d re d e d ic h o n o d o .
L as reglas s e m á n tic a s e stab lecen las d e p e n d e n c ia s e n tr e los a tr ib u to s q u e serán
re p re s e n ta d a s m e d ia n te u n grafo. D el g rafo d e d e p e n d e n c ia s se o b tie n e u n o r d e n d e
e v a lu a c ió n d e las reglas se m á n tic a s . L a e v a lu a c ió n d e las reglas s e m á n tic a s d e fin e los
v alo res d e los a tr i b u to s e n los n o d o s del árb o l d e a n álisis s in tá c tic o p a r a la c a d e n a
d e e n tr a d a . U n a regla s e m á n tic a ta m b ié n p u e d e te n e r efecto s co laterales, p o r e j e m ­
plo . i m p r i m i r u n v a lo r o a c tu a liz a r u n a v a r ia b le g lo b a l. P o r s u p u e s to , u n a a p l ic a ­
c ió n n o n e c e sita c o n s tr u i r e x p líc ita m e n te u n árb o l d e a n álisis s in tá c tic o o u n grafo
d e d e p e n d e n c ia s ; só lo tie n e q u e p r o d u c ir el m is m o r e s u lta d o p a r a c a d a c a d e n a d e
e n tra d a .
U n á rb o l d e a n álisis s in tá c tic o q u e m u e s tre lo s v alo res d e los a tr ib u to s en c a d a
n o d o se d e n o m i n a u n á rb o l d e a n á lis is s in tá c tic o c o n a n o ta c io n e s . El p ro c e s o d e cal­
c u la r los v alo res d e los a tr ib u to s e n los n o d o s se d e n o m i n a anotar o decorar el árbol
d e a n á lis is sin tá ctic o .

F o rm a d e una d e fin ic ió n d ir ig id a p or la s in ta x is

E n u n a d e fin ic ió n d irig id a p o r la sin ta x is, c a d a p ro d u c c ió n g ra m a tic a l A - » a tien e


a s o c ia d o u n c o n j u n t o d e reglas s e m á n tic a s d e la f o r m a b : = C *.. • • , Ct), d o n d e
/ e s u n a f u n c ió n , y. o bien

1. b e s u n a t r i b u t o s in te tiz a d o d e A y t’i, c2, . . . , c* s o n a tr i b u to s q u e p e rte n e c e n a


los s ím b o lo s g ra m a tic a le s d e la p ro d u c c ió n , o b ie n
5.1 D E F I N I C I O N E S D I R I G I D A S P O R LA S I N T A X I S 289

2. b es u n a t r i b u t o h e r e d a d o d e u n o d e los s ím b o lo s g ra m a tic a le s d e l la d o d e r e c h o
d e la p ro d u c c ió n , y Cj, C2, . . . , c* s o n a tr i b u to s q u e p e rte n e c e n a lo s s ím b o lo s
g ra m a tic a le s d e la p ro d u c c ió n .

E n c u a lq u ie r caso, se d ic e q u e el a t r i b u t o b d e p e n d e d e los a tr i b u to s Ci, t*2, • • • A -


U n a gram ática con atributos es u n a d e fin ic ió n d irig id a p o r la s in ta x is e n la q u e las
f u n c io n e s e n las reglas s e m á n tic a s n o p u e d e n t e n e r e fe c to s co laterales.
L a s fu n c io n e s d e las reglas s e m á n tic a s a m e n u d o se e s c rib irá n c o m o ex p resio n es.
O c a s io n a lm e n te , el ú n ic o p r o p ó s ito d e u n a regla s e m á n tic a e n u n a d e fin ic ió n d ir i­
g id a p o r la s in ta x is es c r e a r u n e fe c to c o lateral. D ic h a s reglas s e m á n tic a s se escrib en
c o m o lla m a d a s a p r o c e d im ie n to s o fr a g m e n to s d e p r o g r a m a . Se p u e d e n c o n s id e r a r
c o m o reglas q u e d e fin e n los v alo res d e a tr i b u to s s in te tiz a d o s ficticios d e l n o te r m i­
nal del la d o iz q u ie r d o d e la p r o d u c c ió n a s o c ia d a : n o se m u e s tr a n el a tr ib u to ficticio
y el sig n o : = d e la regla s e m á n tic a .

E je m p lo 5 .1 . L a d e fin ic ió n d irig id a p o r la s in ta x is d e la figura 5 .2 es p a r a u n p r o ­


g r a m a p a r a u n a c a lc u la d o r a d e e sc rito rio . E sta d e fin ic ió n aso cia u n a t r i b u t o s in te ­
tiz a d o c o n u n v a lo r e n t e r o lla m a d o val a c a d a u n o d e los n o te rm in a le s E , T y F.
P a ra c a d a p ro d u c c ió n d e £ , T y F, la reg la s e m á n tic a c a lc u la el v a lo r d e l a tr ib u to
val p a r a el n o te r m in a l del la d o iz q u ie r d o a p a r ti r d e los v a lo re s d e vaI d e los n o
te rm in a le s d e l la d o d ere c h o .

Pr o d u c c i ó n R eglas Semánticas

E->£ n print (£. val)


£->£, + T E v a ! = E¡. val + T.val
E —► T E.val = T.val
T -> E, * F T v a l = T |.val x F.val
T-+F T.val = F.val
F - * (E ) F.val = E.val
E - > dígito F.val = dígito, valex

Fig. 5.2. D efinición dirigida p o r la sintaxis d e un a calcu lado ra d e escritorio


sencilla.

El c o m p o n e n te léx ico d íg ito tie n e u n a t r i b u t o s in te tiz a d o va lex c u y o v a lo r viene


p r o p o rc io n a d o p o r el a n a liz a d o r léxico. L a regla a so c ia d a a la p ro d u c c ió n L E n
p a r a el n o te rm in a l in icial L e s só lo u n p r o c e d im ie n to q u e im p r im e c o m o re s u lta d o
el v a lo r d e la e x p re s ió n a r itm é tic a g e n e r a d a p o r E ; se p u e d e c o n s id e r a r q u e e s ta regla
d e f in e u n falso a tr ib u to p a r a el n o te r m in a l L . E n la fig u ra 4 .5 6 se in tr o d u jo u n a
e sp ecificació n e n Y A C C p a r a esta c a lc u la d o r a d e e s c rito rio p a r a ilu stra r la tr a d u c ­
c ió n d u r a n t e el a n á lis is s in tá c tic o L R . □

E n u n a d e fin ic ió n d irig id a p o r la sin tax is, se a s u m e q u e los te r m in a le s só lo tie ­


n e n a t r i b u t o s s in te tiz a d o s , ya q u e la d e f in ic ió n n o p r o p o r c i o n a n i n g u n a reg la se­
290 T R A D U C C IO N D IR IG ID A POR L A S IN T A X IS

m á n t i c a p a r a lo s te r m in a l e s . E l a n a l i z a d o r lé x ic o e s e l q u e p r o p o r c i o n a g e n e r a l­
m e n te los v alo res p a r a lo s a tr i b u to s d e los te r m in a le s c o m o se e s tu d ió e n la sección
3 .1 . A d e m á s, se a s u m e q u e el s ím b o lo inicial n o tie n e n in g ú n a t r i b u t o h e re d a d o , a
m e n o s q u e se in d iq u e lo c o n tra rio .

A trib u to s sin te tiz a d o s

L o s a tr ib u to s s in te tiz a d o s s o n m u y u tiliz a d o s e n la p rá c tic a . U n a d e fin ic ió n d irig id a


p o r la sin ta x is q u e usa a tr ib u to s s in te tiz a d o s e x c lu s iv a m e n te se d e n o m i n a definición
con atribuios sintetizados. S ie m p r e se p u e d e a n o t a r u n á r b o l d e a n á lis is s in tá c tic o
p a r a u n a d e fin ic ió n c o n a tr ib u to s s in te tiz a d o s m e d ia n te la e v a lu a c ió n d e las reglas
s e m á n tic a s p a r a los a tr ib u to s e n c a d a n o d o d e fo rm a a s c e n d e n te , d e las h o ja s a la
raíz. L a secció n 5 .3 d e sc rib e c ó m o se p u e d e a d a p t a r u n g e n e r a d o r d e a n a liz a d o re s
sin tá c tic o s L R p a r a a p lic a r m e c á n ic a m e n te u n a d e fin ic ió n c o n a tr ib u to s sin te tiz a ­
d o s b a s a d a e n u n a g r a m á tic a L R .

E je m p lo 5 .2 . L a d e fin ic ió n c o n a tr i b u to s s in te tiz a d o s del e je m p lo 5.1 especifica u n a


c a lc u la d o r a d e e s c rito rio q u e lee u n a lín e a d e e n t r a d a q u e c o n tie n e u n a e x p re sió n
a r itm é tic a q u e in c lu y e d íg ito s, p arén tesis, los o p e r a d o r e s + y *, s e g u id a d e u n c a rá c ­
te r d e n u e v a lín e a n, e im p r im e el v a lo r d e la e x p re s ió n . P o r e je m p lo , d a d a la e x p re ­
sión 3 * 5 + 4 s e g u id a d e u n a n u e v a lín ea, el p r o g r a m a im p r im e el v a lo r 19. L a figu­
r a 5 .3 c o n t i e n e u n á r b o l d e a n á lis is s i n t á c t i c o c o n a n o t a c i o n e s p a r a la e n t r a d a
3 * 5 + 4 n . El re s u lta d o , q u e se im p r im e e n la raíz del á rb o l, es el v a lo r d e E .v a l e n el
p r im e r h ijo d e la raíz.

n
E.val * 19

E.val = 15 T. val = 4

T.val = 15 F.val = 4
I
T. val = 3 F.val = 5 d ígito valex = 4

I l
F.val = 3 d ígito, valex = 5

d ígito valex = 3

F ig. 5 . 3 . A rb o l d e a n á lisis s in tá c tic o c o n a n o ta c io n e s p a ra 3 * 5 + 4 n .

P a r a v e r c ó m o se c a lc u la n los v alo res d e los a tr ib u to s , c o n sid é re se el n o d o in te ­


r io r s itu a d o en el e x tr e m o m á s b a jo d e la iz q u ie r d a , q u e c o r r e s p o n d e al u s o d e la
p ro d u c c ió n F - + d íg ito . L a regla s e m á n tic a c o r r e s p o n d ie n te , F .v a l:— d íg it o . valex.
5.1 D E F I N I C I O N E S D I R I G I D A S P O R LA S I N T A X I S 291

e s ta b le c e q u e el a t r i b u l o F.val e n el n o d o t i e n e el v a lo r 3 p o r q u e el v a l o r d e d í­
gito. valex e n el h ijo d e este n o d o es 3. D e f o r m a s im ila r, e n el p a d re d e este n o d o F\
el a tr ib u to T .val tie n e el v a lo r 3.
A c o n t in u a c i ó n c o n s id é re s e el n o d o p a r a la p ro d u c c ió n T -+ T * F. E l v a lo r del
a tr ib u to T.val e n este n o d o e s tá d e f in id o p o n

Pr o d u c c ió n R e g l a S e m á n t ic a
r - > T, * F T .va l : = T^vaJ x F.val

C u a n d o se a p lic a la regla s e m á n tic a e n este n o d o , Ti.val tie n e el v a lo r 3 del h ijo


iz q u ie r d o y F .val el v a lo r 5 del h ijo d e r e c h o . P o r ta n to , T.val a d q u ie r e el v a lo r 15
e n este n o d o .
L a regla a s o c ia d a c o n la p r o d u c c ió n p a r a el n o te rm in a l inicial L —* E n im p r im e
el v a lo r d e la e x p re s ió n g e n e r a d a p o r E . □

A trib u to s h e re d a d o s

U n a t r i b u t o h e r e d a d o es u n o c u y o v a lo r e n u n n o d o d e u n árb o l d e a n á lis is s in tá c ­
tic o está d e f in id o a p a r ti r d e los a tr i b u to s e n el p a d re y /o d e los h e r m a n o s d e d ic h o
n o d o . L os a tr i b u to s h e re d a d o s sirv e n p a r a e x p r e s a r la d e p e n d e n c ia d e u n a c o n s tr u c ­
c ió n d e u n le n g u a je d e p r o g r a m a c ió n e n el c o n te x to e n el q u e a p a re c e . P o r e je m p lo ,
se p u e d e u tiliz a r u n a t r i b u t o h e r e d a d o p a r a c o m p r o b a r si u n id e n tif ic a d o r a p a re c e
e n el la d o iz q u ie r d o o e n el d e r e c h o d e u n a a s ig n a c ió n p a r a d e c id ir si se n e c e sita la
d ire c c ió n o el v a lo r del id e n tific a d o r. A u n q u e s ie m p re e s p o sib le re e s c rib ir u n a d e ­
fin ició n d irig id a p o r la s in ta x is p a r a q u e s ó lo se u tilic e n a tr i b u to s sin te tiz a d o s, a v e­
ces es m á s n a tu r a l u tiliz ar d e f in ic io n e s d irig id a s p o r la s in ta x is c o n a tr i b u to s h e r e ­
d ad os.
E n el sig u ie n te e je m p lo , u n a t r i b u t o h e r e d a d o d is tr ib u y e la in f o r m a c ió n sobre
lo s tip o s a los d is tin to s id e n tific a d o re s d e u n a d e c la ra c ió n .

E je m p lo 5 .3 . U n a d e c la ra c ió n g e n e r a d a p o r el n o te r m in a l D e n la d e fin ic ió n d ir i­
gida p o r la sin ta x is e n la fig u ra 5.4 c o n s ta d e la p a la b r a c lav e in t o r e a l, s e g u id a d e
u n a lista d e id e n tific a d o re s. El n o te r m in a l T tie n e u n a tr ib u to s in te tiz a d o tipo, c u y o

P r o d u c c ió n R e g l a s S e m á n t ic a s

D -> T L L.her := T.lipo

T -> int T .tip o : = integer

T - + real T.lipo := rea!

L —> L y , id L {.h e r:= L.her


añadetipo ( id .entrada. L .Iier)

¿ id añadetipo (id entrada, L.her)

Fig. 5.4. D efinición dirigida p o r la sintaxis c o n el a trib u to h ered ad o L.her.


292 T R A D U C C IO N D IR IG ID A POR LA SIN T A X IS

v alo r viene d e t e r m in a d o p o r la p a la b r a c lav e d e la d e c la ra c ió n . L a regla s e m á n tic a


L .h e r : = T.lipo, a s o c ia d a c o n la p ro d u c c ió n D —* T L , asig n a al a t r i b u t o h e re d a d o
L .h e r el ti p o d e la d e c la ra c ió n . E n to n c e s las reglas p a s a n este ti p o p o r el á rb o l d e
a n álisis s in tá c tic o u tiliz a n d o el a tr ib u to h e r e d a d o L .h er. L as reglas a s o c ia d a s c o n las
p ro d u c c io n e s d e L lla m a n al p r o c e d im ie n to añadeiipo p a r a a ñ a d i r el tip o d e c a d a
id e n tif ic a d o r a s u e n t r a d a e n la ta b la d e s ím b o lo s ( a p u n ta d a p o r el a t r i b u t o entrada).

re a l L.her = real , id,

L.her = real , id2

id,

Fig. 5 .5 .. A rbol de análisis sintáctico con el a trib u to h ered ad o her en cada n o do


etiq u eta d o co n L.

E n la fig u ra 5.5 se m u e s tr a u n á r b o l d e a n á lis is s in tá c tic o c o n a n o ta c io n e s p a ra


la frase re a l id ,, id2, id 3. El v a lo r d e L .h e r e n lo s tres n o d o s d e L d a el ti p o d e los
id e n tific a d o re s id ,, id 2 e id i. E sto s v a lo re s se d e t e r m in a n c a lc u la n d o el v a lo r del a t r i ­
b u t o T .tip o e n el h ijo iz q u ie r d o d e la ra íz y e v a l u a n d o d e s p u é s L .h er d e f o r m a d e s ­
c e n d e n te e n los tres n o d o s d e L e n el s u b á r b o l d e r e c h o d e la raíz. E n c a d a n o d o de
L ta m b ié n se lla m a al p r o c e d im ie n to a ñ a d etip o p a r a in s e r ta r e n la ta b la d e s ím b o lo s
el h e c h o d e q u e el id e n tif ic a d o r e n el h ijo d e r e c h o d e este n o d o tie n e ti p o real. □

G r a f o s d e d e p e n d e n c ia s

Si u n a t r i b u t o b e n u n n o d o d e u n á rb o l d e a n á lis is s in tá c tic o d e p e n d e d e u n a tri­


b u t o c\ e n to n c e s se d e b e e v a lu a r la regla s e m á n tic a p a r a b e n ese n o d o d e s p u é s d e la
regla s e m á n tic a q u e d e fin e a c. L as in te r d e p e n d e n c ia s e n t r e lo s a tr ib u to s h e re d a d o s
y s in te tiz a d o s e n los n o d o s d e u n á rb o l d e a n á lis is s in tá c tic o se p u e d e n re p re s e n ta r
m e d ia n te u n g rafo d irig id o lla m a d o grafo de dependencias.
A n te s d e c o n s tr u i r u n g ra fo d e d e p e n d e n c ia s p a r a u n á rb o l d e a n álisis sin tá ctic o .
se escrib e c a d a reg la s e m á n tic a e n la f o r m a b : = f( c \, c2 c*), in t r o d u c ie n d o u n
falso a t r i b u t o s in te tiz a d o b p a r a c a d a regla s e m á n tic a q u e c o n s te d e u n a lla m a d a d e
p r o c e d im ie n to . El g rafo tie n e u n n o d o p o r c a d a a tr ib u to y u n a a ris ta al n o d o d e b
d e s d e el n o d o d e c si el a t r i b u t o b d e p e n d e del a t r i b u t o c. M ás d e ta lla d a m e n te , el
g rafo d e d e p e n d e n c ia s p a r a u n d e t e r m in a d o árb o l d e a n álisis s in tá c tic o se c o n s tru y e
d e la sig u ie n te m a n e ra :
5.1 D E F I N I C I O N E S D I R I G I D A S P O R LA S I N T A X I S 293

for cada n o d o n en el árbol d e análisis sintáctico do


for c a d a a trib u to a del sím bolo gram atical en el n o d o n do
co n stru ir u n n o d o en el grafo d e d e p en d en c ias p a ra a:
for cada n o d o n e n el árbol d e análisis sintáctico do
for c a d a regla sem án tica b : = c2, ■. • , c¡)
asociada con la p ro d u cció n utilizada en n do
for / : = I to k do
c o n s tru ir u n a arista desde el n o d o para c, hasta el n o d o para b\

P o r e j e m p lo , s u p ó n g a s e q u e A .a : = f( X .x , Y .y ) e s u n a reg la s e m á n t i c a p a r a la
p ro d u c c ió n A —►X Y . E sta regla d e fin e u n a t r i b u t o s in te tiz a d o A .a q u e d e p e n d e d e
los a tr i b u to s X .x y Y.y. Si se u tiliz a e s ta p r o d u c c ió n e n el á rb o l d e a n á lis is s in tá c tic o ,
e n to n c e s h a b r á tr e s n o d o s, A .a . X .x y Y. y , e n el g rafo d e d e p e n d e n c ia s c o n u n a arista
h a c ia A .a d e s d e X .x p u e s to q u e A .a d e p e n d e d e X .x , y u n a a ris ta h a c ia A .a desde
Y .y p u e s to q u e A .a ta m b ié n d e p e n d e d e Y.y.
Si la p r o d u c c i ó n A - > X Y tie n e a s o c ia d a la regla s e m á n t ic a X .i : = g (A .a . Y.y).
e n to n c e s h a b rá u n a a r is ta h a c ia X .i d e s d e A .a y ta m b ié n u n a a r is ta h a c ia X .i d e sd e
Y.y, p u e s to q u e X .i d e p e n d e t a n t o d e A .a c o m o d e Y.y.

E je m p lo 5 .4 . S ie m p r e q u e se u tilic e la sig u ie n te p ro d u c c ió n e n u n á rb o l d e a n álisis


s in tá c tic o , s e a ñ a d e n a l g r a f o d e d e p e n d e n c i a s la s a r is ta s q u e se m u e s t r a n e n la
fig u ra 5.6.

Producción R e g l a Se m á n t i c a
£ -> £ , + E2 E .v a l : = E \.x a l + E 2.val

L o s tres n o d o s d e l g ra fo d e d e p e n d e n c ia s m a r c a d o s c o n • r e p r e s e n ta n los a tr ib u to s
s in te tiz a d o s E .val , E \.va l y E 2.val e n lo s n o d o s c o r r e s p o n d ie n te s d e l á rb o l d e a n álisis

Fig. 5.6. E.val se sintetiza a partir d e £ |. v a / y E2val.

s in tá c tic o . L a a ris ta h a c ia E .v a l d e s d e E y.val m u e s tr a q u e E .va l d e p e n d e d e E \.v a l y


la a r is ta h a c ia E .val d e s d e E 2.val m u e s tr a q u e E .va l ta m b ié n d e p e n d e d e E 2.val. Las
lín e a s c o n p u n t o s re p re s e n ta n al á r b o l d e a n á lis is s in tá c tic o y n o s o n p a r te del g rafo
d e d e p e n d e n c ia s . n

E je m p lo 5 .5 . E n la fig u ra 5 .7 se m u e s tr a el g rafo d e d e p e n d e n c ia s p a r a el á rb o l d e
a n álisis s in tá c tic o d e la fig u ra 5.5. L os n o d o s e n los g rafo s d e d e p e n d e n c ia s están
m a r c a d o s c o n n ú m e r o s ; e s to s n ú m e r o s s e rá n u tiliz a d o s p o s te r io r m e n te . H a y u n a
294 T R A D U C C I O N D I R I G I D A P O R LA S I N T A X I S

a ris ta h acia el n o d o 5 p a r a L .h er d e s d e el n o d o 4 p a r a T tip o p o r q u e el a t r i b u t o h e ­


re d a d o L .h er d e p e n d e del a tr ib u to T tip o s e g ú n la reg la s e m á n tic a L .h e r : - T tip o
p a r a la p ro d u c c ió n D - > T L . L as d o s a ris ta s q u e a p u n t a n h a c ia a b a jo e n los n o d o s
7 y 9 su rg en p o r q u e d e p e n d e d e L .h e r s e g ú n la regla s e m á n tic a L \ .h e r : = L .h e r p a r a
la p ro d u c c ió n L - » id. C a d a u n a d e las reglas s e m á n tic a s añadetipo{\á.entrada,
L .her) a s o c ia d a c o n las p r o d u c c i o n e s d e L c o n d u c e a la c r e a c ió n d e u n falso a t r i ­
b u to . L o s n o d o s 6 , 8 y 10 se c o n s titu y e n p a r a d ic h o s falsos a trib u to s . □

O r d e n de ev alu ació n

U n ordenam iento ¡apológico d e u n grafo dirig id o acíclico es to d o o r d e n a m ie n to m u


m2 m k d e los n o d o s del g rafo tal q u e las arista s v a y a n d e sd e los n o d o s q u e a p a ­
recen p r im e ro e n el o r d e n a m ie n to a los q u e a p a re c e n m á s ta rd e ; es decir, si m , - » m ,
es u n a arista d e sd e m , a m h e n to n c e s m , a p a re c e a n te s q u e m , e n el o r d e n a m ie n to .
Todo o r d e n a m i e n t o to p o ló g ico d e u n g ra fo d e d e p e n d e n c ia s d a u n o r d e n v álid o
e n el q u e se p u e d e n e v a lu a r las reglas s e m á n tic a s a s o c ia d a s c o n lo s n o d o s d e u n á r ­
bol d e análisis s in tá c tic o . E s d ecir, e n el o r d e n a m i e n t o to p o ló g ic o , los a tr i b u to s d e ­
p e n d ie n te s Cu c2, . . . , ck e n u n a regla s e m á n t ic a h : = / ( c , , c2, . . . , ck) e s tá n d is p o ­
nibles e n u n n o d o a n te s d e q u e se e v a lú e f

T 4 her 5 L
tipo
real id , 3 entrada
her 7

kl7 2 entrada
her 9

id,
tI entrada

Fig. 5.7. G ra fo d e dependencias p a ra el árbol d e análisis sintáctico d e la figura 5.5.

La tr a d u c c ió n e sp e c ific a d a p o r u n a d e fin ic ió n d irig id a p o r la s in ta x is se p u e d e


p re c isa r c o m o sigue. Se u tiliz a la g ra m á tic a s u b y a c e n te p a r a c o n s tr u i r u n á rb o l de
a n álisis s in tá c tic o p a r a la e n tr a d a . El g rafo d e d e p e n d e n c ia s se c o n s tr u y e c o m o se
in d ic a m á s a rrib a . A p a r ti r d e u n o r d e n a m i e n t o to p o ló g ic o del g rafo d e d e p e n d e n ­
cias. se o b tie n e u n o rd e n d e e v a lu a c ió n p a r a las reglas se m á n tic a s . L a e v lu a c ió n de
las reglas s e m á n tic a s en este o r d e n p r o d u c e la tr a d u c c ió n d e la c a d e n a d e e n tra d a .

E je m p lo 5 .6 . C a d a u n a d e la s arista s e n el g rafo d e d e p e n d e n c ia s d e la fig u ra 5.7 va


d e sd e u n n o d o c o n u n n ú m e r o m e n o r h a c ia u n n o d o c o n u n n ú m e r o m a y o r. P o r
ta n to , u n o r d e n a m ie n to to p o ló g ic o d e l g rafo d e d e p e n d e n c ia s se o b tie n e e sc rib ie n d o
los n o d o s e n el o r d e n d e s u s n ú m e ro s . A p a r t i r d e este o r d e n to p o ló g ic o , se o b tie n e
5.2 C O N ST R U C C IO N DE ARBOLES SINTA CTIC O S 295

el sig u ie n te p r o g r a m a . S e e sc rib e a„ p a r a el a t r i b u t o a s o c ia d o c o n el n o d o n u m e r a d o
c o n n e n el g rafo d e d e p e n d e n c ia s .

a a : = real;
üf,: = aA\
añadet ipo(\d ¡.entrada. a 5);
a? := tfs;
añadet ipo(\á2.entrada.ai );
£79: = £77 ;

añadetipo(\áx.entrada, a q)\

L a e v a lu a c ió n d e estas reglas s e m á n tic a s a lm a c e n a el tip o real e n la e n t r a d a d e la


ta b la d e s ím b o lo s p a r a c a d a id e n tific a d o r. □

S e h a n p r o p u e s to v a rio s m é to d o s p a r a e v a lu a r las reglas s e m á n tic a s:

1. M étodos con árbol d e a n á lisis sintáctico. E n el m o m e n t o d e la c o m p ila c ió n ,


esto s m é to d o s o b tie n e n u n o r d e n d e e v a lu a c ió n a p a r ti r d e u n o r d e n a m i e n t o
to p o ló g ic o del g ra d o d e d e p e n d e n c ia s c o n s tr u id o según el á rb o l d e a n álisis s in ­
tá c tic o p a r a c a d a e n tr a d a . E sto s m é to d o s n o c o n s e g u irá n e n c o n t r a r u n o r d e n d e
e v a lu a c ió n só lo si el g ra fo d e d e p e n d e n c ia s p a r a el á rb o l d e a n á lis is s in tá c tic o
d e te r m in a d o q u e se c o n s id e r a tie n e u n ciclo.

2. M étodos basados en reglas. E n el m o m e n t o d e la c o n s tr u c c ió n del c o m p ila d o r ,


la s reglas s e m á n tic a s a s o c ia d a s c o n las p r o d u c c io n e s se a n a liz a n a m a n o o c o n
u n a h e r r a m i e n t a e s p e c ia liz a d a . P a r a c a d a p r o d u c c i ó n el o r d e n e n q u e se e v a ­
l ú a n los a tr i b u to s a s o c ia d o s c o n d ic h a p r o d u c c ió n q u e d a p r e d e te r m in a d o e n el
m o m e n t o d e la c o n s tr u c c ió n del c o m p ila d o r.

3. M éto d o s "sin recuerdo". S e escoge u n o r d e n d e e v a lu a c ió n sin c o n s id e r a r la s re­


glas s e m á n tic a s . P o r e je m p lo , si la tr a d u c c ió n tie n e lu g a r d u r a n t e el a n á lis is s in ­
tá c tic o , e n to n c e s el o r d e n d e e v a lu a c ió n se ve f o rz a d o p o r el m é to d o d e análisis,
i n d e p e n d i e n t e m e n t e d e las reg las s e m á n tic a s . U n o r d e n d e e v a lu a c ió n s in r e ­
c u e r d o li m it a la clase d e d e f in ic io n e s d ir ig id a s p o r la s in ta x is q u e p u e d e n i m ­
p la n ta rse .

L o s m é to d o s s in r e c u e r d o y los b a s a d o s en reglas n o n e c e s ita n c o n s tr u i r d e m a ­


n e ra ex plícita el g rafo d e d e p e n d e n c ia s e n el m o m e n t o d e la c o m p ila c ió n , así q u e p u e ­
d e n ser m á s eficaces e n el u s o q u e h a c e n del ti e m p o y del esp acio d e l c o m p ila d o r.
Se d ic e q u e u n a d e fin ic ió n d irig id a p o r la sin ta x is es circular si el g ra fo d e d e p e n ­
d e n c ia s p a r a u n á rb o l d e a n álisis s in tá c tic o g e n e ra d o p o r su g r a m á tic a tie n e u n ciclo.
L a secció n 5 .1 0 e s tu d ia c ó m o c o m p r o b a r si u n a d e fin ic ió n d irig id a p o r la s in ta x is es
circu lar.

5 .2 C O N S T R U C C I O N D E A R B O L E S S I N T A C T I C O S

E n e s ta secció n se m u e s tr a c ó m o se p u e d e n u tiliz a r las d e fin ic io n e s d irig id a s p o r la


s in ta x is p a r a e s p e c ific a r la c o n s tr u c c ió n d e á rb o le s s in tá c tic o s y o tr a s re p r e s e n ta c io ­
n e s g ráficas d e c o n s tr u c c io n e s d e lenguajes.
296 T R A D U C C IO N DIRIG IDA POR LA SIN TA X IS

El u s o d e á rb o le s s in tá c tic o s c o m o re p re s e n ta c ió n in te r m e d ia p e r m ite q u e la tr a ­
d u c c ió n se s e p a r e d e l a n á lis is s in tá c tic o . L a s r u t i n a s d e t r a d u c c ió n in v o c a d a s d u ­
r a n t e el a n á lis is s in tá c tic o d e b e n a c tiv a rs e c o n d o s clases d e lim ita c io n e s . L a p r i­
m e ra . u n a g ra m á tic a q u e resu lte a d e c u a d a p a r a el a n álisis sin tá ctic o p u e d e n o reflejar
la e s tr u c tu r a je r á r q u ic a n a tu ra l d e las c o n s tr u c c io n e s del len g u aje. P o r e je m p lo , u n a
g r a m á t i c a p a r a F O R T R A N p u e d e c o n s i d e r a r q u e u n a s u b r u t i n a c o n s t a s im p l e ­
m e n te d e u n a lista d e p ro p o s ic io n e s. S in e m b a r g o , el a n álisis d e la s u b r u t i n a p u e d e
sim p lific a rse u tiliz a n d o u n a re p re s e n ta c ió n d e l á rb o l q u e refleje el a n i d a m i e n t o de
los la zo s d o . L a s e g u n d a , el m é to d o d e a n á lis is s in tá c tic o restrin g e el o r d e n e n q u e
se c o n s id e ra n los n o d o s d e u n á rb o l d e a n á lis is s in tá c tic o . E ste o r d e n p u e d e n o c o in ­
c id ir c o n el o r d e n e n q u e se va d is p o n ie n d o d e la in f o r m a c ió n so b re u n a c o n s tr u c ­
c ió n . P o r esta ra z ó n , los c o m p ila d o r e s p a r a C g e n e r a lm e n te c o n s tr u y e n á rb o le s s in ­
tá c tic o s p a r a las d e c la ra c io n e s.

A rb o le s sin tá c tic o s

U n á rb o l s in tá c tic o ( a b s tr a c to ) e s u n a f o r m a c o n d e n s a d a d e u n á rb o l d e a n á lis is s in ­
tá c tic o , ú til p a r a r e p r e s e n ta r c o n s tr u c c io n e s d e lenguajes. L a p r o d u c c ió n S -> i f B
th e n S i e ls e S 2 p u e d e a p a r e c e r e n u n á rb o l s in tá c tic o c o m o

¡ f- th e n -e ls e

B S, S2

E n u n á rb o l s in tá c tic o , los o p e r a d o r e s y las p a la b r a s c la v e n o a p a re c e n c o m o h ojas,


sin o q u e m á s b ie n e s tá n a s o c ia d a s c o n el n o d o in te r io r q u e seria el p a d re d e d ic h a s
h o ja s e n el á rb o l d e a n álisis s in tá c tic o . O t r a s im p lific a c ió n h a lla d a e n los á rb o le s s in ­
tá c tic o s es q u e las c a d e n a s d e las p ro d u c c io n e s s im p le s p u e d e n e s ta r ro ta s ; el árb o l
d e a n álisis s in tá c tic o d e la fig u ra 5.3 se c o n v ie r te e n el á rb o l s in tá c tic o

3 5

La tr a d u c c ió n d irig id a p o r la sin ta x is se p u e d e b a s a r e n á rb o le s sin tá c tic o s así


c o m o en á rb o le s d e a n álisis s in tá c tic o . El e n f o q u e es el m is m o e n c a d a caso; se a s o ­
c ia n a tr i b u to s a los n o d o s c o m o en u n á rb o l d e a n álisis sin tá ctic o .

C o n str u c c ió n d e á r b o le s s in tá c tic o s p ara e x p r e s io n e s

La c o n s tr u c c ió n d e u n árb o l s in tá c tic o p a r a u n a e x p re s ió n e s s im ila r a la tr a d u c c ió n


d e la e x p re s ió n a u n a fo rm a po stfija. S e c o n s tr u y e n s u b á rb o le s p a r a la s su b ex p resio -
n e s c r e a n d o u n n o d o p a r a c a d a o p e r a d o r y c a d a o p e r a n d o . L o s h ijo s d e u n n o d o d e
5.2 C O N ST R U C C IO N DE ARBOLES SINTA CTIC O S 297

u n o p e r a d o r s o n la s r a íc e s d e lo s n o d o s q u e r e p r e s e n t a n la s s u b e x p r e s io n e s q u e
c o n s titu y e n los o p e r a n d o s d e d ic h o o p e ra d o r.
S e p u e d e i m p l a n t a r c a d a n o d o e n u n árb o l s in tá c tic o c o m o u n re g istro c o n va­
rios c a m p o s . E n el n o d o p a r a u n o p e ra d o r, u n c a m p o id en tific a el o p e r a d o r y el resto
d e los c a m p o s c o n tie n e a p u n t a d o r e s a los n o d o s d e los o p e r a n d o s . El o p e r a d o r a
m e n u d o se d e n o m in a la etiqueta d e l n o d o . C u a n d o se u s a n p a r a tr a d u c ir los n o d o s
d e u n á rb o l s in tá c tic o p u e d e n t e n e r c a m p o s a d ic io n a le s p a r a g u a r d a r lo s v alo res
( o a p u n ta d o r e s a los v alores) d e lo s a tr ib u to s a s o c ia d o s al n o d o . E n esta secció n , se
u tiliz a n las sig u ie n te s f u n c io n e s p a r a c r e a r los n o d o s d e los á rb o le s s in tá c tic o s p a ra
e x p resio n es c o n o p e ra d o re s b in ario s. C a d a fu n c ió n d ev u elv e u n a p u n t a d o r a u n n o d o
recién c re a d o .

1. haznodo(op. izquierda, derecha) c r e a u n n o d o p a r a u n o p e r a d o r c o n e tiq u e ta op


y d o s c a m p o s q u e c o n tie n e n a p u n t a d o r e s a izquierda y derecha.

2. hazhoja( id. entrada) c r e a u n n o d o p a r a u n id e n tif ic a d o r c o n e tiq u e ta id y u n


c a m p o q u e c o n tie n e entrada, q u e e s u n a p u n t a d o r a la e n t r a d a d e la ta b la d e
s ím b o lo s p a r a el id e n tific a d o r.

3. hazhoja{ n ú m , val) c re a u n n o d o p a r a u n n ú m e r o c o n e tiq u e ta n ú m y u n c a m p o


q u e c o n tie n e val, el v a lo r del n ú m e ro .

E je m p lo 5 .7 . L a sig u ie n te s e c u e n c ia d e lla m a d a s a f u n c io n e s c r e a el á rb o l s in tá c tic o


p a r a la e x p re s ió n a - 4 + c d e la figura 5 .8 . E n esta se c u e n c ia , p \. p i ps s o n a p u n ­
ta d o r e s a n o d o s y entradaa y entradac s o n a p u n t a d o r e s a las e n tr a d a s d e la ta b la d e
s ím b o lo s p a r a los id e n tific a d o re s a y c , re s p e c tiv a m e n te .

(1) p , : = hazhoja(\ú. entradaa ); (4) p A : = hazhoja(id. entradac):


(2 ) p i : = hazhoja( n ú m , 4); (5) p 5 : = h a zn o d o ('+ \ p y%p 4);
(3) p 3 : = h a z n o d o C P i . Pi)\

El árb o l se c o n s tr u y e d e a b a jo a a r r ib a . L as lla m a d a s d e f u n c io n e s h a zh o ja (\d %


entradaa) y hazhoja(nú m . 4 ) c o n s tr u y e n las h o ja s p a r a a y 4; se g u a r d a n los a p u n ­
ta d o re s a estos n o d o s u tiliz a n d o P i y p?. L a lla m a d a a h a zn o d o C -, P\. P2 ) c o n stru y e
d e s p u é s el n o d o in te r io r c o n las h o ja s p a r a a y 4 c o m o hijos. D e s p u é s d e d o s p a so s
m á s p$ q u e d a a p u n t a n d o a la raíz. □

a la e n tra d a p a ra a

F ig . 5 . 8 . A rbol sin táctico para a - 4 + c .


298 T R A D U C C IO N D IR IG ID A POR LA SINTA XIS

U n a d e fin ic ió n d ir ig id a p or la s in t a x is p a ra c o n str u ir á r b o le s s in tá c tic o s

L a fig u ra 5 .9 c o n tie n e u n a d e fin ic ió n c o n a tr i b u to s s in te tiz a d o s p a r a c o n s tr u i r u n


á rb o l s in tá c tic o p a r a u n a e x p re s ió n q u e c o n tie n e los o p e r a d o r e s + y - . U tiliz a las
p ro d u c c io n e s s u b y a c e n te s d e la g r a m á tic a p a r a o r g a n iz a r las lla m a d a s a las fu n c io ­
n e s h a zn o d o y hazh o ja p a r a c o n s tr u i r el á rb o l. E l a t r i b u t o s in te tiz a d o apn p a r a £ y
T c o n s e rv a los a p u n t a d o r e s d e v u e lto s p o r las lla m a d a s a las fu n cio n es.

P r o d u c c ió n R eglas S emánticas

£ -► £ ,+ T E .apn : = haznodo ( V . E\.apn. T.apn)


E -* E x- T E .apn : = haznodo £ , . apn, T.apn)
E —►T E .a p n : = T.apn
£ -> (£ ) T.apn : = E.apn
T -> id T.apn : = hazhoja (id, id. entrada)
T -* núm T.apn : = hazhoja (núm. núm. va/)

Fig. 5.9. Definición dirigida por la sintaxis p a ra co n stru ir un árbol sintáctico d e una
expresión.

E je m p lo 5 .8 . E n la fig u ra 5 .1 0 se m u e s tr a u n árb o l d e a n á lis is s in tá c tic o c o n a n o ­


ta c i o n e s q u e r e p r e s e n ta la c o n s t r u c c i ó n d e u n á r b o l s i n t á c t i c o p a r a la e x p r e s ió n
a - 4 + c . El árb o l d e a n á lis is s in tá c tic o a p a re c e c o n p u n to s . L os n o d o s d e l á rb o l d e
a n álisis s in tá c tic o e tiq u e ta d o s c o n los n o te r m in a le s E y T u s a n el a tr ib u to s in te ti­
z a d o a p n p a r a g u a r d a r u n a p u n t a d o r al n o d o del á rb o l s in tá c tic o p a r a la e x p re sió n
re p re s e n ta d a p o r el n o te rm in a l.

E apn

F ig. 5 .1 0 . C on stru cción d e u n árbol sin táctico para a - 4 + c .


5.2 C O N S T R U C C IO N DE A R BO LE S SINTA CTIC O S 299

L as reglas s e m á n tic a s a s o c ia d a s c o n las p ro d u c c io n e s id y 7 —> n ú m d e fin e n


el a t r i b u t o T .apn c o m o u n a p u n t a d o r a u n a h o ja n u e v a p a r a u n id e n tif ic a d o r y u n
n ú m e r o , re s p e c tiv a m e n te . L o s a tr i b u to s id entrada y núm . va/ s o n los v alo res léxicos
q u e se s u p o n e n h a b e r sid o d e v u e lto s p o r el a n a liz a d o r léxico c o n los c o m p o n e n te s
léxicos id y núm .
E n la fig u ra 5 .1 0 , c u a n d o u n a e x p re s ió n E es u n solo té r m in o , c o r r e s p o n d ie n te
a u n uso d e la p ro d u c c ió n E T, el a trib u to E .apn o b tie n e el v alo r d e T.apn. C u a n d o
se in v o c a la regla s e m á n tic a E .apn : = h a zn o d o ('-', E \.a p n , T.apn) a s o c ia d a c o n la
p ro d u c c ió n E - > £ j - T, reglas a n te r io r e s h a n a s ig n a d o a E x.apn y T.apn la fu n ció n
d e a p u n ta d o r e s a la s h o ja s p a r a a y 4 , re s p e c tiv a m e n te .
Al i n t e r p r e t a r la fig u ra 5 .1 0 , e s i m p o r t a n t e o b s e r v a r q u e el á r b o l in fe rio r, fo r­
m a d o a p a r t i r d e reg istro s, es u n á r b o l s in tá c tic o “ r e a l" q u e c o n s titu y e la salid a,
m ie n tr a s q u e el á rb o l s u p e r io r c o n p u n to s es el á rb o l d e a n á lis is s in tá c tic o q u e p u e d e
e x is tir s ó lo e n u n s e n tid o fig u ra tiv o . E n la s ig u ie n te se c c ió n se m u e s t r a c ó m o p u e ­
d e im p la n ta r s e u n a d e fin ic ió n c o n a tr i b u to s s in te tiz a d o s u tiliz a n d o s im p le m e n te la
p ila d e u n a n a liz a d o r s in tá c tic o a s c e n d e n te p a r a g u a r d a r los v alo res d e los a trib u to s .
D e h e c h o , c o n esta im p la n ta c ió n , la s f u n c io n e s p a r a la c o n s tr u c c ió n d e n o d o s se in ­
v o c a n e n el m is m o o rd e n q u e e n el e je m p lo 5.7. □

G r a fo s d ir ig id o s a c íc lic o s p a ra e x p r e s io n e s

U n g rafo d irig id o ac íc lic o ( q u e a p a r ti r d e a h o r a se lla m a r á G D A ) p a r a u n a e x p re ­


sión identifica s u s su b e x p re sio n e s c o m u n e s . C o m o u n árb o l sintáctico , u n G D A tiene
u n n o d o p a r a t o d a s u b e x p r e s ió n d e la e x p r e s ió n ; u n n o d o i n t e r i o r r e p r e s e n ta u n
o p e r a d o r y s u s h ijo s r e p r e s e n t a n s u s o p e r a n d o s . L a d if e r e n c ia e s q u e u n n o d o e n
u n G D A q u e re p re s e n ta a u n a su b ex p resió n c o m ú n tie n e m á s d e u n “ p a d re " ; e n un
árb o l s in tá c tic o , la s u b e x p re s ió n c o m ú n se re p re s e n ta ría c o m o u n s u b á r b o l d u p li­
cad o .
L a figura 5.11 c o n tie n e u n G D A p a r a la ex p resió n

a + a * ( b - c ) + ( b - c ) * d

L a h o ja p a r a a tien e d o s p a d r e s p o r q u e a e s c o m ú n a las d o s s u b e x p re s io n e s a y
a * ( b - c ) . A s im is m o , a m b a s o c u r r e n c ia s d e la s u b e x p re s ió n c o m ú n b - e s e
re p re s e n ta n c o n el m is m o n o d o , q u e ta m b ié n tie n e d o s padres.

\ d

F ig. 5 .1 1 . G D A para la e x p r esió n a + a * ( b - c ) + ( b - c ) * d .


300 T R A D U C C I O N D I R I G I D A P O R LA S I N T A X I S

L a d e fin ic ió n d irig id a p o r la sin ta x is d e la fig u ra 5 .9 c o n s tr u ir á u n G D A e n lugar


d e u n á rb o l s in tá c tic o si se m o d if ic a n las o p e r a c io n e s p a r a c o n s tr u i r n o d o s. S e o b ­
tien e u n G D A si la f u n c ió n q u e c o n s tr u y e u n n o d o c o m p r u e b a p r im e r o si ya existe
u n n o d o id é n tic o . P o r e je m p lo , a n te s d e c o n s tr u i r u n n u e v o n o d o c o n e tiq u e ta op y
c a m p o s c o n a p u n t a d o r e s a izq u ierd a y derecha , h a zn o d o io p , izquierda ; derecha ),
p u e d e c o m p r o b a r si d i c h o n o d o ya h a sid o c o n s tr u i d o . Si a s í es, h a zn o d o io p , iz ­
quierda, derecha ) p u e d e d e v o lv e r u n a p u n t a d o r al n o d o p r e v ia m e n te c o n s tr u id o . L a
fu n c ió n p a r a c o n s tr u ir h o ja s h a zh o ja se p u e d e c o m p o r t a r d e m a n e r a sim ilar.

E je m p lo 5 .9 . L a s e c u e n c ia d e in s tr u c c io n e s d e la fig u ra 5 .1 2 c o n s tr u y e el G D A d e
la figura 5.11, a c o n d ic ió n d e q u e haznodo y hazhoja cre e n n u e v o s n o d o s sólo c u a n d o
sea n ecesario , d e v o lv ie n d o s ie m p re q u e sea p o s ib le los a p u n t a d o r e s a los n o d o s exis­
te n te s c o n la e tiq u e ta e h ijo s a d e c u a d o s . E n la fig u ra 5 .1 2 , a , b , c, y d a p u n t a n a las
e n tr a d a s d e la ta b la d e s ím b o lo s p a r a los id e n tific a d o re s a . b , c y d .

(1) P\ = hazhoja(id, a): (8) P 8 = hazhoja{ id. b)\


(2) Pi = hazhoja(\ d. a)\ (9) Po = hazhoja{ id. c);
(3) Pi = hazhoja(id. b)\ (10) Pío = h a zn o d o i'-, P&, P<>)\
(4) Pa = hazhojaji d. c); (H ) P ii = hazhojaiió. d)\
(5) P i = h a z n o d o i p y. p4)\ (12) P \2 = haznodoi'*', p l0, P n ) :
(6) P t,= haznodoi'*'. p 2, />*); (13) Pi3 = haznodoi ’+', p7, p l2)\
(7) P i = haznodoi '+', , pb)\

Fig. 5.12. Instrucciones para c o n s tru ir el grafo dirigido aciclico de la figura 5.11.

C u a n d o la lla m a d a hazhoja{\ d . a) se r e p ite e n la lín e a 2, se d e v u e lv e el n o d o


c o n s tr u id o p o r la lla m a d a p re v ia h a zhoja( id. a), d e m o d o q u e p \ = p 2. A sim is m o ,
los n o d o s d e v u e lto s e n las lín eas 8 y 9 s o n los m is m o s q u e los d e v u e lto s e n las lín eas
3 y 4. re s p e c tiv a m e n te . P o r ta n to , el n o d o d e v u e lto e n la lín ea 10 d e b e s e r el m is m o
c o n s tr u id o p o r la lla m a d a d e hazn od o e n la lín e a 5. □

E n m u c h a s a p lic a c io n e s, lo s n o d o s se i m p l a n t a n c o m o reg istro s a l m a c e n a d o s en


u n a m a triz , c o m o e n la fig u ra 5 .1 3 . E n la figura, c a d a re g istro tie n e u n c a m p o d e
e tiq u e ta q u e d e t e r m in a la n a tu ra le z a d e l n o d o . Se p u e d e h a c e r referen cia a u n n o d o
p o r s u ín d ic e o p o sic ió n e n la m a triz . El ín d ic e e n t e r o d e u n n o d o a m e n u d o se de-

A sig n a ció n G da R epresen ta ció n

id a la en trad a
1

i := i + 10
\ +
2 num 10
para i

3 + 1 2
/ \ 10
4 := 1 3
5 • • •

F ig . 5 .1 3 . N o d o s d e u n G D A para i s= i + 1 0 a s ig n a d o s a partir d e u n a m atriz.


5.2 C O N ST R U C C IO N DE ARBOLES SINTA CTIC O S 301

n o m i n a u n n ú m ero d e valor p a r a r a z o n e s h is tó ric a s . P o r e je m p lo , u t i liz a n d o n ú ­


m e ro s d e v a lo r, se p u e d e d e c ir q u e el n o d o 3 tie n e e tiq u e ta +, su h ijo iz q u ie r d o es
el n o d o 1 y su h ijo d e r e c h o e s el n o d o 2. Se p u e d e u tiliz a r el sig u ie n te a lg o r itm o p a r a
c r e a r n o d o s p a r a u n a r e p re s e n ta c ió n c o n G D A d e u n a ex p resió n .

A lg o ritm o 5 .1 . M é to d o d e l n ú m e r o d e v a lo r p a r a c o n s tr u i r u n n o d o en u n G D A .

S u p ó n g a s e q u e los n o d o s e s tá n a lm a c e n a d o s e n u n a m a triz c o m o e n la fig u ra 5.13,


y q u e se h a c e referen cia a c a d a n o d o p o r s u n ú m e r o d e v a lo r. S e a la signatura d e u n
n o d o d e u n o p e r a d o r u n trip le < o p , /, d > q u e c o n s ta d e s u e tiq u e ta op. el h ijo iz­
q u ie r d o i y el h ijo d e r e c h o d.

E ntrada. L a e tiq u e ta op. el n o d o i y el n o d o d.

Salida. U n n o d o c o n s ig n a tu ra < o p . i, d > .

M étodo. B ú s q u e s e la m a tr iz p a r a u n n o d o m c o n e tiq u e ta op. h ijo iz q u ie r d o i e h ijo


d e r e c h o d. Si ex iste ta l n o d o , d e v u é lv a s e m \ d e lo c o n tra rio , créese u n n u e v o n o d o
n c o n e tiq u e ta op. h ijo iz q u ie r d o / e h ijo d e r e c h o d y d e v u é lv a se n.
U n a m a n e r a e v id e n te d e d e t e r m in a r si el n o d o m y a e s tá e n la m a tr iz e s g u a rd a r
to d o s los n o d o s c r e a d o s c o n a n t e r io r id a d e n u n a lista y c o m p r o b a r c a d a n o d o d e la
lista p a r a v e r si tie n e la s ig n a tu ra d e s e a d a . L a b ú s q u e d a d e m p u e d e s e r m á s eficien te
si se u tiliz a n k listas, lla m a d a s c u b e ta s , y u n a f u n c ió n d e d is p e rs ió n h p a r a d e t e r m i­
n a r q u é c u b e t a se d e b e b u s c a r 1.
L a f u n c ió n d e d is p e rs ió n h c a lc u la el n ú m e r o d e u n a c u b e ta a p a r ti r d e l v a lo r d e
op, i y d. S ie m p r e d e v o lv e rá el m i s m o n ú m e r o d e c u b e ta , d a d o s los m is m o s a rg u ­
m e n to s . Si m n o está e n la c u b e t a h(op, i, d), e n to n c e s se c r e a u n n u e v o n o d o n y se
a ñ a d e a la c u b e ta , d e m o d o q u e las p r ó x im a s b ú s q u e d a s lo e n c o n t r a r á n allí. V arias
s ig n a tu ra s p u e d e n c o in c id ir p o r la f u n c ió n d e d is p e rs ió n e n el m is m o n ú m e r o d e
c u b e ta , p e r o e n la p rá c tic a se s u p o n e q u e c a d a c u b e t a c o n tie n e u n n ú m e r o p e q u e ñ o
d e n o do s.
C o m o se m u e s tra e n la fig u ra 5 .1 4 , c a d a c u b e t a se p u e d e i m p l a n t a r c o m o u n a
lista e n la z a d a . C a d a c e ld a e n u n a lista e n la z a d a re p r e s e n ta u n n o d o . L os e n c a b e z a ­
m ie n to s d e las c u b e ta s , q u e c o n s ta n d e a p u n t a d o r e s a la p r im e r a c e ld a d e u n a lista,
se a l m a c e n a n e n u n a m a triz . El n ú m e r o d e c u b e t a d e v u e lto p o r h(op, /, d ) e s u n
ín d ic e d e n t r o d e d ic h a m a tr iz d e e n c a b e z a m ie n to s d e cu b etas.
Se p u e d e a d a p t a r este a lg o r itm o p a r a la a p lic a c ió n a n o d o s q u e n o e s té n u b ic a ­
d o s s e c u e n c ia lm e n te a p a r ti r d e u n a m a tr iz . E n m u c h o s c o m p ila d o re s , los n o d o s se
u b ic a n c o n f o r m e s e v a n n e c e s ita n d o p a r a e v i ta r p r e a s ig n a r u n a m a tr iz q u e q u iz á
c o n te n g a d e m a s ia d o s n o d o s la m a y o r p a r te d e l ti e m p o y n o los s u fic ie n te s a lg u n a s
veces. E n e s te caso, n o se p u e d e s u p o n e r q u e los n o d o s estén e n a l m a c e n a m ie n to
sec u e n c ia l, a s i q u e d e b e n u tiliz a rse a p u n t a d o r e s p a r a referirse a ellos. Si se p u e d e

1 B asta c u a lq u ie r e stru ctu ra d e d a l o s q u e im p la n t e d ic c io n a r io s e n e l s e n t i d o d e A h o , H o p c r o ft y


U l l m a n 11 9 8 3 ]. La p r o p ie d a d im p o r t a n t e d e la e stru ctu ra e s q u e , d a d a u n a c la v e , p o r e j e m p lo , u n a
e tiq u e ta o p y d o s n o d o s i y d . se p u e d e o b t e n e r r á p id a m e n te u n n o d o m c o n sign a tu ra < o p , i. d > .
o d e te r m in a r q u e n o e x is t e n in g u n o .
302 TR A D U C C IO N D IRIG IDA POR LA SINTAXIS

0 Lista de elem entos


q u e rep resentan a los nodos

M atriz d e en cabezam ien to s d e cubetas. 9


in d izad a p o r valor de dispersión

20

Fig. 5.14. E structura de d ato s p a ra la b ú sq u ed a d e cubetas.

c o n s e g u ir q u e la f u n c ió n d e d is p e rs ió n c a lc u le el n ú m e r o d e c u b e t a a p a r ti r d e u n a
e tiq u e ta y d e a p u n t a d o r e s a los h ijo s, e n to n c e s se p u e d e n u tiliz a r a p u n t a d o r e s a los
n o d o s e n lu g a r d e n ú m e r o s d e v a lo r. D e lo c o n tr a r io , se p u e d e n n u m e r a r los n o d o s
d e c u a lq u ie r m a n e r a y u tiliz a r este n ú m e r o c o m o el n ú m e r o d e v a lo r del n o d o . □

T a m b ié n se p u e d e n u tiliz a r los G D A p a r a r e p r e s e n ta r c o n j u n to s d e ex p resio n es,


y a q u e u n G D A p u e d e te n e r m á s d e u n a raíz. E n lo s c a p ítu lo s 9 y 10, los cá lc u lo s
re a liz a d o s p o r u n a s e c u e c ia d e p ro p o s ic io n e s d e a s ig n a c ió n se re p r e s e n ta rá n c o m o
un GDA.

53 EV A L U A C I O N A S C E N D E N T E D E D E F I N I C I O N E S
C O N A T R IB U T O S S IN T E T IZ A D O S

A h o r a q u e se h a a p r e n d i d o a u tiliz a r las d e fin ic io n e s d irig id as p o r s in ta x is p a r a es­


p ecificar tra d u c c io n e s , se p u e d e c o m e n z a r a e s tu d ia r la im p la n ta c ió n d e tr a d u c to r e s
p a r a ellas. P u e d e s e r difícil c o n s tr u i r u n tr a d u c to r p a r a u n a d e fin ic ió n d irig id a p o r
la sin ta x is a rb itra ria . S in e m b a r g o , ex isten a m p lia s clases d e ú tiles d e fin ic io n e s d ir i­
g id a s p o r la s in ta x is p a r a las c u a le s es fácil c o n s tr u ir tr a d u c to r e s . E n e s ta secció n se
e x a m in a u n a d e d ic h a s clases: la s d e fin ic io n e s c o n a tr i b u to s sin te tiz a d o s, es decir,
las d e fin ic io n e s d irig id a s p o r la s in ta x is q u e sólo c o n t ie n e n a tr i b u to s sin te tiz a d o s.
L as sig u ie n tes se c c io n e s c o n s id e r a n la im p la n ta c ió n d e d e fin ic io n e s q u e te n g a n a s i­
m i s m o a tr i b u to s h e re d a d o s.
L o s a tr i b u to s s in te tiz a d o s se p u e d e n e v a lu a r c o n u n a n a liz a d o r s in tá c tic o a s c e n ­
d e n t e c o n f o r m e la e n t r a d a es a n a liz a d a . El a n a liz a d o r s in tá c tic o p u e d e c o n s e r v a r en
su p ila los v alo res d e los a tr ib u to s s in te tiz a d o s a s o c ia d o s c o n los s ím b o lo s g r a m a ti­
cales. S ie m p r e q u e se h a g a u n a re d u c c ió n se c a lc u la n los v a lo re s d e lo s n u e v o s a tri­
b u to s s in te tiz a d o s a p a r ti r d e los a tr ib u to s q u e a p a r e c e n e n la p ila p a r a los s ím b o lo s
g ra m a tic a le s del la d o d e r e c h o d e la p ro d u c c ió n c o n la q u e se re d u c e . E sta sección
m u e s tr a c ó m o se p u e d e a m p lia r la p ila d e l a n a liz a d o r s in tá c tic o p a r a g u a r d a r los va­
lores d e esto s a tr ib u to s sin te tiz a d o s. E n la secció n 5.6 se v e rá q u e esta im p la n ta c ió n
ta m b ié n a d m ite a lg u n o s a tr ib u to s h e re d a d o s.
E n la d e fin ic ió n d irig id a p o r la s in ta x is d e la figura 5 .9 só lo a p a r e c e n a trib u to s
s in te tiz a d o s p a r a c o n s tr u i r el á rb o l s in tá c tic o d e u n a e x p re s ió n . P o r ta n to , el e n fo ­
q u e d e esta se c c ió n se p u e d e a p l ic a r e n la c o n s tr u c c i ó n d e á r b o le s s in tá c tic o s d u ­
5.3 E V A L U A C IO N A S C E N D E N T E D E D EFINICIO NES C O N A T R IB U T O S 303

r a n te el a n álisis s in tá c tic o a s c e n d e n te . C o m o se v e rá e n la se c c ió n 5 .5 . la tr a d u c c ió n
d e e x p re s io n e s d u r a n t e el a n álisis s in tá c tic o d e s c e n d e n te u tiliz a a m e n u d o a trib u to s
h e r e d a d o s . P o r e s o se a p l a z a r á la t r a d u c c i ó n d u r a n t e el a n á lis is s in tá c tic o d e s c e n ­
d e n te h a s ta q u e e n la p r ó x im a secció n se h a y a n e x a m in a d o las d e p e n d e n c ia s d e “ iz­
q u ie r d a a d e r e c h a ” .

A tr ib u to s s in t e tiz a d o s en la p ila d e l a n a liz a d o r s in tá c tic o

A m e n u d o se p u e d e i m p l a n t a r u n t r a d u c t o r p a r a u n a d e fin ic ió n c o n a tr i b u to s s in ­
te tiz a d o s c o n la a y u d a d e u n g e n e r a d o r d e a n a liz a d o r e s s in tá c tic o s L R c o m o el es­
tu d i a d o e n la se c c ió n 4 .9 . A p a r ti r d e u n a d e fin ic ió n c o n a tr i b u to s sin te tiz a d o s, el
g e n e r a d o r d e a n a liz a d o r e s s in tá c tic o s p u e d e c o n s tr u i r u n t r a d u c t o r q u e e v a lú e los
a tr i b u to s c o n f o r m e a n a liz a la e n tra d a .
U n a n a liz a d o r s in tá c tic o a s c e n d e n te u tiliz a u n a p ila p a r a g u a r d a r in f o r m a c ió n
a c e rc a d e los su b ái boles q u e y a h a n s id o a n a liz a d o s . S e p u e d e n u tiliz a r c a m p o s a d i­
cio n a le s e n la p ila del a n a liz a d o r p a r a g u a r d a r los v alo res d e los a tr ib u to s sin te tiz a ­
d o s . E n la fig u ra 5 .1 5 se m u e s tr a u n e je m p lo d e la p ila d e u n a n a liz a d o r s in tá c tic o
c o n e s p a c io p a r a u n v alo r d e a tr ib u to . S u p ó n g a s e q u e , c o m o e n la fig u ra, la p ila se
im p la n ta m e d ia n te u n p a r d e m a tr ic e s esta d o y val. C a d a e n t r a d a d e esta d o e s un
a p u n t a d o r (o ín d ic e ) a u n a ta b la d e a n á lis is s in tá c tic o L R ( 1). (O b sé rv e se q u e el s ím ­
b o lo g ra m a tic a l está im p líc ito e n el e s ta d o y n o n e c e sita a lm a c e n a r s e e n la p ila.) Sin
e m b a r g o , es c o n v e n ie n te referirse al e s ta d o m e d ia n te el ú n ic o s ím b o lo g ra m a tic a l
q u e c u b r e c u a n d o se s itú a e n la p ila d e a n á lis is s in tá c tic o c o m o se d e s c rib ió e n la
secció n 4.7. Si el /-é s im o s ím b o lo d e esta d o es A , e n to n c e s val [i] c o n t e n d r á el v alo r
d e l a tr ib u to a s o c ia d o c o n el n o d o del á rb o l d e a n álisis s in tá c tic o c o r r e s p o n d ie n te a
e s ta A.

estado val
• • • • • •

X X .x
Y Y.y
tope Z Z .z
• • • • • •

F ig . 5 .1 5 . P ila d e l a n a liz a d o r s in tá c t ic o c o n u n c a m p o p a ra lo s a t r ib u t o s s in te tiz a d o s .

El to p e e n c u r s o d e la p ila se in d ic a c o n el a p u n t a d o r tope. S e s u p o n e q u e los


a tr ib u to s s in te tiz a d o s se e v a lú a n j u s t o a n te s d e c a d a re d u c c ió n . S u p ó n g a s e q u e la
regla s e m á n tic a A . a : = J[X.x> Y.y. Z . z ) se a s o c ia c o n la p r o d u c c ió n A X Y Z . A n te s
d e q u e X Y Z se r e d u z c a a A, el v a lo r d e l a t r i b u t o Z . z está e n val[tope], el d e Y .y está
e n val[tope - 1], y el d e X .x en val[tope - 2]. Si u n s ím b o lo n o tie n e n in g ú n a tri­
b u to , e n to n c e s la e n t r a d a c o r r e s p o n d ie n te e n el a rre g lo val está sin d e fin ir. D esp u és
d e la re d u c c ió n , tope se r e d u c e e n 2 , el e s ta d o q u e c u b re A se s itú a e n estado[tope]
(es decir, d o n d e e s ta b a X ), y el v alo r del a trib u to sin te tiz a d o A .a se sitú a e n val [tope].
304 T R A D U C C IO N DIRIG IDA POR LA SIN TA X IS

E jem p lo 5 .1 0 . C o n sid érese d e n u e v o la d e fin ició n dirig id a p o r la sin taxis d e la c alcu ­


la d o ra d e e sc rito rio d e la fig u ra 5.2. L o s a tr ib u to s sin te tiz a d o s en el á r b o l d e a n á li­
sis s in tá c tic o c o n a n o ta c io n e s d e la fig u ra 5 .3 se p u e d e n e v a lu a r m e d ia n te u n a n a ­
liz a d o r s in tá c tic o L R d u r a n te u n a n á lis is a s c e n d e n te d e la lín e a d e e n t r a d a 3 * 5 + 4 n .
C o m o a n te s, se s u p o n e q u e el a n a liz a d o r léx ico p r o p o r c io n a el v a lo r d e l a trib u to
d íg ito . valex, q u e e s el v a lo r n u m é r ic o d e c a d a c o m p o n e n te léxico q u e r e p re s e n ta a
u n d íg ito . C u a n d o el a n a liz a d o r s in tá c tic o d e s p la z a u n d íg ito d e n t r o d e la pila, el
c o m p o n e n te léx ico d íg ito se c o lo c a e n estado[topé) y su v a lo r d e a t r i b u t o se co lo ca
e n val[íope].
Se p u e d e n u tiliz a r las té c n ic a s d e la secció n 4 .7 p a r a c o n s tr u ir u n a n a liz a d o r s in ­
tá c tic o L R p a r a la g r a m á tic a e n c u e s tió n . P a r a e v a lu a r los a trib u to s , se m o d ific a el
a n a liz a d o r sin tá ctic o p a ra q u e e je c u te los fra g m e n to s d e c ó d ig o d e la fig u ra 5 .1 6 ju s to
a n te s d e h a c e r la re d u c c ió n a d e c u a d a . O b sé rv e se q u e se p u e d e a s o c ia r la e v a lu a c ió n
d e a tr i b u to s c o n las re d u c c io n e s , p o r q u e c a d a re d u c c ió n d e t e r m i n a la p ro d u c c ió n
q u e d e b e ap licarse. L o s fra g m e n to s d e c ó d ig o se h a n o b te n id o d e las reglas s e m á n ­
tic a s d e la fig u ra 5.2 s u s titu y e n d o c a d a a t r i b u t o p o r u n a p o s ic ió n e n la m a tr iz val.

P r o d u c x IÓN F r a g m e n t o d f .C ó d i g o

L -* En print(vaH tope))
E-*E, + 7 val [ntope] : = va¡[tope — 2] + va/[tope]
E -♦ T
r-> r, * F va/[ntope ) : = va/[lape - 2) x va/[tope]
r->F
h'->(E) val[ntope] : = val [tope - 1)
/• '-♦ d íg ito

F ig . 5 .1 6 . I m p la n ta c ió n d e u n a c a lc u la d o r a d e e sc r ito r io c o n u n a n a liz a d o r
sintáctico LR.

L o s f r a g m e n to s d e c ó d ig o n o m u e s t r a n c ó m o se m a n e j a n las v a ria b le s to p e y
ntope. C u a n d o se re d u c e u n a p ro d u c c ió n c o n r s ím b o lo s en el la d o d erech o , se asigna
el v a lo r d e ntope a tope - r -+ 1. D e s p u é s d e e je c u ta r c a d a f r a g m e n to d e c ó d ig o se
asig n a to p e a ntope.
E n la fig u ra 5 .1 7 se m u e s tra la s e c u e n c ia d e m o v im ie n to s h e c h o s p o r el a n a liz a ­
d o r s in tá c tic o c o n la e n t r a d a 3 * 5 + 4 n . L o s c o n te n id o s d e lo s c a m p o s d e estado y val
d e la p ila d e l a n a l i z a d o r s in tá c tic o se m u e s t r a n d e s p u é s d e c a d a m o v i m i e n t o . D e
n u e v o se t o m a la lib e r ta d d e s u s t it u ir e s ta d o s d e la p ila p o r s u s c o r r e s p o n d ie n te s
s ím b o lo s g ra m a tic a le s. T a m b ié n s e h a t o m a d o la lib e rta d d e m o s tra r, e n lu g a r del
c o m p o n e n te léx ico dígito, el d íg ito real d e e n tra d a .
C o n s id é re s e la s e c u e n c ia d e su ceso s al v e r el s ím b o lo d e e n t r a d a 3. E n el p r im e r
m o v im ie n to , el a n a liz a d o r s in tá c tic o d e s p la z a el e s ta d o c o r r e s p o n d ie n te al c o m p o ­
n e n te léx ico d íg ito (c u y o v a lo r d e a tr ib u to e s 3) d e n t r o d e la pila. (E l e s ta d o se re­
p re s e n ta c o n 3 y el v alo r 3 está e n el c a m p o val.). E n el s e g u n d o m o v im ie n to , el
5.4 D E F I N I C I O N E S C O N A T R I B U T O S P O R LA I Z Q U I E R D A 305

a n a l iz a d o r s in tá c tic o r e d u c e p o r la p r o d u c c i ó n £ - * d íg ito e i m p l a n t a la regla se­


m á n t i c a F .val : = d í g i t o . valex. E n el t e r c e r m o v i m i e n t o , el a n a l i z a d o r s in tá c tic o
r e d u c e p o r T - * F. N o se a s o c ia n in g ú n f r a g m e n t o d e c ó d ig o a e s ta p r o d u c c i ó n y
la m a tr iz val n o c a m b ia . O b s é rv e s e q u e d e s p u é s d e c a d a r e d u c c ió n , el to p e d e la
p ila v a l tie n e el v a lo r d e l a t r i b u t o a s o c ia d o al l a d o iz q u ie r d o d e la p r o d u c c i ó n q u e
re d u c e . □

P r o d u c c ió n
E ntrada estado val U tiliza d a

3*5+4 n _ _

*5+4 n 3 3
*5+4 n F 3 F - * dígito
*5+4 n T 3 T-*F
5+4 n r* 3-
+4 n r* s 3 -5
+4 n r* F 3_5 £ - * dígito
+4 n T 15 r-> r* f
+4 n E 15 £ -* T
4 n £ + I5 _
n £+4 15-4
n £ + £ 15_4 F - * dígito
n £ + T 15-4 T->F
n £ 19 £ -* £ + T
£ n 19-
L 19 L-* En

Fig. 5.17. M o v im ien to s realizados p o r el tra d u c to r con la e n tra d a 3 * 5 + 4 n .

E n la im p la n ta c ió n e s b o z a d a a n t e r io r m e n t e , los fra g m e n to s d e c ó d ig o se e je c u ­
ta n j u s t o a n te s d e q u e te n g a lu g a r u n a re d u c c ió n . L a s re d u c c io n e s p r o p o r c io n a n u n
“g a n c h o ” e n el q u e se p u e d e n c o lg a r las a c c io n e s q u e c o n s ta n d e fra g m e n to s d e c ó ­
digo a rb itra rio s . E s d ecir, se p u e d e p e r m itir al u s u a rio q u e aso cie u n a a c c ió n c o n
u n a p r o d u c c i ó n e je c u ta d a c u a n d o tie n e lu g a r u n a r e d u c c ió n s e g ú n d ic h a p r o d u c ­
c ió n . L o s e s q u e m a s d e tr a d u c c ió n q u e se c o n s id e r a r á n e n la sig u ie n te secció n p r o ­
p o r c i o n a n u n a n o ta c ió n p a r a in t e r c a la r a c c io n e s c o n el a n á lis is s in tá c tic o . E n la
secció n 5.6 se v e rá c ó m o se p u e d e im p la n t a r u n a clase m a y o r d e d e fin ic io n e s d iri­
g id a s p o r la s in ta x is d u r a n t e el a n álisis s in tá c tic o a s c e n d e n te .

5 .4 D E F I N I C I O N E S C O N A T R I B U T O S P O R L A I Z Q U I E R D A

C u a n d o la tr a d u c c ió n tie n e lu g a r d u r a n t e el a n á lis is s in tá c tic o , el o r d e n d e e v a lu a ­


c ió n d e los a tr ib u to s v a u n i d o al o r d e n e n el q u e , p o r el m é to d o d e a n álisis s in tá c ­
tico, se “ c r e a n ” los n o d o s d e u n á rb o l d e a n á lis is s in tá c tic o . U n o r d e n n a tu r a l q u e
306 T R A D U C C IO N D IR IG ID A POR LA SINTA XIS

c a ra c te riz a m u c h o s m é to d o s d e tr a d u c c ió n d e s c e n d e n te y a s c e n d e n te es el q u e se
o b tie n e a p lic a n d o el p r o c e d im ie n to visita p ro f d e la figura 5.18 a la ra íz d e u n árbol
d e a n á lis is s in tá c tic o . E ste o r d e n d e e v a lu a c ió n se d e n o m i n a orden de evaluación en
profundidad. A u n q u e d e h e c h o n o se c o n s tr u y e el á rb o l d e a n á lis is s in tá c tic o , es útil
e s tu d ia r la tr a d u c c ió n d u r a n t e el a n á lis is s in tá c tic o c o n s id e r a n d o la e v a lu a c ió n en
p r o f u n d id a d d e los a tr i b u to s e n los n o d o s d e u n á rb o l d e a n á lis is sin tá ctic o .

procedure visitaproJ\n : nodo);


begin
for cada hijo m d e n, d e izqu ierd a a d erech a do begin
ev alu ar los a trib u to s heredados de m\
visitaproflm)
end;
ev alu ar los a trib u to s sintetizados de n
end

F ig. 5.18. O rd e n d e evaluación en p ro fu n d id ad p a ra los a trib u to s de u n árbol


d e análisis sintáctico.

A c o n t in u a c i ó n se in tr o d u c e u n a clase d e d e fin ic io n e s d irig id a s p o r la sin tax is,


lla m a d a s d e fin ic io n e s c o n a tr ib u to s p o r la iz q u ie rd a , c u y o s a tr i b u to s s ie m p re se p u e ­
d e n e v a lu a r e n u n o r d e n e n p r o f u n d id a d . (S e les lla m a “ p o r la iz q u ie r d a ” p o r q u e la
in f o r m a c ió n d e los a tr i b u to s p arece flu ir d e iz q u ie r d a a d e re c h a .) E n la s sig u ientes
tres se c c io n e s d e este c a p ítu lo se c o n s id e r a la im p la n t a c ió n d e clases c a d a vez m a ­
y o re s d e d e fin ic io n e s c o n a tr ib u to s p o r la iz q u ie rd a . L as d e fin ic io n e s c o n a trib u to s
p o r la iz q u ie r d a in c lu y e n to d a s las d e fin ic io n e s d irig id as p o r la sin ta x is b a s a d a s en
g ra m á tic a s LL( 1); e n la secció n 5 .5 se p r o p o r c io n a u n m é to d o p a r a i m p l a n t a r d ic h as
d e fin ic io n e s e n u n a so la p a s a d a u tiliz a n d o los m é to d o s d e a n álisis s in tá c tic o p re d ic ­
tiv o . E n la secció n 5.6 se im p la n ta u n a clase m a y o r d e d e fin ic io n e s c o n a trib u to s
p o r la iz q u ie rd a d u r a n t e el a n álisis s in tá c tic o a s c e n d e n te , a m p l i a n d o lo s m é to d o s de
tr a d u c c ió n d e la se c c ió n 5.3. E n la se c c ió n 5 .7 se e s b o z a u n m é to d o g en eral p a ra
im p la n t a r to d a s las d e fin ic io n e s c o n a tr ib u to s p o r la iz q u ie rd a .

D e fin ic io n e s c o n a tr ib u to s p or la izq u ierd a

U n a d e f in i c ió n d ir ig id a p o r la s i n t a x i s e s u n a d e f in i c ió n c o n a trib u to s p o r la iz ­
quierda si c a d a a t r i b u t o h e r e d a d o d e A}, \ < j < n, d e l la d o d e r e c h o d e A - > X2
. . . X m d e p e n d e sólo de:

1. los a tr ib u to s d e los s ím b o lo s X u X 2>. . . . X j. \ a la iz q u ie rd a d e X¡ e n la p r o d u c ­


c ió n y

2. los a tr i b u to s h e re d a d o s d e A.

O b sérv ese q u e to d a d e fin ic ió n c o n a tr i b u to s s in te tiz a d o s es u n a d e fin ic ió n c o n


a tr ib u to s p o r la iz q u ie rd a , p o r q u e las lim ita c io n e s 1 y 2 se refieren só lo a a trib u to s
h e re d a d o s.
5.4 D E F I N I C I O N E S C O N A T R I B U T O S P O R LA I Z Q U I E R D A 307

E je m p lo 5 .1 1 . L a d e fin ic ió n d irig id a p o r la s in ta x is d e la fig u ra 5 .1 9 n o es u n a d e ­


fin ició n c o n a tr ib u to s p o r la iz q u ie r d a p o r q u e el a tr ib u to h e r e d a d o Q .h d e l s ím b o lo
g ra m a tic a l Q d e p e n d e del a tr ib u to R .s d e l s ím b o lo g ra m a tic a l a s u d e re c h a . E n las
se c c io n e s 5.8 y 5 .9 se p u e d e n e n c o n t r a r o tr o s e je m p lo s d e d e fin ic io n e s q u e n o son
d e fin ic io n e s c o n a tr ib u to s p o r la iz q u ie rd a . □

E s q u e m a s d e tradu cción

U n e s q u e m a d e tr a d u c c ió n e s u n a g r a m á tic a in d e p e n d ie n te d e l c o n te x to e n la q u e
se a s o c ia n a tr ib u to s c o n los s ím b o lo s g ra m a tic a le s y se in s e r ta n a c c io n e s s e m á n tic a s
e n c e r r a d a s e n tr e llaves {} d e n t r o d e lo s la d o s d e r e c h o s d e las p ro d u c c io n e s , c o m o e n
la secció n 2 .3 . E n este c a p ítu lo se u tiliz a rá n e s q u e m a s d e tr a d u c c ió n c o m o u n a n o ­
ta c ió n útil p a r a esp ecificar la tr a d u c c ió n d u r a n te el a n álisis sin tá ctic o .

Producción R eglas Semánticas

A L M
•ii•
9

A/ . / : = tn(L.s)
A .s := JlM .s)

A-+QR R .i : = r[A.i)
Q .i: = q{R.s)
A .s : = JIQ .s)

Fig. 5.19. U n a definición dirigida p o r la sintaxis q u e n o es u n a definición co n a trib u to s


p o r la izquierda.

L o s e s q u e m a s d e tr a d u c c ió n c o n s id e r a d o s e n este c a p ítu lo p u e d e n te n e r t a n t o
a tr ib u to s s in te tiz a d o s c o m o h e re d a d o s . E n los e s q u e m a s d e tr a d u c c ió n sim p le s c o n ­
s id e ra d o s e n el c a p itu lo 2, los a tr i b u to s s o n d e tip o c a d e n a , u n o p o r c a d a s ím b o lo , y
p a r a c a d a p ro d u c c ió n A - » . . . X m la regla s e m á n tic a f o r m ó la c a d e n a d e A m e­
d ia n te la c o n c a te n a c ió n d e c a d e n a s d e X u • • • * X n, e n o r d e n , c o n a lg u n a s c a d e n a s
o p c io n a le s a d ic io n a le s e n m e d io . Se c o m p r o b ó q u e se p o d r ía re a liz a r la tr a d u c c ió n
im p r im ie n d o s im p le m e n te las c a d e n a s literales e n el o r d e n e n q u e a p a re c ía n e n las
r e g ia s s e m á n t ic a s .

E je m p lo 5 .1 2 . E ste e s u n e s q u e m a d e tr a d u c c ió n s im p le q u e tr a n s f o r m a e x p re sio n e s
in fija s c o n s u m a y s u s tra c c ió n e n las e x p re s io n e s p o stfijas c o rre s p o n d ie n te s . E s u n a
p e q u e h a re e la b o ra c ió n del e s q u e m a d e tr a d u c c ió n (2 .1 4 ) del c a p ítu lo 2.

£ -> TR
R o p s u m a T { p rin i(o p su m a .lexem a ) } R¡ | e (5.1)
T n ú m { print (n ú m .va l ) }

E n la fig u ra 5 .2 0 se m u e s tr a el á r b o l d e a n álisis s in tá c tic o p a r a la e n t r a d a 9 - 5 + 2


c o n c a d a a c c ió n s e m á n t ic a a s o c ia d a c o m o el h ijo a d e c u a d o d e l n o d o q u e c o rre s-
308 T R A D U C C IO N DIRIG IDA POR LA SIN TA X IS

p o n d e al la d o iz q u ie rd o d e s u p ro d u c c ió n . E n efecto, se c o n s id e ra n las a c c io n e s c o m o
si fu e ra n s ím b o lo s te rm in a le s , u n p u n t o d e v ista q u e e s m n e m o té c n ic a m e n te c o n ­
v e n ie n te p a r a e s ta b le c e r c u á n d o se d e b e n e je c u ta r las a c c io n e s. S e h a t o m a d o la li­
b e r ta d d e m o s tr a r los n ú m e r o s reales y el o p e r a d o r a d itiv o e n lu g a r d e los c o m p o ­
n e n t e s lé x ic o s n ú m y o p s u m a . C u a n d o se r e a liz a n e n o r d e n d e p r o f u n d i d a d , las
a c c io n e s d e la fig u ra 5 .2 0 im p r im e n el r e s u lta d o 9 5 - 2 + . □

C u a n d o se d is e ñ a u n e s q u e m a d e tr a d u c c ió n , se d e b e n re s p e ta r a lg u n a s lim ita ­
c io n e s p a r a aseg u rarse d e q u e el v a lo r d e u n a tr ib u to esté d is p o n ib le c u a n d o u n a
a c c ió n se refiera a él. E stas lim ita c io n e s, m o tiv a d a s p o r las d e fin ic io n e s c o n a t r i b u ­
to s p o r la iz q u ie rd a , g a r a n tiz a n q u e las a c c io n e s n o h a g a n re fe re n c ia a u n a tr ib u to
q u e a ú n n o h a y a sid o calcu lad o .

2 ( p r i n H ' 2' ) } €

Fig. 5.20. A rbol d e análisis sintáctico p a ra 9 - 5 + 2 q u e m u e stra las acciones.

El e je m p lo m á s se n c illo o c u r r e c u a n d o só lo se n e c e s ita n a tr i b u to s sin tetizad o s.


E n este c a s o , se p u e d e c o n s tr u ir el e s q u e m a d e tr a d u c c ió n c r e a n d o u n a a c c ió n q u e
c o n s te d e u n a a s ig n a c ió n p a r a c a d a regla s e m á n tic a y c o lo c a n d o e s ta a c c ió n al final
del la d o d e r e c h o d e la p ro d u c c ió n a so c ia d a . P o r e je m p lo , la p ro d u c c ió n y la regla
s e m á n tic a

Producción R e g l a Se m á n t i c a

T -> r , * F T .va l : = T i.v a l x F.val

d a n c o m o r e s u lta d o la sig u ie n te p ro d u c c ió n y a c c ió n se m á n tic a :

T - * T \ + F { T .v a l : = T \.v a l x F .va l}

Si se ti e n e n a t r i b u t o s t a n t o h e r e d a d o s c o m o s in te tiz a d o s , se d e b e s e r m á s p r u ­
d en te:

1. U n a t r i b u t o h e r e d a d o p a r a u n s ím b o lo e n el la d o d e r e c h o d e u n a p ro d u c c ió n se
d e b e c a lc u la r e n u n a a c c ió n a n te s q u e d ic h o s ím b o lo .

2. U n a a c c ió n n o d e b e referirse a u n a tr ib u to s in te tiz a d o d e u n s ím b o lo q u e esté a


la d e r e c h a d e la a cció n .
5.4 D E F I N I C I O N E S C O N A T R I B U I O S P O R LA I Z Q U I E R D A 309

3. U n a t r i b u t o s in te tiz a d o p a r a el n o te r m in a l d e la iz q u ie r d a só lo se p u e d e c a lc u ­
la r d e s p u é s d e q u e se h a y a n c a lc u la d o to d o s los a tr i b u to s a los q u e h a c e re fe re n ­
cia. L a a c c ió n q u e c a lc u la d ic h o s a tr i b u to s se p u e d e c o lo c a r g e n e r a lm e n te al fi­
nal del la d o d e r e c h o d e la p ro d u c c ió n .

E n las p r ó x im a s d o s seccio n es, se m u e s tr a c ó m o i m p l a n t a r u n e s q u e m a d e tr a d u c ­


c ió n q u e c u m p l a esto s tr e s re q u is ito s m e d ia n te g e n e ra liz a c io n e s d e los a n a liz a d o re s
s in tá c tic o s d e s c e n te s y a s c e n d e n te s .
El sig u ie n te e s q u e m a d e tr a d u c c ió n n o c u m p le el p r im e r o d e lo s tres requ isito s.

S - > A¡ A 2 {A ¡.her : = I ; A 2.her : = 2 )


a -* a { prinl(A.her) }

R e s u lta q u e el a t r i b u t o h e r e d a d o A.her e n la s e g u n d a p ro d u c c ió n n o está d e fin id o


c u a n d o se in te n ta im p r i m i r su v a lo r d u r a n t e u n r e c o r r id o e n p r o f u n d id a d del árb o l
d e a n á lis is s in tá c tic o p a r a la c a d e n a d e e n t r a d a aa. E s d e c ir, u n r e c o r r id o e n p r o f u n ­
d id a d c o m ie n z a e n S y visita los s u b á rb o le s p a r a A¡ y A 2 a n t e s d e q u e se a s ig n e n los
v a lo re s d e A ¡.her y A 2.her. Si se in te rc a la la a c c ió n q u e d e fin e los v a lo re s d e A ¡.her
y A 2.her a n te s q u e los A e n el la d o d e r e c h o d e S -+ A¡A2, e n lu g a r d e h a c e r lo d e s ­
p ués. e n to n c e s se d e fin irá A.her c a d a vez q u e o c u r r a prini(A.her).

Fig. 5.21. C olocación de cajas dirigida p o r la sintaxis.

S ie m p r e es p o s ib le c o m e n z a r c o n u n a d e fin ic ió n d irig id a p o r la s in ta x is c o n a tri­


b u to s p o r la iz q u ie rd a y c o n s tr u i r u n e s q u e m a d e tr a d u c c ió n q u e c u m p l a los tres
re q u is ito s a n te rio re s . El sig u ie n te e je m p lo ilu stra d ic h a c o n s tr u c c ió n . Se b a sa e n el
le n g u a je E Q N p a r a f o r m a t o s m a t e m á t i c o s , q u e fu e d e s c r i t o b r e v e m e n t e e n la
secció n 1.2. D a d a la e n tra d a

E s u b 1 .val

E Q N s itú a E, 1 y .val e n las p o s ic io n e s y t a m a ñ o s rela tiv o s q u e se m u e s tr a n e n la


figura 5.21. O b sérv ese q u e el s u b ín d ic e 1 se im p r im e e n u n t a m a ñ o y tip o m e n o r , y
se tra s la d a h acia a b a jo e n re la c ió n c o n E y .val.

E je m p lo 5 .1 3 . A p a r t i r d e la d e f in ic ió n c o n a t r i b u t o s p o r la iz q u ie r d a d e la fig u ­
r a 5.22, se c o n s tr u ir á el e s q u e m a d e tr a d u c c ió n d e la fig u ra 5.23. E n las figuras, el
n o t e r m i n a l C ( p o r c a ja ) r e p r e s e n ta u n a f ó r m u l a . L a p r o d u c c i ó n C C C r e p r e ­
s e n ta la y u x ta p o s ic ió n d e d o s cajas, y C -> C s u b C r e p re s e n ta la c o lo c a c ió n d e la
s e g u n d a c a ja c o n s u b ín d ic e e n u n t a m a ñ o m e n o r q u e el d e la p r im e r a c a ja e n la
p o sic ió n re la tiv a a p r o p ia d a p a r a u n s u b ín d ic e .
El a tr ib u to h e r e d a d o tp ( p o r t a m a ñ o d e l p u n t o ) a fe c ta la a ltu r a d e u n a fó rm u la .
L a regla p a r a la p r o d u c c ió n C -+ t e x t o h a c e q u e la a ltu r a n o r m a liz a d a d e l te x to se
310 T R A D U C C I O N D I R I G I D A P O R LA S I N T A X I S

P r o d u c c ió n R e g l a s S e m á n t ic a s

S -> C C .tp := 10
S .a l: = C.al

C Cj c 2 C \.tp := C.tp
C2.tp : = C.tp
C.al := m áx(C \.al. C2.al)

C - * C , sub C 2 C \.tp : = C.tp


C2. t p : = contraiiC.tp)
C .a l:= desp(C\.al, C2.al)

C —> texto C .al las te x to .a x C.tp

Fig. 5.22. D efinición dirigida p o r la sintaxis para el ta m a ñ o y la altu ra de cajas.

m u ltip liq u e p o r el t a m a ñ o d e l p u n t o p a r a o b te n e r la a l tu r a real del te x to . El a tr ib u to


a d e te x to se o b tie n e m e d ia n te la b ú s q u e d a e n u n a ta b la, d a d o el c a r á c te r re p re s e n ­
ta d o p o r el c o m p o n e n te léxico te x to . C u a n d o se a p lic a la p ro d u c c ió n C -> C , C 2, C |
y C 2 h e r e d a n el t a m a ñ o d e l p u n t o d e C m e d ia n te reglas d e c o p ia d o . L a a l tu r a d e B,
re p re s e n ta d a p o r el a tr ib u to s in te tiz a d o al, e s la m á x im a d e las a ltu r a s d e C j y C2.
C u a n d o se u tiliza la p ro d u c c ió n C —> C\ s u b C 2, la f u n c ió n contrae re d u c e el
t a m a ñ o d e l p u n t o d e C 2 e n u n 30 %. L a f u n c ió n desp p e r m ite el d e s p la z a m ie n to
h acia a b a jo d e la c a ja C 2 m ie n tr a s c a lc u la la a l tu r a d e C. N o se m u e s tr a n las reglas
q u e g e n e ra n los m a n d a to s d e tip o g rafía reales c o m o salida.
La d e fin ició n d e la figura 5.22 es u n a d e fin ició n c o n a trib u to s p o r la iz q u ie rd a . El
ú n ic o a tr ib u to h e r e d a d o es tp d e l n o te rm in a l C. C a d a regla s e m á n tic a d e fin e a tp
sólo en té r m in o s del a tr ib u to h e r e d a d o del n o te rm in a l d e la iz q u ie r d a d e la p r o d u c ­
c ió n . P o r ta n to , es u n a d e fin ic ió n c o n a tr ib u to s p o r la iz q u ie rd a .

S -+ {C .tp = 10}
C {Sal = C a l}

V C -* { c .tp = C . l p )
c, { c 2.tp = C .tp }
c2 { C.al = m áx(C \.al . C2.al ) }

c-> { C .t p = C . l p }
c,
sub { C .tp
c, {C aí

C - * texto { C a l : = te x to a x C.tp 1

Fig. 5.23. E sq u em a d e trad u cció n co n stru id o a p artir d e la figura 5.22.


5.5 TR A D U C C IO N DESC EN D EN TE 311

El e s q u e m a d e tr a d u c c ió n d e la figura 5.23 se o b tie n e in s e rta n d o asig nacio nes co ­


r re s p o n d ie n te s a las reglas s e m á n tic a s d e la fig u ra 5.22 d e n t r o d e las p ro d u c c io n e s ,
sig u ien d o los tres req u isito s m e n c io n a d o s a n te rio rm e n te . P a ra facilitar la lectura, c a d a
s ím b o lo g ra m a tic a l e n u n a p r o d u c c ió n se escrib e e n u n a lín e a d is tin ta y la s a c c io n e s
a p a re c e n a la d e re c h a . Así,

S - + { C .t p : = 10} C { S . a l C . a l }

se escrib e c o m o

S -» C .tp : = 10}
C S .a l := C a l )

O b sé rv e se q u e las a c c io n e s q u e a s ig n a n los a tr ib u to s h e re d a d o s C \.tp y C 2-ip a p a r e ­


c e n j u s t o a n te s q u e C \ y C2 e n los la d o s d e re c h o s d e las p ro d u c c io n e s . n

5 .5 T R A D U C C I O N D E S C E N D E N T E

E n esta secció n , se im p la n ta r á n las d e fin ic io n e s c o n a tr i b u to s p o r la iz q u ie r d a d u ­


r a n te el a n á lis is s in tá c tic o p re d ic tiv o . S e tra b a ja c o n e s q u e m a s d e tr a d u c c ió n e n lu­
g a r d e h a c e rlo c o n d e fin ic io n e s d irig id a s p o r la s in ta x is así q u e se p u e d e s e r e x p lícito
e n c u a n t o al o r d e n e n q u e ti e n e n lu g a r la s a c c io n e s y las e v a lu a c io n e s d e los a t r i ­
b u to s . T a m b ié n se a m p lía el a lg o ritm o p a r a la e lim in a c ió n d e la r e c u r s ió n p o r la
iz q u ie rd a a e s q u e m a s d e tr a d u c c ió n c o n a tr i b u to s sin te tiz a d o s.

E lim in a c ió n d e la r e c u r sió n p or la izq u ierd a d e un e s q u e m a d e tra d u cció n

C o m o la m a y o ría d e los o p e r a d o r e s a r itm é tic o s s o n a s o c ia tiv o s p o r la iz q u ie rd a , es


n a tu ra l u tiliz a r g ra m á tic a s re c u rs iv a s p o r la iz q u ie r d a p a r a las ex p resio n es. A h o r a se
a m p lía el a lg o ritm o p a r a e l i m i n a r la r e c u r s ió n p o r la iz q u ie r d a d e las se c c io n e s 2.4
y 4 .3 p a r a a d m iti r a tr i b u to s c u a n d o se tr a n s f o r m a la g r a m á tic a s u b y a c e n te d e un
e s q u e m a d e tra d u c c ió n . L a tr a n s f o r m a c ió n se a p lic a a e s q u e m a s d e tr a d u c c ió n c o n
a tr ib u to s sin te tiz a d o s. E llo p e r m ite q u e m u c h a s d e las d e fin ic io n e s d irig id a s p o r la
s in ta x is d e la s seccio n es 5.1 y 5 .2 se im p la n t e n m e d ia n te u n a n álisis s in tá c tic o p re ­
d ic tiv o . El sig u ie n te e je m p lo m o t iv a la tr a n s fo rm a c ió n .

E je m p lo 5 .1 4 . El e s q u e m a d e tr a d u c c ió n d e la fig u ra 5 .2 4 se t r a n s f o r m a e n el e s ­
q u e m a d e tr a d u c c ió n d e la fig u ra 5 .2 5 . El n u e v o e s q u e m a p r o d u c e al á rb o l d e a n á ­
lisis s in tá c tic o d e la fig u ra 5 .2 6 p a r a la e x p re s ió n 9 - 5 + 2 . L a s fle c h a s e n la fig u ra su­
g ie re n u n a f o r m a d e d e t e r m i n a r el v a lo r d e la ex p re sió n .
E n la figura 5 .2 6 , los n ú m e r o s in d iv id u a le s s o n g e n e r a d o s p o r T, y T .va l to m a
su v a lo r del v a lo r léxico del n ú m e r o , d a d o p o r el a t r i b u t o n úm val. El 9 e n la su b ex -
p resió n 9 - 5 e s g e n e r a d o p o r la / 's i t u a d a m á s a la iz q u ie r d a p e r o el o p e r a d o r m e n o s
y el 5 s o n g e n e r a d o s p o r la R e n el h ijo d e r e c h o d e la raíz. El a tr ib u to h e r e d a d o R.h
o b tie n e el v a lo r 9 d e T.val. L a resta 9 - 5 y el p a so del r e s u lta d o 4 h a s ta el n o d o m e ­
d io d e R se re a liz a n in te r c a la n d o la sig u ie n te a c c ió n e n tr e T y R { en R - T R \:

i R t.h := R ¡.h - T .va l)


312 T R A D U C C IO N D IR IG ID A POR LA SINTA XIS

£ -* £ , + T { E.val : = £ |v a l + T.val)
£ -* £ , - T ( E .va l:- E , v a l - T.val)
E -* T { E.val : = T .val)
T -+ (E ) { T v a l : = E .val)
T -* núm i T.val: = n ú m . v a l }

Fig. 5.24. E squem a d e trad u cció n co n u n a gram ática con recursividad


p o r la iz q u ie r d a .

U n a a c c ió n s im ila r s u m a 2 al v a lo r d e 9 - 5 , p r o d u c ie n d o el r e s u lta d o R .h = 6 e n el
n o d o in fe rio r d e R . Se n ecesita el r e s u lta d o e n la ra íz c o m o el v a lo r d e E .va l ; el a tri­
b u t o s in te tiz a d o s p a r a R. q u e n o a p a re c e e n la fig u ra 5 .2 6 , se u tiliz a p a r a c o p i a r el
r e s u lta d o h a s ta la raíz. □
P a ra el a n álisis s in tá c tic o d e s c e n d e n te , se s u p o n e q u e u n a a c c ió n se e je c u ta e n el
m is m o m o m e n t o e n q u e se e x p a n d ir ía u n s ím b o lo e n la m is m a p o sic ió n . P o r ta n to ,
en la s e g u n d a p ro d u c c ió n d e la fig u ra 5 .2 5 , la p r im e r a a c c ió n (asig n ació n a £ , . / / ) se
realiza d e s p u é s d e q u e T h a y a sid o c o m p l e t a m e n t e e x p a n d id a a s ím b o lo s te rm in a le s
y la s e g u n d a a c c ió n se realiza d e s p u é s d e q u e R t h a y a sid o c o m p le ta m e n te e x p a n -

E -* T { R .h : = T.val)
R { E .val : = R . s }

R -* +
T { R t.h : = R .h + T.val)
Ri ( R .s := £ ,..? }

R -> -
T {£ ,.// := R.h - T.val)
Ri { R .s := R i.s)

R -* € [ R .s := R .h )

T -+ {
E
) { T.val : = E .v a l)

T —* n ú m { T.val : = n ú m v a l }

Fig. 5.25. E sq u em a de trad ucció n tra n sfo rm a d o con u n a g ram ática c o n recursividad
por la derecha.

d id a . C o m o y a se m e n c io n ó e n el e s tu d io d e las d e fin ic io n e s c o n a tr ib u to s p o r la
iz q u ie rd a d e la sección 5.4, u n a tr ib u to h e r e d a d o d e u n s ím b o lo d e b e s e r c a lc u la d o
p o r u n a a c c ió n q u e a p a re z c a a n te s q u e el s ím b o lo , y u n a t r i b u t o s in te tiz a d o d e l n o
te rm in a l d e la iz q u ie r d a se d e b e c a lc u la r d e s p u é s d e q u e h a y a n sid o c a lc u la d o s to d o s
los a tr ib u to s d e los q u e d e p e n d e .
5.5 TR A D U C C IO N DESCENDENTE 313

T.val = 9 + R .h = 9

núm . ví// - 9 - T. val = 5 R .h = 4

núm. va/ = 5
! + T.val = 2 K.// = 6

núm . val = 2
!
Fig. 5.26. E v a l u a c i ó n d e la e x p r e s i ó n 9 - 5 + 2 .

P a ra a d a p t a r o tr o s e s q u e m a s d e tr a d u c c ió n re cu rsiv o s p o r la iz q u ie r d a al a n álisis
s in tá c tic o p re d ic tiv o . se e x p re s a r á el u s o d e los a tr i b u to s R .h y R .s d e la fig u ra 5.25
d e m a n e r a m á s a b s tr a c ta . S u p ó n g a s e q u e se tie n e el s ig u ie n te e s q u e m a d e t r a d u c ­
ción:

A -» A , Y { A .a : = g{A\.a* Y .y )}
(5.2)
A -+ X { A .a : = f(X * x )}
C a d a s ím b o lo g ra m a tic a l tie n e u n a t r i b u l o s in te tiz a d o e sc rito c o n la le tra m in ú s c u la
c o r r e s p o n d ie n te , y / y £ s o n f u n c io n e s a r b itra ria s . S e p u e d e re a liz a r la g e n e ra liz a c ió n
a p ro d u c c io n e s d e A a d ic io n a le s y a p ro d u c c io n e s c o n c a d e n a s e n lu g a r d e s ím b o lo s
X c Y ta l c o m o se h a c e e n el e je m p lo 5 .1 5 , m á s a d e la n te .
El a lg o ritm o p a r a e lim in a r la re c u rs ió n p o r la iz q u ie r d a d e la secció n 2 .4 c o n s ­
tru y e la sig u ie n te g r a m á tic a a p a r t i r d e (5.2):

A -+ X R
(5.3)
R -* Y R | €
T e n ie n d o e n c u e n t a las a c c io n e s s e m á n tic a s , el e s q u e m a tr a n s f o r m a d o se c o n v ie rte
en

A -* X { R.h : = f{ X .x ) }
R { A .a : = R .s )
R -> Y { R ,.h : = g {R .h . Y .y ) } (5.4)
R¡ { R .s : = R t.s ]

R -> t { R .s : = R .h ]

El e s q u e m a tr a n s f o r m a d o u tiliz a a tr i b u to s h y s p a r a R. igual q u e e n la figura


5.25. P a r a s a b e r p o r q u é los re s u lta d o s d e (5.2) y (5 .4 ) s o n el m is m o , c o n s id é re n s e
los d o s á rb o le s d e a n á lis is s in tá c tic o c o n a n o ta c io n e s d e la fig u ra 5.27. El v a lo r de
A .a se c a lc u la según (5 .2 ) d e la fig u ra 5.27 (a). L a fig u ra 5 .2 7 (b ) c o n tie n e el c á lc u lo
314 T R A D U C C IO N DIRIG IDA POR LA SIN TA X IS

X a = g ( g { f ( X . x ) ' K , . y ) , y 2.y) A

Y2 X

A.a = g ( f ( X . x ) t Y t.y) R .h = f ( X . x )
\ /
Yi Y.
A.a = f ( X . x ) R.h = g ( f ( X . x ). y , .y )
y
x y2
R h = * ( * ( /( * .* ) . F .o O .iV y )
i

(a) (b)

Fig. 5.27. D os form as d e calcular un valor d e atrib u to .

d e R .h a lo la rg o del á rb o l según (5 .4 ). El v a lo r d e R .h e n el fo n d o se tr a s la d a a rrib a


sin m o d ific a r, c o m o R s . y se c o n v ie r te e n el v a lo r c o r r e c to d e A .a e n la raíz (R .s n o
se m u e s tra e n la Fig. 5.27(b)).

E je m p lo 5.15. Si se c o n v ie r te la d e fin ic ió n d irig id a p o r la sin ta x is d e la figura 5.9


p a r a c o n s t r u i r á r b o le s s in tá c tic o s e n u n e s q u e m a d e t r a d u c c ió n , e n t o n c e s la s p r o ­
d u c c io n e s y las a c c io n e s s e m á n tic a s p a r a E resu ltan :

E ->£■, + T { E .a p n : = h a zn o d o (+ ', E \.a p n , T .a p n }


E -* E i - T { E .apn : = h a z n o d o ('-\ E t.apn, T.apn )
E -+ T { E .apn : = T .a p n }

C u a n d o se e lim in a la re c u rs ió n p o r la iz q u ie r d a d e este e s q u e m a de tra d u c c ió n , el


n o te rm in a l E c o r r e s p o n d e a A e n (5 .2 ) y las c a d e n a s + T y - T d e las p r im e r a s d o s
p ro d u c c io n e s c o r r e s p o n d e n a Y\ el n o te r m in a l T d e la te rc e ra p ro d u c c ió n c o rre s ­
p o n d e a X . E n la fig u ra 5 .2 8 se m u e s tr a el e s q u e m a d e tr a d u c c ió n tr a n s f o r m a d o . Las
p ro d u c c io n e s y las a c c io n e s s e m á n tic a s p a r a T s o n sim ila re s a las d e la d e fin ició n
o rig in a l d e la figura 5.9.
E n la fig u ra 5 .2 9 se m u e s tr a c ó m o las a c c io n e s d e la fig u ra 5 .2 8 c o n s tr u y e n u n
á rb o l s in tá c tic o p a r a a - 4 + c . L os a tr ib u to s s in te tiz a d o s se m u e s tr a n a la d e r e c h a del
n o d o p a r a u n s ím b o lo g ra m a tic a l, y los a tr i b u to s h e re d a d o s a la iz q u ie rd a . E n el á r ­
b o l sin tá ctic o , u n a h o ja se c o n s tr u y e m e d ia n te a c c io n e s a s o c ia d a s c o n las p ro d u c c io ­
n e s T -* id y T -> núm. c o m o e n el e je m p lo 5.8. E n la T s itu a d a m á s a la iz q u ie rd a ,
el a t r i b u t o T .apn a p u n t a a la h o ja p a r a a . E n el la d o d e r e c h o d e E - + T R se h ered a
u n a p u n t a d o r al n o d o p a r a a c o m o a t r i b u t o R.h.
C u a n d o se ap lica la p ro d u c c ió n R —> - T /?, al h ijo d e r e c h o d e la raíz. R .h a p u n ta
al n o d o p a r a a . y T .apn al n o d o p a r a 4. E l n o d o p a r a a - 4 se c o n s tr u y e a p lic a n d o
h a z n o tb al o p e r a d o r m e n o s y a d ic h o s a p u n ta d o r e s .
5.5 T R A D U C C IO N D E SC E N D E N T E 315

E~*T { R .h : = T .a p n }
R {E .a p n : = R .s]

R -+ +
T { R \.h : = haznodoi'+ \ R .h. T.apn ) }
Ri { R.s := R \.s ]

R -* -
T [ R \.h : = h a zn o d o ('-\ R.h. T.apn ) }
Ri { R .s : = R \.s }

R -> e { R .s : = R .h ]

T -+ (
E
) ( T.apn := E .apn)

T -> id ( T.apn : = hazhoja( id . id .entrada)}

T —* núm { T.apn : = hazhoja{núm. núm .val)}

Fig. 5.28. E sq u em a de trad u c ció n tra n sfo rm a d o para co n stru ir árboles sintácticos.

P o r ú ltim o , c u a n d o se a p lic a la p r o d u c c ió n R —> R .h a p u n t a a la ra íz d e to d o


el á rb o l s in tá c tic o . T o d o el á rb o l se d e v u e lv e a tra v é s d e lo s a tr i b u to s s d e los n o d o s
p a r a R ( q u e n o se m u e s tr a n e n la Fig. 5 .2 9 ) h a s ta q u e se c o n v ie r te en el v a lo r d e
E .apn. □

E
• •

T apn R

F ig. 5 .2 9 . U s o d e a tr ib u to s h e re d a d o s p a ra c o n s tr u ir á rb o le s sin táctico s.


316 T R A D U C C IO N D IR IG ID A P O R LA S IN T A X IS

D is e ñ o d e un tra d u cto r p red ictiv o

El sig u ie n te a lg o r itm o g e n e ra liz a la c o n s tr u c c ió n d e a n a liz a d o r e s s in tá c tic o s p red ic-


tiv o s p a r a im p la n t a r u n e s q u e m a d e tr a d u c c ió n b a s a d o e n u n a g r a m á tic a a d e c u a d a
p a r a el a n á lis is s in tá c tic o d e s c e n d e n te .

A lg o r itm o 5 .2 . C o n s tr u c c ió n d e u n tr a d u c to r p re d ic tiv o d irig id o p o r la sintaxis.

Entrada. U n e s q u e m a d e tr a d u c c ió n d irig id o p o r la s in ta x is c o n u n a g r a m á tic a s u b ­


y a c e n te a d e c u a d a p a r a el a n á lis is s in tá c tic o p red ic tiv o .

Salida. C ó d ig o del tr a d u c to r d irig id o p o r la sin tax is.

M étodo. L a té c n ic a e s u n a m o d ific a c ió n d e la c o n s tr u c c ió n d e a n a liz a d o r e s sin tá c ­


tico s p re d ic tiv o s d e la secció n 2.4.

1. P a r a c a d a n o te rm in a l A . c o n s tru y a s e u n a f u n c ió n q u e te n g a u n p a r á m e tr o for­
m a l p o r c a d a a tr ib u to h e r e d a d o d e A y q u e d e v u e lv a lo s v alo res d e los a trib u to s
s in te tiz a d o s d e A (p o s ib le m e n te c o m o u n reg istro , c o m o u n a p u n t a d o r a u n re­
g is tro c o n u n c a m p o p a r a c a d a a tr ib u to , o u tiliz a n d o el m e c a n is m o d e lla m a d a
p o r re fe re n c ia p a r a el p a so d e p a r á m e tr o s , e s tu d ia d o e n la Scc. 7.5). P a r a s im ­
plificar. se s u p o n e q u e c a d a n o te r m in a l só lo tie n e u n a tr ib u to s in te tiz a d o . La
f u n c ió n p a r a A tie n e u n a v a ria b le local p a r a c a d a a t r i b u t o d e c a d a s ím b o lo g ra ­
m a tic a l q u e a p a r e z c a e n u n a p ro d u c c ió n p a r a A.
2. Al igual q u e e n la secció n 2.4, el c ó d ig o p a r a el n o te r m in a l A d e c id e q u é p r o ­
d u c c ió n u tiliz a r b a s á n d o s e e n el s ím b o lo en c u r s o d e e n tra d a .

3. El c ó d ig o a s o c ia d o c o n c a d a p r o d u c c i ó n h a c e lo s ig u ie n te . S e c o n s id e r a n los
c o m p o n e n te s léxicos, n o te rm in a le s y a c c io n e s del la d o d e r e c h o d e la p r o d u c ­
c ió n d e iz q u ie r d a a d erech a .

i) P a r a el c o m p o n e n t e léxico X c o n a tr ib u to s in te tiz a d o x , g u á rd e se el v a lo r d e
jy e n la v a r ia b le d e c l a r a d a p a r a X .x . D e s p u é s g e n é r e s e u n a l l a m a d a p a r a
c o n c o r d a r el c o m p o n e n t e léx ico X y a v á n c e se la e n tra d a .

ii) P a ra el n o te r m in a l B , g en érese u n a a s ig n a c ió n c : = B (b i, b 2, . . . t bk) con


la lla m a d a a u n a f u n c ió n e n el la d o d e r e c h o , d o n d e b u b 2i . . . , bk s o n las
v aria b les p a r a los a tr i b u to s h e re d a d o s d e B y c es la v a ria b le p a r a el a tr ib u to
s in te tiz a d o d e B.

iii) P a ra el c a s o d e u n a a c c ió n , c o p íe se el c ó d ig o d e n t r o del a n a liz a d o r s in tá c ­


tico. s u s titu y e n d o c a d a re fe re n c ia a u n a t r i b u t o p o r la v a ria b le c o r r e s p o n ­
d ie n te a d i c h o a tr ib u to . □

Se a m p lia el a lg o r itm o 5.2 e n la se c c ió n 5 .7 p a r a im p la n t a r c u a lq u ie r d e fin ic ió n


c o n a tr i b u to s p o r la iz q u ie rd a , c o n la c o n d ic ió n d e q u e y a s e h a y a c o n s tr u id o u n
árb o l d e a n álisis s in tá c tic o . E n la secció n 5 .8 se c o n s id e r a n a lg u n a s m a n e r a s d e m e ­
j o r a r los tr a d u c to r e s c o n s tr u id o s p o r el a lg o ritm o 5.2. P o r e je m p lo , p u e d e s e r posible
e lim in a r la c o p ia d e p ro p o s ic io n e s d e la f o r m a x : = y o u tiliz a r u n a so la v ariable
p a ra g u a r d a r los v a lo re s d e v ario s a tr ib u to s . A lg u n a s d e estas m e jo ra s ta m b ié n se
p u e d e n re a liz a r a u t o m á ti c a m e n te c o n los m é to d o s del c a p ítu lo 10.
5.5 T R A D U C C IO N D E S C E N D E N TE 317

E je m p lo 5 .1 6 . L a g r a m á tic a d e la fig u ra 5 .2 8 es LL( 1) y p o r t a n t o re s u lta a d e c u a d a


p a r a el a n álisis s in tá c tic o d e s c e n d e n te . A p a r ti r d e lo s a tr i b u to s d e los n o te rm in a le s
d e la g r a m á tic a , se o b tie n e n los tip o s sig u ie n te s p a r a lo s a r g u m e n to s y re s u lta d o s d e
las f u n c io n e s p a r a /% R y T. C o m o E y T n o tie n e n a tr ib u to s h e re d a d o s , t a m p o c o
tie n e n a rg u m e n to s .

fu n ctio n E : t n o d o _ á r b o l- s in t á c ti c o ;
fu n ctio n R (h : t n o d o _ á r b o l - s i n t á c t i c o ) : t n o d o _ á r b o l_ s in tá c tic o ;
fu n ctio n T : t n o d o _ á r b o l- s in t á c ti c o ;

S e c o m b i n a n d o s d e las p r o d u c c i o n e s d e R d e la fig u ra 5 .2 8 p a r a h a c e r el tr a ­
d u c t o r m á s p e q u e ñ o . L a s n u e v a s p r o d u c c i o n e s u tiliz a n el c o m p o n e n t e lé x ic o o p -
su m a p a r a r e p r e s e n ta r + y

R o p su m a
T R iJ i = h a zn o d o (o p s\w m .lexem a , R .h . T .a p n ) }
Ri R .s = Ri . s ] (5.5)
R € R .s = R .h )

El c ó d ig o p a r a R se b a sa e n el p r o c e d im ie n to d e a n á lis is d e la fig u ra 5 .3 0 . Si el
s ím b o lo d e a n t ic ip a c ió n e s o p s u m a , e n t o n c e s la p r o d u c c i ó n R -* o p s u m a T R se
ap lica p o r el p r o c e d im ie n to concuerda p a ra leer el c o m p o n e n te léxico d e e n tr a d a q u e
sigue a o p s u m a . y lla m a lu e g o a lo s p r o c e d im ie n to s p a r a T y R. D e lo c o n tr a r io , el
p r o c e d im ie n to n o h a c e n a d a , p a r a im ita r la p ro d u c c ió n R —* € .

procedure R\
begin
i f símbolo-anticipación = op su m a then begin
concuerda^opsum a); T; R
end
e ls e begin /* n o hacer n a d a */
end
end:

Fig. 5.30. P roced im iento d e análisis sintáctico para las producciones


R - * op sum a 7 R | € .

El p r o c e d im ie n to p a r a R d e la fig u ra 5.31 c o n tie n e c ó d ig o p a r a e v a lu a r a t r i b u ­


to s . S e g u a r d a el v a lo r léx ico valex d e l c o m p o n e n t e léx ico o p s u m a e n lexem aop-
su m a , se c o n c u e r d a o p s u m a . se lla m a a T y se g u a r d a su r e s u lta d o u tiliz a n d o apn.
L a v a ria b le h l c o r r e s p o n d e al a t r i b u t o h e r e d a d o y s i c o r r e s p o n d e al a tr ib u to
s in te tiz a d o /?,.$. L a p ro p o s ic ió n retu rn d e v u e lv e el v a lo r d e 5 j u s t o a n te s d e q u e el
c o n tro l d e je la f u n c ió n . L as fu n c io n e s p a r a E y T se c o n s tr u y e n igual. □
318 T R A D U C C IO N D IR IG ID A POR LA SIN T A X IS

function R{h: t nodo árbol sintáctico)', t nodo árbol sintáctico ,


var apn, h l, s i, s: t nodo árbol sintáctico ;
lexem aopsum a : char;
begin
if símbolo-anticipación = opsum a th e n begin
/* producción R -+ opsum a T R */
/exem aopsum a: = vale.r,
concuerdai opsum a);
a p n := T:
h l : = haznodo(/exemaopsuma ; /z. a/m);
5 7 : = /? (///);
s:= si
end
else 5 : = //; /* producción R - * * */
retu rn 5
end;

Fig. 5.31. C o n stru cció n p o r descenso recursivo de árboles sintácticos.

5 .6 E V A L U A C I O N A S C E N D E N T E D E L O S A T R I B U T O S H E R E D A D O S

E n esta secció n se in tr o d u c e u n m é to d o p a r a i m p l a n t a r d e fin ic io n e s c o n a tr ib u to s


p o r la iz q u ie r d a e n el c o n te x to del a n á lis is s in tá c tic o a s c e n d e n te . El m é to d o e s c a p a z
d e m a n e ja r to d a s las d e fin ic io n e s c o n a tr i b u to s p o r la iz q u ie r d a c o n s id e r a d o s e n la
secció n a n te r io r , e n el s e n tid o d e q u e p u e d e i m p l a n t a r c u a lq u ie r d e fin ic ió n c o n a t r i ­
b u to s p o r la iz q u ie r d a b a s a d a e n u n a g ra m á tic a L L (1 ). T a m b ié n p u e d e im p la n ta r
m u c h a s ( p e ro n o to d a s ) d e fin ic io n e s c o n a tr i b u to s p o r la iz q u ie r d a b a s a d a s e n g ra ­
m á tic a s L R (1 ). El m é to d o es u n a g e n e ra liz a c ió n d e la té c n ic a d e tr a d u c c ió n a s c e n ­
d e n te e s tu d ia d a e n la secció n 5.3.

E lim in ació n d e los e s q u e m a s d e tr a d u c c ió n d e a c c io n e s in te rc a la d a s

E n el m é to d o d e tr a d u c c ió n a s c e n d e n te d e la secció n 5 .3 se s u p o n ía q u e to d a s las
a c c io n e s d e tr a d u c c ió n e s ta b a n en el la d o d e r e c h o d e la p ro d u c c ió n , m ie n tr a s q u e
e n el m é to d o d e a n álisis s in tá c tic o p re d ic tiv o d e la secció n 5.5 e ra n e c e s a rio in te r ­
c a la r a c c io n e s e n v a rio s lu g ares d e n t r o d e l la d o d e r e c h o . P a r a c o m e n z a r el e s tu d io
d e c ó m o se p u e d e n m a n e ja r lo s a tr ib u to s h e re d a d o s d e fo rm a a s c e n d e n te , se i n t r o ­
d u c e u n a tr a n s f o r m a c ió n q u e h a c e q u e t o d a s las a c c io n e s in te r c a la d a s e n u n e s ­
q u e m a de tr a d u c c ió n o c u r r a n e n los e x tre m o s d e re c h o s d e s u s p ro d u c c io n e s.
L a tr a n s f o r m a c ió n in s e rta n u e v o s n o te r m in a le s m arcadores q u e g e n e r a n € d e n ­
tro d e la g r a m á tic a b ásica . S e s u stitu y e c a d a a c c ió n in te r c a la d a p o r u n n o te rm in a l
m a r c a d o r d i s t i n t o M y se a s o c ia la a c c ió n a l fin a l d e la p r o d u c c i ó n \ f - > € . P o r
e je m p lo , el e s q u e m a d e tr a d u c c ió n

E —►T R
R —* + 7' { p rin t ('+ ’) } R \ - T { prinH ' - ' ) ) R | €
T n ú m { prinU núm .val ) }
5.6 EV A LU A C IO N A SC E N D E N T E DE LOS A TR IBU TO S H E R E D A D O S 319

se tr a n s f o r m a u tiliz a n d o los n o te rm in a le s m a rc a d o r e s M y N en

TR
R —> + T M R \ - T N R \ €
T - > núm { print (núm. va / ) }
p r in $ V ) }
pwi/f-O}

L as g ra m á tic a s e n los d o s e s q u e m a s d e tr a d u c c ió n a c e p ta n e x a c ta m e n te el m is m o
le n g u a je y. si se d ib u j a u n á rb o l d e a n álisis s in tá c tic o c o n n o d o s a d ic io n a le s p a r a las
a c c i o n e s , se p u e d e d e m o s t r a r q u e la s a c c i o n e s s e r e a l i z a n e n e l m i s m o o r d e n .
L as a c c io n e s e n el e s q u e m a d e tr a d u c c ió n tr a n s f o r m a d o t e r m i n a n p ro d u c c io n e s , así
q u e p u e d e n realizarse j u s t o a n te s d e q u e se r e d u z c a el la d o d e r e c h o d u r a n t e el a n á ­
lisis s in tá c tic o a s c e n d e n te .

H e re n c ia d e a tr ib u to s e n la p ila d e l a n a liz a d o r s in tá c tic o

U n a n a liz a d o r sin tá ctic o a s c e n d e n te re d u c e el la d o d e re c h o d e la p ro d u c c ió n A -> X Y


e l im i n a n d o X e Y del to p e d e la p ila y s u s titu y é n d o la s p o r A. S u p ó n g a s e q u e X tien e
u n a tr ib u to s in te tiz a d o X .s , q u e la im p la n ta c ió n d e la secció n 5.3 c o n s e r v a b a ju n t o
a X en la p ila del a n a liz a d o r.
C o m o el v a lo r d e X .s ya está e n la p ila del a n a liz a d o r a n te s d e q u e te n g a lu g a r
c u a lq u ie r re d u c c ió n e n el s u b á rb o l m á s a b a jo d e Y , este v a lo r p u e d e s e r h e re d a d o
p o r Y. E s d e c ir , si el a t r i b u t o h e r e d a d o Y.h e s tá d e f i n i d o p o r la r e g la d e c o p ia
Y.h : = X .s , e n to n c e s el v a lo r X .s se p u e d e u tiliz a r d o n d e se lla m a a Y .h . C o m o se
verá, las reglas d e c o p ia d e s e m p e ñ a n u n i m p o r ta n te p a p e l e n la e v a lu a c ió n d e a tri­
b u to s h e re d a d o s d u r a n te el a n á lis is s in tá c tic o a s c e n d e n te .

E jem p lo 5 .1 7 . S e p u e d e p a s a r el tip o d e u n id e n tific a d o r m e d ia n te reglas d e c o p ia


u s a n d o a t r i b u t o s h e r e d a d o s , c o m o se m u e s t r a e n la f ig u r a 5 .3 2 ( a d a p t a d a d e la
Fig. 5.7). P r im e ro se e x a m in a r á n los m o v im ie n to s re a liz a d o s p o r u n a n a liz a d o r s in ­
tá c tic o a s c e n d e n te c o n la e n tr a d a

r e a l p, q, r

D e s p u é s se m o s tr a rá c ó m o se p u e d e a c c e d e r al v a lo r del a tr ib u to T .tipo c u a n d o se
a p lic a n las p r o d u c c i o n e s p a r a L . El e s q u e m a d e t r a d u c c ió n q u e se d e s e a i m p l a n ­
t a r es

D -» T { L .h e r : = T .tip o }
L
T - * in t { T .tip o : = in te g e r }
T - » real { T .tip o : = r e a l }
L -> { L \.h e r \= L .h e r }
L \%id { añadetipo{\&.entrada, L J ie r ) }
L id { añadetipo(\d.entrada , L Jier ) }

Si n o se tie n e n e n c u e n t a las a c c io n e s e n el e s q u e m a d e tr a d u c c ió n a n te r io r , la
s e c u e n c ia d e m o v im ie n to s re a liz a d a s p o r el a n a liz a d o r s in tá c tic o c o n la e n t r a d a d e
320 TR A D U C C IO N DIRIG IDA POR LA SIN T A X IS

Fig. 5.32. En c a d a n o d o para L. L .h er = T u p o .

la figura 5 .3 2 e s igual a la d e la fig u ra 5.33. P a r a u n a m a y o r c la rid a d , se m u e s tr a el


s ím b o lo g ra m a tic a l c o r r e s p o n d ie n te e n lu g a r d e u n e s ta d o d e la p ila y el id e n tific a ­
d o r real d e l c o m p o n e n te léxico id.
S u p ó n g ase, c o m o e n la secció n 5.3, q u e la p ila del a n a liz a d o r s in tá c tic o se im p la n ta
c o m o u n p a r d e m a tric e s, estado y val. Si estado[i) es p a r a el s ím b o lo g ra m a tic a l X,
e n to n c e s val[i) g u a r d a u n a t r i b u t o s in te tiz a d o X .s. E n la fig u ra 5 .3 3 se m u e s tr a n los
c o n te n id o s d e la m a tr iz estado. O b sé rv e se q u e c a d a v ez q u e el la d o d e r e c h o d e u n a
p ro d u c c ió n d e L se r e d u c e e n la fig u ra 5 .3 3 , T está e n la p ila j u s t o p o r d e b a j o del
la d o d e r e c h o . E ste h e c h o se p u e d e u tiliz a r p a r a a c c e d e r al v a lo r d e l a t r i b u t o T.tipo.
La im p la n ta c ió n d e la fig u ra 5 .3 4 u tiliz a el h e c h o d e q u e el a t r i b u t o T .tipo está
e n u n lu g a r c o n o c id o d e la p ila val , re la tiv o al to p e . S e a n tope y n to p e los ín d ic e s de
la e n tr a d a d e l to p e e n la p ila j u s t o a n te s y d e s p u é s d e q u e te n g a lu g a r u n a re d u c c ió n ,
re s p e c tiv a m e n te . P o r las reglas d e c o p ia q u e d e fin e n L .her, se sa b e q u e se p u e d e u ti­
lizar T.tipo e n lu g a r d e L.her.

P r o d u c c ió n
E ntrada estado
U t il iz a d a

real p , q , r m
m
m
real
p,q,r T 7’- » real
,q,r TP
,q,r TL L -> id
q#r TL ,
#r TL, q
»r TL L - * L , id
r TL,
TL, r
TL L -+ L , id
D D -* T L

Fig. 5.33. S iem pre q u e se reduce u n lado d erech o para L. T está ju s to abajo
del lado derecho.
5.6 EV A LU A C IO N A SC E N D E N T E DE LOS A TR IBU TO S H E R E D A D O S 321

C u a n d o se a p lic a la p r o d u c c ió n L id , id .entrada e s tá e n el to p e d e la p ila val


y T .tip o se e n c u e n t r a j u s t o p o r d e b a j o d e e lla . P o r t a n t o , a ñ a d e iip o (v a l [tope],
val [tope - 1] c u a n d o es e q u iv a le n te a a ñ a d elip o (id .entrada, T.tipo). D e m a n e r a si­
m ila r, c o m o el la d o d e r e c h o d e la p r o d u c c ió n L —> L, id tie n e tres s ím b o lo s . T.tipo
a p a re c e e n val [tope - 3] c u a n d o tie n e lu g a r e s ta re d u c c ió n . Se e lim in a n las reglas
d e c o p ia q u e se re fie re n a L .h e r p o r q u e e n su lu g a r se u tiliz a el v a lo r d e T .tipo e n la
pila. □

Producción Fr a g m e n t o de C ódigo

D - + T L ;
r-> ¡n t va I [ntope] : = i niege r
T -> real val[ntope]: = real
L L , id añadetipo(val[tope], vaJ[tope - 3])
L -* \ d añadetipo{ val[tope], va i [tope - 1])

F ig. 5 .3 4 . El valor d e T.tipo se utiliza en lugar de L.her.

S im u la c ió n d e la e v a lu a c ió n d e a tr ib u to s h e r e d a d o s

A lc a n z a r el v a lo r d e u n a t r i b u t o d e n t r o d e la pila del a n a liz a d o r s in tá c tic o se p u e d e


c o n s e g u ir in i c ia l m e n t e si la g r a m á tic a p e r m i te p r e d e c ir la p o s ic ió n d e l v a lo r del
a tr ib u to .

E je m p lo 5 .1 8 . C o m o e je m p lo d e u n c a s o e n q u e n o se p u e d e p re d e c ir la p o sició n ,
c o n sid é re se el sig u ie n te e s q u e m a d e tra d u c c ió n .

Producción R e g l a s Se m á n t i c a s

S -> a A C C .h : = A .s
S -+ b A B C C .h : = A .s (5.6)
C’ - » c C .s : = g(C .h)

C h e r e d a el a tr ib u to s in te tiz a d o A .s p o r u n a regla d e c o p ia . O b sé rv e se q u e p u e d e o
n o h a b e r u n a B e n tr e A y C e n la pila. C u a n d o se realiza la re d u c c ió n p o r C c. el
v alo r d e C.h e s tá e n val[tope — 1) o e n val[tope — 2 ]. p e r o n o está c la r o q u é caso
c o rre s p o n d e .
E n la fig u ra 5 .3 5 se in s e rta u n n o te r m in a l m a r c a d o r A l n u e v o j u s t o a n te s d e la
C e n el la d o d e r e c h o d e la s e g u n d a p ro d u c c ió n d e (5 .6). Si se está a n a l iz a n d o según
la p r o d u c c ió n S - » b A B M C , e n to n c e s C .h h e r e d a el v a lo r d e A .s in d ir e c ta m e n te a
tra v é s d e A f.h y A is . C u a n d o se a p lic a la p ro d u c c ió n A / - * e , u n a regla d e c o p ia
M . s : — M .h g a r a n t iz a q u e el v a lo r A i s = A i.h = A .s a p a r e z c a j u s t a m e n t e a n t e s d e
la p a rte d e la p ila u tiliz a d a p a r a a n a liz a r el s u b á r b o l d e C. P o r c o n s ig u ie n te , se p u e d e
e n c o n t r a r el v a lo r d e C .h e n val [tope - I ] c u a n d o se a p lic a C c. i n d e p e n d i e n ­
t e m e n t e d e si se u tiliz a n la p r i m e r a o la s e g u n d a p r o d u c c i ó n e n la s ig u ie n te m o ­
d if ic a c ió n d e (5 .6 ).
322 T R A D U C C I O N D IR IG ID A POR LA S IN T A X IS

Producción R e g l a s Se m á n t i c a s

S -> a A C C .h : = A .s
S - > bA B M C M .h : = A .s; C . h : = M .s
C -> c C .s : = g{C .h)
M -> € M .s : = M .h

M
h : ' 5

(a) producción original (b) d ep en d en cias m odificadas

Fig. 5 3 5 . C o p ia d o d e u n valor de a trib u to a través d e un m a rc a d o r M.

L o s n o te rm in a le s m a rc a d o r e s ta m b ié n p u e d e n u tilizarse p a r a s im u la r reglas se­


m á n tic a s q u e n o se a n reglas d e c o p ia . P o r e je m p lo , c o n sid érese

Pr o d u c c i ó n R e g l a s Se m á n t i c a s
S -+ a A C C.h := RA.s) (5.7)

E sta vez la regla q u e d e fin e a C.h n o es u n a regla d e c o p ia , d e m o d o q u e el v a lo r de


C.h n o e s tá to d a v ía en la p ila val. T a m b i é n se p u e d e re s o lv e r este p r o b le m a u tili­
z a n d o u n m a rc a d o r.

Pr o d u c c i ó n R e g l a s Se m á n t i c a s
S -> a A N C N .h := A.s ; C.h : = N .s (5.8)
N-*e N .s: = A N .h)
El n o te rm in a l d is tin to N h e r e d a A .s p o r u n a regla d e c o p ia . S u a t r i b u t o s in te tiz a d o
A'.s se asig n a a flA .s): d e s p u é s C.h h e r e d a este v a lo r u tiliz a n d o u n a regla d e c o p ia .
C u a n d o se re d u c e p o r N -+ € , el v a lo r d e N .h se e n c u e n t r a e n el lu g a r p a r a A.s , es
d ecir, e n val {tope - I). C u a n d o se r e d u c e p o r S —> aAN C , ta m b ié n se e n c u e n t r a el
v a lo r d e C.h e n val[tope - 1], p o r q u e e s N.s. E n re a lid a d , C.h n o e s n e c e sa rio en
este m o m e n to ; fue n e c e s a rio d u r a n te la re d u c c ió n d e u n a c a d e n a d e te rm in a le s a C,
c u a n d o su v a lo r e s ta b a a l m a c e n a d o y a salv o e n la p ila c o n N . □

Ejemplo 5.19. E n la figura 5 .3 6 se u tiliz a n tres n o te rm in a le s m a rc a d o r e s /-, M y N


p a r a g a r a n tiz a r q u e el v alo r del a t r i b u t o h e r e d a d o C.tp a p a r e z c a en u n a p o sic ió n c o ­
n o c id a e n la p ila d e l a n a liz a d o r m ie n tr a s se h a c e la re d u c c ió n del s u b á rb o l p a r a C.
L a g ra m á tic a c o n a tr ib u to s o rig in a l a p a re c e e n la fig u ra 5 .2 2 y su im p o r ta n c ia p a ra
la fo rm a c ió n d e te x to s ya se h a e x p lic a d o e n el e je m p lo 5.13.
L a in ic ia liz a c ió n se realiza u s a n d o L. L a p ro d u c c ió n p a r a S e s S -> L C e n la
figura 5 .3 6 , d e m o d o q u e L p e r m a n e c e r á e n la p ila m ie n tr a s se r e d u c e el su b á rb o l
d e b a jo d e C . El v a lo r 10 d e l a tr ib u to h e r e d a d o C.tp = L .s se in tr o d u c e en la p ila del
a n a liz a d o r m e d ia n te la regla L .s : = 10 a s o c ia d a c o n L -> e .
5.6 E V A L U A C IO N A S C E N D E N T E DE LOS A T R IB U T O S H E R E D A D O S 323

Pr o d u c c i ó n R e g l a s Se m á n t i c a s

S-+LC C.tp := L.s


S .a l: = C a l
L -> € L.s := 10

C - > C xM C 2 Cx.tp := C.tp


M .h : = C.tp
C2.tp:= Ai.s
C.al : = máx(C\.al, C2 al)

C - > C , sub N C 2 C\.tp : = C.tp


N.h := C.tp
C2.tp:= desp{C\.al%C2 al)
C -* texto C .al:— texto.a x C.tp

M -> € M .s : = M.h
N -+ € N s : - contrac(N./i)

Fig. 5.36. T o do s los a trib u to s h ered ad o s son asignados p o r reglas d e copia.

El m a r c a d o r M e n C —►C \ M C 2 d e s e m p e ñ a u n p a p e l s im ila r al d e M e n la figu­


ra 5.3 5 : g a r a n tiz a q u e el v a lo r d e C .tp a p a re z c a j u s t o d e b a jo d e C 2 e n la p ila del a n a ­
lizador. E n la p ro d u c c ió n C - » C\ sub N C 2, el n o te rm in a l N se u tiliza c o m o en (5.8).
N h e re d a , p o r m e d io d e la regla d e c o p ia N .h : = C .tp , el v a lo r d e a tr ib u to d e l q u e
d e p e n d e C 2.tp, y sin te tiz a el v a lo r d e C2.tp p o r la regla N .s : = contrae{N.h). L a c o n ­
secu en cia. q u e se d e ja c o m o ejercicio , es q u e el v a lo r d e C .tp s ie m p re e s tá in m e d ia ­
ta m e n te d e b a jo del la d o d e r e c h o c u a n d o se r e d u c e a C.
E n la fig u ra 5 .3 7 se m u e s tr a n lo s fra g m e n to s d e c ó d ig o q u e im p la n t a n la d e fin i­
c ió n d irig id a p o r la sin ta x is d e la fig u ra 5.36. T o d o s los a tr ib u to s h e re d a d o s s o n asig­
n a d o s p o r reglas d e c o p ia e n la fig u ra 5 .3 6 , a s i q u e la im p la n ta c ió n o b tie n e s u s v a­
lo re s l o c a liz a n d o la p o s ic ió n q u e o c u p a n e n la p ila val. C o m o e n lo s e j e m p l o s
a n te rio re s , tope y n to p e d a n los ín d ic e s del to p e d e la p ila a n te s y d e s p u é s d e u n a
re d u c c ió n , re s p e c tiv a m e n te . □

Pr o d u c c i ó n Fr a g m e n t o de C ódigo

S -> L C va/[ntopc]: = va/[tope)


L val[ntope] := 10
C -> C, M C2 val\ntope] := m áx{va/\tope - 2]. val[tope])
C - * C , sub N C 2 val[ntope] := desp(va¡[tope - 3]. val [tope])
C —> texto val[ntope]: = va/[tope] x val [tope - 1 ]
M -> € va/\ntope]: = va/\topc - 1 ]
N —> € val\ntope\ := conirae{ya¡[lope - 2))

Fig. 5 3 7 . I m p l a n t a c i ó n d e la d e f i n i c i ó n d i r i g i d a p o r la s i n t a x i s d e la figura 5.36.


324 T R A D U C C IO N DIRIG IDA POR LA SIN TA X IS

L a in tr o d u c c ió n s is te m á tic a d e m a rc a d o re s , c o m o e n la m o d ific a c ió n d e (5 .6 ) y
(5 .7 ). p o sib ilita la e v a lu a c ió n d e d e fin ic io n e s c o n a tr i b u to s p o r la iz q u ie r d a d u r a n te
el a n álisis s in tá c tic o L R . C o m o só lo h a y u n a p ro d u c c ió n p o r c a d a m a r c a d o r , u n a
g ra m á tic a sigue s ie n d o L L (1 ) c u a n d o se a ñ a d e n los m a rc a d o re s . C u a lq u ie r g r a m á ­
tica LL< 1) ta m b ié n e s u n a g r a m á tic a L R (1 ) d e m o d o q u e n o su rg en c o n flic to s d e
a n á lis is s in tá c tic o c u a n d o se a ñ a d e n m a r c a d o r e s a u n a g r a m á tic a L R (1 ). D e sg ra c ia ­
d a m e n te , n o se p u e d e d e c ir lo m is m o d e to d a s la s g r a m á tic a s L R (1 ); es d e c ir, p u e ­
d e n s u rg ir c o n flic to s d e a n á lis is s in tá c tic o si se in tr o d u c e n m a rc a d o r e s e n c ie rta s g ra ­
m á tic a s LR( 1).
L as id e a s d e lo s e je m p lo s a n t e r io r e s p u e d e n f o r m a liz a r s e e n el s ig u ie n te a lg o ­
ritm o .

A lg o r itm o 5 .3 . A n á lis is s i n t á c t i c o y t r a d u c c i ó n a s c e n d e n t e s c o n a t r i b u t o s h e r e ­
d ad os.

Entrada. U n a d e fin ic ió n c o n a tr i b u to s p o r la iz q u ie r d a c o n u n a g r a m á tic a s u b y a ­


c e n te LL< 1).

Salida. U n a n a liz a d o r s in tá c tic o q u e c a lc u la los v alo res d e to d o s los a tr i b u to s e n su


p ila d e a n álisis sin tá ctic o .

M étodo. S u p ó n g a s e p a r a sim p lific a r, q u e t o d o n o te rm in a l a tie n e u n a t r i b u t o h e ­


r e d a d o A .h y q u e t o d o s ím b o lo g ra m a tic a l X tie n e u n a tr ib u to s in te tiz a d o X .s. Si X
e s u n te r m in a l, e n t o n c e s s u a t r i b u t o s in te tiz a d o es e n re a lid a d el v a lo r léx ico d e ­
v u e lto c o n X p o r el a n a liz a d o r léx ico ; este v a lo r léxico a p a re c e e n la pila, e n u n a
m a tr iz val, c o m o e n los e je m p lo s a n te rio re s .
P a ra to d a p ro d u c c ió n A X \ . . . X,„ in tr o d ú z c a s e n n o te rm in a le s m a rc a d o r e s
n u e v o s. M \ V/,„ y s u s titu y a s e la p ro d u c c ió n p o r A —> M \X \ . . . M„X„2. El a tri­
b u t o s in te tiz a d o X ,.s irá e n la p ila del a n a liz a d o r e n la e n t r a d a d e la m a tr iz val a s o ­
c ia d a c o n Xj. El a tr ib u to h e r e d a d o X ,.h, si e s q u e lo h ay . a p a re c e e n la m is m a m a triz ,
p e ro a s o c ia d o c o n M¡.
U n a p r o p ie d a d in v a r ia n te i m p o r ta n te es q u e c o n f o r m e se realiza el a n á lis is s in ­
tá c tic o . el a t r i b u t o h e r e d a d o A .h , si es q u e existe, se e n c u e n t r a e n la p o s ic ió n d e la
m a tr iz val in m e d ia ta m e n te d e b a j o d e la p o sic ió n p a r a A /,. C o m o el s ím b o lo inicial
n o tie n e n in g ú n a t r i b u t o h e re d a d o , el c a s o n o s u p o n e n in g ú n p r o b le m a c u a n d o el
s ím b o lo in icial e s A , p e r o in c lu so si h u b ie r a u n a tr ib u to h e re d a d o , se p o d r ía c o lo c a r
d e b a jo del fo n d o d e la pila. Se p u e d e d e m o s t r a r la in v a ria n te m e d ia n te u n a sen cilla
in d u c c ió n s o b re el n ú m e r o d e p a s o s d e l a n álisis s in tá c tic o a s c e n d e n te , o b s e rv a n d o
q u e los a tr ib u to s h e r e d a d o s se a s o c ia n c o n lo s n o te rm in a le s m a rc a d o r e s M ¡ y q u e
el a t r i b u t o X ,.h se c a lc u la e n M , a n te s d e c o m e n z a r la re d u c c ió n a X,.
P a ra c o m p r o b a r si los a tr ib u to s se p u e d e n c a lc u la r c o m o se p r e te n d ía d u r a n t e un
a n álisis s in tá c tic o a s c e n d e n te , c o n s id é re n s e d o s casos. P r im e ro , si se r e d u c e a u n n o
te rm in a l m a rc a d o r M„ se sabe a q u é p ro d u c c ió n A - » A/,.Y, . . . M n X„ p e rte n e c e este

: A u n q u e in sertar a n te s q u e A', s im p lific a e l e s t u d io d e l o s n o te r m in a le s m a rc a d o r es, tie n e el


d e sa fo r tu n a d o e fe c to c o la te r a l d e in tr o d u c ir c o n flic to s d e a n á lisis s in tá c tic o e n u n a g r a m á tic a co n
r e c u r siv id a d p o r la iz q u ie r d a . V c a s e e l e je r c ic io 5 .2 1 . C o m o s e o b s e r v a m á s a d e la n t e , se p u e d e
e lim in a r \ f t .
5.6 EV A LU A C IO N A SC E N D E N T E DE LOS A TR IBU TO S H E R E D A D O S 325

m a rc a d o r . P o r ta n to , se c o n o c e n las p o s ic io n e s d e c u a le s q u ie r a a tr i b u to s q u e el a tri­
b u t o h e r e d a d o X ¡.h n e c e s ite p a r a su c á lc u lo . A .h e s tá e n val [to p e - 2j + 2 ], X \.h
e s tá e n v a l [tope - 2j + 3 ] , X \ .s e s t á e n v a l [tope - 2j + 4 ] , X 2.h e s t á en
val [tope - 2j + 5], y a s í s u c e s iv a m e n te . P o r t a n t o , se p u e d e c a lc u la r X ,.h y g u a r ­
d a rla e n val[tope -f 1J. q u e se c o n v ie r te e n el n u e v o to p e d e la p ila d e s p u é s d e la
re d u c c ió n . O b sé rv e se q u e e s i m p o r ta n te q u e la g r a m á tic a sea LL( 1). p o r q u e d e o tr o
m o d o n o se p o d r ía e s ta r seg u ro d e q u e se está r e d u c ie n d o c a u n d e t e r m in a d o n o
te r m in a l m a r c a d o r y p o r t a n t o n o se p o d r ía n lo c a liz a r lo s a tr i b u to s a d e c u a d o s , o in ­
clu so c o n o c e r la f ó r m u la a a p lic a r e n g e n e ra l. S e p id e al le c to r q u e h a g a u n a c to de
fe o q u e d e m u e s t r e el h e c h o d e q u e t o d a g r a m á t i c a L L (1 ) c o n m a r c a d o r e s siga
s ie n d o L R (1 ).
El s e g u n d o c a so o c u r r e c u a n d o se r e d u c e a u n s ím b o lo n o m a r c a d o r , p o r e je m ­
p lo p o r la p ro d u c c ió n A ~ * M \X i . . . M nX n. E n to n c e s s ó lo h a y q u e c a lc u la r el a tri­
b u t o s in te tiz a d o A s: o b sérv ese q u e A .h y a h a s id o c a lc u la d o , y resid e e n la p o sic ió n
d e la p ila j u s t o d e b a j o d e la p o sic ió n e n la q u e se in s e rta la m is m a A . L o s a trib u to s
n ecesario s p a r a c a lc u la r A .s e s tá n c la r a m e n te d is p o n ib le s e n p o s ic io n e s c o n o c id a s d e
la pila, las p o s ic io n e s d e las X h d u r a n t e la re d u c c ió n .
Las sig u ientes sim p lific acio n es re d u c e n el n ú m e r o d e m a rc ad o res; la s e g u n d a evita
lo s c o n flic to s d e a n álisis s in tá c tic o e n g r a m á tic a s c o n re c u rs iv id a d p o r la iz q u ie rd a .

1. Si X¡ n o tie n e a t r i b u t o h e r e d a d o , n o es n e c e s a rio u tiliz a r el m a r c a d o r M ,. P o r


su p u esto , las p o sicio nes prev istas d e los a trib u to s en la p ila c a m b ia r á n si se o m ite
, p e ro este c a m b i o se p u e d e in c o r p o r a r f á c ilm e n te al a n a l iz a d o r s in tá c tic o .

2. Si ex iste X \.h , p e r o se c a lc u la m e d ia n te u n a regla d e c o p ia X x.h A .h , e n t o n ­


ces se p u e d e o m i t i r A /,, p u e s to q u e p o r la c o n s ta n t e se sabe q u e A .h y a estará
u b ic a d a allí d o n d e se d e se a , j u s t o d e b a j o d e A , e n la pila, y este v a lo r ta m b ié n
p u e d e , p o r ta n to , s e rv ir p a r a X¡. □

S u s titu c ió n de a tr ib u to s h e re d a d o s p o r a tr i b u to s s in te tiz a d o s

A veces es p o s ib le e v ita r el u s o d e a tr i b u to s h e re d a d o s m e d ia n te la m o d ific a c ió n d e


la g ra m á tic a s u b y a c e n te . P o r e je m p lo , u n a d e c la r a c ió n e n P ascal p u e d e c o n s ta r d e
u n a lista d e id e n tific ad o res seg u id a d e u n tip o , p o r e jem p lo , m , n : i n t e g e r . U n a
g r a m á tic a p a r a d ic h a s d e c la ra c io n e s p u e d e in c lu ir p ro d u c c io n e s d e la fo rm a

D -+ L : T
7 in te g e r | c h a r
L -* L , id | id

C o m o los id e n tific a d o re s s o n g e n e r a d o s p o r L p e r o el tip o n o está e n el su b á rb o l


p a r a L. n o se p u e d e a s o c ia r el tip o c o n u n id e n tif ic a d o r u tiliz a n d o ú n ic a m e n t e a tri­
b u to s sin te tiz a d o s. D e h e c h o , si el n o te r m in a l L h e r e d a u n tip o d e T a s u d e re c h a
e n la p r im e r a p ro d u c c ió n , se o b tie n e u n a d e fin ic ió n d irig id a p o r la s in ta x is q u e n o
e s u n a d e fin ic ió n c o n a tr i b u to s p o r la iz q u ie rd a , así q u e las tr a d u c c io n e s b a s a d a s en
e lla n o se p u e d e n re a liz a r d u r a n t e el a n á lis is sin tá ctic o .
U n a s o lu c ió n a este p r o b le m a es r e e s tr u c tu r a r la g r a m á tic a p a r a in c lu ir el tip o
c o m o el ú ltim o e l e m e n t o d e la lista d e id en tificad o res:
326 T R A D U C C IO N DIRIG IDA POR LA SIN TA X IS

D - > id L
L , ¡d L | : T
T - » in te g e r | ch a r

A h o ra , el tip o p u e d e ser c o n s id e r a d o c o m o u n a tr ib u to s in te tiz a d o L .tipo. C o n f o r m e


c a d a id e n tific a d o r e s g e n e r a d o p o r L , s u ti p o se p u e d e in t r o d u c ir e n la ta b la d e s ím ­
bolos.

U n a d e fin ic ió n d ir ig id a p or la s in t a x is d ifíc il

El a lg o ritm o 5.3 p a r a im p la n t a r a tr ib u to s h e re d a d o s d u r a n t e el a n á lis is s in tá c tic o as­


c e n d e n te se p r o lo n g a a alg u n as, p e r o n o a to d a s , las g r a m á tic a s L R . L a d e fin ic ió n
c o n a tr ib u to s p o r la iz q u ie r d a d e la figura 5 .3 8 se b a sa e n u n a g r a m á tic a L R ( 1) s e n ­
cilla p e r o n o se p u e d e im p la n t a r d u r a n t e el a n álisis s in tá c tic o L R . El n o te r m in a l L
en L € h e r e d a la c u e n t a del n ú m e r o d e s ím b o lo s 1 g e n e ra d o s p o r S . C o m o la
p ro d u c c ió n L - + € e s la p r im e r a p o r la q u e r e d u c iría u n a n a liz a d o r s in tá c tic o a s c e n ­
d e n te , el tr a d u c to r to d a v ía n o p u e d e c o n o c e r el n ú m e r o d e s ím b o lo s 1 d e la e n tra d a .

Pr o d u c c i ón R eglas Semánticas

S —* L L. cuenta := 0
L —* L \ 1 L\.cuenta : = L.cuenta + 1
L -* c print (L. cuenta)

F ig. 5 .3 8 . Difícil definición dirigida p o r la sintaxis.

5 .7 E V A L U A D O R E S R E C U R S I V O S

Se p u e d e n c o n s tr u ir las f u n c io n e s re c u rs iv a s q u e e v a lú a n lo s a tr i b u to s c o n f o r m e re­
c o rre n u n á rb o l d e a n álisis s in tá c tic o a p a r ti r d e u n a d e fin ic ió n d irig id a p o r la s in ­
tax is u s a n d o u n a g en e ra liz a c ió n d e las té c n ic a s p a r a la tr a d u c c ió n p re d ic tiv a d e la
sección 5.5. D ic h a s fu n c io n e s p e r m ite n i m p l a n t a r d e fin ic io n e s d irig id a s p o r la s in ­
tax is q u e n o p u e d e n im p la n ta r s e a la vez q u e el a n á lis is s in tá c tic o . E n e s ta secció n
se a s o c ia u n a fu n c ió n d e tr a d u c c ió n s im p le c o n c a d a n o te rm in a l. L a f u n c ió n visita
a los h ijo s d e u n n o d o p a r a el n o te r m in a l e n u n o r d e n d e t e r m in a d o p o r la p r o d u c ­
c ió n en el n o d o ; n o e s n e c e sa rio q u e los h ijo s se a n v is ita d o s e n o r d e n d e iz q u ie r d a a
d e re c h a . E n la secció n 5.10. se v e rá c ó m o lo g rar el e fe c to d e tr a d u c c ió n d u r a n t e m ás
d e u n a p a s a d a a s o c ia n d o m ú ltip le s p r o c e d im ie n to s c o n n o te rm in a le s .

R ec o rrid o s d e izq u ierd a a d ere ch a

E n el a lg o ritm o 5.2 se v io c ó m o se p u e d e i m p l a n t a r u n a d e fin ic ió n c o n a tr i b u to s p o r


la iz q u ie rd a b a s a d a e n u n a g r a m á tic a L L (1 ) m e d ia n te la c o n s tr u c c ió n d e u n a fu n ­
c ió n recu rsiva q u e a n a lic e s in tá c tic a m e n te y tr a d u z c a c a d a n o te rm in a l. S e p u e d e n
i m p l a n t a r t o d a s la s d e f in i c io n e s d ir i g id a s p o r la s in ta x is c o n a t r i b u t o s p o r la iz­
q u ie r d a si se in v o c a u n a f u n c ió n re c u rs iv a s im ila r e n u n n o d o p a r a ese n o te rm in a l
5.7 E V A L U A D O R E S REC U R SIV O S 327

e n u n á rb o l d e a n á lis is s in tá c tic o c o n s t r u i d o p r e v ia m e n te . O b s e r v a n d o la p r o d u c ­
c ió n en el n o d o , la f u n c ió n p u e d e d e t e r m i n a r c u á le s s o n s u s hijos. L a f u n c ió n p a ra
u n n o te rm in a l A t o m a c o m o a r g u m e n to s u n n o d o y los v a lo re s d e lo s a tr i b u to s h e ­
r e d a d o s p a r a A. y d e v u e lv e c o m o re s u lta d o s los v a lo re s d e los a tr i b u to s sin te tiz a d o s
p a r a A.
L o s d e ta lle s d e la c o n s tr u c c ió n s o n e x a c ta m e n te c o m o en el a lg o r itm o 5 .2 , e x ­
c ep to el paso 2, d o n d e la fu n c ió n p a r a u n n o te rm in a l d ecid e q u é p ro d u c c ió n se d eb e
u tiliz a r b a s a d a e n el s ím b o lo e n c u rs o d e e n tr a d a . A q u í, la f u n c ió n e m p le a u n a p r o ­
p o sic ió n c a s e p a r a d e t e r m i n a r la p ro d u c c ió n u tiliz a d a e n u n n o d o . S e d a u n e je m p lo
p a r a ilu stra r el m é to d o .

E jem p lo 5 .2 0 . C o n s id é re s e la d e fin ic ió n d irig id a p o r la sin ta x is p a r a d e t e r m i n a r el


t a m a ñ o y la a l tu r a d e f ó r m u la s e n la fig u ra 5 .2 2 . El n o te r m in a l C tie n e u n a tr ib u to
h e r e d a d o tp y u n a t r i b u t o s in te tiz a d o al. U tiliz a n d o el a lg o ritm o 5.2, m o d if ic a d o d e
la f o r m a q u e s e m e n c i o n ó a n t e r i o r m e n t e , se c o n s t r u y e la f u n c ió n p a r a C q u e se
m o s tr a rá e n la fig u ra 5.39.
L a f u n c ió n C t o m a c o m o a r g u m e n to s u n n o d o n y u n v a lo r c o r r e s p o n d ie n te a
C .tp e n el n o d o , y d e v u e lv e u n v a lo r c o r r e s p o n d ie n te a C .a l e n el n o d o n. L a f u n ­
c ió n tie n e u n c a so p a r a c a d a p r o d u c c ió n c o n C a la iz q u ie rd a . El c ó d ig o c o r r e s p o n ­
d ie n te a c a d a p ro d u c c ió n s im u la las reglas s e m á n tic a s a s o c ia d a s c o n la p ro d u c c ió n .
El o r d e n en q u e se a p lic a n las reglas d e b e s e r tal q u e los a tr i b u to s h e r e d a d o s d e u n
n o te rm in a l se c a lc u le n a n te s d e q u e se lla m e la f u n c ió n p a r a el n o te rm in a l.

function C(/7, tp)


var tp l, tp2 , a ll. al2\
begin
c a se p ro d u cció n en el n o d o n o f
' C — C , CV:
tp l : =
tp:
a ll : =
C(hijo(n, 1). tpl):
tp2 : =tp :
al2 : =C(hijo(n, 2). tp2)\
return m á \ ( a / l , al2);
' C - » C , su b C Y :
tp l :=tp:
a ll : =
C(hijo(n , 1), tpl):
tp 2 :=contradip):
a l2 :=C(hijo(n , 3), ip2)\
return despiall. al2):
'C - * texto':
return tp x texto, a;
default:
error
end
end;

F ig. 5 3 9 . F u n c ió n para el n o term in al C d e la f ig u r a 5 . 2 2 .


328 T R A D U C C IO N D IR IG ID A POR LA SINTA XIS

E n el c ó d ig o c o r r e s p o n d ie n te a la p r o d u c c ió n C -> C s u b C , las v a ria b le s tp, ip l


y tp2 g u a r d a n los v a lo re s d e los a tr ib u to s h e r e d a d o s C tp . C \.tp y C 2.tp. D e m a n e r a
s im ila r a l , a ll y a /2 g u a r d a n los v a lo re s d e C .al , C \.a l y C2.¿//. S e u tiliz a la fu n c ió n
h ijo(m . /') p a r a referirse al /-ésim o h ijo d e l n o d o m . C o m o C2 e s la e tiq u e ta del te rc e r
h ijo del n o d o n. el v a lo r d e C2.a l v ie n e d e t e r m i n a d o p o r la ll a m a d a a la f u n c ió n
C (hijo(n , 3), tp2). □

O t r o s re co rrid o s
C u a n d o se tie n e d is p o n ib le u n á rb o l d e a n á lis is s in tá c tic o e x p lícito , se p u e d e v isitar
a los h ijo s d e u n n o d o en c u a lq u ie r o rd e n . C o n sid érese la d e fin ició n d e l e je m p lo 5.21.
q u e n o es u n a d e fin ic ió n c o n a tr ib u to s p o r la iz q u ie rd a . E n u n a tr a d u c c ió n esp eci­
ficad a p o r esta d e fin ic ió n , se d e b e n v isita r lo s h ijo s d e u n n o d o p a r a u n a p ro d u c c ió n
d e iz q u ie rd a a d erech a , m ie n tra s q u e los h ijo s d e u n n o d o p a ra la o tr a p ro d u c c ió n se
d e b e n v isitar d e d e re c h a a izq u ierd a.
E ste e j e m p lo a b s tr a c t o ilu s tr a la e fic a c ia d e u tiliz a r f u n c io n e s m u t u a m e n t e r e ­
cu rsiv a s p a r a e v a lu a r los a tr ib u to s e n los n o d o s d e u n á rb o l d e a n á lis is sin tá ctic o .
N o es n e c e s a rio q u e las f u n c io n e s d e p e n d a n d e l o r d e n e n q u e s o n c r e a d o s los n o d o s
del á rb o l. L a p r in c ip a l c o n s id e r a c ió n p a r a e v a lu a r d u r a n t e u n r e c o r r id o es q u e los
a tr i b u to s h e re d a d o s e n u n n o d o se c a lc u le n a n te s d e q u e el n o d o s e a v isita d o p o r
p r im e r a vez y q u e los a tr i b u to s s in te tiz a d o s se c a lc u le n a n te s d e a b a n d o n a r el n o d o
p o r ú lt im a vez.

E je m p lo 5 .2 1 . C a d a u n o d e los n o te rm in a le s d e la fig u ra 5 .4 0 tie n e u n a tr ib u to he­


r e d a d o h y u n a t r i b u t o s in te tiz a d o s. T a m b ié n se m u e s tr a n los g ra fo s d e d e p e n d e n ­
cia s p a r a las d o s p ro d u c c io n e s . L a s reglas a s o c ia d a s c o n A - * L A i i m p o n e n d e p e n -

PRODUCCION R e g i a s Se m á n t i c a s

A -* L A i L .h : = l(A .h)
M .h : = m (L .s)
A.s := f{M .s)

A -+ Q R R.h. : = r(A.h)
Q .h := q{R.s)
A .s : = A Q s)

h Q s h R s

F ig . 5 .4 0 . P r o d u c c io n e s y reglas s e m á n t i c a s para el n o te r m in a l A.
5.8 C O N S ID E R A C IO N E S D E ESPACIO P A R A V A L O R E S D E A T R IB U T O S 329

function A (n, ah)\


begin
c a se producción en el n od o n of
A -> L M ': /* o rd e n d e izquierda a derecha */
Ih : = l{ah)\
ls := L(hijo{n , 1), //?);
m h : = m (ls);
m s : = M{hijo(n. 2). m h )
return )\m s)\
'A -* Q R ‘ : /* orden de derecha a izquierda ♦/
rh: = r{ah );
rs : = R(hijo(n, 2), r/i);
qh:=
<75: = Q(hijo(n, I), qh);
return f\qs)\
default:
error
end
end;

F ig . 5 .4 1 . Las d ep en d en cias de la figura 5.40 d e te rm in a n el o rd e n en q u e se visitan


los hijos.

d e n c i a s d e iz q u ie r d a a d e r e c h a y la s re g la s a s o c ia d a s c o n A Q R im p o n e n
d e p e n d e n c ia s d e d e r e c h a a iz q u ie rd a .
E n la figura 5.41 se m u e s tra la f u n c ió n p a r a el n o te rm in a l A: se s u p o n e q u e se
p u e d e n c o n s tr u i r las f u n c io n e s p a r a L , M . Q y R. L a s v aria b les d e la fig u ra 5.41 se
n o m b r a n según los n o te rm in a le s y s u s a tr ib u to s ; p o r e je m p lo , Ih y Is s o n las v a ria ­
b le s c o rr e s p o n d ie n te s a L .h y L.s.
El c ó d ig o c o r r e s p o n d ie n t e a la p r o d u c c ió n A - » L \ 1 se c o n s tr u y e c o m o e n el
e je m p lo 5 .2 0 . Es d ecir, se d e t e r m i n a el a tr ib u to h e r e d a d o d e L , se lla m a la fu n c ió n
p a r a L p a r a q u e d e t e r m in e el a tr ib u to s in te tiz a d o d e L. y se re p ite el p ro c e s o p a r a
XI. El c ó d ig o c o r r e s p o n d ie n te a ,4 —* Q R visita el s u b á r b o l p a ra R a n te s d e v isitar el
su b á rb o l p a r a Q. E n los d e m á s casos, el c ó d ig o p a r a las d o s p ro d u c c io n e s e s m u y
s im ila r. □

5 .8 C O N S I D E R A C I O N E S D E E S P A C I O P A R A V A L O R E S D E A T R I B U T O S
E N E L M O M E N T O D E LA C O M P IL A C IO N

E n esta sección se c o n s id e r a la a s ig n a c ió n d e e s p a c io en el m o m e n t o d e la c o m p i ­
lación p a ra los v a lo re s d e a trib u to s . S e u tiliz a rá in f o r m a c ió n del g ra fo d e d e p e n d e n ­
cia s p a r a u n á rb o l d e a n á lis is s in tá c tic o , d e m o d o q u e el e n f o q u e d e esta secció n es
a d e c u a d o p a r a m é to d o s b a s a d o s e n á rb o le s d e a n á lis is s in tá c tic o q u e d e te r m in e n el
o rd e n d e e v a lu a c ió n a p a r tir del g ra fo d e d e p e n d e n c ia s . E n la sig u ie n te secció n se
330 T R A D U C C IO N DIRIG IDA POR LA SIN TA X IS

c o n s id e r a el c a s o e n q u e se p u e d e p r e d e c i r el o r d e n d e e v a l u a c ió n p a r a , c u a n d o
se c o n s tr u y e el c o m p ila d o r , p o d e r d e c id ir d e u n a vez p o r to d a s el e s p a c io p a r a los
a trib u to s .
D a d o u n o r d e n d e e v a lu a c ió n p a r a los a tr i b u to s n o n e c e s a ria m e n te e n p r o f u n ­
d id a d . la duración d e u n a tr ib u to c o m ie n z a c u a n d o se c a lc u la p o r p r im e r a vez el
a tr ib u to y te r m in a c u a n d o h a n sid o c a lc u la d o s to d o s los a tr ib u to s q u e d e p e n d e n d e
él. S e p u e d e a h o r r a r e s p a c io c o n s e r v a n d o el v a lo r d e u n a tr ib u to só lo d u r a n t e su d u ­
ració n .
P a r a in sistir e n q u e las té c n ic a s d e esta secció n sirv e n p a r a c u a lq u ie r o r d e n d e
e v a lu a c ió n , se c o n s id e r a r á la sig u ie n te d e fin ic ió n d irig id a p o r la sin ta x is, q u e n o es
u n a d e fin ic ió n c o n a tr ib u to s p o r la iz q u ie rd a , p a r a p a s a r la in f o r m a c ió n d e tip o s a
los id e n tific a d o re s e n u n a d eclaració n .

E je m p lo 5 .2 2 . L a d e fin ic ió n d irig id a p o r la s in ta x is d e la fig u ra 5 .4 2 es u n a p r o lo n ­


g ació n d e la d e la fig u ra 5 .4 p a r a p e r m itir d e c la ra c io n e s d e la fo rm a

real c [ 12 ! [ 3 1 ) ; ( 5 .9 )
in t x [ 3 ] , y [5 ] ? (5.10)

E n la fig u ra 5 .4 3 (a) se m u e s tra u n á rb o l d e a n á lis is s in tá c tic o p a r a (5 .1 0 ) m e d ia n te


lin eas c o n p u n to s . L o s n ú m e r o s q u e a p a re c e n en lo s n o d o s se a p lic a n e n el sig u ien te
e je m p lo . C o m o e n el e je m p lo 5.3, el tip o q u e se o b tie n e d e T e s h e r e d a d o p o r L y
tra sla d a d o s h acia los id e n tific ad o res d e la d eclaració n . U n a arista d e sd e T.tipo a L .h er
m u e s tra q u e L .h e r d e p e n d e d e T.tipo. L a d e fin ic ió n d irig id a p o r la s in ta x is d e la fi­
g u ra 5 .4 2 n o e s u n a d e fin ic ió n c o n a tr i b u to s p o r la iz q u ie rd a p o r q u e ¡ {.her d e p e n d e
d e núm . val y n ú m está a la d e r e c h a d e / , e n / - > / , [ n úm ]. □

A sig n a c ió n d e e s p a c io p ara lo s a tr ib u to s e n e l m o m e n to d e la c o m p ila c ió n

S u p ó n g a s e q u e se tie n e u n a s e c u e n c ia d e registros p a r a g u a r d a r v a lo re s d e a trib u to s .


P o r c o n v e n ie n c ia , se s u p o n e q u e c a d a re g istro p u e d e g u a r d a r c u a l q u ie r v a lo r d e a tri­
b u to . Si los a tr ib u to s re p re s e n ta n tip o s d is tin to s , e n to n c e s se p u e d e n f o r m a r g ru p o s
d e a tr ib u to s q u e to m e n la m is m a c a n tid a d d e a l m a c e n a m ie n t o y c o n s id e r a r c a d a
g r u p o p o r s e p a ra d o . Se c o n fia e n q u e la in f o r m a c ió n a c e rc a d e las d u r a c io n e s d e los
a tr ib u to s d e t e r m in e los reg istro s e n q u e se e v a lú a n .

E je m p lo 5 .2 3 . S u p ó n g a s e q u e lo s a tr i b u to s se e v a lú a n e n el o r d e n d a d o p o r lo s n ú ­
m e ro s d e los n o d o s e n el g rafo d e d e p e n d e n c ia s d e la fig u ra 5 . 4 3 \ c o n s tr u id o e n el
ú ltim o e je m p lo . L a d u r a c ió n d e c a d a n o d o c o m ie n z a c u a n d o se e v a lú a su a tr ib u to
y te r m in a c u a n d o se u tiliz a su a tr ib u to p o r ú lt im a vez. P o r e je m p lo , la d u r a c ió n del
n o d o 1 te r m in a c u a n d o 2 se e v a lú a p o r q u e 2 es el ú n ic o n o d o q u e d e p e n d e d e 1. La
d u r a c ió n d e 2 te r m in a c u a n d o se e v a lú a 6. □

El g ra fo d e d e p e n d e n c ia s d e la figura 5 .4 3 n o m u estra lo s n o d o s c o r r e sp o n d ie n te s a la regla se­


m á n tic a a ñ a d e tip o { \á e n tr a d a , l .h e r ) p o r q u e n o se a sig n a e s p a c io a lo s fa lso s a trib u to s. O b sérv ese,
s in e m b a r g o , q u e e sta regla s e m á n tic a n o se d e b e e v a lu a r h a sta d e s p u é s d e q u e e sté d is p o n ib le el
v a lo r d e l .h e r . U n a lg o r itm o para d e te r m in a r e ste h e c h o d e b e trabajar c o n u n g r a fo d e d e p e n d e n c ia s
q u e c o n te n g a n o d o s p a ra e sta regla se m á n tic a .
5.8 C O N S ID E R A C IO N E S DE ESPACIO P A R A V A L O R E S D E A T R IB U T O S 331

Pr o d u c c i ó n R eglas

/>-* TL L .h e r:= T.iipo

T -* int T .tip o := integer

T real T.iipo : = real

L -> L ly l L x.h e r \= L.her


J.her:= L.her

L -* I l.her := L.her

/ - > / , [ núm ] Ii.her := array ( núm val, I.her)

7 -* ¡d añadelipoi id.entrada . /.her)

Fig. 5.42. Paso del tipo a los identificadores en un a declaración.

E n la fig u ra 5 .4 4 se d a u n m é t o d o p a r a e v a l u a r a t r i b u t o s q u e u tiliz a el m e n o r
n ú m e r o p o s ib le d e reg istro s. S e c o n s id e r a n lo s n o d o s d e l g ra fo d e d e p e n d e n c ia s D
p a r a u n á r b o l d e a n á lis is s i n t á c t i c o e n el o r d e n e n q u e d e b e n e v a lu a r s e . I n ic ia l­
m e n te . se tie n e u n c o n j u n t o d e r e g is tro s r¡, r2y Si el a t r i b u t o b se d e f in e p a r a
la reg la s e m á n t ic a b : — J { c u C2, . . . , c*), e n t o n c e s la d u r a c i ó n d e u n o o m á s d e c l9
6*2. . . . . c*a d e b e t e r m i n a r c o n la e v a lu a c ió n d e b ; lo s re g is tro s q u e g u a r d a n d ic h o s

x
( a ) G r a fo d e d e p e n d e n c ia s p a ra u n á r b o l d e a n á lis is s in tá c tic o

I ----- ► 2 3 4 ►5 6 ----- ► 7 8 » 9

( b ) N o d o s e n e l o r d e n d e e v a l u a c i ó n (a )

F ig . 5 .4 3 . D e t e r m i n a c i ó n d e l a s d u r a c i o n e s d e l o s v a l o r e s d e a t r ib u t o s .
332 T R A D U C C I O N D I R I G I D A P O R LA S I N T A X I S

for c a d a n o d o m e n m ,, m 2, . . . , m v do begin
for cada n o do n cu ya d u ració n te rm in e co n la evaluación d e m do
m a rc ar el registro d e n\
if algún registro r está m arcad o th e n begin
d e sm a rc a r r\
ev alu ar m en el registro r;
devolver los registros m arcado s al c o n ju n to d e disponibles
end
else /* n o se m a rc aro n registros */
e v a lu a r m en un registro del c o n ju n to d e disponibles;
/* las acciones q u e usen el valor d e m se p u e d e n in sertar a q u í */
if la d u ració n d e m h a te rm in a d o then
devolver los registros d e m al c o n ju n to de disponibles
end

Fig. 5.44. A signación d e valores d e a trib u to s a registros.

a t r i b u t o s se d e v u e lv e n d e s p u é s d e e v a l u a r b. S ie m p r e q u e s e a p o s ib le , b se e v a lú a
e n u n re g istro q u e g u a r d e u n o d e Cu c 2, . . • , c*.
E n la figura 5.45 se m u e s tr a n lo s registros u tiliz a d o s d u r a n t e u n a e v a lu a c ió n del
grafo d e d e p e n d e n c ia s d e la fig u ra 5.43. S e c o m ie n z a p o r e v a lu a r el n o d o I d e n t r o
del registro r ,. L a d u r a c ió n d e l n o d o 1 te r m in a c u a n d o se e v a lú a 2, d e m o d o q u e 2
se e v a lú a d e n t r o d e r ,. El n o d o 3 recib e u n reg istro n u e v o r2, p o r q u e el n o d o 6 n e­
ce sita rá el v a lo r d e 2.

I ----- •» 2 ------» 3 4 ------5 6 7 8 ►9


r, r, r2 ry r2 r, r , r2 r,

Fig. 5.45. Registros utilizados p o r los valores d e a trib u to s de la figura 5.43.

E v ita r la s co p ias

Se p u e d e m e jo r a r el m é t o d o d e la figura 5 .4 4 c o n s id e r a n d o las reg las d e c o p ia c o m o


u n c a s o especial. U n a regla d e c o p ia tie n e la f o r m a b : = c, d e m o d o q u e si el v alo r
d e c está e n el registro r , e n to n c e s el v a lo r d e b a p a re c e ya d e n t r o d e l reg istro r. El
n ú m e r o d e a tr ib u to s d e f in id o p o r las reglas d e c o p ia p u e d e s e r sig n ificativ o , así q u e
es m e jo r e v ita r h a c e r c o p ia s explícitas.
U n c o n j u n t o d e n o d o s q u e te n g a n el m is m o v a lo r f o r m a u n a clase d e e q u iv a le n ­
cia. Se p u e d e m o d if ic a r el m é to d o d e la fig u ra 5 .4 4 ta l c o m o se in d ic a a c o n t i n u a ­
c ió n p a r a g u a r d a r el v a lo r d e u n a clase d e e q u iv a le n c ia e n u n registro. C u a n d o se
c o n s id e r a el n o d o ni. p r im e r o se c o m p r u e b a si está d e f in id o p o r u n a regla d e c o p ia .
5.9 A SIG N A C IO N D E ESPACIO 333

Si asi es. e n to n c e s su v a lo r d e b e e s ta r y a e n u n reg istro , y m se in c o r p o r a a la clase


d e e q u iv a le n c ia c o n v a lo re s e n d ic h o registro. E s m á s, u n re g istro es d e v u e lto al c o n ­
j u n t o d e reg istro s d is p o n ib le s só lo al final d e las d u r a c io n e s d e to d o s lo s n o d o s c o n
v alo res e n el registro.

E je m p lo 5 .2 4 . E l g rafo d e d e p e n d e n c ia s d e la fig u ra 5.43 se vuelve a d ib u j a r e n la


figura 5 .4 6 . c o n u n sig n o igual a n te s d e c a d a n o d o d e fin id o p o r u n a regla d e copia.
A p a r tir d e la d e fin ic ió n d irig id a p o r la sin ta x is d e la figura 5 .4 2 , se ve q u e el tip o
d e t e r m in a d o e n el n o d o 1 se c o p ia a c a d a e le m e n to d e la lista d e id e n tific a d o re s,
d a n d o c o m o r e s u lta d o q u e los n o d o s 2, 3 , 6 y 7 d e la fig u ra 5 .4 3 se a n c o p ia s d e 1.

I ----- ► = 2
ri ri

F ig. 5 .4 6 . Registros utilizados, to m a n d o en cu en ta las reglas d e copia.

C o m o 2 y 3 s o n c o p ia s d e I , s u s v a lo re s se t o m a n del reg istro r , d e la fig u ra 5.46.


O b sérv ese q u e la d u r a c ió n d e 3 te r m in a c u a n d o se e v a lú a 5, p e r o el re g istro r, q u e
g u a r d a el v a lo r d e 3 n o se d e v u e lv e al c o n j u n t o p o r q u e n o h a t e r m i n a d o la d u r a c ió n
d e 2 e n su clase d e e q u iv a le n c ia .
El sig u ie n te c ó d ig o m u e s tr a c ó m o la d e c la r a c ió n (5 .1 0 ) del e je m p lo 5 .2 2 p u e d e
s e r p ro c e s a d a p o r u n c o m p ila d o r:

r, := integer ; /* e v a lú a los n o d o s 1, 2 , 3. 6, 7 */
/* ::= 5: /* e v a lú a el n o d o 4 */
r2 : = array(r2, r,); /* tip o d e y ♦/
añadeiipo(y. r2):
r2 := 3: /* e v a lú a el n o d o 8 */
r2 : = array{r2, r , ); /* tip o d e x */
añadeiipo(x . r2)\

E n el c ó d ig o a n te r io r , x e y a p u n t a n a las e n tr a d a s e n la ta b la d e s ím b o lo s p a r a x e
y . y el p r o c e d im ie n to a ñ a d etip o se d e b e ll a m a r e n lo s m o m e n to s a d e c u a d o s para
q u e a ñ a d a los tip o s d e x e y a s u s e n tr a d a s en la ta b la d e s ím b o lo s. □

5 .9 A S I G N A C I O N D E E S P A C I O E N E L M O M E N T O
D E LA C O N S T R U C C IO N D E L C O M P IL A D O R

A u n q u e es p o sib le g u a r d a r los v a lo re s d e to d o s los a tr ib u to s e n u n a sola p ila d u r a n te


u n re c o rrid o , a veces se p u e d e e v ita r h a c e r c o p ia s u tiliz a n d o m ú ltip le s pilas. E n g e­
n eral, si las d e p e n d e n c ia s e n tr e lo s a tr ib u to s h a c e n q u e n o sea c o n v e n ie n te p o n e r los
v alo res d e a lg u n o s a tr ib u to s e n u n a pila, se p u e d e n g u a r d a r en los n o d o s d e u n árbol
s in tá c tic o c o n s tr u id o e x p líc ita m e n te .
334 T R A D U C C I O N D I R I G I D A P O R LA S I N T A X I S

E n las se c c io n e s 5 .3 y 5.6 se h a v isto el uso d e u n a p ila p a r a g u a r d a r lo s v alo res


d e a tr i b u to s d u r a n t e el a n álisis s in tá c tic o a s c e n d e n te . U n a n a liz a d o r s in tá c tic o p o r
d e sc e n so re c u rs iv o ta m b ié n u tiliz a im p líc ita m e n te u n a p ila p a r a seg u ir las lla m a d a s
a p ro c e d im ie n to s ; se e s tu d ia r á este a s p e c to e n el c a p ítu lo 7.
El u s o d e u n a p ila se p u e d e c o m b i n a r c o n o tr a s té c n ic a s p a r a a h o r r a r espacio.
L as a c c io n e s d e im p r e s ió n (p rint) a m p lia m e n te u tiliz a d a s e n los e s q u e m a s d e tr a ­
d u c c ió n d e l c a p í t u l o 2 e m ite n s ie m p r e q u e e s p o s ib le a t r i b u t o s c o n v a lo re s d e c a ­
d e n a s a u n a rc h iv o d e salid a. M ie n tr a s se c o n s tr u ía n los á rb o le s s in tá c tic o s e n la sec­
c ió n 5.2. se p a s a b a n a p u n t a d o r e s a lo s n o d o s e n lu g a r d e s u b á rb o le s c o m p le to s . En
g en eral, e n vez d e p a s a r o b je to s g ra n d e s , se p u e d e a h o r r a r e s p a c io p a s a n d o a p u n t a ­
d o re s. E stas té c n ic a s se a p lic a r á n e n los e je m p lo s 5.27 y 5.28.

P red icc ió n d e d u ra c io n e s a p a r ti r d e la g ra m á tic a

C u a n d o se o b tie n e el o r d e n d e e v a lu a c ió n p a r a los a t r i b u t o s a p a r t i r d e u n d e te r ­
m i n a d o r e c o r r id o del árb o l d e a n álisis s in tá c tic o , se p u e d e n p re d e c ir las d u ra c io n e s
d e los a tr ib u to s e n el m o m e n t o d e la c o n s tr u c c ió n d e l c o m p ila d o r . P o r e je m p lo , s u ­
p ó n g a s e q u e los h ijo s se v isitan d e iz q u ie r d a a d e r e c h a d u r a n t e u n r e c o r r id o e n p r o ­
f u n d id a d . c o m o e n la s e c c ió n 5 .4 . C o m e n z a n d o e n u n n o d o p a r a la p r o d u c c i ó n
A - * B C , se v isita el s u b á rb o l p a r a B. se v isita el s u b á rb o l p a r a C y d e s p u é s se re­
gresa al n o d o p a r a A. El p a d r e d e A n o p u e d e referirse a los a tr i b u to s d e B y C, d e
m o d o q u e s u s d u r a c io n e s d e b e n t e r m i n a r c u a n d o se reg resa a A. V éase q u e d ic h a s
o b s e rv a c io n e s se b a s a n e n la p ro d u c c ió n A —►B C y e n el o r d e n e n q u e se visitan los
n o d o s p a r a d ic h o s n o te rm in a le s . N o es n e c e sa rio c o n o c e r los s u b á rb o le s e n B y C.
C o n c u a lq u ie r o rd e n d e e v a lu a c ió n , si la d u r a c i ó n del a tr ib u to c está c o n te n id a
en la d e />, e n to n c e s el v a lo r d e c se p u e d e g u a r d a r e n u n a p ila p o r e n c i m a d e l v alo r
d e b. E n este caso , b y c n o tie n e n p o r q u é s e r a tr ib u to s del m is m o n o te rm in a l. P ara
la p ro d u c c ió n A —> B C. se p u e d e u tiliz a r u n a p ila d u r a n t e u n r e c o r r id o e n p r o f u n ­
d id a d d e la sig u ie n te fo rm a .
E m p ié c e se e n el n o d o p a r a A c o n los a tr i b u to s h e re d a d o s d e A p re s e n te s y a e n la
pila. D e s p u é s e v a lú e n s e y m é ta n s e en la p ila los v a lo re s d e lo s a tr i b u to s h e re d a d o s
d e B. E sto s a tr i b u to s p e r m a n e c e n e n la p ila c o n f o r m e se r e c o rre el s u b á r b o l d e /?,
re g re s a n d o c o n los a tr i b u to s s in te tiz a d o s d e B p o r e n c i m a d e ellos. E ste p ro c e s o se
re p ite c o n C ; es d ecir, se m e te n e n la p ila s u s a tr ib u to s h e re d a d o s , se r e c o rre s u s u b ­
á rb o l y se regresa c o n s u s a tr i b u to s s in te tiz a d o s e n el to p e . S i se escrib e H (A') y S(AT)
p a r a los a tr i b u to s h e re d a d o s y s in te tiz a d o s d e X , r e s p e c tiv a m e n te , la p ila c o n tie n e

H (A )t H (B ), S ( B l H ( C ) . S ( C ) (5 .11)

A h o ra ya están en la p ila los v alo res d e los a tr i b u to s n ecesario s p a r a c a lc u la r los a tri­


b u to s s in te tiz a d o s d e .4, así q u e se p u e d e re g re sa r a A c u a n d o la p ila c o n tie n e

H (A). S (/l)

O b sé rv e se q u e el n ú m e r o (y p r e s u m ib le m e n te el t a m a ñ o ) d e los a tr ib u to s h e re ­
d a d o s y s in te tiz a d o s d e u n s ím b o lo g r a m a tic a l e s fijo. P o r ta n to , e n c a d a p a so del
p r o c e s o a n te r io r se sa b e h a s ta q u é p r o f u n d id a d d e la p ila h a y q u e llegar p a r a e n c o n ­
t r a r u n a trib u to .
5.9 A SIG N A C IO N D E ESPACIO 335

E je m p lo 5 .2 5 . S u p ó n g a s e q u e lo s v a lo re s d e los a tr ib u to s p a r a la tr a d u c c ió n d e ti­
p o g rafía d e la fig u ra 5 .2 2 se g u a r d a n e n u n a p ila c o m o se e x p lic ó a n te r io r m e n te .
C o m e n z a n d o e n u n n o d o p a r a la p r o d u c c ió n C - * C\ C i c o n C .tp e n el to p e d e la
pila, los c o n te n id o s d e la p ila a n te s y d e s p u é s d e v isita r u n n o d o se m u e s tr a n e n la
fig u ra 5 .4 7 a la iz q u ie r d a y a la d e r e c h a d e l n o d o , r e s p e c tiv a m e n te . C o m o d e c o s ­
tu m b r e las p ilas crece n h a c ia a b a jo .

• 4•
C.tp
c C.al

•• • i • ••
C.
C ip ( ;; 1 ' C2 C.tp
Ct.tp Cj .tp c x.tp
C\.a¡
E lH
kW Ci.tp

Fig. 5.47. C o n te n id o s d e la pila an tes y después d e visitar u n nodo.

O b sé rv e se q u e j u s t o a n te s d e q u e sea v isita d o p o r p r im e r a vez u n n o d o p a r a el


n o te rm in a l C , su a t r i b u t o tp está e n el to p e d e la pila. J u s to d e s p u é s d e la ú ltim a
visita, es d ecir, c u a n d o el r e c o r r id o se m u e v e h a c ia a r r ib a d e s d e ese n o d o , s u s a tri­
b u to s a l y ip están e n la s d o s p o s ic io n e s d e l to p e d e la pila. □

C u a n d o u n a t r i b u t o b está d e f in id o p o r u n a regla d e c o p ia h : = c y el v a lo r d e c
está e n el to p e d e la p ila d e v a lo re s d e a t r i b u to , p u e d e n o s e r n e c e s a rio m e te r u n a
c o p ia d e c e n la pila. P u e d e h a b e r m á s o p o r tu n i d a d e s p a r a e lim in a r reglas d e c o p ia
si se u tiliz a m á s d e u n a p ila p a r a g u a r d a r v alo res d e a tr ib u to s . E n el sig u ie n te e je m ­
plo . se u tiliz a n p ila s d ife re n te s p a r a los a tr i b u to s s in te tiz a d o s y h e re d a d o s . Si se c o m ­
p a r a c o n el e je m p lo 5.25 se v e q u e se p u e d e n e lim in a r m á s reglas d e c o p ia si se u ti­
lizan p ilas diferentes.

E je m p lo 5 .2 6 . C o n la d e fin ic ió n d irig id a p o r la sin ta x is d e la figura 5 .2 2 , s u p ó n g a s e


q u e se u tiliz an p ilas d ife re n te s p a r a el a t r i b u t o h e r e d a d o tp y el a t r i b u t o s in te tiz a d o
al. S e m a n tie n e n la s p ilas d e m o d o q u e C .lp está e n el to p e d e la p ila d e tp ju s to
a n te s q u e C sea v is ita d o p o r p r im e r a vez y j u s t o d e s p u é s d e q u e se visite C p o r úl­
ti m a vez. C .a l e s ta r á e n el to p e d e la p ila a l j u s t o d e s p u é s q u e se visite C.
C o n p ila s d if e r e n te s se p u e d e n a p r o v e c h a r las reg las d e c o p ia C x.tp : = C .tp y
C 2 .tp := C .tp a s o c ia d a s c o n C - > C x C 2. C o m o m u e s tr a la fig u ra 5 .4 8 , n o e s n e c e ­
s a rio m e t e r C x.tp p o r q u e su v a lo r y a está e n el to p e d e la p ila c o m o C .tp.
E n la fig u ra 5 .4 9 se m u e s tr a u n e s q u e m a d e tr a d u c c ió n b a s a d o e n la d e fin ic ió n
d irig id a p o r la sin ta x is d e la figura 5 .2 2 . L a o p e r a c ió n m ete{ v, p ) m e te el v a lo r v en
336 T R A D U C C IO N D IR IG ID A POR LA SINTA XIS

Fig. 5.48. U so de pilas independ ien tes para los a trib u to s tp y al.

la p ila p y saca{p) sa c a el v a lo r d e l to p e d e la p ila p. S e u tiliz a topeip) p a r a referirse


al e le m e n to del to p e d e la p ila p. □

El sig u ie n te e je m p lo c o m b in a el u s o d e u n a p ila p a r a v a lo re s d e a tr i b u to s con


a c c io n e s p a r a e m iti r código.

m ete(\0 , tp)

C,
C'2 { a l : = topeiaf): saca(al)\
a\ : = topHal): saca(al);
mete{mcLx(a \. a2), a ! ) }

C C,
sub { mete(contraiitope{ip)), tp ) )
C\ { saca(tp)\
a l : = topeia/y, saca(al):
a 1 : = tope(al)\ saca(a/)\
melc{desp{a \ . a2), a l ) }

C -> texto { m etcitexto.a x topiilp), al) ¡

Fig. 5.49. E sq u em a de trad ucció n m a n te n ie n d o las pilas tp y al.

E je m p lo 5 .2 7 . A h o ra se c o n s id e ra n a lg u n a s té c n ic a s p a r a i m p l a n t a r u n a d e fin ic ió n
d irig id a p o r la s in ta x is e s p e c ific a n d o la g e n e ra c ió n d e c ó d ig o in te r m e d io . El v a lo r d e
u n a e x p re sió n b o o le a n a E a n d F e s falsa si E e s falsa. E n C . la s u b e x p re s ió n F n o se
d e b e e v a lu a r si E es falsa. E n la se c c ió n 8 .4 se c o n s id e r a la e v a lu a c ió n d e d ic h a s ex­
p re s io n e s b o o lean as.
L as e x p re s io n e s b o o le a n a s e n la d e fin ic ió n d irig id a p o r s in ta x is d e la figura 5 .5 0
se c o n s tr u y e n a p a r tir d e id e n tific a d o re s y el o p e r a d o r a n d . C a d a e x p re s ió n E h e re d a
d o s e tiq u e ta s E .verdadero y E .fa lso q u e m a rc a n los p u n t o s a d o n d e d e b e s a lta r el
c o n tr o l si E es v e rd a d e r a y falsa, re s p e c tiv a m e n te .
5.9 A SIG N A C IO N D E ESPACIO 337

Supóngase q u e E Ex an d E 2. Si la e v a lu a c ió n d e E ( e s falsa, e n to n c e s el c o n ­
tro l flu y e a la e tiq u e ta h e r e d a d a E .fa lso : d e lo c o n tr a r io , la e v a lu a c ió n d e £ , d a v e r­
d a d e r o . a s í q u e el c o n t r o l flu y e al c ó d ig o p a r a e v a l u a r E 2. U n a n u e v a e t i q u e t a g e­
n e r a d a p o r la f u n c ió n e tiq n u e v a m a r c a el p r i n c i p i o d e l c ó d i g o p a r a E 2. Las

P r o d u c c ió n R e g l a s S e m á n t ic a s

E -> E x and E 2 E\. verdadero : = etiqnueva


E i.fa ls o : - E fa lso
E 2. verdadero : = E. verdadero
E2f a ls o : = E fa lso
E .código:= Ex.código || ,c e b e r a ('etiqueta' E x.verdadero) ||
E 2.código

E -> id E .código : = generaC tf id lugar goto' E. verdadero) ||


genera^ g o to ' EJalso)

Fig. 5.50. Evaluación en «cortocircuito» de expresiones booleanas.

i n s t r u c c i o n e s in d iv id u a l e s s e f o r m a n u t i l i z a n d o genera. P a r a u n m a y o r a n á lis is
d e la r e le v a n c ia d e la fig u ra 5 .5 0 p a r a la g e n e r a c ió n d e c ó d i g o i n t e r m e d i o véase
la s e c c ió n 8 .4 .
L a d e fin ic ió n d irig id a p o r la s in ta x is d e la fig u ra 5 .5 0 es u n a d e fin ic ió n c o n a t r i ­
b u to s p o r la iz q u ie rd a , asi q u e se p u e d e c o n s tr u i r u n e s q u e m a d e tr a d u c c ió n p a ra
ella. El e s q u e m a d e tr a d u c c ió n d e la fig u ra 5.51 u tiliz a al p r o c e d im ie n to e m ite pa-

E -* { £ , . verdadero : = etiqnueva ;
E |. falso :=r E .fa lso }
Ex
an d { emite('etiqueta' E ,. verdadero ) ;
E 2. verdadero: = E. verdadero'.
E 2.falso : = E.falso }
E2
E - * id { em ite ( '¡ f id. lugar 'goto' E. verdadero );
em itei'goto’ E fa lso ) }

Fig. 5.51. E m isión d e código para expresiones booleanas.

ra g e n e ra r y e m iti r in s tr u c c io n e s in c r e m e n ta lm e n te . E n la fig u ra ta m b ié n se m u e s ­
tr a n las a c c io n e s p a r a a s ig n a r los v a lo re s d e los a tr i b u to s h e re d a d o s , in s e rta d o s a n te s
d e lo s s ím b o lo s g ra m a tic a le s a p ro p ia d o s , c o m o se e x p lic ó en la se c c ió n 5.4.
338 T R A D U C C IO N DIRIG IDA POR LA SIN TA X IS

El e s q u e m a d e tr a d u c c ió n d e la figura 5 .5 2 va m á s allá; u tiliza pilas d is tin ta s p a ra


g u a r d a r los v alo res d e los a tr ib u to s h e re d a d o s E .verdadero y E.falso. Al igual q u e en
el e je m p lo 5.26, las reglas d e c o p ia n o tie n e n efecto s o b re las pilas. P a r a im p la n t a r
la regla E v e r d a d e r o : = etiqnueva, se m e te u n a e tiq u e ta n u e v a d e n t r o d e la p ila de

> { m eteietiqnueva, verdadero ) }


Ei
and { emitci'e tiq u eta' lope{verdadero))\
saca( verdadero ) }
Ei

E -* id { em itei' if ' id . lugar 'goto' tope{ verdadero)):


emitei'goto' topeifalso ) ) }

Fig. 5.52. Em isión d e código para expresiones booleanas.

v e r d a d e r o a n t e s d e q u e se v is ite £ j . L a d u r a c i ó n d e e s ta e t i q u e t a f in a liz a c o n la
a c c i ó n e /w /V e f e t iq u e t a ' to p e { v e rd a d e ro )), c o r r e s p o n d i e n t e a e w /7 e ( 'e t iq u e t a '
E).verdadero), d e m o d o q u e a la p ila d e v e rd a d e r o se le a p lic a la o p e r a c ió n saca des­
p u é s d e la a c c ió n . L a p ila d e falso n o c a m b i a e n e s te e j e m p l o , p e r o e s n e c e s a r ia
c u a n d o se a d m ite el o p e r a d o r o r a d e m á s d e l o p e r a d o r an d . □

D u r a c io n e s s in s o la p a m ie n to

U n registro sólo es u n c a so esp ecial d e u n a pila. Si c a d a o p e r a c ió n m e te v a seguida


d e u n a o p e r a c ió n saca, e n to n c e s n o p u e d e h a b e r m á s d e u n e le m e n to a la v e z e n la
pila. E n este c a so se p u e d e u tiliz a r u n reg istro e n lu g a r d e u n a pila. E n c u a n t o a las
d u ra c io n e s , si las d u r a c io n e s d e d o s a tr ib u to s n o se s o la p a n , se p u e d e n g u a r d a r sus
v alo res e n el m is m o registro.

E je m p lo 5 .2 8 . L a d e fin ic ió n d irig id a p o r la s in ta x is d e la fig u ra 5.53 c o n s tr u y e á r ­


boles s in tá c tic o s p a r a e x p re s io n e s e n fo rm a d e listas c o n o p e r a d o r e s e n u n so lo nivel
d e p re c e d e n c ia . D ic h a d e f in ic ió n se h a t o m a d o d e l e s q u e m a d e tr a d u c c ió n d e la
fig u ra 5.28.
L a d u r a c ió n d e c a d a a tr ib u to R d e b e ría fin a liz a r c u a n d o s e a e v a lu a d o el a tr ib u to
q u e d e p e n d e d e él. S e p u e d e d e m o s t r a r q u e p a r a c u a lq u ie r á rb o l d e a n álisis s in tá c ­
tic o , los a tr ib u to s d e R p u e d e n e v a lu a rse d e n t r o d e l m i s m o re g istro r. El sig u ie n te
r a z o n a m ie n t o es el típ ic o n e c e sa rio p a r a a n a liz a r g ra m á tic a s. L a in d u c c ió n se realiza
s o b re el t a m a ñ o d e l s u b á rb o l a s o c ia d o a R e n el f r a g m e n to d e á rb o l d e a n álisis s in ­
tá c tic o d e la figura 5.54.
S e o b tie n e el á rb o l m á s p e q u e ñ o p o sib le si se a p lic a R , e n c u y o c a so R .s es
u n a c o p ia d e R .h, asi q u e el v a lo r d e a m b o s está e n r. P a ra u n s u b á rb o l m á s g ra n d e ,
la p ro d u c c ió n e n la ra íz d e l s u b á rb o l d e b e s e r p a r a R - » o p su m a T R ¡. L a d u ra c ió n
d e R .h te r m in a c u a n d o se e v a lú a R ].h, d e m o d o q u e R ¡.h se p u e d e e v a lu a r d e n t r o
del re g istro r. S eg ú n la h ip ó tesis d e in d u c c ió n , a to d o s los a tr i b u to s p a r a c a s o s del
5.9 A S IG N A C IO N D E ESPACIO 339

P r o d u c c ió n R e g l a s S e m á n t ic a s

E -> T R R .h : = T.apn
E.apn := R.s

R -* opsum a T R\ R\ .= haznodo (opsuma.lexe/na, R.h, T.apn)


R .s : = R i.s

R -> € R .s := R.h

T -> núm T.apn : = hazhoja( núm. núm val)

Fig. 5.53. U n a definición dirigida p o r la sin tax is a d a p ta d a d e la figura 5.28.

Fig. 5.54. G ra fo d e d ep en d en cias p a ra E -* T R.

n o te rm in a l R e n el s u b á rb o l d e R { se les p u e d e a s ig n a r el m i s m o reg istro . P o r úl­


tim o , R .s e s u n a c o p ia d e R \.s, d e m o d o q u e su v a lo r está ya e n r.
El e s q u e m a d e tr a d u c c ió n d e la fig u ra 5 .5 5 e v a lú a los a tr ib u to s e n la g ra m á tic a
c o n a tr ib u to s e n la figura 5.53, u tiliz a n d o el re g istro r p a r a g u a r d a r los v a lo re s d e los
a tr i b u to s R .h y R .s p a r a to d o s lo s c a s o s d e l n o te r m in a l R.

E -* T { r : = T.apn /* r co n tien e a h o ra a R .h * /}
R { E.apn : = r /* se ha d ev u elto r co n R .s * /}
R —> opsum a
T { r : = haznodo{opsuma lexem a, r. T.apn ) }
R
R -> c
7 núm { T.apn := hazhoja{ núm , n ú m . v a l) }

Fig. 5.55. E sq u em a d e trad ucció n tra n sfo rm ad o p a ra c o n s tru ir árboles sintácticos.

P a ra te r m in a r , e n la fig u ra 5 .5 6 se m u e s tr a el c ó d ig o p a r a a p lic a r el e s q u e m a de
tra d u c c ió n a n te r io r , se c o n s tr u y e s e g ú n el a lg o ritm o 5.2. El n o te rm in a l R y a n o tiene
a trib u to s , asi q u e R se c o n v ie r te e n u n p r o c e d im ie n to e n lu g a r d e s e r u n a f u n c ió n .
340 T R A D U C C IO N D IR IG ID A POR LA SINTA XIS

L a v a ria b le r se h iz o local a la f u n c ió n E, a s í q u e E p u e d e s e r ll a m a d o re c u rs iv a -
m e n te , a u n q u e n o e s n e c e sa rio e n el e s q u e m a d e la fig u ra 5.55. S e p u e d e m e jo ra r
a ú n m á s e s te c ó d ig o e l i m i n a n d o la r e c u r s i ó n p o r el fin al y s u s t i t u y e n d o d e s p u é s
la ll a m a d a r e s ta n te d e R p o r el c ó d ig o d e l p r o c e d i m i e n t o r e s u lta n te , c o m o e n la
secció n 2.5. □

5 .1 0 A N A L I S I S D E D E F I N I C I O N E S D I R I G I D A S P O R L A S I N T A X I S

E n la secció n 5.7, los a tr i b u to s se e v a lu a r o n d u r a n t e el r e c o r r id o d e u n á r b o l utili­


z a n d o u n c o n j u n t o d e f u n c io n e s m u t u a m e n t e recu rsiv as. L a f u n c ió n p a r a u n n o te r­
m in a l tr a n s f o r m a b a los v a lo re s d e lo s a tr i b u to s h e re d a d o s e n u n n o d o e n los valores
d e los a tr ib u to s s in te tiz a d o s e n d i c h o n o d o .

function E: t n o d o -á rb o lsin tá clico ;


var r: t nodo-árbol sintáctico-,
/exemaopsuma: char;
proeedure R:
begin
if símbolo-anticipación = op su m a th en begin
/exem aopsu m a : = va/ex:
parea( opsum a);
r : = haznodo(lexem aopsum a. r, T)\
R
end
end.

begin
r : = T: R
return r
end:

F ig. 5 .5 6 . C o m p á rese el p ro ced im ien to R c o n el código d e la figura 5.31.

El e n f o q u e d e la se c c ió n 5 .7 se e x tie n d e a tr a d u c c io n e s q u e n o p u e d e n realizarse
d u r a n t e u n so lo r e c o r r id o e n p r o f u n d id a d . A q u í se u s a rá u n a f u n c ió n d is tin ta p a r a
c a d a a tr ib u to s in te tiz a d o d e c a d a n o te r m in a l, a u n q u e u n a so la f u n c ió n p u e d e e v a ­
lu a r g ru p o s d e a tr i b u to s sin te tiz a d o s. L a c o n s tr u c c ió n d e la se c c ió n 5 .7 c o n s id e r a el
c a s o esp e c ia l e n q u e to d o s los a t r i b u t o s s in te tiz a d o s f o r m a n u n g r u p o . E l a g o l p a ­
m i e n to d e a tr i b u to s v ie n e d e t e r m in a d o p o r las d e p e n d e n c ia s im p u e s ta s p o r las r e ­
glas s e m á n tic a s e n u n a d e fin ic ió n d irig id a p o r la sintaxis. El sig u ie n te e je m p lo a b s ­
tr a c to ilu s tra la c o n s tru c c ió n d e un e v a l u a d o r recu rsiv o .
5.10 A N A L I S I S D E D E F I N I C I O N E S D I R I G I D A S P O R LA S I N T A X I S 341

E je m p lo 5 .2 9 . L a d e fin ic ió n d irig id a p o r la s in ta x is d e la fig u ra 5 .5 7 está m o tiv a d a


p o r u n p r o b le m a q u e se c o n s id e r a r á e n el c a p itu lo 6. B re v e m e n te , el p r o b le m a es
éste: u n id e n tific a d o r “so b re c a rg a d o ” p u e d e te n e r u n c o n ju n to d e tip o s posibles; c o m o
c o n s e c u e n c ia , u n a e x p re s ió n p u e d e t e n e r u n c o n j u n t o d e tip o s p o sib les. S e u tiliza
in f o r m a c ió n d e l c o n te x to p a r a s e le c c io n a r u n o d e los tip o s p o sib le s p a r a c a d a su b ex -
p re s ió n . P u e d e resolv erse el p r o b le m a re a liz a n d o u n a p a s a d a a s c e n d e n te p a r a s in ­
te tiz a r el c o n j u n t o d e tip o s posibles, s e g u id a d e u n a p a s a d a d e s c e n d e n te p a r a re d u c ir
el c o n j u n t o a u n so lo tipo.

Pr o d u c c i ó n R egi a s S e m á n t i c a s

S -> E E.h = SiE.s)


S .r = E l

E2 E.s = fs(E,.s, E 2.s )


E \.h = JhHE.h)
E 2.h - fh2(E.h)
El = M E ,.l.E 2.l )
£ —* id E.s = ¡d v
E.t = ¡(E.h)

Fig. 5.57. Los a trib u to s sintetizados s y i n o se pueden evaluar ju n to s.

L as reglas s e m á n tic a s d e la fig u ra 5 .5 7 s o n u n a a b s tra c c ió n d e este p r o b le m a . El


a t r i b u t o s in te tiz a d o s r e p re s e n ta el c o n j u n t o d e tip o s p o sib les y el a t r i b u t o h e r e d a d o
h r e p re s e n ta la in f o r m a c ió n d e l c o n te x to . U n a t r i b u t o s in te tiz a d o a d ic io n a l t. q u e
n o se p u e d e e v a lu a r e n la m is m a p a s a d a q u e s, p u e d e r e p r e s e n ta r el c ó d ig o g e n e ra d o
o el tip o s e le c c io n a d o p a r a u n a s u b e x p re s ió n . E n la fig u ra 5 .5 8 se m u e s tr a n los gra-
fos d e d e p e n d e n c ia s p a r a la s p ro d u c c io n e s d e la fig u ra 5.57. □

E v a lu a c ió n re c u rs iv a d e a tr ib u to s

El grafo de dependencias para u n árbol de análisis sintáctico se forma uniendo gra-


fos m á s p e q u e ñ o s c o rr e s p o n d ie n te s a las reglas s e m á n tic a s p a r a u n a p ro d u c c ió n . El
g rafo d e d e p e n d e n c ia s I)p p a r a la p ro d u c c ió n p se b a sa ú n ic a m e n te en las reglas se-

h ^ s i

N T
id A

F ig. 5 .5 8 . G r a fo s d e d e p e n d e n c i a s p ara las p r o d u c c io n e s d e la figura 5.57.


342 T R A D U C C IO N D IR IG ID A POR LA SINTA XIS

m á n tic a s p a r a u n a so la p ro d u c c ió n , e s d e c ir, e n las reglas s e m á n tic a s p a r a los a tri­


b u to s s in te tiz a d o s d e l la d o iz q u ie r d o y los a tr i b u to s h e re d a d o s d e lo s s ím b o lo s g ra ­
m a t i c a l e s d e l l a d o d e r e c h o d e la p r o d u c c i ó n . A sí, el g r a f o Dp m u e s t r a s ó lo
d e p e n d e n c ia s locales. P o r e je m p lo , to d a s las arista s d e l g rafo d e d e p e n d e n c ia s p a ra
E -+ E \ E 2 d e la fig u ra 5 .5 8 e s tá n e n t r e c aso s d e l m is m o a tr ib u to . P o r este g rafo de
d ep en d en c ias, n o se p u e d e s a b e r si los a trib u to s s d e b e n calcu larse a n te s q u e los o tro s
a trib u to s.
C o n s id e r a n d o c o n m a y o r d e ta lle el g rafo d e d e p e n d e n c ia s p a r a el á r b o l d e a n á ­
lisis s in tá c tic o d e la fig u ra 5 .5 9 , se v e q u e los a tr ib u to s d e c a d a c a so d e l n o te rm in a l
E d e b e n e v a lu a r s e en el o r d e n E s, E .h , E .t. O b sé rv e se q u e to d o s los a tr ib u to s d e la
fig u ra 5 .5 9 p u e d e n e v a lu a rse e n tr e s p a sa d a s: u n a p a s a d a a s c e n d e n te p a r a e v a lu a r
los a tr i b u to s s, u n a p a s a d a d e s c e n d e n te p a r a e v a lu a r los a tr i b u to s h y u n a p a s a d a
a s c e n d e n te final p a r a e v a lu a r los a tr ib u to s /.

Fig. 5.59. G ra fo d e d ep en d en cias p a ra u n árbol d e análisis sintáctico.

E n u n e v a l u a d o r re c u rsiv o , la f u n c ió n p a r a u n a tr ib u to s in te tiz a d o t o m a los v a­


lo res d e a lg u n o s d e los a tr i b u to s h e re d a d o s c o m o p a rá m e tro s . E n g en eral, si el a tri­
b u t o s in te tiz a d o A .a p u e d e d e p e n d e r d e l a t r i b u t o h e r e d a d o A .b , e n to n c e s !a fu n c ió n
p a r a A .a t o m a A .b c o m o p a r á m e tr o . A n te s d e a n a liz a r las d e p e n d e n c ia s , se c o n s i­
d e r a u n e je m p lo q u e ilu stra su uso.

E je m p lo 5 .3 0 . L a s f u n c io n e s E s y E l d e la fig u ra 5 .6 0 d e v u e lv e n los v alo res d e los


a tr i b u to s s in te tiz a d o s s y / e n u n n o d o n e tiq u e ta d o c o n E. C o m o e n la se c c ió n 5.7,
h a y u n c a s o p a r a c a d a p ro d u c c ió n e n la f u n c ió n p a r a u n n o te r m in a l. El c ó d ig o eje­
c u t a d o e n c a d a c a so s im u la las reglas s e m á n tic a s a s o c ia d a s c o n la p r o d u c c ió n d e la
fig u ra 5.57.
Del e s tu d io a n t e r i o r d e l g rafo d e d e p e n d e n c ia s d e la fig u ra 5 .5 9 se d e s p r e n d e q u e
el a tr ib u to E .t e n u n n o d o d e u n á rb o l d e a n á lis is s in tá c tic o p u e d e d e p e n d e r d e E .h.
P o r t a n t o , se p a s a al a tr ib u to h c o m o p a r á m e t r o a la f u n c ió n E .t p a r a el a t r i b u t o t.
C o m o el a t r i b u t o E s n o d e p e n d e d e n in g ú n a tr ib u to h e r e d a d o , la f u n c ió n E .s n o
tie n e p a r á m e tr o s c o rr e s p o n d ie n te s a v a lo re s d e a tr ib u to s . □
5.10 ANALISIS D E D E FIN IC IO N E S D IR IG ID A S POR LA SIN T A X IS 343

D e fin ic io n e s d ir ig id a s p or la s in t a x is fu e r te m e n te n o c ir c u la r e s

S e p u e d e n c o n s tr u ir e v a lu a d o r e s re c u rs iv o s p a r a u n a clase d e d e fin ic io n e s dirig id as


p o r la sin tax is, lla m a d a s d e fin ic io n e s “ f u e r te m e n te n o c irc u la re s” . P a r a u n a d e fin i­
c ió n d e n t r o d e esta clase, p u e d e e v a lu a rse s e g ú n el m is m o o rd e n (p arcia l). C u a n d o
se c o n s tr u y e la f u n c ió n p a r a u n a t r i b u t o s in te tiz a d o d e l n o te rm in a l, se u tiliz a este
o r d e n p a r a se le c c io n a r los a tr i b u to s h e re d a d o s q u e se c o n v ie rte n e n los p a r á m e tr o s
d e la fu n c ió n .

fu n ction Es{n):
begin
case producción en el n o d o n of
T - » ¿ , E {\
s i : = Es(hijo(n, I));
s 2 : = Es{hijo{ny 2));
return fs ( s l , s2)\
'E -+ id';
return id s;
default:
error
end
end;

function E t(n. h)\


begin
c a se p ro d u cció n en el n o d o n o f
' ¿ - > ¿ , ¿ 2':
h l : = flil(h );
t i : = Et(hijo(n, 1), h l):
h2 : = Jh2(h)'y
t2 : = Et(hijo(n, 2), h2):
return f t ( t l , t2)\
'¿ -► id ':
return /(/?);
default:
error
end
end;

function Sr(n );
begin
s : = Es(hijo{n, 1));
h : = gis);
/ : = Et(hijo(n , 1),//);
return t
end;

F ig. 5 .6 0 . F u n c i o n e s p a r a l o s a t r i b u t o s s i n t e t i z a d o s d e la fig u ra 5 .5 7 .
344 T R A D U C C IO N DIRIG IDA POR LA SIN TA X IS

Se d a u n a d e f in ic ió n d e e s ta clase y se d e m u e s t r a q u e la d e f in ic ió n d ir ig id a p o r
la s in ta x is d e la fig u ra 5 .5 7 p e r te n e c e a d ic h a c lase . D e s p u é s se d a u n a lg o r itm o
p a r a c o m p r o b a r si ex iste c irc u la r id a d y fu erte n o c irc u la r id a d , y se d e m u e s t r a c ó m o
la a p lic a c ió n d e l e j e m p lo 5 .3 0 sirv e p a r a to d a s las d e f in ic io n e s f u e r te m e n te n o c i r ­
cu lares.
C o n s id é re s e el n o te rm in a l A e n u n n o d o n d e u n á rb o l d e a n álisis s in tá c tic o . El
g rafo d e d e p e n d e n c ia s p a r a el á rb o l d e a n á lis is s in tá c tic o p u e d e te n e r g e n e r a lm e n te
c a m in o s q u e c o m ie n c e n e n u n a t r i b u t o d e l n o d o a?, r e c o r r a n a tr i b u to s d e o tro s n o ­
d o s e n el á rb o l y te r m in e n e n o t r o a t r i b u t o d e n. P a r a lo q u e se p r e te n d e , b a s ta co n
c o n s id e r a r los c a m in o s q u e p e r m a n e c e n d e n t r o d e la p a r te del á rb o l d e a n á lis is s in ­
tá c tic o d e b a jo d e A . U n a p e q u e ñ a reflex ió n rev ela q u e d ic h o s c a m in o s v a n d e sd e
a lg ú n a t r i b u t o h e r e d a d o d e A a a lg ú n a t r i b u t o s in te tiz a d o d e A. S e h a c e u n a e s ti­
m a c ió n (q u iz á d e m a s ia d o p e s im is ta ) del c o n j u n t o d e d ic h o s c a m in o s c o n s id e r a n d o
ó r d e n e s p a rc ia le s re s p e c to a los a tr i b u to s d e A.
T e n g a la p r o d u c c ió n p los n o te r m in a le s A A i , . . . , A n e n el la d o d e r e c h o . Sea
RA¡ u n o rd e n p arcial re sp e c to a los a tr ib u to s d e Ap p a r a 1 ^ j £ n. Se escribe D £ R A \%
RA2 R A n] p a r a el g rafo o b te n id o a ñ a d i e n d o a ris ta s a Dr d e la sig u ie n te m a n e r a :
si R A j o r d e n a el a t r i b u t o A ,.b a n te s d e l A ,.c e n to n c e s a ñ á d a s e u n a a ris ta d e A ,.b a
A¡.c.
Se d ic e q u e u n a d e fin ic ió n d irig id a p o r la sin ta x is es fu e rte m e n te n o circular si
p a r a c a d a te rm in a l A se p u e d e e n c o n t r a r u n o r d e n p a rc ia l R A re sp e c to a los a t r i b u ­
to s d e A ta l q u e p a r a c a d a p ro d u c c ió n p c o n la d o iz q u ie r d o A y n o te rm in a le s A¡,
A 2, . . . , A n e n el la d o d e re c h o ,

1. D p[R A i, R.-Í2 , . . • , R.4,,] es acíclico , y


2. si h a y u n a a ris ta del a tr ib u to A .b a A .c e n DP[R A ,, R A 2, • • •« R A n]* e n to n c e s R A
o r d e n a A .b a n te s q u e A.c.

E je m p lo 5 .3 1 . S ea p la p ro d u c c ió n E - * .E \ E 2 d e la fig u ra 5 .5 7 , c u y o grafo d e d e ­
p e n d e n c ia s Dn e s tá e n el c e n t r o d e la fig u ra 5 .5 8 . S ea R E el o r d e n p a rc ia l (o rd e n
to ta l e n este c a s o ) / j /. E x isten d o s c aso s d e n o te rm in a le s e n el la d o d e r e c h o
d e p . q u e se e sc rib e n £ , y E 2. c o m o d e c o s tu m b r e . P o r ta n to . R E , y R E 2 s o n los
m is m o s q u e R E , y el g rafo DP[ R E {, R E 2] se m u e s t r a e n la fig u ra 5.61.

Fig. 5.61. G ra fo d e d e p en d en c ias a u m e n ta d o para u n a producción.

E n tre los a tr i b u to s a s o c ia d o s c o n la ra íz E d e la fig u ra 5 .6 1 . los ú n ic o s c a m in o s


s o n d e // a t. C o m o R E h a c e q u e h p r e c e d a a /, n o se in c u m p le la c o n d ic ió n (2). □
5.10 ANALISIS D E DEFINICIO NES D IR IG ID A S POR LA SIN T A X IS 345

D a d a u n a d e fin ic ió n f u e r te m e n te n o c irc u la r y u n o rd e n p a rc ia l R A p a r a c a d a
n o te rm in a l A , la fu n c ió n p a r a el a t r i b u t o s in te tiz a d o s d e A t o m a los a r g u m e n to s
q u e sigue: si R A o r d e n a el a t r i b u t o h e r e d a d o // a n te s q u e 5, e n to n c e s h e s u n a rg u ­
m e n t o d e la f u n c ió n , d e lo c o n t r a r i o n o .

U n a p ru e b a d e circ u la rid a d

Se d ic e q u e u n a d e f in ic ió n d ir ig id a p o r la s in ta x is es c ir c u la r si el g ra fo d e d e p e n ­
d e n c ia s p a r a u n árb o l d e a n á lis is s in tá c tic o tie n e u n ciclo; las d e fin ic io n e s c irc u la re s
están m al f o r m a d a s y c a re c e n d e sig n ificad o. Es im p o sib le c o m e n z a r a c a lc u la r n in ­
g u n o d e los v alo res d e a tr ib u to s e n el ciclo. C a lc u la r lo s ó r d e n e s p arciales q u e g a r a n ­
tizan q u e u n a d e fin ic ió n sea f u e r te m e n te n o c irc u la r tie n e m u c h o q u e ver c o n c o m ­
p r o b a r si u n a d e fin ic ió n es c irc u la r. P o r ta n to , p r im e r o se c o n s id e r a r á u n a p ru e b a
d e la ex isten cia d e c irc u la rid a d .

E jem p lo 5 .3 2 . E n la sig u ie n te d e fin ic ió n d irig id a p o r la sin ta x is, los c a m in o s e n tre


los a tr i b u to s d e A d e p e n d e n d e la p r o d u c c ió n q u e se a p liq u e . Si se a p lic a -4 I,
e n to n c e s A s d e p e n d e d e A./r, d e lo c o n t r a r i o n o . P a r a u n a in f o r m a c ió n c o m p le ta
s o b re las d e p e n d e n c i a s p o s ib le s se d e b e n se g u ir c o n a t e n c i ó n lo s c o n j u n t o s d e ó r ­
d e n e s p arciales d e los a tr ib u to s d e u n n o te rm in a l.

Pr o d u c c i ó n R e g i a s Se m á n t i c a s

S -* A A .h : = c
.4 — * 1 A .s : = f( A .h )
a -> 2 A .s := d

L a id e a base del a lg o r itm o d e la fig u ra 5 .6 2 e s la sig u ie n te: S e re p re s e n ta n los


ó r d e n e s p arciales m e d ia n te g rafo s d irig id o s a cíclico s ( G D A ) . D a d o s G D A a los a tri­
b u to s d e s ím b o lo s e n el la d o d e r e c h o d e u n a p ro d u c c ió n , se p u e d e d e t e r m i n a r u n
G D A p a ra los a tr ib u to s del la d o iz q u ie r d o c o m o se ilu stra e n la fig u ra 5.62.
S ea p la p ro d u c c ió n A X \X i . . . X k c o n g rafo d e d e p e n d e n c ia s Dn. S ea D , un
G D A p a r a X,. I <, j < k. C a d a a ris ta b —>a e n D, se a ñ a d e te m p o r a l m e n t e al grafo
d e d e p e n d e n c ia s Dr p a r a la p ro d u c c ió n . Si el g rafo o b te n id o tie n e u n ciclo, e n to n c e s
la d e fin ic ió n d irig id a p o r la s in ta x is es c irc u la r. D e lo c o n tr a r io , los c a m in o s e n el
g rafo r e s u lta n te d e te r m in a n un n u e v o G D A a los a tr i b u to s del la d o iz q u ie r d o d e la
p ro d u c c ió n , y el G D A o b te n id o se a ñ a d e a .? (A ).
L a p r u e b a d e c irc u la rid a d d e la figura 5.62 t o m a u n t i e m p o e x p o n e n c ia l e n fu n ­
c ió n d e l n ú m e r o d e g rafo s e n los c o n j u n t o s ¿ f ( X) p a r a c u a lq u ie r s ím b o lo g ra m a tic a l
X . E x isten d e fin ic io n e s d irig id as p o r la s in ta x is q u e n o a d m ite n u n a p r u e b a d e c ir­
c u la r id a d e n u n ti e m p o p o lin o m ia l.
S e p u e d e c o n v e rtir el a lg o ritm o d e la figura 5 .6 2 en u n a p r u e b a m á s e fic ien te si
u n a d e fin ic ió n d irig id a p o r la s in ta x is es f u e r te m e n te n o circ u la r, d e la sig u ie n te m a ­
nera. E n lu g a r d e m a n t e n e r u n a f a m ilia d e g rafo s . / '( A ) p a r a c a d a X. se r e s u m e la
in fo rm a c ió n d e la fa m ilia c o n s e r v a n d o u n so lo g rafo F (X ). O b sé rv e se q u e c a d a g rafo
en / ( A ) tie n e los m is m o s n o d o s p a r a los a tr i b u to s d e X , p e ro p u e d e te n e r d is tin ta s
346 T R A D U C C IO N DIRIG IDA POR LA SIN TA X IS

for el sím bolo gram atical X do


J 'i x ) tiene un solo grafo c o n los a trib u to s d e X y n in g u n a arista;
repeat
c a m b io : = false;
for la p ro d u cció n p d a d a p o r A - > X , X 2 . . . X k d o begin
for lo s G D A G , € ^ ( A ' 1) Gk €ST(Xk) do begin
/ > : = Dp;
for la arista b c e n Gjt 1 do
a ñ a d ir una arista en D e n tre los a trib u to s b y c d e X,\
i f D tiene u n ciclo then
falla la p ru eb a d e circularidad
e ls e begin
G : = u n n u e v o grafo con n o d o s para los atrib utos
d e A y n in g u n a arista;
for cada p a r d e a trib u to s b y c d e A do
if hay u n c a m in o en D desde b a c then
a ñ a d ir b c a G;
i f G n o está y a en ) then begin
a ñ a d ir G a P ( A );
cam bio : = true
end
end
end
end
until cam bio = false

F ig. 5 .6 2 . U n a p ru eb a d e circularidad.

aristas. F( X) e s el g rafo d e los n o d o s p a r a los a tr i b u to s d e X q u e tie n e u n a a ris ta


e n tr e X. b y X. c si la tie n e u n g rafo d e &( X ) . F( X) re p r e s e n ta u n a “e s tim a c ió n del
p e o r c a s o " d e las d e p e n d e n c ia s e n tr e los a tr i b u to s d e X. P o r e je m p lo , si F ( X ) es ací-
clico, e n to n c e s es s e g u ro q u e la d e fin ic ió n d irig id a p o r la s in ta x is e s n o circ u la r. S in
e m b a r g o , n o s ie m p re o c u r r e a la in v ersa; e s d ecir, si F ( X ) tie n e u n c iclo , n o s ie m p re
la d e fin ic ió n d irig id a p o r la s in ta x is e s circ u la r.
L a p r u e b a d e c irc u la rid a d m o d if ic a d a c o n s tr u y e g rafo s acíclico s F( X) p a r a c a d a
X si re su lta p o sitiv a. A p a r ti r d e d ic h o s g rafo s se p u e d e c o n s tr u i r u n e v a l u a d o r p a r a
la d e fin ic ió n d irig id a p o r la sin ta x is. El m é to d o es u n a c la ra g e n e ra liz a c ió n d e l e je m ­
p lo 5 .3 0 . L a f u n c ió n p a r a el a t r i b u t o s in te tiz a d o X . s t o m a c o m o a r g u m e n t o s ú n i­
c a m e n te to d o s los a tr i b u to s h e re d a d o s , q u e p re c e d e n a 5 e n F( X). L a f u n c ió n , lla­
m a d a e n el n o d o n , lla m a a o tr a s f u n c io n e s q u e c a lc u la n los a tr ib u to s sin te tiz a d o s
n ecesario s e n los h ijo s d e n. A las r u tin a s p a r a c a lc u la r d ic h o s a tr i b u to s se les p a sa n
v a lo re s p a r a lo s a t r i b u t o s h e r e d a d o s q u e n e c e s ita n . E l h e c h o d e q u e la p r u e b a d e
fu erte n o c irc u la r id a d r e s u lta ra p o s itiv a sig nifica q u e d ic h o s a tr i b u to s h e re d a d o s se
p u e d e n calcu lar.
EJERCICIOS 347

E JE R C IC IO S

5.1 P a r a la e x p re sió n d e e n t r a d a ( 4 * 7 + 1 ) * 2 , c o n s tr ú y a s e u n á rb o l d e a n álisis


s in tá c tic o c o n a n o ta c io n e s s e g ú n la d e fin ic ió n d irig id a p o r la sin ta x is d e la
figura 5.2.
5 .2 C o n s tr ú y a s e el á rb o l d e a n á lis is s in tá c tic o y el á rb o l s in tá c tic o p a r a la e x p re ­
sió n ( ( a ) + ( b ) ) según
a) la d e fin ic ió n d irig id a p o r la s in ta x is d e la fig u ra 5.9. y
b) el e s q u e m a d e tr a d u c c ió n d e la fig u ra 5.28.
5 .3 C o n s trú y a s e el G D A e id e n tifiq ú e n s e los n ú m e r o s d e v a lo r p a r a las su b ex -
p r e s io n e s d e la s ig u ie n te e x p r e s i ó n , s u p o n i e n d o q u e + a s o c ia p o r la iz ­
q u ie rd a :
a+ a+ (a+ a+ a+ (a+ a+ a+ a)).
*5.4 D é s e u n a d e fin ic ió n d irig id a p o r la s in ta x is p a r a tr a d u c ir e x p re s io n e s in fijas
a e x p re s io n e s in fijas s in p a ré n te s is r e d u n d a n te s . P o r e je m p lo , p u e s to q u e +
y * a s o c ia n p o r la iz q u ie r d a , ( ( a * ( b + c ) ) * ( d ) ) p u e d e re e s c rib irs e
a * ( b + c ) *d.
5 .5 D ése u n a d e fin ic ió n d irig id a p o r la s in ta x is p a r a d ife re n c ia r e x p r e s io n e s for­
m a d a s m e d ia n te la a p lic a c ió n d e lo s o p e r a d o r e s a r itm é tic o s + y * a la v aria­
b le x y c o n s ta n te s ; p o r e je m p lo , x * ( 3 * x + x * x ) . S u p ó n g a s e q u e n o tie n e lu­
g a r n in g u n a s im p lific a c ió n , d e m o d o q u e 3 * x se tr a d u c e a 3 * l + 0 * x .
5 .6 L a sig u ie n te g ra m á tic a g e n e ra e x p re s io n e s f o r m a d a s m e d ia n te la a p licació n
d e u n o p e r a d o r a r itm é tic o + a c o n s ta n te s e n te ra s y reales. C u a n d o se s u m a n
d o s e n te ro s , el tip o o b t e n i d o es e n te r o , d e lo c o n t r a r i o es real.
£ -» £ + T | T
T —* n ú m . n úm | n úm
a ) D ése u n a d e fin ició n dirig id a p o r la sin ta x is p a r a d e te r m in a r el tip o d e c a d a
su b ex p resió n .
b ) A m p líe s e la d e f in ic ió n d ir ig id a p o r la s in ta x is d e a ) p a r a q u e tr a d u z c a
e x p re sio n e s a n o ta c ió n p o s tfija a s í c o m o d e t e r m i n a r los tip o s. U tilícese el
o p e r a d o r u n ita r io e n ta r e a l p a r a c o n v e r t ir u n v a lo r e n t e r o e n u n v a lo r real
e q u iv a le n te , d e m a n e r a q u e a m b o s o p e r a n d o s d e + e n la fo rm a po stfija
te n g a n el m i s m o tip o .
5 .7 A m p líe s e la d e fin ic ió n d irig id a p o r la sin ta x is d e la figura 5 .2 2 p a r a t e n e r en
c u e n t a el a n c h o d e las cajas sus a ltu r a s c o r r e s p o n d ie n te s . S u p ó n g a s e q u e el
te rm in a l te x to tie n e u n a t r i b u t o s in te tiz a d o a q u e p r o p o r c io n a el a n c h o n o r­
m a liz a d o del te x to .

5 .8 S ea el a tr ib u to s in te tiz a d o v a l q u e d a el v a lo r del n ú m e r o b in a rio g e n e ra d o


p o r S e n la s ig u ie n te g r a m á t i c a . P o r e j e m p lo , c o n la e n t r a d a 1 0 1 . 1 0 1 .
S .v a l = 5.625

S -> L . L \ L
L-*LB\B
B-* 0 | 1
348 T R A D U C C IO N D IR IG ID A POR L A SINTA XIS

a) U tilíc e n s e a tr i b u to s s in te tiz a d o s p a r a d e t e r m i n a r S.vaJ.


b) D e te r m ín e s e S .v a l c o n u n a d e fin ic ió n d irig id a p o r la s in ta x is e n la q u e el
ú n ic o a t r i b u t o s in te tiz a d o d e B s e a c, q u e p r o p o r c io n e la c o n t r i b u c ió n del
b it g e n e r a d o p o r tí al v a lo r fin al. P o r e je m p lo , la c o n t r i b u c i ó n d e l p ri­
m e r o y ú l t i m o b its e n 101.101 al v a lo r 5 .6 2 5 e s 4 y 0 .1 2 5 , re s p e c tiv a ­
m e n te .

5 .9 R eescrib ase la g r a m á tic a s u b y a c e n te e n la d e fin ic ió n d irig id a p o r la sin ta x is


del e je m p lo 5 .3 d e m o d o q u e la in f o r m a c ió n s o b re el tip o p u e d a p ro p a g a rs e
u tiliz a n d o ú n ic a m e n t e a tr ib u to s sin te tiz a d o s.

* 5 .1 0 C u a n d o las p ro p o sic io n e s g e n e ra d a s p o r la sig uiente g ra m á tic a se tra d u c e n a


c ó d ig o d e m á q u in a a b s tra c ta , u n a p ro p o s ic ió n b reak tr a d u c e e n u n salto a
la in s tr u c c ió n q u e v a d e s p u é s d e la p ro p o s ic ió n w h ile e n g lo b a d o r a m á s c e r­
c a n a . P a r a sim p lific a r, las e x p re s io n e s se re p re s e n ta n m e d ia n te el te rm in a l
e x p r y las o tr a s clases d e p ro p o s ic io n e s c o n el te r m in a l o tr a s. D ic h o s t e r m i ­
n ales tie n e n u n a t r i b u t o s in te tiz a d o código q u e h a c e su tra d u c c ió n .

S w h ile e x p r d o b eg in S end

break
o tra s

D ése u n a d e fin ic ió n d irig id a p o r la s in ta x is q u e tr a d u z c a p ro p o s ic io n e s a có­


d ig o p a r a la m á q u in a d e p ila d e la secció n 2.8. A segúrese d e q u e se tr a d u z ­
c a n c o r r e c t a m e n t e las p r o p o s ic io n e s b rea k d e n t r o d e p r o p o s ic io n e s w h ile
a n id a d a s.

5.11 E lim ín e se la re c u rs ió n p o r la iz q u ie r d a d e la s d e fin ic io n e s d irig id as p o r la


sin ta x is del e je rc ic io 5 .6 a ) y b).

5 .1 2 L a s e x p r e s io n e s g e n e r a d a s p o r la s ig u ie n te g r a m á t i c a p u e d e n t e n e r a s ig n a ­
c io n e s d e n t r o d e ellas.

S -> £
E E : « £ |£ + £ |( £ ) |¡ d
L a s e m á n tic a d e las e x p re s io n e s es c o m o e n C. E s d e c ir, b : = c e s u n a e x p re ­
sió n q u e a s ig n a el v a lo r d e c a b ; el v a lo r d e la d o d e r e c h o d e esta e x p re s ió n
es el m is m o q u e el d e c . E s m á s . a : = ( b : = c ) a s ig n a el v a lo r d e c a b y des­
p u é s a a.
a ) C o n s tr ú y a s e u n a d e fin ic ió n d irig id a p o r la s in ta x is p a r a c o m p r o b a r q u e
el la d o iz q u ie r d o d e u n a e x p re s ió n s e a u n v a lo r d e la d o iz q u ie rd o . U tilí­
cese u n a t r i b u t o h e r e d a d o lado d e l n o te r m in a l E p a r a in d ic a r si la e x p re ­
sió n g e n e ra d a p o r E a p a re c e e n el la d o iz q u ie r d o o e n el d e r e c h o d e u n a
a sig n a c ió n .
b) A m p líe s e la d e fin ic ió n d irig id a p o r la s in ta x is d e a ) p a r a q u e g e n e re c ó ­
d ig o in te r m e d io p a r a la m á q u i n a d e p ila d e la secció n 2 .8 c o n f o r m e c o m ­
p r u e b a la e n tra d a .
EJERCICIOS 349

5 .1 3 R eescríb ase la g ra m á tic a s u b y a c e n te d e l e jercicio 5 .1 2 d e m a n e r a q u e a g ru p e


las s u b e x p r e s io n e s d e : = a la d e r e c h a y a la s s u b e x p r e s io n e s d e + a la iz­
q u ie rd a .
a ) C o n s trú y a s e u n e s q u e m a d e tr a d u c c ió n q u e s im u le la d e fin ic ió n d irig id a
p o r la sin ta x is del e jercicio 5 .1 2 b).
b) M o d ifiq ú e se el e s q u e m a d e tr a d u c c ió n d e a) p a r a q u e e m ita c ó d ig o in cre-
m e n ta lm e n te a u n a r c h iv o d e salida.

5 .1 4 D ése u n e s q u e m a d e t r a d u c c ió n p a r a a s e g u ra rs e d e q u e el m i s m o id e n tif i­
c a d o r n o a p a r e z c a d o s veces e n u n a lista d e id e n tific ad o res.

5 .1 5 S u p ó n g a n s e las d e c la r a c io n e s g e n e ra d a s p o r la sig u ie n te g ra m á tic a

D - > id L
L , id L | : T
T in te g e r | re a l

a ) C o n s tr ú y a s e u n e s q u e m a d e tr a d u c c ió n p a r a in tr o d u c ir el tip o d e c a d a
id e n tif ic a d o r e n la ta b la d e s ím b o lo s, c o m o e n el e je m p lo 5.3.
b) C o n s tr ú y a s e u n t r a d u c t o r p re d ic tiv o a p a r ti r del e s q u e m a d e tr a d u c c ió n
d e a).

5 .1 6 L a s ig u ie n te g r a m á t i c a es u n a v e rs ió n n o a m b ig u a d e la g r a m á t i c a s u b y a ­
c e n te d e la figura 5 .2 2 . L a s llav es {} se u tiliz a n só lo p a r a a g r u p a r cajas, y se
e lim in a n d u r a n te la t r a d u c c i ó n . .

S -* L
L->LB\B
B —> B s u b F | F
F - » { L ¡ | te x to

a) A d á p te s e la d e fin ic ió n d irig id a p o r la s in ta x is d e la fig u ra 5 .2 2 p a r a q u e


u tilic e la g r a m á tic a a n te r io r .
b) C o n v ié r ta s e la d e fin ic ió n d irig id a p o r la s in ta x is d e a ) e n u n e s q u e m a d e
tra d u c c ió n .

*5.17 A m p líe s e la tr a n s f o r m a c ió n p a r a e lim in a r la re c u rs ió n p o r la iz q u ie r d a d e la


secció n 5 .5 d e m o d o q u e p e r m i ta al n o te rm in a l A e n (5.2):
a ) A tr ib u to s h e re d a d o s d e fin id o s p o r reg las d e c o p ia .
b) A tr ib u to s h e re d a d o s.

5 .1 8 E lim ín e se la re c u rs ió n p o r la iz q u ie r d a d e l e s q u e m a d e tr a d u c c ió n del e je rc i­
c io 5 .l6 ( b ) .

* 5 .1 9 S u p ó n g a s e q u e se tie n e u n a d e fin ic ió n c o n a tr i b u to s p o r la iz q u ie r d a c u y a
g r a m á tic a s u b y a c e n te es L L (1 ) o u n a p a r a la q u e se p u e d e n re so lv e r a m b i­
g ü e d a d e s y c o n s tr u i r u n a n a l iz a d o r s in tá c tic o p red ic tiv o . D e m u é s tr e s e q u e
se p u e d e n c o n s e r v a r los a tr i b u to s h e re d a d o s y s in te tiz a d o s e n la p ila d e u n
a n a liz a d o r s in tá c tic o d e s c e n d e n te g u ia d o p o r la ta b la d e a n á lis is s in tá c tic o
p redictiv o.
350 TR A D U C C IO N DIRIG IDA POR LA SIN TA X IS

* 5 .2 0 D e m u é s tr e s e q u e a ñ a d i e n d o n o te r m in a le s m a rc a d o r e s ú n ic o s e n c u a lq u ie r
p a rte e n u n a g r a m á tic a LL( 1) se o b tie n e u n a g ra m á tic a L R ( 1).

5.21 C o n s id é re s e la sig u ie n te m o d ific a c ió n d e la g r a m á tic a L R ( 1), L -► L b \ a :

L M L b\ a
M-> €

a ) ¿ E n q u é o r d e n a p lic a ría u n a n a liz a d o r s in tá c tic o a s c e n d e n te las p r o d u c ­


c io n e s e n el á rb o l d e a n á lis is s in tá c tic o p a r a la c a d e n a d e e n t r a d a a b b b l
*b) D e m u é s tre s e q u e la g r a m á tic a m o d if ic a d a n o es L R ( 1).

* 5 .2 2 D e m u é s tre s e q u e e n u n e s q u e m a d e tr a d u c c ió n b a s a d o e n la figura 5 .3 6 , el
v a lo r d e l a t r i b u t o h e r e d a d o C .tp s ie m p re e s ta rá in m e d ia t a m e n t e d e b a j o del
la d o d e r e c h o c u a n d o se r e d u z c a u n la d o d e r e c h o a C.

5 .2 3 El a lg o ritm o 5.3 p a r a el a n álisis s in tá c tic o a s c e n d e n te y la tr a d u c c ió n co n


a tr i b u to s h e re d a d o s u tiliz a n n o te rm in a le s m a r c a d o r e s p a r a g u a r d a r los v a ­
lo res d e a tr ib u to s h e re d a d o s e n p o s ic io n e s p re d e c ib le s d e la p ila del a n a liz a ­
d o r s in tá c tic o . P u e d e n s e r n e c e s a rio s m e n o s m a r c a d o r e s si lo s v a lo re s se c o ­
lo c an e n u n a p ila in d e p e n d ie n te s d e la p ila d e a n á lis is sin tá ctic o .
a ) C o n v ié r ta s e la d e fin ic ió n d ir ig id a p o r la s in ta x is d e la fig u ra 5 .3 6 e n u n
e s q u e m a d e tra d u c c ió n .
b) M o d ifiq ú e s e el e s q u e m a d e tr a d u c c ió n c o n s tr u id o e n a ) d e m o d o q u e el
v a lo r d e l a t r i b u t o h e r e d a d o tp a p a r e z c a e n u n a p ila in d e p e n d ie n t e . Eli­
m ín e s e el n o te r m in a l m a r c a d o r M e n el p ro ceso.

* 5 .2 4 C o n s id é re s e la tr a d u c c ió n d u r a n t e el a n álisis s in tá c tic o c o m o e n el ejercicio


5 .2 3 . S. C. J o h n s o n su g ie re el sig u ie n te m é t o d o p a r a s im u la r u n a p ila in d e ­
p e n d ie n te p a r a los a tr i b u to s h e re d a d o s , u tiliz a n d o m a r c a d o r e s y u n a v a ria ­
b le g lo b a l p a r a c a d a a t r i b u t o h e r e d a d o . E n la s ig u ie n te p r o d u c c i ó n , la p r i­
m e r a a c c ió n m e te el v a lo r v e n la p ila h y la s e g u n d a a c c ió n lo saca.

A -> a ( m ete(v9 h ) } [i { saca(h ) }

L a p ila // se p u e d e s im u l a r m e d i a n t e la s sig u ie n te s p ro d u c c io n e s q u e u tiliz an


u n a v a ria b le global g y u n n o te rm in a l m a r c a d o r M c o n a t r i b u t o s in te tiz a ­
do s:

A -> a M p {g : = M .s }
M -► c { M . s : = g ; g : = v }
a ) A p liq ú e s e e s t a t r a n s f o r m a c i ó n al e s q u e m a d e t r a d u c c i ó n d e l e j e r c i­
c io 5 .2 3 (b). S u s titu y a n s e to d a s las re fe re n c ia s a l to p e d e la p ila in d e p e n ­
d ie n te p o r re fe re n c ia s a la v a ria b le global.
b ) D e m u é s tr e s e q u e el e s q u e m a d e tr a d u c c ió n c o n s tr u id o e n a ) c a lc u la los
m is m o s v a lo re s p a r a el a t r i b u t o s in te tiz a d o del s ím b o lo in ic ia l q u e el del
e jercicio 5.23(b).

5 .2 5 U tilíc e s e e l e n f o q u e d e la s e c c ió n 5 .8 p a r a i m p l a n t a r to d o s lo s a t r i b u t o s
E .la d o e n el e s q u e m a d e tr a d u c c ió n d e l e je rc ic io 5 .1 2 (b ) m e d ia n te u n a sola
v a ria b le b o o le a n a .
N O T A S BIBLIOGRAFICAS 351

5 .2 6 M o d ifiq ú e se el u s o d e la p ila d u r a n t e el r e c o r r id o e n p r o f u n d id a d del e je m ­


p lo 5 .2 6 d e m o d o q u e lo s v a lo re s e n la p ila c o r r e s p o n d a n a los a lm a c e n a d o s
e n la p ila d e l a n a liz a d o r s in tá c tic o del e je m p lo 5.19.

N O T A S B IB L IO G R A F IC A S

El u s o d e a tr i b u to s s in te tiz a d o s p a r a esp ecificar la tr a d u c c ió n d e u n le n g u a je a p a re c e


e n Iro n s [ 1961 ]. L a id e a d e u n a n a l iz a d o r s in tá c tic o q u e lla m e a las a c c io n e s s e m á n ­
tic a s es e s tu d ia d a p o r S a m e ls o n y B a u e r [1 9 6 0 ] y B r o o k e r y M o r r is [1 962]. J u n t o
c o n lo s a tr ib u to s h e re d a d o s , los g rafo s d e d e p e n d e n c ia y u n a p r u e b a d e fu e rte n o
c irc u la r id a d q u e a p a r e c e n e n K n u t h [1 9 6 8 ] in c lu y e u n a p r u e b a d e c irc u la r id a d e n
u n a c o r re c c ió n a d ic h o a r tíc u lo . E l e je m p lo a m p l i a d o e n el a r tíc u lo u tiliz a efectos
c o la te ra le s d is c ip lin a d o s s o b re los a tr i b u to s g lo b ales a s o c ia d o s a la ra íz d e u n árb o l
d e a n á lis is s in tá c tic o . Si los a tr i b u to s p u e d e n s e r fu n c io n e s , se p u e d e n e lim in a r los
a tr ib u to s h e re d a d o s ; c o m o e n la s e m á n tic a d e n o ta c io n a l, se p u e d e a s o c ia r u n a fu n ­
c ió n d e a tr i b u to s h e re d a d o s a a tr i b u to s s in te tiz a d o s c o n u n n o te rm in a l. D ic h a s o b ­
s e rv a c io n e s a p a r e c e n e n M a y o h [1 981].
U n a a p lic a c ió n e n la q u e n o se d e s e a n e fe c to s c o la te ra le s e n las reglas s e m á n tic a s
es e n la e d ic ió n d irig id a p o r la sin ta x is. S u p ó n g a s e q u e se g e n e ra u n e d i to r a p a r tir
d e u n a g r a m á tic a c o n a tr i b u to s p a r a el le n g u a je fu e n te , c o m o e n R e p s [1984] y c o n ­
sidérese u n a m o d ific a c ió n d e e d ic ió n al p r o g r a m a f u e n te q u e d é c o m o r e s u lta d o q u e
se e lim in e u n a p a r te d e l á r b o l d e a n á lis is s in tá c tic o p a r a el p ro g ra m a . M ie n tr a s n o
h a y a e fe c to s co laterales, se p u e d e n r e c a lc u la r in c r e m e n ta lm e n te los v a lo re s d e los
a tr ib u to s p a r a el p r o g r a m a m o d ific a d o .
E rs h o v [1958] u tiliz a la d is p e rs ió n p a r a lo c a liz a r la s s u b e x p re s io n e s c o m u n e s .
L a d e fin ic ió n d e g r a m á tic a s c o n a tr i b u to s p o r la iz q u ie r d a h e c h a p o r L ew is, R o -
s e n k r a n tz y S te a rn s [1974] está m o tiv a d a p o r la tr a d u c c ió n d u r a n t e el a n álisis s in ­
tá c tic o . E x iste n lim ita c io n e s sim ila re s e n c u a n t o a las d e p e n d e n c ia s d e lo s a tr ib u to s
e n c a d a u n o d e los re c o rrid o s e n p r o f u n d id a d d e iz q u ie r d a a d e r e c h a e n B o c h m a n n
[1 976]. L as g r a m á tic a s afijas, tal c o m o f u e r o n in tr o d u c id a s p o r K o s te r [ 1971 ], están
re la c io n a d a s c o n las g r a m á tic a s c o n a tr i b u to s p o r la iz q u ie rd a . Se p r o p o n e n e n K os-
k im ie s y R á ih á [1983] lim ita c io n e s d e las g r a m á tic a s c o n a tr i b u to s p o r la iz q u ie rd a
p a r a c o n t r o l a r el a c c e s o a a tr i b u to s globales.
E n B o c h m a n n y W a r d [1 9 7 8 ], se d e s c rib e la c o n s tr u c c ió n m e c á n ic a d e u n tr a ­
d u c t o r p re d ic tiv o , s im ila r a los q u e c o n s tr u y e el a lg o r itm o 5.2. L a im p r e s ió n d e q u e
el a n álisis s in tá c tic o d e s c e n d e n te p e r m ite u n a m a y o r flex ib ilid ad e n la tr a d u c c ió n
re s u ltó s e r falsa, y a q u e B rosgol [1974] d e m o s tr ó q u e u n e s q u e m a d e tr a d u c c ió n b a ­
s a d o e n u n a g r a m á tic a L L (1 ) se p u e d e s im u l a r d u r a n t e el a n álisis s in tá c tic o L R (1 ).
I n d e p e n d ie n te m e n te , W a t t [1 9 7 7 ] u tiliz ó n o te r m in a le s m a r c a d o r e s p a r a g a r a n tiz a r
q u e lo s v a lo re s d e los a tr ib u to s h e re d a d o s a p a r e z c a n e n u n a p ila d u r a n te el a n álisis
sin tá ctic o a sc e n d e n te . L as p o sicio n es e n los la d o s d e re c h o s d e las p ro d u c c io n e s d o n d e
se p u e d e n in s e r ta r los n o te r m in a le s m a rc a d o r e s s in p e r d e r la p r o p ie d a d L R (1 ) s o n
e s tu d ia d a s p o r P u r d o m y B ro w n [1980] (v éase E jerc. 5 .2 1 ). E n T a r h i o [1982] se p r o ­
p o r c io n a n c o n d ic io n e s su fic ie n te s s o b re las reglas s e m á n tic a s p a r a d e m o s t r a r q u e n o
b a s ta c o n ex ig ir q u e los a tr i b u to s h e r e d a d o s s e a n d e fin id o s p o r reglas d e c o p ia p a r a
352 T R A D U C C I O N D I R I G I D A P O R LA S I N T A X I S

g a r a n t iz a r q u e lo s a t r i b u t o s p u e d a n e v a lu a r s e d u r a n t e el a n á lis is s in tá c tic o a s c e n ­
d e n te . J o n e s y M a d s e n [1 9 8 0 ] p r o p o r c io n a n u n a c a ra c te riz a c ió n , e n c u a n t o a los es­
ta d o s d e u n a n a l iz a d o r s in tá c tic o , d e los a tr ib u to s q u e p u e d e n e v a lu a rse d u r a n t e el
a n álisis s in tá c tic o L R ( i ) . C o m o e je m p lo d e tr a d u c c ió n q u e n o p u e d e realizarse d u ­
r a n te el a n á lis is s in tá c tic o , G ie g e ric h y W ilh e lm [1 9 7 8 ] c o n s id e r a n la g e n e ra c ió n d e
c ó d ig o p a r a las e x p re s io n e s b o o le a n a s . E n la se c c ió n 8 .6 se v e rá q u e se p u e d e u tiliz ar
el re lle n o d e re tro c e so p a r a este p r o b le m a , así q u e u n a s e g u n d a p a s a d a c o m p le ta n o
es n ecesaria.
Se h a n d e sa rro lla d o varias h e rra m ie n ta s p a r a im p la n ta r d efin icio n es dirigidas p o r
la sin ta x is, c o m e n z a n d o c o n F O L D S d e F a n g [1 9 72]. p e r o p o c a s se h a n v isto m u y
u tiliz ad as. D E L T A , d e L o r h o [1 9 7 7 ], c o n s tr u y ó u n g rafo d e d e p e n d e n c ia s e n el m o ­
m e n t o d e la c o m p ila c ió n . A h o r r a b a e s p a c io o b s e r v a n d o las d u r a c io n e s d e los a tri­
b u to s y e l im i n a n d o reglas d e c o p ia . S e e s tu d ia n los m é to d o s d e e v a lu a c ió n d e a tri­
b u to s b a s a d o s en á rb o le s d e a n á lis is s in tá c tic o e n K e n n e d y y R a m a n a t h a n [1 9 7 9 ] y
e n C o h é n y H a r r y [1979].
E ngelfriet [1984] e x a m in a los m é to d o s p a r a la e v a lu a c ió n d e a trib u to s . U n a r ­
tíc u lo p arecid o , d e C o u rc e lle [1984], e stu d ia los f u n d a m e n to s teó rico s. H L P , d escrito
p o r R á i h a y c o la b o r a d o r e s [1 9 8 3 ], re a liz a re c o r r id o s e n p r o f u n d id a d a lte r n a tiv o s ,
c o m o los p ro p u e s to s p o r J a z a y e ri y W a lte r [19 75]. L I N G U I S T , d e F a r r o w [1 9 84],
ta m b ié n h a c e p a s a d a s a lte rn a tiv a s . G a n z in g e r y c o la b o r a d o r e s [1 9 8 2 ] e s c rib e n q u e
M U G p e r m ite q u e el o r d e n e n q u e se v isita n los h ijo s d e u n n o d o v e n g a d e t e r m i­
n a d o p o r la p r o d u c c i ó n e n el n o d o . G A G . o b r a d e K a s te n s , H u t t y Z i m m e r m a n
[1 982], p e r m ite visitas re p e tid a s a los h ijo s d e u n n o d o . G A G im p l a n t a la clase d e
g ra m á tic a s c o n a tr i b u to s o r d e n a d o s d e f in id a p o r K a s te n s [1 980]. L a id e a d e las vi­
s ita s r e p e tid a s a p a r e c e e n el a r t í c u l o a n t e r i o r m e n t e c i t a d o d e K e n n e d y y W a r r e n
[1 9 7 6 ], d o n d e se c o n s tr u y e n e v a lu a d o r e s p a r a la clase m á s a m p lia d e g r a m á tic a s
f u e r te m e n te n o c irc u lares. S a a r in c n [1 9 7 8 ] d e sc rib e u n a m o d ific a c ió n del m é to d o
d e K e n n e d y y W a r r e n q u e a h o r r a e s p a c io c o n s e r v a n d o lo s v a lo re s d e lo s a tr ib u to s
en u n p ila si n o s o n n e c e s a rio s d u r a n t e u n a v isita p o s te rio r. U n a im p la n ta c ió n d e s ­
c r ita p o r J o u r d a n [1 9 8 4 ] c o n s t r u y e e v a l u a d o r e s r e c u r s iv o s p a r a d i c h a clase. T a m ­
b ié n K a t a y a m a [1 9 8 4 ] c o n s tr u y e e v a lu a d o r e s re c u rs iv o s . E n N E A T S , d e M a d s e n
[1 980], se e m p le a u n e n f o q u e b a s ta n te d ife re n te , c o n s tr u y e n d o u n G D A p a r a e x p re ­
sio n es q u e re p re s e n ta n v alo res d e a trib u to s .
El a n á lis is d e la s d e p e n d e n c ia s en el m o m e n t o d e la c o n s tr u c c ió n d e l c o m p ila d o r
p u e d e a h o r r a r ti e m p o y e s p a c io e n el m o m e n t o d e la c o m p ila c ió n . L a p r u e b a d e
c irc u la rid a d es u n típ ic o p r o b le m a d e análisis. J a z a y e ri. O g d e n y R o u n d s [1 9 7 5 ] d e ­
m u e s tr a n q u e u n a p r u e b a d e c irc u la rid a d exige u n a c a n tid a d d e ti e m p o e x p o n e n c ia l
c o m o f u n c ió n d e l t a m a ñ o d e la g ra m á tic a . L a s té c n ic a s p a r a m e jo r a r la im p la n ta ­
c ió n d e u n a p r u e b a d e c irc u la rid a d s o n c o n s id e r a d a s p o r L o r h o y P a ir [1 975], R á ih á
y S a a r in e n [1 9 8 2 ], y D e r a n s a r t, J o u r d a n y L o r h o [1984].
El e s p a c io u tiliz a d o p o r e v a lu a d o r e s " in g e n u o s " h a p r o v o c a d o el d e s a r r o llo de
té c n ic a s p a r a c o n s e r v a r e s p a c io . M a rill [1 9 6 2 ] d e s c r ib ió el a l g o r i t m o p a r a a s ig n a r
v alo res d e a tr i b u to s a reg istro s d e la secció n 5 .8 e n u n c o n te x to b a s ta n te d ife re n te .
S eth i [1 9 7 5 ] d e m o s t r ó q u e el p r o b le m a d e e n c o n t r a r u n tip o to p o ló g ic o del g rafo de
d e p e n d e n c ia s q u e m in im ic e el n ú m e r o d e reg istro s u tiliz a d o s es N P c o m p le to . El
a n álisis e n el m o m e n t o d e la c o m p ila c ió n d e las d u r a c io n e s e n u n e v a l u a d o r d e m ú l ­
N O T A S BIBLIO GRAFICA S 353

tiples p a s a d a s se d e s a rro lla e n R á h iá [1 9 8 1 ] y e n J a z a y e r i y P o zefsk y [1 9 81]. B ran-


q u a r t y c o la b o r a d o r e s [1976] m e n c io n a n el u s o d e p ilas in d e p e n d ie n te s p a r a g u a r d a r
lo s a tr ib u to s sin te tiz a d o s y h e re d a d o s d u r a n t e u n re c o rrid o . G A G realiza u n a n álisis
d e las d u r a c io n e s y s itú a los v a lo re s d e a tr i b u to s e n v aria b les globales, p ilas y n o d o s
d e á rb o le s d e a n álisis s in tá c tic o si s o n n ec e sa rio s. F a r r o w y Y ellin [1984] h a c e n u n a
c o m p a r a c i ó n d e la s té c n ic a s p a r a a h o r r o d e e s p a c io u ti liz a d a s p o r G A G y L IN -
G U IS T .
|3 5 5 |

C A P IT U L O 6

Comprobación
de tipos

U n c o m p ila d o r d e b e c o m p r o b a r si el p r o g r a m a fu e n te sigue t a n t o las c o n v e n c io n e s


s in tá c tic a s c o m o la s s e m á n t i c a s d e l le n g u a je f u e n te . E s ta c o m p r o b a c i ó n , lla m a d a
com probación estática ( p a r a d is tin g u ir la d e la c o m p r o b a c ió n d in á m ica q u e se re a ­
liza d u r a n te la e je c u c ió n d e l p r o g r a m a o b je to ), g a r a n tiz a la d e te c c ió n y c o m u n ic a ­
c ió n d e a lg u n a s clases d e e r r o r e s d e p r o g r a m a c ió n . L o s e je m p lo s d e c o m p ro b a c ió n
e s tá tic a in c lu y e n :

1. C om probaciones d e tipos. U n c o m p ila d o r d e b e i n f o r m a r d e u n e r r o r si se ap lica


u n o p e r a d o r a u n o p e r a n d o in c o m p a tib le ; p o r e je m p lo , si se s u m a n u n a v aria­
ble tip o m a tr iz y u n a v a ria b le d e fu n c ió n .
2. C om probaciones d e l flu jo d el control. L as p ro p o s ic io n e s q u e h a c e n q u e el flujo
d e l c o n tr o l a b a n d o n e u n a c o n s tr u c c ió n d e b e n te n e r a lg ú n lu g a r a d ó n d e tra n s ­
ferir el flu jo d e c o n tro l. P o r e je m p lo , u n a p ro p o s ic ió n b re a k e n C h a c e q u e el
c o n tr o l a b a n d o n e la p ro p o s ic ió n q u e la e n g lo b a, w h ile, for o s w itc h m á s c e r­
c a n a ; si d ic h a p ro p o s ic ió n e n g lo b a d o r a n o existe, o c u r r e u n erro r.
3. C om probaciones d e unicidad. H a y s itu a c io n e s e n q u e se d e b e d e f in ir u n o b je to
u n a v ez e x a c ta m e n te . P o r e je m p lo , e n P ascal, u n id e n tific a d o r d e b e d e c la ra rs e
d e f o r m a ú n ic a , las e tiq u e ta s e n u n a p ro p o s ic ió n c a s e d e b e n s e r d if e r e n te s y n o
se p u e d e n r e p e tir los e l e m e n t o s e n u n ti p o escalar.
4. C om probaciones relacionadas con nom bres. E n o c a sio n e s, el m i s m o n o m b r e
d e b e a p a r e c e r d o s o m á s veces. P o r e je m p lo , e n A d a , u n la z o o b lo q u e p u e d e
t e n e r u n n o m b r e q u e a p a r e z c a al p r in c ip io y al final d e la c o n s tr u c c ió n . El c o m ­
p ila d o r d e b e c o m p r o b a r q u e se u tilic e el m is m o n o m b r e e n a m b o s sitios.
E n este c a p ítu lo , se tr a ta p r in c ip a lm e n te la c o m p r o b a c ió n d e tip o s. C o m o in d i­
c a n los e je m p lo s a n te r io r e s , la m a y o r ía d e las o tr a s c o m p r o b a c io n e s e s tá tic a s son
r u tin a r ia s y se p u e d e n a p lic a r u tiliz a n d o la s té c n ic a s d e l ú lt im o c a p ítu lo . A lg u n a s d e
ellas p u e d e n f o r m a r p a r te d e o tr a s a c tiv id a d e s. P o r e je m p lo , c o n f o r m e se in tr o d u c e
in f o r m a c ió n a c e rc a d e u n n o m b r e e n u n a ta b la d e s ím b o lo s , se p u e d e c o m p r o b a r
q u e el n o m b r e esté d e c la r a d o d e u n a ú n ic a m a n e r a . M u c h o s c o m p ila d o r e s d e Pascal
c o m b i n a n la c o m p r o b a c i ó n e s tá tic a y la g e n e r a c ió n d e c ó d ig o in t e r m e d i o c o n el
a n álisis s in tá c tic o . E n c o n s tr u c c io n e s m á s c o m p le ja s , c o m o las d e A d a. p u e d e ser
c o n v e n ie n te te n e r u n a p a s a d a d e c o m p r o b a c ió n d e tip o s in d e p e n d ie n te e n tr e el a n á ­
lisis s in tá c tic o y la g e n e ra c ió n d e c ó d ig o in te r m e d io , c o m o se in d ic a e n la figura 6.1.
356 C O M PRO BA CIO N D E TIPOS

U n c o m p r o b a d o r d e tip o s se a s e g u ra d e q u e el tip o d e u n a c o n s tr u c c ió n c o in c id a
c o n el p re v is to e n su c o n te x to . P o r e je m p lo , el o p e r a d o r a r itm é tic o p re d e f in id o mod
e n P ascal exige o p e r a n d o s d e tip o e n te r o , d e m o d o q u e u n c o m p r o b a d o r d e tip o s
d e b e aseg u rarse d e q u e los o p e r a n d o s d e m od te n g a n tip o e n te r o . D e igual m a n e r a ,
el c o m p r o b a d o r d e tip o s d e b e aseg u rarse d e q u e la d e s re fe re n c ia c ió n se a p liq u e sólo
a u n a p u n ta d o r , d e q u e la in d iz a c ió n se h a g a só lo s o b r e u n a m a triz , d e q u e u n a f u n ­
c ió n d e f in id a p o r el u s u a r io se a p liq u e al n ú m e r o y tip o c o rre c to s d e a rg u m e n to s ,
e tc é te ra . E n la s e c c ió n 6 .2 a p a r e c e la e s p e c ific a c ió n d e u n c o m p r o b a d o r d e tip o s
sim p le. E n la secció n 6 .3 se e s tu d ia la r e p re s e n ta c ió n d e los tip o s y la c u e s tió n de
c u á n d o c o n c u e r d a n d o s tipos.

cadena de g en era d o r
a n a liz a d o r á rb o l c o m p r o b a d o r 1 árbol rep re sen ta ció n
c o m p o n e n te s UL lüUIgU
s in tá c tic o d e tip o s ¡
lé x ic o s s in tá c tic o s in tá c tic o in te r m e d ia
in te r m e d io

Fig. 6 .1 . U bicación de u n c o m p ro b a d o r de tipos.

P u e d e n ecesitarse la in f o r m a c ió n so b re lo s tip o s r e u n id a p o r u n c o m p r o b a d o r de
tip o s c u a n d o se g e n e r a el c ó d ig o . P o r e je m p lo , los o p e r a d o r e s a r itm é tic o s c o m o +
n o r m a lm e n te se a p lic a n t a n t o a e n te r o s c o m o a reales, tal v ez a o tr o s tip o s, y se d e b e
e x a m in a r el c o n te x to d e + p a r a d e t e r m i n a r el s e n tid o q u e se p r e te n d e d a r . S e dice
q u e u n s ím b o lo q u e p u e d e r e p r e s e n ta r d ife re n te s o p e r a c io n e s e n d ife re n te s c o n te x ­
to s está “sobrecargado*'. L a so b re c a rg a p u e d e ir a c o m p a ñ a d a d e c o a c c ió n d e tipos,
d o n d e u n c o m p ila d o r p r o p o r c io n a u n o p e r a d o r p a r a c o n v e r tir u n o p e r a n d o e n el
tip o e s p e ra d o p o r el c o n te x to .
U n a n o c ió n d ife re n te d e la d e s o b re c a rg a es la d e “ p o lim o rfis m o " . El c u e r p o d e
u n a f u n c ió n p o lim ó rfic a p u e d e e je c u ta rs e c o n a r g u m e n to s d e v a rio s tip o s. E ste c a ­
p itu lo c o n c lu y e c o n u n a lg o ritm o d e u n ific a c ió n p a r a in fe rir lo s tip o s d e las fu n c io ­
n e s p o lim ó rfica s.

6.1 S IS T E M A S D E T IP O S

El d is e ñ o d e u n c o m p r o b a d o r d e tip o s p a r a u n len g u aje se b a sa e n in fo rm a c ió n acerca


d e las c o n s tr u c c io n e s s in tá c tic a s del le n g u a je , la n o c i ó n d e tip o s y las reg las p a r a
a s ig n a r tip o s a las c o n s tr u c c io n e s d e len g u aje. L o s sig u ie n te s e x tra c to s del in fo rm e
d e P ascal y del m a n u a l d e re fe re n c ia d e C , re s p e c tiv a m e n te , s o n e je m p lo s d e la in ­
f o r m a c i ó n c o n la q u e el d i s e ñ a d o r d e u n c o m p i l a d o r p o d r ía v erse o b lig a d o a c o ­
m e n z a r.

• “Si a m b o s o p e r a n d o s d e los o p e r a d o r e s a r itm é tic o s d e s u m a , s u s tra c c ió n y m u l ­


tip lic a c ió n s o n d e tip o e n te r o , e n to n c e s el r e s u lta d o es d e tip o e n te r o ."

• “ El r e s u lta d o d e l o p e r a d o r u n a r io & e s u n a p u n t a d o r h a c ia el o b je to al q u e se
refiere el o p e r a n d o . Si el ti p o del o p e r a n d o es \ . . \ el tip o del r e s u lta d o es ‘a p u n ­
ta d o r a
6.1 SISTEM AS DE TIPO S 357

E n lo s a n te r io r e s e x tra c to s se e n c u e n t r a im p líc ita la id e a d e q u e c a d a e x p re s ió n tien e


a s o c ia d o u n tip o . A d e m á s , lo s tip o s ti e n e n e s tr u c tu r a ; el tip o “ a p u n t a d o r a ...” se
c o n s tr u y e a p a r tir del tip o al q u e se refiere “ ...”.
E n P ascal y e n C , los tip o s s o n b á s ic o s o c o n s tr u id o s . L o s tip o s b á s ic o s s o n los
tip o s a tó m ic o s sin e s tr u c tu r a in te r n a p o r lo q u e c o n c ie r n e al p r o g r a m a d o r . E n P a s ­
cal, los tip o s b ásico s s o n booíean , character , integer y real. L o s tip o s d e su b ra n g o ,
c o m o 1 . . 10, y lo s tip o s e n u m e r a d o s , c o m o

(v io le ta , Ín d ig o , a z u l, v erd e, a m a rillo , n a ra n ja , ro jo )

se p u e d e n c o n s id e r a r c o m o tip o s b ásico s. P ascal a d m ite q u e u n p r o g r a m a d o r c o n s ­


tr u y a tip o s a p a r ti r d e tip o s b á s ic o s y o tr o s tip o s c o n s tr u id o s , c o m o m a tr ic e s (array),
reg istro s ( record) y c o n j u n t o s (set). A d e m á s , los a p u n t a d o r e s y las f u n c io n e s ta m b ié n
p u e d e n c o n s id e ra rs e c o m o tip o s c o n s tr u id o s .

E x p r e s io n e s d e tip o s

El tip o d e u n a c o n s tr u c c i ó n d e u n le n g u a je se d e n o t a r á m e d i a n t e u n a “ e x p re s ió n
d e ti p o ” . D e m a n e r a in f o r m a l, u n a e x p re s ió n d e ti p o es, o b ie n u n ti p o b á s ic o o se
f o r m a a p l i c a n d o u n o p e r a d o r l l a m a d o constructor d e tip o s a o t r a s e x p r e s io n e s d e
tip o s . L o s c o n j u n t o s d e tip o s y c o n s t r u c t o r e s b á s ic o s d e p e n d e n d e l le n g u a je q u e
d e b a co m p ro b arse.
E ste c a p ítu lo u tiliz a la sig u ie n te d e fin ic ió n d e expresiones d e tipos :

1. U n tip o b á s ic o es u n a e x p re s ió n d e tip o . E n tr e lo s tip o s b ásico s se e n c u e n tr a n


boolean , char , integer y real. U n tip o b ásico especial, error-tipo, s e ñ a la rá u n e rro r
d u r a n te la c o m p r o b a c ió n d e tip o s. P o r ú ltim o , u n tip o b á s ic o vacío q u e in d ic a
**la a u s e n c ia d e valor'*, p e r m i te q u e se c o m p r u e b e n las p ro p o sic io n e s.

2. C o m o se p u e d e d a r n o m b r e a las e x p re s io n e s d e tip o s, el n o m b r e d e u n tip o es


u n a e x p re s ió n d e tip o . U n e je m p lo d e la u tilid a d d e lo s n o m b r e s d e ti p o a p a re c e
en 3(c), m á s a d e la n te . E n la secció n 6 .3 se e s tu d ia n las e x p re s io n e s d e tip o s q u e
c o n tie n e n n o m b re s .

3. U n c o n s tr u c to r d e tip o s a p lic a d o a e x p re sio n e s d e tip o s es u n a e x p re sió n d e tipo.


L o s c o n s tr u c to r e s in c lu y e n :

a) M atrices. Si T e s u n a e x p re s ió n d e tip o , e n to n c e s a r ra y (I. T ) e s u n a e x p re ­


sió n d e tip o q u e in d ic a el tip o d e u n a m a tr iz c o n e le m e n to s d e tip o T y c o n ­
j u n t o d e ín d ic e s / . / es a m e n u d o u n ra n g o d e e n te ro s. P o r e je m p lo , la d e c la ­
ra c ió n e n P ascal

v a r A: a r r a y [1 ..1 0 ] of in te g e r;

a s o c ia la e x p re sió n d e tip o a rra y (1.. 10, integer) c o n A.

b) Productos. Si T\ y 7 \ s o n e x p r e s io n e s d e tip o , e n to n c e s su p r o d u c t o c a rte ­


s ia n o 7*| x 7*2 es u n a e x p re s ió n d e tip o . S e s u p o n e q u e x es a s o c ia tiv a p o r
la iz q u ie rd a .

c) Registros. L a d ife re n c ia e n t r e u n re g istro y u n p r o d u c t o es q u e los c a m p o s


d e u n reg istro tie n e n n o m b r e s . E l c o n s tr u c to r d e tip o s record se a p lic a rá a
358 C O M P R O B A C IO N D E TIPOS

u n a lu p ia f o r m a d a c o n n o m b r e s d e c a m p o s y tip o s d e c a m p o s . ( T é c n ic a ­
m e n te . los n o m b r e s d e c a m p o s d e b e r ía n f o r m a r p a rte del c o n s tr u c to r d e ti­
p o s. p e r o es c o n v e n ie n te q u e los n o m b r e s d e los c a m p o s estén j u n t o a sus
tip o s aso c ia d o s. E n el C ap . 8, el c o n s tr u c to r d e tip o s record se a p lic a a u n
a p u n t a d o r a u n a ta b la d e s ím b o lo s q u e c o n tie n e e n tr a d a s p a r a lo s n o m b r e s
d e los c a m p o s .) P o r e je m p lo , el fra g m e n to d e p r o g r a m a e n Pascal

ty p e fila = reco rd
d ire c c ió n : in te g e r;
l e x e m a : a r r a y (1 - . 1 5 ] of char
end;
var ta b l a : a r r a y [1 ..1 0 1 ] o f f i l a ;

d e c la ra q u e el n o m b r e d e tip o f i l a r e p re s e n ta la e x p re s ió n d e tip o

record ( d i r e c c i ó n x integer) x ( l e x e m a x array ( 1.. 1 5. char)))

y q u e la v a ria b le t a b l a es u n a m a tr iz d e reg istro s d e este tipo.

d ) A p u n ta d o res. Si T e s u n a e x p r e s ió n d e tip o , e n t o n c e s p o in te r ( T ) e s u n a
e x p r e s ió n d e ti p o q u e in d i c a el ti p o “ a p u n t a d o r a u n o b j e t o d e ti p o T ' \
P o r e j e m p lo , e n P a s c a l, la d e c la r a c ió n

var p: t fila

d e c la ra q u e la v a ria b le p tie n e tip o p o in ter ( f i l a ) .

e) F u nciones. M a t e m á t i c a m e n t e , u n a f u n c i ó n t r a n s f o r m a e l e m e n t o s d e un
c o n j u n t o , e l d o m in io , a e l e m e n t o s d e o t r o c o n j u n t o , el rango. Se p u e d e n
c o n s i d e r a r la s f u n c i o n e s d e n t r o d e lo s le n g u a je s d e p r o g r a m a c i ó n c o m o
tr a n s f o r m a c io n e s d e u n d o m in io tip o D a u n rango tipo R. L a e x p re s ió n de
ti p o D -+ R in d ic a r á el tip o d e d ic h a fu n c ió n . P o r e je m p lo , la f u n c ió n p r e ­
d e f in id a m od d e P ascal tie n e u n d o m i n io d e tip o int x int , es d ecir, u n p a r
d e e n te ro s , y ra n g o d e ti p o int. A sí, se d ic e q u e m od tie n e el t i p o 1

int x int - * int

O tr o e je m p lo : la d e c la r a c ió n e n P ascal

fu n c tio n f(a, b: ch ar) : t in te g e r; . . .

d ic e q u e el tip o d e l d o m i n i o d e f se in d ic a r á m e d ia n te char x char y el tip o


d e l ra n g o p o r pointer (integer). E n to n c e s el tip o d e f se rá in d ic a d o p o r la ex ­
p re s ió n d e tip o

char x char - > pointer (integer)


A m e n u d o e x iste n , p o r r a z o n e s d e i m p l a n t a c i ó n q u e se e s tu d ia n e n el si­
g u ie n te c a p í tu lo , li m i t a c i o n e s e n c u a n t o al t i p o q u e u n a f u n c ió n p u e d e
d e v o l v e r : p o r e je m p lo , n o se p u e d e n d e v o lv e r m a tric e s o fu n c io n e s. S in e m ­
b a rg o , ex isten len g u ajes, e n tr e los q u e L IS P es el e je m p lo m á s d e s ta c a d o , q u e

1 Se supone que x tiene mayor precedencia que de modo que ini x int -* int es igual que (int x
int) int. Asimismo. es asociativo por la derecha.
6.1 SISTEM A S D E TIPO S 359

p e r m ite n q u e las f u n c io n e s d e v u e lv a n o b je to s d e tip o s a r b itra rio s , así q u e se


p u e d e d e f in ir p o r e je m p lo u n a f u n c ió n g d e tip o

(inleger —> inieger) —* ( integer - * integer )

E s d ecir, g t o m a c o m o a r g u m e n to u n a f u n c ió n q u e tr a n s f o r m a u n e n t e r o en
u n e n t e r o y g p r o d u c e c o m o r e s u lta d o o t r a f u n c ió n d e l m is m o tipo.

4. L as e x p re s io n e s d e tip o p u e d e n c o n t e n e r v aria b les c u y o s v a lo re s s o n e x p re s io ­


n e s d e tip o s. L a s v aria b les d e tip o s se in t r o d u c ir á n e n la secció n 6.6.

U n a m a n e r a c o n v e n i e n t e d e r e p r e s e n ta r e x p r e s io n e s d e tip o s es u tiliz a n d o u n
g rafo. C o n el e n f o q u e d irig id o p o r la s in ta x is d e la secció n 5 .2 , se p u e d e c o n s tr u ir
u n á rb o l o u n G D A p a r a u n a e x p re s ió n d e tip o , c o n n o d o s in te rio re s p a r a lo s c o n s ­
tr u c to r e s d e tip o s y h o ja s p a r a los tip o s b ásico s, n o m b r e s d e tip o y v a ria b le s d e tip o
(véase Fig. 6 .2 ). E n la secció n 6 .3 se d a n e je m p lo s d e re p re s e n ta c io n e s d e e x p re sio ­
nes d e tip o s q u e se h a n u tiliz a d o e n c o m p ila d o re s .

x pointer X poinier

char
/ \char I
integer
Ochar I
integer

F ig. 6 .2 . A rbol y G D A , respectivam ente, p a ra char x char -+ pointer (integer).

S is t e m a s d e tip o s

U n sistem a d e tipos es u n a serie d e reglas p a r a a s ig n a r e x p re s io n e s d e tip o s a las


d is tin ta s p a r te s d e u n p r o g r a m a . U n c o m p r o b a d o r d e tip o s im p la n ta u n s is te m a de
tipos. L o s siste m a s d e tip o s d e este c a p ítu lo se esp ecifican a la m a n e r a d irig id a p o r
la sintaxis, asi q u e se im p la n ta n fá c ilm e n te u s a n d o las té c n ic a s del c a p itu lo an te rio r.
D ife re n te s c o m p ila d o r e s o p ro c e s a d o re s d e l m is m o le n g u a je p u e d e n u tiliz a r d i­
fe re n te s s is te m a s d e tipos. P o r e je m p lo , e n P ascal, el ti p o d e u n a m a tr iz in c lu y e el
c o n j u n t o d e ín d ic e s d e la m a tr iz , d e m o d o q u e u n a f u n c ió n c o n u n a r g u m e n t o d e
tip o m a tr iz só lo se p u e d e a p lic a r a m a tr ic e s c o n d i c h o c o n j u n t o d e ín d ices. S in e m ­
b a rg o , m u c h o s c o m p ila d o r e s d e P ascal a d m ite n q u e el c o n j u n t o d e ín d ic e s q u e d e
s in e s p e c ific a r c u a n d o u n a m a tr iz se p a sa c o m o a r g u m e n to . P o r ta n to , e s to s c o m ­
p ila d o re s u s a n u n s is te m a d e tip o s d is tin to d e l d e la d e fin ic ió n del le n g u a je Pascal.
D e m a n e r a s im ila r, e n el s is te m a U N I X , el m a n d a t o l i n t e x a m in a p ro g r a m a s en
C p a r a b u s c a r p o sib le s e rro re s c o n u n s is te m a d e tip o s m á s d e ta lla d o q u e el q u e u ti­
liza el c o m p ila d o r m is m o d e C.

C o m p r o b a c ió n e s t á t ic a y d in á m ic a d e tip o s

S e d ic e q u e la c o m p r o b a c ió n re a liz a d a p o r u n c o m p ila d o r e s estática, m ie n tr a s q u e


la c o m p r o b a c ió n h e c h a al e je c u ta r el p r o g r a m a o b je to se d e n o m i n a d in á m ic a . En
p r in c ip io , c u a l q u ie r v erificació n se p u e d e re a liz a r d in á m ic a m e n te , si el c ó d ig o o b ­
j e t o c a rg a el tip o d e u n e l e m e n t o j u n t o c o n el v a lo r d e d i c h o e le m e n to .
360 C O M P R O B A C I O N D E TIPOS

U n s is te m a d e tip o s seguro e lim in a la n ec e sid a d d e c o m p r o b a r d in á m ic a m e n te


e rro re s d e tip o s ya q u e p e r m ite d e t e r m in a r e s tá tic a m e n te q u e d ic h o s e rro re s n o p u e ­
d e n o c u r r ir c u a n d o s . e s tá e je c u ta n d o el p r o g r a m a o b je to . E s d ecir, si u n s is te m a d e
tip o s seg u ro a s ig n a u n tip o q u e n o sea e rro r-tip o a u n a p a rte d e u n p r o g r a m a , e n ­
to n c e s los e rro re s d e tip o n o p u e d e n p r o d u c ir s e c u a n d o se e s tá e je c u ta n d o el c ó d ig o
o b je to d e d ic h a p a rte del p r o g r a m a . S e d ic e q u e u n le n g u a je e s f u e r te m e n te tip ifi­
c a d o si su c o m p ila d o r p u e d e g a r a n tiz a r q u e los p r o g r a m a s q u e a c e p te se e je c u ta rá n
s in e rro re s d e tipo.
E n la p rá c tic a , a lg u n a s c o m p r o b a c io n e s s ó lo se p u e d e n h a c e r d in á m ic a m e n te .
P o r e je m p lo , si p r im e r o se d e c la ra

ta b la : a r r a y [0 ..2 5 5 J of c h a r;
i : in te g e r

y d e s p u é s se c a lc u la t a b l a [ i ] ; e n g e n e ra l, u n c o m p ila d o r n o p u e d e g a r a n tiz a r q u e
d u r a n te la e je c u c ió n , el v a lo r d e i e s ta r á e n el r a n g o d e 0 a 2 5 5 2.

R ec u p er a ció n d e e r r o r e s

C o m o la c o m p r o b a c ió n d e tip o s tie n e la c a p a c id a d d e d e s c u b r ir e rro re s e n los p ro ­


g ra m a s. es i m p o r ta n te q u e u n c o m p r o b a d o r d e tip o s h a g a algo ra z o n a b le c u a n d o se
d e s c u b re u n e rro r. C o m o m ín im o , el c o m p ila d o r d e b e i n f o r m a r d e la n a tu ra le z a y
w

la p o sic ió n del e rro r. E s m e jo r q u e el c o m p r o b a d o r d e tip o s se re c u p e re d e lo s e r r o ­


res. p a ra q u e p u e d a c o m p r o b a r el re s to d e la e n tr a d a . C o m o el m a n e jo d e e rro re s
afecta a las reglas d e c o m p r o b a c ió n d e tip o s, tie n e q u e d is e ñ a rs e c o m o p a rte del sis­
t e m a d e tip o s d e s d e el p rin c ip io ; las reglas tie n e n q u e s e rv ir p a r a t r a t a r los errores.
L a in c lu s ió n del m a n e jo d e e rro re s p u e d e d a r c o m o r e s u lta d o u n s is te m a d e ti­
p o s q u e v a y a m á s a llá del n e c e s a rio p a r a e s p e c ific a r p r o g r a m a s c o rre c to s. P o r e je m ­
plo . c u a n d o se h a p r o d u c id o u n e rro r, e s p o s ib le q u e se d e s c o n o z c a el tip o del frag­
m e n to d e p ro g ra m a fo rm a d o de m a n e ra in c o rre c ta . T r a ta r c o n in fo rm a c ió n
in c o m p le ta exige té c n ic a s sim ila re s a las n ecesarias p a r a le n g u a je s q u e n o e x ig en q u e
los id e n tific a d o re s se d e c la re n a n te s d e su u so. L as v aria b les d e tip o , q u e se e s tu d ia n
e n la se c c ió n 6 .6 , p u e d e n u tiliz a rs e p a r a g a r a n t i z a r el u s o a d e c u a d o d e id e n tific a ­
d o re s n o d e c la ra d o s o a p a r e n t e m e n t e m a l d e c la ra d o s.

6 .2 E S P E C I F I C A C I O N D E U N C O M P R O B A D O R D E T I P O S S E N C I L L O

E n e s ta secció n se especifica u n c o m p r o b a d o r d e tip o s p a r a u n le n g u a je s im p le e n el


q u e se d e b e d e c la r a r el tip o d e c a d a id e n tific a d o r a n t e s q u e el id e n tific a d o r se utilice.
El c o m p r o b a d o r d e tip o s e s u n e s q u e m a d e tr a d u c c ió n q u e sin te tiz a el ti p o d e c a d a
e x p re s ió n a p a r tir d e los tip o s d e s u s s u b e x p re s io n e s . E l c o m p r o b a d o r d e tip o s p u e d e
m a n e ja r m atrices, a p u n ta d o r e s , p ro p o s ic io n e s y fu n c io n e s.

Se pueden utilizar técnicas de análisis de flujo de datos similares a las del capitulo 10 para deducir
si i está dentro de los límites en algunos programas. Sin embargo, ninguna técnica puede tomar la
decisión correcta siempre.
6.2 ESPECIFICACION DE U N C O M P R O B A D O R D E T IPO S S E N C IL L O 361

U n le n g u a je sim p le

L a g ra m á tic a d e la fig u ra 6 .3 g e n e r a p ro g r a m a s , re p r e s e n ta d o s p o r el n o te r m in a l P.
q u e c o n s ta n d e u n a secu en cia d e d e c la ra c io n e s D seguida d e u n a e x p re sió n s im p le E.

D -+ D ; D | id : T
T ch a r | in teger | array [ núm ] o f 7 ¡ t T
E —* literal | núm | id | E m od E | E [ E ) | E T

Fig. 6 3 . G ra m á tic a para el lenguaje fuente.

U n p r o g r a m a g e n e r a d o p o r la g r a m á tic a d e la figura 6 .3 es:

clave: integer;
c l a v e mo d 1 9 9 9

A n te s d e e s tu d ia r las e x p re s io n e s , c o n s id é re n s e los tip o s del len g u aje. E l le n g u a je


y a tie n e d o s tip o s básicos, char e integer, se u tiliz a u n te rc e r tip o b ásico , e rro r-tip o ,
p a r a s e ñ a la r los e rro re s . P a r a s im p lific a r, se s u p o n e q u e to d a s la s m a tric e s c o m i e n ­
z a n e n 1. P o r e je m p lo .

array [256] of char

c o n d u c e a la e x p re sió n d e ti p o a rra y ( 1..256. char) q u e c o n s ta d e l c o n s tr u c t o r array


a p lic a d o al s u b r a n g o 1..256 y el tip o char. C o m o e n P ascal, el o p e r a d o r p re fijo T en
las d e c la ra c io n e s c o n s tr u y e u n ti p o a p u n t a d o r , d e m o d o q u e

t integer

c o n d u c e a la e x p re s ió n d e tip o pointer (integer) q u e c o n s ta del c o n s tr u c to r pointer


a p lic a d o al tip o integer.
E n el e s q u e m a d e tr a d u c c ió n d e la fig u ra 6 .4 , la a c c ió n a s o c ia d a c o n la p r o d u c ­
c i ó n D —> id : T g u a r d a u n ti p o e n u n a e n t r a d a d e la ta b la d e s ím b o l o s p a r a un
id e n tific a d o r. L a a c c ió n a ñ a d etip o (xá.entrada, T .tip o ) se a p lic a al a t r i b u t o s in te ti­
z a d o entrada q u e a p u n t a a la e n t r a d a d e la ta b la d e s ím b o lo s p a r a id y u n a e x p re sió n
d e tip o re p r e s e n ta d a p o r el a t r i b u t o s in te tiz a d o tip o d e l n o te r m in a l T.

P -+ D ; E
D->D,D
D->iá:T { añadetipo (id. entrada, T.tipo ) }
T —►char { T.tipo : = c h a r }
/ ' - > integer { T.tipo : = integer }
r- * í r, { T.tipo : — pointer ( T , .tipo ) }
T -> array [ núm ] o f Ti j T.tipo : = a r r a y (\..n ú m .v a l, T i .tipo ) }

Fig. 6.4. La parte de u n e s q u e m a d e tradu cción q u e guarda el tip o d e un


id e n tific a d o r .
362 C O M P R O B A C I O N D E TIPOS

Si / g e n e ra c h a r o in te g e r, e n t o n c e s T .tip o es c h a r o integer. r e s p e c tiv a m e n te .


El lím ite s u p e r io r d e u n a m a triz se o b tie n e del a tr ib u to val d e l c o m p o n e n t e léxico
n ú m q u e d a el n ú m e r o e n t e r o re p r e s e n ta d o p o r núm . S e s u p o n e q u e la s m a tr ic e s co ­
m ie n z a n e n 1, a s í q u e el c o n s tr u c to r d e tip o s array se a p lic a al s u b r a n g o 1..n ú m .v a /
y al tip o d e e le m e n to .
C o m o D a p a re c e a n te s q u e E e n el la d o d e r e c h o d e P - * D ; E , se p u e d e a se g u ­
r a r q u e se g u a r d a r á n los tip o s d e to d o s los id e n tific a d o re s d e c la ra d o s a n te s d e q u e se
c o m p r u e b e la e x p re sió n g e n e ra d a p o r E (véase C a p . 5). D e h e c h o , si se m o d ific a d e
m a n e r a a d e c u a d a la g ra m á tic a d e la figura 6 .3 , se p u e d e n i m p l a n t a r los e s q u e m a s
d e tr a d u c c ió n d e esta secció n , si se d e se a , d u r a n t e el a n á lis is s in tá c tic o d e s c e n d e n te
o a s c e n d e n te .

C o m p ro b a c ió n d e tip o s e n la s e x p re s io n e s

E n las sig u ie n tes reglas, el a tr ib u to s in te tiz a d o tip o p a r a E d a la e x p re s ió n d e tip o


a sig n a d a p o r el s is te m a d e tip o s a la e x p re s ió n g e n e r a d a p o r E. L a s sig u ie n tes reglas
s e m á n tic a s s e ñ a la n q u e las c o n s ta n t e s r e p r e s e n ta d a s p o r los c o m p o n e n t e s léxicos
lite ra l y n ú m tie n e n tip o char e integer ; re s p e c tiv a m e n te :

E - * lite ra l j E .tip o : = char ¡


E —* n ú m { E .tipo : = in te g e r }

Se u tiliza la f u n c ió n busca(é) p a r a tr a e r el tip o g u a r d a d o e n la e n t r a d a d e la ta b la


d e s ím b o lo s a p u n t a d a p o r e. C u a n d o u n id e n tif ic a d o r a p a re c e e n u n a ex p re sió n , se
tr a e su tip o d e c la r a d o y se a s ig n a al a t r i b u t o tip o :

¿ -► id { E .tip o : = busca (id en tra d a ) }

La e x p re s ió n f o r m a d a a p lic a n d o el o p e r a d o r m od a d o s s u b e x p re s io n e s d e tip o
integer tie n e tip o integer ; d e lo c o n tr a r io , s u tip o e s error-tipo. L a regla es

¿ - * ¿ , m od ¿ 2 • { E .tipo : = i f E x.tip o = integer a n d


E 2.tipo = integer th e n integer
e lse e r r o r -tip o }

E n u n a re fe re n c ia a u n a m a tr iz ¿ , [ ¿ 2], la e x p re s ió n d e ín d ic e ¿ 2 d e b e te n e r tip o
e n tero , en c u y o caso el re s u lta d o es el tip o d e e le m e n to t o b te n id o d e l tip o array (s , t)
d e ¿ i ; n o se u tiliza el c o n j u n t o d e ín d ic e s s d e la m a triz .

¿ -► ¿ , [ ¿ 2] { E .tip o : = i f Ez.tipo = integer an d


E t.tip o = a rra y {s, /) -► th e n t
e ls e e r r o r -tip o }

D e n tr o d e las ex p resio n es, el o p e r a d o r p o stfijo t e n tre g a el o b je to a p u n t a d o p o r su


o p e r a n d o . El tip o d e ¿ t e s el tip o / del o b je to a p u n t a d o p o r el a p u n t a d o r ¿ :

E E xí { E .tip o : = i f E t.tip o = p o in te r(t) th e n t


e ls e e rro r-tip o }
6.2 ESPECIFICACION D E U N C O M P R O B A D O R DE T IPO S S E N C IL L O 363

S e d e ja al le c to r q u e a ñ a d a p ro d u c c io n e s y reg las s e m á n tic a s p a r a a d m iti r tip o s


a d ic io n a le s y o p e r a c io n e s d e n t r o d e las e x p re s io n e s . P o r e je m p lo , p a r a p e r m itir q u e
lo s id e n tif ic a d o r e s te n g a n el ti p o b o o /ea n , se p u e d e i n t r o d u c i r la p r o d u c c i ó n
7 '- > b o o le a n e n la g r a m á t i c a d e la f ig u r a 6 .3 . L a i n t r o d u c c i ó n d e o p e r a d o r e s d e
c o m p a r a c ió n c o m o < y c o n e c tiv o s lógicos c o m o a n d e n las p ro d u c c io n e s d e E p e r­
m itiría la c o n s tr u c c ió n d e e x p re sio n e s d e tip o boolean.

C o m p ro b a c ió n d e tip o s e n la s p ro p o sicio n es

P u e s to q u e la s c o n s t r u c c i o n e s d e lo s le n g u a je s , c o m o la s p r o p o s ic i o n e s , c a r e c e n
típ ic a m e n te d e valores, se les p u e d e asig n ar el tip o básico especial vacío. Si se d e te c ta
u n e r r o r d e n t r o d e u n a p ro p o sició n , el tip o asig n ad o a la p ro p o sic ió n e s error-iipo.
L as p ro p o s ic io n e s q u e a q u í se c o n s id e r a n s o n las p ro p o s ic io n e s d e a sig n a c ió n ,
c o n d ic io n a l y d e la z o w hile. L as s e c u e n c ia s d e p ro p o s ic io n e s se s e p a ra n c o n s ím b o ­
los d e p u n t o y c o m a . L as p r o d u c c io n e s d e la fig u ra 6.5 se p u e d e n c o m b in a r c o n las
d e la fig u ra 6 .3 si se c a m b ia d e p ro d u c c ió n d e u n p r o g r a m a c o m p le to a P —> / ) ; S.
A h o r a u n p r o g r a m a c o n s ta d e d e c la r a c io n e s seg u id as d e p ro p o s ic io n e s: se sig u en n e ­
c e s ita n d o las reglas a n te r io r e s p a r a c o m p r o b a r e x p re s io n e s p o r q u e las p ro p o s ic io n e s
p u e d e n te n e r e x p re s io n e s d e n t r o d e ellas.

S -+ id : = E { S.tipo : = if id .tipo = E.tipo then vacío


else error^tipo }
S -+ if E then S , { S.tipo : = if E.tipo = boolean then S\.tipo
e lse e rro r-tip o }
5 - * while £ do 5 | { S.tipo : = if E.tipo = boolean th e n S\.lipo
else e rro r-tip o }
S -+ S i ; S i { S.tipo : = if S\.tipo = vacío and
S 2.tipo = vacío th e n vacío
else e rro r-tip o }

Fig. 6 .5 . E sq u em a d e trad u c ció n p a ra c o m p ro b a r el tip o de las proposiciones.

E n la fig u ra 6 .5 se d a n las reglas p a r a c o m p r o b a r p ro p o sic io n e s. L a p r im e r a regla


c o m p r u e b a q u e los la d o s iz q u ie r d o y d e r e c h o d e u n a p ro p o s ic ió n d e a s ig n a c ió n te n ­
gan el m is m o t i p o 3. L a s e g u n d a y te rc e ra reglas esp ecifican q u e las e x p re s io n e s en
las p ro p o s ic io n e s c o n d ic io n a l y w h ile d e b e n te n e r tip o boolean. L o s e rro re s s o n p r o ­
p a g a d o s p o r la ú lt im a regla d e la fig u ra 6 .5 p o r q u e u n a s e c u e n c ia d e p ro p o s ic io n e s
tie n e tip o vacío só lo si c a d a s u b p r o p o s ic ió n tie n e ti p o vacío. E n estas reglas, u n a d is ­
c o rd a n c ia d e tip o s p r o d u c e el tip o e rro r-tip o ; p o r s u p u e s to , u n c o m p r o b a d o r d e ti­
p o s a m ig a b le in f o r m a r ía a s im is m o d e la n a tu ra le z a y la p o sic ió n d e la d is c o rd a n c ia
d e tipos.

' S i s e a d m ite u n a e x p r e sió n e n e l la d o iz q u ie r d o d e u n a a sig n a c ió n , e n t o n c e s ta m b ié n hay q u e d is ­


tin g u ir e n tr e v a lo r e s d e la d o iz q u ie r d o y v a lo r e s d e la d o d e r e c h o . P o r e je m p lo , 1 : = 2 e s in c o r r e c to
p o r q u e n o se le p u e d e n a sig n a r v a lo re s a la c o n s ta n te 1 .
364 C O M P R O B A C I O N D E TIPOS

C o m p ro b a ció n d e tip o s d e fu n c io n e s

L a a p lic a c ió n d e u n a f u n c ió n a u n a r g u m e n t o p u e d e s e r r e p r e s e n ta d a p o r la p r o ­
d u c c ió n

E- >E{E)
e n la q u e u n a e x p re s ió n e s la a p lic a c ió n d e u n a e x p re s ió n a o tra . S e p u e d e n a u m e n ­
ta r las reglas p a r a a s o c ia r e x p re s io n e s d e tip o s c o n el n o te rm in a l T c o n la sig u ie n te
p ro d u c c ió n y a c c ió n p a r a p e r m itir tip o s d e f u n c ió n e n la s d e c la ra c io n e s.

T T x T2 { T.tipo : = T x.tipo -* T2.tipo}


L a s c o m illa s a lr e d e d o r d e la flech a q u e se u s a c o m o c o n s tr u c to r d e f u n c ió n lo d is ­
tin g u e n d e la flecha q u e se u s a c o m o m e ta s ím b o lo e n u n a p ro d u c c ió n .
L a regla p a r a c o m p r o b a r el tip o d e a p lic a c ió n d e u n a f u n c ió n es

E -» Ey ( E i) { E .tipo : = i f E 2.tipo = s and


Ey.tipo = s —►t th e n /
e l s e error-tipo }

E sta regla in d ic a q u e en u n a e x p re s ió n f o r m a d a p o r la a p lic a c ió n d e E , a E 2, el tip o


d e E { d e b e s e r u n a f u n c ió n s - * / d e l tip o 5 d e E 2 a a lg ú n tip o d e r a n g o /; el ti p o de
E\ ( E 2 ) es t.
Se p u e d e n e s tu d ia r m u c h o s a s p e c to s re la c io n a d o s c o n la c o m p r o b a c ió n d e tip o s
e n p re se n c ia d e f u n c io n e s c o n re sp e c to a la se n c illa sin ta x is a n te r io r . L a g e n e ra liz a ­
c ió n h a c ia fu n c io n e s c o n m á s d e u n a r g u m e n to se re a liz a c o n s tr u y e n d o u n tip o p r o ­
d u c to q u e c o n s ta d e los a rg u m e n to s . O bsérvese q u e n a r g u m e n to s d e tip o T u . . . y T„
se p u e d e n c o n s i d e r a r c o m o u n s o lo a r g u m e n t o d e t i p o 7 , x . . . x T n. P o r e j e m ­
plo , se p u e d e e s c rib ir

raíz : (real — > real) x real — > real (6.1)

p a r a d e c la r a r u n a f u n c ió n r a í z q u e t o m a u n a fu n c ió n d e reales a reales y u n real


c o m o a r g u m e n to s y d e v u e lv e u n real. L a s in ta x is tip o P ascal p a r a esta d e c la r a c ió n es

function raíz (function f (real): real; X: real): real

L a s in ta x is d e (6 .1 ) s e p a ra la d e c la r a c ió n d e l tip o d e u n a f u n c ió n d e los n o m b r e s de
s u s p a rá m e tro s .

6 .3 E Q U I V A L E N C I A D E E X P R E S I O N E S D E T I P O S

Las reglas d e c o m p r o b a c ió n d e la ú lt im a se c c ió n tie n e n la f o r m a , “ i f d o s e x p resio n es


d e tip o s o n ig u ales th e n d e v u e lv e u n c ie rto tip o e ls e d e v u e lv e e r r o r - t i p o P o r ta n to ,
e s i m p o r ta n te te n e r u n a d e fin ic ió n p re c isa d e c u á n d o s o n e q u iv a le n te s d o s e x p re sio ­
n e s d e tip o s . S u r g e n p o s ib le s a m b i g ü e d a d e s c u a n d o se d a n n o m b r e s a la s e x p r e ­
s io n e s d e tip o s y d ic h o s n o m b r e s se u tiliz a n d e s p u é s e n p o s te rio re s e x p re s io n e s de
tipos. El a s p e c to clave es si u n n o m b r e e n u n a e x p re s ió n d e tip o s se r e p re s e n ta a sí
m i s m o o si e s la a b r e v ia tu r a d e o t r a e x p re s ió n d e tip o .
C o m o ex iste u n a in te ra c c ió n e n tr e la n o c ió n d e e q u iv a le n c ia d e tip o s y la r e p re ­
s e n ta c ió n d e los tip o s se t r a t a r á n a m b o s a la vez. P a r a u n a m a y o r e fic ie n c ia , los
6.3 EQ UIV ALEN CIA DE E X P R E SIO N E S D E TIPO S 365

c o m p i l a d o r e s u tiliz a n r e p r e s e n ta c io n e s q u e p e r m i t a n d e t e r m i n a r r á p i d a m e n t e la
e q u iv a le n c ia d e tipos. L a n o c ió n d e e q u iv a le n c ia d e tip o s im p la n t a d a p o r u n c o m ­
p ila d o r esp ecífico se p u e d e e x p lic a r a m e n u d o u tiliz a n d o lo s c o n c e p t o s d e e q u iv a ­
le n cia e s tr u c tu r a l y e q u iv a le n c ia d e n o m b r e q u e se e s tu d ia n e n esta secció n . El a n á ­
lisis se h a c e m e d ia n te u n a re p r e s e n ta c ió n d e g rafo s d e las e x p re s io n e s d e tip o s, c o n
h o ja s p a r a los tip o s b ásico s y n o m b r e s d e tip o s, y n o d o s in te rio re s p a r a los c o n s tr u c ­
to re s d e tip o s , c o m o e n la fig u ra 6 .2 . C o m o se verá, los tip o s d e fin id o s d e m a n e r a
re c u rsiv a c o n d u c e n a ciclo s e n el g rafo d e tip o s si u n n o m b r e se c o n s id e r a la a b r e ­
v ia tu ra d e u n a e x p re s ió n d e tipo.

E q u iv a le n c ia e str u c tu r a l d e la s e x p r e s io n e s d e tip o s

Y a q u e las e x p re s io n e s d e tip o s se c o n s tr u y e n a p a r tir d e tip o s b á s ic o s y c o n s tr u c ­


to res, u n a n o c ió n n a tu r a l d e e q u iv a le n c ia e n t r e d o s e x p re s io n e s d e tip o s e s la equi­
valencia estru ctu ra / ; es d e c ir , d o s e x p r e s io n e s s o n . o b ie n el m i s m o ti p o b á s ic o ,
o están f o rm a d a s a p lic a n d o el m is m o c o n s tr u c to r a tip o s e stru c tu ra l m e n te e q u iv a le n ­
tes. P o r ta n to , d o s e x p re s io n e s d e tip o s s o n e s tr u c t u r a lm e n te e q u iv a le n te s si. y sólo
si, son id é n tic a s. P o r e je m p lo , la e x p re s ió n d e tip o integer só lo es e q u iv a le n te a in ­
teger p o r q u e s o n el m is m o ti p o b ásico . D e m a n e r a s im ila r, p o in ter (integer) só lo es
e q u iv a le n te a p o in ter (integer) p o r q u e los d o s se f o r m a n a p lic a n d o el m is m o c o n s­
tru c to r. pointer. a tip o s e q u iv a le n te s. Si se u tiliz a el m é t o d o d e n ú m e r o d e v a lo r del
a lg o r i tm o 5.1 p a r a c o n s t r u i r u n a r e p r e s e n ta c ió n p o r m e d i o d e u n G D A d e las e x ­
p re sio n e s d e tip o s, e n to n c e s las e x p re s io n e s d e tip o s id é n tic a s se re p r e s e n ta rá n c o n
el m i s m o n o d o .
E n la p r á c t i c a , a m e n u d o e s n e c e s a r i o m o d i f i c a r la n o c i ó n d e e q u i v a l e n c i a
e s tr u c tu r a l p a ra reflejar las v e rd a d e ra s reglas d e c o m p r o b a c ió n d e tip o s del len g u aje
fu e n te . P o r e je m p lo , c u a n d o se p a s a n m a tric e s c o m o p a r á m e tr o s , q u iz á n o se q u ie ra
in c lu ir los lím ite s d e la m a tr iz c o m o p a r te d e l tip o .
Se p u e d e a d a p t a r el a lg o r itm o p a r a c o m p r o b a r la e q u iv a le n c ia e s tr u c tr u ra l d e la
figura 6 .6 p a r a e x a m i n a r n o c io n e s d e e q u iv a le n c ia m o d ific a d a s . El a lg o r itm o a s u m e
q u e los ú n ic o s c o n s tr u c to r e s d e tip o s s o n p a r a m a tric e s , p ro d u c to s , a p u n t a d o r e s y
fu n c io n e s. El a lg o ritm o c o m p a r a r e c u r s iv a m e n tc la e s tr u c tu r a d e las e x p re s io n e s d e
tip o s sin c o m p r o b a r si ex isten ciclos, a s í q u e p u e d e ser a p lic a d o a u n á rb o l o a u n
G D A . N o h a c e falta q u e las e x p re s io n e s d e tip o s id é n tic a s se a n re p r e s e n ta d a s p o r el
m is m o n o d o en el G D A . S e p u e d e c o m p r o b a r la e q u iv a le n c ia e s tr u c tu r a l d e lo s n o ­
d o s e n lo s g rafo s d e tip o s c o n ciclo s u tiliz a n d o u n a lg o r itm o d e la se c c ió n 6.7.
L o s lím ite s d e m a tr iz s\ y r, en

.v = a rra y (s u s2)
t = a rra y (ti, t2)

se p a s a n p o r a l t o si la p r u e b a p a ra la e q u iv a le n c ia d e m a tric e s en las lín e a s 4 y 5 d e


la fig u ra 6 .6 se r e f o r m u la c o m o sigue:

e ls e i f s = a rra y ( s ^ s 2) an d t = a rra y ( / , , l2) th en


retu rn equivest (s2, t2)

E n a lg u n a s o c a sio n e s, se p u e d e e n c o n t r a r u n a re p re s e n ta c ió n p a r a las e x p re sio ­


nes d e tip o s q u e sea m u c h o m á s c o m p a c ta q u e la n o ta c ió n d e g rafo s d e tip o s. E n el
366 C O M P R O B A C IO N DE TIPOS

sig u ie n te e je m p lo , p a r te d e la in f o r m a c ió n s a c a d a d e u n a e x p re sió n d e tip o se c o d i­


fica c o m o u n a s e c u e n c ia d e bits, q u e e n to n c e s p u e d e s e r in te r p r e ta d a c o m o u n solo
e n te ro . L a c o d ific a c ió n es tal q u e n ú m e r o s e n te r o s d is tin to s re p re s e n ta n e x p resio n es
d e tip o s e s tr u c tu r a l m e n t e n o e q u iv a le n te s. S e p u e d e a c e le ra r la p r u e b a p a r a la e q u i­
v a le n c ia e s tr u c tu r a l c o m p r o b a n d o p r i m e r o la d e s ig u a ld a d e s tr u c tu r a l m e d i a n t e la
c o m p a r a c ió n d e las r e p r e s e n ta c io n e s d e e n te r o s d e los tip o s, y a p l ic a n d o d e s p u é s el
a lg o ritm o d e la figura 6 .6 só lo si los e n te r o s son iguales.

(1) function equivest (s%t): boolean;


begin
(2) i f .v y / son e l m ism o tipo básico th e n
(3) r e tu rn true
(4) e l s e i f 5 = a rra y { s s2) a n d t = array i2) th e n
(5) r e tu rn equivest ( 5,, f , ) a n d equivest (5>, t2)
(6) e lse i f s = 5j x 52 an d t = /, x t2 i h e n
(7) r e tu rn equivest (sx, t 1) a n d equivest (s2, ti)
(8) e l s e if s = pointer(s\) a n d t = p o in ler(t{) th e n
(9) r e tu rn equivest ( $ 1, tx)
(10) else if s = S| —►s2 a n d t = t¡ —* t 2 th e n
(11) r e tu rn equivest ($i, / , ) a n d equivest (¿‘2. h )
else
(12) r e tu rn f a l s e
end

Fig. 6.6. C o m p ro b a c ió n d e la equivalencia estructural d e dos expresiones


d e tip o s s y /.

E je m p lo 6 .1 . L a c o d ific a c ió n d e las e x p re s io n e s d e tip o s d e este e je m p lo p ro v ie n e


d e u n c o m p ila d o r d e C e s c rito p o r D . M . R itch ie. T a m b ié n la u tiliz a el c o m p ila d o r
d e C d e s c rito e n J o h n s o n [1979].
C o n s id é re n s e e x p re s io n e s d e tip o s c o n los sig u ie n te s c o n s tr u c to r e s d e tip o s p a ra
a p u n t a d o r e s , f u n c i o n e s y m a tr ic e s : p o in te r ( t) in d i c a u n a p u n t a d o r al ti p o l.fr e -
tu r n s (t) s e ñ a la u n a f u n c ió n d e a lg u n o s a r g u m e n to s q u e d e v u e lv e u n o b je to d e tip o
/. y a rra y {t) in d ic a u n a m a tr iz (de lo n g itu d n o d e t e r m in a d a ) d e e le m e n to s d e tip o t.
O b sé rv e se q u e se h a n sim p lific a d o los c o n s tr u c to r e s d e tip o s m a tr iz y fu n c ió n . Se
te n d rá lo c a liz a d o el n ú m e r o d e e le m e n to s d e u n a m a triz , p e r o el n ú m e r o se g u a rd a
e n o t r o lugar, d e m o d o q u e n o fo rm e p a rte d e l c o n s tr u c to r d e tip o array. A sim is m o ,
el ú n ic o o p e r a n d o del c o n s tr u c to r fre tu rn s e s el ti p o d e l r e s u lta d o d e u n a fu n c ió n :
los tip o s d e los a r g u m e n to s d e la f u n c ió n se g u a r d a r á n e n o t r o lugar. P o r ta n to , los
o b je to s c o n e x p re sio n e s e s tr u c tu r a lm e n te e q u iv a le n te s d e este s is te m a d e tip o s q u iz á
sigan sin p a s a r la p r u e b a d e la fig u ra 6 .6 q u e a h í se a p lic a a u n s is te m a d e tip o s m á s
d e ta lla d o .
C o m o cada u n o d e esto s c o n s tr u c to r e s es u n o p e r a d o r u n a r io , las e x p re s io n e s d e
tip o s f o r m a d a s m e d ia n te la a p lic a c ió n d e d ic h o s c o n s tr u c to r e s a tip o s b ásico s tien en
u n a e s tr u c tu r a m u y u n ifo rm e . E je m p lo s d e d ic h a s e x p re s io n e s d e tip o s son:
6.3 E Q U IV A L E N C IA DE E X P R E SIO N E S D E TIPO S 367

char
freturns {char)
p o in ter (freturns (char))
array (p o in ter (freturns (char)))

C a d a u n a d e las e x p re s io n e s a n te r io r e s p u e d e re p re s e n ta rs e c o n u n a s e c u e n c ia d e
b its m e d ia n te u n e s q u e m a d e c o d ific a c ió n sim p le. C o m o só lo h a y tr e s c o n s tr u c to r e s
d e tip o s, se p u e d e n u tiliz a r d o s b its p a r a c o d ific a r u n c o n s tr u c to r , d e la sig u ie n te
m a n e ra :

C o n s t r u c t o r d e T ipos C odificación
p o in ter 01
a rra y 10
fre tu rn s 11

L o s t i p o s b á s ic o s d e C se c o d i f i c a n u t i l i z a n d o c u a t r o b i t s e n J o h n s o n [ 1 9 7 9 ]; los
c u a t r o tip o s b á s ic o s d e este e je m p lo se p u e d e n c o d ific a r d e la sig u ie n te m a n e ra :

T ipo B á s i c o C odificación
boolean 0000
char 000 1
integer 0 0 10
real 0011

L as e x p resio n es d e tip o s lim ita d a s y a se p u e d e n c o d ificar c o m o se cu en cias d e bits.


L o s c u a t r o b its s itu a d o s m á s a la d e r e c h a c o d ific a n el tip o b ásico d e u n a e x p re sió n
d e tip o . M o v ié n d o s e d e d e r e c h a a iz q u ie r d a , los d o s b its sig u ie n te s in d ic a n el c o n s ­
tr u c t o r a p lic a d o al tip o b ásico , los d o s b its sig u ie n te s d e s c rib e n el c o n s tr u c t o r q u e se
a p lic a a éste, y a s í s u c e s iv a m e n te . P o r e je m p lo .

E x p r e s i ó n d e T ipo C odificación
char 000000 0001
fre tu rn s (char) 0 00 0 11 0001
p o in ter (freturns (char)) 000111 0001
array (p o in ter (freturns (char))) 10 0 1 1 1 (XX) I

V éase el e jercicio 6 .1 2 si se d e s e a n m á s detalles.


A d e m á s d e a h o r r a r esp acio , d ic h a r e p re s e n ta c ió n m a n t i e n e los c o n s tr u c to r e s q u e
a p a r e c e n e n c u a lq u ie r e x p re s ió n d e tip o . D o s s e c u e n c ia s d e b its d is tin ta s n o p u e d e n
r e p r e s e n ta r el m is m o tip o p o r q u e , o b ie n el tip o b ásico o los c o n s tr u c to r e s en las
e x p r e s io n e s d e t i p o s s o n d i s t i n t o s . P o r s u p u e s to , tip o s d i s t i n t o s p o d r í a n t e n e r la
m is m a s e c u e n c ia d e b its p u e s to q u e n o se re p re s e n ta n el t a m a ñ o d e las m a tr ic e s y
los a r g u m e n to s d e las fu n cio n es.
L a c o d if ic a c ió n d e e s te e j e m p l o s e p o d r í a a m p l i a r p a r a i n c l u i r t i p o s re g is tro
(record). L a id e a e s c o n s id e r a r c a d a re g istro c o m o u n tip o b ásico e n la co d ific a c ió n ;
u n a s e c u e n c ia d e b its in d e p e n d ie n te co d ific a el tip o d e c a d a c a m p o del registro. Se
e x a m in a m á s d e ta lla d a m e n te la e q u iv a le n c ia d e tip o s e n C e n el e je m p lo 6.4. □
368 C O M P R O B A C I O N D E TIPOS

N o m b r e s p a r a e x p r e s io n e s d e tip o s

E n a lg u n o s le n g u a je s se p u e d e d a r n o m b r e a lo s tip o s. P o r e je m p lo , en el fra g m e n to
d e l p r o g r a m a e n Pascal

ty p e li g a = T nodo;
v ar s ig u ie n te : e n la c e ;
ú ltim o ; e n la c e ? (6.2)
p s t nodo;
q, r ; t nodo;

el id e n tif ic a d o r e n l a c e está d e c la r a d o c o m o el n o m b r e d e l tip o t n o d o . D e in m e ­


d i a t o s u rg e la p r e g u n t a s ig u ie n te , ¿ t ie n e n id é n tic o s t i p o s t o d a s la s v a r ia b le s s i ­
g u i e n t e , ú l t i m o , p , q y r ? C u r io s a m e n te , la r e s p u e s ta d e p e n d e d e la i m p l a n t a ­
c ió n . El p r o b le m a su rg ió p o r q u e el in fo rm e d e P ascal n o d e fin ió el té r m in o “ tip o
id é n tic o ”.
P a ra m o d e la r esta situ a c ió n , se p e r m itir á d a r n o m b r e s a las e x p re s io n e s d e tip o
y q u e esto s n o m b r e s a p a r e z c a n e n e x p re s io n e s d e tip o s d o n d e p r e v ia m e n te s ó lo e x is­
tían tip o s básicos. P o r e je m p lo , si n o d o e s el n o m b r e d e u n a e x p re s ió n d e tip o , e n ­
to n c e s pointer ( n o d o ) e s u n a e x p re s ió n d e tip o . P o r el m o m e n t o , s u p ó n g a s e q u e n o
ex isten d e fin ic io n e s c irc u la re s d e e x p re s io n e s d e tip o s ta l c o m o c o n s id e r a r q u e n o d o
es el n o m b r e d e u n a e x p re s ió n d e ti p o q u e c o n te n g a n o d o .
C u a n d o se p e r m ite n lo s n o m b r e s e n las e x p r e s io n e s d e tip o s, su rg en d o s n o c io ­
nes d e e q u iv a le n c ia d e e x p re s io n e s d e tipos, s e g ú n el t r a t a m i e n to d e los n o m b r e s . La
equivalencia d e nom bres c o n s id e r a c a d a n o m b r e d e u n tip o c o m o u n tip o d is tin to ,
d e m o d o q u e d o s e x p re s io n e s d e tip o tie n e n e q u iv a le n c ia d e n o m b r e si, y só lo si. son
id é n tic a s. C o n la equivalencia estructural , lo s n o m b r e s se s u s titu y e n p o r la s e x p re ­
sio n es d e tip o s q u e d e fin e n , a s í q u e d o s e x p re s io n e s d e tip o s s o n e s tr u c tu r a lm e n te
e q u iv a le n te s si re p re s e n ta n d o s e x p re sio n e s d e tip o s e s tr u c t u r a lm e n te e q u iv a le n te s
c u a n d o to d o s los n o m b r e s h a n sid o su stitu id o s.

E je m p lo 6 .2 . E n la sig u ie n te ta b la se d a n las e x p re s io n e s d e tip o s q u e p u e d e n a s o ­


ciarse c o n las v aria b les d e las d e c la ra c io n e s (6.2).

V ariable E x p r e s i ó n d e T ipo
s ig u ie n te e n la c e
ú ltim o e n la c e
P pointer ( n o d o )
q p o in ter ( n o d o )
r p o in ter ( n o d o )

C o n la e q u iv a le n c ia d e n o m b re s , las variables s i g u i e n t e y ú l t i m o tie n e n el m is m o


tip o p o r q u e tie n e n las m is m a s e x p re s io n e s d e tip o s aso c ia d a s. L a s v a ria b le s p . q y r
t a m b i é n t i e n e n el m i s m o ti p o , p e r o p y s i g u i e n t e n o , p o r q u e s u s e x p r e s io n e s
d e t i p o s a s o c i a d a s s o n d if e r e n te s . C o n la e q u i v a l e n c i a e s t r u c t u r a l , la s c i n c o v a ­
ria b le s t i e n e n el m i s m o ti p o p o r q u e e n l a c e e s u n n o m b r e p a r a la e x p r e s ió n d e
t i p o p o in te r { n o d o ) . □
6.3 E Q U IV A L E N C IA D E E X P R E SIO N E S DE TIPO S 369

L o s c o n c e p t o s d e e q u i v a l e n c i a e s t r u c t u r a l y d e n o m b r e s o n ú tile s p a r a e x p l i ­
c a r la s reg las q u e u t i l i z a n v a r io s le n g u a je s p a r a a s o c ia r t i p o s c o n id e n tif ic a d o r e s
e n la s d e c la r a c io n e s .

E j e m p lo 6 .3 . E n P a s c a l s u rg e u n a c o n f u s i ó n y a q u e m u c h a s i m p l a n t a c i o n e s a s o ­
c i a n u n n o m b r e d e ti p o i m p l í c i t o c o n c a d a i d e n t i t l c a d o r d e c l a r a d o . S i la d e c l a ­
r a c i ó n c o n t i e n e u n a e x p r e s ió n d e ti p o q u e n o s e a u n n o m b r e , s e c r e a u n n o m b r e
im p líc ito . C a d a v e z q u e a p a r e c e u n a e x p r e s ió n d e t i p o e n u n a d e c l a r a c i ó n d e v a ­
ria b le s , se c r e a u n n o m b r e i m p l í c i t o n u e v o .
P o r t a n t o , se c r e a n n o m b r e s i m p l í c i t o s p a r a la s e x p r e s io n e s d e tip o s d e la s d o s
d e c l a r a c i o n e s q u e c o n t i e n e n p . q y r e n (6 .2 ). E s d e c ir , la s d e c l a r a c i o n e s se c o n ­
s id e r a n c o m o si f u e r a n

lig a = t nodo;
np = t nodo;
nqr =
T nodo;
s ig u ie n te •
• lig a ;
ú ltim o •
• lig a ;
P : np;
q •
• n q r;
r •
• n q r;

S e h a n i n t r o d u c i d o lo s n u e v o s n o m b r e s d e t i p o n p y n q r . C o n la e q u i v a l e n c i a d e
n o m b r e s , c o m o s i g u i e n t e y ú l t i m o se d e c l a r a n c o n el m i s m o n o m b r e d e ti p o ,
se c o n s i d e r a q u e ti e n e n tip o s e q u i v a l e n t e s . D e m a n e r a s im i la r , se c o n s i d e r a q u e
q y r t i e n e n t i p o s e q u i v a l e n t e s p o r q u e t i e n e n a s o c i a d o el m i s m o n o m b r e d e tip o
im p líc ito . S in e m b a r g o , p , q y s i g u i e n t e n o t i e n e n t i p o s e q u i v a l e n t e s , p o r q u e
t o d o s ti e n e n tip o s c o n n o m b r e s d is ti n to s .
L a i m p l a n t a c i ó n h a b i t u a l c o n s is te e n c o n s t r u i r u n g r a f o d e t i p o s p a r a r e p r e ­
s e n t a r a los tip o s . C a d a v ez q u e se v e u n c o n s t r u c t o r d e t i p o s o u n ti p o b á s ic o , se
c r e a u n n u e v o n o d o . C a d a v e z q u e se v e u n n o m b r e d e t i p o n u e v o , se c r e a u n a
h o ja . S in e m b a r g o , se c o n s e r v a la e x p r e s ió n d e ti p o a la q u e se re fie re el n o m b r e .
C o n e s ta r e p r e s e n ta c ió n , d o s e x p r e s io n e s d e t i p o s s o n e q u i v a l e n t e s si e s tá n r e p r e ­
s e n t a d a s p o r el m i s m o n o d o e n el g r a f o d e tip o s . E n la f ig u r a 6 .7 s e m u e s t r a u n
g ra fo d e tip o s p a r a la s d e c l a r a c i o n e s ( 6 .2 ) . L a s lí n e a s d e p u n t o s in d i c a n la a s o c ia ­
c i ó n e n t r e v a r ia b le s y n o d o s e n el g r a f o d e tip o s . O b s é r v e s e q u e el n o m b r e d e ti p o
n o d o tie n e tr e s p a d r e s , to d o s e t i q u e t a d o s c o n p o in ter. A p a r e c e u n s i g n o ig u a l e n ­
t r e el n o m b r e d e t i p o e n l a c e y el n o d o e n el g r a f o d e tip o s a l q u e s e re fie re . □

siguiente último

enlace = pointer pointer p o in te r

nodo

Fig. 6 .7 . A sociación d e variables y n o dos en el grafo d e tipos.


370 C O M P R O B A C IO N D E TIPOS

C ic lo s e n la s r e p r e s e n t a c i o n e s d e tip o s

L a s e s t r u c t u r a s d e d a t o s b á s ic a s , c o m o la s lis ta s e n l a z a d a s y lo s á r b o l e s , a m e ­
n u d o s e d e f in e n r e c u r s iv a m e n te ; p o r e j e m p l o , u n a lis ta e n l a z a d a o e s tá v a c í a o
c o n s ta d e u n n o d o c o n u n a p u n t a d o r a u n a lis ta e n l a z a d a . D ic h a s e s t r u c t u r a s d e
d a t o s g e n e r a l m e n t e se i m p l a n t a n m e d i a n t e r e g is tr o s q u e c o n t i e n e n a p u n t a d o r e s
a r e g is tro s s im i la r e s , y lo s n o m b r e s d e t i p o s d e s e m p e ñ a n u n p a p e l e s e n c ia l e n la
d e f in i c ió n d e t i p o s d e d i c h o s reg istro s.
C o n s id é r e s e u n a lis ta e n l a z a d a d e n o d o s , d o n d e c a d a u n o c o n t i e n e a l g u n a i n ­
f o r m a c i ó n d e ti p o e n t e r o y u n a p u n t a d o r al s ig u ie n te n o d o d e la lista. L a s d e c l a ­
r a c i o n e s e n P a s c a l d e n o m b r e s d e t i p o s c o r r e s p o n d i e n t e s a lig as y n o d o s so n :

ty p e e n la c e = t nodo;
nodo = reco rd
in fo : in te g e r;
s ig u ie n te : e n la c e
end;

O b s é rv e s e q u e el n o m b r e d e t i p o e n l a c e se d e f in e m e d i a n t e n o d o y n o d o se d e ­
fin e m e d i a n t e e n l a c e , d e m o d o q u e s u s d e f i n i c i o n e s s o n re c u rs iv a s .
L o s n o m b r e s d e t i p o d e f i n i d o s r e c u r s i v a m e n t e se p u e d e n s u s t i t u i r si se q u i e ­
r e n i n t r o d u c i r c ic lo s e n el g r a f o d e tip o s . S i p o in le r ( n o d o ) se s u s t it u y e p o r e n ­
l a c e . se o b ti e n e p a r a n o d o la e x p r e s ió n d e tip o q u e se m u e s t r a e n la fig u ra 6.8 (a).
S i s e u t iliz a n c ic lo s , c o m o e n la fig u r a 6 .8 ( b ) . s e p u e d e e li m in a r la m e n c i ó n d e n o d o
d e la p a r te del g rafo d e tip o d e b a jo del n o d o e tiq u e ta d o c o n pointer.

n o d o « record

X X

/ \ / \
in fo in te jie r sigu ien te p o in te r

I
nodo

(a)

F ig . 6 .8 . E l n o m b r e d e t ip o n o d o d e f in id o r e c u r s iv a m e n te .

E je m p lo 6 .4 . C ev ita los ciclo s e n lo s g rafo s d e tip o s u tiliz a n d o la e q u iv a le n c ia es­


tr u c tu ra l p a r a to d o s los tip o s e x c e p to los registros. E n C , la d e c la r a c ió n d e n o d o se­
ria asi:

s t r u c t nodo {
i n t in fo ;
s t r u c t nodo * s ig u ie n te ;
6.4 C O N V E R S IO N E S D E TIPO S 371

C u tiliz a la p a l a b r a c la v e s t r u c t e n lu g a r d e r e c o r d , y el n o m b r e n o d o se c o n ­
v ie rte e n p a rte del tip o d e l registro. E n efecto , C u tiliz a la r e p re s e n ta c ió n aciclica d e
la fig u ra 6.8(a).
C exige q u e lo s n o m b r e s d e tip o s se d e c la re n a n te s d e su u so , c o n la e x c e p c ió n
d e q u e p e rm ite a p u n ta d o r e s a tip o s d e reg istro n o d e c la ra d o s . P o r t a n t o , to d o s los
ciclos p o te n c ia le s se d e b e n a a p u n t a d o r e s a registros. C o m o el n o m b r e d e u n registro
es p a r te d e su tip o , la b ú s q u e d a d e e q u iv a le n c ia e s tr u c tu r a l se d e t ie n e c u a n d o se
a lc a n z a u n c o n s t r u c t o r d e re g is tro s , y lo s tip o s q u e se e s tá n c o m p a r a n d o s o n e q u i ­
v a le n te s p o r q u e ti e n e n el m i s m o ti p o d e re g is tro c o n n o m b r e o b ie n s o n n o
e q u iv a le n te s . D

6 .4 C O N V E R S I O N E S D E T I P O S

C o n s id é re n s e e x p re s io n e s c o m o x + i d o n d e x es d e ti p o real e i es d e tip o e n te ro .
C o m o la re p re s e n ta c ió n d e e n te r o s y reales es d is tin ta d e n t r o d e u n c o m p u t a d o r , y
se u tiliz an in s tru c c io n e s d e m á q u i n a d is tin ta s p a r a las o p e r a c io n e s s o b re e n te r o s y
reales, p u e d e q u e el c o m p ila d o r te n g a q u e c o n v e r tir p r im e r o u n o d e lo s o p e r a n d o s
d e + p a r a g a r a n tiz a r q u e a m b o s o p e r a n d o s se a n d e l m i s m o tip o c u a n d o te n g a lu g a r
la s u m a .
L a d e fin ic ió n del le n g u a je esp ecifica las c o n v e rs io n e s n ecesarias. C u a n d o u n e n ­
te ro se asig n a a u n real, o viceversa, la c o n v e r s ió n e s al ti p o d e l la d o iz q u ie r d o d e la
a s ig n a c ió n . E n ex p resio n es, la tr a n s f o r m a c ió n m á s c o m ú n es la d e c o n v e r tir el e n ­
te ro e n u n n ú m e r o real y d e s p u é s rea liz a r u n a o p e r a c ió n real c o n el p a r d e o p e ra n -
d o s reales o b te n id o . S e p u e d e u tiliz a r el c o m p r o b a d o r d e tip o s e n u n c o m p ila d o r
p a r a in s e r ta r e s ta s o p e r a c io n e s d e c o n v e r s ió n e n la r e p r e s e n ta c ió n in t e r m e d i a del
p r o g r a m a fu e n te . P o r e je m p lo , la n o ta c ió n p o stfija p a r a x + i p u e d e s e r

x i e n ta r e a l real+

El o p e r a d o r e n ta r e a l tr a n s f o r m a i d e e n t e r o a real y d e s p u é s re a l+ realiza la s u m a
real c o n s u s o p e ra n d o s .
L a c o n v e rs ió n d e tip o s surge c o n fre c u e n c ia e n o t r o c o n te x to . S e d ic e q u e u n
s ím b o lo q u e tie n e d is tin to s sig n ific a d o s d e p e n d i e n d o d e su c o n te x to está s o b re c a r­
g ad o . L a s o b re c a rg a se e s tu d ia r á e n la sig u ie n te secció n , p e r o se m e n c io n a p o r q u e
las c o n v e rs io n e s d e tip o a m e n u d o a c o m p a ñ a n a la so b recarg a.

C o e rc io n e s
Se d ic e q u e la c o n v e rs ió n d e u n tip o a o t r o e s im plícita si el c o m p ila d o r la v a a rea­
lizar a u t o m á ti c a m e n te . L as c o n v e rs io n e s d e tip o im p líc itas, ta m b ié n lla m a d a s coer­
ciones , se lim ita n e n m u c h o s le n g u a je s a s itu a c io n e s d o n d e en p r in c ip io n o se p ie rd e
n in g u n a in f o r m a c ió n ; p o r e je m p lo , u n e n t e r o se p u e d e tr a n s f o r m a r e n u n real pero
n o al c o n t r a r i o . E n la p r á c tic a , sin e m b a r g o , la p é r d id a es p o s ib le c u a n d o u n n ú ­
m e r o real d e b e a ju sta rse al m is m o n ú m e r o d e b its q u e u n e n te ro .
Se d ic e q u e la c o n v e rs ió n e s explícita si el p r o g r a m a d o r d e b e e scrib ir a lg o p a ra
m o t iv a r la c o n v e rs ió n . E n la p rá c tic a , to d a s las c o n v e rs io n e s e n A d a s o n explícitas.
P a r a u n c o m p r o b a d o r d e tip o s, las c o n v e rs io n e s ex p lícitas p a re c e n ig u ales q u e las
a p lic a c io n e s d e f u n c ió n , a s í q u e n o p re s e n ta n p r o b le m a s nu ev o s.
372 C O M P R O B A C I O N D E TIPOS

P o r e je m p lo , e n P ascal, la f u n c ió n p re d e fin id a o r d tr a n s f o r m a u n c a r á c te r e n un
e n te r o , y c h r realiza la tr a n s f o r m a c ió n in v e rs a d e e n t e r o a c a rá c te r, así q u e estas
c o n v e rs io n e s s o n explícitas. P o r o t r a p a rte , C c o e rc io n a (es d e c ir, c o n v ie r te im p líc i­
ta m e n t e ) los c a ra c te re s A S C II a e n te r o s e n t r e 0 y 1 2 7 e n las e x p re s io n e s a ritm é tic a s.

E j e m p l o 6 . 5 . C o n s id é r e n s e las e x p r e s io n e s f o r m a d a s a p l i c a n d o u n o p e r a d o r a r i t ­
m é tic o o p a c o n s ta n te s e id e n tific a d o re s. c o m o e n la g ra m á tic a d e la figura 6 .9 . S u­
p ó n g ase q u e h a y d o s tip o s, real y e n te r o , d o n d e los e n te r o s se c o n v ie r te n e n reales
c u a n d o sea n ecesario . El a t r i b u t o tipo del n o te r m in a l E p u e d e s e r e n t e r o o real, y
las reglas d e c o m p r o b a c ió n d e tip o s se m u e s tr a n e n la fig u ra 6.9. C o m o e n la secció n
6 .2 , la f u n c ió n busca(e) d e v u e lv e el tip o g u a r d a d o e n la e n t r a d a a la ta b la d e s í m ­
b o lo s a p u n t a d a p o r e. □

P r o d u c c ió n R egla s e m á n t ic a

E -* núm EJipo: = integer


E —►n ú m . n ú m E .tipo:= real
E -> id E.tipo:= busca (Sé.entrada)
E -* E i o p E2 E tipo : = i f E\.tipo = integer a n d E2.tipo = integer
t h e n integer
e l s e i f E\.tipo = integer a n d Estipa = real
t h e n real
else if Jipo = real a n d E2Jipo = integer
t h e n real
e l s e i f Ei Jipo = real a n d E2 tipo = real
t h e n real
e l s e error-tipo

Fig. 6 .9 . Reglas d e co m p ro b a c ió n de tip o s para la coerción de en tero a real.

L a c o n v e rs ió n im p líc ita d e c o n s ta n te s se p u e d e rea liz a r g e n e r a lm e n te e n el m o ­


m e n t o d e la c o m p i l a c i ó n , m e j o r a n d o a m e n u d o el t i e m p o d e e j e c u c ió n d e l p r o ­
g r a m a o b je to . E n los sig u ie n tes fra g m e n to s d e c ó d ig o , x es u n a m a tr iz d e reales a la
q u e se asig n a 1 c o m o v a lo r in icial e n to d o s s u s e le m e n to s . U tiliz a n d o u n c o m p ila ­
d o r d e P ascal, B entley [1 9 8 2 ] vio q u e el fra g m e n to d e c ó d ig o

f o r I := 1 t o N do X ( I ] := 1

e m p le ó 48.4N m ic ro s e g u n d o s , m ie n tr a s q u e el fra g m e n to

f o r I := 1 t o N d o X [ I ) : = 1 . 0

e m p le ó 5 .4 n m ic ro s e g u n d o s. A m b o s , a s ig n a n el v a lo r u n o a los e le m e n to s d e u n a
m a tr iz d e reales. S in e m b a r g o , el c ó d ig o g e n e r a d o ( p o r este c o m p ila d o r ) p a r a el p r i­
m e r fra g m e n to c o n te n ía u n a lla m a d a a u n a r u ti n a e n el m o m e n t o d e la ejecu ció n
p a r a c o n v e r tir la r e p re s e n ta c ió n e n t e r a d e 1 e n la d e n ú m e r o real. C o m o y a se c o ­
n o c e e n el m o m e n t o d e la c o m p ila c ió n q u e x es u n a m a tr iz d e reales, u n c o m p ila d o r
m á s c o m p le to c o n v e r tir ía 1 e n 1.0 e n el m o m e n t o d e la c o m p ila c ió n .
6.5 SOBRECARGA DE FUNC IO NES Y O PE R A D O R E S 373

6 .5 S O B R E C A R G A D E F U N C I O N E S Y O P E R A D O R E S

U n s ím b o lo sobrecargado es el q u e tie n e d is tin to s sig n ificad o s d e p e n d ie n d o d e su


c o n te x to . E n m a te m á tic a s , el o p e r a d o r d e s u m a + está s o b re c a rg a d o , p o r q u e + en
A + B tie n e d is tin to s sig n ificad o s si A y B s o n e n te ro s , reales, n ú m e r o s c o m p le jo s o
m a tric e s. E n A d a, los p a ré n te s is ( ) e s tá n so b re c a rg a d o s; la e x p re sió n A ( I ) p u e d e
s e r el 1 -é s im o e le m e n to d e la m a tr iz A. u n a lla m a d a a la f u n c ió n A c o n a r g u m e n to
I o u n a c o n v e rs ió n e x p líc ita d e la e x p re s ió n I al tip o a.
L a so b re c a rg a se resuelve c u a n d o se d e t e r m i n a u n sig n ificad o ú n ic o p a r a u n caso
d e u n s ím b o lo s o b re c a rg a d o . P o r e je m p lo , si + p u e d e d e n o t a r u n a s u m a real o e n ­
te ra , e n to n c e s los d o s c aso s d e + e n x + ( i + j ) p u e d e n d e n o t a r d ife re n te s f o r m a s d e
s u m a , d e p e n d i e n d o d e los tip o s d e x . i y j . L a r e s o lu c ió n d e la s o b r e c a r g a a m e ­
n u d o a p a re c e re fe rid a c o m o identificación de operadores, p o r q u e d e t e r m i n a la o p e ­
ra c ió n q u e d e n o t a u n s ím b o lo d e o p e ra d o r.
L o s o p e r a d o r e s a r itm é tic o s están s o b re c a rg a d o s e n la m a y o ría d e los lenguajes.
S in e m b a rg o , la s o b re c a rg a q u e a fe c ta a los o p e r a d o r e s a r itm é tic o s c o m o + se p u e d e
reso lver o b s e r v a n d o ú n ic a m e n t e lo s a r g u m e n to s d e l o p e r a d o r . El a n álisis d e casos
p a r a d e t e r m in a r si se d e b e u tiliz a r la v ersió n e n t e r a o la real d e + es s im ila r a l d e la
regla s e m á n tic a p a r a E —* E { o p E 2 d e la fig u ra 6 .9 , d o n d e el tip o d e E se d e te r m in a
o b s e r v a n d o los tip o s p o sib le s d e E¡ y E 2.

C o n ju n to d e tip o s p o s ib le s para u n a s u b e x p r e s ió n

N o s ie m p r e es p o s ib le re s o lv e r la s o b r e c a r g a o b s e r v a n d o ú n i c a m e n t e lo s a r g u m e n ­
to s d e u n a f u n c ió n , c o m o lo m u e s tr a el sig u ie n te e je m p lo . E n lu g a r d e u n so lo tipo,
u n a s u b e x p re s ió n p o r sí so la p u e d e t e n e r u n c o n j u n t o d e tip o s p o sib le s. E n A d a.
el c o n t e x t o d e b e p r o p o r c i o n a r in f o r m a c ió n s u f ic ie n te p a r a l i m i t a r la e le c c ió n a un
s o lo tip o .

E je m p lo 6 . 6 . E n A d a. u n a d e las in te r p r e ta c io n e s e s tá n d a r (es d ecir, p re d e fin id a ) del


o p e r a d o r * e s la d e u n a f u n c ió n q u e v a d e u n p a r d e e n te r o s a u n e n te ro . El o p e r a ­
d o r p u e d e s o b re c a rg a rse si se a ñ a d e n d e c la ra c io n e s c o m o éstas:

function ( i, j : i n t e g e r ) r e t u r n c o m p l e x ;
function "* " ( x , y : complex ) return complex;

D e s p u é s d e estas d e c la ra c io n e s, los tip o s p o sibles p a r a * in cluy en :

integer x integer —> integer


integer x integer —* com plex
com plex x co m p lex - > com plex

S u p ó n g a se q u e el ú n ic o ti p o p o sib le p a r a 2 , 3 y 5 es e n te ro . C o n las d e c la ra c io n e s
a n te r io r e s , la s u b e x p r e s ió n 3 * 5 tie n e ti p o e n t e r o o c o m p le jo , d e p e n d i e n d o d e su
c o n te x to . Si la e x p re s ió n c o m p le ta es 2 * ( 3 * 5 ) . e n to n c e s 3 * 5 d e b e t e n e r tip o e n te r o
p o r q u e * t o m a u n p a r d e e n te r o s o u n p a r d e n ú m e r o s c o m p le jo s c o m o a r g u m e n to s .
P o r o t r o la d o , 3 * 5 d e b e te n e r tip o c o m p le jo si la e x p re s ió n c o m p le ta es ( 3 * 5 ) * z y
z se d e c la ra c o m p le jo . □
374 C O M P R O B A C IO N D E TIPOS

E n la secció n 6.2. se c o n s id e r ó q u e c a d a e x p re s ió n te n ía u n ti p o ú n ic o , d e m o d o
q u e la regla d e c o m p r o b a c ió n d e tip o s p a r a la a p lic a c ió n d e f u n c io n e s era

£ -* £ i ( £ 2 ) { E.tipo := if E 2. tip o = s and


' E htipo = s -* / then 1

e lse e r r o r -tip o )

E n la figura 6 .1 0 a p a re c e la g e n e ra liz a c ió n n a tu r a l d e esta regla a c o n j u n t o s d e tip o s.


L a ú n ic a o p e r a c ió n e n la fig u ra 6 .1 0 es la d e a p lic a c ió n d e fu n c io n e s; la s reglas p a ra
c o m p r o b a r o tr o s o p e r a d o r e s e n las e x p re s io n e s s o n sim ilares. P u e d e n e x istir varias
d e c la ra c io n e s d e u n id e n tif ic a d o r s o b re c a rg a d o , así q u e se s u p o n e q u e u n a e n tr a d a
d e u n a ta b la d e s ím b o lo s p u e d e c o n t e n e r u n c o n j u n t o d e tip o s p o sib le s; e s te c o n ­
j u n t o es d e v u e lto p o r la f u n c ió n busca. El n o te rm in a l in icial E ' g e n e r a u n a e x p re ­
sió n c o m p le ta . S u p a p e l se a c la ra a c o n tin u a c ió n .

P R O D U C C IO N R e g l a s e m á n t ic a

£' E E'. ti pos := E. ti pos


E id E. tipos : = busca ad entrada)
£ - £ , ( £2 ) E.tipos :=x { 1 1existe un a s en E j. tipos
tal q u e s - * t está en £ , . tipos }

Fig. 6.10. D eterm in ació n del c o n ju n to d e tipos posibles de u n a expresión.

E n p a la b ra s, la te rc e ra regla d e la figura 6 .1 0 in d ic a q u e si s es u n o d e los tip o s


d e £> y u n o d e los tip o s d e E { p u e d e t r a n s f o r m a r s e n t. e n to n c e s / es u n o d e los
tip o s d e £ , ( £ 2) . U n a d is c o rd a n c ia d e tip o s d u r a n t e la a p lic a c ió n d e la f u n c ió n d a
c o m o r e s u lta d o q u e el c o n j u n t o E.tipos se c o n v ie r ta e n v acío, c o n d ic ió n q u e se u ti­
liza t e m p o r a lm e n te p a r a s e ñ a la r u n e r r o r d e tipo.

Ejemplo 6 .7 . A d e m á s d e ilu s tr a r la e sp ecificació n d e la fig u ra 6 .1 0 , este e je m p lo s u ­


giere c ó m o llev ar este e n f o q u e a o tr a s c o n s tru c c io n e s . P o r e je m p lo , se c o n s id e r a la
e x p re sió n 3 * 5 . S e a n las d e c la ra c io n e s del o p e r a d o r * c o m o e n el e je m p lo 6 .6 . Es
d e c ir * p u e d e t r a n s f o r m a r u n p a r d e e n t e r o s e n u n e n t e r o o e n u n n ú m e r o c o m ­
plejo. d e p e n d ie n d o del c o n te x to . E n la fig u ra 6 .1 1 . se m u e s tr a n el c o n j u n t o d e tip o s
p o sib les p a r a la s s u b e x p re s io n e s d e 3 * 5 , d o n d e i y c son a b r e v ia tu r a s d e inieger y
com plex, resp ect i v a m e n te .

E. {/,<•}

E: « E: {/)
I I
3: M 5: {/)
{/ x l -* i, / X / - c, r X f - f |

F ig. 6 .1 1 . C o n j u n t o d e t ip o s p o s ib le s p a r a la e x p r e s i ó n 3 * 5 .
6.5 SOBRECARGA DE FU N C IO N ES V O P E R A D O R E S 375

D e n u e v o , s u p ó n g a s e q u e el ú n ic o ti p o p o sib le p a r a 3 y 5 e s integer . P o r ta n to ,
el o p e r a d o r * se a p lic a a u n p a r d e e n te ro s. Si se c o n s id e r a este p a r d e e n te r o s c o m o
u n a u n id a d , su tip o v ie n e d a d o p o r integer x integer. H a y d o s f u n c io n e s e n el c o n ­
j u n t o d e tip o s p a r a * q u e se a p lic a n a p a re s d e e n te r o s ; u n a d e v u e lv e u n e n te r o ,
m ie n tr a s q u e la o t r a d e v u e lv e u n n ú m e r o c o m p le jo , así q u e la ra íz p u e d e te n e r tip o
integer o tip o complex. □

R e d u c c ió n d e l c o n ju n to d e tip o s p o s ib le s

A d a exige q u e u n a e x p re s ió n c o m p le ta te n g a u n tip o ú n ic o . D a d o u n tip o ú n ic o a


p a r tir d e l c o n te x to , se p u e d e n re d u c ir las e leccio n es d e tip o p a ra c a d a s u b e x p re sió n .
Si este p ro c e s o n o d a c o m o r e s u lta d o u n tip o ú n ic o p a r a c a d a s u b e x p re s ió n . e n t o n ­
ces se d e c la ra u n e r r o r d e tip o p a r a la ex p re sió n .
A n te s d e tr a b a ja r d e fo rm a d e s c e n d e n te d e u n a e x p re s ió n a s u s s u b e x p re sio n e s,
se c o n s id e ra n m á s d e ta lla d a m e n te los c o n j u n to s E .tip o s c o n s tr u id o s p o r las reglas
d e la fig u ra 6 .1 0 . Se d e m u e s tr a q u e to d o tip o / en E. tipos e s un Upo factible: e s d ecir,
es p o sib le elegir e n tr e los tip o s s o b re c a rg a d o s d e los id e n tific a d o re s q u e a p a r e c e n en
E d e m o d o q u e E o b te n g a el tip o /. La p ro p ie d a d se c u m p le p a ra id e n tific a d o re s p o r
d e c la ra c ió n , y a q u e c a d a e le m e n to d e id.tipos es factib le. P a ra el p a s o d e in d u c c ió n ,
c o n sid érese el tip o / e n E .ti pos, d o n d e E e s E\ ( E 2). S eg ú n la regla p a r a la a p lic a c ió n
d e fu n c io n e s d e la figura 6 .1 0 . p a ra u n tip o s , .s d e b e e s ta r e n E * tipos y u n tip o s -* t
d e b e e s ta r en E stip a . P o r in d u c c ió n , s y s -> r s o n tip o s factibles p a ra E 2 v res­
p e c tiv a m e n te . Se d e d u c e q u e / es u n tip o factible p a r a E.
P u e d e h a b e r v arias m a n e r a s d e lleg ar a u n tip o factible. P o r e je m p lo , c o n sid érese
la e x p re sió n f ( x ) , d o n d e f p u e d e te n e r los tip o s a -> c y b - » c, y x p u e d e t e n e r los
tip o s a y b. E n to n c e s , f ( x ) tie n e tip o c p e r o x p u e d e te n e r ti p o a o h .

P r o d u c c ió n R eglas S emánticas

E'. tipos : = E. tipos


E. único := if E'.tipos = {/} then t else error-tipo
E '. código: = E código

E - * id E .tip o s : = busca (id entrada)


E .código : = genera (id le x e m a E .ú n ic o )

£ - > £ . ( E2 ) E.tipos : = ( s' | existe u n a s en E :.tipos


tal q u e s -> .v' está en E¡.tipos (
t : = E. único
S : = { s | s € E 2.ti pos an d í —►/ e E ¡.tipos )
E i.único:= if S = {.v} th e n s e lse error-tipo
E¡.único : = if S = (5¡ then 5 -> t else error-tipo
E .código : = Ei.código |¡ E 2.código || genera ('aplica ' E único)

F ig. 6 .1 2 . R e d u c c ió n d e l c o n ju n to d e tip o s p a ra u n a expresión.


376 CO M PRO BA CIO N D E TIPOS

La d e fin ic ió n d irig id a p o r la s in ta x is d e la fig u ra 6 .1 2 se o b tie n e d e la d e la figura


6 .1 0 a ñ a d i e n d o reglas s e m á n tic a s p a r a d e t e r m i n a r el a tr ib u to h e r e d a d o único d e E.
A c o n t in u a c i ó n se e s tu d ia el a t r i b u t o s in te tiz a d o código d e E.
C o m o la e x p r e s ió n c o m p l e t a e s g e n e r a d a p o r E \ se d e s e a q u e E '.tip o s sea un
c o n j u n t o q u e c o n te n g a u n so lo ti p o t. S e h e r e d a este ti p o ú n ic o c o m o el v a lo r d e
E.único. D e n u e v o , el tip o b ásico e rro r-tip o s e ñ a la u n erro r.
Si u n a f u n c ió n £ , ( £ \ ) d e v u e lv e el ti p o f, e n to n c e s p u e d e h a b e r u n ti p o s q u e sea
factible p a r a el a r g u m e n to E 2\ al m i s m o tie m p o , s - * t e s factible p a r a la f u n c ió n . Se
u tiliz a el c o n j u n t o .9 e n la regla s e m á n tic a c o r r e s p o n d ie n te d e la fig u ra 6 .1 2 p a ra
aseg u rarse d e q u e h a y a u n ú n ic o tip o s c o n d ic h a p ro p ie d a d .
Se p u e d e i m p l a n t a r la d e fin ic ió n d irig id a p o r la s in ta x is d e la fig u ra 6 .1 2 reali­
z a n d o d o s re c o rrid o s e n p r o f u n d id a d d e u n á rb o l s in tá c tic o p a r a u n a e x p re s ió n . D u ­
r a n t e el p r i m e r r e c o r r i d o , el a t r i b u t o tip o s se s i n t e t i z a d e m a n e r a a s c e n d e n t e .
D u r a n te el s e g u n d o re c o rrid o , el a t r i b u t o único se p r o p a g a d e fo rm a d e s c e n d e n te , y
c o m o se regresa d e u n n o d o , se p u e d e s in te tiz a r el a t r i b u t o código. E n la p rá c tic a , el
c o m p r o b a d o r d e tip o s p u e d e s im p le m e n te a s o c ia r u n tip o ú n ic o a c a d a n o d o del á r ­
bol s in tá c tic o . E n la fig u ra 6 .1 2 , se g e n e r a u n a n o ta c ió n p o stfija p a r a v e r c ó m o se
p o d ría g e n e r a r el c ó d ig o in te r m e d io . E n la n o ta c ió n po stfija, c a d a id e n tif ic a d o r y
c a d a c a so d e l o p e r a d o r a p l ic a tie n e u n ti p o a s o c ia d o a él m e d i a n t e la f u n c ió n ge­
nera.

6 .6 F U N C I O N E S P O L I M O R F I C A S

U n p r o c e d im ie n to n o r m a l p e r m ite q u e la s p ro p o s ic io n e s d e su c u e r p o se e je c u te n
c o n a r g u m e n to s d e tip o s fijos; c a d a vez q u e se lla m a u n p r o c e d im ie n to p o lim ó rfic o ,
las p ro p o s ic io n e s d e su c u e r p o p u e d e n e je c u ta rs e c o n a r g u m e n to s d e tip o s d istin to s.
El t é r m i n o “p o lim ó r f ic o " ta m b ié n se a p lic a a c u a lq u ie r p a r te d e c ó d ig o q u e p u e d a
e je c u ta rs e c o n a r g u m e n to s d e tip o s d is tin to s , d e m o d o q u e se p u e d e h a b l a r d e f u n ­
cio n es. así c o m o d e o p e r a d o r e s p o lim ó rfic o s.
L o s o p e r a d o r e s p re d e fin id o s p a r a in d ic a r m a tric e s, a p lic a r f u n c io n e s y m a n i p u ­
la r a p u n t a d o r e s s o n g e n e r a l m e n t e p o lim ó r f ic o s p o r q u e n o se l i m it a n a u n a d e te r ­
m i n a d a clase d e m a triz , fu n c ió n o a p u n t a d o r . P o r e je m p lo , el m a n u a l d e referencia
d e C esta b le c e a c e rc a del o p e r a d o r a p u n t a d o r &: “Si el ti p o d e o p e r a n d o es \ . . \ el
ti p o d e r e s u lta d o es ‘a p u n t a d o r a P u e s to q u e c u a lq u ie r tip o se p u e d e s u s titu ir
por el o p e r a d o r & e n C es p o lim ó rfic o .
E n A d a . las f u n c io n e s “g e n é r ic a s " s o n p o lim ó r f ic a s , p e r o e n A d a el p o li m o r ­
fism o es lim ita d o . C o m o ta m b ié n se h a u tiliz a d o el t é r m i m o “g e n é ric o ” p a r a refe­
rirse a f u n c io n e s s o b re c a rg a d a s y a la c o e rc ió n d e a r g u m e n to s d e fu n c io n e s, se e v i­
t a r á u sa r d ic h o té r m in o .
E n e s ta se c c ió n se e s t u d i a n los p r o b l e m a s q u e s u rg e n c u a n d o se d is e ñ a u n c o m ­
p r o b a d o r d e tip o s p a r a u n le n g u a je c o n f u n c io n e s p o lim ó r f ic a s . P a r a a n a l i z a r el
p o lim o r f is m o , s e a m p l i a r á el c o n j u n t o d e e x p r e s io n e s d e tip o s a fin d e q u e i n c l u ­
y a n e x p r e s io n e s c o n v a r ia b le s d e tip o . L a in t r o d u c c i ó n d e v a r ia b le s d e tip o h a c e
q u e s u r ja n a lg u n o s a s p e c to s a lg o r ítm ic o s r e la tiv o s a la e q u i v a le n c i a d e e x p r e s io n e s
d e tip o s.
6.6 F U N C IO N E S POLIM O RFICAS 377

¿ P o r q u é la s fu n c io n e s p o lim ó r fic a s?

L as fu n c io n e s p o lim ó rfic a s re s u lta n a tr a c tiv a s p o r q u e facilitan la im p la n t a c ió n d e


a l g o r i tm o s q u e m a n i p u l a n e s t r u c t u r a s d e d a t o s , i n d e p e n d i e n t e m e n t e d e lo s tip o s
d e los e l e m e n t o s e n la e s t r u c t u r a d e d a to s . P o r e je m p lo , es c o n v e n i e n te t e n e r u n
p r o g r a m a q u e d e t e r m in e la lo n g itu d d e u n a lista s in q u e sea n e c e sa rio c o n o c e r los
tip o s d e los e le m e n to s d e la lista.
L o s le n g u a je s c o m o P ascal e x ig en u n a esp ecificació n c o m p le ta d e los tip o s d e los
p a r á m e tr o s d e fu n c io n e s, a s í q u e u n a f u n c ió n p a r a d e t e r m in a r la lo n g itu d d e u n a
lista e n la z a d a d e e n te r o s n o p u e d e a p lic a rs e a u n a lista d e reales. El c ó d ig o e n P ascal
d e la fig u ra 6 .1 3 es p a r a listas d e e n te ro s. L a f u n c ió n l o n g i t u d sigue los sigu ien tes
e n la c e s d e n t r o d e la lista h a s ta q u e se e n c u e n t r a u n e n la c e c o n v a lo r nil. A u n q u e
la fu n c ió n n o d e p e n d e e n a b s o lu to del tip o d e in f o r m a c ió n d e u n n o d o , P ascal exige
q u e se d e c la re el ti p o del c a m p o i n f o c u a n d o se e sc rib a la f u n c ió n l o n g i t u d .

t y p e e n l a c e = t nodo;
nodo - record
info s i n te g e r ;
siguiente : enlace
end;

function longitud ( aplista : enlace ) : i nt eg e r ;


var Ion : in te g e r ;
begin
Ion := 0;
w h i l e a p l i s t a <> nil do begin
Ion := I o n + 1;

aplista := a p l i s t a í .s i g u i e n t e
end;
longitud := Ion
end;

Fig. 6 .1 3 . P ro g ram a en Pascal p a ra e n c o n tr a r la longitud d e u n a lista.

E n u n le n g u a je c o n f u n c io n e s p o lim ó r f ic a s . c o m o M L ( M iln e r [ 1 9 8 4 ] ) . se p u e d e
e s c rib ir u n a f u n c ió n l o n g i t u d d e m o d o q u e se a p liq u e a c u a lq u ie r ti p o d e lista,
c o m o se m u e s tr a e n la fig u ra 6.14. L a p a la b ra c lav e f u n in d ic a q u e l o n g i t u d es
u n a f u n c ió n r e c u r s iv a . L a s f u n c i o n e s n u i l y t i e s t á n p r e d e f in id a s ; n u i l c o m ­
p r u e b a si u n a lista está vacía y t i d e v u e lv e el resto d e la lista d e s p u é s d e e l i m i n a r el

fun longitud(aplista) =
if n u i l (a p l i s t a ) t h e n 0
else l o n g i t u d (t i (a p l i s t a )) + 1;

F ig. 6 .1 4 . P r o g r a m a e n M L p a r a e n c o n t r a r la l o n g i t u d d e u n a lista.
378 CO M PRO BA CIO N D E TIPOS

p r im e r e le m e n to . C o n la d e fin ic ió n d e la figura 6 .1 4 . las d o s a p lic a c io n e s sigu ien tes


d e la f u n c ió n l o n g i t u d p r o d u c e n 3:

l o n g i t u d ( [ " d o m " , M l u n " , " m a r ” ]);


l o n g i t u d ( [ 10 , 9 , 8 ] ) ;

E n la p r im e ra , l o n g i t u d se a p lic a a u n a lista d e c a d e n a s : e n la se g u n d a , se a p lic a a


u n a lista d e en tero s.

V a r ia b le s d e tipo

L a s v a ria b le s q u e re p re s e n ta n e x p re s io n e s d e tip o s p e r m ite n c o n s id e r a r tip o s d e sc o ­


n o cid o s. E n el re s to d e esta secció n , se u tiliz a rá n las letras griegas a . p . . . . p a r a v a­
riab les d e tip o e n la s e x p re s io n e s d e tipos.
U n a a p lic a c ió n im p o r ta n te d e las v a ria b le s d e tip o e s la c o m p r o b a c ió n del uso
co n siste n te d e id e n tific ad o res en u n len g u aje q u e n o exija q u e los id entificad o res se
d e c la re n a n te s d e s e r utilizados. U n a v ariable rep resen ta el tip o d e u n id e n tific a d o r n o
d eclarad o . P o r e jem p lo , o b s e rv a n d o el p ro g ra m a se p u e d e sab er si el id e n tific a d o r n o
d e c la ra d o se utiliza c o m o u n e n te r o en u n a p ro p o sició n y c o m o u n a m a triz en otra.
D ic h o uso in c o n siste n te p u e d e co n sid erarse c o m o u n erro r. P o r o tr a p arte , si la varia­
ble siem p re se utiliza c o m o e n tero , e n to n c e s n o só lo se h a g a ra n tiz a d o u n uso consis­
ten te: a p a r tir del p ro ceso se ha llegado a la c o n clu sió n d e cuál d e b e s e r su tipo.
L a inferencia d e tipos es el p r o b le m a d e d e t e r m in a r el tip o d e u n a c o n s tru c c ió n
d e le n g u a je a p a r tir del m o d o en q u e se u sa. E ste t é r m i n o se a p lic a a m e n u d o al
p r o b le m a d e in fe rir el tip o d e u n a f u n c ió n a p a r ti r d e su c u e rp o .

E je m p lo 6 .8 . L a s té c n ic a s p a r a in fe re n c ia d e tip o s p u e d e n a p lic a rs e a p r o g r a m a s en
len g u ajes c o m o C y P ascal p a r a c o m p le ta r la in f o r m a c ió n s o b re los tip o s q u e falta
en el m o m e n t o d e la c o m p ila c ió n . El fra g m e n to d e c ó d ig o d e la fig u ra 6 .1 5 describ e
el p r o c e d im ie n to m l i s t a , q u e tie n e u n p a r á m e t r o p q u e e s e n sí u n p r o c e d im ie n to .
T o d o lo q u e sabe al o b se rv a r la p rim e ra lín ea del p r o c e d im ie n to m l i s t a e s q u e p es
u n p r o c e d im ie n to : e n c o n c r e to , n o se c o n o c e n el n ú m e r o ni lo s tip o s d e los a r g u ­
m e n to s q u e t o m a p . C y el m a n u a l d e referen cia d e P ascal a d m ite n d ic h a s especifi­
c a c io n e s in c o m p le ta s del tip o d e p.
El p r o c e d im ie n to m l i s t a ap lica el p a r á m e tr o p a to d o s los n o d o s d e u n a lista e n ­
la zad a. P o r e je m p lo , se p u e d e u tiliz a r p p a r a in ic ia liz a r o im p r i m i r el e n t e r o c o n te ­
n id o e n u n n o d o . A pesar d e q u e n o se especifican los tip o s d e los a r g u m e n to s d e p.
se p u e d e in fe rir del u s o d e p e n la ex p resió n p ( a p l i s t a ) q u e el tip o d e p d e b e ser:
e n l a c e —> vacio

C u a l q u ie r lla m a d a d e m l i s t a c o n u n p a r á m e t r o d e p r o c e d im ie n to q u e n o tenga
este tip o es u n erro r. Se p u e d e c o n s id e r a r u n p r o c e d im ie n to c o m o u n a f u n c ió n q u e
n o d e v u e lv e u n valor, d e m o d o q u e su ti p o r e s u lta n te es vacio. □

L as té c n ic a s p a r a la in fe re n c ia d e tip o s y p a r a la c o m p r o b a c ió n d e tip o s tien en


m u c h o e n c o m ú n . E n a m b o s c a so s, se tr a ta d e e x p re s io n e s d e tip o s q u e c o n tie n e n
v a ria b le s . U n c o m p r o b a d o r d e tip o s u tiliz a r á e n esta s e c c ió n u n r a z o n a m i e n t o si­
m ila r al del e je m p lo sig u ie n te p a r a in fe rir los tip o s re p re s e n ta d o s p o r variables.
6.6 F U N C IO N E S POLIM O RFICAS 379

ty p e e n la c e = ín o d o ;

p ro ced u re m lis ta ( a p lis ta : e n la c e ; p ro ced u re p ) ;


b e g in
w h i l e a p l i s t a <> n i l d o b e g i n
p (a p lis ta );
a p lis ta := a p l i s t a í . s i g u i e n t e
end
end;

Fig. 6 . 1 5 . P ro ced im ien to m l i s t a con el p a rá m e tro d e tip o p ro ced im ien to p.

E j e m p l o 6 . 9 . E n el sig u ie n te p s e u d o p r o g r a m a se p u e d e in fe rir u n tip o p a r a la f u n ­


c ió n p o lim ó rfic a desref. L a f u n c ió n d e s r e f tie n e el m is m o efecto q u e el o p e r a ­
d o r d e P ascal í p a r a d e s re fe re n c ia r a p u n ta d o r e s .

f u n c t i o n d e s r e f (p) ;
b e g in
r e t u r n pT
end;

C u a n d o se o b s e rv a la p r im e r a lín ea

fu n c tio n d e s re f ( p ) ;

n o se sa b e n a d a del ti p o d e p. d e m o d o q u e se r e p re s e n ta m e d ia n te la v a ria b le d e
tip o p . P o r d e fin ic ió n , el o p e r a d o r p o stfijo t t o m a u n a p u n t a d o r a un o b je to , y d e ­
v u elv e el o b je to . C o m o el o p e r a d o r T se a p lic a a p e n la e x p re sió n pí, ló g icam e n te
p d e b e s e r un a p u n t a d o r a u n o b je to d e tip o d e s c o n o c id o a. así q u e

P = p o in ter (a)

d o n d e a e s o tr a v a ria b le d e tip o . A d e m á s , la e x p re s ió n pT tie n e tip o u. d e m o d o q u e


se p u e d e e s c rib ir la e x p re sió n d e tip o

p a r a c u a lq u ie r tip o a , p o in ter ( a ) - * a (6.3)

p a r a el tip o d e la f u n c ió n d e s r e f . □

U n len g u a je c o n fu n c io n e s p o lim ó r fic a s

T o d o lo a p r e n d i d o h a s ta a h o r a d e la s f u n c io n e s p o lim ó rfic a s es q u e p u e d e n e je c u ­
tarse c o n a r g u m e n to s d e " tip o s d istin to s". S e establecen p ro p o sicio n es precisas acerca
del c o n j u n t o d e tip o s a los q u e se p u e d e a p lic a r u n a f u n c ió n p o lim ó rfic a c o n el s ím ­
b o lo V , q u e significa " p a r a c u a lq u ie r tip o " . P o r ta n to .

V a . poin teria ) - » a (6.4)

es la fo rm a d e e s c rib ir la e x p re s ió n d e ti p o (6 .3 ) p a r a el tip o d e la f u n c ió n d e s r e f
del e je m p lo 6.9. L a f u n c ió n p o lim ó rfic a l o n g i t u d d e la fig u ra 6 .1 4 t o m a u n a lista
380 C O M P R O B A C I O N D E TIPOS

d e e le m e n to s d e c u a lq u ie r tip o y d e v u e lv e u n e n te r o , d e m o d o q u e s u tip o se p u e d e
escribir:

Va. list (a) -> integer (6.5)


E n este c a s o , list es u n c o n s tr u c to r d e tip o s. S in el s ím b o lo V , só lo se p u e d e n d a r
e je m p lo s d e tip o s p o sib le s p a r a el d o m i n i o y el ra n g o d e l o n g i t u d :

list ( integer ) - + integer


list (list (char)) - » integer
L a s e x p re s io n e s d e tip o s c o m o la (6.5) s o n las p ro p o s ic io n e s m á s g e n e ra le s p a r a el
tip o d e u n a f u n c ió n p o lim ó rfica .
El s ím b o lo V es el euanlificador universal, y se d ic e q u e la v a ria b le d e tip o a la
c u a l se a p lic a e s tá acotada p o r él. S e p u e d e d a r o t r o n o m b r e a la s v a ria b le s a c o ta d a s,
a c o n d ic ió n d e q u e se hag a lo m is m o s ie m p re q u e a p a re z c a la v ariab le. P o r ta n to , la
e x p re s ió n d e tip o

V y. p o in ter (y) —> y

es e q u iv a le n te a la (6.4). D e m a n e r a in fo rm a l, u n a e x p re s ió n d e tip o q u e c o n te n g a
u n s ím b o lo V se c o n s id e r a r á u n “ tip o p o lim o r f ía ) " .
L a g r a m á tic a d e la figura 6 .1 6 g e n e ra el le n g u a je q u e se u s a rá p a r a c o m p r o b a r
las f u n c io n e s p o lim ó rfíca s.

P— D \E
D -* D; D\\á : Q
Q -» V variable d e tipo • Q \ T
T -* T '- * ' T
T x T
c o n str u c to r .u n a r io ( T )
tip o -b á s ic o
v a r ia b le - d e - t ip o
( T )
E ( E ) \ E t E lid

Fig. 6 .1 6 . G ra m á tic a para u n lenguaje co n funciones polimórfícas.

L o s p r o g r a m a s g e n e r a d o s p o r d ic h a g r a m á tic a c o n s ta n d e u n a s e c u e n c ia d e d e ­
c la ra c io n e s seg u id a d e la e x p re s ió n E q u e se va a c o m p r o b a r . P o r e je m p lo ,

desref : V a .p o in ler (a ) —> a ;


q : p o in ter (pointer (integer)); (6.6)
d e s r e f ( d e s r e f ( q ))

C o m o el n o te rm in a l T g en era d ire c ta m e n te las e x p resio n es d e tip o s, se m in im iz a la


n o ta c ió n . L o s c o n s tr u c to r e s - » y x f o r m a n tip o s d e f u n c ió n y p r o d u c to . L o s c o n s­
tr u c to re s ú n a n o s , re p re s e n ta d o s p o r c o n s t r u c t o r - u n a r i o . p e rm ite n escrib ir tip o s c o m o
pointer (integer) y list (integer). L o s p arén tesis sólo se u tiliz an p a r a a g ru p a r tipos. Las
6.6 F U N C IO N E S PO LIM O RFIC AS 381

e x p resio n es c u y o s tip o s d e b e n c o m p ro b a rs e tie n e n u n a sin ta x is m u y sencilla: p u e d e n


ser identificadores, se cu en cias d e e x p resio n es q u e f o r m a n u n a tu p ia o la a p licació n de
u n a fu n ció n a u n a rg u m e n to .
L as reglas d e c o m p r o b a c ió n d e tip o s p a r a las f u n c io n e s p o lim ó rfic a s d ifie re n d e
tres m a n e r a s d e las reglas p a r a f u n c io n e s o r d in a r ia s d e la secció n 6.2. A n te s d e in ­
t r o d u c i r la s reg la s, se ilu s tr a n e s ta s d i f e r e n c ia s e s t u d i a n d o la e x p r e s ió n d e s -
r e f ( d e s r e f ( q ) ) del p r o g r a m a (6.6). E n la fig u ra 6.17 s e m u e s tr a u n á rb o l s in tá c ­
tico p a r a d ic h a ex p re sió n . A c a d a n o d o se e n c u e n t r a n a s o c ia d a s d o s e tiq u e ta s. L a
p r im e r a in d ic a la s u b e x p re s ió n re p r e s e n ta d a p o r el n o d o , y la s e g u n d a e s u n a e x p re ­
sión d e ti p o a sig n a d a a la s u b e x p re s ió n . L o s s u b ín d ic e s e e i d is tin g u e n e n tr e los c a ­
sos e x te rio r e in te r io r d e d e s r e f , re s p e c tiv a m e n te .

ap lica : ae

d e s re f r : poinier (a,.) -> af ap lica : a,

d e s r e f , :poinier (a,) -► a, q :p o in ie r (poinier (in te g e r))

Fig. 6.17. A rbol sintáctico etiq u eta d o para d e s r e f ( d e s r e f ( q ) ).

L as d ife re n c ia s c o n re s p e c to a las reglas p a r a las f u n c io n e s o r d in a r ia s son:

1. C a so s d ife re n te s d e u n a f u n c ió n p o lim ó r f ic a e n la m is m a e x p re s ió n n o d e b e n
t e n e r n e c e s a r i a m e n t e a r g u m e n t o s d e l m i s m o ti p o . E n lá e x p r e s ió n d e s -
ref,.( d e s r e f , ( q ) ). d e s r e f , e lim in a u n nivel d e in d ire c c ió n d e a p u n t a d o r , así
q u e desref,. se a p lic a a u n a r g u m e n t o d e u n tip o d is tin to . L a im p la n ta c ió n de
esta p ro p ie d a d se basa e n la in te rp re ta c ió n d e V a c o m o “ p a ra c u a lq u ie r tip o a ” .
C a d a c a so d e d e s r e f tie n e s u p r o p ia visión d e lo q u e r e p re s e n ta la v a ria b le a c o ­
ta d a a d e (6.4). P o r ta n to , a c a d a c a so d e d e s r e f se asig n a u n a e x p re s ió n de
tip o f o r m a d a p o r la s u s titu c ió n d e a e n (6.4) p o r u n a v a ria b le n u e v a y la e lim i­
n a c ió n del c u a n tif ic a d o r V e n el p ro ceso . E n la figura 6 .1 7 las v aria b les n u e v a s
a,, y a , se u tiliz an e n las e x p re s io n e s d e tip o s a s ig n a d a s a los c a s o s e x te r io r e i n ­
te rio r d e d e s r e f . re s p e c tiv a m e n te .

2. C o m o p u e d e n a p a r e c e r v a ria b le s e n e x p re s io n e s d e tip o s, h a y q u e re c o n s id e ra r
la n o c ió n d e e q u iv a le n c ia d e tip o s. S u p ó n g a s e q u e E \ d e tip o 5 —» / s e a p lic a a
E 2 d e tip o t. E n lu g a r d e d e t e r m i n a r s im p le m e n te la e q u iv a le n c ia d e s y /, se
d e b e n “ u n if ic a r " . L a u n if ic a c ió n se d e f in e m á s a d e l a n te ; d e m a n e r a in f o r m a l,
se d e t e r m in a si 5 y / se p u e d e n c o n v e r t ir e n e s tr u c tu r a l m e n te e q u iv a le n te s sus­
titu y e n d o las v a ria b le s d e tip o s e n s y / p o r e x p re s io n e s d e tip o s. P o r e jem p lo ,
e n el n o d o in te r io r e tiq u e ta d o c o n a p lic a e n la fig u ra 6 .1 7 , la ig u a ld a d

p o in ier (a ,) = p o in te r (poinier (integer))

se c u m p le si a, es s u s titu id o p o r p o in ter (integer).


382 C O M PR O B A C IO N D E TIPO S

3. S e n e c e s ita u n m e c a n i s m o p a r a r e g is tra r el e f e c to d e la u n ific a c ió n d e d o s e x ­


p resio n es. E n g en eral, u n a v a ria b le d e ti p o p u e d e a p a r e c e r e n v a ria s e x p re sio n e s
d e tip o . Si la u n ific a c ió n d e s y ¿ d a c o m o r e s u lta d o q u e la v a ria b le a re p re s e n te
al tip o t. e n to n c e s a d e b e c o n t i n u a r r e p r e s e n ta n d o a t d u r a n t e la c o m p ro b a c ió n
d e tipos. P o r e je m p lo , e n la figura 6 .1 7 , a , e s el tip o del ra n g o d e d e s r e f , , así
q u e se p u e d e u tiliz a r p a r a el ti p o d e d e s r e f / ( q ) . L a u n ific a c ió n d e l tip o del
d o m i n i o d e d e s r e f , c o n el ti p o d e q a fe c ta p o r t a n t o a la e x p re s ió n d e tip o en
el n o d o in te r io r e tiq u e ta d o c o n ap lica. L a o t r a v a ria b le d e tip o a,, d e la figura
6 .1 7 r e p re s e n ta a integer.

S u s titu c io n e s , c a s o s y unificación

L a in f o r m a c ió n a c e r c a d e lo s tip o s r e p r e s e n ta d o s p o r v a ria b le s se f o r m a liz a d e f i­


n ie n d o u n a t r a n s f o r m a c ió n , d e v a r ia b le s d e ti p o a e x p r e s io n e s d e tip o s , lla m a d a
sustitución. L a sig u ie n te f u n c ió n r e c u r s iv a sms/(/) p re c isa la n o c i ó n d e a p l ic a r u n a
s u s titu c ió n S p a r a s u s t it u ir t o d a s las v a r ia b le s d e ti p o e n u n a e x p r e s ió n i. C o m o d e
c o s tu m b r e , se c o n s id e r a el c o n s t r u c t o r d e tip o s d e f u n c ió n c o m o el c o n s t r u c t o r “ti­
p ia r.

fu n ctio n su si ( t :expresión _ t ipo ): expresión _ / ipo ;


begin
if t es u n tip o b ásico th e n r e tu r n t
e ls e if t es u n a v a ria b le th e n r e tu r n S (/)
e ls e if / es / | —►ti th e n r e tu r n susl ( /|) -> su st ( l2)
end

P a ra sim p lific ar, se escrib e S ( t ) p a r a la e x p re s ió n d e ti p o q u e se o b tie n e c u a n d o


se a p lic a su st a t: el r e s u lta d o 5 (/) se d e n o m i n a caso d e /. Si la s u s titu c ió n 5 n o es­
p ecifica u n a e x p re s ió n p a r a la v a ria b le a . se s u p o n e q u e 5 ( a ) es a ; es d ecir. S e s la
tr a n s f o r m a c ió n id e n tid a d a p lic a d a a d ic h a s variables.

E je m p lo 6 .1 0 . E n lo su cesiv o , se e s c rib irá s < t p a r a in d ic a r q u e s es u n c a so d e /:

pointer {integer) < p o in ter (a)


pointer [real) < p o in ter {a)
integer —> integer < a —►a
p o in ter {a) < p
a < P

S in e m b a r g o , en el e je m p lo sig u ie n te , la e x p re s ió n d e ti p o d e la iz q u ie rd a n o es
u n c a so d e la d e r e c h a ( p o r la ra z ó n q u e se ind ica):

integer real L as s u s titu c io n e s n o se a p lic a n a tip o s básicos.


integer - * real a —► a S u s titu c ió n in c o n s is te n te p a r a a.
integer - » a a -> a Se d e b e n s u s titu ir to d o s los c aso s d e a . □

D o s e x p re sio n e s d e tip o /, y h se unifican si ex iste a lg u n a s u s titu c ió n S ta l q u e


S { 1 \) = S { t 2). E n la p rá c tic a , in te re s a el im ificador m á s genera /, q u e es la s u s titu ­
c ió n q u e m e n o s lim ita c io n e s exige a la s v a r ia b le s d e n t r o d e las e x p r e s io n e s . M ás
6.6 F U N C IO N E S PO l.IM O R F IC A S 383

e x a c ta m e n te , el u n if ic a d o r m á s g e n e ra l d e las e x p re s io n e s /, y l2 e s u n a s u s titu c ió n
S c o n las sig u ie n te s p ro p ied a d es:

1. S ( t x) = S ( t 2) y

2. p a r a c u a lq u ie r o t r a s u s titu c ió n S ' tal q u e S * (t\) - S ' (t2). la s u s titu c ió n S ' e s u n


c a so d e S (es d ecir, p a r a c u a lq u ie r t. S ’ (t) es u n c a s o d e S ( l )).

E n lo sucesivo, “ u n ific a ” h a r á referen cia al u n if ic a d o r m á s general.

C o m p ro b a c ió n d e fu n cio n es p o lim ó rfíca s

L as reglas p a r a c o m p r o b a r e x p re sio n e s g e n e ra d a s p o r la g r a m á tic a 'd e la figura 6 .1 6


se e s c rib irá n m e d ia n te las sig u ie n te s o p e r a c io n e s en u n a r e p re s e n ta c ió n c o n gratos
d e los tipos.

1. nuevas ( i) s u stitu y e las v aria b les a c o ta d a s e n la e x p re s ió n d e tip o t p o r v aria b les


n u e v a s y d e v u e lv e u n a p u n t a d o r a u n n o d o q u e r e p re s e n ta la e x p re s ió n d e tip o
o b te n id a . E n el p r o c e s o se e lim in a n to d o s los s ím b o lo s V en /.

2. unifica ( m . n) u n ific a las e x p re s io n e s d e tip o s re p r e s e n ta d a s p o r los n o d o s a p u n ­


ta d o s p o r m y n. C o m o efecto s e c u n d a r io c o n s e rv a la s u s titu c ió n q u e c o n v ie rte
a las e x p re sio n e s e n e q u iv a le n te s. Si falla el p ro c e s o d e u n ific a c ió n d e las e x p re ­
siones, falla t o d o el p ro c e s o d e c o m p r o b a c ió n d e tip o s 4.

L as h o ja s in d iv id u a le s y los n o d o s in te rio re s e n el g rafo d e tip o s se c o n s tru y e n


u tiliz a n d o las o p e r a c io n e s h a zh o ja y h a zn o d o sim ila re s a las d e la se c c ió n 5.2. Es
n e c e sa rio q u e h a y a u n a h o ja ú n ic a p a r a c a d a v a ria b le d e tip o , p e r o n o es n e c e sa rio
q u e o tr a s e x p re s io n e s e s tr u c tu r a l m e n te e q u iv a le n te s te n g a n n o d o s ún icos.
L a o p e ra c ió n unifica se b a sa en la sig u ie n te fo r m u la c ió n d e u n ific a c ió n y su sti­
tu c io n e s . f u n d a d a e n la te o ría d e los grafos. S u p ó n g a s e q u e lo s n o d o s m y n r e p re ­
s e n ta n a la s e x p re s io n e s e y f re s p e c tiv a m e n te . Se d ic e q u e los n o d o s n i y n son equi­
valentes bajo la s u s titu c ió n S si 5 ( e ) = S ( f ) . P u e d e r e f o r m u la r s e el p r o b le m a d e
e n c o n t r a r el u n ific a d o r m á s g e n e ra l S c o m o el p r o b le m a d e a g ru p a r, e n c o n ju n to s ,
los n o d o s q u e d e b e n s e r e q u iv a le n te s b a jo S . P a r a q u e las e x p re s io n e s se a n e q u iv a ­
lentes, s u s raíces d e b e n s e r e q u iv a le n te s. A sim is m o , d o s n o d o s m y n son e q u iv a le n ­
te s si, y s ó lo s i. r e p r e s e n ta n al m i s m o o p e r a d o r y s u s h ijo s c o r r e s p o n d i e n t e s s o n
e q u iv a le n te s.
E n la sig u ie n te secció n se in tr o d u c ir á u n a lg o r itm o p a r a u n if ic a r u n p a r d e ex­
p resio n es. El a lg o r itm o c o n s e rv a los c o n j u n t o s d e n o d o s e q u iv a le n te s b a jo la s s u s ti­
tu c io n e s realizadas.
E n la fig u ra 6 .1 8 se m u e s tr a n la s reglas p a r a la c o m p r o b a c ió n d e tip o s p a r a ex­
p resio n es. N o se m u e s tr a c ó m o se p ro c e s a n las d e c la ra c io n e s. C o n f o r m e se e x a m i­
n a n la s e x p r e s i o n e s d e t i p o s g e n e r a d a s p o r lo s n o t e r m i n a l e s T y Q , h a zh o ja y
haznodo a ñ a d e n n o d o s al g rafo d e tip o s, s ig u ie n d o la c o n s tr u c c ió n d e G D A d e la

4 La razón para interrumpir el proceso de comprobación de tipos es que puede que se registren los
efectos secundarios de algunas unificaciones antes de que se detecte el fallo. Puede implantarse la
recuperación de errores si se retrasan los efectos secundarios de la operación unifica hasta que las
expresiones se hayan unificado con éxito.
384 C O M P R O B aXCION D E TIPOS

se c c ió n 5.2. C u a n d o se d e c la ra u n id e n tific a d o r, el tip o d e la d e c la ra c ió n se g u a rd a


e n la ta b la d e s ím b o lo s e n la f o r m a d e u n a p u n t a d o r a l n o d o q u e re p r e s e n ta a l tip o .
E n la fig u ra 6 .1 8 se h a c e re fe re n c ia a este a p u n t a d o r c o m o el a t r i b u t o s in te tiz a d o
id .tipo. C o m o se h a m e n c i o n a d o a n t e r i o r m e n t e , la o p e r a c i ó n n u eva s e l i m i n a los
s ím b o lo s V al s u s titu ir las v a ria b le s a c o ta d a s p o r v a ria b le s n u e v a s. L a a c c ió n a s o ­
c iad a c o n la p ro d u c c ió n E -> £ , , E 2 asigna E .tip o al p r o d u c to d e los tip o s d e E } y E 2.

E Ei ( E2 ) { p : = hazhoja ( vartiponueva );
unifica {Ei .tipo, haz nodo E 2.tipo, /?));
E .tip o : = p }
£ - * £ , , E2 ( E.tipo : = haznodo (' x E x.tipo , E2.tipo ) }

E - » id { E.tipo : = nuevas ( id .tip o ) }

Fig. 6.18. E sq u em a d e trad ucció n para la co m p ro b a c ió n d e funciones polimórficas.

L a regla d e c o m p r o b a c ió n d e tip o s p a r a la a p lic a c ió n d e f u n c ió n E - * E x ( E 2)


e s n ec e sa ria a l c o n s id e r a r el c a so d o n d e t a n t o E \.tip o c o m o E 2.tipo s o n v aria b les d e
tip o , p o r e je m p lo , E \.tip o = a y E 2.tip o = p . A q u í, E i.tip o ócbe ser u n a f u n c ió n tal
q u e p a r a u n ti p o d e s c o n o c id o y, se te n g a a = P -*• y. E n la fig u ra 6 .1 8 . se c r e a u n a
v a ria b le d e tip o n u e v a c o r r e s p o n d ie n te a y y E x.lip o se u n ific a c o n E 2.tipo —* y. C a ­
d a lla m a d a a vartiponueva d e v u e lv e u n a v a ria b le d e tip o n u e v a , h a zh o ja c o n s tr u y e
u n a h o ja p a r a ella, y h a zn o d o c o n s tr u y e u n n o d o q u e r e p re s e n ta a la f u n c ió n q u e se
v a a u n if ic a r c o n E \.tip o . C u a n d o la u n ific a c ió n h a y a s id o u n é x ito , la n u e v a hoja
r e p re s e n ta el tip o d e l re su lta d o .
L as reglas d e la figura 6 .1 8 se ilu s tra n m e d ia n te el a n á lis is d e ta lla d o d e u n s e n ­
cillo e je m p lo . Se r e s u m e el tr a b a jo del a lg o ritm o e s c rib ie n d o la s e x p re s io n e s d e tip o
a s ig n a d a s a c a d a s u b e x p re s ió n , c o m o se m u e s tr a e n la fig u ra 6 .1 9 . A c a d a a p lic a c ió n
d e f u n c ió n , la o p e r a c ió n unifica p u e d e te n e r el e fe c to s e c u n d a r io d e reg istra r u n a
e x p re sió n d e tip o p a r a a lg u n a d e las v a ria b le s d e tip o . D ic h o s e fe c to s s e c u n d a rio s
s o n p ro p u e s to s e n la c o l u m n a c o r r e s p o n d ie n te a u n a s u s titu c ió n e n la fig u ra 6.19.

Eje m p lo 6.11. L a c o m p r o b a c ió n d e tip o s p a r a la e x p re s ió n d e s r e f . - í d e s r e f ^ q ) )


e n el p r o g r a m a (6.6) a v a n z a d e m a n e r a a s c e n d e n te d e s d e las h o ja s. U n a v ez m á s , los

Ex presió n : T ipo Su stitu ció n

q : pointer (pointer {integer))


d e sre f, : pointer (a , ) -> a,
d e sre f,(q ) : pointer (integer) a, = pointer (integer)
d e s r e f r : pointer ( a (.) - » a r
d e s re f r(d e sre f,(q ) ) : integer a,. = integer

F ig . 6 .1 9 R e su m e n d e la d e t e r m i n a c i ó n a s c e n d e n t e d e t ip o s .
6 .6 F U N C IO N E S PO LIM O R FIC A S 385

s u b ín d ic e s e e i d is tin g u e n e n t r e c aso s d e desref. C u a n d o se c o n s id e r a la s u b e x p re ­


sió n d e s r e n u era s c o n s tr u y e lo s sig u ie n te s n o d o s u tiliz a n d o u n a n u e v a v ariable
d e tip o a,..

-> :3

p o in te r : 2
\
ar : I

El n ú m e r o e n u n n o d o in d ic a la clase d e e q u iv a le n c ia a la q u e p e rte n e c e el n o d o . A
c o n t in u a c i ó n se m u e s tr a la p a rte d e l g ra fo d e tip o s p a r a los tr e s id e n tific a d o re s. L as
lin e a s p u n te a d a s in d ic a n q u e lo s n o d o s n u m e r a d o s c o n 3, 6 y 9 s o n p a r a d e s r e f , . ,
d e s r e r , y q , re s p e c tiv a m e n te .

d e s re fr

p o in te r : 9
I
p o in ie r : 8
I
a ,: 4 integer: 7

L a a p lic a c ió n d e fu n c ió n desref,(q) se c o m p r u e b a c o n s tr u y e n d o u n n o d o n p a ra
u n a fu n c ió n q u e va del ti p o d e q a u n a n u e v a v a ria b le d e tip o p. E sta fu n c ió n se
u n ific a c o n é x ito c o n el tip o d e d e s r e f , re p r e s e n ta d o p o r el n o d o m d e m á s a b a jo .
A n te s d e q u e se u n if iq u e n los n o d o s rn y n, c a d a n o d o tie n e u n n ú m e r o d is tin to .
D e s p u é s d e la u n if i c a c ió n , los n o d o s e q u i v a l e n t e s s o n lo s n o d o s d e a b a j o c o n el
m i s m o n ú m e r o ; lo s n ú m e r o s m o d ific a d o s e s tá n su b ra y a d o s :

n -» : 6

:3 m —»: 6 p o in te r : 5 p :8

p o in ter : 2 ) p o in te r : 5 ) p o in ier : 8
\ / \ / I ’

ct(. : I a ,: 8 integer : 7

O b sérv ese q u e t a n t o el n o d o p a r a a, c o m o p a r a p o in ter (integer) e s tá n n u m e r a d o s


con 8. es decir, que a, se unifica con esta expresión de tipo, c o m o se muestra en la
fig u ra 6 .1 9 . P o r t a n t o , a,, se u n ific a c o n integer. □

El e je m p lo sig u ie n te re la c io n a la in fe re n c ia d e tip o s d e las f u n c io n e s p o lim ó rfi-


c a s e n M L c o n las reglas p a r a la c o m p r o b a c ió n d e tip o s d e la fig u ra 6 .1 8 . L a sin ta x is
d e las d e fin ic io n e s d e f u n c io n e s e n M L v ie n e d a d a p o r

fun ido ( M i , . . . ¡d* ) = E ;

d o n d e id0 r e p re s e n ta el n o m b r e d e la f u n c ió n e id ,. . . . , id/; re p re s e n ta n sus p a r á ­


m e tro s . P a r a sim p lific ar, s e s u p o n e q u e la s in ta x is d e la e x p re sió n E e s c o m o e n la
figura 6 .1 6 , y q u e lo s ú n ic o s id e n tific a d o re s e n E s o n el n o m b r e d e la f u n c ió n , sus
p a r á m e tr o s y las f u n c io n e s p red efin id as.
386 C O M P R O B A C IO N DE TIPO S

El e n f o q u e es u n a fo rm a liz a c ió n del e je m p lo 6 .9 . d o n d e se in fería u n tip o p o li­


m o r f í a ) p a r a d e s r e f . L as v a ria b le s d e ti p o n u e v a s se c o n s tr u y e n p a r a el n o m b r e d e
la f u n c ió n y sus p a rá m e tro s . L a s f u n c io n e s p re d e fin id a s tie n e n g e n e r a lm e n te tip o s
p o lim ó rfic o s; to d a s las v a ria b le s d e tip o s q u e a p a r e z c a n e n d ic h o s tip o s están a c o ­
ta d a s p o r cu an tiP icad o res V. D e s p u é s se c o m p r u e b a q u e lo s tip o s d e las e x p resio n es
ido Cid i id*) y E c o n c u e r d e n . Si c o n c u e r d a n , se h a b r á in fe rid o u n tip o p a r a el
n o m b r e d e la f u n c ió n . P o r ú ltim o , to d a s las v aria b les e n el ti p o in fe rid o e s tá n a c o ­
ta d a s p o r c u a n tific a d o re s V p a r a d a r el tip o p o lim ó r f ic o d e la fu n c ió n .

E je m p lo 6 .1 2 . R e c u é rd e se la f u n c ió n e n M L d e la figura 6 .1 4 p a r a d e t e r m i n a r la
lo n g itu d d e u n a lista

fu n l o n g i t u d ( a p l i s t a ) =
i f n u i l ( a p l i s t a ) th e n 0
e ls e l o n g i t u d ( t l ( a p l i s t a ) ) + 1;

Se in tr o d u c e n las v aria b les d e tip o (i y y p a r a los tip o s d e l o n g i t u d y a p l i s t a ,


re s p e c tiv a m e n te . S e o b s e rv a q u e el tip o d e l o n g i t u d ( a p l i s t a ) c o in c id e c o n el
d e la e x p re sió n q u e f o r m a al c u e r p o d e la f u n c ió n y q u e l o n g i t u d d e b e te n e r el
tip o

p a r a c u a lq u ie r tip o a . lisi( a ) - > integer

así q u e el tip o d e l o n g i t u d es

V a . Iist{a) —►integer

C o n m a y o r d e ta lle , se re a liz a el p r o g r a m a q u e se m u e s tr a e n la fig u ra 6 .2 0 , al


q u e se p u e d e n a p lic a r la s reglas p a r a la c o m p r o b a c ió n d e tip o s d e la figura 6 .1 8 . Las
d e c la ra c io n e s e n el p r o g r a m a a s o c ia n las v aria b les d e tip o n u e v a s P y y c o n l o n g i -
t u d y a p l i s t a , y h a c e n e x p líc ito s los tip o s d e la s o p e r a c io n e s p r e d e f in id a s . Los
c o n d ic io n a le s se e s c rib e n al e s tilo d e la fig u ra 6 .1 6 a p lic a n d o el o p e r a d o r p o lim ó r-

lo n g itu d .. P;
a p lis ta : y:
if : V a. boolean x a x a —* a;
n u il : V a. list (a) -> boolean;
ti : V a. list (a ) -* list (a);
0 : integer:
1 : inieger:
+ : integer x integer —> integer:
m a tc h : V a. a x a a;

m a tc h (
lo n g itu d (a p lista )
if( n u i l (a p l i s t a ) , 0, l o n g i t u d (t i (a p l i s t a )) + 1 )
)

F ig . 6 . 2 0 . D e c la r a c io n e s s e g u id a s d e la e x p r e s ió n p o r c o m p r o b a r .
6 .6 F U N C IO N E S PO LIM O R FIC A S 387

— . ■ as
Li nea E xpresión : T ipo Si ISTITUCIÓN

(1) aplista : y
(2) longitud : P
(3) longitud(aplista) : 6 P = Y- > 6
(4) aplista : y
(5) nuil : list ( a n) - * boolean
(6) n u i l ( a p l i s t a ) : boolean y = list (ci„)
(7) 0 s integer
(8) aplista : list (a J
(9) ti : list ( a . ) -> list ( a j
(10) :
t i (aplista) list( O,) a, = ar
(II) longitud : list ( a n) -* 5
(12) longitud(ti(aplista)) : 5
(13) 1 : integer
(14) + : integer x integer -> integer
(15) lo n g itu d (t i ( a p l i s t a ) )+l : integer 5 = integer
(16) if : boolean x a , x a, - * a k
(17) if( . . . ) : integer at = integer
(18) m a t c h : 0* x o , - * ct,
(19) m a t c h ( . . . ) : integer <L = integer

Fig. 6 . 2 1. Inferencia del tip o list (a.) -* integer p a ra l o n g i t u d .

Fico i f a tr e s o p e r a n d o s . q u e re p re s e n ta n las e x p re s io n e s q u e van a s e r e x a m in a d a s ,


la p a r te d e th e n y la p a r t e d e e ls e : la d e c la r a c ió n in d ic a q u e la p a r te d e th e n y la
d e e lse p u e d e n s e r d e c u a l q u i e r ti p o q u e c o n c u e r d e . q u e se rá , a s im is m o , el ti p o del
r e s u lta d o .
Es e v id e n te q u e l o n g i t u d ( a p l i s t a ) d e b e te n e r el m is m o tip o q u e el c u e r p o
d e la fu n c ió n : esta c o m p r o b a c ió n se co d ific a u s a n d o el o p e r a d o r m a t c h ( c o m p r o b a r
la c o n c o r d a n c ia ) . El u s o d e m a t c h p e r m ite té c n ic a m e n te q u e to d a s las c o m p r o b a ­
c io n e s se re a lic e n c o n u n p r o g r a m a al estilo d e la fig u ra 6.16.
E n la figura 6.21 se r e s u m e el r e s u lta d o d e a p lic a r las reglas p a ra la c o m p r o b a ­
c ió n d e tip o s d e la fig u ra 6 .1 8 al p r o g r a m a d e la figura 6 .2 0 . L as v aria b les n u ev as
in tr o d u c id a s p o r la o p e r a c ió n nuevas a p lic a d a s a los tip o s p o lim ó rfic o s d e las o p e ­
ra c io n e s p re d e fin id a s se d is tin g u e n m e d i a n t e s u b ín d ic e s e n a . E n la lín ea (3 ) se o b ­
serv a q u e l o n g i t u d d e b e s e r u n a f u n c ió n d e y a alg ú n tip o d e s c o n o c id o 6. M ás
a d e la n te , c u a n d o se c o m p r u e b a la s u b e x p re s ió n n u i l ( a p l i s t a ) , se o b s e rv a e n la
lín ea (6) q u e y se u n ific a c o n list ( a n). d o n d e a n es u n ti p o d e s c o n o c id o . L leg ad o s a
este p u n to , se sa b e q u e el ti p o d e l o n g i t u d d e b e ser

p a r a c u a lq u ie r tip o a n. Iist( a n) - > 5

E n o c a sio n e s, c u a n d o se c o m p r u e b e la s u m a e n la lín ea (1 5 ) — se h a to m a d o la li­


b e rta d d e e scrib ir + e n tr e s u s a r g u m e n to s p a r a u n a m a y o r c la r id a d — 6 se un ifica
c o n integer.
388 C O M P R O B A C IO N D E TIPO S

C u a n d o se te r m in a la c o m p r o b a c ió n , la v a ria b le d e tip o a „ p e r m a n e c e e n el tip o


d e l o n g i t u d . C o m o n o se h iz o n in g u n a s u p o sic ió n a c e rc a d e a n, se p u e d e s u stitu ir
p o r c u a l q u ie r ti p o c u a n d o se u tilice la f u n c ió n . P o r ta n to , se le c o n s id e r a u n a v a ria ­
ble a c o ta d a y se escrib e

Vcin. list( a n) - * integer

p a r a el tip o d e l o n g i t u d . □

6 .7 U N A L G O R IT M O P A R A LA U N IF IC A C IO N

D e m a n e r a in f o r m a l, la u n ific a c ió n e s el p r o b le m a d e d e t e r m in a r si d o s e x p re sio n e s
e y / p u e d e n c o n v e r tir s e e n id é n tic a s s u s titu y e n d o e x p re s io n e s p o r las v a ria b le s q u e
a p a r e z c a n en e y / C o m p r o b a r la ig u a ld a d d e e x p re s io n e s es u n c a s o esp ecial d e u n i­
fica ció n ; si e y / t i e n e n c o n s ta n te s p e r o n o v a ria b le s, e n to n c e s e y / s e u n ific a n si. y
sólo si. s o n id é n tic a s. El a lg o ritm o d e u n ific a c ió n d e esta secció n p u e d e a p lic a rs e a
g rafo s c o n ciclos, a s i q u e se p u e d e u tiliz a r p a r a c o m p r o b a r si h a y e q u iv a le n c ia es­
tr u c tu r a l e n tip o s c irc u la re s 5.
La u n ific a c ió n fue d e f in id a e n la ú lt im a se c c ió n e n t é r m i n o s d e u n a fu n c ió n S,
lla m a d a s u s titu c ió n , q u e tr a n s f o r m a v aria b les e n ex p resio n es. S e escrib e S(e) p a r a la
e x p re s ió n q u e se o b tie n e al s u s titu ir c a d a v a ria b le a e n e p o r S (a ). S e s u n u n if ic a d o r
p a r a e y / s i S{c) - S ( f) . El a lg o r itm o d e esta se c c ió n d e t e r m i n a u n a s u s titu c ió n q u e
e s el u n if ic a d o r m á s g en eral d e u n p a r d e ex p resio n es.

E je m p lo 6 .1 3 . P a r a te n e r u n a p e rs p e c tiv a d e los u n ific a d o re s m á s g en erales, co n si­


d é re n s e las d o s e x p re sio n e s d e tip o s

( ( a , - ♦ a 2) x list ( a 3)) - * list(a2)


( ( a 3 - » cu) x list ( a 3)) cu

D o s u n ific a d o re s . S y .S'\ p a r a e s ta s e x p r e s io n e s son:

A s ;,, y u)

<l| «3 a,
0-2 a: ai
«3 ®3 a,
cu a2 a,
a5 lis t ( a 2) list (a,)

E sta s s u stitu c io n e s tr a n s f o r m a n e y / c o m o sigue:

S (e) = S (/*) = ((03 - > a 2) x list ( a 3)) list ( a 2)


y {e) = S ' ( f ) = ((a , - > a , ) x list ( a , ) ) - > list ( a , )

- E n a lg u n a s a p lic a c io n e s, e s u n error u n ific a r u n a v a ria b le c o n u n a e x p r e sió n q u e c o n te n g a d ich a


v a ria b le. El a lg o r itm o 6.1 p e r m ite d ic h a s s u slitu c io n e s .
6.7 U N A L G O R IT M O P A R A L A U N IF IC A C IO N 389

L a s u s titu c ió n S e s el u n if ic a d o r m á s g e n e ra l d e e y / O b sérv ese q u e S'(e) es u n c a so


d e S( e) p o r q u e se p u e d e s u s titu ir a , p o r a m b a s v aria b les e n S (e). S in e m b a r g o , a la
in v e rs a n o se c u m p le , p o r q u e la m is m a e x p re s ió n se d e b e s u s titu ir p o r c a d a c a s o d e
cii e n £'(**). asi q u e n o se p u e d e o b te n e r S{e) s u s titu y e n d o p o r la v a ria b le a i en
S ’{e). □

C u a n d o las e x p re sio n e s q u e v a n a u n ific a rs e e s tá n re p r e s e n ta d a s p o r árb o le s, el


n ú m e r o d e n o d o s e n el á rb o l p a r a la e x p re s ió n s u s titu id a S ( ¿ ) p u e d e s e r e x p o n e n c ia l
e n f u n c ió n del n ú m e r o d e n o d o s d e los á rb o le s p a r a e y f a u n q u e S sea el u n ific a d o r
m á s g en eral. S in e m b a r g o , esta e x p lo sió n d e t a m a ñ o n o tie n e p o r q u é o c u r r ir si se
u tiliz a n g rafo s e n lu g a r d e á rb o le s p a r a r e p r e s e n ta r e x p re s io n e s y s u stitu c io n e s .
S e im p la n ta r á la fo r m u la c ió n d e la te o ría d e g rafo s d e la u n ific a c ió n , q u e t a m ­
bién se e s tu d ia e n la ú ltim a secció n . El p r o b le m a es el d e a g r u p a r e n c o n j u n t o s n o ­
d o s q u e d e b e n s e r e q u iv a le n te s b a jo el u n if ic a d o r m á s g en eral d e d o s e x p re s io n e s .
L a s d o s e x p re sio n e s del e je m p lo 6 .1 3 se re p re s e n ta n c o n los d o s n o d o s e tiq u e ta d o s
con I d e la fig u ra 6 .2 2 . L os e n te r o s q u e a p a r e c e n e n los n o d o s in d ic a n las clases

Fig. 6 .2 2 . Clases d e equivalencia después d e la unificación.

d e e q u iv a le n c ia a las q u e p e r te n e c e n lo s n o d o s d e s p u é s d e q u e se u n if iq u e n los n o ­
d o s n u m e r a d o s c o n 1. E sta s clases d e e q u iv a le n c ia tie n e n la p ro p ie d a d d e q u e to d o s
los n o d o s in te r io r e s d e la c la s e s o n p a r a el m i s m o o p e r a d o r . L o s h ijo s c o r r e s p o n ­
d ie n te s d e los n o d o s in te rio re s e n u n a clase d e e q u iv a le n c ia ta m b ié n s o n e q u iv a le n ­
tes.

A lg o r itm o 6 . 1 . U n ific a c ió n d e u n p a r d e n o d o s e n u n g rafo.

E ntrada. U n grafo y un par de n odos m y n q u e deben unificarse.


Salida. El v a lo r b o o le a n o tru e si las e x p re s io n e s re p re s e n ta d a s p o r los n o d o s m y n
se u n ifican ; d e lo c o n tr a r io , f a ls e . L a v ersió n d e la o p e r a c ió n unifica n e c e s a ria p a ra
las reglas d e c o m p r o b a c ió n d e tip o s d e la fig u ra 6 .1 8 se o b tie n e si la f u n c ió n d e este
a lg o ritm o se m o d ific a p a r a q u e falle e n lu g a r d e q u e d e v u e lv a fa ls e .

M étodo. U n n o d o se r e p re s e n ta m e d ia n te u n re g istro c o m o e n la figura 6 .2 3 co n


c a m p o s p a r a u n o p e r a d o r b in a r io y a p u n t a d o r e s a los h ijo s iz q u ie r d o y d e re c h o .
L o s c o n j u n t o s d e n o d o s e q u i v a l e n t e s se m a n t i e n e n u t i l i z a n d o el c a m p o con­
ju n to . S e elige u n n o d o e n c a d a clase d e e q u iv a le n c ia c o m o re p r e s e n ta n te ú n ic o d e
la clase, h a c ie n d o q u e su c a m p o conjunto c o n te n g a u n a p u n t a d o r a ni! (v acio ). Los
c a m p o s conjunto d e los n o d o s r e s ta n te s d e la clase d e e q u iv a le n c ia a p u n t a r á n (tal
390 C O M P R O B A C IO N D E TIPOS

constructor izquierdo t derecho conjunto fT


£
Fig. 6.23. E structura d e d ato s para u n nodo.

v ez in d ir e c ta m e n te a trav és d e o tr o s n o d o s d e l c o n j u n t o ) al re p r e s e n ta n te . In ic ia l­
m e n te , c a d a n o d o n está e n u n a clase d e e q u iv a le n c ia solo, y n es s u p r o p io n o d o
re p re s e n ta n te .

function unifica (rn. n, nodo ) : hoolean ;


begin
s : = encuentra (w );
i e n c u e n t r a {n)\
if 5= / then
return truc
e ls e i f s y / son n o dos q u e represen tan al m ism o tip o básico then
return true
e ls e i f s es un n o d o interior co n hijos s, y 52 and
t es un n o do in terio r c o n hijos t, y t2 th e n begin
unión (5. /);
return unifica (su t\) and unifica (s2, 1 2)
end
e ls e i f 5 o / representa a u n a variable then begin
unión (s. r);
return true
end
e ls e return false
/* los no dos interiores con o perad o res diferentes n o se p u e d e n unificar */
end

Fig. 6 .2 4 . A lgoritm o d e unificación.

El a lg o ritm o d e u n ific a c ió n d e la fig u ra 6 .2 4 u tiliz a las sig u ie n tes d o s o p e ra c io ­


nes so b re los n o d o s : ,

1. encuentra ( n ) d e v u e lv e el n o d o r e p r e s e n ta n te d e la clase d e e q u iv a le n c ia q u e en
ese m o m e n t o c o n te n g a el n o d o n.

2. unión{m , n) f u s io n a las clases d e e q u iv a le n c ia q u e c o n te n g a n los n o d o s m y n.


Si u n o d e los r e p re s e n ta n te s d e las clases d e e q u iv a le n c ia d e m y n es u n n o d o
n o v a ria b le , unión c o n v ie r te a l n o d o n o v a ria b le e n r e p r e s e n ta n te d e la clase d e
e q u iv a le n c ia fu s io n a d a ; d e lo c o n tr a r io , u n ió n c o n v ie r te a u n o o al o t r o d e los
r e p re s e n ta n te s o rig in a le s e n el n u e v o re p r e s e n ta n te . E sta a s im e tr ía e n la esp eci­
ficació n d e unión es i m p o r ta n te p o r q u e u n a v a ria b le n o se p u e d e u tiliz a r c o m o
6.7 U N A L G O R IT M O P A R A L A U N IF IC A C IO N 391

re p r e s e n ta n te d e u n a clase d e e q u iv a le n c ia p a r a u n a e x p re s ió n q u e c o n te n g a u n
c o n s tr u c to r d e tip o s o u n tip o b ásico . D e lo c o n tr a r io , d o s e x p re s io n e s n o e q u i ­
v a le n te s se p o d r ía n u n if ic a r p o r m e d io d e esa variable.

L a o p e ra c ió n d e unión e n c o n ju n to s se im p la n ta m o d ific a n d o s im p le m e n te el c a m p o
conjunto d e l r e p r e s e n ta n te d e u n a clase d e e q u iv a le n c ia p a r a q u e a p u n t e a l re p re s e n ­
t a n t e d e la o tra . P a r a e n c o n t r a r la clase d e e q u iv a le n c ia a la q u e p e rte n e c e u n n o d o ,
se sig u en los a p u n t a d o r e s co n junto d e lo s n o d o s h a s ta a lc a n z a r el r e p r e s e n ta n te (el
n o d o c o n u n a p u n t a d o r a nil e n el c a m p o d e c o n ju n to ) .
O b s é r v e s e q u e el a l g o r i t m o d e la f ig u r a 6 .2 4 u tiliz a s = en cu en tra ( m ) y
l = encuentra (n) e n lu g a r d e m y n %re s p e c tiv a m e n te . L o s n o d o s re p r e s e n ta n te s s y
t s o n ig u ales si m y n e s tá n e n la m is m a clase d e e q u iv a le n c ia . S i s y / re p re s e n ta n el
m is m o tip o b ásico , la lla m a d a a unifica (m . n) d e v u e lv e tru e . Si t a n t o s c o m o t son
n o d o s in te rio re s p a r a u n c o n s tr u c to r d e tip o s b in a rio , se p r u e b a a fu s io n a r s u s clases
d e e q u iv a le n c ia y d e s p u é s se c o m p r u e b a r e c u rs iv a m e n te q u e s u s h ijo s resp ectivo s
se a n e q u iv a le n te s. A l h a c e r p r im e r o la fu s ió n , se re d u c e el n ú m e r o d e clases d e e q u i­
v a le n c ia a n te s d e c o m p r o b a r r e c u r s iv a m e n te los hijos, así q u e el a lg o r itm o te rm in a .
Se im p la n ta la s u s titu c ió n d e u n a e x p re s ió n p o r u n a v a ria b le a ñ a d i e n d o la h o ja
p a r a la v a ria b le a la clase d e e q u iv a le n c ia q u e c o n te n g a el n o d o p a r a la ex p re sió n . Si
m o n e s u n a h o ja p a r a u n a v a ria b le q u e f o r m a p a r te d e u n a clase d e e q u iv a le n c ia
q u e c o n tie n e u n n o d o q u e re p r e s e n ta u n a e x p re s ió n c o n u n c o n s tr u c t o r d e tip o s o
u n tip o b ásico , e n to n c e s encuentra d e v o lv e r á a u n r e p r e s e n ta n te q u e refleje d ic h o
c o n s tr u c to r d e tip o s o tip o b ásico , d e m o d o q u e u n a v a ria b le n o se p u e d a u n ific a r
c o n d o s e x p re s io n e s d is tin ta s . □

E je m p lo 6 .1 4 . Y a se h a m o s tr a d o el g rafo inicial p a r a la s d o s e x p r e s io n e s del e je m ­


p lo 6 .1 3 e n la fig u ra 6 .2 5 c o n c a d a n o d o n u m e r a d o y e n su p r o p ia clase d e e q u iv a ­
le n cia. P a r a c a lc u la r unifica ( 1 , 9 ) , el a lg o r itm o o b s e rv a q u e t a n t o el n o d o 1 c o m o el
9 re p re s e n ta n el m is m o o p e r a d o r , a s í q u e f u s io n a 1 y 9 e n la m is m a clase d e e q u i­
valencia y lla m a unifica (2, 10) y unifica (8, 14). El c á lc u lo d e unifica (1, 9) e s el grafo
m o s tr a d o e n la fig u ra 6 .2 2 . □

x : 10
X \ cts : 14

Fig. 6 .2 5 . G D A inicial c o n c a d a n o d o en su p ro p ia clase d e equivalencia.

Si el a lg o ritm o 6.1 d e v u e lv e tr u e . se p u e d e c o n s tr u ir u n a s u s titu c ió n 5 q u e a ctú e


d e u n ific a d o r, d e la sig u ie n te m a n e r a . C a d a n o d o n del g ra fo o b te n id o re p re s e n ta rá
a la e x p re s ió n a s o c ia d a c o n encuentra (/?). P o r ta n to , p a r a c a d a v a ria b le a , encuen­
tra ( a ) e n tre g a el n o d o n q u e e s el r e p r e s e n ta n te d e la clase d e e q u iv a le n c ia d e a . La
392 C O M P R O B A C IO N D E TIPOS

e x p re s ió n re p re s e n ta d a p o r n e s S (a ). P o r e je m p lo , e n la fig u ra 6 .2 2 . se v e q u e el
re p r e s e n ta n te p a r a a 3 es el n o d o 4. q u e r e p re s e n ta a a , . El re p r e s e n ta n te p a r a a 5 es
el n o d o 8 q u e r e p re s e n ta a list (ct2).

E je m p lo 6 .1 5 . S e p u e d e u tiliz a r el a lg o r itm o 6.1 p a r a c o m p r o b a r la e q u iv a le n c ia es­


tr u c tu r a l d e las d o s e x p re s io n e s d e tip o s

e : real e
f : real - » (real - > f )

E n la fig u ra 6 .2 6 se m u e s tr a n los g rafo s d e tip o s p a r a e s ta s ex p resio n es. P o r c o n v e ­


n ie n c ia , c a d a n o d o h a sid o n u m e ra d o .

re a l : 2

F ig . 6 .2 6 . G ra fo para d o s tip o s circulares.

Se lla m a a unifica ( 1 , 3 ) p a r a q u e c o m p r u e b e si ex iste e q u iv a le n c ia e s tr u c tu r a l en


estas d o s ex p resio n es. El a lg o r itm o f u s io n a los n o d o s 1 y 3 e n u n a clase d e e q u iv a ­
le n cia, y r e c u rs iv a m e n te lla m a a unifica (2, 4 ) y unifica (1, 5). C o m o 2 y 4 re p re se n ­
ta n el m is m o tip o b ásico , la lla m a d a a unifica (2, 4 ) d e v u e lv e tru e . L a lla m a d a a uni­
fic a (1 , 5) a ñ a d e 5 a la clase d e e q u iv a le n c ia d e 1 y 3, y r e c u r s iv a m e n te lla m a a uni­
fic a (2 , 6) y unifica ( 1 ,3 ) .

F ig . 6 .2 7 . G ra fo d e tipos q u e m u e stra las clases de equivalencia d e los nodos.

L a lla m a d a a unifica (2. 6) d e v u e lv e tr u e p o r q u e 2 y 6 ta m b ié n re p re s e n ta n el


m i s m o tip o b ásico . L a s e g u n d a lla m a d a d e unifica ( 1 , 3) te r m in a p o r q u e y a se han
fu s io n a d o los n o d o s 1 y 3 en la m is m a clase d e e q u iv a le n c ia . El a lg o ritm o p o r c o n ­
sig u ie n te te r m in a , y d e v u e lv e tr u e p a r a in d ic a r q u e las d o s e x p re s io n e s s o n e q u iv a ­
lentes. E n la fig u ra 6 .2 7 se m u e s tr a n las clases d e e q u iv a le n c ia d e los n o d o s o b te n i­
d a s , d o n d e los n o d o s c o n el m is m o e n te ro están e n la m is m a clase d e equivalencia. □
EJERCICIOS 393

E JE R C IC IO S

6.1 E sc ríb a n se e x p re sio n e s d e tip o s p a r a los sig u ie n tes tipos.


a) U n a m a tr iz d e a p u n ta d o r e s a reales, d o n d e los ín d ic e s d e ¡a m a tr iz v aría n
d e I a 100.
b ) U n a m a tr iz b id im e n s io n a l d e e n te r o s (es d ecir, u n a m a tr iz d e m a tric e s)
c u y a s filas estén in d iz a d a s d e 0 a 9 y c u y a s c o lu m n a s e s té n in d iz a d a s de
- 10 a 10.
c) F u n c io n e s c u y o s d o m i n io s s e a n f u n c io n e s d e s d e e n te r o s a a p u n t a d o r e s a
e n te r o s y c u y o s ra n g o s s e a n reg istro s q u e c o n s te n d e u n e n t e r o y u n c a ­
rácter.

6 .2 S u p ó n g a se q u e se tie n e n las sig u ie n te s d e c la r a c io n e s e n C:

typedef struct {
int a, b;
} NODO, *APNODO;
NODO a a [100];
APNODO bb(x, y) int x; NODO y { ... }

E sc ríb a n se e x p r e s io n e s d e ti p o p a r a lo s tip o s d e a a y b b .

6 .3 L a sig u ie n te g ra m á tic a d e fin e listas d e listas d e literales. L a in te r p r e ta c ió n de


los s ím b o lo s es la m is m a q u e la d e la g ra m á tic a d e la figura 6 .3 a d e m á s del
tip o list. q u e in d ic a u n a lista d e e l e m e n t o s del ti p o 7 sig u ien te.

p —* D ; E
D —> D ; D I id : T
T —> lis t o f T | c h a r | in te g e r
E —► ( L ) | lite r a l n u m id
L -> E , L | E

E s c ríb a n se reglas d e tr a d u c c ió n s im ila re s a las d e la secció n 6 .2 p a r a d e te r ­


m i n a r los tip o s d e las e x p re s io n e s ( E ) y listas (L).

6 .4 A ñ á d a s e a la g ra m á tic a del e jercicio 6 .3 la p ro d u c c ió n

E - * nil

q u e in d ic a q u e u n a e x p re s ió n p u e d e s e r la lista n u la (vacía). R e v íse n se las


reglas en su re s p u e s ta al e je rc ic io 6 .2 p a r a te n e r e n c u e n t a q u e n il p u e d e re­
p r e s e n ta r u n a lista v a c ía d e e le m e n to s d e c u a lq u ie r tipo.

6.5 U tiliz a n d o el e s q u e m a d e tr a d u c c ió n d e la se c c ió n 6 .2 . c a lc ú le n s e lo s tip o s


d e las e x p re s io n e s d e los sig u ie n te s fra g m e n to s d e p r o g r a m a . M u é s tre n s e los
tip o s en c a d a n o d o del á rb o l d e a n á lis is sin tá ctic o .
a) c : c h a r ; i : i n t e g e r ;
c m od i m od 3
b) p : T i n t e g e r ; a : a r r a y [ 1 0 J o f i n t e g e r ;
a ( pT 1
CO M PRO BA CIO N DE TIPOS

C) f : i n t e g e r -» b o o l e a n ;
i : i n t e g e r ; j : i n t e g e r ; k: i n t e g e r ;
w h i l e f ( i ) do
k := i ;
i : = j mod i ;
j := k
.6 M o d ifiq ú e se el e s q u e m a d e tr a d u c c ió n p a r a la c o m p r o b a c ió n d e e x p resio n es
d e la se c c ió n 6 .2 p a r a q u e i m p r i m a u n m e n s a je d e s c r ip tiv o c u a n d o se d e ­
le c te u n e r r o r y p a r a q u e c o n t i n ú e la c o m p r o b a c ió n c o m o si h u b ie ra a p a r e ­
c id o el ti p o p rev isto .

.7 R e f o r m ú le n s e las reglas p a r a la c o m p r o b a c ió n d e tip o s p a r a las e x p re sio n e s


d e la secció n 6 .2 d e m o d o q u e se re fie ra n a n o d o s e n u n a r e p re s e n ta c ió n p o r
m e d io d e g rafo s d e las e x p re sio n e s d e tip o s. L as reg las r e f o r m u la d a s d e b e n
u tiliz a r e s tr u c tu r a s d e d a to s y o p e r a c io n e s b a s a d a s e n u n le n g u a je c o m o P as­
cal. U tilícese la e q u iv a le n c ia e s tr u c tu r a l d e las e x p re s io n e s d e tip o s c u a n d o :
a ) las e x p r e s io n e s d e tip o s e s té n r e p r e s e n ta d a s p o r á rb o le s, c o m o en la fi­
g u r a 6 .2 . y
b) el g rafo d e tip o s sea u n G D A c o n u n n o d o ú n ic o p o r c a d a e x p re sió n d e
tip o .

.8 M o d ifiq ú e se el e s q u e m a d e tr a d u c c ió n d e la fig u ra 6 .5 p a r a q u e sirv a para:


a ) P ro p o sic io n e s q u e te n g a n v alo re s. El v alo r d e u n a asig n ac ió n es el v alo r
d e la e x p re sió n a la d e r e c h a d e l sig n o : = . El v a lo r d e u n a p ro p o sic ió n
c o n d ic io n a l o u n a p ro p o s ic ió n w h ile es el v a lo r del c u e r p o d e la p r o p o ­
sició n ; el v a lo r d e u n a lista d e p ro p o s ic io n e s e s el v a lo r d e la ú lt im a p ro ­
p o sició n d e la lista.
b) E x p re s io n e s b o o le a n a s. A ñ á d a n s e p ro d u c c io n e s p a r a los o p e r a d o r e s ló­
gicos and. o r y n o t. y p a r a o p e r a d o r e s d e c o m p a r a c ió n (<, e tc étera). D es­
p u é s a ñ á d a n s e reglas d e tr a d u c c ió n a d e c u a d a s q u e p r o p o r c io n e n el tip o
d e estas ex p resio n es.

.9 G e n e ra líc e n s e las reglas d e c o m p r o b a c ió n d e tip o s p a r a las f u n c io n e s q u e se


d a n al fin al d e la secció n 6 .2 p a r a q u e m a n e je f u n c io n e s «-arias.

10 S u p ó n g a s e q u e los n o m b r e s d e tip o s e n l a c e y n o d o se d e fin e n c o m o e n la


secció n 6 .3 . ¿C u áles d e las sig u ie n te s e x p r e s io n e s s o n e s tr u c tu r a lm e n te e q u i­
valentes?
i) e n l a c e .
ii) pointer (nodo).
iii) pointer ( e n l a c e ) .
iv) pointer (record ( ( i n f o x integer) x ( s i g u i e n t e x pointer ( nodo))).
11 R e fo rm ú le s e el a lg o r itm o p a r a c o m p r o b a r la e q u iv a le n c ia e s tr u c tu r a l d e la
figura 6 .6 d e m o d o q u e lo s a r g u m e n to s d e equivest se a n a p u n t a d o r e s a n o ­
dos de un GDA.

12 C o n s id é r e s e la c o d ific a c ió n d e las e x p r e s io n e s d e t i p o s lim it a d a s c o m o se­


c u e n c ia s d e b its del e je m p lo 6 .1 . E n J o h n s o n [1 9 7 9 ], los c a m p o s d e d o s bits
EJERCICIOS 395

p a r a c o n s tr u c to r e s a p a re c ía n e n o r d e n in v e rs o , c o n el c a m p o p a r a el c o n s­
tr u c t o r m á s e x te rn o d e s p u é s d e los 4 b its d e l tip o b ásico ; p o r e je m p lo .

E x p r e s i ó n d e T ipo C odificación

char 0 0 0 0 0 0 0001
fre tu rn s (char) 000011 0001
p o in ter (freturns (char)) 0 0 1101 0 0 0 1
array (pointer (freturns (char))) 110 110 0001

U tiliz a n d o los o p e r a d o r e s d e C escríbase c ó d ig o p a r a c o n s tr u ir la re p re s e n ­


ta c ió n d e array (t) a p a r tir d e la d e t y viceversa, s ie n d o la co d ific a c ió n c o ­
m o en:

a ) J o h n s o n [ 1979).
b ) E je m p lo 6.1.

6 .1 3 S u p ó n g a se q u e el ti p o d e c a d a id e n tif ic a d o r es u n s u b r a n g o d e e n te ro s. P ara
e x p r e s io n e s c o n los o p e r a d o r e s + , * . d i v y m od, c o m o e n P ascal, e s c rí­
b a n s e reglas p a r a la c o m p r o b a c ió n d e tip o s q u e asig n en a c a d a su b ex p resió n
el s u b ra n g o e n el q u e d e b e e s ta r su valor.

6 . 1 4 D é s e u n a lg o r itm o p a ra c o m p r o b a r la e q u iv a le n c ia d e los tip o s d e C (véase


E je m p lo 6.4).

6 . 1 5 A lg u n o s lenguajes, c o m o PL/1, c o e r c io n a r á n u n v alo r b o o le a n o a u n e n te ro ,


c o n tr u e id e n t i f i c a d o c o n I y f a l s e c o n 0 . P o r e j e m p lo . 3 < 4 < 5 se a g r u p a
( 3< 4 ) < 5 , y tie n e el v a lo r tru e ( o I), p o r q u e 3< 4 tie n e el v a lo r 1, y 1 < 5 es
true. E sc ríb a n se reglas d e tr a d u c c ió n p a r a las e x p re s io n e s b o o le a n a s q u e re a ­
licen d ic h a c o e rc ió n . U tilíc e n s e p ro p o s ic io n e s c o n d ic io n a le s e n el len g u aje
in te r m e d io p a r a a s ig n a r v alo res e n te r o s a te m p o r a le s q u e re p re s e n te n el v a­
lo r d e u n a e x p re sió n b o o le a n a . c u a n d o s e a necesario.

6 . 1 6 G e n e ra líc e n s e lo s a lg o ritm o s d e (a ) fig u ra 6 .9 y (b) fig u ra 6 .1 2 a e x p re sio n e s


c o n los c o n s tr u c to r e s d e tip o s array , pointer y p r o d u c to c artesian o .

6 . 1 7 ¿ C u á le s d e las sig u ie n te s e x p re s io n e s d e tip o recu rsiv as s o n e q u iv a le n te s?

e l = integer - > e l
e 2 = integer —* (integer -* e 2)
e 3 = in te g e r - * (in te g e r -* e l )

6 . 1 8 U s a n d o las reglas del e je m p lo 6 .6 , d e te r m ín e n s e c u á le s d e las sig u ie n tes ex ­


p re s io n e s tie n e n tip o s ú n ic o s . S u p ó n g a s e q u e z e s u n n ú m e r o c o m p le jo .

a) 1 * 2 * 3
b) 1 * ( z * 2 )
c) (1 * z ) * z

6 . 1 9 S u p ó n g a s e q u e se p e r m ite n las c o n v e rs io n e s d e tip o s d e l e je m p lo 6.6. ¿ I m ­


p o n ie n d o q u é c o n d ic io n e s a lo s tip o s d e a, h y c ( e n te ro o c o m p le jo ) , te n d rá
tip o ú n ic o la e x p re s ió n (a * h) * c?
396 CO M PR O BA C IO N Dlí TIPOS

6 . 2 0 E x p résen se, u tiliz a n d o v aria b les d e tip o s, lo s tip o s d e las sig u ie n te s f u n c io ­


nes.
a) L a f u n c ió n r e f q u e t o m a c o m o a r g u m e n t o u n o b je to d e c u a lq u ie r ti p o y
d e v u e lv e u n a p u n t a d o r a d ic h o o b je to .
b) U n a f u n c ió n q u e t o m e c o m o a r g u m e n t o u n a m a tr iz in d iz a d a p o r e n te ­
ro s . c o n e l e m e n t o s d e c u a l q u i e r ti p o , y d e v u e lv a u n a m a tr iz c u y o s e le ­
m e n to s se a n los o b je to s a p u n t a d o s p o r los e le m e n to s d e la m a tr iz d ad a.

6 .2 1 E n c u é n tr e s e el u n if ic a d o r m á s g en eral d e las e x p re s io n e s d e tip o s


i) {pointer ( a ) ) x ( p - * y )
ii) p x (y - > 5)

¿ Q u é p a s a ría si 5 e n ii) f u e ra a ?

6 . 2 2 E n c u é n tr e s e el u n if ic a d o r m á s g e n e ra l p a r a c a d a p a r d e e x p re s io n e s d e la si­
g u ie n te lista, o d e te r m ín e s e q u e n o ex iste n in g u n o .

a) a , a ,)
b ) a rra y ( P i) - > (pointer (P,) —> p3)
c ) Yi Y:
d ) 5 , - > ( 5 , - * 8 2)

6 . 2 3 A m p líe n s e las reglas p a r a la c o m p r o b a c ió n d e tip o s del e je m p lo 6 .6 p a r a q u e


a b a r q u e registros. U tilícese la sig u ie n te s in ta x is a d ic io n a l p a r a la s sigu ien tes
e x p re s io n e s d e tip o y expresio nes:

T -* re c o rd cam pos en d
E -+ E . id
cam pos cam pos ; ca m p o s | cam po
ca m p o - » id : T

¿ Q u é lim ita c io n e s im p o n e la fa lta d e n o m b r e s d e tip o s a lo s tip o s q u e se


p u e d e n d e fin ir?

* 6 .2 4 L a re s o lu c ió n d e la s o b re c a rg a e n la secció n 6.5 se d e s a rro lla e n d o s fases:


p r im e r o se d e t e r m in a el c o n j u n t o d e tip o s p o sib le s p a r a c a d a su b e x p re sió n
y d e s p u é s se re d u c e en u n a s e g u n d a fase a u n so lo tip o d e s p u é s d e q u e se
h a y a d e t e r m in a d o el tip o ú n ic o d e la e x p re s ió n c o m p le ta . ¿ Q u é e s tr u c tu r a s
d e d a to s se u tiliz a ría n p a r a re so lv e r la s o b re c a rg a e n u n a so la p a s a d a a s c e n ­
d e n te ? \ \

* * 6 .2 5 L a re s o lu c ió n d e la s o b re c a rg a re s u lta m á s difícil si las d e c la r a c io n e s d e id e n ­


tific a d o re s s o n o p c io n a le s . E n c o n c r e to , s u p ó n g a s e q u e se p u e d e n u tiliz a r las
d e c la r a c io n e s p a r a s o b r e c a r g a r id e n tific a d o re s q u e re p re s e n te n s ím b o lo s de
fu n c io n e s , p e r o q u e to d o s los c aso s d e u n id e n tif ic a d o r n o d e c la r a d o tie n e n
el m i s m o tip o . D e m u é s tre s e q u e el p r o b le m a d e d e t e r m i n a r si u n a e x p re sió n
e n este le n g u a je tie n e u n ti p o v á lid o e s N P c o m p le to . E ste p r o b le m a surge
d u r a n te la c o m p r o b a c ió n d e tip o s en el le n g u a je e x p e r im e n ta l H o p e (Burs-
tall. M a c Q u e e n y S a n n e lla [1980]).
EJERCICIOS 397

6 . 2 6 S ig u ie n d o el e je m p lo 6 .1 2 . in fié ra n s e lo s sig u ie n tes tip o s p o lim ó r f ic o s p a ra


tra n s :

tra n s : V a . V(3. ((a -> P ) x list(a)) list ((5)

L a d e fin ic ió n e n M L d e t r a n s es:

fu n t r a n s ( f , l ) =
if n u ll(l) th e n n il
else c o n s ( f(hd(l)), t r a n s (f , t i ( 1 )))

L o s tip o s d e los id e n tific a d o re s p r e d e f in id o s e n el c u e r p o d e la f u n c ió n son:

n u il: V a . list ( a ) - > boolean ;


n il: V a . list (a);
cons: V a . ( a x list ( a ) ) -> list ( a ) ;
hd: V a . list ( a ) —» a ;
ti: V a . list ( a ) —> list ( a ) ;

* * 6 .2 7 D e m u é s tr e s e q u e el a lg o ritm o d e u n ific a c ió n d e la se c c ió n 6 .7 d e t e r m i n a el
u n if ic a d o r m á s general.

* 6 .2 8 M o d ifiq ú e se el a lg o ritm o d e u n ific a c ió n d e la secció n 6 .7 p a r a q u e n o u n i­


fiq u e u n a v a ria b le c o n u n a e x p re s ió n q u e c o n te n g a d ic h a v ariab le.

**6.29 S u p ó n g a s e q u e la s e x p re s io n e s se re p re s e n ta n p o r m e d io d e árb o le s. E n c u é n ­
tr e n s e e x p r e s io n e s e y / t a l e s q u e p a r a c u a l q u ie r u n if ic a d o r .S. el n ú m e r o d e
n o d o s e n S(e) s e a e x p o n e n c ia l e n f u n c ió n d e l n ú m e r o d e n o d o s e n e y f

6 . 3 0 S e d ic e q u e d o s n o d o s s o n congruentes si re p re s e n ta n e x p re s io n e s e q u iv a le n ­
tes. A u n q u e n o h a y a d o s n o d o s c o n g r u e n te s e n el g rafo d e tip o o rig in a l, des­
p u é s d e la u n ific a c ió n e s p o s ib le q u e n o d o s d is tin to s se a n c o n g ru e n te s,
a ) D é s e u n a lg o r i tm o p a r a f u s io n a r u n a c la s e d e n o d o s m u t u a m e n t e c o n ­
g r u e n te s e n u n so lo n o d o .
**b) A m p líe s e el a lg o ritm o d e a ) p a r a q u e fu sio n e n o d o s c o n g r u e n te s h a s ta q u e
n o h a y a d o s n o d o s d is tin to s c o n g ru e n te s .

* 6 .3 1 L a e x p re s ió n g ( g ) e n la lín e a 9 d e l p r o g r a m a c o m p l e t o d e C d e la figura
6 .2 8 es la a p lic a c ió n d e u n a f u n c ió n a sí m is m a . L a d e c la ra c ió n en la lín ea
3 d a integer c o m o el tip o d e l ra n g o g . p e r o n o se esp ecifican los tip o s d e los
a r g u m e n t o s d e g . P r u é b e s e a e j e c u t a r el p r o g r a m a . E l c o m p i l a d o r p u e d e
e m iti r u n a a d v e r te n c ia p o r q u e g es c o n s id e r a d o u n a f u n c ió n e n la lín ea 3.
en lu g a r d e u n a p u n t a d o r a u n a fu n c ió n .
a ) ¿ Q u é se p u e d e d e c ir s o b re el tip o d e g ?
b) U tilíc e n s e las reglas d e c o m p r o b a c ió n d e tip o s p a r a f u n c io n e s p o lim ó rfi-
c a s d e la fig u ra 6 .1 8 p a r a in fe rir u n tip o p a r a g e n el sig u ie n te p ro g ra m a .

m : integer:
v e c e s : integer x integer —> integer:
g: a;
v e c e s ( m, g ( g ) )
398 C O M P R O B A C IO N D E TIPOS

(1 ) in t n;

(2 ) in t f ( g );
(3) int g ();
(4) (
(5) i n t m;
(6) m = n;
(7) i f ( m == 0 ) retu rn 1;
(8 ) else {
(9) n = n - 1; retu rn m * g ( g ) ;
( 10) )
(11) }

(12) m a i n ()
(13) {
(14) n = 5; printf("% d factorial es %d\
(15) >

F ig. 6 .2 8 . U n program a en C q u e c o n tie n e a p licacio n es d e

N O T A S B IB L IO G R A F IC A S

L o s tip o s b ásico s y los c o n s tr u c to r e s d e tip o s d e lo s p r im e r o s le n g u a je s c o m o F O R ­


T R A N y A L G O L 6 0 e r a n ta n lim ita d o s q u e la c o m p r o b a c ió n d e tip o s n o s u p o n ía
u n p r o b le m a serio. P o r ta n to , las d e s c rip c io n e s d e la c o m p r o b a c ió n d e tip o s e n sus
c o m p ila d o r e s se o c u lta n tr a s los e s tu d io s d e g e n e ra c ió n d e c ó d ig o p a r a ex p resio n es.
S h e rid a n [1 9 5 9 ] d e sc rib e la tr a d u c c ió n d e e x p re s io n e s e n el c o m p ila d o r o rig in a l d e
F O R T R A N . E l c o m p ila d o r re g is tra b a si el tip o d e u n a e x p re s ió n e ra e n t e r o o real,
p e r o el le n g u a je n o p e r m i t í a c o e r c io n e s . B a c k u s [1 9 8 1 , p ág . 54] re c u e r d a : “ P ie n s o
q u e s ó lo p o r q u e n o n o s g u s ta b a n las reglas r e la tiv a s a lo q u e p a s a ría c o n e x p r e s io ­
n e s e n m o d o m e z c la d o , d e c id im o s : ‘O lv id é m o s lo . E s m á s fácil’ N a u r [1 9 6 5 ] es
u n o d e lo s p r i m e r o s a r tí c u lo s s o b re c o m p r o b a c i ó n d e tip o s e n u n c o m p i l a d o r d e
A L G O L ; las té c n ic a s u tiliz a d a s p o r el c o m p i l a d o r s o n s im ila r e s a la s e s tu d ia d a s en
la se c c ió n 6.2.
L o s m e d io s p a r a la e s tr u c tu r a c ió n d e d a to s , c o m o m a tr ic e s y registros, y a a p a ­
recían en los a ñ o s 4 0 e n el P la n k a lk ü l d e Z u s e , q u e t u v o p o c a in f lu e n c ia d ire c ta
(B a u e r y W o s s n e r [1972]). U n o d e los p r im e r o s le n g u a je s d e p r o g r a m a c ió n q u e a d ­
m itió la c o n s tru c c ió n siste m á tic a d e e x p re s io n e s d e tip o s fu e A L G O L 6 8 . L a s e x p re ­
s io n e s d e tip o s se p u e d e n d e fin ir r e c u rs iv a m e n te . y se u tiliz a la e q u iv a le n c ia e s tr u c ­
tu ral. En E L I existe u n a d ista n cia clara e n tre e q u iv a le n c ia d e n o m b r e y eq u iv alen cia
e s tru c tu ra l, d e j a n d o q u e el p r o g r a m a d o r elija (W e g b re it [1974]). L a c rític a d e Pascal
re a lizad a p o r W elsh . S n e e rin g e r y H o a r e [1977] c o n c e n tr a b a su in te ré s so b re d ic h a
d is tin c ió n .
L a c o m b in a c ió n d e c o e rc ió n y s o b re c a rg a p u e d e c a u s a r a m b ig ü e d a d e s : co ercio -
n a r u n a r g u m e n t o p u e d e s u p o n e r q u e la s o b re c a rg a se re su e lv a a fav o r d e u n a lg o ­
N O T A S BIBLIOGRAFICAS 399

r itm o d is tin to . P o r ta n to , se i m p o n e n lim ita c io n e s s o b re u n a o la o tr a . E n P L /I se


a d o p t ó u n e n f o q u e p o c o rig u ro so e n lo re la tiv o a las c o e rc io n e s , s ie n d o su p r im e r
c rite rio d e d is e ñ o “ Todo vale. Si u n a d e t e r m in a d a c o m b in a c ió n d e s ím b o lo s tie n e
u n sig n ific a d o b a s ta n te ra z o n a b le , este sig n ificad o se h a r á oficial ( R a d i n y R o g o w ay
[ 1 9 6 5 ] ) ” . A m e n u d o se i m p o n e u n o r d e n e n e l c o n j u n t o d e t i p o s b á s ic o s — p o r
e je m p lo , H e x t [1967] d e sc rib e u n a e s tr u c t u r a r e tic u la r im p u e s ta s o b re los tip o s b á ­
sico s d e C P L — y los tip o s in fe rio re s se p u e d e n c o e r c io n a r a fav o r d e tip o s s u p e rio ­
res.
L a re s o lu c ió n d e la s o b re c a rg a e n el m o m e n t o d e la c o m p ila c ió n e n len g u ajes
c o m o A P L (Iv e rso n [ 1962]) y S E T L (S c h w a r tz [1 9 7 3 ]) tie n e la c a p a c id a d d e m e jo ra r
el ti e m p o d e e je c u c ió n d e los p r o g r a m a s ( B a u e r y S aal [1974]). T e n n e n b a u m [1974]
d is tin g u e e n t r e re s o lu c ió n “ h a c ia a d e la n te ” q u e d e t e r m i n a el c o n j u n t o d e tip o s p o ­
sibles d e u n o p e r a d o r a p a r ti r d e s u s o p e r a n d o s . y r e s o lu c ió n “ h a c ia a tr á s ” b a s a d a
e n el ti p o p re v is to según el c o n te x to . C o n u n a re tíc u la d e tip o s. J o n e s y M u c h n ic k
[1 9 7 6 ] y K a p la n y U llm a n [1980] re s u e lv e n lim ita c io n e s s o b re tip o s o b te n id o s del
a n álisis h a c ia a d e la n te y h a c ia a trá s . S e p u e d e re so lv e r la s o b re c a rg a en A d a reali­
z a n d o u n a so la p a s a d a h a c ia a d e la n te y d e s p u é s u n a p a s a d a h acia a trá s, c o m o e n la
sección 6.5. E sta o b serv ació n a p a re c e e n v ario s artículos: G a n z in g e r y R ip k e n [1980]:
P e n n e llo . D e R e m e r y M e y e rs [1 9 8 0 ]; J a n a s [1 9 8 0 ]; P ersch y c o la b o r a d o r e s [1980].
C o r m a c k [1981] p r o p o r c io n a u n a im p la n t a c ió n re c u rs iv a y B a k e r [1 9 8 2 ] e v ita u n a
p a s a d a e x p lícita h acia a trá s, a r r a s tr a n d o u n G D A d e tip o s posibles.
La in fe re n c ia d e tip o s fu e e s tu d ia d a p o r C u rry (véase C u r r y y F eys [1958]). en
re la c ió n c o n la lógica c o m b i n a t o r i a y el c á lc u lo la m b d a d e C h u r c h [1 941]. Se ha
s e ñ a la d o re p e tid a s veces q u e el c á lc u lo la m b d a e s el c e n t r o d e u n le n g u a je fu n c io n a l.
E n este c a p ítu lo se h a u tiliz a d o r e p e tid a m e n te la a p lic a c ió n d e u n a f u n c ió n a u n a r ­
g u m e n to p a r a e s tu d ia r los c o n c e p to s d e la c o m p r o b a c ió n d e tipos. L as f u n c io n e s se
p u e d e n d e f in ir y a p lic a r in d e p e n d ie n t e m e n t e d e los tip o s e n el c á lc u lo la m b d a . y
C u r r y se in te re s ó p o r su “c a r á c te r f u n c io n a l”, y p o r d e t e r m i n a r lo q u e a h o r a se d e ­
n o m i n a ti p o p o lim ó r f ic o m á s g e n e ra l, c o m p u e s t o p o r u n a e x p re s ió n d e ti p o c o n
c u a n tif ic a d o re s u n iv ersales, c o m o e n la secció n 6 .6 . M o tiv a d o p o r C u rrv , H in d le y
[1969] o b s e rv ó q u e se p o d r ía u tiliz a r la u n ific a c ió n p a r a in fe rir los tip o s. E n su tesis,
M o r r is [1 9 6 8 a ] a s ig n ó tip o s a e x p r e s io n e s l a m b d a e s ta b le c ie n d o u n c o n j u n t o d e
e c u a c io n e s y r e s o lv ié n d o la s p a r a d e t e r m i n a r los tip o s a s o c ia d o s c o n la s v a ria b le s.
M iln e r [1 978]. q u e n o c o n o c ía el t r a b a jo d e H in d le y , ta m b ié n o b s e rv ó q u e se p o d ría
u tiliz ar la u n ific a c ió n p a r a re so lv e r los c o n j u n to s d e e c u a c io n e s , y a p lic ó la id e a p a ra
in ferir tip o s e n el le n g u a je d e p r o g r a m a c ió n M L .
C a rd e lli [1 9 8 4 ] d e s c r ib e la p r a g m á t i c a d e la c o m p r o b a c i ó n d e t i p o s e n M L .
M e e rte n s [1983] a p lic a este e n f o q u e a len g uajes; S u z u k i [1981] in v e stig a su a p lic a ­
c ió n a S m a llta lk 1976 (Ing alls [1978]). M itch ell [1984] d e sc rib e c ó m o se p u e d e n in ­
c lu ir co ercio n es.
M o rris [1 9 6 8 a] o b s e rv a q u e los tip o s re c u rs iv o s o c irc u la re s p e r m ite n in fe rir los
tip o s p a r a e x p re sio n e s q u e c o n te n g a n la a p lic a c ió n d e u n a f u n c ió n a sí m is m a . El
p r o g r a m a e n C d e la figura 6 .2 8 , q u e c o n tie n e u n a a p lic a c ió n d e u n a f u n c ió n a sí
m is m a , está m o tiv a d o p o r u n p r o g r a m a e n A L G O L d e L ed g a rd [19 71]. El e jercicio
6.31 es o b r a d e M a c Q u e e n , P lo tk in y S eth i [1 9 8 4 ], y p r o p o r c i o n a u n m o d e lo se­
m á n t i c o p a r a t i p o s p o l i m ó r f i c o s r e c u r s iv o s . E n M c C r a c k e n [ 1 9 7 9 ] y C a r tw r ig h t
400 C O M P R O B A C IO N D E TIPOS

[1985] h a y d is tin to s e n fo q u e s . R e y n o ld s [1 9 8 5 ] e s tu d ia el s is te m a d e tip o s d e M L ,


los p rin c ip io s g e n e ra le s te ó ric o s p a r a e v ita r a n o m a lía s d e c o e rc io n e s y s o b re c a rg a , y
f u n c io n e s p o lim ó rfic a s d e o r d e n s u p e rio r.
R o b in s o n [ 1965] fue el p r im e r o q u e e s tu d ió la u n ific a c ió n . El a lg o r itm o d e u n i­
ficación d e la secció n 6 .7 p u e d e a d a p ta r s e f á c ilm e n te d e a lg o ritm o s p a r a c o m p r o b a r
la e q u i v a l e n c i a d e (1 ) a u t ó m a t a s f in ito s y (2 ) lis ta s e n l a z a d a s c o n c ic lo s ( K n u t h
[1 9 7 3 a]. Sec. 2 .3 .5 , E jercicio 11). El a lg o r itm o casi lineal p a r a c o m p r o b a r la e q u i ­
v a le n c ia d e a u t ó m a t a s fin ito s o b r a d e H o p c r o f t y K a r p [1971] se p u e d e c o n s id e r a r
la i m p l a n t a c i ó n d e l e s b o z o d e la p á g in a 5 9 4 d e K n u t h [ 1 9 7 3 a ]. U til iz a n d o la s es­
tr u c tu r a s d e d a to s in te lig e n te m e n te , P a te rs o n y W e g m a n [1978] y M artelli y M o n -
ta n a r i [1982] in tr o d u c e n a lg o ritm o s lin eales p a r a el c a so acíclico. E n D o w n e y , S ethi
y T a r j a n [ 1 9 8 0 ] a p a r e c e u n a l g o r i t m o p a r a e n c o n t r a r n o d o s c o n g r u e n t e s (v é a s e
E jercicio 6.30).
D e s p e y ro u x [1 9 8 4 ] d e sc rib e u n g e n e r a d o r d e c o m p r o b a d o r e s d e tip o s q u e u tiliz a
la c o n c o r d a n c ia d e p a tr o n e s p a r a c r e a r u n c o m p r o b a d o r d e tip o s a p a r ti r d e u n a es­
p ecificació n s e m á n tic a o p e r a tiv a b a s a d a e n reglas d e in ferencia.
|4 0 1 |

C A P IT U L O 7

Ambientes para
el momento
de la ejecución

A n te s d e c o n s id e r a r la g e n e ra c ió n d e c ó d ig o , h a y q u e re la c io n a r el te x to fu e n te es­
tá tic o d e u n p r o g r a m a c o n las a c c io n e s q u e d e b e n o c u r r ir e n el m o m e n t o d e la eje­
c u c ió n p a r a i m p l a n t a r el p r o g r a m a . D u r a n t e la e je c u c ió n , el m i s m o n o m b r e en el
te x to f u e n te p u e d e d e n o t a r d is tin to s o b je to s d e d a t o s e n la m á q u in a o b je to . E ste c a ­
p ítu lo e x a m in a las re la c io n e s e n tr e los n o m b r e s y los o b je to s d e d a to s.
L a a s ig n a c ió n y d e s a s ig n a c ió n d e o b je to s d e d a to s e s lle v a d a a c a b o m e d ia n te el
p a q u e te d e apoyo d u ra n te la ejecución, q u e c o n s ta d e r u tin a s c a rg a d a s c o n el c ó d ig o
o b je to g e n e ra d o . El d is e ñ o del p a q u e te d e a p o y o a la d e e je c u c ió n e s tá in flu id o p o r
la s e m á n t i c a d e los p r o c e d i m i e n t o s . C o n la s t é c n i c a s d e e s te c a p í t u l o se p u e d e n
c o n s tr u ir p a q u e te s d e a p o y o p a r a le n g u a je s c o m o F O R T R A N , P ascal y LISP.
C a d a e je c u c ió n d e u n p r o c e d im ie n to se d e n o m i n a activación d e l p r o c e d im ie n to .
Si el p r o c e d im ie n to es re c u rsiv o , p u e d e n e s ta r f u n c io n a n d o v arias d e s u s a c tiv id a d e s
al m is m o tie m p o . E n P ascal, c a d a lla m a d a a u n p r o c e d im ie n to d e s e m b o c a e n u n a
a c tiv a c ió n q u e p u e d e m a n i p u l a r o b je to s d e d a t o s a s ig n a d o s p a r a su uso.
L a re p re s e n ta c ió n d e u n o b je to d e d a t o s d u r a n t e la e je c u c ió n está d e te r m in a d a
p o r su tip o . A m e n u d o , los tip o s d e d a t o s e le m e n ta le s , c o m o c a ra c te re s , e n te r o s y
reales, p u e d e n e s ta r re p r e s e n ta d o s p o r o b je to s d e d a to s e q u iv a le n te s e n la m á q u in a
o b je to . S in e m b a r g o , los ag reg ad o s, c o m o m a tric e s, c a d e n a s y e s tr u c tu r a s , g e n e ra l­
m e n te se re p re s e n ta n m e d ia n te c o n j u n t o s d e o b je to s p rim itiv o s ; su e s q u e m a d e d is ­
tr ib u c ió n se e s tu d ia e n el c a p ítu lo 8.

7.1 A S P E C T O S D E L L E N G U A J E F U E N T E

C o m o e je m p lo , s u p ó n g a s e q u e u n p r o g r a m a está c o m p u e s t o p o r p r o c e d im ie n to s ,
c o m o e n P ascal. E sta secció n d is tin g u e e n tr e el te x to f u e n te d e u n p r o c e d im ie n to y
sus a c tiv id a d e s d u r a n t e la eje c u c ió n .

P r o c e d im ie n to s

U n a definición d e un procedim iento es u n a d e c la ra c ió n q u e . en su fo rm a m á s s im ­


p le. aso cia u n id e n tif ic a d o r c o n u n a p ro p o s ic ió n . El ¿d en tificad o r e s el n o m b re del
402 A M B IE N T E S P A R A EL M O M E N T O D E LA EJECUCION

procedim iento , y la p ro p o s ic ió n es el cuerpo d e l procedim iento. P o r e je m p lo , el c ó ­


d ig o e n P ascal d e la fig u ra 7.1 c o n t i e n e la d e f in ic ió n d e l p r o c e d i m i e n t o lla m a d o
l e e m a t r i z e n las lín eas 3 a 7; el c u e r p o d e l p r o c e d im ie n to está e n la s lín eas 5 a 7.
L o s p r o c e d im ie n to s q u e d e v u e lv e n v a lo re s se d e n o m i n a n fu n c io n es e n m u c h o s len­
g u a je s; s in e m b a r g o , e s m e jo r lla m a r lo s p r o c e d im ie n to s . U n p r o g r a m a c o m p le to
ta m b ié n se c o n s id e r a r á u n p r o c e d im ie n to .

(1) p ro g ram o rd e n a m ie n to ( i n p u t , o u t p u t );
(2) v a r a : a rra y [0 ..1 0 ] o f in te g e r ;

(3) p ro ced u re le e m a triz ;


(4) var i : in te g e r;
(5) b e g in
(6) fo r i s* 1 to 9 do r e a d ( a [ i] )
(7) end;

(8) fu n c tio n p a r tic ió n ( y , z: in te g e r ) :in te g e r;


(9) v a r i , j , x, v: in te g e r;
(10) b e g in . . .
(11) end;

(12) p ro ced u re c la s ific a c ió n _ p o r_ _ p a rtic io n e s (m , n: in te g e r);


(13) v ar i : in te g e r;
(14) begin
(15) if ( n > m ) th e n b e g in
(16) i := p a r t i c i ó n ( m , n );
(17) c l a s i f i c a c i ó n _ p o r _ p a r t i c i o n e s ( m ,i - 1);
(18) c l a s i f i c a c i ó n _ p o r _ p a r t i c i o n e s ( i + 1 , n)
(19) end
(20) end;

(21) begin
(22) a [ 0 ] := - 9 9 9 9 ; a [ 1 0 ] : = 9 9 9 9 ;
(23) le e m a triz ;
(24) c l a s i f i c a c i ó n _ p o r _ p a r t i c i o n e s (1 ,9 )
(25) end.

Fig. 7.1. U n p ro g ram a en Pascal para leer y o rd e n a r enteros.

C u a n d o a p a r e c e el n o m b r e d e u n p r o c e d i m i e n t o d e n t r o d e u n a p r o p o s ic ió n
e je c u ta b le , se d ic e q u e el p r o c e d i m i e n t o e s lla m a d o e n d i c h o m o m e n t o . L a id e a
b ásica e s q u e la lla m a d a a u n p r o c e d im ie n to e je c u ta el c u e r p o d e l p r o c e d im ie n to .
E l p r o g r a m a p r i n c i p a l e n la s l í n e a s 21 a 2 5 d e la f i g u r a 7.1 l l a m a a l p r o c e d i ­
m i e n t o l e e m a t r i z e n la lín ea 2 3 y d e s p u é s lla m a al p r o c e d im ie n to c l a s i f i c a -
c i ó n _ p o r _ p a r t i c i o n e s e n la lín e a 2 4 . O b s é rv e s e q u e las lla m a d a s a p r o c e d i­
m ie n to s ta m b ié n p u e d e n o c u r r ir d e n t r o d e ex p resio n es, c o m o e n la lín ea 16.
A lg u n o s d e lo s id e n t i f i c a d o r e s q u e a p a r e c e n e n la d e f in i c ió n d e u n p r o c e d i­
m i e n to s o n especiales, y se d e n o m i n a n parám etros fo rm a le s d e l p r o c e d im ie n to . (E n
7.1 ASPECTOS DEL LENGUAJE FU E N T E 403

C se d e n o m i n a n “a r g u m e n to s fo rm a le s '’ y e n F O R T R A N “ falsos a r g u m e n to s " .) Los


id e n tif ic a d o r e s m y n d e la l í n e a 12 s o n p a r á m e t r o s f o r m a le s d e c l a s i f i c a -
c i ó n _ p o r _ p a r t i c i o n e s . L o s a r g u m e n to s , c o n o c id o s c o m o parám etros actuales ,
p u e d e n p a s a rs e a u n p r o c e d im ie n to lla m a d o ; s o n s u s titu id o s p o r los p a r á m e tr o s for­
m a le s d e l c u e r p o . E n la s e c c ió n 7 .5 se e s t u d i a n lo s m é to d o s p a r a e s ta b le c e r la c o ­
rr e s p o n d e n c ia e n tr e los p a r á m e tr o s reales y los p a r á m e tr o s fo rm a le s. L a lín e a 18 de
la fig u ra 7.1 e s u n a ll a m a d a d e c l a s i f i c a c i ó n _ p o r _ p a r t i c i o n e s c o n p a r á ­
m e tr o s a c tu a le s i + 1 y n.

A rb o le s d e activ ació n

S e tie n e n e n c u e n t a los sig u ie n te s s u p u e s to s s o b re el flu jo d e c o n tro l e n tr e p r o c e d i­


m ie n to s d u r a n t e la e je c u c ió n d e u n p ro g ra m a :

1. El c o n tro l fluye s e c u e n c ia lm e n te ; es d ecir, la e je c u c ió n d e u n p r o g r a m a c o n s ta


e n u n a s e c u e n c ia d e pasos, y el c o n tro l está e n a lg ú n p u n t o e sp ecífico d e l p ro ­
g r a m a a c a d a paso .

2. C a d a e je c u c ió n d e u n p r o c e d im ie n to c o m ie n z a al p r in c ip io del c u e r p o del p ro ­
c e d im ie n to y e n a lg ú n m o m e n t o d e v u e lv e el c o n tr o l al p u n t o s itu a d o in m e d ia ­
t a m e n t e tr a s el lu g a r d o n d e fue l l a m a d o el p r o c e d i m ie n t o . E s to sig n ific a q u e
p u e d e d escrib irse el flu jo d e l c o n tr o l e n t r e p r o c e d im ie n to s u tiliz a n d o á rb o le s,
c o m o se v e rá m á s a d e la n te .

C a d a e je c u c ió n d e l c u e r p o d e u n p r o c e d im ie n to se c o n s id e r a u n a a c tiv a c ió n del
p r o c e d im ie n to . L a duración d e u n a a c tiv a c ió n d e u n p r o c e d im ie n to p es la s e c u e n ­
cia d e p a so s e n t r e el p r im e r o y ú lt im o p a so d e la e je c u c ió n d e l c u e r p o d e l p r o c e d i­
m ie n to , in c lu id o el ti e m p o q u e se ta r d a e n e je c u ta r los p r o c e d im ie n to s lla m a d o s p o r
p , los p r o c e d i m ie n t o s lla m a d o s p o r ello s, y a s í s u c e s iv a m e n te . E n g e n e ra l, el té r ­
m i n o “d u r a c i ó n " se refiere a u n a s e c u e n c ia c o n s e c u tiv a d e p a so s d u r a n t e la e je c u ­
c ió n d e u n p ro g ra m a .
E n le n g u a je s c o m o P ascal, c a d a vez q u e el c o n tr o l se in tr o d u c e e n u n p r o c e d i­
m i e n to q d e s d e el p r o c e d im ie n to p , f in a lm e n te reg resa a p (si n o h a y u n e r r o r in e ­
vitable). M á s c o n c r e ta m e n te , c a d a vez q u e el c o n tr o l fluye d e sd e u n a a c tiv a c ió n d e
u n p r o c e d im ie n to p a u n a a c tiv a c ió n d e u n p r o c e d im ie n to q , se regresa a la m is m a
a c tiv a c ió n d e p.
Si a y b s o n a c tiv a c io n e s d e p ro c e d im ie n to s , e n to n c e s s u s d u r a c io n e s o b ie n n o
se s o la p a n o s o n a n id a d a s . E s d ecir, si se e n tr a a b a n te s d e salir d e a, e n to n c e s el
c o n tro l d e b e a b a n d o n a r b a n te s d e a b a n d o n a r a.
E sta p r o p ie d a d d e a n i d a m i e n t o d e la s d u r a c i o n e s d e la s a c tiv id a d e s se p u e d e
ilu stra r in s e r ta n d o d o s p ro p o s ic io n e s d e im p r e s ió n e n c a d a p r o c e d im ie n to , u n a a n ­
te s d e la p r im e r a p ro p o s ic ió n del c u e r p o del p r o c e d im ie n to y la o t r a d e s p u é s d e la
ú ltim a . L a p r im e r a p r o p o s ic ió n i m p r i m e e n t r a s e g u id a d e l n o m b r e d e l p r o c e d i­
m i e n to y los v alo res d e lo s p a r á m e tr o s reales; la ú lt im a p ro p o s ic ió n i m p r i m e s a l e
seg u id a d e la m is m a in f o r m a c ió n . U n a e je c u c ió n d e l p r o g r a m a d e la fig u ra 7.1 c o n
e s ta s p r o p o s ic io n e s d e im p r e s ió n p r o d u j o el r e s u lta d o q u e se m u e s t r a e n la fig u ­
ra 7.2. L a d u r a c ió n d e la a c tiv a c ió n c l a s i f i c a c i ó n _ p o r _ p a r t i c i o n e s ( 1 , 9 )
es la s e c u e n c ia d e p a s o s e j e c u ta d o s e n t r e la im p r e s ió n d e e n t r a a c l a s i f i c a ­
404 A M B IE N T E S P A R A EL M O M E N T O D E LA EJECUCION

c i ó n _ p o r _ p a r t i c i o n e s ( 1 , 9 ) y la im p r e s i ó n d e s a l e de c la s ific a -
c i ó n _ p o r _ p a r t i c i o n e s ( 1 , 9 ) . E n la fig u ra 7.2, se s u p o n e q u e el v a lo r d e v u e lto
p o r p a r t i c i ó n ( 1 , 9 ) e s 4.
U n p r o c e d i m i e n t o es recursivo si p u e d e c o m e n z a r u n a n u e v a a c tiv a c ió n a n te s
d e q u e h a y a t e r m i n a d o u n a a c tiv a c ió n a n t e r i o r d e l m i s m o p r o c e d i m ie n t o . E n la
f ig u r a 7 .2 se m u e s t r a q u e el c o n t r o l e n t r a e n la a c t iv a c i ó n d e c l a s i f i c a -
c i ó n _ p o r _ p a r t i c i o n e s ( 1 , 9 ) , d e la lín e a 2 4 , al p r in c i p io d e la e je c u c ió n del
p r o g r a m a p e r o a b a n d o n a d ic h a a c tiv a c ió n casi al final. M ie n tr a s t a n t o , h a y o tr a s a c ­
tiv a c io n e s d e c l a s i f i c a c i ó n _ p o r _ p a r t i c i o n e s , d e m o d o q u e c l a s i f i c a -
c i ó n _ p o r _ p a r t i c i o n e s es recu rsiv o .
U n p r o c e d im ie n to recursivo*p n o n e c e sita lla m a rs e a sí m is m o d ir e c ta m e n te ; p
p u e d e lla m a r a o t r o p r o c e d im ie n to q . q u e p u e d e e n to n c e s lla m a r a p a tra v é s d e u n a
s e c u e n c ia d e lla m a d a s a p ro c e d im ie n to s . Se p u e d e u tiliz a r u n á rb o l, lla m a d o árbol
d e activación, p a r a r e p r e s e n ta r la f o r m a e n q u e el c o n tro l e n t r a y sale d e las a c tiv a ­
cio n es. E n u n á rb o l d e a c tiv a c io n e s,

1. c a d a n o d o r e p re s e n ta u n a a c tiv a c ió n d e u n p r o c e d im ie n to .

2. la ra íz r e p re s e n ta la a c tiv a c ió n d e l p r o g r a m a p rin c ip a l.

3. el n o d o p a r a a es el p a d r e del n o d o p a r a h si. y sólo si. el c o n tr o l fluye d e la


a c tiv a c ió n a a la b. y

4. el n o d o p a r a a está a la iz q u ie rd a del n o d o p a r a b si, y só lo si, la d u r a c ió n d e a


o c u r r e a n te s q u e la d u r a c ió n d e b.

C o m o c a d a n o d o r e p re s e n ta u n a a c tiv a c ió n ú n ic a , y viceversa, c o n v ie n e d e c ir q u e
el c o n tr o l está e n u n n o d o c u a n d o e s tá e n la a c tiv a c ió n re p r e s e n ta d a p o r el n o d o .

La e j e c u c i ó n c o m i e n z a . . .
e n tr a a le e m a triz
s a l e de le e m a tr iz
e n t r a a c l a s i f i c a c i ó n _ p o r _ p a r t i c i o n e s (1 ,9 )
e n t r a a p a r t i c i ó n (1 ,9 )
s a l e de p a r t i c i ó n ( 1 ,9 )
e n t r a a c l a s i f i c a c i ó n _ p o r _ p a r t i c i o n e s ( 1, 3 )
• • •

s a l e d e c l a s i f i c a c i ó n _ p o r _ p a r t i c i o n e s ( 1, 3 )
e n t r a a c l a s i f i c a c i ó n _ p o r _ p a r t i c i o n e s (5 ,9 )
• • •

s a l e de c l a s i f i c a c i ó n _ p o r _ p a r t i c i o n e s ( 5 ,9 )
s a l e de c l a s i f i c a c i ó n _ p o r _ p a r t i c i o n e s (1 ,9 )
T e rm in a e j e c u c i ó n .

F ig. 7 .2 . S a lid a q u e su g ie r e la s a c tiv a c io n e s d e lo s p r o c e d im ie n t o s d e la figura 7.1.


7.1 ASPECTOS DEL LENG UA JE F U E N T E 405

E je m p lo 7 .1 . El árb o l d e a c tiv a c ió n d e la fig u ra 7.3 se c o n s tr u y e a p a r ti r del re s u l­


ta d o d e la figura 7 . 2 ‘. P a r a a h o r r a r e s p a c io , só lo se m u e s tra la p r im e r a le tra d e c a d a
p r o c e d i m i e n t o . L a r a íz d e l á r b o l d e a c t i v a c i ó n c o r r e s p o n d e a t o d o el p r o g r a m a
o r d e n a m i e n t o . D u r a n te la e je c u c ió n d e o r d e n a m i e n t o , ex iste u n a a c tiv a c ió n de
l e e m a t r i z re p r e s e n ta d a p o r el p r im e r h ijo d e la raíz, c o n e tiq u e ta 1. L a sig u ie n te
a c t iv a c i ó n , r e p r e s e n t a d a p o r el s e g u n d o h i j o d e la ra íz , e s p a r a c l a s i f i c a -
c i ó n _ p o r _ p a r t i c i o n e s . c o n p a r á m e tr o s reales 1 y 9. D u r a n te esta activ ació n , las
lla m a d a s a p a r t i c i ó n y c l a s i f i c a c i ó n _ p o r _ p a r t i c i o n e s d e la s lín eas 16 a
18 d e la figura 7.1 c o n d u c e n a las a c tiv a c io n e s p ( l , 9 ) . c ( l , 3 ) y c ( 5 , 9 ) . O b sé r­
vese q u e las a c tiv a c io n e s c ( 1 , 3 ) y c ( 5 , 9 ) s o n recu rsivas, y q u e c o m ie n z a n y te r ­
m in a n a n te s d e q u e te r m in e c ( 1 , 9 ) . □

p(l,3) c(l,0) c (2, 3 ) p(5,9) c(5,5) c(7,9)

P (2,3 )
/ I\
c ( 2,1) c ( 3 ,3) p<7,9)
/ c(7,7)
I\ c<9,9)

Fig. 7.3. U n árbol d e activació n co rresp o n d ien te a la salida d e la figura 7.2.

P ila s d e co n tro l

El flu jo d e c o n tr o l d e u n p r o g r a m a c o r r e s p o n d e a u n re c o rrid o e n p r o f u n d id a d del


á rb o l d e a c tiv a c ió n q u e c o m ie n z a e n la raíz, visita u n n o d o a n te s q u e a s u s h ijo s y
v isita los h ijo s en c a d a n o d o r e c u r s iv a m e n te d e iz q u ie r d a a d e re c h a . P o r ta n to , el
r e s u lta d o d e la figura 7 .2 se p u e d e r e c o n s tr u ir re c o r r ie n d o el á rb o l d e a c tiv a c io n e s
d e la fig u ra 7.3. im p r im i e n d o e n t r a c u a n d o se a lc a n z a p o r p r im e r a v ez el n o d o d e
u n a a c tiv a c ió n e im p r im ie n d o s a l e c u a n d o t o d o el s u b á rb o l del n o d o h a y a sido
v isita d o d u r a n t e el reco rrid o .
Se p u e d e u tiliz a r u n a pila, lla m a d a p ila d e control p a r a llev ar u n reg istro d e las
a c tiv a c io n e s d e los p r o c e d im ie n to s e n c u rso . S e tr a ta d e in tr o d u c ir el n o d o p a r a u n a
a c tiv a c ió n e n la p ila d e c o n tr o l c u a n d o c o m ie n c e la a c tiv a c ió n , y s a c a rlo c u a n d o te r­
m in e . L o s c o n te n id o s d e la p ila d e c o n tr o l se re la c io n a rá n c o n los c a m in o s h a c ia la
ra íz d e l á rb o l d e a c tiv a c io n e s. C u a n d o el n o d o n esté e n el to p e d e la p ila d e c o n tro l,
la pila c o n t e n d r á los n o d o s s itu a d o s a lo la rg o del c a m in o d e n h a s ta la raíz.

E je m p lo 7 .2 . E n la fig u ra 7 .4 se m u e s tr a n los n o d o s d e l á rb o l d e a c tiv a c io n e s d e la


fig u ra 7.3 q u e h a n sid o a lc a n z a d o s c u a n d o el c o n tr o l e n t r a e n la a c tiv a c ió n rep re-

1 Las llamadas actuales realizadas por c l a s i f i c a c i ó n _ p o r _ p a r t i c i p a c i o n e s dependen de lo


que devuelva p a r t i c i ó n (véase Aho. Hopcroft y Ullman [1983) para detalles del algoritmo). La
figura 7.3 representa un posible árbol de llamadas. Resulta coherente con la figura 7.2 aunque en la
figura 7.2 no se muestran algunas llamadas en niveles más bajos del árbol.
406 A M B I E N T E S P A R A EL M O M E N T O D E L A E J E C U C I O N

s e n ta d a p o r c ( 2 , 3 ) . L a s a c t iv a c i o n e s c o n e t i q u e t a s 1 , p ( 1 , 9 ) , p ( 1 , 3 ) y
c ( 1 , 0 ) h a n te r m in a d o su eje c u c ió n , d e m o d o q u e la fig u ra c o n tie n e lín eas p u n t e a ­
d a s h acia sus n o d os. L as o tr a s lin eas m a rc a n el c a m i n o d e sd e c ( 2 , 3 ) h a s ta la raíz.

o
^

1 ' c(l,9)

P<1,9) c ( 1,3)

P<1,3)
^ :\ c (1,0) c (2, 3 )

Fig. 7.4. La pila d e co n tro l c o n tie n e los n o dos a lo largo d e un c a m in o a la raíz.

L legados a este p u n to , la pila d e c o n tro l c o n tie n e los sig u ie n tes n o d o s a lo largo


d e d ic h o c a m i n o h a c ia la ra íz (el to p e d e la pila está a la d e re c h a )

o / c ( 1,9), c(l,3), 0(2,3)

y n in g ú n o t r o n o d o . □

L as pilas d e c o n tro l se a p lic a n ta m b ié n a la té c n ic a d e asig n ac ió n d e m e m o r ia


p o r m e d io d e p ilas u tiliz a d a p a r a im p la n t a r le n g u a je s c o m o P ascal y C . E sta té c n ic a
se e s tu d ia d e ta lla d a m e n te en las se c c io n e s 7 .3 y 7.4.

E l á m b ito d e un a d eclaració n

U n a d e c la ra c ió n e n u n len g u aje e s u n a c o n s tru c c ió n s in tá c tic a q u e a s o c ia in f o r m a ­


c ió n a u n n o m b re . Las d e c la ra c io n e s p u e d e n s e r exp lícitas, tal c o m o e n el fra g m e n to
d e Pascal
var i : in te g e r;

o p u e d e n ser im p líc itas. P o r e je m p lo , se s u p o n e q u e c u a lq u ie r n o m b r e d e variable


q u e c o m ie n c e c o n i in d ic a u n e n t e r o en u n p r o g r a m a e n F O R T R A N , a m e n o s q u e
se d e c la re lo c o n tra rio .
P u e d e h a b e r d e c la ra c io n e s in d e p e n d ie n te s del m is m o n o m b r e en d is tin ta s p artes
d e u n p r o g r a m a . L as reglas d e á m b ito d e u n le n g u a je d e t e r m i n a n q u é d e c la r a ­
c ió n de u n n o m b r e se u tiliza c u a n d o el n o m b r e a p a re c e e n el te x to d e un p ro g ra m a .
E n el p ro g ra m a e n Pascal d e la fig u ra 7 .1 . i está d e c la r a d a tr e s veces, e n las lín eas
4 . 9 y 13. y los u so s del n o m b r e i e n los p r o c e d im ie n to s l e e m a t r i z . p a r t i c i ó n
y c l a s i f i c a c i ó n _ p o r _ p a r t i c i o n e s s o n in d e p e n d ie n te s e n tr e sí. L a d e c la r a ­
c ió n d e la lín ea 4 se a p lic a a los u so s d e i d e la lin ea 6. E s d ecir, los d o s c aso s d e i
d e la linea 6 e s tá n d e n t r o del á m b i t o d e la d e c la ra c ió n d e la lin ea 4. L o s tres casos
d e i d e las líneas 16 a 18 están d e n t r o del á m b ito d e la d eclaració n d e i d e la línea 13.
L a p a rte del p ro g ra m a a la q u e se a p lic a u n a d e c la ra c ió n se d e n o m in a á m b ito d e
d ic h a d e c la ra c ió n . Se d ic e q u e el c a s o d e u n n o m b r e en u n p r o c e d im ie n to e s local
al p r o c e d im ie n to si está d e n t r o d e l á m b i t o d e u n a d e c la ra c ió n d e n t r o d e l p r o c e d i­
m ie n to ; si n o , el c a so e s no local. L a d is tin c ió n e n tr e n o m b r e s lo cales y n o locales
sirv e p a ra c u a lq u ie r c o n s tru c c ió n s in tá c tic a q u e p u e d a te n e r in c lu id a s d eclaracio n e s.
7.1 ASPECTOS DEL LENGUAJE F U E N T E 407

A u n q u e el á m b i t o e s u n a p r o p ie d a d d e la d e c la r a c ió n d e u n n o m b r e , a veces
c o n v ie n e u tiliz a r la a b r e v ia tu r a “ el á m b i t o d e l n o m b r e x " e n lu g a r d e “el á m b ito
d e la d e c la r a c ió n del n o m b r e x q u e se a p l ic a a e s te c a s o d e x ' \ E n este s e n tid o , el
á m b i t o d e i e n la l í n e a 17 d e la f ig u r a 7.1 e s e l c u e r p o d e c l a s i f i c a -
c i ó n _ p o r _ p a r t i c i o n e s 2.
E n el m o m e n t o d e la c o m p ila c ió n , se p u e d e u tiliz a r la ta b la d e s ím b o lo s para
e n c o n tr a r la d e c la ra c ió n q u e se a p lic a a u n c a so d e u n n o m b r e . C u a n d o a p a re c e u n a
d e c la ra c ió n , se c re a u n a e n tr a d a e n la ta b la d e s ím b o lo s p a r a ella. M ie n tr a s se esté
s itu a d o d e n t r o d e l á m b ito d e la d e c la ra c ió n , se d e v u e lv e s u e n t r a d a c u a n d o se b u sc a
su n o m b r e e n la ta b la. L as ta b la s d e s ím b o lo s se e s tu d ia n e n la secció n 7.6.

E n lace d e n o m b res

A u n q u e c a d a n o m b r e se d e c la r e u n a so la v ez e n el p r o g r a m a , el m i s m o n o m b r e
p u e d e in d ic a r d is tin to s o b je to s d e d a t o s d u r a n t e la e je c u c ió n . El te r m in o in fo rm a l
“o b je to d e d a to s " c o r r e s p o n d e a u n a po sició n d e m e m o r ia q u e p u e d e c o n te n e r v a ­
lores. #
E n la s e m á n tic a d e los le n g u a je s d e p r o g r a m a c ió n , el te r m in o a m b ie n te se refiere
a u n a f u n c ió n q u e tr a n s f o r m a u n n o m b r e e n u n a po sició n d e m e m o r ia , y el té r m in o
estado se refiere a u n a f u n c ió n q u e tr a n s f o r m a u n a p o sic ió n d e m e m o r ia e n el v alo r
allí a lm a c e n a d o , c o m o se m u e s tra e n la figura 7.5. U tiliz a n d o los té r m in o s valor de
lado izquierdo y valor d e lado derecho del c a p ítu lo 2 . u n a m b ie n te tr a n s f o r m a un
n o m b r e e n u n v a lo r d e l a d o iz q u i e r d o , y u n e s t a d o t r a n s f o r m a el v a lo r d e la d o
iz q u ie rd o en u n v alo r d e la d o d e re c h o .

am bien te estado

nombre memoria valor

Fig. 7.5. U n a tran sfo rm ació n d e d o s etap as d e n o m b res a valores.

Los a m b ie n te s y los e s ta d o s s o n d istin to s; u n a asign ación m o d ifica el estad o , pero


n o el a m b ie n te . P o r e je m p lo , s u p ó n g a s e q u e la d ir e c c ió n 100 d e la m e m o r ia , a s o ­
c ia d a c o n la v a r ia b le p i . c o n t i e n e 0 . D e s p u é s d e la a s ig n a c ió n p i : = 3 . 1 4 , la
m is m a d ir e c c ió n d e la m e m o r ia sig u e e s ta n d o a s o c ia d a c o n p i , p e r o el v a lo r allí
c o n t e n id o e s a h o r a 3 . 1 4 .
C u a n d o u n a m b ie n te aso cia la p o sic ió n d e m e m o r ia s c o n u n n o m b r e x . se dice
q u e x está enlazado a s\ la a so cia ció n en si m is m a es c o n s id e r a d a u n enlace d e x. El
té r m in o “ p o s ic ió n " d e m e m o r ia d e b e to m a r s e en s e n tid o fig u rad o . Si x n o e s u n
tip o básico. la p o sic ió n s d e m e m o r ia p a r a x p u e d e s e r u n c o n j u n t o d e p a la b ra s de
m e m o ria .
U n e n la c e e s la c o n tr a p a r tid a d i n á m i c a d e u n a d e c la ra c ió n , c o m o se m u e s tra en
la figura 7.6. C o m o y a se sab e, p u e d e n e s ta r f u n c io n a n d o al m is m o ti e m p o m á s de

2 La mayorías de las \cees. los términos nombre, identificador. variable y lexema se pueden inter­
cambiar sin que produ/.ca ninguna confusión acerca de la construcción deseada.
408 A M B I E N T E S P A R A EL M O M E N T O D E LA E J E C U C I O N

u n a a c tiv a c ió n d e u n p r o c e d im ie n to re c u rsiv o . E n Pascal, el n o m b r e d e u n a v a ria b le


local d e u n p r o c e d im ie n to está e n la z a d o a u n a p o sic ió n d e m e m o r ia d is tin ta en cada
a c tiv a c ió n d e u n p r o c e d im ie n to . E n la secció n 7.3 se c o n s id e r a n la s té c n ic a s p a r a el
e n la z a d o d e n o m b r e s d e v aria b les locales.

N oc ión E stática C o n t r a p a r t e D inámica

definición de un procedimiento activaciones del procedimiento


declaración de un n o m b r e enlaces del n o m b r e
ámbito de una declaración duración de un enlace

Fig. 7.6. N ociones estáticas y d in ám icas correspondientes.

A lg u n a s p re g u n ta s

L a f o r m a e n q u e el c o m p ila d o r d e un le n g u a je d e b e o r g a n iz a r su m e m o r ia y e n la z a r
n o m b r e s v ie n e d e t e r m in a d a p o r las re s p u e s ta s a las sig u ie n tes p reg u n ta s:

1. ¿ P u e d e n ser re c u rs iv o s los p ro c e d im ie n to s ?
2. ¿ Q u é o c u r r e c o n los v alo res d e lo s n o m b r e s locales c u a n d o el c o n tr o l regresa d e
u n a a c tiv a c ió n d e u n p r o c e d im ie n to ?
3. ¿ P u e d e u n p r o c e d im ie n to h a c e r referen cia a n o m b r e s n o locales?
4. ¿ C ó m o se p a sa n los p a r á m e tr o s c u a n d o se lla m a a u n p r o c e d im ie n to ?
5. ¿Se p u e d e n p a s a r p r o c e d im ie n to s c o m o p a r á m e tr o s ?
6. ¿Se p u e d e n d e v o lv e r p r o c e d im ie n to s c o m o resu ltad o s?
7. ¿Se p u e d e a s ig n a r d i n á m i c a m e n t e la m e m o r ia b a jo u n c o n tr o l del p ro g ra m a ?
8. ¿Se d e b e d c s a s ig n a r e x p líc ita m e n te la m e m o ria ?

E n el resto d e este c a p ítu lo se e s tu d ia el r e s u lta d o d e estas c u e s tio n e s e n el sistem a


d e a p o y o d e la eje c u c ió n , n e c e s a rio p a ra u n d e t e r m in a d o le n g u a je d e p ro g ra m a c ió n .

7 .2 O R G A N I Z A C I O N D E L A M E M O R I A

La o rg a n iz a c ió n d e la m e m o r ia p a r a la e je c u c ió n d e esta secció n se p u e d e u tiliz ar


p a r a le n g u a je s c o m o F O R T R A N . P ascal y C.

S u b d iv isió n de la m e m o ria d u r a n te la ejecución

S u p ó n g a se q u e el c o m p ila d o r o b tie n e u n b lo q u e d e m e m o r ia del s is te m a o p e r a tiv o


p a r a q u e se e je c u te el p r o g r a m a c o m p ila d o . S e g ú n el a n álisis d e la ú ltim a sección,
esta m e m o r ia p a r a el m o m e n t o d e la e je c u c ió n d e b e e s ta r s u b d iv id id a d e m o d o q u e
p u e d a albergar:

1. el c ó d ig o o b je to g e n e ra d o .
2. los o b je to s d e d a t o s y
3. u n a c o n tr a p a r tid a d e la p ila d e c o n tr o l p a r a reg istra r las a c tiv a c io n e s d e p ro c e ­
d im ie n to s .
7 .2 O R G A N IZ A C IO N DE LA M E M O R IA 409

El código objeto generado tiene un determ inado tam año en el momento de la


com pilación, así que el com pilador puede colocarlo estáticamente en una zona, tal
vez en el extrem o in ferio r de la m em oria. D e m anera sim ilar, tap>bién se puede co­
nocer el tam año de algunos de los datos en el m om ento de la com pilación, y por
lanto tam bién se pueden colocar en una zona estáticamente, com o se muestra en la
figura 7.7. U na razón para asignar estáticamente tantos datos com o sea posible es
que las direcciones de dichos objetos se pueden com pilar al código objeto. Todos los
objetos de datos en F O R T R A N pueden asignarse estáticamente.
Las im plantaciones de lenguajes como Pascal y C utilizan am pliaciones de la pila
de control para gestionar las activaciones de los procedim ientos. C uando ocurre una
llam ada, se interrum pe la ejecución de una activación y se guarda en la p ila la in ­
form ación sobre el estado de la m áquina, com o el valor del contador del programa
y los registros de dicha m áquina. C uando el control regresa de la llam ada, se puede
reiniciar la activación después de alm acenar los valores de los registros relevantes y
colocar el contador del program a en el punto situado inm ediatam ente después de la
llam ada. Los datos cuyas duraciones estén contenidas en la de una activación se
pueden colocar en la pila, ju n to con otra inform ación asociada con la activación.
Esta estrategia se estudia en la siguiente sección.

Código

Datos estáticos

-----------------------------------------------
Pila

J
1 _
Montículo

Fig. 7.7. Subdivisión típica de la memoria durante la ejecución en áreas de código y de


datos.

U n área distinta de la m em oria para el m om ento de la ejecución, llam ada m on­


tículo, guarda el resto de la inform ación. Pascal perm ite que los datos se asignen d u ­
rante el control del program a, com o se estudia en la sección 7.7; la m em oria para
dichos datos se toma del m ontículo. Las im plantaciones de lenguajes en los que las
duraciones de las activaciones no se pueden representar con un árbol de activacio­
nes pueden utilizar la pila para guardar la inform ación sobre las activaciones. La
form a controlada en que se asignan y desasignan los datos en una pila hace que sea
menos costoso colocar los datos en la pila que en el m ontículo.
Los tamaños de la pila y del m ontículo pueden variar durante la ejecución del
programa, así que se colocan en los extrem os opuestos de la m em oria en la figura
7.7, donde pueden crecer el uno hacia el otro convenientem ente. Pascal y C nece-
410 A M B IE N T E S P A R A EL M O M E N T O DE LA EJECUCION

silan a m b o s u n a p ila y u n m o n tíc u lo d u r a n te la e je c u c ió n , p e r o n o así to d o s los len­


guajes.
P o r n o r m a , las pilas crece n h acia a b a jo . E s d e c ir, el “ to p e " d e la p ila se d ib u ja
h acia la p a r te in f e r io r d e la p á g in a . C o m o la s d ir e c c io n e s d e m e m o r i a a u m e n t a n
c o n f o r m e se re c o rre la p ág in a, el “c r e c im ie n to h a c ia a b a jo " significa h a c ia d ire c c io ­
nes su p erio res. Si tope m a r c a el to p e d e la p ila , se p u e d e n c a lc u la r los d e s p la z a m ie n ­
to s d e s d e el to p e d e la p ila re s ta n d o el d e s p la z a m ie n to a tope. C o n m u c h a s m á q u i­
nas este c á lc u lo se p u e d e rea liz a r c o n eficacia m a n t e n i e n d o el v a lo r d e to p e en un
registro. E n to n c e s , la s d ire c c io n e s d e la p ila se p u e d e n r e p r e s e n ta r c o m o d e s p la z a ­
m ie n to s d e s d e el to p e \

R e g istro s d e activ ación

La in fo rm a c ió n n ec e sa ria p a r a u n a sola e je c u c ió n d e u n p r o c e d im ie n to se c o n sig u e


u tiliz a n d o un b lo q u e c o n tig u o d e m e m o r ia lla m a d o registro d e activación o m arco ,
q u e c o n s ta del c o n j u n t o d e c a m p o s q u e se m u e s tr a e n la figura 7.8. N o to d o s los
le n g u a je s ni to d o s los c o m p ila d o r e s u tiliz a n la to ta lid a d de e s to s c a m p o s . A m e n u d o
los reg istro s p u e d e n s u s titu ir u n o o m á s c a m p o s . P a ra le n g u a je s c o m o P ascal y C.
n o r m a l m e n t e se in tr o d u c e el re g istro d e a c tiv a c ió n d e u n p r o c e d im ie n to e n la pila
d e e je c u c ió n c u a n d o se lla m a al p r o c e d im ie n to y se e x tra e d e la p ila c u a n d o el c o n ­
tro l regresa al a u t o r d e la lla m a d a .
1.a fin alid ad d e los c a m p o s d e u n re g istro d e a c tiv a c ió n es la sig u ie n te , c o m e n ­
z a n d o p o r el c a m p o p a r a lo s v alo res te m p o ra le s .

1. L o s v alo res te m p o ra le s , c o m o los q u e su rg en e n la e v a lu a c ió n d e ex p resio n es, se


a lm a c e n a n e n el c a m p o p a r a v a lo re s te m p o ra le s.

2. El c a m p o p a r a d a t o s locales g u a r d a los d a to s lo cales a u n a e je c u c ió n d e u n p r o ­


c e d im ie n to . L a d isp o sic ió n in te r n a d e este c a m p o se e s tu d ia m á s a d e la n te .

3. El c a m p o p a r a el e s ta d o g u a r d a d o d e la m á q u in a c o n tie n e in f o r m a c ió n so b re el
e s ta d o d e la m á q u in a j u s t o a n te s d e q u e sea lla m a d o el p r o c e d im ie n to . E sta in ­
f o r m a c i ó n in c lu y e los v a lo re s d e l c o n t a d o r del p r o g r a m a y lo s re g is tro s d e la
m á q u in a q u e d e b e n re p o n e rs e c u a n d o el c o n tr o l regrese del p r o c e d im ie n to .

4. En al secció n 7 .4 se u tiliz a el enlace de acceso o p c io n a l p a r a h a c e r re fe re n c ia a


los d a to s n o locales g u a r d a d o s e n o tr o s reg istro s d e a c tiv a c ió n . P a ra u n len g u aje
c o m o F O R T R A N , n o se n e c e s ita n los e n la c e s d e acce so p o r q u e los d a to s n o lo­
cales se m a n tie n e n e n u n lu g a r fijo. P ascal n ecesita los e n la c e s d e acceso , o el
m e c a n is m o d e e s tr u c tu r a d e d a to s tip o display.

' La o r g a n iz a c ió n d e la figura 7 .7 s u p o n e q u e la m e m o r ia para la e je c u c ió n c o n sta d e u n s o lo blo­


q u e c o n t ig u o d e m e m o r ia o b te n id o al in ic io d e la e je c u c ió n . E sta s u p o s ic ió n im p o n e u n lim it e fijo
a la su m a d e lo s ta m a ñ o s d e la p ila y d e l m o n tíc u lo . S i e l lim ite e s lo b a sta n te a m p lio c o m o para
q u e ra ra m en te s e so b re p a se, p u e d e q u e resu lte d e m a sia d o a m p lio para la m a y o r ía d e lo s p rogram as.
La a lte r n a tiv a d e e n la z a r o b je to s e n la pila y e l m o n t íc u lo p u e d e e n c a r e c e r e l s e g u im ie n to d e l tope
d e la p ila . A d e m á s, p u e d e q u e la m á q u in a o b je to fo m e n te u n a d ife r e n te c o lo c a c ió n d e áreas. Por
e je m p lo , a lg u n a s m á q u in a s s ó lo p e r m ite n d e s p la z a m ie n to s p o s itiv o s d e sd e u n a d ir e c c ió n d e u n re­
gistro.
7.2 O R G A N I Z A C I O N D E LA M E M O R I A 411

v a lo r d e v u e lto

p a r á m e tr o s a c tu a le s

e n la c e d e c o n tr o l o p c io n a l

e n la c e d e a c c e s o o p c io n a l

e s ta d o d e la m a q u in a g u a r d a d o

d a to s lo c a le s

te m p o ra le s
— — ■■ ■■ - i■ ■. ■ ■

Fig. 7.8. U n registro d e activación general.

5. E! enlace d e control o p c io n a l a p u n t a al re g istro d e a c tiv a c ió n d e l a u t o r d e la lla­


m ada.
6. El c a m p o p a r a los p a r á m e tr o s a c tu a le s es u tiliz a d o p o r el p r o c e d im ie n to a u t o r
d e la lla m a d a p a r a p r o p o r c io n a r p a r á m e tr o s al p r o c e d im ie n to q u e recib e la lla­
m a d a . E xiste e s p a c io p a r a los p a r á m e tr o s e n el reg istro d e a c tiv a c ió n , p e r o e n la
p rá c tic a los p a r á m e tr o s se p a s a n e n los reg istro s d e la m á q u in a p a r a u n a m a y o r
eficiencia.
7. El c a m p o p a ra el v a lo r d e v u e lto es u tiliz a d o p o r el p r o c e d im ie n to q u e recib e la
lla m a d a p a ra d e v o lv e r u n v alo r al p r o c e d im ie n to a u to r d e la llam ad a . D e n u ev o ,
e n la p ra c tic a este v a lo r se su ele tr a s la d a r e n u n reg istro p a ra m a y o r eficiencia.
L o s t a m a ñ o s d e c a d a u n o d e e s to s c a m p o s se p u e d e n d e t e r m in a r e n el m o m e n t o en
q u e e s lla m a d o u n p r o c e d im ie n to . D e h e c h o , los t a m a ñ o s d e casi to d o s los c a m p o s
se p u e d e n d e t e r m i n a r e n el m o m e n t o d e la c o m p i l a c i ó n . E x iste u n a e x c e p c ió n
c u a n d o u n p r o c e d im ie n to tie n e u n a m a tr iz local c u y o t a m a ñ o v e n g a d e te r m in a d o
p o r el v a lo r d e u n p a r á m e t r o a c t u a l, d i s p o n i b l e ú n i c a m e n t e c u a n d o el p r o c e d i ­
m i e n to sea lla m a d o d u r a n t e la e je c u c ió n . V é a se la sección 7.3 p a r a la a s ig n a c ió n d e
d a to s d e lo n g itu d v a ria b le e n u n re g istro d e a c tiv ació n .

D isp o sició n e s p a c ia l d e los d a to s lo cales e n el m o m e n to d e la co m p ilació n


S u p ó n g a s e q u e la m e m o r ia p a r a la e je c u c ió n se o b tie n e e n b lo q u e s d e b y te s c o n ti­
g u os. d o n d e u n b y te es la m í n i m a u n id a d d e m e m o r ia d ire c c io n a b le . E n m u c h a s
m a q u in a s , u n b y te c o n s ta d e o c h o b its y c ie r to n ú m e r o d e b y te s f o r m a n u n a p a la b ra
d e m á q u in a . L o s o b je to s m u ltib v te se a l m a c e n a n e n b y te s c o n s e c u tiv o s y se les d a
la d ire c c ió n d e l p r im e r byte.
L a c a n tid a d d e m e m o r ia n e c e s a ria p a r a u n n o m b r e v ie n e d e te r m in a d a p o r su
tip o . U n ti p o d e d a t o s e le m e n t a l, c o m o u n c a r á c te r , u n e n t e r o o u n re a l, g e n e ra l­
m e n te se p u e d e a l m a c e n a r e n u n n ú m e r o e n t e r o d e b ytes. L a m e m o r ia p a r a un agre­
g a d o , c o m o u n a m a triz o u n reg istro , d e b e s e r lo s u f ic ie n te m e n te g r a n d e c o m o p a ra
d a r c a b id a a to d o s s u s c o m p o n e n te s . P a r a a c c e d e r fá c ilm e n te a lo s c o m p o n e n te s , la
412 A M BIEN TES PA R A EL M O M E N T O D E LA EJEC U C IO N

m e m o r i a p a r a lo s a g r e g a d o s se c o l o c a g e n e r a l m e n t e e n u n b l o q u e c o n t i g u o d e bytes.
V é a n s e la s s e c c i o n e s 8 .2 y 8 .3 si s e q u i e r e n d e ta lle s .
E l c a m p o p a r a lo s d a t o s lo c a le s se p e r f ila c o n f o r m e se e x a m i n a n la s d e c la r a c io ­
n e s e n u n p r o c e d i m i e n t o d u r a n t e la c o m p i l a c i ó n . L o s d a t o s d e lo n g i t u d v a r i a b l e se
m a n t i e n e n f u e r a d e e s te c a m p o . S e h a c e u n r e c u e n t o d e la s p o s ic i o n e s d e m e m o r i a
a s ig n a d a s a d e c l a r a c i o n e s a n t e r i o r e s . S e g ú n el r e s u l t a d o se d e t e r m i n a u n a d ir e c c ió n
rela tiva d e la m e m o r i a p a r a u n v a l o r lo c a l c o n r e s p e c to a a l g u n a p o s ic ió n , c o m o el
c o m i e n z o d e l r e g is tr o d e a c t iv a c i ó n . L a d i r e c c i ó n r e la tiv a , o d e s p la z a m ie n to , e s la
d if e r e n c ia e n t r e la s d i r e c c i o n e s d e e s a p o s i c i ó n y d e l o b j e t o d e d a to s .
L a d is p o s ic i ó n e s p a c ia l d e la m e m o r i a p a r a lo s d a t o s e s t á m u y i n f l u i d a p o r las
li m i t a c i o n e s d e d i r e c c i o n a m i e n t o d e la m á q u i n a o b j e t o . P o r e j e m p l o , la s in s tr u c c io ­
n e s p a r a s u m a r e n t e r o s p u e d e n s u p o n e r q u e lo s e n t e r o s e s t á n a lin e a d o s , e s d e c ir,
c o l o c a d o s e n p o s ic i o n e s d e m e m o r i a c o m o u n a d i r e c c i ó n d iv is ib le p o r 4 . A u n q u e
u n a m a t r i z d e d i e z c a r a c t e r e s s ó lo n e c e s ita lo s b y te s s u f ic ie n te s p a r a g u a r d a r d ie z
c a r a c t e r e s , u n c o m p i l a d o r p u e d e p o r t a n t o c o l o c a r 12 b y te s , d e j a n d o s in u t i l i z a r
2 b y te s . E l e s p a c i o q u e n o se u s a p o r c o n s i d e r a c i o n e s d e a l i n e a m i e n t o se ll a m a re­
lleno. C u a n d o e s te e s p a c i o es m u y p e q u e ñ o , u n c o m p i l a d o r p u e d e e m p a q u e ta r d a to s
d e m o d o q u e n o q u e d a n i n g ú n r e lle n o ; e n t o n c e s p u e d e s e r n e c e s a r io p r a c t i c a r in s ­
t r u c c i o n e s a d i c io n a l e s d u r a n t e la e j e c u c ió n p a r a s i t u a r lo s d a t o s e m p a q u e t a d o s d e
m o d o q u e s e p u e d a n m a n i p u l a r c o m o si e s t u v i e r a n a l i n e a d o s d e f o r m a a p r o p i a d a .

E j e m p lo 7 .3 . L a f ig u r a 7 .9 e s u n a s im p l if ic a c ió n d e la d is p o s ic ió n d e lo s d a t o s u ti­
li z a d a p o r lo s c o m p i l a d o r e s p a r a C p a r a d o s m á q u i n a s a la s q u e s e l l a m a r á n M á ­
q u in a 1 y M á q u in a 2. C p ro p o rc io n a tre s ta m a ñ o s d e n ú m e r o s e n te ro s, q u e se d e­
c l a r a n u t i l i z a n d o la s p a l a b r a s c l a v e s h o r t , in t y l o n g . L os c o n ju n to s de
i n s t r u c c i o n e s d e la s d o s m á q u i n a s i n d i c a n q u e e l c o m p i l a d o r p a r a l a M á q u i n a 1
a s ig n a 16, 32 y 3 2 b i t s p a r a lo s t r e s t a m a ñ o s d e e n t e r o s , m i e n t r a s q u e el c o m p i l a d o r
p a r a la M á q u i n a 2 a s ig n a 2 4 , 4 8 y 6 4 b its , r e s p e c t i v a m e n t e . P a r a c o m p a r a r la s m á ­
q u i n a s , e n la f ig u r a 7 .9 lo s t a m a ñ o s s e m i d e n e n b its , a u n q u e n i n g u n a d e las d o s
m á q u i n a s p e r m i t a d i r e c c i o n a r b its d i r e c t a m e n t e .
L a m e m o r i a d e la M á q u i n a 1 e s t á o r g a n i z a d a e n b y te s q u e c o n s t a n d e 8 b i t s c a d a
u n o . A u n q u e c a d a b y t e t i e n e u n a d i r e c c i ó n , el c o n j u n t o d e i n s t r u c c i o n e s p r o p i c i a
q u e lo s e n t e r o s d e ti p o s h o r t s e p o s i c i o n e n h a c i a b y te s c u y a s d i r e c c io n e s s e a n p a ­
re s , y q u e lo s d e t i p o i n t se p o s i c i o n e n e n d i r e c c io n e s d iv is ib le s p o r 4 . E l c o m p i ­
l a d o r c o l o c a los e n t e r o s d e t i p o s h o r t e n d i r e c c io n e s p a r e s , a u n q u e t e n g a q u e s a l­
t a r s e u n b y te d e r e ll e n o e n el p r o c e s o . P o r t a n t o , se p u e d e n a s i g n a r c u a t r o b y te s ,
f o r m a d o s p o r 32 b its p a r a u n c a r á c t e r s e g u id o d e u n e n t e r o t i p o s h o r t .
E n la M á q u i n a 2 , c a d a p a l a b r a c o n s t a d e 6 4 b its, y s e p e r m i t e n 2 4 b i t s p a r a la
d ir e c c ió n d e u n a p a l a b r a . E x i s t e n 6 4 p o s ib il id a d e s p a r a lo s b its in d i v i d u a l e s d e n t r o
d e u n a p a l a b r a , d e m o d o q u e se n e c e s i ta n 6 b its a d i c io n a l e s p a r a d is tin g u ir lo s . D e ­
b i d o a l d is e ñ o , u n a p u n t a d o r a u n c a r á c t e r e n la M á q u i n a 2 u ti liz a 3 0 b i t s ( 2 4 p a r a
e n c o n t r a r la p a l a b r a y 6 p a r a la p o s ic ió n d e l c a r á c t e r d e n t r o d e la p a la b r a ) .
L a o r i e n t a c i ó n h a c i a p a l a b r a s d e l c o n j u n t o d e i n s t r u c c i o n e s d e la M á q u i n a 2 h a
o b l i g a d o a l c o m p i l a d o r a a s i g n a r u n a s o l a p a l a b r a c o m p l e t a a la v ez, a u n q u e b a s t a ­
ría c o n m e n o s b i t s p a r a r e p r e s e n t a r t o d o s lo s p o s ib le s v a lo r e s d e e s e t i p o ; p o r e j e m ­
p lo , s ó lo se n e c e s i ta n 8 b i t s p a r a r e p r e s e n t a r u n c a r á c te r . P o r t a n t o , d u r a n t e la ali-
7.3 E S T R A T E G I A S P A R A LA A S I G N A C I O N D E M E M O R I A 413

n e a c ió n . en la fig u ra 7.9 se m u e s tr a n 6 4 b its p a r a c a d a tip o . D e n t r o d e c a d a p alab ra,


lo s b its p a r a c a d a ti p o b á s ic o e s tá n e n p o s ic io n e s c o n o c id a s . P a r a u n c a r á c te r se­
g u id o d e u n e n te r o d e tip o s h o r t . se a s ig n a ría n d o s p a la b r a s c o m p u e s t a s p o r 128
bits, y el c a r á c te r u tilizaría só lo 8 d e los b its d e la p r im e r a p a la b ra y el e n te r o tip o
s h o r t só lo 24 d e los b its d e la s e g u n d a p a la b ra . □

T a m a ñ o (Bits) A linea ción (Bits)


T1 IrVJ
IDíT
M á q u in a 1 M á q u in a 2 M á q u in a l M á q u in a 2

c h a r ............................. 8 8 8 64a
s h o r t ........................... 16 24 16 64
i n t ................................ 32 48 32 64
l o n g .............................. 32 64 32 64
f l o a t ........................... 32 64 32 64
d o u b l e ......................... 64 128 32 64
a p u n ta d o r a carácter . 32 30 32 64
o tro s a p u n ta d o re s . . . 32 24 32 64
e s t r u c t u r a s .................... £8 £64 32 64

J Los caracteres en una matriz se alinean cada 8 bits.

Fig. 7.9. D istribuciones espaciales d e d ato s utilizados p o r d o s co m p ilad o res d e C.

7 .3 E S T R A T E G I A S P A R A L A A S I G N A C I O N D E M E M O R I A

E n c a d a u n a d e las tres áreas d e d a to s d e la figura 7.7 se u tiliza u n a estrateg ia d is ­


tin ta p a ra la a s ig n a c ió n d e m e m o ria .

1. L a asig n ac ió n está tic a d is p o n e la m e m o r ia p a r a to d o s los o b je to s d e d a to s d u ­


r a n te la c o m p ila c ió n .

2. L a asig n ac ió n p o r m e d io d e u n a p ila tr a ta la m e m o r ia e n e je c u c ió n c o m o u n a
pila.

3. L a asig n ac ió n p o r m e d io d e u n m o n t íc u l o asig n a y d e sa sig n a la m e m o r ia c o n ­


fo rm e se necesita d u r a n te la ejecu ció n a p a rtir d e u n á r e a d e d a to s c o n o c id a c o m o
m o n tíc u lo .

E stas estrateg ias d e a s ig n a c ió n se a p lic a n en esta sección a los reg istro s d e a c ti­
v ació n . T a m b ié n se d e s c rib e c ó m o a c c e d e el c ó d ig o o b je to d e u n p r o c e d im ie n to a
la m e m o r ia e n la z a d a a u n n o m b r e local.

A sig n ació n e s tá tic a

E n la asig n ac ió n está tic a , los n o m b r e s se ligan a la m e m o r ia d u r a n te la c o m p ila c ió n


del p ro g ra m a , a s í q u e n o es n e c e s a rio un p a q u e te d e a p o y o p a r a la eje c u c ió n . C o m o
lo s e n la c e s n o c a m b ia n d u r a n t e la e je c u c ió n , c a d a vez q u e se a c tiv a u n p ro c e d í-
414 A M B IE N T E S PA R A EL M O M E N T O DE LA EJE C U C IO N

m iento, sus nom bres se enlazan a las m ism as posiciones de m em oria. Esta pro­
piedad perm ite que los valores de los nom bres locales sean retenidos durante las
activaciones de un procedim iento. Es decir, cuando el control regresa a un proce­
dim iento, los valores de las variables locales son los m ism os que cuando el control
salió por últim a vez.
Según el tipo de un nom bre, el com pilador determ ina la cantidad de m em oria
que debe reservarse para dicho nom bre, com o se vio en la sección 7.2. L a dirección
de esta m em oria consta de un desplazam iento desde un extrem o del registro de ac­
tivación del procedim iento. El com pilador debe d ecid ir a dónde van los registros de
activación, con respecto al código objeto y a otro registro de activación. U na vez
tom ada esta decisión, queda determ inada la posición de cada registro de activación,
y por tanto de la m em oria para cada nom bre dentro del registro. D urante la com ­
pilación se pueden ahora proporcionar las direcciones en las que el código objeto
puede e n co n trar los datos con los que opera. T am b ié n se conocen d u ran te la
co m p ilació n las direcciones en las que se guarda la inform ación cuando se produce
la llam ada a un procedim iento.
Sin embargo, utilizar únicam ente la asignación estática conlleva algunas lim ita­
ciones.

1. E l tam año de un objeto de datos y las lim itaciones en cuanto a su posición en


la m em oria deben conocerse en el m om ento de la com pilación.
2. Los procedim ientos recursivos son escasos, porque todas las activaciones de un
procedim iento utilizan los m ism os enlaces para los nom bres locales.
3. Las estructuras de datos no se pueden crear dinám icam ente ya que no hay un
m ecanism o para la asignación de m em oria durante la ejecución.

F O R T R A N fue diseñado para que adm itiera la asignación estática de m em oria.


U n programa en F O R T R A N consta de un program a p rin cip a l, subrutinas y funcio­
nes (pueden llam arse todos procedim ientos), com o en el program a en F O R T R A N
7 7 de la Figura 7.10. U tilizando la organización de la m em oria de la figura 7.7, la
disposición del código y los registros de activación para dich o program a se muestran
en la figura 7.11. Dentro del registro de activación para c n s u m e (léase “ consum e”
— a F O R T R A N no le gustan los identificadores largos— ), hay espacio para las va­
riables locales b u f , s i g t e y c. La m em oria enlazada con b u f g in rd a una cadena
de cincuenta caracteres. V a seguida de espacio para guardar un valor entero para
S IG T E y un valor de tipo c h a r a c t e r para C. E l hecho de que s i g t e tam bién esté
declarado dentro de p r d u c e no supone ningún problem a, porque las variables lo ­
cales de los dos procedim ientos tienen espacio en sus respectivos registros de acti­
vación.
C om o se conocen los tam años del código ejecutable y de los registros de activa­
ción en el momento de la com pilación, pueden darse organizaciones de m em oria
diferentes a la de la figura 7.11. U n com pilador de F O R T R A N puede colocar el re­
gistro de activación de un procedim iento ju n to con el código para dich o procedi­
miento. En algunos sistemas de com putación, se podría no especificar la posición
relativa de los registros de activación y perm itir al director de enlace que enlace los
registros de activación y el código ejecutable.
7 .3 E ST R A T E G IA S l'A R A I A A S IG N A C IO N 1)1 M I M< M U A 1IA

Ejem plo 7.4 . E l program a de la figura 7.10 se basa en que los valores de las vana
bles locales quedan retenidos durante las activaciones de los procedim ientos l in.i
proposición s a v e en F O R T R A N 77 especifica que el valor de una variable local al
p rin cip io de una activación debe ser el m ism o que al final de la últim a activación
Se pueden especificar los valores in iciales para dichas variables utilizand o la propo
sición DATA.

(1) PROGRAM CNSUME


(2) CHARACTER * 50 BUF
(3) INTEGER SIGTE
(4) CHARACTER C , PRDUCE
(5) DATA S I G T E / ! / , BUF / ' 7
(6) 6 C = P R D U C E ()
(7) BUF(SIGTE: S IG T E ) = C
(8) SIGTE = SIGTE + 1
(9) IF (C .NE. ' ' ) GOTO 6
(10) WRITE ( * , '( A )') BUF
(11) END

(12) CHARACTER F UNC TI ON P R D U C E ( )


(13) C HARACTER * 80 BUFFER
(14) INTEGER S IG T E
(15) SAVE B U F F E R , SIGTE
(16) DATA S I G T E / 8 l /
(17) IF ( SIGTE .GT. 80 ) T HE N
(18) READ (* /(A )') BUFFER
(19) SIGTE = 1
(20) END IF
(21) P R D UC E = BU FFER(SIG TE;SIG TE)
(22) SIGTE = SIGTE + I
(23) END

Fig. 7.10. U n programa en F O R T R A N 77.

L a proposición de la línea 18 del procedim iento P R D U C E lee sólo una línea de


texto a la vez dentro de un buffet. El procedim iento produce caracteres sucesivos
para cada vez que se activa. El program a p rin cip al c n s u m e tam bién tiene un b u lla
en el que acum ula caracteres hasta que aparezca un espacio en blanco. C o n la en
trada
hola mundo

los caracteres devueltos por las activaciones de PRDUCE se muestran en la figura / I V


el resultado del program a es
hola
416 A M B IE N T E S P A R A EL M O M E N T O D E L A EJECUCION

Codigo de C N S U M E
T
Código

Código de P R D U C E

T 4 -
Registro de activación
C H A R A C T E R * 5 0 BUF
para C N S U M E
INTEGER SIGTE
CHARACTER C D a t o s E státicos

Registro de activación
CHARACTER*80 BUFFER para P R D U C E
INTEGER SIGTE

Fig. 7.11. A lm ac e namiento estático para identificadores locales de un programa en


F O R T R A N 77.

El buffer en el q u e P R D U C E lee las líneas debe conservar su valor entre varias


activaciones. L a proposición s a v e d e la línea 15 garantiza q u e c u a n d o el control
regrese a P R D U C E , las variables locales b u f f e r y s i g t e tengan los m i s m o s valores
q u e tenían c u a n d o el control salió del procedimiento por última vez. L a primera
vez q u e el control llega a P R D U C E . se t o m a el valor de la variable local S I G T E de
la proposición d a t a d e la línea 16. D e esta forma, a s i g t e se le asigna el valor
inicial 81. □

PRDUCE PRDUCE PRDUCE PRDUCE PRDUCE


h O 1 O

Fig. 7.12. Caracteres devueltos por las activaciones de p r o d u c e .

A sig n ació n p o r m edio d e u n a pila

La asignación por m e d i o de u n a pila se basa en la ¡dea de u n a pila de control; la


m e m o r i a se organiza c o m o una pila, y los registros de activación se introducen y se
sacan c u a n d o las activaciones c o m i e n z a n y terminan, respectivamente. L a m e m o r i a
para las variables locales en cada llamada de u n procedimiento está contenida en el
registro de activación de dicha llamada. D e ese m o d o , en cada activación, las varia­
bles locales se enlazan a u n a m e m o r i a nueva, puesto q u e se introduce u n n u e v o re­
gistro de activación en la pila al realizar u n a llamada. A d e m á s , los valores de las
variables locales se b o rran c u a n d o finaliza la activación; es decir, los valores se pier­
7.3 ESTRATEG IAS P A R A LA A SIG N A C IO N D E M EM O R IA 417

d e n p o r q u e la m e m o r ia p a r a las v a ria b le s lo cales d e s a p a re c e c u a n d o se e x tra e el re­


g is tro d e a c tiv ació n .
P r im e r o se d e sc rib e u n a fo rm a d e a s ig n a c ió n p o r m e d io d e u n a p ila e n la q u e se
c o n o c e n los t a m a ñ o s d e to d o s los registros d e a c tiv a c ió n e n el m o m e n t o d e la c o m ­
p ila c ió n . M á s a d e l a n t e se c o n s i d e r a n lo s c a s o s e n q u e s ó lo se d i s p o n e e n el m o ­
m e n t o d e la c o m p ila c ió n d e in f o r m a c ió n in c o m p le ta a c e rc a d e lo s ta m a ñ o s .
S u p ó n g a s e q u e el reg istro to p e m a r c a el to p e d e la pila. D u r a n te la e je c u c ió n , u n
re g istro d e a c tiv a c ió n se p u e d e a s ig n a r y d e s a s ig n a r i n c r e m e n t a n d o y d e c r e m e n -
ta n d o tope, re s p e c tiv a m e n te , p o r el t a m a ñ o del registro. Si el p r o c e d im ie n to c tien e
u n reg istro d e a c tiv a c ió n d e t a m a ñ o a. e n to n c e s to p e se in c r e m e n ta p o r a j u s t o a n te s
q u e se e je c u te el c ó d ig o o b je to d e c . C u a n d o el c o n tr o l reg resa d e c , to p e se d ccre-
m e n t a p o r a.

E je m p lo 7 .5 . E n la figura 7 .1 3 se m u e s tr a n los reg istro s d e a c tiv a c ió n q u e se in tr o ­


d u c e n y se s a c a n e n la p ila p a r a la e je c u c ió n c u a n d o el c o n tr o l fluye a tr a v é s del
á rb o l d e a c tiv a c io n e s d e la fig u ra 7.3. L as lín eas p u n te a d a s en el á rb o l v a n a a c tiv a ­
c io n e s q u e h a n te r m in a d o . L a e je c u c ió n c o m ie n z a c o n u n a a c tiv a c ió n d e l p ro c e d i­
m i e n to o . C u a n d o el c o n tro l a lc a n z a la p r im e r a lla m a d a e n el c u e r p o d e o , el p ro ­
c e d im ie n to 1 se activ a y s u registro d e a c tiv ació n se m e te en la pila. C u a n d o el co n tro l
regresa d e esta a c tiv a c ió n , el reg istro se sa c a d e j a n d o ú n ic a m e n te el registro o e n la
pila. E n la a c tiv a c ió n d e o . el c o n tr o l llega e n to n c e s a u n a lla m a d a d e c c o n p a r á ­
m e tr o s a c tu a le s 1 y 9 . y se asig n a u n reg istro d e a c tiv a c ió n e n el to p e d e la pila p a r a
u n a a c tiv a c ió n d e c . S ie m p r e q u e el c o n tr o l esté e n u n a a c tiv a c ió n , su registro d e
a c tiv a c ió n e s ta rá e n el to p e d e la pila.
Se p r o d u c e n v a ria s a c tiv a c io n e s e n t r e los ú ltim o s d o s e s ta d o s d e la fig u ra 7.13.
E n el ú l t i m o e s ta d o d e la fig u ra 7 .1 3 . las a c tiv a c io n e s p ( 1 , 3 ) y c ( 1 , 0 ) h a n c o ­
m e n z a d o y h a n t e r m i n a d o d u r a n te la d u r a c ió n d e c ( 1 , 3 ). d e m o d o q u e s u s regis­
tr o s d e a c tiv a c ió n h a n e n t r a d o y s a lid o d e la pila, d e j a n d o el reg istro d e a c tiv ació n
p a r a c ( 1 , 3 ) e n el to p e . □

E n u n p r o c e d im ie n to e n P ascal se p u e d e d e t e r m in a r u n a d ire c c ió n re la tiv a p a ra


los d a to s lo cales e n u n registro d e a c tiv a c ió n , c o m o se vio e n la secció n 7.2. D u r a n te
la eje c u c ió n , s u p ó n g a s e q u e to p e m a r c a la p o sic ió n del final d e u n registro. L a d i­
recció n d e u n n o m b r e local x e n el c ó d ig o o b je to p a ra el p r o c e d im ie n to p u e d e es­
crib irse p o r t a n t o c o m o d x (tope), p a r a in d ic a r q u e los d a to s e n la z a d o s a x p u e d e n
e n c o n tr a r s e en la p o sició n o b te n id a al s u m a r d x al v a lo r del registro tope. O b sérv ese
q u e las d ir e c c io n e s p u e d e n c o n s id e r a r s e a l t e r n a t i v a m e n t e c o m o d e s p la z a m ie n to s
d e s d e el v a lo r d e c u a l q u ie r o t r o re g istro r q u e a p u n t e a u n a p o sic ió n fija e n el regis­
tr o d e a c tiv ació n .

Secuencia d e llam adas

L as lla m a d a s a p r o c e d im ie n to s se im p la n t a n m e d ia n te la g e n e ra c ió n d e lo q u e se
c o n o c e c o m o secuencias d e lla m a d a s e n el c ó d ig o o b je to . U n a secuencia d e llam ada
asig n a u n registro d e a c tiv a c ió n e in tr o d u c e in f o r m a c ió n d e n t r o d e s u s c a m p o s . U n a
secuencia d e retorno restab lece el e s ta d o d e la m á q u in a p a r a q u e el p r o c e d im ie n to
q u e e fe c tú a la lla m a d a p u e d a c o n t i n u a r su eje c u c ió n .
418 A M B I E N T E S P A R A EL M O M E N T O D E LA E J E C U C I O N

Po sic ió n en e l Á rbol R e g ist r o s de


C o m en ta rio s
d e A ctiv a ció n A c t i v a c i ó n e n l a P ila

M arco para o

Se activa 1

Se h a sacado d e la
pila el m a rc o para 1
y se h a m etido
c(l,9)
C ( 1 # 9 )

1 c (1 , 9 )
* El c o n tro l acab a
d e reg resa r a c ( 1 , 3 )
p(l,9) c (1,3)

^" i
p (1 #3 ) c (1 , 0 )

F ig . 7 .1 3 . A s i g n a c i ó n , p o r m e d i o d e u n a p ila c o n c r e c i m i e n t o h a c i a a b a j o , d e r e g is t r o s
d e a c tiv a c ió n .

L as s e c u e n c ia s d e lla m a d a s y los reg istro s d e a c tiv a c ió n s o n d iferen tes, in clu so


p a r a im p la n ta c io n e s del m is m o len g u aje. El c ó d ig o e n u n a s e c u e n c ia d e lla m a d a a
m e n u d o está d iv id id o e n el p r o c e d im ie n to q u e h a c e la lla m a d a y el p r o c e d im ie n to
q u e recibe la lla m a d a . N o h a y u n a d iv isió n e x a c ta e n tr e el lla m a d o r y el lla m a d o de
7.3 ESTRATEG IAS PARA LA ASIG NA CIO N D E M EM O RIA 419

las ta rc a s d e e je c u c ió n — el len g u aje fu e n te , la m á q u in a o b je to y el s is te m a o p e r a ­


tiv o im p o n e n re q u isito s q u e p u e d e n h a c e r p re v a le c e r u n a s o lu c ió n so b re la o tr a ;— .
U n p rin c ip io q u e a y u d a al d is e ñ o d e se cu en cias d e lla m a d a s y registros d e activ a­
c ió n es q u e los c a m p o s c u y o s ta m a ñ o s se fijan p r im e ro se co lo can en el m e d io . E n el
registro d e a c tiv ació n general de la figura 7.8. el e n la c e d e c o n tro l, el en lace d e acceso
y los c a m p o s del estad o d e la m á q u in a a p a re c e n e n el m e d io . La decisió n d e utilizar
o n o lo s e n la c e s d e c o n tro l y d e acce so e s p a rte del d is e ñ o del c o m p ila d o r, d e m o d o
q u e esto s c a m p o s se p u e d e n fijar d u r a n te la c o n s tru c c ió n del c o m p ila d o r. Si se g u ard a
e x a c ta m e n te la m is m a c a n tid a d d e in fo rm a c ió n sobre el e s ta d o d e la m á q u in a para
c a d a activ ació n , e n to n c e s el m is m o código p u e d e a lm a c e n a r y restablecer p a r a to d a s
las activacio nes. A d e m á s, a los p ro g r a m a s c o m o los d e p u ra d o re s les resu ltará m á s fá­
cil in te rp re ta r el c o n te n id o d e la pila c u a n d o se p r o d u z c a u n error.
A u n q u e el t a m a ñ o del c a m p o p a ra los v a lo re s te m p o r a le s se fija e n u n d e t e r m i­
n a d o m o m e n t o d e la c o m p ila c ió n , este t a m a ñ o p u e d e n o c o n o c e r s e e n la e ta p a in i­
cial. La g e n e ra c ió n u o p tim a c ió n c u id a d o s a del c ó d ig o p u e d e re d u c ir el n ú m e r o d e
variab les te m p o r a le s q u e n ecesite el p r o c e d im ie n to , d e m o d o q u e , p o r lo q u e se r e ­
fiere a la e ta p a inicial, n o se c o n o c e el t a m a ñ o d e este c a m p o . P o r ta n to , e n el regis­
tr o d e a c tiv a c ió n g en eral, se m u e s tra este c a m p o d e s p u é s d e a q u é l p a r a d a to s lo c a ­
les, d o n d e los c a m b io s e n su t a m a ñ o n o afec ta rá n a los d e s p la z a m ie n to s de los o b je to s
d e d a to s rela tiv o s a los c a m p o s d e l m e d io .
C o m o c a d a lla m a d a tie n e s u s p r o p io s p a r á m e tr o s a c tu a le s, g e n e r a lm e n te el q u e
h a c e la lla m a d a e v a lú a los p a r á m e tr o s a c tu a le s y lo s c o m u n ic a al reg istro d e a c tiv a ­
c ió n del p r o c e d im ie n to re c e p to r d e la lla m a d a . L os m é to d o s p a r a p a s a r p a r á m e tr o s
se e s tu d ia n e n la sección 7.5. E n la pila p a r a la e je c u c ió n , el reg istro d e a c tiv ació n
del lla m a d o r se e n c u e n tr a ju s to d e b a jo del registro del p r o c e d im ie n to lla m a d o , c o m o
se m u e s tra e n la figura 7 .1 4 . E s m e j o r q u e c o lo c a r los c a m p o s p a r a lo s p a r á m e tr o s
y p a ra u n v a lo r d e v u e lto p o te n c ia l in m e d ia t a m e n t e d e s p u é s del registro d e a c tiv a ­
c ió n del q u e h a c e la lla m a d a . A si. el lla m a d o r p u e d e a c c e d e r a esto s c a m p o s utili­
z a n d o d e s p la z a m ie n to s d e s d e el final d e s u p r o p io reg istro de a c tiv a c ió n , sin n e c e ­
s id a d d e c o n o c e r la d is p o s ic ió n c o m p l e t a d e l re g is tro del p r o c e d i m i e n t o lla m a d o .
A d e m á s , el q u e realiza la lla m a d a n o tie n e p o r q u é c o n o c e r los d a to s lo cales o las
v a ria b le s te m p o r a le s del p r o c e d im ie n to q u e recib e la lla m a d a . L a v e n ta ja d e o c u lta r
esta in f o r m a c ió n e s q u e se p u e d e n m a n e ja r p r o c e d im ie n to s c o n u n n ú m e r o v ariab le
d e a rg u m e n to s , c o m o p r i n t f en C. q u e se e s tu d ia rá m á s a d e la n te .
L o s len g u ajes c o m o P ascal e x ig en q u e las m a tric e s locales a u n p r o c e d im ie n to
te n g a n u n a lo n g itu d q u e p u e d a d e te r m in a r s e d u r a n t e la c o m p ila c ió n . E n la m a y o ría
d e lo s c a so s, el t a m a ñ o d e u n a m a tr iz lo c al p u e d e d e p e n d e r del v a lo r d e u n p a r á ­
m e tr o p a s a d o al p r o c e d im ie n to . Si a s í es. n o se p u e d e d e t e r m i n a r el t a m a ñ o d e to ­
d o s lo s d a to s locales al p r o c e d im ie n to h a s ta q u e sea lla m a d o el p r o c e d im ie n to . M ás
a d e la n te en esta secció n se e s tu d ia r á n las té c n ic a s p a r a m a n e ja r d a t o s d e lo n g itu d
variable.

4 Si se lla m a n v e c e s a u n p r o c e d im ie n to , e n t o n c e s la parte d e la s e c u e n c ia d e lla m a d a e n l o s d is tin ­


to s lla m a d o r e s se g en era n v e c e s. S in e m b a r g o , la p a rte d e l p r o c e d im ie n to q u e r e c ib e la lla m a d a es
c o m p a r tid a p o r to d a s la s lla m a d a s, d e m o d o q u e s e g en era s ó lo u n a v e z. P o r ta n to , e s c o n v e n ie n te
in tr o d u c ir c u a n t o se a p o sib le d e la s e c u e n c ia d e lla m a d a e n e l p r o c e d im ie n to rec ep to r d e la lla m a d a .
420 A M B I E N T E S P A R A EL M O M E N T O D E L A E J E C U C I O N

L a sig u ie n te s e c u e n c ia d e lla m a d a está m o tiv a d a p o r el a n álisis a n te r io r . C o m o


en la fig u ra 7 .1 4 , el registro t o p e s p a p u n t a al fin al d e l c a m p o del e s ta d o d e la m á ­
q u i n a e n u n reg istro d e a c tiv a c ió n . El lla m a d o c o n o c e esta p o sic ió n , a s í q u e se le
c o n s id e ra re s p o n s a b le d e a s ig n a r v alo r a t o p e s p a n te s d e q u e el c o n tr o l flu y a al p ro ­
c e d im ie n to re c e p to r d e la lla m a d a . El c ó d ig o p a r a el p r o c e d im ie n to lla m a d o p u e d e
a c c e d e r a s u s v a ria b le s te m p o r a le s y d a to s lo cales u tiliz a n d o d e s p la z a m ie n to s d e sd e
t o p e s p . L a s e c u e n c ia d e lla m a d a es:

p a r á m etr o s y valor d e v u e lto

e n la c e d e c o n tr o l R e g istro d e a c tiv a c ió n
d e l p r o c e d im ie n to
e n la c e s y e sta d o g u a rd a d o
a u to r d e la lla m a d a

te m p o r a le s y d a to s lo c a le s
R esp o n sa b ilid a d
del p r o c e d im ie n to
Hr
a u to r d e la lla m a d a
p a r á m etr o s y valor d e v u e lto

e n la c e d e c o n tr o l R e g istro d e a c tiv a c ió n
d e l p r o c e d im ie n to
e n la c e s y e s ta d o gu ard ad o T recep to r d e la lla m a d a
topesp R e sp o n sa b ilid a d
d e l p r o c e d im ie n to
te m p o r a le s y d a to s lo c a le s rec ep to r d e la lla m a d a

F ig . 7 .1 4 . D i v i s i ó n d e t a r e a s e n t r e e l p r o c e d i m i e n t o a u t o r d e la lla m a d a
y e l p r o c e d i m i e n t o r e c e p t o r d e la l la m a d a .

1. El q u e h a c e la lla m a d a e v a lú a lo s p a r á m e tr o s reales.

2. El q u e h a c e la lla m a d a a lm a c e n a u n a d ir e c c ió n d e reg reso y el v a lo r a n t e r i o r d e


t o p e s p e n el re g istro d e a c tiv a c ió n d e l p r o c e d i m i e n t o lla m a d o . D e s p u é s q u e
efectú a la lla m a d a in c r e m e n ta t o p e s p h a s ta la po sició n m o s tr a d a e n la figura
7.14. E s d ecir, t o p e s p se tra s la d a m á s a llá d e los d a to s locales y la s v aria b les
te m p o r a le s d e l a u t o r d e la lla m a d a y d e los c a m p o s d e p a r á m e tr o s y e s ta d o del
p r o c e d im ie n to llam ad o .

3. El p r o c e d im ie n to re c e p to r d e la lla m a d a g u a rd a los valores d e los registros y o tra


in f o r m a c ió n so b re el estado.

4. El p r o c e d im ie n to re c e p to r d e la lla m a d a a s ig n a v a lo re s in iciales a s u s d a to s lo­


cales y c o m ie n z a la ejecu ció n .

U n a p o sib le s e c u e n c ia d e r e to r n o sería:
7.3 E S T R A T E G I A S P A R A LA A S I G N A C I O N D E M E M O R I A 421

1. El p r o c e d im ie n to re c e p to r d e la lla m a d a c o lo c a u n v alo r d e v u e lto a c o n t i n u a ­


c ió n del re g istro d e a c tiv a c ió n del a u t o r d e la lla m a d a .

2. U tiliz a n d o la in f o r m a c ió n del c a m p o d e e s ta d o , el p r o c e d im ie n to lla m a d o res­


ta b le c e t o p e s p y o tro s reg istro s y se d irig e a u n a d ire c c ió n d e r e to r n o en el có ­
d ig o d e l q u e e fe c tú a la llam ad a .

3. A u n q u e se h a y a d e c r e m e n ta d o t o p e s p . el a u t o r d e la lla m a d a p u e d e c o p i a r el
v alo r d e v u e lto a s u p r o p io re g istro d e a c tiv a c ió n y u tiliz a rlo p a r a e v a lu a r u n a
ex p resió n .

L as s e c u e n c ia s d e lla m a d a a n te r io r e s p e r m ite n q u e el n ú m e r o d e a r g u m e n to s d e
p r o c e d im ie n to lla m a d o d e p e n d a d e la lla m a d a . O b sé rv e se q u e d u r a n t e la c o m p ila ­
c ió n . el c ó d ig o o b je to del a u t o r d e la lla m a d a c o n o c e el n ú m e r o d e a r g u m e n to s q u e
e s tá p r o p o r c i o n a n d o al p r o c e d i m i e n t o lla m a d o . D e e s te m o d o , el a u t o r d e la lla ­
m a d a c o n o c e el t a m a ñ o d e l c a m p o d e p a r á m e tr o s . S in e m b a r g o , el c ó d ig o o b je to del
p r o c e d im ie n to re c e p to r d e la lla m a d a d e b e p r e p a ra rs e p a r a m a n e ja r a s im is m o o tras
lla m a d a s, a s í q u e e s p e ra h a s ta s e r lla m a d o , y d e s p u é s e x a m in a el c a m p o d e los p a ­
rá m e tro s . U tiliz a n d o la o rg a n iz a c ió n d e la fig u ra 7.14. la in f o r m a c ió n q u e d e sc rib e n
los p a r á m e tr o s d e b e c o lo c a rse d e s p u é s d e l c a m p o d e e s ta d o , d e m a n e r a q u e la p u e d a
e n c o n t r a r el p r o c e d im ie n to lla m a d o . P o r e je m p lo , c o n s id é re s e la f u n c ió n pri n t f
d e la b ib lio te ca e s tá n d a r d e C . El p r im e r a r g u m e n to d e p r i n t f especifica la n a t u ­
raleza d e los a r g u m e n to s re s ta n te s , d e m o d o q u e u n a vez q u e p r i n t f lo caliza el
p r im e r a r g u m e n to , p u e d e e n c o n t r a r los restantes.

D atos d e lo n g itu d variable

E n la fig u ra 7 .1 5 se su g iere u n a e stra te g ia h a b itu a l p a r a m a n e ja r d a to s d e lo n g itu d


v a ria b le , d o n d e el p r o c e d im ie n to p tie n e tres m a tric e s locales. L a m e m o r ia p a r a es­
ta s m a tr ic e s n o es p a rte del re g istro d e a c tiv a c ió n d e p ; e n el registro d e a c tiv ació n
só lo a p a re c e u n a p u n t a d o r al p r in c ip io d e c a d a m a triz . L a s d ire c c io n e s rela tiv as de
esto s a p u n t a d o r e s se c o n o c e n d u r a n te la c o m p ila c ió n , d e m o d o q u e el c ó d ig o o b je to
p u e d e a c c e d e r a los e le m e n to s d e las m a tr ic e s a tra v é s d e los a p u n ta d o r e s .
E n la figura 7 .1 5 ta m b ié n se m u e s tr a u n p r o c e d im ie n to c lla m a d o p o r p. El re­
g istro d e a c tiv a c ió n d e c c o m ie n z a d e s p u é s d e las m a tric e s d e p . y las m a tric e s d e
lo n g itu d v ariab le d e c c o m ie n z a n d e s p u é s del re g istro d e c.
El acceso a los datos en la pila se hace a través de dos apuntadores, to p e y to p e s p .
El p r im e r o d e e llo s m a r c a el to p e a c t u a l d e la p ila; a p u n t a a la p o s ic ió n e n la q u e
c o m e n z a r á el sig u ie n te reg istro d e a c tiv a c ió n . El s e g u n d o se u tiliza p a r a e n c o n t r a r
los d a to s locales. P a ra s e r c o h e r e n te c o n la o rg a n iz a c ió n d e la figura 7 .1 4 , su p ó n g a se
q u e t o p e s p a p u n t a al fin al del c a m p o d e l e s ta d o d e la m á q u in a . E n la figura 7.15,
t o p e s p a p u n t a al final d e este c a m p o e n el re g istro d e a c tiv a c ió n d e c . D e n t r o del
c a m p o h a y u n e n la c e d e c o n tr o l c o n el v a lo r p re v io d e t o p e s p c u a n d o el c o n tro l
e s ta b a e n la a c tiv a c ió n a u t o r a d e la lla m a d a d e p.
El c ó d ig o p a r a re p o s ic io n a r a to p e y t o p e s p se p u e d e g e n e ra r d u r a n t e la c o m ­
pilación. u tiliz a n d o los ta m a ñ o s d e los c a m p o s e n los registros d e activ ació n . C u a n d o
r e to r n a c . el n u e v o v alo r d e to p e es t o p e s p m e n o s la lo n g itu d d e los c a m p o s del
e s ta d o d e la m á q u in a y d e lo s p a r á m e tr o s e n el reg istro d e a c tiv a c ió n d e c . E sta Ion-
422 A M B IE N T E S PARA EL M O M E N T O D E LA EJECU CIO N

F ig. 7 .1 5 . A c c e s o a m a tr ic e s a s ig n a d a s d in á m ic a m e n te .

g i t u d e s c o n o c i d a e n e l m o m e n t o d e la c o m p i l a c i ó n , a l m e n o s p o r e l q u e e f e c t ú a la
l l a m a d a . D e s p u é s d e a j u s t a r to p e, el n u e v o v a l o r d e t o p e s p s e p u e d e c o p i a r d e l e n ­
la c e d e c o n t r o l d e c .

R e fe re n c ia s s u s p e n d id a s

S i e m p r e q u e se p u e d e r e a l i z a r u n a d e s a s i g n a c i ó n d e m e m o r i a , s u r g e e l p r o b l e m a d e
la s r e f e r e n c i a s s u s p e n d i d a s . U n a refe ren cia s u s p e n d id a s e p r o d u c e c u a n d o h a y u n a
re fe re n c ia a u n a m e m o r ia q u e h a s id o d e s a s ig n a d a . U tiliz a r re fe re n c ia s su sp e n d id a s
e s u n e r r o r ló g ic o , p u e s t o q u e el v a l o r d e la m e m o r i a d e s a s i g n a d a n o e s t á d e f i n i d o
s e g ú n la s e m á n t i c a d e la m a y o r í a d e lo s J e n g u a j e s . P e o r a ú n , p o r q u e c o m o e s t a m e ­
m o ria p u e d e a s ig n a rse p o s te r io rm e n te a o tr o d a to , p u e d e n a p a r e c e r e rro re s o c u lto s
e n p r o g r a m a s c o n re fe re n c ia s s u sp e n d id a s.

E j e m p l o 7 .6 . El p r o c e d i m i e n t o s u s p e n d e e n e l p r o g r a m a e n C d e la f ig u r a 7 .1 6
d e v u e l v e u n a p u n t a d o r a la m e m o r i a e n l a z a d a a l n o m b r e lo c a l i . S e c r e a e l a p u n ­
t a d o r c o n e l o p e r a d o r & a p l i c a d o a i . C u a n d o el c o n t r o l r e g r e s a a m a i n d e s d e s u s -
p e n d e , s e l i b e r a la m e m o r i a p a r a la s v a r i a b l e s l o c a le s y p u e d e u t i liz a r s e p a r a o t r o s
p r o p ó s i t o s . C o m o p e n m a i n h a c e r e f e r e n c i a a e s t a m e m o r i a , el u s o d e p c o n s t i t u y e
u n a re fe re n c ia s u sp e n d id a . □
7.3 ESTRATEG IAS PARA LA ASIG N A C IO N D E M EM O R IA 423

E n el e je m p lo e n la sección 7.7 se p r o d u c e la d e s a s ig n a c ió n d u r a n te el c o n tr o l del


p ro g ra m a .

main()

{
int *p;
p = s u s p e n d e ();

}
int * s u s p e n d e ( )

{
int i — 2 3 ;
return &i;

Fig. 7.16. U n p ro g ram a en C q u e deja q u e p a p u n te a u n a posición d e m em o ria


dcsasignada.

A sig n ació n p o r m ed io de un m o n tícu lo

N o p u e d e u tilizarse la estrateg ia d e a s ig n a c ió n p o r m e d io d e u n a pila, e s tu d ia d a a n ­


te rio r m e n te , si o c u r r e u n a d e estas d o s cosas:

1. Se d e b e n re te n e r los v a lo re s d e los n o m b r e s lo cales c u a n d o fin a liz a u n a a c tiv a ­


ción.

2. U n a a c tiv a c ió n lla m a d a s o b re v iv e al a u t o r d e la lla m a d a . E ste c a s o n o e s p o sib le


e n a q u e llo s le n g u a je s e n q u e los á rb o le s d e a c tiv a c io n e s r e p r e s e n ta n c o r r e c ta ­
m e n te el flu jo d e c o n tr o l e n tr e los p ro c e d im ie n to s .

E n c a d a u n o d e los c aso s a n te rio re s , la d esa sig n a c ió n d e los reg istro s d e a c tiv ació n
n o tie n e p o r q u é o c u r r ir d e la f o r m a ú ltim o en entrar - p rim ero en salir , a s í q u e la
m e m o r ia n o se p u e d e o r g a n iz a r c o m o u n a pila.
La asig n ac ió n p o r m e d io d e u n m o n tíc u lo d iv id e p a r te s d e m e m o r ia c o n tig u a ,
c o n f o r m e las n e c e site n los reg istro s d e a c tiv a c ió n u o tr o s o b jeto s. L a s d is tin ta s p a r­
te s se p u e d e n d e s a s ig n a r e n c u a lq u ie r o rd e n , d e m o d o q u e c o n el p a so del ti e m p o el
m o n tíc u lo c o n s ta r á d e á re a s a lte rn a s , libres y b a jo u tiliz ació n .
Se p u e d e o b s e r v a r la d ife re n c ia e n tr e la a s ig n a c ió n c o n p ila y c o n m o n t íc u l o de
los reg istro s d e a c tiv a c ió n e n las fig u ras 7 .1 7 y 7 .1 3 . E n la fig u ra 7 .1 7 , se re tie n e el
registro p a r a u n a a c tiv a c ió n del p r o c e d im ie n to l c u a n d o finaliza la a c tiv a c ió n . P o r
ta n to , el registro p a r a la n u e v a a c tiv a c ió n c ( l , 9 ) n o p u e d e seg u ir físic a m e n te al
registro p a r a o . c o m o s u c e d ió e n la fig u ra 7 .1 3 . P e r o si el registro d e a c tiv a c ió n r e ­
te n id o p a ra 1 se d esasig n a, h a b r á e s p a c io lib re e n el m o n tíc u lo e n tr e los reg istro s d e
a c tiv a c ió n p a r a o y c ( 1 , 9 ) . El q u e m a n e ja m o n t íc u l o p u e d e u tiliz a r d ic h o espacio.
L a g e stió n e fic ien te d e l m o n tíc u lo es u n a s p e c to b a s ta n te esp e c ia liz a d o e n la te o ­
ría d e las e s tr u c tu r a s d e d a to s : e n la secció n 7 .8 se rev isan a lg u n a s técn icas. P o r lo
g en eral se aso cia u n a p é r d id a d e ti e m p o y e s p a c io c o n el u s o d e u n g e s to r d e l m o n ­
tícu lo . P a ra u n a m a y o r eficacia, p u e d e r e s u lta r ú til m a n e ja r reg istro s d e a c tiv a c ió n
424 A M B I E N T E S P A R A EL M O M E N T O D E L A E J E C U C I O N

Po sic ió n en e l A rbol R e g ist r o s de


C o m en ta rio s
d e A c tiv a c ió n A c t iv a c ió n en el M o n t íc u l o

enlace de control

1 Registro de activación
o reten id o p a ra 1
— enlace de control
/ '\
l' c ( 1 , 9)
c(l,9)
—enlace de control

Fig. 7.17. Los registros d e las activaciones en curso n o necesitan ser adyacentes en un
m on tículo.

p e q u e ñ o s o reg istro s d e t a m a ñ o prev isib le c o m o c a so especial, d e la sig u ie n te m a ­


nera:

1. P a ra c a d a t a m a ñ o c o n s id e r a d o , hágase u n a lista e n la z a d a d e b lo q u e s libres de


d ic h o ta m a ñ o .

2. Si e s posible, rellén ese u n a so lic itu d p a ra u n t a m a ñ o s c o n u n b lo q u e d e t a m a ñ o


.v\ d o n d e / sea el t a m a ñ o m á s p e q u e ñ o m a y o r o igual a s. C u a n d o fin a lm e n te
se desasig n e el b lo q u e , se d e v u e lv e a la lista e n la z a d a d e la q u e p ro v ie n e .

3. P a r a g ra n d e s b lo q u e s d e m e m o r ia utilícese el g esto r del m o n tíc u lo .

E ste e n f o q u e d a c o m o r e s u lta d o u n a rá p id a a s ig n a c ió n y d esa sig n a c ió n e n c a n tid a ­


d e s p e q u e ñ a s d e m e m o r ia , p u e s to q u e t o m a r y d e v o lv e r u n b lo q u e d e u n a lista e n ­
la zad a s o n o p e r a c io n e s eficientes. P a r a g r a n d e s c a n tid a d e s d e m e m o r ia se s u p o n e
q u e el cálcu lo ta rd a rá algún tie m p o e n c o n s u m ir la m e m o r ia , d e m o d o q u e el tie m p o
e m p le a d o p o r el a s ig n a d o r e s a m e n u d o in sig n ific a n te c o m p a r a d o c o n el ti e m p o u ti­
lizad o p a ra h a c e r los cálculos.

7 .4 A C C E S O A N O M B R E S N O L O C A L E S

L as estrateg ias p a r a asig n ac ió n d e m e m o r ia d e la ú ltim a secció n se a d a p t a n e n esta


secció n p a r a p e r m itir el acce so a n o m b r e s n o locales. A u n q u e el a n á lis is se b a sa en
la asig n ac ió n p o r m e d io d e u n a pila d e los registros d e a c tiv a c ió n , la s m is m a s ideas
sirv en p a ra la a s ig n a c ió n p o r m e d io d e u n m o n tíc u lo .
L as reglas d e á m b i t o d e u n le n g u a je d e t e r m in a n el e n f o q u e d e las referen cias a
los n o m b r e s n o locales. U n a regla c o m ú n , lla m a d a regla d e á m b ito léxico o regla d e
7.4 A CCESO A N O M B R E S N O I (X Al I S 12*.

ám bito estático, determ ina la declaración que se aplica a un nom bre con sólo exa
m inar e[ texto del program a. Pascal, C y Ada son algunos de los m uchos lenguajes
que utilizan ám bito estático, con una estipulación “ anidam iento más cercano” aña­
dida que se estudiará más adelante. O tra regla llam ada regla d e ám bito dinám ico,
determ ina la declaración aplicable a un nom bre durante la ejecución, considerando
las actividades en curso. L IS P , A P L y S N O B O L son algunos lenguajes que utilizan
ám bito dinám ico.
Se com enzará con bloques y la regla del “ anidam iento más cercano” . Después
se considerarán los nom bres no locales en lenguajes com o C , donde los ám bitos son
léxicos, donde todos los nom bres no locales se pueden enlazar a m em oria asignada
estáticamente, y donde no se perm ite la declaración de procedim ientos anidados.
E n lenguajes com o Pascal, que tienen procedim ientos anidados y ám bito léxico,
los nom bres que pertenecen a distintos procedim ientos pueden ser parte del am ­
biente en un m om ento dado. Se estudian dos form as de encontrar los registros de
activación que contienen la m em oria enlazada a nom bres no locales: enlaces de ac­
ceso y estructuras de datos tipo display.
U n a subsección final estudia la im plantación del ám bito dinám ico.

B lo q u e s

U n bloque es una proposición que contiene sus propias declaraciones de datos lo ­


cales. E l concepto de bloque nació con A L G O L . E n C , un bloque tiene la sintaxis
{ declaraciones p ro p o sicio n es}

U n a característica de los bloques es su estructura de anidam iento. Los delim ita­


dores m arcan el com ienzo y el final de un bloque. C utiliza las llaves { y } com o de­
lim itadores, m ientras que la tradición de A L G O L es utilizar b e g in y end. Los deli­
mitadores garantizan que un bloque sea independiente de otro, o que esté anidado
dentro de otro. Es decir, no es posible que dos bloques B\ y B 2 se superpongan de
modo que el prim ero, B {, com ienza, después B 2, pero B x term ina antes que B 2. Esta
propiedad de anidam iento a menudo se denom ina estructura d e bloques.
E l ám bito de una declaración en un lenguaje con estructura de bloques viene
dado por la regla del a n id a m ien to m á s cercano:

1. E l ám bito de una declaración en un bloque B incluye B.

2. Si un nom bre x no está declarado en un bloque B , entonces un caso de x en B


está en el ám bito de una declaración de x en un bloque abarcador E tal que
i) B ' tiene una declaración de x, y
ii) B ' está anidado m ás cerca alrededor de B que cualqu ier otro bloque con una
declaración de x.

D ebido al diseño, cada declaración de la figura 7.18 asigna com o va lo r in ic ia l al


nom bre declarado el núm ero del bloque en el que aparece. E l ám bito de la decla­
ración de b en B0 no incluye a B x porque b está declarada en B u indicado por B0 - B x
en la figura. D icho vacío se llam a excepción en el ám bito de la declaración.
L a regla del ám bito del anidam iento más cercano se refleja en el resultado del
program a de la figura 7.18. E l control fluye a un bloque desde el punto inm ediata-
426 A M B I E N T E S P A R A EL M O M E N T O D E L A E J E C U C I O N

m am ( )
D eclaración A mbito
{
int = 0;
a int a = 0; Bo - B2
: int b = 0; int b = 0 ; B q —B \

! j int b * 1; B\ By
int b = 1; int a = 2; b2
f int b = 3? By
int a = 2;
Bi
p r i n t f ( " % d % d \ n " # a, b);
Bo >
B,
(
int b = 3;
«3
p r i n t f ( " % d % d \ n M , a, b);

}
p r i n t f (" % d % d \ n " , a, b);

)
p r i n t f ( " % d %d\n", a, b);

Fig. 7.18. B loques en u n p ro g ram a en C.

m e n te a n te r io r a él, y fluye d e s d e el b lo q u e al p u n t o in m e d ia t a m e n t e p o s te rio r a él


en el te x to fu en te . P o r ta n to , las p ro p o s ic io n e s d e im p r e s ió n se e je c u ta n e n el o rd e n
B2, B u B , y B<>, o rd e n e n q u e el c o n tro l sa le d e los b lo q u e s. L o s v a lo re s d e a y b en
esto s b lo q u e s son:

2 1
0 3
0 1
0 0

La e s tr u c tu r a d e b lo q u e s se p u e d e im p la n t a r u tiliz a n d o la a s ig n a c ió n p o r m e d io
d e u n a pila. C o m o el á m b i t o d e u n a d e c la ra c ió n n o se a p lic a f u e ra del b lo q u e en
q u e a p a re c e , se p u e d e a s ig n a r el e s p a c io p a r a el n o m b r e d e c la r a d o c u a n d o se e n tra
al b lo q u e y d e s a s ig n a r c u a n d o el c o n tro l sale del b lo q u e . E ste p u n t o d e vista c o n s i­
d e r a al b lo q u e c o m o u n “ p r o c e d im ie n to sin p a r á m e tr o s ”, lla m a d o ú n ic a m e n te desde
el p u n t o in m e d ia ta m e n te a n te r io r al b lo q u e y re g re s a n d o ú n ic a m e n t e al p u n t o in ­
m e d ia ta m e n te p o s te rio r al b lo q u e . Se p u e d e m a n t e n e r el a m b ie n te n o local p a r a u n
b lo q u e u tiliz a n d o las té c n ic a s p a r a p r o c e d im ie n to s q u e a p a re c e n m á s a d e la n te en
esta sección. O b sérvese, s in e m b a rg o , q u e los b lo q u e s s o n m á s sim p le s q u e lo s p r o ­
c e d im ie n to s p o r q u e n o se p a sa n p a r á m e tr o s y p o r q u e el flu jo del c o n tr o l d e s d e y
h a c ia u n b lo q u e sigue m u y d e cerc a el te x to del b lo q u e e s tá tic o 5.

5 S e p u e d e im p la n ta r u n sa lto fuera d e u n b lo q u e h a sta u n b lo q u e a b a rca d o r sa c a n d o d e la pila lo s


registros d e a c tiv a c ió n d e lo s b lo q u e s in te r m e d io s. A lg u n o s len g u a je s p e r m ite n u n sa lto a d e n tr o d e
u n b lo q u e . A n te s d e q u e se tran sfiera el c o n tr o l d e esta m a n e ra , se tie n e n q u e e sta b le ce r lo s registros
d e a c tiv a c ió n para lo s b lo q u e s in te r m e d io s. La s e m á n tic a d e l len g u a je d e te r m in a c ó m o s e in icia liza n
l o s d a to s lo c a le s e n e s to s reg istro s d e a c tiv a c ió n .
7 .4 ACCESO A NOMBRES NO LOCALES 427

U na im plantación alternativa es asignar de una sola vez m em oria para un cuerpo


de un procedim iento com pleto. Si hay bloques dentro del procedim iento, entonces
la asignación se hace para la m em oria necesaria p o r las declaraciones dentro de los
bloques. Para el bloque B 0 de la figura 7.18, se puede asignar m em oria com o en la
figura 7.19. Los subíndices en las variables locales a y b identifican a los bloques en
los que están declaradas las variables locales. Obsérvese que a a 2 y a b 3 se puede
asignar la m ism a m em oria porque están en bloques que no se activan a la vez.

ao

b0

b,

^2, b 3

Fig. 7 .1 9 . Almacenamiento de los nombres declarados en la figura 7.18.

E n ausencia de datos de longitud variable, la cantidad m áxim a de m em oria ne­


cesaria durante la ejecución de un bloque puede determ inarse durante la com pila­
ción. (Se pueden m anejar los datos de longitud variable utilizando apuntadores com o
en la Sec. 7 .3 .) A l realizar dicha determ inación, convencionalm ente se supone que
se pueden tom ar de hecho todas las trayectorias de control en el program a. Es decir,
se supone que se pueden ejecutar tanto la parte t h e n com o la parte else de una pro­
posición condicional, y que se pueden alcanzar todas las proposiciones dentro de un
bucle w h i l e .

A m b i t o l é x i c o s in p r o c e d i m i e n t o s a n id a d o s

Las reglas de ám bito léxico para C son más sencillas que las de Pascal, que se estu­
dian a continuación, porque las definiciones de procedim ientos no se pueden anidar
en C . Es decir, una definición de procedim iento no puede aparecer dentro de otra.
Com o en la figura 7.20, un program a en C consta de una secuencia de declaraciones
de variables y procedim ientos (C les llam a funciones). Si hay una referencia no local
a un nom bre a en alguna función, entonces a se debe declarar fuera de cualqu ier
función. El ám bito de una declaración fuera de una función consta de los cuerpos
de las funciones que vayan después de la d eclaración, co n agujeros si se declara
el nom bre dentro de una fu n ció n . E n la figura 7.2 0 , los casos no locales de a en
le e m a t r iz , p a r t i c i ó n y m a in se refieren a la m atriz declarada en la línea 1.

(1) in t a [11] ;
(2) le e m a triz () { . . . a — }
(3) i n t p a r t i c i ó n ( y , z ) i n t y, z; ( . . . a . . . }
(4) c l a s i f i c a c i ó n _ p o r _ p a r t i c i o n e s ( m , n ) i n t m, n ; ( ... }
(5 ) main( ) { . . . a . . . }

F i g . 7 .20 . Programa en C con casos no locales de a.


428 A M B I E N T E S P A R A EL M O M E N T O D E L A E J E C U C I O N

E n a u s e n c ia d e p r o c e d im ie n to s a n id a d o s , la estrateg ia d e a s ig n a c ió n m e d ia n te
p ilas p a r a lo s n o m b r e s locales d e la secció n 7.3 se p u e d e u tiliz a r d ir e c ta m e n te p a ra
u n le n g u a je c o n á m b i t o léxico c o m o C . L a m e m o r ia p a r a to d o s los n o m b r e s d ecla­
ra d o s fu era d e c u a l q u ie r p r o c e d im ie n to se p u e d e a s ig n a r e s tá tic a m e n te . L a p o sició n
d e esta m e m o r ia se c o n o c e d u r a n t e la c o m p ila c ió n , d e m o d o q u e si u n n o m b r e es
n o local e n el c u e r p o d e a lg ú n p r o c e d im ie n to , se u tiliz a s im p le m e n te la d ire c c ió n
e s tá tic a m e n te d e te r m in a d a . C u a l q u ie r o t r o n o m b r e d e b e ser local a la a c tiv a c ió n del
to p e d e la pila, accesib le a tra v é s d e l a p u n t a d o r tope. L o s p r o c e d im ie n to s a n id a d o s
h a c e n q u e falle este e s q u e m a p o r q u e e n to n c e s n o m b r e s n o lo cales p u e d e n referirse
a d a to s del f o n d o d e la pila, c o m o se e s tu d ia r á m á s a d e la n te .
U n a v e n ta ja i m p o r ta n te d e la a s ig n a c ió n e s tá tic a p a r a los n o m b r e s n o lo cales es
q u e los p r o c e d im ie n to s d e c la r a d o s se p u e d e n p a s a r lib re m e n te c o m o p a r á m e tr o s y
d ev o lv e rse c o m o r e s u lta d o (e n C se p a sa u n a f u n c ió n p a s a n d o u n a p u n t a d o r a ella).
C o n á m b ito léxico y s in p r o c e d im ie n to s a n id a d o s , c u a lq u ie r n o m b r e q u e sea n o lo­
cal a u n p r o c e d im ie n to e s n o local a to d o s los p ro c e d im ie n to s . S u d ir e c c ió n está tic a
p u e d e s e r u tiliz a d a p o r to d o s los p ro c e d im ie n to s , in d e p e n d ie n te m e n te d e c ó m o se
a c tiv e n . A s im is m o , si lo s p r o c e d i m ie n t o s se d e v u e lv e n c o m o r e s u lta d o s , los n o m ­
b re s n o locales e n el p r o c e d im ie n to d e v u e lto se refieren a la m e m o r ia a s ig n a d a es­
tá tic a m e n te p a ra ellos.
P o r e je m p lo , c o n sid é re se el p r o g r a m a e n P ascal d e la fig u ra 7.21. T o d o s los c aso s
del n o m b r e m. q u e se m u e s tr a n d e n t r o d e u n c írc u lo e n la figura 7 .2 1 , e s tá n d e n t r o
del á m b i t o d e la d e c la r a c ió n d e la lin ea 2. C o m o m e s n o local a to d o s los p r o c e d i­
m ie n to s d e l p r o g r a m a , se p u e d e a s ig n a r s u m e m o r ia e s tá tic a m e n te . C u a n d o se e je ­
c u te n los p r o c e d im ie n to s f y g . p u e d e n u tiliz a r la d ir e c c ió n está tic a p a r a a c c e d e r al
v alo r de m. El h e c h o d e q u e f y g se p a s e n c o m o p a r á m e tr o s sólo in flu y e c u a n d o se
a c tiv a n y n o in flu y e e n la f o r m a d e a c c e d e r al v a lo r d e m.
M á s c o n c r e ta m e n te , la lla m a d a b ( f ) e n la lín e a 11 a s o c ia la f u n c ió n f c o n el
p a r á m e t r o fo rm a l h d e l p r o c e d i m i e n t o b. D e m o d o q u e c u a n d o se lla m a al p a r á ­
m e t r o f o r m a l h en la lin e a 8 , e n w r i t e ( h ( 2 ) ) , se a c tiv a la f u n c ió n f. L a a c tiv a ­
c ió n d e f d e v u e lv e 2 p o r q u e el n o m b r e n o lo c al m tie n e el v a lo r d e 0 y el p a r á m e tr o

(1) program p a s o (in p u t, output);


(2) var ® : integer;

(3) function f (n : integ er) : integer;


(4) begin f : = ® + n e n d { í }•■

(5) function g(n : in te g e r) : in teg er;


(6) b e g i n g : = ® * n e n d { 9 }?

(7) procedure b(function h(n : integer) : integer);


(8) begin w rite(h (2 )) end { b };

(9) begin
(10) ® := 0;
( 11) b ( f ); b (g ); w riteln
( 12) end.

F ig . 7 .2 1 . P r o g r a m a e n P a s c a l c o n c a s o s n o l o c a l e s d e m.
7.4 ACCESO A NO M BR ES N O LOCALES 429

fo rm al n tie n e el v a lo r d e 2 . D e sp u é s, la lla m a d a b ( g ) aso cia g c o n h; e s ta vez, u n a


lla m a d a a h a c tiv a g . L a sa lid a d e este p r o g r a m a es

2 0

A m b ito léx ico con p ro c e d im ie n to s a n id a d o s

U n c a so n o local d e u n n o m b r e a e n u n p r o c e d im ie n to e n P ascal está d e n t r o del


a lc a n c e d e la d e c la ra c ió n a n i d a d a m á s c e r c a n a d e a e n el te x to del p r o g r a m a está ­
tico.
El a n i d a m ie n to de d e fin ic io n e s d e p r o c e d im ie n to s e n el p r o g r a m a e n P ascal d e
la fig u ra 7 .2 2 está in d ic a d o p o r la sig u ie n te in d e n ta c ió n :

ordenam iento
leematriz
intercam bio
clasificación_por_particiones
p artición

El c a so d e a e n la lín ea 15 d e la fig u ra 7 .2 2 e s tá d e n t r o d e la f u n c ió n p a r t i c i ó n ,
a n i d a d a d e n t r o del p r o c e d i m i e n t o c l a s i f i c a c i ó n _ p o r _ p a r t i c i o n e s . L a d e ­
cla ra c ió n a n i d a d a m á s c e r c a n a d e a está e n la lín e a 2 d e n t r o del p r o c e d im ie n to for-

(1) program o rd e n a m ie n to (in p u t, o u tp u t) ;


(2) var a : array [0..10] of integer;
(3) x ; integer;

(4) procedure leem atriz;


(5) var i : integer;
(6) begin ... a ... end { leem atriz };

(7) procedure intercam bio(i, j: integer);


(8) begin
(9) x := a ( i ) ; a {i] := a [ j j ; a(j) := x
( 10) end;

( 11) procedure clasificación_por_particiones(m , n: integer);


( 12) var k, v : integer;

( 13) function partición(y, z: integer) : integer;


(14) var i, j : integer;
(15) begin ... a ...
( 16) ••• V •••
(17) ... in te r c a m b io (i , j ); ...
(18) end ¡ partición } ;

(19) begin — end { clasificación_por_particiones };

(20) begin ... end { ordenam iento ¡ .

Fig. 7.22. U n p ro g ram a en Pascal co n p ro ced im ien to s anidados.


430 A M B I E N T E S P A R A E L M O M E N T O D E LA E J E C U C I O N

m a d o p o r el p r o g r a m a c o m p le to . L a regla d e l a n i d a m ie n to m á s c e rc a n o se ap lica
ta m b ié n a n o m b r e s d e p ro c e d im ie n to s . El p r o c e d im ie n to i n t e r c a m b i o , q u e e s lla­
m a d o p o r p a r t i c i ó n e n la lín ea 17, e s n o local a p a r t i c i ó n . A p lic a n d o la regla,
p r i m e r o se c o m p r u e b a si i n t e r c a m b i o e s tá d e f i n i d o d e n t r o d e c l a s i f i c a *
c i ó n _ p o r - p a r t i c i o n e s ; c o m o n o lo e s tá , s e b u s c a e n el p r o g r a m a p r in c ip a l
o rd e n a m ie n to .

P rofundidad d e anidam iento

L a n o c ió n d e p ro fu n d id a d d e a n id a m ien to d e u n p r o c e d im ie n to se u tiliz a m á s a d e ­
la n te p a r a i m p l a n t a r el á m b i t o léxico. S e c o n s id e r a q u e el n o m b r e d e l p r o g r a m a
p r in c ip a l e s tá a p r o f u n d id a d d e a n i d a m i e n t o 1; se s u m a 1 a la p r o f u n i d a d d e a n i ­
d a m i e n t o al p a s a r d e u n p r o c e d im ie n to a b a r c a d o r a u n p r o c e d im ie n to a b a r c a d o . En
la fig u ra 7.22, el p r o c e d im ie n to c l a s i f i c a c i ó n _ p o r _ p a r t i c i o n e s d e la lín ea
11 está a p r o f u n d id a d d e a n i d a m i e n t o 2, m ie n tr a s q u e p a r t i c i ó n e n la lín ea 13
está a p r o f u n d id a d d e a n i d a m ie n to 3. C o n c a d a c a so d e u n n o m b r e , se a s o c ia la p ro ­
fu n d id a d d e a n i d a m ie n to del p r o c e d im ie n to e n el c u a l e s tá d e c la ra d o . L o s casos de
a , v e i en las lín e a s 1 5 a 17 e n p a r t i c i ó n tie n e n p o r t a n t o p r o f u n d id a d e s d e a n i­
d a m i e n t o 1, 2 y 3. re s p e c tiv a m e n te .

E nlaces d e acceso
U n a i m p l a n t a c i ó n d ir e c ta d e l á m b i t o léx ico p a r a p r o c e d i m ie n t o s a n i d a d o s se o b ­
tie n e a ñ a d i e n d o u n a p u n t a d o r , ll a m a d o enlace d e acceso , a c a d a re g istro d e a c tiv a ­
c ió n . Si el p r o c e d im ie n to p está a n i d a d o in m e d ia t a m e n t e d e n t r o d e c e n el te x to
fu en te , e n to n c e s el e n la c e d e acce so e n u n re g istro d e a c tiv a c ió n p a r a p a p u n t a al
e n la c e d e acce so p a r a la a c tiv a c ió n m á s re c ie n te d e c.
E n la fig u ra 7 .2 3 se m u e s t r a n a lg u n o s e s ta d o s d e la p ila p a r a la e je c u c ió n d u ­
r a n te u n a e je c u c ió n d e l p r o g r a m a d e la fig u ra 7 .2 2 . D e n u e v o , p a r a a h o r r a r e s p a ­
c i o e n la f ig u r a , s ó l o se m u e s t r a la p r i m e r a le tr a d e l n o m b r e d e c a d a p r o c e d i ­
m ie n to . El e n la c e d e acce so p a r a la a c tiv a c ió n d e o r d e n a m i e n t o está vacio, p o rq u e
n o h a y u n p r o c e d i m i e n t o q u e la a b a r q u e . E n e n la c e d e a c c e s o p a r a c a d a a c tiv a c ió n
d e c l a s i f i c a c i ó n _ p o r _ p a r t i c i o n e s a p u n t a al re g is tro d e o r d e n a m i e n t o .
O b s é rv e s e e n la fig u ra 7 .2 3 (c ) q u e el e n la c e d e a c c e s o e n el re g is tro d e a c tiv a c ió n
p a r a p a r t i c i ó n ( 1 , 3 ) a p u n t a al e n la c e d e a c c e s o e n el re g is tro d e la a c tiv a c ió n
m á s r e c ie n te d e c l a s i f i c a c i ó n _ p o r _ p a r t i c i o n e s , e s d e c ir , c l a s i f i c a -
ció n _ p o r_ p a rtic io n e s(1,3).
S u p ó n g a s e q u e el p r o c e d im ie n to p a p r o f u n d id a d d e a n i d a m ie n to nr h a c e refe­
re n c ia a u n n o m b r e n o local a c o n p r o f u n d id a d d e a n i d a m i e n t o ntl ^ L a d ire c ­
c ió n d e m e m o r ia p a r a a se p u e d e e n c o n t r a r d e la sig u ie n te m a n e ra :

1. C u a n d o el c o n tro l está e n p , u n reg istro d e a c tiv a c ió n p a r a p está e n el to p e d e


la p ila . Sígase n,t- n a e n la c e s d e acce so d e s d e el reg istro q u e está en el to p e d e la
pila. El v a lo r d e nr - n a se p u e d e p re c a lc u la r d u r a n te la c o m p ila c ió n . Si el e n la c e
d e acce so e n u n reg istro a p u n t a al e n la c e d e acce so e n o tr o , e n to n c e s se p u e d e
seg u ir u n e n la c e r e a liz a n d o u n a so la o p e r a c ió n d e in d irecció n .
7.4 A CC ESO A N O M B R ES N O LOCALES 431

F ig . 7 .2 3 . E n l a c e s d e a c c e s o p a r a e n c o n t r a r las p o s ic io n e s d e m e m o r i a
p a r a lo s n o m b r e s n o lo cales.

2. Después de seguir np —na enlaces, se llega a un registro de activación para el pro­


cedim iento al que es local a. C om o se estudió en la últim a sección, su ubicación
en la m em oria está en un desplazam iento determ inado con respecto a una po­
sición en el registro. En concreto, el desplazam iento puede ser con respecto al
enlace de acceso.
Por tanto, la dirección del nom bre no local a en el procedim iento p viene dada por
el siguiente par calculado en el momento de la com pilación y guardado en la tabla
de símbolos:

(np—na, desplazam iento dentro del registro de activación que contiene a )

El prim er com ponente proporciona el núm ero de enlaces de acceso que deben re­
correrse.
Por ejem plo, en las líneas 15 y 16 de la figura 7.22, el procedim iento p a r t i ­
c ió n a profundidad de’ anidam iento 3 hace referencia a los nom bres no locales a y
v a profundidades de anidam iento 1 y 2, respectivam ente. Los registros de activa­
ción que contienen las direcciones de m em oria para dichos nom bres no locales se
encuentran siguiendo 3 — 1 = 2 y 3 — 2 = 1 enlaces de acceso, respectivam ente, desde
el registro correspondiente a p a r t ic ió n .
E l código para establecer los enlaces de acceso es parte de la secuencia de lla­
mada. Supóngase que el procedim iento p a profundidad de anidam iento np llam a al
procedim iento x a profundidad de anidam iento nx. E l código para establecer el en-
432 A M B IE N T E S P A R A EL M O M E N T O DE LA EJECUCION

lace d e acce so e n el p r o c e d im ie n to lla m a d o d e p e n d e d e si el p r o c e d im ie n to lla m a d o


está a n i d a d o o n o d e n t r o del q u e e fe c tú a la lla m a d a .

1. C a s o r p < nx. C o m o el p r o c e d im ie n to lla m a d o x está a n i d a d o a m a y o r p r o f u n ­


d id a d q u e p , se d e b e d e c la r a r d e n t r o d e p . o n o seria accesible a p . E ste caso
o c u r r e c u a n d o o r d e n a m i e n t o lla m a a c l a s i f i c a c i ó n _ p o r _ p a r t i c i o n e s
e n la fig u ra 7 .2 3 (a ) y c u a n d o c l a s i f i c a c i ó n _ p o r _ p a r t i c i o n e s lla m a a
p a r t i c i ó n e n la figura 7.2 3 (c). E n este caso , el e n la c e d e a c c e s o e n el p ro c e ­
d i m i e n t o lla m a d o d e b e a p u n t a r a l e n la c e d e a c c e s o e n el reg istro d e a c tiv a c ió n
del q u e e fe c tú a la lla m a d a j u s t o d e b a jo e n la pila.

2. C a s o n,, > //x. S e g ú n las reglas d e á m b ito , los p r o c e d im ie n to s a b a r c a d o re s a p ro ­


fu n d id a d e s d e a n i d a m i e n t o 1 . 2 . . . . , n x — 1 d e los p r o c e d im ie n to s lla m a d o y
a u t o r d e la l l a m a d a d e b e n s e r lo s m is m o s , c o m o c u a n d o c l a s i f i c a -
c i ó n _ p o r _ p a r t i c i o n e s se lla m a a sí m is m o e n la fig u ra 7 .2 3 (b ) y c u a n d o
p a r t i c i ó n lla m a a i n t e r c a m b i o e n la figura 7 .23 (d ). S ig u ie n d o nn — 1
e n la c e s d e acce so d e s d e el a u t o r d e la lla m a d a , se llega al re g istro d e a c tiv a c ió n
m á s r e c ie n te d e l p r o c e d i m i e n t o q u e e s t á t i c a m e n t e a b a r c a t a n t o al p r o c e d i ­
m i e n to lla m a d o c o m o al a u t o r d e la lla m a d a m á s c e rc a n o . El e n la c e d e acceso
a l c a n z a d o es a l q u e d e b e a p u n t a r el e n l a c e d e a c c e s o d e l p r o c e d i m i e n t o ll a ­
m a d o . D e n u e v o . nr - n x+ 1 se p u e d e c a lc u la r d u r a n te la c o m p ila c ió n .

P rocedim ientos co m o parám etros


L a s reg las d e á m b i t o léx ico se a p lic a n a u n q u e u n p r o c e d i m i e n t o a n i d a d o se p a se
c o m o p a r á m e tr o . L a f u n c ió n f e n las lín eas 6 y 7 del p r o g r a m a e n P ascal d e la figura
7 .2 4 tien e u n n o m b r e n o local m; to d o s los c aso s d e m se m u e s tr a n e n u n c írc u lo . En
la lín e a 8, el p r o c e d im ie n to c asig n a 0 a m y d e s p u é s p a sa f c o m o p a r á m e tr o a b.
O b sé rv e se q u e el á m b i t o d e la d e c la r a c ió n d e m e n la lín e a 5 n o in c lu y e el c u e r p o d e
b d e las lín eas 2 y 3.
D e n tr o del c u e r p o d e b , la p ro p o s ic ió n w r i t e l n ( h ( 2 ) ) a c tiv a f p o r q u e el p a ­
r á m e tr o fo rm a l h se refiere a f . E s d ecir, w r i t e l n im p r im e el re s u lta d o d e la 11a-
m a d a f ( 2 ).

(1) program p a ra m (in p u t, output);

(2) p ro ced u re b ( f u n c tio n h (n : i n t e g e r ): integer);


(3) b e g i n w r i t e l n ( h ( 2 ) ) e n d { b };

(4) procedure c;
(5) var ® : integer;

(6) function f(n : integer) : in teg er;


(7) b e g i n f : = ® + n e n d { f };

(8) begin ® := 0; b(f) end { c };


(9) begin
( 10) c
(11) end.

F ig . 7 .2 4 . Se d e b e pasar u n e n la c e d e a c c e so c o n el p a rá m etro actual f .


7.4 ACCESO A N O M BR ES N O LOCALES 433

¿ C ó m o se estab lece el e n la c e d e acce so p a r a la a c tiv a c ió n d e f ? L a re s p u e s ta es


q u e u n p ro ced i m ie n to a n i d a d o q u e se p a sa c o m o p a r á m e tr o d e b e t o m a r su en lace
d e acce so j u n t o c o n él, c o m o se m u e s tr a e n la figura 7 .2 5 . C u a n d o el p r o c e d im ie n to
c p a sa f , d e te r m in a u n e n la c e d e acce so p a r a f . si e s tu v ie ra ll a m a n d o a f . E ste e n ­
lace se p a sa j u n t o c o n f a b . P o r t a n t o , c u a n d o f se a c tiv a d e s d e d e n t r o d e b . el
e n la c e se u tiliza p a r a e s ta b le c e r el e n la c e d e acce so en el registro d e a c tiv a c ió n p a ­
ra f .

Fig. 7.25. El p ro ced im ien to c o m o p a rá m e tro actual f lleva su enlace d e acceso.

E structura d e datos tipo d isp la y

Se p u e d e o b te n e r u n acce so m á s r á p id o q u e c o n los e n la c e s d e acce so a los n o m b r e s


n o locales u tiliz a n d o u n a m a tr iz d d e a p u n t a d o r e s a reg istro s d e a c tiv a c ió n , lla m a d a
display . Se m a n tie n e el d isp la y d e m o d o q u e la d ir e c c ió n d e m e m o r ia p a r a u n n o m ­
b re n o local a a p r o f u n d id a d d e a n i d a m ie n to i esté e n el registro d e a c tiv a c ió n a p u n ­
ta d o p o r el e le m e n to d [/] del display.
S u p ó n g a s e q u e el c o n tr o l está e n la a c tiv a c ió n d e u n p r o c e d im ie n to p a p r o f u n ­
d id a d d e a n i d a m ie n to /. E n to n c e s , los p r im e r o s j - 1 e le m e n to s del d isp la y a p u n t a n
a las a c tiv a c io n e s m á s re c ie n te s d e los p r o c e d im ie n to s q u e le x ic o g rá fic a m e n te a b a r ­
c a n el p r o c e d im ie n to p . y d [¡\ a p u n t a a la a c tiv a c ió n d e p . U tiliz a r u n display es
g e n e r a lm e n te m á s rá p id o q u e seg u ir lo s e n la c e s d e acce so p o r q u e se e n c u e n t r a u n
registro d e a c tiv a c ió n q u e g u a r d a u n n o m b r e n o local a c c e d ie n d o a u n e le m e n to d e
d y s ig u ie n d o d e s p u é s só lo u n a p u n ta d o r .
U n a so lu c ió n se n c illa p a r a m a n t e n e r el display e s la d e u tiliz a r e n la c e s d e acceso
a d e m á s del display. C o m o p a r te d e la s s e c u e n c ia s d e lla m a d a y d e regreso, el display
se a c tu a liz a s ig u ie n d o la c a d e n a d e e n la c e s d e acceso. C u a n d o sigue el e n la c e d e a c ­
c e so a u n reg istro d e a c tiv a c ió n a p r o f u n d id a d d e a n i d a m ie n to n, el e le m e n to del
434 A M B I E N T E S P A R A EL M O M E N T O D E L A E J E C U C I O N

display d [/i] a p u n t a a d i c h o registro d e a c tiv a c ió n . E n realid ad , el d isp la y d u p l i c a la


i n f o r m a c i ó n d e la c a d e n a d e e n la c e s d e acceso.
E s ta c o lo c a c ió n p u e d e m e jo ra rs e . El m é t o d o ilu s tr a d o e n la figura 7.26 exige m e ­
n o s t r a b a j o e n la e n t r a d a y salida d e u n p r o c e d i m i e n t o si, c o m o es h a b i tu a l, lo s p r o ­
c e d i m i e n t o s n o se p a s a n c o m o p a r á m e tr o s . E n la figura 7 .2 6 el d isp la y c o n s t a en
u n a m a t r i z global, in d e p e n d ie n t e d e la pila. L a s s itu a c io n e s q u e se m u e s t r a n e n la
figura se refieren a u n a e je c u c ió n del te x to f u e n t e d e la figura 7.22 . D e n u e v o , sólo
s e m u e s t r a la p r i m e r a letra d e l n o m b r e d e c a d a p r o c e d i m ie n t o .
E n la figura 7 .2 6 (a) se m u e s t r a la s itu a c ió n j u s t o a n t e s d e q u e c o m i e n c e la acti­
v ació n c ( l , 3 ) . C o m o c l a s i f i c a c i ó n _ p o r - p a r t i c i o n e s está a p r o f u n d i d a d
d e a n i d a m i e n t o 2, in flu y e e n el e l e m e n t o del display d [2] c u a n d o c o m i e n z a u n a
n u e v a a c tiv a c ió n d e c l a s i f i c a c i ó n _ p o r _ p a r t i c i o n e s . E n la figura 7.2 6 (b ) se
m u e s t r a el e fe c to d e la a c tiv a c ió n c ( 1 , 3 ) s o b r e d [2], d o n d e d [2] a p u n t a a h o r a al
n u e v o registro d e a c tiv a c ió n : el v alo r a n t e r i o r d e d [2] se g u a r d a d e n t r o del n u e v o
reg istro d e a c t i v a c i ó n 6. P o s t e r i o r m e n t e se n e c e s i ta r á este v a l o r p a r a r e s ta b l e c e r el
display a s u e s t a d o d e la figura 7.26(a), c u a n d o el c o n t r o l regrese d e la a c tiv a c ió n
c (l,9 ).
El display c a m b i a c u a n d o se p r o d u c e u n a n u e v a a c tiv a c ió n y se d e b e restablecer
c u a n d o el c o n t r o l r e t o r n a d e la n u e v a a c tiv a c ió n . L as reglas d e á m b i t o d e Pascal y
o t r o s lenguajes d e á m b i t o léxico p e r m i t e n q u e se m a n t e n g a el d isp la y m e d i a n t e los
siguientes pasos. S ó lo se e s tu d ia el c a s o m á s fácil, d o n d e los p r o c e d i m i e n t o s n o se
p a s a n c o m o p a r á m e t r o s (v éase Ejercicio 7.8). C u a n d o se estab lece u n n u e v o registro
d e a c tiv a c ió n p a r a u n p r o c e d i m i e n t o a p r o f u n d i d a d d e a n i d a m i e n t o

1. se g u a r d a el v a lo r d e d[i] d e n t r o del n u e v o registro d e a c tiv a c ió n y


2. se a p u n t a d[i] al n u e v o registro d e activación.

J u s t o a n t e s d e q u e finalice u n a a c tiv a c ió n , se restab lece d [i\ al v a lo r g u a r d a d o .


Estos p a so s ti e n e n la s ig u ie n te ju s tific a c ió n . S u p ó n g a s e q u e u n p r o c e d i m i e n t o a
p r o f u n d i d a d d e a n i d a m i e n t o j l l a m a a u n p r o c e d i m i e n t o q u e se e n c u e n t r a a p r o f u n ­
d i d a d /. E x isten d o s casos, q u e d e p e n d e n d e si el p r o c e d i m i e n t o l l a m a d o está a n i ­
d a d o o n o d e n t r o del l l a m a d o e n el te x to f u e n te , c o m o e n el análisis d e los enlaces
d e acceso.

1. C a s o j < i. E n t o n c e s , i = j + 1 y el p r o c e d i m i e n t o l l a m a d o está a n i d a d o d e n t r o
del q u e e fe c tú a la ll a m a d a . L o s p r i m e r o s j e l e m e n t o s d e l display n o n ecesitan
p o r t a n t o m o d ific a rs e , y se asig na la d ir e c c ió n d e l n u e v o registro d e a c tiv a c ió n
a d [/]. Este c a s o se ilu s tra e n la figura 7.2 6 (a) c u a n d o o r d e n a m i e n t o ll a m a a
c l a s i f i c a c i ó n _ p o r _ p a r t i c i o n e s y tam b ién c u a n d o c l a s i f i c a -
c i ó n _ p o r _ p a r t i c i o n e s ll a m a a p a r t i c i ó n e n la figura 7.26(c).

2. C a s o j £ i. D e n u e v o , los p r o c e d i m i e n t o s a b a r c a d o r e s a p r o f u n d i d a d e s d e a n i ­
d a m i e n t o 1 , 2 .......... / ' - I d e los p r o c e d i m i e n t o s r e c e p t o r y a u t o r d e la lla m a d a
d e b e n ser los m is m o s . E n este caso, se g u a r d a el v alor a n t e r i o r d e d [/] e n el nuev o

( O b sé r v e se q u e c ( 1 , 9 ) ta m b ié n g u a r d ó d [2 ] . a u n q u e s u c e d e q u e e l s e g u n d o e le m e n to d e l d is p la y
n u n c a h a b ía sid o u tiliz a d o y n o e s n e c e sa r io r estitu irlo . P ara to d a s la s lla m a d a s d e c e s m á s fácil
g u ard ar d (2 j q u e d e c id ir d u ra n te la e je c u c ió n si e s n e c esa r io h a c e r lo o n o .
7.4 ACCESO A NOMBRES NO LOCALES 435

registro de activación, y se apunta d [i] al nuevo registro de activación. E l dis­


play se m antiene correctam ente porque los prim eros i - 1 elementos se dejan
com o están.
O cu rre un ejem p lo del caso 2, co n / = / = 2, cu a n d o c l a s i f i c a -
c ió n _ p o r _ p a r t i c io n e s es llam ad o recursivam ente en la figura 7.2 6 (a). U n
ejem plo m ás interesante es el de la activació n p ( 1 , 3 ) a p ro fu n d id ad de an id a­
m iento 3 que llam a a i n ( 1 , 3 ), a profundidad 2, y el procedim iento abarcador de
am bas es o a p ro fu n d id ad 1, co m o en la figura 7.2 6 (d ). (E l program a está en la
Fig. 7.2 2 .) Obsérvese que cuan d o se llam a a i n ( l , 3 ) , el va lo r de d [ 3] que per­
tenece a p ( 1 , 3 ) está todavía en el display, aunque no se puede acceder a él m ien­
tras el control esté en in . Si i n llam ara a otro procedim iento a profundidad 3, este

Fig. 7.26. Mantenim iento del display cuando no se pasan procedimientos como
parámetros.
436 A M B IE N T E S PA R A EL M O M E N T O DE LA EJECUCION

p r o c e d i m i e n t o g u a r d a r í a d [ 3) y lo restab lecería al regresar a i n . A sí se d e m u e s t r a


q u e c a d a p r o c e d i m i e n t o o b s e r v a el d isp la v c o r r e c t o p a r a to d a s las p r o fu n d id a d e s ,
h asta su p r o p i a p r o f u n d id a d .
H a y v a rio s lugares d o n d e se p u e d e m a n t e n e r u n displav. Si h a y suficien tes regis­
tros, e n t o n c e s el displav , c o n s i d e r a d o c o m o u n a m a triz , p u e d e s e r u n c o n j u n t o d e
registros. O b s é rv e s e q u e el c o m p i l a d o r p u e d e d e t e r m i n a r la lo n g itu d m á x i m a d e esta
m a triz : es la p r o f u n d i d a d m á x i m a d e a n i d a m i e n t o d e los p r o c e d i m i e n t o s e n el p r o ­
g r a m a . E n c a s o c o n t r a r i o , el d isp la v se p u e d e c o n s e r v a r e n m e m o r i a a s ig n a d a está­
t i c a m e n t e y t o d a s las re feren cias a los registros d e a c tiv a c ió n c o m i e n z a n u tiliz a n d o
d i r e c c i o n a m i c n t o in d i r e c to p o r m e d i o d e l a p u n t a d o r del displav a d e c u a d o . E s te e n ­
f o q u e es el a p r o p i a d o p a r a u n a m á q u i n a c o n d i r e c c i o n a m i e n t o in d ir e c to , a u n q u e
c a d a in d ire c c ió n c u e s ta u n c ic lo d e m á q u i n a . O t r a p o sib ilid a d es g u a r d a r el displav
e n la m i s m a pila d e e je cu ció n , y c r e a r u n a n u e v a c o p i a a c a d a e n t r a d a d e p r o c e d i­
m ie n to .

A m b ito d in á m ic o

C o n u n á m b i t o d i n á m i c o , u n a n u e v a a c tiv a c ió n h e r e d a los e n la c e s ex iste n te s e n tre


los n o m b r e s n o lo c a le s a la m e m o r i a . U n n o m b r e n o local a e n la a c t i v a c i ó n lla­
m a d a se refiere a la m i s m a m e m o r i a q u e e n la a c tiv a c ió n a u t o r a d e la ll a m a d a . Se
estab lecen n u e v o s e n l a c e s p a r a los n o m b r e s locales d e l p r o c e d i m i e n t o l l a m a d o ; los
n o m b r e s se refieren a d ire c c io n e s d e m e m o r i a e n el n u e v o registro d e activación .
El p r o g r a m a d e la f ig u r a 7 .2 7 il u s t r a el á m b i t o d i n á m i c o . El p r o c e d i m i e n t o
m u e s t r a d e las lín e a s 3 y 4 escribe el v a lo r d e l n o m b r e n o local r . C o n el á m b i t o
léxico e n Pascal, el n o m b r e n o local r e s tá d e n t r o d e l á m b i t o d e la d e c la r a c ió n d e la
línea 2. d e m o d o q u e el r e s u lt a d o del p r o g r a m a es

0.250 0.250
0.250 0.250

Sin e m b a r g o , c o n u n á m b i t o d i n á m i c o , el r e s u lt a d o es

0.250 0.125
0.250 0.125

C u a n d o se l l a m a a m u e s t r a e n las lín e a s 10 y 11 d e l p r o g r a m a p r in c ip a l, se es­


cribe 0 . 2 50 p o r q u e se utiliza la v aria b le r q u e e s local al p r o g r a m a p rin c ip a l. Sin
e m b a r g o , c u a n d o se l l a m a a m u e s t r a e n la lín e a 7 d e s d e d e n t r o d e c h i c o , se es­
cribe 0 . 1 2 5 p o r q u e se utiliza la v aria b le r q u e e s local a c h i c o .
L os d o s e n f o q u e s s ig u ie n te s p a r a i m p l a n t a r el á m b i t o d i n á m i c o g u a r d a n cierto
p a r e c id o c o n el u s o d e e n la c e s d e a cce so y displays , r e s p e c ti v a m e n t e , e n la i m p l a n ­
ta c ió n del a l c a n c e léxico.

1. A cceso profundo. C o n c e p t u a l m e n t e , el á m b i t o d i n á m i c o d a r e s u lt a d o si los e n ­


la c e s d e a c c e s o a p u n t a n al m i s m o r e g is t r o d e a c t i v a c i ó n al q u e a p u n t a n los
e n la c e s d e co n tro l. U n a a p lic a c ió n sencilla e s p r e s c in d i r d e los e n l a c e s d e acceso
y u tiliz a r el e n la c e d e c o n t r o l p a r a e x a m i n a r la pila, e n b u s c a del p r i m e r registro
d e a c t i v a c i ó n q u e c o n t e n g a la m e m o r i a p a r a el n o m b r e n o local. El t é r m i n o
acceso profundo se d e r iv a d e q u e la b ú s q u e d a e n la pila p u e d e h acerse “e n p ro -
7 .5 PASO DE PARAM ETROS 437

(1) program dinám ico(in p u t, output);


(2) var r : real;

(3) procedure m uestra;

(4) begin w rite( r : 5:3 ) end;

(5) procedure chico;


(6) var r : real;
(7) begin r := 0.125; m uestra end;

(8) begin
(9) r := 0 .25;
(10) m uestra; chico;

w riteln ;

(11) m uestra; chico; w riteln


(12) end.

Fig. 7.2 7. E l r e s u l t a d o d e p e n d e d e si s e u tiliz a á m b i t o lé x ic o o d i n á m i c o .

f u n d i d a d ” L a p r o f u n d i d a d a l a q u e p u e d e l l e g a r la b ú s q u e d a d e p e n d e d e l a e n -
tr a d a al p r o g r a m a y n o se p u e d e d e t e r m in a r d u r a n t e la c o m p ila c ió n .

2. Acceso superficial . E n e s t e c a s o , l a i d e a e s c o n s e r v a r e l v a l o r e n c u r s o d e c a d a
n o m b re e n m e m o ria a sig n a d a e s tá tic a m e n te . C u a n d o se p ro d u c e u n a n u e v a a c ­
tiv a c ió n d e u n p r o c e d im ie n to p , u n n o m b r e lo c a l n d e n t r o d e p se a p r o p ia d e
la m e m o r i a a s ig n a d a e s tá tic a m e n te p a r a n . E l v a lo r p r e v io d e n se p u e d e g u a r ­
d a r e n e l r e g i s t r o d e a c t i v a c i ó n p a r a p y s e d e b e r e s t a b l e c e r c u a n d o t e r m i n e la
a c tiv a c ió n d e p.

L a d ife re n c ia e n tre lo s d o s e n f o q u e s e s q u e el a c c e so p r o f u n d o t a r d a m á s e n a c c e d e r
a u n n o m b r e n o l o c a l , p e r o n o t i e n e p é r d i d a s r e l a c i o n a d a s c o n e l c o m i e n z o y f in a l
d e u n a a c t i v a c i ó n . P o r o t r a p a r t e , e l a c c e s o s u p e r f i c i a l p e r m i t e el a c c e s o d i r e c t o a lo s
n o m b r e s n o l o c a l e s , p e r o s e e m p l e a t i e m p o e n m a n t e n e r d i c h o s v a l o r e s c u a n d o la s
a c tiv a c io n e s c o m ie n z a n y te r m in a n . C u a n d o la s fu n c io n e s se p a s a n c o m o p a r á m e ­
tro s y se d e v u e lv e n c o m o re s u lta d o s , se o b tie n e u n a im p la n ta c ió n m á s d ire c ta c o n
el a c c e so p ro fu n d o .

7 .5 P A S O D E P A R A M E T R O S

C u a n d o u n p ro c e d im ie n to lla m a a o tr o , el m é to d o h a b itu a l d e c o m u n ic a c ió n e n tre


e llo s e s a t r a v é s d e n o m b r e s n o l o c a l e s y a t r a v é s d e p a r á m e t r o s d e l p r o c e d i m i e n t o
l l a m a d o . E n la f i g u r a 7 . 2 8 s e u t i l i z a n t a n t o l o s n o m b r e s n o l o c a l e s c o m o lo s p a r á ­
m e tro s p a r a in te r c a m b ia r lo s v a lo re s d e a [ i ] y a [ j ] . A q u í l a m a t r i z a e s n o lo c a l
al p ro c e d im ie n to i n t e r c a m b i o , e i y j s o n p a rá m e tro s .
E n e s ta s e c c ió n se e s tu d i a n v a rio s m é to d o s p a r a a s o c ia r p a r á m e tr o s a c tu a le s y
fo rm a le s: lla m a d a p o r v a lo r, lla m a d a p o r re fe re n c ia , c o p ia y r e s ta u r a c ió n , lla m a d a
p o r n o m b r e y m a c ro e x p a n s ió n . E s im p o r ta n te c o n o c e r el m é to d o d e p a s o d e p a rá ­
m e tro s q u e u tiliz a u n le n g u a je (o c o m p ila d o r ) , p o r q u e el r e s u lta d o d e u n p r o g r a m a
p u e d e d e p e n d e r d el m é to d o e m p le a d o .
438 A M B IE N T E S PA R A EL M O M E N T O D E LA EJECUCION

¿ P o r q u é t a n t o s m é to d o s ? L os d is tin to s m é t o d o s s u r g e n d e d if e r e n te s in t e r p r e ­
ta c io n e s e n c u a n t o a lo q u e re p r e s e n ta u n a ex p re sió n . E n u n a a s ig n a c ió n c o m o

a [ij := a [ j J

la ex p re s ió n a [ j ] re p r e s e n ta u n v alor, m i e n t r a s q u e a [ i ] r e p r e s e n ta u n a p o s ic ió n
d e m e m o r i a d e n t r o d e la q u e se c o lo c a el v a lo r d e a [ j ] . L a d e c isió n d e si u tiliz a r la
p o s ic ió n o el v a lo r r e p r e s e n ta d o p o r u n a e x p re s ió n v ie n e d e t e r m i n a d a p o r el h e c h o
d e q u e la ex p re s ió n a p a r e z c a e n el la d o i z q u ie r d o o e n el d e re c h o , re s p e c tiv a m e n te ,
del s ig n o d e a s ig n a c ió n . C o m o en el c a p í t u l o 2, el t é r m i n o valor d e lado izquierdo
se refiere a la p o s ic ió n d e m e m o r i a r e p r e s e n ta d a p o r u n a e x p r e s ió n y el t é r m i n o va­
lor d e lado derecho se refiere al v alo r c o n t e n i d o d e u n a p o s ic ió n d e m e m o r i a .

(1) procedure intercam bio(i, j: integer);


(2) v ar x : integer;
(3) begin
(4) x := a ( i ) ; a [ i ] := a ( j ] ; a f j ) := x

(5) end

Fig. 7.28. El proced im ien to en Pascal i n t e r c a m b i a con nom bres no locales


y parám etros.

Las diferencias e n tre los m é t o d o s de p a s o d e p a r á m e tr o s se b a s a n p rin c ip a lm e n te


e n q u e u n p a r á m e t r o a c tu a l re p r e s e n ta u n v a lo r d e la d o iz q u ie rd o , u n v a lo r d e la d o
d e r e c h o o el te x to del m i s m o p a r á m e t r o a c tu a l.

L la m a d a p or valor

E n c ie rto m o d o , este es el m é t o d o m á s sen cillo posible d e p a s a r p a r á m e t r o s . L o s p a ­


r á m e t r o s a c t u a l e s se e v a l ú a n y s u s v a l o r e s d e l a d o d e r e c h o se p a s a n al p r o c e d i ­
m i e n t o l l a m a d o . L a l l a m a d a p o r v a lo r se usa e n C, y g e n e r a l m e n t e los p a r á m e t r o s
se p a s a n e n Pascal d e e s ta m a n e r a . H a s t a a h o r a t o d o s los p r o g r a m a s d e este c a p ítu lo
h a n seg u id o este m é t o d o p a r a p a s a r p a r á m e t r o s . L a ll a m a d a p o r v alor se p u e d e i m ­
p l a n t a r c o m o sigue.

1. U n p a r á m e t r o f o r m a l se c o n s id e r a c o m o u n n o m b r e local, d e m o d o q u e las d i­
reccio n es d e m e m o r i a p a r a los p a r á m e t r o s fo rm a le s se e n c u e n t r a n en el registro
d e a c tiv a c ió n del p r o c e d i m i e n t o lla m a d o .

2. El p r o c e d i m i e n t o a u t o r d e la l l a m a d a e v a l ú a los p a r á m e t r o s a c tu a le s y coloca
s u s valores d e la d o d e r e c h o e n las d ir e c c io n e s d e m e m o r i a d e los p a r á m e t r o s
form ales.

U n a característica d is ti n tiv a d e la ll a m a d a p o r v a lo r e s q u e las o p e r a c i o n e s sobre


los p a r á m e t r o s fo rm a le s n o a fe c ta n a los v a lo re s e n el registro d e a c tiv a c ió n del a u ­
t o r d e la lla m a d a . Si n o se tie n e en c u e n t a la p a l a b r a clav e v a r e n la línea 3 d e la
figura 7.29, Pascal p a s a r á x e y p o r v a l o r al p r o c e d i m i e n t o p e r m u t a . E n t o n c e s la
ll a m a d a p e r m u t a ( a , b ) e n la lín e a 12 n o m o d i f ic a los v a lo re s d e a y b . C o n la lia-
7.5 PASO D E P A R A M E T R O S 439

(1) program re fe re n c ia (input, output);


(2) var a, b: integer;
(3) procedure perm uta(var x, y: integer);
(4) v a r temp : integer;
(5) begin
(6) temp := x;
(7) x := y;
(8) y := temp
(9) end;

(10) begin
(11) a : = 1; b ;= 2 ;
(12) perm uta(a ,b ) ;
( 13) w r i t e l n ('a = \a ); w riteln ('b = ',b)
(14) end.

Fig. 7.29. P rogram a en Pascal con el proced im ien to p e r m u t a .

m a d a p o r valor, el efecto d e la ll a m a d a p e r m u t a ( a , b ) es e q u iv a le n te
c ia d e pasos

x := a
y ;= b
temp := x
x ;= y
y := temp

d o n d e x, y y t e m p s o n locales a p e r m u t a . A u n q u e estas a s ig n a c io n e s c a m b i a n los


valores d e las variables locales x. y y temp. las m o d if ic a c io n e s n o sirven c u a n d o el
c o n t ro l r e t o r n a d e la ll a m a d a y se d es a s ig n a el registro d e a c tiv a c ió n p a r a p e r m u t a .
P o r t a n t o , la ll a m a d a n o a fe c ta al registro d e a c tiv a c ió n del a u t o r d e la lla m a d a .

(1) permuta(x,y)
(2) int *x, *y;
(3) { i n t temp;
(4) temp = *x; *x = *y; *y - temp;
(5) }
(6) main( )
(7) ( int a ■ 1, b = 2;
(8) p e r m u t a ( &a, &b );
(9) p r i n t f ( " a es a h o r a %d, b es ahora %d\n",a,b);
(10) }

Fig. 7 .3 0 . P r o g r a m a en C q u e u s a a p u n t a d o r e s e n u n p r o c e d i m i e n t o l l a m a d o p o r valor.
440 A M B IE N T E S P A R A EL M O M E N T O D E LA EJECUCION

U n p r o c e d i m i e n t o l l a m a d o p o r v a l o r p u e d e a f e c ta r a su l l a m a d o r ya s e a a través
de n o m b r e s n o locales (v éase i n t e r c a m b i o e n la Fig. 7.28) o a tra v é s d e a p u n t a ­
d o r e s q u e se p a s a n e x p l í c i t a m e n t e c o m o p a r á m e tr o s . E n el p r o g r a m a e n C d e la fi­
g u r a 7.30. x e y s o n d e c l a r a d o s e n la lin e a 2 a p u n t a d o r e s a e n te r o s ; el o p e r a d o r & en
la ll a m a d a p e r m u t a ( &a, &b) d e la lín e a 8 h a c e q u e lo s a p u n t a d o r e s a a y b se p a ­
sen a p e r m u t a . El r e s u lta d o d e este p r o g r a m a es

a es ahora 2, b es ahora 1
El u s o d e a p u n t a d o r e s en este e j e m p l o sugiere c ó m o i n t e r c a m b i a r í a v alores u n c o m ­
p i l a d o r q u e utilice l l a m a d a p o r referencia.

L la m a d a p or re fere n c ia

C u a n d o los p a r á m e t r o s se p a s a n p o r referencia ( c o n o c i d a t a m b i é n c o m o llam ada


por dirección o llam a da por posición), el a u t o r d e la ll a m a d a p a s a al p r o c e d i m i e n t o
r e c e p t o r d e la ll a m a d a u n a p u n t a d o r a la d ire c c ió n d e m e m o r i a d e c a d a p a r á m e t r o
actual.

1. Si u n p a r á m e t r o a c t u a l es u n n o m b r e o u n a e x p re s ió n q u e te n g a u n v alo r de
la d o iz q u ie r d o , e n t o n c e s se p a s a ese m i s m o v a lo r d e l a d o iz q u ierd o .

2. Sin e m b a r g o , si el p a r á m e t r o a c t u a l es u n a e x p r e s ió n , c o m o a + b o 2, q u e n o
l i e n c n in g ú n v a lo r d e la d o i z q u i e r d o , e n t o n c e s la e x p r e s i ó n s e e v a lú a e n u n a
n u e v a p o sic ió n , y se p a s a la d ir e c c ió n d e d i c h a posición.

U n a re fe re n c ia a u n p a r á m e t r o f o r m a l e n el p r o c e d i m i e n t o l l a m a d o se c o n v i e r te , en
el c ó d ig o o b je to , e n u n a re fe re n c ia in d ir e c ta a tra v é s del a p u n t a d o r p a s a d o al p ro ­
c e d i m i e n t o llam ad o .

E je m p lo 7 .7 . C o n s i d é r e s e el p r o c e d i m i e n t o p e r m u t a d e la fig u ra 7 .2 9 . U n a lla­
m a d a a p e r m u t a c o n p a r á m e t r o s reales i y a [ i ] , es d e c ir, p e r m u t a ( i , a [ i ) ) ,
t e n d r í a el m i s m o efecto q u e la s ig u ie n te s e c u e n c ia d e pasos.

1. C ó p ie n s e las d ire c c io n e s (v alo res d e l a d o iz q u ie r d o ) d e i y a [ i ] d e n t r o d e l r e ­


gistro d e a c tiv a c ió n del p r o c e d i m i e n t o l l a m a d o , p o r e j e m p lo , e n las po sicio n es
a r g l y a r g 2 c o r r e s p o n d i e n t e s a x e y, re s p e c tiv a m e n te .

2. Asígnese a temp el c o n t e n id o d e la posición a p u n t a d a p o r a r g l (es decir, iguálese


temp a /„. d o n d e /«, es el v alor inicial d e i). Este p a s o c o rr e s p o n d e a temp : = x
en la linea 6 d e la d efinición d e p e r m u ta .

3. A síg n en se los c o n t e n i d o s d e la p o s ic ió n a p u n t a d a p o r a r g l a l v alo r d e la p o si­


c i ó n a p u n t a d a p o r a r g 2 ; es d e c ir , i s = a [ / 0]. Este p a s o c o r r e s p o n d e a x : = y
e n la lín e a 7 d e p e r m u t a .

4. A sígnese al c o n t e n i d o d e la p o s ic ió n a p u n t a d a p o r a r g 2 el v a l o r d e t e m p ; es
decir, h ág ase a [/„ ] : = i . E s te p a s o c o r r e s p o n d e a y : = t e m p . □

V a r io s le n g u ajes utilizan ll a m a d a p o r referencia; los p a r á m e t r o s v a r d e Pascal


se p a s a n d e esta f o r m a . L as m a tr ic e s g e n e r a l m e n t e se p a s a n p o r referencia.
7.5 PASO D E P A R A M E T R O S 441

C o p ia y resta u ra ció n

U n h íb r i d o e n t r e la ll a m a d a p o r v a lo r y la l l a m a d a p o r re fe re n c ia e s el enlazado de
copia y restauración ( t a m b i é n c o n o c i d o c o m o copia-dentro, copia-fuera o valor y
resultado).

1. A n te s d e q u e el c o n t r o l flu ya al p r o c e d i m i e n t o l l a m a d o , se e v a l ú a n lo s p a r á ­
m e t r o s actuales. L o s v a lo re s d e l a d o d e r e c h o d e los p a r á m e t r o s a c t u a le s se p a s a n
al p r o c e d i m i e n t o l l a m a d o c o m o e n la l l a m a d a p o r v alo r. A d e m á s , s in e m b a r g o ,
los v a lo re s d e la d o i z q u ie r d o d e e s to s p a r á m e t r o s a c tu a le s c o n v a lo re s d e la d o
iz q u ie r d o se d e t e r m i n a n a n t e s d e llam ad a .

2. C u a n d o el c o n t r o l r e t o r n a , lo s v a lo re s d e la d o d e r e c h o e n c u r s o d e los p a r á m e ­
tr o s fo rm a le s se c o p i a n d e r e t o m o e n los v a lo re s d e la d o i z q u ie r d o d e los p a r á ­
m e t r o s reales, u t i liz a n d o los v alores d e la d o i z q u ie r d o c a l c u la d o s a n t e s d e la lla­
m a d a . Sólo se c o p i a e n los p a r á m e t r o s a c t u a le s c o n valores d e l a d o iz q u ierd o ,
p o r s u p u e s to .

El p r i m e r p a s o “ c o p i a dentro'* los v a lo re s d e los p a r á m e t r o s a c tu a le s e n el registro


d e a c tiv a c ió n d e l p r o c e d i m i e n t o l l a m a d o ( e n la m e m o r i a p a r a los p a r á m e t r o s fo r­
m ales). El s e g u n d o p a s o “c o p i a f u e r a " los v a lo re s finales d e los p a r á m e t r o s fo rm a le s
e n el r e g is tro d e a c t i v a c i ó n d e l q u e e f e c t ú a la l l a m a d a (e n los v a lo re s d e l a d o iz­
q u i e r d o c a l c u la d o s s e g ú n los p a r á m e t r o s a c tu a le s a n t e s d e la llam ada).
O b s é rv e s e q u e p e r m u t a ( i , a [ i ] ) f u n c i o n a c o r r e c t a m e n t e u t i liz a n d o c o p i a y
r e s ta u ra c ió n p o r q u e la p o s ic ió n d e a [ i ] la c a lc u la y p re s e rv a el p r o g r a m a q u e hace
la ll a m a d a a n t e s de la ll a m a d a . P o r t a n t o , el v a lo r final d e l p a r á m e t r o f o r m a l y . q u e
será el v alor inicial d e i , se c o p i a e n la posición co rrecta, a u n q u e la posición d e a ( i ]
e s m o d i f ic a d a p o r la ll a m a d a ( p o r q u e el v a lo r d e i c a m b ia ).
A lg u n a s i m p l a n t a c i o n e s d e F O R T R A N utilizan el m é t o d o d e c o p i a y r e s ta u r a ­
ció n . Sin e m b a r g o , o tr a s u tiliz a n la l l a m a d a p o r referencia. P u e d e n a p a r e c e r d if e r e n ­
cias e n t r e las d o s si el p r o c e d i m i e n t o l l a m a d o tie n e m á s d e u n a m a n e r a d e acceder
a u n a posición e n el registro d e a c tiv a c ió n del a u t o r d e la ll a m a d a . L a activ ació n
realizad a p o r la ll a m a d a i n s e g u r o ( a ) en la línea 6 d e la figura 7.31 p u e d e acced er
a a c o m o u n n o m b r e n o local y a tra v é s d e l p a r á m e t r o f o r m a l x . C o n la l l a m a d a p o r
referencia, las a s ig n a c io n e s a x y a a a fe c ta n i n m e d i a t a m e n t e a a . así q u e el v alor
final d e a es 0 . Sin e m b a r g o , c o n la c o p i a y re s ta u ra c ió n , el v a lo r 1 d e l p a r á m e t r o

(1) program c o p i a a f u e r a ( i n p u t , o u t p u t );
(2) v ar a : in te g e r;
(3 ) procedure in se g u ro (v a r x : in te g e r ) ;
(4) b e g i n x :=* 2 ; a ;= 0 e n d ;
(5) begin
(6) a := 1; i n s e g u r o ( a ) ; w r i t e l n ( a )
(7) end.

F ig . 7 .3 1 . E l r e s u l t a d o c a m b i a si la l l a m a d a p o r r e f e r e n c ia s e c a m b i a p o r c o p i a
y r e s ta u r a c ió n .
442 A M B IE N T E S PARA EL M OM ENTO DE LA E JE C U C IO N

real a se copia en el parám etro form al x. E l valor final 2 de ¿ se copia hacia fuerz
en el valor de lado izquierd o de a ju sto antes de que el control retorne, así que £
valor final de a es 2 .

L la m a d a p o r n o m b r e

La llam ada por nom bre se define tradicionalm ente con la regla d e copia de A L ­
G O L , que es:

1. E l procedim iento se considera com o si fuera un m acro; es decir, su cuerpo se


sustituye p o r la llam ada en el auto r de la llam ada, y los parám etros actuales
_se sustituyen literalm ente por los parám etros form ales. D ich a sustitución literal
se d tn o m m & m a cro exp a n sió n o expansión en línea.

2. Los nom bres locales del procedim iento llam ado se distinguen de los nombres
del procedim iento llam ador. Se puede considerar que a cada nom bre local del
procedim iento llam ado se le da sistem áticam ente otro nom bre distinto antes de
realizar la m acroexpansión.

3. Si es necesario, los parám etros actuales se encierran entre paréntesis para pre­
servar su integridad.

Ejem plo 7.8 . L a llam ada p e rm u ta ( i , a [ i ] ) del ejem plo 7 .7 se im plantaría como
si fuera
tem p := i
i := a [ i ]
a [i] := tem p <1

A sí, con la llam ada por nom bre, p e rm u ta asigna a [ i ] a i , com o estaba previsto,
pero ofrece el resultado sorprendente de asignar / 0 a a [a [/„ ] ] (en lugar de asignarlo
a a [ /o ] ). donde I 0 es el va lo r in icia l de i . Este fenóm eno se produce porque la po­
sición de x en la asignación x := te m p de p e rm u ta no se evalúa hasta ser necesario,
y para entonces el valor de i ya ha cam biado. Aparentem ente no se puede escribir
una versión de p e rm u ta que funcione correctam ente si se u tiliza la llam ada por
nom bre (véase F leck [ 1976]). n

A un que el interés de la llam ada por nom bre es fundam entalm ente teórico, se ha
propuesto la técnica conceptualm ente relacionada de expansión en línea para re­
d u cir el tiem po de ejecución de un program a. Existe un cierto costo asociado al es­
tablecim iento de una activación de un procedim iento — se asigna espacio para el
registro de activación, se guarda el estado de la m áquina, se establecen los enlaces y
después se transfiere el co n tro l— . C u a n d o el cuerpo de un procedim iento es pe­
queño, el código para las secuencias de llam ada puede superar en peso al código del
cuerpo del procedim iento. Por tanto, puede ser más eficiente u tiliza r la expansión
en línea del cuerpo dentro del código del autor de la llam ada, aunque el tam año del
program a aum ente un poco. E n el siguiente ejem plo, la expansión en línea se aplica
a un procedim iento llam ado por valor.
7.6 TA B LA S D E SIM BOLOS 443

E je m p lo 7.9. S u p ó n g ase q u e la fu n c ió n f e n la asig n ac ió n

x := f ( A ) + f ( B)

sea ll a m a d a p o r valor. A q u í, lo s p a r á m e t r o s a c tu a le s A y B s o n ex presio n es. S u stitu ir


las e x p r e s io n e s A y B p a r a c a d a c a s o del p a r á m e t r o f o r m a l e n el c u e r p o d e f c o n ­
d u c e a la l l a m a d a p o r n o m b r e ; recu érd ese a [ i ] del ú l t i m o ejem p lo .
Se pueden utilizar nuevas variables temporales para obligar a que la evaluación
d e lo s p a r á m e t r o s a c t u a le s se r e a lic e a n t e s d e la e j e c u c i ó n del c u e r p o d e l p r o c e d i ­
m ie n to :

t , := A ;
t 2 := B ;
t 3 := f ( t , ) ;
t 4 : = f ( t 2) ;
x : = t i + t 4;

A h o r a , la e x p a n s i ó n e n línea s u stitu irá t o d o s los c a s o s del p a r á m e t r o f o r m a l p o r t |


y t 2 c u a n d o se a m p l í e n la p r i m e r a y la s e g u n d a lla m a d a s, r e s p e c t i v a m e n t e 7. □

L a i m p l a n t a c i ó n m á s f r e c u e n te d e la ll a m a d a p o r n o m b r e c o n s is te e n p a s a r al
p r o c e d i m i e n t o l l a m a d o s u b r u t i n a s sin p a r á m e t r o s , q u e p u e d e n e v a l u a r el v a lo r de
l a d o i z q u i e r d o o d e l a d o d e r e c h o del p a r á m e t r o a c t u a l . C o m o c u a l q u i e r p r o c e d i ­
m i e n t o p a s a d o c o m o p a r á m e t r o e n u n le n g u a je q u e utiliza a l c a n c e léxico, estas s u ­
b r u ti n a s llevan c o n ellas u n e n la c e d e acceso, q u e a p u n t a n al registro d e activ ació n
en c u r s o p a r a el p r o c e d i m i e n t o q u e h a c e la lla m a d a .

7 .6 T A B L A S D E S I M B O L O S

U n c o m p i l a d o r utiliza u n a ta b la d e s í m b o l o s p a r a llevar u n registro d e la i n f o r m a ­


c ió n s o b re el á m b i t o y el e n la c e d e los n o m b r e s . Se e x a m i n a la ta b la d e s ím b o lo s
c a d a vez q u e se e n c u e n t r a un n o m b r e e n el te x to fu e n te . Si se d e s c u b r e u n n o m b r e
n u e v o o n u e v a in f o r m a c i ó n s o b re u n n o m b r e ya existente, se p r o d u c e n c a m b i o s en
la tabla.
U n m e c a n i s m o d e tabla d e s ím b o l o s d e b e p e r m i tir a ñ a d i r e n t r a d a s n u e v a s y e n ­
c o n t r a r las e n t r a d a s ex iste n te s e fic ie n te m e n te . L os d o s m e c a n i s m o s p a ra ta b la s de
s ím b o l o s p r e s e n ta d a s en esta s e c c ió n son listas lineales y tablas d e d is p e rs ió n . C a d a
e s q u e m a se e v a lú a b a s á n d o s e e n el t i e m p o n ecesario p a r a a ñ a d i r n e n t r a d a s y reali­
z a r e c o n s u lta s . U n a lista lineal e s lo m á s fácil d e i m p la n t a r , p e r o su r e n d i m i e n t o es
p o b r e c u a n d o e y n se v u e lv e n m á s g r a n d e s . L o s e s q u e m a s d e d is p e rs ió n p r o p o r c i o ­
n a n u n m a y o r r e n d i m i e n t o c o n u n e s f u e r z o a lg o m a y o r d e p r o g r a m a c i ó n y gasto d e
espacio. A m b o s m e c a n i s m o s p u e d e n a d a p t a r s e r á p i d a m e n t e p a r a f u n c i o n a r c o n la
regla del a n i d a m i e n t o m á s c e rc a n o .

E x isie n c o s t o s o c u lto s a s o c ia d o s c o n v a ria b le s te m p o r a le s. P u e d e n h a cer q u e s e a sig n e e s p a c io a d i­


c io n a l e n u n registro d e a c tiv a c ió n . S i se in ic ia liz a n la s v a ria b le s lo c a le s e n e l reg istro d e a c tiv a c ió n ,
e n t o n c e s la s v a ria b le s te m p o r a le s a d ic io n a le s ta m b ié n h a c e n p erder tiem p o .
444 A M B IE N T E S PARA EL M O M ENTO DE LA E JE C U C IO N

Es útil que un co m p ilad o r pueda aum entar dinám icam ente,la tabla de sím bolos
durante la co m p ilació n . Si la tabla de sím bolos tiene tam año fijo al e scrib ir el com ­
pilad o r, entonces el tam año debe ser lo suficientem ente grande com o para albergar
cualqu ier program a fuente. E s m u y probable que dich o tam año sea dem asiado grande
para la m ayoría de los program as e inadecuado para algunos.

Entradas de la tabla de sím bolos

C a d a entrada de la tab la de sím b o lo s corresponde a la d eclaració n de un nom bre.


E l form ato de las entradas no tiene que ser u n ifo rm e porque la in fo rm ació n de un
nom bre depende del uso de d ich o nom bre. C ad a entrada se puede im p lan tar com o
un registro que conste de una secuencia de palabras consecutivas de m em oria. Para
m antener uniform es los registros de la tabla de sím bolos, es conveniente guardar una
parte de la in fo rm ació n de un nom bre fuera de la entrada de la tabla, alm acenando
en el registro só lo un apuntador a esta in fo rm ació n.
N o toda la in fo rm ació n se introduce en la tabla de sím bolos a la vez. Las pala­
bras clave se introducen, si acaso, al in icio . E l an alizad o r lé xico de la sección 3.4
busca secuencias de letras y dígitos en la tabla de sím bolos para d eterm inar si se ha
encontrado un a palabra clave reservada o un nom bre. C o n este enfoque, las pala­
bras clave deben estar en la tabla de sím bolos antes de que com ience el a n álisis lé­
xico. E n ocasiones, si el an alizad o r lé xico reconoce las palabras clave reservadas, en­
tonces no necesitan aparecer en la tabla de sím bolos. Si el lenguaje no convierte en
reservadas las palabras clave, entonces es indispensable que las palabras clave se in ­
troduzcan en la tabla de sím bolos ad virtien d o su posible uso com o palabras clave.
La entrada m ism a de la tabla de sím bolos puede establecerse cuando se aclara el
papel de un nom bre, y se llenan los valores de los atrib uto s cuan d o se dispone de la
in fo rm ación. E n algunos casos, el an alizad o r léxico puede in ic ia r la entrada en cuanto
aparezca un nom bre en los datos de entrada. A m enudo, un nom bre puede in d ica r
vario s objetos d istin to s, q u izá s in c lu so en el m ism o b lo q u e o pro cedim iento . Por
ejem plo, las declaraciones en C
in t x;
s t r u c t x { f lo a t y , z ; };

u tilizan x com o entero y com o etiqueta de una estructura co n dos cam pos. E n d i­
chos casos, el an alizad o r léxico sólo puede devo lver al an alizad o r sintáctico el nom ­
bre solo (o un apuntador al lexem a que form a dich o nom bre), en lugar de un a p u n ­
tador a la entrada en la tabla de sím bolos. Se crea el registro en la tabla de sím bolos
cuando se descubre el papel sintáctico que desem peña este nom bre. Para las decla­
raciones de (7 .1 ), se crearían dos entradas en la tabla de sím bolos para x ; una con x
com o entero y otra com o estructura.
Lo s atributos de un nom bre se in tro d ucen en respuesta a las declaraciones, que
pueden ser im p líc ita s. L a s etiq uetas so n a m en u d o id e n tific a d o re s seg uid o s de
dos punto s, así que una acción asociada con el reconocim iento de d ich o identifica-
d o r puede ser in tro d u cir este hecho en la tabla de sím bolos. A sim ism o , la sin taxis
de las declaraciones de procedim ientos especifican que algunos identificadores son
parám etros form ales.
7 .6 TABLAS DE S IM B O L O S 445

Caracteres dentro de un nombre


Com o se vio en el capítulo 3, existe una distinción entre el com ponente léxico id
oara un identificador o nom bre, el lexem a form ado por la cadena de caracteres que
com ponen el nom bre, y los atributos del nom bre. Las cadenas de caracteres pueden,
ser difíciles de m anejar, así que los com piladores utilizan a m enudo alguna repre­
sentación de longitud fija del nom bre en lugar del lexem a. E l lexem a es necesario
cuando se establece por prim era vez una entrada a la tabla de sím bolos y cuando se
cusca un lexem a encontrado en los datos de entrada para determ inar si es un nom -
rre que ya ha aparecido. U n a representación habitual de un nom bre es un apunta­
dor a una entrada en la tabla de sím bolos para él.
Si hay un lím ite superior pequeño para la longitud de un nom bre, entonces los
caracteres del nom bre-pueden alm acenarse en la entrada de la tabla de sím bolos,
como se muestra en la figura 7.32(a). Si no hay lím ite para la longitud de un nom ­
bre, o si rara vez se alcanza el lím ite, se puede u tilizar el esquema indirecto de la
figura 7.32(b ). En lugar de asignar la cantidad m áxim a de espacio para guardar un
lexema en cada entrada de la tabla, se puede u tilizar el espacio más eficientem ente
si sólo hay espacio para un apuntador en cada entrada de la tabla. E n el registro para
un nombre, se coloca un apuntador a una m atriz independiente de caracteres (la

N ombre A tributos

—° !1— r í
1—a !
1— e !
1— n !
1— a l
!m l i !
ie i n !
it i

a i ................. ............................

—1 i— e 1— e 1
i— m 1
i— a i
1 fci
1r 1
i1 r
1z 1
i i
1 i
1
1 i i i i i i i i i i i

la) En espacio de tamaño fijo dentro de un registro Nombre Atributos

F ig . 7 .3 2 . A lm a c e n a m ie n to d e lo s caracteres d e u n n o m b re .
446 A M B IE N T E S PARA EL M OM ENTO DE LA E JE C U C IO N

tabla de cadenas) que da la posición del prim er carácter del lexema. E l esquema
indirecto de la figura 7.32 (b ) perm ite que el tam año del cam po del nom bre de la
entrada m ism a de la tabla de sím bolos perm anezca constante.
El lexem a com pleto que constituye un nom bre debe alm acenarse para garantizar
que todos los usos del m ism o nom bre se puedan asociar con el m ism o registro en la
tabla de símbolos. Sin embargo, se debe distinguir entre casos del m ism o lexema que
estén dentro de los ám bitos de declaraciones distintas.

Inform ación sobre la asignación de memoria

Se m antiene en la tabla de sím bolos la inform ación acerca de las posiciones de me-
m o ria que se lig arán a nom bres durante la ejecució n. C o n sidérense p rim e ro los
nombres_e_on_ppsiciones de m em oria estática. Si el código objeto es lenguaje ensam­
blador, el ensam blador puede encargarse de las posiciones de m em oria para los dis­
tintos nombres. Basta con exam inar la tabla de sím bolos, después de generar código
ensam blador para el program a, y generar definiciones de datos en lenguaje ensam ­
blador para añadirlos al program a en lenguaje ensam blador para cada nombre.
Sin embargo, si el com pilador genera código de m áquina, entonces se debe in ­
dagar la posición de cada objeto de datos relativa a un origen fijo, com o el p rin cip io
de un registro de activación. La m ism a observación sirve para un bloque de datos
cargado com o un m ódulo independiente del program a. Por ejem plo, los bloques
c o m m o n en F O R T R A N se cargan p o r separado y se deben determ inar las posiciones

de los nom bres con respecto al p rin cip io del bloque c o m m o n en el que residan. Se­
gún lo expuesto en la sección 7.9, el enfoque de la sección 7.3 debe m odificarse para
F O R T R A N , ya que se deben asignar desplazam ientos para los nom bres después de
que hayan aparecido todas las declaraciones de un procedim iento y se hayan pro­
cesado las proposiciones e q u i v a l e n c e .
Para los nom bres cuya m em oria esté asignada en una pila o un m ontículo, el
co m p ilad o r no hace n in g u n a asignación de m em oria — el co m p ilad o r organiza
el registro de activación para cada procedim iento, com o en la sección 7.3.

L a estructura de datos tipo lista para la s tablas de sím bolos

La estructura de datos más sencilla y fácil de im plantar para una tabla de sím bolos
es una lista lineal de registros, que se m uestra en la figura 7 .3 3 . Se utiliza una sola
m atriz, o varias, para alm acenar nom bres y su inform ación asociada. Lo s nombres
nuevos se añaden a la lista en el orden en que aparecen. L a posición del fin al de la^
m atriz se m arca con el apuntador d isp o n ib le, que apunta h acia donde irá la s i­
guiente entrada de la tabla de sím bolos. L a búsqueda de un nom bre se realiza hacia
atrás desde el final de la m atriz hasta el com ienzo. C uando se localiza el nom bre, la
inform ación asociada puede estar en las palabras situadas a continuación. Si se al­
canza el com ienzo de la m atriz sin haber encontrado el nom bre, se produce un fallo
— un nom bre previsto no está en la tabla.
Obsérvese_que construir una entrada para un nom bre y buscar el n o m b r e n la
tabla de sím bolos son operaciones independientes — es posible realizar sólo una de
ellas— . E n un lenguaje estructurado por bloques, un caso de un nom bre está dentro
del ám bito de la declaración de anidam iento más cercana del nom bre. Se puede im -
7 .6 TABLAS DE S IM B O L O S 447

plantar esta regla de ám bito utilizan d o la estructura de datos tipo lista, constru­
yendo una entrada nueva para un nom bre cada vez que se declara. Se construye una
entrada nueva en las palabras inm ediatam ente después del apuntador d isp o n ib le ;
este apuntador aum enta por el tam año del registro en la tabla de sím bolos. Com o
las entradas se insertan en orden, com enzando por el p rin cip io de la m atriz, apare-
cen_en el orden en que se crearon. Buscando desde disponible hacia el p rin cip io de
la m atriz, se encuentra la entrada más recientem ente creada.

Fig. 7.33. U na lista lineal de registros.

Si la tabla de sím bolos contiene n nom bres, el trabajo necesario para insertar un
nom bre nuevo es constante si se realiza la inserción sin com probar si el nom bre ya
se encuentra en la tabla. Si no se perm iten entradas m últiples para los nom bres, en­
tonces es necesario recorrer toda la tabla para descubrir que un nom bre no está en
la tabla, realizando un trabajo proporcional a n en el proceso. Para encontrar los
datos de un nom bre, com o prom edio se exam inan n¡ 2 nom bres, así que el costo de
una consulta tam bién es proporcional a n. Por tanto, com o las inserciones y las con­
sultas em plean un tiem po proporcional a n, el trabajo total para insertar n nom bres
y hacer e consultas es a lo sum o en (n + e), donde c es una constante que representa
el tiem po necesario para realizar unas pocas operaciones de m áquina. E n un pro­
gram a de tam año m edio, se puede tener n = 100 y e = 1000, así que se utilizan varios
cientos de m iles de operaciones de m áquina para el m antenim iento de la tabla. Esto
no tiene im portancia porque se trata de m enos de un segundo de tiempo. Sin em­
bargo, si n y e se m ultiplican por 10, el costo se m ultip lica por 100, y el tiem po de
m antenim iento se vuelve prohibitivo. La estructuración proporciona datos valiosos
acerca de dónde em plea su tiem po un com pilador y puede utilizarse para d ecid ir si
se utiliza dem asiado tiem po en buscar en listas lineales.

T ab las de dispersión
En m uchos com piladores se han im plantado variaciones de la técnica de búsqueda
conocida com o dispersión._En este caso se considera una variante bastante senci-
448 A M B I E N T E S P A R A E L M O M E N T O D E LA E J E C U C I O N

lia c o n o c i d a c o m o dispersión abierta, d o n d e “ a b i e r t a " se refiere a la p r o p ie d a d d e


q u e n o h a y lí m it e al n ú m e r o d e e n t r a d a s q u e p u e d e n c o n s tr u i rs e e n la tabla. In c lu s o
este e s q u e m a p e r m i t e la realizació n d e e c o n s u lt a s s o b r e n n o m b r e s e n u n t i e m p o
p r o p o r c io n a l a n(n+ e)/m , p a r a c u a l q u i e r c o n s t a n t e m elegida. C o m o m se p u e d e a u ­
m e n t a r t o d o lo q u e se q u ie r a , h a s ta n , este m é t o d o es e n gen eral m á s e f ic ie n te q u e
las listas lineales y es el m é t o d o e le g id o p a r a la s ta b la s d e s í m b o l o s e n la m a y o r í a de
las s itu a cio n es. C o m o es n o r m a l , el e s p a c io o c u p a d o p o r la e s t r u c t u r a d e d a t o s a u ­
m e n t a c o n m , asi q u e a t a ñ e u n a rre g lo tie m p o -e s p a c io .
El e s q u e m a d e d is p e rs ió n b ásico se ilustra e n la figura 7.34. H a y d o s p a rte s r e ­
lativas a la e s t r u c t u r a d e datos:

1. U n a tabla d e dispersión f o r m a d a p o r u n a m a t r i z fija d e m a p u n t a d o r e s a e n t r a ­


d a s d e tabla.

2. E n t r a d a s d e la ta b la o r g a n iz a d a s e n m listas e n l a z a d a s i n d e p e n d i e n t e s ll a m a d a s
cubetas ( a lg u n a s c u b e t a s p u e d e n e s t a r vacías). C a d a registro e n la ta b la d e s í m ­
bolos a p a r e c e e n sólo u n a d e estas listas. L a m e m o r i a p a ra estos registros se p uede
o b t e n e r d e u n a m a t r i z d e registros, c o m o se e s t u d i a r á e n la sig uien te sección.
T a m b i é n se p u e d e n u tiliz a r las v e n t a j a s p a r a la a s ig n a c ió n d i n á m i c a d e m e m o ­
ria d e l le n g u a je d e i m p l a n t a c i ó n p a r a o b t e n e r e s p a c io p a r a los registros, a u n q u e
se p ie rd e algo d e eficiencia.

Matriz de cabezas de listas.


indizada por valor de dispersión

0 Listas de elem entos creadas


para los n o m b re s q u e se m ue stran
cp n

20

final acto ws

32

210

Fig. 7.34. U n a tabla de dispersión de t a m a ñ o 211.

P a r a d e t e r m i n a r si e x iste o n o u n a e n t r a d a p a r a la c a d e n a s e n la t a b l a d e s í m ­
b o lo s, se a p lic a u n a fu n c ió n d e dispersión h a s , tal q u e li ( s ) d e v u e lv e u n e n t e r o e n ­
t r e 0 y m — 1. Si s está e n la ta b la d e s ím b o lo s , e n t o n c e s está e n la lista n u m e r a d a
7 .6 TABLAS DE SIM B O L O S 449

con h (s). Si 5 todavía no está en la tabla, se introduce creando un registro para s


enlazado al principio de la lista num erada con h (s).
E n la práctica, la lista prom edio consta de n /m registros si hay n nombres en una
tabla de tamaño m . Si se elige m de modo que n /m esté lim itado por una constante
pequeña, por ejem plo 2, el tiem po para acceder a una entrada de la tabla es prácti­
camente constante. El espacio em pleado por la tabla de sím bolos consta de m pala­
bras para la tabla de dispersión y en palabras para las entradas de la tabla, donde c
es el núm ero de palabras por entrada de la tabla. Por tanto, el espacio para la tabla
de dispersión depende sólo de m, y el espacio para las entradas de la tabla depende
sólo del núm ero de entradas.
L a elección de m depende de la aplicación que vaya a darse a una tabla de sím ­
bolos. Elegir a m com o unos cientos convertiría la búsqueda en la tabla una parte
insignificante del tiem po total em pleado por un com pilador, in cluso para progra­
mas de tam año m edio. Sin embargo, cuando los datos de entrada a un com pilador
pueden ser generados por otro program a, el núm ero de nom bres puede sobrepasar
con m ucho el de la m ayoría de los program as del m ism o tam año generados por una
persona, y serían preferibles tam años mayores para la tabla.
Se ha prestado m ucho interés a la cuestión de cóm o diseñar una función de dis­
persión fácil de calcular para cadenas de caracteres y que distribuya cadenas unifor­
memente entre las m listas.
U n enfoque adecuado para calcular funciones de dispersión es proceder de la si­
guiente manera:
1. Determ ínese un entero positivo h a partir de los caracteres £j, es, . . . , ck de la
cadena s. C onvertir caracteres sim ples en enteros viene apoyado generalmente
por el lenguaje de im plantación. Pascal proporciona la función ord para este
propósito; C convierte autom áticam ente un carácter en un entero si se realiza
en él una operación aritm ética.
2. Conviértase el entero h determ inado anteriorm ente en el núm ero de una lista,
es decir, un entero entre O y m - 1 . D iv id ir sim plem ente por m y tom ar el resto
es una idea razonable. Tom ar el resto funciona m ejor si tn es un núm ero prim o,
de ahí la elección de 211 en lugar de 200 en la figura 7.34.

Se engaña menos fácilm ente a las funciones de dispersión que exam inan todos
los caracteres de una cadena que, por ejem plo, a las funciones que exam inan sólo
unos cuantos caracteres en los extrem os o en la mitad de una cadena. Recuérdese
que los datos de entrada para un com pilador pudieron ser creados por un programa
y por tanto pueden tener una form a estilizada para evitar conflictos con los nombres
que pudieran utilizar una persona u otro programa. Las personas tienden asim ism o
a “ agrupar’' nombres, eligiendo v a lo r , v a lo r n u e v o , v a l o r i , etcétera.
U na técnica sencilla para calcular h es sum ar los valores enteros de los caracteres
de una cadena. U na idea m ejor todavía es m ultip licar el valor anterior de h por una
constante a antes de sum arle el nuevo carácter. Es decir, tom ar /?0 = 0,
//, = ah ¡-1 + c¡, para 1 < /< A ', y dejar que h = hk, donde k sea la longitud de la ca­
dena. (Recuérdese que el valor de dispersión que da el núm ero de lista es de h mod
w .) Sum ando los caracteres es el caso a = 1. U n a estrategia sim ila r es efectuar la
operación “ o exclusivo” de c, con a e n lugar de sum ar.
450 A M B I E N T E S P A R A E L M O M E N T O D E LA E J E C U C I O N

P a ra e n t e r o s d e 3 2 bits, si se t o m a a = 6 5 5 9 9 . u n n ú m e r o p r i m o c e r c a n o a 2 16,
e n t o n c e s p r o n t o se p r o d u c i r á u n d e s b o r d a m i e n t o d u r a n t e el c á l c u lo d e o C o m o
a e s u n n ú m e r o p r i m o , es m e j o r n o t e n e r e n c u e n t a los d e s b o r d a m i e n t o s y c o n s e r ­
v a r só lo los 32 b its d e o r d e n m e n o r.
E n u n a s e r ie d e e x p e r i m e n t o s , la f u n c i ó n dispersión p jw d e la fig u ra 7.35, to ­
m a d a del c o m p i l a d o r d e C d e P. J. W e in b e rg e r . se c o m p o r t ó c o n s i s t e n t e m e n t e bien
c o n lo d o s los t a m a ñ o s d e ta b la a n a l iz a d o s (véase Fig. 7.36). L o s t a m a ñ o s in c lu ían
los p r i m e r o s n ú m e r o s p r i m o s m a y o r e s d e 100, 2 0 0 , . . , 1500. E n s e g u n d o lu gar es­
ta b a la fu n c ió n q u e ca lc u ló h m u l t i p l i c a n d o el v a lo r a n t e r i o r p o r 6 5 5 9 9 . sin t e n e r en
c u e n t a los d e s b o r d a m i e n t o s , y s u m a n d o el sig uiente carác ter. L a f u n c ió n dispersión
p jw se c a lc u la c o m e n z a n d o p o r h = 0. P a r a c a d a c a r á c te r c, se tr a s l a d a n los b its de
h c u a t r o p o s ic io n e s a la iz q u ie r d a y se s u m a c. Si c u a l q u i e r a d e lo s c u a t r o b its d e
o r d e n m a y o r d e h es 1. se d e s p la z a n lo s c u a t r o bits 24 p o s ic io n e s a la d e re c h a . Se les
h a c e la o p e r a c i ó n d e “ o e x c lu s iv o ” en h, y se re a s ig n a a 0 c u a l q u i e r a d e los c u a t r o
bits d e o r d e n m a y o r q u e fu e r a 1.

(1) ¿ d e f i n e P R I M O 211
(2) ¿define FDC ' \ 0 '
(3) int dispersión_pjw (c)
(4) char *c;
(5) {
(6) char *p;
(7) unsigned h = 0, g;
(8) for ( p = c; *p != FDC; p = p+1 ) {
(9) h = (h « 4) + (* p );
(10) if (g = h&Oxf0000000) {
(11) h = h ~ (g » 24);
(12) h = h * g;
( 13) }
( 14) }
(15) return h % PRIMO;
(16) )

Fig. 7 3 5 . La función de dispersión dispersión pjw. escrita en C.

E je m p lo 7 .1 0 . P a ra o b t e n e r m e jo r e s re s u lta d o s, se d e b e n t e n e r e n c u e n t a el t a m a ñ o
d e la ta b la d e d is p e rs ió n y los d a t o s d e e n t r a d a previstos. P o r e j e m p lo , e s preferible
q u e los v alores d e d is p e rs ió n p a r a lo s n o m b r e s d e m a y o r fre c u e n c ia en u n lenguaje
s e a n d istin to s. Si la s p a l a b r a s clav e se i n t r o d u c e n e n la ta b la d e s ím b o lo s , e n to n c e s
es p r o b a b le q u e las p a la b r a s clav e s e a n d e los n o m b r e s q u e se p r o d u c e n c o n m a y o r
frecu en cia, a u n q u e e n u n m u e s t r e o d e p r o g r a m a s e n C . el n o m b r e i a p a r e c í a e n u n a
p r o p o r c ió n d e tres a u n o c o n re s p e c to a w h i l e .
U n a m a n e r a d e p o n e r a p r u e b a u n a f u n c ió n d e d is p e r s ió n e s o b s e r v a r el n ú m e r o
d e c a d e n a s q u e f o r m a n p a rte d e la lista. D a d o u n a r c h i v o /*' f o r m a d o p o r n c a d e n a s ,
s u p ó n g a s e q u e b, c a d e n a s f o r m a n p a rte d e la lista j . p a r a 0 < , j < m - 1. U n a m e d id a
7 .6 TABLAS DE S IM B O L O S 451

de lo uniform em ente que se distribuyen las cadenas a lo largo de las listas se obtiene
calculando
m- 1

^ bj(bj+l)/2 (7.2 )
7-0

La justificació n in tu itiva para estetérm ino es que hay que exam inar 1elem ento de
la lista para encontrar la prim era entrada en la lista j 9 2 para encontrar la segunda,
y así sucesivam ente hasta b, para encontrar la últim a entrada. La sum a de 1, 2 , . . . ,
bj es b j ( b ,+ 1) / 2.
Según el ejercicio 7.14, el va lo r de (7.2 ) para una función de dispersión que dis­
tribuya cadenas aleatoriam ente a lo largo de las cubetas es
• •

(n / 2 m ) (n + 2 m - 1) (7.3 )

E n la figura 7.36 se m uestra la razón de los térm inos (7.2 ) y (7 .3 ) para varias
funciones de dispersión aplicadas a nueve archivos. Lo s archivos son:
1. Los 50 nom bres y palabras clave más frecuentes en una m uestra de programas
en C.
2. Igual que (1), pero con los 100 nom bres y palabras clave más frecuentes.
3. Igual que (1), pero con los 500 nom bres y palabras clave más frecuentes.

M é t o d o s d e D isp e r s ió n

Se representa el n ú m e r o de archivo

Fig. 7.36 : Rendim iento relativo de varias funciones de dispersión para una tabla
de tamaño 211.
452 A M B IE N T E S PARA EL M O M ENTO DE LA E JE C U C IO N

4. 952 nom bres externos en el núcleo del sistem a operativo U N IX .


5. 627 nom bres de un program a en C generados p o r C + + (S tro ustrup [1986]).
6. 9 15 cadenas de caracteres generados aleatoriam ente.
7. 6 14 palabras de la sección 3.1 de este lib ro (en su versión en inglés de iu n io de
1987).
8. 1201 palabras en inglés con x x x añadido co m o p refijo y sufijo.
9. L o s 300 nom bres vlO O . v l O l v399.

L a fu n ció n d isp ersió n ..p jw es com o la de la figura 7 .3 5 . Las funciones co n nom bre
x a, donde a es una constante entera, calcu lan h mod m , donde h se obtiene itera­
tivam ente com enzando p o r 0, m u ltip lica n d o el v a lo r an terio r p o r a, y sum ando el
siguiente carácter. L a fu n ció n m e d io form a h a p a rtir de los cuatro caracteres dei
m edio de la cadena, en tanto que e x ir sum a los prim eros y los ú ltim o s tres caracte­
res con la longitud para fo rm ar h. P o r últim o , c u a d agrupa cada cuatro caracteres
consecutivos en un entero y después sum a los enteros. □

Representación de la inform ación sobre e l ám bito

Las entradas de la tabla de sím bolos son para declaraciones de nom bres. C u an d o se
busca el caso de un nom bre del texto fuente en la tabla de sím bolos, se debe devol­
ver la entrada correspondiente a la declaració n adecuada de d ich o nom bre. Las re­
glas de ám bito del lenguaje fuente determ inan qué declaración es la apropiada.
U n enfoque se n cillo consiste en m antener una tabla de sím b o lo s d istin ta para
cada ám bito. E n realidad, la tabla de sím bolos para un procedim iento o ám bito es
el equivalente durante la co m p ilació n de un registro de activació n. Se encuentra la
in fo rm ació n para los nom bres no locales de un procedim iento exam inand o las ta­
blas de sím b o lo s correspondientes a lo s p ro ced im ien to s abarcadores siguien d o las
reglas de ám bito del lenguaje. A sim ism o , se puede aso ciar la in fo rm ació n sobre los
nom bres locales de un procedim iento al nodo correspondiente al procedim iento en
un árbol sintáctico del program a. C o n este enfoque la tabla de sím bolos se integra
en la representación inm ediata de la entrada.
Las reglas de ám b ito de an id am ien to m ás cercano se pueden im p la n ta r adap­
tando las estructuras de datos anteriorm ente estudiadas en esta sección. Se lleva un
registro de lo s nom bres locales de u n p ro ced im ien to d an d o a cada procedim iento
un ú n ico nom bre. T am bién deben num erarse los bloques si el lenguaje está estruc­
turado p o r bloques. E l núm ero de cada procedim iento se puede ca lcu la r de form a
d irig id a p o r la sin ta x is según reglas sem án ticas qu e re co n o zcan el co m ie n zo y el
final de cada procedim iento. E l núm ero de procedim iento se convierte en parte de
todos los nom bres locales declarados en d ich o procedim iento; la representación de
nom bre local dentro de la tabla de sím bolos es un p ar form ado p o r el núm ero del
nom bre y del procedim iento. (E n algunas d isposiciones, co m o las qu e se describen
más adelante, no es necesario que aparezca el núm ero del procedim iento ya que se
puede d e d u cir de la posición del registro dentro de la tabla de sím bolos.)
C u an d o se busca un nom bre recién exam inado, se produce co n cord an cia sólo si
los caracteres del nom bre concuerdan co n u n carácter de entrada p o r carácter, y el
núm ero asociado en la entrada de la tab la de sím b o lo s es el n ú m ero d el procedí-
7.6 T A BL A S DE SIM BOLOS 453

m i e n t o q u e se está p ro c e s a n d o . L as reglas d e á m b i t o d e l a n i d a m i e n t o m á s c e r c a n o
p u e d e n i m p la n t a r s e según la s s ig u ie n te s o p e r a c i o n e s c o n u n n o m b r e :

busca : e n c u e n t r a la e n t r a d a r e c ié n c re a d a
inserta : c o n s tr u y e u n a e n t r a d a n u e v a
borra : e l i m i n a la e n t r a d a recién c r e a d a

D e b e n p reservarse las e n t r a d a s “ b o r r a d a s ” ; só lo se e l i m i n a n d e la ta b la d e s ím b o lo s
activa. E n u n c o m p i l a d o r d e u n a p a s a d a , la i n f o r m a c i ó n d e la ta b la d e s ím b o l o s so­
b re u n á m b i t o q u e c o n s te , p o r e je m p lo , d e u n c u e r p o d e u n p r o c e d i m i e n t o , n o se
n ecesita p a r a la c o m p i l a c i ó n d e s p u é s d e q u e se h a y a p r o c e s a d o el c u e r p o del p ro c e ­
d im i e n t o . Sin e m b a r g o , p u e d e n e cesitarse d u r a n t e la e je cu ció n , s o b r e t o d o si se i m ­
p l a n t a u n s is te m a d e d ia g n ó s tic o p a r a la e je cu ció n . E n este c a s o , se d e b e a ñ a d i r la
in f o r m a c ió n d e la t a b l a d e s ím b o l o s al c ó d ig o g e n e r a d o p a r a s e r u tiliz a d a p o r el e d i ­
t o r d e e n la c e s o p o r el s is te m a d e d ia g n ó s tic o p a r a la e je cu ció n . V éase t a m b i é n el
t r a t a m i e n t o d e los n o m b r e s d e los c a m p o s d e n t r o d e los registros e n las secciones
8.2 y 8.3.
C a d a u n a d e las e s t r u c t u r a s d e d a t o s p r e s e n ta d a s e n esta secció n — listas y e n t r a ­
d a s d e d is p e r s ió n — se p u e d e m a n t e n e r p a r a a p o y a r las o p e r a c io n e s an te rio re s.
C u a n d o se h a d e s c rito a n t e s u n a lista lineal f o r m a d a p o r u n a m a t r i z d e registros,
se m e n c i o n ó c ó m o se p u e d e i m p l a n t a r busca i n s e r t a n d o las e n t r a d a s p o r u n e x ­
t r e m o d e m a n e r a q u e el o r d e n d e la s e n t r a d a s d e n t r o d e la m a t r i z sea el m i s m o q u e
el o r d e n d e in s e rc ió n d e las e n tra d a s . U n e x a m e n q u e c o m i e n c e p o r el final y siga
h a s ta el p r i n c i p i o d e la m a t r i z e n c u e n t r a la e n t r a d a m á s re c ie n te c r e a d a p a r a un
n o m b r e . L a s itu a c ió n e s s im ila r en u n a lista e n la z a d a , c o m o se m u e s t r a e n la figura
7.37. El a p u n t a d o r fre n te a p u n t a a la e n t r a d a m á s recien te d e la lista. L a i m p l a n t a ­
ción d e inserta e m p l e a u n t i e m p o c o n s t a n t e p o r q u e se c o lo c a u n a e n t r a d a n u e v a al
fre n te d e la lista. La i m p l a n t a c i ó n d e busca se realiza e x a m i n a n d o la lista c o m e n ­
z a n d o e n la e n t r a d a a p u n t a d a p o r fr e n te y s i g u i e n d o los e n l a c e s h a s ta q u e se e n ­
c u e n t r e el n o m b r e d e s e a d o o se a l c a n c e el final d e la lista. E n la figura 7.37. la e n ­
t r a d a c o r r e s p o n d ie n t e a a d e c l a r a d a e n el b l o q u e a n i d a d o d e n t r o del b lo q u e
a p a r e c e m á s cerca del p r in c i p io d e la lista q u e la e n t r a d a p a ra a d e c l a r a d a en B0.

fr e n te

Fig. 7 3 7 . La e n tra d a m á s reciente d e a está cerca del frente.

P a r a la o p e r a c i ó n borra . o b s é r v e s e q u e las e n t r a d a s p a r a las d e c l a r a c i o n e s del


p r o c e d i m i e n t o m á s p r o f u n d a m e n t e a n i d a d o a p a r e c e n m á s cerca del p r in c i p io d e la
lista. P o r ta n to , n o es n ecesario c o n s e r v a r el n ú m e r o d e p r o c e d i m i e n t o c o n c a d a e n ­
tr a d a — si se a n o t a la p r i m e r a e n t r a d a d e c a d a p r o c e d i m ie n t o , e n t o n c e s t o d a s las
e n t r a d a s h a s ta la p r i m e r a se p u e d e n b o r r a r d e la ta b la d e s ím b o l o s a c tiv a c u a n d o se
t e r m i n e d e p r o c e s a r el á m b i t o d e ese p r o c e d i m ie n t o .
454 A M B I E N T E S P A R A E L M O M E N T O D E LA E J E C U C I O N

U n a ta b la d e d is p e rs ió n c o n s t a e n m listas a la s q u e se a cce d e p o r m e d i o d e u n a
m a triz . C o m o u n n o m b r e s ie m p r e se d ir e c c i o n a hacia la m i s m a lista p o r m e d i o de
la d isp ersión , se m a n t i e n e n listas in d iv id u a le s c o m o e n la figura 7 .3 7. Sin em b a rg o ,
p a r a i m p l a n t a r la o p e r a c i ó n borra n o h a b r í a q u e e x a m i n a r t o d a la ta b la d e d i s p e r ­
s i ó n b u s c a n d o las listas c o n e n t r a d a s q u e d e b a n b o r r a r s e . S e p u e d e u tiliz a r el si­
g u ie n te e n f o q u e . S u p ó n g s e q u e c a d a e n t r a d a tie n e d o s enlaces:

1. u n e n la c e d e d is p e rs ió n q u e e n la z a la e n t r a d a c o n o t r a s e n t r a d a s c u y o s n o m b r e s
p r o d u c e n el m i s m o v a lo r d e d is p e rs ió n , y

2. u n e n la c e d e á m b i t o q u e e n l a z a t o d a s las e n t r a d a s q u e e s té n d e n t r o del m i s m o
alcance.

Si n o se m o d ific a el e n la c e d e á m b i t o c u a n d o se b o r r a u n a e n t r a d a d e la ta b la de
d is p e rs ió n , e n t o n c e s la c a d e n a f o r m a d a p o r los e n la c e s d e á m b i t o c o n s t i t u i r á u n a
ta b la de s ím b o l o s i n d e p e n d i e n t e ( in a c tiv a ) p a r a el á m b i t o e n cu estió n .
El b o r r a d o d e e n t r a d a s d e la ta b la d e d is p e rs ió n se d e b e e f e c t u a r c o n c u i d a d o ,
p o r q u e el b o r r a d o d e u n a e n t r a d a a fe c ta a la e n t r a d a p r e v ia d e su lista. R e c u é rd e se
q u e se b o r r a la /-ésim a e n t r a d a a p u n t a n d o la ( / - l)- é s im a e n t r a d a a la ( / + l)-ésim a.
P o r ta n to , u tiliz a r ú n i c a m e n t e los e n l a c e s d e á m b i t o p a r a e n c o n t r a r la /-ésim a e n ­
t r a d a n o es suficiente. La (/ — 1)-ésim a e n t r a d a se p u e d e e n c o n t r a r si los e n l a c e s de
d is p e rs ió n f o r m a n u n a lista e n l a z a d a c irc u la r, e n la q u e la ú l t i m a e n t r a d a v u e lv e a
a p u n t a r a la p r im e r a . T a m b i é n se p u e d e u tiliz a r u n a pila p a r a llevar u n registro de
la s listas q u e c o n t e n g a n e n t r a d a s q u e d e b a n b o r ra r s e . C u a n d o se a n a l i z a u n p r o c e ­
d i m i e n t o n u e v o se c o lo c a u n m a r c a d o r e n la pila. P o r e n c i m a d e l m a r c a d o r están
los n ú m e r o s d e las listas q u e c o n t i e n e n las e n t r a d a s c o r r e s p o n d i e n t e s a los n o m b r e s
d e c l a r a d o s e n d i c h o p r o c e d i m i e n t o . C u a n d o se t e r m i n a d e p r o c e s a r el p r o c e d i ­
m i e n t o , los n ú m e r o s d e listas p u e d e n sacarse d e la pila h a s ta a l c a n z a r el m a r c a d o r .
E n el ejercicio 7.11 se e s t u d i a r á o t r o e s q u e m a .

7.7 I N S T R U M E N T O S D E L O S L E N G U A J E S
PARA LA A SIG N A C IO N D IN A M IC A D E LA M E M O R IA

E n esta secció n, se d escrib en b r e v e m e n t e las facilidades q u e p r o p o r c i o n a n a lg u n o s


lenguajes p a r a la asig n ac ió n d i n á m i c a d e m e m o r i a p a r a los d a to s , d u r a n t e el c o n tro l
d e l p r o g r a m a . L a m e m o r i a p a r a d i c h o s d a t o s se t o m a g e n e r a l m e n t e d e u n m o n t í ­
cu lo . L os d a t o s a s ig n a d o s se re tie n e n a m e n u d o h a s ta q u e se d e s a s ig n a n explícita­
m e n te . L a a s ig n a c ió n m i s m a p u e d e s e r explícita o im plícita. E n Pascal, p o r e je m p lo ,
la a s ig n a c ió n explícita se realiza u t i liz a n d o el p r o c e d i m i e n t o e s t á n d a r n e w . L a eje­
c u c ió n d e n e w ( p ) asigna m e m o r i a p a r a el t i p o d e ob jeto a p u n t a d o p o r p , y p q u e d a
a p u n t a n d o al o b j e t o recién a s ig n a d o . L a d e s a s ig n a c ió n se realiza l l a m a n d o a d i s -
p o s e e n la m a y o r í a d e las i m p l a n t a c i o n e s d e Pascal.
L a a s ig n a c ió n im p líc ita se p r o d u c e c u a n d o la e v a l u a c ió n d e u n a ex p re s ió n da
c o m o r e s u lt a d o la o b te n c ió n d e m e m o r i a p a r a g u a r d a r los v a lo re s d e la expresión.
L1SP. p o r e je m p lo , asign a u n a celd a e n u n a lista c u a n d o se utiliza c o n s ; a u t o m á t i ­
c a m e n t e se r e c l a m a n las c e ld a s q u e ya n o se p u e d e n a lcan zar. S N O B O L p e r m i t e q u e
7.7 IN ST R U M E N T O S DE LOS LENG UA JES 455

la lo n g itu d d e u n a c a d e n a varíe d u r a n t e la e je c u c ió n y a d m i n i s t r a el e s p a c io nece­


s a r io p a r a g u a r d a r la c a d e n a d e u n m o n t íc u l o .

E je m p lo 7 .1 1 . El p r o g r a m a en Pascal d e la figura 7.38 c o n s tr u y e la lista e n l a z a d a de


la figura 7.39 e i m p r i m e los e n t e r o s d e las celdas; su r e s u lt a d o es

76 3
4 * 2
7 1

C u a n d o la e jecu ció n del p r o g r a m a c o m i e n z a e n la lín e a 15, la d ir e c c ió n d e m e m o r i a


p a r a el a p u n t a d o r c a b e z a está e n el registro d e a c tiv a c ió n c o r r e s p o n d i e n t e al p r o ­
g r a m a c o m p le to . C a d a vez q u e el c o n t ro l llega a

(1 1 ) new (p); p T .lla v e := k ; p T .in fo := i ;

la l l a m a d a n e w ( p ) d a c o m o r e s u lt a d o la a s ig n a c ió n d e u n a c e l d a e n a l g u n a p a r te
d e n t r o del m o n t í c u l o ; p l se refiere a d i c h a c e l d a e n las a s ig n a c io n e s d e la línea 11.
O bsé rv e se p o r el r e s u lta d o del p r o g r a m a q u e las celd as a s ig n a d a s s o n accesibles
c u a n d o el c o n t ro l regresa al p r o g r a m a p rin c ip a l d e s d e i n s e r t a . E n o t r a s p alabras,
se retien en las celdas q u e se a s ig n a n u t i liz a n d o n e w d u r a n t e u n a a c tiv a c ió n d e i n ­
s e r t a c u a n d o el c o n t r o l regresa d e la a c tiv a c ió n al p r o g r a m a p rin c ip a l. □

(1) program t a b l a ( i n p u t , o u tp u t);


(2) ty p e e n la c e = t nodo;
(3) nodo = re c o rd
(4) lla v e , in fo : in te g e r;
(5) s ig te : en lace
(6) end;
(7) var cabeza : e n lace;
(8) procedure in s e r ta ( k , i : in te g e r);
(9) var p : en lace;
(10) b eg in
(11) new(p); pT.llave := k ; pt.info := i;
(12) p t.s ig te := c a b e z a ; cabeza ;= p
(13) end;

(14) b eg in
(15) cabeza := n i l ;
(16) i n s e r t a ( 7 , 1 ); i n s e r t a ( 4 ,2 ); i n s e r t a (7 6 ,3 );
(17) w rite ln (c a b e z a í.lla v e , c a b e z a l.in fo );
(18) w r i t e l n (c a b e z a l . s i g t e T . l l a v e , c a b e z a l . s i g t e l . i n f o ) ;
(19) w rite ln (c a b e z a l.s ig te l.sig te l.lla v e ,
c a b e z a l.s ig te l.s ig te l.in fo )
(20) end.

F ig . 7 .3 8 . A s ig n a c ió n d i n á m i c a d e n o d o s u t i l iz a n d o n e w e n P ascal.
456 A M B I E N T E S P A R A E L M O M E N T O D E LA E J E C U C I O N

cabeza

Fig. 7.39. Lisia enlazada construida p o r el program a de la figura 7.38.

B a su ra

L a m e m o r i a a s ig n a d a d i n á m i c a m e n t e p u e d e v olverse inaccesible. L a m e m o r i a q u e
u n p r o g r a m a asigna, p e r o a la q u e n o p u e d e referirse, se d e n o m i n a basura. E n la
figura 7 .3 8, s u p ó n g a s e q u e se a s ig n a n i l a c a b e z a ? . s i g u i e n t e e n t r e las lín e a s 16
y 17:

(16) in s e r ta ( 7 ,1 ); in s e r t a (4 ,2 ); in se rta (7 6 ,3 );
c a b e z a ? . s i g u i e n t e := n i l ;
(1 7 ) w rite ln (c a b e z a ? .lla v e , c a b e z a ? .in fo );

L a celd a s itu a d a e n el e x t r e m o iz q u ie rd o d e la figura 7.39 c o n t i e n e a h o r a u n a p u n ­


ta d o r a n i l en vez d e u n a p u n t a d o r a la celd a s itu a d a e n el m e d io . C u a n d o se pierde
el a p u n t a d o r a la celd a del c e n tro , esta y la celd a d e la d e r e c h a se c o n v i e r te n e n b a ­
sura.
L IS P realiza recogida d e basura , u n p ro c e s o q u e se e s t u d i a r á e n la s ig u ie n te sec­
c ió n y q u e re c la m a la m e m o r i a inaccesible. P ascal y C n o ti e n e n reco gida d e b a s u r a ,
d e j a n d o q u e el p r o g r a m a d o r desasigne e x p l íc it a m e n t e la m e m o r i a q u e ya n o sirve.
E n esto s lenguajes, se p u e d e re u tiliz a r la m e m o r i a d esasig n ad a, p e r o la b a s u r a p e r ­
m a n e c e h a s ta q u e finaliza el p ro g ra m a .

R e fe r e n c ia s su sp e n d id a s

P u e d e s u r g i r u n a c o m p l i c a c i ó n a d i c i o n a l c o n la d e s a s i g n a c i ó n e x p l í c i t a . P u e d e
p r o d u c i r s e u n a r e f e r e n c i a s u s p e n d i d a . C o m o ya s e m e n c i o n ó e n la s e c c i ó n 7.3,
c u a n d o s e h a c e r e f e r e n c i a a m e m o r i a d e s a s i g n a d a se p r o d u c e u n a r e f e r e n c i a
s u s p e n d i d a . P o r e j e m p l o , c o n s i d é r e s e e l r e s u l t a d o d e la e j e c u c i ó n d e
d i s p o s e ( c a b e z a ? , s i g u i e n t e ) e n t r e la s líneas 16 y 17 d e la fig u ra 7.38:

(16) in s e r ta ( 7 ,1 ); in s e r ta (4 ,2 ); i n s e r t a (7 6 ,3 );
d i s p o s e (c a b e z a ? . s i g u i e n t e );
(1 7 ) w rite ln (c a b e z a ? .lla v e , c a b e z a ? .in fo );

L a l l a m a d a a d i s p o s e d e s a s i g n a la c e l d a q u e s ig u e a la a p u n t a d a p o r c a b e z a ,
c o m o se m u e s t r a e n la f i g u r a 7 . 4 0 . S i n e m b a r g o , n o s e h a m o d i f i c a d o
c a b e z a ? . s i g u i e n t e , d e m o d o q u e es u n a p u n ta d o r d e sa c tiv a d o q u e hace re­
f e r e n c i a a m e m o r i a d e s a s ig n a d a .
L as referencias s u s p e n d id a s y la b a s u r a s o n c o n c e p t o s re la c io n a d o s ; las re fe re n ­
cias s u s p e n d id a s o c u r r e n si se p r o d u c e la d e s a s ig n a c ió n a n t e s d e la ú l t i m a referencia,
m i e n t r a s q u e existe b a s u ra si se p r o d u c e la ú l t i m a referen cia a n t e s d e la d es a s ig n a ­
ción.
7.8 T E C N I C A S P A R A LA A S I G N A C I O N D I N A M I C A D E L A M E M O R I A 457

cabeza

(a) antes

cabeza

(b) después

F ig . 7.40. Creación d e referencias suspendidas y de basura.

7.8 T E C N I C A S P A R A LA A S I G N A C I O N D I N A M I C A D E LA M E M O R I A

L as té c n ic a s n ecesarias p a r a i m p l a n t a r la a s ig n a c ió n d i n á m i c a d e la m e m o r i a d e p e n ­
d e n de c ó m o se desasigne la m e m o r i a . Si la d e s a s ig n a c ió n es im plícita, e n t o n c e s el
p a q u e t e d e a p o y o p a r a la e jecu ció n e s el e n c a r g a d o d e d e t e r m i n a r c u á n d o u n b lo q u e
d e m e m o r i a ya n o es necesario. Si la d e s a s ig n a c ió n se realiza e x p l í c i t a m e n t e p o r el
p r o g r a m a d o r , el c o m p i l a d o r tie n e m e n o s trab a jo . Se c o n s id e ra a c o n t i n u a c i ó n la de-
sasignacion explícita.

A sig n a c ió n e x p líc ita d e b lo q u e s d e ta m a ñ o fijo

L a f o r m a m á s sencilla d e asig n ac ió n d i n á m i c a se realiza c o n b lo q u e s d e t a m a ñ o fijo.


E n l a z a n d o los b lo q u e s en u n a lista, c o m o e n la figura 7.41 , se p u e d e h a c e r r á p i d a ­
m e n t e la a s ig n a c ió n y la d e s a s ig n a c ió n c o n p o c a o n u l a p é r d id a d e m e m o r i a .

disponible

(a)

disponible

F ig . 7 .4 1 . U n bloque desasignado se a ñ a d e a la lista de bloques disponibles.

S u p ó n g a s e q u e los b lo q u e s d e b e n o b te n e r s e d e u n á r e a c o n tig u a d e m e m o r i a . La
inicialización del á r e a se realiza u t i liz a n d o u n a p o r c ió n d e c a d a b lo q u e p a r a u n e n ­
lace al sig uien te b lo q u e . El a p u n t a d o r disponible a p u n t a al p r i m e r b lo q u e . L a asig­
n ació n co n siste en sacar u n b lo q u e d e la lista y la d e s a s ig n a c ió n en d e v o lv e r el blo­
q u e a la lista.
458 A M B IE N T E S PA R A EL M O M E N T O DE LA EJEC U C IO N

L a s r u t i n a s d e l c o m p i l a d o r q u e a d m i n i s t r a n lo s b l o q u e s n o n e c e s i t a n c o n o c e r el
t i p o d e o b j e t o q u e g u a r d a r á e n el b l o q u e el p r o g r a m a d e l u s u a r i o . S e p u e d e c o n s i ­
d e ra r c a d a b lo q u e c o m o u n registro v aria b le y las r u tin a s d el c o m p i l a d o r c o n s id e ra n
el b l o q u e c o m o si e s t u v i e r a c o m p u e s t o p o r u n e n l a c e a l s i g u i e n t e b l o q u e y e l p r o ­
g r a m a d e u s u a r i o c o n s i d e r a el b l o q u e c o m o a l g ú n o t r o t i p o . P o r t a n t o , n o se p i e r d e
e s p a c i o p o r q u e el p r o g r a m a d e u s u a r i o p u e d e u t i l i z a r e l b l o q u e c o m p l e t o p a r a sus
p r o p i o s p r o p ó s i t o s . C u a n d o s e d e v u e l v e el b l o q u e , e n t o n c e s la s r u t i n a s d e l c o m p i ­
l a d o r u t i l i z a n p a r t e d e l e s p a c i o d e l b l o q u e m i s m o p a r a e n l a z a r l o e n la l i s t a d e b l o ­
q u e s d i s p o n i b l e s , c o m o s e m u e s t r a e n la f i g u r a 7 .4 1 .

Asignación explícita de bloques de tamaño variable


C u a n d o se a s i g n a n y d e s a s i g n a n b l o q u e s , la m e m o r i a s e p u e d e fr a g m e n ta n e s d e c i r ,
el m o n t í c u l o p u e d e e s t a r f o r m a d o p o r b l o q u e s a l t e r n o s l i b r e s y e n u s o , c o m o e n la
figura 7.42.

Fig. 7 .4 2 . B lo q u e s lib res y o c u p a d o s e n u n m o n t íc u l o .

P u e d e p r o d u c i r s e la s i t u a c i ó n q u e se m u e s t r a e n la f ig u r a 7 . 4 2 si u n p r o g r a m a
a s i g n a c i n c o b l o q u e s y d e s p u é s d e s a s i g n a el s e g u n d o y e l c u a r t o , p o r e j e m p l o . L a
f r a g m e n t a c i ó n n o t r a e c o n s e c u e n c i a s si l o s b l o q u e s s o n d e t a m a ñ o fijo, p e r o si s o n
d e t a m a ñ o v a r i a b l e , u n a s i t u a c i ó n c o m o la d e la f ig u r a 7 . 4 2 s u p o n e u n p r o b l e m a ,
p o r q u e n o s e p u e d e a s i g n a r u n b l o q u e m a y o r q u e c u a l q u i e r a d e l o s b l o q u e s libres,
a u n q u e el e s p a c i o e s té e n p r i n c i p i o d i s p o n i b l e .
U n m é t o d o p a r a a s i g n a r b l o q u e s d e t a m a ñ o v a r i a b l e e s el m é to d o d e l p r im e r
aju ste. C u a n d o se a s i g n a u n b l o q u e d e t a m a ñ o s> s e b u s c a e l p r i m e r b l o q u e l i b r e q u e
s e a d e t a m a ñ o / > s . E n t o n c e s e s te b l o q u e s e s u b d i v i d e e n u n b l o q u e u t i l i z a d o d e
t a m a ñ o s , y u n b l o q u e l i b r e d e t a m a ñ o f — s. O b s é r v e s e q u e la a s i g n a c i ó n i n c u r r e e n
u n a p é r d i d a d e t i e m p o p o r q u e s e d e b e b u s c a r u n b l o q u e l i b r e lo s u f i c i e n t e m e n t e
grande.
C u a n d o s e d e s a s i g n a u n b l o q u e , s e c o m p r u e b a q u e s e a c o n t i g u o a u n b l o q u e li­
b re . Si e s p o s i b l e , el b l o q u e d e s a s i g n a d o se c o m b i n a c o n el b l o q u e lib re c o n t i g u o a
él p a r a c r e a r u n b l o q u e l i b r e m á s g r a n d e . C o m b i n a r b l o q u e s li b r e s a d y a c e n t e s e n u n
b lo q u e libre m a y o r ev ita q u e se p r o d u z c a n m á s fra g m e n ta c io n e s. H a y v a rio s detalles
s u t i l e s e n c u a n t o a la f o r m a d e a s i g n a r , d e s a s i g n a r y m a n t e n e r l o s b l o q u e s e n u n a
lista o listas d i s p o n i b l e s . T a m b i é n h a y a l g u n o s c o m p r o m i s o s e n t r e t i e m p o , e s p a c i o
y d i s p o n i b i l i d a d d e b l o q u e s g r a n d e s . El l e c t o r p u e d e r e m i t i r s e a K n u t h [ 1 9 7 3 a ] o a
A h o , H o p c ro ft y U llm a n [1983] p a ra u n m a y o r e stu d io d e estos aspectos.

Desasignación im plícita
L a d e s a s i g n a c i ó n i m p l í c i t a e x i g e c o o p e r a c i ó n e n t r e el p r o g r a m a d e u s u a r i o y e l p a ­
q u e t e p a r a la e j e c u c i ó n , p o r q u e e s t e ú l t i m o n e c e s i t a s a b e r c u á n d o h a d e j a d o d e f u n ­
c i o n a r u n b l o q u e d e m e m o r i a . E s t a c o o p e r a c i ó n se i m p l a n t a f i j a n d o el f o r m a t o d e
7.8 T E C N I C A S P A R A LA A S I G N A C I O N D I N A M I C A D E LA M E M O R I A 459

los b lo q u e s d e m e m o r i a . P a ra el p r e s e n te análisis, s u p ó n g a s e q u e el f o r m a t o d e un
b lo q u e d e m e m o r i a e s c o m o el de la figura 7.43.
El p r i m e r p r o b l e m a es el d e r e c o n o c e r las fro n te ra s del b lo q u e . Si el t a m a ñ o de
los b lo q u e s es fijo, e n t o n c e s se p u e d e u tiliz a r la i n f o r m a c i ó n d e la p o s ic ió n . P o r
ejem plo, si c a d a b lo q u e o c u p a 2 0 palabras, e n to n c e s u n b lo q u e n u e v o c o m ie n z a cada
2 0 p a la b ra s . D e lo c o n t r a r i o , e n la m e m o r i a in a c c e s ib le a s o c i a d a a u n b l o q u e , se
c o n s e r v a el t a m a ñ o del b lo q u e , así q u e se p u e d e d e t e r m i n a r d ó n d e c o m i e n z a el si­
g u ie n te b lo q u e .
El s e g u n d o p r o b l e m a e s el de r e c o n o c e r si u n b l o q u e está e n uso. S e s u p o n e q u e
un b lo q u e está e n u s o si es posible q u e el p r o g r a m a d e u s u a r io haga referencia a la
in f o r m a c ió n c o n t e n i d a e n el b lo q u e . S e p u e d e p r o d u c i r la referencia a tra v é s d e un
a p u n t a d o r o d e s p u é s d e seguir u n a sec u e n c ia d e a p u n t a d o r e s , así q u e el c o m p i l a d o r
necesita s a b e r la posición en la m e m o r i a d e to d o s los a p u n t a d o r e s . U t i l i z a n d o el for­
m a t o d e la figura 7.43. los a p u n t a d o r e s se g u a r d a n e n u n a p o s ic ió n fija d e n t r o del
b l o q u e . M á s c o n c r e t a m e n t e , se s u p o n e q u e el á r e a d e i n f o r m a c i ó n d e l u s u a r i o d e
un blo q u e no c o n tie n e n in g ú n a p u n ta d o r.
S e p u e d e n u tiliz a r d o s e n f o q u e s p a r a la d e s a s ig n a c ió n im p lícita. A q u í só lo se es­
b o zan : p a r a m á s d etalles, véase A h o . H o p c r o f t y U l l m a n [1983].

I. C uenta d e referencias. S e lleva la c u e n t a del n ú m e r o d e b lo q u e s q u e a p u n t a n


d i r e c t a m e n t e al p re s e n te b lo q u e . Si en alg ú n m o m e n t o la c u e n t a d i s m i n u y e a O,
e n t o n c e s se p u e d e d e s a s ig n a r el b l o q u e p o r q u e n o se le p u e d e h a c e r referencia.
E n o tr a s p alab ras, el b l o q u e se h a c o n v e r t i d o e n b a s u ra q u e p u e d e recogerse.
M a n t e n e r la c u e n t a d e las referencias p u e d e s u p o n e r m u c h o t i e m p o : la a s ig n a ­
c ió n d e a p u n t a d o r e s p : = q p r o d u c e c a m b i o s e n las c u e n t a s d e re feren cias d e los
b lo q u e s a p u n t a d o s p o r p y p o r q. L a c u e n t a p a r a el b lo q u e a p u n t a d o p o r p d is ­
m i n u y e en u n o , m i e n t r a s q u e la c u e n t a p a r a el b l o q u e a p u n t a d o p o r q a u m e n t a
e n u n o . L as c u e n t a s d e re feren cias se utilizan m á s a d e c u a d a m e n t e c u a n d o los
a p u n t a d o r e s e n tre b lo q u e s n u n c a a p a r e c e n e n ciclos. P o r e je m p lo , e n la figura
7.44. n i n g ú n b l o q u e es acce sib le d e s d e n i n g ú n o tr o , así q u e a m b o s son basu ra,
p e r o c a d a u n o tie n e u n a c u e n t a d e re feren cias d e u no.
460 A M B IE N T E S PARA EL M O M ENTO DE LA E JE C U C IO N

2. Técnicas d e m arca. U n enfoque alternativo es suspender tem poralm ente la eje­


cución del program a de u su a rio y u tiliz a r los apuntadores congelados para de­
term in ar los bloques que están siendo utilizad o s. Este enfoque exige que se co ­
nozcan todos los apuntadores del m o ntículo . C onceptual mente, se vierte pintura
en el m o n tícu lo a través de estos apuntadores. C u a lq u ie r bloque alcanzado por
la pintu ra está en uso y puede desasignarse el resto. M ás concretam ente, se re­
co rre el m o n tícu lo y se m arcan todos los bloques co m o no usados. D espués se
siguen los apuntadores que m arcan co m o usados cu a lq u ie r bloque alcanzado en
el proceso. U n exam en secuencial fin a l del m o n tícu lo perm ite recoger todos los
bloques todavía m arcados co m o no usados.

1----- ' 1----- 1— —


1 . 1 - 1 1 1 1
J_ 1 ----- 1— 1

Fig. 7.44. Nodos basura con cuentas de referencias distintas de cero.

C o n bloques de tam año variable, se tiene la p o sib ilid a d a d icio n a l de desplazar


los bloques de m em oria utilizad o s de sus posiciones actualess. Este proceso, llam ado
com pactación, traslada todos los bloques utilizad os a un extrem o d el m o ntículo , as:
que toda la m em oria lib re se puede re u n ir en un gran bloque libre. L a com pactación
tam bién necesita in fo rm ació n sobre los apuntadores en los b lo q ues porque cuando
se traslada un bloque utilizad o , hay que aju star todos los apuntadores a él para re­
fle ja r el cam b io . Su ventaja es qu e después de la co m p actació n se e lim in a la frag­
m entación de la m em oria disponible.

7.9 A S IG N A C IO N D E M E M O R IA E N F O R T R A N

F O R T R A N fue diseñado para p e rm itir la asignación estática de la m em oria, com o


en la sección 7 .3 . S in em bargo, hay algunos aspectos, com o el tratam iento de las
declaraciones COMMON y e q u i v a l e n c e , qu e son bastante especiales en F O R T R A N .
U n co m p ilad o r de F O R T R A N puede cre ar varias áreas d e da to s, es decir, bloques
de m em oria en los que se pueden alm acenar los valores de objetos. E n F O R T R A N ,
existe un área de datos para cada procedim iento y un área de datos para cada bloque
c o m m o n co n nom bre y para c o m m o n en blanco, si se u tiliza . L a tabla de sím bolos

debe registrar para cada nom bre el área de datos a la que pertenece y su desplaza­
m iento dentro de d ich o área de datos, es d ecir, su p o sició n relativa al com ienzo del
área. E l co m p ilad o r debe d e cid ir dónde van las áreas de datos co n respecto al código
ejecutable y a ellas m ism as, pero esta elección es a rb itra ria porque las áreas de datos
son independientes.
E l co m p ilad o r debe c a lc u la r el tam año de cada área de datos. Para las áreas de
datos de los procedim ientos basta co n un so lo contador, porque sus tam años se co-

b T a m b i é n se p o d r ía h acer con b lo ques d e t a m a ñ o fijo, p e ro n o s u p o n d r ía n in g u n a ventaja.


7.9 A SIG N A C IO N DE M EM O RIA EN F O R T R A N 461

n o c e n d e s p u é s q u e se p rocesa c a d a p ro c e d im ie n to . P a ra los b lo q u e s c o m m o n , se debe


g u a r d a r u n registro p a r a c a d a b lo q u e d u r a n t e el p r o c e s a m i e n t o d e t o d o s los p r o c e ­
d im ie n t o s . ya q u e c a d a p r o c e d i m i e n t o q u e utiliza u n b l o q u e p u e d e t e n e r su p r o p ia
id e a del t a m a ñ o d e l b lo q u e , y el t a m a ñ o real es el m á x i m o d e los t a m a ñ o s d e riv a d o s
d e los d i s t i n t o s p r o c e d i m ie n t o s . Si lo s p r o c e d i m i e n t o s se c o m p i l a n p o r s e p a r a d o , se
d e b e u tiliz a r u n e d i to r d e e n la c e s p a r a s e le c c io n a r el t a m a ñ o del b l o q u e c o m m o n de
m a n e r a q u e sea el m á x i m o d e t o d o s e s o s b lo q u e s c o n el m i s m o n o m b r e e n t r e las
p a rte s d e c ó d ig o q u e se e s tá n e n la z a n d o .
P a ra c a d a á re a d e d ato s, el c o m p i l a d o r c re a u n m a p a de m em o ria , q u e e s u n a
d e s c rip c ió n del c o n t e n i d o d e l á rea. Este “ m a p a d e m e m o r i a " p u e d e s e r s i m p l e m e n t e
u n a in d ic a c ió n , e n la e n t r a d a d e la ta b la d e s í m b o l o s de e n t r a d a d e c a d a n o m b r e del
á rea, del d e s p l a z a m i e n t o d e ese n o m b r e e n el á rea. N o es n ecesario te n e r u n a fácil
respuesta a la p reg u n ta : “¿C u áles son to d o s los n o m b r e s e n esta á re a d e d atos?” Sin
e m b a r g o , e n F O R T R A N se c o n o c e la resp u esta p a r a las á r e a s d e d a t o s d e los p r o ­
c e d im ie n to s . p o r q u e to d o s los n o m b r e s d e c la ra d o s en u n p r o c e d i m ie n t o q u e n o sean
c o m m o n o e q u i v a le n t e s a u n n o m b r e C O M M O N están e n el á r e a d e d a t o s del p r o c e d i­

m i e n t o . L os n o m b r e s c o m m o n p u e d e n t e n e r s u s e n t r a d a s a la ta b la d e s í m b o l o s e n ­
lazadas. c o n u n a c a d e n a p a r a c a d a b l o q u e c o m m o n . e n el o r d e n d e su a p a r i c ió n en
el b lo q u e . D e h e c h o , c o m o los d e s p l a z a m i e n t o s d e los n o m b r e s e n el á r e a d e d a to s
n o s ie m p r e se p u e d e n d e t e r m i n a r h a s ta q u e se p r o c e s e el p r o c e d i m i e n t o c o m p l e t o
(las m a tr ic e s en F O R T R A N se p u e d e n d e c l a r a r a n t e s d e d e c l a r a r s u s d im e n s io n e s ),
es n ecesario c r e a r estas c a d e n a s d e n o m b r e s c o m m o n .
U n p r o g r a m a e n F O R T R A N c o n s t a d e u n p r o g r a m a p rin c ip a l, s u b r u t i n a s y f u n ­
c io n e s (a t o d a s se les ll a m a r á procedim ientos). C a d a c a s o d e u n n o m b r e tie n e un
á m b i t o f o r m a d o p o r só lo u n p r o c e d i m i e n t o . Se p u e d e g e n e r a r c ó d ig o o b j e t o p a ra
c a d a p r o c e d i m i e n t o al a l c a n z a r el tlnal d e d i c h o p r o c e d i m ie n t o . Si se h a c e así, es
posible d e s e c h a r la m a y o r p a r te d e la in f o r m a c i ó n d e la ta b la d e s ím b o lo s . S ó lo hay
q u e c o n s e r v a r a q u e llo s n o m b r e s e x t e r n o s a la r u t i n a q u e se a c a b a d e p ro c e s a r. Estos
s o n n o m b r e s d e o tro s p r o c e d i m i e n t o s y d e b lo q u e s c o m u n e s . E sto s n o m b r e s p u e d e n
n o s e r v e r d a d e r a m e n t e e x t e r n o s al p r o g r a m a c o m p l e t o q u e se está c o m p i l a n d o , p e ro
se d e b e n c o n s e r v a r h a s ta q u e se p rocese la serie c o m p l e t a d e p r o c e d im ie n to s .

Datos en áreas c o m m o n

P a ra c a d a b l o q u e se c r e a u n registro q u e p r o p o r c i o n a el p r i m e r y el ú l t i m o n o m b r e .
p erten ecien tes al p ro c e d im ie n to en c u rso , q u e e stá n d e c la ra d o s c o m o p erten ecien tes
a ese b l o q u e c o m m o n . C u a n d o se p ro c e s a u n a d e c la r a c ió n c o m o

COMMON / B L O Q 1 / NOM B1, NOMB2

el c o m p i l a d o r d e b e h a c e r lo siguiente:

1. E n la ta b la p a ra lo s n o m b r e s d e b lo q u e s C O M M O N . créese u n reg istro p a r a BLOQ1.


si es q u e n o existe ya un o.

2. E n l a s e n t r a d a s d e la t a b l a d e s í m b o l o s p a r a nom bi y NOM B2. c o l o q ú e s e un


a p u n t a d o r a la e n t r a d a e n la t a b l a d e s í m b o l o s p a r a B L O Q 1 . i n d i c a n d o q u e e s t á n
d e n t r o d e COMMON y q u e p e r t e n e c e n a BLOQ1.
462 A M B I E N T E S P A R A EI. M O M E N T O D E L A E J E C U C I O N

3. a ) Si se a c a b a d e c r e a r el registro p a r a b l o q i , c o ló q u e s e u n a p u n t a d o r en d ic h o
r e g is tro a p u n t a n d o a la e n t r a d a d e la t a b l a d e s í m b o l o s c o r r e s p o n d i e n t e a
n o m b i , i n d i c a n d o el p r i m e r n o m b r e d e n t r o d e e s te b l o q u e c o m m o n . D e s ­
p u é s , e n lá c e s e la e n t r a d a d e la ta b la d e s í m b o l o s c o r r e s p o n d i e n t e a n o m b i
c o n la del NOMB2. u tiliz a n d o u n c a m p o d e la tabla d e s ím b o l o s reservado para
e n l a z a r m i e m b r o s d e l m i s m o b l o q u e c o m m o n . P o r ú l t i m o , c o l ó q u e s e un
a p u n t a d o r d e n t r o del registro p a r a B L O Q I a p u n t a n d o a la e n t r a d a d e la tabla
d e s í m b o l o s c o r r e s p o n d ie n t e a N O M B 2 , i n d i c a n d o el ú l t i m o m i e m b r o e n c o n ­
t r a d o d e ese b lo q u e .

b) Sin e m b a r g o , si ésta n o es la p r i m e r a d e c la r a c ió n d e b l o q i , e n lá c e n s e s im ­
p l e m e n t e n o m b i y N O M B 2 al final d e la lista d e n o m b r e s p a r a b l o q i . P o r
s u p u e s to , se a c t u a li z a el a p u n t a d o r al final d e la lista p a r a b l o q i . q u e a p a ­
rece e n el registro p a r a b l oqi .

D e s p u é s d e h a b e r p r o c e s a d o u n p r o c e d i m i e n t o , se a p l ic a el a l g o r i t m o d e e q u i ­
v alen cia. q u e se a n a l iz a r á en breve. Se p u e d e d e s c u b r i r q u e a l g u n o s n o m b r e s a d i c i o ­
n ales p e r te n e c e n al b l o q u e c o m m o n , p o r q u e se h a n h e c h o e q u i v a le n t e s a n o m b r e s
q u e e s tá n d e n t r o d e C O M M O N . S e v e r á q u e n o es r e a l m e n t e n e c e s a r i o e n l a z a r un
n o m b r e X Y Z a la c a d e n a c o r r e s p o n d i e n t e a su b l o q u e c o m m o n . S e asig na u n bit en
la e n t r a d a d e la t a b l a d e s ím b o l o s p a r a x y z , i n d i c a n d o q u e x y z se h a h e c h o e q u i ­
v a le n te a alg ú n o tr o n o m b r e . E nto n ces, u n a e s tru c tu r a de d a t o s q u e se e s tu d ia rá m á s
a d e l a n t e d a r á la p o s ic ió n d e x y z c o n re s p e c to a a l g ú n n o m b r e d e c l a r a d o c o m o p a r te
de common.
D e s p u é s d e realizar las o p e r a c i o n e s d e e q u iv a le n c ia , se p u e d e c r e a r u n m a p a de
m e m o r i a p a r a c a d a b l o q u e c o m m o n e x a m i n a n d o la lista d e n o m b r e s c o r r e s p o n ­
d i e n t e a d ic h o b lo q u e . Se asign a el v a lo r inicial d e c e ro a u n c o n t a d o r , y p a r a c a d a
n o m b r e e n la lista, se iguala su d e s p l a z a m i e n t o al v a l o r e n c u r s o d e l c o n t a d o r . D es­
p u é s se a ñ a d e al c o n t a d o r el n ú m e r o d e u n i d a d e s d e m e m o r i a e m p l e a d a s p o r el o b ­
j e t o d e d a t o s i n d i c a d o p o r el n o m b r e . E n t o n c e s se p u e d e n b o r r a r los registros del
b lo q u e c o m m o n y el sig uien te p r o c e d i m i e n t o p u e d e re u tiliz a r el espacio.
Si u n n o m b r e x y z d e n t r o d e u n b l o q u e c o m m o n se h a c e e q u i v a le n t e a u n n o m ­
b re q u e n o esté e n c o m m o n . h a y q u e d e t e r m i n a r el d e s p l a z a m i e n t o m á x i m o d e s d e el
p r in c i p io d e x y z p a r a t o d a p a l a b r a d e m e m o r i a necesaria p a r a to d o n o m b r e h e c h o
e q u i v a le n t e a x y z . P o r e j e m p lo , si XYZ es u n n ú m e r o real, e q u i v a le n t e a A ( 5 , 5 ) ,
d o n d e A es u n a m a tr iz d e 1 0 x 10 d e n ú m e r o s reales, A ( l , 1 ) a p a r e c e 4 4 p a la b r a s
a n te s d e x y z y A ( 1 0 , 1 0 ) a p a r e c e 5 5 p a la b r a s d e s p u é s d e x y z , c o m o se m u e s t r a en
la figura 7 . 4 5 . L a existencia d e A n o a fe c ta al c o n t a d o r d e l b l o q u e c o m m o n ; só lo a u ­
m e n t a e n u n a p a l a b r a c u a n d o se c o n s id e r a x y z , i n d e p e n d i e n t e m e n t e del n o m b r e al
q u e x y z se h a g a e q u iv a le n te . S in e m b a r g o , el final d e l á re a d e d a t o s p a r a el b lo q u e
c o m m o n d e b e e s ta r lo suficiente a l e ja d o del p r in c i p io p a r a a lb e r g a r a la m a t r i z A. P o r
t a n t o , se registra el d e s p l a z a m i e n t o m á s largo, d e s d e el in ic io del b l o q u e c o m m o n . de
t o d a p a l a b r a u tiliz a d a p o r un n o m b r e h e c h o e q u i v a le n t e a u n m i e m b r o d e d ic h o
b lo q u e . E n la figura 7 . 4 5 , esta c a n t i d a d d e b e s e r al m e n o s el d e s p l a z a m i e n t o d e x y z
m á s 5 5 . T a m b i é n se c o m p r u e b a q u e la m a t r i z A n o se p r o l o n g u e d e l a n t e d e l p r in ­
c ip io del á r e a d e d a to s; es decir, el d e s p l a z a m i e n t o d e x y z d e b e s e r a l m e n o s 4 4 . En
c a s o c o n t r a r i o , h a y u n e r r o r y se d e b e p r o d u c i r u n m e n s a j e d iagn óstico .
7.9 A SIG N A C IO N D E M EM O RIA EN F O R T R A N 463

A ( 1,1)

á re a d e d a t o s
para el bloque XYZ A(5,5)
COMMON
A( 1 0 , 1 0 )

F ig . 7 .4 5 . R e la c ió n e n t r e p r o p o s i c i o n e s c o m m o n y e q u i v a l e n c e .

U n a lg o ritm o de equiv alencia sencillo

L o s p r im e r o s a lg o r itm o s para p r o c e sa r p r o p o s ic io n e s d e e q u iv a le n c ia a p a r e c ie r o n e n
e n sa m b la d o r e s, n o en c o m p ila d o r e s . C o m o e s to s a lg o r itm o s p u e d e n se r b a sta n te
c o m p l e j o s , s o b r e t o d o c u a n d o s e c o n s id e r a n i n t e r a c c io n e s e n tr e la s p r o p o s ic i o n e s
common y e q u i v a l e n c e , s e e s tu d ia r á p r im e r o u n a s itu a c ió n típ ic a d e u n le n g u a je
e n s a m b l a d o r , d o n d e l a s ú n i c a s p r o p o s i c i o n e s e q u i v a l e n c e s o n d e la f o r m a

E Q U IV A L E N C E a , b +d esp la za m ien to

e n d o n d e A y B s o n n o m b r e s d e p o s i c i o n e s . E s t a p r o p o s i c i ó n h a c e q u e A i n d i q u e la
p o s i c i ó n q u e e s t á d e s p la z a m ie n to u n i d a d e s d e m e m o r i a m á s a l l á d e la p o s i c i ó n B.
U n a s e c u e n c i a d e p r o p o s i c i o n e s e q u i v a l e n c e a g r u p a n o m b r e s e n c o n ju n to s d e
eq u iva len cia c u y a s p o s i c i o n e s r e l a t i v a s u n a s a o t r a s v i e n e n d e f i n i d a s t o d a s p o r la s
p r o p o s i c i o n e s e q u i v a l e n c e . P o r e j e m p l o , la s e c u e n c i a d e p r o p o s i c i o n e s

E Q U IV A L E N C E a , B+100
E Q U IV A L E N C E C , D—4 0
E Q U IV A L E N C E A , C+30
E Q U IV A L E N C E E , F

a g r u p a l o s n o m b r e s e n l o s c o n j u n t o s ¡A. B , C. d } y { e . f }, d o n d e E y F i n d i c a n la
m is m a p o sic ió n , c está 7 0 p o s ic io n e s d e s p u é s d e B . A 3 0 d e sp u é s d e C y D 10 d e sp u é s
d e A.
Para c a lc u la r lo s c o n j u n t o s d e e q u iv a le n c ia s e crea u n árb ol p a ra ca d a c o n j u n to .
C a d a n o d o d e un á rb o l rep resen ta u n n o m b r e y c o n t ie n e el d e s p la z a m ie n to d e d ic h o
n o m b r e e n r e l a c i ó n c o n e l n o m b r e c o r r e s p o n d i e n t e al p a d r e d e e s e n o d o . E l n o m b r e
q u e s e e n c u e n t r a e n la r a íz d e u n á r b o l s e d e n o m i n a líder. L a p o s i c i ó n d e c u a l q u i e r
n o m b r e e n r e la c ió n c o n el líd e r se c a lc u la s ig u ie n d o e l c a m i n o q u e v a d e s d e el n o d o
p ara d ic h o n o m b r e y s u m a n d o lo s d e s p la z a m ie n t o s a lo la r g o d e l c a m in o .

E je m p lo 7 . 1 2 . E l c o n j u n t o d e e q u i v a l e n c i a (a. b , c , d ) m e n c i o n a d o a n t e r i o r m e n t e
p o d r í a r e p r e s e n t a r s e m e d i a n t e e l á r b o l q u e s e m u e s t r a e n la f ig u r a 7 . 4 6 . D e s e l líd e r ,
y s e p u e d e c o m p r o b a r q u e A e s t á s i t u a d a 1 0 p o s i c i o n e s a n t e s d e D. y a q u e la s u m a
d e lo s d e s p la z a m ie n t o s e n e l c a m i n o d e A a D e s 1 0 0 + ( - 1 1 0 ) = - 10. □

A h o r a se p r o p o r c io n a u n a lg o r itm o p a ra c o n s tr u ir a r b o le s para c o n j u n t o s d e
e q u i v a l e n c i a . L o s c a m p o s r e l e v a n t e s e n la s e n t r a d a s d e la t a b l a d e s í m b o l o s s o n :

1. p a d re , q u e a p u n t a a la e n t r a d a d e la t a b l a d e s í m b o l o s p a r a e l p a d r e , q u e e s n u l o
si e l n o m b r e e s u n a r a íz ( o n o h a s i d o h e c h o e q u i v a l e n t e a n a d a ) , y
464 A M B I E N T E S P A R A EL M O M E N T O D E L A E J E C U C I O N

2. d esp la za m ien to , q u e d a el d e s p l a z a m i e n t o d e u n n o m b r e c o n re s p e c to al n o m b r e
d e l padre.

Este a l g o r i tm o a s u m e q u e c u a l q u i e r n o m b r e p o d r í a ser el líd e r d e u n c o n j u n t o de


eq u iv a le n c ia . E n la práctica, e n u n le n g u a je e n s a m b l a d o r , u n so lo n o m b r e d e n t r o
d e l c o n j u n t o t e n d r í a u n a p o s i c i ó n real d e f i n i d a p o r u n a s e u d o o p e r a c i ó n , y este
n o m b r e se c o n v e r t i r í a en líder. Se s u p o n e q u e el le c to r s a b e c ó m o m o d i f ic a r el a l­
goritm o para c o n v e r t i r u n n o m b r e p a r t i c u l a r e n el líder.

A lg o ritm o 7.1. C o n s t r u c c i ó n d e á rb o le s d e eq u iv a le n c ia .

Entrada. U n a lista d e p r o p o s ic io n e s q u e d e f in e n las e q u iv a le n c ia s d e la f o rm a

E Q U IV A L E N C E A , B+í/ÚY

Salida. U n a serie d e á r b o le s tal q u e se p u e d a d e t e r m i n a r la p o s ic ió n d e l n o m b r e en


rela ció n c o n el líder, p a r a c u a l q u i e r n o m b r e m e n c i o n a d o e n la lista d e e q u iv a le n c ia s

b eg in
(1) p o n e r a p y q a p u n t a n d o a los n o d o s para A y B. respectivamente;
(2) c : = 0: d : = 0; / • c y d calculan los desplazam ientos de A y B a partir
de los líderes de sus respectivos co n ju n to s */
(3) w h ile padre (p) * n u il d o b eg in
(4) c : = c + desplazam iento (p)\
(5) p : = padre (p)
en d : /* se traslada p al líder de a , a c u m u la n d o
desplazam ientos co n fo rm e se a v a n z a */
(6) w h ile padre (q) ¥= n u il d o b eg in
(7) d : = d + desplazam iento (q)\
(8) < / := padre (q)
en d ; /* se hace lo m ism o para B */
(9) if p = q then /* A y B ya se hicieron equivalentes */
(10) i f c - d ¿ disi t h e n error
/* a A y B se les h a n d a d o dos posiciones relativas distintas */
e l s e b e g in /* fusionar los c o n ju n to s d e A y B • /
(11) padre (/>):= q /* al líder d e A se le hace hijo del líder d e B */
( 12) desplazam iento (p) := d - c + disi
en d
en d

f i g . 7 .4 7 . A lg o r itm o d e eq u ivalen cia.


7.9 A SIG N A C IO N DE M EM O RIA EN F O R T R A N 465

d e e n t r a d a , s i g u i e n d o e l c a m i n o d e s d e e s e n o m b r e a la r a í z y s u m a n d o l o s v a l o r e s
de desplazamiento e n c o n t r a d o s a lo largo d e l c a m i n o .

M étodo. S e r e p i t e n l o s p a s o s d e la Figura 7 . 4 7 p a r a c a d a p r o p o s i c i ó n d e e q u i v a l e n ­
cia e q u iv a l e n c e A,B+¿//v7. p o r t u r n o . L a j u s t i f i c a c i ó n p a r a la f ó r m u l a d e la l i n e a
( 1 2 ) p a r a el d e s p l a z a m i e n t o d e l l í d e r d e a e n r e l a c i ó n c o n e l l í d e r d e b e s la s i g u i e n t e .
L a p o s i c i ó n d e A, p o r e j e m p l o / (. e s i g u a l a c m á s la p o s i c i ó n d e l l í d e r d e A, p o r
ejem plo m L a p o s i c i ó n d e B. p o r e j e m p l o /*. e s i g u a l a d m á s la p o s i c i ó n d e l l í d e r
d e b . p o r e j e m p l o m # . P e r o lA = l¡¡ + disi, d e m o d o q u e c + m A = d + m ,f + dist.
A s í. m i - m He s ig u a l a d — c + dist. □

E j e m p l o 7 . 1 3 . Si s e p r o c e s a

EQUIVALENCE A, B+100
EQUIVALENCE C, D -40

se o b t i e n e la c o n f i g u r a c i ó n d e la f i g u r a 7 . 4 6 . p e r o s i n el d e s p l a z a m i e n t o - 1 10 e n el
n o d o c o r r e s p o n d i e n t e a B y s i n e n l a c e d e B a D. C u a n d o s e p r o c e s a

EQUIVALENCE A, C+30

se c o m p ru e b a q u e p a p u n t a a B d e s p u é s d e l l a z o w h i l e d e la l i n e a ( 3 ) y q ap u n ta a d
d e s p u é s d e l l a z o w h i l e d e la l í n e a ( 6 ) . T a m b i é n s e v e q u e c = 100 y d = —4 0 . D e s ­
p u é s , e n la l í n e a ( 1 1 ) se c o n v i e r t e d e n e l p a d r e d e B y s e a s i g n a 1 0 0 a l c a m p o d e
desplazamiento d e B, q u e e s ( - 4 0 ) - ( 1 0 0 ) + 3 0 . □

El a l g o r i t m o 7.1 e m p l e a r í a u n t i e m p o p r o p o r c i o n a l a rr p ara procesar n eq u i­


v a l e n c i a s . y a q u e e n e l p e o r c a s o l o s c a m i n o s s e g u i d o s e n la l a z o s d e l a s l i n e a s ( 3 ) y
(6 ) p o d r ía n i n c l u i r t o d o s los n o d o s d e s u s á r b o le s re sp e ctiv o s. R e a liz a r e q u iv a le n c ia s
e x ig e s ó l o u n a p e q u e ñ a f r a c c i ó n d e l t i e m p o e m p l e a d o e n la c o m p i l a c i ó n , a s í q u e n2
paso s n o e s p ro h ib itiv o , y p r o b a b le m e n te n o se necesita u n a lg o ritm o m á s c o m p le jo
q u e el d e la f i g u r a 7 . 4 7 . S i n e m b a r g o , h a y d o s c o s a s s e n c i l l a s p a r a h a c e r q u e el a l­
g o r i t m o 7.1 e m p l e e u n t i e m p o q u e s e a casi li n e a l e n f u n c i ó n d e l n ú m e r o d e e q u i ­
v a le n c ia s q u e p ro c e sa . C o m o es p o c o p r o b a b le q u e los c o n j u n t o s d e e q u iv a le n c ia
s e a n lo b a s t a n t e g r a n d e s , d e p r o m e d i o , c o m o p a r a q u e s e a n e c e s a r i o i m p l a n t a r es a s
m ejoras, c o n v ie n e o b se rv a r q u e h a c e r e q u iv a le n c ia s sirve c o m o p a ra d ig m a p a ra va­
rio s p r o c e s o s i m p o r t a n t e s q u e r e q u ie r e n “ fu sió n d e c o n j u n t o s ” . P o r e je m p lo , varios
a l g o r i t m o s e f i c i e n t e s p a r a el a n á l i s i s d e l f l u j o d e d a t o s d e p e n d e n d e r á p i d o s a l g o r i t ­
m o s d e e q u i v a l e n c i a ; el l e c t o r i n t e r e s a d o p u e d e r e m i t i r s e a l a s n o t a s b i b l i o g r á f i c a s
d e l c a p i t u l o 10.
L a p r i m e r a m e j o r a q u e se p u e d e r e a l i z a r e s l l e v a r u n a c u e n t a , p o r c a d a l í d e r , del
n ú m e r o d e n o d o s d e su á r b o l. D e s p u é s , e n las lín eas (11) y (12), e n vez d e e n la z a r
a r b i t r a r i a m e n t e el l í d e r d e A c o n el l í d e r d e B. e n l a z a r el q u e t e n g a la c u e n t a m e n o r
c o n el o t r o . E s t o g a r a n t i z a q u e e l á r b o l c r e z c a a l o a n c h o d e m o d o q u e l o s c a m i n o s
s e rá n co rto s. S e d e ja c o m o ejercicio d e m o s t r a r q u e n e q u iv a le n c ia s re a liz a d a s d e esta
f o r m a n o p u e d e n p r o d u c i r c a m i n o s m á s l a r g o s q u e log^/í n o d o s .
L a se g u n d a id e a se c o n o c e c o m o c o m p r e s ió n d e c a m in o s . C u a n d o se sigue u n
c a m i n o h a c i a la r a íz e n l o s l a z o s d e l a s l í n e a s ( 3 ) y ( 6 ) , h a y q u e h a c e r q u e t o d o s l o s
466 A M B IE N T E S P A R A EL M O M E N T O DE LA EJEC U C IO N

nodos encontrados sean hijos del líder, si es que todavía no lo son. Es decir, m ien­
tras se sigue el cam ino, hay que registrar todos los nodos « i, «2, . . . , 1 encontrados,
donde n es el nodo correspondiente a A o B y nk es el líder. Después hay que ajustar
los desplazam ientos y hacer que n u n 2, . . . , nk. 2 sean hijos de nk mediante los pasos
de la figura 7.48.

begin
h : = desplazamiento (nk-\)\
for i := k —2 downto 1 do begin
padre (n,):= nk;
h : = h + desplazamiento (/?,-);
desplazamiento (n¡) := h
end
end

Fig. 7.48. Ajuste de desplazamientos.

U n algoritm o de equivalencias para F O R T R A N


H ay varias características adicionales que deben añadirse al algoritm o 7.1 para hacer
que funcione para F O R T R A N . Prim ero se debe determ inar si un conjunto de equi­
valencia está o no en un bloque COMMON, lo cual se puede hacer registrando para
cada líder si alguno de los nom bres dentro de su conjunto está en common , y si es
así, en qué bloque.
Segundo, en un lenguaje ensam blador, un m iem bro de un conjunto de equiva­
lencia convertirá el conjunto com pleto en una aplicación real siendo una etiqueta
de una proposición y perm itiendo así que las direcciones indicadas por todos los
nombres del conjunto se calculen con respecto a dicha posición. E n F O R T R A N , sin
embargo, le corresponde al com pilador determ inar las posiciones de m em oria, de
modo que un conjunto de equivalencia que no esté en un bloque common se puede
considerar com o “ flotante” hasta que el com pilador determ ine la posición del con­
jun to com pleto en su área de datos apropiada. Para hacerlo correctam ente, el com ­
pilador necesita conocer la extensión del conjunto de equivalencia, es decir, el nú­
m ero de posiciones que ocupan colectivam ente los nom bres del co n jun to . Para
resolver este problem a, se asocian dos cam pos al líder, baja, y alta, que proporcio­
nan los desplazamientos con respecto al líd e r de las posiciones más baja y más alta
utilizadas por los m iem bros del conjunto de equivalencia. Tercero, hay algunos pro­
blemas menores derivados del hecho de que los nom bres pueden ser matrices y las
posiciones intermedias de la m atriz se pueden hacer equivalentes a posiciones de otras
matrices.
Com o hay tres cam pos (baja, alta y un apuntador a un bloque common) que de­
ben asociarse a cada líder, no hay que asignar espacio para estos cam pos en todas
las entradas de la tabla de símbolos. U n curso de acción consiste en utilizar el campo
padre del algoritm o 7.1 para apuntar, en el caso del líder, a un registro dentro de
una tabla nueva con tres campos, baja, alta y bloqcom . Com o esta tabla y la tabla
de sím bolos ocupan áreas disjuntas, se puede saber a qué tabla apunta un apunta-
7.9 A SIG N A C IO N D E M EM O RIA EN F O R T R A N 467

d o r . A veces, la ta b la d e s ím b o l o s c o n t i e n e u n bit q u e in d ic a si u n n o m b r e es o n o
u n líder. Si el e s p a c io es r e a l m e n t e escaso, se m u e s t r a e n lo s ejercicios u n a lg o ritm o
a l te r n a tiv o q u e evita esta ta b la a d i c io n a l p e r o q u e exige u n m a y o r es fu e rz o d e p r o ­
g r a m a c ió n .
Considérense los cálculos q u e d e b e n sustituir las líneas (11) y (12) d e la figura 7.47.
E n la figura 7.49(a) se p re s e n ta la s itu a c ió n en la q u e d o s c o n j u n t o s d e eq u iv a le n c ia ,
c u y o s lideres a p u n t a n a p y q, se d e b e n fu sio n ar. L a e s tr u c t u r a d e d a t o s q u e r e p r e ­
s e n ta a los d o s c o n j u n t o s a p a r e c e e n la figura 7.49(b). P r i m e r o se d e b e c o m p r o b a r
q u e n o h a y a d o s m i e m b r o s e n t r e los d o s c o n j u n t o s d e e q u i v a l e n c i a q u e e s té n en
C O M M O N . A u n q u e a m b o s estén e n el m i s m o b lo q u e , la d e fin ic ió n e s t á n d a r d e F O R ­
T R A N p r o h í b e q u e se h a g a n e q u i v a l e n t e s . Si c u a l q u i e r a d e lo s b l o q u e s C O M M O N
c o n t i e n e u n m i e m b r o d e u n o u o t r o c o n j u n t o d e e q u i v a l e n c i a , e n t o n c e s el c o n ­
j u n t o f u s i o n a d o t i e n e u n a p u n t a d o r al r e g is tro c o r r e s p o n d i e n t e a ese b l o q u e e n
bloqcom. E n la figura 7 .5 0 se m u e s t r a el c ó d ig o q u e realiza esta c o m p r o b a c i ó n , s u ­
p o n i e n d o q u e el líder a p u n t a d o p o r q se c o n v i e r te e n el líder del c o n j u n t o fu s io n a d o .
E n t r e las lineas (11) y (1 2 ) d e la figura 7.47 se d e b e c a l c u la r t a m b i é n la e x te n s ió n
del c o n j u n t o d e e q u iv a le n c ia f u s io n a d o . L a figura 7.4 9 (a) in d ic a las f ó r m u l a s p a r a
los n u e v o s v alores d e baja y alta c o n re s p e c to al líd e r a p u n t a d o q.

ubicación del líder


b a ja I apuntado por p a lta 1

r— c— i
b a ja ubicación de a
h dist -------- *\
ubicación de b a lta

t
b a ja 2
U d —
ubicación del líder a lta 2
apuntado por q

baja = m in (baja!, baja\ - c + d i s t + d )


alta = máx (a/tal, aha \ —c + d is t + d)

(a) posiciones relativas d e co n ju n to s de equivalencia

baja I baja 2
alta 2
bloqconti

(b) estructura de datos

Fig. 7.49. Fusión de co n ju n to s de equivalencia.


468 A M B IE N T E S PARA EL M OM ENTO DE LA EJE C U C IO N

begin
bloqcom I : = bloqcom (padre (/?));
b lo q c o m l: = bloqcom (padre (q))\
¡ f bloqcom 1 ^ n u il a n d bloqcom l ^ n u i l t h e n
error; /* hay dos nombres equivalentes dentro de common */
e l s e i f bloqcom l = n u i l t h e n
bloqcom (padre (q )):= bloqcom 1
end

F ig. 7 .5 0 . C álculo de bloques c o m m o n .

Por tanto, se debe hacer

begin
baja {padre (q)) : = m ín (baja (padre (q)), baja (padre (p)) - c+ dist+ d)-,
alta (padre ( q j) : = m áx(a/ta (padre (<?)), alta (padre (pj) - c + dist + d)
end

Estas proposiciones van seguidas de las líneas ( 1 1 ) y (1 2 ) de la figura 7.4 7 para efec­
tu ar la fusión de los dos co n ju n to s de equivalencia.
Se deben tener en cuenta dos últim os detalles para que el algo ritm o 7.1 funcione
para F O R T R A N . E n F O R T R A N se pueden hacer eq uivalentes p o sicio n es in ter­
m edias de m atrices a otras posiciones en otras m atrices o a nom bres sim ples. E l des­
plazam iento de una m atriz A desde su líd e r supone el desplazam iento de la prim era
posición de A desde la p rim era localidad del líder. Si una p o sició n co m o A ( 5 , 7 ) se
hace equivalente a B (2 0 ) , p o r ejem plo, se debe ca lcu la r la p o sició n de A ( 5 , 7 ) cor.
respecto a A ( l , l ) e in ic ia liz a r c co n el negativo de esta d istan cia en la línea (2) ce
la figura 7.4 7. A sim ism o, d debe in icializarse con el negativo de la posición de B ( 2 0 )
con respecto a B ( 1 ). L^s fórm ulas de la sección 8.3 ju n to con el co n o cim ien to de!
tam año de los elem entos de las m atrices A y B, son suficientes para ca lcu la r los va­
lores in icia le s de c y d.
E l ú ltim o detalle a co n sid erar es el hecho de que F O R T R A N perm ite una pro­
posición e q u iv a l e n c e qu e abarca m uchas posiciones, com o:

E Q U IV A L E N C E (A(5,7), B(20), C, D(4,5,6))

Estas se pueden co n sid erar com o ' «

E Q U IV A L E N C E (B(20), A(5,7))
E Q U IV A L E N C E (C , A(5,7))
E Q U IV A L E N C E (D(4,5,6), A(5,7))

Obsérvese qu e si se realizan las eq u ivalen cias en este orden, só lo A se convierte en el


líd e r de un co n ju n to que contiene más de un elem ento. Se puede u tiliz a r m uchas
veces un registro co n baja, a lia y bloqcom para “ co n ju n to s de eq u ivale n cia” de un
solo nom bre.

Transform aciones de correspondencia de áreas de datos

A co n tin u a ció n se describen las reglas m ediante las cuales se asigna espacio en las
distintas áreas de datos para los nom bres de cada rutina.
EJERCICIOS 469

1. P a ra c a d a b l o q u e c o m m o n , v isíten se to d o s los n o m b r e s d e c la r a d o s c o m o p e r te ­
n e c i e n t e s a e s e b l o q u e e n el o r d e n d e s u s d e c l a r a c i o n e s ( u t i l í c e n s e l a s c a d e n a s d e
n o m b r e s d e l b l o q u e c o m m o n c r e a d a s e n la t a b l a d e s í m b o l o s p a r a e s t e p r o p ó ­
sito). A s í g n e s e el n ú m e r o d e p a l a b r a s n e c e s a r i a s p a r a c a d a n o m b r e p o r t u r n o ,
l l e v a n d o u n a c u e n t a d e l n ú m e r o d e p a l a b r a s a s i g n a d a s , d e m o d o q u e se p u e d a n
c a l c u l a r l o s d e s p l a z a m i e n t o s p a r a c a d a n o m b r e . Si u n n o m b r e A se h a c e e q u i ­
v a l e n t e . la e x t e n s i ó n d e s u c o n j u n t o d e e q u i v a l e n c i a n o t i e n e i m p o r t a n c i a , p e r o
s e d e b e c o m p r o b a r q u e el v a l o r baja p a r a e l l í d e r d e A n o s e e x t i e n d a m á s a llá
d e l p r i n c i p i o d e l b l o q u e c o m m o n . C o n s ú l t e s e e l v a l o r alta c o r r e s p o n d i e n t e a l lí­
d e r p a r a p o n e r u n l í m i t e i n f e r i o r a la ú l t i m a p a l a b r a d e l b l o q u e . S e d e j a a l l e c t o r
q u e e n c u e n t r e las f ó r m u l a s e x a c ta s p a r a r e a liz a r e s to s cálculos.

2. V i s í t e n s e t o d o s l o s n o m b r e s d e la r u t i n a e n c u a l q u i e r o r d e n .
a ) Si u n n o m b r e e s t á e n u n b l o q u e COMMON, n o se h a c e n a d a . S u e s p a c i o y a ha
s i d o a s i g n a d o e n (1).

b ) Si u n n o m b r e n o e s t á d e n t r o d e u n b l o q u e common y n o se d e c l a r a e q u i v a ­
l e n t e , a s í g n e s e el n ú m e r o d e p a l a b r a s n e c e s a r i a s e n e l á r e a d e d a t o s p a r a la
rutina.

c ) Si u n n o m b r e A s e d e c l a r a e q u i v a l e n t e , e n c u é n t r e s e s u l í d e r , p o r e j e m p l o L.
Si a l y a s e le d i o u n a p o s i c i ó n e n el á r e a d e d a t o s d e la r u t i n a , c a l c ú l e s e la
p o sic ió n d e A s u m á n d o l e a e s a p o s ic ió n to d o s los v a lo re s desplazamiento e n ­
c o n t r a d o s e n el c a m i n o d e A a L e n el á r b o l q u e r e p r e s e n t a el c o n j u n t o d e
e q u i v a l e n c i a d e A y L. Si a L n o s e le h a d a d o u n a p o s i c i ó n , a s í g n e n s e las
s i g u i e n t e s {alta-baja) p a l a b r a s e n el á r e a d e d a t o s p a r a e l c o n j u n t o d e e q u i ­
v a l e n c i a . L a p o s i c i ó n d e L e n e s t a s p a l a b r a s e s - baja p a l a b r a s d e l p r i n c i p i o ,
y la p o s i c i ó n d e A s e p u e d e c a l c u l a r s u m a n d o l o s v a l o r e s desplazamiento
c o m o antes.

E JE R C IC IO S
7 .1 U t i l i z a n d o las re g la s d e á m b i t o d e P a s c a l, d e t e r m í n e n s e l a s d e c l a r a c i o n e s q u e
s e a p l i c a n a c a d a c a s o d e l o s n o m b r e s a y b d e la f i g u r a 7 .5 1 . El r e s u l t a d o
d e l p r o g r a m a c o n s t a d e l o s e n t e r o s 1 a l 4.
p r o g r a m a(input, output);
p r o c e d u r e b(u, v, x, y: integer);
var a s r e c o r d a, b : integer end;
b : r e c o r d b, a : integer end;
begin
with a do begin a := u; b := v end;
with b do begin a := x; b := y end;
writeln(a.a, a.b, b.a, b.b)
end;
begin
b(l, 2, 3, 4)
end.

F ig. 7 .5 1 . P r o g r a m a e n P a s c a l c o n v a r i a s d e c l a r a c i o n e s d e a y b.
470 A M B IE N T E S PARA EL M O M EN TO DE LA E JE C U C IO N

7 .2 C onsidérese un lenguaje estructurado p o r bloques en el que un nom bre se


puede d e cla ra r co m o entero o real. Supóngase que las expresiones se repre­
sentan m ediante el te rm in a l e x p r y qu e la s ú n ica s p ro p o sicio n e s son asig­
n acio n es, co n d icio n a le s, lazos w h ile y secuencias de p ro p o sicio n es. Supo­
niendo que a los enteros se les asigna un a p alab ra y a los reales dos palabras,
proporciónese u n algoritm o d irig id o p o r la sin ta x is (basado en u n a gram á­
tica razonable para d eclaraciones y bloques) para d eterm inar los enlaces de
nom bres a palabras que pueden ser utilizad as p o r un a activació n de un blo­
que. ¿U tiliz a la asignació n el m ín im o núm ero de palab ras ap ro p iad o para
cu a lq u ie r ejecució n del bloque?

* 7.3 E n la sección 7.4 se v io qu e el d isp la y se p odía m antener correctam ente si


cada p ro cedim ien to a p ro fu n d id a d / guardara d [/] al p rin c ip io de una acti­
va ció n y restableciera d [í] al fin al. D em uéstrese por in d u cció n sobre el nú­
m ero de llam adas qu e cada p ro cedim ien to observa u n d isp la y correcto.

7 .4 U n a m a c ro es un a fo rm a de p ro ce d im ien to , im p la n ta d a sustituyen d o lite­


ralm ente el cuerp o para cada llam ad a de pro cedim iento . E n la figura 7.52
se m uestra un program a en p ie y su salida. L a s p rim eras dos lín eas definen
a las m acros m u e s t r a y c h ic o . L o s cuerpo s de las m acros están conteni­
dos entre los dos signos % en las líneas. C ad a un o de los cu atro c írc u lo s de la
figura es d ib u ja d o co n m u e s t r a ; el ra d io del c írc u lo viene dado p o r el nom ­
bre n o lo ca l r . Lo s b lo q ues en p ie están d elim itad o s p o r [ y ]. C ad a variable
a la qu e se le asigne un v a lo r dentro de un b lo q u e se declara im p lícitam en te
dentro del bloque. Según el resultado, ¿qué se puede d ecir del ám bito de cada
caso de r ?

define muestra % ( círculo radio r en Aquí } %


define chico % [ r = 1/12; muestra ] %
[ * I
r = 1/6;
muestra; chico;
traslada;
muestra; chico;
1

Fig. 7.52. C írcu lo s dibujados por un program a en pie.

7 .5 Escribase un procedim iento para insertar un elem ento en u n a lista enlazada


pasando un ap u n tad o r a la cabeza de la lista. ¿C o n qué m ecanism os de paso
de parám etros fu n cio n a este procedim iento?

7.6 ¿Q ué im p rim e el program a de la figura 7 .5 3 , supo n ien d o (a) llam ad a p o r va­


lor, (b ) llam ada p o r referencia, (c ) enlace de co pia y restauración y (d ) llam ada
p o r nom bre?
EJERCICIOS 471

7.7 C u a n d o se p a s a c o m o p a r á m e t r o u n p r o c e d i m i e n t o e n u n le n g u a je d e á m ­
b it o léxico, se p u e d e p a s a r s u a m b i e n t e n o iocal u t i liz a n d o un e n l a c e d e a c ­
ceso. P r o p o r c i ó n e s e u n a l g o r i t m o p a r a d e t e r m i n a r d i c h o enlace.

program principa! (inpul. output ):


p r o c e d u r e p ( a . y, r ) ;
begin

v : = y + 1:
r : = z + x;
end.
begin

a : = 2;
h : = 3;
p ( a + b. a. a);
p rin t a
end.

Fig. 7.53. S eu d o p ro g ram a q u e ilustra el paso d e parámetros.

7.8 E n el p r o g r a m a d e Pascal d e la figura 7 .5 4 se ilu stra n las tres clases d e a m ­


b i e n t e s q u e se p o d r í a n a s o c i a r c o n u n p r o c e d i m i e n t o p a s a d o c o m o p a r á ­
m e tr o . L os a m b i e n t e s léxico , d e p a sa d a y de activación d e d i c h o p ro c e d i­
m i e n t o c o n s t a n e n los e n la c e s d e id e n tif ic a d o re s e n el p u n t o e n q u e se define
el p r o c e d i m i e n t o , p a s a d a s c o m o p a r á m e t r o y a c t iv a d a s , r e s p e c t i v a m e n t e .
C o n s id é r e s e la f u n c ió n f . p a s a d a c o m o p a r á m e t r o e n la lin e a 11. U t i l i z a n d o
los a m b i e n t e s léxico, d e p a s a d a y d e a c tiv a c ió n p a r a f . el n o m b r e n o local m
e n la lin e a 8 e s tá e n el á m b i t o d e la s d e c l a r a c i o n e s d e m e n la s lí n e a s 6 . 10
y 3. r e s p e c t i v a m e n t e .
a) D ib ú je s e el á r b o l d e a c tiv a c ió n p a ra este p r o g r a m a .
(1) program p a ra m (in p u t, output);

(2) procedure b (fu n ctio n h(n: in te g e r): in teg er);


(3) var m : integer;
(4) b e g i n m : = 3 ; w r i t e l n {h ( 2 ) ) e n d { b };

(5) procedure c;
(6) var m : integer;

(7) function f(n : in teg er) : in teg er;


(8) b e g i n f : = m + n e n d { f };

(9) procedure r;
(10) var m : integer;
( 11) b e g in m := 7; b ( f ) end { r };

( 12) b e g in m := 0; r end { c };
( 13) begin
(14) c
(15) end.

E ig. 7 . 5 4 . E je m p lo d e a m b ie n t e s léx ico , d e pasada y d e a ctivación .


472 A M B IE N T E S PARA EL M O M E N T O DE LA E JE C U C IO N

b) ¿C u á l es el resultado del program a, u tiliza n d o los am bientes lé xico , de


pasada y de activación para f ?
*c) M odifiqúese la aplicació n por m edio de d is p la y de un lenguaje con ám ­
bito léxico para co n stru ir el am biente léxico correctam ente cuando se ac­
tive un procedim iento pasado com o parám etro.

*7.9 L a p ro p o sic ió n /: = a en la línea 11 del seudoprogram a de la figura 7.55 llam a


a la función a , la cual devuelve com o resultado la función s u m a m .
a) D ibújese el árbol de activación para una ejecución de este program a.
b) Supóngase que se u tiliza ám bito léxico para los nom bres no locales. ¿Por
qué fallará el program a si se u tiliza asignación p o r m edio de una pila?
c) ¿C uál es el resultado del program a con asignación co n un m ontículo?

(1) p r o g r a m d e v u e lv e ( in p u l, o u tp u t );
(2) v a r / : f u n c t i o n (integer): in te g e r ;

(3) f u n c t i o n a : f u n c t i o n ( in teg er ) : in te g e r ;
(4) v a r m : in te g e r ;
(5) f u n c t i o n s u m a m (n : in teg er ) : in teg er;
(6 ) begin re tu rn m + n en d ;
(7) begin m : = 0; r e tu r n s u m a m end;

(8) p r o c e d u r e b (g : f u n c t i o n (in te g e r ) : in teg er );


(9) b e g i n w riteln (g (2 )) e n d ;

(1 0 ) begin
(1 1 ) /:= a\ b( f )
(1 2 ) end.

Fig. 7.55. Seudoprograma en el que la función s u m a m se devuelve


como resultado.

*7.10 A lg u n o s lenguajes, co m o L IS P , tienen la cap acid ad de d e vo lve r p ro ce d i­


m ientos recién creados durante la ejecución. E n la figura 7 . 5 6 , todas las fu n ­
ciones, definidas en el texto fuente o creadas durante la ejecución, tom an a
lo sum o un argum ento y devuelven un valo r, bien sea una función o un nú­
m ero real. E l operador o representa la com posición de funciones; es decir,
( f ° g) (x ) = f ( g (x )).

a) ¿Q ué va lo r im prim e p r in c ip a l ?
*b) Supóngase que siem pre que se cree y se devuelva un procedim iento p , su
registro de activación se convierte en un h ijo del registro de activación de
la función que devuelve p . Entonces el am biente de pasada de p se puede
m antener conservando un árbol de registros de activación en lugar de una
pila. ¿C uál es el árbol de registros de activación cuando se calcula a en
p r in c ip a l en la figura 7 . 5 6 ?

*c) C om o alternativa, supóngase que se crea un registro de activación para p


cuando se activa p , y se convierte en un h ijo del registro de activación
E JE R C IC IO S 473

correspo ndiente a l p ro ced im ien to que llam a a p. Se puede u tiliz a r este


enfoque para m antener el registro de activació n correspondiente a p . D i­
bújense las situaciones de lo s registros de activació n y sus relaciones pa­
d re-h ijo conform e se ejecutan las p ro po sicio nes de principal. ¿Es un a pila
suficiente para g uard ar los registros de activación cuando se u tiliz a este
enfoque?

function f ( x : function);
var v : function;
y \= x o h\ . /* crea a y cuando se le ejecuta */
return y
end { / } ;
function h ( );
return sin
end { h };
function g (z : function);
var w : function;
w : = arelan o z; /* crea a w cuando se le ejecuta */
return w
end { g };
function principaU );
var a : real;
u, v : function;
V := fig )- ,
u : = v ( );
a := u (jc/2);
print a
end { principal}.

Fig. 7.56. Seudoprograma que crea funciones durante la ejecución.

7 .1 1 O tra form a de lle va r a cabo el borrado de tablas de dispersió n para los nom ­
b re s c u y o á m b ito h a y a s id o pasad o (c o m o en la S ec. 7 .6 ), es d e ja r lo s
nom bres que han expirado en un a lista hasta que se exam ine de nuevo dich a
lista. S upo niend o qu e las entradas in clu y e n el nom bre del procedim iento en
el que se hace la d eclaración, en p rin c ip io se puede saber si u n nom bre es o
no viejo, y b o rrarlo si lo es. Proporciónese un esquem a de in d iza ció n para
procedim ientos que perm itan saber en u n tiem po 0 ( 1 ) si u n procedim iento
es “ antiguo” , es decir, si su ám bito ya ha sido pasado.

7 .1 2 M uchas funciones de dispersión pueden caracterizarse con un a secuencia de


constantes enteras Oo, a ¡, — Si ch 1 < i < n , es el va lo r entero del /-ésim o ca­
rácter en la cadena 5, entonces la cadena se direcciona p o r la dispersión hacia
n

dispersión (s) = (a 0 + ^ a ^ /) m°d m


/-1
474 A M B I E N T E S P A R A EL M O M E N T O D E LA E J E C U C I O N

donde in e s e l t a m a ñ o d e la t a b l a d e d i s p e r s i ó n . P a r a c a d a u n o d e l o s si­
g u i e n t e s c a s o s , d e t e r m í n e s e la s e c u e n c i a d e c o n s t a n t e s d o . a o dem ués­
trese q u e n o existe d ic h a se c u en cia. C a d a c a so d e t e r m i n a u n e n te ro ; se o b ­
t i e n e u n v a l o r d e d i s p e r s i ó n t o m a n d o e s e e n t e r o m o d m.
a ) T ó m e s e la s u m a d e l o s c a r a c t e r e s .
b ) T ó m e s e la s u m a d e l p r i m e r y el ú l t i m o c a r a c t e r e s .
c ) T ó m e s e //„. d o n d e //„ = 0 y h, - 2//,_i + c,.
d ) C o n s id é r e n s e los b its d e los 4 c a r a c te r e s s i t u a d o s en el m e d i o c o m o un
e n t e r o d e 3 2 bits.
e ) U n e n t e r o d e 3 2 b its se p u e d e c o n s i d e r a r f o r m a d o p o r 4 bytes. d o n d e cada
byte e s u n d íg ito q u e t o m a 2 5 6 v alo res posibles. C o m e n z a n d o c o n 0 0 0 0 .
para 1 < / ^ n. s u m a r c, a l byte i m od 4 , c o n a c a rre o s p e rm itid o s. E s decir,
C\ y c5 s e s u m a n al byte 1. c2 y ty> al byte 2. e t c . D e v u é l v a s e e l v a l o r final.

* 7 .1 3 ¿ P o r q u é las f u n c io n e s d e d is p e rs ió n c a r a c te r iz a d a s c o n u n a s e c u e n c ia d e e n ­
t e r o s o<,. a , c o m o e n el e j e r c i c i o 7 . 1 2 , a v e c e s t i e n e n u n b a j o r e n d i ­
m i e n t o si la e n t r a d a c o n s t a d e c a d e n a s c o n s e c u t i v a s , p o r e j e m p l o , vOOO,
v O O l , . . . ? El s i s t e m a e s q u e e n a l g u n a p a r t e d e l p r o c e s o , s u c o m p o r t a ­
m i e n t o se d e s v í a d e l o f o r t u i t o y s e p u e d e p r e d e c i r .

**7.14 C u a n d o n c a d e n a s se d i s p e r s a n e n m listas, e l n ú m e r o m e d i o d e c a d e n a s p o r
lis ta e s n/m y i n d e p e n d i e n t e m e n t e d e l o u n i f o r m e m e n t e q u e se d i s t r i b u y a n
l a s c a d e n a s . S u p ó n g a s e q u e d e s u n a “ d i s t r i b u c i ó n * ’, e s d e c i r , u n a c a d e n a
a l e a t o r i a se c o l o c a e n la / - é s i m a l i s t a c o n p r o b a b i l i d a d d(i). S u p ó n g a s e q u e
u n a f u n c i ó n d e d i s p e r s i ó n c o n d i s t r i b u c i ó n ¿ / c o l o c a b, c a d e n a s c o l e c c i o n a ­
d a s a l a z a r e n la l i s t a y. 0 < / < / ; ? — 1. D e m u é s t r e s e q u e el v a l o r p r e v i s t o
m- i
W= 2 (/>,) {b,+ 1) / 2 s e r e l a c i o n a l i n e a l m e n t e c o n la v a r i a n z a d e la d i s t r i -

bución d. P a ra u n a d is trib u c ió n u n if o r m e d e m u é s tre s e q u e el v a lo r previsto


d e H ' e s (// / 2 m) (n + 2 m - 1).

7 . 1 5 S u p ó n g a s e q u e h a y la s i g u i e n t e s e c u e n c i a d e d e c l a r a c i o n e s e n u n p r o g r a m a
en FO R TR A N .

SUBRO UTINE S U B ( X , Y )
IN T E G E R A , B(20), 0(10,15), D, E
COMPLEX F , G
COMMON / B L O Q C / D, E
EQUIVALENCE ( G , B ( 2 ) )
EQUIVALENCE (D , F, B(l))

M u é s t r e s e e l c o n t e n i d o d e l a s á r e a s d e d a t o s p a r a SUB y BLOQC (al m e n o s la


p o r c i ó n d e l á r e a d e BLOQC a c c e s i b l e d e s d e SUB). ¿ P o r q u é n o h a y e s p a c i o
p a r a x e Y?

* 7 . 1 6 U n a e s t r u c t u r a d e d a t o s útil p a r a c á l c u l o s d e e q u i v a l e n c i a s e s la estructura
de anillo. S e utiliza u n a p u n t a d o r y u n c a m p o d e d e s p la z a m ie n to e n c a d a
e n t r a d a d e la t a b l a d e s í m b o l o s p a r a e n l a z a r l o s m i e m b r o s d e u n c o n j u n t o
d e e q u i v a l e n c i a . E s t a e s t r u c t u r a a p a r e c e e n la f i g u r a 7 . 5 7 , d o n d e A. B. c y D
N O T A S BIBLIOGRAFICAS 475

s o n e q u i v a l e n t e s , y E y F s o n e q u i v a l e n t e s c o n la p o s i c i ó n d e B, 2 0 p a l a b r a s
d e s p u é s d e la d e A. y a s í s u c e s i v a m e n t e .
a ) P r o p o r c i ó n e s e u n a l g o r i t m o p a r a c a l c u l a r e l d e s p l a z a m i e n t o d e x c o n res­
p e c t o a Y, s u p o n i e n d o q u e x e Y e s t á n e n e l m i s m o c o n j u n t o d e e q u i v a ­
l e n c ia .
b) P ro p o rció n ese u n a lg o ritm o p a ra calcu lar baja y alta, c o m o se d e f i n i e r o n
e n la s e c c i ó n 7 . 9 . c o n r e s p e c t o a la p o s i c i ó n d e a l g ú n n o m b r e z.
c) P ro p o rció n e se u n a lg o ritm o p a r a procesar

EQUIVALENCE U , V

N o hay q u e a s u m ir q u e U y v están n ecesariam en te en c o n ju n to s d e eq u i­


v ale n c ia distintos.

A. ' 20 f— B: — 3 0 |— H C: 40 ~3°l | E: U) |~ H -10

Fig. 7 .5 7 . E s t r u c t u r a s d e an illo .

* 7 . 1 7 El a l g o r i t m o d e la s e c c i ó n 7 . 9 p a r a t r a n s f o r m a r á r e a s d e d a t o s e x i g e q u e se
com pruebe q u e baja del líder del c o n j u n t o d e e q u iv a le n c ia d e A n o haga q u e
e l e s p a c i o p a r a e l c o n j u n t o d e e q u i v a l e n c i a d e A se e x t i e n d a h a s t a a n t e s d e l
c o m i e n z o d e l b l o q u e COMMON y q u e s e c a l c u l e alta d e l l í d e r d e A p a r a a u ­
m e n t a r el l í m i t e s u p e r i o r d e l b l o q u e c o m m o n . si f u e r a n e c e s a r i o . D e n s e f ó r ­
m u l a s d e s d e el p u n t o d e v i s t a d e siguiente. el d e s p l a z a m i e n t o d e A e n e l b l o ­
q u e common. y último , la ú l t i m a p a l a b r a e n c u r s o d e l b lo q u e , p a r a realizar
la p r u e b a y a c t u a l i z a r último si e s n e c e s a r i o .

N O T A S B IB L IO G R A F IC A S

L a s e s t r u c t u r a s d e d a t o s t i p o p i l a s h a n d e s e m p e ñ a d o u n p a p e l f u n d a m e n t a l e n la
i m p l a n t a c i ó n d e f u n c i o n e s r e c u r s i v a s . M c C a r t h y [ 1 9 8 1 , p á g . 1 78] r e c u e r d a q u e d u ­
ra n te u n p ro y e c to d e im p la n ta c ió n d e L I S P in ic ia d o e n 1958. se d e c id ió “ utilizar
u n a so la m a t r i z c o m o p ila p ú b lic a c o n t i g u a p a r a g u a r d a r los v a lo re s d e las d ire c c io ­
n e s d e l a s v a r i a b l e s d e v u e l t a s y d e r e t o m o d e s u b r u t i n a s d e v u e l t a s p a r a la i m p l a n ­
tació n d e ru tin a s recu rsiv as”. L a in c lu sió n d e b lo q u e s y p ro c e d im ie n to s recursivos
e n A L G O L 6 0 — v é a s e N a u r [ 1 9 8 1 . S e c . 2 . 1 0 ] p a r a u n a e x p o s i c i ó n d e t a l l a d a d e su
d i s e ñ o — t a m b i é n e s t i m u l ó el d e s a r r o l l o d e a s i g n a c i ó n p o r m e d i o d e p i l a s . L a i d e a
d e u tilizar u n a estru c tu ra d e d a to s tip o display p a r a a c c e d e r a los n o m b r e s n o lo c a le s
e n u n l e n g u a j e c o n á m b i t o l é x i c o e s o b r a d e D i j k s t r a [ 1 9 6 0 . 1 9 6 3 ]. A u n q u e L I S P
u t i l i z a á m b i t o d i n á m i c o , e s p o s i b l e l o g r a r el e f e c t o d e á m b i t o l é x i c o u t i l i z a n d o los
d e n o m in a d o s “ fu n a rg s” . c o m p u e s to s p o r u n a fu n ció n y u n enlace d e acceso;
M c C a r th y [ 1981] d e sc rib e el d e sa rro llo de este m e c a n is m o . L os su ceso res d e L IS P
c o m o C O M M O N L IS P (Steele [1984]) se h a n a le ja d o d e l á m b i t o d in á m ic o .
E n los lib ro s d e te x to s o b r e le n g u a je s d e p r o g r a m a c i ó n se p u e d e n e n c o n t r a r e x ­
p lic a c io n e s s o b r e el e n l a c e d e n o m b r e s ; v é a s e , p o r e j e m p l o . A b e ls o n y S u s s m a n
476 A M B I E N T E S P A R A E L M O M E N T O D E LA E J E C U C I O N

[1985], P ra tt [1 9 8 4 ] o T ennent [1981]. U n e n f o q u e a l t e r n a t i v o p r o p u e s t o e n el ca­


p itu lo 2, co n siste e n leer la d e s c r ip c ió n d e u n c o m p i l a d o r . El d e s a rr o llo p a s o a paso
e n K e r n i g h a n y P ik e [1 9 8 4 ] c o m i e n z a c o n u n a c a l c u l a d o r a p a r a e x p r e s i o n e s a r i t ­
m é tic a s y c o n s tr u y e un in t e r p r e te p a r a u n le n g u a je sen cillo c o n p r o c e d i m i e n t o s re-
cursivos. V éase t a m b i é n el c ó d ig o p a r a Pascal-S e n W i r t h [1981]. E n R a n d e l l y R us-
sell [1 9 6 4 ] a p a re c e u n a d e s c rip c ió n d e t a lla d a d e a s ig n a c ió n c o n pilas, el u s o d e u n
display y la a s ig n a c ió n d i n á m i c a d e m atrices.
J o h n s o n y R itc h ie [1981] e s t u d i a n el d i s e ñ o d e u n a s e c u e n c ia d e l l a m a d a q u e
p e r m i te q u e el n ú m e r o d e a r g u m e n t o s v aríe d e l l a m a d a a ll a m a d a . U n m é t o d o ge­
neral p a r a e s ta b le c e r u n d isp la y g lo b a l co n siste e n seguir la c a d e n a d e e n la c e s d e a c ­
ceso, e s ta b le c ie n d o los e l e m e n t o s del d isp /a v en el p ro ceso. El e n f o q u e d e la sección
7.4, q u e a t a ñ e a u n so lo e l e m e n t o , p arece h a b e r s i d o b a s t a n t e c o n o c i d o d u r a n t e a l­
g ú n ti e m p o : u n a referen cia p u b li c a d a e s R o h l [1975]. M o se s [1970] a n a l iz a las d is ­
tin c io n e s e n t r e los a m b i e n t e s q u e se ap lic a n c u a n d o u n a f u n c ió n se p a s a c o m o p a ­
r á m e tr o y c o n sid era los p r o b le m a s q u e surgen c u a n d o d ic h o s a m b i e n t e s se im p la n t a n
u tiliz a n d o a c c e s o superficial y p r o f u n d o . N o p u e d e utilizarse la a s ig n a c ió n d e la pila
p a ra le n g u ajes c o n c o r r u t i n a s o p ro c e s o s m últip les. L a m p s o n [1 9 8 2 ] c o n s id e r a i m ­
p la n ta c i o n e s rá p id a s u tiliz a n d o a s ig n a c ió n p o r m o n tíc u lo .
E n lógica m a t e m á t i c a , las v ariables c u a n t if ic a d a s d e a l c a n c e y s u s t it u c ió n lim i­
ta d o s a p a r e c e n c o n el Begriffsschrift d e Frege [1879]. L as s u s t it u c io n e s y el p a s o de
p a r á m e t r o s h a n sid o o b j e t o d e m u c h a s d is c u s io n e s t a n t o e n el c o le c tiv o d e la lógica
m a t e m á t i c a c o m o e n el d e los le n g u ajes d e p r o g r a m a c ió n . C h u r c h [ 1 9 5 6 , pág. 288]
escribe: “ Es e s p e c i a l m e n t e difícil e n u n c i a r c o r r e c t a m e n t e la regla d e s u s t it u c ió n p a ra
v ariables fu n c io n a le s " , y re la ta el d e s a r ro llo d e d i c h a regla p a r a el c á l c u lo proposi-
c io n a l. El c á l c u lo l a m b d a d e C h u r c h [1 9 4 1 ] se h a a p l i c a d o a los a m b i e n t e s e n los
lenguajes d e p ro g ra m a c ió n , p o r e je m p lo en L a n d i n [1964]. A partir d e L a n d i n [1964].
a m e n u d o se h a c e referencia a u n p a r f o r m a d o p o r u n a f u n c ió n y u n e n la c e de a c ­
ceso c o m o a u n a cerradura.
L as e s t r u c t u r a s d e d a t o s p a r a ta b la s d e s í m b o l o s y los a l g o r i t m o s p a r a bu scarlas
se e s tu d ia n d e t a l l a d a m e n t e en K n u t h [1 9 7 3 b ] y e n A h o , H o p c r o f t y U l l m a n [1974.
1983]. L a d is p e rs ió n e s a n a l iz a d a e n K n u t h [1 9 7 3 b ] y M o r r is [19 6 8 b ]. El a rtíc u lo
o riginal q u e e s tu d ia la d is p e rs ió n e s P e te rs o n [1957]. E n M c K e e m a n [1976] se p u e ­
d e n e n c o n t r a r m á s e s tu d io s s o b r e las té c n ic a s d e o rg a n iz a c ió n d e ta b la s d e sím bolo s.
El e j e m p l o 7 .1 0 es o b r a d e Bentley, C le v e l a n d y Sethi [1985]. R eiss [1 9 8 3 ] describe
u n g e n e r a d o r d e ta b la s d e sím b olos.
A lg u n o s a lg o ritm o s de eq u iv alen cias h a n sido descrito s p o r A rd en , G a lle r y
G r a h a m [1961] y G a l l e r y F is c h e r [1964]; e n este libro se ha a d o p t a d o este ú l t i m o
e n f o q u e . L a eficiencia d e los a lg o ritm o s d e e q u iv a le n c ia se e s tu d ia en Fischer [1972].
H o p c r o f t y U l l m a n [1973] y T a r j a n [1975].
[477]

CAPITULO 8

Generación
de código
intermedio

En el m odelo de análisis y síntesis de un com pilador, la etapa in icia l traduce un pro­


grama fuente a una representación interm edia a partir de la cual la etapa final ge­
nera el código objeto. Los detalles del lenguaje objeto se confinan en la etapa final,
si esto es posible. A unque un program a fuente se puede traducir directam ente al len­
guaje objeto, algunas ventajas de utilizar una form a interm edia independiente de la
m áquina son:

1. Se facilita la redestinación; se puede crear un com pilador para una m áquina dis­
tinta uniendo una etapa final para la nueva m áquina a una etapa in icial ya exis­
tente.

2. Se puede aplicar a la representación interm edia un optim ador de código inde­


pendiente de la m áquina. Estos optim adores se estudian con detalle en el capí­
tulo 10.

Este capítulo muestra cóm o se pueden u tilizar los métodos dirigidos por la sin­
taxis de los capítulos 2 y 5 para traducir a una form a interm edia construcciones de
lenguajes de program ación com o declaraciones, asignaciones y proposiciones de flujo
del control. Para sim plificar, se supone que el program a fuente ya ha sido analizado
sintácticam ente y com probado estáticamente com o en la organización de la figura
8.1. La m ayor parte de las definiciones dirigidas por la sintaxis de este capítulo se
pueden im plantar durante el análisis sintáctico ascendente o descendente utilizando
las técnicas del capítulo 5, así que la generación de código interm edio se puede in ­
tercalar en el análisis sintáctico, si se desea.

F ig . 8 .1 . U b ica c ió n del g e n e ra d o r d e có d ig o in term ed io .


478 G E N E R A C IO N D E C O D IG O INTERM EDIO

8.1 L E N G U A J E S I N T E R M E D I O S

L os á r b o le s sin tá c tic o s y la n o t a c i ó n postfija. in t r o d u c i d o s e n las s eccio n es 5.2 y 2.3,


r e s p e c ti v a m e n t e , son d o s clases d e r e p r e s e n ta c io n e s in te rm e d ia s . E n este c a p í tu lo se
u tiliz ará u n a tercera, ll a m a d a c ó d ig o d e tres d ire c c io n e s . I a s reglas s e m á n t i c a s p a ra
g e n e r a r c ó d ig o d e tres d ire c c io n e s a p a r tir d e c o n s t r u c c i o n e s d e lenguajes d e p r o g ra ­
m a c ió n c o m u n e s s o n sim ilares a las reglas p a r a c o n s t r u i r á r b o le s sin tá c tic o s o p a ra
g e n e r a r n o t a c i ó n postfija.

R e p re s e n ta c io n e s g ráfica s

U n á r b o l s i n t á c t i c o d e s c r i b e la e s t r u c t u r a j e r á r q u i c a n a t u r a l d e u n p r o g r a m a
f u e n te . U n g r a f o d ir i g id o a c íc lic o ( G D A ) p r o p o r c i o n a la m i s m a i n f o r m a c i ó n p e r o
d e u n a f o r m a m á s c o m p a c t a p o r q u e se i d e n t i f i c a n las s u b e x p r e s i o n e s c o m u n e s .
E n la fig u ra 8 . 2 a p a r e c e n u n á r b o l s i n t á c t i c o y u n G D A p a r a la p r o p o s i c i ó n de
asignación a : = b * - c + b * - c .

a sig n a asig n a
/ \ / X

/ X
m enosu b m enosu / \
b m enusu
c c

(a) árbol sintáctico (b) G D A

Fig. 8.2. Representaciones gráficas de a : = b * - c + b * - c .

L a re p re s e n ta c ió n postfija e s u n a re p re s e n ta c ió n lin e a liz a d a d e u n á r b o l s in tá c ­


tic o : es u n a lista d e los n o d o s d e u n á r b o l en la q u e u n n o d o a p a r e c e i n m e d i a t a ­
m e n t e d e s p u é s d e s u s hijos. L a n o t a c i ó n postfija p a ra el á r b o l s in tá c tic o d e la figura
8.2 (a) es

a b e menosu * b c menosu * + asigna (8.1)

Las aristas de u n á r b o l s in tá c tic o n o a p a r e c e n e x p l í c i t a m e n t e en la n o t a c i ó n postfija.


Se p u e d e n r e c u p e r a r s e g ú n el o r d e n e n q u e a p a r e c e n los n o d o s y el n ú m e r o d e o p e ­
r a n d o s q u e esp era el o p e r a d o r d e u n n o d o . L a r e c u p e r a c ió n d e las a ris ta s e s s im ila r
a la e v a l u a c ió n , m e d i a n t e u n a pila, de u n a ex p re s ió n e n n o t a c i ó n postfija. V éase la
secció n 2 .8 p a r a m á s d e ta lle s y la rela ció n e n t r e n o ta c ió n postfija y c ó d ig o p a r a u n a
m á q u i n a d e pila.
L os a r b o le s s in tá c tic o s p a r a las p r o p o s ic io n e s d e a s ig n a c ió n s o n p r o d u c i d o s p o r
la d e f i n i c i ó n d i r i g i d a p o r la s i n t a x i s d e la fig u ra 8 . 3 ; e s u n a e x t e n s i ó n d e la s e c ­
c ió n 5.2. El n o te r m i n a l S g e n e r a u n a p r o p o s ic ió n d e a s ig n a c ió n . L o s d o s o p e r a d o ­
res b in a r i o s + y * s o n e j e m p lo s del c o n j u n t o c o m p l e t o d e o p e r a d o r e s d e u n le n g u a je
8.1 LEN G U A JES IN T E R M E D IO S 479

P r o d u c c ió n R egla S em á n tic a

S - * id : = £ S .a p n := h a z n o d o ( ' a s i g n a ' , h a z h o ja (id , id .lugar), E .a p n )


E —> E \ + E i E .a p n : = h a z n o d o ( V , E x.a p n , E 2 .a p n )
£ - > £ , * Ei E .a p n := h a z n o d o ( V , E \.a p n , E 2 .a p n )
£ -» -£ , E .a p n : = h a z n o d o u n ( ' m e n o s u ' , E x:apn)
£ -> ( £i ) E .a p n : = E y .a p n
£ - » id E .a p n : = h a z h o ja (id , iá .lu g a r)

F ig . 8 . 3 . D e f i n i c i ó n d i r i g i d a p o r la s i n t a x i s p a r a p r o d u c i r á r b o l e s s i n t á c t i c o s
p a r a p ro p o s ic io n e s de asig n ació n .

típico. L a s a s o c ia tiv i d a d e s y p r e c e d e n c i a s d e lo s o p e r a d o r e s s o n la s h a b itu a le s , a u n ­


q u e n o s e h a y a n i n c l u d o e n la g r a m á t i c a . E s t a d e f i n i c i ó n c o n s t r u y e e l á r b o l d e la
figu ra 8 .2 (a ) a p a r t i r d e la e n t r a d a a : = b * - c + b * - c .

E s t a m i s m a d e f i n i c i ó n d i r i g i d a p o r la s i n t a x i s p r o d u c i r á el G D A d e l a f i g u r a 8 . 2 ( b )
si l a s f u n c i o n e s h a z n o d o u n ( o p , h ijo ) y h a z n o d o ( o p , iz q u ie r d o , d e r e c h o ) d e v u e l v e n
u n a p u n t a d o r a u n n o d o y a e x iste n te s ie m p r e q u e sea p osible, e n lu g a r d e c o n s tru ir
n u e v o s n o d o s . E l c o m p o n e n t e l é x i c o id t i e n e e l a t r i b u t o lu g a r q u e a p u n t a a l a e n ­
t r a d a d e la t a b l a d e s í m b o l o s c o r r e s p o n d i e n t e a l i d e n t i f i c a d o r . E n la s e c c i ó n 8 . 3 se
m u e stra c ó m o se p u e d e e n c o n tr a r u n a e n tr a d a d e la ta b la d e s ím b o lo s a p a r tir d e u n
a t r i b u t o id .n o m b r e , q u e r e p r e s e n t a a l l e x e m a a s o c i a d o c o n e s e c a s o d e id . S i e l a n a ­
liz a d o r lé x ic o c o n s e r v a t o d o s lo s l e x e m a s e n u n a s o la m a t r i z d e c a r a c te r e s , e n t o n c e s
e l a t r i b u t o n o m b r e p u e d e s e r el í n d i c e d e l p r i m e r c a r á c t e r d e l l e x e m a .
E n la fig u ra 8 .4 a p a r e c e n d o s r e p r e s e n ta c io n e s d e l á r b o l s in tá c tic o d e la figura
8 . 2 ( a j . C a d a n o d o se r e p r e s e n t a c o m o u n r e g i s t r o c o n u n c a m p o p a r a s u o p e r a d o r y
c a m p o s a d i c i o n a l e s p a r a a p u n t a d o r e s a s u s h i j o s . E n la f i g u r a 8 . 4 ( b ) . l o s n o d o s se

------ r
0 i d b
I
i i d c
i
2 menosu 1
i
3 * 0 2
i
4 i d b
, i
5 i d ’ c

6 menosu| 5
7 * 4 6
l
8 + . 3 7
i
9 i d | a

10 asigna 9 8
• • •
t i
II
i i

(a) ’ (b )

F ig. 8 .4 . D o s r e p r e s e n t a c i o n e s d e l á r b o l s i n t á c t i c o d e la f ig u r a 8 .2 (a).
480 G E N E R A C IO N DE C O D IG O IN T E R M E D IO

localizan en una m atriz de registros y el ín d ice o posición de los nodos sirve com e
apuntador al nodo. T o d o s los nodos del árbol sintáctico se pueden visitar siguien­
do apuntadores, com enzando desde la raíz en la posición 1(L '

Código de tres direcciones

E l código de tres direcciones es una secuencia de proposiciones de la form a general


x : = y op z

donde x , y y z son nom bres, constantes o variables tem porales generadas p o r el


com pilador, op representa cualquier operador, com o un operador aritm ético de punto
fijo o flotante, o un operador lógico sobre datos con valores booleanos. Obsérvese
que no se perm ite ninguna expresión aritm ética com puesta, pues sólo hay un ope­
rador en el lado derecho de una proposición. Por tanto, una expresión del lenguaje
fuente com o x ± y * z se puede trad ucir en una secuencia
t , : = y * z

t 2 : = x + t,

donde t , y t 2 son nom bres tem porales generados por el com pilador. Esta descom­
posición de expresiones aritm éticas com plejas y de proposiciones de flu jo del con­
trol anidadas hace al código de tres direcciones deseable para la generación de có­
digo objeto y para la optim ación. (V éanse Caps. 10 y 12.) E l uso de nom bres para
los valores interm edios calculados por un program a perm ite que el código de tres
direcciones se reorganice fácilm ente — a diferencia de la notación postfija— .
El código de tres direcciones es una representación linealizada de un árbol sin­
táctico o un G D A en la que los nom bres explícitos corresponden a los nodos inte­
riores del grafo. E l árbol sintáctico y el G D A de la figura 8.2 están representados por
las secuencias de código de tres direcciones de la figura 8.5. Los nom bres de las va­
riables aparecen directam ente en las proposiciones de tres direcciones, de m odo que
la figura 8.5(a) no tiene proposiciones correspondientes a las hojas de la figura 8.4.

ti := - c ti := - c
X)

4J
II
••

t 2 t 2 := b * tj

t 3 := — c t 5 : = t 2 + t 2

t 4 := b * t 3 a := t 5

t 5 := t 2 + t 4
a
••
II

(a) Código para el árbol sintáctico (b) Código para el G D A .

Fig. 8.5. Código de tres direcciones correspondiente al árbol y al G D A de la figura 8.2.

La explicación del térm ino “ código de tres direcciones" es que cada proposición
contiene generalm ente tres direcciones, dos para los operandos y una para el resul­
tado. En las aplicaciones del código de tres direcciones que se dan m ás adelante en
esta sección, un nom bre definido por el program ador se sustituye por un apuntador
a la entrada de la tabla de sím bolos correspondiente a dich o nom bre.
8.1 LENGUAJES INTERM EDIOS 48 1

I ipos de proposiciones de tres direcciones

Las proposiciones de tres direcciones son análogas al código ensam blador. Las pro­
posiciones pueden tener etiquetas sim bólicas y existen proposiciones para el flujo
del control. U na etiqueta sim b ó lica representa el ín d ice de una proposición de tres
direcciones en la m atriz que contiene el código interm edio. Lo s índices reales se
pueden sustituir por las etiquetas, ya sea realizando un a pasada independiente o me­
diante “ relleno en retroceso” , que se estudia en la sección 8.6.
A continuación se presentan las proposiciones de tres direcciones com unes que
se utilizan en el resto de este libro:

1. Las proposiciones de asignación de la form a x s = y op z , donde op es una ope­


ración b in aria aritm ética o lógica.

2. Las instrucciones de asignación de la form a x := op y . donde op es una opera­


ción unaria. Las operaciones uñarías p rin cip ales in cluyen el m enos unario, la
negación lógica, los operadores de desplazam iento y operadores de conversión
que, por ejem plo, convierten un núm ero de punto fijo en un núm ero de punto
flotante.

3. Las proposiciones d e copia de la forma__x : = y^donde el va lo r de y se asigna a x.

4. E l salto in co n d icio nal g o to E. L a proposición de tres direcciones con etiqueta


E es la siguiente que va a ejecutarse.

5. Los saltos condicionales com o i f x oprel y g o to E. Esta instrucción aplica un


operador relacional (<, = , >=, etc.) a x e y , y a co n tinuació n ejecuta la proposi­
ción con etiqueta E si x pone oprel en relación con y . Si no, a co n tinuació n se
ejecuta la proposición de tres direcciones que sigue a i f x oprel y g o to E, com o
en la secuencia habitual.

6. p a ra m x y c a l i p, n para llam adas a procedim ientos y r e t u r n y , donde y , que


representa un valor devuelto, es opcional. Su uso típ ico es com o secuencia de
proposiciones de tres direcciones

p aram x ¡
p aram x 2
• • •
p aram x„
c a li p, n

que se genera com o parte de una llam ada al procedim iento p ( x u x 2, . . . , x„).
El entero n , que indica el núm ero de parám etros reales en “ c a l i p ,n " no es
redundante porque las llam adas pueden estar anidadas. La im plantación de las
llam adas a procedim ientos se esboza en la sección 8.7.

7. Las asignaciones con índices de la form a x : = y [ i ] y x [ i ] := y . La prim era


asigna a x el va lo r de la posición en i unidades de m em oria más allá de la po­
sición y . La proposición x [ i ] := y asigna al contenido de la posición en i u n i­
dades de m em oria m ás allá de la posición x al va lo r de y . E n am bas instruccio ­
nes, x, y e i se refieren a objetos de datos.
482 G ENERA CIO N DE C O D IG O IN TERM EDIO

8. L as a s ig n a c io n e s d e d ir e c c io n e s y a p u n t a d o r e s d e la f o r m a x : = &y, x : = * y y
* x : = y. L a p r i m e r a h a c e q u e el v a lo r d e x sea la d ir e c c ió n d e y. P r e s u m ib le ­
m e n te . y e s u n n o m b r e , tal vez u n a v aria b le t e m p o r a l , q u e in d ic a u n a ex p re s ió n
c o n un v a lo r d e lazo i z q u ie r d o c o m o A [ i , j ] . y x e s el n o m b r e d e u n a p u n t a ­
d o r o u n a v aria b le te m p o r a l. E s decir, el v a lo r d e l a d o d e r e c h o d e x es el v alor
d e la d o i z q u ie r d o (p o s ic ió n ) d e un objeto. E n la p ro p o s ic ió n x : = *y . se s u p o n e
q u e y e s u n a p u n t a d o r o u n a v aria b le te m p o r a l c u y o v alor d e la d o d e r e c h o es
u n a p o sic ió n . El v a lo r d e la d o d e r e c h o d e x se ¡guala al c o n t e n i d o d e d i c h a p o ­
sición. P o r ú l t i m o . * x : = y h a c e q u e el v alor d e la d o d e r e c h o del o b j e t o a p u n ­
t a d o p o r x sea igual al v a lo r d e l a d o d e r e c h o d e y.

La elección d e o p e r a d o r e s p e rm is ib le s es u n a s p e c t o i m p o r t a n t e en el d i s e ñ o de
u n a f o r m a in te r m e d ia . El c o n j u n t o d e o p e r a d o r e s d e b e s e r lo b a s t a n t e rico c o m o
p a ra i m p l a n t a r las o p e r a c i o n e s del le n g u a je fuen te. U n c o n j u n t o d e o p e r a d o r e s p e ­
q u e ñ o es m á s fácil d e i m p l a n t a r en u n a n u e v a m á q u i n a o b je to . Sin e m b a r g o , un
c o n j u n t o d e in s tr u c c io n e s li m i t a d o p u e d e o b lig a r a la e t a p a inicial a g e n e r a r largas
secu en cias d e p ro p o sic io n e s p a ra a lg u n a s o p e ra c io n e s del lenguaje fuente. En tal caso,
el o p t i m a d o r y el g e n e r a d o r d e c ó d ig o t e n d r á n q u e t r a b a j a r m á s si se d e s e a p r o d u c i r
b u e n código.

T r a d u c c ió n d irig id a p o r la s in ta x is a código de tr e s direcciones

C u a n d o se g en era c ó d ig o d e tres direcciones, se c o n s tr u y e n n o m b r e s te m p o r a le s p a ra


los n o d o s in te r io re s d e u n á r b o l sin tá ctic o . Se c a lc u la rá el v a lo r d e l n o te r m i n a l /:
e n el la d o iz q u ie r d o d e E —> E\ + d e n t r o d e u n n u e v o te m p o r a l t . E n general, el
c ó d ig o d e tres d ir e c c io n e s p a r a id : = E c o n s t a d e c ó d ig o p a r a e v a l u a r E e n algún
n o m b r e te m p o r a l t . seguido d e la asig n ac ió n id lugar : = t . Si u n a expresión consta
d e un solo id e n tific a d o r. p o r e j e m p l o y. e n t o n c e s y m i s m o c o n t i e n e el v a lo r d e la
ex p re sió n . P o r el m o m e n t o , s e c r e a u n n u e v o n o m b r e c a d a vez q u e se necesite un
t e m p o r a l ; en la s e c c i ó n 8 .3 se p r o p o r c i o n a n t é c n ic a s p a r a r e u t i l i z a r lo s n o m b r e s
te m p o rales.
L a d e f in i c ió n c o n a t r i b u t o s s i n t e t i z a d o s d e la figura 8 . 6 g e n e r a c o d ig o d e tres
d i r e c c i o n e s p a r a p r o p o s i c i o n e s d e a s i g n a c i ó n . D a d a la e n t r a d a a : = b * - c + b
* - c . p r o d u c e el c ó d ig o d e la figura 8.5(a). El a t r i b u t o s i n t e t i z a d o S.código r e p r e ­
s e n ta el c ó d ig o d e tres d ire c c io n e s p a r a la a s ig n a c ió n 5 . El n o te r m i n a l E tie n e d o s
atrib u to s:

1. E.lugar. q u e e s el n o m b r e q u e c o n t e n d r á el v alo r d e E. y
2. E.código. q u e es la secuencia d e p ro posicion es d e tres d ireccion es q u e e v a lú a n E.

La fu n c ió n tem pnuevo d e v u e l v e u n a s e c u e n c ia d e n o m b r e s d is tin to s t , , t 2,


en resp u esta a s u cesiv as lla m a d a s.
P o r c o n v e n i e n c ia , se utiliza la n o t a c i ó n g en (.v y V r ) e n la figura 8.6 p a ra
re p r e s e n ta r la p r o p o s ic ió n d e tr e s d ire c c io n e s .v : = y + r . L as e x p re s io n e s q u e a p a ­
recen en lu g a r d e v ariables c o m o .v, y y r s e e v a l ú a n c u a n d o se p a s a n a g en . y los
o p e r a d o r e s e n tr e c o m illa d o s , c o m o se t o m a n lite r a lm e n te . E n la p r á c tic a , la s p r o ­
po sicio n es d e tres d ire c c io n e s se p u e d e n e n v i a r a u n a r c h i v o d e salida, e n lu gar de
c o n s tr u i r l a s e n los a t r i b u t o s código.
8.1 LENG UAJES IN TERM EDIO S 483

P r o d u c c ió n R egla Sem á n t ic a

S - * id : = E S.código : = E.código |) gen (iá lugar ' : = ' EJugar)

E —* E\ + Ej E. tugar : = lem pnuevo ;

E. código : = £ código || E 2.código ||


, .

gen ( EJ u g a r ’ E xJ u g a r V E 2 Jugar)

E - » Ei * Ei E.lugar : = lem pnuevo ;

E. código : = £ , . código || E c ó d ig o ||
J u g a r ' E \ Jugar V £ 2./n#ar)
( £

£ - > - £ , EJugar : = lem pnuevo ;

E.código : = Ei.código | (E /u g a r ' m en o su ' £ , Jugar)

£ - * ( £ j )
E Jugar : = E, Jugar.
E.código : = E {.código

£ - > id EJugar : = id J u g a r
9 9
E.código : =

Fig. 8.6. Definición dirigida por la sintaxis para producir código de tres direcciones
para las asignaciones.

S e p u e d e n a ñ a d i r p r o p o s ic io n e s d e flujo d e l c o n t r o l al le n g u a je d e a s ig n a c io n e s
d e la figura 8 . 6 m e d i a n t e p r o d u c c i o n e s y reglas s e m á n t i c a s c o m o la s d e las p r o p o ­
s ic io n e s w h ile d e la figura 8.7. E n la figura, el c ó d i g o p a r a S1- > w h i l e £ d o S , se
g e n e r a u tiliz a n d o los a t r i b u t o s n u e v o s S .c o m ie n zo y S.después p a r a m a r c a r la pri-

P r o d u c c ió n R eglas S e m á n t ic a s

S -* w h ile E do S , S.com ienzo : = etiqnueva ;


S. después : = et i (/nueva',
S código : = gen (S.com ienzo V ) ||
E. código |
gen ( ' i f ' E J u g a r’= ' '0 ' ' g o t o ' S.después) |¡
S x.código 1
gen ( ' g o t o ' S.com ienzo) ||
gen (S.después V )

F ig. 8 .7 . R e g la s s e m á n t i c a s q u e g e n e r a n c ó d i g o para u n a p r o p o s ic ió n w h ile.


484 G E N E R A C IO N DE C O D IG O IN T E R M E D IO

m era proposición en el código correspondiente a E y la proposición que sigue al có­


digo correspondiente a 5 , respectivam ente. Estos atrib uto s representan etiquetas
creadas por la fu n ció n etiqnueva que devuelve una etiqueta nueva cada vez que es
llam ada. Obsérvese que S.después se convierte en la etiqueta de la proposición que
viene después del código correspondiente a la pro p o sició n w hile. Se supone que una
expresión distinta de cero representa el va lo r true\ es d ecir, cuan d o el v a lo r de E se
convierte en cero, el co ntro l abandona la pro po sició n w hile.
Las expresiones que gobiernan el flu jo del co ntro l pueden ser generalm ente ex­
presiones booleanas que contengan operadores relaciónales y lógicos. Las reglas se­
m ánticas para las proposiciones w hile de la sección 8.6 difieren de las de la figura
8 .7 para a d m itir flu jo de co ntro l dentro de las expresiones booleanas.
Se puede obtener notación postfija adaptando las reglas sem ánticas de la figura
8.6 (o véase Fig . 2.5). L a notación postfija para un id en tificad o r es el identificador
m ism o. Las reglas para las otras producciones concatenan sólo al operador después
del código de los operandos. Por ejem plo, a la pro ducció n E —» — E \ se asocia la
regla sem ántica

E .código : = E \.código || m enosu'

E n general, la form a interm edia pro ducid a p o r las traducciones d irigid as p o r la sin ­
taxis de este cap ítu lo se puede cam b iar realizando a las reglas sem ánticas m o difica­
ciones sim ilares.

Im plantaciones de proposiciones de tres direcciones

U n a proposición de tres direcciones es una form a abstracta de código interm edio.


E n u n c o m p ila d o r, estas p ro p o sicio n e s se pueden im p la n ta r co m o registros con
cam pos para el operador y los operandos. T res de dichas representaciones son cuá­
d ruples, trip les y triples indirectos.

C uádruplos
U n cuád rup lo es un a estructura tip o registro con cuatro cam pos, que se llam arán
op, a rg L a r g l y resultado. E l cam po op contiene un código interno para el operador.
La proposición de tres direcciones x := y o p z se representa poniendo y en arg 1,
z en a rg l y x en resultado. Las proposiciones con operadores unarios com o x := - y
o x : = y no u tiliza n a rg l. Lo s operadores co m o p aram no u tilizan n i a r g l n i re­
su lta d o . Lo s saltos co n d icio n a le s e in c o n d ic io n a le s po n en la etiqueta objeto en
resultado. Los cuád rup lo s de la figura 8.8(a) corresponden a la asignación a : = b *
- c + b * - c . Se obtienen a p a rtir del código de tres direcciones de la figura 8.5(a).
Lo s contenidos de los cam pos arg 1, a r g l y resultado son generalm ente apunta­
dores a las entradas de la tabla de sím bolos correspondientes a los nom bres repre­
sentados p o r d ich o s cam pos. E n ese caso, los nom bres tem porales se deben in tro ­
d u cir en la tabla de sím bolos conform e van siendo creados.

Triples

Para e vita r in tro d u c ir nom bres tem porales en la tabla de sím bolos, se hará refe­
rencia a un va lo r tem poral,según la p o sició n de la proposición que lo calcula. E n ese
8.1 L E N G U A JE S IN T E R M E D IO S 485

op argl argl resultado op argl arg2


(0) menosu c ti (0) menosu c
(1) ★ b t. t2 (1) * b (0)
(2) menosu c t3 (2) menosu c
(3) * b t3 t4 (3) * b (2)
(4) + t2 t4 t5 (4) + ( i) (3)
(5) • t5 a (5) a s ig n a a (4)

(a) C u a d ru p lo s (b) T rip les

F ig . 8 . 8 . R e p r e s e n t a c i o n e s p o r m e d i o d e c u á d r u p l o s y t r i p l e s d e p r o p o s i c i o n e s d e tr e s
d irecciones.

caso, las proposiciones de tres direcciones se pueden representar m ediante registros


con sólo tres cam pos: o p ^a rg l y arg2, com o en la figura 8.8(b). L o s cam pos arg 1 y
a r g l, para los argum entos de op, son apuntadores a la tabla de sím bolos (para nom ­
bres o constantes definidos por el program ador) o apuntadores dentro de la estruc­
tura del triple (para valores tem porales). C om o se u tilizan tres cam pos, este form ato
del código interm edio se conoce com o trip le 1. Excepto el tratam iento de los nom ­
bres definidos por el program ador, los triples corresponden a la representación de
un árbol sintáctico o un G D A m ediante una m atriz de nodos, com o en la figura 8.4.
Los núm eros entre paréntesis representan apuntadores dentro de la estructura de
lo s triples, en tanto que los apuntadores a la tabla de sím bolos se representan me­
diante los nom bres m ism os. E n la práctica, la in fo rm ació n necesaria para interpre­
tar las distintas clases de entradas en lo s cam pos arg 1 y a r g l se puede co d ificar den­
tro del cam po op o en algunos cam pos adicionales. Lo s triples de la figura 8.8(b)
corresponden a los cuádrup lo s de la figura 8.8(a). Obsérvese que la pro po sició n de
copia a : = t s se co d ifica en la representación con trip les p o n ien d o a dentro del
cam po arg 1 y utilizand o el operador a s ig n a .

op argl arg2 op argl arg2


( 0 ) [ ]= X i ( 0 ) =[ 1 y 1

( 1 )
a s ig n a ( 0 ) y (O a s ig n a X ( 0 )

(a) x [ i ] := y (b ) x := y [ i ]

F ig . 8 . 9 . O t r a s r e p r e s e n t a c i o n e s p o r m e d i o d e trip le s .

A veces los triples se d e n o m in a n “código d e dos direcciones”, y los “cu ád ru p lo s”, “código d e tres
direcciones”. Sin em bargo, aq u í se considerará el “código de tres direcciones” c o m o u n a noción abs­
tracta con varias im plantaciones, siendo las principales los triples y los cuádruplos.
486 G EN ER A C IO N DE C O D IG O IN TERM EDIO

U n a o p e r a c i ó n te r n a r i a c o m o x [ i J : = y exige d o s e n t r a d a s e n la e s tr u c t u r a de
triples, c o m o se m u e s t r a e n la figura 8.9(a), m i e n t r a s q u e x : = y [ i ] se re p re s e n ta
n a t u r a l m e n t e c o m o d o s o p e r a c i o n e s e n la figura 8.9(b).

Triples indirectos

O t r a i m p l a n t a c i ó n d e l c ó d ig o d e tres d ir e c c io n e s q u e se h a c o n s i d e r a d o es la d e h a ­
c e r u n a lista d e los a p u n t a d o r e s a triples, e n lugar d e h a c e r u n a lista d e los triples
m i s m o s . E s ta a p lic a c ió n se ll a m a n a t u r a l m e n t e triples indirectos.

proposición op argl arg2


(0) (14) (14) m enosu c
(1) (15) (15) * b (14)
(2) (16) (16) m enosu c
(3) (17) (17) * b (16)
(4) (18) (18) + (15) (17)
(5) (19) (19) a sig n a a (18)

Fig. 8.10. Representación por m edio d e triples indirectos de proposiciones de tres


direcciones.

P o r e je m p lo , se u tiliz ará u n a m a t r i z proposición p a r a listar los a p u n t a d o r e s a tr i ­


ples e n el o r d e n d e s e a d o . E n t o n c e s , lo s triples d e la figura 8.8(b) se p u e d e r e p r e s e n ­
t a r c o m o en la figura 8.10.

Comparación de las representaciones: el uso de indirecciones

L a d if e re n c ia e n t r e t r i p le s y c u á d r u p l o s se p u e d e c o n s i d e r a r c o m o la c u e s t i ó n de
c u á n t a i n d i r e c c i ó n e s tá p r e s e n t e e n la r e p r e s e n t a c i ó n . C u a n d o se p r o d u c e f i n a l ­
m e n t e c ó d ig o o b je to , a c a d a n o m b r e , t e m p o r a l o d e f i n i d o p o r el p r o g r a m a d o r , se le
as ig n a rá a lg u n a p o s ic ió n e n la m e m o r i a p a r a la e je c u c ió n . E s ta p o s ic ió n se p o n d r á
e n la e n t r a d a d e la ta b la d e s ím b o l o s c o r r e s p o n d i e n t e al d a t o . U t i l i z a n d o u n a n o t a ­
c ió n d e c u á d r u p l o s . u n a p r o p o s ic i ó n d e tres d ir e c c io n e s q u e d e f i n a o utilice u n t e m ­
p o r a l p u e d e a c c e d e r d e i n m e d i a t o a la p o s ic ió n c o r r e s p o n d i e n t e a d i c h o t e m p o r a l a
tra v é s d e la t a b l a d e sím bolos.
H a y u n a v e n t a ja m á s i m p o r t a n t e d e los c u á d r u p l o s e n u n c o m p i l a d o r o p t i m a -
d o r . d o n d e a m e n u d o se tr a s l a d a n las p r o p o s ic io n e s . U t i l i z a n d o la n o t a c i ó n d e c u á ­
d ru p lo s . la ta b la d e s ím b o l o s i n t e r p o n e u n g r a d o a d i c io n a l d e in d ire c c ió n e n t r e el
c á l c u lo d e u n v a l o r y s u uso. Si se t r a s l a d a u n a p r o p o s i c i ó n q u e c a l c u l e x, la p r o ­
p o s ic ió n q u e utiliza x n o n ecesita n i n g u n a m o d if ic a c ió n . Sin e m b a r g o , e n la n o t a ­
c ió n d e triples, tr a s l a d a r u n a p r o p o s ic ió n q u e d e f i n a a u n v a lo r t e m p o r a l exige q u e
se m o d i f iq u e n t o d a s las re feren cias a esa p r o p o s ic ió n e n las m a t r i c e s argl y a rg l.
Este p r o b l e m a d ific u lta la utiliz ació n d e los trip les e n u n c o m p i l a d o r o p t i m a d o r .
8 .2 D E C L A R A C IO N E S 487

Los triples indirectos no presentan dich o problem a. U na proposición se puede


trasladar reordenando la lista proposición. C om o los apuntadores o valores tempo­
rales se refieren a la m atriz (o m atrices) op-arg\-arg2y que no se han m odificado, no
hay que m odificar ninguno de esos apuntadores. Por tanto, los triples indirectos se
parecen m ucho a los cuadruplos en lo relativo a su utilidad. Las dos notaciones exi­
gen aproxim adam ente la m ism a cantidad de espacio y son igual de eficientes para
reordenar el código. C om o en el caso de los triples ordinarios, se debe posponer la
asignación de m em oria para aquellos tem porales que lo necesiten hasta la fase de
generación de código. Sin em bargo, los triples indirectos pueden ahorrar algún es­
pacio en com paración con los cuádruplos si el m ism o valor tem poral se utiliza más
de una vez. La razón es que dos o más entradas en la m atriz proposición pueden
apuntar a la m ism a lín ea de la estructura op-arg\-arg2. Por ejem plo, se podrían
com binar prim ero las líneas (14) y (16) de la figura 8. 10 y com binar después las lí­
neas (15) y (17).

8.2 D E C L A R A C IO N E S

Conform e se exam ina la secuencia de declaraciones dentro de un procedim iento o


un bloque, se puede d is trib u ir la m em o ria para los nom bres locales al p ro ced i­
miento. Para cada nom bre local se crea una entrada en la tabla de sím bolos con in ­
form ación, por ejem plo, referente al tipo y la dirección relativa de la m em oria co­
rrespondiente al nom bre. L a dirección relativa consta de un desplazam iento desde
la base del área de datos estática o el cam po para los datos locales en un registro de
activación.
C u an d o la etapa in ic ia l genera direcciones, puede estar pensando en una m á­
quina objeto. Supóngase que las direcciones de enteros consecutivos difieren en 4
en una m áquina direccionable por bytes. Los cálculos de las direcciones generados
por la etapa in icia l pueden por tanto in c lu ir m ultiplicaciones p o r 4. El conjunto de
instrucciones de la m áquina objeto tam bién puede favorecer ciertas distribuciones
de los objetos de datos, y por tanto sus direcciones. A q u í se pasa por alto la alinea­
ción de los objetos de datos; el ejem plo 7.3 m uestra cóm o los objetos de datos son
alineados p o r dos com piladores.

D eclaraciones dentro de un procedimiento

La sintaxis de lenguajes com o CJ Pascal y F O R T R A N perm ite que todas las decla­
raciones en un solo procedim iento se procesen com o un grupo. E n este caso, una
variable global, por ejem plo desplazam iento, puede contener la siguiente dirección
relativa disponible.
En el esquema de traducción de la figura 8.11, el no term inal P genera una se­
cuencia de declaraciones de la form a id : T. A ntes de considerar la prim era decla­
ración, d e sp la za m ie n to se pone en 0. C o n fo rm e aparece un nuevo nom bre, ese
nombre se introduce en la tabla de sím bolos con un desplazam iento igual al valor
en curso de desplazam iento, y desplazam iento aum enta en el ancho del objeto de
datos indicado por dicho nombre.
488 GENERACION DE C O D IG O IN TERM EDIO

El p r o c e d i m i e n t o introduce (nom bre, tip o , desplazam iento) c re a u n a e n t r a d a en


la ta b la d e s í m b o l o s p a r a nom bre, le d a el t i p o tip o y la d ir e c c ió n relativa desplaza­
m ien to e n su á r e a d e d a to s . S e u tiliz a n los a t r i b u t o s s in te tiz a d o s tipo y ancho p a r a el
n o te r m i n a l T p a r a in d ic a r el t i p o y a n c h o , o n ú m e r o d e u n i d a d e s d e m e m o r i a e m ­
p le a d a s p o r lo s o b je to s d e ese tipo . El a t r i b u t o tipo r e p r e s e n t a u n a e x p re s ió n d e tipos
c o n s t r u i d a a p a r t i r d e lo s tip o s b á s ic o s integer y real a p l i c a n d o los c o n s tr u c t o r e s de
tip o s pointer y array. c o m o e n la sección 6.1. Si las e x p re s io n e s d e t i p o s se re p r e s e n ­
t a n p o r m e d i o d e grafos, e n t o n c e s el a t r i b u t o tip o p u e d e s e r u n a p u n t a d o r a l n o d o
q u e re p re s e n ta u n a e x p re s ió n d e tipo.
E n la figura 8 . 1 1, lo s e n t e r o s ti e n e n u n a n c h o d e 4 y los reales ti e n e n u n a n c h o
d e 8. El a n c h o d e u n a m a t r i z se o b t i e n e m u l t i p l i c a n d o el a n c h o d e c a d a e l e m e n t o
p o r el n ú m e r o d e e l e m e n t o s e n la m a t r i z 2. Se s u p o n e q u e el a n c h o d e c a d a a p u n t a ­
d o r es 4. E n Pascal y C , se p u e d e e n c o n t r a r u n a p u n t a d o r a n t e s d e c o n o c e r el tipo
d e l o b j e t o a p u n t a d o p o r él (véase la e x p o s ic ió n d e tip o s re c u rs iv o s e n la Sec. 6.3).
La a s ig n a c ió n d e m e m o r i a p a r a d i c h o s t i p o s es m á s sencilla si t o d o s los a p u n t a d o r e s
tie n e n el m i s m o a n c h o .

) desplazam iento : = 0 }
D

D -> D ; D
D -* ¡ó : T { introduce (id. nombre, T.tipo. desplazamiento );
desplazam iento: = desplazam iento + T.ancho }

T -* integer { T .tip o :« integer,


T .a n c h o :- 4 ¡

T —►real { T.tipo := reai,


T. ancho : = 8 }

T - + array ( núm ) of T, T.tipo :■= array (núm. val, T\.tipó)\


T.ancho : = núm .valx T t.ancho }

T-tr, T.tipo pointer (Ty.tipo)\


T. a n c h o : = 4 )

Fig. 8.11. Cálculo de los tipos y direcciones relativas d e n o m b re s declarados.

L a inicialización d e desplazam iento e n el e s q u e m a d e tra d u c c ió n de la figura 8.11


e s m á s e v id e n te si la p r i m e r a p r o d u c c i ó n a p a r e c e e n u n a lín e a c o m o :

P - > ( d e sp la za m ie n to : = 0 } D (8.2)

S e p u e d e n u tiliz a r los n o t e r m i n a l e s q u e g e n e r e n c . l l a m a d o s n o t e r m i n a l e s m a r ­
c a d o r e s e n la secció n 5.6. p a r a reescrib ir p r o d u c c i o n e s d e m o d o q u e to d a s la s accio-

2 Para m a tric es c u y o lím ite in fe rio r n o se a 0 . s e s im p lific a e l c á lc u lo d e d ir e c c io n e s p a ra lo s e le m e n ­


to s d e la m a triz si e l d e s p la z a m ie n to in tr o d u c id o e n la ta b la d e s ím b o lo s se a ju sta, c o m o se v i o en
la sección 8.3.
8.2 DEC LARA CIO NES 489

n e s a p a r e z c a n e n los e x t r e m o s d e r e c h o s . C o n u n n o te r m i n a l m a r c a d o r Ai, (8 .2 ) se
p u e d e r e p la n te a r c o m o :

P-*MD
M -+ € { d e sp la za m ie n to : = 0 }

Registro de la información sobre el ámbito


E n u n le n g u a je c o n p r o c e d i m i e n t o s a n i d a d o s , se p u e d e n a s i g n a r d i r e c c i o n e s r e la ­
tiv a s a lo s n o m b r e s locales a c a d a p r o c e d i m i e n t o u t i l i z a n d o el e n f o q u e d e la sec­
c ió n 8 . 1 1. C u a n d o se e n c u e n t r e u n p r o c e d i m i e n t o a n i d a d o , se s u s p e n d e t e m p o r a l ­
m e n t e el p ro ceso d e las d e c l a r a c io n e s d e l p r o c e d i m i e n t o a b a r c a d o r . E s te e n f o q u e se
ilu strará a ñ a d i e n d o reglas s e m á n t i c a s al s ig u ie n te lenguaje.

^ ^ í8
n - * D ; D I id : T \ proc id ? D ; S v ’
N o se m u e s t r a n las p r o d u c c i o n e s p a r a los n o t e r m i n a l e s S , q u e c o r r e s p o n d e a las
p ro p o sic io n e s, y T. q u e c o r r e s p o n d e a los tipos, p o r q u e só lo se c o n s i d e r a n las d e c l a ­
raciones. El n o t e r m i n a l T tie n e los a t r i b u t o s s in te tiz a d o s tip o y ancho, c o m o e n el
e s q u e m a d e tr a d u c c i ó n d e la figura 8.11.
P a r a s im p lif ic a r , s u p ó n g a s e q u e h a y u n a t a b l a d e s í m b o l o s d i s t i n t a p a r a c a d a
p r o c e d i m i e n t o en el le n g u a je (8.3). U n a posible i m p l a n t a c i ó n d e u n a ta b la d e s í m ­
b o lo s es u n a lista e n l a z a d a d e e n t r a d a s c o r r e s p o n d i e n t e s a los n o m b r e s . Si se d e s e a
se p u e d e n u s a r i m p l a n t a c i o n e s m á s elab o rad as.

o rd en am ien to
n il | encabezamiento
a
X
le e m a triz a le e m a triz
in tercam b io a in tercam b io
c la sific a c ió n -
p o r_ p a rtic io n e s

encabezamiento encabezamiento 1 encabezamiento


k --------
v
p a rtic ió n

encabezamiento

F ig. 8 .1 2 . T ab las d e s ím b o lo s para p r o c e d im ie n to s an id ad os.


490 G E N E R A C IO N DE C O D IG O INTERM EDIO

C u a n d o se e n c u e n t r a u n a d e c la r a c ió n d e p r o c e d i m i e n t o / ) - » p ro c id D \\ S . se
crea u n a n u e v a ta b la d e s ím b o lo s , y se c r e a n la s e n t r a d a s p a r a las d e c la r a c io n e s d e n ­
t r o d e Di e n la n u e v a tabla. L a n u e v a ta b la a p u n t a d e v u e l t a a la ta b la d e s ím b o lo s
del p r o c e d i m i e n t o a b a r c a d o r : el n o m b r e r e p r e s e n t a d o p o r id m i s m o es local al p r o ­
c e d i m i e n t o a b a r c a d o r . El ú n i c o c a m b i o c o n r e s p e c to al t r a t a m i e n t o d e las d e c l a r a ­
c io n e s d e variables d e la figura 8.11 es q u e se in d ic a al p r o c e d i m i e n t o introduce en
q u é tabla d e s ím b o l o s d e b e realizar u n a e n tra d a .
P o r e je m p lo , e n la figura 8.12 se m u e s t r a n las ta b la s d e s ím b o l o s p a r a c i n c o p r o ­
c e d i m i e n t o s . L a e s t r u c t u r a d e a n i d a m i e n t o d e los p r o c e d i m i e n t o s se p u e d e d e d u ­
c i r d e los e n l a c e s e n t r e la s t a b l a s d e s ím b o l o s ; el p r o g r a m a es el d e la figura 7.22.
L as t a b l a s d e s í m b o l o s p a r a lo s p r o c e d i m i e n t o s l e e m a t r i z , i n t e r c a m b i o y
c l a s i f i c a c i ó n _ p o r - p a r t i c i o n e s a p u n t a n d e v u e l t a a la t a b l a c o r r e s p o n ­
d i e n t e al p r o c e d i m i e n t o c o n t e n e d o r o r d e n a m i e n t o , f o r m a d o p o r el p r o g r a m a
c o m p l e t o . C o m o p a r t i c i p a c i ó n e s tá d e c l a r a d o d e n t r o d e c l a s i f i c a -
c i ó n _ p o r - p a r t i c i o n e s , s u t a b l a a p u n t a a la d e c l a s i f i c a c i ó n -
p o r-p a rtic io n e s.
L as reglas s e m á n t ic a s e s tá n d e f in i d a s re s p e c to a las s ig u ie n te s o peraciones:
1. creatabla {previa) c re a u n a n u e v a ta b la d e s ím b o l o s y d e v u e l v e u n a p u n t a d o r a
la n u e v a tabla. El a r g u m e n t o previa a p u n t a a u n a ta b la d e s í m b o l o s c r e a d a p re ­
v i a m e n t e , se s u p o n e q u e la c o r r e s p o n d i e n t e al p r o c e d i m i e n t o a b a r c a d o r . El
a p u n t a d o r previa se co lo ca e n u n e n c a b e z a m i e n t o p a r a la n u e v a t a b l a d e s ím ­
bolos. j u n t o c o n in f o r m a c i ó n a d ic io n a l c o m o la p r o f u n d i d a d d e a n i d a m i e n t o de
un p ro c e d i m ie n t o . T a m b i é n se p u e d e n n u m e r a r los p r o c e d i m i e n t o s e n el o r d e n
en q u e se d e c la r a n y g u a r d a r d i c h o n ú m e r o e n el e n c a b e z a m i e n to .

2. introduce (tabla, nombre, tipo, desplazamiento ) c re a u n a n u e v a e n t r a d a c o rre s ­


p o n d i e n t e a nombre e n la ta b la d e s í m b o l o s a p u n t a d a p o r tabla. D e n u e v o , in­
troduce c o l o c a el t i p o tipo y la d ir e c c ió n re la tiv a desplazamiento e n c a m p o s
d e n t r o d e la e n tr a d a .

3. añadeancho (tabla, ancho) registra el a n c h o a c u m u l a d o d e t o d a s las e n t r a d a s de


tabla en el e n c a b e z a m i e n t o a s o c ia d o c o n esta ta b la d e sím bo los.
4. introduceproc (tabla, nombre, lablanueva) c re a u n a e n t r a d a n u e v a p a r a el p r o ­
c e d i m i e n t o nombre d e n t r o d e la ta b la d e s ím b o l o s a p u n t a d a p o r tabla. El a rg u ­
m e n t o lablanueva a p u n t a a la ta b la d e s í m b o l o s c o r r e s p o n d i e n t e a este p ro c e ­
d i m i e n t o nombre.

El e s q u e m a d e tr a d u c c i ó n d e la figura 8 . 13 m u e s t r a c ó m o se p u e d e n c o l o c a r los
d a t o s e n u n a p a s a d a , u t i liz a n d o la pila tblapn p a r a g u a r d a r a p u n t a d o r e s a las tablas
d e s í m b o l o s d e los p r o c e d i m i e n t o s a b a r c a d o r e s . C o n las ta b la s d e s í m b o l o s d e la
figura 8.13 , tblapn c o n t e n d r á a p u n t a d o r e s a las ta b la s c o r r e s p o n d ie n t e s a o r d e n a •
m i e n t o , c l a s i f i c a c i ó n _ p o r _ p a r t i c i o n e s y p a r t i c i ó n c u a n d o se c o n s id e ­
ren las d e c la r a c io n e s d e n t r o d e p a r t i c i ó n . El a p u n t a d o r a la ta b la d e s ím b o l o s en
c u r s o se e n c u e n t r a en el to p e . L a o tr a pila, desplazamiento . e s la g e n e ra liz a c ió n n a ­
tural a p r o c e d i m i e n t o s a n i d a d o s del a t r i b u t o desplazamiento d e la figura 8.11. El
e l e m e n t o del to p e d e desplazamiento es la siguiente dirección relativa d is p o n ib le para
u n n o m b r e local del p r o c e d i m i e n t o en cu rso .
8.2 D EC LARA CIO NES 491

T o d a s las a c c io n e s s e m á n t i c a s e n los s u b á r b o le s c o r r e s p o n d ie n t e s a tí y C e n

A -> B C { acción 4 }

se realizan a n t e s d e q u e o c u r r a acción* a l final d e la p r o d u c c i ó n . P o r t a n t o , la acció n


a s o c ia d a c o n el m a r c a d o r A/ a s ig n a c o m o v a lo r inicial a la pila iblapn u n a t a b l a de
s ím b o l o s p a r a el á m b i t o m á s e x t e r n o , c r e a d o p o r la o p e r a c i ó n creatabla(nil). L a a c ­
c ió n t a m b i é n i n t r o d u c e la d ire c c ió n re la tiv a 0 e n la pila desplazam iento. El n o t e r ­
m i n a l N d e s e m p e ñ a u n p ap el s im ila r c u a n d o a p a r e c e la d e c la r a c ió n d e u n p r o c e d i­
m i e n t o . S u a c c ió n utiliza la o p e r a c i ó n crealabla(tope(tblapn)) p a r a c r e a r u n a n u e v a
ta b la d e s ím b o lo s . A q u í, el a r g u m e n t o tope(tblapn) p r o p o r c i o n a el a lc a n c e a b a rc a -
d o r d e la n u e v a tabla. Se i n t r o d u c e u n a p u n t a d o r a la n u e v a ta b la p o r e n c i m a del
a p u n t a d o r c o r r e s p o n d ie n t e al á m b i t o a b a r c a d o r . D e n u e v o , se i n t r o d u c e 0 e n des­
plazam iento.
P a ra c a d a d e c la r a c ió n d e v aria b le id : T, se c re a u n a e n t r a d a p a r a id e n la tabla
d e s ím b o l o s e n cu rso . Esta d e c la r a c ió n n o m o d i f ic a la pila tblapn ; el t o p e d e la pila
desplazam iento se in c r e m e n t a e n T.ancho. C u a n d o se p r o d u z c a la a c c ió n del lado
d e r e c h o d e D - * proc i d ; A: D \, el a n c h o d e t o d a s la s d e c la r a c io n e s g e n e r a d a s p o r D ]
e s ta rá en el t o p e d e la pila desplazam iento', se registra u tiliz a n d o añadeancho. D es­
p u é s sa c a n las pilas tblapn y d esp la za m ien to . y se regresa p a r a e x a m i n a r las d ecla­
ra c io n e s e n el p r o c e d i m i e n t o a b a r c a d o r . L leg ad o s a este p u n t o , el n o m b r e del p r o ­
c e d i m i e n t o a b a r c a d o se i n t r o d u c e e n la t a b l a d e s í m b o l o s d e su p r o c e d i m i e n t o
a b a r c a d o r.

P -> M D { añadeancho (tope (tblapn),tope {desplazamiento))',


saca (tblapn)', saca (desplazamiento) )

A /-* € { i : = creatabla (niI);


m ete (l.tblapn)', m ete (0. desplazam iento )}

D -> /), ; I ) 2

D - » proc id ; N D x : S { / : = tope (tblapn)',


añadeancho (t. tope (desplazamiento))-,
saca (tblapn)', saca (desplazamiento)',
introduceproc (tope (tblapn), id. nombre, t) )

Z> —> id : 7' { introduce (tope (tblapn), id .nombre, T.tipo,


tope (desplazamiento)):
tope (desplazamiento) : = tope (desplazamiento +
T. ancho }

N -+ e { / : = creatabla (tope(tblapn)):
m e te d , tblapn ); m e te (0. desplazamiento) }

F ig. 8 .1 3 . P ro c eso d e d e c la r a c io n e s e n p r o c e d im ie n to s anid ad os.


492 G E N E R A C IO N DE C O D IG O IN T E R M E D IO

N o m b re s d e c a m p o s d e n tro de reg istro s

Las siguientes pro d ucciones perm iten que el no term inal T genere registros además
de tipos básicos, apuntadores y matrices:
T —* r e c o r d D e n d

Las acciones dentro del esquem a de traducción de la figura 8.14 ponen de relieve la
sim ilitu d entre la disposición de los registros com o una construcción de un lenguaje
y los registros de activación. C om o las definiciones de procedim ientos no afectan los
cálculos de los anchos de la figura 8.13, se pasa por alto el hecho de que la produc­
ción anterior tam bién perm ite que aparezcan d efiniciones de procedim ientos dentro
de los registros.

T - * record L D end { T.íipo : = record (lope (tblapn));


T.ancho := tope {desplazamiento);
saca (tblapn); saca (desplazamiento) }
L - * f. { / : = creatabla (nil);
m ete (/, tblapn); m ete (0, desplazamiento) }

F ig. 8 .1 4 . Creación de una tabla de sím bolos para nombres de campo en un registro.

Después de que aparezca la palabra clave r e c o r d , la acción asociada con el m ar­


cador L crea una nueva tabla de sím bolos para los nom bres de los cam pos. Se in tro ­
duce un apuntador en esta tabla de sím bolos en la p ila tblapn y la dirección relativa
0 se introduce en la p ila desplazam iento. L a acción correspondiente a D - » i d : T
de la figura 8. 13 introduce p o r tanto la in fo rm ació n sobre el nom bre del cam po id
en la tabla de sím bolos correspondiente al registro. Adem ás, el tope de la pila des­
p la za m ie n to contendrá el ancho de todos lo s objetos de datos dentro del registro
después que se hayan exam inado los cam pos. La acción que sigue a e n d en la figura
8.14 devuelve este ancho com o el atributo sintetizado T.ancho. E l tipo T .tipo se ob­
tiene aplicando el constructor record al apuntador a la tabla de sím bolos correspon­
diente a este registro. Este apuntador se u tiliza rá en la siguiente sección para recu­
perar los nom bres, tipos y anchos de los cam pos en el registro a p artir de T.tipo.

8.3 P R O P O S IC IO N E S D E A S IG N A C IO N

En esta sección las expresiones pueden ser de tipo entero, real, m atriz y registro.
C o m o parte de la trad u c c ió n de las asig n acio n es a có d ig o de tres d ire ccio n e s, se
muestra cóm o se pueden buscar los nom bres en la tabla de sím bolos y cóm o se puede
acceder a los elem entos de m atrices y registros.

L o s n o m b re s d e n tro d e la ta b la d e sím b o lo s

E n la sección 8.1, se form aron proposiciones de tres direcciones utilizan d o los nom ­
bres m ism os, entendiendo que los nom bres representaban apuntadores a sus entra­
das en la tabla de sím bolos. E l esquema de traducción de la figura 8.15 muestra cóm o
8 .3 P R O PO SIC IO N E S DE A S IG N A C IO N 493

se pueden encontrar d ich as entradas a la tabla de sím bolos. E l lexem a correspon­


diente al nom bre representad o p o r id viene dado p o r el atributo id .nom bre. L a ope­
ración busca(\á.nom bre) com prueba si existe una entrada para este caso del nom bre
en la tabla de sím bolos. Si así es, se devuelve u n apuntador a la entrada; en caso
contrario, busca devuelve n il para in d ica r que no se ha encontrado la entrada.
Las acciones sem ánticas de la figura 8.15 usan el procedim iento e m ite para em itir
proposiciones de tres direcciones a un archivo de salida, en vez de crear atributos có­
digo para los no term inales, com o en la figura 8.6. E n la sección 2.3, se puede hacer
la traducción em itiendo un arch ivo de salida si los atributos código de los no term i­
nales de los lados izquierdos de las producciones se form an concatenando los atribu­
tos código de los no term inales de la derecha, en el m ism o orden en que aparecen los
no term inales en el lado derecho, tal vez con algunas cadenas adicionales en medio.
R ein terp retan d o la o p eració n busca de la fig u ra 8. 15, se puede u tiliz a r el es­
quem a de trad ucció n aunque la regla del anidam iento más cercano se refiera a los
nom bres no locales, com o en Pascal. M ás concretam ente, supóngase que el contexto
en el que aparece una asignación viene dado p o r la siguiente gram ática.

P -> M I)
M —> €
D D ; D | id : T | p r o c ¡d ; N D ; S
N -> €

El no term inal P se convierte en el nuevo sím bolo in ic ia l cuando estas producciones


se añaden a las de la figura 8.15.
Para cada procedim iento generado p o r esta gram ática, el esquem a de traducción
de la figura 8. 13 establece una tabla de sím bolos aparte. C ad a una de estas tablas de

5 - > ¡d := E { p : = busca ( i d . nombre);


i f p # n il t h e n
em ite {p E.lugar)
e l s e error }

¿ T -> £ j + E 2 { E.lugar : = tempnuevo;


em ite (£ .lu g a r' := ' £ ,.lugar V E 2.lugar) )

E -» E { * E 2 { E. lugar := tempnuevo;
em ite (£ . lu g a r' := ' E ¡.lugar '* ' E 2.lugar) }

£ -» - £i { E. lugar : = tempnuevo;
em ite {E.lugar ’ := ' 'm enosu' E {.lugar) }

E -» ( E\ ) { E. lugar := £ ,. lugar }

£ - » id { p : = busca ( i d .nombre);
if p n il t h e n
£ . lugar : = p
e l s e error }

F ig. 8 .1 5 . Esquem a de traducción para producir códigos de tres direcciones para las
asignaciones.
494 G E N E R A C IO N D E C O D IG O INTERM EDIO

s ím b o l o s tie n e u n e n c a b e z a m i e n t o q u e c o n t i e n e u n a p u n t a d o r a la t a b l a c o r r e s p o n ­
d i e n t e al p r o c e d i m i e n t o a b a r c a d o r . (V é a s e Fig. 8.12 c o m o e je m p lo .) C u a n d o se está
e x a m i n a n d o la p r o p o s ic ió n q u e f o r m a el c u e r p o d e u n p r o c e d i m i e n t o , e n el t o p e de
la pila tblapn a p a r e c e u n a p u n t a d o r a la t a b l a d e s í m b o l o s d e l p r o c e d i m i e n t o . Este
a p u n t a d o r se i n t r o d u c e en la pila m e d i a n t e a c c io n e s a s o c ia d a s c o n el n o te r m i n a l
m a r c a d o r N e n el l a d o d e r e c h o d e D -* p ro c id ? N D \ ; S.
S e a n las p r o d u c c i o n e s p a r a el n o t e r m i n a l S las d e la figura 8.15. L os n o m b r e s
q u e a p a r e z c a n e n u n a a s ig n a c ió n g e n e r a d a p o r 5 d e b e n h a b e r s i d o d e c la r a d o s , ya
sea d e n t r o del p r o c e d i m i e n t o e n el q u e a p a r e c e 5 , o e n a l g ú n p r o c e d i m i e n t o a b a r ­
cad o r. C u a n d o se a p lic a a nom bre, la o p e r a c i ó n m o d i f ic a d a busca c o m p r u e b a p ri­
m e r o si n o m b re a p a r e c e e n la t a b l a d e s í m b o l o s e n c u r s o , a c c e s i b l e a t r a v é s d e
tope (tblapn). Si no, busca utiliza el a p u n t a d o r d e l e n c a b e z a d o d e la ta b la p a r a e n ­
c o n t r a r la ta b la d e s ím b o l o s c o r r e s p o n d i e n t e al p r o c e d i m i e n t o a b a r c a d o r y b u s c a r
a h í el n o m b r e . Si el n o m b r e n o se p u e d e e n c o n t r a r e n n i n g u n o d e e s to s á m b ito s ,
e n t o n c e s busca d e v u e l v e ni/.
P o r e j e m p lo , s u p ó n g a s e q u e la s ta b la s d e s ím b o l o s s o n c o m o e n la figura 8.12 y
q u e se e s tá e x a m i n a n d o u n a a s i g n a c i ó n e n el c u e r p o d e l p r o c e d i m i e n t o p a r t i ­
c i ó n . L a o p e r a c i ó n b u s c a d ) e n c o n t r a r á u n a e n t r a d a e n la t a b l a d e s í m b o l o s de
p a r t i c i ó n . C o m o v n o está e n esta ta b la d e sím bo los, b u s c a d ) utilizará el a p u n t a ­
d o r d e l e n c a b e z a d o d e esta tabla d e s ím b o l o s p a r a c o n t i n u a r la b ú s q u e d a e n la tabla
d e s ím b o lo s del p r o c e d i m ie n t o a b a r c a d o r c l a s i f i c a c i ó n _ p o r _ p a r t i c i o n e s .

R eu tilizació n d e los n o m b r e s te m p o r a le s

H a s ta a h o r a se h a s u p u e s t o q u e tem p n u evo g e n e r a u n n o m b r e t e m p o r a l n u e v o c a d a
vez q u e se n ecesita u n te m p o r a l . R e s u lt a e s p e c i a lm e n te útil e n c o m p i l a d o r e s opti-
m a d o r e s c r e a r u n n o m b r e d is ti n to c a d a vez q u e se ll a m e a tem p n u evo , c o m o ya se
v e rá e n el c a p i t u l o 10. Sin e m b a r g o , los t e m p o r a l e s u tiliz a d o s p a r a g u a r d a r valores
i n t e r m e d i o s e n los c á lcu lo s d e e x p r e s io n e s t i e n d e n a o b s t r u i r la t a b l a d e s ím b o lo s , y
h a y q u e a s ig n a r e s p a c i o p a r a g u a r d a r s u s valores.
L os n o m b r e s t e m p o r a l e s se p u e d e n re u tiliz a r m o d i f i c a n d o tem pnuevo. E n el si­
g u ie n te c a p í tu lo se e x p l o r a u n e n f o q u e a l t e r n a t i v o p a r a e m p a q u e t a r d is tin to s t e m ­
p o ra le s d e n t r o d e la m i s m a p o s ic ió n d u r a n t e la g e n e ra c ió n d e código.
L a m a y o r p a r t e d e los t e m p o r a l e s q u e in d i c a n d a t o s se g e n e r a d u r a n t e la t r a d u c ­
c ió n d ir ig id a p o r la s in ta x is d e las e x p re s io n e s , m e d i a n t e reglas c o m o las d e la figura
8 . 15. El c ó d ig o g e n e r a d o p o r las reglas p a r a E - > E { + E 2 t i e n e la f o r m a general:
evaluar E , en t ,
evaluar E 2 en t :
t := t | + t 2

S egún las reglas p a r a el a t r i b u t o s in te tiz a d o E. lugar se d e d u c e q u e t | y t 2 n o se u ti­


lizan en n i n g u n a o tr a p a rte d e l p r o g r a m a . L a s d u r a c i o n e s d e e s to s t e m p o r a l e s están
a n i d a d a s c o m o p ares c o r r e s p o n d i e n t e s d e p a r é n te s is e q u ilib r a d o s . D e h e c h o , las d u ­
r a c io n e s d e t o d o s los t e m p o r a l e s u tiliz ad o s p a r a la e v a l u a c ió n d e E 2 e s tá n c o n t e n i ­
d a s e n la d u r a c i ó n d e t | . P o r t a n t o , es p o s ib le m o d i f ic a r tem p nu evo p a r a q u e utilice,
c o m o si fu era u n a pila, u n a p e q u e ñ a m a t r i z e n u n á r e a d e d a t o s d e l p r o c e d i m i e n t o
p a r a g u a r d a r los te m p o rales.
8.3 PRO PO SICIO NES D E A SIG N A C IO N 495

S u p ó n g a s e p a r a sim p lific ar q u e só lo se e s tá n c o n s i d e r a n d o e n te ro s. Se lleva u n a


c u e n t a c, in icializada c o n cero. S i e m p r e q u e se utilice c o m o o p e r a n d o u n n o m b r e
te m p o r a l, h a y q u e d i s m i n u i r c e n 1. S i e m p r e q u e se g e n e r e u n n u e v o n o m b r e t e m ­
p oral, h a y q u e u tiliz a r $ c e i n c r e m e n t a r r e n 1. O b s é rv e s e q u e la “ p ila " d e t e m p o ­
rales n o se m e t e y se saca d u r a n t e la e je c u c ió n , a u n q u e el c o m p i l a d o r h a c e q u e los
a l m a c e n a m i e n t o s y carg as d e los v a lo re s t e m p o r a l e s o c u r r a n e n el “to p e " .

E je m p lo 8 .1 . C o n s id é r e s e la asig n ac ió n

x := a * b + c * d - e * f

En la figura 8.16 se m u e s t r a la s e c u e n c ia d e p r o p o s ic i o n e s d e tres d ir e c c io n e s q u e


g e n e r a r í a n la s reglas s e m á n t i c a s d e la figura 8 .1 5 si se m o d if ic a r a tem pnuevo. L a fi­
g u r a t a m b i é n c o n t i e n e u n a in d ic a c ió n d e l v a lo r “e n c u r s o " d e c d e s p u é s d e la gene­
r a c ió n d e c a d a p ro p o s ic ió n . O b s é rv e s e q u e c u a n d o se c a l c u la $ 0 - 5 1 , c se d i s m i n u y e
a ce ro , d e m o d o q u e $0 está d e n u e v o d is p o n ib le p a r a g u a r d a r el re s u lta d o . □

A los t e m p o r a l e s q u e se p u e d e n a s ig n a r y / o u tiliz a r m á s d e u n a vez. p o r e je m p lo ,


e n u n a p ro p o s ic ió n c o n d i c io n a l , n o se les p u e d e as ig n a r n o m b r e s d e la f o r m a “ p ri­
m e r o e n e n t r a r - p r i m e r o e n s a lir " d e s c r it a a n t e r i o r m e n t e . C o m o s u e le n s e r in f r e ­
c u e n te s , a to d o s estos v a lo re s t e m p o r a l e s se les p u e d e n a s ig n a r n o m b r e s p ro p io s . Se
p r o d u c e el m i s m o p r o b l e m a q u e el d e los t e m p o r a l e s q u e se d e f in e n o u tiliz a n m á s
d e u n a vez c u a n d o se realiza la o p t i m a c i ó n d e código, c o m o c o m b i n a r su b expresio-
n e s c o m u n e s o s a c a r u n cá lc u lo d e u n lazo (véase C a p . 10). U n a e s trateg ia r a z o n a b le
e s c r e a r u n n o m b r e n u e v o s ie m p r e q u e se c r e e u n a d e f in ic ió n a d i c io n a l o u s o de un
te m p o r a l o q u e se tr a s la d e s u cálculo.

P ro po sic ió n V a lo r d l c

0
$0 := a * b 1
$1 := c * d 2
$0 := $0 + $1 1
$1 := e * f 2
$0 := $0 - $1 1
x := $0 0

Fig. 8.16. Código de tres direcciones con valores tem porales g u ardados en u na pila.

A cceso a e l e m e n to s de m a tric e s

S e p u e d e a c c e d e r r á p i d a m e n t e a los e l e m e n t o s d e u n a m a t r i z si se g u a r d a n e n un
b lo q u e d e p o s ic io n e s co n s e c u tiv a s . Si el a n c h o d e c a d a e l e m e n t o d e la m a t r i z es a ,
e n t o n c e s el / - é s i m o e l e m e n t o d e la m a t r i z a c o m i e n z a e n la posición

b a se + (/ - i n f ) x a (8.4)

d o n d e i n f e s el lim ite in fe rio r d e los s u b ín d ic e s y base es la d ir e c c ió n relativ a d e la


496 G EN ERA CIO N DE CO DIGO IN TERM ED IO

p o sició n de m em o ria asignada a la m a triz. Es d ecir, b a se es la d ire c c ió n re la tiva de


A [ in f).
L a exp resió n (8 .4 ) se puede e va lu a r p arcialm en te d u ran te la co m p ila ció n si se
reescribe com o

i x a + (b a se - i n f x a)

L a subexpresión c = b a se - i n f x a se puede e va lu a r cu a n d o aparece la d eclaració n


de la m atriz. Se supone qu e c se guarda en la entrada de la tab la de sím b o lo s de A.
a sí qu e la d ire cció n re la tiva de a [j] se obtiene añ ad ien d o sim plem ente / x a a c.
Fam bién se puede a p lic a r el p re cá lcu lo d u ran te la co m p ila ció n a los cá lcu lo s de
d ireccio n es d e elem entos de m atrices de m u ltid im e n sio n ale s. U n a m a triz b id im en­
sio n a l se alm acena generalm ente en u n a de dos form as, bien en fo r m a f i l a (fila a fila
bien e n fo r m a d e c o lu m n a s (c o lu m n a a co lu m n a ). E n la fig ura 8. 1 7 se m uestra la
d isp o sició n de u n a m atriz A de 2 x 3 en (a ) form a p o r fila s y (b ) fo rm a p o r colum nas.
F O R T R A N u tiliz a la form a p o r co lu m n a s; P ascal u tiliz a la fo rm a p o r fila s, porque
A [ i , j i es eq uivalente a A ( i ] [ j ] , y lo s elem entos de cada m a triz A [ i ] se guardan
consecutivam ente.
E n el caso de un a m atriz b id im e n sio n a l alm acenada en fo rm a p o r filas, la d irec­
ció n re la tiva de A [ / ,, /2] se puede c a lc u la r m ediante la fó rm u la

b a se + ((/, - i n f ) x n 2 + i2 - in f,) x a

do nde i n f e i n f son lo s lím ite s in fe rio re s d e los valo res de /, e i2 y n 2 es el núm ero
de valores qu e puede to m a r i2. E s d ecir, si su p 2 es el lím ite su p e rio r para el v a lo r de
i2, entonces n 2 = su p 2 - i n f + 1. S u p o n ien d o qu e i, e i2 son los ú n ico s valores que
no se conocen durante la co m p ilació n , la expresión a n te rio r se puede reescrib ir com o

((t'i x n 2) + i2) x a + (b a se - ( { in f x n 2) + i n f ) x a) ( 8 .5 )

E l ú ltim o té rm in o de esta expresió n se puede d e te rm in a r d uran te la co m p ila ció n .


Se pueden a m p lia r las form as p o r filas y p o r co lu m n as a m u ch as dim ensiones.
L a g en eralizació n de la fo rm a p o r fila s es a lm ace n a r lo s elem entos de m anera que.
cu an d o se exam in a un b lo q u e de m em oria, lo s su b ín d ice s situado s en el extrem o

T A [ 1» 1 ] A[ 1 »1 ] T
P r im e ra c o lu m n a
Primera Illa A [ 1,2] A [2, 1 ]
A [1,3] A[ 1,2 ]

T A[2 , 1] A [2,2 ]
S eg u n d a c o lu m n a

Segunda fila A [2,2] ■ f


A [1,3]
T e rc e ra c o lu m n a
A [2,3 ] A [2,3 ]
i
J l

(a) P o r f il a s (b ) P o r colum nas

Fig. 8 .1 7. D istribuciones de una m atriz bidim ensional.


8.3 PRO PO SICIO NES DE A SIG N A C IO N 497

d e r e c h o v a ría n m á s r á p id a m e n te c o m o los n ú m e r o s e n u n ta x ím e tr o . L a e x p re sió n


(8.5) se a p lic a a la sig u ie n te e x p re s ió n p a r a la d ir e c c ió n re la tiv a d e A [ / , . i2> . . . . /*]

( ( . • . ((/i«2 + i2>«3 + h ) • . • ) nk + ik) x a (8.6)


+ base - ( ( . . . ({infph + inf2)r¡s + tnfy) . . . )nk + w/Í) x a

C o m o p a r a to d a j , n, = + 1 se s u p o n e fija, el té r m in o d e la s e g u n d a lín ea
d e ( 8.6) p u e d e s e r c a lc u la d o p o r el c o m p ila d o r g u a r d a d o c o n la e n t r a d a d e la ta b la
d e s ím b o lo s p a r a A3. L a f o r m a p o r c o l u m n a s se a p lic a a la d is p o s ic ió n c o n tr a r ia , son
los s u b ín d ic e s d e la iz q u ie r d a lo s q u e v a r ía n m á s rá p id a m e n te .
A lg u n o s le n g u a je s p e r m ite n q u e los t a m a ñ o s d e las m a tr ic e s se e s p e c ifiq u e n d i­
n á m ic a m e n te c u a n d o se lla m a a u n p r o c e d im ie n to d u r a n t e la eje c u c ió n . E n la sec­
c ió n 7 .3 se e s tu d ió la a s ig n a c ió n d e m e m o r ia p a r a d ic h a s m a tric e s e n u n a pila p a ra
la e je c u c ió n . L as f ó r m u la s p a r a a c c e d e r a lo s e l e m e n t o s d e e s ta s m a tr ic e s s o n las
m is m a s q u e p a r a las m a tric e s d e t a m a ñ o fijo, p e r o los lím ite s s u p e r io r e in fe rio r n o
se c o n o c e n e n el m o m e n t o d e la c o m p ila c ió n .
El p r o b le m a p r in c ip a l d e g e n e r a r c ó d ig o p a r a re fe re n c ia s d e m a tr ic e s es re la c io ­
n a r los c á lc u lo s d e ( 8.6) c o n u n a g r a m á tic a p a r a re fe re n c ia s d e m a tric e s . Se p u e d e n
p e r m itir las referen cias a m a tric e s e n las a s ig n a c io n e s si se a d m ite el n o te r m in a l L
c o n las sig u ie n te s p ro d u c c io n e s d o n d e id a p a re c e e n la fig u ra 8.15:

L - > id [ listaE | id
UstaE -> lisiaE , E E

P a ra q u e los lím ite s d e las d is tin ta s d im e n s io n e s n, d e la m a tr iz se e n c u e n tr e n dis­


p o n ib le s c u a n d o se a g r u p a n las e x p r e s io n e s d e ín d ic e s d e n t r o d e u n a UstaE, e s útil
reescrib ir las p ro d u c c io n e s d e la fo rm a:

L -> lista E } | id
listaE -> listaE , E | id [ E
E s d ecir, el n o m b r e d e la m a tr iz se a s o c ia a la e x p re s ió n d e ín d ic e s itu a d a m á s a la
iz q u ie rd a e n lu g a r d e u n ir s e a listaE c u a n d o se f o r m a u n a L. E sta s p ro d u c c io n e s
p e r m ite n q u e u n a p u n t a d o r a la e n t r a d a d e la ta b la d e s ím b o lo s c o r r e s p o n d ie n te al
n o m b r e d e la m a tr iz se p a se c o m o el a t r i b u t o s in te tiz a d o m atriz d e listaE \
T a m b i é n se u tiliz a listaE .ndim p a r a r e g is tr a r e l n ú m e r o d e d i m e n s i o n e s ( e x ­
p r e s io n e s d e ín d ic e ) e n la listaE. L a f u n c ió n lím ite (m atriz, j) d e v u e lv e n¡, el n ú ­
m e r o d e e l e m e n t o s d e la y'-ésima d i m e n s i ó n d e la m a tr iz c u y a e n t r a d a e n la ta b la
d e s ím b o lo s v ie n e a p u n t a d a p o r m atriz. P a r a fin a liz a r, listaE.lugar in d ic a el n o m ­
b re te m p o r a l q u e g u a r d a u n v a lo r c a l c u la d o s e g ú n las e x p r e s io n e s d e ín d ic e q u e
a p a r e c e n e n listaE.

' E n C . s e sim u la u n a m a triz m u ltid im e n s io n a l d e fin ie n d o m a tr ic e s c u y o s e le m e n t o s se a n m atrices.


P or e je m p lo , su p ó n g a se q u e x e s u n a m a tr iz d e m a tr ic e s d e e n te r o s. El len g u a je p e r m ite e n to n c e s
escrib ir ta n to x [ i ] c o m o x [ i ] l j ) . y l o s a n c h o s d e e sta s e x p r e s io n e s s o n d is tin to s. S in e m b a r g o , el
lim ite in fe r io r d e to d a s la s m a tr ic e s es 0 , a si q u e e l té r m in o d e la se g u n d a lin e a d e ( 8 .6 ) se lim ita a
b a s e e n c a d a c a so .
4 La tr a n sfo r m a c ió n e s sim ila r a la m e n c io n a d a al fin al d e la se c c ió n 5 .6 para e lim in a r a trib u to s
h ered a d o s. A q u i ta m b ié n s e p o d ría h ab er r e su e lto el p r o b le m a c o n a tr ib u to s h ered a d o s.
498 G E N E R A C IO N D E C O D IG O INTERM EDIO

U n a lisia E q u e p r o d u c e lo s p r i m e r o s m ín d i c e s d e r e f e r e n c ia a u n a m a tr iz
¿ - d im e n s io n a l A [/|. , /*] g e n e r a r á c ó d ig o d e tr e s d ire c c io n e s p a r a c a lc u la r

( . . . ((/,/i 2 + / 2VV3 + h ) . . • )nm + im (8.7)

u tiliz a n d o la re c u rre n c ia

* ' = '1 í8 8)
C«jj — Cm - | X /m

P o r ta n to , c u a n d o m = k . b a s ta c o n u n a m u ltip lic a c ió n p o r el a n c h o a p a r a c a lc u la r
el t é r m i n o d e la p r im e r a lín e a d e ( 8.6 ). O b s é rv e s e q u e a q u í , la s /, p u e d e n s e r re a l­
m e n te v alo res d e ex p resio n es, y el c ó d ig o p a r a e v a lu a r e s ta s e x p re s io n e s e s ta r á e n ­
tre m e z c la d o c o n el c ó d ig o p a r a c a lc u la r (8.7).
U n v alo r d e la d o iz q u ie r d o / te n d r á d o s a trib u to s . / . lugar e I.d esplazam iento. En
c a so d e q u e / s e a u n n o m b r e s im p le , I.lugar se rá u n a p u n t a d o r a la e n t r a d a d e la
ta b la d e s ím b o lo s p a r a d ic h o n o m b r e , e /.d esp la za m ien to se rá nuil, in d ic a n d o q u e
el v a lo r d e la d o iz q u ie r d o es u n n o m b r e s im p le e n lu g a r d e ser u n a referen cia a u n a
m a triz . El n o te rm in a l E tie n e la m is m a tr a d u c c ió n E.lugar, c o n el m is m o signifi­
c a d o q u e e n la fig u ra 8.15.

El esquema de traducción para acceder a elementos de matrices


S e a ñ a d ir á n a c c i o n e s s e m á n t i c a s a la g r a m á tic a :

(1) S - L: ~E
(2) £•-»£+£•
(3) E-+(E)
(4) E -* L
(5) L —» listaE ]
(6) id
(7) lista E -* lista E . E
(8) listaE -> id [ £
C o m o e n el c a so d e e x p re s io n e s s in re fe re n c ia s a m a tric e s , el m is m o c ó d ig o d e tres
d ir e c c io n e s e s p r o d u c i d o p o r el p r o c e d i m i e n t o e m ite in v o c a d o e n la s a c c io n e s s e ­
m á n tic a s.
S e g e n e r a u n a a s ig n a c ió n n o r m a l si L es u n n o m b r e s im p le ; e n c a so c o n tra rio ,
se g e n e ra u n a a s ig n a c ió n in d iz a d a d e n t r o d e la p o sic ió n in d ic a d a p o r L:

(1) := £ { í f L .d esp la za m ien to = n u il t h e n /* L e s u n id s im p le */


emite (L.lugar ' := ' E.lugar);
else
• e m ite (L .lu g a r '[ 'L .d e sp la za m ie n to ' ] ' = E .lu g a r ) }

El c ó d ig o p a r a las e x p re sio n e s a r itm é tic a s e s e x a c ta m e n te el m is m o q u e el d e la fi­


g u r a 8.15:

(2) E -* E , + E2 { E .lu g a r : = tem pnuevo\


e m ite { E . l u g a r = ' E y .lu g a r ' + ' E 2.lugar ) }
(3 ) £ ■ -» (£ ■ ,) { E.lugar: = E,.lugar)
8.3 PRO PO SICIO NES DE A SIG N A C IO N 499

C u a n d o u n a referen cia a m a tr iz L se r e d u c e a E . se d e s e a el v a lo r d e la d o d e r e c h o
d e L . P o r ta n to , se u tiliza la in d iz a c ió n p a r a o b te n e r el c o n t e n id o d e la localidad
L lagar [L.desplam iento]:

(4 ) £ -» L { if L .d esp la za m ien to = nuil then /* L es u n id s im p le */


E J u g a r : = L Ju g a r
e ls e begin
E J u g a r : = tem pnuevo;
e m ite ( E J u g a r = ' L Jugar'['L .desplazam iento'}')
end)

A c o n tin u a c ió n . L .d esp la za m ien to es u n te m p o r a l n u e v o q u e r e p re s e n ta el p r im e r


té r m in o d e (8.6); la f u n c ió n a n ch o (lista E .m a triz) d e v u e lv e a e n (8.6 ). L J u g a r r e p re ­
s e n ta el s e g u n d o té r m in o d e (8.6 ). q u e es d e v u e lto p o r la f u n c ió n c (listaE .m atriz).

(5 ) L -* lista [ £ ] { L J u g a r : = tem p n u evo ;


L .d e s p la z m ie n to : = tem p n u evo ;
e m ite ( L J u g a r = ' c (listaE.m atriz))-,
e m ite ( L .d e s p la z a m ie n to = ' lista E Jugar
ancho (lista E .m a triz ) ) }

U n d e s p la z a m ie n to n u lo in d ic a u n n o m b r e sim ple.

(6 ) L - > id { L Ju g a r := id Jugar,
L .d e s p la z a m ie n to : = nuil}

C u a n d o se o b s e r v a la s ig u ie n te e x p r e s ió n , se a p lic a la r e c u r r e n c ia (8.8 ). E n la si­


g u ie n te a c c ió n , lista E , Ju g a r c o r r e s p o n d e a <?w_, e n (8 .8 ) y listaE .lugar a em. O b s é r­
vese q u e si lista E y tie n e m - 1 c o m p o n e n te s , e n to n c e s lista E d e l la d o iz q u ie r d o d e
la p ro d u c c ió n tie n e m c o m p o n e n te s .

(7) lista E -* lista E i , E { / : = tem p n u evo ;


m : = listaE x.ndim + 1;
e m ite (t ' lista E \ J u g a r lim ite ( lis ta E m a tr iz , m))\
e m ite (t lugar);
listaE . m a tr iz : = lista E ,. m a triz ;
lista E J u g a r : = t;
listaE . n d im : = m }

E .lugar c o n tie n e el v a lo r d e la e x p re s ió n E c o m o el v a lo r d e (8 .7 ) p a r a m = 1.

(8) lista E —» id [ E { lista E .m a triz : = id Jugar;


lista E J u g a r : = E Jugar.
lista E .n d im : = 1 }

Ejemplo 8 .2 . S ea A u n a m a tr iz d e 1 0 x 2 0 c o n inf\ = inf2 = 1. P o r t a n t o . n t 10 y =


n 2 = 2 0 . S e a s u m e q u e a es 4. E n la fig u ra 8 .1 8 se m u e s tr a u n á rb o l d e a n álisis sin-
500 G E N E R A C IO N DE C O D IG O IN TERM EDIO

t á c t i c o c o n a n o t a c i o n e s p a r a la a s ig n a c i ó n x : = a [ y , z ] . L a a s ig n a c i ó n s e t r a d u c e a
la s ig u ie n t e s e c u e n c i a d e p r o p o s i c i o n e s d e t r e s d ir e c c i o n e s :

t, :* y * 20
t, := t | + z

t 2 := c / * c o n s ta n te c = baseK - 84 */
t 3 := 4 * t|
t 4 := t : [ t 3]
x : = t 4

P a r a c a d a v ariab le, se h a u tiliz a d o su n o m b r e e n lu g a r d e id lugar.

C o n v e r s io n e s d e t ip o s d e n tr o d e a s ig n a c io n e s

E n la p rá c tic a , h a y m u c h o s tip o s d ife re n te s d e v aria b les y c o n s ta n te s , asi q u e el c o m ­


p ila d o r d e b e r e c h a z a r a lg u n a s o p e r a c io n e s d e tip o s m i x to s o b ie n g e n e r a r las ins­
tr u c c io n e s d e c o e rc ió n (c o n v e rsió n d e tip o s) a p ro p ia d a s.

L. lugar X E. lugar = t4
L. desplazamiento nuil

I L. lugar = t2
x L.desplazam iento = t 3

listaE. lugar = t |
listaE.ndim = 2
listaE. m atriz = a

listaE. lugar = y E. lugar = z


listaE.ndim = I
listaE.m atriz = A L. lugar = z
L.desplazam iento - nuil
[ E. lugar = y
I
L. lugar = y
L.desplazam iento = nuil

F ig. 8 .1 8 . A r b o l d e a n á lis is s in t á c t ic o c o n a n o t a c io n e s p a r a x := A(y , z 1.

C o n s id é re s e la g r a m á tic a p a r a la s p ro p o s ic io n e s d e a s ig n a c ió n a n te r io r , p e r o su­
p ó n g a s e q u e h a y d o s t i p o s — re a l y e n t e r o , y lo s e n t e r o s se c o n v i e r t e n e n reales
c u a n d o sea n ecesario .
8 .3 PR O PO SIC IO N E S DE A S IG N A C IO N 501

/ luga/ : tempnuevo;
II E\,Upo integer and E2.tipo = then begin
em ite (E,lugar ': = ' E^.lugar '+ e n t' E 2.lugar)\
E.tipo := integer
end
nlm* If E|.//po = real and E 2.tipo = rea/ then begin
emite (E.lugar ': = ' E\.lugar ,+ r e a l/ E2.lugar)\
E.tipo := real
end
o h e if £ ,.//p 0 = integer a n d £ 2.//p o = real t h e n begin
//: = tempnuevo\
e m ite (w' : = ' ' e n t a r e a l ' lugar);
emite (E.lugar ' : = ' w ' + r e a l ' E 2.lugar)\
E.tipo := rea/
end
else if 2s,.//p0 = real and E 2.tipo = then begin
w : = tempnuevo;
em ite(u ' 'e n t a r e a l' E 2.lugar)\
emite (E.lugar ': = ' E {.lugar '+ r e a l' w);
E.tipo \= real
end
else
£.//po : = error f/po;

F ig . 8. 19. Acción semántica para £ - » £ , + E 2.

Se introduce otro atributo, £ .//> ;, cuyo valor es rea/ o integer. La regla semán­
tica para £.¿/po asociada con la producción £ - » £ , + E 2 es:
£ - » £ ,+ £2 {E .tip o : =
if£,.Z/p¿> = /«re^erand
E 2.lipo = integer th e n integer
else rea! }

Esta regla está presente en la sección 6.4; sin embargo, aquí y en todo este capítulo
se om iten las com probaciones de errores de tipo; en el capítulo 6 hay un análisis
sobre la com probación de tipos.
Se debe m odificar toda la regla semántica para £ - » £ + £ y la m ayor parte de
las otras producciones para generar, cuando sea necesario, proposiciones de tres
direcciones de la forma x := e n t a r e a l y cuyo efecto es convertir el entero y en
un real de igual valor, llam ado x. Tam bién se debe in c lu ir jun to con el código de
operador una indicación de si se piensa en aritm ética de punto fijo o flotante. En la
figura 8.19 se lista la acción sem ántica com pleta para una producción de la forma
E —> £ ¡ + E 2.
Por ejem plo, para la entrada

x := y + i * j
502 G E N E R A C IO N D E C O D IG O IN T E R M E D IO

s u p o n ie n d o q u e x e y tie n e n ti p o real y q u e i y j tie n e n tip o integer , la salid a sería


com o

t| := i in t* j
ti := e n t a r e a l t|

t: := y r e a l + t*

x := ti

L a a c c ió n s e m á n tic a d e la fig u ra 8 .1 9 u tiliz a d o s a trib u to s . E .lu g a r y E .tip o p a ra


el n o te rm in a l E. C o n f o r m e se in c r e m e n ta el n ú m e r o d e tip o s o b je to d e c o n v e rsió n ,
cre c e c u a d r á tic a m e n te el n ú m e r o d e c a s o s (o p e o r, si hay o p e r a d o r e s c o n m á s d e dos
a rg u m e n to s ). P o r ta n to , si h a y u n g ra n n ú m e r o d e tip o s, e s i m p o r ta n te la o rg a n iz a ­
c ió n c u id a d o s a d e las a c c io n e s se m á n tic a s.

Acceso a campos dentro de registros

El c o m p ila d o r d e b e r e g is tra r t a n t o lo s tip o s c o m o la s d ir e c c io n e s r e la tiv a s d e los


c a m p o s d e u n registro. U n a v e n ta ja d e c o n s e r v a r esta in f o r m a c ió n e n las e n tra d a s
d e la ta b la d e s ím b o lo s c o rr e s p o n d ie n te s a los n o m b r e s d e los c a m p o s e s q u e la r u ­
tin a p a r a b u s c a r n o m b r e s en la ta b la d e s ím b o lo s ta m b ié n p u e d e u tilizarse p a r a b u s ­
c a r n o m b r e s d e c a m p o s . T e n ie n d o en c u e n t a esto, c o n las a c c io n e s s e m á n tic a s d e la
figura 8 .1 4 d e la ú ltim a secció n , se c r e ó e n la fig u ra 8 .1 4 u n a ta b la d e s ím b o lo s d i­
fe re n te p a r a c a d a tip o . Si t es u n a p u n t a d o r a la ta b la d e s ím b o lo s p a r a u n ti p o re­
g is tro , e n t o n c e s el ti p o record(t) q u e se f o r m a a p l i c a n d o el c o n s t r u c t o r record al
a p u n t a d o r fue d e v u e lto c o m o T.tipo.
Se u tiliza la ex p resió n

p T .in fo + 1

p a r a ilu strar c ó m o se p u e d e e x tra e r u n a p u n t a d o r a la ta b la d e s ím b o lo s d e u n a tri­


b u t o E.tipo. S egú n las o p e ra c io n e s , en estas e x p re sio n e s se c o n c lu y e q u e p d e b e ser
u n a p u n t a d o r a u n registro c o n u n n o m b r e d e c a m p o i n f o c u y o ti p o e s a ritm é tic o .
Si los tip o s se c o n s tr u y e n c o m o e n las fig u ras 8 .1 3 y 8 .1 4 , el tip o d e p d e b e venir
d a d o p o r u n a e x p re sió n d e tip o

pointer {record(t))

El tip o d e p í es e n to n c e s record(t), del c u a l se p u e d e e x tra e r /. El n o m b r e d e c a m p o


i n f o se b u s c a en la ta b la d e s ím b o lo s a p u n t a d a p o r /.

8.4 E X P R E S I O N E S B O O L E A N A S

E n los le n g u a je s d e p r o g ra m a c ió n , las e x p re sio n e s b o o le a n a s tie n e n d o s p ro p ó s ito s


p rin cip ales. Se u tiliz an p a ra c a lc u la r v alo res lógicos, p e r o so b re t o d o c o m o e x p re sio ­
n e s c o n d ic io n a le s en p r o p o s ic io n e s q u e a l te r a n el flu jo d e l c o n tr o l, c o m o la s p r o ­
p o s ic io n e s if-then. ¡f-then-else o while-do.
8 .4 E X P R E S IO N E S BOOLEANAS 503

Las expresiones booleanas se com ponen de los operadores booleanos (a n d , o r y


n o t) aplicados a elementos que son variables booleanas o expresiones relaciónales."
A su vez, las expresiones relaciónales son de la form a £ j o p re l £ 2, donde £ j y E 2
son expresiones aritméticas. Algunos lenguajes, com o PL/1, permiten expresiones más
generales, donde se pueden ap licar operadores booleanos, aritm éticos y relaciónales
a expresiones de cualquier tipo, sin diferenciar valores booleanos de aritm éticos; si
es necesario se realiza una coerción. E n esta sección se consideran las expresiones
booleanas generad'as por la siguiente gramática:

E -» E or E |E and E not E | ( E ) | id o p re l id tru e false

Se u tiliz a el atributo op para d eterm inar cu ál de los operadores de com paración


<, <, = , > , o > está representado por o p re l. Com o de costum bre, se supone
que o r y a n d son asociativos por la izquierda y que o r tiene la precedencia menor,
después a n d y luego not.

M é t o d o s p a ra t r a d u c ir e x p re s io n e s booleanas

Hay dos métodos principales para representar los valores de una expresión boo-
leana^ E l prim er método consiste en codificar num éricam ente los valores tru e (ver­
dadero) y false (falso) y evaluar una expresión booleana igual que una expresión
aritm ética. A m enudo se utiliza 1 para in d icar tru e y O para in d icar false, aunque
son posibles m uchas otras codificaciones. Por ejem plo, se podría dejar que cualquier
cantidad distinta de cero in d icara t r u e y que cero in d icara fa ls e , o que cualqu ier
cantidad no negativa indicara tru e y cualquier núm ero negativo indicara false.
El segundo método para im plantar expresiones booleanas es m ediante flujo del
control, es decir, representando el valor de una expresión booleana mediante una
posición alcanzada en un programa. Este método es especialm ente adecuado para la
im plantación de expresiones booleanas en proposiciones de flujo de control, como
las proposiciones if -t h e n y w h i le -d o . Por ejem plo, dada la expresión £ j o r £ 2, si se
determ ina que E x es verdadera, entonces se puede co n clu ir que toda la expresión es
verdadera sin tener que evaluar E 2.
La sem ántica de los lenguajes de program ación determ ina si se deben evaluar
todas las partes de una expresión booleana. Si la d efin ició n del lenguaje permite
(o exige) que queden sin evaluar partes de una expresión booleana, entonces el com ­
pilador puede optim ar la evaluación de las expresiones booleanas calculando ún i­
camente lo necesario de una expresión com o para determ inar su valor. Por tanto,
en una expresión com o £ , o r £ 2, n i £ , ni £ 2 se evalúan necesariamente por com ­
pleto. Si £ | o E 2 es una expresión con efectos secundarios (p o r ejem plo, que co n ­
tiene una función que cam bia una variable global), entonces se puede obtener una
respuesta im prevista.
N inguno de los métodos anteriores es uniform em ente superior al otro. Por ejem ­
plo, el com pilador optim ador BLISS/11 (W u lf y colaboradores. 1975), entre otros,
elige el método apropiado para cada expresión individualm ente. Esta sección con­
sidera ambos métodos para la traducción de expresiones booleanas a código de tres
direcciones.
504 G E N E R A C IO N D E C O D IG O IN T E R M E D IO

R e p re se n ta c ió n n u m é ric a

P r i m e r o s e c o n s i d e r a r á la i m p l a n t a c i ó n d e e x p r e s i o n e s b o o l e a n a s u t i l i z a n d o 1 p a r a
i n d i c a r el v a l o r t r u e y 0 p a r a i n d i c a r f a l s e . L a s e x p r e s i o n e s s e e v a l u a r á n c o m p l e t a ­
m e n t e , d e i z q u i e r d a a d e r e c h a , d e m a n e r a s i m i l a r a la s e x p r e s i o n e s a r i t m é t i c a s . P o r
e j e m p l o , la t r a d u c c i ó n d e

a or b and not c

e s la s e c u e n c ia d e tre s d ire c c io n e s

t | := not c
t i := b and t|
t 3 := a or t 2

U n a e x p re s ió n re la c io n a l c o m o a < b e s e q u iv a le n te a la p ro p o s ic ió n c o n d ic io n a l
if a < b th e n 1 e lse 0 , q u e s e p u e d e t r a d u c i r a la s e c u e n c i a d e c ó d i g o d e t r e s
d ire c c io n e s (d e n u e v o , se c o m ie n z a n a r b itr a r ia m e n te a n u m e r a r la s p ro p o s ic io n e s
p o r e l 100):

100 if a < b goto 103


101 t := 0
102 goto 104
103 t := 1
104

E n la fig u ra 8 .2 0 s e m u e s tr a u n e s q u e m a d e tr a d u c c ió n p a r a p r o d u c ir c ó d ig o de
t r e s d i r e c c i o n e s p a r a la s e x p r e s i o n e s b o o l e a n a s . E n e s t e e s q u e m a , s e s u p o n e q u e e m ite

E -> £ j or # 2 { E .lu g a r : = te m p n u e v o \
e m ite ( E J u g a r ' z = £ , . lu g a r ' o r ' E 2Ju g a r) }

E - > E¡ a n d E 2 { E .lu g a r : = lem p n u evo ;


e m ite ( E J u g a r ' : = ' £ , . lu g a r 'and' E 2.lu g a r) }

£ -» n o t£ ] { E. lu g a r : = lem p n u evo ;
e m i t e ( E J u g a r ' : = ' ' n o t ' E \lu g a r ) )

£ - > ( £ , ) { E .lu g a r : = E x.lu g a r }

E —> id [ o p r e l ¡ d 2 { E .lu g a r : = le m p n u e v o ;
e m ite ( ' i f ' id i J u g a r o p r e l. op iá 2J u g a r ' g o t o ' s ig te p r o p + 3 );
e m ite ( E J u g a r ':= ' 0');
e m ite ( 'g o to ' s ig te p r o p + 2 ) ;
e m i t e ( E J u g a r ' i= ' i ' ) }

£ -» tru e { E .lu g a r : = le m p n u e v o ;
' e m ite ( E J u g a r ' : = ' ' 1' ) }

E - » f a ls e { E J u g a r : = le m p n u e v o ;
e m ite ( E J u g a r ' : = ' 'o ') }

F ig . 8 .2 0 . E s q u e m a d e tra d u c c ió n u tiliz a n d o u n a re p re se n ta c ió n n u m é ric a


p a r a lo s v a lo r e s b o o le a n o s .
8.4 EXPR ES IO N E S B O O LE A N A S 505

c o lo c a p ro p o s ic io n e s d e tres d ire c c io n e s e n u n a rc h iv o d e sa lid a e n el f o r m a to c o ­


rre c to , q u e sigleprop d a el ín d ic e d e la sig u ie n te p ro p o s ic ió n d e tres d ire c c io n e s en
la s e c u e n c ia d e salid a, y q u e e m ite i n c r e m e n ta sigteprop d e s p u é s d e p r o d u c ir c a d a
p ro p o s ic ió n d e tr e s d irec cio n es.

E je m p lo 8 .3 . El e s q u e m a d e la fig u ra 8 .2 0 g e n e ra ría el c ó d ig o d e tr e s d ire c c io n e s d e


la figura 8.21 p a r a la e x p re s ió n a < b o r c < d a n d e < f . □

C ó d ig o en co rto c ircu ito

T a m b ié n se p u e d e tr a d u c i r u n a e x p re s ió n b o o le a n a a c ó d ig o d e tr e s d ire c c io n e s sin
g e n e ra r c ó d ig o p a r a n i n g u n o d e los o p e r a d o r e s b o o le a n o s y sin q u e h a y a q u e e v a ­
lu a r n e c e s a ria m e n te la e x p re s ió n c o m p le ta . E ste e s tilo d e e v a lu a c ió n a veces se d e ­
n o m i n a c ó d ig o “e n co rto circu ito * ' o c ó d ig o “ s a lta d o " . S e p u e d e n e v a lu a r las e x p re ­
s io n e s b o o le a n a s s in g e n e r a r c ó d ig o p a r a los o p e r a d o r e s b o o le a n o s a n d . o r y not si
se r e p re s e n ta el v alo r d e u n a e x p re s ió n m e d ia n te u n a p o sic ió n en la s e c u e n c ia d e
cód ig o. P o r e je m p lo , e n la fig u ra 8 .2 1 , se p u e d e s a b e r q u é v a lo r te n d r á t ( p o r el he­
c h o d e si se a lc a n z a la p ro p o s ic ió n 101 o la 103. a s i q u e el v a lo r d e t , es r e d u n d a n te .
P a r a m u c h a s e x p re sio n e s b o o le a n a s , se p u e d e d e t e r m i n a r el v a lo r d e la e x p re s ió n sin
te n e r q u e e v a lu a rla c o m p le ta m e n te .

100 if a < b goto 103 107 t> := 1


101 t, := 0 108 i f e < f goto
102 g o t o 104 109 t3 := 0
103 t, := 1 110 goto 112
104 i f c < d goto 107 111 t3 := 1
105 t2 := 0 112 t4 := t 2 a n d t?
106 g o t o 108 113 1 5 := t, o r t4

Fig. 8 .2 1 . Traducción de a < b or c<d and e<f.

P ro p o sic io n e s d e flujo d e l co n tro l

A h o ra se c o n s id e ra la tr a d u c c ió n d e e x p re s io n e s b o o le a n a s d e n t r o del c ó d ig o d e tres
d ire c c io n e s e n el c o n te x to d e p ro p o s ic io n e s if-th e n . if-th e n -e lse y w h ile -d o c o m o las
g e n e r a d a s p o r la sig u ie n te g ra m á tic a :

5 if E th e n S \
if E th e n S¡ e ls e S 2
w h ile E d o S {

E n c a d a u n a d e estas p ro d u c c io n e s . E es la e x p re s ió n b o o le a n a q u e d e b e trad u c irse.


E n la tra d u c c ió n , se s u p o n e q u e u n a p ro p o s ic ió n d e tr e s d ire c c io n e s p u e d e e tiq u e ­
ta rse c o n s ím b o lo s y q u e la f u n c ió n eliqnueva d e v u e lv e u n a n u e v a e tiq u e ta s im b ó ­
lica c a d a vez q u e es lla m a d a .
C o n u n a e x p re s ió n b o o le a n a E se a s o c ia n d o s e tiq u e ta s: E.verdadera, la e tiq u e ta
a la q u e fiuye el c o n tr o l si E es v e rd a d e ra , y E .fa lsa , la e tiq u e ta a la q u e flu y e el
c o n tr o l si E e s falsa. L as reglas s e m á n tic a s p a r a tr a d u c ir u n a p ro p o s ic ió n S d e flujo
506 G E N E R A C IO N DE C O D IG O IN T E R M E D IO

d e c o n tro l p e r m ite n q u e el c o n tr o l fluya d e s d e la tr a d u c c ió n S.código a la in s tru c ­


c ió n d e tr e s d ir e c c io n e s s itu a d a i n m e d i a t a m e n t e d e s p u é s d e S.código. E n a lg u n o s
casos, la in s tru c c ió n i n m e d it a m e n t e d e s p u é s d e S.código es u n salto a u n a e tiq u e ta
L . Se e v ita u n salto a u n salto a L d e s d e d e n t r o d e S.código u tiliz a n d o e l a tr ib u to
h e r e d a d o S..siguiente. El v a lo r d e S .sig u ien te e s u n a e tiq u e ta q u e se a s o c ia a la p r i­
m e r a in s tr u c c ió n d e tr e s d ir e c c io n e s q u e se e je c u ta d e s p u é s d e l c ó d ig o c o r r e s p o n ­
d ie n te a S*. N o se m u e s tra la in icializac ió n d e S.siguiente.
A l tr a d u c ir la p ro p o s ic ió n if-th e n , S - > i f E th e n 5 , , se c r e a u n a n u e v a e tiq u e ta
E. verdadera y se aso cia a la p r im e r a in s tr u c c ió n d e tres d ire c c io n e s g e n e r a d a p a r a la
p ro p o s ic ió n c o m o e n la fig u ra 8.22 (a). E n la figura 8 .2 3 a p a re c e u n a d e fin ició n
d irig id a p o r la sintaxis. El c ó d ig o c o r r e s p o n d ie n te a E g e n e r a u n s a lto a E.verdadera
si E es v e rd a d e ra y u n salto a S..siguiente si E es falsa. P o r ta n to , se aso cia E ,falsa a
S. siguiente.

a E. verdadera
S. comienzo:
E. código a E.Jalsa

E.verdadera:
S i.có d ig o :

g o to S.comienzo
E, falsa:
(c) while-do

Fig. 8 .2 2 . C ódigo para las proposiciones if-then. if-th en -else y while-do.

Al tr a d u c ir la p ro p o s ic ió n if - t h e n - e ls e . S - * i f E th e n .S, e l s e S i, el c ó d ig o c o rre s ­
p o n d ie n te a la e x p re sió n b o o le a n a E s a lta a fu e ra d e él a la p r im e r a in s tru c c ió n del
c ó d ig o p a r a S i si E e s v e rd a d e ra , y a la p r im e r a in s tr u c c ió n del c ó d ig o p a r a S i si E
es falsa, c o m o se ilu stra en la fig u ra 8 .2 2 (b). C o m o la p ro p o s ic ió n if-th e n , u n atri-

> Si se implanta literalmente el enfoque de heredar una etiqueta S.siguierue puede conducir a una
proliferación de etiquetas. El método de relleno de retroceso de la sección 8.6 crea etiquetas sólo
cuando son necesarias.
8.4 EXPR ESIO N ES B O O LE A N A S 507

b u to h e r e d a d o S.sig u ien te p r o p o r c io n a la e tiq u e ta d e la in s tru c c ió n d e tres d ire c c io ­


n e s q u e d e b e e je c u ta r s e d e s p u é s d e e j e c u t a r el c ó d ig o d e S. A p a r e c e u n g o t o
S .sig u ie n te e x p líc ito d e s p u é s d e l c ó d ig o d e S u p e r o n o d e s p u é s d e S 2. S e d e j a d e ­
m o s tr a r al le c to r q u e . c o n estas reglas se m á n tic a s , si S .sig u ien te n o es la e tiq u e ta d e
la in s tru c c ió n q u e v a i n m e d it a m e n t e d e s p u é s d e S 2.código. e n to n c e s u n a p ro p o s i­
c ió n a b a r c a d o r a p r o p o r c io n a r á el s a lto a la e tiq u e ta S.siguiente d e s p u é s del c ó d ig o
c o r r e s p o n d ie n te a S 2.
El c ó d ig o p a r a 5" w hile E d o S , se f o r m a c o m o en la fig u ra 8.22(c). S e c re a y
se aso cia u n a n u e v a e tiq u e ta S .c o m ie n zo a la p r im e r a in s tr u c c ió n g e n e ra d a p o r E.
O tr a e tiq u e ta n u e v a . E. verdadera , se a s o c ia a la p r im e r a in s tru c c ió n d e S u El código
p a r a E g e n e ra u n salto a e s ta e tiq u e ta si E es v e rd a d e r a y u n salto a S .sig u ien te si E
es falsa; d e n u e v o , se ig u ala E ,falsa a S.siguiente. D e s p u é s del c ó d ig o p a r a 5 , s e c o ­
lo c a la in s tr u c c ió n g o t o S.com ienzo. q u e p r o d u c e u n salto d e v u elta al p r in c ip io del
código c o rre sp o n d ie n te a la ex p resió n b o o le a n a . O b sérvese q u e S {.siguiente se iguala
a esta e tiq u e ta S .co m ien zo , a s í q u e los sa lto s d e s d e d e n t r o d e S t.código p u e d e n ir
d ir e c ta m e n te a S.com ienzo.
E n la secció n 8 .6 se e s tu d ia m á s d e ta lla d a m e n te la tr a d u c c ió n d e p ro p o s ic io n e s
d e flu jo d e c o n tro l, d o n d e u n m é to d o a lte rn a tiv o , lla m a d o “ re lle n o d e retro ce so "
e m ite c ó d ig o p a r a d ic h a s p ro p o s ic io n e s e n u n a p a sa d a .

T ra d u c c io n e s a flu jo d e c o n tro l d e e x p r e s io n e s b o o lean as

A h o ra se e stu d ia E.código, el c ó d ig o p r o d u c id o p o r las e x p re sio n e s b o o le a n a s E en


la fig u ra 8 .2 3 . C o m o y a se h a in d ic a d o , E se tr a d u c e a u n a s e c u e n c ia d e p ro p o s ic io ­
n e s d e tres d ire c c io n e s q u e e v a lú a n E c o m o u n a s e c u e n c ia d e salto s c o n d ic io n a le s e
in c o n d ic io n a le s a u n a d e d o s p o sicio n es: E.verdadera. el lu g a r q u e d e b e a lc a n z a r el
flu jo d e l c o n tr o l si E es v e rd a d e ra , y E .falsa , el lu g a r q u e d e b e a lc a n z a r el c o n tr o l si
E es falsa.
L a id e a b a se d e la tr a d u c c ió n es la sig u ie n te . S u p ó n g a s e q u e E es d e la fo rm a
a < b . E n to n c e s el c ó d ig o g e n e r a d o e s d e la fo rm a

if a < b g o t o E.verdadera
goto E.falsa

S u p ó n g ase q u e E es d e la fo rm a E \ o r E 2. Si E , es v e rd a d e ra , e n to n c e s se sabe
in m e d ia ta m e n te q u e E m is m a es v e rd a d e ra , asi q u e E \.verdadera e s lo m is m o q u e
E.verdadera. Si £ | es falsa, e n to n c e s se d e b e e v a lu a r £ 2, así q u e se c o n v ie r te E ¡falsa
e n la e tiq u e ta d e la p r im e ra p ro p o s ic ió n e n el c ó d ig o d e £>. L as s a lid a s c o n v e rd a ­
d e r o y falso d e E 2 se p u e d e n ig u a la r a las s a lid a s c o n v e rd a d e ro y falso d e £ , resp ec­
tiv a m e n te .
Se a p lic a n c o n s id e ra c io n e s a n á lo g a s a la tr a d u c c ió n d e £ , a n d £ 2. N o se n ecesita
c ó d ig o p a r a u n a e x p re s ió n £ d e la f o r m a n o t £ , : só lo se in te r c a m b ia n las s a lid a s con
v e rd a d e ro y falso d e E | p a r a o b te n e r las s a lid a s c o n v e rd a d e r o y falso d e £ . E n la
figura 8 .2 4 se m u e s tr a u n a d e fin ic ió n d irig id a p o r la s in ta x is q u e g e n e ra c ó d ig o de
tres d ire c c io n e s p a r a e x p re sio n e s b o o le a n a s . O b sé rv e se q u e los a tr ib u to s verdadera
y fa ls a s o n h e re d a d o s.
508 G E N E R A C IO N D E C O D IG O IN T E R M E D IO

— ...... . ........
P r o d u c c ió n R e g l a s S e m á n t ic a s

5 - * ¡f E th en S\ E. verdadera := etiqnueva ;
E.falsa : = S. siguiente;
S }.siguiente : = S. siguiente:
S. código = E. código ||
gen ( E.verdadera V ) || S\.código

S i f E th en .Si e ls e S 2 E.verdad era := etiqnueva ;


E fa lsa := etiqnueva ;
S \. siguiente := S. siguiente
S>. siguiente := S. siguiente
S código := E. código 1
gen (E. verdadera V ) || S^código ||
gen ( 'g o t o ' S.siguiente) ||
gen { E fa ls a ' : ' ) 3 S 2.código

S w hile E d o .S| S.com ienzo : = etiqnueva:


E. verdadera : = etiqnueva:
E fa lsa : = S. siguiente:
S\.siguiente : = S.com ienzo ;
S. código : = gen (S .com ienzo 1: ') || E.código ||
gen (E. verdadera V ) || S\.código ||
gen ( 'g o t o ' S.comienzo)

F ig. 8.23. Definición dirigida p o r la sintaxis p a ra proposiciones d e fiujo


del control.

E je m p lo 8 . 4 . C o n s id é re s e d e n u e v o la e x p re sió n

a < b or c < d and e < f

S u p ó n g a se q u e las s a lid a s c o n v e rd a d e r o y falso p a r a la e x p re s ió n c o m p le ta se han


ig u a la d o a L v e r d a d e r o y L f a l s o . U tiliz a n d o e n to n c e s la d e fin ic ió n d e la figura
8 .2 4 se o b te n d r ía el sig u ie n te código:

if a < b goto Lverdadero


goto L1
Ll: if c < d goto L2
goto Lfalso
L2: if e í f goto Lverdadero
goto Lfalso

O b sérv ese q u e el c ó d ig o g e n e ra d o n o e s ó p tim o , e n el s e n tid o d e q u e la s e g u n d a


p ro p o sic ió n se p u e d e e lim in a r sin m o d if ic a r el v a lo r d e l c ó d ig o . L a s in s tru c c io n e s
r e d u n d a n te s d e esta fo rm a se p u e d e n p o r t a n t o e lim in a r c o n u n se n c illo o p ti m a d o r
local, c o m o se p u e d e v e r e n el c a p ítu lo 9. O t r o e n f o q u e q u e ev ita g e n e ra r esto s salto s
8.4 EXPR ES IO N E S B O O L E A N A S 509

.......... =
P r o d u c c ió n R e g l a s S e m á n t ic a s

E —* E\ or Ei E\.verdadera := E. verdadera ;
E x,falsa := el iqnueva-.
E i. verdadera := E. verdadera-.
E i fa lsa : = Efalsa'.
E. código : = Ey.código II
gen (Ey fa lsa V ) || E 2.código

E Ey and E 2 E |. verdadera : = el i qnueva:


Ey fa lsa : = E falsa:
E2. verdadera : = E. verdadera:
E i fa lsa : = E falsa:
E.código : — Ey.código ||
gen (Ey.verdadera V ) || Ei.código

E not E\ E ,. verdadera : = Efalsa:


E i fa lsa : = E. verdadera ;
E. código : = E j. código:

£ -> ( £. ) Ey.verdadera : = E verdadera:


E yfa lsa : = E falsa:
E. código : = E i. código:

E —> id i oprel id: E.código : = gen ( ' i f ' id| Jugar


oprel. o p idi.lugar ' g o t o ' E.verdadera ) ||
gen ( ' g o t o ' Efalsa)
E -+ truc E. código : = gen ( ' g o t o ' E.verdadera)
E - » falsa E.código : = gen ( ' g o t o ' E falsa)

Fig. 8 .2 4 . D efinición dirigida p o r la sintaxis para p ro d u c ir código de tres direcciones


p a ra expresiones booleanas.

r e d u n d a n te s e s tr a d u c ir u n a e x p re sió n re la c io n a l d e la f o r m a ¡ d ( < ¡ d 2 a la p r o p o ­
sición i f id i > i d 2 g o t o E fa ls o s u p o n ie n d o q u e c u a n d o la re la c ió n sea v e rd a d e ra
se e v ita el código.

E je m p lo 8 .5 . C o n s id é re s e la p ro p o s ic ió n

while a < b do
if c < d then
x := y + z
else
x := y - z

L a a n te r io r d e fin ic ió n d irig id a p o r la sin tax is, j u n t o c o n e s q u e m a s p a r a p ro p o s ic io ­


nes d e a s ig n a c ió n y e x p re s io n e s b o o le a n a s , p r o d u c ir ía el sig u ie n te código:
510 G E N E R A C I O N D E C O D I G O I N T E R íM E D IO

Ll: if a < b goto L 2


g o t o Lsiguiente
L2: if c < d goto L3
goto L4
L3: t| := y + z
x := t|
goto Ll
L4: t- 2 := y — z
x := t-2
goto Ll
Lsiguiente:

S e o b s e r v a q u e la s d o s p r im e r a s in s tr u c c io n e s g o t o se p u e d e n e l i m i n a r m o d if ic a n d o
la s d i r e c c i o n e s d e la s p r u e b a s . S e p u e d e r e a l i z a r e s t e t i p o d e t r a n s f o r m a c i ó n lo c a l
m e d i a n t e la o p t i m a c i ó n lo c a l q u e se e s tu d i a e n el c a p í t u l o 9 . □

E x p r e s i o n e s b o o le a n a s e n m o d o m ix t o

E s i m p o r t a n t e d a r s e c u e n t a d e q u e se h a s im p lif ic a d o la g r a m á tic a p a r a la s e x p r e s io ­
n e s b o o le a n a s . E n la p r á c tic a , la s e x p r e s io n e s b o o le a n a s a m e n u d o c o n t i e n e n su b e x -
p re sio n e s a ritm é tic a s c o m o e n ( a + b ) < c . E n le n g u a je s d o n d e el v a lo r d e v e rd a d

E .tip o : = aritm \
if E x.tipo = aritm and E 2.tipo = a ritm th en begin
/* s u m a a ritm é tic a n o rm a l */
E. lu g a r : = tem pnuevo;
E.código : = E[.código || E 2.código ||
gen (E .lu g a r'z= lugar V É 2.lugar)
end
e l s e if E \.tip o = aritm and E 2.lipo = bool th en begin
E .lugar : = tempnuevo;
E 2. verdadera : = etiq nueva;
E 2.falsa: = etiq nueva;
E.código : = E].código || E 2.código ||
gen (E 2.verdad era ' : ' E .lu g a r' : = ' E x.lugar + 1) ||
gen ('g o to ' sigleprop + 1) ||
gen (E 2.falsa V E .lu g a r ':= E ¡.lugar)
e ls e if . . .

F ig . 8 .2 5 . R e g l a s e m á n t i c a p a r a la p r o d u c c i ó n E - * E¡ + E 2.

f a l s o t i e n e e l v a l o r n u m é r i c o 0 y v e r d a d e r o t i e n e e l v a l o r 1, ( a < b ) + ( b < a ) s e p u e d e
c o n s i d e r a r u n a e x p r e s ió n a r i t m é t i c a , c o n v a l o r 0 si a y b ti e n e n el m i s m o v a lo r , y 1
e n c a so c o n tra rio .
8.5 P R O P O S IC IO N E S C A S E 511

Se puede u tiliza r el m étodo para representar expresiones booleanas m ediante el


salto de código, aunque las expresiones sean representadas p o r código para calcu la r
su valor. P o r ejem plo, considérese la gram ática representativa

E -> E + E \ E a n d E | E o p r e l E | id

Se puede suponer que E + E produce un resultado aritm ético entero (in c lu ir tipos
aritm éticos reales u otros co m p lica las cosas pero n o añade nada a l v a lo r in stru ctivo
de este ejem plo), en tanto qu e las expresiones E a n d E y E o p r e l E producen valores
booleanos representados m ediante flu jo de control. L a expresión E a n d E exige que
am bos argum entos sean booleanos, pero las operaciones + y o p r e l tom an cu alq u iera
de esos tipos de argum ento, in clu id o s los m ixtos. E -> id tam bién se considera a rit­
mético, aunque se pod ría a m p lia r este ejem plo perm itiendo identificadores boolea­
nos.
Para generar código en esta situación, se utiliza el atributo sintetizado E .tipo, que
será o a ritm o bool, dependiendo del tip o de E . E tendrá los atributos heredados
E.verdadera y E .falsa para expresiones booleanas y el atrib u to sintetizado E .lugar
para las expresiones aritm éticas. E n la fig u ra 8.25 se m uestra parte de la regla se­
m ántica para £ -> E j + E 2.
En el caso de m odo m ixto, se genera el código para £ j, después para E 2, seguido
de las tres proposiciones:
E 2.verdadera: E .lugar : = E \.lu g a r + i
g o t o sigleprop + 1
E 2.falsa: E. lugar : = E \ Jugar

L a prim era proposición ca lcu la el va lo r E \ + 1 para E cuan d o E 2 es verdadera; la


tercera, el va lo r £ , para E cuan d o E 2 es falsa. L a segunda pro po sició n es un salto
sobre la tercera. Las reglas sem ánticas para los casos restantes y las otras pro d u ccio ­
nes son m uy sim ilares, y se dejan co m o ejercicios.

8 .5 P R O P O S I C I O N E S C A S E

La pro p o sició n “ s w i t c h ” o “ c a s e " se encuentra d ispo n ib le en una variedad de len­


guajes; in clu so las proposiciones g o to calculadas y asignadas de F O R T R A N se pue­
den co n sid e ra r co m o v a ria cio n e s de la p ro p o sic ió n s w i t c h . E n la fig u ra 8.26 se
m uestra la sin taxis para nuestra p ro p o sició n s w i t c h .
sw itc h expresión
b e g in
case valor proposición
c a s e valor: proposición
• • •

case valor: proposición


d e fa u lt: proposición
end

F ig . 8 .2 6 . S i n t a x i s d e la p r o p o s i c i ó n s w itc h .
512 G E N E R A C IO N D E C O D IG O INTERM EDIO

H a y u n a e x p r e s ió n s e l e c c i o n a d o s , q u e d e b e e v a lu a r s e , s e g u id a d e n v a lo re s
c o n s ta n t e s q u e p u e d e t o m a r la e x p r e s ió n , i n c lu y e n d o ta l v ez u n “ v a lo r ” p o r o m i­
sió n , q u e s ie m p re c o n c u e r d a c o n la e x p re s ió n si n o lo h a c e n in g ú n o t r o v a lo r. La
tr a d u c c ió n d e s e a d a d e u n a p ro p o s ic ió n s w it c h es c ó d ig o para:

1. E v a lu a r la ex p resió n .

2. E n c o n tr a r q u é v a lo r d e la lista d e c aso s es el m is m o q u e el v a lo r d e la ex p resió n .


R e c u é r d e s e q u e el v a l o r p o r o m i s i ó n c o n c u e r d a c o n la e x p r e s ió n si n o c o n ­
c u e r d a n in g u n o d e los v a lo re s e x p líc ita m e n te m e n c io n a d o s e n lo s casos.

3. E je c u ta r la p ro p o s ic ió n a s o c ia d a c o n el v a lo r e n c o n tr a d o .

El p a so 2 es u n a ra m ific a c ió n d e n c a m in o s , q u e se p u e d e i m p l a n t a r d e v arias
fo rm a s. Si el n ú m e r o d e c aso s n o e s d e m a s i a d o e lev ad o , p o r e je m p lo u n o s d ie z a lo
s u m o , e n t o n c e s es r a z o n a b le u tiliz a r u n a s e c u e n c ia d e p r o p o s ic io n e s g o t o c o n d i ­
cio n ales, c a d a u n a d e las c u a le s c o m p r u e b a si h a y u n v a lo r in d iv id u a l y h a c e u n a
tra n s fe re n c ia al c ó d ig o c o rre s p o n d ie n te .
U n a f o r m a m á s c o m p a c t a d e a p lic a r esta s e c u e n c ia d e p ro p o s ic io n e s g o t o c o n ­
d ic io n a le s es c r e a r u n a ta b la d e p ares, d o n d e c a d a p a r c o n s te d e u n v a lo r y u n a e ti­
q u e t a p a r a el c ó d ig o d e la p ro p o s ic ió n c o r r e s p o n d ie n te . S e g e n e ra c ó d ig o p a r a co­
lo c ar al final d e esta ta b la el v alo r d e la e x p re sió n m ism a , e m p a re ja d a c o n la e tiq u e ta
c o r r e s p o n d ie n te a la p ro p o s ic ió n p o r o m is ió n . El c o m p ila d o r p u e d e g e n e ra r u n lazo
sim p le p a r a c o m p a r a r el v a lo r d e la e x p re s ió n c o n c a d a v a lo r d e la ta b la , a s e g u rá n ­
d o s e q u e si n o se e n c u e n t r a n in g u n a o t r a c o n c o r d a n c ia , e s seg u ro q u e c o n c u e r d a la
ú lt im a e n t r a d a (el v a lo r p o r o m isió n ).
Si el n ú m e r o d e v alo res e s s u p e r io r a d ie z m á s o m e n o s , re su lta m á s e fic ien te
c o n s tr u ir u n a ta b la d e d is p e rs ió n (véase Sec. 7.6 ) p a r a los v alo re s, y las e tiq u e ta s de
la s d is tin ta s p ro p o s ic io n e s s o n las e n tra d a s . Si n o se e n c u e n t r a n in g u n a e n t r a d a p a ra
el v a lo r p o s e íd o p o r la e x p re s ió n del s w itc h , se p u e d e g e n e ra r u n s a lto a la p ro p o s i­
c ió n p o r o m isió n .
H ay u n c a so esp ecial b a s ta n te c o m ú n en el q u e existe u n a im p la n ta c ió n in clu so
m á s e fic ien te d e la ra m ific a c ió n d e n c a m in o s . Si to d o s lo s v a lo re s e s tá n e n u n ra n g o
p e q u e ñ o , p o r e je m p lo d e /min a /má, y el n ú m e r o d e v alo res d is tin to s es u n a fracció n
ra z o n a b le d e / m¡u - /m.n* e n to n c e s se p u e d e c o n s tr u i r u n a m a triz d e e tiq u e ta s , c o n la
e tiq u e ta d e la p ro p o s ic ió n c o r r e s p o n d ie n te al v a lo r j e n la e n t r a d a d e la ta b la c o n
d e s p la z a m ie n to y - /mm y la e tiq u e ta p a r a el v a lo r p o r o m is ió n p a r a las e n tr a d a s q u e
n o te n g a n valor. P a r a re a liz a r la p ro p o s ic ió n sw itch , se e v a lú a la e x p re s ió n p a r a o b ­
te n e r el v alo r j . se c o m p r u e b a q u e esté d e n t r o d e l r a n g o imin a /max y se h a c e u n a
tra n s fe re n c ia in d ire c ta a la e n t r a d a d e la ta b la c o n el d e s p la z a m ie n to j - /mm. P o r
e je m p lo , si la e x p re sió n e s d e tip o c a rá c te r, se p u e d e c r e a r u n a ta b la d e 128 e n tra d a s
p o r e je m p lo ( d e p e n d ie n d o del c o n j u n t o d e c a ra c te re s ) y tra n s fe rirla sin c o m p r o b a r
el rang o .
8.5 PRO PO SICIO NES CASE 513

T raducción d irig id a p or la s i n t a x i s d e p r o p o s ic io n e s c a s e

C o n sid érese la sig u ie n te p ro p o s ic ió n sw itch.

s w it c h E
b egin
c a s e TV s,
c a s e J 2:
m• •
c a s e l'„-, s„
defau lt: s„
end

C o n u n e s q u e m a d e tr a d u c c ió n d irig id a p o r la sin tax is, es c o n v e n ie n te tr a d u c ir esta


p ro p o s ic ió n c a s e a u n c ó d ig o in te r m e d io q u e te n g a la f o r m a d e la fig u ra 8.27.
T o d a s las c o m p r o b a c io n e s a p a re c e n al final, así q u e u n g e n e r a d o r d e c ó d ig o s im ­
ple p u e d e re c o n o c e r la ra m ific a c ió n d e m ú ltip le s c a m in o s y g e n e ra r c ó d ig o eficien te
p a r a ella, u tiliz a n d o la im p la n ta c ió n m á s a p r o p ia d a p r o p u e s ta al c o m ie n z o d e esta
secció n . Si se g e n e ra la s e c u e n c ia m á s d ir e c ta q u e se m u e s tra e n la fig u ra 8 .2 8 , el
c o m p ila d o r te n d ría q u e h a c e r u n a n á lis is e x te n siv o p a r a e n c o n t r a r la im p la n ta c ió n
m á s eficien te. O b sérv ese q u e n o es c o n v e n ie n te c o lo c a r las p ro p o s ic io n e s d e r a m i­
ficació n al p rin c ip io , p o r q u e el c o m p ila d o r n o p o d r ía e n to n c e s e m i t i r c ó d ig o p a ra
c a d a u n a d e las S, c o n f o r m e las f u e ra e n c o n tr a n d o .
P a r a t r a d u c i r a la f o r m a d e la f ig u r a 8 .2 7 , se g e n e r a n d o s e t i q u e t a s n u e v a s ,
p r u e b a y s i g u i e n t e , y u n te m p o r a l n u e v o , t , c u a n d o se o b s e rv a la p a la b ra clave
sw itch. D e sp u é s, c o n f o r m e se re a liz a el a n álisis s in tá c tic o d e la e x p re sió n E, se ge­
n e r a c ó d ig o p a r a e v a lu a r E e n t . D e s p u é s d e p r o c e s a r E , se g e n e ra el s a lto g o t o
p ru eb a.

código para ev alu ar E en t


g o to p ru eb a
L |j código para S,
g o to s i g u i e n t e
L2: código p a ra S 2
g o to s ig u ie n te
• • •

L n_ , : c ó d ig o p ara
g o to s ig u ie n te
L „: código para S„
g o to s ig u ie n te
p ru eb a: i f t = Vx g o t o L,
i f t = V] g o t o L2
• • •

i f t = Vn-i g o t o L„_,
g o t o L„
s ig u ie n te :

F ig. 8 .2 7 . T ra d u cció n d e u n a prop osición case.


514 G E N E R A C IO N DE C O D IG O IN T E R M E D IO

có d ig o p a ra e v a lu a r E e n t
if t V¡ g o t o L,
có d ig o p a ra S,
g o to s ig u ie n te
L |* if t ^ L2 g o t o L2
có d ig o p a ra S 2
g o to s ig u ie n te

L2: • • •

L ji- 2- if t * Vn.¡ g o t o L n_|


c ó d ig o p a ra
g o to s ig u ie n te
L n- t ! c ó d i g o p a r a S„
s ig u ie n te :

F ig . 8 . 2 8 . O tr a tr a d u c c ió n d e u n a p ro p o s ic ió n case.

D e sp u é s, c u a n d o a p a re z c a c a d a p a la b ra c la v e case, se c re a u n a n u e v a e tiq u e ta l
v s e i n t r o d u c e e n la t a b l a d e s í m b o l o s . E n u n a p i l a e s p e c i a l p a r a a l m a c e n a r l o s c a s o s
s e c o l o c a u n a p u n t a d o r a e s t a e n t r a d a d e l a t a b l a d e s í m b o l o s y e l v a l o r V, d e la
c o n s t a n t e d e l c a s o . ( S i e s t a p r o p o s i c i ó n s w itc h f o r m a p a r t e d e u n a d e l a s p r o p o s i c i o ­
n e s i n t e r n a s a o t r a j > r o p q s i c i ó n s w itc h , s e c o l o c a u n m a r c a d o r e n l a p i l a p a r a s e p a r a r
l o s c a s o s d e l s w itc h i n t e r i o r d e l o s d e s w itc h e x t e r i o r . )
C a d a p r o p o s i c i ó n c a s e V¡: S , s e p r o c e s a e m i t i e n d o l a e t i q u e t a r e c i é n c r e a d a L.
s e g u i d a d e l c ó d i g o p a r a S ¡, s e g u i d o d e l s a l t o g o t o s i g u i e n t e . L u e g o , c u a n d o se
e n c u e n t r e l a p a l a b r a c l a v e end q u e f i n a l i z a e l c u e r p o d e l a p r o p o s i c i ó n s w itc h , s e
e stá e n c o n d ic io n e s d e g e n e r a r e l c ó d ig o p a r a la r a m if ic a c ió n d e n c a m in o s . L e y e n d o
lo s p a r e s a p u n t a d o r - v a lo r e n la p ila d e c a s o s d e a b a jo a a n i b a , se p u e d e g e n e r a r u n a
s e c u e n c ia d e p r o p o s ic io n e s d e tre s d ir e c c io n e s d e la f o r m a

c a s o V¡ L |
c a s o V2 L2

• • •

caso VnA L„_,


c a s o t L„
e tiq u e ta s ig u ie n te

d o n d e t e s el n o m b r e q u e c o n t i e n e e l v a l o r d e l a e x p r e s i ó n s e l e c c i o n a d o r a E y L „ e s
la e t i q u e t a p a r a l a p r o p o s i c i ó n p o r o m i s i ó n . L a p r o p o s i c i ó n d e t r e s d i r e c c i o n e s c a s o
V¡ L i e s u n s i n ó n i m o d e i f t = V¡ g o t o L , d e l a f i g u r a 8 . 2 7 , p e r o e s m á s f á c il q u e el
g e n e r a d o r d e c ó d ig o fin a l d e te c te c a s o c o m o c a n d i d a to a s e r tr a ta d o d e f o r m a es­
p e c ia l. E n la fase d e g e n e r a c ió n d e c ó d ig o , e s ta s s e c u e n c ia s d e p r o p o s ic io n e s c a s o
se p u e d e n tr a d u c ir a u n a ra m ific a c ió n d e n c a m in o s d e l tip o m á s e fic ie n te , d e p e n ­
d ie n d o d e c u á n t a s h a y a y d e si lo s v a lo re s p e r te n e c e n a u n ra n g o p e q u e ñ o .
8 .6 RELLENO DE RETROCESO 515

H6 R E L L E N O D E R E T R O C E S O

I ,i lorm a más fácil de im plantar las definiciones dirigidas por la sintaxis de la sec-
<ion 8.4 es utilizar dos pasadas. Prim ero se construye un árbol sintáctico para la en-
n.uta y después se recorre el árbol en profundidad, realizando las traducciones dadas
n i la definición. El problem a principal en la generación de código para las expresio­
nes booleanas y las proposiciones de flu jo del control en una sola pasada es que du-
mnte una sola pasada es posible que no se conozcan las etiquetas a las que debe ir
el control en el m om ento en que se generan las proposiciones de salto. Se puede
evitar este problem as generando una serie de proposiciones de ram ificación sin es­
pecificar temporalmente los destinos de los saltos. Cada una de dichas proposiciones
se colocará en una lista de proposiciones g o to cuyas etiquetas se rellenarán cuando
se pueda determ inar la etiqueta adecuada. Este relleno posterior de etiquetas se de­
nomina relleno de retroceso.
En esta sección se muestra cóm o se puede utilizar el relleno de retroceso para
genera código para las expresiones booleanas y las proposiciones de flujo del control
en una pasada. Las traducciones que se generan serán de la m ism a form a que las de
la sección 8.4, exepeto en la m anera en que se generan las etiquetas. Para una mayor
concreción, se generan cuádruplos en una m atriz cuádruplo. Las etiquetas serán ín ­
dices en esta m atriz. Para m anipular listas de etiquetas, se utilizan tres funciones:
1. crealista (i) crea una lista nueva que contiene sólo /, un índice para la m atriz de
cuádruplos; crealista devuelve un apuntador a la lista que ha elaborado.
2. fusiona ( p y>p 2\ concatena las listas apuntadas por p y y pi> y devuelve un apun­
tador a la lista concatenada.
3. completa (p, i) inserta i com o la etiqueta objeto de cada una de las proposicio­
nes de la lista apuntada por p.

E x p r e sio n e s b oolean as

A hora se construye un equem a de traducción adecuado para producir cuádruplos


para las expresiones booleanas durante el análisis sintáctico ascendente. Se insería
un no term inal m arcado M en la gram ática para hacer que una acción semántica
recoja, en los m om entos apropiados, el índice del siguiente cuádruplo por generar.
La gram ática que se utiliza es la siguiente:

(1 ) E - * E , or M E 2
(2) E \ and M E
(3) not E \
(4) ( Ex )
(5 ) id i oprel id 2
(6) true
(7) false
(8) M - -» €

Los atributos sintetizados listaverdad y listafalso del no term inal E se utilizan para
generar código de salto para las expresiones booleanas. C uando se genera el código
516 G ENERA CIO N DE C O D IG O INTERM EDIO

p a ra E. los sa lto s a las s a lid a s c o n v e rd a d e r o y falso se d e ja n in c o m p le to s , s in relle­


n a r el c a m p o d e e tiq u e ta . E sto s salto s in c o m p le to s se c o lo c a n e n listas a p u n ta d a s
p o r E Jistaverdad y E .listafalso , d e m a n e r a a p r o p ia d a .
L as a c c io n e s s e m á n t ic a s re fle ja n la s c o n d ic io n e s m e n c io n a d a s a n t e r io r m e n t e .
C o n s id é re s e la p ro d u c c ió n E —> E \ an d M E 2. Si £ , es falsa, e n to n c e s E ta m b ié n es
falsa, d e m o d o q u e la s p r o p o s ic i o n e s d e E \.lis ta fa ls o se c o n v i e r t e n e n p a r t e d e
E.listafalso. S in e m b a r g o , si E \ es v e rd a d e r a se d e b e c o m p r o b a r a c o n tin u a c ió n E j ,
asi q u e el d e s tin o d e las p ro p o s ic io n e s E yJista verd a d d e b e s e r el c o m ie n z o d e l c ó ­
d ig o g e n e r a d o p o r E 2. E ste d e s tin o se o b tie n e u tiliz a n d o el n o te rm in a l m a r c a d o r M .
El a tr ib u to M .cu a d reg istra el n ú m e r o d e la p r im e r a p ro p o s ic ió n d e E 2.código . A la
p ro d u c c ió n M - * e se aso cia la a c c ió n s e m á n tic a

{ M. c ita d : = sig te c u a d }

L a v ariable sigtecuad c o n tie n e el ín d ic e d e l sig u ie n te c u á d r u p l o p o r seguir. E ste va­


lor se rá el re lle n o c o n re tro c e so e n la lista E J ista verd a d c u a n d o h a y a a p a r e c id o el
re s to d e la p ro d u c c ió n E - * £ j an d M E 2. El e s q u e m a d e tr a d u c c ió n e s c o m o sigue.

(1) E - * Ei o r M E 2 { com pleta ( E \Jistq fa lso . M .cu a d );


E J is ta v e rd a d : = fu sio n a (E \Jistaverdad,
E 2./istaverdad)\
E dista fa ls o : = E 2J is ta fa ls o }

(2 ) E —* E i and M E 2 { com pleta ( E y.listaverdad.M .cuad)\


E Jista verd a d : = E 2Jista verd a d ;
E .lista fa lso : - fusiona ( E xJistafalso.
E i.listafalso ) }

(3) £ -» n o t£ | { E J is ta v e r d a d : = E x.listafalso\
E. list a falso : = E x. list a v e r d a d }

(4) E -M E .) { E J ista verd a d : = E yJistaverdad\


E .listafalso : = £ j d ista fa ls o }

(5 ) E —* id , o p r e l id» j E J ista v e rd a d : = crea/isla (sigtecuad );


E .lista fa lso : = crealista ( sigtecuad+ 1):
e m ite ( ' i f ' i d ( Ju g a r o p r e l.o p
id 2 Ju g a r ' g o t o - ' ) ;
em ite ( ' g o t o - ' ) }

(6 ) E true { E Jista verd a d : = crealista (sigtecuad)-,


e m ite ( ' g o t o - ' ) }

(7) £ —> fa ls e { E .listaja!so : = crealista ( sigtecuad );


e m ite ( ' g o t o - ' ) (

(8) M -* c { M .c u a d : = s ig te c u a d }
8.6 RELLENO DE RETROCESO 517

P a r a sim p lific a r, la a c c ió n s e m á n tic a (5) g e n e ra d o s p ro p o sic io n e s, u n g o t o c o n d i ­


c io n a l y u n o in c o n d ic io n a l. N in g u n o tie n e su d e s tin o c o m p le to . El ín d ic e d e la p r i­
m e ra p ro p o s ic ió n g e n e ra d a se co lo ca e n u n a lista, y a E .U staverdad se le d a u n a p u n ­
t a d o r a esta lista. L a s e g u n d a p ro p o s ic ió n g e n e ra d a g o t o ta m b ié n se c o lo c a e n u n a
lista y se le d a a E.listafalso.

E je m p lo 8 .6 . C o n s id é re s e d e n u e v o la e x p re sió n a < b o r c < d a n d e < f . E n la


fig u ra 8 .2 9 se m u e s tr a u n á rb o l d e a n á lis is s in tá c tic o c o n a n o ta c io n e s . L as a c c io n e s
se re a liz a n d u r a n t e u n r e c o r r id o en p r o f u n d id a d del á rb o l. C o m o to d a s las a c c io n e s
a p a re c e n al final d e los la d o s d e re c h o s, se p u e d e n e je c u ta r c o n las re d u c c io n e s d u ­
r a n te u n a n álisis s in tá c tic o a s c e n d e n te . E n re s p u e s ta a la re d u c c ió n d e a < b a E p o r
la p ro d u c c ió n (5), se g e n e r a n los d o s c u á d r u p lo s

100: i f a < b g o to _
101: g o to _

(D e n u e v o se c o m ie n z a n a n u m e r a r a r b itr a r ia m e n te las p ro p o s ic io n e s c o n 100.) El


n o te rm in a l m a r c a d o r M e n las p ro d u c c io n e s E —> E \ o r M E2 reg istra el v a lo r d e
sigíecuad , q u e en ese m o m e n t o es 102. L a re d u c c ió n d e c < d a /: p o r la p ro d u c c ió n
(5) g en era los c u á d r u p lo s

102: i f c < d g o to _
103: g o to _

A h o ra se h a v isto E i e n la p ro d u c c ió n E E y a n d \ f E 2. El m a r c a d o r n o te rm in a l
en esta p ro d u c c ió n registra el v a lo r e n c u r s o d e sigíecuad , q u e a h o r a e s 104. R e d u ­
c ie n d o e < f a E p o r la p ro d u c c ió n (5 ) se g en era

104: i f e < f g o to _
105: g o to _

E.v = {100. 104}


E .f = {103, 105}
^ \
or Me = 102
E.v = {100} 1 E.v =
E . f = (101) € E f =
/ l \
a < b and M.
(102) E .v = {104}
(103) E .f = (105)

\ / l \
d

F ig. 8 .2 9 . A rbol d e an álisis sin tá c tic o c o n a n o ta c io n e s para a < b or c<d and e< f.
518 G EN ER A C IO N DE C O D IG O IN TERM EDIO

A h o r a se r e d u c e p o r E - » £ j an d M E 2. L a a c c i ó n s e m á n t i c a c o r r e s p o n d ie n te
lla m a a completa({ 102}, 104). d o n d e {102} c o m o a r g u m e n t o in d ic a u n a p u n t a d o r a la
lista q u e c o n t i e n e só lo a 102, s ie n d o e s a la lista a p u n t a d a p o r E \.lista verd a d . E s­
ta lla m a d a a com pleta p o n e 104 e n la p ro p o s ic ió n 102. P o r ta n to , las seis p ro p o si-
d o n e s g e n e r a d a s h a s ta este m o m e n t o son:

100 if a < b g o to _
101 g o to _
102 if c < d g o t o 10 4
103 g o to _
104 if e < f g o to _
105 g o to _

L a a c c ió n s e m á n tic a a s o c ia d a c o n la re c u c c ió n final p o r E —> E \ o r X i E 2 lla m a


a com pleta ({101}, 102) q u e d e ja a las p ro p o s ic io n e s c o m o :

100 if a < b g o to -
101 1 02
•p
*■

&
0
0

102 i f c < d g o t o 10 4
103 g o to —

104 i f e < f g o to _
105 g o to

T o d a la e x p re s ió n es v e rd a d e r a si, y só lo si, se a lc a n z a n los g o t o d e las p ro p o s i­


c io n e s 100 ó 104, y es falsa si, y só lo si, se a lc a n z a n los g o t o d e las p ro p o s ic io n e s
103 ó 105. E stas in s tru c c io n e s te n d r á n s u s c a m p o s o b je to llen o s m á s a d e la n te e n la
c o m p ila c ió n , c u a n d o se h a y a v isto lo q u e se d e b e h a c e r según sea la e x p re s ió n ver­
d a d e r a o falsa.

P r o p o s ic io n e s d e flu jo d e l con trol

A h o r a se m u e s tr a c ó m o se p u e d e u tiliz a r el re lle n o d e re tro c e so p a r a tr a d u c ir p ro ­


p o sicio n es d e flu jo d e l c o n tro l e n u n a p a s a d a . C o m o a n te s , la a te n c ió n se c o n c e n tr a
e n la g e n e ra c ió n d e c u a d r u p lo s , y la n o ta c ió n re la tiv a a la tr a d u c c ió n d e n o m b r e s
d e c a m p o s y los p r o c e d im ie n to s p a r a el m a n e jo d e listas d e esa secció n sirv e n a s i­
m is m o p a r a ésta. A m o d o d e e je m p lo m á s e x te n s o se d e s a rro lla u n e s q u e m a d e tra ­
d u c c ió n p a r a p ro p o s ic io n e s g e n e ra d a s p o r la sig u ie n te g ra m á tic a :

(1) S ¡ f E th e n 5
(2 ) i f E th e n S e l s e S
(3 ) w h ile E d o S
(4) b eg in L end
(5) A
(6 ) L -» L ; S
(7 ) S
8.6 RELLENO DE RETROCESO 519

A q u í, S in d ic a u n a p ro p o s ic ió n . L u n a lista d e p ro p o sic io n e s, A u n a p ro p o s ic ió n d e
a sig n a c ió n , y E u n a e x p re sió n b o o le a n a . O b sé rv e se q u e d e b e h a b e r o tra s p ro d u c c io ­
n es, c o m o las c o rr e s p o n d ie n te s a las p ro p o s ic io n e s d e a sig n a c ió n . S in e m b a r g o , las
p ro p o s ic io n e s d a d a s b a s ta r á n p a r a ilu s tr a r la té c n ic a s u tiliz a d a s p a r a tr a d u c ir p ro ­
p o s ic io n e s d e flu jo d e l c o n tro l.
Se e m p le a la m is m a e s tr u c tu r a d e c ó d ig o p a r a las p ro p o s ic io n e s if-then, if-then-
else y while-do d e la secció n 8.4. Se s u p o n e q u e el c ó d ig o q u e sigue a u n a d e te r m i­
n a d a p ro p o s ic ió n e n e je c u c ió n ta m b ié n lo sigue físic a m e n te e n la m a tr iz d e c u á d r u ­
p los. Si esto n o e s asi, se d e b e p r o p o r c io n a r u n salto explícito.
El e n f o q u e g e n e r a l e le g id o s e r á r e l l e n a r lo s s a lto s f u e ra d e la s p r o p o s ic i o n e s
c u a n d o se e n c u e n tr e n sus d e stin o s. N o sólo las e x p re s io n e s b o o le a n a s n e c e sita n d e
d o s listas d e sa lto s q u e o c u r r e n c u a n d o la e x p re sió n es v e rd a d e ra y c u a n d o e s falsa,
sin o q u e las p ro p o s ic io n e s ta m b ié n n e c e s ita n listas d e salto s (d a d a s p o r el a trib u to
sigtelista) al c ó d ig o q u e les sigue e n la s e c u e n c ia d e eje c u c ió n .

Esquema para implantar la traducción


A c o n tin u a c ió n se d e sc rib e u n e s q u e m a d e tr a d u c c ió n d irig id o p o r la s in ta x is p a ra
g e n e r a r t r a d u c c i o n e s p a r a la s c o n s t r u c c i o n e s d e f lu jo d e c o n t r o l d a d a s a n t e r i o r ­
m e n te . El n o te r m in a l E tie n e d o s a trib u to s , E .listaverdad y E .listafalso , c o m o a n ­
tes. L y S ta m b ié n n e c e sita n u n a lista d e c u á d r u p lo s v acío s q u e m á s ta r d e h a b r á q u e
c o m p l e t a r c o n r e lle n o d e r e tr o c e s o . E s ta s lista s s o n a p u n t a d a s p o r lo s a t r i b u t o s
L.sigtelista y S.sigtelista. S.sigtelista es u n a p u n t a d o r a u n a lista d e to d o s los saltos
c o n d ic io n a le s e in c o n d ic io n a le s al c u á d r u p l o q u e sigue a la p ro p o sic ió n S e n o rd e n
d e e je c u c ió n , y L.sigtelista se d e fin e d e m o d o sim ilar.
E n la d isp o sic ió n del c ó d ig o p a r a S —» while E do S \ d e la fig u ra 8.2 2 (c), las e ti­
q u e t a s S .c o m ie n zo y E .verdadera m a r c a n el c o m ie n z o d e l c ó d ig o p a r a la p r o p o s i­
c ió n c o m p le ta S y el c u e r p o S i. L o s d o s c aso s del n o te rm in a l m a r c a d o r M e n la
sig u ie n te p ro d u c c ió n re g istra n los n ú m e r o s d e los c u á d r u p lo s d e estas posiciones:

S - > while M] E do M 2 S¡
D e n u e v o , la ú n ic a p ro d u c c ió n p a r a M es M « c o n u n a a c c ió n q u e a s ig n a el a tri­
b u to M .c u a d al n ú m e r o d e l sig u ie n te c u á d r u p lo . D e s p u é s d e q u e se h a y a e je c u ta d o
el c u e r p o S , d e la p ro p o s ic ió n while, el c o n tr o l flu y e al c o m ie n z o . P o r t a n t o , c u a n d o
se re d u c e while A /, £ do M 2 S x a S , se re lle n a d e re tro c e so S\.sig telista p a r a q u e
to d o s los d e s tin o s e n esa lista se a n M \.cu a d . D e s p u é s del c ó d ig o p a r a 5"i se a ñ a d e u n
salto e x p líc ito al c o m ie n z o del c ó d ig o p a r a £ . p o r q u e el c o n tr o l ta m b ié n p u e d e "sa ­
lir d e l f o n d o " . S e re lle n a E .lista ve rd a d p a r a q u e v a y a al c o m ie n z o d e S \ h a c ie n d o
q u e los salto s e n E .listaverdad v a y a n a M i.cuad.
O t r a ra z ó n p a r a u tiliz a r S.sigtelista y L .sigtelista su rg e c u a n d o se g e n e ra c ó d ig o
p a r a la p ro p o s ic ió n c o n d ic io n a l if £ then S \ else S2- Si el c o n tro l “ sale d e l fo n d o "
d e 5 , , c o m o c u a n d o S¡ es u n a a s ig n a c ió n , se d e b e in c lu ir al fin al del c ó d ig o S i un
s a lto s o b re el c ó d ig o d e S 2. S e u tiliz a o t r o n o te r m in a l m a r c a d o r p a r a in t r o d u c ir
este s a lto d e s p u é s d e S |. S ea el n o te r m in a l N este m a r c a d o r c o n p ro d u c c ió n A' - * €.
N tie n e el a t r i b u t o N .sigtelista. q u e se rá u n a lista f o r m a d a p o r el n ú m e r o d e c u á d r u ­
p lo d e la p ro p o s ic ió n g o t o _ q u e se g e n e r a p o r la regla s e m á n tic a p a r a N . A c o n ­
tin u a c ió n se d a n las reglas s e m á n tic a s p a r a la g ra m á tic a revisada.
520 G E N E R A C IO N D E C O D IG O IN T E R M E D IO

( 1) S if E t h e n M \ 5 , N e ls e M 2 S 2

{ com pleta ( E listaverdad , A /j.c u a ¿ ) ;


com pleta (E .listafalso , M i.cuad);
S.sigtelista fu sio n a (S\. sigtelista, fu s io n a (N.sigtelista.
S 2. sigtelista ))}

S e r e lle n a n lo s s a lt o s c u a n d o E e s v e r d a d e r a p a r a q u e v a y a n a l c u á d r u p l o
M \.cu a d y q u e e s el c o m ie n z o del c ó d ig o p a r a 5 , . D e fo rm a s im ila r, se re lle n a n los
sa lto s c u a n d o E e s falsa p a r a q u e v a y a n al c o m ie n z o del c ó d ig o p a r a S 2. L a lista
S.sigtelista in c lu y e to d o s los salto s q u e salen d e S , y S 2, así c o m o el s a lto g e n e ra d o
p or N.

(2) A' -> € { N .sigtelista : = crealista (sigtecuad):


e m ite ( ' g o t o _ ') }

(3) M € { M .c u a d : = s ig te c u a d }

(4) .S’—>if £ th e n M S ] ( com pleta (E.listaverdad. M .cuad);


S.sigtelista : = fu sio n a (E .listafalso.
S {.sigtelista) }
(5) S -> w h ile M t E d o A/> S i { com pleta (S].sigtelista, M x.cuad)\
com pleta (E.listaverdad, M 2.c u a d );
S.sigtelista : = E .listafalso :
e m ite ( ' g o t o M \.c u a d ) }

(6) 5 begin L en d { S .sig telista : = L .sigte/ista }

(7 ) S ¿ { S.sigtelista : = n il}

L a a s ig n a c ió n S.sigtelista : = nil in icializa S.sigtelista c o n u n a lista vacía.

(8 ) /« - > ¿ i ; A / 5 { com pleta ( L ,. sigtelista, M .c u a d ) ;


L .sigtelista S.sigtelista }
L a p ro p o sic ió n q u e sigue a L | e n o r d e n d e e je c u c ió n es el c o m ie n z o d e 5 . P or
ta n to , la lista L ,. sigtelista se re lle n a p a r a q u e v a y a al c o m ie n z o del c ó d ig o p a r a 5 ,
q u e v ie n e d a d o p o r M .cuad.

(9) I. -> S { L .s ig te lis ta : = S .sig te lista }

O b sé rv e se q u e n o se g e n e ra n n u e v o s c u a d r u p lo s e n n in g u n a p a r te e n e s ta s reglas
se m á n tic a s , e x c e p to en las reglas (2) y (5). El resto d e l c ó d ig o se g e n e ra m e d ia n te las
a c c io n e s s e m á n tic a s a s o c ia d a s c o n las p ro p o s ic io n e s d e a s ig n a c ió n y las ex p resio n es.
L o q u e h a c e el flujo del c o n tr o l e s p r o v o c a r el re lle n o d e re tro c e so a d e c u a d o p a ra
q u e las a sig n a c io n e s y las e v a lu a c io n e s d e las e x p re s io n e s b o o le a n a s c o n e c te n a p r o ­
p ia d a m e n te .

E tiq u e ta s y p ro p o sic io n e s goto

La c o n stru c c ió n m á s ele m e n ta l d e u n len g u aje d e p ro g ra m a c ió n p a r a c a m b ia r el flujo


del c o n tr o l en u n p r o g r a m a es la e tiq u e ta y el s a lto g o t o . C u a n d o u n c o m p ila d o r
e n c u e n t r a u n a p ro p o s ic ió n c o m o g o t o L. d e b e c o m p r o b a r q u e h a y a e x a c ta m e n te
8.7 LLA M A D A S A PRO CEDIM IENTO S 521

u n a p ro p o s ic ió n c o n e tiq u e ta L e n el á m b ito d e esta p ro p o sic ió n g o t o . Si la e tiq u e ta


y a h a a p a re c id o , e n u n a p ro p o s ic ió n d e d e c la r a c ió n d e e tiq u e ta o c o m o la e tiq u e ta
d e a lg u n a p ro p o s ic ió n fu e n te , e n to n c e s la ta b la d e s ím b o lo s te n d r á u n a e n t r a d a q u e
p r o p o r c io n a la e tiq u e ta g e n e ra d a p o r el c o m p ila d o r p a r a la p r im e r a in s tr u c c ió n de
tres d ire c c io n e s a s o c ia d a c o n la p ro p o s ic ió n f u e n te e tiq u e ta d a c o n L. P a r a la tr a d u c ­
c ió n se g e n e ra u n a p ro p o s ic ió n d e tres d ire c c io n e s g o t o c o n u n a e tiq u e ta g e n e ra d a
p o r el c o m p ila d o r c o m o d e s tin o .
C u a n d o se e n c u e n tr e u n a e tiq u e ta L p o r p r im e r a vez e n el p r o g r a m a fu e n te , en
u n a d e c la ra c ió n o c o m o d e s tin o d e u n a in s tr u c c ió n d e s a lto g o t o h acia a d e la n te , se
in tr o d u c e L e n la ta b la d e s ím b o lo s y se g e n e ra u n a e tiq u e ta s im b ó lic a p a r a L.

8 .7 L L A M A D A S A P R O C E D I M I E N T O S

El p r o c e d im ie n to '' es u n a c o n s tr u c c ió n d e p r o g ra m a c ió n ta n i m p o r ta n te y u tiliz a d a
ta n a m e n u d o q u e es f u n d a m e n ta l q u e u n c o m p ila d o r g en ere b u e n c ó d ig o p a r a lla­
m a d a s y r e to r n o s d e p ro c e d im ie n to s . S o n p a r te d e l p a q u e te d e a p o y o p a r a la e je c u ­
c ió n , las r u tin a s e n ti e m p o d e e je c u c ió n q u e m a n e ja n el p a so d e a r g u m e n to s a los
p ro c e d im ie n to s , las lla m a d a s y los re to rn o s . E n el c a p ítu lo 7 se e s tu d ia r o n las d is tin ­
ta s clases d e m e c a n is m o s n e c e s a rio s p a r a i m p l a n t a r el p a q u e te d e a p o y o p a r a la e je ­
c u ció n . E n esta secció n se e s tu d ia el c ó d ig o q u e se g e n e ra h a b i tu a lm e n te p a r a las
lla m a d a s y re to r n o s d e p ro c e d im ie n to s .
C o n s id é re s e u n a g ra m á tic a p a r a u n a lla m a d a se n c illa a u n p r o c e d im ie n to .

(1) S - > c ali id ( lista E )


(2) lista E —> lista E , E
(3) lista E -> E

S e c u e n c ia s d e lla m a d a s

C o m o se v io e n el c a p ítu lo 7, la tr a d u c c ió n d e u n a lla m a d a in clu y e u n a se c u e n c ia


d e lla m a d a , q u e es u n a se c u e n c ia d e a c c io n e s q u e se t o m a n a la e n t r a d a y a la salid a
d e c a d a p r o c e d im ie n to . A u n q u e las s e c u e n c ia s d e lla m a d a d ifie re n , in c lu so e n a p li­
c a c io n e s d e l m is m o len g u aje, h a b itu a lm e n te ti e n e n lu g a r las sig u ie n te accion es:
C u a n d o o c u r r e la lla m a d a a u n p r o c e d im ie n to , se d e b e a s ig n a r e s p a c io p a r a el
re g is tro d e a c tiv a c ió n d e l p r o c e d i m i e n t o l l a m a d o . L o s a r g u m e n t o s d e l p r o c e d i­
m i e n to lla m a d o se d e b e n e v a lu a r y p o n e r a d is p o s ic ió n del p r o c e d im ie n to lla m a d o
e n u n lu g a r c o n o c id o . S e d e b e n e s ta b le c e r lo s a p u n t a d o r e s d e a m b i e n t e p a r a p e r ­
m itir q u e el p r o c e d im ie n to lla m a d o te n g a acce so a los d a to s d e los p ro c e d im ie n to s
ab arca d o re s. Se d e b e g u a r d a r el e s ta d o del p r o c e d im ie n to q u e e fe c tú a la lla m a d a para
q u e p u e d a r e a n u d a r la e je c u c ió n d e s p u é s d e la lla m a d a . T a m b ié n se g u a r d a e n u n
lu g a r c o n o c id o la d ire c c ió n d e r e to rn o , q u e es la p o s ic ió n a la q u e la r u ti n a lla m a d a
d e b e tra n s fe rir el c o n tr o l c u a n d o finalice. L a d ire c c ió n d e r e to r n o n o r m a l m e n t e es
la p o sició n d e la in s tru c c ió n q u e sigue la lla m a d a e n el p r o c e d im ie n to a u t o r d e la

6 A q u í, e l té r m in o p r o c e d im ie n to in c lu y e a la fu n c ió n . U n a fu n c ió n e s u n p r o c e d im ie n to q u e d e ­
v u e lv e u n valor.
522 G E N E R A C IO N DE C O D IG O IN T E R M E D IO

llam ada. P o r ú ltim o , se debe generar un salto al p rin c ip io del código del p ro ced i­
m iento llam ado.
C u an d o vuelve un procedim iento, deben tener lugar varias acciones. Si el pro­
cedim iento llam ad o es una fu n ció n , el resultado se debe guardar en un lugar cono­
cid o . Se debe restablecer el registro de a ctiva ció n del p ro cedim ien to que hace la
llam ada y hay que generar un salto a la d irecció n de retorno del procedim iento au­
tor de la llam ada.
N o existe una d iv isió n exacta de las tareas en el m om ento de la ejecución entre
el p ro ce d im ien to qu e hace la llam ad a y el p ro ce d im ie n to qu e recib e la llam ada.
A m enudo, el lenguaje fuente, la m áquin a objeto y el sistem a operativo im ponen
requisitos que favorecen una so lució n sobre otra.

U n e je m p lo s e n c illo

Considérese un ejem plo sen cillo en el qu e los parám etros se pasan p o r referencia y
la m em oria se asigna estáticam ente. E n esta situación, se u tilizan las proposiciones
p a ra m com o d epo sitarías de los argum entos. A l p ro ced im ien to receptor de la lla ­
m ada se le pasa un apuntador en un registro a la p rim era de las proposiciones p a ­
ram , y puede obtener un apuntador a cu alq u iera de sus argum entos utilizan d o el
desplazam iento apropiado desde este ap u n tad o r de base. C u an d o se genera código
de tres direcciones para este tipo de llam ada, basta con generar las proposiciones de
tres direcciones necesarias para eva lu ar los argum entos que sean expresiones d istin ­
tas de nom bres sim ples, después tiene qu e haber una lista de proposiciones de tres
direcciones p aram , una p o r cada argum ento. Si no se quieren m ezclar las proposi­
ciones evaluadoras de argum entos co n las proposiciones p aram , hay qu e guardar el
va lo r de E .lu g a r para cada expresión E dentro de i d ( £ , £ , . . . , E )1.
U na estructura de datos conveniente para guardar estos valores es un a cola, una
lista “ prim ero en cn trar-prim ero en s a lir". La ru tin a sem ántica para lis ta E - » listaE,
E in c lu irá un paso para guardar E .lugar en la co la llam ada cola. D espués, la rutina
sem ántica para S -> c a li ¡d ( li s ta E ) generará una pro p o sició n p aram para cada ele­
m ento dentro de cola, lo cu al hace que estas proposiciones sigan a las proposiciones
que evalúan las expresiones com o argum entos. Esas proposiciones fueron generadas
cuando los argum entos m ism os se redujeron a E. L a siguiente traducción d irig id a
p o r la sin taxis in co rp o ra estas ideas.

(1) S —> c a li id ( lista E )


{ fo r cada elem ento p en cota d o
e m ite ('p a r a m p )\
e m ite ('c a l i ' lá.lugar) }

El código para S es el código para lista E , que evalúa los argum entos, seguido de
una proposición p a ra m p para cada argum ento, seguido de una proposición c a li. No
se genera una cuenta del núm ero de parám etros co n la proposición c a l i pero se

Si los p a rá m e tro s se p a sa n al p ro c e d im ie n to q u e recibe la llam ad a p o n ié n d o lo s e n u n a pila, co m o


seria el caso h abitu al p a ra d a to s asignados d in á m ic a m e n te , no hay razón para m ezclar proposicio
nes ev alu ad o ras y propo sicio n es p a r a m . La p ro po sició n p a r a m se su stitu y e en el m o m e n to <l< la
generación d e código p o r código q u e in tro d u zca un p a rá m e tro en la pila
EJERCICIOS 523

p o d ría c a lc u la r del m is m o m o d o e n q u e se c a lc u ló lista E .n d im e n la secció n a n t e ­


rior.

(2) lista E - > lis ta E , E


{ a ñ á d a s e E .lu g a r al final d e cola }
(3) lista E -> E
{ in icialícese cola p a r a q u e c o n te n g a só lo E .lu g a r }

E n este caso, cola se v a c ía y e n to n c e s o b tie n e u n so lo a p u n t a d o r a la lo calid ad


d e la ta b la d e s ím b o lo s c o r r e s p o n d ie n te al n o m b r e q u e in d ic a el v a lo r d e E.

E J E R C IC IO S

8.1 T r a d ú z c a s e la e x p re s ió n a r itm é tic a a * - ( b + c ) a


a ) u n árb o l s in tá c tic o
b ) n o ta c ió n po stfija
c) c ó d ig o d e tres d ire c c io n e s

8 .2 T r a d ú z c a s e la e x p re s ió n - ( a + b ) * ( c + d ) + ( a + b + c ) a
a ) c u á d r u p lo s
b ) trip les
c ) trip le s in d irecto s.

8 .3 T r a d ú z c a n s e a
a ) u n árb o l s in tá c tic o
b) n o ta c ió n po stfija
c) c ó d ig o d e tres d irec cio n es.
las p ro p o s ic io n e s e je c u ta b le s del sig u ie n te p r o g r a m a e n C

m a in ()
{
in t i:
i n t a [1 0 ] ;
i = 1?
w h i l e ( i <= 10 ) {
a [ i ] = 0; i = i + 1;
}
}

*8.4 D e m u é s tr e s e q u e si to d o s los o p e r a d o r e s s o n b in a rio s, e n to n c e s u n a c a d e n a


d e o p e r a d o r e s y o p e r a n d o s es u n a e x p r e s ió n p o s tf ija si, y s ó lo si. (1 ) hay
e x a c ta m e n te u n o p e r a d o r m e n o s q u e o p e r a n d o s . y (2) to d o p refijo n o vacio
d e la e x p re s ió n tie n e m e n o s o p e r a d o r e s q u e o p e ra n d o s .

8 .5 M o d ifiq ú e se el e s q u e m a d e tr a d u c c ió n d e la fig u ra 8.11 p a r a c a lc u la r los ti­


p o s y d ire c c io n e s rela tiv as d e los n o m b r e s d e c la ra d o s p a r a p e r m itir listas d e
n o m b r e s e n lu g a r d e n o m b r e s s im p le s e n las d e c l a r a c io n e s d e la f o r m a
D -»id: T .
524 G E N E R A C IO N D E C O D IG O INTERM EDIO

8.6 L a fo rm a prefija d e u n a e x p re s ió n e n la q u e el o p e r a d o r 0 se a p lic a a e x p re ­


s io n e s e¡, 6*2 ek es 0 p ip 2 • • • Pk> d o n d e p, es la f o r m a prefija d e e¡.
a ) G e n é r e s e la f o r m a prefija d e a * - ( b + c ) .
**b) D e m u é s tre s e q u e las e x p re s io n e s in fija s n o se p u e d e n tr a d u c ir a la fo rm a
prefija c o n e s q u e m a s d e tr a d u c c ió n e n q u e to d a s las a c c io n e s se a n d e i m ­
p re s ió n y to d a s ellas a p a r e z c a n al fin al d e los la d o s d e re c h o s d e las p r o ­
d u c c io n e s.
c) D ése u n a d e fin ic ió n d irig id a p o r la s in ta x is p a r a tr a d u c ir e x p re s io n e s in­
fijas a fo rm a prefija. ¿ Q u é m é to d o s del c a p ítu lo 5 se p u e d e n utilizar?

8 .7 E scríb ase u n p r o g r a m a p a r a i m p l a n t a r la d e fin ic ió n d irig id a p o r la sin ta x is


p a r a tr a d u c ir e x p re s io n e s b o o le a n a s al c ó d ig o d e tr e s d ire c c io n e s d a d o e n la
figura 8.24.

8 .8 M o d ifiq ú e se la d e fin ic ió n d irig id a p o r la s in ta x is d e la figura 8 .2 4 p a r a ge­


n e r a r c ó d ig o p a r a la m á q u i n a d e p ila d e la secció n 2.8.

8 .9 L a d e fin ic ió n d irig id a p o r la s in ta x is d e la fig u ra 8 .2 4 tr a d u c e E - + id , < ¡d 2


al p a r d e p ro p o s ic io n e s

i f id) < id 2 g o to . . .
g oto . . .
En lu g a r d e e s to se p o d r ía tr a d u c ir a la p ro p o s ic ió n sim p le

i f ¡di £ id? g o t o -

y s a lta r el c ó d ig o c u a n d o E sea v e rd a d e ra . M o d ifiq ú e se la d e fin ic ió n d e la


fig u ra 8 .2 4 p a r a g e n e ra r c ó d ig o d e e s ta n a tu ra le z a .

8 .1 0 E scríbase u n p r o g r a m a p a r a im p la n t a r la d e fin ic ió n d irig id a p o r la sin ta x is


p a ra las p ro p o s ic io n e s d e fiujo del c o n tr o l d a d a e n la figura 8.23.

8.11 E scríbase u n p r o g r a m a p a r a i m p l a n t a r el a lg o ritm o d e re lle n o d e re tro c e so


d a d o en la secció n 8.6.

8 .1 2 T r a d ú z c a n s e las sig u ie n tes p ro p o s ic io n e s d e a s ig n a c ió n a c ó d ig o d e tres d i­


re c c io n e s u s a n d o el e s q u e m a d e tr a d u c c ió n d e la secció n 8.3.

A [i»j ) :«B[i.j] +C[A[k,l]) +D[i+j)


*8.13 A lg u n o s le n g u a je s, c o m o P L /L p e r m ite n q u e a u n a lista d e n o m b r e s se le
p ro p o r c io n e u n a lista d e a tr ib u to s y ta m b ié n p e r m ite n q u e las d e c la ra c io n e s
a n id e n u n a d e n t r o d e o tra . L a sig u ie n te g r a m á tic a h a c e u n a a b s tr a c c ió n del
p ro b le m a :
D - > ¡isianom bres listaatr
| ( D ) listaatr
lisianom bres —> ¡d . ¡isianom bres
I *
listaatr -> A listaair
i
A - > d e c i m a l ! f ix e d flo a t i real
EJERCICIOS 525

El sig n ificad o d e D - > ( D ) lista a tr es q u e a to d o s lo s n o m b r e s m e n c io n a d o s


e n la d e c la ra c ió n d e n t r o d e l p a ré n te s is se les d a n lo s a tr ib u to s q u e a p a re c e n
e n lislaatr. in d e p e n d ie n te m e n te d e c u á n t o s n iv eles d e a n i d a m i e n t o ex istan .
O b sérv ese q u e u n a d e c la r a c ió n d e n n o m b r e s y m a tr i b u to s p u e d e n d a r lu g a r
a q u e se in tr o d u z c a n n m p ie zas d e in f o r m a c ió n e n la ta b la d e s ím b o lo s. P r o ­
p o rc ió n e s e u n a d e fin ic ió n d irig id a p o r la s in ta x is p a r a las d e c la r a c io n e s d e ­
fin id a s p o r esta g ra m á tic a .

8 .1 4 E n C , la p ro p o s ic ió n f o r tie n e la sig u ie n te fo rm a:

f o r ( e , ; e 2 ; e y ) prop

E n te n d ie n d o q u e tie n e el sig u ie n te significado:

e,;
w h ile (e 2 ) j
p ro p ,

>
c o n s tr u y a s e u n a d e fin ic ió n d irig id a p o r la s in ta x is p a r a tr a d u c ir p ro p o s ic io ­
n e s f o r d e l e s tilo d e C a c ó d ig o d e tres d ireccion es.

8 .1 5 El e s tá n d a r d e P ascal d e f in e q u e la p ro p o s ic ió n

fo r v : = inicia l to f i n a l d o prop

tie n e el m is m o sig n ificad o q u e la s e c u e n c ia d e código:

begin
/1: = inicial; t2 : = final;
i f / | ^ h th e n begin
v :=
prop ;
w h ile v i2 d o begin
v : = succ ( v );
prop
end
end
end

a) C o n s id é re s e el sig u ie n te p r o g r a m a e n Pascal:

p ro g ram c i c l o f o r ( in p u t, o u tp u t) ;
v ar i , in ic ia l, f in a l: in te g e r;
b e g in
re a d (in ic ia l, fin a l);
f o r i : = i n i c i a l t o f i n a l do
w rite ln (i)
end.
526 G E N E R A C IO N D E C O D IG O INTERM EDIO

¿ Q u é c o m p o r t a m i e n t o tie n e este p r o g r a m a c o n inicial = m a x i n t - 5 y


fin a I = m a x i n t , d o n d e m a x i n t es el m a y o r n ú m e r o e n t e r o e n la m á ­
q u i n a o b jeto ?
*b) C o n s tr ú y a s e u n a d e fin ic ió n d irig id a p o r la s in ta x is q u e g e n e re c ó d ig o d e
tres d ire c c io n e s c o r r e c to p a r a las p ro p o s ic io n e s f o r d e Pascal.

N O T A S B IB L IO G R A F IC A S

U N C O L ( p o r s u s siglas e n inglés U niversal C om pilar O rientad L anguage, L en g u a je


o r ie n t a d o a u n c o m p ila d o r u n iv e rs a l) es u n le n g u a je in te r m e d io u n iv e rsa l m ític o ,
b u s c a d o d e s d e m e d ia d o s d e la d é c a d a d e 1950. D a d o u n U N C O L , el in f o r m e d e co ­
m ité d e S tro n g y c o la b o r a d o r e s [1 9 5 8 ] d e m o s t r ó c ó m o se p o d ía n c o n s tr u i r c o m p i ­
lad o res e n s a m b la n d o u n a e ta p a inicial p a r a u n d e te r m in a d o len g u aje fu e n te c o n u n a
e ta p a final p a r a u n a d e t e r m in a d a m á q u i n a o b je to . L as té c n ic a s d e a r r a n q u e del in ­
fo rm e se u tiliz an r u tin a r ia m e n te p a r a r e d e s tin a r c o m p ila d o r e s (v éase Sec. 11.2). E n
Steel [1 9 6 1 ] a p a re c e u n a p ro p u e s ta o rig in a l p a r a U N C O L .
U n c o m p ila d o r re d e s tin a b le c o n s ta d e u n a e ta p a in icial q u e p u e d e u n irs e a v a­
rias e ta p a s fin ales p a r a i m p l a n t a r u n le n g u a je d a d o a v a ria s m á q u in a s . N E L I A C es
u n o d e los p r im e r o s e je m p lo s d e u n le n g u a je c o n u n c o m p ila d o r re d e s tin a b le (H u s-
key. H a lste a d y M c A r th u r [1960] e s c rito e n s u p r o p io len g u aje. V éase ta m b ié n R i­
c h a r d s [1971] y su d e s c rip c ió n d e u n c o m p ila d o r re d e s tin a b le p a r a B C P L , N o r i y
c o la b o r a d o r e s [1 9 8 1 ] p a r a P ascal y J o h n s o n [1979] p a r a C . N ew e y . P o o le y W a itc
[1972] a p lic a n la idea d e c a m b i a r la e ta p a final a u n m a c ro p ro c e s a d o r, u n e d i to r d e
te x to s y u n c o m p ila d o r d e BASIC.
El ideal d e U N C O L d e a p lic a r n le n g u a je s e n m m á q u in a s m e d ia n te la e s c ritu ra
d e n e ta p a s in iciales y m e ta p a s finales, en o p o s ic ió n a n x n i c o m p ila d o r e s d is tin to s ,
se h a e n f o c a d o d e v arias fo rm a s . U n e n f o q u e c o n s is te e n r e tr o a d a p ta r u n a e ta p a in i­
cial p a r a u n n u e v o le n g u a je a u n c o m p ila d o r e x iste n te . F e ld m a n [1 9 7 9 b ] describ e
c ó m o se a ñ a d e u n a e ta p a in icial d e F O R T R A N 77 a los c o m p ila d o r e s d e C d e J o h n ­
s o n [1 9 7 9 ] y R itc h ie [1 9 7 9 ]. L a s o r g a n iz a c io n e s d e c o m p ila d o r e s d is e ñ a d a s p a r a
a d a p t a r m ú ltip le s e ta p a s in iciales y e t a p a s fin ales s o n d e s c rita s p o r D a v id s o n y F ra-
s e r [1 9 8 4 b ], L ev erett y c o la b o r a d o r e s [1 9 8 0 ] y T a n e n b a u m y c o la b o r a d o r e s [1983].
L o s t é r m i n o s m á q u in a s a b s tr a c t a s d e “ u n i ó n " e “ in te r s e c c ió n " u tiliz a d o s p o r
D a v id s o n y F ra s e r [1 9 8 4 b ] re s a lta n el p a p e l del c o n j u n t o d e o p e r a d o r e s p e rm itid o s
e n u n a re p re s e n ta c ió n in te r m e d ia . El c o n j u n t o d e in s tr u c c io n e s y m o d o s d e d irec-
c io n a m ie n to d e u n a m á q u i n a d e in te re s e c c ió n s o n lim ita d o s , asi q u e la e ta p a inicial
n o tien e q u e eleg ir m u c h a s o p c io n e s c u a n d o g e n e ra c ó d ig o in te r m e d io . L as m á q u i­
n a s d e u n ió n p r o p o r c io n a n fo rm a s a lte r n a tiv a s d e im p la n t a r c o n s tr u c c io n e s d e nivel
fu en te . C o m o n o to d a s las a lte r n a tiv a s se p u e d e n im p la n t a r d ir e c ta m e n te p o r to d a s
las m á q u in a s o b je to , el c o n j u n t o d e in s tru c c io n e s m á s ric o d e la m á q u in a d e u n ió n
p u e d e a liv ia r la d e p e n d e n c ia c o n re s p e c to a la m á q u i n a d e s tin o . E sto s c o m e n ta r io s
ta m b ié n sirv en p a ra o tr a s clases d e c ó d ig o in te r m e d io , c o m o lo s á rb o le s s in tá c tic o s
y el c ó d ig o d e tr e s d ire c c io n e s. F ra s e r y H a n s o n [ 1982] c o n s id e ra n f o r m a s d e e x p re ­
s a r el acce so a la pila d e e je c u c ió n u tiliz a n d o o p e r a c io n e s in d e p e n d ie n te s d e la m á ­
q u in a .
NOTAS B IB L IO G R A FIC A S 527

La im plantación de A L G O L 60 es estudiada detalladam ente por R andell y Rus-


sell [1964] y G rau, H ill y Langm aack [1967]. Freiburghouse [1969] estudia P L /I,
W irth [1971] Pascal y Branquart y colaboradores [1976] A L G O L 68.
M in ker y M in ker [1980] y G iegerich y W ilh elm [1978] estudian la generación
de código óptim o para expresiones booleanas. El ejercicio 8.15 es obra de Newey y
W aite [1985].
|S 2 9 |

C A P IT U L O 9

Generación
de código

L a fase final del m o d e lo d e c o m p ila d o r d e este lib ro es el g e n e ra d o r d e código. T o m a


c o m o e n t r a d a u n a re p re s e n ta c ió n in te r m e d ia del p r o g r a m a f u e n te y p r o d u c e c o m o
salid a u n p r o g r a m a o b je to e q u iv a le n te , c o m o se in d ic a e n la figura 9.1. L as té c n ic a s
d e g e n e ra c ió n d e c ó d ig o d e este c a p ítu lo se p u e d e n u tiliz ar c o n in d e p e n d e n c ia d e si
se p r o d u c e o n o u n a fase d e o p ti m a c i ó n a n te s d e la g e n e ra c ió n d e c ó d ig o , c o m o en
a lg u n o s c o m p ila d o r e s d e n o m in a d o s “d e o p tim a c ió n " . D ic h a fase i n t e n ta tr a n s f o r ­
m a r el c ó d ig o in te r m e d io e n u n a f o r m a d e la q u e se p u e d a p r o d u c ir c ó d ig o o b je to
m á s etlcien te. E n el sig u ie n te c a p ítu lo se tr a ta r á c o n d e ta lle la o p tim a c ió n d e cód ig o.

p ro g ra m a
p ro g ra m a

fuente objeto

Fig. 9.1. Posición del generador de código.

L as ex ig en cias tr a d ic io n a lm e n te im p u e s ta s a u n c o m p ila d o r s o n d u ra s . El c ó d ig o
d e salid a d e b e s e r c o r r e c to y d e g ra n c a lid a d , lo q u e sig nifica q u e d e b e u tiliz a r d e
f o r m a e fic a z los re c u rs o s d e la m á q u i n a o b je to . A d e m á s , el g e n e r a d o r d e c ó d ig o
m is m o d e b e e je c u ta rs e e fic ie n te m e n te .
M a te m á tic a m e n te , el p r o b le m a d e g e n e r a r c ó d ig o ó p t i m o es in d e c id ib le . E n la
p ráctica, h a y q u e c o n f o r m a r s e c o n té c n ic a s h e u rís tic a s q u e g e n e r a n c ó d ig o b u e n o
p e ro n o s ie m p re ó p tim o . L a e le c c ió n d e las h e u rístic a s es im p o r ta n te , ya q u e u n a l­
g o r it m o d e g e n e ra c ió n d e c ó d ig o c u i d a d o s a m e n t e d i s e ñ a d o p u e d e p r o d u c i r fácil­
m e n te c ó d ig o q u e sea v a ria s veces m á s r á p id o q u e el p r o d u c id o p o r u n a lg o ritm o
d is e ñ a d o p re c ip ita d a m e n te .
530 G EN ER A C IO N DE CO DIG O

9.1 A S P E C T O S D E L D I S E Ñ O D E U N G E N E R A D O R D E C O D I G O

E n t a n t o q u e los d e ta lle s d e p e n d e n d e la m á q u i n a o b je to y del s is te m a o p e ra tiv o ,


a sp e c to s c o m o el m a n e jo d e la m e m o r ia , la se le c c ió n d e in s tru c c io n e s , la asig n ac ió n
d e reg istro s y el o r d e n d e e v a lu a c ió n s o n in h e re n te s e n casi to d o s los p r o b le m a s de
g e n e ra c ió n d e c ó d ig o . E n esta secció n , se e x a m in a r á n los a s p e c to s g e n é ric o s d e l d i­
s e ñ o d e g e n e r a d o r e s d e cód ig o.

E n tra d a a l g e n e r a d o r d e c ó d ig o

L a e n tr a d a p a r a el g e n e r a d o r d e c ó d ig o c o n s ta d e la r e p re s e n ta c ió n in te r m e d ia del
p r o g r a m a f u e n te p r o d u c id a p o r la e ta p a in icial, j u n t o c o n in f o r m a c ió n d e la ta b la
d e s ím b o lo s q u e se u tiliz a p a r a d e t e r m i n a r las d ire c c io n e s d u r a n te la e je c u c ió n d e
los o b je to s d e d a to s d e n o t a d o s p o r los n o m b r e s d e la re p re s e n ta c ió n in te rm e d ia .
C o m o se v io e n el c a p itu lo a n te r io r , h a y v a ria s o p c io n e s p a r a el le n g u a je in te r­
m e d io : r e p r e s e n ta c io n e s lin e a le s c o m o la n o ta c ió n p o stfija , re p re s e n ta c io n e s d e tres
d ire c c io n e s c o m o los c u á d ru p lo s . re p re s e n ta c io n e s d e u n a m á q u i n a v irtu a l c o m o el
c ó d ig o p a r a u n a m á q u i n a d e p ila y r e p r e s e n ta c io n e s gráficas c o m o los á rb o le s s in ­
tácticos y los G D A . A u n q u e los alg o ritm o s d e este c a p ítu lo se ex p resan d e sd e el p u n to
d e v ista d e c ó d ig o d e tr e s d irec cio n es, á rb o le s y G D A , m u c h a s d e las té c n ic a s t a m ­
bién se a p lic a n a o tra s re p re s e n ta c io n e s in te rm e d ia s .
S e a s u m e q u e a n te s d e la g e n e ra c ió n d e c ó d ig o , la e ta p a inicial h a h e c h o los a n á ­
lisis léxico y s in tá c tic o , y tr a d u c id o el p r o g r a m a fu e n te a u n a r e p re s e n ta c ió n in te r­
m e d ia r a z o n a b le m e n te d e ta lla d a , así q u e los v a lo re s d e los n o m b r e s q u e a p a re c e n
e n el le n g u a je in te r m e d io p u e d e n s e r re p r e s e n ta d o s p o r c a n tid a d e s q u e la m á q u in a
o b je to p u e d e m a n i p u l a r d ir e c ta m e n te (bits, e n te ro s , reales, a p u n ta d o r e s , etc.). T a m ­
b ié n se s u p o n e q u e ya h a te n id o lu g a r la c o m p r o b a c ió n d e tip o s n e c e sa ria , d e m o d o
q u e los o p e r a d o r e s d e c o n v e rs ió n d e tip o s y a se h a n in s e rta d o d o n d e f u e ra n ecesa­
rio y y a se h a n d e t e c ta d o los e rro re s s e m á n tic o s o b v io s ( p o r e je m p lo , i n t e n t a r u sa r
c o m o ín d ic e d e u n a m a tr iz u n n ú m e r o d e p u n t o flo tan te). P o r ta n to , la fase d e ge­
n e ra c ió n d e c ó d ig o p u e d e p ro se g u ir c o n la h ip ó te s is d e q u e su e n t r a d a n o c o n tie n e
e rro re s . E n a lg u n o s c o m p ila d o re s , esta clase d e c o m p r o b a c ió n s e m á n tic a se realiza
j u n t o c o n la g e n e ra c ió n d e cód ig o.

P r o g r a m a s o b je to

L a salid a del g e n e r a d o r d e c ó d ig o es el p r o g r a m a o b je to . Al igual q u e el c ó d ig o in ­


te rm e d io , esta salid a p u e d e a d o p t a r u n a v a rie d a d d e fo rm as: le n g u a je d e m á q u in a
a b s o lu to , le n g u a je d e m á q u i n a re lo c aliz ab le o le n g u a je e n s a m b la d o r .
P r o d u c ir c o m o sa lid a u n p r o g r a m a e n le n g u a je d e m á q u i n a a b s o lu to tie n e la
v e n ta ja d e q u e se p u e d e c o lo c a r e n u n a p o s ic ió n fija d e m e m o r i a y e je c u ta r s e in ­
m e d ia ta m e n te . U n p r o g r a m a p e q u e ñ o se p u e d e c o m p ila r y e je c u ta r rá p id a m e n te .
V a rio s c o m p ila d o r e s p a r a “tr a b a jo s d e e s tu d ia n te s ”, c o m o W A T F I V o P L /C , p r o ­
d u c e n c ó d ig o a b so lu to .
P r o d u c ir c o m o sa lid a u n p r o g r a m a e n le n g u a je d e m á q u in a relo calizab le ( m ó ­
d u l o o b je to ) p e r m ite q u e los s u b p r o g r a m a s se c o m p ile n p o r s e p a ra d o . U n c o n ju n to
d e m ó d u l o s o b je to rc lo c a liz a b le s se p u e d e e n l a z a r y c a r g a r p a r a su e je c u c ió n m e ­
9.1 ASPECTOS DEL D ISEÑ O DE U N G E N E R A D O R DE C O D IG O 531

d ia n te u n c a r g a d o r e n la z a d o r . A u n q u e se te n g a q u e p a g a r el c o s to a ñ a d i d o d e e n l a ­
z a r y c a rg a r si se p r o d u c e n m ó d u lo s o b je to relo calizab les. se g a n a m u c h a flexibilidad
al p o d e r c o m p ila r s u b r u tin a s p o r s e p a r a d o y ll a m a r d e sd e u n m ó d u l o o b je to a o tro s
p ro g r a m a s p r e v ia m e n te c o m p ila d o s . Si la m á q u i n a o b je to n o m a n e ja relo c aliz ació n
a u t o m á ti c a m e n te , el c o m p ila d o r d e b e p r o p o r c io n a r al c a r g a d o r in f o r m a c ió n d e re­
lo calizació n e x p lícita p a r a q u e e n la c e los s e g m e n to s d e p r o g r a m a c o m p ila d o s p o r
se p a ra d o .
P r o d u c ir c o m o salid a u n p r o g r a m a e n le n g u a je e n s a m b la d o r facilita el p ro ceso
d e g e n e ra c ió n d e códig o . S e p u e d e n g e n e ra r in s tr u c c io n e s s im b ó lic a s y u tiliz a r las
m a c r o s del e n s a m b la d o r p a r a a y u d a r a g e n e r a r el códig o . El p re c io q u e se p a g a e s el
p a s o d e e n s a m b le d e s p u é s d e la g e n e r a c ió n d e c ó d ig o . C o m o p r o d u c i r c ó d ig o e n ­
s a m b la d o r n o d u p lic a la ta r e a c o m p le ta del c o m p ila d o r , esta e le c c ió n es o tr a a lte r­
n a tiv a ra z o n a b le , e s p e c ia lm e n te p a r a u n a m á q u in a c o n m e m o r ia p e q u e ñ a , d o n d e
u n c o m p ila d o r d e b e u tiliz a r v arias p asad as. E n este c a p ítu lo se u s a c ó d ig o e n s a m ­
b la d o r c o m o le n g u a je o b je to p a r a u n a le c tu ra m á s c lara. S in e m b a rg o , se d e b e insis­
ti r e n q u e m ie n tr a s las d ire c c io n e s se p u e d a n c a lc u la r según lo s d e s p la z a m ie n to s y
o tr a in f o r m a c ió n a lm a c e n a d a e n la ta b la d e s ím b o lo s , el g e n e r a d o r d e c ó d ig o p u e d e
p r o d u c ir d ire c c io n e s re lo c aliz ab les o a b s o lu ta s p a r a n o m b r e s al igual q u e d ire c c io ­
nes sim bólicas.

A d m in istra c ió n d e la m e m o ria

L a c o r r e s p o n d e n c ia e n tr e los n o m b r e s del p r o g r a m a f u e n te c o n d ire c c io n e s d e o b ­


je to s d e d a to s e n la m e m o r ia d u r a n t e la e je c u c ió n la realiza la e ta p a inicial e n c o o ­
p e ra c ió n c o n el g e n e r a d o r d e códig o . E n el ú lt im o c a p ítu lo se s u p u s o q u e u n n o m ­
b re e n u n a p ro p o s ic ió n d e tres d ire c c io n e s se refiere a u n a e n t r a d a e n la ta b la d e
s ím b o lo s p a r a el n o m b r e . E n la secció n 8.2, las e n tr a d a s d e la ta b la d e s ím b o lo s se
ib a n c r e a n d o c o n f o r m e se e x a m in a b a n las d e c la ra c io n e s d e u n p r o c e d im ie n to . El
ti p o e n u n a d e c la ra c ió n d e t e r m i n a el a n c h o , es d ecir, la c a n tid a d d e m e m o r ia n e c e ­
s a ria p a r a el n o m b r e d e c la r a d o . S e g ú n la in f o r m a c ió n d e la ta b la d e s ím b o lo s, se
p u e d e d e t e r m in a r u n a d ir e c c ió n re la tiv a p a r a el n o m b r e d e n t r o d e u n á re a d e d a to s
p a r a el p r o c e d im ie n to . E n la secció n 9 .3 se p r o p o n e n im p la n ta c io n e s m e d ia n te asig­
n a c ió n está tic a y p o r m e d io d e u n a p ila d e á re a s d e d a to s , y se m u e s tr a c ó m o se
p u e d e n c o n v e r tir los n o m b r e s e n u n a re p re s e n ta c ió n in te r m e d ia e n d ire c c io n e s en
el c ó d ig o o b je to .
Si se está g e n e r a n d o c ó d ig o d e m á q u in a , h a y q u e c o n v e rtir las e tiq u e ta s d e las
p r o p o s ic io n e s d e tr e s d ir e c c io n e s e n d ir e c c io n e s d e in s tr u c c io n e s . E ste p r o c e s o es
a n á lo g o a la té c n ic a d e “ re lle n o d e r e tr o c e s o ’' d e la secció n 8.6. S u p ó n g a s e q u e las
e tiq u e ta s se re fie re n a n ú m e r o s d e c u á d r u p l o s e n u n a m a tr iz d e c u á d r u p lo s . C o n ­
fo rm e se e x a m in a c a d a c u á d r u p l o p o r t u m o se p u e d e d e d u c i r la lo c a lid a d d e la p ri­
m e r a i n s tr u c c ió n d e m á q u i n a g e n e r a d a p a r a d i c h o c u á d r u p l o , lle v a n d o s im p l e ­
m e n te la c u e n t a d e l n ú m e r o d e p a la b ra s u tiliz a d a s p a r a las in s tru c c io n e s g e n e ra d a s
h a s ta e n to n c e s. E sta c u e n t a se p u e d e c o n s e r v a r e n la m a tr iz d e c u á d r u p lo s (e n u n
c a m p o a d ic io n a l), a s í q u e si se e n c u e n t r a u n a re fe re n c ia c o m o j : g o t o /, e i es m e ­
n o r q u e y. el n ú m e r o del c u á d r u p l o e n c u rs o , se p u e d e g e n e ra r s im p le m e n te u n a ins­
tr u c c ió n d e s a lto c o n la d ire c c ió n o b je to igual a la lo c alid a d d e m á q u in a d e la p r i­
m e r a in s tru c c ió n e n el c ó d ig o p a r a el c u á d r u p l o /. S in e m b a r g o , si el s a lto es hacia
5.»2 G E N E R A C IO N D E C O D IG O

a d e la n te , d e m o d o q u e i s u p e r a a j , h a y q u e g u a r d a r e n u n a lisia p a r a el c u á d r u p lo
i l a p o s i c i ó n d e la p r i m e r a i n s t r u c c i ó n d e m á q u i n a g e n e r a d a p a r a e l c u á d r u p l o j .
D e s p u é s , c u a n d o s e p r o c e s e e l c u á d r u p l o i, s e r e l l e n a la l o c a l i d a d d e m á q u i n a a p r o ­
p i a d a p a r a t o d a s la s i n s t r u c c i o n e s q u e s e a n s a l t o s h a c i a a d e l a n t e a i.
' * ” — ■■ ' ■ ■■ ' ■ - -------

S e le c c ió n de in stru ccio n es

L a n a t u r a l e z a d e l c o n j u n t o d e i n s t r u c c i o n e s d e la m á q u i n a o b j e t o d e t e r m i n a la d i ­
f i c u l t a d d e la s e l e c c i ó n d e i n s t r u c c i o n e s . E s i m p o r t a n t e q u e e l c o n j u n t o d e i n s t r u c ­
c i ó n s e a u n i f o r m e v c o m p l e t o . S i la m á q u i n a o b j e t o n o a p o y a c a d a t i p o d e d a t o s d e
u n a m a n e r a u n i f o r m e , e n t o n c e s c a d a e x c e p c ió n a la re g la g e n e r a l e x ig e u n t r a t a ­
m i e n t o e s p e c i a l.
L a s v e l o c i d a d e s d e la s i n s t r u c c i o n e s y la s e x p r e s i o n e s p a r t i c u l a r e s d e la m á q u i n a
s o n o t r o s f a c t o r e s i m p o r t a n t e s . S i n o s e t i e n e e n c u e n t a la e f i c i e n c i a d e l p r o g r a m a
o b j e t o , la s e l e c c i ó n d e i n s t r u c c i o n e s e s s e n c i l l a . P a r a c a d a t i p o d e p r o p o s i c i ó n d e t r e s
d i r e c c i o n e s , s e p u e d e d i s e ñ a r u n e s q u e l e t o d e c ó d i g o q u e p e r f i l a el c ó d i g o o b j e t o q u e
h a d e g e n e ra rs e p a r a e sa c o n s tru c c ió n . P o r e je m p lo , c a d a p ro p o s ic ió n d e tre s d ire c ­
c i o n e s d e la f o r m a x : = y + z , d o n d e x , y y z s o n a s i g n a d a s e s t á t i c a m e n t e , s e p u e d e
tr a d u c ir a la s e c u e n c ia d e c ó d ig o

MOV y,R0 /* carg ar y en e l re g is tro RO */


ADD z , RO / * sum ar z a RO */
MOV R 0 ,x / * a lm a c e n a r RO e n x */

D e s g ra c ia d a m e n te , e s ta c la se d e g e n e r a c ió n d e c ó d ig o , p r o p o s ic ió n a p r o p o s ic ió n , a
m e n u d o p r o d u c e c ó d i g o d e m a l a c a l i d a d . P o r e j e m p l o , la s e c u e n c i a d e p r o p o s i c i o ­
nes

a ¡= b + c
d := a + e

se p o d ría tra d u c ir a

MOV b , R O
ADD c , R O
MOV R O , a
MOV a , R O
ADD e , RO
MOV R O , d

A q u í , la c u a r t a p r o p o s i c i ó n e s r e d u n d a n t e , y t a m b i é n la t e r c e r a si a n o s e u ti liz a
posteriormente.
I a c a lid a d del c ó d ig o g e n e ra d o v ie n e d e te r m in a d a p o r su v e lo c id a d y ta m a ñ o .
I ’n a m a q u i n a o b j e t o c o n u n c o n j u n t o d e i n s t r u c c i o n e s r i c o p u e d e p r o p o r c i o n a r v a ­
n o s m o d o s d e a p l i c a r u n a d e t e r m i n a d a o p e r a c i ó n . C o m o p u e d e h a b e r g r a n d e s d i-
l n c im a s d e c o sto s e n tr e d is tin ta s im p la n ta c io n e s , u n a tr a d u c c ió n in g e n u a d el
c ó d ig o in te rm e d io p u e d e c o n d u c ir a u n c ó d ig o o b je to c o rre c to p e ro in a c e p ­
t a b l e m e n t e i n e f i c a z . P o r e j e m p l o , s i la m á q u i n a o b j e t o t i e n e u n a i n s t r u c c i ó n d e “ i n ­
c r e m e n t o ” ( I N C ) , e n t o n c e s la p r o p o s i c i ó n d e t r e s d i r e c c i o n e s a : = a + l s e p u e d e i m ­
p la n ta r m á s e f i c i e n t e m e n t e m e d i a n t e la i n s t r u c c i ó n s im p l e IN C a , e n lu g a r d e
9.1 ASPECTOS DEL DISEÑO DE U N G E N E R A D O R DE C O D IG O 533

m e d ia n te u n a se c u e n c ia m á s o b v ia q u e c a rg u e a e n u n reg istro , a ñ a d e u n o al regis­


tr o . y d e s p u é s v u elv a a a l m a c e n a r el r e s u lta d o e n a:

MOV a , RO
ADD #1, RO
MOV RO, a

L as v e lo cid ad es d e la s in s tr u c c io n e s s o n n ecesarias p a r a d is e ñ a r b u e n a s se cu en cias


d e c ó d ig o p e ro , d e s g ra c ia d a m e n te , e s difícil o b te n e r in f o r m a c ió n e x a c ta d e los tie m ­
p o s d e eje c u c ió n . D e c id ir c u á l es la m e jo r s e c u e n c ia d e c ó d ig o d e m á q u i n a p a r a u n a
d e t e r m in a d a c o n s tr u c c ió n d e tr e s d ire c c io n e s ta m b ié n p u e d e ex ig ir c o n o c e r el c o n ­
te x to e n el q u e a p a re c e e s a c o n s tr u c c ió n . E n la secció n 9 .1 2 se e s tu d ia n h e r r a m i e n ­
ta s p a r a c o n s tr u i r se le c to re s d e in stru c c io n e s.

Asignación de registros

L as in s tr u c c io n e s q u e im p lic a n o p e r a n d o s e n reg istro s s o n g e n e r a lm e n te m á s c o rta s


y rá p id a s q u e las d e o p e r a n d o s e n m e m o r ia . P o r t a n t o , u tiliz a r e f ic ie n te m e n te los
reg istro s es f u n d a m e n ta l p a r a g e n e r a r u n b u e n c ó d ig o . El uso d e reg istro s se d iv id e
a m e n u d o e n d o s su b p ro b le m a s:

1. D u r a n te la asignación d e los registros , se s e le c c io n a el c o n j u n t o d e v a ria b le s q u e


re sid irá e n los registros e n u n m o m e n t o del p ro g ra m a .

2. D u r a n te u n a fase p o s te rio r d e asignación a los registros , se escoge el reg istro es­


p ecífico e n el q u e re s id irá u n a variable.

E s d ifícil e n c o n t r a r u n a a s ig n a c ió n ó p t i m a d e reg istro s a v ariab les, in c lu s o co n


v a lo re s e n u n s o lo reg istro . M a t e m á t i c a m e n t e , el p r o b le m a e s N P c o m p le to . E ste
p r o b le m a se c o m p lic a a ú n m á s p o r q u e el hardw are , el s is te m a o p e r a tiv o o a m b o s,
en la m á q u in a o b je to p u e d e n ex ig ir q u e se c u m p la n c ie rta s c o n v e n c io n e s del uso d e
registros.
A lg u n a s m á q u in a s e x ig en parejas d e registros ( u n re g istro c o n n ú m e r o p a r y el
sig u ie n te c o n n ú m e r o im p a r ) p a r a a lg u n o s o p e r a n d o s y resu ltad o s. P o r e je m p lo , en
las m á q u in a s IB M S is te m a /3 7 0 la m u ltip lic a c ió n y la d iv is ió n d e e n t e r o s in c lu y e n
p a re ja s d e registros. L a in s tr u c c ió n d e m u ltip lic a c ió n e s d e la fo rm a

M x, y

d o n d e x , el m u ltip lic a n d o , es el re g istro p a r d e u n a p a re ja d e reg istro s p a r - im p a r . El


v a lo r d e l m u ltip lic a n d o se t o m a d e l re g istro i m p a r d e la p a re ja . El m u ltip lic a d o r y
es u n so lo registro. El p r o d u c t o o c u p a to d a la p a re ja d e l registro.
L a in s tr u c c ió n d e d iv is ió n e s d e la fo rm a

D x, y

d o n d e el d iv id e n d o d e 6 4 b its o c u p a u n a p a re ja d e reg istro s p a r e i m p a r c u y o regis­


tr o p a r es x ; y r e p re s e n ta al d iv iso r. D e s p u é s d e la d iv isió n , el re g istro p a r c o n tie n e
el re s to y el re g istro i m p a r el co cien te.
C o n sid éren se a h o r a las se cu en cias d e c ó d ig o d e tres d ire c c io n e s d e la figura 9.2(a)
y (b), e n las q u e la ú n ic a d ife re n c ia es el o p e r a d o r d e la s e g u n d a p ro p o s ic ió n . E n la
figura 9 .3 se d a n las s e c u e n c ia s m á s c o r ta s e n c ó d ig o e n s a m b la d o r p a r a (a ) y (b).
534 G E N E R A C IO N DE C O D IG O

a + b t := a + b
t * c t := t + c
t / d t := t / d

(a) (b)

F ig . 9 . 2 . Dos secuencias de código de tres direcciones.

R/representa al registro i. ( s r d a 1 R O , 3 2 desplaza al d ivid en d o dentro de R l y


e lim in a r o de m odo que todos lo s bits son iguales al bit de signo.) l , s t y A signi­
fican carga (lo a d ), alm acena (store) y sum a ( a d d \ respectivam ente. Obsérvese que
la opción óptim a para el registro en el que debe cargarse a depende de lo qu e fin al­
m ente le o cu rra a t . E n la sección 9 .7 se estudian estrategias para la asignación de
los registros.

L R l, a L RO, a
A R l, b A RO, b
M RO, c A RO, c
D RO, d SRD A RO, 32
ST R l, t D RO, d
ST R l, t

(a) (b)

F ig . 9 . 3 . Secuencias óptimas de código de m áquina.

E le c c ió n d el o rd en d e e v a lu a c ió n

F1 orden en el que se realicen los cálcu lo s puede v a ria r la eficiencia del código ob­
jeto. A lgunos ordenam ientos de los cálculo s necesitan m enos registros que otros para
guardar resultados in term edios, co m o se verá m ás adelante. E legir u n orden m eior
es otro pro b lem a d ifíc il, N P co m pleto . A l p rin c ip io se evitará el pro b lem a gene­
rando código para las proposiciones de tres direcciones en el orden en que hayan
sido producidas p o r el generador de código interm edio.

E n fo q u e s en la g e n e r a c ió n d e c ó d ig o

S in d u da, el c rite rio m ás im portante para un generador de có d igo es que pro duzca
código correcto, dado el núm ero de casos especiales co n que puede encontrarse. Su­
poniendo qu e sea correcto, d ise ñ ar u n generador de código para que sea fá c il de
aplicar, com probar y m antener es un im portante objetivo de diseño.
La sección 9.6 contiene un algoritm o directo para generación de código que u ti­
liza in fo rm ació n sobre los usos posteriores de un operando para generar código para

1 Shift R ight D o u b le A rithm etic.


9.2 LA M A Q U I N A O B J E T O 535

u n a m á q u in a d e registros. El a lg o r itm o c o n s id e r a c a d a p ro p o s ic ió n p o r tu r n o , c o n ­
s e r v a n d o los o p e r a n d o s e n reg istro s m ie n tr a s sea posible. Se p u e d e m e jo r a r el re s u l­
ta d o d e d ic h o g e n e r a d o r d e c ó d ig o m e d ia n te técnicas d e o p tim a c ió n global tales c o m o
las e s tu d ia d a s e n la secció n 9.9.
L a se c c ió n 9 .7 in t r o d u c e a lg u n a s té c n ic a s p a r a m e jo r a r el u s o d e los reg istro s
c o n s id e r a n d o el flu jo del c o n tr o l e n el c ó d ig o in te r m e d io . El én fasis se c o n c e n t r a en
la asig n ac ió n d e reg istro s p a r a o p e r a n d o s m u y u tiliz a d o s e n los lazos in te rn o s.
L as se c c io n e s 9 .1 0 y 9.11 p re s e n ta n a lg u n a s té c n ic a s d e selecció n d e c ó d ig o d i­
rig idas p o r á rb o le s q u e facilitan la c o n s tr u c c ió n d e g e n e r a d o r e s d e c ó d ig o red irec cio -
n a b le . S e h a n tr a s la d a d o a n u m e r o s a s m á q u in a s a lg u n a s v e rs io n e s d e P C C . el c o m ­
p il a d o r t r a n s p o r t a b l e d e C . p r o d u c i d a s c o n d i c h o s g e n e r a d o r e s d e c ó d ig o . L a
d is p o n ib ilid a d d e l s is te m a o p e r a tiv o U N I X e n u n a v a rie d a d d e m á q u in a s d e b e m u ­
c h o a la tra n s p o r ta b ilid a d d e P C C . E n la secció n 9 .1 2 se m u e s tr a c ó m o la g e n e ra ­
c ió n d e c ó d ig o se p u e d e c o n s id e r a r c o m o u n p r o c e s o d e re e s c ritu ra d e árb o le s.

9 .2 L A M A Q U I N A O B J E T O

L a fam iliarid ad c o n la m á q u in a o b je to y su c o n ju n to d e in s tru c c io n e s es u n prerre-


q u isito p a ra d is e ñ a r u n b u e n g e n e ra d o r d e código. D e sg ra c ia d a m e n te , en u n estu d io
general d e la g e n e ra c ió n d e c ó d ig o n o es p o sib le d e scrib ir los m atices d e n in g u n a m á ­
q u in a o b je to ta n d e ta lla d a m e n te c o m o p a ra p o d e r g e n e ra r b u e n c ó d ig o p a ra u n
le n g u a je c o m p le to e n d ic h a m á q u in a . E n este c a p itu lo , se u tiliz a rá c o m o c o m p u t a ­
d o r o b je to u n a m á q u in a d e registros re p re se n ta tiv a d e varios m in ic o m p u ta d o re s . Sin
e m b a rg o , las té c n ic a s d e g e n e ra c ió n d e c ó d ig o d e este c a p ítu lo ta m b ié n se h a n u ti­
liz a d o e n m u c h a s o tr a s clases d e m á q u in a s .
E ste c o m p u t a d o r o b je to es u n a m á q u i n a d irc c c io n a b le p o r b ytes. c o n p a la b ra d e
c u a t r o b y te s y n reg istro s g en erales. R 0 , R l Rn - 1 . T ie n e in s tru c c io n e s d e dos
d ire c c io n e s d e la fo rm a

op fu e n te , destino

d o n d e op e s u n c ó d ig o d e o p e ra d o r, y fu e n te y destino s o n c a m p o s d e d a to s. T ie n e
los sig u ie n tes c ó d ig o s d e o p e r a c io n e s ( e n tr e otro s):

MOV (m u e ve fu e n te a dest i no)


add ( s u m a fu e n te a destino)
SUB (re s ta fu e n te d e destino)

C u a n d o se a n n e cesarias, se in tr o d u c ir á n o tra s in stru c c io n e s.


L o s c a m p o s fu e n te y d e s tin o n o son lo s u f ic ie n te m e n te larg o s c o m o p a r a g u a rd a r
d ire c c io n e s d e m e m o r ia , a s í q u e a lg u n o s p a tr o n e s d e b its e n esto s c a m p o s esp ecifi­
c a n q u e las p a la b r a s s itu a d a s d e s p u é s d e u n a in s tr u c c ió n c o n tie n e n o p e r a n d o s o d i­
re c c io n e s o a m b o s . L a fu e n te y el d e s tin o d e u n a in s tru c c ió n se especifican c o m b i­
n a n d o reg istro s y p o s ic io n e s d e m e m o r i a c o n m o d o s d e d ir e c c i o n a m i e n t o . E n la
s ig u ie n te d e s c r ip c ió n . contenido{a) in d ic a el c o n t e n i d o d e l re g is tro o d ir e c c ió n de
m e m o r ia re p r e s e n ta d o p o r a .
536 G EN ER A C IO N DE CO DIG O

L o s m o d o s d e d ir e c c io n a m ic n to j u n t o c o n s u s f o r m a s e n le n g u a je e n s a m b la d o r
y c o s to s a s o c ia d o s s o n c o m o sigue:

M odo Fo r m a D irección C osto A ñadido


absoluto M m

registro R R 0
in d iza d o C’ (R) c + contenido (R)
registro indirecto *R contenido (R) 0
in d iza d o indirecto *c (R) contenido (c + contenido (R))

U n a p o sic ió n d e m e m o r ia M o u n re g istro R se r e p re s e n ta a sí m i s m o c u a n d o se u ti­


liza c o m o f u e n te o c o m o d e s tin o . P o r e je m p lo , la in s tru c c ió n

MOV RO, M

g u a r d a el c o n t e n id o del reg istro RO e n la p o sic ió n d e m e m o r ia M.


U n d e s p la z a m ie n to d e d ir e c c ió n c d e s d e el v a lo r d e l reg istro R se e sc rib e c o m o
c (R). P o r ta n to ,
MOV 4 ( RO) , M

a lm a c e n a el v alo r

contenido ( 4 + contenido {RO))


e n la p o sic ió n d e m e m o r ia M.
L as v e r s io n e s in d ir e c ta s d e lo s d o s ú lt im o s m o d o s se in d ic a n m e d i a n t e el p re ­
fijo *. Así,

MOV * 4 ( R O ) , M

a l m a c e n a el v alo r

contenido ( contenido (4 + contenido (RO)))

e n la p o sic ió n d e m e m o r ia M.
U n m o d o fin al d e d ir e c c io n a m ie n to p e r m ite q u e la f u e n te sea u n a c o n s ta n te :

M odo Fo r m a C onstante Costo A ñadido


literal # c c 1

P o r ta n to , la in stru c c ió n

MOV # 1 , RO

ca rg a la c o n s ta n te 1 e n el re g istro RO.

C o s to s d e la s in stru c c io n e s

S e c o n s id e r a q u e el c o s to d e u n a in s tr u c c ió n e s u n o m á s los c o s to s a s o c ia d o s c o n los
m o d o s d e d ire c c ió n f u e n te y d e s tin o ( q u e se in d ic a n c o m o “c o s to a ñ a d i d o " e n las
ta b la s d e m o d o s d e d ir e c c io n a m ie n to a n te rio re s ). E ste c o s to c o r r e s p o n d e a la longi­
tu d (en p a la b ra s) d e la in s tr u c c ió n . L o s m o d o s d e d ir e c c io n a m ie n to q u e im p lic a n
9 .2 LA M A Q U IN A OBJETO 537

r e g is tro s t i e n e n c o s t o c e r o , m i e n t r a s q u e l o s d e u n a p o s i c i ó n d e m e m o r i a o u n a li-
tc ra l t i e n e n c o s t o u n o , p o r q u e d i c h o s o p e r a n d o s t i e n e n q u e a l m a c e n a r s e c o n la in s -
trucción.
S i el e s p a c i o e s i m p o r t a n t e , e n t o n c e s e v i d e n t e m e n t e h a y q u e r e d u c i r a l m í n i m o
la l o n g i t u d d e la s i n s t r u c c i o n e s . S in e m b a r g o , e s t o t i e n e u n a v e n t a j a a d i c i o n a l i m ­
p o r t a n t e . E n l a m a y o r í a d e la s m á q u i n a s y d e la s i n s t r u c c i o n e s , e l t i e m p o e m p l e a d o
e n t r a e r u n a i n s t r u c c i ó n d e l a m e m o r i a e x c e d e a l t i e m p o e m p l e a d o e n e j e c u t a r la
i n s t r u c c i ó n . P o r t a n t o , s i s e m i n i m i z a la l o n g i t u d d e la s i n s t r u c c i o n e s t a m b i é n se
t i e n d e a m i n i m i z a r a s i m i s m o el t i e m p o e m p l e a d o e n e j e c u t a r l a s i n s t r u c c i o n e s 2. A
c o n tin u a c ió n se p r e s e n ta n a lg u n o s e je m p lo s .

I. L a i n s t r u c c i ó n MOV R 0 , R 1 c o p i a e l c o n t e n i d o d e l r e g i s t r o RO e n el r e g i s t r o R l .
E sta in s tr u c c ió n tie n e c o s to u n o , p o r q u e o c u p a s ó lo u n a p a la b r a d e m e m o r ia .

.!. L a i n s t r u c c i ó n ( d e a l m a c e n a m i e n t o ) MOV R 5 , M c o p i a e l c o n t e n i d o d e l r e g is tr o
R 5 e n l a l o c a l i d a d d e m e m o r i a M. E s t a i n s t r u c c i ó n t i e n e c o s t o d o s , p o r q u e la
d i r e c c i ó n d e la p o s i c i ó n d e m e m o r i a M e s t á e n la p a l a b r a q u e s ig u e a la i n s t r u c ­
c ió n .

L L a in s tru c c ió n add # 1 , R 3 s u m a la c o n s t a n t e 1 a l c o n t e n i d o d e l r e g i s t r o 3 , y
t i e n e c o s t o d o s , p o r q u e la c o n s t a n t e 1 d e b e a p a r e c e r e n la s i g u i e n t e p a l a b r a d e s ­
p u é s d e la i n s t r u c c i ó n .

4. L a in s tru c c ió n sub 4 ( R O ) , * 1 2 ( R l ) a l m a c e n a el v a l o r

c o n te n id o (c o n te n id o ( 1 2 + c o n te n id o ( R l ) ) ) - c o n te n id o (c o n te n id o ( 4 + RO))

e n el d e s t i n o * 1 2 ( R l ) . E l c o s t o d e e s t a i n s t r u c c i ó n e s tr e s , p o r q u e la s c o n s t a n ­
te s 4 y 12 s e a l m a c e n a n e n la s s i g u i e n t e s d o s p a l a b r a s d e s p u é s d e la i n s t r u c c i ó n .

A l g u n a s d e la s d i f i c u l t a d e s d e g e n e r a r c ó d i g o p a r a e s t a m á q u i n a s e v e n c u a n d o
se c o n s i d e r a e l c ó d i g o q u e s e d e b e g e n e r a r p a r a u n a p r o p o s i c i ó n d e t r e s d i r e c c i o n e s
d e la f o r m a a : = b + c , d o n d e b y c s o n v a r i a b l e s s i m p l e s e n d i f e r e n t e s p o s i c i o n e s
d e m e m o r ia in d ic a d a s p o r e s to s n o m b r e s . E sta p r o p o s ic ió n se p u e d e im p l a n t a r
con m u c h a s se c u e n c ia s d is tin ta s d e in s tru c c io n e s . A q u í se p re s e n ta n u n o s c u a n -
e je m p lo s :

MOV b, RO
ADD c, RO c o sto = 6
MOV RO, a

MOV b, a
c o sto = 6
ADD c, a

El criterio de costo debe ser más instructivo qu e realista. P erm itir una palabra com pleta para una
instrucción simplifica la regla para d eterm in ar el costo. U n a estim ación m ás exacta del tiem po em ­
pleado por una instrucción lom aria en cuenta si un a instrucción exige o no q u e el valor de un ope­
rando. adem ás d e su dirección (que se encuentra con la instrucción), se traiga d e la memoria.
538 G E N E R A C IO N D E CODIGO

S u p o n ie n d o q u e RO. R l y R2 c o n tie n e n las d ire c c io n e s d e a. b y c . re s p e c tiv a m e n te ,


se p u e d e utilizar:

3. MOV . R l , *R0 costo = 2


ADD * R 2 , *R0

S u p o n ie n d o q u e R l y R2 c o n tie n e n los v alo res d e b y c . re s p e c tiv a m e n te , y q u e n o


se n e c e sita el v a lo r d e b d e s p u é s d e la a s ig n a c ió n , se p u e d e utilizar:

4- ADD R2' R1 c o s to = 3
MOV *R1, a

Se o b s e rv a q u e p a r a g e n e ra r b u e n c ó d ig o p a r a esta m á q u in a , h a y q u e u tiliz a r sus


c a p a c id a d e s e fic ie n te m e n te . E s p referib le c o n s e r v a r el v a lo r d e la d o iz q u ie r d o o d e
la d o d e r e c h o d e un n o m b r e e n u n reg istro , si e s posible, si se v a a u tiliz ar en u n
f u tu r o c erca n o .

9 .3 A D M IN IS T R A C IO N D E L A M E M O R IA D U R A N T E L A E J E C U C IO N

C o m o se vio e n el c a p itu lo 7, la s e m á n tic a d e los p r o c e d im ie n to s e n u n len g u aje


d e t e r m in a c ó m o se e n la z a n los n o m b r e s c o n la m e m o r ia d u r a n te la eje c u c ió n . La
in f o r m a c ió n n ec e sa ria d u r a n te u n a e je c u c ió n d e u n p r o c e d im ie n to se c o n s e rv a en
u n b l o q u e d e m e m o r i a l l a m a d o r e g is tr o d e a c t i v a c i ó n : la m e m o r i a c o r r e s p o n ­
d ie n te a los n o m b r e s lo c a le s al p r o c e d i m i e n t o t a m b i é n a p a r e c e e n el re g is tro d e
a c tiv a c ió n .
E n esta secció n se e s tu d ia q u é c ó d ig o d e b e g e n e ra rs e p a r a a d m in is tr a r los regis­
tr o s d e a c tiv a c ió n e n el m o m e n t o d e la e je c u c ió n . E n la se c c ió n 7 .3 se e s tu d ia r o n
d o s e stra te g ia s e s t á n d a r p a r a la a s ig n a c ió n d e m e m o r ia : la a s ig n a c ió n e s tá tic a y la
asig n ac ió n p o r m e d io d e u n a pila. E n la a s ig n a c ió n está tic a , se fija la p o sic ió n d e un
registro d e a c tiv a c ió n en la m e m o r ia d u r a n te la c o m p ila c ió n . E n la a s ig n a c ió n p o r
m e d io d e u n a pila, p a r a c a d a e je c u c ió n d e u n p r o c e d im ie n to se in tr o d u c e u n n u e v o
registro d e activ ación en la pila. El registro se saca c u a n d o la a c tiv ació n finaliza. M ás
a d e la n te se c o n s id e r a r á c ó m o el c ó d ig o o b je to d e u n p r o c e d im ie n to p u e d e h a c e r re­
fe re n c ia a los o b je to s d e d a to s d e los reg istro s d e a c tiv a c ió n .
C o m o se vio e n la sección 7 .2 . u n re g istro d e a c tiv a c ió n p a r a u n p r o c e d im ie n to
tie n e c a m p o s p a r a g u a r d a r p a r á m e tr o s , re s u lta d o s, in f o r m a c ió n del e s ta d o d e la m á ­
q u in a . d a to s locales, v alo res te m p o ra le s , etc. E n esta sección, se ilu s tra n las e s tra te ­
gias d e asig n ac ió n u tiliz a n d o el c a m p o d e l e s ta d o d e la m á q u in a p a r a c o n s e r v a r la
d ire c c ió n d e r e to r n o y el c a m p o p a r a los d a to s locales. Se s u p o n e q u e los o tro s c a m ­
p o s se m a n e ja n c o m o se v io en el c a p ítu lo 7.
C o m o la a s ig n a c ió n y la d esa sig n a c ió n d e los registros d e a c tiv a c ió n d u r a n te la
e je c u c ió n se p r o d u c e c o m o p a rte d e las s e c u e n c ia s d e lla m a d a y d e r e to r n o d e un
p r o c e d im ie n to , la a te n c ió n se c o n c e n tr a e n las sig u ie n te s p ro p o s ic io n e s d e tr e s d i­
recciones:
9.3 A D M I N I S T R A C I O N D E L A M E M O R I A D U R A N T E LA E J E C U C I O N 539

1. c a li.
2. re tu rn ,
3. halt. y
4. a c c i ó n , q u e c o n tie n e o tra s p ro p o sic io n e s.

P o r e je m p lo , el c ó d ig o d e tres d ire c c io n e s p a ra los p r o c e d im ie n to s c y p d e la


figura 9 .4 c o n tie n e p re c is a m e n te estas clases d e p ro p o sic io n e s. El t a m a ñ o y la dis­
p o sició n d e los reg istro s d e a c tiv a c ió n se c o m u n ic a n al g e n e r a d o r d e c ó d ig o a través
d e la in f o r m a c ió n d e la ta b la d e s ím b o lo s s o b re los n o m b r e s . P a r a v erlo c o n clari­
d a d , en la figura 9 .4 se m u e s tra la d isp o sic ió n en lu g a r d e la fo rm a d e las e n tra d a s
d e la ta b la d e sím b o lo s.

C ó d i g o d e T res R egistro d e A ctivación R e g i s t r o di A c t i v a c i ó n


D irecciones para c (64 bytes) para p (88 bytcs)

/* código para c */ 0: dirección de retorno 0: dirección de retorno

acciónt 8: 4:
arr
cali p
acción^ f buf
56: i
halt ■
60: i
«#
/* código para p */
acción, 84: n
return

Fig. 9.4. E n trad a para u n g en erad o r d e código.

S e a s u m e q u e la m e m o r ia d u r a n te la e je c u c ió n se d iv id e e n á re a s p a ra el cód igo ,
d a to s estático s y u n a pila, c o m o e n la sección 7 .2 ( a q u í n o se u tiliza el á r e a ad ic io n a l
p a r a u n m o n tíc u lo d e esa sección).

A sig n ació n e s tá tic a

C o n s id é re s e el c ó d ig o n e c e sa rio p a r a a p lic a r la asig n ac ió n está tic a . U n a p ro p o sició n


c a l i e n el c ó d ig o in te r m e d io se im p la n ta m e d ia n te u n a s e c u e n c ia d e d o s in s tru c ­
c io n e s d e la m á q u in a o b je to . U n a in s tr u c c ió n MOV g u a r d a la d ire c c ió n d e r e to r n o , y
u n a in s tr u c c ió n g o t o tr a n s f ie re el c o n t r o l al c ó d ig o o b je to d e l p r o c e d i m ie n t o lla ­
m ad o :

mov + 2 0 . H am ado.área estática


GOTO Ham ado.área código

L o s a tr ib u to s Ham ado.área estática y H am ado.área código s o n c o n s ta n te s q u e se re­


fieren a la d ire c c ió n del registro d e a c tiv a c ió n y a la p r im e r a in s tru c c ió n del p ro c e ­
d im ie n to lla m a d o , re s p e c tiv a m e n te . L a f u e n te # a q u í 4- 2 0 e n la in s tru c c ió n MOV es
la d ir e c c ió n d e r e t o r n o literal y e s la d ir e c c ió n d e la in s tr u c c ió n q u e sigue a la
in s tru c c ió n GOTO. (S egún el e s tu d io d e la Sec. 9 . 2 . las tres c o n s ta n te s m á s las d o s
in s tru c c io n e s e n la se c u e n c ia d e lla m a d a c u e s ta n c in c o p a la b ra s a 2 0 bytes.)
540 G E N E R A C IO N D E CO DIGO

El c ó d ig o p a r a u n p r o c e d im ie n to fin a liz a c o n u n r e t o m o al p r o c e d im ie n to q u e
e fe c tú a la lla m a d a , e x c e p to q u e el p r im e r p r o c e d im ie n to n o recib e n in g u n a lla m a d a ,
asi q u e su in s tr u c c ió n fin al e s h a l t , q u e s e g u r a m e n te d e v u e lv e el c o n tr o l al sistem a
o p e ra tiv o . U n r e to r n o del p r o c e d im ie n to lla m a d o se im p la n ta c o n

goto 'lla m a d o Á r e a estática

q u e tra n sfie re el c o n tro l a la d ire c c ió n g u a r d a d a al p r in c ip io d e l reg istro d e a c tiv a ­


ción.

E je m p lo 9 .1 . El c ó d ig o d e la figura 9 .5 se c o n s tr u y e a p a r ti r d e los p r o c e d im ie n to s
c y p d e la figura 9.4. Se u tiliz a la s e u d o in s tru c c ió n A C C IO N p a r a i m p l a n t a r la p ro ­
p o sició n a c c i ó n , q u e r e p re s e n ta el c ó d ig o d e tres d ire c c io n e s q u e n o es re le v a n te
p a ra este e s tu d io . A r b itr a r ia m e n te in ic ia el c ó d ig o p a r a esto s p r o c e d im ie n to s e n las
d ire c c io n e s 1(X) y 2 0 0 . re s p e c tiv a m e n te , y se s u p o n e q u e c a d a in s tru c c ió n A C C IO N
o c u p a 2 0 bytes. L o s reg istro s d e a c tiv a c ió n p a r a el p r o c e d im ie n to se a s ig n a n e s tá ti­
c a m e n te c o m e n z a n d o e n la lo c alid a d 3 0 0 y 3 6 4 , re s p e c tiv a m e n te .
L as in s tru c c io n e s q u e c o m ie n z a n e n la d ire c c ió n 100 im p la n t a n las p ro p o s ic io ­
nes

accióni; cali p; acción2; halt


del p r i m e r p r o c e d i m i e n t o c . P o r t a n t o , la e je c u c ió n c o m i e n z a c o n la in s tr u c c ió n
a c c i ó n i e n la d ire c c ió n 1 0 0 . L a in s tr u c c ió n MOV e n la d ir e c c ió n 1 2 0 g u a r d a la ins-

/* c ó d ig o p ara c */
100: ACCIO N,
120: MOV # 1 4 0 , 364 / * g u a r d a la d ir e c c ió n d e r e t o m o 140 * /
132: GOTO 200 I* lla m a d a a p * /
140: A C C IO N ,
160: HALT
• • •

/ * c ó d ig o p ara p * /
200: ACCION 3
220: GOTO * 3 6 4 /* regresa a la d ir e c c ió n g u a r d a d a e n la lo c a lid a d 3 6 4 * /

/ * 3 0 0 a 3 6 3 c o n t ie n e n e l re g istro d e a c t iv a c ió n p a r a c • /
300: / * d ir e c c ió n d e r e to r n o * /
304: / * d a t o s lo c a le s p a r a c * /

/ * 3 6 4 a 4 5 1 c o n t ie n e n e l r e g istr o d e a c t iv a c ió n p ara p */
364: / * d ir e c c ió n d e r e t o m o * /
368: / * d a t o s lo c a le s p a r a p * /

F ig. 9 . 5 . C ó d i g o o b j e t o p a r a l a e n t r a d a d e la fig u ra 9 . 4 .
9 .3 A D M IN IST R A C IO N DE LA M E M O R IA DURANTE LA E JEC U C IO N 541

t r u c c i ó n d e r e t o m o 1 4 0 e n e l c a m p o d e l e s t a d o d e l a m á q u i n a , q u e e s la p r i m e r a
p a la b ra e n el re g istro d e a c tiv a c ió n d e p . L a in s tru c c ió n goto e n la d i r e c c i ó n 1 3 2
tra n sfie re el c o n tr o l a la p r im e r a in s tr u c c ió n d e l c ó d ig o o b je to d e l p r o c e d im ie n to
lla m a d o .
C o m o la s e c u e n c i a d e l l a m a d a a n t e r i o r g u a r d ó 1 4 0 e n la d i r e c c i ó n 3 6 4 , * 3 6 4
r e p r e s e n t a a 1 4 0 c u a n d o s e e j e c u t a la p r o p o s i c i ó n goto e n la d i r e c c i ó n 2 2 0 . P o r
ta n to , el c o n tr o l re g re sa a la d ir e c c ió n 1 4 0 y s e r e a n u d a la e j e c u c i ó n d e l p r o ­
c e d im ie n to c . □

A sign ación por m ed io d e una pila

L a a s i g n a c i ó n e s t á t i c a s e p u e d e c o n v e r t i r e n a s i g n a c i ó n p o r m e d i o d e u n a p il a , u t i ­
liz a n d o d ire c c io n e s re la tiv a s d e m e m o r ia e n lo s re g is tro s d e a c tiv a c ió n . L a p o sic ió n
del re g is tro p a r a u n a a c tiv a c ió n d e u n p r o c e d i m i e n t o n o se c o n o c e h a s ta e l m o ­
m e n t o d e l a e j e c u c i ó n . E n l a a s i g n a c i ó n p o r m e d i o d e u n a p i l a , e s t a p o s i c i ó n se
g u a r d a g e n e r a l m e n t e e n u n r e g i s t r o , a s í q u e s e p u e d e a c c e d e r a la s p a l a b r a s d e l r e ­
g is tr o d e a c t i v a c i ó n m e d i a n t e d e s p l a z a m i e n t o s d e s d e e l v a l o r d e d i c h o r e g i s t r o . E l
m o d o d e d i r e c c i o n a m i e n t o i n d i z a d o d e la m á q u i n a o b j e t o d e s c r i t a e n e s t e c a p í t u l o
sirv e p a r a e s te p r o p ó s ito .
L a s d ire c c io n e s re la tiv a s e n u n re g istro d e a c tiv a c ió n se p u e d e n c o n s id e r a r c o m o
d e s p la z a m ie n to s d e s d e c u a lq u ie r p o s ic ió n c o n o c id a e n el re g istro d e a c tiv a c ió n , c o ­
m o se v io e n la s e c c ió n 7 .3 . C o n v ie n e u tiliz a r d e s p la z a m ie n to s p o s itiv o s m a n t e ­
n ie n d o e n u n re g istro S P u n a p u n t a d o r al c o m ie n z o d e l re g istro d e a c tiv a c ió n del
t o p e d e l a p il a . C u a n d o o c u r r e u n a l l a m a d a d e p r o c e d i m i e n t o , e l p r o c e d i m i e n t o q u e
h a c e la l l a m a d a i n c r e m e n t a S P y t r a n s f i e r e e l c o n t r o l a l p r o c e d i m i e n t o q u e r e c i b e la
l l a m a d a . D e s p u é s d e q u e e l c o n t r o l r e g r e s a a l a u t o r d e la l l a m a d a , d e c r e m e n t a S P ,
d e s a s ig n a n d o p o r t a n t o el re g is tro d e a c tiv a c ió n d e l p r o c e d i m i e n t o ll a m a d o '.
E l c ó d i g o p a r a el p r i m e r p r o c e d i m i e n t o i n i c i a l i z a la p i l a h a c i e n d o q u e S P a p u n t e
a l c o m i e n z o d e l á r e a d e la p i l a e n la m e m o r i a :

m o v # c o m ie n z o p ila , S P /* in ic ia liz a la p ila * /


c ó d ig o p a r a el p r im e r p ro c e d im ie n to
halt / * t e r m i n a la e j e c u c i ó n * /

U n a s e c u e n c i a d e l l a m a d a a u n p r o c e d i m i e n t o i n c r e m e n t a S P , g u a r d a la d i r e c c i ó n
d e r e t o r n o y t r a n s f i e r e el c o n t r o l a l p r o c e d i m i e n t o l l a m a d o :

a d d # lla m a d o r .ta m a ñ o r e g is tr o , S P
MOV # a q u í + 16, * S P /* g u a r d a la d ire c c ió n d e r e to r n o */
GOTO lla m a d o .á r e a c ó d ig o

E l a t r i b u t o lla m a d o r .ta m a ñ o r e g is tr o r e p r e s e n t a el t a m a ñ o d e u n r e g i s t r o d e a c t i v a ­
c i ó n , d e m o d o q u e la i n s t r u c c i ó n a d d d e j a S P a p u n t a n d o a l c o m i e n z o d e l s i g u i e n t e
re g istro d e a c tiv a c ió n . L a f u e n te # a q u í + 16 e n la i n s t r u c c i ó n MOV e s la d i r e c c i ó n
d e la i n s t r u c c i ó n d e s p u é s d e g o t o ; s e g u a r d a e n la d i r e c c i ó n a p u n t a d a p o r S P .

■' C o n d e s p l a z a m i e n t o s negativos, S P p o d r í a a p u n t a r al final d e la p i l a y el p r o c e d i m i e n t o l l a m a d o


p o d ría i n c r e m e n t a r SP.
542 G E N E R A C IO N DE C O D IG O

C ó d i g o d f .T r e s
D irecciones

/ * c ó d i g o p a r a s */
a c c ió n i
c a li q
a c c ió n 2
h a lt
/* c ó d ig o p a r a p • /
a c c ió n 3
re tu rn
/ * c ó d ig o p a r a q * /
a c c ió n 4
c a li p
a c c ió n 5
c a li q
a c c ió n 6
c a li q
re tu rn

Fig. 9.6. Código de tres direcciones para ilustrar la asignación por medio de una pila.

La secuencia de regreso consta de dos partes. El procedim iento llam ado trans­
fiere el control a la dirección de retorno utilizando
goto *0 ( S P ) /* retorno al llam ador */
La razón para u tilizar *0 ( S P ) en la instrucción g o t o es que se necesitan dos niveles
de indirección: 0 (SP) es la dirección de la prim era palabra en el registro de activa­
ción y * 0 ( S P ) es la dirección de regreso a llí guardada.
La segunda parte de la secuencia de regreso está en el autor de la llam ada, que
decrementa SP restableciendo así SP a su valor previo. Es decir, después de la subs­
tracción, SP apunta al com ienzo del registro de activación del autor de la llam ada:
sub # llam ador.tam añoregistro, SP
En la sección 7.3 hay un estudio más am plio de las secuencias de llam ada y de
los com prom isos en la división del trabajo entre los procedim ientos autor y receptor
de la llamada.

E jem p lo 9 .2 . E l program a de la figura 9.6 es una condensación del código de tres


direcciones para el program a en Pascal estudiado en la sección 7.1. E l p ro ced i­
miento c es recursivo, de m odo que puede haber más de una activación activa de c
a la vez.
Supóngase que se han determ inado los tam años de los registros de activación de
los procedim ientos o, p y c durante la com pilación com o otam , p ta m y ctam , res­
pectivamente. La prim era palabra en cada registro de activación contiene una direc­
ción de retorno. A rbitrariam ente se asume que el código para estos procedim ientos
com ienza en las direcciones 100, 200 y 300, respectivam ente, y que la pila com ienza
en 600. El código objeto para el program a de la figura 9.6 es com o sigue:
9.3 ADM INISTRAC IO N D F LA M E M O R I A D U R A N T E LA E J E C U C I O N 543

p código p ara o */
100 MOV # 6 0 0 , S P / * i n i c i a la p i l a * /
108 ACCIONi
128 add # oíam . sp / * c o m i e n z a la s e c u e n c i a d e l l a m a d a * /
136 MOV # 1 5 2 , *SP / * i n t r o d u c e la d i r e c c i ó n d e r e t o r n o * /
144 GOTO 3 0 0 / * l l a m a a c */
152 SUB # oíam , sp p restab lece sp */
160 A C C IO N .
180 HALT
• ••
/ • código p a ra p */
2 2 0 :: GOTO * 0 ( S P )
220: GOTO * 0 ( S P ) /* reto rn o */
• ••
p código p a ra c */
300 A C C IONj p s a l t o c o n d i c i o n a l a 4 5 6 +/
320 add sp
328 MOV # 3 4 4 , * S P p i n t r o d u c e la d i r e c c i ó n d e r e t o r n o * /
336 GOTO 2 0 0 p lla m a a p ♦/
344 sub # ctam , sp
352 A C C IO N 5
372 and # ctam . sp
380 MOV # 3 9 6 , * S P p i n t r o d u c e la d i r e c c i ó n d e r e t o r n o * /
388 GOTO 3 0 0 p llam a a c */
396 sub # c ta m , sp
404 ACCION*
424 add # c ta m , sp
432 MOV # 4 4 8 , *S P p i n t r o d u c e la d i r e c c i ó n d e r e t o r n o * /
440 GOTO 3 0 0 p llam a a c */
448 SUB # ctam, s p
456 GOTO * 0 ( S P ) p re to rn o */
• • •
600: p a q u í c o m i e n z a la p i l a * /

S e s u p o n e q u e A C C IO N 4 c o n t i e n e u n s a l t o c o n d i c i o n a l a la d i r e c c i ó n 4 5 6 d e la
s e c u e n c ia d e r e t o r n o d e c : d e lo c o n t r a r i o , el p r o c e d i m i e n t o r e c u r s iv o c e s tá c o n ­
d e n a d o a l l a m a r s e a sí m i s m o p a r a s i e m p r e . M á s a d e l a n t e , s e c o n s i d e r a u n e j e m p l o
d e u n a e j e c u c i ó n d e l p r o g r a m a e n e l q u e la p r i m e r a l l a m a d a d e c n o r e t o r n a i n ­
m e d i a t a m e n t e , p e r o sí las l l a m a d a s p o s t e r i o r e s .
Si Oíam, ptam y ctam s o n 2 0 . 4 0 y 6 0 . re s p e c tiv a m e n te , e n to n c e s S P se inicializa
c o n 6 0 0 . q u e e s la p r i m e r a d i r e c c i ó n d e la p i l a , m e d i a n t e la p r i m e r a i n s t r u c c i ó n en
la d i r e c c i ó n 100 . s p c o n t i e n e 6 2 0 j u s t o a n t e s d e q u e e l c o n t r o l s e t r a n s f i e r a d e o a
c . p o r q u e otam e s 2 0 . P o r t a n t o , c u a n d o c l l a m a a p . la i n s t r u c c i ó n e n la d i r e c c i ó n
3 2 0 i n c r e m e n t a S P a 6 8 0 . d o n d e c o m i e n z a el r e g is t r o d e a c t i v a c i ó n p a r a p ; S P v u e l v e
a 6 2 0 d e s p u é s d e q u e el c o n t r o l r e t o r n e a c . Si l a s s i g u i e n t e s d o s l l a m a d a s r e c u r s i v a s
d e c r e t o r n a n i n m e d i a t a m e n t e , el v a l o r m á x i m o d e s p d u r a n t e e s t a e j e c u c i ó n e s 6 80 .
544 G E N E R A C IO N DE C O D IG O

Obsérvese, sin em bargo, que la últim a posición de la p ila utilizada es 739 , puesto
que el registro de activación para c que com ienza en la posición 680 ocupa 60
bytes. G

D ir e c c io n e s para lo s n o m b r e s en tie m p o d e ejecu ció n

La estrategia de asignación de m em oria y la d istrib ució n de los datos locales en un


registro de activación para un procedim iento determ inan có m o se accede a las po­
siciones de m em oria de los nom bres. E n el cap ítu lo 8 se supuso que un nom bre en
una proposición de tres direcciones es realm ente un apuntador a una entrada de la
tabla de sím bolos para el nom bre. Este enfoque tiene una ventaja significativa; hace
m ás transportable el com pilador, ya que no hay que m o dificar la etapa in ic ia l au n ­
que el com pilador se traslade a una m áquin a distinta donde se necesite una organi­
zación distinta durante la ejecución (p o r ejem plo, el d isp la y se puede conservar en
registros en lugar de hacerlo en m em oria). P o r otra parte, generar la secuencia es­
pecífica de pasos de acceso m ientras se genera el código interm edio puede suponer
una ventaja im portante en un co m p ilad o r optim ador, ya que perm ite al com pilador
aprovechar detalles que n i siquiera vena en la proposición de tres direcciones sim ­
ples.
E n cu alq u ier caso, los nom bres deben sustituirse finalm ente p o r código para ac­
ceder a posiciones de m em oria. Por tanto, se consideran algunas elaboraciones de la
proposición de copia de tres direcciones sim ple x : = o . Después de procesar las de­
claraciones de un procedim iento, supóngase que la entrada de la tabla de sím bolos
para x contiene un a dirección relativa 12 para x . P rim ero considérese el caso en el
que x está en un área asignada estáticam ente y que com ienza en la dirección está­
tica. Entonces, la dirección real durante la ejecución de x es estática + 12. A unque
el co m p ilad o r puede finalm ente d eterm inar el va lo r de estática + 12 durante la
com pilación, la posición del área estática puede no conocerse cuando se genera el
código interm edio para acceder al nom bre. E n este caso, es razonable generar código
de tres direcciones para "c a lc u la r” estática + 12, sabiendo que este cálculo se efec­
tuará durante la fase de generación de código, o posiblem ente por el cargador, antes
de que se ejecute el program a. Entonces la asignación x : = o traduce a

e s t á t i c a [12) := 0

Si el área estática com ienza en la dirección 100, el código objeto para esta proposi­
ció n es

MOV # 0 , 11 2

Por otra parte, supóngase que el lenguaje es com o Pascal y qu e se utiliza un dis­
p la y para acceder a los nom bres no locales, com o se estudió en la sección 7.4 . Su­
póngase tam bién que el d isp la y reside en registros y que x es lo ca l a un procedi­
m iento activo cuyo apuntador al d isp la y está en el registro R 3. Entonces se puede
trad u cir la copia x : = 0 a las proposiciones de tres direcciones

t , : = 12 + R3
* t, := 0
9.4 B L O Q U E S BASICOS Y G R A F O S D E F L U JO 545

d o n d e t , c o n tie n e la d ire c c ió n d e x . E sta s e c u e n c ia se p u e d e im p la n t a r m e d ia n te la


in s tru c c ió n d e m á q u in a

M O V # 0 , 12 (R3)

O b sé rv e se q u e el v a lo r del reg istro R 3 n o se p u e d e d e t e r m i n a r e n la c o m p ila c ió n .

9 .4 B L O Q U E S B A S I C O S Y G R A F O S D E F L U J O

U n a re p re s e n ta c ió n d e g rafo s d e p ro p o s ic io n e s d e tr e s d ire c c io n e s, lla m a d a g rafo d e


flu jo , e s ú til p a r a e n t e n d e r lo s a l g o r i t m o s d e g e n e r a c ió n d e c ó d ig o , in c lu s o a u n ­
q u e el g rafo n o esté e x p líc ita m e n te c o n s tr u id o p o r u n a lg o ritm o d e g e n e ra c ió n d e
cód ig o. L o s n o d o s del g ra fo d e flu jo re p re s e n ta n cá lc u lo s y la s a ris ta s re p re s e n ta n el
flu jo d e c o n tr o l. E n el c a p ítu lo 10 se u tiliz a m u c h o el g rafo d e flu jo d e u n p r o g r a m a
c o m o v e h íc u lo p a r a reco g er in f o r m a c ió n s o b re el p r o g r a m a in te r m e d io . A lg u n o s a l­
g o ritm o s d e a s ig n a c ió n d e reg istro s u tiliz a n g rafo s d e flu jo p a r a e n c o n t r a r los lazos
in te rn o s d o n d e se s u p o n e q u e u n p r o g r a m a e m p le a la m a y o r p a r te d e s u tie m p o .

B loques básicos

U n bloque básico es u n a s e c u e n c ia d e p ro p o s ic io n e s c o n s e c u tiv a s e n las q u e el flujo


d e c o n tro l e n tr a al p r in c ip io y sale al fin al sin d e te n e r s e y sin p o s ib ilid a d d e s a lta r
e x c e p to al final. L a sig u ie n te s e c u e n c ia d e p ro p o s ic io n e s d e tres d ire c c io n e s fo rm a
u n b lo q u e básico:

t| := a * a
t 2 := a * b
t3 : = 2 * t 2 (9.1)
t4 t, + t3
t j := b * b
t6 : = t 4 + U

U n a p ro p o s ic ió n d e tr e s d ire c c io n e s x : = y + z d efin e x y usa ( o s e refiere a ) y y


z. Se d ic e q u e u n n o m b r e e n u n b lo q u e b ásico está activo en u n p u n t o d a d o si su
v a lo r se u tiliz a d e s p u é s d e ese p u n t o e n el p ro g ra m a , tal v ez e n o t r o b lo q u e básico.
El sig u ie n te a lg o r itm o se p u e d e u tiliz a r p a r a p a r tic io n a r u n a s e c u e n c ia d e p r o ­
p o sicio n es d e tres d ire c c io n e s en b lo q u e s básicos.

A lg o ritm o 9 .1 . P a rtic ió n e n b lo q u e s básicos.

E ntrada. U n a s e c u e n c ia d e p ro p o s ic io n e s d e tr e s d ireccio n es.

S a lida. U n a lista d é b lo q u e s b ásico s d o n d e c a d a p ro p o s ic ió n d e tres d ire c c io n e s está


e n u n b lo q u e e x a c ta m e n te .

M étodo.

1. P r im e r o se d e t e r m i n a el c o n j u n t o d e lideres , la p r im e r a p r o p o s ic ió n d e c a d a
b lo q u e b ásico . L a s reglas q u e se u tiliz an s o n las siguientes:
546 G ENERA CIO N DE CO DIG O

i) L a p r im e r a p ro p o s ic ió n es u n líder.
ii) C u a lq u ie r p ro p o s ic ió n q u e sea el d e s ti n o d e u n salto g o to c o n d ic io n a l o in ­
c o n d ic io n a l es u n líder.
iii) C u a l q u ie r p ro p o s ic ió n q u e v ay a in m e d ia t a m e n t e d e s p u é s d e u n s a lto goto
c o n d ic io n a l o in c o n d ic io n a l es u n líder.

2. P a ra c a d a líder, su b lo q u e b á s ic o c o n s ta del líd e r y d e to d a s las p ro p o s ic io n e s


h a sta , p e r o s in in c lu irlo , el sig u ie n te líd e r o el fin del p r o g r a m a . □

E je m p lo 9 .3 . C o n s id é re s e el fra g m e n to d e c ó d ig o f u e n te q u e se m u e s tra e n la figura


9.7 ; c a lc u la el p r o d u c to p u n t o d e d o s v e c to re s a y b d e lo n g itu d 2 0 . E n la figura 9.8
se m u e s tra u n a lista d e p ro p o s ic io n e s d e tres d ire c c io n e s q u e re a liz a n esto s cá lc u lo s
en la m á q u in a o b je to q u e se está c o n s id e ra n d o .

begin
prod := 0 ;
i := 1;
d o begin
prod := p r o d + a [i] * b [i ];
i :«= i + 1
end
w h i l e i <= 20
end

Fig. 9.7. P rog ram a para calcular el p ro d u c to punto.

A h o r a se a p lic a el a lg o r itm o 9 . 1 al c ó d ig o d e tres d ire c c io n e s d e la figura 9 .8 para


d e t e r m in a r s u s b lo q u e s básicos. La p ro p o s ic ió n ( I ) es u n líd e r s e g ú n la regla i) y la
p ro p o sic ió n (3) es u n líd e r según la regla ii). p u e s to q u e la ú lt im a p ro p o s ic ió n p u e d e
s a lta r a ella. S e g ú n la regla iii). la p ro p o s ic ió n q u e sig u e a (1 2 ) (re c u é rd e se q u e la

(1) prod := 0
(2) 1 »“ 1
(3) t. := 4 * i
(4) 1 2 := a l t, J /* calcula a [i ] */

(5) tj := 4 * i
(6) t 4 := b l t3 ] /* c a l c u l a b [i ] */
(7) t 5 := t_> * t 4
(8) to prod + t5
(9) prod •
• to

(10) t 7 := i + 1
(II) i •
• t7
(12) if i <= 20 g o t o (3)

F ig. 9 . 8 . C ó d ig o d e tres d ir e c c io n e s para c a lc u la r el p r o d u c t o p u n to .


9 .4 BLOQUES B A SIC O S Y GRAFOS DE FLUJO 547

I ig. 9.13 es sólo un fragm ento de un program a) es un líder. Por tanto, las proposi­
ciones (1 ) y (2) form an un bloque básico. E l resto del program a, com enzando por la
proposición (3), form a un segundo bloque básico. □

T ra n sfo rm a cio n es en b lo q u es b á sico s

Un bloque básico calcula un conjunto de expresiones. Estas expresiones son los va­
lores de los nom bres activos al sa lir del bloque. Se dice que dos bloques básicos son
equivalentes si calculan el m ism o c o n ju nto de expresiones.
Se pueden ap licar varias transform aciones a un bloque básico sin m odificar el
conjunto de expresiones calculadas por el bloque. M uchas de estas transform aciones
son útiles para m ejorar la calidad del código que finalm ente será generado a partir
de un bloque básico. E n el capítulo siguiente, se m uestra cóm o un “ optim ador" de
código global intenta utilizar dichas transform aciones para ordenar los cálculos de un
programa para red ucir el tiem po total de ejecución o la exigencia de espacio del pro­
grama objeto final. H ay dos clases im portantes de transform aciones locales que se
pueden ap licar a los bloques básicos; las transform aciones que preservan la estruc­
tura y las transform aciones algebraicas.

T ransform aciones que p reservan la estru ctu ra

l as principales transform aciones que preservan la estructura en bloques básicos son:

1. elim inación de subexpresiones com unes


2. elim in ació n de código in activo
3. renom bram iento de variables tem porales
4. intercam bio de dos proposiciones adyacentes independientes
Ahora se exam inan estas transform aciones más detalladam ente. Por el m om ento, se
supone que los bloques básicos no tienen m atrices apuntadoras o llam adas a pro­
cedimientos.

1. E lim inación d e subexpresiones co m u n es. Considérese el bloque básico


a :=b + c
b :=a - d
(9.2)
c := b + c
d :=a - d

La segunda v la cuarta proposiciones calculan la misma expresión, b + c -d , v por tanto


este bloque básico se puede transform ar en el bloque equivalente
a := b + c
b := a - d
(9.3)
c := b + c
d := b

Obsérvese que aunque la prim era y la tercera proposiciones en (9.2) y (9 .3) pa­
recen tener la m ism a expresión a la derecha, la segunda proposición redefine b. Por
tanto, el va lo r de b en la tercera proposición es distinto al valor de b en la prim era,
y la prim era y la segunda proposiciones no calculan la m ism a expresión.
548 G E N E R A C IO N DE C O D IG O

2. E lim in a ció n d e código inactivo. Supóngase qu e x está in activo , es d ecir, que


no se vuelve a u tiliz a r posteriorm ente, en el p unto en que la p ro po sició n x : = y + z
aparece en u n blo q ue básico. Entonces esta pro p o sició n se puede e lim in a r s in mo­
d ifica r el va lo r del bloque básico.

3. R en o m b ra m ien to d e variables tem porales. Supóngase que se tiene una p r ^


posición t : = b + c . donde t es un nom bre tem poral. Si se cam bia esta proposición
p o r u : = b + c , donde u es una variable tem poral nueva, y se cam bian todos los usos
de este ejem plo de t p o r u, entonces no se cam bia el va lo r del bloque básico. De
hecho, siem pre se puede transform ar un bloque básico en un bloque equivalente en
el que cada pro po sició n que define un tem poral define un tem poral nuevo. D icho
bloque básico se denom ina bloque en fo r m a norma!.

4. In terca m b io d e proposiciones. Supóngase que se tiene u n blo q ue con las dos


proposiciones adyacentes

t| := b + c
t 2 := x + y

Entonces se pueden intercam biar las dos proposiciones sin que esto afecte al valor
del bloque si, y só lo si, n i x n i y son t i y n i b n i c son t 2. Obsérvese que un bloque
básico en form a norm al perm ite todos los intercam bios de proposiciones que sean
posibles.

T r a n s fo r m a c io n e s a lg e b r a ic a s

Se pueden u tiliza r innum erables transform aciones algebraicas para cam b iar el con-
ju n to de expresiones calculadas por un bloque básico p o r un co n ju n to algebraica­
mente equivalente. Las transform aciones útiles son las que sim p lifican las expresio-
nes o su stitu yen opera cio n e s caras p o r o tras m ás b aratas. P o r e jem p lo , las
proposiciones com o

x := x + o
o

x := x * 1

se pueden e lim in a r de un bloque básico sin cam b iar el co n ju n to de expresiones que


calcula. E l operador de exponenciación en la proposición

x : = y ** 2

exige generalm ente la llam ad a a una fu n ció n para im p la n ta rlo . U tiliz a n d o una
transform ación algebraica, esta proposición se puede sustituir por la proposición más
sencilla pero equivalente

x := y * y

Las transform aciones algebraicas se estudian m ás detalladam ente en la sección 9.9


sobre optim ación lo ca l y en la sección 10.3 sobre optim ación de bloques básicos.
9.4 B L O Q U E S BASICOS Y G R A F O S D E F L U JO 549

G r a f o s d e flujo

S e p u e d e a ñ a d i r la in f o r m a c ió n so b re el flu jo del c o n tr o l al c o n j u n t o d e b lo q u e s b á ­
sicos q u e c o m p o n e n u n p r o g r a m a , c o n s tr u y e n d o u n g rafo d irig id o lla m a d o grafo de
flujo. L os n o d o s del g rafo d e flu jo s o n los b lo q u e s básicos. U n n o d o se d istin g u e c o m o
inicial : es el b lo q u e c u y o líd er e s la p r im e r a p ro p o s ic ió n . H a y u n a a r is ta d irig id a del
b lo q u e al b lo q u e B2 si B 2 p u e d e i r in m e d ia t a m e n t e d e s p u é s d e B\ e n u n a s e c u e n ­
c ia d e e je c u c ió n : e s d ecir, si

1. h a y u n salto c o n d ic io n a l o in c o n d ic io n a l d e s d e la ú ltim a p ro p o s ic ió n d e B x a la
p r im e r a p ro p o sic ió n d e B 2, o

2. B 2 sigue in m e d ia ta m e n te a B { e n el o r d e n d e l p r o g r a m a , y B { n o t e r m i n a co n
u n s a lto in c o n d ic io n a l.

S e d ic e q u e B { es u n predecesor d e B 2. y q u e B 2 e s u n sucesor d e /?,.

E je m p lo 9 .4 . E n la fig u ra 9 .9 se m u e s tr a el g rafo d e flu jo d e l p r o g r a m a d e la figura


9 .7 . B \ e s el n o d o in ic ia l. O b s é rv e s e q u e e n la ú lt im a p r o p o s ic ió n se s u s t it u y ó el
s a lto a la p ro p o s ic ió n (3 ) p o r u n s a lto e q u iv a le n te al c o m ie n z o d e l b lo q u e B2. □

R e p re s e n ta c ió n de b lo q u e s b ásico s

L o s b lo q u e s b á s ic o s se p u e d e n r e p r e s e n ta r m e d ia n te u n a v a rie d a d d e e s tr u c tu r a s de
d a to s . P o r e je m p lo , d e s p u é s d e p a r tic io n a r las p ro p o s ic io n e s d e tres d ire c c io n e s co n
el a lg o ritm o 9.1, c a d a b lo q u e b ásico p u e d e s e r re p re s e n ta d o p o r u n registro q u e co n sta
d e u n a c u e n t a del n ú m e r o d e c u á d r u p lo s d e n t r o del b lo q u e , s e g u id a d e u n a p u n t a ­
d o r al líd er ( p r im e r c u á d r u p lo ) del b lo q u e , y d e las listas d e p re d e c e so re s y su c e so re s
del b lo q u e . C o m o a lte r n a tiv a se p u e d e h a c e r u n a lista e n la z a d a d e los c u á d r u p lo s de
c a d a b lo q u e . L a s referen cias ex p lícitas a los n ú m e r o s d e lo s c u á d r u p lo s e n la s p ro ­
p o sicio n es d e s a lto al final d e lo s b lo q u e s b ásico s p u e d e n c a u s a r a lg ú n p r o b le m a si
se c a m b ia n d e lu g a r los c u á d r u p lo s d u r a n t e la o p tim a c ió n del c ó d ig o . P o r e je m p lo .

F ig . 9 .9 . G r a fo d e flujo para u n program a.


550 GENERACION DE CODIGO

si el b lo q u e B2, q u e v a de las p ro p o s ic io n e s (3) a la (1 2 ) en el c ó d ig o in te r m e d io de


la figura 9.9. se tra s la d a ra a o t r o lu g a r e n la m a tr iz d e c u á d r u p lo s o si se c o n tra je ra ,
h a b ría q u e m o d if ic a r el (3) e n i f i <= 2 0 g o t o (3). P o r ta n to , es p referib le q u e los
sa lto s a p u n t e n a b lo q u e s e n lu g a r d e a c u á d r u p lo s , c o m o se h iz o e n la fig u ra 9.9.
E s im p o r ta n te te n e r en c u e n t a q u e u n a a r is ta del g rafo d e flujo d e s d e el b lo q u e
B al b lo q u e B ' n o especifica las c o n d ic io n e s b a jo las c u a le s el c o n tr o l fluye d e B a
B \ Es d ecir, la a r is ta n o in d ic a si el s a lto c o n d ic io n a l al final d e B (si e s q u e h a y un
salto c o n d ic io n a l) v a al líd er d e B ' c u a n d o la c o n d ic ió n se c u m p le o c u a n d o n o se
c u m p le . E sta in f o r m a c ió n se p u e d e re c u p e r a r si se n ecesita p o r la p ro p o s ic ió n d e
salto e n B.

L azos

E n u n g rafo d e flujo, ¿ q u é es u n lazo, y c ó m o se p u e d e n e n c o n t r a r to d o s los lazos?


G e n e r a lm e n te es fácil c o n te s ta r a e s ta s p re g u n ta s . P o r e je m p lo , e n la fig u ra 9 .9 hay
u n lazo, f o r m a d o p o r el b lo q u e /¿>. S in e m b a r g o , las re s p u e s ta s g e n e ra le s a e s ta s p re ­
g u n ta s s o n b a s ta n te s su tile s, y se e x a m i n a r á n d e t a l l a d a m e n t e e n el s ig u ie n te c a p í­
tu lo . P o r el m o m e n to , b a s ta c o n in d ic a r q u e u n la z o e s u n a serie d e n o d o s e n u n
g rafo d e flu jo tales q u e

1. T o d o s los n o d o s en la serie e s tá n fu ertem en te conectados ; es d ecir, d e s d e c u a l­


q u ie r n o d o d e n t r o del la z o a c u a lq u ie r o tr o , h a y u n c a m in o d e lo n g itu d u n o o
m ás, s ie m p re d e n t r o del lazo, y

2. La serie d e n o d o s tie n e u n a entrada ú n ic a , es d ecir, u n n o d o d e n t r o del la z o tal


q u e la ú n ic a fo rm a d e a lc a n z a r u n n o d o d e l lazo d e sd e u n n o d o f u e ra d e l lazo
e s a tra v e s a r p r im e r o la e n tra d a .

U n lazo q u e n o c o n tie n e o tr o s lazos se d e n o m i n a la z o interno.

9 .5 I N F O R M A C I O N S O B R E E L S I G U I E N T E U S O

E n esta sección se re ú n e la in f o r m a c ió n del sig u ie n te u s o so b re n o m b r e s e n los b lo ­


q u e s básicos. Si y a n o se n e c e sita el n o m b r e e n u n registro, e n to n c e s el reg istro se
p u e d e asig n ar a alg ú n o tr o n o m b re . E sta idea d e c o n s e rv a r u n n o m b r e e n m e m o ria ,
sólo si va a utilizarse p o s te rio rm e n te , se p u e d e a p lic a r en v ario s co n tex to s. Se utilizó
en la sección 5 .8 p a ra a s ig n a r e s p a c io a los v a lo re s d e a trib u to s . E l g e n e r a d o r d e có­
d ig o s im p le d e la sig u ie n te secció n la a p lic a a la a s ig n a c ió n d e registros. C o m o úl­
ti m a a p lic a c ió n , se c o n s id e r a la a s ig n a c ió n d e m e m o r ia p a r a n o m b r e s te m p o ra le s.

C á lc u lo d e lo s s ig u ie n t e s u so s

El uso d e u n n o m b r e en u n a p ro p o s ic ió n d e tres d ire c c io n e s se d e fin e d e la sig u ien te


m a n e r a . S u p ó n g a se q u e la p ro p o s ic ió n d e tres d ire c c io n e s i a s ig n a u n v a lo r a x . Si
la p ro p o sic ió n j tie n e a x c o m o u n o p e r a n d o y el c o n tro l p u e d e flu ir d e la p ro p o s i­
c ió n / a la j p o r u n c a m in o q u e n o tie n e a s ig n a c io n e s in te r m e d ia s a x . e n to n c e s se
d ic e q u e la p ro p o sic ió n j usa el v a lo r d e x c a lc u la d o e n i.
9.5 I N F O R M A C I O N S O B R E EL S I G U I E N T E U S O 55!

Se d e se a d e t e r m in a r p a r a c a d a p ro p o s ic ió n d e tres d ire c c io n e s x : = y op z c u á ­
les son los sig u ie n te s usos d e x , y y z . P o r el m o m e n to , n o in te re s a n los u so s fuera
del b lo q u e b ásico q u e c o n tie n e esta p ro p o s ic ió n d e tres d ire c c io n e s p e ro se p u e d e
in te n ta r d e t e r m in a r si ex iste u s o m e d ia n te la té c n ic a d e a n álisis d e v aria b les a c tiv a s
del c a p ítu lo 10.
El a lg o ritm o q u e a q u í se p r e s e n ta p a r a d e t e r m i n a r los usos sig u ie n tes realiza u n a
p a s a d a h a c ia a tr á s so b re c a d a b lo q u e básico. S e p u e d e e x a m i n a r f á c ilm e n te u n a ca­
d e n a d e p ro p o s ic io n e s d e tr e s d ire c c io n e s p a r a e n c o n t r a r los fin ales d e lo s b lo q u e s
b ásico s c o m o e n el a lg o ritm o 9 .1 . C o m o los p r o c e d im ie n to s p u e d e n te n e r efecto s
s e c u n d a r io s a rb itra rio s , se s u p o n e p o r c o n v e n ie n c ia q u e c a d a lla m a d a a u n p ro c e ­
d i m i e n t o in icia u n n u e v o b lo q u e básico.
H a b ie n d o e n c o n tr a d o el final d e un b lo q u e básico, se in sp ecc io n a h acia a trá s hasta
el c o m ie n z o , re g istra n d o (e n la ta b la d e s ím b o lo s ) p a r a c a d a n o m b r e x si x tie n e o
n o u n sig u ie n te u s o e n el b lo q u e y si n o lo tien e, in d i c a n d o si está a c tiv o a la salida
d e ese b lo q u e . Si se h a h e c h o el a n álisis del fiu jo d e d a to s q u e se p re s e n ta en el c a ­
p ítu lo 10, se sabe q u é n o m b r e s e s tá n a c tiv o s a la salid a d e c a d a b lo q u e . Si n o se ha
h e c h o el a n álisis d e v a ria b le s activ as, se p u e d e s u p o n e r q u e to d a s las v aria b les no
te m p o r a le s e s tá n a c tiv a s a la sa lid a . Si los a lg o r itm o s q u e g e n e r a n el c ó d ig o i n t e r ­
m e d io o q u e o p ti m iz a n el c ó d ig o p e r m ite n q u e c ie rto s te m p o r a le s se utilicen a tr a ­
vés d e b lo q u e s, ésto s ta m b ié n se d e b e n c o n s id e r a r activos. S ería b u e n a id e a m a rc a r
d ic h o s te m p o r a le s , d e m o d o q u e n o h a y a q u e c o n s id e r a r a c tiv o s to d o s lo s t e m p o ­
rales.
S u p ó n g a se q u e se a lc a n z a la p ro p o s ic ió n d e tr e s d ire c c io n e s /': x : = y op z e n el
e x a m e n h acia a trá s. E n to n c e s se h a c e lo siguiente:

1. S e aso cia a la p ro p o s ic ió n / la in f o r m a c ió n e n c o n t r a d a e n la ta b la d e s ím b o lo s
relativ a al sig u ie n te u s o y a c tiv id a d d e x , y y z 4.

2. E n la ta b la d e s ím b o lo s, se a s ig n a a x “ n o a c tiv o ” y “ sin u s o sig u ie n te ” .

3. E n la ta b la d e sím b o lo s, se in d ic a q u e y y z e s tá n “a c tiv o s ” y se ig u a la n los si­


g u ie n te s usos y y z a /. O b sé rv e se q u e n o se p u e d e in te r c a m b ia r el o r d e n d e los
p a so s 2 y 3 p o r q u e x p u e d e s e r y o z.

Si la p ro p o s ic ió n d e tr e s d ire c c io n e s i es d e la fo rm a x := y o x •.= op y , los


p a s o s s o n los m is m o s q u e a n te s, s in te n e r en c u e n t a z.

A sig n ació n d e m e m o ria p a r a los n o m b re s te m p o ra le s

A u n q u e p u e d e s e r útil e n u n c o m p ila d o r o p t i m a d o r c re a r u n n o m b r e d ife re n te c a d a


vez q u e se n e c e site u n te m p o r a l (v éase C a p . 10), h a y q u e a s ig n a r e s p a c io p a r a g u a r ­
d a r los v alo res d e d ic h o s te m p o ra le s . El t a m a ñ o del c a m p o p a r a los te m p o r a le s en
el reg istro d e a c tiv a c ió n g en eral d e la se c c ió n 7.2 a u m e n t a c o n el n ú m e r o d e t e m ­
porales.

S i x n o está a c tiv o , e n to n c e s esta p r o p o s ic ió n s e p u e d e borrar, d ic h a s tr a n sfo r m a c io n e s se c o n s i­


d era n e n la s e c c ió n 9.8
552 G EN ER A C IO N DE CO DIG O

E n g en eral, se p u e d e n e m p a q u e t a r d o s te m p o r a le s e n la m is m a p o s ic ió n si n o
e s tá n a c tiv o s s im u ltá n e a m e n te . C o m o casi to d o s lo s te m p o r a le s se d e fin e n y se u ti­
lizan d e n t r o d e b lo q u e s b ásico s, se p u e d e a p lic a r la in f o r m a c ió n d e l sig u ie n te uso
p a r a e m p a q u e t a r te m p o ra le s . P a r a lo s te m p o r a le s q u e se u tiliz a n a tr a v é s d e los blo­
q u e s , el c a p itu lo 10 e s tu d ia el a n á lis is del flu jo d e d a to s n e c e s a rio s p a r a c a lc u la r su
a c tiv id a d .
Se p u e d e n a s ig n a r p o s ic io n e s d e m e m o r ia p a r a los te m p o r a le s e x a m i n a n d o c a d a
u n o p o r t u r n o y a s ig n a n d o u n te m p o ra l a la p r im e ra p o sició n d e n t r o del c a m p o p a ra
los te m p o ra le s q u e n o c o n te n g a n u n te m p o r a l a c tiv o . Si n o se p u e d e a s ig n a r u n t e m ­
p o ra l a n in g u n a p o s ic ió n p r e v ia m e n te c re a d a , se a ñ a d e u n a n u e v a p o s ic ió n al área
d e d a to s del p r o c e d im ie n to e n c u rso . E n m u c h o s casos, lo s te m p o r a le s se p u e d e n
e m p a q u e t a r d e n t r o d e reg istro s e n lu g a r d e e n p o s ic io n e s d e m e m o r ia , c o m o o c u r r e
e n la sig u ie n te sección.
P o r e je m p lo , lo s seis te m p o r a le s del b lo q u e b ásico (9.1) se p u e d e n e m p a q u e t a r
d e n t r o d e d o s p o sicio n es. E stas p o s ic io n e s c o r r e s p o n d e n a t ( y t 2 en:

t, s= a * a
t 2 := a * b
t 2 := 2 * t2
t, := t, + t2
t 2 := b * b
ti := t, + t2

9.6 U N G E N E R A D O R DE C O D IG O SIM PL E

L a estrateg ia d e g e n e ra c ió n d e c ó d ig o d e e s ta secció n g e n e r a c ó d ig o o b je to p a r a u n a
secu en cia d e p ro p o sic io n e s d e tres d ireccio n es. C o n s id e ra c a d a p ro p o sició n p o r tu r n o ,
te n ie n d o en c u e n t a si los o p e r a n d o s d e la p ro p o s ic ió n e s tá n e n registros, y a p r o v e ­
c h a n d o e s a s itu a c ió n si e s posible. P a r a sim p lific ar, se s u p o n e q u e p a r a c a d a o p e ra ­
d o r d e n t r o d e u n a p ro p o s ic ió n h a y u n o p e r a d o r c o r r e s p o n d ie n te e n el le n g u a je o b ­
j e to . T a m b ié n se s u p o n e q u e los r e s u lta d o s c a lc u la d o s se p u e d e n d e ja r e n registros
m ie n tr a s s e a posible, a lm a c e n á n d o lo s e n la m e m o r ia só lo si (a ) s u re g istro e s n e c e ­
s a rio p a r a o t r o c á lc u lo , o (b) se e s tá j u s t o a n te s d e u n a lla m a d a a u n p r o c e d im ie n to ,
u n salto o u n a p ro p o s ic ió n e t iq u e ta d a 5.
L a c o n d ic ió n (b ) im p lic a q u e t o d o d e b e s e r a lm a c e n a d o e n la m e m o r ia j u s t o a n ­
te s del fin al d e u n b lo q u e b á s ic o 6 p o r q u e d e s p u é s d e a b a n d o n a r u n b lo q u e b á s ic o se
p u e d e ir a v a rio s b lo q u e s d ife re n te s , o a u n b lo q u e d e t e r m in a d o q u e p u e d a alcan -

5 S in e m b a r g o , para p ro d u cir u n v o lc a d o s im b ó lic o , q u e h a c e d is p o n ib le s lo s v a lo re s d e la s p o s ic io ­


n e s d e m e m o r ia y lo s registros r efer e n tes a l o s n o m b r e s d e fin id o s e n e l p ro g ra m a fu e n te p a ra d ic h o s
v a lo r e s, p u e d e s e r p r e fe r ib le te n e r la s v a r ia b le s d e fin id a s p o r e l p r o g r a m a d o r (p e r o n o n e c e sa r ia ­
m e n te te m p o r a le s g e n e r a d o s p o r e l c o m p ila d o r ) a lm a c e n a d a s e n la m e m o r ia e n e l m o m e n t o d e l c á l­
c u lo , p o r si u n error d e p ro g ra m a p r o d u c e d e r e p e n te la in terr u p ció n p r e cip ita d a y la sa lid a d e la
e je c u c ió n .
6 O b s é r v e s e q u e n o s e s u p o n e q u e lo s c u á d r u p lo s fu e r o n r e a lm e n te p a r tic io n a d o s e n b lo q u e s b á si­
c o s p o r e l c o m p ila d o r , la n o c ió n d e u n b lo q u e b á s ic o e s ú til c o n c e p tu a lm e n te e n c u a lq u ie r c a so .
9 .6 UN GENERADOR DE C O D IG O SIM PL E 553

zarse desde otros bloques. E n cu alq u ier caso, no se puede suponer sin un esfuerzo
ad icio n al que un dato u tilizad o p o r un bloque aparece en el m ism o registro inde­
pendientem ente de cóm o alcanzó el co ntro l dich o bloque. Por tanto, para evitar un
posible error, el algoritm o de generación de código sim ple guarda todo en m em oria
cuando se traslada a través de los lím ites de los bloques básicos así com o cuando se
hacen llam adas a procedim ientos. M ás adelante se consideran form as de conservar
algunos datos dentro de los registros a través de los lím ites de los bloques.
Se puede p ro d u cir un código razonable para una proposición de tres direcciones
a := b + c si se genera la instrucción sim ple a d d R j , R i con costo uno, dejando el re­
sultado a en el registro R i . Esta secuencia sólo es posible si el registro R i contiene
b, R j contiene c y b n o está activa después de la proposición; es decir, b no se utiliza
después de la proposición.
Si R i contiene b pero c está en una posición de m em oria (llam ad a c p o r con­
veniencia), se puede generar la secuencia

add c, Ri costo = 2

MOV c, Rj .
' í. costo = 3
ADD R j , Rl

suponiendo que b no está activa posteriorm ente. L a segunda secuencia se vuelve


atractiva si este valor de c se u tiliza posteriorm ente porque entonces se puede tom ar
su valor del registro R j . Se pueden considerar m uchos más casos, dependiendo de
dónde se encuentren localizados en ese m om ento b y c y de si el v a lo r en curso de
b se u tiliza posteriorm ente. T am bién se deben considerar los casos donde uno o am ­
bos de b y c son constantes. E l núm ero de casos que hay que co n sid era r se in cre­
menta aún más si se supone que el operador + es conm utativo. P o r tanto, se ve que
la generación de código im p lica exam in ar una gran cantidad de casos, y el caso que
debe prevalecer depende del contexto en el que aparezca una proposición de tres
direcciones.

D e s c r ip to r e s d e r e g istr o s y d ire cc io n es

El algoritm o de generación de código u tiliz a descriptores para seguir de cerca el co n ­


tenido de los registros y las direcciones para los nombres.

1. U n descriptor de registros sabe lo que hay en cada registro. Es consultado siem ­


pre que se necesite un nuevo registro. Se supone que in icialm en te el descriptor
de registros m uestra que todos los registros están vacíos. (S i los registros se asig­
nan entre los bloques, este no sería el caso.) C onform e avanza la generación de
código para el bloque, cada registro contiene siem pre el v a lo r de cero o más
nom bres.

2. U n descriptor de direcciones conoce la posición (o posiciones) donde se puede


encontrar el va lo r en curso del nom bre durante la ejecución. L a posición puede
ser un registro, un a posición en la pila, una dirección de m em oria o conjunto
de éstos porque cuando se copia, un valor tam bién perm anece donde estaba. Esta
554 G ENERA CIO N DE CO DIGO

in f o r m a c ió n se p u e d e a lm a c e n a r e n la ta b la d e s ím b o lo s y se u tiliz a p a r a d e te r ­
m i n a r el m é to d o d e acce so a u n n o m b r e .

U n a lg o ritm o p a r a g e n e ra c ió n d e código

El a lg o ritm o p a r a la g e n e ra c ió n d e c ó d ig o t o m a c o m o e n tr a d a u n a s e c u e n c ia d e p ro ­
p o s ic io n e s d e tres d ire c c io n e s q u e c o n s titu y e n u n b lo q u e b ásico . P a r a c a d a p r o p o ­
sició n d e tres d ire c c io n e s d e la fo rm a x : = y op z se re a liz a n las sig u ie n te s o p e r a c io ­
nes:

1. S e in v o c a la f u n c ió n obtenreg p a r a d e t e r m i n a r la p o sic ió n L d o n d e se d e b e g u a r ­
d a r el r e s u lta d o del c á lc u lo y op z . G e n e r a lm e n te L será u n reg istro , p e r o t a m ­
b ié n p u e d e s e r u n a p o sic ió n d e m e m o r ia . D e n tr o d e p o c o se d e s c rib irá obtenreg.

2. Se c o n s u lta el d e s c r ip to r d e d ire c c io n e s d e y p a r a d e t e r m in a r y', ( u n a d e ) la(s)


p o sició n (es) e n c u rs o d e y. S e p refiere el re g istro p a r a y' si el v a lo r d e y e s tá en
ese m o m e n t o e n m e m o r ia y e n un registro. Si el v alo r d e y n o e s tá to d a v ía en
L. se g e n e r a la in s tru c c ió n M O V y', L p a r a c o lo c a r u n a c o p ia d e y en L.

3. S e g en era la in s tru c c ió n o p z ' , l d o n d e z es u n a p o sic ió n e n c u r s o d e x . De


n u e v o , se p refiere u n re g istro a u n a p o sic ió n d e m e m o r ia si z se e n c u e n t r a en
a m b o s. Se a c tu a liz a el d e s c rip to r d e d ire c c io n e s d e x p a r a in d ic a r q u e x está en
la p o sic ió n L. Si L es un registro, se a c tu a liz a su d e s c r ip to r p a r a in d ic a r q u e c o n ­
tien e el v a lo r d e x, y se e lim in a x d e to d o s los o tr o s d e s c rip to re s d e registros.

4. Si los v a lo re s e n c u r s o d e y o z. o a m b o s , n o tie n e n u so s sig uientes, n o están


a c tiv o s a la salid a d e l b lo q u e , y e s tá n e n registros, se a lte ra el d e s c r ip to r d e re­
g istro s p a r a in d ic a r q u e d e s p u é s d e la e je c u c ió n d e x : = y op z , esto s registros
ya n o c o n te n d r á n y o z . o a m b o s , re s p e c tiv a m e n te .

Si la p ro p o sic ió n d e tr e s d ire c c io n e s e n c u rs o tie n e u n o p e r a d o r u n a r io , los pasos


son a n á lo g o s a los a n te rio re s , y se o m i te n los d etalles. U n c a so especial im p o r ta n te
es u n a p r o p o s ic ió n d e tr e s d i r e c c io n e s x : = y . S i y e s tá e n u n re g is tro , s im p l e ­
m e n te se c a m b ia n los d e s c rip to re s d e registros y d e d ire c c io n e s p a r a c o n s ig n a r q u e
el v alo r d e x a h o r a só lo se e n c u e n t r a en el re g istro q u e c o n tie n e el v a lo r d e y . Si y
n o tie n e u s o sig u ie n te y n o está a c tiv o a la salid a d e u n b lo q u e , el re g istro y a no
c o n tie n e el v alo r d e y.
Si y só lo se e n c u e n t r a e n m e m o r ia , e n p r in c ip io se p o d r ía h a c e r c o n s ta r q u e el
v alo r d e x está e n la p o sició n d e y . p e r o esta o p c ió n c o m p lic a ría el a lg o ritm o , p o r­
q u e e n to n c e s n o se p o d r ía m o d if ic a r el v alo r d e y s in p re s e rv a r el v a lo r d e x. P o r
ta n to , si y se e n c u e n tr a en m e m o r ia , se u tiliz a obtenreg p a r a e n c o n t r a r u n reg istro
en el q u e c a rg a r y y c o n v e r tir esc registro e n la p o sic ió n d e x.
T a m b ié n se p u e d e g e n e ra r u n a in s tru c c ió n MOV y , x , q u e sería p referib le si el
v alo r d e x n o tu v ie ra u s o sig u ie n te e n el b lo q u e . V a le la p e n a re s a lta r q u e casi todas,
si n o to d a s, las in s tru c c io n e s d e c o p ia q u e d a r á n e lim in a d a s si se u tiliz a el a lg o ritm o
d e m e jo ra d e b lo q u e s y d e c o p ia y p ro p a g a c ió n d e l c a p ítu lo 10.
U n a vez q u e se h a y a n p ro c e s a d o to d a s las p ro p o s ic io n e s d e tres d ire c c io n e s en
los b lo q u e s básicos, m e d ia n te in stru c c io n e s MOV, se a lm a c e n a n aq u e llo s n o m b r e s q u e
estén a c tiv o s a la salid a y n o e n s u s p o s ic io n e s d e m e m o r ia . P a ra e llo se u tiliz a el
9.6 U N G E N E R A D O R D E C O D IG O SIMPLE 555

d e s c rip to r d e reg istro s p a r a d e t e r m i n a r q u é n o m b r e s se d e ja n e n los registro s, el d e s ­


c r ip to r d e d ire c c io n e s p a r a d e t e r m i n a r q u e el m is m o n o m b r e n o está ya e n su p o si­
c ió n d e m e m o r ia y la in f o r m a c ió n d e las v aria b les a c tiv a s p a r a d e t e r m in a r si se va a
a lm a c e n a r el n o m b r e . Si n o se h a c a lc u la d o la in f o r m a c ió n s o b re v aria b les activ as
m e d ia n te el a n álisis del flu jo d e d a to s e n tr e los b lo q u e s, se d e b e a s u m i r q u e to d o s
los n o m b r e s d e fin id o s p o r el u s u a r io e s tá n a c tiv o s al final del b lo q u e .

1.a función obtenreg

L a f u n c ió n obtenreg d e v u e lv e la p o s ic ió n L p a r a g u a r d a r el v a lo r d e x p a r a la asig­
n a c ió n x : = y op x . S e p u e d e e m p le a r u n g ra n e s fu e rz o p a r a i m p l a n t a r esta fu n ció n
d e m o d o q u e p r o d u z c a u n a o p c ió n in te lig e n te p a r a L. E n esta secció n se e s tu d ia u n
e s q u e m a s im p le y fácil d e im p la n t a r b a s a d o e n la in f o r m a c ió n s o b re el uso sig u ien te
reco g id a en la ú ltim a sección.

1. Si el n o m b r e y e s tá en u n re g istro q u e n o c o n tie n e el v a lo r d e o tro s n o m b r e s


(re c u é rd e se q u e las in s tr u c c io n e s d e c o p ia c o m o x : = y p o d ría n h a c e r q u e un
registro g u a r d a r a el v a lo r d e d o s o m á s v aria b les s im u ltá n e a m e n te ) , e y n o está
activ a y n o tie n e u s o sig u ie n te d e s p u é s d e la e je c u c ió n d e x : = y op z, e n t o n ­
c e s se d e v u e lv e el reg istro d e y p a r a L. Se a c tu a liz a el d e s c r ip to r d e d ire c c io n e s
d e y p a r a in d ic a r q u e y y a n o se e n c u e n t r a e n L.

2. Si falla ( I ), d e v u é lv a s e u n re g istro v acío p a r a L si h a y a lg u n o .

3. Si falla (2), si x tie n e u n u s o sig u ie n te e n el b lo q u e , u op es u n o p e ra d o r, c o m o


in d iz a r. q u e exige u n registro, e n c u é n tr e s e u n reg istro o c u p a d o R. A lm a c é n e se
el v a lo r d e R e n u n a p o sic ió n d e m e m o r ia ( m e d ia n te M O V R , M) si es q u e to d a v ía
n o está e n u n a p o sic ió n d e m e m o r ia a p r o p ia d a M. a c tu a líc e se el d e s c r ip to r d e
d ire c c io n e s d e M y d e v u é lv a s e R. Si R c o n tie n e el v a lo r d e v a ria s v ariab les, se
d e b e g e n e ra r u n a in s tr u c c ió n M O V p a r a c a d a v a ria b le q u e h a y a q u e a lm a c e n a r .
U n re g istro o c u p a d o a d e c u a d o p u e d e s e r u n o c u y o d a t o sea el re fe re n c ia d o m á s
lejos en el fu tu r o , o u n o c u y o v a lo r ta m b ié n esté e n m e m o r ia . N o se especifica
la o p c ió n e x a c ta p o r q u e n o se c o n o c e m e jo r fo rm a d e h a c e r la selección.

4. Si n o se u tiliza x e n el b lo q u e , o n o se p u e d e e n c o n t r a r n in g ú n reg istro o c u p a d o


a d e c u a d o , selec ció n ese la p o sic ió n d e m e m o r ia d e x c o m o L.

U n a fu n c ió n obtenreg m á s so fistic a d a ta m b ié n c o n s id e ra ría lo s u so s s u b sig u ie n ­


te s d e x y la c o n m u ta tiv id a d d e l o p e r a d o r op al d e t e r m i n a r el reg istro q u e c o n te n d r á
al v alo r d e x. Se d e ja n c o m o ejercicio s p rá c tic o s d ic h a s a m p lia c io n e s d e obtenreg.

Ejemplo 9.5. L a a s ig n a c ió n d : = ( a - b ) + ( a - c ) + ( a - c ) se p u e d e tr a d u c ir a la
sig u ie n te s e c u e n c ia d e c ó d ig o d e tres d ireccio n es:

t := a- b
u := a- c
v := t + u
d := v+ u

c o n d a c tiv a al final. El a lg o r i tm o d e g e n e r a c ió n d e c ó d ig o a n t e r i o r p r o d u c ir ía la
s e c u e n c ia d e c ó d ig o d e la fig u ra 9 . 1 0 p a r a e s ta s e c u e n c ia d e p r o p o s ic io n e s d e tres
556 G EN ER A C IO N DE CO DIG O

d ir e c c io n e s . A u n l a d o se m u e s t r a n lo s v a lo r e s d e los d e s c r i p to r e s d e re g is tro s y
d e d i r e c c i o n e s c o n f o r m e a v a n z a la g e n e r a c i ó n d e c ó d i g o . E n e l d e s c r i p t o r d e d i r e c ­
c io n e s n o se in d ic a q u e a , b y c e s tá n s ie m p re e n m e m o r ia . T a m b i é n se a s u m e q u e
t , u y v , s i e n d o t e m p o r a l e s , n o e s t á n e n m e m o r i a a m e n o s q u e se a l m a c e n e n e x ­
p l í c i t a m e n t e s u s v a l o r e s c o n u n a i n s t r u c c i ó n MOV.

C ó d ig o D escriptor D escriptor
P roposiciones
G enerado d e R eg istros d e D irecciones

reg istros vac ío s

t := a - b MOV a , RO RO c o n t i e n e a t t e n RO
SUB b , RO

u := a - c MOV a , Rl RO c o n t i e n e a t t e n RO
SUB c , Rl R l contiene a u u en Rl

v := t + u ADD R l , RO RO c o n t i e n e a v u en Rl
R l contiene a u v e n RO

d := v + u ADD R l , RO RO c o n t i e n e a d d e n RO

MOV RO, d d e n RO y
en m em oria

Fig. 9 . 1 0 . S e c u e n c i a d e có digo .

La p rim era llam ada a obienreg d e v u e l v e RO c o m o la p o s i c i ó n e n la q u e c a l c u ­


l a r t . C o m o a n o e s t á e n RO, s e g e n e r a n l a s i n s t r u c c i o n e s MOV a , R 0 y SUB b , R 0 .
A h o r a s e a c t u a l i z a e l d e s c r i p t o r d e r e g i s t r o s p a r a i n d i c a r q u e RO c o n t i e n e t .
L a g e n e r a c i ó n d e c ó d i g o c o n t i n ú a d e e s t a m a n e r a h a s t a q u e se h a y a p r o c e s a d o
la ú l t i m a p r o p o s i c i ó n d e t r e s d i r e c c i o n e s d : = v + u. O bsérvese q u e Rl q u e d a va­
c í o p o r q u e u n o t i e n e u s o s i g u i e n t e . E n t o n c e s se g e n e r a M O V R O ,d p a r a a l m a c e n a r
la v a r i a b l e a c t i v a d a l fi n a l d e l b l o q u e .
El c o s t o d e l c ó d i g o g e n e r a d o e n la f i g u r a 9 . 1 0 e s 12. S e p o d r í a r e d u c i r a 11 ge­
n e r a n d o M O V R O , R l i n m e d i a t a m e n t e d e s p u é s d e la p r i m e r a i n s t r u c c i ó n y e l i m i ­
n a n d o la i n s t r u c c i ó n M O V a, R l p e r o h a c e r e s t o e x i g e u n a l g o r i t m o d e g e n e r a c i ó n d e
c ó d ig o m á s c o m p lic a d o . L a r a z ó n d e los a h o r r o s es q u e re su lta m á s b a r a t o ca rg a r
R l d esd e RO q u e d esd e m e m o ria . □

G e n e r a c ió n d e c ó d ig o para o t r o s tip o s d e p r o p o s ic io n e s

L as o p e r a c i o n e s d e in d iz a c ió n y d e a p u n t a m i e n t o e n las p r o p o s ic io n e s d e tres d ir e c ­
c i o n e s se t r a t a n d e la m i s m a m a n e r a q u e l a s o p e r a c i o n e s b i n a r i a s . L a t a b l a d e la
f i g u r a 9 .11 m u e s t r a l a s s e c u e n c i a s d e c ó d i g o g e n e r a d a s p o r l a s p r o p o s i c i o n e s d e a s i g ­
n acio n es in d izad as a : = b [ i ) y a [ i ] : = b , s u p o n ie n d o q u e b está a sig n a d a es­
táticam ente.
9.6 U N G E N E R A D O R D E C O D IG O SIMPLE 557

i e n el R egistro rí i en M emoria mí i e n l a P ila


P r o po s i c i ón
Código C osto Código C osto Código C osto

M O V Mi,R M O V S i (A ) ,R
a := b[i] MOV b ( R i ),R 2 4 4
MOV b(R),R M O V b ( R ) ,R

M O V M i ,R M O V S i (A ) ,R
a[i] := b MOV b , a (R i ) 3 5 5
M O V b,a(R) M O V b,a(R)

Fig. 9 .1 1. Secuencias d e código p a ra asignaciones c o n índices.

L a p o sic ió n e n c u r s o d e i d e t e r m i n a la s e c u e n c ia d e c ó d ig o . Se c o n s id e r a n tres
c aso s d e p e n d ie n d o d e si i e s tá e n el reg istro R i , e n la p o sic ió n d e m e m o r ia M, o en
la p ila c o n d e s p la z a m ie n to s i y d e si el a p u n t a d o r al re g istro d e a c tiv a c ió n d e i está
e n el registro A. El registro R es el reg istro d e v u e lto c u a n d o se lla m a a la fu n c ió n
obienreg. P a r a la p r im e r a a s ig n a c ió n , se p re fe riría d e ja r a e n el reg istro R si a tien e
u n u s o sig u ie n te e n el b lo q u e y el re g istro R e s tá d is p o n ib le . E n la s e g u n d a a s ig n a ­
c ió n , se s u p o n e q u e a tie n e a s ig n a c ió n estática.
L a ta b la d e la fig u ra 9 .1 2 m u e s tr a las s e c u e n c ia s d e c ó d ig o g e n e ra d a s p o r las asig­
n a c io n e s d e a p u n t a d o r e s a : = * p y * p : = a . E n este caso . la lo c a lid a d e n c u r s o d e
p d e t e r m in a la s e c u e n c ia d e cód ig o.

p e n e l R e g i s t r o Rp p e n M e m o r i a Mp p e n l a P ila
iuín
Código Costo Código C osto Código C osto

M O V Mp,R M O V S p ( A ) ,R
a := *p M O V *Rp, a 2 3 3
M O V *R,R M O V *R,R

M OV Mp,R M O V a,R
*p := a M O V a,*Rp 2 4 4
M O V a,*R M O V R,*Sp(A)

Fig. 9.12. Secuencias d e código p a ra asignaciones con apuntadores.

S e c o n s id e ra n tr e s c a s o s d e p e n d ie n d o d e si p se e n c u e n t r a in ic ia lm e n te e n el re­
g istro R p . e n la po sició n d e m e m o r ia M p, o en la p ila c o n d e s p la z a m ie n to S p y d e si
el a p u n t a d o r al registro d e a c tiv a c ió n d e p está e n el re g istro A . El reg istro R e s el
registro d e v u e lto c u a n d o se lla m a a la f u n c ió n obienreg. E n la s e g u n d a a s ig n a c ió n se
s u p o n e q u e a tie n e a s ig n a c ió n estática.

P r o p o s ic io n e s c o n d ic io n a le s

L as m á q u i n a s i m p l a n t a n lo s s a lto s c o n d ic io n a le s e n u n a d e d o s fo rm a s . U n a m a ­
n e r a es s a lta r si el v a lo r d e u n reg istro d e s ig n a d o c u m p le u n a d e seis c o n d ic io n e s:
n eg ativ o , c e ro , p o sitiv o , n o n e g a tiv o , n o c e r o y n o p o sitiv o . E n d ic h a m á q u i n a se
p u e d e im p la n t a r u n a p ro p o s ic ió n d e tres d ire c c io n e s c o m o i f x< y g o t o z re s ta n d o
y a x e n el registro R, y s a lta n d o d e s p u é s a z si el v alo r d e l registro R es n eg ativ o .
558 G ENERA CIO N DE CO DIG O

U n s e g u n d o e n f o q u e , c o m ú n a m u c h a s m á q u in a s , u tiliz a u n c o n j u n t o d e códi­
gos d e condición p a r a in d ic a r si la ú lt im a c a n tid a d c a lc u la d a o c a r g a d a e n u n regis­
tro es n eg ativ a, c e r o o p o sitiv a. A m e n u d o u n a in s tru c c ió n d e c o m p a r a c ió n ( C M P
e n la m á q u in a d e este c a p ítu lo ) tie n e la v e n ta ja d e q u e a s ig n a el c ó d ig o d e c o n d ic ió n
sin c a lc u la r u n valor. Es d e c ir, cm p x , y p o n e el c ó d ig o d e c o n d ic ió n e n p o s itiv o si
x > y , y así s u c e s iv a m e n te . U n a in s tr u c c ió n d e m á q u i n a d e s a lto c o n d ic io n a l realiza
el s a lto si se c u m p le u n a c o n d ic ió n d e s ig n a d a < , = . > . o Se u tiliza la
in stru c c ió n C J < = z p a r a in d ic a r q u e “s a lta a z si el c ó d ig o d e c o n d ic ió n e s n ega­
tiv o o cero*'. P o r e je m p lo , i f x< y g o t o z se p o d r ía i m p l a n t a r m e d ia n te

CMP x, y
C J< z

Si se está g e n e r a n d o c ó d ig o p a r a u n a m á q u i n a c o n c ó d ig o s d e c o n d ic ió n e s útil
m a n t e n e r u n d e s c r ip to r d e c ó d ig o s d e c o n d ic io n e s c u a n d o se g e n e ra el c ó d ig o . Este
d e s c rip to r in d ic a el ú lt im o n o m b r e e n a s ig n a r el c ó d ig o d e c o n d ic ió n , o el p a r d e
n o m b r e s c o m p a r a d o s , si el c ó d ig o d e c o n d i c ió n se a s ig n ó p o r ú lt im a v e z d e esta
fo rm a . P o r ta n to , se p o d r ía im p la n ta r

x := y + z
i f x < 0 g o to z

m e d ia n te

MOV y , RO
ADD z , RO
MOV RO, x
CJ< z

si se su p ie ra q u e el c ó d ig o d e c o n d ic ió n fue d e te r m in a d o p o r x d esp u és d e add z, ro.

9 .7 D I S T R I B U C I O N Y A S I G N A C I O N D E R E G I S T R O S

I-as in s tru c c io n e s q u e im p lic a n só lo o p e r a n d o s e n reg istro s s o n m á s c o r ta s y rá p id a s


q u e las d e o p e r a n d o s e n m e m o r ia . P o r t a n t o , e s i m p o r t a n t e u tiliz a r e fic ie n te m e n te
los registros p a ra g e n e ra r d e b u e n código. E sta sección p r o p o n e v arias estrategias p a ra
d e c id ir los v alo res d e u n p r o g r a m a q u e d e b e n re sid ir e n reg istro s (a sig n a c ió n d e los
registros) y e n q u é registro d e b e re sid ir c a d a v a lo r (a sig n a c ió n a registros).
U n a s p e c to d e la d is trib u c ió n y a s ig n a c ió n d e los reg istro s es a s ig n a r v alo res es­
pecíficos e n u n p r o g r a m a o b je to a a lg u n o s registros. P o r e je m p lo , se p u e d e t o m a r la
d e c isió n d e a s ig n a r las d ire c c io n e s b a se a u n g r u p o d e registros, lo s c á lc u lo s a r it m é ­
tic o s a o tr o , el to p e d e la p ila d e e je c u c ió n a u n re g istro fijo, y a s í s u c e s iv a m e n te .
E ste e n f o q u e tie n e la v e n ta ja d e q u e sim p lific a el d iserto d e u n c o m p ila d o r . El
in c o n v e n ie n te e s q u e , si se a p lic a c o n d e m a s ia d a rigidez, n o u tiliz a e f ic ie n te m e n te
los registros; a lg u n o s reg istro s p u e d e n q u e d a r sin u tiliz a r d u r a n t e p a rte s s u b s ta n c ia ­
les d e c ó d ig o , m ie n tr a s q u e se g e n e r a n c a rg a s y a l m a c e n a m ie n t o s in n e c e sa rio s. Sin
e m b a r g o , e n la m a y o ría d e lo s e n t o r n o s d e c á lc u lo e s ra z o n a b le re s e rv a r a lg u n o s re-
9.7 DISTRIBUCION Y ASIGNACION DE REGISTROS 559

g istro s p a r a los reg istro s base, a p u n t a d o r e s a la pila, etc., y p e r m itir q u e el c o m p ila ­


d o r u tilice los re s ta n te s reg istro s c o m o c r e a c o n v e n ie n te .

D istrib u c ió n d e r e g is tro s g lo b a le s

El a lg o r itm o d e g e n e ra c ió n d e c ó d ig o d e la secció n 9 .6 u tiliz a b a reg istro s p a r a g u a r ­


d a r v a lo re s e n el tie m p o d e d u r a c ió n d e u n b lo q u e b ásico . S in e m b a r g o , to d a s las
v aria b les a c tiv a s se a lm a c e n a b a n e n m e m o r ia al final d e c a d a b lo q u e . P a r a e v ita r
a lg u n o s d e esto s a l m a c e n a m ie n t o s y c a rg a s c o rre s p o n d ie n te s , se p u e d e d e c id ir asig­
n a r los reg istro s a la s v aria b les u tiliz a d a s c o n fre c u e n c ia y m a n t e n e r c o n s is te n te s es­
to s registros a tra v é s d e los lim ite s d e los b lo q u e s (g lo b a lm e n te ). C o m o lo s p ro g ra ­
m a s p a s a n la m a y o r p a r te d e su ti e m p o e n lazos in te rn o s , u n e n f o q u e n a tu r a l d e la
d is trib u c ió n global d e reg istro s es int n t a r c o n s e r v a r u n v a lo r u tiliz a d o c o n fre c u e n ­
cia e n u n registro fijo d u r a n t e t o d o u n lazo. P o r el m o m e n t o , s u p ó n g a s e q u e se co ­
n o c e la e s tr u c tu r a d e la z o d e u n g rafo d e fiujo y los v a lo re s c a lc u la d o s e n u n b lo q u e
b ásico q u e se u tiliz an fu era d e ese b lo q u e . El sig u ie n te c a p itu lo e s tu d ia las té c n ic a s
p a r a c a lc u la r esta in fo rm a c ió n .
U n a estrategia p a r a la d is tr ib u c ió n g lo b a l d e registros es a s ig n a r u n n ú m e r o fijo
d e reg istro s p a r a g u a r d a r los v alo res m á s a c tiv o s d e c a d a la z o in te rn o . L os valores
se le c c io n a d o s p u e d e n s e r d is tin to s e n la zo s d is tin to s . S e p u e d e n u tiliz a r los registros
q u e to d a v ía n o se h a y a n a s ig n a d o p a r a c o n s e r v a r los v alo res lo cales a u n b lo q u e ,
c o m o e n la secció n 9.6. E ste e n f o q u e tie n e el d e fe c to d e q u e el n ú m e r o fijo d e regis­
tro s n o s ie m p re es el n ú m e r o c o r r e c to d e reg istro s d is p o n ib le s p a r a la a s ig n a c ió n glo­
bal d e registros. S in e m b a r g o , el m é to d o es sen cillo d e im p la n t a r y se h a u s a d o en
F O R T R A N H , el c o m p ila d o r o p t i m a d o r d e F O R T R A N p a r a las m á q u in a s d e la se­
rie 1B M -360 (L o w ry y M e d lo c k [1969]).
E n le n g u a je s c o m o C y BL1SS. u n p r o g r a m a d o r p u e d e rea liz a r u n a asig nació n
d e reg istro s d ir e c ta m e n te u tiliz a n d o d e c la ra c io n e s d e reg istro s p a r a c o n s e r v a r a lg u ­
n o s v a lo re s d e n t r o d e los reg istro s p a r a la d u r a c ió n d e u n p r o c e d im ie n to . U n uso
in te lig e n te d e las d e c la ra c io n e s d e reg istro s p u e d e a c e le ra r m u c h o s p ro g ra m a s , p e ro
u n p r o g r a m a d o r n o d e b e re a liz a r la a s ig n a c ió n d e los reg istro s s in p erfilar p r im e r o
su p ro g ra m a .

C u e n ta s d e uso

U n m é to d o sen cillo p a r a d e t e r m i n a r los a h o r r o s o b te n id o s al c o n s e r v a r la v ariable


v e n u n re g istro d u r a n t e el t i e m p o del la z o L es r e c o n o c e r q u e e n este m o d e lo d e
m á q u in a se a h o r r a u n a u n id a d d e c o s to p o r c a d a re fe re n c ia a x si x está en u n r e ­
gistro. S in e m b a r g o , si se u tiliz a el e n f o q u e d e la secció n a n te r io r p a r a g e n e ra r c ó ­
digo p a r a u n b lo q u e , es m u y p r o b a b le q u e d e s p u é s d e h a b e r c a lc u la d o x en un b lo ­
q u e p e r m a n e c e r á e n u n reg istro si h a y usos p o s te rio re s d e x e n d ic h o b lo q u e . P o r
ta n to , se c o n ta b iliz a u n a h o r r o d e u n o p o r c a d a u s o d e v d e n t r o del la z o L q u e n o
v e n g a p re c e d id o d e u n a a s ig n a c ió n a .v e n el m is m o b lo q u e . A sí. si se asig n a u n re­
g is tro a v. se c o n ta b iliz a u n a h o r r o d e d o s p o r c a d a b lo q u e d e L p a r a el q u e x esté
a c tiv o a la salid a y e n el q u e a x se le a s ig n a u n valor.
P o r p a rte del d é b ito , si x está a c tiv a e n la e n tr a d a al e n c a b e z a m ie n to del lazo, se
d e b e c a rg a r x en u n re g istro j u s t o a n te s d e e n t r a r e n el lazo L . E sta ca rg a c u e s ta d o s
560 G E N E R A C IO N D E C O D IG O

unidades. D e m anera sim ila r, para cada salida de un bloque B del lazo L en el que
x esté activo en la entrada a algún sucesor de B fuera de L , se debe alm acenar en
m em oria x con un costo de dos. S in em bargo, en el supuesto de que el lazo se repita
m uchas veces, se pueden ignorar estos débitos porque o curren sólo una vez cuando
se entra al lazo. P o r tanto, una fó rm ula aproxim ada para la ventaja obtenida al asig­
n ar un registro a x dentro del lazo L es:

2 ( uso (x , B ) + 2 *activo (x , B )) (9.4)


b lo q u e s B e n L

donde uso(x,B ) es el núm ero de veces que se u tiliz a x en B antes de cu alq u ier defi­
n ició n de x ; activo(x,B ) es 1 si x está activo a la salida de B y se le asigna un valor
en B , y en caso co n trario es 0. Obsérvese que (9 .4) es aproxim ada, porque no todos
los bloques en un lazo se ejecutan con la m ism a frecuencia y tam bién porque (9.4)
se basaba en el supuesto de que un lazo se repite “ m uchas” veces. E n otras m áqui­
nas, habrá que d esarro llar una fó rm ula análoga a (9.4), aunque posiblem ente bas­
tante distinta de ella.

Considérense los bloques básicos dentro del lazo interno representado


E j e m p l o 9 .6 .
en la figura 9 .13, donde se han o m itid o proposiciones de salto y salto co n dicio n al.
Supóngase que se asignan los registros R0, R l y R2 para guardar valores a través del
lazo. Las variables activas a la entrada y a la salida de cada bloque se m uestran por
conveniencia en la figura 9 .13, inm ediatam ente p o r encim a y p o r debajo de cada
bloque, respectivam ente. E n el cap ítulo 10 se señalan algunos puntos sutiles sobre
las variables activas. P o r ejem plo, obsérvese que tanto e com o f están activos al fi­
nal de B h pero sólo e está activo a ¡a entrada de B 2 y sólo f está activo a la entrada
de B-¡. E n general, las variables activas al fin al de un bloque son la u n ió n de las va­
riables activas al com ienzo de cada uno de sus bloques sucesores.
Para evaluar (9 .4) para x = a se observa que a está activa a la salida de B¡ y se
le asigna un v a lo r a llí, pero no está a c tiv a a la salid a de B 2, B 2 o B 4. P o r tanto,
2 . 2* activo (a ,B ) = 2. A sim ism o , uso (a ,B¡) - 0, porque a se define en B , antes
B en /.

Fig. 9 .1 3. G rafo de flujo para un lazo interno.


9.7 DISTR IBUC IO N Y ASIG NA CIO N D E REG ISTRO S 561

d e c u a lq u ie r u so . T a m b ié n . u s o { a .B 2) = u so (a .B y ) = 1 y u so { a ,B 4) = 0 . P o r ta n to ,
2 uso ( a ,B) = 2. Así. el v a lo r d e (9.4) p a r a x = a es 4. E s d e c ir, se p u e d e n a h o r r a r
8 en L
c u a tr o u n id a d e s d e c o s to s e le c c io n a n d o a p a r a u n o d e los reg istro s globales. L o s v a­
lo res d e (9 .4 ) p a r a b . c , d . e y f s o n 6, 3, 6 . 4 y 4 , re s p e c tiv a m e n te . D e ese m o d o se
p u e d e n se le c c io n a r a, b y d p a r a los registros RO, R l y R2, re s p e c tiv a m e n te . U tiliz a r
R O p a ra e o f e n lu g a r d e p a r a a sería o t r a o p c ió n c o n la m is m a v e n ta ja a p a re n te .
E n la fig u ra 9 .1 4 se m u e s t r a el c ó d ig o e n s a m b l a d o r g e n e r a d o a p a r t i r d e la fig u ­
ra 9 .1 3 , s u p o n ie n d o q u e se u tiliz a la e stra te g ia d e la secció n 9 .6 p a r a g e n e r a r c ó d ig o
p a r a c a d a b lo q u e . N o se m u e s tr a el c ó d ig o g e n e r a d o p a r a los salto s c o n d ic io n a le s o
in c o n d ic io n a le s q u e fin a liz a n c a d a b lo q u e d e la figura 9 .1 3 , y p o r t a n t o n o se m u e s ­
tr a el c ó d ig o g e n e r a d o c o m o s e c u e n c ia s im p le , c o m o a p a re c e ría e n la p rá c tic a . Se
h a c e o b s e rv a r q u e . si n o se c iñ e u n o a la estrateg ia d e r e s e ñ a r RO, Rl y R2. se p o d ría
utilizar

SUB R 2 , RO
MOV RO, f

p a ra B 2, a h o r r a n d o u n a u n id a d ya q u e a n o está a c tiv o a la salid a d e B 2. S e p o d ría


rea liz a r e n B } u n a h o r r o s im ila r. □

M O V b, Rl
MOV d,R2

N * 1
MOV R l ,RO
ADD, c, RO
SUB Rl, R2 B
MOV R O ,R3
ADD f,R3
M OV R3,e

Z
MOV R O , R3
\
MOV R 2 , R l
SUB R 2 , R3 b 2 ADD f , R l
MOV R 3 , f MOV R O , R3 By
\\ SUB C,R3
MOV R 3 , e

y~
MOV R 2 , Rl M O V Rl, b
b4
ADD C , Rl M OV R2,d

^ *
MOV R l ,b
MOV R2,d

F ig. 9 . 1 4 . S e c u e n c ia d e c ó d i g o q u e u sa a s ig n a c ió n a registros globales.


562 G E N E R A C IO N D E C O D IG O

A sig n a c ió n a r e g is tr o s p a r a la z o s e x te rn o s

H abiendo asignado registros y generado código para los lazos internos, se puede
ap licar la m ism a idea para lazos cada vez más grandes. Si un lazo externo L { con­
tiene un lazo interno L 2, no hay que asignar registros en - L 2 a los nom bres a los
que se les asignaron registros en L 2. Sin embargo, si al nom bre x se le asignó un
registro en el lazo L , pero no en L 2, se debe alm acenar x a la entrada de L 2 y cargar
x si se abandona L 2 y se entra a un bloque de L \ - L 2. D e m anera sim ilar, si se elige
asignar a x un registro en L 2 pero no en L u se debe cargar x a la entrada de L 2 y
alm acenar x en m em oria a la salida de L 2. Se deja com o ejercicio práctico la obten­
ción de un criterio para seleccionar los nom bres a los que se les asignarán registros
en un lazo externo L , dado que ya se ha hecho la selección para todos los lazos ani­
dados dentro de L.

A sig n a c ió n d e lo s re g is tro s m e d ia n te c o lo ra c ió n d e g ra fo s

C uando se necesita un registro para un cálculo pero todos los registros disponibles
están siendo utilizados, se debe alm acenar (vaciar) el contenido de uno de los regis­
tros utilizados en una posición de m em oria para dejar libre un registro. L a colora­
ción de grafos es una técnica sistem ática y sencilla para asignar registros y adm inis­
trar el vaciado de los registros.
En este m étodo se utilizan dos pasadas. En la prim era, se seleccionan instruccio ­
nes de la m áquina objeto com o si hubiera un núm ero in fin ito de registros sim b óli­
cos; en efecto, los nom bres utilizados en el código interm edio se convierten en nom ­
bres de registros y las proposiciones de tres direcciones se convierten en proposiciones
en el lenguaje de m áquina. Si el acceso a las variables exige instrucciones que u tili­
cen apuntadores a la pila, apuntadores al display, registros de base u otras cantida­
des que faciliten el acceso, entonces se supone que estas cantidades se conservan en
registros reservados para cada propósito. N orm alm ente su uso es directam ente tra­
ducible a un m odo de acceso para una dirección m encionada en una instrucción de
m áquina. Si el acceso es más com plejo, éste se puede d iv id ir en varias instrucciones
de m áquina, y puede ser necesario crear un registro sim bólico tem poral (o varios).
U n a vez seleccionadas las instrucciones, una segunda pasada asigna registros fí­
sicos a los registros sim bólicos. E l o bjetivo es en co n trar una asignación que m in i­
m ice el costo de los vaciados de registros.
E n la segunda pasada se construye para cada procedim iento un grafo d e interfe­
rencia entre registros en el que los nodos son registros sim b ó lico s y un a arista co ­
necta dos nodos si uno está activo en un punto donde se define el otro. Por ejem plo,
un grafo de interferencia entre registros para la figura 9 .13 tendría nodos para los
nom bres a y d. En el bloque B h a está activa en la segunda proposición, que define
a d; por tanto, en el grafo habría una arista entre los nodos de a y d.
Se intenta colorear el grafo de interferencia entre registros utilizando k colores,
donde k es el núm ero de registros asignables. (Se dice que un grafo está coloreado si
a cada nodo se le ha asignado un co lo r de m odo que no haya dos nodos adyacentes
con el m ism o co lo r.) U n co lo r representa un registro y la coloración garantiza que
no se asigna el m ism o registro físico a dos registros sim bólicos que pueden interferir
uno con el otro.
9.8 R E P R E S E N T A C IO N D E B L O Q U E S BASICOS P O R M E D I O D E G D A 563

A u n q u e el p r o b le m a d e d e t e r m in a r si u n g rafo es ¿ -c o lo re a b le es g e n e ra lm e n te
N P - c o m p le to , se p u e d e u tiliz a r la sig u ie n te té c n ic a h e u rístic a e n la p rá c tic a p a ra re a ­
lizar el c o lo re a d o r á p id a m e n te . S u p ó n g a s e q u e u n n o d o n e n u n g rafo G tie n e m e ­
n o s q u e ¿ v ecin o s (n o d o s c o n e c ta d o s a n p o r u n a arista). E lim ín e s e n y sus arista s
d e G p a ra o b te n e r u n g rafo G . U n ¿ -c o lo re a d o d e G se p u e d e a m p lia r a u n ¿ -c o ­
lo re a d o d e G a s ig n a n d o a // u n c o lo r n o a s ig n a d o a n in g u n o d e sus v ecinos.
E lim in a n d o r e p e tid a m e n te el grafo d e in terferen cia s e n tre registros los n o d o s co n
m e n o s d e k a rista s, se o b ti e n e el g ra fo v a c ío , e n c u y o c a s o se p u e d e p r o d u c i r u n
¿ -c o lo re a d o del g rafo o rig in a l c o lo r e a n d o los n o d o s en o r d e n in v e rs o al q u e fu ero n
e lim in a d o s o b ie n se o b tie n e u n g rafo en el q u e c a d a n o d o tie n e ¿ o m á s n o d o s a d ­
yacentes. E n este ú ltim o caso, ya n o es posible u n ¿ -co lo re ad o . Llegados a este p u n to ,
u n n o d o se v acía in t r o d u c ie n d o c ó d ig o p a r a a l m a c e n a r e n m e m o r ia y re c a rg a r el
registro. E n to n c e s se m o d ific a a d e c u a d a m e n t e el g rafo d e in te rfe re n c ia s y se c o n ti­
n ú a el p ro c e s o d e c o lo re a d o . C h a itin [1 9 8 2 ] y C h a itin y c o la b o r a d o r e s [1 9 8 1 ] des­
crib e n v a ria s h e u rís tic a s p a ra eleg ir el n o d o q u e se v a a v aciar. C o m o regla general
se e v ita in tr o d u c ir c ó d ig o p a r a v a c ia r reg istro s e n lazos in tern o s.

9 .8 R E P R E S E N T A C I O N D E B L O Q U E S B A S I C O S P O R M E D I O D E G D A

L o s g rafo s a cíclico s d irig id o s ( G D A ) s o n e s tr u c tu r a s d e d a to s ú tiles p a r a im p la n t a r


tr a n s f o r m a c io n e s e n b lo q u e s básicos. U n G D A p r o p o r c io n a u n a im a g e n d e c ó m o el
v alo r c a lc u la d o p o r c a d a p ro p o sic ió n e n u n b lo q u e b ásico se usa en su b sig u ie n te s
p ro p o s ic io n e s del b lo q u e . C o n s tr u ir u n G D A a p a r tir d e p ro p o s ic io n e s d e tr e s d ire c ­
c io n e s es u n a b u e n a m a n e r a d e d e t e r m i n a r s u b e x p r e s io n e s c o m u n e s (e x p re s io n e s
c a lc u la d a s m á s d e u n a vez) d e n t r o d e u n b lo q u e , d e t e r m i n a n d o los n o m b r e s q u e se
u tiliz an d e n t r o d e l b lo q u e p e ro q u e se e v a lú a n fu era d e él, y d e t e r m i n a n d o q u é p r o ­
p o sicio n es del b lo q u e p o d r ía n u tiliz a r su v a lo r c a lc u la d o fu era del b lo q u e .
U n G D A para un bloque básico ( o s im p le m e n te G D A) es u n g rafo d irig id o ací-
clico c o n las sig u ie n te s e tiq u e ta s e n los nodos:

1. L as h o ja s se e tiq u e ta n c o n id e n tific a d o re s ú n ic o s , y a se a n n o m b r e s d e variab les


o c o n s ta n te s . S eg ún el o p e r a d o r a p lic a d o a u n n o m b r e , se d e t e r m in a si se n e c e ­
sita el v a lo r d e la d o iz q u ie rd o o d e la d o d e re c h o ; la m a y o ría d e las h o ja s r e p re ­
s e n ta n v a lo re s d e la d o d e r e c h o . L as h o ja s re p re s e n ta n v alo res iniciales d e n o m ­
b res, y se les d a c o m o s u b ín d ic e 0 p a r a e v ita r c o n f u n d ir la s c o n las e tiq u e ta s q u e
in d ic a n v alo res “e n c u r s o ” d e n o m b r e s c o m o e n (3), m á s ad elan te.

2. L o s n o d o s in te rio re s se e tiq u e ta n c o n u n s ím b o lo d e o p e ra d o r.

3. O p c io n a l m e n te , ta m b ié n se les a s ig n a a los n o d o s u n a se c u e n c ia d e id e n tific a ­


d o re s p a ra las e tiq u e ta s. L a in te n c ió n e s q u e los n o d o s in te rio re s re p re s e n te n v a ­
lores c a lc u la d o s y se c o n s id e ra q u e los id e n tific a d o re s q u e e tiq u e ta n u n n o d o
tie n e n ese valor.

E s i m p o r ta n te n o c o n f u n d ir los G D A c o n g rafo s d e flujo. C a d a n o d o d e u n grafo


se p u e d e re p re s e n ta r m e d ia n te u n G D A . p o r q u e c a d a n o d o del g rafo d e flujo r e p re ­
s e n ta u n b lo q u e básico.
564 G E N E R A C IO N D E CO DIGO

(1) t, ¡= 4 * i
(2) t* i- a l t, )
(3) t3 != 4 * i
(4 ) t4 := b [ t3 )
(5) t 5 := t2 * t4
(6) t6 := prod + t5
(7) prod := t(,
(8) t7 := i + 1
(9) i :~ t 7
(1 0 ) i f i < = 20 g o t c

Fig. 9.15. C ódigo d e tres direcciones p a ra el bloque B2.

E je m p lo 9 .7 . E n la figura 9 .1 5 se m u e s tra el c ó d ig o d e tres d ire c c io n e s q u e c o rre s ­


p o n d e al b lo q u e B2 d e la figura 9.9. S e h a n u tiliz a d o p o r c o n v e n ie n c ia los n ú m e ro s
d e la s p ro p o s ic io n e s, c o m e n z a n d o p o r (1). E n la fig u ra 9 .1 6 se m u e s tr a el G D A c o ­
rre s p o n d ie n te . Se a n a liz a el sig n ific a d o d e l G D A d e s p u é s d e d a r u n a lg o ritm o p a ra
c o n s tru irlo . P o r el m o m e n to , ob sérv ese q u e c a d a n o d o d e l G D A r e p re s e n ta u n a fór­
m u la re fe re n te a la s h ojas, es d ecir, los v a lo re s q u e p o seen las v a ria b le s y c o n s ta n te s
al e n t r a r al b lo q u e . P o r e je m p lo , el n o d o e tiq u e ta d o c o n t 4 d e la fig u ra 9 .1 6 rep re­
s e n ta la fó rm u la

b [4 * i ]

es d e c ir, el v a lo r d e la p a la b ra c u y a d ire c c ió n está d e s p la z a d a 4 * i b y te s d e la d ire c ­


c ió n b , q u e e s el v a lo r q u e c o r r e s p o n d e a t 4. □

C o n s tr u c c ió n d e un G D A

P a ra c o n s tr u i r u n G D A p a r a u n b lo q u e b á s ic o , se p ro c e s a c a d a p ro p o s ic ió n del b lo ­
q u e p o r tu r n o . C u a n d o a p a re c e u n a p ro p o s ic ió n d e la f o r m a x : = y + z se b u s c a n los
n o d o s q u e r e p r e s e n ta n lo s v a lo r e s “ e n c u r s o " d e y y z . E s to s p o d r í a n s e r h o ja s,
o n o d o s in te rio re s d e l G D A si y o z o a m b o s h u b ie ra n sid o e v a lu a d o s p o r p ro p o s i­
c io n e s a n te r io r e s d e l b lo q u e . D e s p u é s se c r e a u n n o d o e tiq u e ta d o c o n + y se le d a n

a b 4 i0 1

F ig . 9 .1 6 . G D A p ara el b lo q u e d e la figura 9 .1 5 .
9.8 R E P R E S E N T A C IO N D E B L O Q U E S BASICOS P O R M E D IO DE G D A 565

d o s hijos; el h ijo iz q u ie rd o es el n o d o c o r r e s p o n d ie n te a y . el d e r e c h o es el n o d o
c o r r e s p o n d ie n te a z. D e s p u é s se e tiq u e ta ese n o d o c o n x . S in e m b a r g o , si ya existe
u n n o d o q u e in d iq u e el m is m o v a lo r q u e y + z , n o se a ñ a d e el n u e v o n o d o al G D A .
sin o q u e al n o d o e x isten te se le p r o p o r c io n a la e tiq u e ta a d ic io n a l x.
S e d e b e n m e n c io n a r d o s d etalles. P r im e ro , si x ( n o x 0) h a b ía e tiq u e ta d o p re v ia ­
m e n te alg ú n o t r o n o d o , se e lim in a d ic h a e tiq u e ta , p u e s to q u e el v a lo r “ e n c u r s o " d e
x es el n o d o recién c re a d o . S e g u n d o , p a r a u n a asig n ac ió n c o m o x : = y n o se c re a
u n n u e v o n o d o sin o q u e se a ñ a d e la e tiq u e ta x a la lista d e n o m b r e s e n el n o d o cread o
p a r a el v alo r “ e n c u r s o " d e y.
A h o r a se p r o p o r c io n a el a lg o ritm o p a r a c a lc u la r u n G D A a p a r ti r d e u n b lo q u e .
El a lg o ritm o es casi el m is m o q u e el a lg o ritm o 5 .1 , e x c e p to la lista a d ic io n a l d e iden-
tific a d o re s q u e se a s o c ia a q u í a c a d a n o d o . Se d e b e a d v e r tir al le c to r q u e este algo­
r itm o p u e d e n o o p e r a r c o r r e c ta m e n te si h a y a sig n a c io n e s a m a tric e s, si h a y asig n a­
cio n es in d irectas a trav és d e a p u n ta d o r e s , o si se p u e d e h a c e r referen cia a u n a posición
d e m e m o r ia c o n d o s o m á s n o m b r e s , d e b i d o a p ro p o s ic io n e s equivalence o a las
c o r r e s p o n d e n c ia s e n t r e p a r á m e tr o s re a le s y f o r m a le s d e la ll a m a d a a u n p r o c e d i­
m ie n to . Al fin al d e esta secció n se e s tu d ia n las m o d ific a c io n e s n e c e s a ria s p a r a tr a ta r
estas situ acio n es.

A lg o r itm o 9 .2 . C o n s tr u c c ió n d e u n G D A .

Entrada. U n b lo q u e básico.
Salida. U n G D A p a r a el b lo q u e b ásico q u e c o n tie n e la sig u ie n te in fo rm a c ió n :
1. U n a etiqueta p a r a c a d a n o d o . P a r a las h ojas, la e tiq u e ta es u n ¡d e n tific a d o r (se
p e r m ite n c o n s ta n te s ) y p a r a los n o d o s in te rio re s, u n s ím b o lo d e o p e ra d o r.

2. P a r a c a d a n o d o , u n a lista (p o s ib le m e n te vacía) d e id en tificado res a so c ia d o s (aq u í


n o se p e r m ite n c o n sta n te s).

M étodo. Se s u p o n e q u e e s tá n d is p o n ib le s las e s tr u c tu r a s d e d a to s a d e c u a d a s p a ra
c re a r n o d o s c o n u n o o d o s hijos, d is tin g u ie n d o e n tr e el h ijo “ iz q u ie r d o " y “d e r e c h o ”
e n el ú l t i m o c a s o . T a m b i é n h a y u n lu g a r d is p o n ib le e n la e s tr u c t u r a p a r a u n a e ti­
q u e ta p a r a c a d a n o d o y la p o sib ilid a d d e c r e a r u n a lista e n la z a d a d e lo s id e n tific a ­
d o re s a s o c ia d o s a c a d a n o d o .
A d e m á s d e esto s c o m p o n e n te s , h a y q u e m a n t e n e r el c o n j u n t o d e to d o s los id e n ­
tific a d o re s ( in c lu id a s c o n s ta n te s ) p a r a lo s c u a le s h a y u n n o d o a s o c ia d o . E l n o d o
p o d r ía s e r u n a h o ja e t i q u e t a d a c o n u n id e n tif ic a d o r o u n n o d o i n t e r i o r c o n d ic h o
i d e n t i f i c a d o r e n s u lis ta d e id e n tif ic a d o r e s a s o c ia d o s . S e s u p o n e la e x i s t e n c ia de
u n a fu n c ió n , nodo(identificador) q u e , c o n f o r m e se c o n s tr u y e el G D A , d e v u e lv e el
n o d o m á s r e c i e n t e m e n t e c r e a d o a s o c i a d o c o n identificador. I n t u i t i v a m e n t e ,
nodo{identificador) es el n o d o d e l G D A q u e r e p re s e n ta el v alo r q u e tie n e identifica­
dor en el p u n t o e n c u r s o e n el p ro c e s o d e c o n s tr u c c ió n del G D A . E n la p rá c tic a , u n a
e n tr a d a e n el reg istro d e la ta b la d e s ím b o lo s p a r a identificador in d ic a ría el v a lo r d e
nodo{ identificador).
El p ro c e s o d e c o n s tru c c ió n del G D A co n siste e n rea liz a r los sig u ie n tes pasos. 1
al 3 , p a r a c a d a p r o p o s ic ió n d e l b lo q u e p o r tu r n o . A l in ic io s e s u p o n e q u e n o hay
n o d o s, y la f u n c ió n nodo está sin d e fin ir p a r a to d o s los a r g u m e n to s . S u p ó n g a s e q u e
566 GENERACION DE CODIGO

la p ro p o s ic ió n d e tr e s d ir e c c io n e s **en c u r s o ” es (i) x : = y op z , (ii) x : = op y , o


(iii) x : = y 7. S e c i ta r á n c o m o lo s c a s o s (i), (ii) y (iii). U n o p e r a d o r r e la c io n a l c o m o
i f i <= 2 0 g o t o se c o n s id e r a c o m o c a s o (i), c o n x in d e fin id a .

1. Si nodo( y ) está in d e fin id a , créese u n a h o ja e tiq u e ta d a c o n y , y q u e nodo{ y ) sea


este n o d o . E n el c a so (i), si n o d o (z) está in d e fin id a , créese u n a h o ja e tiq u e ta d a
c o n z y q u e esa h o ja sea nodo( z).

2. E n el c a s o (i), d e t e r m í n e s e si h a y u n n o d o e t i q u e t a d o c o n op , c u y o h i j o iz ­
q u ie rd o sea n o d iiy ) y c u y o h ijo d e re c h o sea nodo( z). (E sta c o m p ro b a c ió n es p a ra
d e te c ta r las s u b e x p re s io n e s c o m u n e s .) Si n o e s así, créese d ic h o n o d o . E n c u a l­
q u ie r caso , sea // el n o d o e n c o n t r a d o o c re a d o . E n el c a so (ii), d e te r m ín e s e si hay
u n n o d o e t iq u e ta d o c o n op. c u y o ú n ic o h ijo sea nodcK y ). Si n o , créese d ic h o
n o d o , y q u e n sea el n o d o e n c o n t r a d o o c re a d o . E n el c a so (iii). q u e n sea el
nodoi y).

3. B órrese x d e la lista d e id e n tific a d o re s a s o c ia d o s a nodo (x ). A ñ á d a s e x a la lista


d e id e n tific ad o res a so c ia d o s al n o d o n e n c o n tr a d o en el p a so 2 e iguálese nodo (x)
a //. □

E je m p lo 9 . 8 . C o n s id é r e s e d e n u e v o el b lo q u e d e la fig u ra 9 .1 5 p a r a v e r c ó m o se
c o n s tr u y e p a r a él el G D A d e la fig u ra 9 .1 6 . L a p r im e r a p ro p o s ic ió n es t j : = 4 * i .
E n el p a s o 1 se d e b e n c r e a r las h o ja s e tiq u e ta d a s c o n 4 e i 0. (Se u tiliz a el s u b ín d ic e
0. c o m o a n te s , p a ra a y u d a r a d is tin g u ir las e tiq u e ta s d e los id e n tific a d o re s a so c ia d o s
en los d ib u jo s, p e r o el s u b ín d ic e n o fo rm a p a rte r e a lm e n te d e la e tiq u e ta .) E n el paso
2 se c re a u n n o d o e tiq u e ta d o c o n *. y e n el p a so 3 se le a s o c ia el id e n tific a d o r t , .
E n la figura 9 .1 7(a) se m u e s tra el G D A e n esta e ta p a .

(a)

<b>

Fig. 9.17. Pasos en el proceso de construcción d e u n G D A .

Se supone que los operadores tienen a lo sumo dos argumentos. La generalización a tres o más
argumentos es fácil.
9.8 R E P R E S E N T A C IO N D E B L O Q U E S BASICOS POR M E D IO D E G D A 567

P a r a la s e g u n d a p ro p o s ic ió n . : = a [ t , ] se c r e a u n a n u e v a h o ja e tiq u e ta d a c o n
a y se e n c u e n tr a el n o d o a n t e r io r m e n t e c r e a d o n o d d t | ) . T a m b ié n se c re a u n n u e v o
n o d o e tiq u e ta d o c o n [ ] al c u a l se a s o c ia n c o m o h ijo s los n o d o s c o rr e s p o n d ie n te s a
a y ti.
P a ra la p ro p o sició n (3). t \ := 4 * i . se d e te r m in a q u e ya existen nodo(4) y nodo(i) .
C o m o el o p e r a d o r es *, n o se c re a u n n u e v o n o d o p a r a la p ro p o s ic ió n (3), s in o q u e
se aso cia t i a la lista d e id e n tific a d o re s p a r a el n o d o t | . E n la figura 9 .1 7(b) se m u e s ­
tr a el G D A o b t e n i d o . Se p u e d e u t i l i z a r e l m é t o d o d e l n ú m e r o d e v a lo r d e
la secció n 5.2 p a r a d e s c u b r ir r á p id a m e n te q u e y a ex iste el n o d o c o r r e s p o n d ie n te a
4 * i.
Se in v ita al le c to r a c o m p le ta r la c o n s tr u c c ió n del G D A . S ó lo se m e n c io n a n los
p a s o s q u e se t o m a n p a r a la p ro p o s ic ió n (9), i : = t 7. A n te s d e la p ro p o s ic ió n (9).
nodo(i ) es la h o ja e tiq u e ta d a c o n i 0. L a p ro p o sic ió n (9) es u n e je m p lo del c a so (iii);
p o r t a n t o , se e n c u e n t r a nodo( t 7), se a ñ a d e i a s u lis ta d e i d e n t i f i c a d o r e s , y se
nodo{ i ) a nodo{t 7). E sta e s u n a d e só lo d o s p ro p o s ic io n e s [la o tr a es la p ro p o sic ió n
(7)) d o n d e se c a m b ia el v a lo r d e nodo p o r un id e n tific a d o r. E ste c a m b io g a ra n tiz a
q u e el n u e v o n o d o p a r a i sea el h ijo iz q u ie r d o d e l n o d o p a r a el o p e r a d o r <= c o n s ­
tr u i d o p a r a la p ro p o s ic ió n (10). □

A p lic a c io n e s d e lo s G D A

Se p u e d e n o b te n e r in f o r m a c io n e s ú tiles c u a n d o se e je c u ta el a lg o ritm o 9.2. P rim e ro ,


o b sérv ese q u e las s u b e x p re s io n e s c o m u n e s se d e te c ta n a u t o m á ti c a m e n te . S e g u n d o ,
se p u e d e d e t e r m in a r los id e n tific a d o re s c u y o s v a lo re s h a n s id o u tiliz a d o s e n un blo­
q u e : s o n e x a c ta m e n te a q u e llo s p a r a los q u e en a lg ú n m o m e n t o se c re ó u n a h o ja en
el p a so 1. T erce ro , se p u e d e d e t e r m in a r las p ro p o s ic io n e s q u e c a lc u la n v alo res q u e
p o d ría n utilizarse fu era del b lo q u e . S o n p re c is a m e n te a q u e lla s p ro p o s ic io n e s S c u y o
n o d o n c o n s tr u id o o e n c o n t r a d o e n el p a so 2 a ú n tien e n o d o ix) = n al final d e la
c o n s tru c c ió n del G D A . d o n d e x es el id e n tific a d o r al q u e la p ro p o s ic ió n S le asigna
u n valor. (E q u iv a le n te m e n te , x to d a v ía es u n id e n tif ic a d o r a s o c ia d o a n.)

E je m p lo 9 . 9 . E n el e je m p lo 9.8. to d a s las p ro p o s ic io n e s c u m p le n la lim ita c ió n a n ­


te rio r p o r q u e s ie m p re q u e nodo se re d e fin e p a r a p r o d e i el v a lo r a n te r io r d e nodo
e ra u n a h o ja . P o r t a n t o , to d o s los v alo res d e los n o d o s in te rio re s p u e d e n s e r u tiliza­
d o s fu era d e l b lo q u e . A h o ra , s u p ó n g a s e q u e a n te s d e la p ro p o sic ió n (9) se in serta
u n a p ro p o s ic ió n n u e v a s q u e le asig n a u n v alo r a i . E n la p ro p o s ic ió n s se crearía
u n n o d o m y se h aría nodo{ i ) = m . S in e m b a r g o , en la p ro p o sic ió n (9) se re d e fin iria
nodoii ). P o r ta n to , el v a lo r c a lc u la d o e n la p ro p o s ic ió n v n o se p o d r ía u tiliz a r fuera
del b lo q u e . □

O t r o u s o i m p o r t a n t e d e l G D A e s r e c o n s tr u ir u n a lista s im p lific a d a d e c u á d r u ­
p lo s a p r o v e c h a n d o las s u b e x p re s io n e s c o m u n e s y n o r e a liz a n d o a sig n a c io n e s d e la
fo rm a x : = y , a m e n o s q u e fu era a b s o lu ta m e n te n e c e sa rio . Es d ecir, s ie m p re q u e
u n n o d o te n g a m á s d e u n id e n tific a d o r en su lista a so c ia d a , se c o m p r u e b a si son
n ecesario s id e n tific a d o re s fu era del b lo q u e y cuáles. C o m o y a se h a m e n c io n a d o , e n ­
c o n tr a r las variab les a c tiv a s p a r a el final d e u n b lo q u e re q u ie re u n a n álisis del flujo
d e d a to s lla m a d o “a n álisis d e v aria b les a c tiv a s ” q u e se e s tu d ia e n el c a p ítu lo 10. Sin
568 G EN ER A C IO N DE CO DIG O

e m b a r g o , e n m u c h o s c a s o s se p u e d e s u p o n e r q u e n o se n e c e s ita n i n g ú n n o m b r e
te m p o r a l c o m o t ,, t 2, . . . , t 7 e n la fig u ra 9 .1 5 f u e ra del b lo q u e . (P e ro h a y q u e te n e r
c u id a d o c o n la tr a d u c c ió n d e las e x p re s io n e s lógicas; u n a e x p re s ió n se p u e d e e x te n ­
d e r a v ario s b lo q u e s básicos.)
E n g e n e ra l, se p u e d e n e v a lu a r lo s n o d o s in te rio re s d e l G D A e n c u a lq u ie r o rd e n
q u e sea u n o r d e n a m i e n t o to p o ló g ic o d e l G D A . E n u n o r d e n a m ie n to to p o ló g ic o , u n
n o d o n o se e v a lú a h a s ta q u e h a y a n sid o e v a lu a d o s to d o s s u s h ijo s q u e se a n n o d o s
in terio res. C o n f o r m e se e v a lú a u n n o d o , se a s ig n a su v a lo r a u n o d e s u s id e n tific a ­
d o re s aso ciad o s x . d a n d o p referen cia a u n o c u y o v alo r sea n ecesario fu era del blo qu e.
S in e m b a rg o , n o se p u e d e elegir x si h a y o t r o n o d o m c u y o v alo r ta m b ié n g u a r d a r a x
tal q u e m ha sid o e v a lu a d o y a ú n está “a c tiv o ”. A q u í se d efin e q u e m está a c tiv o si se
n ecesita su v alo r fu era d e l b lo q u e o si m tie n e u n p a d re to d a v ía s in evaluar.
Si h a y id e n tific a d o re s a s o c ia d o s a d ic io n a le s y u y 2, . . . , y* p a r a u n n o d o n c u y o s
v alo res ta m b ié n s o n n ecesario s f u e ra d e l b lo q u e , se les h a c e n a s ig n a c io n e s m e d ia n te
las p ro p o s ic io n e s y i : = x , y 2 : = x , . . . , y* : = x . Si n n o tie n e id e n tific a d o re s a s o ­
c ia d o s (esto p o d ría p a s a r si, p o r e jem p lo , n fu era c re a d o p o r u n a asig n ac ió n a x , pero
p o s te r io rm e n te a x se le reasig n ó o t r o v alo r), se c r e a u n n u e v o n o m b r e te m p o r a l
p a r a c o n s e r v a r el v a lo r d e n. El le c to r d e b e s a b e r q u e e n la p re s e n c ia d e a sig n a c io n e s
d e a p u n ta d o r e s o m a tric e s, n o se p e r m ite n in g ú n o r d e n a m i e n t o to p o ló g ic o d e u n
G D A ; este t e m a se t r a t a r á e n breve.

E je m p lo 9 .1 0 . S e r e c o n s tr u y e u n b lo q u e b á s ic o d e l G D A d e la fig u ra 9 .1 6 , o r d e ­
n a n d o los n o d o s e n el m is m o o r d e n e n q u e se c re a ro n : t i , t 2, t 4, t 5, t 6, t 7, (1).
O b sé rv e se q u e las p ro p o s ic io n e s (3) y (7) d e l b lo q u e o rig in a l n o c r e a r o n n u e v o s n o ­
d o s . s in o q u e a ñ a d ie r o n las e tiq u e ta s t 3 y p r o d a las listas d e id e n tific a d o re s d e los
n o d o s t j y t ft, re s p e c tiv a m e n te . Se s u p o n e q u e n i n g u n o d e los te m p o r a le s t , es n e ­
c e sa rio fu era d e l b lo q u e .
Se c o m ie n z a c o n el n o d o q u e re p r e s e n ta a 4 * i . E ste n o d o tie n e d o s id e n tific a ­
d o r e s aso c ia d o s, t | y t 3. S e elige t , p a r a g u a r d a r el v a lo r 4 * i , d e m o d o q u e la p ri­
m e r a p ro p o s ic ió n r e c o n s tr u id a es

t i := 4 * i

igual q u e e n el b lo q u e b á s ic o o rig in al. El s e g u n d o n o d o c o n s id e r a d o se e tiq u e ta con


t 2. L a p ro p o s ic ió n c o n s tr u id a a p a r ti r d e este n o d o es

t 2 := a [ t , ]

ta m b ié n c o m o a n te s . El n o d o q u e se c o n s id e r a a c o n tin u a c ió n se e tiq u e ta c o n t 4 a
p a r ti r d e l c u a l se g e n e ra la p ro p o s ic ió n
t 4 := b ( t , ]

L a ú lt im a p ro p o s ic ió n u tiliz a t i c o m o a r g u m e n to e n lu g a r d e t 3 c o m o e n el b lo q u e
b á s ic o o rig in al, p o r q u e t i es el n o m b r e e le g id o p a r a r e te n e r el v a lo r 4 * i .
A c o n t i n u a c i ó n se c o n s id e r a el n o d o e t i q u e t a d o c o n t 5 y se g e n e r a la p r o p o s i­
ción
t 5 := t 2 * t 4

P a r a el n o d o e t i q u e t a d o c o n t 6, p r o d , se s e le c c io n a p r o d p a r a g u a r d a r el v a lo r.
9.8 R E P R E S E N T A C IO N D E B L O Q U E S BASICOS P O R M E D IO D E G D A 569

p u e s to q u e es ese id e n tific a d o r, y n o t 6, el q u e se n e c e s ita rá ( p r e s u m ib le m e n te ) fu era


d e l b lo q u e . A l igual q u e t 3, el te m p o r a l t 6 d e s a p a re c e . L a sig u ie n te p ro p o s ic ió n ge­
n e r a d a es

p ro d := p r o d +

D e m a n e r a s im ila r, se elige i e n lu g a r d e t 7 p a r a r e te n e r el v a lo r i + 1 . L a s d o s ú lti­


m a s p ro p o s ic io n e s g e n e ra d a s son

i := i + 1
i f i <= 20 g o to (1)

O b sérv ese q u e las d ie z p ro p o s ic io n e s d e la fig u ra 9 .1 5 se h a n re d u c id o a siete a p r o ­


v e c h a n d o las s u b e x p re s io n e s c o m u n e s e x p u e s ta s d u r a n te el p ro c e s o d e c o n s tru c c ió n
del G D A , y e lim in a n d o las a s ig n a c io n e s in n e cesarias. □

M a t r ic e s , a p u n ta d o r e s y lla m a d a s a p r o c e d im ie n to s

C o n s id é re s e el b lo q u e básico:

x := a ( i ]
a lj 1 *= y (9-5)
z := a (i )

Si se u tiliz a el a lg o r itm o 9 .2 p a r a c o n s tr u ir el G D A p a r a (9.5 ), a [ i } se c o n v e rtiría


e n u n a s u b e x p re s ió n c o m ú n , y el b lo q u e “o p t i m a d o ” se c o n v e r tir ía en

x := a [ i ]
z := x (9.6)
a [j] := y

S in e m b a r g o , ( 9 .5 ) y ( 9 .6 ) c a l c u l a n v a lo r e s d if e r e n t e s p a r a z e n el c a s o i = j e
y jt a {i ] . El p r o b le m a es q u e c u a n d o se h a c e u n a a s ig n a c ió n a u n a m a tr iz a . se
p u e d e e s ta r m o d if ic a n d o el v a lo r d e la d o d e r e c h o d e la e x p re sió n a [ i ] , a u n q u e a e
i n o se m o d ifiq u e n . P o r ta n to , es n e c e s a rio c u a n d o se p ro c e s e u n a a s ig n a c ió n a u n a
m a triz a . se desactiven to d o s los n o d o s e tiq u e ta d o s c o n [ ], c u y o a r g u m e n to d e la
iz q u ie rd a sea a m á s o m e n o s u n a c o n s ta n t e (p o s ib le m e n te cero )8. E s d e c ir, esos n o ­
d o s se h a c e n inelegibles p a r a re c ib ir u n a e tiq u e ta d e id e n tif ic a d o r a d ic io n a l, im p i­
d i e n d o q u e se a n e r r ó n e a m e n t e r e c o n o c i d o s c o m o s u b e x p r e s io n e s c o m u n e s . P o r
ta n to , es n e c e s a rio te n e r u n b it p a r a c a d a n o d o q u e in d iq u e si h a sid o d e s a c tiv a d o o
n o . A d e m á s , p a r a c a d a m a triz a m e n c io n a d a e n el b lo q u e , e s c o n v e n ie n te te n e r u n a
lista d e to d o s los n o d o s to d a v ía n o d e s a c tiv a d o s p e ro q u e d e b e n d e sa c tiv a rse si se
h a c e u n a a s ig n a c ió n a u n e le m e n to d e a.
E xiste u n p r o b le m a s im ila r si se tie n e u n a a s ig n a c ió n c o m o * p : = w . d o n d e p es
u n a p u n ta d o r . Si se sa b e a lo q u e p u e d e a p u n t a r p , se d e b e d e s a c tiv a r t o d o n o d o q u e
se e n c u e n tr e e n ese m o m e n t o e n el G D A q u e se está c o n s tr u y e n d o . Si se d e sa c tiv a
el n o d o n e tiq u e ta d o c o n a y h a y u n a a s ig n a c ió n p o s te rio r a a , h a y q u e c r e a r u n a

* O b s é r v e s e q u e el a r g u m e n t o d e ( J q u e i n d i c a e l n o m b r e d e la m a t r i z p o d r í a s e r a m i s m o , o u n a
e x p r e s ió n c o m o a - 4 . E n e s te ú l t i m o c a s o , e l n o d o a s e r ia u n n ie to , e n lu g a r d e u n h ijo , d e l n o d o ( J .
570 GENERAC IO N DE C O D IG O

n u e v a h o ja p a r a a y u tiliz a r d ic h a h o ja e n lu g a r d e n. M á s a d e la n te se c o n s id e r a n las
lim ita c io n e s e n el o rd e n d e e v a lu a c ió n d e b id a s a la d e s a c tiv a c ió n d e n od o s.
E n el c a p ítu lo 10 se e s tu d ia n a lg u n o s m é to d o s m e d ia n te los c u a le s se p o d r ía d e s ­
c u b r ir q u e p só lo p u e d e a p u n t a r a u n s u b c o n ju n t o d e los id e n tific a d o re s. Si p p u ­
d ie ra a p u n t a r só lo a r o s , e n to n c e s só lo d e b e ría n d e sa c tiv a rse nodofr) y nodo{s ) .
T a m b ié n e s p o sib le q u e se d e s c u b r ie r a q u e i = j es im p o sib le e n el b lo q u e (9.5),
e n c u y o c a so a [ j ) : = y n o te n d ría q u e d e s a c tiv a r el n o d o p a r a a ( i ] . S in e m b a rg o ,
este ú ltim o tip o d e d e s c u b r im ie n to n o vale la p e n a .
U n a lla m a d a a u n p r o c e d im ie n to e n u n b lo q u e b á s ic o d e s a c tiv a to d o s los n o d o s,
p u e s to q u e si n o se c o n o c e el p r o c e d im ie n to lla m a d o , se d e b e a s u m i r q u e c u a lq u ie r
v a ria b le p u e d e s e r m o d ific a d a c o m o e fe c to s e c u n d a rio . El c a p itu lo 10 e s tu d ia c ó m o
se p u e d e e s ta b le c e r q u e a lg u n o s id e n tific a d o re s n o s o n m o d ific a d o s p o r u n a lla m a d a
a u n p ro c e d im ie n to - y e n to n c e s n o hay q u e d e s a c tiv a r los n o d o s p a r a d ic h o s id e n ­
tificado res.
Si se q u ie re r e u n ir el G D A d e n t r o d e u n b lo q u e b ásico p e ro n o se d e se a u tiliz ar
el o rd e n e n q u e se c r e a ro n los n o d o s del G D A . e n to n c e s se d e b e in d ic a r en el G D A
q u e a lg u n o s n o d o s a p a r e n t e m e n t e in d e p e n d ie n te s d e b e n e v a lu a rse e n u n o rd e n d e ­
term in ad o . P o r ejem plo , en (9.5). la proposición z : = a [ i ] d e b e seguir a a [ j } : = y,
q u e d e b e seg u ir a x : • a [ i ] . S e in tr o d u c ir á n c ie rta s a ris ta s n —> m e n el G D A q u e
n o in d ic a n q u e m es u n a r g u m e n to d e n. s in o q u e la e v a lu a c ió n d e n d e b e seg u ir a
la e v a lu a c ió n d e m e n c u a lq u ie r c á lc u lo del G D A . L a s reglas q u e d e b e n c u m p lirs e
son las siguientes:

1. C u a l q u ie r e v a lu a c ió n o a s ig n a c ió n a u n e le m e n to d e la m a tr iz a d e b e seg u ir a
la a n t e r i o r a s ig n a c ió n a u n e le m e n to d e d ic h a m a tr iz si e s q u e lo hay.

2. C u a lq u ie r a s ig n a c ió n a u n e le m e n to d e la m a tr iz a d e b e seg u ir a c u a lq u ie r e v a ­
lu a c ió n p rev ia d e a.

3. C u a lq u ie r u s o d e u n id e n tific a d o r d e b e seg u ir a la a n te r io r lla m a d a a u n p ro c e ­


d im ie n to o a u n a asig n ac ió n in d ire c ta p o r m e d io d e u n a p u n t a d o r si es q u e lo
hay.

4. C u a lq u ie r lla m a d a a u n p r o c e d im ie n to o a s ig n a c ió n in d ire c ta p o r m e d io d e un
a p u n t a d o r d e b e seg u ir a to d a s la s e v a lu a c io n e s p re v ia s d e c u a lq u ie r id e n tific a ­
d or.

E s d ecir, c u a n d o se r e o r d e n a el c ó d ig o , los usos d e u n a m a tr iz a n o se p u e d e n c r u z a r


e n t r e sí. > n in g u n a p ro p o sic ió n p u e d e c r u z a r u n a lla m a d a a u n p r o c e d im ie n to o u n a
a s ig n a c ió n p o r m e d io d e u n a p u n ta d o r .

9 .9 O P T I M A C I O N M E D I A N T E “ M I R I L L A "

U n a e s tra te g ia d e g e n e r a c ió n d e c ó d ig o p r o p o s ic ió n a p r o p o s ic ió n a m e n u d o p ro ­
d u c e c ó d ig o o b je to q u e c o n tie n e in s tru c c io n e s r e d u n d a n te s y c o n s tr u c c io n e s su b ó p -
tim a s. La c a lid a d d e d ic h o c ó d ig o o b je to se p u e d e m e jo r a r a p lic a n d o tra n s f o r m a c io ­
n e s “o p ti m a d o r a s ” al p r o g r a m a o b je to . El t é r m i n o “ o p tim a d o r* ' e s e n g a ñ o s o p o r q u e
n o está g a r a n tiz a d o q u e el c ó d ig o re s u lta n te sea ó p ti m o b a jo n in g u n a m e d id a m a ­
9.9 O PT IM A C IO N M E D IA N T E “ M IRILLA” 571

te m á tic a . S in e m b a r g o , m u c h a s t r a n s f o r m a c io n e s s im p le s p u e d e n m e jo r a r sig n ifi­


c a tiv a m e n te el ti e m p o d e e je c u c ió n o las e x ig en cias d e esp acio del p r o g r a m a o b je to ,
d e m a n e r a q u e e s i m p o r ta n te s a b e r q u é tip o d e tr a n s f o rm a c io n e s son útiles en la
práctica.
U n a té c n ic a sen cilla p e r o efectiv a p a r a m e jo r a r lo c a lm e n te el c ó d ig o o b je to e s la
optim ación m ed ia n te "m irilla ” u n m é to d o p a r a in te n ta r m e jo r a r el r e n d im ie n to del
p ro y e c to o b je to e x a m in a n d o u n a se c u e n c ia c o r ta d e in s tru c c io n e s o b je to (lla m a d a
m irilla ) y s u s t it u y e n d o e s ta s in s tr u c c io n e s p o r u n a s e c u e n c ia m á s c o r ta o m á s r á ­
p ida, si es posible. A u n q u e se e s tu d ia la o p tim a c ió n m e d ia n te m irilla c o m o u n a téc­
n ic a p a r a m e jo r a r la c a lid a d d e l c ó d ig o o b je to , la técn ica ta m b ié n se p u e d e a p lic a r
d ir e c ta m e n te d e s p u é s d e la g e n e ra c ió n d e c ó d ig o in te r m e d io p a r a m e jo r a r la r e p re ­
s e n ta c ió n in te rm e d ia .
L a m irilla es u n a v e n ta n a p e q u e ñ a q u e se m u e v e en el p r o g r a m a o b je to . N o h ace
falta q u e el c ó d ig o d e n t r o d e la m irilla sea c o n tig u o , a u n q u e a lg u n a s ap lic a c io n e s
exigen q u e lo sea. U n a c a ra c te rístic a d e la o p tim a c ió n m e d ia n te m irilla es q u e c a d a
m e jo r a p u e d e b r in d a r o p o r tu n id a d e s p a r a m e jo ra s a d icio n ales. E n g en eral, s o n n e ­
c e sa ria s re p e tid a s p a s a d a s so b re el c ó d ig o o b je to p a r a o b te n e r las m a y o re s v en tajas.
E n esta sección se d a r á n los sig u ie n te s e je m p lo s d e tr a n s f o r m a c io n e s d e p ro g ra m a s
carac terístico s d e las o p tim a c io n e s m e d ia n te m irilla:

• e lim in a c ió n d e in s tru c c io n e s r e d u n d a n te s
• o p tim a c io n e s del flu jo del c o n tro l
• s im p lific a c io n e s alg eb raicas
• u s o d e in s tru c c io n e s especiales de la m á q u in a .

C a r g a s y a lm a c e n a m ie n t o s r e d u n d a n te s

Si se e n c u e n tr a la sig u ie n te s e c u e n c ia d e in s tru c c io n e s

(1) MOV RO, a


(2) MOV a , RO ' ’
se p u e d e b o r r a r la in s tru c c ió n (2) p o r q u e s ie m p re q u e se e je c u te (2). (1) g a ra n tiz a rá
q u e el v alo r d e a y a está e n el re g istro RO. O b sé rv e se q u e si (2) tu v ie ra u n a e tiq u eta '',
n o se p o d ría e s ta r seg u ro d e q u e (1 ) s ie m p re se e je c u tó ju s to a n te s d e (2), y e n t o n ­
ces n o se p o d r ía e lim in a r (2). D ic h o d e o t r o m o d o , (1) y (2) tie n e n q u e e s ta r en el
m is m o b lo q u e b á s ic o p a r a q u e e s ta tr a n s f o r m a c ió n sea válida.
A u n q u e n o se g en e ra ría el c ó d ig o o b je to c o m o (9.7) si se u tiliz a ra el a lg o ritm o
p ro p u e s to en la secció n 9 .6 , p o d ría serlo si se u tiliz ara u n a lg o ritm o m á s in g e n u o
c o m o el q u e se m e n c io n a al c o m ie n z o d e la secció n 9.1.

C ó d ig o in a lc a n z a b le

O t r a o p o r tu n id a d p a r a la o p tim a c ió n local es la e lim in a c ió n d e in s tru c c io n e s inal-


i

c a n z a b le s. Se p u e d e e lim in a r u n a in s tru c c ió n sin e tiq u e ta q u e siga in m e d ia ta m e n te

U n a v e n t a j a d e g e n e r a r c ó d i g o e n s a m b l a d o r e s q u e e s ta r á n p r e s e n t e s la s e t i q u e t a s , f a c i l it a n d o la s
o p t i m a c i o n e s lo c a le s c o m o é s ta . Si s e g e n e r a c ó d ig o d e m á q u i n a y se d e s e a o p t i m a c i ó n lo c a l, s e p u e d e
u t i l i z a r u n b it p a r a m a r c a r la s i n s t r u c i o n e s c o n e ti q u e t a s .
572 G ENERA CIO N DE CO DIG O

a u n s a lto in c o n d ic io n a l. E sta o p e r a c ió n se p u e d e re p e tir p a r a e lim in a r u n a s e c u e n ­


c ia d e in s tru c c io n e s . P o r e je m p lo , p a r a u n a m a y o r d e p u r a c ió n , u n p r o g r a m a g ra n d e
p u e d e te n e r d e n t r o d e él a lg u n o s s e g m e n to s q u e se e je c u ta n só lo si u n a v a ria b le lla­
m a d a d e p u r a vale 1. E n C . el c ó d ig o fu e n te se p a re c e ría a:

#define depura 0
• • •

if ( depura ) )
im p r im e in f o r m a c ió n p a r a la d e p u r a c ió n
}
E n la r e p re s e n ta c ió n in te r m e d ia la p ro p o s ic ió n i f se p u e d e tr a d u c i r c o m o :

if d e p u ra = 1 g o to Ll

g o t ° LZ (9 8)
L l : im p r im e in f o r m a c ió n p a r a la d e p u r a c ió n
L2;

U n a o p tim a c ió n m e d ia n te m irilla o b v ia co n siste e n e l i m i n a r los sa lto s so b re saltos.


P o r ta n to , in d e p e n d ie n te m e n te d e l v a lo r d e d e p u r a , (9 .8 ) se p u e d e s u s titu ir por:

if depura # 1 goto L2
im p r im e in f o r m a c ió n p a r a la d e p u r a c ió n (9.9)
L2:
A h o ra , c o m o a d e p u r a se a s ig n a 0 al p r in c ip io d e l p r o g r a m a 10, la p ro p a g a c ió n d e
c o n s ta n te s d e b e s u s titu ir (9.9) p o r

i f 0 * 1 g o t o L2
im p r im e in f o r m a c ió n p a r a la d e p u r a c ió n (9.10)
L2:
C o m o el a r g u m e n to d e la p r im e r a p ro p o s ic ió n d e (9 .1 0 ) se e v a lú a c o m o la c o n s ta n te
tru e , se p u e d e s u s titu ir p o r g o t o L 2 . E n to n c e s to d a s las p ro p o s ic io n e s q u e im p r i­
m a n a y u d a s p a r a la d e p u r a c ió n s o n m a n if ie s ta m e n te in a lc a n z a b le s y se p u e d e n eli­
m i n a r d e u n a e n u n a.

O p t im a c io n e s d e l flu jo d e l co n trol

A m e n u d o , los a lg o ritm o s d e l c a p ítu lo 8 p a r a g e n e ra c ió n d e c ó d ig o in te r m e d io p r o ­


d u c e n sa lto s h a c ia salto s, sa lto s h a c ia sa lto s c o n d ic io n a le s , o salto s c o n d ic io n a le s h a ­
c ia salto s. E sto s sa lto s in n e c e s a rio s se p u e d e n e lim in a r , ya s e a d e l c ó d ig o in te r m e d io
o del c ó d ig o o b je to , m e d ia n te los sig u ie n te s tip o s d e o p tim a c io n e s locales. S e p u e d e
s u s titu ir la s e c u e n c ia d e salto s

goto Ll
• • •

Lis goto L2

Para a f i r m a r q u e depura t i e n e e l v a l o r 0 . h a y q u e h a c e r u n a n á lis is d e l f l u j o d e d a t o s g l o b a l d e


“ d e f i n i c i o n e s d e a lc a n c e * ’, c o m o s e p r e s e n t a e n e l c a p í t u l o 10.
9 .9 O PT IM A C IO N M E D IA N T E “ M IR IL L A " 573

p o r la s e c u e n c i a

goto L2
• • •

Lis goto L2

Si a h o r a n o h a y s a l t o s a L l 11, e n t o n c e s s e p u e d e e l i m i n a r l a p r o p o s i c i ó n Lis g o t o
1.2 s i e m p r e q u e v a y a p r e c e d i d a d e u n s a l t o i n c o n d i c i o n a l . D e m a n e r a s i m i l a r , l a s e ­
cuencia

if a < b goto Ll
• • •

L is g o to L2

hc p u ed e su stitu ir p o r

if a < b goto L2
• • •

Lls goto L2

l’or ú l t i m o , s u p ó n g a s e q u e s ó l o h a y u n s a l t o a Ll y q u e Ll v a p r e c e d i d a d e u n s a l t o
gofo i n c o n d i c i o n a l . E n t o n c e s la s e c u e n c i a .

goto Ll

(9 .1 1 )
Lis if a < b goto L2
L3s

hc puede su stitu ir p o r

if a < b goto L2

g o to L 3 (9 .1 2 )
• • •

L3s

A u n q u e el n ú m e r o d e in s tr u c c io n e s e n (9 .1 1 ) y (9 .1 2 ) e s el m i s m o , a v e c e s s e p u e d e
«'vitar e l s a l t o i n c o n d i c i o n a l e n ( 9 . 1 2 ) , p e r o n u n c a e n ( 9 . 1 1 ) . P o r t a n t o , ( 9 . 1 2 ) e s s u ­
p e rio r a (9 .1 1 ) e n t i e m p o d e e je c u c ió n .

Sim plificación a lg e b ra ic a

N o h a y l í m i t e al n ú m e r o d e s i m p l i f i c a c i o n e s a l g e b r a i c a s q u e s e p u e d e n i n t e n t a r c o n
la o p t i m a c i ó n m e d i a n t e m i r i l l a . S i n e m b a r g o , s ó l o u n a s p o c a s i d e n t i d a d e s a l g e b r a i -
« us o c u r r e n c o n la f r e c u e n c i a s u f i c i e n t e c o m o p a r a q u e v a l g a l a p e n a c o n s i d e r a r s u
im p la n ta c ió n . P o r e je m p lo , las p r o p o s ic io n e s c o m o

x := x + 0
o
x := x * 1

" Si se in ten ta esta o p tim ació n m ediante mirilla, se pued e co n tar el n ú m e ro d e saltos hacia cada
. liqucta en la en trad a d e la tabla d e sím bolos para esta etiqueta; n o es necesario e x a m in a r el código.
574 G EN ER A C IO N DE CO DIG O

a m e n u d o s o n p ro d u c id a s p o r a lg o ritm o s d ir e c to s p a r a la g e n e ra c ió n d e c ó d ig o in ­
te rm e d io , y se p u e d e n e lim in a r fá c ilm e n te c o n la o p tim a c ió n m e d ia n te m irilla.

R e d u c c ió n d e in ten sid a d

L a re d u c c ió n d e in te n s id a d s u s titu y e o p e r a c io n e s c a ra s p o r o tr a s e q u iv a le n te s m á s
b a r a ta s e n la m á q u in a o b je to . A lg u n a s in s tr u c c io n e s d e m á q u i n a s o n c o n s id e ra b le ­
m e n te m á s b a r a ta s q u e o tr a s y se p u e d e n u tiliz a r c o m o c a s o s e s p e c ia le s d e o p e r a ­
d o re s m á s c a ro s. P o r e je m p lo , x 2 es in v a r ia b le m e n te m á s b a r a ta d e im p la n t a r c o m o
x * x q u e c o m o u n a lla m a d a a u n a r u t i n a d e e x p o n e n c ia c ió n . L a d iv is ió n o m u l t i ­
p licació n d e p u n t o fijo p o r u n a p o te n c ia d e d o s e s m á s b a r a ta d e i m p l a n t a r c o m o
u n d e s p la z a m ie n to . La d iv isió n d e p u n t o flo ta n te p o r u n a c o n s ta n te se p u e d e i m ­
p la n ta r (de m a n e r a a p r o x im a d a ) c o m o m u ltip lic a c ió n p o r u n a c o n s ta n te , q u e p u e d e
s e r m á s b arata.

U s o d e in str u c c io n e s e s p e c i a l e s d e la m á q u in a

L a m á q u i n a o b je to p u e d e t e n e r in s tr u c c io n e s d e hardw are p a r a i m p l a n t a r c ie rta s


o p e r a c io n e s esp ecíficas e fic ie n te m e n te . D e te c ta r las s itu a c io n e s q u e p e r m ita n el uso
d e estas in s tr u c c io n e s p u e d e re d u c ir sig n ific a tiv a m e n te el ti e m p o d e e je c u c ió n . P o r
e je m p lo , a lg u n a s m á q u in a s tie n e n m o d o s d e d ir e c c io n a m ie n to d e a u t o in c r e m e n to y
a u to d e c r e m e n to . E stas s u m a n o re s ta n u n o a u n o p e r a n d o a n te s o d e s p u é s d e u tili­
z a r su valor. El uso d e e s to s m o d o s m e jo r a m u c h o la c a lid a d del c ó d ig o c u a n d o se
in tr o d u c e o se sa c a u n a pila, c o m o e n el p a so d e p a rá m e tro s . E sto s m o d o s ta m b ié n
se p u e d e n u tiliz a r en el c ó d ig o p a r a p ro p o s ic io n e s c o m o i : = i + l .

9 .1 0 G E N E R A C I O N D E C O D I G O A P A R T IR D E L O S G D A

E n esta secció n se m u e s tr a c ó m o g e n e ra r c ó d ig o p a r a u n b lo q u e b ásico a p a r ti r d e


su re p re s e n ta c ió n e n G D A . L a v e n ta ja d e h a c e r esto es q u e a p a r tir d e u n G D A se
p u e d e v e r m á s f á c ilm e n te c ó m o re o rg a n iz a r el o r d e n d e la s e c u e n c ia d e c á lc u lo s fi­
nal q u e e m p e z a n d o a p a r t i r d e u n a s e c u e n c ia lin eal d e p ro p o s ic io n e s d e tres d irec­
c io n e s o c u á d ru p lo s . El c a so m á s i m p o r ta n te p a r a este a n álisis es c u a n d o el G D A es
u n á rb o l. E n este c a so se p u e d e g e n e ra r c ó d ig o d e m o s t r a d o c o m o ó p t i m o d e sd e el
p u n t o d e vista d e la lo n g itu d d e l p r o g r a m a o el m e n o r n ú m e r o d e te m p o r a le s utili­
zad o s. E ste a lg o r itm o p a r a la g e n e ra c ió n d e c ó d ig o ó p t i m o a p a r ti r d e u n á rb o l t a m ­
bién es útil c u a n d o el c ó d ig o in te r m e d io es u n á rb o l d e a n álisis s in tá c tic o .

R e o r g a n iz a c ió n d el ord en

S e c o n s id e r a b r e v e m e n te c ó m o el o r d e n e n q u e se h a c e n los c á lc u lo s p u e d e in flu ir
e n el c o s to del c ó d ig o o b je to re s u lta n te . C o n s id é re s e el sig u ie n te b lo q u e b ásico cuy a
re p re s e n ta c ió n e n G D A se m u e s tr a e n la figura 9 .1 8 (el G D A e s u n árbol).

t, := a + b
t: := c + d
t, := e - t2
t4 •
’= ti - t 3
9.10 G E N E R A C IO N DE C O D IG O A PARTIR D E LOS G D A 575

ao

c0 d«>

Fig. 9.18. G D A para un b lo q u e básico.

O b sé rv e se q u e el o rd e n es el q u e se o b te n d r í a d e fo rm a n a tu r a l d e u n a tr a d u c c ió n
d irig id a p o r la s in ta x is d e la e x p re sió n ( a + b ) - ( e - ( c + d ) ) m e d ia n te el a lg o r itm o d e
la sección 8.3.
Si se g e n e ra c ó d ig o p a r a las p ro p o s ic io n e s d e tres d ire c c io n e s u tiliz a n d o el algo-
r i t m o d e la se c c ió n 9 .6 . se o b ti e n e la s e c u e n c ia d e c ó d ig o d e la fig u ra 9 .1 9 (s u p o -
n ie n d o q u e d o s registros. RO y R l , e s tá n d is p o n ib le s y q u e sólo t 4 está a c tiv o a la
salida).

M O V a, RO
A D D b, RO
M O V c. Rl
A D D d. Rl
M O V RO, t,
M O V e. RO
SUB Rl, RO
M O V t,. Rl
S U B RO, Rl
M O V Rl, t4

Fig. 9 . 1 9 . Secuencia d e código.

P o r o tr a parte, su p ó n g a se q u e se reo rg an iz ó el o rd e n d e las p ro p o sic io n e s d e m o d o


q u e el c á lc u lo d e t , tie n e lu g a r in m e d ia t a m e n t e a n te s q u e el d e t 4 c o m o :

t i := c + d
t 3 := e - t i
t j := a + b
t4 := t, - t3

E n to n c e s , u tiliz a n d o el a lg o r itm o d e g e n e ra c ió n d e c ó d ig o d e la secció n 9 .6 , se o b ­


tie n e la s e c u e n c ia d e c ó d ig o d e la fig u ra 9 .2 0 . (D e n u e v o , só lo R O y R l e s tá n d is p o ­
nibles.) R e a liz a n d o lo s c á lc u lo s p o r este o r d e n , se h a n p o d id o a h o r r a r d o s in s tru c ­
ciones, M O V RO, t , ( q u e a lm a c e n a el v a lo r d e R O en la lo c alid a d d e m e m o r ia t t) y
M O V t , , Rl ( q u e re c a rg a el v a lo r d e t , e n el reg istro Rl).
576 G EN ER A C IO N D E C O D IG O

MOV c, RO
ADD d, RO
MOV e. Rl
SUB R O , Rl
MOV a, RO
ADD b. RO
SUB Rl, RO
MOV RO, t4

F ig . 9 . 2 0 . S e c u e n c i a d e c ó d ig o re v is a d a .

U n o r d e n a m ie n to h e u r ístic o d e lo s G D A

El r e o r d e n a m i e n t o a n t e r i o r m e j o r ó e l c ó d i g o p o r q u e s e d i s p u s o q u e e l c á l c u l o d e t 4
f u e r a i n m e d i a t a m e n t e d e s p u é s d e l c á l c u l o d e t | , s u o p e r a n d o i z q u i e r d o e n el á r b o l .
R e s u lta c la ro q u e e s ta m e d id a es b e n e fic io sa . El a r g u m e n t o iz q u ie r d o p a r a el c á lc u lo
d e t 4 d e b e e s t a r e n u n r e g i s t r o p a r a c a l c u l a r e f i c i e n t e m e n t e t 4, y c a l c u l a r t , i n m e ­
d i a t a m e n te a n te s q u e t 4 g a r a n tiz a e ste h e c h o .
A l s e l e c c i o n a r u n o r d e n a m i e n t o p a r a lo s n o d o s d e u n G D A h a y q u e a s e g u r a r s e
d e q u e el o r d e n p r e s e r v e la s r e l a c i o n e s d e a r is t a s d e l G D A . R e c u é r d e s e (S e c . 9 .8 ) q u e
e s a s a r i s t a s p u e d e n r e p r e s e n t a r la r e l a c i ó n o p e r a d o r - o p e r a n d o o la s l i m i t a c i o n e s d e ­
b i d a s a p o s i b l e s i n t e r a c c i o n e s e n t r e la s l l a m a d a s a p r o c e d i m i e n t o s , a s i g n a c i o n e s c o n
m a t r i c e s , o a s i g n a c i o n e s c o n a p u n t a d o r e s . S e p r o p o n e el s i g u i e n t e a l g o r i t m o d e o r ­
d e n a m i e n t o h e u r í s t i c o , q u e i n t e n t a e n l o p o s i b l e h a c e r q u e la e v a l u a c i ó n d e u n n o d o
v a y a i n m e d i a t a m e n t e d e s p u é s d e la e v a l u a c i ó n d e s u a r g u m e n t o d e la i z q u i e r d a . El
a l g o r i t m o d e la f i g u r a 9 .2 1 p r o p o r c i o n a e l o r d e n a m i e n t o i n v e r s o .

E je m p lo 9 . 1 1 . E l a l g o r i t m o d e la f i g u r a a p l i c a d o al á r b o l d e la f ig u r a 9 . 1 8 p r o p o r ­
c i o n a el o r d e n a p a r t i r d e l c u a l s e p r o d u j o e l c ó d i g o d e la f i g u r a 9 . 2 0 . P a r a u n e x a ­
m e n m á s c o m p l e t o , c o n s i d é r e s e el G D A d e la f ig u r a 9 .2 2 .

(1) w h ile q u e d e n n o d o s in te r io r e s s in lis ta r d o b eg in


(2 ) s e le c c io n a r u n n o d o n o li s t a d o /?, p a r a el q u e to d o s s u s
p a d r e s h a y a n s id o lista d o s ;
(3) li s t a r n\
(4) w h ile el h ijo d e m á s a la i z q u i e r d a m d e n n o te n g a p a d r e s
s in lis ta r y n o s e a u n a h o j a do
/ * ya q u e n s e a c a b a d e listar, m a ú n n o se h a lis ta d o */
b eg in
(5) (m)\
lista
(6) n := m
en d
en d

F ig . 9 . 2 1 . A lg o r it m o p a r a lis ta r n o d o s .
9.10 G E N E R A C IO N D E C O D IG O A PA R T IR D E LOS G D A 577

Fig. 9.22. U n GDA.

A l in icio , el único nodo que no tiene padres sin listar es 1, así que se hace n = 1
en la línea (2) y se lista 1 en la línea (3). A hora el argum ento izquierdo de 1, que es
2, ya tiene en lista a sus padres, así que se lista 2 y se hace n = 2 en la línea (6).
Ahora, en la línea (4) se ve que el hijo de la izquierda de 2, que es 6, tiene un padre
sin listar, 5. Por tanto se selecciona una nueva n en la línea (2), y el nodo 3 es el
único candidato. Se lista 3 y después se avanza a lo largo de su cadena izquierda,
listando 4, 5 y 6. Y a sólo queda 8 entre los nodos interiores, así que se lista 8. La
lista obtenida es 1234568 así que el orden de evaluación propuesto es 8654321. Este
ordenam iento corresponde a la secuencia de proposiciones de tres direcciones:

t8 = d + e
t6 = a + b
ll

1
or t

t5
O

t4 = t5 * t8
t3 = t4 - e
t2 = t6 + t4
ti = t2 * t3
que producirá código óptim o para el G D A en la m áquina descrita en este capítulo
cualquiera que sea el núm ero de registros, si se utiliza el algoritm o de generación de
código de la sección 9.6. Debe observarse que en este ejem plo, la heurística de or­
denam iento no tuvo que elegir ninguna opción en el paso (2), pero en general puede
tener m uchas alternativas. □

O rd e n a m ie n to ó p tim o p a r a á rb o le s

Resulta que para el m odelo de m áquina de la sección 9.2 se puede dar un algoritm o
sencillo para determ inar el orden óptim o en el que evaluar las proposiciones de un
bloque básico cuando la representación en G D A del bloque es un árbol. E n este caso,
orden óptim o significa el orden que produce la secuencia de instrucciones más corta,
de todas las secuencias de instrucciones que evalúan el árbol. Este algoritm o, mo­
dificado para que tenga en cuenta pares de registros y otras particularidades de la
m áquina objeto, ha sido utilizado en com piladores para A L G O L , B L IS S y C.
578 G E N E R A C I O N DE C O D IG O

El a lg o ritm o c o n s ta d e d o s p arte s. La p r im e ra p a rte e tiq u e ta c a d a n o d o del árbol,


e n fo rm a a s c e n d e n te , c o n u n e n t e r o q u e in d ic a el n ú m e r o m í n i m o d e registros exi­
g id o p a ra e v a lu a r el á rb o l sin a lm a c e n a m ie n to s en m e m o r ia d e los re s u lta d o s in te r­
m e d io s. La s e g u n d a p a r te del a lg o r itm o e s u n r e c o r r id o d e á rb o l c u y o o r d e n viene
d e te r m in a d o p o r las e tiq u e ta s c a lc u la d a s d e los n o d o s. El c ó d ig o r e s u lta n te se g en era
d u r a n te el re c o rrid o d e l á rb o l.
In tu itiv a m e n te , el a lg o r itm o fu n c io n a , d a d o s los d o s o p e r a n d o s d e u n o p e r a d o r
b in a rio , e v a lu a n d o p r im e r o el o p e r a n d o q u e r e q u ie ra u n n ú m e r o m a y o r d e registros
(el o p e r a n d o m á s difícil). Si la s e x ig en cias d e reg istro s d e a m b o s o p e r a n d o s s o n igua­
les. c u a lq u ie r o p e r a n d o p u e d e s e r e v a lu a d o p rim e ro .

E l a lg o ritm o d e e tiq u e ta d o

S e u tiliz a el t é r m i n o " h o j a iz q u ie r d a ” p a r a u n n o d o q u e e s u n a h o ja y el d e s c e n ­
d ie n te d e m á s a la iz q u ie rd a d e su p a d re . T o d a s las o tra s h o ja s se d e n o m i n a n c o m o
" h o ja s d e re c h a s ”.
Se p u e d e rea liz a r el e tiq u e ta d o v is ita n d o los n o d o s en o r d e n a s c e n d e n te d e m o d o
q u e n o se visite u n n o d o h a s ta q u e se h a y a n e tiq u e ta d o to d o s sus hijos. El o rd e n en
q u e se c re a n los n o d o s del á rb o l s in tá c tic o es el a d e c u a d o si el árb o l d e a n álisis s in ­
tá c tic o se u tiliza c o m o c ó d ig o in te r m e d io , a s í q u e e n este c a so las e tiq u e ta s se p u e ­
d e n c a lc u la r c o m o u n a tr a d u c c ió n d irig id a p o r la sin tax is. L a figura 9 .2 3 c o n tie n e el

(1) if // es un a hoja then


(2) if n es el hijo de m ás a la izquierda d e su padre then
(3) etiqueta (n ):= 1;
(4) e l s e etiqueta (n) : = 0
else begin /* n es un n od o in terior */
(5) sean w,. n2........... /i* los hijos d e n o rd e n a d o s p o r etiqueta .
d e m o d o q u e etiqueta (« i) £ etiqueta (n2) > . . . > etiqueta («*):
(6) etiqueta (/?): = m áx {etiqueta {n, ) + / - I)
end

Eig. 9.23. C alculo d e etiquetas.

a lg o ritm o p a r a c a lc u la r la e tiq u e ta en el n o d o n. E n el im p o r ta n te c a so esp ecial en


q u e n es u n n o d o b in a r io y s u s h ijo s tie n e n e tiq u e ta s /, y A, la f ó rm u la d e la lín ea (6)
se re d u c e a

m á x (/,. A) si /, ¿ A
etiqueta(n) =
si /, = A

U n reco rrid o e n o r d e n p o ster io r visita r c c u r siv a m e n te lo s su b á r b o le s c o n ra íces e n l o s h ijo s //,.


n2 /i* d e u n n o d o n . y d e sp u é s v isita E ste e s e l o r d e n e n q u e s e c re a n lo s n o d o s d e u n árbol
d e a n á lisis s in tá c tic o e n u n a n á lisis s in tá c tic o a sc e n d e n te .
9.10 G E N E R A C IO N D E C O D IG O A P A R T IR DE LOS G D A 579

Fig. 9.24. A rbol etiquetado.

E je m p lo 9 .1 2 . C o n s id é re s e el árb o l de la fig u ra 9 .1 8 . U n re c o rrid o e n o rd e n p o ste­


r i o r 12 d e los n o d o s visita los n o d o s e n el o r d e n a b t i e c d b t ) t 4. E l o rd e n p o s ­
te rio r siem p re es u n o rd e n a p ro p ia d o p a ra h a c e r los cálcu lo s d e las etiq uetas. El n od o
a se e tiq u e ta c o n l p o r q u e e s u n a h o ja iz q u ie rd a . El n o d o b se e tiq u e ta c o n 0 p o r q u e
es u n a h o ja d e re c h a . El n o d o t , se e tiq u e ta c o n 1 p o r q u e las e tiq u e ta s d e s u s hijos
n o s o n ig u ales y la e tiq u e ta m á x im a d e u n h ijo es 1. L a figura 9 .2 4 m u e s tr a el árbol
e tiq u e ta d o así o b te n id o . Im p lic a q u e se n e c e sita n d o s reg istro s p a r a e v a lu a r t 4 y d e
h e c h o , se n e c e sita n d o s registros s ó lo p a r a e v a lu a r t 3. □

G e n e ra c ió n d e código a p a r ti r d e un á rb o l e tiq u e ta d o

A c o n tin u a c ió n se e s tu d ia el a lg o ritm o q u e t o m a c o m o e n t r a d a u n á rb o l e tiq u e ta d o


T y p r o d u c e c o m o salid a u n a se c u e n c ia d e c ó d ig o d e m á q u in a q u e e v a lú a 7 'e n RO.
(E n to n c e s RO se p u e d e a lm a c e n a r e n la p o sició n d e m e m o r ia a d e c u a d a .) Se s u p o n e
q u e T tie n e sólo o p e ra d o re s b in a rio s. N o es difícil g e n e ra liz a r a o p e r a d o r e s c o n u n
n ú m e r o a r b itr a r io de o p e r a n d o s , y se d e ja c o m o e jercicio p ráctico .
El a lg o ritm o u tiliza el p r o c e d im ie n to re c u rs iv o gencódigo(n) p a r a p r o d u c ir c ó ­
digo d e m á q u in a q u e ev alú e el s u b á rb o l d e T c o n ra íz n e n u n reg istro . El p ro c e d i­
m ie n to gencódigo u tiliz a u n a pila, pilar, p a r a a s ig n a r los registros. Al in ic io , pilar
c o n tie n e to d o s los reg istro s d is p o n ib le s, es d e c ir, r o . R l R( r - 1). p o r este o rd e n .
U n a lla m a d a d e gencódigo p u e d e e n c o n t r a r u n s u b c o n ju n to d e los registros, q u iz á s
e n u n o rd e n d is tin to , en pilar. C u a n d o r e to r n a d e gencódigo, d e ja los registros en
p ila re n el m i s m o o rd e n e n q u e lo s e n c o n tr ó . El c ó d ig o o b te n id o c a lc u la el v a lo r del
árb o l T e n reg istro del to p e en pilar.
L a fu n c ió n perm u ta (p ila r) in te r c a m b ia lo s d o s reg istro s del to p e en pitar. E l uso
d e perm uta g a ra n tiz a q u e u n h ijo iz q u ie r d o y su p a d re se e v a lú e n en el m is m o re­
gistro.
El p r o c e d i m ie n t o gencódigo u tiliz a u n a pila, p ila t, p a r a a s ig n a r p o s ic io n e s d e
m e m o r ia te m p o ra le s . Se s u p o n e q u e p ila t al in ic io c o n tie n e T 0 , T i . T2, — E n la
p ráctica, n o h a c e falta i m p l a n t a r / ; / / ^ c o m o u n a lista, si se lleva u n reg istro d e i tal
q u e T i se e n c u e n tr e n o r m a lm e n te en el to p e . El c o n t e n id o d e pilat es s ie m p r e u n
sufijo d e T 0 . T i .........
L a p r o p o s ic ió n X := saca (p ila ) sig n ifica " s a c a r el e l e m e n t o d e l to p e d e p ila y
asig n ar su v alo r a X " . A la in v e rsa, se u tiliz a m e te (pila, X ) c o n el sig n ificad o " m e te r
X e n el to p e d e pila', lope(pila) se refiere al v a lo r del to p e d e pda.
El a lg o ritm o d e g e n e ra c ió n d e c ó d ig o co n siste e n ll a m a r a gencódigo e n la raíz
580 G E N E R A C IO N DE C O D IG O

p r o c e d u r e g e n c ó d ig o (n);
b e g in
/* c a s o 0 * /
if n e s u n a h o ja iz q u ie rd a q u e re p re s e n ta el o p e r a n d o n o m b re a n d
n e s e l h i j o m á s a la i z q u i e r d a d e s u p a d r e t h e n
p r i n t 'MOV' || n o m b r e | | | | to p e (p ila r )
e l s e i f n e s u n n o d o i n t e r i o r c o n o p e r a d o r o p , h i j o i z q u i e r d o n ¡,
e h ijo d e r e c h o n2 th e n
/* caso 1 */
i f e tiq u e ta ( n 2) = 0 t h e n b e g in
s e a n o m b r e el o p e r a n d o r e p r e s e n t a d o p o r n 2;
g e n c ó d ig o (/?,);
p r i n t o p || n o m b r e || 7 || to p e (p ila r )
end
/* caso 2 */
e l s e i f 1 < e tiq u e ta ( n i ) < e tiq u e ta (n 2) a n d e tiq u e ta ( n {) < r t h e n b e g in
p e r m u ta (p ila r);
g e n c ó d ig o ( n 2);
R : = s a c a (p ila r ); / * n 2 s e e v a l u ó e n el r e g i s t r o R * /
g e n c ó d ig o ( n i ;
p r i n t o p || R || 7 || to p e (p ila r);
m e te (p ila r , R );
p e r m u t a (p ila r )
end
/* c a so 3 */
e l s e i f 1 < e tiq u e ta (n 2) < e tiq u e ta ( n i a n d e tiq u e ta ( n i) < r t h e n b e g in
g e n c ó d ig o (ni);
R : = s a c a (p ila r ); / * n x s e e v a l u ó e n e l r e g i s t r o R * /
g e n c ó d ig o (ni);
p r i n t o p | to p e ( p ila r ) || 7 || R ;
m e t e (p ita r , R )
end
/* caso 4, a m b a s e tiq u e ta s > r, e l n ú m e r o t o t a l d e r e g i s t r o s * /
e ls e b e g in
g e n c ó d ig o (ni);
T : = s a c a (pH at);
p r i n t 'MOV' || to p e (p ila r ) || 7 || T;
g e n c ó d ig o ( n i ;
m e t e ( p i la t , T );
p r i n t o p || T || 7 || to p e (p ila r )
end
end

F ig . 9 .2 5 . L a f u n c i ó n g e n c ó d ig o .
9.10 G E N E R A C IO N D E C O D IG O A PARTIR DE LOS G D A 581

d e T, d o n d e gencódigo es el p r o c e d im ie n to d e la figura 9 .2 5 . Se p u e d e e x p lic a r e x a ­


m in a n d o c a d a u n o d e los c in c o casos. P a ra el caso 0 , se tien e u n su b á rb o l d e la fo rm a

E s d ecir, n e s u n a h o ja y el h ijo m á s a la iz q u ie r d a d e su p a d re . P o r ta n to , só lo se
g e n e ra u n a in s tru c c ió n d e carga. E n el c a so 1, se tie n e u n s u b á rb o l d e la fo rm a

nom bre

p a r a el q u e se g e n e ra c ó d ig o p a r a e v a lu a r n\ e n el registro R= tope(pilar) seg u id o d e


la in s tru c c ió n op nom bre . R. E n el c a s o 2, se tie n e u n s u b á rb o l d e la fo rm a

d o n d e n¡ se p u e d e e v a lu a r s in a l m a c e n a m i e n t o s e n m e m o r ia p e r o n 2 e s m á s d if í­
cil d e e v a lu a r (es d ecir, re q u ie re m á s registros) q u e n x. P a ra este caso, se p e r m u ta n
los d o s registros del to p e en pilar, d e s p u é s se ev alú a n2 e n R - tope{pilar). Se e lim in a
R d e pilar y se e v a lú a >/, e n S = tope{ pilar). O b sé rv e se q u e S e r a el registro q u e es­
ta b a in ic ia lm e n te e n el to p e d e pilar al c o m ie n z o del c a so 2. D e s p u é s se g e n e ra la
in stru c c ió n op R, S , q u e p r o d u c e el v a lo r d e n (el n o d o e tiq u e ta d o c o n op) e n el
registro S . O t r a lla m a d a a p ern a d a d e ja p ila r c o m o e s ta b a c u a n d o c o m e n z ó esta lla­
m a d a d e gencódigo.
El c a so 3 e s s im ila r al c a s o 2 e x c e p to e n q u e a q u í, el s u b á rb o l iz q u ie r d o e s m á s
difícil y se e v a lú a p r im e r o . A q u í n o es n e c e sa rio in t e r c a m b i a r registro c o n pernada.
El c a so 4 o c u r r e c u a n d o a m b o s s u b á rb o le s n e c e s ita n r o m á s reg istro s p a r a e v a ­
lu a r sin a lm a c e n a m ie n to s e n m e m o r ia . C o m o h a y q u e u tiliz a r u n a p o sic ió n d e m e ­
m o r ia te m p o r a l, p r im e r o se e v a lú a el s u b á rb o l d e r e c h o e n la p o sic ió n te m p o r a l T,
d e s p u é s el s u b á rb o l iz q u ie r d o y p o r ú lt im o la raíz.

S e g e n e ra rá c ó d ig o p a r a el á rb o l e tiq u e ta d o d e la fig u ra 9 .2 4 c o n p i­
E je m p lo 9 .1 3 .

lar = r o , R l al inicio. E n la fig u ra 9 .2 6 se m u e s tr a n la s e c u e n c ia d e lla m a d a s a gen-


código y los p a so s d e im p r e s ió n d e c ó d ig o . A u n la d o se m u e s tr a e n tr e c o r c h e te s el
c o n te n id o d e p ila r en el m o m e n t o d e c a d a lla m a d a , c o n el to p e e n el e x tr e m o d e ­
re c h o . A q u í la s e c u e n c ia d e c ó d ig o es u n a p e r m u ta c ió n d e la d e la fig u ra 9 .2 0 . □

Se p u e d e d e m o s t r a r q u e gencódigo p r o d u c e c ó d ig o ó p t i m o en e x p re s io n e s p a ra
el m o d e lo d e m á q u in a d e este c a p ítu lo , s u p o n ie n d o q u e n o se tie n e n e n c u e n t a las
p ro p ie d a d e s alg eb raicas d e los o p e r a d o r e s y q u e n o h a y s u b e x p re s io n e s c o m u n e s . La
p ru e b a , q u e se d e ja c o m o e jercicio p rá c tic o , se b a sa e n d e m o s t r a r q u e c u a lq u ie r se­
c u e n c ia d e c ó d ig o d e b e rea liz a r

1. u n a o p e r a c ió n p a ra c a d a n o d o in terior.
582 G EN ER A C IO N DE CO DIG O

gencódigo ( t 4) [ R,RoJ / * c a s o 2 */
gencódigo (t 3) ( RoRi 1 / * c a s o 3 */
gencódigo ( e ) ( RoR, ] / * c a s o 0 */
p r i n t MOV e , R |

gencódigo ( t 2) [R<>] /* caso I */


gencódigo ( c ) ( Ro) / * c a s o 0 */
p r i n t M OV c ,R o
p rin t ADD d , R 0
p rin t SUB Ro, Rj
genakiigo ( t , ) [Rol /* c a s o I */
gencódigo (a ) ( Ro J /* caso 0 */
p r i n t M OV a , R,,
ADD b , R o
p rin t
p rin t SUB R|,R<t

F ig . 9 .2 6 . R a s t r e o d e la r u t i n a gencódigo.

2. u n a c a r g a p a r a c a d a h o j a q u e e s el h i j o m á s a la i z q u i e r d a d e s u p a d r e , y
3. un a lm a c e n a m ie n to p a r a c a d a n o d o c u y o s d o s hijos tie n e n e tiq u e ta s iguales o
m a y o r e s q u e r.

Com o gencódigo p r o d u c e e x a c ta m e n te estos pasos, es ó p tim a .

O p e ra c io n e s e n v ario s re g istro s

S e p u e d e m o d i f i c a r el a l g o r i t m o d e e t i q u e t a d o p a r a m a n e j a r o p e r a c i o n e s c o m o m u l ­
tiplicación. división o lla m a d a a u n a fu n c ió n , q u e exigen g e n e r a lm e n te m á s d e u n
r e g is t r o p a r a lle v a rs e a c a b o . B a s t a c o n m o d i f i c a r el p a s o ( 6 ) d e la f i g u r a 9 . 2 3 , el a l ­
g o r i t m o d e e t i q u e t a d o , a s í q u e etiqueta{n) e s s i e m p r e p o r l o m e n o s e l n ú m e r o d e
r e g is t r o s n e c e s a r i o s p a r a la o p e r a c i ó n . P o r e j e m p l o , si se s u p o n e q u e la l l a m a d a a
u n a f u n c i ó n r e q u i e r e t o d o s los r re g istro s, s e s u s t i t u y e la l í n e a ( 6 ) p o r etiqueta(n) = r.
Si la m u l t i p l i c a c i ó n n e c e s i t a d o s r e g is t r o s , e n e l c a s o b i n a r i o s e u t i l i z a

m á x ( 2 , / ,, / , ) si /, * l2
etiqueta(n) =
/, + 1 si /, = I-

d o n d e /, y A s o n l a s e t i q u e t a s d e l o s h i j o s d e n.
D e s g r a c i a d a m e n t e , e s t a m o d i f i c a c i ó n n o g a r a n t i z a r á q u e u n p a r d e r e g i s t r o s esté
d isp o n ib le p a ra u n a m u ltip licac ió n o división o p a ra o p e rac io n e s d e m ú ltip le p re ­
c i s i ó n . U n t r u c o ú t i l e n a l g u n a s m á q u i n a s e s s i m u l a r q u e la m u l t i p l i c a c i ó n y la
d i v i s i ó n r e q u i e r e n t r e s r e g is t r o s . Si permuta n u n c a se utiliza e n gencódigo, entonces
pitar c o n t e n d r á s i e m p r e r e g i s t r o s c o n n ú m e r o s a l t o s c o n s e c u t i v o s , /, / + 1 .............. r - 1
p a r a u n a i. P o r t a n t o , l o s t r e s p r i m e r o s i n c l u y e n s i n n i n g u n a d u d a u n p a r d e regis­
tr o s . A p r o v e c h a n d o q u e m u c h a s o p e r a c i o n e s s o n c o n m u t a t i v a s , a m e n u d o s e p u e d e
e v i t a r u t i l i z a r el c a s o 2 d e gencódigo. el ca so q u e lla m a a permuta. A sim ism o, a u n ­
q u e pilar n o c o n t e n g a t r e s r e g i s t r o s c o n s e c u t i v o s e n e l t o p e , e s m u y p r o b a b l e q u e se
e n c u e n t r e n u n p a r d e r e g i s t r o s e n pilar.
9.10 G E N E R A C IO N D E C O D IG O A PARTIR DE LOS G D A 583

P ro p ie d a d e s alg eb raicas

Si se a s u m e n leyes alg eb raicas p a r a v a rio s o p e ra d o re s , ex iste la p o sib ilid a d d e su sti­


t u i r u n á rb o l T d a d o p o r u n o c o n e tiq u e ta s m á s p e q u e ñ a s ( p a r a e v ita r a l m a c e n a ­
m ie n to s e n el c a so 4 d e gencódigó) o m e n o s h o ja s iz q u ie rd a s ( p a r a e v ita r carg as en
el c a so 1) o a m b a s c o sa s. P o r e je m p lo , c o m o + se c o n s id e r a c o n m u t a t i v o g e n e ra l­
m e n te , se p u e d e s u s titu ir el árb o l d e la figura 9 .2 7 (a ) p o r el d e la figura 9 .2 7 (b ), re­
d u c i e n d o el n ú m e r o d e h o ja s i z q u ie r d a s e n u n o y p o s i b l e m e n t e r e d u c i e n d o a s i­
m is m o los v alo res d e a lg u n a s e tiq u e ta s.
C o m o + ta m b ié n se c o n s id e r a a s o c ia tiv o a d e m á s d e c o n m u ta ti v o , se p u e d e to ­
m a r u n g ru p o d e n o d o s e tiq u e ta d o c o n + c o m o e n la fig u ra 9.27(c) y s u s titu irlo p o r
u n a c a d e n a iz q u ie rd a c o m o e n la figura 9 .2 7 (d ). P a r a m i n im i z a r el v a lo r d e la e ti­
q u e ta d e la raíz, só lo hay q u e d is p o n e r q u e 7*,, s e a u n o d e T lt T 2, T$ y T 4 c o n la
m a y o r e tiq u e ta y q u e 7*#l n o sea u n a h o ja a m e n o s q u e lo sean to d a s las T¡ 7V

S u b ex p resio n es com unes

C u a n d o h a y s u b e x p re s io n e s c o m u n e s e n u n b lo q u e básico, el G D A c o r r e s p o n d ie n te
y a n o se rá u n á rb o l. L as s u b e x p re s io n e s c o m u n e s c o r r e s p o n d e r á n a n o d o s c o n m á s
d e u n p a d re , lla m a d o s nodos com partidos. Y a n o se p u e d e a p lic a r d ir e c ta m e n te el
a lg o r i tm o d e e t iq u e ta d o o gencódigo. D e h e c h o , las s u b e x p r e s io n e s c o m u n e s d if i­
c u lta n m u c h o la g e n e ra c ió n d e c ó d ig o d e s d e el p u n t o d e v ista m a te m á tic o . B ru n o y
S ethi [1976] d e m o s tr a r o n q u e la g e n e ra c ió n d e c ó d ig o ó p t i m o p a r a G D A e n u n a
m á q u in a d e u n reg istro es N P c o m p le to . A h o , J o h n s o n y U llm a n [1 9 7 7 a] d e m o s tr a ­
ro n q u e in c lu so c o n u n n ú m e r o ilim ita d o d e registros, el p r o b le m a c o n t i n ú a s ie n d o
N P c o m p le to . L a d ific u lta d surge al in te n ta r d e t e r m i n a r u n o rd e n ó p ti m o en q u e
e v a lu a r u n G D A d e la m a n e r a m á s b a ra ta .

F ig. 9 .2 7 . T r a n s f o r m a c io n e s c o n m u t a t iv a y a sociativa.
584 GENERACION DE CODIGO

En la práctica se puede obtener una solución razonable si se particiona el G D A


en un conjunto de árboles, encontrando para cada raíz o nodo com partido n el su-
bárbol m áxim o con n com o raíz que no in clu ya otros nodos com partidos, excepto
com o hojas. Por ejem plo, se puede particionar el G D A de la figura 9.22 en los ár­
boles de la figura 9.28. Cada nodo com partido con p padres aparece com o una hoja
en a lo sum o p árboles. Los nodos con más de un padre en el m ism o árbol se pueden
convertir en tantas hojas com o sea necesario, de m odo que ninguna hoja tenga m ú l­
tiples padres.

Fig. 9.28. Partición en árboles.

U na vez asi particionado el G D A en árboles, se puede ordenar la evaluación de


los árboles y u tiliza r cualquiera de los algoritm os precedentes para generar código
para cada árbol. El orden de los árboles debe ser tal que los valores com partidos que
sean hojas de un árbol deben estar disponibles cuando se evalúe el árbol. Las can ti­
dades com partidas se pueden calcu la r y alm acenar en m em oria (o conservar en re­
gistros si hay suficientes registros disponibles). Si bien este proceso no necesaria­
mente genera código óptim o, con frecuencia será satisfactorio.

9.11 A L G O R IT M O P A R A G E N E R A C IO N D E C O D IG O
C O N P R O G R A M A C IO N D IN A M IC A

En la sección anterior, el procedim iento gencódigo produce código óptim o a partir


de un árbol de expresiones utilizando una cantidad de tiem po que es una función
lineal del tam año del árbol. Este procedim iento es válido para m áquinas en las que
9 .1 1 A LG O R ITM O PARA G E N E R A C IO N DE C O D IG O 585

to d o s lo s c á lc u lo s se h a c e n e n reg istro s y e n las q u e las in s tr u c c io n e s c o n s ta n d e u n


o p e r a d o r a p lic a d o a d o s reg istro s o a u n re g istro y a u n a p o sic ió n d e m e m o r ia .
S e p u e d e u tiliz a r u n a lg o ritm o b a s a d o e n el p r in c ip io d e la p r o g r a m a c ió n d i n á ­
m ic a p a r a a m p lia r la clase d e m á q u in a s p a r a las q u e se p u e d e g e n e r a r c ó d ig o ó p ti m o
a p a r ti r d e á r b o le s d e e x p r e s io n e s e n u n t i e m p o lin e a l. El a lg o r i tm o d e p r o g r a m a ­
c ió n d in á m ic a se a p lic a a u n a a m p lia clase d e m á q u in a s d e reg istro s c o n c o n ju n to s
d e in s tr u c c io n e s c o m p le ja s.

U n a c l a s e d e m á q u in a s d e r e g is tr o s

S e p u e d e u tiliz a r el a lg o r itm o d e p r o g r a m a c ió n d i n á m i c a p a r a g e n e ra r c ó d ig o p a r a
c u a lq u ie r m á q u i n a c o n r registros in te r c a m b ia b le s RO, R l , . . . , R r-1 e in s tru c c io n e s
d e la fo rm a R / E d o n d e E es c u a lq u ie r e x p re sió n q u e c o n te n g a o p e ra d o re s , regis­
tr o s y p o s ic io n e s d e m e m o r ia . Si E im p lic a a u n o o m á s registros, e n to n c e s R/ d e b e
s e r u n o d e d ic h o s registros. E ste m o d e lo d e m á q u i n a in c lu y e la m á q u in a p re s e n ta d a
e n la secció n 9.2.
P o r e je m p lo , la in s tru c c ió n A D D RO, R l se re p re s e n ta ría c o m o R l := R l + RO. La
in s tru c c ió n a d d * R 0 , R 1 se re p re s e n ta ría c o m o R l := R l + i n d RO. d o n d e i n d re­
p re s e n ta el o p e r a d o r d e in d ire c c ió n .
S e s u p o n e q u e u n a m á q u i n a tie n e u n a in s tru c c ió n d e ca rg a R/ > M, u n a in s tru c ­
c ió n d e a l m a c e n a m i e n t o M R/, y u n a in s tr u c c ió n d e c o p ia d e re g istro a re g istro
R/ Rj. P a r a sim p lific ar, se s u p o n e ta m b ié n q u e to d a in s tr u c c ió n c u e s ta u n a u n i­
d a d . a u n q u e el a lg o r itm o d e p r o g r a m a c ió n d in á m ic a se p u e d e m o d if ic a r fá c ilm e n te
p a r a q u e fu n c io n e in c lu so si c a d a in s tr u c c ió n tie n e s u p r o p io costo.

E l p rin cip io d e la p r o g r a m a c ió n d in á m ic a

El a lg o r itm o d e p r o g ra m a c ió n d i n á m i c a p a r tic io n a el p r o b le m a d e g e n e ra r c ó d ig o
ó p t i m o p a r a u n a e x p re s ió n e n s u b p r o b le m a s g e n e ra c ió n d e c ó d ig o ó p ti m o p a r a las
s u b e x p re s io n e s d e la e x p re s ió n d a d a . C o m o e je m p lo , c o n sid é re se u n a e x p re s ió n E
d e la fo rm a £ j + E 2. U n p r o g r a m a ó p t i m o p a r a E se f o r m a c o m b i n a n d o p ro g r a m a s
ó p tim o s p a r a E t y £ 2, e n u n o u o t r o o r d e n , seg u id o d e c ó d ig o p a r a e v a lu a r el o p e ­
r a d o r +. L o s s u b p r o b le m a s d e g e n e r a r c ó d ig o ó p t i m o p a r a E \ y E 2 se resu elv en d e
m a n e r a sim ilar.
U n p ro g ra m a ó p ti m o p ro d u c id o p o r el a lg o ritm o d e p ro g ra m a c ió n d in á m ic a tien e
u n a p ro p ie d a d im p o r ta n te . E v alú a u n a e x p re s ió n E ** E i op E 2 " c o n tig u a m e n te * '.
O b s e rv a n d o el á rb o l s in tá c tic o T p a r a E. se a v e rig u a lo q u e esto significa.

A q u í. T \ y 7 \ s o n á rb o le s p a r a £ j y E 2, re s p e c tiv a m e n te .
586 GENERACION DE CODIGO

E v a lu a ció n co n tigu a

Se d ic e q u e u n p r o g r a m a P e v a l ú a u n á r b o l T c o n tig u a m e n te si e v a l ú a p r im e r o
a q u e llo s s u b á rb o le s d e T q u e n ecesiten calcu larse e n la m e m o r ia . D esp u és e v a lú a el
resto d e T. ya sea e n el o rd e n T i. T 2 y d e s p u é s la raíz, o e n el o r d e n T2% Ti y d esp u és
la ra íz , u tiliz a n d o en a m b o s c aso s los v a lo re s a n t e r i o r m e n t e c a lc u la d o s d e la m e ­
m o ria s ie m p re q u e sea necesario. C o m o e je m p lo d e ev a lu a c ió n n o co n tig u a, P pued e
e v a lu a r p r im e r o p a rte d e T, d e j a n d o el v alo r e n u n reg istro (en lu g a r d e en la m e ­
m o ria). a c o n tin u a c ió n e v a lu a r T2 y d e s p u é s reg resar p a ra e v a lu a r el resto d e T x.
E n c u a n t o a la m á q u in a d e reg istro s d e f in id a a n te r io r m e n te , se p u e d e d e m o s tr a r
q u e d a d o u n p r o g r a m a P e n le n g u a je d e m á q u in a p a r a e v a lu a r u n á rb o l d e ex p resio ­
n e s T. se p u e d e e n c o n t r a r u n p r o g r a m a e q u iv a le n te P ' tal q u e

1. P ' n o tien e u n c o s to m á s a lto q u e P,


2. P ' n o u tiliza m á s reg istro s q u e P y
3. P ' e v a lú a el árb o l e n fo rm a c o n tig u a .

E ste r e s u lta d o im p lic a q u e to d o árb o l d e e x p re s io n e s se p u e d e e v a lu a r ó p tim a m e n te


m e d ia n te u n p r o g r a m a co n tig u o .
A m o d o d e c o n tra ste , las m á q u in a s c o n p a re ja s d e registros p a r - im p a r c o m o las
m á q u in a s IB M S is te m a /3 7 0 n o s ie m p re tie n e n e v a lu a c io n e s c o n tig u a s ó p tim a s . P ara
estas m á q u in a s se p u e d e n d a r e je m p lo s d e á rb o le s d e e x p re sio n e s e n los q u e u n p ro ­
g ra m a ó p ti m o en lenguaje d e m á q u in a d e b e e v a lu a r p rim e ro en u n registro u n a p arte
del s u b á rb o l iz q u ie r d o d e la raíz, luego, u n a p a rte del s u b á rb o l d e re c h o , a c o n t i n u a ­
ción. o tr a p a rte del su b á rb o l iz q u ie rd o , y d e s p u é s , o t r a p a r te d e l d e re c h o , y así s u ­
c e s iv a m e n te . E ste tip o d e o scilació n es in n e c e sa ria p a ra u n a e v a lu a c ió n ó p ti m a d e
u n árb o l d e e x p re sio n e s q u e u tilice la m á q u in a d e registros generales.
La p r o p ie d a d d e e v a lu a c ió n c o n tig u a d e f in id a a n t e r i o r m e n t e in d ic a q u e p a ra
c u a lq u ie r árb o l d e e x p resio n es 7 ’, s ie m p re ex iste u n p r o g r a m a ó p t i m o q u e c o n s ta d e
p ro g r a m a s ó p tim o s p a r a s u b á rb o le s d e la ra íz , se g u id o s de u n a in s tru c c ió n p a r a e v a ­
lu a r la raíz. E sta p ro p ie d a d p e r m ite u tiliz ar el a lg o ritm o d e p r o g ra m a c ió n d in á m ic a
p a ra g e n e ra r u n p r o g r a m a ó p t i m o p a r a T.

E l a lg o r itm o d e p ro g ra m a ció n d in á m ic a

El a lg o ritm o d e p r o g ra m a c ió n d in á m ic a a c tú a e n tres fases. S u p ó n g a se q u e la m á ­


q u i n a o b je to tie n e r registros. E n la p r im e r a fase, p a r a c a d a n o d o n del á rb o l d e ex­
p r e s io n e s T se c a lc u la e n f o r m a a s c e n d e n te u n a m a tr iz C d e c o s to s , e n la q u e el
/-é s im o c o m p o n e n t e C[ i ] e s el c o s to ó p t i m o d e c a lc u la r el s u b á r b o l S c o n ra íz en
n e n u n reg istro , s u p o n i e n d o q u e e s tá n d is p o n ib l e s i r e g is tro s p a r a el c á lc u lo .
1 < i < r. El c o s to in c lu y e to d a s las carg as y a lm a c e n a m ie n to s n ecesario s p a r a e v a ­
lu a r .V e n el n ú m e r o d e reg istro s d a d o . T a m b ié n in c lu y e el c o s to d e c a lc u la r el o p e ­
r a d o r en la ra íz d e S. El c o m p o n e n t e n ú m e r o c e ro del v e c to r d e c o s to s es el co sto
ó p ti m o d e c a lc u la r el s u b á rb o l S e n la m e m o r ia . L a p ro p ie d a d d e e v a lu a c ió n c o n ti­
g u a a s e g u ra la g e n e ra c ió n d e u n p r o g r a m a ó p t i m o p a r a S si se c o n s id e r a n c o m b i ­
n a c io n e s d e p ro g r a m a s ó p tim o s sólo p a r a los s u b á rb o le s d e la ra íz d e S. E sta lim i­
ta c ió n re d u c e el n ú m e r o d e c aso s q u e h a y q u e co n sid e ra r.
P a r a c a lc u la r C[i] e n el n o d o n, c o n sid é re se c a d a in s tr u c c ió n d e m á q u i n a R : = E
9.11 A LG O R ITM O PARA GENERACION DE C O D IG O 587

c u y a e x p re s ió n E c o n c u e r d a c o n la s u b e x p re s ió n c o n ra íz e n el n o d o n. E x a m in a n d o
los vecto res d e c o s to s e n los d e s c e n d ie n te s c o rr e s p o n d ie n te s d e /?, se d e t e r m in a n los
co sto s d e e v a lu a r los o p e r a n d o s d e E . P a r a a q u e llo s o p e r a n d o s d e E q u e se a n regis­
tro s, c o n s id é re n s e to d o s los ó r d e n e s p o sib le s e n q u e se p u e d a n e v a lu a r e n registros
los s u b á rb o le s c o r r e s p o n d ie n te s d e T. E n c a d a o r d e n a m ie n to , el p r im e r su b á rb o l c o ­
rre s p o n d ie n te a u n o p e r a n d o registro se p u e d e e v a lu a r u tiliz a n d o / reg istro s d is p o ­
nibles, el s e g u n d o u tiliz a n d o / - 1 reg istros, y a s í s u c e s iv a m e n te . E n c u a n t o al n o d o
n , a ñ á d a s e el co sto d e la in s tr u c c ió n R := E u tiliz a d o p a r a c o n c o r d a r c o n el n o d o n.
El v a lo r C [/] e s e n to n c e s el c o s to m í n i m o d e to d o s los ó r d e n e s posibles.
L o s vecto res de c o s to s p a r a el á rb o l c o m p le to T se p u e d e n c a lc u la r e n f o r m a as­
c e n d e n te e n u n ti e m p o lin e a lm e n te p r o p o r c io n a l al n ú m e r o d e n o d o s d e T. E s c o n ­
v e n ie n te a lm a c e n a r e n c a d a n o d o la in s tr u c c ió n u tiliz a d a p a r a lo g ra r el m e jo r co sto
p a r a C [/] p a r a c a d a v a lo r d e /. El c o s to m á s p e q u e ñ o e n el v e c to r p a r a la ra íz d e T
p r o p o r c io n a el c o s to m í n i m o d e e v a lu a r T.
L a s e g u n d a fase del alg o ritm o , reco rre T u s a n d o los vectores d e co sto s p a ra d eter­
m i n a r los su b árb o les d e '/ 'q u e se d e b e n c a lc u la r e n la m e m o ria . L a tercera, se recorre
c a d a árb o l u tiliz a n d o los vecto res d e co sto s y las in stru c c io n e s aso ciad as p a r a g en erar
el código o b je to final. Se g en era p r im e ro el c ó d ig o p a r a los su b árb o les c alcu lad o s en
p o sicio nes d e m e m o ria . A m b a s fases ta m b ié n se p u e d e n im p la n ta r p a r a s e r e jecu tad as
en u n tie m p o lin e a lm e n te p ro p o rc io n a l al ta m a ñ o del á rb o l d e expresiones.

E jem plo 9.14. C o n s id é re s e u n a m á q u i n a q u e te n g a d o s registros. R O y Rl. y las si­


g u ie n te s in s tru c c io n e s , c a d a u n a c o n c o s to u n ita rio :
R / := Mj
Ri := Ri Op Rj
Ri := Ri Op M j
Ri z = Rj
Mi := Ri

E n estas in s tru c c io n e s , Ri es R O o Rl, y Mj es u n a p o sició n d e m e m o r ia .


Se a p lic a rá el a lg o ritm o d e p r o g r a m a c ió n d in á m ic a p a r a g e n e ra r c ó d ig o ó p tim o
p a r a el árb o l s in tá c tic o d e la fig u ra 9 .2 9 . E n la p r im e r a fase se c a lc u la n lo s vecto res
d e co sto s q u e se m u e s tr a n e n c a d a n o d o . P a r a ilu stra r este c á lc u lo d e co sto s, co n si­
d érese el v e c to r d e c o s to s e n la h o ja a . C [ 0 ] , el co sto d e c a lc u la r a e n m e m o r ia , es
0 , p u e s to q u e y a está allí. C [ 1], el c o s to d e c a lc u la r a en u n registro, e s 1 p o r q u e se
p u e d e c a rg a r e n u n registro c o n la in s tru c c ió n R O : = a . C [ 2 J , el c o s to d e c a rg a r a
e n u n reg istro c u a n d o h a y d o s reg istro s d is p o n ib le s, es el m is m o q u e c o n u n registro
d is p o n ib le . El v e c to r d e c o s to s e n la h o ja a e s p o r t a n t o (0 , 1, 1).
C o n s id é re s e el v e c to r d e c o s to s d e la raíz. P r im e r o se d e t e r m in a el c o s to m í n im o
d e c a lc u la r la ra íz c o n u n o y d o s reg istro s d isp o n ib les. L a in s tru c c ió n d e m á q u in a
R O : = RO + M c o n c u e rd a co n la raíz p o rq u e la raíz está e tiq u eta d a co n el o p e ra d o r +.
U tiliz a n d o esta in s tru c c ió n , el c o s to m í n i m o d e e v a lu a r la raíz c o n u n re g istro d is ­
p o n ib le e s el c o s to m í n i m o d e c a lc u la r su s u b á rb o l d e r e c h o e n la m e m o r ia , m á s el
co sto m í n i m o d e c a lc u la r su s u b á rb o l iz q u ie r d o e n el registro, m á s I p o r la in s tru c ­
ción. N o ex iste o tr a m a n e r a . L o s vecto res d e c o s to s e n los h ijo s d e r e c h o e iz q u ie rd o
d e la ra íz m u e s tr a n q u e el c o s to m í n i m o d e c a lc u la r la ra íz c o n u n reg istro d is p o n i­
ble es 5+ 2+ 1 = 8.
588 GENERACION DE CODIGO

( 0 , 1, 1)

1 ig. 9.29. Arbol sintáctico para ( a - b ) +c* ( d / e ) con vector de costos en cada nodo.

A h o ra considérese el costo m ín im o de evaluar la raíz con dos registros d ispo ni­


bles. Surgen tres casos dependiendo de la instrucción que se utilice para ca lcu la r la
raíz y el orden en que se evalúen los subárboles izquierd o y derecho de la raíz.

1. C alcúlese el subárbol izquierd o con dos registros disponibles en el registro R 0 ,


calcúlese el subárbol derecho con un registro disponible en el registro R l, y u ti­
lícese la in stru cció n R 0 : = R 0 + R l para calcu la r la raíz. Esta secuencia tiene un
costo de 2 + 5 + 1 - 8.

2. C alcúlese el subárbol derecho con dos registros d isponibles en R l , calcúlese el


subárbol izquierdo con un registro d ispo n ib le en R 0 , y utilícese la instrucción
R 0 : = R 0 + R l . Esta secuencia tiene un costo de 4 + 2 + 1 = 7.

3. Calcúlese el subárbol derecho en la localidad de m em oria M, calcúlese el subár­


bol izq u ierd o con dos registros d isp o n ib les en el registro R 0 , y utilícese la in s ­
trucción r o : = R 0 + m. Esta secuencia tiene un costo de 5 + 2 + 1 = 8.
L a segunda opción da el costo m ín im o de 7.
E l costo m ín im o de calcu la r la raíz en m em oria se determ ina sum ando uno al
costo m ín im o de calcu la r la raíz con todos los registros disponibles; es decir, se cal­
cula la raíz en un registro y después se alm acena el resultado en la m em oria. El vec­
tor de costos en la raíz es por tanto (8,8,7).
A p artir de los vectores de costos se puede fácilm ente co n stru ir la secuencia de
código recorriendo el árbol. Según el árbol de la figura 9.29, suponiendo que están
disponibles dos registros, una secuencia de código óptim a es
RO := c
Rl := d
Rl := Rl / e
RO *
JO

Rl
••
II

Rl := a
Rl := Rl — b
Rl := Rl + RO

D esarrollada originalm ente en A h o y Jo h n so n [1 9 76 ], esta técnica se ha u tili­


zado en varios com piladores, in clu id a la segunda versión del co m p ilad o r transpor­
table de C de S. C . Johnson, P C C 2. L a técnica facilita la redestinación, dada la apli-
cabilidad de la técnica de program ación d in ám ica en m uchas clases de m áquinas.
9.12 G ENER A D O R ES DE G ENER A D O R ES DE CO DIG O 589

9 .1 2 G E N E R A D O R E S D E G E N E R A D O R E S D E C O D IG O

L a g e n e ra c ió n d e c ó d ig o s u p o n e elegir u n o r d e n d e e v a lu a c ió n p a r a las o p e ra c io n e s .
a s ig n a n d o v alo res a los registros, y s e le c c io n a n d o las in s tr u c c io n e s a p r o p ia d a s e n el
len g u aje o b je to p a r a im p la n t a r lo s o p e r a d o r e s e n la re p re s e n ta c ió n in te r m e d ia . I n ­
clu so s u p o n ie n d o q u e el o r d e n d e e v a lu a c ió n v ie n e d a d o y q u e lo s reg istro s s o n asig­
n a d o s p o r u n m e c a n is m o in d e p e n d ie n te , la c u e s tió n d e d e c id ir las in s tru c c io n e s q u e
se v a n a u tiliz a r p u e d e s e r u n a g ra n ta r e a c o m b in a to r ia , e s p e c ia lm e n te c o n u n a m á ­
q u i n a c o n m u c h o s m o d o s d e d ir e c c io n a m ie n to . E n esta secció n se e s tu d ia n té c n ic a s
d e re c s c ritu ra d e á rb o le s q u e se p u e d e n u tiliz a r p a r a c o n s tr u i r la fase d e selecció n de
in s tru c c io n e s d e u n g e n e r a d o r d e c ó d ig o a u t o m á ti c a m e n te a p a r ti r d e u n a especifi­
c a c ió n d e a lto n iv e l d e la m á q u in a o b je to .

G e n e r a c ió n d e c ó d ig o m e d ia n te r e e sc r itu r a d e á r b o le s

A lo largo d e esta secció n , la e n t r a d a al p ro c e s o d e g e n e ra c ió n d e c ó d ig o se rá u n a


se c u e n c ia d e á rb o le s e n el nivel s e m á n t ic o d e la m á q u i n a o b je to . L o s á rb o le s se p u e ­
d e n o b te n e r d e s p u é s d e in s e r ta r las d ire c c io n e s p a r a el m o m e n t o d e la e je c u c ió n en
la r e p re s e n ta c ió n in te r m e d ia , c o m o se d e s c rib ió e n la secció n 9.3.

E je m p lo 9 .1 5 . L a fig u ra 9 .3 0 c o n tie n e u n á rb o l p a r a la p ro p o s ic ió n d e asig n ac ió n


a [ i ] : = b + l en la q u e a e i s o n n o m b r e s lo cales c u y a s d ire c c io n e s e n el m o m e n to
d e la e je c u c ió n v ie n en d a d a s c o m o d e s p la z a m ie n to s c o n s t a y c o n s t a a p a r tir d e
s p . el reg istro q u e c o n tie n e el a p u n t a d o r al p r in c ip io del reg istro d e a c tiv a c ió n en

c u rso . L a m a tr iz a se a lm a c e n a e n la p ila d e eje c u c ió n . L a a s ig n a c ió n a a [ i 1 es u n a


a s ig n a c ió n in d ire c ta en la q u e el v a lo r d e la d o d e r e c h o d e la p o sic ió n p a r a a [ i ) se
iguala al v alo r d e la d o d e re c h o de la e x p re sió n b+l. L a d ire c c ió n d e la m a tr iz a viene
d a d a a ñ a d i e n d o el v alo r d e la c o n s ta n t e c o n s t a al c o n t e n id o del reg istro S P ; el v alo r
d e i está e n la p o sic ió n q u e se o b tie n e s u m a n d o el v a lo r d e la c o n s ta n te c o n s t a al
c o n te n id o d e l reg istro s p . L a v a ria b le b es u n n o m b r e global e n la p o sic ió n d e m e ­
m o r ia memb. P a ra sim p lific a r, se s u p o n e q u e to d a s las v a ria b le s s o n d e ti p o c a rá c te r.
E n el á rb o l, el o p e r a d o r i n d c o n s id e r a su a r g u m e n to c o m o u n a d ire c c ió n d e m e ­
m o ria . C o m o el h ijo iz q u ie r d o d e u n o p e r a d o r d e a sig n a c ió n , el n o d o i n d p ro p o r-

ind +

ind

const.
/ \ reg#p +

const, r e g ap

F ig. 9 .3 0 . Arbol c o n c ó d ig o in term ed io para a [ i ) : = b + l.


590 G ENERA CIO N DE CO DIGO

c io n a la p o sic ió n e n la c u a l d e b e a lm a c e n a r s e el v a lo r d e la d o d e r e c h o q u e está en
el la d o d e r e c h o d e l o p e r a d o r d e a sig n a c ió n . Si u n a r g u m e n t o d e u n o p e r a d o r + o
i n d e s u n a p o sic ió n de m e m o r ia o u n registro, e n to n c e s el c o n te n id o d e d ic h a p o ­
sició n d e m e m o r ia o registro se c o n s id e r a c o m o el v a lo r. L as h o ja s e n el á rb o l son
a tr ib u to s d e tip o c o n su b ín d ic e s; el s u b ín d ic e in d ic a el v a lo r d e l a tr ib u lo . □

El c ó d ig o o b je to se g e n e ra d u r a n t e u n p r o c e s o e n el q u e el árb o l d e e n t r a d a se
re d u c e a u n so lo n o d o , a p lic a n d o al á rb o l u n a s e c u e n c ia d e reglas d e re e sc ritu ra d e
árb o le s. C a d a regla d e re e s c ritu ra d e á rb o le s es u n a p ro p o s ic ió n d e la fo rm a

sustitución < - plantilla { a c c ió n }


donde

1. sustitución es u n so lo n o d o .
2. plantilla es u n á r b o l, y
3. acción e s u n fra g m e n to d e códig o , c o m o e n u n e s q u e m a d e tr a d u c c ió n dirigid a
p o r la sintaxis.

U n c o n j u n t o d e reglas d e re e s c ritu ra d e á rb o le s se d e n o m i n a esquem a de traducción


d e árboles.
C a d a p la n tilla d e árb o l r e p re s e n ta un c á lc u lo r e a liz a d o p o r la se c u e n c ia d e ins­
tru c c io n e s de m á q u i n a e m itid a p o r la a c c ió n a so c ia d a . G e n e r a lm e n te , u n a p la n tilla
c o r r e s p o n d e a u n a sola in s tru c c ió n d e m á q u in a . L as h o ja s d e la p la n tilla s o n a tri­
b u to s c o n su b ín d ic es, c o m o en el á rb o l d e e n tr a d a . A m e n u d o se a p lic a n alg u n as
lim ita c io n e s a los v alo res d e lo s s u b ín d ic e s e n las p la n tilla s; estas lim ita c io n e s se es­
p ecifican c o m o p re d ic a d o s s e m á n tic o s q u e d e b e n c u m p lir s e a n te s d e q u e la p la n tilla
c o n c u c r d e . P o r e je m p lo , u n p re d ic a d o p u e d e e s p e c ific a r q u e el v a lo r d e u n a c o n s­
t a n t e p e rte n e c e a u n ra n g o d e te r m in a d o .
U n e s q u e m a d e tr a d u c c ió n d e á rb o le s es u n a fo rm a a d e c u a d a p a r a re p re s e n ta r
la fase d e selección d e in s tru c c io n e s d e u n g e n e r a d o r d e c ó d ig o . C o m o e je m p lo d e
regla d e re e s tru c tu ra d e árb o le s, c o n sid é re se la regla p a r a la in s tru c c ió n d e s u m a de
re g istro a registro:

reg/ reg,

E sta regla se u tiliza d e la sig u ie n te m a n e r a . Si el á rb o l d e e n t r a d a c o n tie n e u n s u b ­


á rb o l q u e c o in c id a c o n e s ta p la n tilla d e á rb o l, e s d e c ir, u n s u b á r b o l c u y a ra íz esté
e tiq u e ta d a c o n el o p e r a d o r + y c u y o s h ijo s iz q u ie r d o y d e r e c h o s e a n c a n tid a d e s en
los reg istro s i y y, e n to n c e s se p u e d e s u s titu ir ese s u b á rb o l p ó r u n so lo n o d o e tiq u e ­
t a d o c o n reg, y e m iti r la in s tru c c ió n a d d R/, Ri c o m o salida. Es p o sib le q u e m á s d e
u n a p la n tilla c o n c u e r d c c o n u n s u b á rb o l e n u n m o m e n t o d a d o ; p r o n t o se d e s c rib i­
rá n alg u n o s m e c a n is m o s p a ra decid ir la regla a a p lic a r en c aso s d e co n flicto . Se a s u m e
q u e la asig n ac ió n d e los reg istro s se realiza a n te s d e la selección d e código.

E je m p lo 9 .1 6 . L a figura 9.31 c o n tie n e reglas d e re e s c ritu ra d e á rb o le s p a r a a lg u n a s


in s tr u c c io n e s d e l m o d e lo d e m á q u i n a o b je to d e este c a p ítu lo . E sta s reglas se utili-
9 .1 2 GENERADORES DE GENERADORES DI C O D IG O 591

/aran com o ejem plo a lo largo de esta sección. Las prim eras dos reglas corresponden
a instrucciones de carga, las dos siguientes a instrucciones de alm acenam iento, y el
resto a cargas y sum as indizadas. O bsérvese que la regla (8 ) exige que el va lo r de
la constante sea uno . Esta c o n d ició n se esp ecificaría m ediante un predicado se­
m ántico. □
U n esquem a de traducción de árboles funciona de la siguiente m anera. D ado un
árbol de entrada, las plantillas de las reglas de reescritura de árboles se aplican a sus
subárboles. Si una p la n tilla concuerda, el subárbol concordante del árbol de entrada
se sustituye por el nodo de sustitución de la regla y se realiza la acción asociada con
la regla. Si la acción contiene una secuencia de instrucciones de m áquina, se em iten
las instrucciones. Este proceso se repite hasta que el árbol se reduce a un solo nodo,
o hasta que no concuerden más plan tillas. L a secuencia de instrucciones generada
cuando se reduce el árbol de entrada a un solo nodo constituye la salida del esquema
de traducción de árboles en el árbol de entrada dado.
E l proceso de especificar un generador de código es sim ila r al de u tilizar un es­
quem a de traducción dirigida por la sin taxis para especificar un traductor. Se escribe
un esquema de traducción de árboles para d escribir el conjunto de instrucciones de
una m áquina objeto. E n la práctica, es m ejor encontrar un esquem a que posibilite
la generación de una secuencia de instrucciones de costo m ín im o para cada árbol de
entrada. H ay varias herram ientas disponibles para ayudar a co n stru ir un generador
de código autom áticam ente a p artir de un esquem a de traducción de árboles.

Ejemplo 9 .17. Se usará el esquema de traducción de árboles de la figura 9.31 para ge­
nerar código para el árbol de entrada de la figura 9.30. Supóngase que la prim era regla

(1) reg0 *- const* { MOV # a , R 0 }

se aplica para cargar la constante a en el registro RO. L a etiqueta de la hoja de la


izquierda cam bia entonces de c o n s t a a r e g 0 y se genera la in stru cció n MOV # a , RO.
L a séptim a regla

(7) reg0 / + \ ^ A °D S P 'R0 ^


reg0 regSP
concuerda ahora con el subárbol de la izq u ierd a con raíz etiquetada co n +. U t ili­
zando esta regla, se reescribe este subárbol com o un solo nodo etiquetado con r e g 0
y se genera la in stru cció n a d d S P , RO. A hora el árbol es:

ind

memD consta

reg0 ind
I

const* regs,
592 G EN ER A C IO N DE CO DIG O

(1) reg, - constc { M O V #c,R/ }

(2) reg, - mem. { M O V a,R/ }

(3) mem — •
• { M O V R /, a }

y \
mem, reg,

(4) mem •
• { M O V Rj , *R/ }

/ \
ind reg,

reg,

(5) reg, ind { M O V c(R;),R/ }

1
+

/ \
constc reg,

(6) reg/ •- + { ADD C( Rj ) , R¡ }


/ \
reg, ind

1
+

/ \
constc r e 9/

(7) reg, — + { ADD Rj , R / }


/ \
reg, reg,

(8) r e g, + { I N C R/ }
/ \
reg, const,

Fig. 9 3 1 . Reglas de reescritura de árboles para algunas instrucciones


d e la m á q u in a objeto.
9 .1 2 GENERADORES DE GENERADORES DE C O D IG O 593

I n e s t e p u n t o , s e p o d r í a a p l i c a r la r e g la (5 ) p a r a r e d u c i r el s u b á r b o l

’ d

/ \
c o n s ti r e g SP

.i u n s o l o n o d o e t i q u e t a d o c o n r e g x. S in e m b a r g o , t a m b i é n se p u e d e u t i l i z a r l a r e g la
(6 ) p a r a r e d u c i r el s u b á r b o l m a y o r

reg 0 in d

c o n sti r e 9sp

¿i u n s o l o n o d o e t i q u e t a d o c o n r e g 0 y g e n e r a r la i n s t r u c c i ó n a d d i ( S P ) , R 0 . S u ­
p o n ie n d o q u e se a m á s e fic ie n te u tiliz a r u n a so la in s tr u c c ió n p a r a c a lc u la r el su b á r-
h o l m á s g r a n d e e n l u g a r d e l m á s p e q u e ñ o , s e e lig e la ú l t i m a r e d u c c i ó n p a r a o b t e n e r

E n el s u b á r b o l d e r e c h o , la r e g la ( 2 ) s e a p l i c a a la h o j a memB. E s t a r e g la g e n e r a u n a
I n s t r u c c i ó n p a r a c a r g a r b e n el r e g i s t r o 1, p o r e j e m p l o . A h o r a , la r e g l a ( 8 ) p u e d e c o n ­
c o r d a r c o n el s u b á r b o l

reg i c o n s t,

y g e n e r a r la i n s t r u c c i ó n d e i n c r e m e n t o IN C R l . E n e s t e p u n t o , el á r b o l d e e n t r a d a
se h a r e d u c i d o a

reg 0

E s te á r b o l r e s t a n t e c o n c u e r d a c o n la r e g la ( 4 ) , q u e r e d u c e e l á r b o l a u n s o l o n o d o y
g e n e r a la i n s t r u c c i ó n MOV R l , * r o .
E n el p r o c e s o d e r e d u c c i ó n d e l á r b o l a u n s o l o n o d o , se g e n e r a la s i g u i e n t e s e ­
c u e n c i a d e c ó d ig o :
594 G E N E R A C IO N DE C O D IG O

MOV #a,R0
ADD SP,RO
ADD i(SP),R0
MOV b ,Rl
INC Rl
MOV R l ,*R0 D

A lgunos aspectos de este proceso de reducción necesitan una m ayor explicación.


N o se ha especificado cóm o se realiza la concordancia de patrones de los árboles.
Tam poco se ha especificado el orden en el que se concuerdan las p lan tillas o qué
hacer si concuerda m ás de una p la n tilla en un m om ento dado. A sim ism o, obsérvese
que si ninguna p la n tilla concuerda, entonces el proceso de generación de código se
bloquea. E n el otro extrem o, puede que un solo nodo se reescriba indefinidam ente,
generando una secuencia in fin ita de instrucciones de m ovim iento de registros o una
secuencia in fin ita de cargas y alm acenam ientos.
U na form a de realizar eficam ente la concordancia de patrones es am pliando el
algoritm o de concordancia de patrones de m últiples palabras clave del ejercicio 3.32
a un algoritm o de concordancia de patrones en árboles en form a descendente. Cada
p la n tilla se puede representar m ediante un co n ju n to de cadenas, es decir, el co n ­
ju n to de cam inos desde la raíz hasta las hojas. C o n estas series de cadenas, se puede
c o n stru ir un co m p ro b a d o r de co n co rd a n cia s de patrones en árb o les co m o en el
ejercicio 3.32.
Los problem as de ordenam iento y de concordancia m últip le se pueden resolver
utilizando la co n cord an cia de patrones ju n to con el algoritm o de program ación d i­
nám ica de la sección anterior. U n esquem a de traducción de árboles se puede au­
m entar con in fo rm ació n de costos, asociando a cada regla de reescritura de árboles
el costo de la secuencia de instrucciones de m áquina generada si se ap lica dich a re­
gla.
E n la práctica, se puede a p lica r el proceso de reescritura de árboles ejecutando el
com probador de concordancia de patrones durante un reco rrid o en profundidad del
árbol de entrada y realizando las reducciones cuando los nodos sean visitados por
últim a vez. Si se ejecuta el algoritm o de program ación d in á m ica concurrentem ente,
se puede seleccionar una secuencia óptim a de concordancia utilizan d o la in fo rm a­
ción de costos asociada a cada regla. Puede que haya que retrasar la decisión relativa
a una concordancia hasta conocer el costo de todas las alternativas. C o n este enfo­
que, se puede co n stru ir rápidam ente un generador de código pequeño y eficiente a
partir de un esquem a de reescritura de árboles. Adem ás, con el algoritm o de progra­
m ación dinám ica, el diseñador del generador de código no tiene que resolver pro­
blem as de concordancias o d e cid ir un orden para la evaluación.

Concordancia de patrones m ediante a n á lisis sintáctico

O tro enfoque consiste en u tiliza r un an alizad o r sintáctico L R para realizar la co n ­


cordancia de patrones. E l árbol de entrada se puede considerar com o una cadena
utilizando su representación prefija. Por ejem plo, la representación prefija del árbol
de la figura 9 .30 es

:= ind + + consta regSP ind + consta regsp + memb const*


9.12 G E N E R A D O R E S D E G E N E R A D O R E S DI C O D IG O 5<>5

E l esquem a de traducción de árboles se puede co n vertir en un esquem a de Ira


ducción d irig id a p o r la sin taxis sustituyendo las reglas de reescritura de árboles poi
las producciones de una gram ática independiente del contexto en la que los lados
derechos sean representaciones prefijas de las p lan tillas de instrucciones.

E l esquem a de traducción d irig id o p o r la sin taxis de la figura 9.32 se


E je m p lo 9 .1 8 .
basa en el esquem a de traducción de árboles de la figura 9 .31. 11

A p artir de las producciones del esquem a de traducción se construye u n an ali­


zador sintáctico L R utilizan d o una de las técnicas de construcción de analizadores
sintácticos L R del capítulo 4. E l código objeto se genera em itiendo la instrucción de
m áquina correspondiente a cada reducción.
U n a gram ática para la generación de código es generalm ente m uy am bigua y se
debe tener cuidado de cóm o se resuelven los conflictos en las acciones del analiza­
d o r sintáctico cuando se construya el analizador. Si no hay in fo rm ació n sobre los
costos, com o regla general se prefieren reducciones grandes a pequeñas. Esto signi­
fica que en un conflicto de reducción-reducción, se favorece la reducción más grande;
en un conflicto de desplazam iento reducción, se elige el desplazam iento. Este enfo­
que hace que se realice un núm ero m ayor de operaciones co n un a sola instrucción
de m áquina.
Existen varios aspectos en el uso del an álisis sintáctico L R para la generación de
código. Prim ero, el m étodo de a n álisis sintáctico es eficiente y se com prende fá cil­
mente, de m odo que se pueden p ro d u cir generadores de código fiables y eficientes
utilizando los algoritm os descritos en el capítulo 4. Segundo, es relativam ente fácil
redestinar el generador de código obtenido; un selector de código para una m áquina
nueva se puede co n stru ir escribiendo una gram ática para d escrib ir las instrucciones
de la nueva m áquina. Tercero, la calidad del código generado se puede m ejorar aña­
diendo producciones de casos especiales para aprovechar las particularidades de la
m áquina.
Sin em bargo, tam bién hay algunas dificultades. C o n el m étodo de an álisis sin ­
táctico queda fijado un orden de evaluación de izquierd a a derecha. A sim ism o, para
algunas m áquinas con m uchos m odos de direccionam iento, la gram ática que des­
cribe la m áquina y el an alizad o r sintáctico resultante pueden resultar extraordina­
riam ente grandes. Por tanto, se necesitan técnicas especializadas para co d ific a r y

(1 ) reg , —> c o n s t c { MOV # C , R / }


(2) reg , —> mem* { MOV a , R / }
(3) mem —» : = mema r e g , { MOV R i , a }
(4) mem —> : = in d r e g t reg j { MOV R j , * R Í }
(5 ) reg, —» i n d + c o n s t c r e 9* { MOV C ( R j ) , RÍ }
(6 ) reg , —» + r e g , in d + c o n s tc reg , { A D D C ( R / ) , RÍ }
(7 ) reg , -> + r e g , reg y { ADD R j, *R Í }
(8) reg , -> + reg , c o n s t, { I N C Ri }

F ig . 9 .3 2 . E s q u e m a d e t r a d u c c i ó n d i r i g i d a p o r la s i n t a x i s c o n s t r u i d a
a partir de la figura 9.31.
596 G E N E R A C IO N DE C O D IG O

procesar las gram áticas para la d e scrip ció n de m áquin as. T am b ié n hay que asegu­
rarse de que el a n a liza d o r sin táctico resultante n o se bloquee (n o tenga m ás m o vi­
m ientos) m ientras se hace el a n á lisis sin táctico de un árb o l de expresiones, porque
la gram ática no haya considerado algunos patrones de operadores o porque el ana­
lizad o r sin táctico haya tom ado la reso lu ció n eq uivo cad a en algún co n flicto de accio ­
nes del a n á lisis sintáctico . T am b ién hay qu e asegurarse de que el an a liza d o r sintác­
tico no caiga en un lazo in fin ito de reducciones de producciones con sím bolos sim ples
en el lado derecho. E l problem a d el lazo se puede resolver u tiliza n d o una técn ica de
d iv isió n de estados en el m om ento en qu e se generen la s tablas del an a liza d o r sin ­
táctico (véase G la n v ille [1 9 7 7 ]).

R utin as para la com probación sem ántica

Las hojas del árb o l de entrada son atrib uto s de tipo con su b ín d ices, donde un su b ín ­
d ice asocia un v a lo r co n un atributo. E n un esquem a de trad u cció n para la genera­
ció n de código, aparecen lo s m ism os atributos, pero a m enudo co n lim itacio n e s en
cuanto a los valores qu e pueden tener los subíndices. P o r ejem plo, un a in stru cció n
de m áq u in a puede e x ig ir qu e el v a lo r de u n atrib u to pertenezca a un rango deter­
m inad o o qu e lo s valores de dos atrib uto s estén relacionados.
Estas lim ita cio n e s en cuanto a lo s valores de lo s atrib uto s se pueden especificar
co m o predicados que se in vo can antes de re a liza r un a red u cció n . D e hecho, el uso
general de las acciones sem ánticas y los predicados puede p ro p o rcio n a r una m ayor
fle xib ilid a d y fa cilid a d de descrip ció n que una especificació n puram ente gram atical
de un generador de código. Se pueden u tiliz a r p la n tilla s genéricas para representar
clases de in stru ccio n es y entonces las acciones sem ánticas se pueden u tiliz a r para
elegir in stru ccio n es para los casos específicos. Por ejem plo, dos form as de la in stru c­
ció n de sum a se pueden representar co n una p lan tilla :

reg, <— + { if c = 1 then


// \ INC Ri
regi constc else
ADD # C , R /' }

Lo s co n flicto s en acciones de a n á lisis sin táctico se pueden resolver m ediante pre­


dicados que e lim in a n am bigüedades y qu e adm iten va ria s estrategias de selección
que serán u tilizad as en diferentes contextos. U n a d escrip ció n m ás pequeña de una
m á q u in a o b jeto es p o sib le p o rq u e a lg u n o s aspectos de la a rq u ite c tu ra de la m á­
q u in a , com o los m odos de d ireccio n am ien to , se pueden fa cto riza r en los atributos.
L a co m p licació n de este enfoque es qu e puede resu ltar d ifíc il co m p ro b ar la validez
de la gram ática co n atrib uto s com o una d escrip ció n fidedigna de la m áq u in a objeto,
aunque este problem a es co m p artido en m ayo r o m enor grado p o r todos los gene­
radores de código.

E J E R C IC IO S

9.1 G enérese código para las siguientes p ro p o sicio n es en C para la m áq u in a ob­


je to de la sección 9.2 su p o n ien d o qu e todas las variab les son estáticas. Supón­
gase que h ay tres registros d isponibles.
F JlíR C K IO S S ‘)7

a) x = 1
b) x = y
c) x = x + 1
d) x = a + b*c
e) x = a /(b + c) - d * (e + f)

9.2 Repítase el ejercicio 9.1 sup o n ien d o que todas las variables son autom áticas
(asignadas en la pila).

9.3 Genérese código para las siguientes proposiciones en C para la m áquin a ob­
jeto de la sección 9.2 supo n ien d o que todas la s variab les son estáticas. S u­
póngase que hay tres registros d isponibles.
a) x = a [ i ] + 1
b) a [ i ] = b [ c [ i ] ]
C) a [ i ] [ j ] = b [ i ] [ k ] * c [ k ] [ j ]
d) a [ i ] = a [ i ] + b [ j ]
e) a [ i ] + = b [ j J

9.4 Hágase el e je rcicio 9.1 utilizan d o


a) el algoritm o de la sección 9.6
b) el procedim iento gencódigo
c) el algoritm o de program ación d in á m ica de la sección 9.11.

9.5 G enérese código para las siguientes p ro po sicio nes en C


a) x = f ( a ) + f ( a ) + f ( a )
b) x = f ( a ) / g ( b , c )
c) x = f ( f ( a ) )
d) x = + + f (a )
e) *p++ = *q++

9.6 Genérese código para el siguiente program a en C

m a in ( )
{
in t i ;
i n t a [ 10 ] ;
w h ile ( i <= 10 )
a [i] = 0 ;
}
9 .7 Supóngase que para el lazo de la figura 9.13 se elige asignar tres registros que
guarden a, b y c. G enérese código para los bloques de este lazo. Com párese
el costo de ese código co n el de la figura 9.14.

9.8 C onstrúyase el grafo de interferencia entre registros para el program a de la


figura 9.13.

9.9 Supóngase que para sim p lifica r se alm acenan autom áticam ente todos los re­
gistros en la p ila (o en la m em oria si no se u tiliz a una p ila ) antes de cada
llam ad a a un procedim iento y se restablecen después del regreso. ¿C ó m o in-
598 G E N E R A C IO N DE C O D IG O

fluye esto en la fó rm ula (9 .4) u tiliza d a para eva lu ar la u tilid ad de asignar un


registro a un a variab le dada en un lazo?

9 . 1 0 M odifiqúese la fu n ció n obtenreg de la sección 9.6 para que d evuelva parejas


de registros cuan d o sea necesario.

9 .11 Dése un ejem plo de un G D A para el que la h eurística de ordenam iento de


los nodos de un G D A dada en la figura 9.21 no p ro p o rcio ne el m ejor orde­
nam iento.

*9.12 G enérese código óptim o para la s siguientes proposiciones de asignación:


a) x : = a + b * c
b) x : = ( a * - b ) + ( c - ( d + e ) )
C) x := ( a / b - c)/d
d) x : = a + ( b + c / d * e ) / ( f * g - h * i )
e) a[i,j] := b[i,j] — c[a[k,1]] * d[i+j]

9 . 1 3 G enérese código para el siguiente program a en Pascal:

p ro g ra m a l a z o f o r ( i n p u t , o u t p u t ) ;
v a r i , i n i c i a l , f i n a l : in t e g e r ;
b e g in
re a d (in ic ia l, fin a l);
f o r i : = i n i c i a l t o f i n a l do
w rite ln (i )
end.

9 . 1 4 C onstrúyase el G D A para el siguiente bloque básico:


d := b * c
e := a + b
b := b * c
a := e - d

9 . 1 5 ¿C uáles son los órdenes de eva lu ació n y los nom bres legales para los valores
en los nodos para el G D A del e je rcicio 9.14
a) suponiendo que a, b y c están activos al fin al del bloque básico?
b) supo n ien d o que só lo a está activo al fin al?

9 . 1 6 En el e je rcicio 9.15(b), si se va a generar código para u n a m áq u in a con sólo


un registro, ¿qué orden de evalu ació n es m ejor? ¿P o r qué?

9 . 1 7 Se puede m o d ifica r el algoritm o de construcción de u n G D A para que tenga


en cuenta asignaciones a m atrices y a través de apuntadores. C u a n d o se hace
una asignación a un elem ento de una m atriz se supone que se crea u n nuevo
va lo r para dich a m atriz. Este nuevo v a lo r se representa m ediante un nodo
cuyos h ijo s son el va lo r a n te rio r de la m atriz, el v a lo r del ín d ice dentro de la
m atriz y el v a lo r asignado. C u a n d o ocurre una asignación p o r m edio de un
apuntador, se asum e que se ha creado un nuevo v a lo r para cada variab le a
la que pudo haber apuntado el apuntador; los h ijo s del nodo para cada nuevo
va lo r son el v a lo r del ap u n tad o r y el v a lo r an terio r de la variab le qu e pudo
I J !.I« ic io s 599

haber sid o asignada. U tiliza n d o estos supuestos, construyase el G D A para el


siguiente bloque básico:

a [i] := b
*p : = c
d := a [j ]
e : = *p
*P s = a [ i ]
Supóngase que a) p puede ap u n tar a cu a lq u ie r parte, b) p apunta sólo a b o
a d. N o o lvid e m ostrar las lim itacio n e s de orden im p lícitas.

9.18 Si se hace un a asignación a una expresión de apuntadores o de m atrices com o


a [ i ] o *p y después se u tiliz a sin que exista la p o sib ilid a d de que su v a lo r
haya cam biado en el ín terin, se puede reconocer y aprovechar la situación
para sim p lific a r el G D A . P o r ejem plo, en el código del ejercicio 9.17, com o
a p no se le hace n in g u n a asignación entre la segunda y la cuarta pro p o sicio ­
nes, la p ro po sició n e := * p se puede su stitu ir p o r e := c, ya que sea lo
que apunte p, tendrá el m ism o v a lo r qu e c, au n q ue no se sabe a qué apunta
p. Revísese el algoritm o de co n stru cció n de un G D A para aprovechar dichas
co n clusio nes. A p liq u e su algoritm o a l código del ejercicio 9.17.

**9.19 D iséñese u n algoritm o para generar código óptim o para una secuencia de
proposiciones de tres d ireccio n es de la form a a := b + c en la m áq u in a de
n registros del ejercicio 9.14. L a s proposiciones se deben ejecutar en el orden
dado. ¿C u á l es la co m p lejid ad tem poral de su algoritm o?

N O T A S B IB L IO G R A F IC A S

El lector interesado en la s investigaciones sobre generación de código debe co n su ltar


W aite [19 76 a,b ], A h o y Sethi [19 77], G rah am [1980 y 1984], G an ap ath i, F isch er y
H ennessy [1982], L u n e ll [1983] y H e n ry [1984], W u lf y colaboradores [1975] ana­
lizan la generación de código para B L IS S , A m m an n [19 7 7] para Pascal, y A uslan d er
y H o p k in s [1982] para P L.8.
Las estadísticas sobre el uso de los program as son ú tiles para el diseño de com ­
piladores. K n u th [1971b] re alizó un estudio em p írico de program as en F O R T R A N .
E lsh o ff [1976] p ro p o rcio n a algunas estadísticas sobre el uso de P L /I, y S him asaki y
colaboradores [1980] y C á rte r [1982] an alizan program as en Pascal. L u n d e [1977],
Shustek [1978] y D itzel y M cL e lla n [1982] an alizan el ren d im ien to de vario s com ­
piladores en d istin to s co n ju n to s de in stru ccio n es de com putadores.
G ra n parte de la h eurística para la generación de código propuesta en este capí­
tu lo ha sid o u tiliz a d a en v a rio s co m p ila d o re s. F re ib u rg h o u se [ 1 9 7 4 ] estu d ia las
cuentas de uso com o ayuda para generar buen código para los bloques básicos. Bc-
lad y [1966], en el contexto de in tercam b io de páginas, dem ostró que la estrategia
utilizad a en obtenreg de crear u n registro lib re expulsando de un registro la variable
cuyo va lo r quedará sin u tiliz a r p o r m ás tiem po es óptim a. L a estrategia de asignar
un núm ero fijo de registros para guardar variables dentro de la d uració n de un lazo
600 G E N F R A C IO N DE C O D IG O

fue m encionada p o r M a rill [1962] y L o w ry y M edlock [1969] la u tilizaro n en la im -


plantación de F O R T R A N H .
H orw itz y colaboradores [1966] proporcionan u n algoritm o para o ptim ar el uso
de registros de ín d ice en F O R T R A N . L a co lo ració n de grafos com o técnica para la
asignación de registros fue propuesta p o r J. Cocke, E rsh o v [19 71] y Schw artz [1973],
El tratam iento de la co lo ració n de grafos de la sección 9 .7 sigue el de C h a itin y co­
laboradores [1981] y C h a itin [1982], C h o w y H ennessy [1984] describen un algo­
ritm o de co lo ració n de grafos basado en prio rid ad es para la asignación de registros.
K ennedy [1972], Johnsson [1975], H a rriso n [1975], Beatty [1974] y Leverett [1982]
analizan otros enfoques para la asignación de registros.
Lo s alg o ritm o s de etiquetado para árb o les de la secció n 9.10 evocan u n algo­
ritm o para n o m b rar ríos: la co n flu en cia de un río m ayo r y un trib u tario m enor co n ­
tin ú a u tiliza n d o el nom bre del rio m ayor; la co n fluen cia de dos río s del m ism o ta­
m año recibe un nuevo nom bre. E l algo ritm o de etiquetado apareció originalm ente
en Ershov [1958]. A nderson [1964], N ievergelt [1965], N akata [1967], R ed ziejo w ski
[1969] y Beatty [1972] han propuesto algoritm os para la generación de código u ti­
lizand o este m étodo. Sethi y U llm a n [1970] u tiliza ro n el m étodo de etiquetado en
un algoritm o qu e ello s dem ostraron que generaba código óptim o para árboles de ex­
presiones en un a am p lia gam a de situaciones. E l p ro cedim ien to gencódigo de la sec­
ción 9.10 es una m o d ificació n del algoritm o de Sethi y U llm a n . obra de Stockhau-
sen [1 9 73 ], B ru n o y Lassagne [ 1 9 7 5 ] y C o lim a n y S eth i [19 8 3 ] p ro p o rcio n a n
algoritm os para la generación de código óp tim o para árb o les d e expresiones si la
m áquina objeto tiene registros que deben ser utilizad o s com o un a pila.
A h o y Jo h n so n [1976] d iseñ aro n e l alg o ritm o de program ación d in á m ica des­
crito en la sección 9.11. Se u tilizó este algoritm o com o base para el generador de
código del co m p ila d o r transportable de C de S. C . Jo h n so n , P C C 2 , y tam bién lo u ti­
lizó R ip k e n [19 7 7] en un co m p ilad o r para la m áq u in a IB M 370 . K n u th [19 7 7] ge­
n eralizó el alg o ritm o de p ro g ram ació n d in á m ica para m á q u in as co n clases de re­
gistros asim étrico s, com o la IB M 70 9 0 y la C D C 6600. A I d e sa rro lla r esta
generalización, K n u th consideró la generación de código co m o un problem a de aná­
lisis sintáctico para gram áticas independientes del contexto.
Flo yd [1961] propo rcio na un algo ritm o para m anejar subexpresiones com unes
en expresiones aritm éticas. La p artició n de los G D A en árboles y el uso de un pro­
ced im iento co m o g en có d ig o en lo s árb o les independientem ente es o bra de W aite
[1976a], Sethi [19 75 ] y B ru n o y Sethi [1976] dem ostraron que el problem a de ge­
neración de código para G D A es N P com pleto. A h o , Jo h n so n y U llm a n [1977a] de­
m uestran que el problem a co n tin úa siendo N P com pleto in clu so co n m áquinas de
un solo registro o de in fin ito s registros. A h o , H o p cro ft y U llm a n [1974] y G arey y
Johnson [ 1979] an alizan la im p o rtan cia de lo qu e significa que un problem a sea N P
com pleto.
Las transform aciones sobre bloques básicos han sido estudiadas p o r A h o y U ll­
m an [1972a] y p o r D ow ney y Sethi [1978], M cK eem an [1965], Fraser [1979] D a ­
vidson y Fraser [1980 y 1984a,b], Lam b [1981] y G ieg erich [1983] estudian la op-
tim acion m ediante m irilla. Tanenbaum , van Staveren y Stevenson [ 1982] propugnan
el uso de la o p tim ació n m ediante m irilla tam bién en el código interm edio.
W asilew [1971], W ein garl [1973], Jo h n so n [1978] y C atte ll [1980] tratan la ge-
NOTAS lili IO ( ¡K A l K A S (.(II

iteración de código com o un proceso de reescritura de árboles. E l ejem plo de recs-


c rilu ra de árboles de la sección 9.12 proviene de H e n ry [1984], A h o y G an ap ath i
11985] propusieron la co m b in ació n de un a co n cord an cia eficiente de patrones de
árboles con la program ación d in ám ica que se m enciona en la m ism a sección. I jian g
11986] im p lan tó u n lenguaje para la generación de código llam ad o Tw ig, basado en
los esquem as de trad ucció n de la sección 9.12. K ro n [19 75], H u et y Levy [1979] y
I lo lim a n y O ’ D o n n e ll [1982] describen algoritm os generales para la concordancia
de patrones de árboles.
E l enfoque de G rah am y G la n v ille para la generación de código m ediante el uso
de un an a liza d o r sintáctico L R para la selección de in stru ccio n es se describe y eva­
lúa en G la n v ille [19 77], G la n v ille y G rah am [1978], G rah am [1980 y 1984], H enry
11984] y A ig rain y colaboradores [1984], G a n ap ath i [1980] y G an ap ath i y Fischer
11982] han u tilizad o gram áticas co n atributos para especificar e im p lan tar genera-
dores de código.
O tras técnicas para autom atizar la construcción de generadores de código han
sido propuestas p o r F raser [19 77], C atte ll [1980] y Leverett y colaboradores [1980].
La tran sp o rtab ilid a d de co m p ilad o re s tam bién es a n a liza d a p o r R ich a rd s [ 19 71 y
1977]. Szym anski [1978] y Leverett y S zym anski [1980] describen técnicas para en­
cadenar instrucciones de salto dependientes de la extensión. Y an n aka kis [1985] tiene
un algoritm o de tiem po p o lin o m ial para el ejercicio 9.19.
I ( , l l II

C A P I T U L O 10

Optimación
de código

Idealmente, los com piladores deberían p ro d u cir código objeto que fuera tan bueno
com o para ser escrito a mano. La realidad es que este objetivo sólo se alcan /a en
pocos casos y difícilm ente. Sin embargo, a m enudo se puede lograr que el código
directam ente pro ducid o p o r los algoritm os de co m p ilació n se ejecute m ás rápida
mente o que ocupe m enos espacio, o am bas cosas. Esta m ejora se consigue me
diante transform aciones de program as que tradicionalm ente se denom inan óptim a
d o n e s, aunque el térm ino “ o p tim ació n" no es adecuado porque rara vez existe la
garantía de que el código resultante sea el m ejor posible. Lo s com piladores que apli
can transform aciones para m ejorar el código se denom inan com piladores óptim a
dores.
En este capitulo se consideran principales las optim aciones independientes de la
m áquina, que son transform aciones de program as que m ejoran el código objeto sin
tener en cuenta las propiedades de la m áquina objeto. Las optim aciones dependion
tes de la m áquina, com o la asignación de registros y la u tilizació n de secuencias tic
instrucciones de m áquina especiales (“ expresiones idiom áticas" o “ m odism os de la
m áquina) se estudiaron en el cap ítulo 9.
Se obtiene el m ayor beneficio con el m ín im o esfuerzo si se pueden identificar las
partes de un program a ejecutadas frecuentem ente y después conseguir que esas put
les sean lo más eficientes posible. Se dice que la m ayoría de los program as em pica
el noventa p o r ciento de su tiem po de ejecución en el diez p o r ciento del código.
A unque los porcentajes reales pueden va ria r, ocurre a m enudo que una pequeña
fracción de un program a contabilice la m ayor parte del tiem po de ejecución. Pcrfilai
el tiem po de ejecución de un program a con datos de entrada representativos idea
tifica con exactitud las regiones de un program a por las que se ha pasado m uchas
veces. D esgraciadam ente, un co m p ila d o r no tiene la ventaja de co n tar con una
muestra de datos de entrada, así que debe acertar dónde se encuentran las partes
críticas del program a.
E n la práctica, los lazos internos del program a son buenos candidatos para rea
liza r mejoras. E n un lenguaje que resalta las construcciones de control com o las pro
posiciones w hile y for, los lazos pueden ser evidentes según la sin taxis del program a,
en general, un proceso, llam ado a n á lisis del flu jo del co n tro l, id en tifica los la/os
dentro del grafo de flu jo de un program a.
604 O PTIM A CIO N DE CO DIG O

E ste c a p ítu lo es u n a c o r n u c o p ia d e tr a n s f o r m a c io n e s d e o p tim a c ió n ú tile s y d e


té c n ic a s p a r a im p la n ta rla s . L a m e jo r té c n ic a p a r a d e c id ir las tr a n s f o r m a c io n e s q u e
v alen la p e n a p o n e r e n u n c o m p ila d o r co n siste en r e u n ir e stad ística s s o b re los p ro ­
g r a m a s fu e n te y e v a lu a r la v e n ta ja d e u n c o n j u n t o d a d o d e o p tim a c io n e s s o b re u n a
m u e s tr a re p re s e n ta tiv a d e p r o g r a m a s f u e n te reales. El c a p ítu lo 12 d e sc rib e tra n s fo r­
m a c io n e s q u e h a n d e m o s t r a d o s e r ú tiles e n la o p tim a c ió n d e c o m p ila d o r e s p a r a va­
rio s lenguajes.
U n o d e los te m a s d e este c a p itu lo e s el a n á lis is d e l flu jo d e d a to s , u n p ro ceso
p a r a re c o p ila r in f o r m a c ió n s o b re el m o d o e n q u e se u tiliz an las v aria b les e n u n p ro ­
g ra m a . L a in f o r m a c ió n r e c o p ila d a e n v a rio s p u n to s d e u n p r o g r a m a se p u e d e rela­
c i o n a r u tiliz a n d o sen cillas e c u a c io n e s d e c o n ju n to s . Se p r e s e n ta n v a rio s a lg o ritm o s
p a r a re c o p ila r la in f o r m a c ió n u tiliz a n d o a n á lis is del flu jo d e d a to s p a r a u tiliz a r de
m a n e r a e fe c tiv a esta in f o r m a c ió n e n la o p ti m a c i ó n . T a m b i é n se c o n s id e r a el i m ­
p a c to d e c o n s tru c c io n e s d e l le n g u a je c o m o los p r o c e d im ie n to s y los a p u n t a d o r e s en
la o p tim a c ió n .
L as ú ltim a s c u a t r o se c c io n e s d e este c a p ítu lo se o c u p a n d e m a te ria l m á s a v a n ­
z a d o . A b a r c a n a lg u n a s id e as d e te o ría d e g rafo s re le v a n te s p a r a el a n álisis d e flujo
d e c o n tr o l y se a p lic a n estas id e as a l a n á lis is d e flujo d e d a to s . El c a p itu lo c o n c lu y e
c o n u n e s tu d io s o b re h e r r a m ie n ta s d e p r o p ó s ito g en eral p a ra el a n á lis is del flujo de
d a to s y té c n ic a s p a r a d e p u r a r c ó d ig o o p tim a d o . L a p a r te m á s i m p o r ta n te del c a p i­
tu l o se c o n c e n t r a e n las té c n ic a s d e o p tim a c ió n a p lic a d a s a los le n g u a je s e n general.
En el capitulo 12 se revisan algunos compiladores que utilizan estas ideas.

10.1 I N T R O D U C C I O N

P a r a c re a r u n p r o g r a m a e n le n g u a je o b je to efic ien te , u n p r o g r a m a d o r n e c e sita m á s


q u e u n c o m p ila d o r o p tim a d o r . E n esta se c c ió n se rev isan las o p c io n e s d e q u e d is ­
p o n e el p r o g r a m a d o r y el c o m p i l a d o r p a r a c r e a r p r o g r a m a s o b j e t o e fic ie n te s . Se
m e n c io n a n los tip o s d e tr a n s f o r m a c io n e s p a r a m e jo r a r el c ó d ig o q u e s u p o n e q u e el
p r o g r a m a d o r y q u ie n escrib e u n c o m p ila d o r u tiliz a rá n p a r a m e jo r a r el r e n d im ie n to
d e u n p ro g ra m a . T a m b ié n se c o n s id e r a la re p re s e n ta c ió n d e p r o g r a m a s s o b re los q u e
se a p lic a rá n las tra n s fo rm a c io n e s .

C r it e r io s p a ra la s tr a n s fo r m a c io n e s p a ra m ejo ra r e l c ó d ig o

D ic h o d e u n a m a n e r a sen cilla, las m e jo re s tr a n s f o r m a c io n e s d e p r o g r a m a s s o n las


q u e p r o d u c e n el m a y o r b e n e fic io c o n el m e n o r esfu erzo . L as tr a n s f o r m a c io n e s re a ­
liz a d a s p o r u n c o m p ila d o r o p t i m a d o r d e b e n t e n e r v arias p ro p ie d a d e s.
P r im e ro , u n a tr a n s f o r m a c ió n d e b e p r e s e r v a r el sig n ificad o d e los p ro g r a m a s . Es
d ecir, u n a “ o p ti m a c i ó n " n o d e b e c a m b ia r el r e s u lta d o p r o d u c id o p o r u n p ro g ra m a
p a r a u n a e n t r a d a d a d a , o c a u s a r u n e rro r, c o m o u n a d iv is ió n p o r cero , q u e n o es­
tu v ie ra p re s e n te e n la v e rs ió n orig inal d e l p r o g r a m a fu en te . L a in flu e n c ia d e este c ri­
te rio im p r e g n a este c a p ítu lo . E n to d o m o m e n t o se t o m a el e n f o q u e “s e g u ro ” d e d e ­
s a p r o v e c h a r la o p o r tu n i d a d d e a p lic a r u n a tr a n s f o r m a c ió n e n lu g a r d e arriesg arse a
c a m b i a r lo q u e h a c e el p ro g ra m a .
1 0 .1 IN T R O D U C IO N 605

Segundo, una transform ación debe, com o prom edio, acelerar los program as en
una cantidad m ensurable. E n ocasiones interesa red ucir el espacio que ocupa el có­
digo com pilado, aunque el tam año del código tiene m enos im portancia que la que
icnía antes. Por supuesto, no toda transform ación consigue m ejorar todo program a
v. ocasionalm ente, un a “ o p tim a ció n " puede ralen tizar ligeram ente un program a,
mientras en general m ejore las cosas.
Tercero, una transform ación debe valer la pena. N o tiene sentido que el escritor
«le un co m p ilad o r haga el esfuerzo intelectual de a p lica r una transform ación que
mejore el código y que el com pilador gaste el tiem po adicional com pilando progra­
mas fuente si este esfuerzo no es recom pensado cuando se ejecutan los program as
objeto. A lgunas transform aciones locales o “ de m irilla " del tipo estudiado en la sec­
ción 9.9 son lo bastante sencillas y ventajosas com o para ser in clu id a s en un com ­
pilador.
A lgunas transform aciones sólo se pueden a p lica r después de un a n á lisis deta­
llado y que lleva su tiem po del program a fuente, de m odo que tiene poco sentido
aplicarlas a program as que sólo se ejecutarán pocas veces. Por ejem plo, es probable
que un com pilador no optim ador rápido sea más útil durante la depuración o para
“ irabajos de estudiantes" que se ejecutarán co n éxito pocas veces y luego se desecha­
rán. Sólo cuando el program a en cuestión tom a una fracción significativa de los ci­
clos de la m áquina, la calidad m ejorada del código ju stifica el tiem po em pleado en
ejecutar un com pilador optim ador sobre el programa.

O b te n c ió n d e un m a y o r re n d im ie n to

(ieneralm ente se obtienen m ejoras espectaculares en el tiem po de ejecución de un


programa — com o red ucir el tiem po de ejecución de unas horas a unos segundos—
m ejorando el program a a todos los niveles, desde el n ivel fuente hasta el nivel ob­
jeto, com o se sugiere en la figura 10.1. E n cada nivel, las opciones disponibles están
entre los dos extrem os de encontrar un algoritm o m ejor y de im p lan tar un algo­
ritmo dado, así que se realizan menos operaciones.

código etapa código generador código


fuente inicial ^ in term ed io m d e código ^ objeto
i i i

e l u su a r io p u e d e e l c o m p ila d o r p u e d e e l c o m p ila d o r p u ed e

perfilar el program a m e jo rar los lazos u sa r registros


m odificar algoritm os llam ar a procedim ientos seleccionar instrucciones
tran sfo rm ar lazos calcular direcciones hacer transform aciones locales

Fig. 10.1. Lugares en que el usuario y el com pilador pueden hacer mejoras potenciales.

Las transform aciones de los algoritm os producen ocasionalm ente m ejoras espec­
taculares en el tiem po de ejecución. Por ejem plo, Bentley [1982] dice que el tiem po
de ejecución de un program a para clasificar N elem entos se redujo de 2.02N m i­
crosegundos a 12M og2A m icrosegundos cuando una “ clasificación p o r in serció n " se
606 O PTIM A CIO N D E CO DIGO

s u s titu y ó p o r u n a “c lasificació n p o r p a r tic io n e s " ( quicksort ) '. P a r a N = 100, la sus­


titu c ió n a c e le ra el p r o g r a m a e n u n f a c to r d e 2.5. P a r a N - 100 0 0 0 , la m e jo r a es
m u c h o m a y o r: la s u s titu c ió n a c e le ra el p r o g r a m a e n u n fa c to r d e m á s d e m il.
L a m e n ta b le m e n te , n in g ú n c o m p ila d o r p u e d e e n c o n t r a r el m e jo r a lg o r itm o p a ra
u n p r o b le m a d a d o . S in e m b a r g o , a veces u n c o m p ila d o r p u e d e s u s titu ir u n a s e c u e n ­
c ia d e o p e r a c io n e s p o r u n a s e c u e n c ia a lg e b r a ic a m e n te e q u iv a le n te , y c o n ello r e d u ­
c i r sig n ific a tiv a m e n te el ti e m p o d e e je c u c ió n d e u n p ro g ra m a . D ic h o s a h o r r o s s o n
m á s h a b itu a le s c u a n d o se a p lic a n tr a n s f o r m a c io n e s alg eb raicas a los p r o g r a m a s e n
le n g u a je s d e m u y a lto nivel; p o r e je m p lo , le n g u a je s d e c o n s u lta p a r a bases d e d a to s
(v éase U llm a n [1982]).
E n esta se c c ió n y e n la sig u ie n te , se u tiliz a rá u n p r o g r a m a d e c la s ific a c ió n lla­
m a d o clasificació n p o r p a rtic io n e s p a r a ilu s tr a r el efecto d e v a ria s tr a n s f o r m a c io n e s
p a ra m e jo r a r el cód igo . El p ro g ra m a e n C d e la figura 10.2 v ie n e d e Sedgew ick [1978],
d o n d e se a n a liz a la o p tim a c ió n a m a n o d e d ic h o p ro g ra m a . A q u í n o se a n a liz a rá n
lo s a s p e c to s a lg o rítm ic o s d e este p r o g r a m a — d e h e c h o , a [ 0 ] d e b e c o n te n e r el m e ­
n o r y a [m a x ] el m a y o r e le m e n to p o r clasificarse p a r a q u e el p r o g r a m a f u n c io n e — .

void clasificación_por_particiones(m,n)
i n t m,n;

{
i n t i,j;
int v,j;
if ( n <= ) re t u r n ;
/* el fragm ento com ienza aqu í* /
i = m-1; j = n; v = a[n];
while(l)
do i = 1+1; w h i l e ( a[i] <v );
do j = j-1; w h i l e ( a[j] >v );
if ( i > - j ) break;
x = a [ i ] ; a [i ] = a [ j ] ; a [j ] = x;

)
x = a [i 1; a [i ] = a [n ]; a[n] = x;
/* e! fragm ento termina a q u í* /
c l a s i f i c a c i ó n _ p o r _ p a r t i c i o n e s ( m , j );
c l a s i f i c a c i ó n _ p o r _ p a r t i c i o n e s (i + 1 ,n );
}

Fig. 10.2. Código en C para clasificación_por_particiones.

P u e d e q u e sea p o s ib le rea liz a r a lg u n a s tr a n s f o r m a c io n e s d e m e jo ra del c ó d ig o a


nivel del p r o g r a m a fu e n te . P o r e je m p lo , e n u n le n g u a je c o m o P ascal o F O R T R A N ,
u n p r o g r a m a d o r só lo p u e d e h a c e r re fe re n c ia a e le m e n to s d e u n a m a tr iz d e la m a ­
n e r a h a b itu a l: p o r e je m p lo , c o m o b ( i , j ] . E n el nivel d e l le n g u a je in te r m e d io , sin

1 Véase Aho. Hopcroft y Ullman [1983] para un estudio de estos algoritmos de clasificación y de
sus velocidades.
1 0 .1 IN I RO DU C IO N 007

e m b a rg o , p u e d e n a p a r e c e r n u e v a s o p o r tu n id a d e s p a r a m e jo r a r el c ó d ig o . El c ó d ig o
ilc t r e s d i r e c c i o n e s , p o r e j e m p l o , p r o p o r c i o n a m u c h a s o p o r t u n i d a d e s p a r a m e j o r a r
los c á l c u l o s d e la s d i r e c c i o n e s , e s p e c i a l m e n t e e n l a z o s . C o n s i d é r e s e e l c ó d i g o d e tr e s
d i r e c c i o n e s p a r a d e t e r m i n a r e l v a l o r d e a [ i ] , s u p o n i e n d o q u e c a d a e l e m e n t o d e la
m a t r i z o c u p a c u a t r o b y te s :

t, := 4 * i; t 2 := a [t,]

U n có d ig o in te r m e d io in g e n u o re c a lc u la rá 4 * i c a d a vez q u e a [ i ] a p a re z c a e n el
p r o g r a m a f u e n t e , y el p r o g r a m a d o r n o c o n t r o l a lo s c á l c u l o s r e d u n d a n t e s d e la s d i ­
l e c c i o n e s p o r q u e e s t á n i m p l í c i t a s e n la i m p l a n t a c i ó n d e l l e n g u a j e , e n l u g a r d e s e r
e x p l í c i t a s e n e l c ó d i g o e s c r i t o p o r e l u s u a r i o . E n e s t a s s i t u a c i o n e s , c o r r e s p o n d e al
c o m p i l a d o r d e p u r a r l a s . S in e m b a r g o , e n u n l e n g u a j e c o m o C , e s t a t r a n s f o r m a c i ó n
p u e d e s e r r e a l i z a d a a l n i v e l f u e n t e p o r e l p r o g r a m a d o r , y a q u e la s r e f e r e n c i a s a lo s
e le m e n to s d e u n a m a triz se p u e d e n re e s c rib ir s is te m á tic a m e n te u tiliz a n d o a p u n t a ­
d o r e s p a r a h a c e r l a s m á s e f i c i e n t e s . E s t a r e e s c r i t u r a e s s i m i l a r a la s t r a n s t o r m a c i o n e s
q u e t r a d i c i o n a l m e n t e a p l i c a n lo s c o m p i l a d o r e s o p t i m a d o r e s d e F O R T R A N .
E n e l n i v e l d e la m á q u i n a o b j e t o , c o r r e s p o n d e a l c o m p i l a d o r u t i l i z a r a d e c u a d a ­
m e n t e lo s r e c u r s o s d e la m á q u i n a . P o r e j e m p l o , c o n s e r v a r la s v a r i a b l e s m á s u t i l i z a ­
d a s d e n t r o d e r e g i s t r o s p u e d e r e d u c i r s i g n i f i c a t i v a m e n t e el t i e m p o i n c l u s o a la m i ­
ta d . D e n u e v o , C p e r m ite a u n p r o g r a m a d o r a c o n s e ja r a l c o m p i l a d o r q u e c o n s e rv e
a l g u n a s v a r i a b l e s e n r e g i s t r o s , p e r o la m a y o r í a d e l o s l e n g u a j e s n o lo p e r m i t e . D e
m a n e r a s i m i l a r , el c o m p i l a d o r p u e d e a c e l e r a r lo s p r o g r a m a s d e f o r m a s i g n i f i c a t i v a
e lig ie n d o in s tr u c c io n e s q u e a p r o v e c h a n lo s m o d o s d e d ir e c c io n a m ie n to d e la m á ­
q u i n a p a r a h a c e r e n u n a i n s t r u c c i ó n l o q u e i n g e n u a m e n t e se s u p o n d r í a q u e n e c e s i ­
ta ra n d o s o tre s, c o m o se e s tu d ió e n el c a p ítu lo 9.
A u n q u e e s p o s i b l e q u e e l p r o g r a m a d o r m e j o r e el c ó d i g o , p u e d e s e r m á s c o n v e ­
n i e n t e q u e el c o m p i l a d o r r e a l i c e a l g u n a s d e la s m e j o r a s . S i s e p u e d e c o n f i a r e n q u e
el c o m p ila d o r g e n e re c ó d ig o e fic ie n te , e n to n c e s el u s u a r io p u e d e c o n c e n tr a r s e e n es­
c r ib ir c ó d ig o c la ro .

U na organización p ara un co m p ila d o r o p tim a d o r

- ( o r n o y a s e h a m e n c i o n a d o , e x i s t e n v a r i o s n i v e l e s e n lo s q u e s e p u e d e m e j o r a r u n
p r o g r a m a . C o m o la s t é c n i c a s n e c e s a r i a s p a r a a n a l i z a r y t r a n s f o r m a r u n p r o g r a m a
n o c a m b ia n s ig n ific a tiv a m e n te c o n el n iv e l, e s te c a p ítu lo se c o n c e n t r a e n la s tr a n s ­
f o r m a c i o n e s d e c ó d i g o i n t e r m e d i o u t i l i z a n d o la o r g a n i z a c i ó n q u e s e m u e s t r a e n la
f ig u r a 1 0 .3 . L a fa s e d e m e j o r a d e l c ó d i g o c o n s t a d e l a n á l i s i s d e f l u j o d e c o n t r o l y el
a n á l i s i s d e f l u j o d e d a t o s s e g u i d o s d e la a p l i c a c i ó n d e t r a n s f o r m a c i o n e s . E l g e n e r a ­
d o r d e c ó d i g o , q u e s e e s t u d i a e n e l c a p í t u l o 9 , p r o d u c e el p r o g r a m a o b j e t o a p a r t i r
d e l có d ig o in te r m e d io tr a n s f o r m a d o .
P a ra u n a m e jo r p r e s e n ta c ió n , se s u p o n e q u e el c ó d ig o in te r m e d io c o n s ta d e
p r o p o s i c i o n e s d e t r e s d i r e c c i o n e s . E l c ó d i g o i n t e r m e d i o , d e l t i p o p r o d u c i d o p o r la s
t é c n i c a s d e l c a p í t u l o 8 , p a r a u n a p a r t e d e l p r o g r a m a d e la f i g u r a 1 0 .2 , s e m u e s t r a
e n la f i g u r a 1 0 .4 . C o n o t r a s r e p r e s e n t a c i o n e s i n t e r m e d i a s , l a s v a r i a b l e s t e m p o r a l e s
t h t 2, . . . , t I5 d e l a f i g u r a 1 0 .4 n o t i e n e n q u e a p a r e c e r e x p l í c i t a m e n t e , c o m o se
e s t u d i a e n el c a p í t u l o 8 .
608 O PTIM A CIO N DE CO DIG O

Fig. 10.3. O rganización del o p tim a d o r d e código.

La o rg a n iz a c ió n d e la fig u ra 10.3 tie n e las sig u ie n tes ven tajas:

1. L as o p e r a c io n e s n ecesarias p a r a i m p l a n t a r c o n s tr u c c io n e s d e a lto nivel se h a c e n


e x p líc ita s e n el c ó d ig o i n t e r m e d i o , d e m o d o q u e es p o s ib le o p t i m a r l a s . P o r
e je m p lo , los c á lc u lo s d e d ire c c io n e s p a r a a [ i ] se h a c e n e x p líc ito s e n la figura
10.4. d e m o d o q u e el recálcu lo d e e x p resio n es c o m o 4 * i se p u e d e e lim in a r c o m o
se e s tu d ia e n la sig u ie n te sección.

( 1) i s= m - l (16) t? 4*i
( 2) 3 •
• n (17) t, • 4* j
(3) ti : = 4 *n (18) t 9 •• a ( t 8]
(4) V := a [t,] (19) a [ t 7] • “ t9
(5) i : = i +1 ( 20) tí o : = 4*j
(6 ) t 2 := 4*i (21) a [tio i : = X
(7) t j •• 2* a [ t 2] ( 22) g o t o (5)
( 8) i f t j < v g o t o (5) (23) t u : = 4 *i
#
(9) D := j “ l (24) X • a [t ,i J
( 10) t4 •
• 4*j (25) 112 • 4 *i
( 11) t 5 : = a ( t 4J (26) 1 13 : = 4 *n
( 12) i f t5 > v g o t o (9) (27) 1 14 : = a [ t ,3]
(13) i f i :>= j g o t o (23) (28) a í 112) : = 1 14
(14) u •• 4 * i (29) 115 : = 4 *n
(15) X : = a [ t 6] (30) a [ t , 5] : = X

Fig. 10.4. C ó dig o de tres direcciones para el fragm ento d e la (igura 10. 2.

2. El c ó d ig o in t e r m e d i o p u e d e s e r ( r e la tiv a m e n te ) in d e p e n d ie n t e d e la m á q u in a
o b je to , d e m o d o q u e el o p t i m a d o r n o tie n e q u e c a m b ia r m u c h o si el g e n e ra d o r
d e c ó d ig o se s u s titu y e p o r u n o p a r a u n a m á q u i n a d ife re n te . El c ó d ig o in te r m e ­
d io d e la figura 10.4 a s u m e q u e c a d a e le m e n to d e la m a tr iz a o c u p a c u a t r o b y­
tes. A lg u n o s c ó d ig o s in te r m e d io s , c o m o el c ó d ig o P p a r a P ascal, d e ja n al g e n e ­
r a d o r d e c ó d ig o q u e p r o p o r c io n e el t a m a ñ o d e los e le m e n to s d e la s m a tric e s, así
q u e el c ó d ig o in te r m e d io es in d e p e n d ie n te del t a m a ñ o d e la p a la b ra d e u n a m á-
1 0 .1 IN T R O D U C IO N 609

quina. Se podría haber hecho lo m ism o en este código interm edio si se sustitu­
yera 4 p o r un a constante sim bólica.

En el optim ador de código, los program as se representan m ediante grafos de flujo,


<-n los que las aristas in d ican el flu jo del co ntro l y los nodos representan bloques
básicos, com o se v io en la sección 9.4. A m enos que se especifique lo contrario, un
pm gram ajsignifica un solo procedim iento, E n la sección 10.8 se an aliza la optim a­
ción entre procedim ientos.

Ejem plo 10.1. L a figura 10.5 contiene el grafo de flu jo para el program a de la figu­
ra 10.4. B | es el nodo in icia l. T o d o s los saltos condicionales e in co n d icio n ales hacia
proposiciones en la figura 10.4 se han sustituido en la figura 10.5 p o r saltos al blo­
que del cual son líderes las proposiciones.
En la figura 10.5 hay tres lazos, B 2 y son lazos en sí m ism os. Lo s bloques B 2,
IIj, B* y ju n to s form an lazo, con entrada B 2. □

F ig . 1 0 .5 . G rafo de flujo.
610 O PTIM A CIO N DE CO DIG O

10.2 L A S P R I N C I P A L E S F U E N T E S P A R A L A O P T I M A C I O N

En esta secció n se p re s e n ta n a lg u n a s d e las tr a n s f o r m a c io n e s m á s ú tiles p a r a m e jo ­


r a r el códig o . L as té c n ic a s p a ra a p lic a r e s ta s tr a n s f o r m a c io n e s se p re s e n ta n e n pos­
terio res secciones. U n a tra n s fo rm a c ió n d e u n p ro g ra m a se d e n o m in a local si se puede
re a liz a r o b s e r v a n d o só lo las p ro p o s ic io n e s d e u n b lo q u e b ásico : e n c a so c o n t r a r i o se
d e n o m i n a global. M u c h a s tr a n s f o r m a c io n e s se p u e d e n rea liz a r t a n t o a nivel local
c o m o global. G e n e r a lm e n te , p r im e r o se re a liz a n la s tr a n s f o r m a c io n e s locales.

T ra n s fo rm a c io n e s q u e p re s e rv a n la función

H a y v a ria s f o r m a s e n q u e u n c o m p ila d o r p u e d e m e jo r a r un p r o g r a m a sin m o d ific a r


la fu n c ió n q u e calcu la. L a e lim in a c ió n d e s u b e x p re s io n e s c o m u n e s , la p r o g ra m a c ió n
d e co p ias, la e lim in a c ió n d e c ó d ig o in a c tiv o y el c á lc u lo p re v io d e c o n s ta n te s son
e je m p lo s c o m u n e s d e d ic h a s t r a n s f o r m a c io n e s q u e p re s e r v a n la f u n c ió n . La s e c ­
c ió n 9 .8 s o b re r e p re s e n ta c ió n p o r m e d io d e G D A p a r a lo s b lo q u e s b ásico s m o s tró
c ó m o se p u e d e n e lim in a r las s u b e x p re s io n e s c o m u n e s locales c o n f o r m e se c o n s tru y e
el G D A p a r a el b lo q u e básico. L as o tr a s tr a n s f o r m a c io n e s a p a r e c e n p r in c ip a lm e n te
c u a n d o se re a liz a n o p tim a c io n e s globales, y se e s tu d ia r á n u n a a u n a .

Ih _____________________
B 5________________________________________
t6 : = 4 * i
x := a [tftJ t 6 := 4 *i
t 7 := 4*i x := a ( t 6]
:= 4 *j tR :<= 4*j
ty := a(ta] t9 a[t«J
a f t 7] := ty a [ t 6l := ty
t io « * 4 *j a { t 8) := x
a [t|0J := x g o t o B2
g o t o Bj

(a) Antes (b) Después

Fig. 10.6. E lim inación d e subexpresiones c o m u n e s locales.

A m e n u d o , u n p r o g r a m a in c lu irá v a rio s c á lc u lo s del m is m o v a lo r, c o m o u n d e s ­


p la z a m ie n to en u n a m a triz . C o m o se m e n c io n ó e n la secció n 10.1, el p r o g r a m a d o r
n o p u e d e e v ita r a lg u n o s d e esto s cá lc u lo s d u p lic a d o s p o r q u e están b a jo el nivel d e
d e ta lle accesible d e n t r o d e l le n g u a je fu en te . P o r e je m p lo , el b lo q u e Z?5 q u e se m u e s ­
tra en la figura I0 .6 (a) re c alcu la 4 * i y 4 * j .

S u b e x p r e s io n e s co m u n e s

U n a o c u r r e n c ia d e u n a e x p re sió n E se d e n o m in a subexpresión com ún si E h a sido


p r e v ia m e n te c a lc u la d a y los v alo res d e las v aria b les d e n t r o d e E n o h a n c a m b ia d o
d e s d e el c á lc u lo a n te r io r . Se p u e d e e v ita r r e c a lc u la r la e x p re s ió n si se p u e d e u tiliz ar
el v alo r c a lc u la d o p re v ia m e n te . P o r e je m p lo , las a s ig n a c io n e s a t ? y a t « ) tie n e n las
10.2 LAS PR IN C IPA L E S F U E N T E S P A R A LA O PT IM A C IO N 611

M ih c x p re s io n e s c o m u n e s 4 * i y 4 * j , r e s p e c t i v a m e n t e , e n e l l a d o d e r e c h o d e la figu-
i.i I 0 .6 ( a ) . H a n s i d o e l i m i n a d o s e n la f ig u r a 1 0 .6 ( b ) u t i l i z a n d o t 6 e n l u g a r d e t 7 y t 8
r n lu g a r d e t 10. S e o b t e n d r í a e s t e c a m b i o si s e r e c o n s t r u y e r a el c ó d i g o i n t e r m e d i o a
p a r ti r d e l G D A p a r a el b l o q u e b á s ic o .

E je m p lo 1 0 .2 . E n la f i g u r a 1 0 .7 s e m u e s t r a el r e s u l t a d o d e e l i m i n a r s u b e x p r e s i o n e s
i n m u n e s g l o b a l e s y l o c a l e s d e lo s b l o q u e s B$ y B b e n el g r a f o d e f l u j o d e la fig u -
i,i 10.5. P r i m e r o s e a n a l i z a la t r a n s f o r m a c i ó n d e / i 5 y d e s p u é s s e m e n c i o n a n a l g u n a s
s u tile z a s r e la tiv a s a m a t r i c e s .

F ig. 1 0 .7 . B 5 y B b d e s p u é s d e la e l im i n a c ió n d e s u b e x p r e s io n e s c o m u n e s .

D e s p u é s d e h a b e r e l i m i n a d o la s s u b e x p r e s i o n e s c o m u n e s , B s t o d a v í a t i e n e q u e
e v a l u a r 4 * i y 4 * j , c o m o se m u e s t r a e n la f i g u r a I 0 .6 ( b ) . A m b a s s o n s u b e x p r e s i o n e s
c o m u n e s ; e n p a r t i c u l a r , la s t r e s p r o p o s i c i o n e s

tg := 4*j ; t 9 := a [ t 8] ; a [ t 8J := x

e n B 5 se p u e d e n s u s titu ir p o r

t 9 := a [ t 4] ; a [ t 4] : = x

u t i l i z a n d o t 4 c a l c u l a d o e n el b l o q u e B$. E n la f ig u r a 1 0 .7 , o b s é r v e s e q u e a m e d i d a
q u e e l c o n t r o l p a s a d e s d e la e v a l u a c i ó n d e 4 * j e n £3 h a s t a B 5, n o h a y c a m b i o e n j ,
d e m o d o q u e s e p u e d e u t i l i z a r t 4 s i se n e c e s i t a 4 * j .
612 O PT IM A C IO N DE C O D IG O

O tra subexpresión co m ú n aparece en B f después de qu e t4 sustituye a t8. La


nueva expresión a [t4] corresponde al va lo r de a [ j ] en el n ivel fuente. N o sólo j
m antiene su va lo r a m edida que el co n tro l sale de B } y después entra a B $, sin o que
tam bién lo m antiene a [ j ] , un v a lo r calculad o dentro de un tem poral t 5, porque
no hay asignaciones a elem entos de la m atriz a en el ín terin. Las proposiciones
t9 := a [t4] ; a[t6] := t9

en B s se pueden por tanto su stitu ir p o r

a[t6] := t5

D e m anera análoga, el v a lo r asignado a x en el bloque B s de la figura 10.6(b) es


el m ism o que el va lo r asignado a t 3 en el bloque B 2. E l bloque B s de la figura 10.7
es el resultado de e lim in a r las subexpresiones com unes correspondientes a los valo­
res de las expresiones del n ivel fuente a [ i ] y a [ j ] de B $ en la figura 10.6(b). E n la
figura 10.7 se han realizado un a serie de transform aciones sim ilares con f lA.
L a expresión a [ t , ] en los bloques 2?, y B b de la figura 10.7 no se considera una
subexpresión co m ú n , aunque t , se puede u tiliz a r en am bos lugares. D espués de que
el co ntro l abandona B¡ y antes de que llega a B b puede pasar p o r B¡, donde hay
asignaciones a a. Por tanto, a f t ,] puede no tener el m ism o va lo r al llegar a B 6 que
el que tenía al sa lir de B u y no es seguro considerar a [ t , ] com o una subexpresión
com ún. Q

P ro p a g a c ió n d e c o p ia s

E l bloque B f de la figura 10.7 se puede m ejorar aú n m ás e lim in an d o x p o r m edio


de dos nuevas transform aciones. U n a co ncierne las asignaciones de la form a f := g
llam adas p ro p o sicio n es d e copia, o copias sim plem ente. Si se estudia m ás d etalla­
dam ente el ejem p lo 10.2, las co p ias h ab rían su rg id o m u ch o antes porque el algo­
ritm o para e lim in a r las subexpresiones com unes las introduce, al igual qu e otros a l­
goritm os. P o r ejem plo, cuan d o en la figura 10.8 se e lim in a la subexpresión com ún

F i g . 1 0 .8 . C opias introducidas durante la elim inación de subexpresiones comunes.

en c :=d+e, el algoritm o u tiliz a una nueva variable t para guardar el v a lo r de d+e.


C o m o el co ntro l puede llegar a c : = d + e , ya sea después de hacer la asignación a a o
después de hacer la asignación a b, sería incorrecto su stitu ir c : = d + e por c-.=a o
p o r c : =b.
L a idea en que se basa la transform ación de propagación de copias es u tiliz a r g
p o r f , siem pre qu e sea posible después de la p ro po sició n de co p ia f := g . P o r ejem-
10.2 LAS PRINCIPALES F U E N T E S PARA LA O PT IM A C IO N 613

pío , la a s ig n a c ió n x : = t ? e n el b lo q u e B s d e la figura 10.7 es u n a c o p ia . L a p r o p a ­


g a c ió n d e c o p ia s a p lic a d a a B$ p ro d u c e :

x := t 3

a í t 2 ] : = ( 1 0 . 1)
a ( t 4J := t 3
g o to Bi
E sto p u e d e n o p a re c e r u n a m e jo ra , p e r o c o m o ya se verá, d a la o p o r tu n i d a d d e eli­
m i n a r las a sig n a c io n e s a x.

E lim in ació n d e código in activ o

U n a v ariab le está a c tiv a en u n p u n t o d e u n p r o g r a m a si su v a lo r p u e d e s e r u tiliz ad o


p o s te rio rm e n te ; en c a so c o n tr a r io está in a c tiv a en ese p u n to . U n a id e a a fín es el c ó ­
d ig o in a c tiv o o in ú til, p ro p o s ic io n e s q u e c a lc u la n v alo res q u e n u n c a llegan a u tili­
zarse. A u n q u e es im p r o b a b le q u e el p r o g r a m a d o r in tr o d u z c a c ó d ig o in a c tiv o in te n ­
c io n a d a m e n te . p u e d e a p a r e c e r c o m o r e s u lta d o d e tr a n s f o r m a c io n e s a n te rio re s . P o r
e je m p lo , e n la secció n 9 .9 se e s tu d ió el u s o d e d e p u r a q u e se asig n a a falso o v e r­
d a d e r o e n v a rio s p u n to s del p r o g r a m a , y se u tiliz a e n p ro p o s ic io n e s c o m o

if (d ep u ra) p rin t . . . (1 0 .2 )

M e d ia n te u n a n álisis del flu jo d e d a to s , e s p o sib le c o n c lu ir q u e c a d a v ez q u e el p r o ­


g r a m a a lc a n z a d ic h a p ro p o s ic ió n , el v a lo r d e d e p u r a es falso. G e n e r a lm e n te , lo es
p o r q u e h a y u n a p ro p o sic ió n d e te r m in a d a

d ep u ra := fa ls e

q u e se p u e d e c o n s id e r a r la ú ltim a asig n ac ió n a d e p u r a a n te s d e h a c e r la c o m p r o ­
b ació n (10.2). in d e p e n d ie n te m e n te d e la s e c u e n c ia d e ra m ific a c io n e s q u e t o m e en
re a lid a d el p ro g ra m a . Si la p ro p a g a c ió n d e c o p ia s s u stitu y e d e p u r a p o r el v a lo r d e
v erd ad false. e n to n c e s la p ro p o s ic ió n d e im p re s ió n p rin t está in a c tiv a p o r q u e n o se
p u e d e a lc a n z a r. Se p u e d e e lim in a r la p r u e b a y la im p r e s ió n del c ó d ig o o b je to . G e ­
n e ra lm e n te , d e d u c ir e n el m o m e n t o de la c o m p ila c ió n q u e el v a lo r d e u n a ex p resió n
es u n a c o n s ta n te y u tiliz ar la c o n s ta n te en su lu g a r se c o n o c e c o m o cálculo previo de
constantes.
U n a v e n ta ja d e la p ro p a g a c ió n d e c o p ia s es q u e a m e n u d o c o n v ie r te la p ro p o s i­
c ió n d e c o p ia e n c ó d ig o in a c tiv o . P o r e je m p lo , la p ro p a g a c ió n d e c o p ia s seg u id a de
la e lim in a c ió n d e c ó d ig o in a c tiv o e lim in a la a s ig n a c ió n a x y tr a n s f o r m a (1 0 .1 ) en:
a [ t :] := t 5
a [ t 4] : = t 3
g o t o B¿

E ste c ó d ig o es u n a m e jo ra a d ic io n a l del b lo q u e B<. d e la fig u ra 10.7.

O p tim a c io n e s d e lazos

A h o ra se d a u n a b re v e in tr o d u c c ió n a u n lu g a r m u y im p o r ta n te p a r a las o p tim a c io ­
nes. q u e s o n los lazos, e s p e c ia lm e n te los lazos in te r n o s d o n d e los p ro g r a m a s tie n d e n
a e m p le a r la m a y o r p a rte d e su tie m p o . El tie m p o d e e je c u c ió n d e u n p r o g r a m a se
614 O PT IM A C IO N D E C O D IG O

puede m ejorar si se d ism inuye la cantidad de instrucciones en un lazo interno, in ­


cluso si se increm enta la cantidad de código fuera del lazo. H ay tres técnicas im por­
tantes para la optim ación de lazos: el traslado d e código, que traslada código fuera
del lazo; la elim inación d e variables d e inducción, que se aplica para e lim in a r i y j
de los lazos internos B 2 y £3 de la figura 10.7; y la reducción d e intensidad, que sus­
tituye una operación cara por una m ás barata, com o una m u ltip licació n p o r una
suma.

T raslado de código

U na m odificación im portante que dism inuye la cantidad de código en un lazo es el


traslado de código. Esta transform ación tom a una expresión que produce el m ism o
resultado independientem ente del núm ero de veces que se ejecute un lazo (el cálculo
de una invariante del ciclo) y coloca la expresión antes del lazo. Obsérvese que la
noción “ antes del lazo " supone la existencia de una entrada al lazo. Por ejem plo, la
evaluación de l í m i t e - 2 es un cálculo de una invariante de lazo en la siguiente
proposición while:
w h ile ( i <= l í m i t e - 2 ) /* la proposición no cam bia l í m i t e */

E l traslado de código resultará equivalente a


t = lím ite -2 ;
w h ile ( i <= t ) /* la proposición no cam bia l í m i t e n i t */

V ariab les de inducción y reducción de intensidad

A un que el traslado de código no es aplicable al ejem plo de la clasificación p o r p ar­


ticiones que se ha venido considerando, las otras dos transform aciones sí lo son. Los
lazos se procesan generalm ente de dentro hacia afuera. P o r ejem plo, considérese el
lazo alrededor de # 3. Sólo se m uestra en la figura 10.9 la parte del grafo de flujo
relevante para la transform ación de # 3.
Obsérvese que los valores de j y t 4 perm anecen atados; cada vez que el va lo r de
j dism inuye en 1, el de t 4 d ism inuye en 4 porque 4 * j se asigna a t 4. D ichos iden­
tificadores se denom inan variables d e inducción.
C u an d o hay dos o m ás variables de in d u cció n en un lazo, es posible su p rim ir­
los todos m enos uno, m ediante el proceso de e lim in a ció n de variables de in d u c­
ción. Para el lazo interno alrededor de # 3 en la figura 10.9(a), no se puede su p rim ir
com pletam ente j o t 4; t 4 se u tiliz a en /?3 y j en B4. S in em bargo, se puede ilu strar
la reducción de intensidad y una parte del proceso de e lim in a ció n de variables.de
in d u cció n . Fin alm en te, j será e lim in a d o cuan d o se considere el lazo externo de
B 2 - B s.

Ejem plo 10 .3. C o m o la relación t 4 = 4 * j se cum p le siem pre después de dich a


asignación a t 4 en la figura 10.9(a) y t 4 no cam bia en ninguna otra parte del lazo
interno alrededor de B h se deduce que ju sto después de la proposición j : = j - l se
debe c u m p lir la relació n t 4 = 4* j - 4 . Por tanto, se puede su stitu ir la asignación
t 4: = 4* j p o r t 4: = t 4—4. El ú n ico problem a es que t 4 no tiene un valor cuando se
entra al bloque Z?3 p o r prim era vez. C om o se debe conservar la relación t 4 = 4 * j
1 0 .2 LAS P R IN C IP A L E S FU EN TES PARA LA O P T IM A C IO N 615

a la entrada al b lo q u e B 3, se co lo ca un a in ic ia liz a c ió n de t 4 al fin a l del b lo q u e en


do nde se in ic ia liz a j m ism a, m ostrada p o r la sum a punteada al b lo q u e B 1 en la fi­
gura 10.9(b).
L a su stitu ció n de un a m u ltip lic a c ió n p o r un a resta acelerará el código objeto si
la m u ltip lic a c ió n em plea m ás tiem po qu e la sum a o la resta, co m o es el caso en m u ­
chas m áq u in as. □

B,

1 := m - 1
1
D := n
ti := 4 *n
V ••= a [ t , ]

1
B,

1
B-.
1
II

t 4 := 4* j
: = a [ t 4)
i f t 5 > v g o to #3

1 *4
if i > = j g o to

£5 ^ Be

(a) Antes (b) Después

Fig . 10.9. R educción de intensidad aplicada a 4 * j en el bloque Z?3.

L a sección 10.7 a n a liza có m o detectar las variab les de in d u cc ió n y las tra n sfo rm a ­
cio n e s qu e se pueden a p lica r. Esta secció n co n clu ye co n u n ejem p lo m ás de e lim i­
n a ció n de va ria b le s d e in d u c c ió n qu e co n sid era i y j en el co n texto del lazo e xterio r
qu e co ntiene B 2, ¿*3, B 4 y S 5.

E je m p lo 10 .4 . D espués de qu e la re d u cció n de in te n sid ad se a p lic a a lo s lazo s in ter­


nos alrededor de B 2 y £ 3, el ú n ico uso de i y j es determ inar el resultado de la prueba
en el bloque f l4. Se sabe que lo s valores de i y t 2 cu m p le n la relació n t 2 = 4 * i , en
tanto qu e lo s de j y t 4 satisfacen la re la ció n t 4 = 4 * j , así qu e la prueb a t 2> = t 4 es
e q u ivale n te a i > = j . U n a vez hecha esta su stitu ció n , i en el b lo q u e B 2 y j en el b lo ­
qu e # 3 se co n vie rte n en va ria b le s in a ctiv a s y la s asignacio nes a e lla s en estos bloques
se co n vie rte n en có d ig o in a c tiv o que puede ser e lim in a d o , obteniéndose el grafo de
flu jo qu e se m uestra en la fig u ra 10 . 10 . II
616 O PTIM A CIO N DE CO DIG O

: i b2
:= t> +4 •

t j := a [t i ]
i f ty < v g o t o B2

i *3
t 4 := t j - 4
t s := a l t 4 )
if t $ > v g o t o By
1 B*
if t:> = » ta g o t o B*
\

*s fk
a ( t 7] := t 5 tía a [t| ]
a[t,„] := tj a [ti] := 1 14
g o t o /{> a(t,] := tj

Fig. 10.10. G ra fo d e flujo después d e la elim inación de variables d e inducción.

L as tra n s fo rm a c io n e s p a r a m e jo ra r el c ó d ig o h a n sido efectivas. E n la figura 10.10.


el n ú m e r o d e in s tru c c io n e s e n los b lo q u e s B2 y By se ha re d u c id o d e 4 a 3 a p a rtir
del g rafo d e flu jo o rig in a l d e la fig u ra 10.5. e n B$ se h a re d u c id o d e 9 a 3, y e n Bh d e
8 a 3. En realid ad . B { h a a u m e n t a d o d e c u a t r o in s tru c c io n e s a seis, p e r o B { se e je ­
c u ta só lo u n a vez e n el fra g m e n to , así q u e el t i e m p o d e e je c u c ió n to ta l está r a r a vez
in f lu id o p o r el t a m a ñ o d e B\.

10.3 O P T I M A C I O N D E B L O Q U E S B A S IC O S

En el c a p itu lo 9 se v ie ro n v a ria s tr a n s f o r m a c io n e s p a r a m e jo r a r el c ó d ig o p a ra los


b lo q u e s básicos. E sta s in c lu y e n tr a n s f o r m a c io n e s q u e p re se rv a n la e s tr u c tu r a , c o m o
la e lim in a c ió n d e s u b e x p re s io n e s c o m u n e s y la e lim in a c ió n d e c ó d ig o in a c tiv o , y las
tr a n s f o r m a c io n e s alg eb raicas c o m o la re d u c c ió n d e in te n s id a d .
M u c h a s d e las tr a n s f o r m a c io n e s q u e p re s e rv a n la e s tr u c tu r a se p u e d e n im p la n ta r
m e d ia n te la c o n s tru c c ió n d e u n G D A p a r a u n b lo q u e básico. R e c u é rd e se q u e hay
u n n o d o e n el G D A p a ra c a d a u n o d e los v a lo re s iniciales d e las v a ria b le s q u e a p a ­
re c e n e n el b lo q u e básico, y hay u n n o d o n a s o c ia d o a c a d a p ro p o s ic ió n s d e n t r o del
b lo q u e . L o s h ijo s d e n s o n los n o d o s c o rr e s p o n d ie n te s a p ro p o s ic io n e s q u e s o n las
ú ltim a s d e f in ic io n e s a n t e r io r e s a v d e los o p e r a n d o s u tiliz a d o s p o r .v. El n o d o n se
10.3 O P T IM A C IO N D E B L O Q U E S BASICOS 617

e tiq u e ta c o n el o p e r a d o r a p lic a d o a s, y ta m b ié n se a s o c ia a n la lista d e variab les


p a r a las cu ales es la ú ltim a d e fin ició n d e n t r o del b lo q u e . T a m b ié n se tie n e n e n c u e n ta
los n o d o s, si los h ay , c u y o s v a lo re s e s tá n a c tiv o s a la sa lid a del b lo q u e : esto s s o n los
n o d o s d e salida.
L as s u b e x p re s io n e s c o m u n e s se p u e d e n d e te c ta r o b s e r v a n d o , c u a n d o u n n u e v o
n o d o m está a p u n t o d e a ñ a d irse , si e x iste u n n o d o n c o n los m is m o s hijos, e n el
m is m o o r d e n , y c o n el m is m o o p e r a d o r . Si es así, n c a lc u la el m is m o v a lo r q u e m y
p u e d e ser u tiliz a d o e n su lugar.

E je m p lo 10.5. E n la figura 10.11 se m u e s tr a u n G D A p a r a el b lo q u e (1 0.3)

a := b + c
b := a - d
(1 0.3)
c := b + c
d := a - d

C u a n d o se c o n s tr u y e el n o d o p a r a la te rc e ra p ro p o s ic ió n c : = b + c , se sa b e q u e el uso
d e b e n b + c se refiere al n o d o d e la fig u ra 1 0 .1 1 e t iq u e ta d o c o n p o r q u e esa e s la
d e fin ic ió n m á s re c ie n te d e b . P o r ta n to , n o se c o n f u n d e n los v alo res c a lc u la d o s en
las p ro p o s ic io n e s u n a y tres.

bo c0

Fig. 10.11. G D A para el b lo q u e básico (10.3).

S in e m b a rg o , el n o d o c o r r e s p o n d ie n te a la c u a r t a p ro p o s ic ió n d : = a - d tie n e el*
o p e r a d o r - y los n o d o s e tiq u e ta d o s c o n a y d 0 c o m o hijos. C o m o el o p e r a d o r y los
hijos s o n los m is m o s q u e p a ra el n o d o c o r r e s p o n d ie n te a la p ro p o s ic ió n d o s . n o se
c re a este n o d o s in o q u e se a ñ a d e d a la lista d e d e fin ic io n e s p a r a el n o d o e tiq u e ta d o
con - . □

P u e d e s u c e d e r q u e . c o m o só lo h a y tres n o d o s e n el G D A de la figura 10.11, el


b lo q u e (1 0 .3 ) se p u e d e s u s titu ir p o r u n b lo q u e c o n só lo tres p ro p o sic io n e s. D e he­
c h o , si b o d n o está a c tiv a a la sa lid a del b lo q u e , e n to n c e s n o h a y q u e c a lc u la r esa
v a ria b le , y se p u e d e u tiliz a r la o t r a p a r a re c ib ir el v a lo r re p r e s e n ta d o p o r el n o d o
e tiq u e ta d o c o n - en la fig u ra 10.11. P o r e je m p lo , si b n o está a c tiv a a la salid a, se
p o d r ía utilizar:

a := b + c
d := a - d
c := d + c
618 O P T IM A C IO N D E C O D IG O

S in e m b a r g o , si t a n t o b c o m o d e s t á n a c t i v a s a l a s a l i d a , e n t o n c e s s e d e b e u t i l i z a r
u n a c u a r t a p r o p o s i c i ó n p a r a c o p i a r e l v a l o r d e u n a a l a o t r a 2.
O b s é rv e s e q u e c u a n d o se b u s c a n s u b e x p re s io n e s c o m u n e s , e n re a lid a d s e e stá n
b u s c a n d o e x p re sio n e s q u e v a y a n a c a lc u la r el m is m o v a lo r, in d e p e n d ie n te m e n te de
c ó m o s e c a l c u l e d i c h o v a l o r . P o r t a n t o , el m é t o d o d e l G D A n o t e n d r á e n c u e n t a el
h e c h o d e q u e la e x p r e s i ó n c a l c u l a d a p o r la p r i m e r a y la c u a r t a p r o p o s i c i o n e s e n la
se c u e n c ia

a := b + c
b := b - d
( 1 0 .4 )
c := c + d
e := b + c

e s la m i s m a , e s d e c i r , b + c . S in e m b a r g o , la s i d e n t i d a d e s a l g e b r a i c a s a p l i c a d a s a l G D A ,
c o m o s e e s t u d i a a c o n t i n u a c i ó n , p u e d e n e x p o n e r la e q u i v a l e n c i a . E n la f i g u r a 1 0 .1 2
s e m u e s t r a el G D A p a r a e s t a s e c u e n c i a .

F ig . 1 0 .1 2 . G D A p a r a el b l o q u e b á s ic o (1 0 .4 ).

L a o p e ra c ió n s o b re G D A q u e c o r r e s p o n d e a la e lim in a c ió n d el c ó d ig o in a c tiv o
e s b a s t a n t e d i r e c t a d e i m p l a n t a r . S e b o r r a d e u n G D A c u a l q u i e r r a í z ( n o d o s in a n ­
c e stro s) q u e n o te n g a v a ria b le s a c tiv a s . L a a p lic a c ió n r e p e tid a d e e s ta tr a n s f o r m a ­
c i ó n e l i m i n a r á t o d o s lo s n o d o s d e l G D A q u e c o r r e s p o n d a n a c ó d i g o i n a c t i v o .

E l uso de identidades algebraicas

L a s i d e n t i d a d e s a l g e b r a i c a s r e p r e s e n t a n o t r a c la s e i m p o r t a n t e d e o p t i m a c i o n e s s p b r e
b l o q u e s b á s i c o s . E n la s e c c i ó n 9 . 9 s e i n t r o d u j e r o n a l g u n a s s e n c i l l a s t r a n s f o r m a c i o ­
n e s a l g e b r a i c a s q u e s e p u e d e n i n t e n t a r d u r a n t e la o p t i m a c i ó n . P o r e j e m p l o , s e p u e ­
d e n a p lic a r id e n tid a d e s a ritm é tic a s, c o m o

2 En general, hay que tener cuidado c u a n d o se reconstruye código a partir de los G D A para elegir
los nom bres d e las variables que corresponden a nodos. Si un a variable x se define dos veces, o se
le hace una asignación una vez y tam bién se utiliza el valor inicial x0, entonces hay qu e asegurarse
d e q u e no se m odifique el valor d e x hasta q u e se hayan hecho todos los usos del n o do cuyo valor
contenía previam ente x.
1 0 .3 O P T IM A C IO N D E B L O Q U E S BASICOS 619

x + 0 = 0 + x = x
x - 0 = x
x * l = l * x = x
x / 1 = x

O tr a c la s e d e o p t i m a c i o n e s a lg e b r a ic a s in c lu y e n la r e d u c c ió n d e in te n s id a d , es
d ecir, s u s titu ir u n o p e r a d o r m á s c a r o p o r o tr o m á s b a ra to c o m o en

x ** 2 - x * x
2. 0 * x = x + x
x / 2 = x * 0 .5

U n a tercera c la s e d e o p t i m a c i o n e s a f in e s e s e l c á lc u lo p r e v io d e c o n s t a n t e s . A q u í
s e e v a lú a n las e x p r e s io n e s c o n s t a n t e s d u r a n t e la c o m p i l a c i ó n y s e s u s titu y e n las e x ­
p r e s io n e s c o n s t a n t e s p o r s u s v a lo r e s 3. P o r ta n to , la e x p r e s ió n 2 * 3 . 1 4 s e su stu ir ía
p o r 6 . 2 8 . M u c h a s e x p r e s io n e s c o n s t a n t e s s u r g e n c o n el u so d e c o n s t a n t e s s im b ó li­
cas.
El p r o c e s o d e c o n s t r u c c i ó n d e u n G D A p u e d e a y u d a r a a p lic a r e s t a s y o t r a s
t r a n s fo r m a c io n e s a lg e b r a ic a s m á s g e n e r a le s , c o m o la c o n m u t a t iv id a d y la a s o c ia ti­
v id a d . P o r e j e m p l o , s u p ó n g a s e q u e * e s c o n m u t a t i v o ; e s d e c ir , x * y = y * x . A n t e s d e
crear u n n u e v o n o d o e t iq u e t a d o c o n * c o n h ijo iz q u ie r d o m e h ij o d e r e c h o /?, se
revisa s i ya e x is t e d ic h o n o d o . D e s p u é s s e b u s c a u n n o d o q u e te n g a o p e r a d o r * , hijo
iz q u ie r d o n e h ijo d e r e c h o m .
L o s o p e r a d o r e s r e la c ió n a le s < = , >=, < , > , = y # a v e c e s g e n e r a n s u b e x p r e s io n e s
c o m u n e s im p r e v is ta s . P o r e j e m p lo , la c o n d i c i ó n x > y t a m b ié n se p u e d e c o m p r o b a r
r e s ta n d o lo s a r g u m e n t o s y r e a liz a n d o u n a p r u eb a d el c ó d i g o d e c o n d i c i ó n e s ta b le ­
c id o p o r la resta. (S in e m b a r g o , la resta p u e d e in tr o d u c ir d e s b o r d a m ie n t o s y d e s b o r ­
d a m ie n t o s n eg a tiv o s, m ie n tr a s q u e u n a in str u c c ió n d e c o m p a r a c ió n n o lo haría.) P or
ta n to , s ó l o h ay q u e g e n er a r u n n o d o d el G D A p a ra x - y y x > y .
L as le y e s a s o c ia t iv a s t a m b i é n s e p u e d e n a p lic a r para e v id e n c ia r las s u b e x p r e s io ­
n e s c o m u n e s . P o r e j e m p l o , si el c ó d ig o fu e n te tie n e la s a s ig n a c io n e s

a := b + c
e := c + d + b

se p o d r ía g e n er a r e l s ig u ie n te c ó d i g o in te r m e d io :

a := b + c
t := c + d
e := t + b

Si n o se n e c e s ita t fuera d e e ste b lo q u e , se p u e d e c a m b ia r esta s e c u e n c ia p or

a := b + c
e := a + d

u t iliz a n d o la a s o c ia tiv id a d y la c o n m u t a t iv id a d d e +.

; L as e x p r e s io n e s a r itm é tic a s se d e b e n e v a lu a r d e l m is m o m o d o d u ra n te la c o m p ila c ió n q u e d u ­


rante la e je c u c ió n . K . T h o m p s o n ha p r o p u e sto u n a s o lu c ió n e le g a n te al c á lc u lo p r e v io d e c o n s t a n ­
tes: c o m p ila r la e x p r e sió n c o n sta n te , e je c u ta r el c ó d ig o o b je to allí m is m o y su stitu ir la e x p r e sió n co n
e l resu ltad o. P or ta n to , el c o m p ila d o r n o n e c esita c o n te n e r u n intérp rete.
620 O PTIM A CIO N DE C O D IG O

El e s c rito r d e l c o m p ila d o r d e b e e x a m in a r c u id a d o s a m e n te la esp ecificació n del


len g u aje p a ra d e te r m in a r los o r d e n a m ie n to s d e cálcu lo s q u e están p e rm itid o s, puesto
q u e la a r itm é tic a del c o m p u t a d o r n o s ie m p re o b e d e c e las id e n tid a d e s alg eb raicas d e
la m a te m á tic a . P o r e je m p lo , el e s tá n d a r p a r a F O R T R A N 77 esta b le c e q u e u n c o m ­
p il a d o r p u e d e e v a lu a r c u a l q u ie r e x p re s ió n m a t e m á t i c a m e n t e e q u iv a le n te si n o se
v io la la in te g r id a d d e lo s p a r é n te s is . P o r t a n t o , u n c o m p i l a d o r p u e d e e v a l u a r
x * y - x * z c o m o x* ( y - z ) p ero no p u ed e e v a lu a r a + ( b - c ) c o m o ( a + b ) - c . Un
c o m p ila d o r d e F O R T R A N d e b e p o r t a n t o llevar u n reg istro d e d ó n d e e s ta b a n los
p a ré n te sis e n las e x p re s io n e s del le n g u a je fu e n te , si v a a o p t i m a r p r o g r a m a s según la
d e fin ic ió n del lenguaje.

10.4 L A Z O S E N L O S G R A F O S D E F L U J O

A n te s d e c o n s id e r a r o p tim a c io n e s d e lazos, h a y q u e d e fin ir lo q u e c o n s titu y e u n lazo


e n u n g rafo d e flujo. S e u tiliz a rá la n o c ió n d e q u e u n n o d o " d o m i n a ’' a o t r o p a ra
d e fin ir los " la z o s n a tu ra le s " y la i m p o r ta n te clase especial d e g rafo s d e flujo "re d u -
cib les". E n la secció n 10.9 se d a r á u n a lg o r itm o p a ra e n c o n t r a r d o m i n a n te s y c o m ­
p r o b a r la re d u c ib ilid a d d e los g rafo s d e flujo.

Dominantes

S e d ic e q u e el n o d o d d e u n g ra fo d e flujo d o m in a al n o d o n , q u e se e sc rib e d d o m
n. si to d o c a m i n o d e sd e el n o d o inicial del g rafo d e flu jo a n p a sa p o r d. C o n esta
d e fin ic ió n , t o d o n o d o se d o m i n a a sí m is m o , y la e n t r a d a d e u n lazo ( c o m o se d e fi­
n ió e n la Sec. 9 .4 ) d o m i n a to d o s lo s n o d o s del lazo.

E je m p lo 10.6. C o n s id é re s e el g rafo d e flu jo d e la fig u ra 10.13, c o n n o d o in icial 1.


El n o d o inicial d o m i n a a to d o s los n o d o s . El n o d o 2 só lo se d o m i n a a sí m ism o .

Fig. 1 0 .1 3 . G r a f o d e flujo.
10.4 LAZOS EN LOS G R A F O S DE FLUJO 621

p u e s to q u e el c o n tro l p u e d e llegar a c u a lq u ie r o t r o n o d o a tra v é s d e u n c a m i n o q u e


c o m ie n c e c o n 1 - » 3 . El n o d o 3 d o m i n a a to d o s e x c e p to a 1 y a 2 . El n o d o 4 d o m i n a
a to d o s e x c e p to a 1, 2 y 3. p o r q u e to d o s lo s c a m in o s a p a r ti r d e 1 d e b e n c o m e n z a r
con 1 2 -> 3 - * 4 o c o n 1 —> 3 —^ 4 . L o s n o d o s 5 y 6 só lo s e d o m i n a n a ello s
m ism o s, p o r q u e el flu jo d e l c o n tr o l p u e d e s a lta r a c u a lq u ie r a d e ello s a tr a v é s del
o tro . P o r ú ltim o . 7 d o m i n a a 7, 8. 9, 10: 8 d o m i n a a 8 . 9, 1 0 : 9 y 10 só lo se d o m i n a n
a ello s m is m o s . □

F ig . 1 0 .1 4 . A rbol d e d o m in a c ió n p a ra el grafo d e flujo d e la figura 10.13.

U n a fo rm a ú til d e p r e s e n ta r la in f o r m a c ió n s o b re d o m i n a d o r e s e s e n u n á rb o l,
lla m a d o árbol de do m in a ció n , e n el q u e el n o d o in ic ia l es la raíz, y c a d a n o d o d d o ­
m i n a só lo a s u s d e s c e n d ie n te s e n el á rb o l. P o r e je m p lo , e n la fig u ra 10.14 se m u e stra
el á rb o l d e d o m i n a c ió n p a r a el g rafo d e flu jo d e la figura 10.13.
L a e x is te n c ia d e á rb o le s d e d o m i n a c i ó n se d e r iv a d e u n a p r o p ie d a d d e lo s d o ­
m in a n te s ; c a d a n o d o n tie n e u n d o m in a d o r in m ed ia to m q u e es el ú ltim o d o m i n a ­
d o r d e n e n c u a lq u ie r c a m in o d e s d e el n o d o in icial a n. R e s p e c to a la re la c ió n d o m .
el d o m i n a d o r in m e d ia to m tien e la p ro p ie d a d d e q u e si d ^ n y d do m n , e n to n c e s
d dom m.

L a z o s n a tu r a le s

U n a a p lic a c ió n i m p o r ta n te d e la in f o r m a c ió n s o b re d o m i n a d o r e s es d e t e r m i n a r los
la zo s d e u n g ra fo d e flu jo o b je to d e m e jo ra . E sto s la zo s tie n e n d o s p ro p ie d a d e s im ­
p o rta n te s :

1. U n la z o d e b e te n e r u n so lo p u n t o d e e n tr a d a , lla m a d o ‘‘e n c a b e z a m ie n to ” . Este


p u n t o d e e n t r a d a d o m i n a to d o s los n o d o s d e n t r o del lazo, o n o seria la ú n ic a
e n t r a d a al lazo.
2. D e b e h a b e r al m e n o s u n a fo rm a d e ite r a r el lazo, es d ecir, al m e n o s u n c a m in o
d e regreso al e n c a b e z a m ie n to .

U n a b u e n a fo rm a d e e n c o n t r a r to d o s los la zo s e n u n g rafo d e flu jo es b u s c a r aris­


ta s e n el g rafo d e flu jo c u y a s c a b e z a s d o m i n e n s u s colas. (Si a —» b es u n a arista, b
es la cabeza y a e s la cola.) D ic h a s arista s se d e n o m i n a n aristas d e retroceso.
622 O PTIM A CIO N D E C O D IG O

Ejem plo 10.7. E n la fig u ra 10.13 h a y u n a a ris ta 7 - » 4 . y 4 d o m 7. D e m a n e r a si­


m ila r, 1 0 - » 7 es u n a arista, y 7 do m 10. L as o tr a s arista s c o n esta p r o p ie d a d son
4 - * 3, 8 - » 3 y 9 - » 1. O b sérv ese q u e éstas s o n e x a c ta m e n te las arista s q u e in tu iti­
v a m e n te p a re c e n f o r m a r la zo s e n el g rafo d e flujo. □

D a d a u n a a ris ta d e re tro c e so n - * d , se d e fin e el la zo natural d e la a ris ta c o m o d


m á s el c o n j u n t o d e n o d o s q u e p u e d e a lc a n z a r n sin ir a tra v é s d e d. El n o d o d es el
e n c a b e z a m ie n to del lazo.

Ejem plo 10.8. El la z o n a tu ra l d e la a ris ta 10 —►7 c o n s ta d e los n o d o s 7. 8 y 10,


p u e s to q u e 8 y 10 s o n to d o s los n o d o s q u e p u e d e n a lc a n z a r 10 sin p a s a r p o r 7. El
la z o n a tu ra l d e 9 - * 1 es el g rafo d e flujo c o m p le to . ( N o h a y q u e o lv id a r el c a m in o
10 —> 7 —> 8 —> 9 .) □

Algoritmo 10.1. C o n s tru c c ió n d e l la z o n a tu ra l d e u n a a ris ta d e retro ceso .

Entrada. U n g rafo d e flu jo G y u n a a ris ta d e re tro c e so n - * d.

Salida. El c o n j u n t o la zo q u e c o n s ta d e to d o s los n o d o s d e n t r o del la z o n a tu ra l d e


n - » d.

M étodo. C o m e n z a n d o c o n el n o d o n. se c o n s id e r a c a d a n o d o m ¿ d q u e se sa b e q u e
está en la zo p a r a aseg u rarse d e q u e lo s p re d e c e so re s d e m ta m b ié n se c o lo c a n en
lazo. El a lg o r itm o se d a e n la figura 10.15. C a d a n o d o en la zo , e x c e p to d . se co lo ca
u n a v ez en p ila , así q u e s u s p re d e c e so re s s e rá n e x a m in a d o s . O b sé rv e se q u e c o m o d
se c o lo c a en el lazo a l inicio, n u n c a se e x a m in a n s u s p reced e so res, y p o r t a n t o se
e n c u e n tr a n só lo a q u e llo s n o d o s q u e a lc a n z a n n sin p a s a r p o r d. □

L a zo s internos

Si se u tiliz an los lazos n a tu r a le s c o m o “ los lazo s", e n to n c e s ex iste la p ro p ie d a d útil


d e q u e , a m e n o s q u e d o s la zo s te n g a n el m is m o e n c a b e z a m ie n to , s o n d is ju n to s o

procedure inserta (ni):


if n i no está en lazo then begin
lazo : = lazo kj {w};
m ete n i en pila
end;

J* sigue el p ro g ram a principal */

p ila : = vacía;
l a z o : - {í/J:
inserta («):
"h ile pila no sea vacía do begin
saca ni. el p rim er elem en to d e pila , d e pila:
for cada predecesor h d e ni do inserta (p)
end

F ig . 1 0 . 1 5 . A l g o r i t m o para c o n s tr u ir el la z o natural.
10.4 LAZOS EN LOS G R A F O S DE FLU JO 623

Fig. 10.16. D os lazos c o n el m ism o encabezam iento.

u n o está c o m p le ta m e n te c o n t e n id o (a n id ad o dentro) e n el o tr o . P o r ta n to , sin te n e r


e n c u e n ta p o r el m o m e n t o lo s la zo s c o n el m is m o e n c a b e z a m ie n to , se tie n e u n a n o ­
c ió n n a tu r a l d e la zo interno: u n o q u e n o c o n tie n e o tro s lazos.
C u a n d o d o s la zo s tie n e n el m i s m o e n c a b e z a m ie n to , c o m o e n la figura 10.16. es
difícil s a b e r c u á l e s el lazo in te rn o . P o r e je m p lo , si la c o n d ic io n a l al final d e Z?, fu era

if a = 10 goto B¿

p r o b a b le m e n te el lazo j BiU B u By} seria el lazo in te rn o . S in e m b a r g o , n o es posible


e s ta r seg u ro sin un e x a m e n d e ta lla d o del cód igo . Q u iz á s a casi s ie m p re e s 1 0 , y es
h a b itu a l ite r a r el la z o (Z?0. B )%B 2) m u c h a s v e c e s a n te s d e ir a B \. P o r t a n t o , se s u ­
p o n d r á q u e c u a n d o d o s lazos n a tu r a le s tie n e n el m i s m o e n c a b e z a m ie n to p e r o n in ­
g u n o está a n i d a d o d e n t r o del o tr o , se c o m b in a n y c o n s id e ra n c o m o u n so lo lazo.

Preencabeza m íen tos

V a r ia s t r a n s f o r m a c i o n e s e x ig e n tr a s l a d a r las p r o p o s ic i o n e s “ a n t e s d e l e n c a b e z a ­
m ie n to " . P o r ta n to , se c o m ie n z a el t r a t a m i e n to d e u n lazo L c r e a n d o u n n u e v o b lo ­
q u e . l l a m a d o p reen c a b eza m ie n to . El p r e e n c a b e z a m i e n t o s ó lo tie n e el e n c a b e z a ­
m i e n to c o m o su c e s o r y to d a s las a ris ta s q u e a n te s e n t r a b a n al e n c a b e z a m ie n to d e L
d e s d e f u e ra d e /. a h o r a e n t r a n al p r e e n c a b e z a m i e n t o . N o s e m o d i f ic a n la s a r is ­
ta s d e s d e d e n t r o d e l la z o L al e n c a b e z a m ie n to . E l o r d e n a m i e n t o se m u e s tr a e n la
figura 10.17. A l in ic io , el p r e e n c a b e z a m ie n to está v a c ío p e r o la s tr a n s f o r m a c io n e s
s o b re L p u e d e n c o lo c a r p r o p o s ic io n e s e n él.

(a) A ntes ib) Después

F ig. 1 0 .1 7 . In trod ucción del p reen cab ezam ien to.


624 O PTIM A CIO N DE CO DIG O

G r a fo s d e flu jo r e d u c ib le s

L o s g rafo s d e (lujo q u e o c u r r e n e n la p rá c tic a , a m e n u d o f o r m a n p a r te d e la clase de


g rafo s d e flujo re d u c ib le s q u e se d e f in e m á s a d e la n te . El u s o e x c lu siv o d e p ro p o s i­
c io n e s d e flujo d e c o n tr o l e s tr u c tu r a d a s c o m o las p ro p o s ic io n e s if- t h e n - e ls e . w h ile -
d o. c o n tin u é y b rea k p r o d u c e p ro g r a m a s c u y o s g rafo s d e flu jo s ie m p re s o n re d u c i­
bles. In c lu s o los p ro g r a m a s e sc rito s u tiliz a n d o p ro p o s ic io n e s g o to p o r p ro g ra m a d o -
res sin c o n o c im ie n to p rev io d e d is e ñ o d e p ro g ra m a s e s tru c tu ra d o s son re d u cib les casi
siem p re.
S e h a n p r o p u e s to m u c h a s d e fin ic io n e s d e “g rafo d e flu jo re d u c ib le " . L a q u e a q u í
se a d o p t a tie n e u n a d e las p ro p ie d a d e s m á s im p o r ta n te s d e los g rafo s d e flu jo r e d u ­
cibles: q u e n o h a y salto s h acia d e n t r o d e los la zo s d e s d e el e x te rio r, la ú n ic a e n tr a d a
a u n la z o e s a tra v é s d e su e n c a b e z a m ie n to . L o s ejercicio s y las n o ta s bib lio g ráficas
c o n tie n e n u n a b re v e h is to ria d e l c o n c e p to .
U n g rafo d e flu jo G es reducible si. y só lo si. se p u e d e n p a r tic io n a r las a ris ta s en
d o s g r u p o s d is ju n to s , lla m a d a s c o n fr e c u e n c ia a ris ta s d e avance y a ris ta s d e retro­
ceso. c o n las sig u ie n te s d o s p ro p ie d a d e s:
1. L as a ris ta s d e a v a n c e f o r m a n u n g rafo ac íc lic o e n el q u e c a d a n o d o se p u e d e
a lc a n z a r d e s d e el n o d o inicial d e G.

2. L as a ris ta s d e re tro c e so c o n s ta n só lo d e las arista s c u y a s c a b e z a s d o m i n a n sus


colas.

E je m p lo 1 0 .9 . El g rafo d e flujo d e la figura 1 0 . 1 3 e s re d u c ib le . E n g e n e ra l, si se co ­


n o c e la re la c ió n d o m p a r a u n g ra fo d e flujo, se p u e d e n e n c o n t r a r y e lim in a r to d a s
las a ris ta s d e re tro c e so . L a s a ris ta s re s ta n te s d e b e n s e r las arista s d e a v a n c e si el g rafo
es re d u c ib le . y p a r a c o m p r o b a r si u n g rafo d e flujo es re d u c ib le . b asta c o n c o m p r o ­
b a r si las a ris ta s d e a v a n c e f o r m a n u n g rafo acíclico . E n el c a so d e la fig u ra 1 0 . 1 3 .
es fácil c o m p r o b a r q u e si se e lim in a n las c in c o a ris ta s d e re tro c e so 4 —> 7. 7 -* 4,
8 —> 3, 9 —> 1 y 1 0 - * 7, c u y a s c a b e z a s d o m i n a n a s u s colas, el g rafo r e s ta n te es
acíclico . □

E je m p lo 10.10. C o n s id é re s e el g rafo d e flu jo d e la figura 10.18, c u y o n o d o inicial


es 1. Este grafo d e flujo n o tiene aristas de retroceso, p u esto q u e n in g u n a cabeza d e un a

Fig. 10.18. U n grafo de flujo n o reducible.

a r is ta d o m i n a a la c o la d e d ic h a arista. P o r t a n t o , só lo p o d r ía s e r r e d u c ib le si el g rafo
c o m p le to fu era acíclico. P e r o c o m o n o lo es. el g rafo d e flu jo n o es re d u c ib le . D e
m a n e r a in tu itiv a , la ra z ó n d e q u e este g rafo d e flujo n o sea re d u c ib le es q u e se p u e d e
e n t r a r al la z o 2-3 p o r d o s sitios d iferen tes. los n o d o s 2 y 3.
10.4 LAZOS EN LOS G R A FO S DE FLU JO 625

L a p r o p i e d a d c l a v e d e lo s g r a f o s d e f l u j o r e d u c i b l e s p a r a el a n á l i s i s d e l a z o s es
q u e e n d ic h o s g ra fo s d e flu jo c a d a c o n j u n to d e n o d o s q u e in f o r m a lm e n te p o d ría ser
c o n s id e ra d o c o m o u n la z o d e b e c o n t e n e r u n a a r is ta d e re tro c e so . D e h e c h o , b a sta
c o n e x a m i n a r lo s l a z o s n a t u r a l e s d e a r i s t a s d e r e t r o c e s o p a r a e n c o n t r a r t o d o s lo s la ­
zos e n u n p r o g r a m a c u y o g r a f o d e f l u j o s e a r e d u c i b l e . P o r e l c o n t r a r i o , e l g r a f o d e
l l u j c r d e la f i g u r a 1 0 .1 8 t i e n e u n “ l a z o " q u e c o n s t a d e lo s n o d o s 2 y 3 , p e r o n o h a y
n i n g u n a a r i s t a d e r e t r o c e s o d e la c u a l s e a é s t e s u l a z o n a t u r a l . D e h e c h o , e s e “ l a z o "
tie n e d o s e n c a b e z a m i e n t o s , 2 y 3 , lo q u e h a c e q u e l a a p l i c a c i ó n d e m u c h a s t é c n i c a s
ile o p t i m a c i ó n d e c ó d i g o , c o m o la s p r e s e n t a d a s e n la s e c c i ó n 1 0 .2 p a r a t r a s l a d o d e
c ó d ig o y e lim in a c ió n d e v a ria b le s d e in d u c c ió n , n o s e a n a p lic a b le s d ir e c ta m e n te .
P o r f o r t u n a , la s e s t r u c t u r a s d e f l u j o d e c o n t r o l n o r e d u c i b l e s , c o m o la d e la f ig u ­
r a 1 0 .1 8 , a p a r e c e n t a n r a r a m e n t e e n la m a y o r í a d e lo s p r o g r a m a s q u e c o n v i e r t e n el
e s tu d io d e la z o s c o n m á s d e u n e n c a b e z a m ie n to e n p o c o im p o r ta n te . I n c lu s o h a y
le n g u a je s , c o m o B L I S S y M O D U L A 2 , q u e p e r m i t e n s ó l o p r o g r a m a s c o n g r a f o s d e
llu jo re d u c ib le s , y m u c h o s o tr o s le n g u a je s p r o d u c i r á n só lo g ra fo s d e flu jo re d u c ib le s
m ie n tra s n o se u tilic e n p ro p o s ic io n e s goto.

Ejemplo 10.11. V o l v i e n d o a l a f i g u r a 1 0 .1 3 , s e o b s e r v a q u e e l ú n i c o “ l a z o i n t e r n o " ,


es d e c i r , u n la z o s in s u b l a z o s , e s {7, 8 , 10}, el l a z o n a t u r a l c o n a r i s t a d e r e t r o c e s o
10 —> 7 . E l c o n j u n t o {4, 5 , 6 , 7 , 8 , 10} e s e l l a z o n a t u r a l d e 7 - > 4 . ( O b s é r v e s e q u e 8
y 10 p u e d e n a l c a n z a r 7 a t r a v é s d e la a r i s t a 1 0 - > 7 .) L a i n t u i c i ó n d e q u e (4 , 5 , 6 , 7}
f o r m a u n la z o e s e q u i v o c a d a , y a q u e 4 y 7 s e r í a n e n t r a d a s d e s d e el e x t e r i o r , i n c u m ­
p lie n d o el r e q u is ito d e u n a so la e n tr a d a . D ic h o d e o t r o m o d o , n o h a y r a z ó n p a r a
s u p o n e r q u e el c o n tro l e m p le a m u c h o tie m p o e n ir a lre d e d o r del c o n ju n to d e n o d o s
{4, 5 , 6 , 7}; e s t a n p l a u s i b l e q u e e l c o n t r o l p a s e a 8 d e s d e 7 m á s v e c e s q u e a 4 . I n c l u ­
y e n d o 8 y 10 e n el la z o , s e t i e n e m a y o r c e r t e z a d e h a b e r a i s l a d o u n a r e g i ó n m u y
tra n s ita d a del p ro g ra m a .
S i n e m b a r g o , h a y q u e r e c o n o c e r el p e l i g r o d e h a c e r s u p o s i c i o n e s s o b r e la f r e ­
c u e n c i a d e la s r a m i f i c a c i o n e s . P o r e j e m p l o , s i s e s a c a u n a p r o p o s i c i ó n i n v a r i a n t e d e
8 ó 10 e n e l l a z o ( 7 , 8 , 10} y d e h e c h o , el c o n t r o l s i g u i e r a la a r i s t a 7 4 en m ás
o c a sio n e s q u e 7 - » 8 , se in c re m e n ta ría re a lm e n te el n ú m e r o d e v eces q u e se e je c u ­
t a r a la p r o p o s i c i ó n t r a s l a d a d a . E n la s e c c i ó n 1 0 .7 s e e s t u d i a r á n m é t o d o s p a r a e v i t a r
e ste p r o b le m a .
D e s p u é s , e l la z o m á s g r a n d e e s {3, 4 , 5 , 6 , 7 , 8 , 10}, q u e e s e l la z o n a t u r a l d e
a m b a s a rista s 4 3 y 8 - » 3 . C o m o a n t e s , la i n t u i c i ó n d e q u e {3, 4} d e b e r í a c o n s i ­
d e r a r s e c o m o u n la z o i n c u m p l e e l r e q u i s i t o d e u n s o l o e n c a b e z a m i e n t o . E l ú l t i m o
la z o , el d e la a r i s t a d e r e t r o c e s o 9 - > 1, e s e l g r a f o d e f l u j o c o m p l e t o . □

H a y v a r i a s p r o p i e d a d e s ú t i l e s a d i c i o n a l e s d e lo s g r a f o s d e f l u j o r e d u c i b l e s , q u e se
p r e s e n t a r á n c u a n d o se e s t u d i e n lo s t e m a s d e b ú s q u e d a e n p r o f u n d i d a d y a n á l i s i s d e
i n t e r v a l o s e n la s e c c i ó n 1 0 .9 .
626 O P T IM A C IO N DE C O D IG O

10.5 I N T R O D U C C I O N A L A N A L I S I S G L O B A L
DEL FLUJO DE DATOS

Para realizar la optim ación de código y un buen trabajo de generación de código,


un co m p ilad o r necesita re u n ir in fo rm ació n sobre el program a com o un todo y d is­
trib u ir esta in fo rm ació n a cada bloque en el grafo de (lu jo . P o r ejem plo, en la sec­
ció n 9 .7 se v io que el co n o cim ien to de las variables que están activas a la salida de
cada bloque puede o p tim ar el uso de los registros. E n la sección 10.2 se su g irió cóm o
u tiliz a r el conocim iento de las subexpresiones com unes para e lim in a r cálcu lo s re­
dundantes. A sim ism o , en las secciones 9.9 y 10.3 se estudió có m o un com pilador
puede aprovechar las “ d efin icio nes de alcance” , co m o saber dónde se d efin ió por
ú ltim a vez una variab le com o d e p u r a antes de llegar a un bloque dado, para poder
realizar transform aciones com o el cá lcu lo previo de constantes y la e lim in a ció n de
código in activo . Estos hechos son sólo unos cuantos ejem plos de la inform ación de
flu jo d e d a to s que un co m p ilad o r o p tim ad o r reco pila m ediante un proceso llam ado
análisis d e flu jo d e datos.
L a in fo rm ació n del flu jo de datos se puede re co p ila r estableciendo y resolviendo
sistem as de ecuaciones que relacio n an la in fo rm ació n en varios puntos de un pro­
gram a. U n a ecuación típ ica tiene la form a

sa l [S ] = gen [5 ] u (e n t [5 ] - d esact [S1]) ( 10 .5 )

y se puede leer com o “ la in fo rm ació n al fin al de un a pro p o sició n se genera dentro


de la pro p o sició n o se introduce al com ienzo y no se desactiva cuan d o el control
fluye por la p ro p o sició n ” . D ich a s ecuaciones se d en o m in an ecuaciones d e flu jo de
datos. —
Los detalles sobre có m o se-plantean y resuelven las ecuaciones de flu jo de datos
dependen de tres factores:

1. Las nociones de generar y desactivar dependen de la in fo rm ació n deseada, es


decir, del problem a de a n álisis del flu jo de datos que debe resolverse. Adem ás,
para algunos problem as, en lugar de avan zar ju n to co n el flu jo del co ntro l y de­
fin ir ía / [ 5 ] según e n t [.S], hay que hacerlo hacia atrás y d e fin ir ent [5 ] según
sal [5 ].

2. C om o los datos fluyen a lo largo de cam inos de co n tro l, el a n álisis del flu jo de
datos está in flu id o p o r las construcciones de co ntro l en u n program a. D e hecho,
cuan d o se escribe sal[S], se asum e im plícitam ente que hay un punto fin a l ú n ico
donde el co ntro l sale de la p ro p o sició n ; en general, las ecuaciones se establecen
al n ivel de bloques básicos en lu g ar de proposiciones, porque los bloques tienen
puntos finales únicos.

3. A lgunas sutilezas acom pañan d ich as proposiciones co m o las llam adas a proce­
dim ientos, las asignaciones p o r m edio de variables tip o apuntador e in clu so las
asignaciones a variables de tip o m atriz.

E n esta sección se considera el problem a de determ inar el co n ju n to de d e fin icio ­


nes que alcanzan un punto en un program a y su uso para encontrar oportunidades
de hacer cá lcu lo previo de constantes. M ás adelante en este cap ítu lo , los algoritm os
10.5 IN T R O D U C C IO N AL A N A L IS IS C il.O liA l 1)11 I I D IO DI DA IOS 627

para traslado de código y la elim inación de variables de in d u cció n utilizarán lam


bien esta inform ación.
Inicialm ente se consideran program as construidos utilizando proposiciones if y
do-while. El flujo de control previsible en estas proposiciones perm ite concentrarse
en las ideas necesarias para establecer y resolver las ecuaciones de flu jo de datos. I as
asignaciones en esta sección son proposiciones de copia o de la form a a := b + c . En
este capítulo con frecuencia se utiliza “ + ” com o operador típico. I odo lo que se in ­
dique sirve directam ente para otros operadores, in cluid o s aquellos con un operando
o con más de dos operandos.

P u n to s y cam inos

Dentro de un bloque básico, se habla del p u n to entre dos proposiciones adyacentes,


al igual que del punto antes de la prim era proposición y después de la últim a. Por
tanto, el bloque de la figura 10.19 tiene cuatro puntos: uno antes de todas las
asignaciones y uno después de cada una de las tres asignaciones.

Fig. 10.19. U n grafo de flujo.

A continuación se considera una visión global y todos los puntos en la totalidad


de los bloques. U n camino desde p\ a p n es una secuencia de puntos p\, p 2, . . . , i>„
tal que para cada i entre 1 y n - 1,
1. p¡ es el punto que precede inm ediatam ente a una proposición y p¡+\ es el punto
que sigue inm ediatam ente a dicha proposición en el m ism o bloque, o
2. p¡ es el final de un bloque y p i+[ es el com ienzo de un bloque sucesor.

E n la figura 10.19 hay un cam ino desde el com ienzo del bloque H
E je m p lo 1 0 .1 2 .
hasta el com ienzo del bloque B 6. Pasa por el punto final de B s y después por tod o s
los puntos en B 2, B y y B¿, en orden, antes de alcanzar el com ienzo de B (). i i
628 O P T IM A C IO N DE C O D IG O

D efiniciones d e alcance

U na definición de una variable x es una proposición que asigna, o puede asignar, un


valor a x. Las form as más com unes de definición son las asignaciones a x y las pro­
posiciones que leen un valor de un dispositivo de E /S y lo alm acenan en x. Estas
proposiciones ciertam ente definen un valor para x , y se consideran definiciones no
am bigua s de x. Otras clases de proposiciones pueden d e fin ir un valor para x ; se de­
nom inan definiciones am biguas. Las form as más habituales de definiciones am bi­
guas de x son:

1. U na llam ada a un procedim iento con x com o parám etro (que no sea un pará­
metro p o r valo r) o un procedim iento que puede acceder a x porque x está den­
tro del ám bito del procedim iento. Tam bién hay que considerar la posibilidad de
los “ sinónim os” , donde x no está dentro del ám bito del procedim iento, pero x
se ha identificado con otra variable que se pasa com o parám etro o que está den­
tro del ám bito. Estos aspectos se estudian en la sección 10.8.

2. U n a asignación por m edio de un apuntador que pudiera referirse a x . Por ejem­


plo, la asignación * q := y es una definición de x si es posible que q apunte a x.
En la sección 10.8 tam bién se estudian los métodos para determ inar hacia dónde
podría apuntar un apuntador, pero en ausencia de un conocim iento en sentido
contrario, se debe asum ir que una asignación por m edio de un apuntador es una
definición de todas las variables.

Se dice que una definición d alcanza un punto p si hay un cam ino desde el punto
que sigue inm ediatam ente d hasta />, tal que d no se “ desactive” a lo largo del ca­
m ino. Intuitivam ente, si una definición d de una variable a alcanza el punto /?, en­
tonces d debe ser el lugar en el que el va lo r de a utilizado en p puede haber sido
definido por últim a vez. Se desactiva una definición de una variable a si entre dos
puntos a lo largo del cam ino hay una definición de a. Obsérvese que sólo las defi­
niciones no am biguas de a desactivan otras definiciones de a. Por tanto, un punto
puede ser alcanzado por una definición no am bigua y por una definición am bigua
de la m ism a variable que aparezca posteriorm ente a lo largo de un cam ino.
Por ejem plo, am bas definiciones, i: = m - l y j := n , en el bloque £ , de la figura
10.19 alcanzan el p rin cip io del bloque B 2, al igual que la definición j : = j —1 supo­
niendo que no haya asignaciones o lecturas de j en tf4, /?5, o en la parte de B y que
sigue a esta definición. Sin embargo, la asignación j en B y desactiva la definición
j := n , así que esta últim a no alcanza B 4, B 5 o B 6.
Si se form ulan así las d efiniciones de alcance, a veces surgen im precisiones. Sin
embargo, todas van en dirección “ segura” o “ conservadora” . P o r ejcm pld, obsérvese
nuestra suposición de que se pueden recorrer todas las aristas de un grafo de flujo.
Esto puede no ser cierto en la práctica. Por ejem plo, el control puede realm ente al­
canzar la asignación a : =4 en el siguiente fragm ento de program a para ningún valor
de a y de b.
i f a = b th e n a := 2
e l s e i f a = b th e n a : = 4
D e cid ir en general si se puede tom ar cada cam ino en un grafo de flu jo es un pro­
blem a indecidible, y no se intentará resolverlo.
10.5 IN T R O D U C C IO N AL. A N A L I S I S G L O B A L 1)11 M UJO DI D A IO S

U n tem a recurrente en el diseño de las transform aciones para m ejo rar el código
es que, ante la duda, sólo se deben to m ar decisiones conservadoras, aunque las es­
trategias conservadoras pueden im p ed ir la realización de transform aciones que no
suponen ningún peligro. U n a decisión es conservadora si nunca co n lleva un cam bio
en lo que ca lcu la el program a. E n aplicaciones de d efin icio nes de alcance, es co n ­
servador á su m ir que una d efin ició n puede alcan zar un punto, au n q ue no lo haga.
Por tanto, se perm iten cam inos que pueden no ser n u n ca reco rrid o s durante la eje­
cución de u n program a y se perm ite que las d efin icio nes atraviesen d efin icio nes am ­
biguas de la m ism a variable.

A n álisis d e flujo d e d a to s d e p r o g r a m a s e s t r u c tu r a d o s

Los grafos de flu jo para las construcciones de flu jo del co ntro l com o las pro po sicio ­
nes do-w hile tienen una propiedad ú til: hay un solo punto de com ienzo en el que el
control entra y u n solo p u n to fin al p o r el que sale el co ntro l cuando term ina la eje­
cución de la proposición. Esta propiedad se explota cuando se habla de que las de­
finiciones alcanzan el com ienzo y el final de proposiciones con la siguiente sintaxis:

S - > id : = E | S ; S | i f F. th e n S e ls e 5 1d o 5 w h ile E
E id + id | id

Las expresiones de este lenguaje son sim ilares a las del código interm edio, pero los
grafos de flu jo para las proposiciones tienen form as lim itadas sugeridas por lo s d ia­
gram as de la fig u ra 10.20. U n p ro p ó sito p rin c ip a l de esta secció n es e stu d ia r las
ecuaciones de flu jo de datos resum idas en la figura 10.21.

5, ; S2 ' f E then S , else S 2 do 5 , while E

Fig. 10.20. Algunas construcciones de control estructuradas.

Se define una parte de un grafo de flu jo denom inada región com o u n conjunto
de nodos N qu e in cluye un enca b eza m ien to , que d o m in a a todos los otros nodos de
la región. T o d as las aristas entre los nodos de N están en la región, excepto (tal vez)
alguno que entra al encabezam iento4. L a parte de un grafo de flu jo correspondiente
a una proposición S es una región que cum ple la lim ita ció n ad icio n al de que el co n ­
trol puede flu ir sólo a u n bloque exterio r cuan d o abandona la región.
P o r conveniencia técnica se supone que hay bloques falsos sin proposiciones (in ­
dicados por círcu lo s abiertos en la Fig. 10.20) a través de los cuales el co n tro l fluye
630 O P T IM A C IO N DE C O D IG O

j u s t o a n te s d e e n t r a r y j u s t o a n te s d e a b a n d o n a r la región. Se d ic e q u e los p u n to s d e
c o m ie n z o d e los b lo q u e s ficticios a la e n t r a d a y la salid a d e la reg ió n de u n a p ro p o ­
sició n son los p u n to s co m ien zo y fin. re s p e c tiv a m e n te , d e la p ro p o sició n .
L as e c u a c io n e s de la fig u ra 10.21 s o n u n a d e fin ic ió n in d u c tiv a , o d irig id a p o r la
sin tax is, d e los c o n ju n to s e n t [5 ], sa l [ 5 ] y desact [ 5 ] p a r a to d a s las p ro p o s ic io n e s S.
Los c o n j u n to s g en [ 5 ] y desacl [5 ] s o n a tr ib u to s s in te tiz a d o s; se c a lc u la n e n fo rm a
a s c e n d e n te , d e s d e las p ro p o s ic io n e s m á s p e q u e ñ a s a la s m á s g ran d es. Se d e s e a q u e

? gen [ 5 ] = {«/}
d : a : =b+c desact [S] = D . - [d]
T sal [5 ] = gen [5 ] u (in [5 ] - desacl [5])

gen [S2] u (gen [5,] - desact [52])


desact desact [S ¿ u (desact [ 5 ,J - gen [52|)
ent [5,] ent (5)
ent [S2] sa /lS i]
sal (¿1 sa l [S2\

gen \S) g e n [ S t]<j g e n [S 2]


desact [5] desact (.S',] n desact [S2]
ent [St] ent [S]
ent [5^] ent \S]
sal [ i ] sal [S i ) v sal [S2]

gen (5) gen [5,]


desact [.V] desacl [5,J
ent [5,] ent [5 ] u gen [5,]
sal [5] v a / [5,1

F ír. 1 0 .2 1 . Ecuaciones d e Hujo d e d a to s para definiciones de alcance.

la d e fin ic ió n d esté e n g en [ 5 ] si d a lc a n z a el fin d e 5 . in d e p e n d ie n te m e n te d e q u e


a lc a n c e o n o el c o m ie n z o d e 5 . D ic h o d e o t r a fo rm a , d d e b e a p a r e c e r e n 5 y a lc a n z a r
el fin d e S a trav és d e u n c a m i n o q u e n o salga d e 5 . E sta es la ju s tific a c ió n p a ra
s e ñ a la r q u e gen [ 5 ] es el c o n j u n t o d e d e fin ic io n e s “g e n e r a d a s p o r 5 " .
D e m a n e r a sim ilar, se p r e te n d e q u e desact [ 5 ] sea el c o n j u n t o d e d efin ic io n e s
q u e n u n c a a lc a n z a n el fin d e 5 . a u n q u e a lc a n c e n el c o m ie n z o . P o r ta n to , tie n e sen-

4 U n la z o e s u n c a s o e sp e c ia l d e u n a región fu e r te m e n te c o n e c ta d a e in c lu y e to d a s s u s a rista s de
r etro c e so d e n tr o d e l e n c a b e z a m ie n to .
10.5 IN T R O D U C C IO N A L A N A L IS IS G L O B A L 1)1.1 M U JO DI D A IO S <. >1

tido co n sid erar estas d e fin icio n e s co m o “ desactivadas p o r S " . Para que la d efin ició n
ti esté en desact [S], cada ca m in o desde el co m ienzo al fin de S debe tener una de­
fin ició n n o am bigua de la m ism a variab le d efin id a p o r d, y si d aparece en S . enton­
ces debe haber o tra d e fin ició n de la m ism a variab le siguiendo cada o cu rre n cia de d
ii lo largo de cu a lq u ie r ca m in o 5.
Las reglaS para gen y desací, siendo traduccio n es sintetizadas, son relativam ente
fáciles de entender. P ara com enzar, obsérvense las reglas de la figura 10.21 (a) para
una asignación sim p le a la variab le a. Evidentem ente, esta asignación es un a defi­
nición de a, p o r ejem plo, la d e fin ició n d. Entonces d es la ú n ica d e fin ició n qu e al­
canza el fin de la p ro p o sició n independientem ente de que alcan ce el com ienzo. Por
tanto,

gen [S] = { d }

Por otra parte, d "d esactiva” todas las otras d efin icio n es de a. así que se escribe

desact [5 ] = D . {d}

donde D a es el co n ju n to de todas las d efin icio n es en el program a para la va riab le a.


L a regla para un a cascada de proposiciones, qu e se ilu stra en la figura 10.21(b),
es un poco m ás su til. ¿E n qu é circu n stan cias la d e fin ició n d es generada p o r S = S j ;
,sy? P rim ero , si es generada p o r S 2, entonces es generada p o r S . Si d es generada por
.Sj, alcanzará el fin de S su p o n ien d o que S 2 no la desactive. A sí, se escribe

gen [S] = gen [S2] u (g e n [ S ,] - d e s a c t [S2])

Se ap lica n razonam ientos sim ilares a la desactivación de un a d e fin ició n , de m odo


que se tiene

desact [5] = desact[S2) u (desact [ S i l - g e n [S2]) .

Para la pro po sició n if. ilustrad a en la figura 10 .2 l(c ), se observa qu e si cu alq u iera
de las ram as del “ if ” genera u n a d e fin ició n , entonces esa d e fin ició n alcanza el fin de
la p ro po sició n S. P o r tanto,

gen [S] = gen [.Sj] u g e n [S2]

Sin em bargo, para “ desactivar” un a d e fin ició n d, la variab le d efin id a p o r d se debe


desactivar a lo largo de cu a lq u ie r cam in o qu e vaya desde el co m ienzo al fin a l de S.
Adem ás, se debe desactivar a lo largo de una de las ram as, de m odo que

desact [S] = desact [S,] n desact [S2]

Por últim o , considérense las reglas para los lazos de la figura 10 .2 l(d ). Puesto de
m anera sen cilla, el lazo n o afecta a g e n o desact. Si la d e fin ició n d se genera dentro
de S u entonces alcanza el fin a l de S , y el fin al de S . A la inversa, si d se genera den­
tro de 5 , sólo puede ser generada dentro de S ,. Si 5 , desactiva d, entonces recorrer

' En esta sección in tro d u c to ria se s u p o n e q u e to d a s las d efin icio n es son n o am big uas. L a sección
10.8 estu d ia las m o dificacio nes necesarias p a r a m a n e ja r d efin icio n es am biguas.
632 O P T IM A C IO N D E C O D IG O

el la z o n o se rv irá d e n a d a ; se re d e fin e la v a ria b le d e d d e n t r o d e S { c a d a vez q u e se


h a c e un re c o rrid o . A la in v e rsa, si S d e sa c tiv a d , e n to n c e s d e b e s e r d e s a c tiv a d a p o r
S \. L a c o n c lu s ió n es:

g en IS ] = g en [5 ,]
desaci [.S] = desact [ 5 ,]

E stim a c ió n co n se r v a d o r a d e la in fo rm a ció n so b r e e l flu jo d e d a to s

H a y u n e r r o r d e c á lc u lo su til en las reglas p a r a gen y desact d e la fig u ra 1 0 .2 1. S e h a


d a d o p o r s u p u e s to q u e la e x p re s ió n c o n d ic io n a l K e n las p ro p o s ic io n e s i f y d o n o se
in te r p r e ta n : es d ecir, ex isten e n tra d a s al p r o g r a m a q u e h a c e n q u e s u s r a m a s v a y a n a
u n a d e las d o s p a rte s. D ic h o d e o tr a fo rm a , se s u p o n e q u e c u a lq u ie r c a m i n o d e la
te o ría d e g ra fo s e n el d ia g ra m a d e flu jo es ta m b ié n u n ca m in o d e ejecución . e s decir,
u n c a m i n o q u e se re c o rre c u a n d o se e je c u ta el p r o g r a m a c o n al m e n o s u n a e n tr a d a
posible.
Este n o s ie m p re es el caso , y d e h e c h o n o se p u e d e d e c id ir en g en eral si se p u e d e
o n o t o m a r u n a ra m ific a c ió n . S u p ó n g a se , p o r e je m p lo , q u e la e x p re sió n E e n u n a
p ro p o s ic ió n i f fu era s ie m p r e v e rd a d e ra . E n to n c e s n u n c a p o d r ía to m a r s e el c a m i n o a
tra v é s d e S 2 en la fig u ra 10.2 l(c). E sto tie n e d o s c o n s e c u e n c ia s . P r im e ro , u n a d e fi­
n ic ió n g e n e ra d a p o r S 2 n o r e a lm e n te g e n e ra d a p o r 5 . p o r q u e n o h a y fo rm a d e llegar
d e sd e el c o m ie n z o d e S a la p ro p o s ic ió n S 2. S e g u n d o , n in g u n a d e fin ic ió n d e n t r o d e
d e s a c t [.S ] p u e d e a l c a n z a r e l f i n d e S 1. P o r t a n t o , c a d a d e f i n i c i ó n d e e s t e t i p o d e b e r í a
e s ta r ló g ic a m e n te e n desact [5 ], a u n q u e n o esté e n desact [S^j.
C u a n d o se c o m p a r a el c o n j u n t o g en c a l c u la d o c o n el "v e rd a d e ro * ’ gen. se d e s ­
c u b re q u e el g en v e rd a d e r o e s s ie m p re u n s u b c o n ju n to del g en c a lc u la d o . P o r o tr a
p a rte , el desact v e rd a d e r o e s s ie m p r e u n s u p r a c o n ju n t o del desact c a lc u la d o . Estas
c o n t e n c io n e s se a p lic a n in c lu s o d e s p u é s d e c o n s id e r a r las o tr a s reg las d e la fig u ­
r a 10.21. P o r e jem p lo , si la ex p resió n £ e n u n a p ro p o sició n d o -.S -w h iIe-/f n u n c a pued e
s e r falsa, e n to n c e s n u n c a se sa ld rá del lazo. P o r t a n t o , el g en v e rd a d e r o e s 0 , y to d a
d e fin ic ió n es d e s a c tiv a d a p o r el lazo. El c a so d e u n a c a s c a d a d e p ro p o s ic io n e s, e n la
fig u ra 1 0 .2 l(b ). d o n d e se d e b e te n e r e n c u e n t a la im p o s ib ilid a d d e salir d e .Sj o de
S 2 d e b id o a u n la z o in fin ito , se d e ja c o m o e je rc ic io p ráctico .
Es n a tu ra l p re g u n ta rs e si e s ta s d ife re n c ia s e n tr e los c o n j u n t o s gen y desact ver­
d a d e ro s y c a lc u la d o s o b s ta c u liz a n el a n álisis del flu jo d e d a to s. L a re s p u e s ta está en
el u s o q u e se h ag a d e e so s d a to s . E n el c a so d e las d e fin ic io n e s d e alcan ce, n o r m a l­
m e n te se u ti,:za la in f o r m a c ió n p a r a in fe rir q u e el v a lo r d e u n a v a ria b le x e n un
p u n t o se lim ita a u n n ú m e r o p e q u e ñ o d e p o sib ilid a d e s. P o r e je m p lo , si re su lta q u e
las ú n ic a s d efin icio n es d e x q u e a lc a n z a n este p u n t o son d e la fo rm a x : = 1. se p u e d e
in fe rir q u e x tie n e el v a lo r 1 e n ese p u n t o . P o r ta n to , se p u e d e d e c id ir s u s titu ir las
referen cias a x p o r re fe re n c ia s a 1.
C o m o c o n se c u e n c ia , n o p arece serio s o b re e stim a r el c o n ju n to d e d efin ic io n e s q u e
a lc a n z a n u n p u n to ; s im p le m e n te im p id e re a liz a r u n a o p ti m a c i ó n q u e se p o d r ía h a ­
c e r le g ítim a m e n te . P o r o tr a p a rte , s u b e s tim a r el c o n j u n t o d e d e fin ic io n e s es u n e rro r
fatal; p o d r ía c o n d u c i r a u n c a m b i o e n el p r o g r a m a q u e m o d i f iq u e lo q u e el p r o ­
g r a m a c a lc u la . P o r e je m p lo , se p u e d e p e n s a r q u e to d a s las d e fin ic io n e s d e a lc a n c e
d e x d a n a x el v a lo r d e I, y p o r t a n t o se s u stitu y e x p o r 1; p e r o ex iste o tr a d e fin ició n
10.5 IN T R O D U C C IO N A L A N A L IS IS G L O B A L D E L F L U JO D E D A TO S 633

d e a lc a n c e n o d e te c ta d a q u e d a a x el v a lo r d e 2. E n to n c e s , p a r a el c a so d e las d e fi­
n ic io n e s d e alcan ce, se d ic e q u e u n c o n j u n t o d e d e fin ic io n e s es seguro o conservador
si la e s tim a c ió n es u n s u p r a c o n ju n to ( n o n e c e s a ria m e n te u n s u p r a c o n ju n t o p ro p io )
del c o n ju n to v e rd a d e r o d e d e fin ic io n e s d e a lc a n c e . L a e s tim a c ió n se d e n o m i n a in ­
segura si n o es n e c e s a ria m e n te u n s u p r a c o n ju n t o d e l v e rd a d e ro .
P a r a c a d a p r o b le m a d e flu jo d e d a to s se d e b e e x a m i n a r el efecto d e las e s tim a ­
c io n e s im p recisas so b re los tip o s d e c a m b io s q u e p u e d a n c a u s a r e n los p ro g ra m a s.
G e n e r a lm e n te se a c e p ta n d is c re p a n c ia s q u e sean seguras e n el s e n tid o d e q u e p u e ­
d a n p r o h ib ir o p tim a c io n e s q u e se p o d r ía n h a c e r le g a lm e n te , p e r o n o se a c e p ta n dis­
c r e p a n c ia s q u e se a n inseguras en el s e n tid o d e q u e p u e d a n c a u s a r “ o p tim a c io n e s "
q u e n o p re se rv e n el c o m p o r t a m i e n t o o b s e r v a d o d e s d e el e x te rio r del p ro g ra m a . E n
c a d a p ro b le m a d e flujo d e d a to s, n o r m a lm e n te u n c o n ju n to o u n s u p r a c o n ju n to (pero
n o a m b o s ) d e la re sp u e sta v e rd a d e r a e s seguro.
V o lv ie n d o a las im p lic a c io n e s d e s e g u rid a d s o b re la e s tim a c ió n d e g en y desact
p a ra las d efin icio n es d e alcan ce, obsérvese q u e las discrep an cias, s u p ra c o n ju n to s para
g en y s u b c o n ju n to s p a r a desact están a m b a s e n la d ire c c ió n segura. I n tu itiv a m e n te ,
in c re m e n ta r gen a u m e n ta el c o n ju n to d e d efin ic io n e s q u e p u e d e n a lc a n z a r u n p u n to ,
y n o p u e d e im p e d ir q u e u n a d e fin ic ió n a lc a n c e u n lu g a r q u e r e a lm e n te a lc a n z ó . A si­
m is m o , r e d u c ir desact só lo p u e d e in c r e m e n ta r el c o n j u n t o d e d e fin ic io n e s q u e al­
can zan u n p u n to dado.

C álcu lo de ent y sal

M u c h o s p ro b le m a s d e flu jo d e d a to s se p u e d e n reso lver m e d ia n te tra d u c c io n e s s in ­


te tiz a d a s sim ilares a las u tiliz a d a s p a r a c a lc u la r # ? /! y desact. P o r e je m p lo , se p u e d e
p r e te n d e r d e te r m in a r , p a r a c a d a p ro p o s ic ió n 5 , el c o n j u n t o d e v a ria b le s d efin id as
d e n t r o d e S. E sta in f o r m a c ió n se p u e d e c a lc u la r c o n e c u a c io n e s a n á lo g a s a las d e
gen, sin ni siq u ie ra ser n ecesario s c o n j u n to s a n á lo g o s a desact. Se p u e d e u tiliz ar, p o r
e je m p lo , p a ra d e t e r m i n a r cá lc u lo s d e lazo in v a ria n te .
S in e m b a r g o , h a y o tr o s tip o s d e in f o r m a c ió n s o b re el flu jo d e d a to s , c o m o el p ro ­
b le m a d e la s d e f in ic io n e s d e a lc a n c e q u e fue u tiliz a d o c o m o e je m p lo , d o n d e t a m ­
b ié n h a y q u e c a lc u la r a lg u n o s a tr i b u to s h e re d a d o s . R e s u lta q u e ent e s u n a trib u to
h e re d a d o y q u e sa l es u n a t r i b u t o s in te tiz a d o q u e d e p e n d e d e ent. S e p r e te n d e q u e
ent [ S 1 sea el c o n j u n t o d e d e fin ic io n e s q u e a lc a n z a n el c o m ie n z o d e S te n ie n d o en
c u e n ta el flujo del c o n tro l a lo largo d e t o d o el p r o g r a m a , in c lu id a s las p ro p o s ic io n e s
fuera d e 5 o d e n t r o d e la q u e S está a n id a d a . El c o n j u n t o sa l [ 5 ] se d e f in e d e m a n e r a
s im ila r p a r a el final d e S. E s i m p o r t a n t e o b s e r v a r la d is tin c ió n e n tr e stf/[S] y
E ste ú ltim o es el c o n j u n t o d e d e fin ic io n e s q u e a lc a n z a n el final d e S sin seg u ir c a ­
m in o s fuera d e S.
C o m o e je m p lo d e la d ife re n c ia , c o n sid é re se la c a s c a d a d e p ro p o s ic io n e s e n la fi­
g u r a 1 0 .2 l(b ). U n a p ro p o s ic ió n d p u e d e s e r g e n e r a d a en S , y p o r t a n t o a lc a n z a r el
c o m ie n z o d e S 2. Si d n o está en desact [S 2]. d a lc a n z a r á el final d e S 2. y p o r t a n t o
e s ta rá en sa l [S2], S in e m b a r g o , d n o está en gen [S2].
D esp u és d e c a lc u la r # ? /! [S] y desact [S] d e f o r m a a s c e n d e n te , p a r a to d a s las p r o ­
p o s ic io n e s S se p u e d e c a lc u la r ent y s a l c o m e n z a n d o p o r la p ro p o sic ió n q u e r e p re ­
s e n ta el p r o g r a m a c o m p le to , s a b ie n d o q u e ent [S„] = 0 si S (t es el p ro g ra m a c o m -
634 O P T IM A C IO N DE C O D IG O

p le to . E s d ecir, n in g u n a d e fin ic ió n a lc a n z a el p r in c ip io del p ro g ra m a . P a r a c a d a u n o


d e los c u a t r o tip o s d e p ro p o s ic io n e s d e la figura 10.21. se p u e d e s u p o n e r q u e se c o ­
n o c e e n t [S ]. Se d e b e u tiliz a r p a r a c a lc u la r e n t p a r a c a d a u n a d e las su b p ro p o sic io -
nes d e S [lo c u a l es trivial e n los c a s o s (b) a (d ) e irre le v a n te en el c a so (a)]. D espués,
r e c u rs iv a m e n te (d e fo rm a d e s c e n d e n te ) se c a lc u la sa l p a r a c a d a u n a d e las su b p ro -
p o s ic io n e s S i o S 2. y se u tiliz an e s to s c o n j u n t o s p a r a c a lc u la r s a l [5].
El c a s o m á s s e n c illo e s la fig u ra 10.21 (a), d o n d e la p r o p o s ic ió n e s u n a a s ig n a ­
ción. S u p o n ie n d o q u e se c o n o c e e n t [S ]. se c a lc u la sa l m e d ia n te la e c u a c ió n (1 0 .5 ).
e s d e c ir

sa l [ 5 ] = gen [S] u (en t [S] - desact [ 5 ] )

E n p a la b ra s, u n a d e fin ic ió n a lc a n z a el fin al d e 5 si es g e n e ra d a p o r S (es d ecir, es la


d e fin ic ió n d q u e es la p ro p o s ic ió n ), o a lc a n z a el c o m ie n z o d e la p ro p o s ic ió n y n o es
d e s a c tiv a d a p o r la p ro p o sició n .
S u p ó n g a s e q u e se h a c a lc u la d o ent [5 ) y q u e S es la c a s c a d a d e d o s p ro p o s ic io n e s
S t: S 2, c o m o en el s e g u n d o c a so d e la figura 10.21. Se c o m ie n z a p o r o b s e r v a r q u e
e n t [ 5 , ] = e n t [S2]. D e s p u é s , r e c u r s i v a m e n t e se c a l c u la sa l [S i), q u e d a ent [ S 2],
p u e s to q u e u n a d e fin ic ió n a lc a n z a el c o m ie n z o d e S 2 si, y só lo si, a lc a n z a el final de
S |. A h o r a se p u e d e c a lc u la r r e c u rs iv a m e n te sal [S2], y este c o n ju n to es igual a sa l [S].
A c o n tin u a c ió n c o n sid é re se la p ro p o s ic ió n i f d e la figura 10.2 l(c). C o m o se a s u ­
m ió c o n s e r v a d o r a m e n te q u e el c o n tro l p u e d e flu ir p o r c u a l q u ie r r a m a , u n a d e fin i­
c ió n a lc a n z a el c o m ie n z o d e S ( o S 2 e x a c ta m e n te c u a n d o a lc a n z a el c o m ie n z o d e 5.
E s decir.

ent [S ,] = e n t [S2] = ent [S]


T a m b ié n se d e riv a del d ia g ra m a d e la figura 1 0 .2 l(c) q u e u n a d e fin ic ió n a lc a n z a el
final d e S si. y só lo si. a lc a n z a el fin al d e u n a o d e a m b a s s u b p ro p o s ic io n e s : es decir.

sa l [ 5 ] = s a U S ^ v sal [S2]

P o r ta n to , se p u e d e n u tiliz a r e s ta s e c u a c io n e s p a r a c a lc u la r ent [.S,] y ent [ S 2) a p a r tir


d e ent [ 5 ] . c a lc u la r r e c u rs iv a m e n te s a l [S\] y s a l[ S 2]. y d e s p u é s u tiliz a r ésto s p a ra
c a lc u la r sa l [S].

U tiliz a c ió n d e la z o s

El ú l t i m o c a s o , la fig u ra 1 0 .2 1(d), p r e s e n ta p r o b le m a s esp ecífico s. S u p ó n g a s e d e


n u e v o q u e se tie n e n g en [£»] y desact [ S ■]. h a b ié n d o lo s c a lc u la d o d e f o r m a a s c e n ­
d e n te , y s u p ó n g a s e q u e se tien e ent [S |] y q u e se está en el p ro c e s o d e re a liz a r u n
re c o rrid o e n p r o f u n d id a d del á rb o l d e a n álisis s in tá c tic o . A d ife re n c ia d e los casos
(b) y (c). n o se p u e d e u tiliz ar s im p le m e n te ent [ 5 ] c o m o ent [S i], p o r q u e las d e fin i­
c io n e s d e n t r o d e q u e a lc a n z a n el final d e S i p u e d e n seg u ir el a r c o d e regreso al
c o m ie n z o d e S¡. y p o r t a n t o , estas d e fin ic io n e s ta m b ié n e s tá n e n ent [ S J . E n lugar
d e eso . se tien e
ent [S i] = e n t [S J u sa l [S ,] (1 0 .6 )

T a m b i é n s e t i e n e la e c u a c i ó n o b v i a p a r a sa l [5]:

s a l [ S I = s a l l S t]
10.5 IN T R O D U C C IO N A L A N A L IS IS G L O B A L D E L F L U JO DE D A T O S 635

q u e se p u e d e u tiliz a r u n a v ez q u e se h a y a c a lc u la d o sal [Si]. S in e m b a r g o , p arece


q u e n o se p u e d e c a lc u la r ent [S ,] p o r m e d io d e (1 0.6) h a s ta q u e se h a y a c a lc u la d o
sa l [ £ |] . y el p la n g e n e ra l h a sid o c a lc u la r sa l p a r a u n a p ro p o s ic ió n , c a lc u la n d o p ri­
m e r o e n t p a r a d ic h a p ro p o s ic ió n .
P o r f o rtu n a , hay u n a m a n e r a d ire c ta d e e x p re sa r sa l e n té r m in o s d e ent: v ie n e
d a d a p o r (10 .5), o e n este c a so co n c re to :

sa l [S\] = g en [S i] u (ent [ S J - desact [S |] ) (1 0.7)

Es im p o r ta n te c o m p r e n d e r lo q u e e s tá o c u r r ie n d o en este c a s o . E n re a lid a d n o
se sa b e q u e (1 0 .7 ) e s v e rd a d e ra c o n re sp e c to a u n a p ro p o s ic ió n a r b itr a r ia S f , só lo se
s o sp e c h a q u e d e b e s e r v e rd a d e r a p o r q u e “ tie n e s e n tid o " q u e u n a d e fin ic ió n a lc a n c e
el final d e u n a p ro p o s ic ió n si, y só lo si, es g e n e ra d a d e n t r o d e la p ro p o s ic ió n o al­
c a n z a el c o m ie n z o y n o es d e s a c tiv a d a . S in e m b a r g o , la ú n ic a f o r m a q u e se c o n o c e
d e c a lc u la r s a l p a r a u n a p ro p o s ic ió n e s m e d ia n te las e c u a c io n e s d a d a s e n la figura
1 0 .2 l( a ) a la (c). S e a s u m e (1 0 .7 ) y se d e riv a n las e c u a c io n e s p a r a ent y sa l d e la
figura 10.21 (d). D e s p u é s se p u e d e n u tiliz a r las e c u a c io n e s d e la figura 10.21 (a) a la
(d ) p a r a d e m o s t r a r q u e (1 0 .7 ) se c u m p le p a r a u n a S1, a rb itra ria . D e s p u é s se p o d ría n
r e u n ir estas p r u e b a s p a r a h a c e r u n a d e m o s tr a c ió n v álid a p o r in d u c c ió n so b re el ta ­
m a ñ o d e u n a p ro p o s ic ió n S q u e la e c u a c ió n (1 0 .7 ) y to d a s las e c u a c io n e s d e la figura
10.21 se c u m p le n p a r a S y to d a s s u s su b p ro p o sic io n e s . N o se h a r á así; se d e ja n las
d e m o s tr a c io n e s c o m o ejercicio , p e ro el r a z o n a m ie n t o q u e se h a a d o p t a d o a q u í d e b e
re s u lta r in stru c tiv o .
In c lu s o a s u m i e n d o (1 0 .6 ) y (1 0 .7 ) n o se h a n re su e lto to d o s los p ro b le m a s . E stas
d o s ec u a c io n e s d efin en u n a recu rren cia p a ra ent f.S',] y s a l [Si] s im u ltá n e a m e n te . Las
e c u a c io n e s se rcescrib irán c o m o

e= F u A
A = G u ( E — D) {ÍVm*}

d o n d e K. A. F. G y D c o rre s p o n d e n a e n t [S i], sa l [ S i], ent [S]. gen [S ,] y desact [St].


re s p e c tiv a m e n te . L as d o s p r im e r a s s o n v ariab les, las o tra s tr e s s o n c o n stan tes.
P a ra reso lver (10.8). s u p ó n g a s e q u e A = 0 . E n to n c e s se p o d r ía u tiliz a r la p ri­
m e r a e c u a c ió n d e (1 0 .8 ) p a r a c a lc u la r u n a e s tim a c ió n d e E, es decir,

El = F

A c o n tin u a c ió n se p u e d e u tiliz a r la s e g u n d a e c u a c ió n p a r a o b te n e r u n a m e jo r esti­


m a c ió n d e A :

A 1 = G u (E ] - D) = G’ u ( F - D)

A p lic a n d o la p r im e r a e c u a c ió n a esta n u e v a e s tim a c ió n d e A se o b tie n e :

E2 = F u A 1 = F u G u (F - D) = F u G

Si se rcaplica la s e g u n d a e c u a c ió n , la sig u ie n te e s tim a c ió n d e A es:

A2 = G u ( E 2 - D) = G u ( F u G - D) = G u ( F - D)
636 O P T IM A C IO N D E C O D IG O

O b sé rv e se q u e A 2 - A 1. P o r ta n to , si se c a lc u la la sig u ie n te e s tim a c ió n d e £ , será


igual a £ ' , lo c u a l d a r á o t r a e s tim a c ió n d e A igual a A \ y a s í s u c e s iv a m e n te . D e ese
m o d o , los v alo res lim ita d o re s p a r a E y A son los d a d o s a n te r io r m e n te p o r £ ' y A '.
P o r ta n to , se h a n o b te n id o las e c u a c io n e s d e la fig u ra 10.21 (d), q u e son

em |.V»1 = ent [ 5 ] u gen US', ]


s a l[ S ) = sa l [.S',]

La p r im e ra d e estas e c u a c io n e s p ro v ie n e del c á lc u lo a n te r io r , la s e g u n d a p ro v ie n e
del e x a m e n del g ra fo d e la fig u ra 10.2 l(d).
Q u e d a el d e ta lle d e p o r q u é se p u d o e m p e z a r p o r la e s tim a c ió n d e A = 0 . R e­
c u é rd e se q u e e n el e s tu d io de las e s tim a c io n e s c o n s e rv a d o ra s se su g irió q u e los c o n ­
j u n t o s c o m o s a l l S i], al q u e r e p re s e n ta A . d e b e r ía n ser s o b re e s tim a d o s e n lu g a r d e
s u b e s tim a d o s . D e h e c h o , si h u b ie r a q u e c o m e n z a r c o n A = {*/}, d o n d e d es u n a d e ­
fin ició n q u e n o a p a re c e ni e n F. G o D . e n to n c e s d c o n c lu iría e n los v alo res lim ita ­
d o re s d e E y d e A.
E n este caso, se d e b e n in v o c a r los sig n ificad o s p a r a e n t y sal. Si tal d re a lm e n te
p e rte n e c ie ra a e n t [S i], te n d ría q u e h a b e r u n c a m i n o d e s d e d o n d e e stu v ie ra d al co­
m ie n z o d e S i q u e m o s tr a ra c ó m o a lc a n z a d ese p u n to . Si d e stu v ie ra fu era d e S.
e n t o n c e s D t e n d r í a q u e e s t a r e n e n t [ S ] , e n t a n t o q u e si d e s tu v i e r a d e n t r o d e S
(y p o r ta n to d e n tro d e S i) te n d ría q u e e s ta r e n gen [S ,]. E n el p r im e r caso, ¿/estaría en
F y p o r t a n t o se c o lo c a ría e n E m e d ia n te (10 .8). E n el s e g u n d o caso , d e sta ría e n G
y d e n u e v o se tr a n s m itir ía a £ a trav és d e A e n (10 .8). L a c o n c lu s ió n es q u e c o m e n ­
z a r c o n u n a e s tim a c ió n d e m a s ia d o p e q u e ñ a y c o n s tr u i r d e fo rm a a s c e n d e n te a ñ a ­
d ie n d o m a s d e fin ic io n e s a £ y A es u n a fo rm a seg u ra d e e s ti m a r ent [S |].

R e p r e se n ta c ió n d e co n ju n to s

Los c o n j u n to s d e d e fin ic io n e s, c o m o g en [S ] y desact [5“), se p u e d e n re p re s e n ta r d e


fo rm a c o m p a c ta u tiliz a n d o vecto res d e bits. S e asig n a u n n ú m e r o a c a d a d e fin ició n
d e in te ré s e n el g rafo d e flujo. E n to n c e s el v e c to r d e b its q u e r e p re s e n ta u n c o n ju n to
d e d e fin ic io n e s te n d r á u n I e n la p o sic ió n i si. y só lo si, la d e fin ic ió n n u m e r a d a con
/ e s t á e n el c o n ju n to .
El n ú m e r o d e u n a p ro p o sic ió n d e d e fin ic ió n se p u e d e t o m a r c o m o el ín d ic e d e
la p ro p o s ic ió n e n u n a m a tr iz q u e c o n te n g a a p u n t a d o r e s a p ro p o s ic io n e s . S in e m ­
b a rg o . n o to d a s las d e fin ic io n e s p u e d e n s e r d e in te ré s d u r a n te el a n álisis g lo b a l d e
flujo d e d a to s. P o r e je m p lo , n o h a c e falta a s ig n a r n ú m e r o s a la s d e fin ic io n e s d e te m ­
p o rales utilizadas ú n ic a m e n te d e n t r o de u n so lo blo q ue, c o m o la m a y o ría d e te m p o ­
rales g e n e r a d o s p a r a la e v a lu a c ió n d e ex p resio n es. P o r t a n t o , los n ú m e r o s d e las d e ­
fin icio n es d e in te ré s se re g istra rá n n o r m a l m e n t e e n u n a ta b la ap arte.
U n a re p re s e n ta c ió n d e c o n j u n to s m e d ia n te u n v e c to r d e b its p e r m itir á ta m b ié n
q u e las o p e r a c io n e s d e c o n j u n to s se im p la n te n e fic ie n te m e n te . La u n ió n y la in te r ­
sección d e d o s c o n ju n to s se p u e d e im p la n t a r m e d ia n te las o p e ra c io n e s ló g icas o r y
an d . re s p e c tiv a m e n te , q u e son o p e r a c io n e s b ásicas en la m a y o ría d e lo s len g u ajes de
p r o g ra m a c ió n o r ie n ta d o s a sistem as. La d ife re n c ia A — tí d e los c o n j u n to s A y tí
se p u e d e i m p l a n t a r t o m a n d o el c o m p le m e n to d e tí y u tiliz a n d o d e s p u é s an d lógico
p a r a c a lc u la r A A->tí.
10.5 IN T R O D U C C IO N A L A N A L IS IS G L O B A L D L L F L U JO D E D A TO S 637

E je m p lo 1 0 .1 3 . E n la figura 10.22 se m u e s tr a u n p r o g r a m a c o n siete d e fin ic io n e s,


in d ic a d a s p o r </, h a s ta d 7 e n los c o m e n ta r io s a la iz q u ie r d a d e las d e fin ic io n e s. Los
v ecto res d e b its q u e re p re s e n ta n los c o n j u n t o s gen y desact p a r a las p ro p o s ic io n e s d e
la figura 10.22 se m u e s tr a n a la iz q u ie r d a d e lo s n o d o s del á rb o l s in tá c tic o d e la fi­
g u r a 10.23. L o s m is m o s c o n j u n to s fu e ro n c a lc u la d o s a p lic a n d o las e c u a c io n e s p a ra
fiu jo d e d a to s d e la fig u ra 10.21 a la s p ro p o s ic io n e s re p re s e n ta d a s p o r los n o d o s del
árb o l sintáctico .

/* d , */ i := m -1 ;
/* d ; */ j :- n;
/ • d i */ a := u l;
do
/ • d i •/ i := i+ 1 ;
/* d i • / j := j - 1 ;
i f e l th e n
/* d* */ a := u2
e lse
/* d , */ i : = u3
w h i l e e2

Fig. 10.22. P ro gram a para ilustrar definiciones d e alcance.

C o n s id é re s e el n o d o p a ra d i e n el á n g u lo in ferio r d e r e c h o d e lá fig u ra 10.23. El


c o n j u n t o g en {d7} v ie n e re p re s e n ta d o p o r 0 0 0 0001 y el c o n j u n t o desact {d¡. d 4] p o r
100 1000. E s d ecir, d 7 d e s a c tiv a to d a s las o tr a s d e fin ic io n e s d e /. su variable.
El s e g u n d o y el te rc e r h ijo d e l n o d o ¡f re p re s e n ta n las p a rte s th e n y e ls e . respec­
tiv a m e n te . d e l c o n d ic io n a l. O b sérv ese q u e el c o n j u n t o gen 0 0 0 0011 e n el n o d o i f es

111 0000
0 00 111
110 0000
000 1101
0 0 1 0000'
100 00 00 0 00 0010 0 00 11
000 1001
000 0100

000 1000
100 0001 í4
d7
0 00 0 0 1o 000 0 0 0 1
001 0000 100 1000

F ig . 1 0 .2 3 . Los conjun tos gen y desact e n lo s n o d o s d e u n árbol sin táctico.


638 O PTIM A CIO N DE CO DIG O

la u n ió n d e lo s c o n j u n to s 0 0 0 0 0 1 0 y 0 0 0 0001 e n el s e g u n d o y te rc e r hijos. El c o n ­
j u n t o desact está vacío p o r q u e las d e fin ic io n e s d e s a c tiv a d a s p o r las p a rte s th e n y e ls e
s o n d is ju n ta s .
L as e c u a c io n e s d e flu jo d e d a to s p a r a u n a c a s c a d a d e p ro p o s ic io n e s se a p lic a n al
p a d re d e l n o d o if. El c o n j u n t o desact e n este n o d o se o b tie n e p o r

000 0000 u (110 0001 - 000 0011) = 110 0000


E n p a la b ra s, n a d a es d e s a c tiv a d o p o r el c o n d ic io n a l y d i, d e s a c tiv a d o p o r la p r o p o ­
sició n dA, e s g e n e r a d o p o r el c o n d ic io n a l, d e m o d o q u e só lo d t y d 2 e s tá n en el c o n ­
j u n t o desact del p a d r e d e l n o d o if.
A h o ra se p u e d e c a lc u la r ent y sal, c o m e n z a n d o d e s d e a r r ib a en el á rb o l d e a n á ­
lisis s in tá c tic o . S e s u p o n e q u e el c o n j u n t o ent e n la raíz d e l á rb o l s in tá c tic o está v a ­
cío. P o r ta n to , el c o n j u n t o sal p a r a el h ijo iz q u ie r d o d e la ra íz e s el c o n j u n t o gen
p a r a d ic h o n o d o , o 111 0 0 0 0 . E ste e s ta m b ié n el v a lo r d e l c o n j u n t o ent en el n o d o
d o. S eg ú n las e c u a c io n e s d e flu jo d e d a to s a s o c ia d a s c o n la p ro d u c c ió n d o d e la fi­
g u r a 10.21. el c o n j u n t o ent p a r a la p ro p o s ic ió n d e n t r o del la z o d o se o b ti e n e to ­
m a n d o la u n ió n del c o n ju n to ent 111 0000 e n el n o d o d o y el c o n ju n to gen 000 1111
e n la p ro p o s ic ió n . L a u n ió n p r o d u c e 111 1111, d e m o d o q u e to d a s las d e fin ic io n e s
p u e d e n a lc a n z a r el c o m ie n z o del c u e r p o del lazo. S in e m b a rg o , e n el p u n t o ju s to
a n te r io r a la d e fin ic ió n d 5. el c o n j u n t o ent e s 011 1110. ya q u e la d e fin ic ió n d A d e ­
sa c tiv a í/, y d i. El e q u ilib rio d e los cá lc u lo s ent y sa l se d e ja c o m o e jercicio . □

D e fin ic io n e s d e a lc a n c e lo ca l

El e s p a c io p a r a la in f o r m a c ió n so b re el flu jo d e d a to s se p u e d e c a m b ia r p o r tie m p o ,
g u a r d a n d o in f o r m a c ió n sólo e n c ie rto s p u n to s y re c a lc u la n d o la in f o r m a c ió n e n los
p u n to s in te r m e d io s c u a n d o sea n ecesario . L o s b lo q u e s b ásico s se c o n s id e r a n g e n e ­
r a lm e n te c o m o u n a u n id a d d u r a n t e el a n álisis g lo b a l d e flujo, lim it a n d o la a te n c ió n
só lo a a q u e llo s p u n to s q u e estén al c o m ie n z o d e los b lo q u e s. C o m o g e n e ra lm e n te
h a y m u c h o s m á s p u n to s q u e b lo q u e s, lim ita r el e s fu e rz o a los b lo q u e s es u n a h o r r o
significativo. C u a n d o se n e c e site n , las d e fin ic io n e s d e a lc a n c e p a r a to d o s los p u n to s
d e u n b lo q u e se p u e d e n c a lc u la r a p a r ti r d e las d e fin ic io n e s d e a lc a n c e p a r a el co ­
m ie n z o del blo qu e.
C o n m á s d e ta lle , c o n sid é re se u n a s e c u e n c ia d e a sig n a c io n e s 5 | . ; S„ en
u n b lo q u e básico B. El c o m ie n z o d e B es el p u n t o plh el p u n t o e n tr e las p ro p o s ic io ­
nes S, y 1, p, y el final del b lo q u e el p u n t o p„. L as d e fin ic io n e s q u e a lc a n z a n el
p u n to p, se p u e d e n o b ten er de ent [B] c o n sid e ra n d o las proposiciones S , ; ; . . . ; S,.
c o m e n z a n d o c o n S { y a p lic a n d o las e c u a c io n e s d e flujo d e d a to s d e la figura 10.21
p a r a c a sc a d a s d e p ro p o s ic io n e s. Al in icio , sea D - ent \B]. C u a n d o se c o n s id e r a S„
se e lim in a n d e D las d e fin ic io n e s d e s a c tiv a d a s p o r S , y se a ñ a d e n las d efin ic io n e s
g e n e r a d a s p o r .S',. Al final. D está f o r m a d o p o r las d e fin ic io n e s q u e a lc a n z a n p,.

C a d e n a s d e u s o y d efin ició n

A m e n u d o es c o n v e n ie n te a l m a c e n a r la in f o r m a c ió n d e las d e fin ic io n e s d e alcan ce


c o m o “c a d e n a s d e uso y d e fin ic ió n " , q u e s o n listas, p a r a c a d a u s o d e u n a v ariab le,
d e to d a s las d e fin ic io n e s q u e a lc a n z a n d ic h o u so . Si u n u s o d e u n a v a ria b le a e n el
10.5 IN T R O D U C C IO N AL A N A L IS IS GLOBAL DEL FLU JO DE DATOS 639

M o q u e B n o v i e n e p r e c e d i d o p o r n i n g u n a d e f i n i c i ó n n o a m b i g u a d e a , e n t o n c e s la
«a d e n a d e d e f i n i c i ó n y u s o p a r a d i c h o u s o d e a e s e l c o n j u n t o d e d e f i n i c i o n e s e n
cnt [ # ] q u e s o n d e f in ic io n e s d e a . S i h a y d e f in ic io n e s n o a m b ig u a s d e a d e n t r o d e B
q u e p r e c e d e n e s t e u s o d e a , e n t o n c e s s ó l o la ú l t i m a d e d i c h a s d e f i n i c i o n e s d e a e s -
ta rú e n la c a d e n a d e u s o y d e f in i c ió n , y n o s e c o l o c a e n t [ £ ] e n e lla . A d e m á s , si h a y
d e fin ic io n e s a m b ig u a s d e a , e n to n c e s to d a s a q u e lla s p a r a la s q u e n o h a y a n in g u n a
d e f i n i c i ó n a m b i g u a d e a e n t r e e l l a y e l u s o d e a e s t a r á n e n la c a d e n a d e u s o y d e f i ­
n ic ió n p a r a e s te u s o d e a .

O r d e n d e e v a lu a c ió n

I a s t é c n i c a s p a r a c o n s e r v a r e s p a c i o d u r a n t e la e v a l u a c i ó n d e a t r i b u t o s , e s t u d i a d a s
e n el c a p ítu lo 5 , t a m b i é n se a p lic a n a l c á lc u lo d e la in f o r m a c ió n s o b r e el flu jo d e
( la to s u t i l i z a n d o e s p e c i f i c a c i o n e s c o m o la d e l a f i g u r a 1 0 .2 1 . E s p e c í f i c a m e n t e , l a ú n i c a
l i m i t a c i ó n e n c u a n t o a l o r d e n d e e v a l u a c i ó n p a r a lo s c o n j u n t o s d e p r o p o s i c i o n e s # ^ ,
d e s a c t, e n t y s a l e s e l i m p u e s t o p o r la s d e p e n d e n c i a s e n t r e e s t o s c o n j u n t o s . H a ­
b ie n d o e le g id o u n o r d e n d e e v a lu a c ió n , se p u e d e d e s o c u p a r el e s p a c io p a r a u n c o n ­
ju n to d e s p u é s d e q u e se h a y a n p r o d u c id o to d o s s u s usos.
L a s e c u a c i o n e s d e f l u j o d e d a t o s d e e s t a s e c c i ó n d i f i e r e n e n u n a s p e c t o d e la s
r e g la s s e m á n t i c a s p a r a a t r i b u t o s d e l c a p í t u l o 5: e n e l c a p í t u l o 5 n o s e p e r m i t í a n la s
d e p e n d e n c i a s c i r c u l a r e s e n t r e a t r i b u t o s , p e r o n o s e h a v i s t o q u e la s e c u a c i o n e s d e
llu jo d e d a t o s p u e d e n t e n e r d e p e n d e n c i a s c ir c u la r e s ; p o r e j e m p l o , e n t [S j] y s a l [S i]
d e p e n d e n el u n o d e l o tr o e n 1 0 .8 . E n e l c a s o d e l p r o b l e m a d e la s d e f i n i c i o n e s d e
a lc a n c e , se p u e d e n r e e s c r ib ir la s e c u a c io n e s d e f lu jo d e d a t o s p a r a e l i m i n a r la c ir-
c u l a r i d a d — c o m p á r e n s e l a s e c u a c i o n e s n o c i r c u l a r e s d e l a F ig . 1 0 .2 1 c o n l a s e c u a ­
c i o n e s d e 1 0 .8 — . U n a v e z q u e s e o b t i e n e u n a e s p e c if ic a c ió n n o c i r c u la r , s e p u e d e n
a p lic a r la s té c n ic a s d e l c a p ítu lo 5 p a r a o b te n e r s o lu c io n e s e fic ie n te s d e e c u a c io n e s d e
llu jo d e d a to s .

F l u j o de c o n t r o l g e n e r a l

E l a n á lis is d e flu jo d e d a to s d e b e t e n e r e n c u e n t a to d o s lo s c a m i n o s d e l c o n tr o l. Si
lo s c a m i n o s d e l c o n t r o l r e s u l t a n e v i d e n t e s a p a r t i r d e l a s i n t a x i s , e n t o n c e s l a s e c u a ­
c i o n e s d e f l u j o d e d a t o s s e p u e d e n e s t a b l e c e r y r e s o l v e r d e m a n e r a d i r i g i d a p o r la
sin ta x is, c o m o e n e s ta s e c c ió n . E n el c a s o d e a q u e llo s p r o g r a m a s q u e p u e d e n c o n ­
t e n e r p r o p o s i c i o n e s g o to , o i n c l u s o la s p r o p o s i c i o n e s m á s d i s c i p l i n a d a s b r e a k y c o n ­
tin u é , e l e n f o q u e e l e g i d o d e b e m o d i f i c a r s e p a r a q u e t e n g a e n c u e n t a lo s c a m i n o s r e a ­
le s d e l c o n t r o l .
S e p u e d e n a d o p t a r v a r i o s e n f o q u e s . E l m é t o d o i t e r a t i v o d e la s i g u i e n t e s e c c i ó n
t r a b a j a p a r a g r a f o s d e f l u j o a r b i t r a r i o s . C o m o lo s g r a f o s d e f l u j o o b t e n i d o s e n la p r e ­
s e n c i a d e p r o p o s i c i o n e s b r e a k y c o n t in u é s o n r e d u c i b l e s . s e p u e d e n c o n s i d e r a r s is ­
te m á tic a m e n te d ic h a s c o n s tr u c c io n e s u tiliz a n d o lo s m é to d o s b a s a d o s e n in te rv a lo s ,
q u e s e e s t u d i a r á e n l a s e c c i ó n 1 0 .1 0 .
S in e m b a rg o , n o es n e c e s a rio a b a n d o n a r el e n f o q u e d irig id o p o r la s in ta x is c u a n d o
se p e r m i t e n p r o p o s i c i o n e s b r e a k y c o n t in u é . A n t e s d e t e r m i n a r e s t a s e c c i ó n s e c o n ­
s id e r a u n e j e m p lo q u e p r o p o n e c ó m o a l o j a r la s p r o p o s ic i o n e s bre a k. E s ta s id e a s se
d e s a r r o l l a r á n e n l a s e c c i ó n 1 0 .1 0 .
640 O PTIM A CIO N DE CO DIG O

E je m p lo 1 0 .1 4 . L a p ro p o s ic ió n b reak d e n i r o del la z o d o -w h ile d e la fig u ra 10.24 es


e q u iv a le n te a u n salto al fin al del lazo. ¿ C ó m o h a y q u e d e fin ir e n to n c e s el c o n ju n to
gen p a r a la sig u ie n te p ro p o sic ió n ?
i f e3 th e n a := u2
e ls e beg in i := u3; break end

Se d e fin e el c o n j u n t o g en c o m o d o n d e dh es la d e fin ic ió n a : = u 2 , p o r q u e d h es
la ú n ic a d e fin ic ió n g e n e ra d a a lo la rg o d e los c a m in o s del c o n tro l d e s d e el p u n to
in icial al fin al d e la p ro p o s ic ió n . L a d e f in ic ió n d -,, e s d ecir, i : = u 3 , se t o m a r á en
c u e n t a al c o n s id e r a r el lazo d o -w h ile c o m p le to .

/* d t */ i : = m-1 ?
/♦ d 2 */ j := n ;
/* ¿A */ a := u l;
do
/*</»*/ i := i+ 1;
/* d 5 */ j := j - 1 ;
if e3 then
/ * d(y * / a := u2
else begin
/* d j +/ i s = u3;
break
end
w hile e2

Fig. 1 0 .2 4 . P ro g ram a q u e co n tien e u n a proposición break.

H a y u n tr u c o d e p r o g ra m a c ió n q u e p e r m ite ig n o ra r el s a lto c a u s a d o p o r la p r o ­
p o sic ió n b rea k m ie n tr a s se p ro c e sa n las p ro p o s ic io n e s d e n t r o d e l c u e r p o del lazo: se
c o n s id e ra n los c o n j u n to s g en y desact p a r a u n a p ro p o s ic ió n b rea k c o m o el c o n ju n to
v acio y ¿ '. e l c o n j u n t o u n iv e rsa l d e to d a s las d e fin ic io n e s, re s p e c tiv a m e n te , c o m o se
m u e s tra en la fig u ra 10.25. L o s c o n j u n to s re s ta n te s gen y desact q u e se m u e s tr a n en
la fig u ra 10.25 se d e t e r m in a n p o r m e d io d e las e c u a c io n e s d e flu jo d e d a to s d e la
fig u ra 10.21. y el c o n j u n t o g en se m u e s tr a e n c im a d e l c o n j u n t o desact . L as p r o p o ­
sic io n e s S j y S 2 re p re s e n ta n s e c u e n c ia s d e asig n ac io n es. L os c o n j u n to s g en y desact
en el n o d o d o q u e d a n p o r d e te r m in a r .
N o se p u e d e a lc a n z a r el p u n t o fin al d e u n a s e c u e n c ia d e p r o p o s ic io n e s q u e fi­
n a lic e c o n u n a p ro p o s ic ió n b rea k , asi q u e se p u e d e c o n s id e r a r el c o n j u n t o gen p a ra
la s e c u e n c ia c o m o 0 y el c o n j u n t o desact c o m o U\ el re s u lta d o seg u irá s ie n d o u n a
e s tim a c ió n c o n s e r v a d o r a d e ent y sal. D e m a n e r a sim ilar, el p u n t o final d e la p ro ­
p o sic ió n i f só lo se p u e d e a lc a n z a r a tra v é s d e la p a r te th e n , y los c o n j u n to s gen y
desacl d e la fig u ra 10.25 s o n los m is m o s q u e los d e su s e g u n d o hijo.
L o s c o n j u n t o s g en \ desa ct e n el n o d o d o d e b e n t e n e r e n c u e n t a to d o s los c a ­
m in o s d e s d e el c o m ie n z o h asta el fin al d e la p ro p o s ic ió n d o , asi q u e se v e n afe c ta d o s
p o r la p ro p o s ic ió n b rea k . A h o ra se c a lc u la rá n d o s c o n ju n to s , G y D , in ic ia lm e n te
10.6 S O L U C IO N ITERATIVA DE LA S E C U A C IO N E S D E FL U JO D E C O N T R O L 641

{ d u 4 . d % ) s
do
[d4, d$. d(y. di]

e2

if

I
w
el d<.
[dy] 0

0
break
V

F ig. 1 0 .2 5 . Efecto d e una proposición break en los c o n ju n to s gen y desact.

v acíos, a m e d id a q u e se re c o rre el c a m in o d e p u n to s d e s d e el n o d o d o h a s ta el n o d o
b reak . L a in tu ic ió n es q u e G y D re p re s e n ta n las d e fin ic io n e s g e n e ra d a s y d e sa c ti­
v a d a s c o n f o r m e el c o n tro l fluye a la p ro p o s ic ió n b reak d e sd e el c o m ie n z o del c u e r p o
del lazo. E n to n c e s se p u e d e d e t e r m in a r el c o n j u n t o gen p a r a la p ro p o s ic ió n d o -w h ile
t o m a n d o la u n ió n d e G y el c o n j u n t o g en p a r a el c u e r p o del lazo, p o r q u e el c o n tro l
p u e d e a lc a n z a r el final d e d o d e s d e la p ro p o s ic ió n b reak o c a y e n d o p o r el c u e r p o del
lazo. P o r la m is m a ra z ó n , se d e t e r m in a el c o n j u n t o desact p a r a el d o t o m a n d o la in­
te rsecc ió n d e D y el c o n j u n t o desact del c u e r p o del lazo.
A n te s d e a lc a n z a r el n o d o i f se tien e G = gen [Si] = {é/4.¿A) y D = desact [S2] =
= {di.d^.d-?}. E n el n o d o i f in te re sa el c a s o e n q u e el c o n tro l fluye a la p ro p o sic ió n
b reak . d e m o d o q u e la p a rte th e n del c o n d ic io n a l n o afecta a G y D. El sig u ie n te
n o d o a lo la rg o del c a m in o d e p u n t o s e s p a r a u n a s e c u e n c ia d e p ro p o s ic io n e s, asi
q u e se c a lc u la n n u e v o s v a lo re s d e G y D. E sc rib ie n d o Sy p a ra la p ro p o s ic ió n rep re­
s e n ta d a p o r el h ijo iz q u ie r d o del n o d o d e se c u e n c ia (el e tiq u e ta d o c o n di), se u tiliza

G : = gen [ S J s j (G - desact [ S J )
I) : = desact [ S J u ( /) - gen [ S J )
P o r t a n t o , los v a lo re s d e G y D al lleg ar a la p ro p o s ic ió n b rea k s o n {¿/5, d 7]
y (í/,, d 2. d4\ re s p e c tiv a m e n te . □

1 0 .6 S O L U C I O N I T E R A T I V A D E L A S E C U A C I O N E S
DE FL U JO D E C O NTRO L

El m é to d o d e la ú ltim a sección e s se n c illo y e fic ien te c u a n d o se p u e d e a p lic a r, pero


p a ra len g u ajes c o m o F O R T R A N o P ascal q u e a d m ite n g rafo s d e flujo a rb itra rio s,
n o es lo b a s ta n te g en eral. L a se c c ió n 1 0 .1 0 e s tu d ia el “ a n álisis d e in te rv a lo s " , u n a
f o r m a d e o b t e n e r la s v e n ta ja s del e n f o q u e d ir ig id o p o r la s in ta x is e n el a n á lis is d e
642 O PT IM A C IO N DE C O D IG O

flujo de datos para grafos de flujo en general, a costa de una com plejidad conceptual
considerablem ente m ayor.
A q u í se estudiará otro enfoque im portante para resolver problem as de flujo de
datos. E n lugar de intentar u tilizar el árbol de análisis sintáctico para obtener el cál­
culo de los conjuntos ent y sal, prim ero se construye el grafo de flujo y después se
calcula ent y sa l para cada nodo sim ultáneam ente. M ientras se analiza este nuevo
método, tam bién se aprovechará la oportunidad de m ostrar al lector m uchos pro­
blem as distintos de análisis del flujo de datos, algunas de sus aplicaciones y las d i­
ferencias entre los problemas.
Las ecuaciones para m uchos problem as de flujo de datos son sim ilares en la forma
en que la inform ación se “ genera" y se “ desactiva". Sin embargo, hay dos formas
principales en que las ecuaciones difieren en detalle.
1. Las ecuaciones de la últim a sección para definiciones de alcance son ecuaciones
d e avance en el sentido de que los conjuntos sa l se calculan según los conjuntos
ent. Tam bién hay problem as de flu jo de datos que son de retroceso en que los
conjuntos ent se calculan a partir de los conjuntos sal.
2. C uando hay más de una arista que entra a un bloque B, las definiciones que
alcanzan el com ienzo de B son la unión de las definiciones que llegan a lo largo
de cada una de las aristas. Se dice por tanto que la unión es el operador d e con­
fluencia. Por el contrario, se considerarán problem as com o las expresiones glo­
bales disponibles, donde la intersección es el operador de confluencia, porque
una expresión sólo está disponible al com ienzo de B si está disponible al final
de cada predecesor de B. E n la sección 10 .1 1 se verán otros ejem plos de opera­
dores de confluencia.
En esta sección se estudiarán ejem plos tanto de ecuaciones de avance y de retroceso,
donde la unión y la intersección se turnan com o operador de confluencia.

Algoritm o iterativo para definiciones de alcance

Para cada bloque básico B se definen sa l [/?], gen [£ ], desact [B] y ent [B], com o en
la últim a sección, observando que cada bloque B puede ser considerado com o una
p ro p o sició n que es la cascada de un a o m ás p ro p o sicio n es de asignación. Supo­
niendo que se han calculado gen y desact para cada bloque, se pueden crear dos gru­
pos de ecuaciones, que se m uestran en (10 .9 ) más adelante, que relacionan ent y sal.
E l prim er grupo de ecuaciones se deriva de la observación de que ent [B] es la unión
de las definiciones que llegan desde todos los predecesores de B. E l segundo grupo
son casos especiales de la ley general (10 .5 ) que se desea ver cum plida para todas las
proposiciones. Estos dos grupos son:

ent[B]= u sal [P]


/'unprede- , , A A,
cesor de B (1 0 .9 )
sal [B] = gen [B] u (ent [B] - desact [#])

Si un grafo de flujo tiene n bloques básicos, se obtienen 2n ecuaciones de (10.9 ). Las


2n ecuaciones se pueden resolver considerándolas com o recurrencias para calcular
los conjuntos ent y sal, igual que se resolvieron las ecuaciones de flujo de datos (10.6)
10.6 SO L U C IO N ITERATIVA D E LA S E C U A C IO N E S D E FL U JO D E C O N T R O L 643

y (1 0.5) p a r a p ro p o s ic io n e s d o -w h ile e n la ú lt im a secció n . E n la ú lt im a secció n se


c o m e n z ó c o n el c o n j u n t o v acío d e d e fin ic io n e s c o m o la e s tim a c ió n inicial p a r a to ­
d o s los c o n j u n to s sal. A q u í se c o m e n z a r á c o n c o n ju n to s e n t v acío s p o r q u e se vio en
(1 0 .9 ) q u e los c o n j u n to s ent, s ie n d o la u n ió n d e c o n j u n to s sal. e s ta rá n v acío s si lo
e s tá n los c o n j u n to s sal. M ie n tra s se p o d ía a f ir m a r q u e la s e c u a c io n e s (1 0 .6 ) y (10.7)
só lo n e c e sita b a n u n a ite ra c ió n , e n el c a so d e estas e c u a c io n e s m á s c o m p le ja s n o se
p u e d e lim ita r a priori el n ú m e r o d e iteracio n es.

A lg o ritm o 10.2. D e fin ic io n e s d e alcan ce.

E ntrada. U n g rafo d e fiu jo p a r a el q u e se h a n c a lc u la d o desact [/?] y g en [B] p a ra


c a d a b lo q u e B.

Salida, ent [# ) y sa l [tf] p a r a c a d a b lo q u e B.

M étodo. Se u tiliz a u n e n f o q u e ite r a tiv o , c o m e n z a n d o p o r la “e s ti m a c i ó n " e n t [ B ]


= 0 p a r a t o d o B y c o n v e r g ie n d o a lo s v a lo re s d e s e a d o s d e ent y sal. C o m o hay
q u e ite r a r h a s ta q u e c o n v e r j a n los c o n j u n t o s ent (y p o r t a n t o los c o n j u n t o s sal), se
u tiliz a u n a v a ria b le b o o le a n a . ca m b io , p a r a re g is tra r e n c a d a p a s a d a p o r los blo­
q u e s si h a c a m b ia d o c u a l q u ie r a d e los c o n j u n t o s ent. E l a lg o r i tm o se p e rfila e n la
fig u ra 10.26. □

/ • inicializar sal sobre la suposición de q u e ent [B] = 0 para to d o b lo q u e B */


(1) for cada bloque B d o sal [B]: = gen [/?];
(2) cambio : = tru e; /* para q u e av ance el lazo while */
(3) while cam bio d o begin
(4) cambio : = false;
(5) for cada bloque B d o begin
(6) ent[B) : = U sallP ):
r u n p re d e ­
cesor d e B

(7) sotaní : = sal[B )\


(8) sal [B] := gen [B] u ( ent [/?] - desact [/?]);
(9) if sa/[B] ¿ salant then cam bio : = true
end
end
Fig. 10.26. A lgoritm o p a ra calcular ent y sal.

In tu itiv a m e n te , el a lg o ritm o 10.2 p r o p a g a las d e fin ic io n e s ta n lejo s c o m o fu eran


sin s e r d e sa c tiv a d a s, s im u l a n d o e n u n s e n tid o to d a s las p o sib le s e je c u c io n e s del p ro ­
g ra m a . L as n o ta s b ib lio g rá fic a s c o n t i e n e n re fe re n c ia s d o n d e se p u e d e n e n c o n t r a r
p r u e b a s fo rm a le s d e la e x a c titu d d e este y o tr o s p ro b le m a s d e a n á lis is d e fiu jo d e
d atos.
S e v e q u e el a lg o r itm o se d e te n d r á f in a lm e n te p o r q u e sa l[B ] n u n c a d is m in u y e
d e t a m a ñ o p a r a c u a lq u ie r B\ u n a vez q u e se a ñ a d e u n a d e fin ic ió n , ósta p e rm a n e c e
p a r a s ie m p re . ( L a d e m o s tr a c ió n d e este h e c h o se d e ja c o m o u n e jercicio in d u c tiv o .)
C o m o el c o n j u n t o d e to d a s las d e fin ic io n e s e s fin ito , e n alg ú n m o m e n t o d e b e h a b e r
u n a p a s a d a d e l la z o w h ile e n la q u e sa la n t = sa l[B ] p a r a c a d a B d e la lín e a (9).
644 O P T IM A C IO N D E C O D IG O

E n to n ce s cambio se g u irá ig u a l a f a ls e y el a l g o r i t m o t e r m i n a . Se p u e d e t e r m i n a r en
ese m o m e n t o p o r q u e si los c o n j u n t o s sal n o h a n c a m b i a d o , los c o n j u n t o s ent n o
c a m b i a r á n e n la s ig u ie n te p a s a d a . Y si lo s c o n j u n t o s ent n o c a m b i a n , lo s c o n j u n t o s
sal n o p u e d e n c a m b i a r , d e m o d o q u e n o p u e d e h a b e r m á s c a m b i o s e n las pasadas
p o ste rio re s.
S e p u e d e d e m o s t r a r q u e u n lí m i t e s u p e r io r e n c u a n t o al n ú m e r o d e veces q u e se
ite ra el la z o w h ile es el n ú m e r o d e n o d o s e n el g r a f o d e f lu jo . I n t u i t i v a m e n t e , la ra­
z ó n es q u e si u n a d e f i n ic ió n a lc a n z a u n p u n t o , lo p u e d e h a c e r a lo la rg o d e u n ca­
m i n o s in la z o s y el n ú m e r o d e n o d o s e n u n g r a f o d e f lu jo es u n l í m i t e s u p e r io r en
c u a n t o al n ú m e r o d e n o d o s e n u n c a m i n o s in la zo s. C a d a v e z q u e se ite ra el la z o
w hile, la d e f i n ic ió n p ro g re s a en p o r lo m e n o s u n n o d o a lo la rg o del c a m i n o e n cues­
tió n .
D e h e c h o , si se o r d e n a n a d e c u a d a m e n t e los b lo q u e s e n el la z o fo r d e la lín e a (5 ),
h a y u n a e v id e n c ia e m p í r i c a de q u e el p r o m e d i o d e ite ra c io n e s so bre p r o g r a m a s rea­
les es m e n o r q u e 5 (v é a s e S ec. 1 0 .1 0 ). Y a q u e los c o n j u n t o s se p u e d e n re p re se n ta r
m e d ia n t e v e c to r e s d e b its y las o p e r a c io n e s d e estos c o n j u n t o s se p u e d e n i m p l a n ­
ta r m e d ia n t e o p e r a c io n e s ló g ica s e n v e c to re s d e bits, el a l g o r i t m o 1 0 .2 es s o r p r e n ­
d e n t e m e n t e e fic ie n te en la p r á c tic a . • _•

E je m p lo 1 0 .1 5 . Se o b t u v o el g r a f o d e f lu jo d e la fig u ra 1 0 .2 7 d e l p r o g r a m a d e la
fig u ra 10.22 d e la ú l t i m a s e c c ió n . E l a l g o r i t m o 10.2 se a p lic a r á a este g r a f o d e flu jo
p a r a p o d e r c o m p a r a r los e n f o q u e s d e las d o s seccion es.

gen[By) = {du d2,d3}


desact [tí,] = {diyd5,db,d7}

gen [tí2] =
desact [fi2] = R , d2,d-i)

gen [/i,] = R}
desact [tí3j = RÍ
gen [tí,] = R } •
desact [tí,] = {dudJi

F ig . 10.2 7. G r a f o de flu jo para ilu stra r d e fin ic io n e s de alcance.


.' A

S ó lo s o n in te re sa n te s las d e f in ic io n e s d¡, d2, ..., dn q u e d e f in e n i , j y a en la


fig u ra 1 0 .2 7 . C o m o e n la ú l t i m a s e c c ió n , los c o n j u n t o s d e d e f in ic io n e s se re p re s e n ­
ta rá n p o r m e d i o d e ve cto re s d e b its, d o n d e el b it id e la iz q u i e r d a re p re s e n ta la de­
f in ic ió n d¡.
E l la z o de la lín e a ( 1 ) e n la fig u ra 10.26 in ic ia liz a sal [ 5 ] = gen [tf ] p a r a ca d a /?,
y esos v a lo re s in ic ia le s d e sal [B] se m u e s t r a n e n la ta b la d e la fig u ra 1 0 .2 8 . N o se
c a lc u la n n i u t iliz a n los v a lo re s in ic ia le s ( 0 ) d e c a d a c o n j u n t o ent [ B ] p e r o se m u é s -
1 0 .6 S O L U C IO N ITERATIVA D E LAS E C U A C IO N E S D E FL U JO DE C O N T R O L 645

tr a n p a r a s e r m á s c o m p le to s . S u p ó n g a s e q u e el la z o for d e la lín ea (5 ) se e je c u ta c o n
B = B i, By, B j. p o r ese o r d e n . C o n B = B u n o hay p re d e c e so re s p a r a el n o d o
in ic ia l d e m o d o q u e e n t [/? (] s ig u e s ie n d o el c o n j u n t o v a c ío , r e p r e s e n t a d o p o r
0 0 0 0 0 0 0 ; c o m o r e s u lta d o , sa l [ # i ] sig u e s ie n d o igual a g en [/?(]. E ste v a lo r n o d i ­
fiere d e suliini c a lc u la d o e n la lin ea (7). así q u e to d a v ía se asig n a ca m b io a true.
D esp u és se c o n s id e ra B = B 2 y se calcu la

ent [ # 2] = sa l \ B ¡ ] v sa l [ £ J u sa l [ # 4]

= 111 0000 + 000 0010 + 000 0001 = 111 0011


sa l [B: ] = g e n \B 2] u (ent [Bz] - desact [B2])
= 0 0 0 1100 + (111 0011 - 110 0 0 0 1 ) = 001 1110

E ste c á lc u lo se r e s u m e e n la fig u ra 10.28. Al final d e la p r im e r a p a s a d a . s a l[ B j]


= 001 0111. re fle ja n d o el h e c h o d e q u e se g e n e ra d-¡ y d e q u e dy. ¿A y db a lc a n z a n
B j y n o se d e s a c tiv a n en B j. A p a r tir d e la s e g u n d a p a s a d a n o h a y c a m b io s e n n in ­
g u n o d e los c o n j u n to s sal. a s í q u e el a lg o ritm o te r m in a . □

In i c i a l Pa s a d a i Pa s a d a 2
Ri 11
n n i 'Ft l>
DLvA/l
ent [B] sal [B] ent [ B ] sal [B] ent I#1 sal[B )
Bl 000 0000 111 0000 000 0000 111 0000 000 0000 111 0000
b2 000 0000 000 1100 111 0011 001 1110 111 1111 001 1110
By 0 00 0000 000 0010 001 MIO 000 1110 001 1 110 000 1110
Bj 0 00 0000 000 0001 001 1110 001 0111 001 1110 001 0111

Fig. 10.28. C álculo d e ent y sal.

E x p re s io n e s d isp o n ib les

U n a e x p re s ió n x + y está d isp o n ib le e n u n p u n t o p si l o d o c a m i n o ( n o n e c e s a r ia ­
m e n te sin lazos) d e sd e el n o d o inicial h asta p ev alú a x + y . y d esp u és d e la ú ltim a de
d ic h as ev alu acio n es a n te s d e a lc a n z a r p. n o hay asign acion es po steriores a x o y . P ara
e x p re sio n e s d is p o n ib le s se d ic e q u e u n b lo q u e desactiva u n a e x p re s ió n x + y si asig n a
(o p u e d e asig n a r) x o y y n o re c alcu la p o s te r io r m e n te x + y . U n b lo q u e genera la ex­
p re s ió n x + y si e f e c tiv a m e n te e v a lú a x + y y n o re d e fin e p o s te r io rm e n te x o y .
O b sérv ese q u e la n o c ió n d e “d e s a c tiv a r” o “g e n e r a r ” u n a e x p re s ió n d is p o n ib le
n o es e x a c ta m e n te la m is m a q u e p a r a las d e fin ic io n e s d e a lc a n c e . S in e m b a r g o , estas
n o c io n e s d e “d e s a c tiv a r” y “g e n e ra r” o b e d e c e n a las m is m a s leyes q u e p a r a las d e ­
fin icio n es d e alcan ce. Se p o d ría n c a lc u la r e x a c ta m e n te c o m o se h iz o e n la sección
10.5 si se m o d ific a ra n las reglas d e 10.21 (a) p a r a u n a sola p ro p o s ic ió n d e a sig n a c ió n .
El p rin cip al uso d e la in f o r m a c ió n s o b re p ro p o s ic io n e s d isp o n ib le s e s p a r a d e te c ­
ta r s u b e x p re s io n e s c o m u n e s . P o r e je m p lo , e n la figura 10.29, la e x p re sió n 4 * i e n el
b lo q u e By se rá u n a s u b e x p re s ió n c o m ú n si 4* i está d is p o n ib le e n el p u n t o d e e n ­
tr a d a del b lo q u e By. E s ta rá d is p o n ib le si a i n o se le asig n a u n n u e v o v alo r e n el
b lo q u e B2 o si. c o m o en la figura 10.29(b). 4 * i se re c alcu la d e s p u é s d e q u e se asigna
i en B-.
646 O PT IM A C IO N DE C O D IG O

Fig. 10.29. Subexpresiones comunes potenciales a través de bloques.

Se puede c a lc u la r fácilm ente el co n ju n to de expresiones generadas para cada


punto en un bloque, procediendo desde el com ienzo hasta el final del bloque. E n el
punto anterior al bloque, se supone que no hay expresiones disponibles. Si en el punto
p está d ispo n ib le el co n ju n to A de expresiones, y q es el punto después de p , con la
proposición x : = y + z entre ellos, entonces se form a el co n ju n to de expresiones dis­
ponibles en q m ediante los siguientes dos pasos:

1. A ñ a d ir a A la expresión y + z .
2. B o rrar de A cu alq u ier expresión que tenga una x.

Obsérvese que los pasos se deben to m ar en el orden correcto, ya que x pod ría ser la
m ism a que y o z. D espués de llegar al fin al del bloque, A es el co n ju n to de expresio­
nes generadas por el bloque. E l co n ju n to de expresiones desactivadas consta de to­
das las expresiones, por ejem plo, y + z , tales que y o z se define en el bloque, e y + z
no es generada p o r el bloque.

Considérense las cuatro proposiciones de la figura 10.30. Después


E j e m p lo 1 0 .1 6 .
de la prim era, b + c está d ispo nib le. D espués de la segunda, a - d se vuelve disponible,
pero b + c ya no está d isp o n ib le porque se ha redefinido b. La tercera no vuelve a
hacer disponible b + c porque el va lo r de c se m o difica inm ediatam ente. Después de
la últim a proposición, a - d ya no está d ispo n ib le porque d ha cam biado. P o r tanto,
no se generan proposiciones y se desactivan todas las proposiciones que in vo lu cran
a a, b, c o d. □
Las expresiones d isponibles se pueden encontrar de una form a que, recuerda al
m odo de calcu la r las d efiniciones de alcance. Supóngase que U es el co n ju n to “ u n i­
versal" de todas las expresiones que aparecen a la derecha de una o más pro po sicio ­
nes del program a. Para cada bloque B , sea ent [B] el co n ju n to de expresiones en U
disponibles en el punto justo antes del com ienzo de B. Para cada bloque B sea ent [B]
el co n ju n to de expresiones en U d isp o n ib le en el punto ju sto antes del com ienzo de
B. Sea s a l [/i] el m ism o para el p unto después del fin a l de B. Se d efine e - g e n [B]
com o las expresiones generadas por B y e -d e s a c t [£ ] com o el co n ju n to de expresio­
nes en U desactivadas en B. Obsérvese que e n t, sal, e - g e n y e -d e sa c t se pueden re-
10.6 SOLUCION ITER A TIV A DE LAS ECUACIONES DE FLUJO DE CO NTRO L 647

presentar m ediante vectores de bits. Las siguientes ecuacio n es relacio n an las incóg­
nitas ent y sa l una co n o tra y las cantidades co n o cid as e - g e n y e -d e s a c t.

s a l [B] = e - g e n [B] u (en t [B] - e - d e s a c t [5 ])

en t [B] = n sa l [P]', para B no in ic ia l


P u n p re d e ­
cesor d e Ii ( 10. 10 )

en t [ B i] = 0 , donde B \ es el bloque in icia l.

Las ecuaciones (1 0 .1 0 ) son casi id én ticas a la s ecuaciones (1 0 .9 ) para las d e fin i­


ciones de alcance. L a p rim e ra d iferen cia es qu e e n t para el nodo in ic ia l se considera
com o un caso especial. Esto se ju stific a basándose en que nada está d isp o n ib le si el
program a acaba de co m en zar en el nodo in ic ia l, au n q ue alguna expresió n pudiera
estar d isp o n ib le a lo largo de todos lo s cam in o s h acia el nodo in ic ia l desde cu a lq u ie r
otra parte del program a. S i no se obligara a e n t [ B {] a estar vacío , se p o d ría d ed u cir
erróneam ente que ciertas expresiones estaban d isp o n ib les antes de que el program a
com enzara.

P roposiciones Expresiones D isponibles


ninguna
a := b+c
sólo b+c
b := a -d
sólo a - d
c : = b+c
sólo a - d
d := a - d
ninguna

Fig . 10.30. C álculo de expresiones disponibles.

La segunda y m ás im po rtante d iferen cia es que el operador de co n flu e n cia es la


intersección en lu g ar de la u n ió n . Este o p erad o r es el ap ro p iad o porque una expre­
sión está d isp o n ib le al co m ien zo de un bloque só lo si está d isp o n ib le al fin a l de to­
dos sus predecesores. P o r el co n tra rio , un a d e fin ic ió n alcan za el co m ie n zo de un
bloque siem pre qu e alcan za el fin de un o o m ás de sus predecesores.
E l uso de n en lugar de u hace que las ecuacio n es (1 0 .1 0 ) se com porten de m a­
nera d istin ta a las (1 0 .9 ). A u n q u e n in g ú n co n ju n to tiene una ú n ica so lu ció n , para
(10 .9 ) es la m enor so lu ció n que corresponde a la d e fin ició n de “ alcan ce” , y esa so­
lu ció n se obtuvo co m en zan d o co n el supuesto de qu e nada iba a n in g u n a parte, y
avanzando hacia la so lu ció n . D e ese m odo, n u n ca se supuso que un a d e fin ició n d
podía alcan zar un p u n to p a m enos que se en co n trara un cam in o real que propagara
r /a p. P o r el co n tra rio , para las ecuaciones (1 0 .1 0 ) se desea la m ayo r so lu ció n posi­
ble, a sí que se co m ienza co n un a a p ro xim a ció n qu e es dem asiado larga y que va
dism inuyendo.
648 O P T IM A C IO N D E C O D IG O

P u e d e n o re s u lta r o b v io q u e c o m e n z a n d o c o n el s u p u e s to “ to d o , es d e c ir, el c o n ­
j u n t o £/, e s t á d i s p o n i b l e e n t o d a s p a r t e s ” y e l i m i n a n d o s ó l o a q u e l l a s e x p r e s i o n e s p a r a
la s q u e s e p u e d a d e s c u b r i r u n c a m i n o a l o l a r g o d e l c u a l n o e s t é d i s p o n i b l e , s e a l ­
c a n z a u n c o n ju n to d e e x p re sio n e s v e r d a d e r a m e n te d isp o n ib le s. E n el c a s o d e e x p re ­
s i o n e s d i s p o n i b l e s , e s c o n s e r v a d o r p r o d u c i r u n s u b c o n j u n t o d e l c o n j u n t o e x a c t o de
e x p r e s i o n e s d i s p o n i b l e s , y e s t o e s lo q u e se h a c e . L a r a z ó n p o r la q u e l o s s u b c o n j u n -
t o s s o n c o n s e r v a d o r e s e s q u e e l u s o q u e s e v a a d a r a la i n f o r m a c i ó n e s s u s t i t u i r el
c á lc u lo d e u n a e x p r e s ió n d is p o n ib le p o r u n v a lo r p r e v ia m e n te c a l c u la d o (v éase
A l g o r i t m o 10.5 d e la s i g u i e n t e s e c c i ó n ) , y n o s a b e r q u e u n a e x p r e s i ó n e s t á d i s p o n i ­
b le s ó l o i m p i d e c a m b i a r el c ó d i g o .

E j e m p l o 1 0 .1 7 . S e c e n t r a r á la a t e n c i ó n e n u n s o l o b l o q u e , B 2 e n la f i g u r a 1 0 .3 1 , p a r a
i l u s t r a r e l e f e c t o d e la a p r o x i m a c i ó n i n i c i a l d e e n t [B 2] e n s a l [B 2]. S e a n G y D las
a b r e v i a t u r a s d e g e n [ £ 2] y d e sa c t [Z?2], r e s p e c t i v a m e n t e . L a s e c u a c i o n e s d e f l u j o d e
d a to s p a r a el b lo q u e B 2 son:

e n t [ £ 2] = s a l [ /? ,] n s a l [ £ 2]

s a l [ B 2] = G u (e n t [B 2] - D) . J

E s t a s e c u a c i o n e s se h a n r e e s c r i t o c o m o r e c u r r e n c i a s e n la f i g u r a 1 0 .3 1 , s i e n d o É y
A ‘ la s /‘- é s i m a s a p r o x i m a c i o n e s d e e n t [B 2] y d e s a l [Z?2], r e s p e c t i v a m e n t e . L a fig u ra
ta m b ié n m u e s tr a q u e c o m e n z a n d o c o n E ° = 0 se o b tie n e A ' = A 2 = G , e n ta n to
q u e c o m e n z a n d o c o n E ° = U s e o b t i e n e u n c o n j u n t o m a y o r p a r a A 2. R e s u l t a q u e
s a l[ B 2] e s ig u a l a A 2 e n c a d a c a s o , p o r q u e la s i t e r a c i o n e s c o n v e r g e n t o d a s e n lo s p u n ­
to s m o stra d o s.

A 1" = G u (E J + D)
E ¡* ] = s a ¡ \ B i ) n A ’ "

E° U
A1 = G A' U - D
E1 = sa l [/?,] u G E' sal [# i] - D
A2 = G A2 G u (sa l [ 5 , ] - D)

F ig. 1 0 .3 1 . I n ic ia liz a r c o n 0 lo s c o n j u n t o s e n t e s d e m a s i a d o r e s tric tiv o .

I n t u i t i v a m e n t e , la s o l u c i ó n o b t e n i d a s i s e c o m i e n z a c o n E ° = V u t i l i z a n d o

s a ! [ B 2] = G u ( s a I [ B l] - D)

e s m á s d e s e a b l e , p o r q u e r e f l e j a c o r r e c t a m e n t e el h e c h o d e q u e la s e x p r e s i o n e s e n
s a l [/? i] q u e n o s o n d e s a c t i v a d a s p o r B 2 e s t á n d i s p o n i b l e s a l f i n a l d e B 2y a s í c o m o las
e x p r e s i o n e s g e n e r a d a s p o r B 2. □
10.6 SO L U C IO N ITERATIVA DE LAS E C U A C IO N E S D E FLUJO D E C O N T R O L 649

A lg o ritm o 10.3. E x p re s io n e s d isp o n ib les.

E ntrada. U n g ra fo d e flu jo G c o n e -d e s a c t [ # ] y e -g e n [/?] c a lc u la d a s p a r a c a d a


b lo q u e B. El b lo q u e in icial e s B\.

Salida. El c o n j u n t o ent [# ] p a r a c a d a b lo q u e B.
M étodo. E jecú tese e l a lg o ritm o d e la figura 10.32. L a e x p lic a c ió n d e los p a s o s es si­
m ila r a la d e la fig u ra 10.26. □

en t [ £ ,) : = 0 ;
sal [# i] : = e-g en [tí,): /* int y sal n u n c a cam b ian para el n o d o inicial. B¡ */
for B # tf, do sal [B] : = V - e-desact [B]\ /* la estim ación inicial
es d em asiad o grande */
cambio : = true;
white cam bio d o begin
c a m b io : = false;
for B ¿ Z?, d o begin
ent [5] ; = n .vtf/[/í );
/ ’ u n p re d e ­
cesor d e H

sa la n t : = s a l ( B ] :
sal ( B\ := e-g en [B\ u (ent \B\ - e-desact [/i]);
if sal [5 ] -£ salant th e n cambio : = true
end
end

Fig. 10.32. C álculo d e las expresiones disponibles.

A n á lisis d e v a ria b le s a c tiv a s

V arias tr a n s f o r m a c io n e s p a r a m e jo r a r el c ó d ig o d e p e n d e n d e la in f o r m a c ió n c a lc u ­
la d a en la d ire c c ió n o p u e s ta al flu jo del c o n tro l d e u n p ro g r a m a ; a c o n tin u a c ió n se
c o n s id e r a n a lg u n a s d e ellas. E n el a n á lis is d e variables activas se d e se a c o n o c e r p a ra
la v a ria b le x y el p u n t o p si se p u d ie ra u tiliz a r el v a lo r d e x e n p a lo largo d e alg ú n
c a m in o del grafo d e flu jo q u e c o m ie n z a e n p. Si es así. se d ic e q u e x está activa en
p: en c a so c o n tr a r io , x está inactiva e n p.
C o m o se vio en la secció n 9.7. u n u s o i m p o r ta n te d e la in f o r m a c ió n s o b re v a ria ­
bles a c tiv a s a p a re c e c u a n d o se g e n e ra c ó d ig o o b je to . D e s p u é s d e q u e u n v alo r se c a l­
c u la d e n t r o d e u n reg istro y se u tiliz a p r e s u m ib le m e n te d e n t r o d e u n b lo q u e , n o es
n e c e sa rio a l m a c e n a r ese v a lo r si está in a c tiv o al fin al del b lo q u e . A sim is m o , si lo d o s
los reg istro s e s tá n llen o s y se n e c e sita o tr o reg istro , p re v a le c e el uso d e u n registro
c o n u n v a lo r in a c tiv o , p u e s to q u e ese v a lo r n o tien e q u e a lm a c e n a r s e e n m e m o r ia .
Se d e fin e ent [/?] c o m o el c o n j u n t o d e v aria b les a c tiv a s en el p u n t o in m e d ia t a ­
m e n te a n te r io r al b lo q u e B y se d e fin e s a l [/?] c o m o el c o n j u n t o d e v aria b les activ as
en el p u n t o in m e d ia t a m e n t e d e s p u é s del b lo q u e . Sea d e f\B ] el c o n j u n t o d e variab les
a las q u e se les h a a s ig n a d o d e f in itiv a m e n te u n v a lo r e n B a n te s d e c u a lq u ie r u s o d e
d ic h a v a ria b le e n B . y sea uso [B] el c o n j u n t o d e v aria b les c u y o s v alo res se p u e d e n
650 O PT IM A C IO N DE CODIGO

u tiliz a r a n te s q u e c u a lq u ie r d e fin ic ió n d e la v ariab le. E n to n c e s , las e c u a c io n e s q u e


re la c io n a n d e f y u so c o n las in c ó g n ita s e m y sal son:

ent [B\ = uso [B] kj (sa l [B] - d ef[B ])

sa l[B ) = w ent [S ]\ (1 0 .1 1 )
.S u n s u c e -
*JCde H

El p r im e r g r u p o in d ic a q u e u n a v a ria b le está a c tiv a al e n t r a r a u n b lo q u e si se


u tiliza a n te s d e u n a red e fin ic ió n en el b lo q u e o si está a c tiv a al salir del b lo q u e y n o
se re d e fin e en el b lo q u e . El s e g u n d o g ru p o d e e c u a c io n e s in d ic a q u e u n a v ariab le
está a c tiv a al salir d e u n b lo q u e si, y sólo si, está a c tiv a al e n t r a r e n u n o d e sus s u ­
cesores.
D eb e te n e rse e n c u e n t a la re la c ió n e n tre ( 1 0 . 1 1) y las e c u a c io n e s d e d efin ic io n e s
d e a lc a n c e (1 0.9 ). A q u í, e n t y sa l h a n in te r c a m b ia d o s u s papeles, y uso y d e f s u s ti­
tu y e n a g en y desact. re s p e c tiv a m e n te . C o m o (10 .9). la so lu c ió n a (1 0 .1 1 ) n o es n e­
c e s a ria m e n te ú n ic a , y lo q u e se d e se a e s la s o lu c ió n m á s p e q u e ñ a . El a lg o ritm o q u e
se u tiliz a p a r a la so lu c ió n m í n i m a es f u n d a m e n ta lm e n te u n a v ersió n h acia a tr á s del
a lg o r itm o 10.2. C o m o el m e c a n i s m o p a r a d e te c ta r c a m b io s en c u a lq u ie r a d e los
c o n j u n to s ent es ta n sim ila r a la fo rm a en q u e se d e te c ta n c a m b io s e n los c o n ju n to s
s a l d e los a lg o ritm o s 10.2 y 10.3, se o m i te n los d e ta lle s d e la c o m p r o b a c ió n d e la
te rm in a c ió n .

A lg o ritm o 10.4. A nálisis d e v aria b les activ as.

Entrada. U n g rafo d e fiujo c o n d e f y uso c a lc u la d o s p a r a c a d a b lo q u e .

Salida, s a l\B \. el c o n j u n t o d e v aria b les a c tiv a s a la salid a d e c a d a b lo q u e B del grafo


d e flujo.

M étodo. E jecú tese el p r o g r a m a d e la fig u ra 10.33.

for cada bloque B do ent \ B ] 0 ;


while ocurren c am b io s a cu alq u iera d e los c o n ju n to s ent do
for cada bloque B do begin
sa/[B] : = w sal [.SJ;
S u n suce­
s o r <Jo fí

ent [ / ? ] : = uso \B] v (sa/[B] - d ef[B ])


end

Fig. 10.33. C álculo d e variables activas.

C a d e n a s d e definición y uso

U n c á lc u lo q u e se realiza v ir tu a lm e n te d e la m is m a fo rm a q u e el a n á lis is d e v aria­


bles a c tiv a s e s el encadenam iento d e definición y uso. Se d ic e q u e u n a v ariab le se usa
en la p ro p o s ic ió n v si p u e d e q u e su v a lo r d e la d o d e r e c h o sea n ecesario . P o r e je m p lo ,
se u tiliz an b y c ( p e ro n o a ) en c a d a u n a d e la s p ro p o s ic io n e s a : = b + c y a [ b ) := c .
El p r o b le m a del e n c a d e n a m ie n to d e d e fin ic ió n y u s o co n siste e n c a lc u la r p a r a u n
1 0.7 T R A N S F O R M A C IO N E S PARA M E JO R A R I I (0 1 )1 0 0 hM

punto p el co n ju n to de usos s de un a variab le, p o r ejem p lo x , tal qu e haya un ca­


m ino desde p a s qu e no redefina x.
C o m o con las variables activas, si se puede ca lcu la r sa l [B ], el co n ju n to de usos
alcanzable desde el fin al del bloque B , entonces se pueden ca lcu la r la s d efiniciones
alcanzadas desde cu a lq u ie r punto p dentro del bloque B exam inand o la parte del
bloque B que sigue a p. E n concreto, si hay una d efin ició n de la variable x en el
bloque, se puede d eterm inar la cadena d e d efinición y uso para dich a d e fin ició n , que
es la lista de todos lo s usos posibles de esa d efin ició n . E l m étodo es análogo al de la
sección 10.5 para ca lcu la r las cadenas de uso y d e fin ició n , y se deja al lector.
Las ecuaciones para c a lc u la r la in fo rm ació n del encadenam iento de d efin ició n y
uso parecen exactam ente iguales qu e las (1 0 .1 1 ) sustituyendo d e f y uso. E n lugar de
iiso [B], se tom a el co n ju n to de usos exp u esto s hacia arriba en B , es decir, el co n ­
ju n to de pares (s, x ) tales qu e s es un a p ro po sició n en B que u tiliz a la variab le x y
tales que n o ocurre ninguna d efin ició n an terio r de x en B. E n lugar de def [B] se
tom a el co n ju n to de pares (s, x ) tales que í es un a p ro po sició n que u tiliza x , s no
está en B, y B tiene una d e fin ició n de x . Estas ecuaciones se resuelven p o r el análogo
obvio del algoritm o 10.4, y no se estudiará este tem a m ás en profundidad.

10.7 T R A N S F O R M A C IO N E S P A R A M E J O R A R E L C O D IG O

Lo s algoritm os para realizar las transform aciones para m ejo rar el código in tro d u ci­
dos en la sección 10.2 dependen de la in fo rm ació n sobre el flu jo de datos. E n las
últim as dos secciones se ha visto cóm o se puede re u n ir esta in fo rm ació n . A q u í se
considera la e lim in a ció n de subexpresiones com unes, la propagación de copias y las
transform aciones para traslad ar los cálcu lo s in varian tes de los lazos fuera de ellos y
para e lim in a r las variables de in d u cció n . Para m uchos lenguajes se pueden lograr
m ejoras sign ificativas en el tiem po de ejecución m ejorando el código de lo s lazos.
C u an d o se im p lan tan d ich as transform aciones en un co m p ilad o r, es posible hacer
varias a la vez. S in em bargo, las ideas en que se basan las transform aciones se estu­
diarán ind ivid ualm en te.
E l énfasis de esta sección se centra en las transform aciones globales qu e u tilizan
in fo rm ació n sobre el program a com o un todo. C o m o se vio en las ú ltim as dos sec­
ciones, el a n á lisis global del flu jo de datos no co n sid era generalm ente lo s puntos
dentro de bloques básicos. P o r tanto, las transform aciones globales no son un sus­
tituto de las transform aciones locales; se deben realizar am bas. P o r ejem plo, cuando
se realiza la e lim in a ció n de subexpresiones com unes globales sólo se debe tener en
cuenta si un a expresión es generada p o r un bloque y no si se recalcula va ria s veces
dentro de un bloque.

E lim in ació n de subexpresiones comunes globales


E l problem a de flu jo de datos de la s expresiones d isp o n ib les estudiado en la últim a
sección perm ite d eterm inar si una expresión en el punto p en u n grafo de flu jo es
una subexpresión com ún. E l siguiente algoritm o fo rm aliza las ideas in tu itiva s ana­
lizadas en la sección 10.2 para e lim in a r las subexpresiones com unes.
652 O P T IM A C IO N D E C O D IG O

A lgoritm o 10.5. E lim in a ció n de subexpresiones co m unes globales.

E ntrada. U n grafo de flu jo con in fo rm ació n sobre las expresiones disponibles.

Salida. U n grafo de flu jo revisado.

M étodo. Para cada pro p o sició n s de la form a x : = y + z 6 tal que y + z esté disponible
al com ienzo del bloque de s y n i y n i z se definan antes de la p ro p o sició n s en ese
bloque, hágase lo siguiente:

1. Para d escu b rir las evalu acio n es de y + z qu e alcanzan el bloque de s , se siguen


las aristas del grafo de flu jo , buscando hacia atrás desde el bloque de s. S in em ­
bargo, no se pasa p o r n in gún bloque que evalúe y + z . L a ú ltim a eva lu ació n de
y + z en cada bloque encontrado es una evalu ació n de y + z que alcan za s.

2. Créese una nueva va riab le u.

3. Sustitúyase cada p ro p o sició n w := y + z encontrada en 1 por

u s= y + z
w := u

4. Sustitúyase la pro po sició n s p o r x := u .

A lguno s com entarios a este alg o ritm o son, p o r orden:

1. La búsqueda en el paso 1 del algoritm o de las evaluaciones de y + z que alcan ­


zan la pro po sició n tam bién se puede fo rm u la r co m o un problem a de a n á lisis de
flu jo de datos. S in em bargo, no tiene sentido resolverlo para todas las expresio­
nes y + z y todas las p ro po sicio nes o bloques, porque se reúne dem asiada in fo r­
m ación irrelevante. En lugar de ello, se debería realizar una búsqueda en el grafo
de flu jo de cada p ro po sició n y expresión relevante.

2. N o todos los cam bios realizados p o r el alg o ritm o 10.5 son m ejoras. Se puede
desear lim ita r el núm ero de evaluaciones distintas que alcanzan a s encontradas
en el paso 1, q u izá s a una. S in em bargo, la p ro pagació n de co pias, qu e se es­
tud iará a co n tin u a ció n , a m enudo perm ite obtener una ventaja aunque varias
evaluaciones de y + z alcancen s.

3. E l alg o ritm o 10.5 no se dará cuenta de que a * z y c * z deben tener el m ism o


va lo r en

a := x + y vs c := x + y
b := a * z d := c* z

porque este se n cillo enfoque para las subexpresiones co m unes sólo considera las
expresiones literales, en lugar de los valores calcu lad o s p o r las expresiones. K il-
dall [1 9 73 ] p ro p o rcio n a un m étodo para cap tu rar d ich as eq u ivalen cias en una
pasada; en la sección 10.11 se an alizarán estasideas. S in em bargo, sepueden
cap tu rar co n m ú ltip les pasadas del alg o ritm o 10.5, y se puede co n sid e ra r su re­
petición hasta que ya no se produzcan más cam bios. Si a y c son variables te'm-

R ccucrdese q u e se sigue utilizado + c o m o u n o p e ra d o r genérico.


1 0.7 T R A N S F O R M A C IO N E S PARA M E JO R A R I I C O D IC IO 653

porales que no se u tiliza n fuera del bloque en el qu e aparecen, entonces la sub­


expresión co m ú n ( x + y ) * z se puede cap tu rar co n sid erand o de form a especial
las variables tem porales, co m o en el siguiente ejem plo.

E jem plo 10 .18 . Supóngase qu e no hay asignaciones a la m a triz a en el grafo de flu jo


de la figura 10.34(a), a sí qu e se puede d e cir sin lu g ar a dudas que a [ t 2] y a [ t 6] son
subexpresiones com unes. E l problem a consiste en e lim in a r estas subexpresiones co ­
munes.

(a) (b)

Fig . 10.34. E lim in ació n de la subexpresión com ún 4* i.

L a sub expresió n co m ú n 4 * i de la figura 10 .34 (a ) se ha e lim in a d o en la fig u ­


ra 10.34(b). U n a form a de d eterm inar que a [ t 2] y a [ t 6] tam bién son subexpresio­
nes co m unes es su stitu ir t 2 y t6 p o r u u tiliza n d o propagación de copias (que se es­
tudiará a co n tin u a ció n ); am bas expresiones se co n vierten entonces en a [ u ] . qu e se
puede e lim in a r reaplicando el algoritm o 10.5. O bsérvese que la m ism a variab le nueva
u se inserta en am bos bloques de la figura 10 .34(b ), así qu e basta con la propagación
de copias lo ca l para co n v e rtir a [ t 2] y a [ t 6] en a [ u ] .
H ay otra form a qu e tiene en cuenta que es el co m p ila d o r el qu e in serta la s va­
riables tem porales y só lo se u tiliza n dentro de los bloques en lo s que aparecen. Se
considerará m ás detalladam ente la form a en que se representan las expresiones d u ­
rante el c á lcu lo de las expresiones d isp o n ib les para co m p ren d er el hecho de que d is­
tin tas va ria b le s tem p o rales pueden representar la m ism a exp re sió n . L a té cn ica re­
com endada para representar co n ju n to s de expresiones es asignar un núm ero a cada
expresión y u tiliz a r vectores de bits donde el b it i represente a la exp resió n con n ú ­
m ero i. Las técnicas para n um eració n de valores de la sección 5.2 se pueden a p lica r
durante la n um eració n de expresiones para tratar las variables tem porales de form a
especial.
M ás concretam ente, supóngase que 4 * i tiene el núm ero de v a lo r 15. Las expre­
siones a [ t 2] y a [ t 6] tendrán el m ism o núm ero de va lo r si se u tiliz a el n ú m ero de
v a lo r 15 en lugar de lo s nom bres de las variab les tem porales t 2 y t 6. Supóngase que
el núm ero de valor resultante es 18. Entonces el bit 18 representará tanto a [ t 2] com o
a [ t 6] durante el a n á lisis del flu jo de datos y se puede d eterm in ar que a [ t 6] está
d ispo n ib le y puede ser e lim in ad o . E l código resultante se in d ic a en la figura 10.34(c).
Se u tilizan (1 5 ) y (1 8 ) para representar los tem porales correspondientes a las expre­
siones con d ich o s valores. E n realidad, t6 es in ú til y se pod ría e lim in a r durante el
654 O PT1M ACIO N DE C O D IG O

a n álisis d e v aria b les a c tiv a s locales. A s im is m o t ? , s ie n d o u n te m p o r a l, n o se c a lc u ­


laría e n sí m is m o : al c o n tr a r io , los usos d e t 7 se s u s titu iría n p o r usos d e (18). □

P ro p a g a c ió n d e co p ias

El a lg o r itm o 10.5 re c ié n e s tu d i a d o , y v a rio s o tr o s a lg o r itm o s c o m o el d e la e lim i­


n a c ió n d e v aria b les d e in d u c c ió n q u e se p re s e n ta m á s a d e la n te en esta secció n , in ­
tr o d u c e n p ro p o s ic io n e s d e c o p ia d e la f o r m a x : = y . L as c o p ia s ta m b ié n p u e d e n ser
g e n e r a d a s d ir e c ta m e n te p o r el g e n e r a d o r d e c ó d ig o in te r m e d io , a u n q u e la m a y o ría
d e ellas s u p o n e n te m p o r a le s locales a u n b lo q u e y se p u e d e n e lim in a r m e d ia n te la
c o n s tru c c ió n d e G D A e s tu d ia d a e n la secció n 9 .8 . A veces es p o sib le e lim in a r p ro ­
p o s ic io n e s d e c o p ia .v :x := y si se d e t e r m in a n to d o s los lu g ares d o n d e se u tiliza esta
d e fin ic ió n d e x . E n to n c e s se p u e d e s u s titu ir y p o r x e n to d o s e s to s lugares, siem p re
q u e se c u m p la n las sig u ie n te s c o n d ic io n e s p a r a c a d a uso u d e x.

1. 1-a p ro p o s ic ió n s d e b e s e r la ú n ic a d e fin ic ió n d e x q u e a lc a n c e u (es d ecir, la


c a d e n a d e u s o y d e fin ic ió n p a r a el u s o u c o n s ta só lo d e s).
2. E n to d o s lo s c a m in o s d e s d e a , in c lu id o s los c a m in o s q u e p a s a n v a ria s veces
s u

a tra v é s d e n ( p e ro q u e n o p a sa n a tra v é s d e s u n a s e g u n d a vez), n o h a y a s ig n a ­


c io n e s a y.

La c o n d i c ió n 1 se p u e d e c o m p r o b a r u tiliz a n d o la in f o r m a c ió n del e n c a d e n a ­
m i e n t o d e u s o y d e f in i c ió n , p e r o ¿ q u é h a y d e la c o n d i c i ó n 2 ? S e e s ta b le c e r á u n
n u e v o p r o b le m a d e a n álisis d e flujo d e d a t o s e n el q u e e n t [/?] es el c o n j u n t o d e c o ­
p ia s s : x : = y tal q u e t o d o c a m i n o d e s d e el n o d o inicial h a s ta el c o m ie n z o d e B c o n ­
tie n e la p ro p o s ic ió n s, y d e s p u é s d e la ú ltim a o c u r r e n c ia d e s n o h a y asig n ac io n es
a y . El c o n j u n t o sa l [ # ] se p u e d e d e fin ir e n c o n s o n a n c ia , p e r o c o n re sp e c to al final
d e B. S e d ic e q u e la p ro p o s ic ió n d e c o p ia s : x : = y se genera e n el b lo q u e B si s o c u rre
e n B y n o h a y a s ig n a c io n e s p o s te r io r e s a y d e n t r o d e B. S e d i c e q u e s : x : = y se
desactiva e n B si se h a c e u n a a s ig n a c ió n a x o y allí y .v n o e s tá e n B. L a n o c ió n
d e q u e las asig n ac io n es a x d esactiv an x : = y ta m b ié n a p a re c ió en las d efin icio n es de
alcance, p e ro la idea d e q u e las asign acion es a y ta m b ié n lo h a c e n es exclusivo d e es­
te p r o b le m a . O b s é rv e s e la i m p o r t a n t e c o n s e c u e n c ia d e q u e d is ti n ta s a s ig n a c io n e s
x -.= y se d esactiv an u n a a la o tra : ent [B] p u e d e c o n te n e r sólo u n a p ro p o sic ió n d e
c o p ia c o n x e n el la d o izq u ierd o .
S ea V el c o n j u n t o u n iv e rsa l d e to d a s las p ro p o s ic io n e s d e c o p ia e n el p ro g ra m a .
Es i m p o r ta n te o b s e rv a r q u e d is tin ta s p ro p o s ic io n e s x : = y s o n d is tin ta s e n U. Se d e ­
fin e c - g e n [/?) c o m o el c o n j u n t o d e t o d a s la s c o p i a s g e n e r a d a s e n el b l o q u e B y
c -d e sa c t [B \ c o m o el c o n j u n t o d e c o p ia s e n U q u e se d e s a c tiv a n en B. E n to n c e s , las
sig u ie n tes e c u a c io n e s r e la c io n a n las c a n tid a d e s d efin idas:

s a /\B ) = c -g e n [B] u (en t [tf] - c -d e sa c t [ 5 ] )


e n t[B ) — n sa l [P] p a r a B n o in icial (1 0 .1 2 )
S ñ E t
ent ( # i ) = 0 d o n d e B x es el b lo q u e inicial

L as e c u a c io n e s 10.12 s o n id é n tic a s a las e c u a c io n e s 10.10. si c -d e sa c t se su sti­


tu y e p o r e -d e sa c t y c -g e n p o r e -g e n . P o r ta n to . 10.12 se p u e d e reso lv er m e d ia n te
10.7 T R A N S F O R M A C IO N E S P A R A M E JO R A R EL C O D IG O 655

el a lg o ritm o 10.3, y n o se a n a liz a r á m á s este te m a . S in e m b a rg o , se d a r á u n e je m p lo


q u e m u e s tr a a lg u n a s d e las su tilezas d e la o p tim a c ió n d e copias.

E je m p lo 10.19. C o n s id é re s e el g rafo d e flujo d e la figura 10.35. A q u í, C -g en [ # i ]


= {x r =y} y C -gen [/?3] = { x := z } . T a m b ié n , C -d e sa c í [B2] = { x := y } , p u e s to q u e y
es a sig n a d a e n B 2. P o r ú ltim o , c - d e s a c t [ # i ] = ( x : = z ) p u e s to q u e x es a s ig n a d a en
B u y c -d e s a c t [Z?3] = { x := y j p o r la m is m a razó n.

Fig. 10.35. G ra fo d e flujo del ejem p lo 10.19.

L o s o tr o s c o n j u n to s c -g e n y c -d e sa c t son 0 . A sim is m o , ent ( £ | ] = 0 p o r las


e c u a c io n e s 10.12. El a lg o ritm o 10.3 en u n a p a s a d a d e t e r m in a q u e

e n l[ B 21 = en t[B )] = sal[B ¡] = { x := y }
D el m is m o m o d o , sa l [ # : ] = 0 y

s a l[ B y] = e n t[ B A] = s a l[ B 4] = {x := z}

P o r ú ltim o , ent [B$] = sa l [B 2J n sa l [ # 4] = 0 .


S e o b s e rv a q u e n in g u n a d e las co p ias, x : = y o x : = z , “a lc a n z a " el uso d e x e n B$,
en el s e n tid o del a lg o ritm o 10.5. E s c ie rto p e ro irre le v a n te q u e a m b a s d efin ic io n e s
d e x “a lc a n z a n " B*, e n el s e n tid o d e las d efin icio n es d e alcance. P o r ta n to , n o se p u e d e
p ro p a g a r n in g u n a d e las co p ias, y a q u e n o e s p o sib le s u s titu ir y ( r e s p e c tiv a m e n te z)
p o r x en lo d o s los u so s d e x q u e a lc a n z a la d e fin ic ió n x : = y (re s p e c tiv a m e n te x : = z).
Se p o d r ía s u s titu ir z p o r x e n Ba p e r o esto n o m e jo ra ría el cód igo . □
A h o ra se especifican los d e ta lle s del a lg o ritm o p a r a e lim in a r las p ro p o s ic io n e s d e
copia.

A lg o ritm o 10.6. P ro p a g a c ió n d e copias.

Entrada. U n g rafo d e flujo G. c o n c a d e n a s d e u s o y d e fin ic ió n q u e d e n las d efin i­


c io n e s q u e a lc a n z a n el b lo q u e B , y c o n C - e n i [ # ] q u e re p re s e n te la s o lu c ió n a las
e c u a c io n e s 10.12, e s d ecir, el c o n j u n t o d e c o p ia s x : = y q u e a lc a n z a n el b lo q u e B a
lo largo d e to d o s los c a m in o s , sin a s ig n a c ió n a x o y d e s p u é s d e la ú ltim a o c u rre n c ia
d e x : = y e n el c a m in o . T a m b ié n se n e c e s ita n c a d e n a s d e d e fin ic ió n y u s o q u e p ro ­
p o rc io n e n los u so s d e c a d a d efinició n .
656 O PTIM A CIO N D E CODIGO

Salida. U n g rafo d e flujo revisado.

M étodo. P a ra c a d a c o p ia 5 :x : = y , hágase lo sig uiente:

1. D e te r m ín e n s e a q u e llo s usos d e x a lc a n z a d o s p o r esta d e fin ic ió n d e x , a saber.


s : x : =y.

2. D e te r m ín e s e si p a r a to d o uso d e x q u e se e n c u e n tr e e n 1, s está en c~ en l (#],


d o n d e B e s el b lo q u e d e este u s o p a rtic u la r, y, a d e m á s , n in g u n a d e fin ic ió n d e x
o y o c u r r e a n t e s d e e s te u s o d e x d e n t r o d e B. R e c u é r d e s e q u e si s e s t á en
c -c n t [B], e n to n c e s s es la ú n ic a d e fin ic ió n d e x q u e a lc a n z a B.

3. Si v c u m p le la c o n d ic ió n d e 2. e n to n c e s e lim ín e se s y su stitu y a n se to d o s los usos


d e x e n c o n tr a d o s p o r y e n 1. □

D e te c c ió n d e c á lc u lo s in v a ria n tes d e la z o s

Se u tiliz a rá n las c a d e n a s d e u s o y d e fin ic ió n p a r a d e te c ta r a q u e llo s cá lc u lo s d e n tro


d e u n la z o q u e s o n invariantes del ta zo , es d ecir, c u y o s v alo res n o c a m b ia n m ie n tra s
el c o n tro l p e r m a n e c e d e n t r o del lazo. C o m o se e s tu d ió en la secció n 10.4, u n lazo
es u n a reg ió n q u e c o n s ta d e u n c o n ju n to d e b lo q u e s c o n u n e n c a b e z a m ie n to q u e
d o m i n a a to d o s los o tr o s b lo q u e s, así q u e la ú n ic a fo rm a d e e n t r a r al la z o es a trav és
del e n c a b e z a m ie n to . T a m b ié n es n e c e s a rio q u e u n la z o te n g a al m e n o s u n a fo rm a
d e re g re sa r al e n c a b e z a m ie n to d e s d e c u a lq u ie r b lo q u e d e n t r o del lazo.
Si u n a asig n ac ió n x : = y + z está e n u n a p o sició n e n el la z o d o n d e to d a s las d e fi­
n ic io n e s p o sib les d e y y z están fu era d e l la z o ( in c lu id o el c a so especial e n q u e y , z
o a m b a s s o n c o n s ta n te s ), e n to n c e s y + z es u n in v a ria n te del la z o p o r q u e s u v alo r
se rá el m i s m o c a d a vez q u e se e n c u e n t r e x : = y + z s ie m p r e q u e el c o n tr o l p e r m a ­
n e z c a d e n t r o del lazo. T o d a s estas a sig n a c io n e s se p u e d e n d e te c ta r a p a r ti r d e las
c a d e n a s d e uso y d e fin ic ió n , es decir, u n a lista d e to d o s lo s p u n to s d e d e fin ic ió n de
y y z q u e a lc a n c e n la a s ig n a c ió n x : = y + z .
H a b ie n d o re c o n o c id o q u e el v a lo r d e x c a lc u la d o e n x : = y + z n o c a m b ia d e n tro
del lazo, s u p ó n g a s e q u e h a y o tr a p ro p o s ic ió n v := x + w , d o n d e w só lo p o d r ía h ab erse
d e fin id o fu era del lazo. E n to n c e s x+w ta m b ié n e s u n in v a ria n te del lazo.
S e p u e d e n u tiliz a r e s ta s id e as p a r a h a c e r r e p e tid a s p a s a d a s p o r el la z o , d e s c u ­
b r ie n d o m á s y m á s cá lc u lo s c u y o s v alo res se a n in v a ria n te s del lazo. Si se tie n e a m ­
b a s c a d e n a s d e u s o y d e fin ic ió n y d e d e fin ic ió n y u so . ni s iq u ie ra h a y q u e h a c e r v a­
rias p a s a d a s p o r el c ó d ig o . L a c a d e n a d e d e fin ic ió n y u s o p a r a la d e fin ic ió n x : = y + z
in d ic a r á d ó n d e p o d r ía u sarse este v alo r d e x , y só lo h a y q u e c o m p r o b a r e n tr e esto s
u so s d e x. d e n t r o del lazo, q u e n o u se n o t r a d e fin ic ió n d e x . E sta s a s ig n a c io n e s in ­
v a r ia n te s d e l la z o se p u e d e n tr a s la d a r al p re e n c a b e z a m ie n to , s ie m p re q u e s u s o p e ­
r a n d o s a d e m á s d e x ta m b ié n se a n in v a r ia n te s d e l la z o , c o m o se e s tu d i a e n el si­
g u ie n te alg o ritm o .

A lg o r itm o 10.7. D e te c c ió n d e c á lc u lo s in v a ria n te s d e lazos.

E ntrada. U n la z o L f o r m a d o p o r u n c o n j u n t o d e b lo q u e s básicos, d o n d e c a d a b lo ­
q u e c o n te n g a u n a se c u e n c ia d e p ro p o s ic io n e s d e tres d ire c c io n e s. Se s u p o n e q u e las
c a d e n a s d e u s o y d e f in ic ió n p a r a las p r o p o s ic io n e s in d iv id u a le s e s tá n d is p o n ib le s
c o m o se les c a lc u la en la secció n 10.5.
10.7 T R A N S F O R M A C IO N E S PARA M EJORAR EL C O D IG O 657

S a lida. El c o n j u n t o d e p ro p o s ic io n e s d e tres d ire c c io n e s q u e c a lc u la n el m is m o va­


lo r c a d a vez q u e se e je c u ta n , d e s d e q u e el c o n tr o l e n tr a al la z o L h a s ta el m o m e n to
e n q u e el c o n tr o l sale d e L.

M étodo. S e d a r á u n a especificación m á s bien in fo rm a l del alg o ritm o , e s p e r a n d o q u e


los p rin c ip io s re su lte n claros.

1. M á r q u e s e “ in v a ria n te * ' a q u e lla s p r o p o s ic i o n e s c u y o s o p e r a n d o s s e a n to d o s


c o n s ta n te s o te n g a n s u s d e fin ic io n e s d e a lc a n c e f u e ra d e L.

2. R e p íta s e el p a s o 3 h a s ta q u e e n a l g u n a re p e tic ió n n o se m a r q u e n n u e v a s p r o ­
p o sicio n es c o m o “ in v a r ia n te '’.

3. M á r q u e n s e “ i n v a r i a n t e " to d a s a q u e lla s p r o p o s ic io n e s q u e n o h a y a n s id o así


m a r c a d a s p r e v ia m e n te c u y o s o p e r a n d o s s e a n c o n s ta n te s , te n g a n t o d a s s u s d e ­
fin ic io n e s d e a lc a n c e f u e ra d e L , o te n g a n e x a c ta m e n te u n a d e f in ic ió n d e a l­
c a n c e . y q u e e s a d e f in ic ió n sea u n a p r o p o s ic ió n d e n t r o d e L m a r c a d a c o m o
in v a ria n te . □

R e a liz a c ió n d e tr a s la d o d e c ó d ig o

H a b ie n d o e n c o n tr a d o las p ro p o s ic io n e s in v a ria n te s d e n t r o d e u n lazo, se p u e d e a p li­


c a r a a lg u n a s d e ellas u n a o p tim a c ió n c o n o c id a c o m o traslado de código , en la q u e
las p ro p o s ic io n e s se tr a s la d a n al p r e e n c a b e z a m ie n to del lazo. L as tres sig u ie n te s c o n ­
d ic io n e s g a r a n tiz a n q u e el tra s la d o d e c ó d ig o n o m o d if iq u e la fu n c ió n del p ro g ra m a .
N in g u n a d e las c o n d ic io n e s es a b s o lu ta m e n te f u n d a m e n ta l; se h a n s e le c c io n a d o es­
ta s c o n d ic io n e s p o r q u e son fáciles d e c o m p r o b a r y p o r q u e se a p lic a n a situ a c io n e s
q u e o c u rre n e n p ro g r a m a s reales. M á s a d e la n te se a n a liz a r á la p o s ib ilid a d d e relajar
las c o n d icio n es.
L a s c o n d ic io n e s p a r a la p ro p o s ic ió n r . x : = y + z son:

1. El b lo q u e q u e c o n te n g a s d o m i n a to d o s los n o d o s salida d e l lazo, d o n d e u n a


salid a d e u n la z o es u n n o d o c o n u n su c e s o r q u e n o esté e n el lazo.

2. N o h a y o tr a p ro p o s ic ió n e n el la z o q u e h a g a u n a a s ig n a c ió n a x. D e n u e v o , si x
es u n te m p o ra l a s ig n a d o só lo u n a vez, esta c o n d ic ió n s ie m p re se c u m p l e y n o
n e c e sita c o m p ro b a c ió n .

3. N in g ú n u s o d e x e n el la z o e s a l c a n z a d o p o r n in g u n a d e f in ic ió n d e x q u e n o
sea v. E sta c o n d ic ió n ta m b ié n se c u m p lir á , g e n e r a lm e n te , si x e s u n te m p o ra l.

L o s sig u ie n tes tres e je m p lo s m o tiv a n las c o n d ic io n e s a n terio res.

E je m p lo 1 0 .2 0 . T r a s la d a r u n a p ro p o s ic ió n q u e n o n ecesita e je c u ta rs e d e n t r o d e u n
lazo a u n a p o sic ió n f u e ra del la z o p u e d e c a m b ia r la f u n c ió n q u e realiza el p ro g ra m a ,
c o m o se d e m u e s t r a u tiliz a n d o la figura 10.36. E sta o b s e rv a c ió n m o tiv a la c o n d ic ió n
l . y a q u e u n a p ro p o sic ió n q u e d o m i n a to d a s las s a lid a s n o p u e d e d e ja r d e ejecutarse,
s u p o n ie n d o q u e el la z o n o f u n c io n a in d e fin id a m e n te .
C o n s id é re s e el g rafo d e flu jo q u e se m u e s tra e n la figura 10.36(a). B 2, B y y BA
f o r m a n u n la z o c o n e n c a b e z a m i e n to B 2. L a p r o p o s ic ió n i : =2 e n By e s e v id e n te ­
m e n te u n in v a ria n te d e l lazo. S in e m b a r g o , By n o d o m i n a a B 4, la ú n ic a salid a del
658 O PT IM A C IO N DE C O D IG O

la z o . S i s e t r a s l a d a i : = 2 a u n p r e e n c a b e z a m i e n t o r e c i é n c r e a d o B 6, c o m o s e m u e s ­
t r a e n la f ig u r a 1 0 .3 6 (b ), se p u e d e c a m b i a r e l v a l o r a s i g n a d o a j e n B 5, e n c a s o s en
q u e n u n c a s e e j e c u t a ¿?3. P o r e j e m p l o , si u = 3 0 y v = 2 5 c u a n d o s e e n t r a p o r p r im e r a
v e z a B 2, la f ig u r a 1 0 .3 6 (a ) a s ig n a 1 a j e n B 5, y a q u e n u n c a s e e n t r a a # 3, e n t a n t o
q u e la f i g u r a 1 0 .3 6 (b ) a s ig n a 2 a j . □

(a ) A n te s (b ) D e s p u é s

F ig. 1 0 .3 6 . E je m p lo d e tr a s la d o ilegal d e cód igo .

E j e m p l o 1 0 .2 1 . L a c o n d i c i ó n 2 e s n e c e s a r i a c u a n d o h a y m á s d e u n a a s i g n a c i ó n a x
e n el la z o . P o r e j e m p l o , la e s t r u c t u r a d e l g r a f o d e f lu jo d e la f ig u r a 1 0 .3 7 e s la m i s m a
q u e la d e la f ig u r a 1 0 .3 6 (a ), y e x i s t e la p o s i b i l i d a d d e c r e a r u n p r e e n c a b e z a m i e n t o
Bb c o m o e n la f ig u r a 1 0 .3 6 (b ).
C o m o B 2 e n la f ig u r a 1 0 .3 7 d o m i n a la s a l i d a Z?4, la c o n d i c i ó n 1 n o i m p i d e q u e
i : = 3 s e t r a s l a d e al p r e e n c a b e z a m i e n t o B b. S in e m b a r g o , si se h a c e a s í, se i g u a l a r á i
a 2 s i e m p r e q u e s e e j e c u t e B 3, y c u a n d o s e lle g u e a B 5 i t e n d r á el v a l o r 2 , a u n q u e
se sig a u n a s e c u e n c i a c o m o B 2 - > B$ - > B 4 - > B 2 - > B 4 - > B s. P o r e j e m p l o , c o n s i ­
d é r e s e lo q u e o c u r r e si v e s 2 2 y u e s 2 1 c u a n d o s e lle g a p o r p r i m e r á v e z a B 2. Si
i : = 3 e s t á e n B 2, s e i g u a l a j a 3 e n B 5j p e r o si i : = 3 s e t r a s l a d a a l p r e p n c a b e z a -
m i e n t o s e ig u a la j a 2 . X □

E j e m p lo 1 0 .2 2 . A h o r a se c o n s i d e r a r á la r e g la 3. E l u s o k : = i e n e l b l o q u e B 4 d e la
fig u ra 1 0 .3 8 e s a l c a n z a d o p o r i : = l e n el b l o q u e B u a s í c o m o p o r i : = 2 e n # 3. P o r
t a n t o , n o s e p o d r í a t r a s l a d a r i : =2 a l p r e e n c a b e z a m i e n t o , p o r q u e e l v a l o r d e k q u e
a l c a n z a B 5 c a m b i a r í a e n el c a s o u > = v . P o r e j e m p l o , si u = v = 0 e n t o n c e s k s e ig u a la a
1 e n el g r a f o d e f lu jo d e la f i g u r a 1 0 .3 8 , p e r o si i : = 2 se t r a s l a d a a l p r e e n c a b e z a ­
m i e n t o , k se h a c e ig u a l a 2 u n a v e z y p a r a s i e m p r e . □
10.7 T R A N S F O R M A C IO N E S PARA M EJORAR EL C O D IG O 659

Fig. 10.37. C ondición 2. Fig. 10.38. C ondición 3.

A lg o ritm o 10.8. T r a s la d o d e código.

Entrada. U n lazo L c o n in fo rm a c ió n so b re el e n c a b e z a m ie n to d e uso y d e fin ició n


y so b re los d o m in a n te s .

Salida. U n a v ersió n rev isad a del lazo c o n u n p r e e n c a b e z a m ie n to y (p o s ib le m e n te )


a lg u n a s p ro p o s ic io n e s tra s la d a d a s al p re e n c a b e z a m ie n to .

M étodo.
1. U tilícese el a lg o ritm o 10.7 p a r a e n c o n t r a r las p ro p o s ic io n e s in v a ria n te s del lazo.

2. P a ra c a d a p ro p o sic ió n s q u e d e f in a x e n c o n t r a d a e n el p a so 1. verifiqúese:

i) q u e esté e n u n b lo q u e q u e d o m i n e to d a s las salid as d e L,


ii) q u e x n o se d e f in a en o t r a p a r te d e L . y
iii) q u e to d o s los u so s en L d e x só lo p u e d a n s e r a lc a n z a d o s p o r la d e fin ició n
d e x en la p ro p o s ic ió n s.

3. T ra slá d e se . en el o rd e n e n c o n t r a d o p o r el a lg o ritm o 10.7. c a d a p ro p o s ic ió n s e n ­


c o n tr a d a en 1 y q u e h a y a c u m p lid o las c o n d ic io n e s 2i), 2ii) y 2iii). a u n p r e e n ­
c a b e z a m ie n to n u e v o recién c re a d o , s ie m p re q u e las p ro p o s ic io n e s d e d e fin ició n
d e los o p e r a n d o s d e w q u e estén d e fin id o s e n la la z o L (e n c a so d e q u e s hay a
sid o e n c o n t r a d o e n el p a so 3 del A lg o ritm o 10.7) h a y a n sid o tra s la d a d a s p re v ia ­
m e n te al p r e e n c a b e z a m ie n to . □

P ara c o m p r e n d e r p o r q u é n o p u e d e o c u r r ir n in g ú n c a m b io en la fu n c ió n q u e
realiza el p ro g ra m a , las c o n d ic io n e s 2i) y 2ii) del a lg o ritm o 10.8 g a r a n tiz a n q u e el
v alo r d e x c a lc u la d o en v d e b e s e r el v a lo r d e x d e s p u é s d e c u a lq u ie r b lo q u e d e salida
d e L. C u a n d o s se tra sla d a al p r e e n c a b e z a m ie n to . s seg u irá s ie n d o la d e fin ic ió n d e
x q u e a lc a n c e el final d e c u a lq u ie r b lo q u e d e salid a d e L. L a c o n d ic ió n 2ii¡) g a ra n ­
tiza q u e los usos d e x d e n tro d e L utilizaron y u tiliz arán el v alo r de x c a lc u la d o p o r s.
660 O PT IM A C IO N DE C O D IG O

Para com probar por qué la transform ación no puede aum entar el tiem po de eje­
cución del program a, obsérvese que la condición 2 i) garantiza que s se ejecute al
menos una vez cada vez que el control entra a L . Después del traslado del código,
se ejecutará exactam ente una vez en el preencabezam iento y ninguna en L cada vez
que el control entre a L.

E s tr a t e g ia s a lte r n a tiv a s p a r a el tr a s la d o de c ó d ig o

Se puede relajar un poco la condición 1 si quiere correr el riesgo de increm entar un


poco el tiem po de ejecución de un program a. Por supuesto, no se m odifica el cál­
culo del program a. La versión relajada de la condición 1 para el traslado de código
[es decir, el elemento 2 i) del Algoritm o 10.8] consiste en que se pueda trasladar una
proposición s que asigne x sólo si:

1 . El bloque que contenga s dom ina todas las salidas del lazo, o x no se utiliza fuera
del lazo. Por ejem plo, si x es una variable tem poral, se puede estar seguro (en
m uchos com piladores) de que el valor se utilizará sólo en su propio bloque. En
general, se necesita el análisis de variables activas para saber si x está activa en
cualquier salida del lazo.

Si se m o d ifica el alg o ritm o 10.8 para qu e u tilice la co n d ició n 1', o casio n al­
mente el tiem po de ejecución se increm entará ligeram ente, pero en general no habrá
por qué preocuparse. E l alg o ritm o m odificad o puede traslad ar al preencabeza­
m iento algunos cálculos que podrían no ejecutarse en lazo. Este riesgo ralentiza de
m anera significativa el program a, y tam bién puede ocasionar un erro r en algunas
circunstancias. Por ejem plo, la evaluación de una d ivisión x / y en un lazo puede
estar precedida de una prueba para ver si y = 0 . Si se traslada x / y al preencabeza­
m iento, puede o c u rrir una d iv isió n por 0. Por esta razón, no conviene u tiliz a r la
condición V a menos que la optim ación pueda ser in h ib id a por el program ador o
que se aplique la condición 1 m ás estricta para las proposiciones de división.
A unque la asignación x := y + z nunca cum p la ninguna de las condiciones 2i),
2 ii) y 2 iii) del algoritm o 10.8, todavía se puede sacar el cálculo y + z del ciclo . Se
crea un nuevo tem poral t , y se coloca t : = y + z en el preencabezam iento. Después
se sustituye x := y + z p o r x : = t en el lazo. En m uchos casos se puede entonces pro­
pagar la proposición de copia x : = t com o se estudió antes en esta sección. Obsérvese
que si se cum ple la condición 2 iii) del algoritm o 10.8, es decir, si todos los usos de
x en el lazo L se definen en x := y + z (ahora x : = t ) , entonces se puede elim in ar la
proposición x : = t sustituyendo los usos de x en L por usos de t y colocando x : = t
después de cada salida del lazo.

M a n t e n i m i e n t o de la in f o r m a c ió n d e l f lu jo de d a to s d e s p u é s d e l tr a s la d o d e c ó d ig o

Las transform aciones del algoritm o 10.8 no alteran la in fo rm ació n del encadena­
m iento de uso y definición, ya que según las condiciones 2i), 2 ii) y 2 iii), todos los
usos de la variable asignada por una proposición trasladada s que fuera alcanzada
por .9 sigue siendo alcanzada por s desde su nueva posición. Las definiciones de las
variables utilizadas por .9 están fuera de L , en cuyo caso alcanzan al preencabeza­
m iento, o están dentro de L , en cuyo caso p o r el paso 3 fueron trasladadas al preen­
cabezam iento por delante de s.
10.7 T R A N S F O R M A C IO N E S PARA M EJORAR EL C O D IG O 661

Si se re p re s e n ta n las c a d e n a s d e u s o y d e fin ic ió n m e d ia n te listas d e a p u n ta d o r e s


a a p u n t a d o r e s a p ro p o s ic io n e s (e n lu g a r d e p o r listas d e a p u n t a d o r e s a p ro p o s ic io ­
n es), se p u e d e n m a n t e n e r las c a d e n a s d e u s o y d e fin ic ió n c u a n d o se tra s la d e la p ro ­
p o sic ió n 5, c a m b i a n d o s im p le m e n te el a p u n t a d o r a s c u a n d o se tra sla d e . Es decir,
p a r a c a d a p ro p o s ic ió n 5 se c re a u n a p u n t a d o r p „ q u e s ie m p re a p u n t e a s. S e s itú a p,
en c a d a c a d e n a d e u s o y d e fin ic ió n q u e c o n te n g a s. E n to n c e s , in d e p e n d ie n te m e n te
d e a d o n d e se tra s la d e s, só lo h a y q u e m o d ific a r p v, s in te n e r en c u e n t a c u á n t a s ca­
d e n a s d e u s o y d e fin ic ió n e n c u e n tr e s. P o r s u p u e s to , el nivel a d ic io n a l d e in d ireccio -
nes e m p le a algo d e ti e m p o y e s p a c io del c o m p ila d o r.
Si se re p re s e n ta n las c a d e n a s d e u s o y d e fin ic ió n m e d ia n te u n a lista d e d ire c c io ­
n e s d e p ro p o s ic io n e s ( a p u n ta d o r e s a p ro p o s ic io n e s) to d a v ía se p u e d e n m a n t e n e r las
c a d e n a s d e u s o y d e fin ic ió n c u a n d o se tra s la d e n las p ro p o s ic io n e s. P e r o e n to n c e s se
n e c e s ita n a s im is m o la s c a d e n a s d e d e f in ic ió n y u s o , p a r a u n a m a y o r e fic ie n c ia .
C u a n d o se tra s la d a s. se p u e d e re c o rre r su c a d e n a d e d e fin ic ió n y uso, m o d if ic a n d o
la c a d e n a d e uso y d e fin ic ió n e n to d o s los u so s q u e se re fie ra n a s.
L a in f o r m a c ió n so b re d o m in a c ió n v ie n e m o d ific a d a lig e ra m e n te p o r el tra s la d o
d e c ó d ig o . E l p r e e n c a b e z a m i e n to e s a h o r a el d o m i n a d o r i n m e d i a t o d e l e n c a b e z a ­
m ie n to y el d o m i n a d o r in m e d ia t o del p r e e n c a b e z a m ie n to es el n o d o q u e a n te s era
el d o m i n a d o r in m e d ia t o d e l e n c a b e z a m ie n to . E s d ecir, el p r e e n c a b e z a m ie n to se in ­
serta en el á rb o l d e d o m i n a c ió n c o m o p a d re del e n c a b e z a m ie n to .

E lim in ació n d e v a ria b le s d e inducción

U n a v a ria b le x se d e n o m in a variable d e inducción d e u n lazo L si c a d a v ez q u e la


v ariab le x c a m b ie d e v a lo r, se in c r e m e n ta o d e c r e m e n ta p o r u n a c o n s ta n te . A m e ­
n u d o , u n a v a ria b le d e in d u c c ió n se in c r e m e n ta p o r la m is m a c o n s ta n t e c a d a vez q u e
se ite ra el lazo, c o m o i e n u n lazo e n c a b e z a d o p o r fo r i := I to 10. S in e m b a r g o , los
m é to d o s a q u í c o n s id e ra d o s se refieren a v aria b les q u e se in c r e m e n ta n o d e c r e m e n -
ta n c e ro , u n a , d o s o m á s veces c u a n d o se ite ra u n lazo. El n ú m e r o d e m o d ific a c io n e s
e n u n a v ariab le d e in d u c c ió n p u e d e d ife rir in c lu so e n d is tin ta s iteracio nes.
U n a situ a c ió n h a b itu a l e s c u a n d o u n a v a ria b le d e in d u c c ió n , p o r e je m p lo , i , es
el ín d ic e d e u n a m a triz , y a lg u n a o t r a v a ria b le d e in d u c c ió n , p o r e je m p lo , t . c u y o
v a lo r es u n a fu n c ió n lin eal d e i , e s el d e s p la z a m ie n to real u tiliz a d o p a r a a c c e d e r a
la m a triz . A m e n u d o , el ú n ic o uso q u e se h a c e d e i e s p a r a c o m p r o b a r la te r m in a ­
c ió n del lazo. E n to n c e s se p u e d e p re s c in d ir d e i s u s titu y e n d o su p r u e b a p o r u n a s o ­
b re t .
L o s sig u ie n tes a lg o ritm o s se refieren a u n a clase lim ita d a d e v a ria b le s d e in d u c ­
c ió n p a r a s im p lific a r la p re s e n ta c ió n . Se p u e d e n a m p lia r los a lg o ritm o s a ñ a d i e n d o
m á s casos, p e ro o tra s exigen q u e se d e m u e s tr e n los te o re m a s s o b re e x p re s io n e s con
los h a b itu a le s o p e r a d o r e s a ritm é tic o s.
Se b u s c a rá n variables básicas d e inducción , q u e s o n a q u e lla s v aria b les i c u y a s
ú n ic a s a s ig n a c io n e s d e n t r o d e l la z o L s o n d e la f o r m a i : = i ± c , d o n d e c e s u n a
c o n s ta n te '. D e s p u é s se b u scan v aria b les d e in d u c c ió n a d ic io n a le s j q u e e s té n defi-

E n e s t e a n á l i s i s d e l a s v a r i a b l e s d e i n d u c c i ó n , *'+ " r e p r e s e n t a s ó l o el o p e r a d o r d e a d i c i ó n , n o u n
o p e r a d o r g e n é ric o , y l o m is m o lo s o tr o s o p e r a d o r e s a r itm é tic o s e s tá n d a r.
662 O PT IM A C IO N DE C O D IG O

nidas sólo una vez dentro de L , y cuyo va lo r sea una función lineal de una variable
básica de in d u cció n i donde se defina j .

A lgoritm o 10.9. D etección de variables de inducción.

Entrada. U n lazo L con in fo rm ació n sobre las d efiniciones de alcance e inform a­


ción sobre los cálculo s invariantes del lazo (del A lgoritm o 10.7).

Salida. U n co n ju n to de variables de in d u cció n . A sociado a cada variable de in d u c­


ción j hay un trip le ( i , c, d), donde i es una variable básica de in d u cció n , y c y d
son constantes tales que el va lo r de j viene dado p o r c * i+ d en el punto donde se
define j . Se dice que j pertenece a la fa m ilia de i . L a variable básica de inducción
i pertenece a su propia fam ilia.
M étodo

1. Encuéntrense todas las variables básicas de in d u cció n exam inando las proposi­
ciones de L . A q u í se u tiliza la in fo rm ació n sobre cálculo s invariantes del lazo.
A sociado co n cada variable básica de in d u cció n está el triple ( i , 1,0 ).

2. Búsquense las variables k con una sola asignación a k dentro de L y que tiene
una de las siguientes formas:

k : = j *b, k := 6 * j, k := j /b y k := j ± 6 , k := b ± j

donde b es una constante, y j es un a variable de in d u cció n , básica o de otro


tipo.
Si j es básica, entonces k está en la fam ilia de j . E l triple correspondiente a
k depende de la in stru cció n que la defina. P o r ejem plo, si k está d efin id a por
k : = j */?, entonces el triple para k es ( j , b. 0). Lo s triples para los casos restantes
se pueden determ inar de m anera sim ilar.
Si j no es básica, supóngase que j está en la fam ilia de i . Entonces los re­
quisitos adicionales son que

(a) no haya asignación a i entre el único punto de asignación a j en L y la asig­


nación a k, y

(b ) ninguna d efin ició n de j fuera de L alcance k.

E l caso h ab itual será que las d e fin icio n e s de k y j estén en tem porales en el
m ism o bloque, en cuyo caso es fácil de com probar. E n general, la inform ación
sobre las d efiniciones de alcance proporcionará las com probaciones necesarias
si se analiza el grafo de flu jo del lazo L para determ inar los bloques (y Ror tanto
las definiciones) que estén en los cam inos entre la asignación a j y la asignación
a k.
E l triple para k se calcula a p artir del trip le ( i , t\ d ) para j y la instrucción
que defina k. Por ejem plo, la d efin ició n k :- ¿ * j conduce a ( i , ¿*c, b*d) para k.
Obsérvese que las m u ltip licacio n es en b*c y b * d se pueden realizar a m edida
que avanza el an álisis porque c y d son constantes. □
/ i

U na vez encontradas las fam ilias de las variables de in d u cció n , se m odifican las
instrucciones que calculan una variable de in d u cció n para que utilice sum as o restos
10.7 T R A N S F O R M A C I O N E S P A R A M E J O R A R EL C O D I G O 663

e n lu g a r d e m u ltip lic a c io n e s. L a s u s titu c ió n d e u n a in s tru c c ió n m á s c a r a p o r o tra


m á s b a r a t a se lla m a reducción d e intensidad.

E je m p lo 1 0 .2 3 . El la z o f o r m a d o p o r el b lo q u e B2 d e la figura 10.39(a) tie n e la v a­


riab le b ásica d e in d u c c ió n i p o r q u e la ú n ic a asig n ac ió n a i e n el lazo in c re m e n ta
s u v a lo r e n 1. L a fa m ilia d e i c o n tie n e t 2 p o r q u e h a y u n a so la a s ig n a c ió n a t 2. con
la d o d e r e c h o 4 * i . P o r ta n to , el trip le p a r a t 2 es (1 .4 ,0 ). D e m a n e r a s im ila r, j es la
ú n ic a variable básica d e in d u c c ió n e n el la z o q u e c o n s ta d e By y t 4. c o n trip le ( j,4 ,0 ),
está e n la fam ilia d e j .

t5 := a [ t 4]
if 15> v g o t o By

(a) A ntes (b) Después

Fig. 10.39. R educción d e intensidad.

T a m b ié n se p u e d e n b u s c a r v a ria b le s d e in d u c c ió n e n el la z o e x te r io r c o n e n c a ­
b e z a m ie n to B 2 y b lo q u e s B 2y By, BA, By. T a n t o i c o m o j s o n v a ria b le s básicas de
in d u c c ió n e n este la z o m á s g ra n d e . D e n u e v o , t 2 y t 4 s o n v aria b les d e in d u c c ió n
c o n trip les ( i , 4 , 0 ) y ( j,4 .0 ) , re s p e c tiv a m e n te .
El g ra fo d e flu jo d e la fig u ra 10 .3 9 (b ) se o b ti e n e d e l d e la fig u ra 1 0.39(a) a p li­
c a n d o el sig u ie n te a lg o ritm o . M á s a d e la n te se a n a liz a r á e s ta tr a n s fo rm a c ió n . □
664 O PT IM A C IO N DE C O D IG O

A lg o ritm o 1 0 .1 0 . R educción de intensidad aplicada a variables de inducción.


Entrada. U n lazo L con inform ación sobre las definiciones de alcance y las fam ilias
de ind ucció n calculadas por m edio del algoritm o 10.9.

Salida. U n lazo revisado.


M étodo. Considérese cada variable básica de inducción i por turno.Para cada va­
riable de inducción j en la fam ilia de i con triple ( i , c, d)\
1. Créese una nueva variable s (pero si dos variables j i y j 2tienen los mismos
triples, créese sólo una nueva variable para am bas).
2. Sustituyanse las asignaciones a j por j := s .
3. Inm ediatam ente después de cada asignación i : = i + n en L , donde n es una
constante, añádase
s := s + c*n
donde la expresión c*n da com o resultado una constante porque c y n son cons­
tantes. Colóquese s en la fam ilia de i , con triple ( i ,c,d).
4. Q ueda por asegurarse que s se in icialice con c* i+ d al entrar al lazo. La inicia-
lización se puede colocar al final del preencabezam iento. La in icializació n cons­
ta de
s : = c* i /* sólo s : = i si c es 1 */
s := s+¿/ /* om ítase si d es 0 */
Obsérvese que s es una variable de inducción en la fam ilia de i . □

Supóngase que se consideran los lazos de la figura 10.39(a) de den­


E je m p lo 1 0 .2 4 .
tro hacia fuera. C om o el tratam iento de los lazos internos que contienen B 2 y £ 3 es
m uy sim ilar, sólo se hablará del lazo que rodea a B 3. En el ejem plo 10.23 se observó
que la variable básica de ind ucció n en el lazo que rodea a £3 es j y que la otra va­
riab le de in d u cció n es t 4 con trip le ( j ,4,0). E n el paso 1 del algoritm o 10.10, se
construye una nueva variable s 4. E n el paso 2. la asignación t 4 := 4 * j se sustituye
por t 4 : = s 4. E l paso 4 inserta la asignación s 4 : = s 4- 4 después de la asignación
j : = j —1 , donde - 4 se obtiene m ultiplicando el - 1 en la asignación de j y el 4 en el
triple (j.4 ,0 ) para t 4.
Com o B i sirve de preencabezam iento para el lazo, se puede poner la in icia liza ­
ción de s 4 al final del bloque B\ que contiene la definición de j . Las instrucciones
añadidas se m uestran en la am pliación punteada al bloque B ,.
C uando se considera el lazo externo, el grafo de flu jo resulta com o en la figu­
ra 10.39(b). H ay cuatro variables, i , s 2, j y s 4, que se podrían considerar variables
de inducción. Sin embargo, el paso 3 del algoritm o 10.10 coloca las variables recién
creadas en las fam ilias de i y j , respectivam ente, para facilitar la elim inación de i
y j , utilizando el siguiente algoritm o. □
Después de la reducción de intensidad se ve que el único uso de algunas varia­
bles de inducción es para realizar pruebas. Se puede sustituir una prueba de una va­
riable de in d u cció n de ese tipo por la de otra. P o r ejem plo, si i y t son variables de
10.7 T R A N S F O R M A C I O N E S P A R A M E J O R A R E l. C O D I G O 665

in d u c c ió n tales q u e el v alo r d e t s ie m p re sea c u a t r o veces el v a lo r d e i. e n to n c e s la


p r u e b a i>=j es e q u iv a le n te a t>=4* j. D e s p u é s d e esta s u s titu c ió n se p u e d e e lim i­
n a r i. O bsérv ese, sin e m b a rg o , q u e si t=-4*i, e n to n c e s ta m b ié n h a y q u e c a m b ia r el
o p e r a d o r re la c io n a ! p o r q u e i>=j es e q u iv a le n te a t<=-4* j. E n el s ig u ie n te a lg o ­
r itm o se c o n s id e ra el c a so e n q u e la c o n s ta n te m u ltip lic a tiv a es p o sitiv a , d e ja n d o
c o m o e jercicio la g e n e ra liz a c ió n a c o n s ta n te s negativas.

A lg o r itm o 1 0 . 1 1 . E lim in a c ió n d e v aria b les d e in d u c c ió n .

E n tra d a . U n la z o L c o n i n f o r m a c i ó n s o b r e la s d e f in i c io n e s d e a lc a n c e , s o b re
cá lc u lo s in v a ria n te s del la z o (d e l A lg o ritm o 10.7) y s o b re v aria b les activas.

S a lida. U n lazo revisado.

M étodo.
1. C o n s id é re s e c a d a v a ria b le d e in d u c c ió n i c u y o s ú n ic o s u so s se a n c a lc u la r o tra s
v aria b les d e in d u c c ió n en su fa m ilia y e n sa lto s c o n d ic io n a le s. T ó m e s e u n a j
d e n t r o d e la fam ilia d e i. p r e fe rib le m e n te u n a tal q u e c y d e n su trip le (i. c, d)
se a n ta n sim p le s c o m o sea p o sib le (es d ecir, se prefiere c = 1 y d = 0 ), y se m o ­
d ifica c a d a c o m p r o b a c ió n e n q u e a p a r e z c a i p a r a u tiliz ar j e n su lugar. Se s u ­
p o n d r á q u e c e s p o sitiv a. U n a p r u e b a d e la fo rm a i f i o p r e l x g o t o B. d o n d e
x es u n a v a ria b le d e in d u c c ió n , se s u stitu y e p o r

r := c * x /* r : = x si c e s 1 */
r : = r+ d /* se o m ite si d es 0 */
i f j o p r e l r goto B

d o n d e r es u n te m p o r a l n u e v o . El c a so if x o p r e l i goto B se tr a ta d e fo rm a
a n á lo g a . Si h a y d o s v aria b les d e in d u c c ió n i( e i2 en la p r u e b a if i| o p r e l i2
goto B, e n to n c e s se c o m p r u e b a si se p u e d e n s u s titu ir las d o s i, e i2. El c a so
m á s fácil es c u a n d o se tie n e j , c o n trip le ( i , , C|, d \) y j 2 c o n trip le ( i 2. c2. í/2). y
C| = c2 y d\ = d 2. E n to n c e s , i, o p r e l i 2 es e q u iv a le n te a j , o p r e l j 2. E n casos
m á s c o m p le jo s , p u e d e q u e n o valga la p e n a s u s titu ir la p r u e b a , p o r q u e q u iz á s
h a y a q u e in tr o d u c ir d o s p a so s m u ltip lic a tiv o s y u n a s u m a , e n t a n t o q u e só lo se
p o d ría n a h o r r a r d o s p a so s e l im i n a n d o i, e i2.
P o r U ltim o, b ó rre n s e to d a s las a s ig n a c io n e s a las v aria b les d e in d u c c ió n eli­
m in a d a s d e l la z o L , p o r q u e a h o r a ya n o se u tiliz arán .
2. C o n s id é r e s e a c o n t i n u a c i ó n c a d a v a ria b le d e in d u c c ió n j p a r a la c u a l el algo­
r i t m o 10.10 i n t r o d u j o u n a p ro p o s ic ió n j : = s . C o m p r u é b e s e p r i m e r o q u e n o
p u e d e h a b e r a s ig n a c io n e s a s e n tr e la p ro p o s ic ió n in tr o d u c id a j : = s y c u a lq u ie r
u s o d e j . E n la situ a c ió n h a b itu a l, j se u tiliza e n el b lo q u e e n el q u e se define,
s im p lific a n d o esta c o m p r o b a c ió n ; en c a so c o n tr a r io , se n ecesita la in f o r m a c ió n
so b re las d e fin ic io n e s d e a lc a n c e , m á s u n a n á lis is d e g ra fo s p a r a im p la n t a r esta
c o m p r o b a c ió n . D e s p u é s, s u s titu y a n s e to d o s lo s u so s d e j p o r u so s d e s y b ó ­
rrese la p ro p o s ic ió n j : = s . □

E je m p lo 1 0 .2 5 . C o n s id é re s e el g rafo d e flu jo d e la fig u ra 10.39(b). El lazo in te rn o


q u e ro d e a a B 2 c o n tie n e d o s v aria b les d e in d u c c ió n , i y s 2, p e r o n o se p u e d e n e li­
666 O PTIM A CIO N D E CODIGO

m i n a r p o r q u e s 2 se u tiliz a c o m o ín d ic e p a r a la m a tr iz a , e i se u tiliz a e n u n a p r u e b a
fu era del lazo. D e m a n e r a sim ilar, el lazo a lre d e d o r d e By c o n tie n e las v aria b les d e
in d u c c ió n j y s 4, p e r o n o se p u e d e e lim in a r n in g u n a .
S e a p lic a rá el a lg o r itm o 10.11 al la z o e x te rn o . C u a n d o el a lg o ritm o 10.10 c re ó
las variab les n u e v a s s 2 y s 4. c o m o se a n a liz ó e n el e je m p lo 10.24, s 2 se s itu ó e n la
fa m ilia d e i y s 4 en la fam ilia d e j . C o n s id é re s e la fa m ilia d e i . El ú n ic o u s o d e i
e s en la p r u e b a d e te r m in a c ió n del la z o e n el b lo q u e # 4, d e m o d o q u e i e s c a n d id a to
a ser e l im i n a d o e n el p a so 1 del a lg o ritm o 10.11. L a p r u e b a e n el b lo q u e B 4 in c lu ­
ye las d o s v aria b les d e in d u c c ió n i y j . P o r f o rtu n a , las fam ilia s d e i y j c o n tie n e n
s 2 y s 4 c o n las m i s m a s c o n s t a n t e s e n s u s trip le s , p o r q u e los t r i p le s s o n ( i , 4 . 0 ) y
( j ,4,0), re s p e c tiv a m e n te . P o r ta n to , la p r u e b a i > = j se p u e d e s u s titu ir p o r s 2> = s 4,
p e r m itie n d o q u e se e lim in e n i y j .
El p a s o 2 d e l a l g o r i t m o 10.11 a p l ic a la p r o p a g a c i ó n d e c o p i a s a la s v a r ia b le s
recién c re a d a s, s u s titu y e n d o t 2 y t 4 p o r s 2 y s 4, re s p e c tiv a m e n te . □

V a r ia b le s d e in d u cció n c o n e x p r e s io n e s in v a r ia n te s d e la z o s

E n los a lg o ritm o s 10.9 y 10.10 se p u e d e n p e r m itir e x p re s io n e s in v a ria n te s d e lazos


e n lu g a r d e c o n s ta n te s . S in e m b a rg o , el trip le ( i ,cM) p a r a u n a v a ria b le d e in d u c c ió n
j p u e d e e n to n c e s c o n t e n e r e x p re sio n e s in v a ria n te s d e lazos e n lu g a r d e ex p resio n es.
La e v a lu a c ió n d e estas e x p re sio n e s se d e b e re a liz a r f u e ra d e l la z o L , e n el p r e e n c a ­
b e z a m ie n to . A d e m á s , c o m o el c ó d ig o in te r m e d io exige q u e h a y a a lo s u m o u n o p e ­
r a d o r p o r in s tru c c ió n , h a y q u e e s ta r p r e p a r a d o p a r a g e n e ra r p ro p o s ic io n e s e n c ó d ig o
in te r m e d io p a r a la e v a lu a c ió n d e e x p re s io n e s . L a s u s titu c ió n d e p r u e b a s e n el algo­
r itm o 1 0 .1 1 exige q u e se c o n o z c a el sig n o d e la c o n s ta n te m u ltip lic a tiv a c. P o r este
m o t iv o e s ra z o n a b le c o n c e n tr a r s e en los c aso s e n q u e c sea u n a c o n s ta n te c o n o c id a .

1 0 .8 T R A T A M I E N T O C O N S I N O N I M O S (A L I A S )

Si d o s o m á s e x p re sio n e s d e n o t a n la m i s m a d ire c c ió n d e m e m o r ia , se d ic e q u e las


e x p re sio n e s son sin ó n im a s ( o alias) u n a d e o tra . E n esta secció n se c o n s id e r a r á el
a n álisis del flu jo d e d a lo s e n p re s e n c ia d e a p u n ta d o r e s y p r o c e d im ie n to s q u e in tr o ­
d u c e n s in ó n im o s .
La p re s e n c ia d e a p u n t a d o r e s c o m p lic a n el a n álisis del flu jo d e d a to s , p o r q u e no
se sa b e a c ie n c ia c ie rta lo q u e se d e fin e y u tiliza. L o ú n ic o q u e se p u e d e s u p o n e r si
n o se sa b e d ó n d e p u e d e a p u n t a r el a p u n t a d o r p es q u e u n a a s ig n a c ió n in d ire c ta p o r
m e d io d e u n a p u n t a d o r p u e d e c a m b ia r p o te n c ia lm e n te (es d e c ir, d e fin ir) c u a lq u ie r
variable. T a m b ié n h a y q u e s u p o n e r q u e c u a lq u ie r u s o d e los d a to s a p u n t a d o s p o r
u n a p u n ta d o r , p o r e je m p lo , x : = * p , p u e d e u tiliz a r p o te n c ia lm e n te c u a lq u ie r v aria­
ble. E stas s u p o sic io n e s d a n c o m o re s u lta d o m á s v aria b les a c tiv a s y d e fin ic io n e s d e
a lc a n c e q u e las q u e h a y en re a lid a d y m e n o s e x p re sio n e s d is p o n ib le s q u e la s q u e hay
e n re a lid a d . P o r f o rtu n a , se p u e d e u tiliz a r el a n álisis del flu jo d e d a to s p a r a a v e rig u a r
a d o n d e p u e d e a p u n t a r u n a p u n ta d o r , p u d ie n d o así o b te n e r in f o r m a c ió n m á s precisa
d e los o tr o s a n álisis d e flu jo d e datos.
C o m o e n el c a so d e las a sig n a c io n e s c o n v aria b les d e tip o a p u n ta d o r , c u a n d o se
llega a u n a lla m a d a a u n p r o c e d im ie n to , n o h a v q u e h a c e r n e c e s a ria m e n te la su p o -
10.8 T R A T A M IE N T O C O N S IN O N IM O S (ALIAS) 667

sición de peor caso (que se puede cam biar todo) siem pre que se pueda calcular el
conjunto de variables que un procedim iento podría cam biar. A l igual que con las
optim aciones de código, se pueden cometer errores en el lado conservador. Es decir,
los conjuntos de variables cuyos valores “ pueden ser” cam biados o utilizados po­
drían in c lu ir las variables que fueran cam biadas realmente o utilizadas en alguna
ejecución del program a. C o m o de costum bre, se intentará sim plem ente a p ro xi­
marse a los conjuntos verdaderos de variables m odificadas y utilizadas sin trabajar
demasiado y sin com eter un error que altere la función del programa.

l l n se n c illo le n g u a je d e a p u n ta d o re s

Para una m ayor especificidad, se considerará un lenguaje en el que hay tipos de da­
tos elementales (p o r ejem plo, enteros y reales) que requieren una palabra cada uno,
y matrices de estos tipos. Tam bién habrá apuntadores a estos elementos y a m atri­
ces, pero no a otros apuntadores. H abrá que conform arse con saber que un apun­
tador p apunta a algún lugar en la m atriz a, sin preocuparse del elemento de a al
que está apuntando. Es razonable agrupar todos los elementos de una m atriz, por lo
que se refiere a los objetivos del apuntador. N orm alm ente, los apuntadores se u tili­
zarán com o cursores que recorren una m atriz com pleta, así que si se pudiera reali­
zar un análisis de flujo más detallado, indicaría a m enudo que en un punto deter­
minado del programa, p podría estar apuntando a cualquiera de los elementos de a.
Tam bién se deben hacer ciertas suposiciones sobre qué operaciones aritm éticas
sobre apuntadores tienen un significado semántico. Prim ero, si el apuntador p apunta
a un elemento de datos p rim itivo (de una palabra), entonces cualqu ier operación
aritm ética sobre p produce un valor que puede ser un entero, pero no un apuntador.
Si p apunta a una m atriz, entonces la sum a o resta de un entero deja a p apuntando
a un lugar de la m ism a m atriz, en tanto que otras operaciones aritm éticas sobre
apuntadores producen un valor que no es un apuntador. A unque no todos los len­
guajes prohíben, por ejem plo, trasladar un apuntador desde una m atriz a a una ma­
triz b sum ando al apuntador, esta acción dependería de la im plantación particular
para asegurarse que la m atriz b siguiera a a en la m em oria. E l punto de vista aquí
adoptado es que un com pilador optim ador debe tener en cuenta únicam ente la de­
finición del lenguaje para decidir las optim aciones que se van a realizar. Cada im ­
plantador del com pilador, sin embargo, debe em itir un ju ic io sobre qué optim acio­
nes específicas se deben perm itir al com pilador.

E fe c to s d e a s ig n a c io n e s c o n a p u n ta d o re s

Con estas suposiciones, las únicas variables que podrían utilizarse com o apuntado­
res son las que se declaran com o apuntadores y los tem porales que reciben un valor
que es un apuntador más o menos una constante. Se hará referencia a todas estas
variables com o apuntadores. Las reglas para determ inar dónde puede apuntar un
apuntador p son las siguientes:
1. Si hay una proposición de asignación s:p := & a , entonces inm ediatam ente des­
pués de s, p sólo apunta a a. Si a es una m atriz, entonces p puede apuntar sólo
a a después de cualquier asignación a p de la form a p := & a + c, donde c es una
668 O PTIM A CIO N DE CO DIGO

c o n s t a n t e '. C o m o s ie m p re , se c o n s id e ra q u e &a se refiere a la p o sic ió n del p r i­


m e r e le m e n to d e la m a triz a.

2. Si hay u n a p ro p o sic ió n d e a s ig n a c ió n s : p : = q ± c , d o n d e c es u n e n t e r o q u e n o
sea c e r o , y p y q s o n a p u n t a d o r e s , e n t o n c e s i n m e d i a t a m e n t e d e s p u é s d e 5 , p
p u e d e a p u n t a r a c u a lq u ie r m a tr iz a la q u e p o d r ía a p u n t a r q a n te s d e s, p e ro a
n a d a m ás.

3. Si h a y u n a asig n ac ió n jr:p s~ q , e n to n c e s in m e d ia ta m e n te d e s p u é s d e s, p p u e d e
a p u n t a r a c u a lq u ie r c o sa a la q u e p u d ie ra a p u n t a r q a n te s d e s.

4. D e s p u é s d e c u a lq u ie r o tr a a s ig n a c ió n a p . n o h a y n in g ú n o b je to al q u e p u d ie ra
a p u n t a r p: d ic h a a s ig n a c ió n p r o b a b le m e n te ( d e p e n d ie n d o d e la s e m á n tic a del
le n g u a je ) n o te n g a significado.

5. D e s p u é s d e c u a lq u ie r asig n ac ió n a u n a v a ria b le d ife re n te d e p , p a p u n t a a c u a l­


q u i e r c o sa a la q u e a p u n t a b a a n te s d e la a sig n a c ió n . O b sérv ese q u e esta regla
s u p o n e q u e n in g ú n a p u n t a d o r p u e d e a p u n t a r a u n a p u n ta d o r . R e la ja r esta s u ­
p o sic ió n n o d ific u lta m u c h o las c o sas y la g en e ra liz a c ió n se d e ja al lector.

Se d e f in ir á ent [/i] p a r a el b lo q u e B c o m o la fu n c ió n q u e p r o p o r c io n a p a r a c a d a
a p u n t a d o r p el c o n j u n t o d e v aria b les a la s q u e p p o d r ía a p u n t a r al c o m ie n z o d e B.
F o r m a lm e n te , ent [/?] es u n c o n j u n t o d e p ares d e la fo rm a ( p , a ) , d o n d e p e s u n
a p u n t a d o r y a es u n a variable, lo c u a l significa q u e p p o d r ía a p u n t a r a a . E n la p r á c ­
tica. ent [B] se p u e d e r e p r e s e n ta r c o m o u n a lista p a r a c a d a a p u n ta d o r , y la lista p a ra
p d a el c o n j u n t o d e to d a s las a tales q u e ( p , a ) está e n ent [B]. S e d e fin e sa l [/i] d e
m a n e r a s im ila r p a r a el fin d e B.
Se especifica u n a f u n c ió n d e tra n s fe re n c ia , transg q u e d efin e el efecto del b lo q u e
B. E s d ecir. transB es u n a f u n c ió n q u e t o m a c o m o a r g u m e n to u n c o n j u n t o d e p ares
S , d o n d e c a d a p a r es d e la f o r m a ( p . a ) s ie n d o p u n a p u n t a d o r y a u n a v a ria b le d is ­
tin ta d e a p u n ta d o r , y p ro d u c e o tr o c o n ju n to T. P re s u m ib le m e n te , el c o n ju n to al q u e
se a p lic a trans B se rá ent [tf] y el r e s u lta d o d e la a p lic a c ió n será sa l [B]. S ó lo h a y q u e
in d i c a r c ó m o se c a lc u la trans p a r a p r o p o s ic io n e s s im p le s ; tra n sB se rá e n to n c e s la
c o m p o s ic ió n d e trans, p a r a c a d a p ro p o s ic ió n j del b lo q u e B. L as reglas p a r a c a lc u la r
trans s o n las siguientes:
1. Si s es p : =&a o p : =&a + c en el c a s o e n q u e a sea u n a m a triz , e n to n c e s

trans, (S) = ( S - {(p.b) | c u a lq u ie r v a ria b le b ¡) w {(p.a))

2. Si 5 e s p : = q ± c p a r a el a p u n t a d o r q y u n e n te r o n o c e r o c , e n to n c e s

trans, (S) = ( S - {(p.b) | c u a lq u ie r v a ria b le b¡)


U {(p.b) | ( q .b ) está e n S y b e s u n a v a ria b le d e tip o m a triz )

O b sé rv e se q u e esta regla tie n e s e n tid o in c lu so si p = q .


3. Si s es p : = q , e n to n c e s

trans , (5 ) = ( S - ( S - j ( p , b ) | c u a lq u ie r v a ria b le b})


{(p.b) | ( q .b ) está e n S )

" E n e sta se c c ió n . + s e rep resen ta a si m is m o , e n lugar d e a u n o p e r a d o r g en érico .


1 0 .8 T R A T A M IE N T O C O N S IN O N IM O S (ALIAS) 669

4. Si s asig n a al a p u n t a d o r p c u a lq u ie r o tr a ex p re sió n , e n to n c e s

trans , = S - {(p.b) | c u a lq u ie r v a ria b le b)


5. Si s n o es u n a asig n ac ió n a u n a p u n ta d o r , e n to n c e s trans v ( S ) = S.

A h o ra se p u e d e n e scrib ir las e c u a c io n e s q u e re la c io n a n ent, sa l y trans c o m o si­


gue:

sa! [tí) = transH(ent [/i])


en t[B ] = u sal[P ] (1 0 .13)
/ ’ u n p re d c -
c e s o r d e fí

d o n d e si B c o n s ta d e las p ro p o s ic io n e s .9,, .9> , . . . . sk, e n to n c e s

trans,i (S ) = transh ( trans , (• • • (trans^ (trans , | (5 ))) •• •)).

L as e c u a c io n e s 10.13 se p u e d e n reso lv er f u n d a m e n ta lm e n te c o m o las d efin ic io n e s


d e a lc a n c e del a lg o ritm o 10.2. P o r ta n to , n o se c o n s id e r a r á d e ta lla d a m e n te el algo­
ritm o . sin o q u e só lo se d a r á u n e jem p lo .

- E j e m p l o 10.26. C o n s id é re s e el g ra d o d e flujo d e la figura 10.40. Se s u p o n e q u e a es


u n a m a tr iz y q u e c es u n e n te ro : p y q s o n a p u n ta d o r e s . Al inicio, se iguala ent \ B X]
a 0 . D espués. transH tie n e el e fe c to d e e lim in a r lo s p ares c o n p r im e r c o m p o n e n te
q . y d e s p u é s a ñ a d e el p a r ( q . c). E s d ecir, se h a c e q u e q a p u n t e a c . P o r ta n to .

s a l[ B ,] = lransH¡( 0 ) - {(q. c)J

E n to n c e s , ent [ # : ] = s a l[ B x). El e fe c to d e p : = & c es s u s titu ir to d o s los p ares c o n


p r im e r c o m p o n e n te p p o r el p a r ( p , c). El efecto d e q : =&'(a [2 ] ) es s u s titu ir los
p ares c o n p r im e r c o m p o n e n te q p o r ( q , a ) . O b sérv ese q u e q : = & ( a ( 2 ) ) es e n re a ­
lid ad u n a asig n ac ió n d e la fo rm a q : = & a + c p a r a u n a c o n s ta n te c . A h o ra se p u e d e
c a lc u la r

sa l [ £ : ] = transB, ({(q. c)() = {(p. c ) , ( q . a)}

D e m a n e r a s im ila r, ent [ f t ] = {(q. c)} y sa l [ # 3) = {(p, a ) , ( q . c)f.


A c o n tin u a c ió n , se e n c u e n tr a q u e e n t [Z?4J = sal [/?2] u sal [/?il u sa l [Z^*,]. P re­
s u m ib le m e n te . s a l[ B 5) se in icializó c o n 0 y en este p a so to d a v ía n o h a c a m b ia d o .
S in e m b a rg o , sa l [/?: ] = {(p. c ) . ( q , a)} y sa l [/?*] = {(p. a), (q, c)}. de m o d o q u e

ent 1# 4] = {(p, a ) , ( p , c), ( q , a), (q . c)¡

El e fe c to d e p : = p + l e n B Ae s el d e e lim in a r la p o sib ilid a d d e q u e p n o a p u n t e a un a


m a triz. E s decir,

sa l [B aJ - transHt (ent [Zí4]) = j(p, a), (q. a ) , (q. c)}

O bsérvese q u e s ie m p re q u e se e je c u te B 2, h a c ie n d o q u e p a p u n t e a c . tie n e lu g a r una


acció n s e m á n tic a m e n te sin s e n tid o si se u tiliza p in d ir e c ta m e n te d e s p u é s d e p : = p + l
en B4. P o r ta n to , este g rafo d e flujo n o es “ realista", p e r o ilu stra las in fe re n c ia s q u e
se p u e d e n h a c e r s o b re los a p u n ta d o r e s .
670 O PT IM A C IO N DE C O D IG O

Bx

B2

Fig. 10.40. G rafo de flujo que muestra operaciones con apuntadores.

C o n tin u an d o , ent [Z¿5] = sa l [/?4], y transBs co pia los objetivos de q y se los da


asim ism o a p . C o m o q puede ap u n tar a a o a c en ent [fl5],

sa l [Bs] = {(p, a ), (p , c ), (q , a), (q , c)}


E n la siguiente pasada se encuentra que ent [ B {] = sal [Zf4], de m odo que s a l l# i] =
{(p^ a), (q , c)}. Este v a lo r tam bién es el nuevo ent [B2] y ent [Zy, pero estos nue­
vos valores no cam bian a sal [B2] o a sa l [Zy, n i se m o difica ent [Z?4]. P o r tanto, se
ha llegado a la so lució n deseada. □

U so de la inform ación acerca de los apuntadores

Supóngase que ent [B] es el co n ju n to de variables apuntadas por cada apuntador al


com ienzo del bloque B y que se tiene una referencia del apuntador p dentro del blo­
que B. C om enzando con e n t [5 ], apliqúese transs para cada pro po sició n s del bloque
B que preceda la referencia a p. Este cálculo in d icará hacia dónde pod ría apuntar p
en la proposición donde esa in fo rm ació n sea im portante.
Supóngase ahora que se ha determ inado hacia dónde podría ap u n tar cada apun­
tador cuan d o ese ap u n tad o r se u tiliz a en una referencia in d irecta, ya sea a la iz­
quierd a o a la derecha del sím bolo de asignación. ¿C óm o se puede u tiliza r esta in ­
form ación para obtener soluciones más acertadas a los problem as com unes de flujo
de datos? E n cada caso se debe considerar en qué d irecció n son conservadores los
errores y se debe u tiliza r la in fo rm ació n de los apuntadores de m anera que sólo se
com etan errores conservadores. Para ver cóm o se realiza esta elección, considérense
dos ejem plos: las d efin icio nes de alcance y el a n álisis de variables activas.
Para calcu la r las d efiniciones de alcance se puede u tiliz a r el algoritm o 10.2, pero
es necesario cono cer los valores de d esact y gen correspondientes a un bloque. Estas
últim as cantidades se calculan com o siem pre para las proposiciones que no son asig­
naciones indirectas p o r m edio de apuntadores. Se considera que una asignación in ­
directa * p := a genera una d efin ició n de toda variable tal que p pudiera ap u n tar a b.
Esta suposición es conservadora, porque com o se estudió en la sección 10.5, por lo
10.8 T R A T A M IE N T O CON S IN O N IM O S (A L IA S ) 671

general es conservador suponer que las d efiniciones alcanzan un punto cuando en


realidad no lo hacen.
C uando se calcula desact, se supondrá que * p=a desactiva las definiciones de b
sólo si b no es una m atriz y es la única variable a la que podría apuntar p. Si p pu­
diera apuntar a dos o más variables, entonces no se supone que se desactivan las
definiciones de ninguna de ellas. D e nuevo, se está siendo conservador porque se
perm ite que las d efiniciones de b pasen por * p := a , y por tanto que alcancen todas
las partes que pueden, a m enos que se pueda dem ostrar que * p := a redefinió b. En
otras palabras, cuando existe la duda, se supone que una d efin ició n alcanza.
Para las variables activas se puede u tiliza r el algoritm o 10.4, pero se debe recon­
sid erar có m o se van a d e fin ir d e f y u so para p ro p o sicio n es de la form a * p := a y
a : =*p. L a proposición * p := a sólo utiliza a y p. Se dice que define b sólo si b es la
única variable a la que puede apuntar p. Esta suposición perm ite que los usos de b
pasen por la proposición a m enos que sean bloqueados por la asignación * p := a .
Por tanto, nunca se puede d ecir que b está inactiva en un punto cuando en realidad
está activa. La proposición a := * p representa siem pre una d efin ició n de a. Tam bién
representa un uso de p y un uso de cu alq u ier variable a la que pudiera apuntar p.
M axim izand o los posibles usos, de nuevo se m axim iza la estim ación de las variables
activas. A l m axim izar las variables activas, norm alm ente se está siendo conservador.
Por ejem plo, se puede generar código para alm acenar una variab le in activa, pero
nunca se dejará de alm acenar una que estuviera activa.

A n á lisis del flu jo de datos entre procedimientos

Hasta ahora, se ha hablado de “ program as’' que son procedim ientos sim ples y por
tanto grafos de flu jo sim ples. A h o ra se verá cóm o reu n ir inform ación procedente de
m uchos procedim ientos interactuantes. La idea básica consiste en determ inar cóm o
influye cada procedim iento en la inform ación sobre los co njunto s gen, desact, uso
o d e f de los otros procedim ientos, y después calcular la inform ación del flu jo de da­
tos para cada procedim iento independientem ente com o antes.
D urante el an álisis de flu jo de datos habrá que considerar sinónim os im puestos
por los parám etros en las llam adas a procedim ientos. C om o no es posible que dos
variables globales denoten la m ism a posición de m em oria, al m enos uno de un par
de sinónim os debe ser un parám etro form al. C om o se pueden pasar los parám etros
form ales a los procedim ientos, es posible que dos parám etros form ales sean sin ó n i­
mos.

Ejem plo 10.27. Supóngase que se tiene un procedim iento p con dos parám etros
form ales x e y pasados por referencia. E n la figura 10.41, se observa una situación
en la que b + x se calcula en £ , y /?3. Supóngase que los únicos cam inos desde los
bloques B , a £ 3 pasan por B 2, y no hay asignaciones a b o a x a lo largo de ninguno
de dichos cam inos. Entonces, ¿está disponible b + x en B f! L a respuesta depende de
si x e y pueden denotar la m ism a dirección de m em oria. Por ejem plo, podría haber
una llam ada p ( z , z ), o tal vez una llam ada de p ( u , v ), donde u y v son parám e­
tros form ales de otro procedim iento q ( u , v ), y es posible una llam ada de q ( z , z ).
D e m anera sim ilar, es posible que x e y sean sinónim os si x es un parám etro
form al, por ejem plo de p ( x , w ), e y es una variable con un alcance accesible a algún
672 O PTIM A CIO N DE CODIGO

p r o c e d im ie n to q q u e lla m e a p , p o r e je m p lo c o n lla m a d a p ( y , t ). S itu a c io n e s a ú n


m á s c o m p lic a d a s p o d r ía n h a c e r q u e x e y fu e ra n s in ó n im o s d e o t r a v a ria b le , y d e n ­
tr o d e p o c o se e s tu d ia r á n a lg u n a s reglas g e n e ra le s p a r a d e t e r m i n a r to d o s esos p ares
d e s in ó n im o s . □

Fig. 10.41. Ilustración de p ro b lem as d e sin ó n im o s (alias).

E n a lg u n a s s itu a c io n e s r e s u lta r á c o n s e r v a d o r n o c o n s id e r a r a lg u n a s v a ria b le s


c o m o s in ó n im o s d e o tras. P o r e je m p lo , e n las d e fin ic io n e s d e a lc a n c e , si se d e se a
a f ir m a r q u e u n a d e fin ic ió n d e a e s d e s a c tiv a d a p o r u n a d e fin ic ió n d e b , e s m e jo r
aseg u rarse d e q u e a y b s o n re a lm e n te s in ó n im o s s ie m p re q u e se e je c u te la d e fin i­
c ió n d e b . O tr a s veces re su lta c o n s e r v a d o r c o n s id e r a r las v aria b les c o m o s in ó n im o s
u n a d e o tr a s ie m p re q u e ex ista a lg u n a d u d a . El e je m p lo 10.27 es u n o d e esos casos.
Si la e x p re sió n d is p o n ib le b + x n o v a a s e r d e s a c tiv a d a p o r u n a d e fin ic ió n d e y , hay
q u e aseg u rarse d e q u e ni b ni x p u e d a n ser u n s in ó n im o d e y.

U n m o d e lo d e c ó d ig o c o n lla m a d a s a p r o c e d im ie n to s

P a r a ilu s tr a r c ó m o se p u e d e n c o n s id e r a r lo s s in ó n im o s , se t o m a u n le n g u a je q u e
p e rm ita p ro c e d im ie n to s recursivos, y c u a lq u ie ra d e ellos p u e d a h a c e r referencia ta n to
a v a r ia b le s lo c a le s c o m o g lo b a le s. L o s d a t o s d is p o n ib l e s p a r a u n p r o c e d i m i e n t o
c o n s ta n só lo d e los d a to s g lo b a le s y d e s u s p ro p io s d a to s locales; es d e c ir, n o hay
e s tr u c tu r a d e b lo q u e s p a ra el len g u aje. L o s p a r á m e tr o s se p a s a n p o r referen cia. T o ­
d o s los p r o c e d im ie n to s d e b e n te n e r u n g rafo d e flu jo c o n u n a so la entrada (el n o d o
in icial) y u n so lo n o d o d e retorno q u e h a c e q u e el c o n tr o l v u elv a a la r u ti n a q u e
e fe c tú a la lla m a d a . Se s u p o n e p o r c o n v e n ie n c ia q u e to d o s los n o d o s e s tá n en u n c a ­
m i n o d e s d e la e n tr a d a h a s ta el regreso.
A h o ra s u p ó n g a s e q u e se está e n u n p r o c e d im ie n to p y q u e se e n c u e n t r a u n a lla­
m a d a al p r o c e d im ie n to q ( u , v ). Si se q u ie re c a lc u la r las d e fin ic io n e s d e a lc a n c e , las
e x p re s io n e s d is p o n ib le s o c u a lq u ie r a d e u n n ú m e r o d e o tr o s a n á lis is d e flu jo d e d a ­
tos, se d e b e s a b e r si q ( u , v ) p u e d e c a m b ia r el v alo r d e a lg u n a v ariab le. O b sérv ese
q u e se d ic e “ p u e d e c a m b ia r " e n lu g a r d e d e c ir “c a m b ia r á ” . A l igual q u e to d o s los
p ro b le m a s d e flu jo d e d a to s, es im p o sib le s a b e r c o n c e rte z a si el v a lo r d e u n a v a ria ­
ble se m o d ific a o n o . S ó lo se p u e d e e n c o n t r a r u n c o n j u n t o q u e in c lu y a to d a s las v a­
riab les c u y o s v alo res c a m b ie n y q u iz á s a lg u n a s q u e n o . C o n c u id a d o , se p u e d e re­
d u c i r la ú ltim a clase d e v ariab les, o b te n ie n d o u n a b u e n a a p r o x im a c ió n al c o n j u n t o
v e rd a d e ro y fa lla n d o só lo d e l la d o c o n s e rv a d o r.
10.8 T R A T A M IE N T O CON S IN O N IM O S (A L IA S ) 673

Las únicas variables cuyos valores podría d e fin ir la llam ada q ( u , v ) son las glo­
bales y las variables u y v , que pueden ser locales a p. Las d efin icio nes de variables
locales de q no tienen ningún efecto después de que regresa la llam ada. A u n cuando
p = q, cam biarán otras copias de las locales de q y esas locales desaparecen después
del retorno. Es fá cil determ inar las locales definidas explícitam ente p o r q ; sólo hay
que com probar cuáles tienen d efiniciones en q , o están definidas en un a llam ada a
procedim iento hecha p o r q. Adem ás, u, v o am bas, que pueden ser globales, cam ­
bian si q tiene una d efin ició n de su prim ero o segundo parám etro, respectivam ente,
o si q pasa estos parám etros form ales com o parám etros reales a otro procedim iento
que los defina. S in embargo, no todas las variables m odificadas p o r una llam ada a q
tienen que ser definidas explícitam ente p o r q o por un o de los procedim ientos que
llam a, porque las variables pueden tener sinónim os.

C álculo de los sinónim os


Antes de responder a la pregunta de qué variables pueden cam b iar en un procedi­
m iento dado, se debe d esarro llar un algoritm o para encontrar sinónim os. E l enfo­
que que se u tilizará a q u í es m uy sencillo . Se calcula una relación = sobre variables
que form alice la noción “ puede ser sin ó n im o de” . A l hacer esto no se establecen d i­
ferencias entre ocurrencias de una variable en diferentes llam adas al m ism o proce­
dim iento, aunque se distinguen variables locales a distintos procedim ientos pero que
tengan el m ism o id en tificad o s
Para fa cilita r las cosas, no se intenta diferenciar los co njunto s de sinónim os en
distintos puntos del program a, sino que si dos variables pudieran ser sin ó n im o s una
de otra se supondrá que siem pre lo pueden ser. P o r últim o, se hará la suposición
conservadora de que = es transitiva, a sí que las variables se agrupan en clases de
equivalencias, y dos variables podrían ser sin ó n im o una de la otra si, y sólo si, están
en la m ism a clase.

Algoritm o 10.12. C á lcu lo sim ple de sinónim os.

Entrada. U n a serie de procedim ientos y variables globales.

Salida. U n a relación de equivalencia = con la propiedad de que siem pre que haya
una posición en el program a donde x e y sean sin ó n im o un a de otra, x = y ; la in ­
versa no siem pre se cum ple.

M étodo.
1. Dése otro nom bre a las variables, si es necesario, para que dos procedim ientos
no utilicen el m ism o parám etro form al o id en tificad o r de variab le local, n i para
que las variables locales, los parám etros form ales o los variables globales com ­
partan un identificador.

2. Si hay un procedim iento p ( x ¡ , x 2, . . . , x„) y una in vo cació n p ( y i , y 2, . . . , y„)


de ese procedim iento, asígnese x, = y , para toda /. Es decir, cada parám etro for­
m al puede ser un sin ó n im o de cu alq u iera de sus parám etros actuales correspon­
dientes.
674 O PT IM A C IO N DE C O D IG O

3. Tóm ese la cerradura tran sitiva y reflexiva de las correspondencias actual-form al


añadiendo

a) x = y siem pre que y = x.


b) x = z siem pre que x = y e y = z para alguna y . □

Ejem plo 10.28. Considérese el esbozo de los tres procedim ientos que se muestran en
la figura 10.42, donde se supone que los parámetros se pasan por referencia. H ay dos
variables globales, g y h , y dos variables locales, i para el procedim iento p r i n c i p a l
y k para el procedim iento d o s. El procedim iento un o tiene los parám etros formales
w y x, el procedim iento d o s tiene los parámetros form ales y y z, y p r i n c i p a l no
tiene parámetros formales. Por tanto, no hay que dar otro nom bre a las variables. Pri­
mero se calculan los sinónim os debido a las correspondencias actual-form al.
L a llam ada a un o m ediante p r i n c i p a l hace h = w e i = x . La p rim era lla­
m ada a d o s hecha por un o hace w = y y w = z. La segunda llam ada hace g= y
y x = z. J
L a llam ada a un o por d o s hace k = w e y = x . C u an d o se tom a la cerradura
transitiva de las relaciones de sinónim os representada por = , entonces se ve en este
ejem plo que todas las variables son sinónim os posibles una de otra. □

global g, h;
procedure principal( );
local i;
g := . . . ;
uno(h, i)
end?

procedure uno(w, x);


V ••2 • • • •/
dos(w, w);
dos(g, x)
end;

procedure dos(y, z);


local k;
H
ti •• = • • • f•

u n o ( k , y)
end;

Fig . 10.42. Procedimientos de muestra. v

E l cálculo de sin ó n im o s del algoritm o 10.12 no da a m enudo com o resultado


grupos tan extensos de sinónim os com o en el ejem plo 10.28. Intuitivam ente, no se
pensaría frecuentem ente que dos variables distintas con tipos diferentes sean sinó­
nim os. Adem ás, el program ador tiene indudablem ente tipos conceptuales para sus
variables. Por ejem plo, si el prim er parám etro form al de un procedim iento p repre­
senta una velocidad, se puede pensar que el program ador considerará el p rim er ar­
gum ento en cu alq u ier llam ada a p com o una velocidad. Por tanto, se espera intui-
10.8 T R A T A M IE N T O C O N S IN O N IM O S (ALIAS) 675

tiv a m e n te q u e la m a y o ría d e los p r o g r a m a s p r o d u z c a p e q u e ñ o s g ru p o s d e p o sib les


sin ó n im o s.

A n á lis is d e flu jo d e d a to s e n p r e se n c ia d e lla m a d a s a p r o c e d im ie n to s

C o n sid é re se , c o m o e je m p lo , c ó m o se p u e d e n c a lc u la r las e x p re s io n e s d is p o n ib le s en
p re se n c ia d e lla m a d a s a p ro c e d im ie n to s , d o n d e los p a r á m e tr o s se p a s a n p o r re fe re n ­
cia. Al igual q u e e n la secció n 10.6, h a y q u e d e t e r m in a r c u á n d o p o d r ía ser d e fin id a
u n a v ariab le, d e s a c tiv a n d o p o r t a n t o u n a d e fin ic ió n , y c u á n d o se g e n e r a n (e v a lú a n )
las ex p resio n es.
S e p u e d e d e fin ir, p a r a c a d a p r o c e d im ie n to p , u n c o n j u n t o ca m b io [p], c u y o va­
lo r es ser el c o n j u n t o d e v aria b les g lo b ales y p a r á m e tr o s fo rm a le s d e p q u e p u e d e n
ser m o d if ic a d o s d u r a n t e u n a e je c u c ió n d e p . E n este p u n t o , n o se c o n s id e r a q u e se
h a m o d if ic a d o u n a v ariable si se h a m o d if ic a d o u n m ie m b r o d e su clase d e e q u iv a ­
le n cia d e s in ó n im o s .
Sea d e f[ p] el c o n j u n t o d e p a r á m e tr o s fo rm a le s y v aria b les glo b ales c o n d e fin ic io ­
n e s e x p líc ita s d e n t r o d e p (sin in c lu ir lo s d e f in id o s d e n t r o d e p r o c e d im ie n to s lla­
m a d o s p o r p ). P a r a e scrib ir las e c u a c io n e s p a r a ca m b io [p], só lo hay q u e re la c io n a r
las variab les glo b ales y los p a r á m e tr o s fo rm a le s d e p u tiliz a d o s c o m o p a r á m e tr o s a c ­
tu a le s e n lla m a d a s h e c h a s p o r p c o n los p a r á m e tr o s fo rm a le s c o rr e s p o n d ie n te s d e los
p ro c e d im ie n to s lla m a d o s . Se p u e d e escribir:

cam bio [p] = d e f[ p ] u / l u G (1 0 .1 4 )

donde

1. A = {a | a e s u n a v a ria b le g lo b a l o p a r á m e tr o fo rm a l d e p tal q u e . p a r a alg ú n


p r o c e d im ie n to q y e n te r o /, p lla m a a q c o n a c o m o i-é s im o p a r á m e tr o a c tu a l y
el /-c s im o p a r á m e tr o fo rm a l d e q está e n ca m b io [q]}

2. G = {g | g es u n a v a ria b le g lo b a l e n ca m b io [q] y p lla m a a q}.

N o d e b e s o r p r e n d e r el h e c h o d e q u e la e c u a c ió n (1 0 .1 4 ) se p u e d a re so lv e r p a ra
u n c o n j u n t o d e p r o c e d im ie n to s m e d ia n te u n a té c n ic a ite ra tiv a . A u n q u e la so lu c ió n
n o e s ú n ic a , sólo se n e c e sita la m á s p e q u e ñ a . S e p u e d e llegar a e s a s o lu c ió n c o m e n ­
z a n d o p o r u n a a p r o x im a c ió n d e m a s ia d o p e q u e ñ a e ite ra n d o . P o r s u p u e s to , la a p r o ­
x im a c ió n d e m a s ia d o p e q u e ñ a p o r la q u e c o m e n z a r es ca m b io [p] = d e f[ p]. L o s d e ­
talles d e la iteració n se d e ja n al le c to r c o m o ejercicio.
V ale la p e n a c o n s id e r a r el o rd e n e n el q u e se d e b e r ía n v isita r los p r o c e d im ie n to s
d e la ite ra c ió n a n te rio r. P o r e je m p lo , si los p r o c e d im ie n to s n o son m u t u a m e n t e re-
c u rs iv o s , e n to n c e s se p u e d e n v is ita r p r im e r o los p r o c e d i m ie n t o s q u e n o lla m a n a
n in g ú n o tr o (d e b e h a b e r a l m e n o s u n o ). P a r a esto s p ro c e d im ie n to s , ca m b io = def.
A c o n tin u a c ió n se p u e d e c a lc u la r ca m b io p a r a los p ro c e d im ie n to s q u e lla m a n sólo
a p r o c e d im ie n to s q u e n o lla m a n a n a d ie . Se p u e d e a p lic a r d ir e c ta m e n te (1 0 .1 4 ) p a ra
e s te s ig u ie n te g r u p o d e p r o c e d i m i e n t o s , p u e s t o q u e se c o n o c e r á c a m b io [q ] p a ­
r a c u a l q u ie r q e n (1 0 .1 4 ).
676 O PTIM A CIO N D E CODIGO

E sta id e a se p u e d e p re c isa r m á s d e la sig u ie n te m a n e r a . S e d ib u j a u n g ra fo de


llam adas , c u y o s n o d o s son p ro c e d im ie n to s , c o n u n a a r is ta d e p a q si p lla m a a q “.
U n a serie d e p r o c e d im ie n to s q u e n o se a n m u t u a m e n t e re c u rs iv o s t e n d r á u n grafo
d e lla m a d a s acíclico . E n este c a so se p u e d e v isita r c a d a n o d o u n a vez.
A h o ra se p r o p o r c io n a u n a lg o ritm o p a r a c a lc u la r cam bio.

A lg o ritm o 1 0 .1 3 . A n á lisis e n tr e p r o c e d im ie n to s d e v aria b les m o d ificad as.

E ntrada. U n a serie d e p r o c e d im ie n to s p i , p 2, . . . , p„. Si el g rafo d e lla m a d a s es


acíclico , se s u p o n e q u e p/ lla m a a p , só lo si j < i. E n c a so c o n tr a r io , n o se h a c e n s u ­
p o s ic io n e s a c e rc a d e q u é p r o c e d im ie n to s lla m a n a q u é otros.

S a lida. P a ra c a d a p r o c e d im ie n to p , se p r o d u c e ca m b io [p], el c o n j u n t o d e variab les


g lo b ales y p a r á m e tr o s fo rm a le s d e p q u e p u e d e n ser c a m b ia d o s e x p líc ita m e n te p o r
p sin s in ó n im o s .

M étodo.

1. C a lc ú le se d e f [p] p a r a c a d a p r o c e d im ie n to p m e d ia n te in sp ecció n .
2. E jecú tese el p r o g r a m a d e la figura 10.43 p a r a c a lc u la r cam bio. □

(1) for c a d a p ro cedim ien to p d o cambio [ p ] : = d e f\ p); /rin ic ia liz a r */


(2) w hile ocurren c am b io s a cu alqu ier cam bio (p] do
(3) for / : = 1 to n do
(4) for cada p roced im iento q llam ad o p o r p, d o begin
( 5) a ñ a d ir las variables globales d e cam bio [q) a cam bio |p,);
(6) for cada p a rá m e tro form al x (el y-ésimo) d e q do
(7) if x está en cam bio [q] then
(8) for cada llam ad a a q p o r p, do
(9) if a . el 7-ésim o p a rá m e tro actual d e la llam ada,
es un p a rá m e tro global o form al d e p ;
(10) th e n a ñ a d ir a a cambio [p,]
end

Fig. 10.43. A lgoritm o iterativo para calcular cambio.

E j e m p l o 1 0 .2 9 . S e c o n s i d e r a d e n u e v o la f i g u r a 1 0 .4 2 . P o r i n s p e c c i ó n ,
í / c / ( p r i n c i p a l ) = (g), d e f ( u n o ] = {x} y d e f\á o s ] = {h>. E stos s o n los v a lo re s i ni ­
ciales d e cam bio. El grafo d e lla m a d a s d e lo s p r o c e d im ie n to s se m u e s tra e n la figu­
ra 10.44. Se t o m a r á d o s . u n o . p r i n c i p a l c o m o el o rd e n e n q u e se v isitan los p ro ­
c e d im ie n to s .
C o n s id é re s e p , = d o s en el p r o g r a m a d e la fig u ra 10.42. E n to n c e s q só lo p u e d e
s e r el p r o c e d im ie n to u n o e n la lín ea (4). C o m o ca m b io [ u n o ] = jx ) in ic ia lm e n te .

g S e s u p o n e a q u í q u e n o hay v a ria b le s d e tip o p r o c e d im ie n to . E sta s c o m p lic a n la c o n s tr u c c ió n del


g ra fo d e lla m a d a s, y a q u e h a y q u e d e te r m in a r lo s p o s ib le s p a r á m etr o s a c tu a le s c o r r e sp o n d ie n te s a
lo s p a r á m etr o s fo r m a le s d e t ip o p r o c e d im ie n to al m is m o tie m p o q u e s e c o n str u y e n las a rista s del
g ra fo d e lla m ad as.
10.8 T R A T A M IE N T O C O N S IN O N IM O S (ALIAS) 677

n o se a ñ a d e n a d a a ca m b io [ d o s ] e n la lín e a (5). E n las lín e a s (6) y (7 ) sólo h a y q u e


c o n s id e r a r el s e g u n d o p a r á m e tr o fo rm a l d e l p r o c e d im ie n to u n o , y a q u e el p rim e r
p a r á m e tr o a c tu a l es local a d o s . E n la ú n ic a lla m a d a a u n o d e d o s , el s e g u n d o pa­
r á m e tr o a c tu a l es y , y x su c o r r e s p o n d ie n te p a r á m e tr o fo rm a l, se m o d ific a , asi q u e
ca m b io [ d o s ] se ig u ala a {h, y} e n la lín ea (10).
A h o ra se c o n s id e r a p ( = u n o . E n la lin ea (4). q só lo p u e d e s e r el p r o c e d im ie n to
dos.

Fig. 10.44. G rafo d e llam adas.

E n la lín ea (5), h es u n a v ariab le g lo b a l e n ca m b io [ d o s ] , d e m o d o q u e se h a c e ca m ­


bio [ u n o ] = {h. x}. E n la s lín e a s (6) y (7), só lo el p r im e r p a r á m e tr o fo rm a l d e d o s
está e n ca m b io [ d o s ] , así q u e se d e b e a ñ a d i r g y w a ca m b io [ u n o ] e n la lín ea (10),
s ie n d o ésto s los p r im e r o s d o s p a r á m e tr o s a c tu a le s en las lla m a d a s al p r o c e d im ie n to
d o s . P o r ta n to , ca m b io [ u n o ] = (g , h . w, x¡.
C o n sid érese a h o r a p r i n c i p a l . El p r o c e d im ie n to u n o c a m b ia s u s d o s p a r á m e ­
tro s fo rm ales, así q u e ta n to h c o m o i c a m b ia r á n e n la lla m a d a a u n o h e c h a p o r
p r i n c i p a l . S in e m b a r g o , i e s u n a v a ria b le local y n o e s n e c e sa rio c o n sid e ra rla .
P o r ta n to , se h a c e ca m b io [ p r i n c i p a l ] = (g , h). P o r ú ltim o , se re p ite el la z o w hile
d e la lín ea (2). Al c o n s id e r a r d o s , se ve q u e u n o m o d ific a la v a ria b le g lo b a l g . P or
c o n s ig u ie n te , la ll a m a d a a u n o ( k , y ) h a c e q u e g se m o d i f i q u e , a s í q u e c a m ­
bio [ d o s ] = {g. h , y}. N o o c u rre n m á s c a m b io s e n la ite ra c ió n . □

U s o d e la in fo rm ació n d e cam b io

C o m o e je m p lo d e c ó m o se p u e d e u tiliz a r cam bio, c o n sid é re se el c á lc u lo d e s u b e x ­


p re s io n e s c o m u n e s globales. S u p ó n g a se q u e se e s tá n c a lc u la n d o las e x p re s io n e s d is ­
p o n ib les p a ra u n p r o c e d im ie n to p , y q u e se q u ie re calcular d -d e sa c t [B} p a ra u n blo­
q u e B. S e d e b e c o n s id e ra r q u e u n a d e fin ic ió n d e la v a ria b le a d e s a c tiv a c u a lq u ie r
e x p re sió n q u e im p liq u e a o u n a x q u e p u d ie r a s e r u n s in ó n im o d e a . S in e m b a rg o ,
u n a lla m a d a e n B al p r o c e d im ie n to q n o p u e d e d e s a c tiv a r u n a e x p re sió n q u e in v o ­
lu c re a a a m e n o s q u e a sea u n a s in ó n im o (re c u é rd e se q u e a es u n s in ó n im o d e sí
m i s m a ) d e a lg u n a v a r ia b le e n c a m b io [q]. P o r ta n to , se p u e d e u tiliz a r la i n f o r m a ­
c ió n c a lc u la d a p o r los a lg o ritm o s 10.12 y 10.13 p a r a c o n s tr u ir u n a a p r o x im a c ió n
seg u ra al c o n j u n t o d e e x p re sio n e s d esactiv ad as.
P a r a c a lc u la r las e x p re s io n e s d is p o n ib le s en p ro g r a m a s c o n lla m a d a s a p r o c e d i­
m ie n to s , ta m b ié n h a y q u e te n e r u n a f o r m a c o n s e r v a d o r a d e e s tim a r el c o n j u n t o d e
e x p re sio n e s g e n e ra d a s p o r u n a lla m a d a a u n p r o c e d im ie n to . P a ra s e r c o n se rv a d o re s,
se p u e d e s u p o n e r q u e a + b es g e n e ra d a p o r u n a lla m a d a a q si, y só lo si, en c a d a
678 O PTIM ACIO N D E CO DIG O

c a m in o d e sd e la e n tr a d a d e q h a s ta su regreso, se e n c u e n t r a a + b s in u n a d e fin ició n


su b sig u ie n te d e a o b . C u a n d o se b u s c a n o c u rr e n c ia s d e a + b n o se d e b e a c e p ta r x + y
c o m o tal o c u r r e n c ia a m e n o s q u e se te n g a la s e g u rid a d q u e , e n c a d a lla m a d a a q , x
sea u n s in ó n im o d e a e y u n s in ó n im o d e b.
Se exige este re q u is ito p o r q u e es c o n s e r v a d o r e q u iv o c a rse al a s u m i r q u e u n a ex­
p re s ió n n o está d is p o n ib le c u a n d o lo está. P o r la m is m a ra z ó n se d e b e s u p o n e r q u e
a + b es d e s a c tiv a d a p o r u n a d e fin ic ió n d e c u a lq u ie r z q u e p u d ie r a s e r u n s in ó n im o
d e a o b. P o r ta n to , la fo rm a m á s se n c illa d e c a lc u la r las e x p re sio n e s d isp o n ib les
p a r a to d o s los n o d o s d e to d o s los p r o c e d im ie n to s es s u p o n e r q u e u n a lla m a d a n o
g en era n a d a y q u e d -d e sa c t [B ] p a ra to d o s los b lo q u e s B se calcu la c o m o antes. C o m o
n o se esp era q u e m u c h a s e x p re sio n e s se a n g e n e ra d a s p o r el p r o c e d im ie n to h a b itu a l,
este e n f o q u e es s u fic ie n te m e n te b u e n o p a r a la m a y o ría d e los p ro p ó sito s.
U n e n f o q u e a lte r n a tiv o m á s c o m p lic a d o y m á s e x a c to p a r a el c á lc u lo d e e x p re ­
sio n es d isp o n ib le s co n siste e n c a lc u la r gen [p] p a r a c a d a p r o c e d im ie n to p d e fo rm a
iterativ a. Se p u e d e in icializar gen [p] c o m o el c o n j u n t o d e e x p re sio n e s d isp o n ib le s
al final del n o d o d e regreso d e p s e g ú n el m é to d o a n te r io r . Es d ecir, n o se p e rm ite n
s in ó n im o s p a r a las e x p re sio n e s g en erad a s; a + b só lo se r e p re s e n ta a sí m is m a , a u n ­
q u e o tra s v aria b les p u e d a n s e r s in ó n im o s d e a o b.
A h o ra se c a lc u la n d e n u e v o las e x p re sio n e s d is p o n ib le s p a r a to d o s los n o d o s d e
to d o s los p ro c e d im ie n to s . S in e m b a r g o , u n a lla m a d a a q ( a , b ) g e n e ra a q u e lla s e x ­
p r e s io n e s en g en [q] c o n a y b s u s titu id a s p o r los p a r á m e tr o s f o r m a le s c o r r e s p o n -
d ie n ie s de q . d -d e sa c t p e r m a n e c e c o m o a n te s. Se p u e d e e n c o n t r a r u n n u e v o v alo r
d e gen [p j p a r a c a d a p r o c e d im ie n to p , c o m p r o b a n d o la s e x p re sio n e s q u e e s tá n dis­
p o n ib le s al final d e l regreso d e p . E sta ite ra c ió n se p u e d e re p e tir h a s ta q u e n o se ob ­
te n g a n m á s c a m b io s e n las e x p re sio n e s d is p o n ib le s e n n in g ú n n o d o .

1 0 .9 A N A L I S I S D E F L U J O D E D A T O S D E G R A F O S
DE FL U JO ESTR U C TU R A D O S

L o s p r o g r a m a s e n p ro p o s ic io n e s g o to tie n e n g rafo s d e fiujo re d u c ib le s al igual q u e


los p ro g r a m a s in s p ira d o s p o r v a ria s m e to d o lo g ía s d e p r o g ra m a c ió n . V ario s e stu d io s
d e a m p lia s clases d e p ro g r a m a s h a n re v e la d o q u e casi to d o s los p ro g r a m a s escritos
p o r p e rs o n a s tie n e n g rafo s d e flu jo r e d u c ib le s 10. E sta o b s e rv a c ió n es re le v a n te p a ra
la o p tim a c ió n p o r q u e se p u e d e n e n c o n t r a r a lg o ritm o s d e o p tim a c ió n q u e se e je c u ­
te n sig n ific a tiv a m e n te m á s r á p id a m e n te c o n g rafo s d e flu jo red u cib les. E n e s ta sec­
c ió n se a n a liz a u n a v a rie d a d d e c o n c e p to s d e g rafo s d e flujo, c o m o el “a n álisis d e
in te rv a lo s", rele v an tes so b re t o d o p a r a los g rafo s d e flu jo e s tr u c tu r a d o s . F u n d a m e n ­
ta lm e n te . se a p lic a r á n las té c n ic a s d irig id as p o r la sin ta x is d e s a rro lla d a s e n la sección
10.5 al p la n te a m ie n to m á s g e n e ra l d o n d e n o e s la sin ta x is la q u e p r o p o r c io n a n e c e ­
s a r ia m e n te la e s tru c tu ra , s in o el grafo d e flujo.

10 “Escritos por personas" no es redundante porque sabe de varios programas que generan código
con “nidos de ratas" de proposiciones goto. Esto no es incorrecto: la estructura está en la entrada a
dichos programas.
10.9 FLU JO DE DATOS DE GRAFOS DE FLU JO ESTRUCTURADOS 679

B ú s q u e d a e n p ro fu n d id a d

H a y u n o r d e n a m i e n t o ú t i l d e lo s n o d o s d e u n g r a f o d e f l u j o , c o n o c i d o c o m o o r d e ­
n a m i e n t o e n p r o fu n d id a d , q u e e s u n a g e n e r a l i z a c i ó n d e l r e c o r r i d o e n p r o f u n d i d a d
d e u n á r b o l q u e se e s t u d i ó e n l a s e c c i ó n 2 .3 . U n o r d e n a m i e n t o e n p r o f u n d i d a d se
p u e d e u tiliz a r p a r a d e te c ta r la z o s e n c u a lq u ie r g ra fo d e flu jo ; t a m b i é n a y u d a a a c e ­
l e r a r lo s a l g o r i t m o s d e f l u j o d e d a t o s c o m o lo s e s t u d i a d o s e n la s e c c i ó n 1 0 .6 . E l o r ­
d e n a m i e n t o e n p r o f u n d i d a d s e c r e a c o m e n z a n d o e n el n o d o in i c i a l y e x a m i n a n d o
el g r a f o c o m p l e t o , i n t e n t a n d o v i s i t a r lo s n o d o s m u y a l e j a d o s d e l n o d o i n i c i a l t a n r á ­
p i d a m e n t e c o m o s e a p o s i b l e { e n p r o fu n d id a d ) . L a r u t a d e l a b ú s q u e d a f o r m a u n á r ­
b o l. A n t e s d e p r o p o r c i o n a r e l a l g o r i t m o , c o n s i d é r e s e u n e j e m p l o .

E j e m p l o 1 0 . 3 0 . E n la f i g u r a 1 0 .4 6 s e i l u s t r a u n a p o s i b l e b ú s q u e d a e n p r o f u n d i d a d
d e l g r a f o d e f l u j o d e l a f i g u r a 1 0 .4 5 . L a s a r i s t a s s ó l i d a s f o r m a n u n á r b o l ; la s a r i s t a s
p u n t e a d a s s o n la s o t r a s a r i s t a s d e l g r a f o d e f l u j o . L a b ú s q u e d a e n p r o f u n d i d a d d e l
g r a f o d e f l u j o c o r r e s p o n d e a u n r e c o r r i d o a n t e r i o r a l o r d e n d e l á r b o l , 1 —» 3 —» 4
_> 6 —►7 —> 8 —>■ 1 0 , d e s p u é s s e r e g r e s a a 8 , d e s p u é s a 9 . S e v u e l v e d e n u e v o a 8 ,
re tro c e d ie n d o a 7, 6 y 4 y d e s p u é s a v a n z a n d o h a c ia 5. S e re tro c e d e d e s d e 5 a 4 , d e s­
p u é s v u e l t a a 3 y 1. D e s d e 1 s e v a a 2 , d e s p u é s s e r e g r e s a d e 2 , d e v u e l t a a 1, y s e h a
r e c o r r id o el á r b o l c o m p le to e n o r d e n p re v io . O b s é rv e s e q u e to d a v ía n o se h a e x p li­
c a d o c ó m o se s e le c c io n a e ste á r b o l a p a r ti r d e l g ra fo d e flu jo . □

F ig . 1 0 .4 5 . G r a f o d e flu jo . F ¡ g .1 0 .4 6 . P r e s e n t a c i ó n e n p r o f u n d id a d .

E l o r d e n a m ie n to e n p r o fu n d id a d d e lo s n o d o s e s el c o n t r a r i o d e l o r d e n e n q u e s e
v i s i t a r o n lo s n o d o s e n e l r e c o r r i d o e n o r d e n p r e v i o .

E j e m p l o 1 0 . 3 1 . E n e l e j e m p l o 1 0 .3 0 , l a s e c u e n c i a c o m p l e t a d e n o d o s v i s i t a d o s a
m e d id a q u e se re c o rre el á rb o l es

1 , 3 , 4 , 6 , 7, 8 , 10, 8, 9 , 8 , 7, 6 , 4 , 5 , 4 , 3, 1 , 2 , 1.
680 OPTIM ACION DE CODIGO

E n esta lista, se m arca la ú ltim a o cu rren cia de cada núm ero para obtener

1, 3, 4, 6, 7, 8, 1 0 , 8, 9, 8, 7, 6, 4, 5, 4, 3, 1, 2, J ,

E l ordenam iento en p ro fun d idad es la secuencia de núm eros m arcados en orden in ­


verso. A q u í esta secuencia resulta ser 1, 2, . . . , 10. Es decir, al in ic io los nodos se
num eraron en orden de pro fund idad . □

A h o ra se d a un algoritm o que ca lcu la un ordenam iento en p ro fun d idad de un


grafo de flu jo construyendo y recorriendo un árbol co n raíz en el nodo in ic ia l, in ­
tentando co n stru ir cam inos en el árbol siem pre que sea posible. D ic h o árb o l se de­
n o m in a á rb o l d e e x p a n sió n en p r o fu n d id a d (aep). Este a lg o ritm o se u tiliz ó para
co n stru ir la figura 10.46 a p a rtir de la figura 10.45.

A lgoritm o 10.14. A rb o l de expansión en p ro fun didad y ordenam iento en p ro fun ­


didad.

E ntrada. U n grafo de flu jo G.

S a lid a . U n a e p T de G y un ordenam iento de los nodos de G.

M étodo. Se u tiliz a el procedim iento recursivo buscafn) de la figura 10.47; el algo­


ritm o consiste en in ic ia liz a r todos los nodos de G com o “ no visitad o s” , después lla­
m ar busca(no), donde n0 es el nodo in ic ia l. C u a n d o se llam a busca(n), p rim ero se
m arca n com o “ visitad o ” , para evitar a ñ a d ir dos veces n al árb o l. Se u tiliz a i para
co n tar desde el núm ero de nodos de G hasta 1, asignando núm eros en p ro fun d idad
np [n] a los nodos n a m edida que se avanza. E l co n ju n to d e aristas T form a el árbol
de expansión en p ro fun d idad correspondiente a G , y se le d enom inan arista s de
árbol. □

procedure busca (n)\


begin
( 1) marca n com o “ visitado” ;
(2 ) for cada sucesor s de n do
(3 ) if s está “ no visitado” then begin
(4) añadir la arista n -» s a T\
(5 ) busca (s)
end;
(6) np[n] : = /;
(7 ) / : = / - !
end; * 1
/* sigue el programa principal */
(8) T : = vacío; /* conjunto de aristas */
(9) for cada nodo n de G do marca n com o “ no visitado” ;
(10) / : = núm ero de nodos de G\
(1 1 ) busca (n0)

Fig. 10.47. Algoritm o de búsqueda en profundidad.


10.9 FLUJO DE D A T O S DE G R A FO S DE FLUJO ESTRUCTURADOS 681

E je m p lo 1 0 .3 2 . C o n s id é re s e la figura 10.47. Se asig n a 10 a / y se lla m a a busca( 1).


E n la lín ea (2 ) d e busca se d e b e c o n s id e r a r c a d a su c e s o r d e l n o d o I . S u p ó n g a s e q u e
p r im e r o se c o n s id e r a 5 = 3 . D esp u és se a ñ a d e la a ris ta I —> 3 a l á rb o l y se lla m a a
busca{ 3). E n busca( 3) se a ñ a d e la a ris ta 3 —* 4 a T y se lla m a a busca{ 4).
S u p ó n g a s e q u e e n busca( 4 ) se elige 5 = 6 p r im e ro . E n to n c e s se a ñ a d e la arista
4 —> 6 a T y se lla m a a busca( 6 ). E sta a su v e z h a c e q u e se a ñ a d a 6 - * 7 a T y se
lla m e a busca{l). El n o d o 7 tie n e d o s sucesores. 4 y 8. P e ro 4 ya h a b ía s id o m a r c a d o
c o m o “ v is ita d o " p o r busca{ 4). d e m o d o q u e n o se h a c e n a d a c u a n d o s = 4 . C u a n d o
5 = 8 se a ñ a d e la a ris ta 7 -> 8 a T y se lla m a a busca( 8). S u p ó n g a s e q u e e n to n c e s se
escoge 5 = 10. S e a ñ a d e la a ris ta 8 - > 10 y se lla m a a busca( 10).
A h o ra 10 tie n e u n s u c e s o r. 7 . p e r o 7 y a se h a m a r c a d o c o m o v is ita d o , a s í q u e
e n bitsca{\0), se c a e h a s ta el p a s o (6 ) d e la fig u ra 10.47. h a c ie n d o np [1 0 ] = 10 e
i = 9. E sto c o m p le ta la lla m a d a a busca( 10), así q u e se vuelve a busca( 8). A h o r a se
h a c e 5 = 9 e n busca( 8). se a ñ a d e la a ris ta 8 —» 9 a T y se lla m a a busca( 9). El ú n ic o
s u c e s o r d e l n o d o 9 . el n o d o 1, y a h a s id o “ v is ita d o " , así q u e se h a c e n p [9] = 9 e
/ = 8. D e s p u é s se regresa a husca{ 8). El ú lt im o s u c e s o r d e 8. el n o d o 3, e s “ v is ita d o ”
asi q u e n o se h ace n a d a p a r a s = 3. E n este p u n t o se h a n c o n s id e r a d o to d o s los
su ceso res d e 8. d e m o d o q u e se h a c e np [8] = 8 e / = 7, re g re s a n d o a busca(l).
Y a h a n s i d o c o n s i d e r a d o s t o d o s lo s s u c e s o r e s d e 7 . d e m o d o q u e se h a c e
np [7] = 7 e / = 6 , re g re s a n d o a busca( 6 ). D e m a n e r a s im ila r, ya h a n s id o c o n s id e ­
ra d o s los su c e so re s d e 6 . asi q u e se h a c e np [6] = 6 e / = 5. y se regresa a busca( 4).
El s u c e s o r 3 d e 4 y a h a s id o “ v is ita d o " , p e r o 5 to d a v ía n o , d e m o d o q u e se a ñ a d e
4 5 al á rb o l y se lla m a a bt/sca( 5), q u e y a n o g e n e ra m á s lla m a d a s, p u e s to q u e el
su c e s o r 7 d e 5 y a h a sid o “ v is ita d o ". P o r ta n to , np [5] = 5. / se h a c e igual a 4 . y se
regresa a busca( 4). S e h a t e r m i n a d o d e c o n s id e r a r los su ceso res d e 4 . así q u e se h ace
np [4] = 4 e i = 3. re g re s a n d o a bitscaO ). D e s p u é s se h a c e n p [3] = 3 e i = 2 y se
regresa a busca{ I ).
L o s pasos finales con sisten en lla m a r a busca(2) desde busca( 1). h a c e r np [2] = 2,
/ = 1, re g r e s a r a busca( I ). h a c e r n p [ 1J = 1 e / = 0 . O b s é r v e s e q u e se elig e u n a
n u m e ra c ió n d e los n o d o s tal q u e np [/] = /, p e ro n o es n e c e sa rio q u e esta relación
se c u m p la p a r a u n g rafo c u a lq u ie ra , o in c lu s o p a r a o tr o o r d e n a m i e n t o e n p r o f u n ­
d id a d del g rafo d e la figura 10.45. □

A r is ta s e n u n a p r e se n ta c ió n en p ro fu n d id a d d e un g r a fo d e flu jo

C u a n d o se c o n s tr u y e u n a cp p a r a u n g rafo d e flujo, las arista s del g rafo d e flujo p e r­


te n e c e n a tr e s categorías.

1. H a y arista s q u e van d e u n n o d o m a u n a n c e s tro d e m en el á rb o l (p o s ib le m e n te


a m m is m o ) . E sta s a ris ta s se d e n o m i n a r á n a rista s d e retroceso. P o r e je m p lo ,
7 —►4 y 9 —> 1 son a ris ta s d e re tira d a en la figura 10.46. E s u n h e c h o in te re sa n te
y útil q u e si el g rafo d e flujo es re d u c ib le . e n to n c e s las arista s d e re tira d a son
e x a c ta m e n te las arista s d e re tro c e so d e l g rafo d e f lu jo 1*, in d e p e n d ie n te m e n te del

1 R e cu ér d e se q u e la s a rista s d e r etro c e so d e u n g ra fo d e flu jo s o n a q u e lla s c u y a s c a b e z a s d o m in a n


a su s c o la s.
682 O PTIM A CIO N DE C O D IG O

o rd e n e n q u e se v isiten los su c e so re s e n el p a so (2) d e la figura 10.47. P a r a c u a l­


q u ie r g rafo d e flujo, to d a a ris ta d e re tro c e so es d e re tira d a , a u n q u e si el g rafo es
n o re d u c ib le h a b rá a lg u n a s arista s d e re tira d a q u e n o s e a n arista s d e retroceso.

2. H ay aristas, lla m a d a s aristas d e avance , q u e van d e sd e u n n o d o m a u n d e s c e n ­


d ie n te d e m en el á rb o l. T o d a s la s arista s del a ep s o n arista s d e a v a n c e . N o hay
m á s a ris ta s d e a v a n c e e n la fig u ra 10.46 p e ro , p o r e je m p lo , si 4 —> 8 fu era u n a
arista, e sta ría e n e s ta categoría.

3. H ay arista s m n tales q u e ni m ni n s o n u n a n c e s tro d e l o t r o e n el aep. Las


arista s 2 3 y 5 - > 7 s o n los ú n ic o s e je m p lo s d e este tip o e n la fig u ra 10.46.
E sta s arista s se d e n o m i n a n aristas cruzadas. U n a p ro p ie d a d i m p o r ta n te d e las
arista s c ru z a d a s es q u e si se d ib u ja el aep d e m o d o q u e lo s h ijo s d e u n n o d o se
d ib u je n d e iz q u ie rd a a d e r e c h a e n el o r d e n e n q u e fu e ro n a ñ a d id a s al á rb o l, e n ­
to n c e s to d a s las arista s c ru z a d a s v ia ja n d e d e r e c h a a izq u ierd a.

Se d e b e o b se rv a r q u e m -+ n e s u n a a ris ta d e retroceso si, y sólo si, np [m] £ np [ai ].


P a ra c o m p r o b a r p o r q u é . o b sérv ese q u e si n i es u n d e s c e n d ie n te d e n e n el aep, e n ­
to n c e s busca(m ) te r m in a a n te s q u e busca(n), d e m o d o q u e np [m] > np [ai ]. A la in ­
versa, si np [m ]> n p [ai ], e n to n c e s bitsca{m ) te r m in a a n te s q u e b u s c a (n \ o m = ai .
P e ro busca(n) d e b e h a b e r c o m e n z a d o a n te s q u e busca(m ) si h a y u n a a ris ta m - * n,
o si n o . el h e c h o d e q u e n sea u n su c e s o r d e m h a ría q u e ai fu era u n d e s c e n d ie n te de
m en el aep. b u sc a (n j) e s u n s u b i n t e r v a l o d e l
P or ta n to , e l tie m p o e n q u e e sté a c tiv o
tie m p o q u e esté a c tiv o busca(n), d e lo c u a l se d e d u c e q u e n e s u n a n c e s tro d e m en
el aep.

P ro fu n d id a d d e un g ra fo d e flu jo

H a y u n p a r á m e tr o i m p o r ta n te d e los grafos d e fiu jo lla m a d o profundidad. D a d o u n


árb o l d e e x p a n s ió n en p r o f u n d id a d p a r a el g rafo, la p r o f u n d id a d es el n ú m e r o m a ­
y o r d e arista s d e r e tir a d a e n c u a lq u ie r c a m in o s in ciclos.

E je m p lo 1 0 .3 3 . E n la figura 1 0 .4 6 , la p r o f u n d id a d es 3 p o r q u e h a y u n c a m in o

10 —> 7 - * 4 —> 3

c o n tres arista s d e retro ceso , p e r o n o h a y n in g ú n c a m i n o sin ciclo s c o n c u a t r o o m á s


arista s d e re tro c e so . Es u n a c o in c id e n c ia q u e el c a m in o “ m á s profundo** a q u í sólo
te n g a arista s d e re tro c e so ; e n g en eral, se p u e d e t e n e r u n a m e z c la d e arista s d e re tro ­
ceso. d e a v a n c e , y c ru z a d a s e n u n c a m i n o “ m á s p r o f u n d o ”. □

Se p u e d e d e m o s t r a r q u e la p r o f u n d id a d n u n c a es m a y o r q u e la q u e in t u iti v a ­
m e n te u n o lla m a ría p r o f u n d id a d d e a n i d a m i e n t o d e la zo s e n el g ra fo d e fiujo. Si u n
g rafo d e fiu jo es re d u c ib le , se p u e d e s u s titu ir “ d e re tro c e so ” p o r “ r e tir a d a " e n la d e ­
fin ició n d e “ p r o f u n d id a d ” , p o r q u e las a ris ta s d e r e tir a d a en c u a lq u ie r a ep s o n e x a c ­
t a m e n t e las a ris ta s d e r e tr o c e s o . L a n o c ió n d e p r o f u n d id a d e n to n c e s se v u e lv e in ­
d e p e n d ie n te d e l aep elegido.
10.9 FL U JO DE DATOS DE GRAFOS DE FL U JO ESTRUCTURADOS 683

In tervalos

La d ivisió n de un grafo de flu jo en in tervalo s sirve para im p o n er una estructura je ­


rárq uica en el grafo de flujo . Esta estructura ayuda a su vez a a p lica r las reglas para
el a n álisis de flu jo de datos d irig id o p o r la sin taxis cuyo d esarro llo com enzó en la
sección 10.5.
Intuitivam ente, un “ in tervalo ” en un grafo de flu jo es un la zo natural m ás una
estructura a cíclica que cuelga de los nodos de un lazo. U n a propiedad im portante
de los in tervalo s es qu e tienen nodos encabezamiento que d o m in a n todos los nodos
en el intervalo ; es decir, cada in tervalo es un a región. Form alm ente, dado un grafo
de flu jo G con nodo in ic ia l n, y un nodo n de G\ el intervalo con encabezamiento n,
indicado co m o I(/t), se define co m o sigue.

1. n está en I(h ).
2. Si todos ios predecesores de algún nodo m ¿ n0 están en I (/?), entonces m está
en I(rt).
3. N o hay nada m ás en I(rt).
Por tanto, se puede co n stru ir I(tt) com enzando por n y añadiendo nodos m me­
diante la regla 2. N o im porta en qué orden se añadan dos candidatos m porque una
vez que los predecesores de un nodo estén todos en I(a?), perm anecen en I(/t), y se
añadirá finalm ente cada candidato p o r la regla 2. Llegará un m om ento, en que no
se puedan a ñ a d ir m ás nodos a I(/?), y el co n ju n to resultante de nodos será el in ter­
valo con encabezam iento n.

P a r tic io n e s d e in te r v a lo s

D ado cu a lq u ie r grafo de flu jo G , se puede p articio n ar en in tervalo s d isjun to s com o


sigue.

A lg o r it m o 1 0 . 1 5 . A n á lisis de intervalos de u n grafo de flujo.

Entrada. U n grafo de flu jo G con nodo in ic ia l n().


Salida. U n a partició n de G en un co n ju n to de intervalos d isjunto s.
Método. Para cu a lq u ie r nodo n, se ca lcu la I(a?) p o r el m étodo esbozado antes:
I ( n ) : = {«};
w h i le existe un nodo m i= n0i
cuyos predecesores están todos en I(rt) d o
!(/?): = I(«) u {m}
Lo s nodos que sean encabezam ientos de intervalos en la p artició n se eligen de la
siguiente m anera. A l in ic io , n in gún nodo está “ seleccionado” .

construyanse I(/?0) y “ selecciónense” todos los nodos en ese intervalo ;


w h i le hay un nodo m , no “ seleccionado” todavía,
pero con un predecesor seleccionado do
construyase \(m ) y “ selecciónense” todos los nodos en ese in tervalo

684 O PT IM A C IO N DE C O D IG O

U na vez que un candidato m tiene un predecesor p seleccionado, nunca se po­


drá añad ir m a un intervalo que no contenga p. Por tanto, los candidatos m per­
manecen candidatos hasta que se seleccionan para encabezar su propio intervalo.
Por tanto, el orden en que se seleccionan los encabezam ientos de intervalos m en el
algoritm o 10.15 no afecta la partición final en intervalos. A sim ism o, m ientras todos
los nodos sean alcanzables desde n0, se puede dem ostrar por inducción sobre la lon­
gitud de un cam ino desde no a n que el nodo n será puesto finalm ente en el intervalo
de algún otro nodo, o se convertirá en un encabezam iento de su propio intervalo,
pero no ambas. A sí, el conjunto de intervalos construido en el algoritm o 10.15 par-
ticiona G realmente.

Encuéntrese la partición de intervalos para la figura 10.45. Se co­


E j e m p l o 1 0 .3 4 .
m ienza por cosntruir 1(1), porque el nodo 1 es el nodo in icia l. Se puede añad ir 2 a
I( 1) porque el ú n ico predecesor de 2 es 1. Sin embargo, no se puede añad ir 3 porque
tiene predecesores, 4 y 8, que todavía no están en 1(1), y de m anera sim ilar, todos
los otros nodos excepto 1 y 2 tienen predecesores que todavía no están en 1(1). Así,
I d ) = {1,2}.
A hora se puede calcular 1(3) porque 3 tiene algunos predecesores “ selecciona­
dos” , 1 y 2, pero 3 no es el m ism o un intervalo. Sin em bargo, no se puede añadir
ningún nodo a 1(3), así que 1(3) = {3}. A hora 4 es un encabezam iento porque tiene
un predecesor, 3, en un intervalo. Se puede añadir 5 y 6 a 1(4) porque sólo tienen a
4 com o predecesor pero no se pueden añadir más nodos; por ejem plo, 7 tiene como
predecesor a 10.
A continuación, 7 se convierte en encabezam iento y se puede añad ir 8 a 1(7).
Después se pueden añadir 9 y 10, porque éstos tienen sólo a 8 com o predecesor. Por
tanto, los intervalos en la partición de la figura 10.45 son:
1(1) = {1,2} 1(4) = 4,5,6}
1(3) = {3} 1(7) = 7,8,9,10} □

G r a f o s de in te r v a lo s

Siguiendo los intervalos de un grafo de flujo G , se puede construir un nuevo grafo


de flujo I(G ) mediante las siguientes reglas:
1. Los nodos de I(G’) corresponden a los intervalos en la partición de intervalos
de G.
2. E l nodo in icia l de I(G ) es el intervalo de G que contiene el nodo in icia l de G.
3. H ay una arista del intervalo / a un in tervalo distinto J si, y sólo si, hay en G
una arista desde algún nodo en / al encabezam iento de ./. Obsérvese que no
podría ser una arista que entrara a algún nodo n de ./ que fuera el encabeza­
m iento, desde fuera de 7, porque entonces n no podría haberse añadido a J en
el algoritm o 10.15.
Se puede ap licar el algoritm o 10.15 y la construcción de grafos de intervalos por
turno, produciéndose la secuencia de grafos G , I(G ), I( I( G ) ) ,. . . . Finalm ente, se lle­
gará a un grafo en el que cada uno de sus nodos sea un intervalo en sí mism o. Este
10.9 FLU JO DE DATOS DE GRAFOS DE FLU JO ESTRUCTURA TOS 685

grafo se denom ina grafo d e flu jo lím ite de G. U n hecho interesante es que un grafo
de (lujo es reducible si, y sólo si, su grafo de flujo lím ite es un solo n o d o 12.

E n figura 10.48 se m uestra el resultado de la aplicació n repetida de


E je m p lo 1 0 .3 5 .
la construcción de intervalos a la figura 10.45. En el ejem plo 10.34 se d ieron los
intervalos de este grafo y el grafo de intervalos construido a p artir de ellos se muestra
en la figura 10.48(a). Obsérvese que la arista 10 —> 7 de la figura 10.45 no hace que

1 , . . . . 10

(b) (c) (d )

F ig . 1 0 .4 8 . Secuencia de grafos de intervalos.

se form e una arista desde el nodo que representa a {7,8 ,9 ,10 } a s í m ism o en la figura
10.48(a) porque la construcción de grafos de intervalos excluye explícitam ente d i­
chos lazos. Obsérvese tam bién que el grafo de flu jo de la figura 10.45 es reducible
porque su grafo de flu jo lím ite es un solo nodo. □

S e p a r a c i ó n de n o d o s

Si se llega a un grafo de flujo lím ite que no sea un solo nodo, se puede seguir avan­
zando sólo si se separan uno o más nodos. Si un nodo n tiene k predecesores, se
puede sustituir n por k nodos, ri\, n 2y. . . > n¡,. El /-csim o predecesor de n se convierte
en el predecesor de n¡ sólo, m ientras que todos los sucesores de n se convierten en
sucesores de todos los n¡.
Si se aplica el algoritm o 10.15 al grafo resultante, cada n¡ tiene un predecesor
único y por tanto se convertirá en parte del intervalo de dich o predecesor. A sí, una
d ivisió n de nodos más una ronda de parlicionam iento de intervalos dará com o re­
sultado un grafo con menos nodos. C om o consecuencia, la construcción de grafos
de intervalos intercalada con una separación de nodos cuando sea necesario, debe
finalm ente lograr un grafo de un solo nodo. El significado de esta observación se
verá en la siguiente sección, cuando se diseñen los algoritm os de an álisis de flujo de
datos que se guían por estas dos operaciones con grafos.

12 De hecho, ésta es históricam ente la definición original.


686 O PT IM A C IO N D E C O D IG O

Considérese el grafo de flujo de la figura 10.49(a), que es su propio


E j e m p l o 1 0 .3 6 .
grafo de flujo lím ite. Se puede separar el nodo 2 en 2a y 2 con predecesores 1 y 3,
respectivamente. Este grafo se muestra en la figura 10.49(b). Si se aplica dos veces el
particionam iento de intervalos, se obtiene la secuencia de grafos que se muestra en
la figura 10.49(c) y (d), acabando en un solo nodo. □

(a ) (b ) (c) (d)

Fig . 10.49. S e p a r a c ió n d e n o d o s s e g u id a d e p a r ti c ió n d e in te rv a lo s .

A nálisis Ti - T j

U na manera adecuada de lograr el m ism o efecto que el análisis de intervalos con­


siste en aplicar dos transform aciones sencillas a los grafos de flujo.
T\. Si n es un nodo con un lazo, es decir, una arista n —» n, bórrese esa arista.
T i: Si hay un nodo ny que no sea el nodo in icial, con un predecesor único, m, en­
tonces m puede consum ir n borrando n y haciendo que todos los sucesores de n
(in cluid o m , posiblemente) sean sucesores de m .
Algunos hechos interesantes acerca de las transform aciones T, y T 2 son:
1. Si se aplica 7 \ y T 2 a un grafo de flu jo G en cu alq u ier orden hasta que se ob­
tenga un grafo de flujo para el que no sean posibles aplicaciones de T, y r 2,
entonces se obtiene un grafo de flujo único. La razón es que un candidato para
la elim inación del lazo por m edio de T\ o el consum o por T 2 sigue siendo un
candidato, aunque prim ero se haga alguna otra aplicación de Ti o T 2.
2. El grafo de flujo resultante de la aplicación exhaustiva de T, y T 2 a G es el grafo
de flujo lím ite de G. L a prueba es bastante sutil y se deja com o ejercicio. Com o
consecuencia, otra definición de “ grafo de flujo reducible" es un grafo que puede
ser convertido por ^ y ^ e n un solo nodo.

En la figura 10.50 se ve una secuencia de las reducciones T\ y T 2 co­


E j e m p l o 1 0 .3 7 .
menzando por un grafo de flujo que es un renombramiento de la figura 10.49(b). En
la figura 10.50(b), c ha consum ido d. Obsérvese que el lazo en c d en la figura 10.50(b)
se obtiene de la arista d —> c de la figura 10.50(a). Ese lazo es elim inado por T x e n la
figura 10.50(c). Obsérvese tam bién que cuando a consum e b en la figura 10.50(d),
las aristas que van de a y b al nodo c d se convierten en una sola arista. □
10.9 FLUJO D E D A T O S D E G R A F O S D E FLUJO ESTRUCTURADOS 687

Qabctíf

T2

(a) (b) (c) (d) (e)

Fig. 10.50. R educción por T { y T2.

Regiones

R e c u é rd e se q u e e n la secció n 10.5 se h a v isto q u e u n a reg ió n e n u n g rafo d e flu jo es


u n c o n j u n t o d e n o d o s N q u e in c lu y e u n e n c a b e z a m ie n to q u e d o m i n a to d o s los o tro s
n o d o s e n la región. T o d a s las a ris ta s e n tr e los n o d o s d e N e s tá n e n la reg ió n , e x c e p to
(p o s ib le m e n te ) a lg u n a s d e ellas q u e e n t r e n a l e n c a b e z a m ie n to . P o r e je m p lo , t o d o in ­
te rv a lo e s u n a región, p e r o h a y reg io n es q u e n o s o n in te rv a lo s p o r q u e , p o r e jem p lo ,
p u e d e n o m i tir a lg u n o s n o d o s q u e in c lu iría u n in te rv a lo , o p u e d e n o m i tir a lg u n a s
a ris ta s d e v u e lta al e n c a b e z a m ie n to . T a m b ié n h a y re g io n e s m u c h o m á s g r a n d e s q u e
c u a lq u ie r in te rv a lo , c o m o y a se verá.
A m e d id a q u e se re d u c e u n g rafo d e flu jo G p o r T t y T 2, e n t o d o m o m e n t o se
c u m p le n las sig u ie n tes c o n d ic io n e s:

1. U n n o d o r e p re s e n ta u n a reg ió n G.

2. U n a a ris ta d e sd e a a b r e p re s e n ta u n c o n j u n t o d e aristas. C a d a u n a d e d ic h a s
a ris ta s es d e u n n o d o e n la reg ió n re p re s e n ta d a p o r a al e n c a b e z a m ie n to d e la
reg ió n re p re s e n ta d a p o r b.

3. C a d a n o d o y a r is ta d e G está re p re s e n ta d o e x a c ta m e n te p o r u n n o d o o a ris ta del


g rafo e n cu rso.

P a r a s a b e r p o r q u é se c u m p l e n e s ta s o b s e r v a c io n e s , o b s é rv e s e p r im e r o q u e se
c u m p le n d e m a n e r a triv ia l p a r a G m is m a . C a d a n o d o es u n a reg ió n p o r sí m is m o , y
c a d a a r is ta s e r e p r e s e n ta s ó l o a sí m i s m a . S u p ó n g a s e q u e s e a p lic a T \ a u n n o d o n
q u e r e p re s e n te u n reg ió n R , e n t a n t o q u e el la z o n n re p r e s e n ta u n c o n j u n t o d e
arista s E y to d a s d e b e n e n t r a r a l e n c a b e z a m ie n to d e R. Si se a ñ a d e n las a ris ta s E a
la reg ió n R , ésta sigue s ie n d o u n a región, d e m o d o q u e d e s p u é s d e e lim in a r la arista
n n, el n o d o n rep resen ta a R y a las arista s d e £ , lo cual p reserv a las c o n d ic io n e s 1
a 3 a n terio res.
Si se h u b ie ra u tiliz a d o T2 p a r a c o n s u m i r el n o d o b p o r el n o d o a , s u p ó n g a s e q u e
a y b re p re s e n ta n las reg io n es R y S %re s p e c tiv a m e n te . A sim is m o , sea E el c o n j u n t o
d e arista s re p re s e n ta d a s p o r la a r is ta a - * b . R . S y E f o r m a n j u n t o s u n a reg ió n c u y o
e n c a b e z a m ie n to es el e n c a b e z a m ie n to d e R. P a r a d e m o s tr a r lo h a y q u e c o m p r o b a r
q u e el e n c a b e z a m ie n to d e R d o m i n a a to d o s los n o d o s d e S. Si n o , d e b e h a b e r alg ú n
688 O PTIM A CIO N DE CODIGO

c a m in o al e n c a b e z a m ie n to d e S q u e n o te r m in e c o n u n a a ris ta d e E. E n to n c e s h a ­
b ría q u e r e p r e s e n ta r la ú ltim a a ris ta d e este c a m in o e n el g rafo d e flu jo e n c u r s o m e ­
d ia n te a lg u n a o tr a a ris ta q u e e n tr e a b. P e ro n o p u e d e h a b e r d ic h a arista, o T 2 n o se
p u e d e u tiliz a r p a ra c o n s u m ir b.

E je m p lo 1 0 .3 8 . El n o d o e tiq u e ta d o c o n c d d e la fig u ra 10.51 (b) r e p re s e n ta la región


m o s tr a d a e n la figura 10.51 (a), q u e se fo rm ó al h a b e r c o n s u m i d o c a í / . O bsérvese
q u e la a ris ta d —>c n o es p a rte d e la reg ió n ; e n la fig u ra 10.50(b) esa a ris ta se r e p re ­
sen ta m e d ia n te el lazo e n cd. Sin e m b a rg o , e n la fig u ra 10.50(c), se h a e l im i n a d o la
a ris ta c d —* c d y el n o d o c d r e p re s e n ta a h o r a la región q u e se m u e s tr a e n la figura
10.51 (b).
E n la fig u ra 1 0 .5 0 (d ). el n o d o c d s ig u e r e p r e s e n t a n d o la r e g ió n d e la fig u ra
10.5 l(b ), en t a n t o q u e el n o d o ab re p re s e n ta la reg ió n d e la figura 1 0 .5 l(c). La arista
ab -> c d e n la figura 10.50(d) r e p re s e n ta las a ris ta s a - * c y b - * c d e l g rafo d e flujo
orig inal d e la figura I0.50 (a). C u a n d o se a p lic a T 2 p a ra a lc a n z a r la fig u ra 10.50(e),
el n o d o re sta n te r e p re s e n ta t o d o el g ra fo d e flujo, fig u ra I0 .5 0 (a). □

(a) (b) (c)

Fig. 1 0 .5 1 . A lg u n a s r eg io n es.

Se d e b e o b s e rv a r q u e la p ro p ie d a d d e la re d u c c ió n T¡ y 7 \ a n te r io r m e n te m e n ­
c io n a d a se c u m p le ta m b ié n p a r a el a n álisis d e in terv alo s. S e d e ja c o m o ejercicio el
h e c h o d e q u e a m e d id a q u e se c o n s tru y e I(G), I(I(G)). y a s í su cesiv am en te, c a d a n o d o
e n c a d a u n o d e e s to s g rafo s r e p re s e n ta u n a región y c a d a a ris ta re p re s e n ta u n c o n ­
j u n t o d e arista s q u e c u m p le n la p ro p ie d a d 2 a n te rio r.

E n c u e n tr o de d o m in a d o r e s

S e cierra esta secció n c o n u n a lg o ritm o e fic ien te p a r a u n c o n c e p to q u e se h a utili­


z a d o m u c h o y se seg u irá u tiliz a n d o al d e s a rro lla r la te o ría d e g rafo s d e flu jo y a n á ­
lisis d e flu jo d e d a to s. Se d a r á u n a lg o ritm o s im p le p a r a c a lc u la r los d o m i n a d o r e s en
c a d a n o d o n e n u n g rafo d e flujo, b a s a d o en el p r in c ip io d e q u e si p }. p 2 Pu son
to d o s los p re d e c e so re s d e n, y d * n , e n to n c e s d d o m n si, y só lo si, d dorn p, p a ra
c a d a /. El m é to d o es s e m e ja n te al a n á lis is d e flujo d e d a to s d e a v a n c e c o n in tersec­
c ió n c o m o el o p e r a d o r d e c o n f lu e n c ia ( p o r e je m p lo , las e x p re sio n e s d isp o n ib le s), en
q u e se t o m a u n a a p r o x im a c ió n d e l c o n j u n t o d e d o m i n a n t e s d e n y se r e f in a visi­
ta n d o re p e tid a m e n te p o r t u r n o to d o s los n o do s.
E n este caso , la a p r o x im a c ió n inicial q u e se elija tie n e el n o d o inicial d o m in a d o
ú n ic a m e n te p o r el n o d o in icial, y to d o d o m i n a a to d o a d e m á s del n o d o inicial. I n ­
1 0 .9 FLUJO DE D A T O S D E G R A F O S D E FLUJO ESTRUCTURADOS 689

tu itiv a m e n te , la ra z ó n p o r la q u e este e n f o q u e f u n c io n a es q u e los c a n d id a to s a d o ­


m in a d o r e s s o n d e s c a r ta d o s só lo c u a n d o se e n c u e n t r a u n c a m i n o q u e d e m u e s tr e q u e.
p o r e je m p lo , m d o m n es falso. Si n o se p u e d e e n c o n t r a r d ic h o c a m i n o d e sd e el n o d o
inicial a n e v ita n d o m , e n to n c e s m es en re a lid a d u n d o m i n a d o r d e n.

A lg o r itm o 1 0 .1 6 . E n c u e n tr o d e d o m in a d o r e s .

E ntrada . U n grafo d e flu jo G c o n c o n j u n t o d e n o d o s iV, c o n j u n t o d e arista s E y


n o d o in icial n0.

Salida. L a re la c ió n dom .

M étodo. Se c a lc u la D (n ). el c o n j u n t o d e d o m i n a d o r e s d e n, i t e r a ti v a m e n t e m e ­
d i a n t e el p r o c e d i m i e n t o d e la fig u ra 10.52. AI fin a l, d e s tá e n D ( n ) si, y s ó lo si,
d d o m n. El le c to r p u e d e p r o p o r c io n a r lo s d e ta lle s rela tiv o s a c ó m o se d e te c ta n los
c a m b io s a D {n ): el a lg o ritm o 10.2 se rv irá c o m o m o d e lo .

(1) D{n0):=[n0):
(2 ) fo r n e n A - {/?„} d o D ( X ) : = A';

/* te rm in a la inicialización */

(3) while o cu rran c am b io s a cualqu iera D (//) d o


(4) fo r n en N - {/i0} d o
(5) ü (« ):= { n } u n D (p)]\
p o n p re d e ­
cesor d e n

Fig. 10.52. A lgoritm o para el cálculo d e dom in ad o res.

S e p u e d e d e m o s t r a r q u e el D (n) c a lc u la d o e n la lin ea (5) d e la figura 10.52 es


s ie m p re u n s u b c o n ju n t o del D (n) e n c u rso . C o m o D (n) n o p u e d e h a c e rs e m á s pe­
q u e ñ o in d e fin id a m e n te , en alg ú n m o m e n t o se d e b e t e r m i n a r el lazo w h ile . S e deja
al le c to r in te re s a d o la d e m o s tr a c ió n d e q u e , d e s p u é s d e la c o n v e rg e n c ia , D (n) es el
c o n j u n t o d e d o m in a d o r e s d e n. E l a lg o ritm o d e la fig u ra 10.52 es b a s ta n te eficiente,
y a q u e D (n) se p u e d e r e p r e s e n ta r m e d ia n te u n v e c to r d e b its y el c o n j u n t o d e o p e ­
ra c io n e s d e la lín ea (5 ) se p u e d e rea liz a r c o n las o p e r a c io n e s lógicas and y o r . □

Ejemplo 1 0 3 9 . C o n s id é re s e d e n u e v o el g rafo d e flu jo d e la fig u ra 10.45, y s u p ó n ­


gase q u e e n el la z o fo r d e la lin ea (4) los n o d o s se v isitan e n o r d e n n u m é ric o . El
n o d o 2 s ó lo tie n e a 1 c o m o p re d e c e so r, a s í q u e 1X2) : = {2} yj /3(1). C o m o 1 es el
n o d o inicial, a D{ 1) se le a s ig n ó {I} e n la lin ea ( I ). P o r ta n to , a D ( 2 ) se le asig n a {1,2}
e n la lín ea (5).
D e s p u é s se c o n s id e r a el n o d o 3, c o n p r e d e c e s o r e s 1, 2 . 4 y 8 . L a lín e a (5 ) d a
D ( 3) = {3}u ({1} n {1,2} n ( 1 , 2 , . . . ,10}) = ¡1,3). L o s cá lc u lo s r e s ta n te s son:
D ( 4) = {4) u (D {3) n D ( l) ) = {4} u ({1,3} n { L 2 , . . . f10})= {1,3,4}

D ( 5) = {5} u D {4) = {5} u {1,3,4} = {1,3.4.5}

D{6) = {6} u D(4) = {6} u {1.3.4} = {1,3.4.6}


690 O PT IM A C IO N DE C O D IG O

D ( l) = {7} u (D (5) n D (6) n Z>(10))


= {7} u ({1,3,4 ,5} n {1,3,4,6 } n {1,2, , 10}) = (1 ,3,4 ,7}
D (8) = {8} u Z)(7) = {8} u {1,3 ,4 ,7} = {1,3,4,7,8}

D (9) = ( 9 } u D ( 8 ) = {9} u {l,3 ,4 ,7 ,8 } = {1,3,4,7,8,9}


D (1 0 ) = {10} u Z9(8) = {10} u {1,3,4 ,7,8 } = {1,3,4 ,7,8 .10 }

S e v e q u e l a s e g u n d a p a s a d a p o r e l l a z o w h i l e n o p r o d u c e c a m b i o s , a s í q u e los
v a l o r e s a n t e r i o r e s p r o d u c e n la r e l a c i ó n d o m . □

1 0 .1 0 A L G O R I T M O S E F I C I E N T E S P A R A E L F L U J O D E D A T O S

E n e s t a s e c c i ó n s e c o n s i d e r a r á n d o s f o r m a s d e u t i l i z a r la t e o r í a d e g r a f o s p a r a a c e ­
le ra r el a n á lis is d e flu jo d e d a to s . L a p r im e r a es u n a a p lic a c ió n d e l o r d e n a m i e n t o en
p r o f u n d i d a d p a r a r e d u c i r el n ú m e r o d e p a s a d a s q u e r e a l i z a n lo s a l g o r i t m o s i t e r a t i ­
v o s d e l a s e c c i ó n 1 0 .6 , y la s e g u n d a u t i l i z a lo s i n t e r v a l o s o la s t r a n s f o r m a c i o n e s T \
y T 2 p a r a g e n e r a l i z a r e l e n f o q u e d i r i g i d o p o r l a s i n t a x i s d e la s e c c i ó n 1 0 .5 . I

O r d e n a m ie n to en profundidad e n a lg o r itm o s iterativos

E n t o d o s l o s p r o b l e m a s e s t u d i a d o s h a s t a a h o r a , c o m o la s d e f i n i c i o n e s d e a l c a n c e , la s
e x p re s io n e s d is p o n ib le s o la s v a ria b le s a c tiv a s, c u a lq u ie r s u c e s o sig n ific a tiv o e n u n
n o d o s e p r o p a g a r á a e s e n o d o a l o l a r g o d e u n c a m i n o a c í c l i c o . P o r e j e m p l o , si u n a
d e f i n i c i ó n d e s t á e n e n t [B], e n t o n c e s h a y a l g ú n c a m i n o a c í c l i c o d e s d e e l b l o q u e q u e
c o n t i e n e d h a s t a f í t a l q u e d e s t á e n t o d o s lo s c o n j u n t o s e n t y s a l a lo l a r g o d e ese
c a m i n o . D e m a n e r a s i m i l a r , si u n a e x p r e s i ó n x + y n o e s t á d i s p o n i b l e a l a e n t r a d a al
b l o q u e /?, e n t o n c e s h a y u n c a m i n o a c í c l i c o q u e d e m u e s t r e e s e h e c h o ; o el c a m i n o
va d e s d e el n o d o in ic ia l y n o in c lu y e p r o p o s ic io n e s q u e d e s a c tiv e n o g e n e r e n x + y , o
e l c a m i n o v a d e s d e u n b l o q u e q u e d e s a c t i v a x + y y a lo l a r g o d e l c a m i n o n o h a y
g e n e r a c i ó n p o s t e r i o r d e x + y . P o r ú l t i m o , p a r a la s v a r i a b l e s a c t i v a s , si x e s t á a c t i v a a
la s a l i d a d e l b l o q u e B , e n t o n c e s h a y u n c a m i n o a c í c l i c o d e s d e B h a s t a u n u s o d e x,
a lo l a r g o d e l c u a l n o h a y d e f i n i c i o n e s d e x . |
E l l e c t o r d e b e c o m p r o b a r q u e e n c a d a u n o d e e s t o s c a s o s , lo s c a m i n o s c o n l a z o s
n o a ñ a d a n n a d a . P o r e j e m p l o , si s e a l c a n z a u n u s o d e x d e s d e e l f in d e l b l o q u e B a
lo l a r g o d e u n c a m i n o c o n u n l a z o , s e p u e d e e l i m i n a r d i c h o l a z o p a r a e n c o n t r a r u n
c a m in o m á s c o r to a lo la rg o d e l c u a l el u s o d e x to d a v ía se a lc a n c e d e s d e B . j
S i t o d a la i n f o r m a c i ó n ú til s e p r o p a g a a lo l a r g o d e c a m i n o s a c í c l i c o s , e x i s t e la
p o s i b i l i d a d d e a d a p t a r el o r d e n e n q u e s e v i s i t e n lo s n o d o s e n lo s a l g o r i t m o s d e f l u j o
d e d a to s ite ra tiv o s d e m o d o q u e , d e s p u é s d e re la tiv a m e n te p o c a s p a s a d a s a tra v é s d e
lo s n o d o s , s e p u e d a e s t a r s e g u r o d e q u e l a i n f o r m a c i ó n h a p a s a d o a lo l a r g o d e t o d o s
lo s c a m i n o s a c íc lic o s . E n c o n c r e t o , la s e s ta d ís tic a s r e c o g id a s e n K n u t h [1 9 7 1 b ]
m u e s t r a n q u e lo s g r a f o s d e l f l u j o t í p i c o s t i e n e n u n a p r o fu n d id a d d e in te r v a lo m u y b a j a ,
q u e e s e l n ú m e r o d e v e c e s q u e u n o d e b e a p l i c a r la p a r t i c i ó n d e i n t e r v a l o s p a r a a l ­
c a n z a r el g ra fo d e flu jo lím ite ; se e n c o n t r ó u n p r o m e d i o d e 2 .7 5 . A d e m á s , se p u e d e
d e m o s t r a r q u e la p r o f u n d i d a d d e i n t e r v a l o d e u n g r a f o d e f l u j o n u n c a e s m e n o r q u e
1 0.1 0 A L G O R IT M O S EFICIENTES P A R A EL F L U JO D E D A T O S 691

lo q u e a q u í se ha lla m a d o “ p r o f u n d id a d ”, el n ú m e r o m á x im o d e arista s d e re tro c e so


e n c u a lq u ie r c a m in o acíclico. (Si el g rafo d e flu jo n o es re d u c ib le , la p ro f u n d id a d
p u e d e d e p e n d e r del árb o l d e e x p a n s ió n e n p r o f u n d id a d elegido.)
R e c o r d a n d o el a n álisis del á rb o l d e e x p a n s ió n e n p r o f u n d id a d d e la secció n a n ­
te rio r, se o b s e rv a q u e si a -* b e s u n a arista, e n to n c e s el n ú m e r o e n p r o f u n d id a d d e
b es m e n o r q u e el d e a só lo c u a n d o la a r is ta e s u n a a r is ta d e re tro c e so . P o r ta n to , se
s u stitu y e la lín ea (5) d e la fig u ra 10.26, q u e in d ic a q u e se visite c a d a b lo q u e B del
g rafo d e flu jo p a r a el c u a l se estén c a lc u la n d o las d e fin ic io n e s d e a lc a n c e , por:

for c a d a b lo q u e B e n o r d e n e n p r o f u n d id a d do

S u p ó n g a se q u e se tie n e u n c a m in o a lo la rg o d e l c u a l se p r o p a g a u n a d e fin ic ió n d.
com o

3 5 19 -> 35 - » 16 —> 23 —> 4 5 —> 4 —►10 - > 17

d o n d e lo s e n te r o s r e p r e s e n ta n lo s n ú m e r o s e n p r o f u n d id a d d e lo s b lo q u e s a lo la r­
g o del c a m in o . E n to n c e s la p r im e r a vez q u e se p a se p o r el la z o d e las lín eas (5) a (9)
d e la f ig u r a 10.26, d se p r o p a g a r á d e s d e sa l [3] a e n t [5] a sa l [5], y a s í s u c e s iv a ­
m e n te , h a s ta sal [35]. N o se a lc a n z a r á ent [ 16] e n ese re c o rrid o p o r q u e c o m o 16 p r e ­
c e d e a 3 5 , y a se h a b ía c a lc u la d o ent [16] c u a n d o d se p u s o e n sal [35]. S in e m b a rg o ,
la p r ó x im a vez q u e se reco rre el lazo d e las líneas (5) a (9), c u a n d o se calcu le ent [16],
se in c lu irá d p o r q u e está e n sa l [35]. L a d e fin ic ió n ¿ /ta m b ié n se p ro p a g a r á a sal [16].
ent [23], y así s u c e s iv a m e n te , h a s ta sa l [45], d o n d e d e b e e s p e ra r p o r q u e ya se h a c a l­
c u l a d o e n t [4]. E n la te r c e r a p a s a d a , d v ia ja a e n t [4], s a l [4], e n t [1 0 ], sa l [1 0 ] y
ent [ 17], d e m o d o q u e d e s p u é s d e tr e s p a s a d a s se h a e sta b le c id o q u e d a lc a n z a el b lo ­
q u e 1 7 13.
N o d e b e ría s e r difícil e x tr a e r el p r in c ip io g en eral d e este e je m p lo . Si se u tiliza
o r d e n e n p r o f u n d id a d en la fig u ra 10.26, e n to n c e s el n ú m e r o d e p a s a d a s n ecesarias
p a r a p r o p a g a r c u a l q u ie r d e f in ic ió n d e a lc a n c e a lo la rg o d e c u a l q u i e r c a m i n o a c í­
clico n o e s só lo u n o m á s q u e el n ú m e r o d e arista s a lo largo d e l c a m in o q u e v a desde
u n b lo q u e c o n u n n ú m e r o m a y o r a u n o c o n u n n ú m e r o m e n o r. E sta s arista s son
e x a c ta m e n te las a ris ta s d e re tro c e so , así q u e el n ú m e r o d e p a s a d a s n ecesarias es u n o
m á s la p ro f u n d id a d . P o r s u p u e s to , el a lg o ritm o 10.2 n o d e te c ta el h e c h o d e q u e to ­
d a s la s d e f in ic io n e s h a n a l c a n z a d o t o d o a q u e llo q u e p u e d e n a l c a n z a r c o n u n a p a ­
sa d a m á s, asi q u e el lím ite s u p e r io r s o b re el n ú m e r o d e p a s a d a s e m p le a d a s p o r el
a lg o r i tm o c o n o r d e n a m i e n t o d e b lo q u e s e n p r o f u n d id a d es r e a l m e n te d o s m á s la
p ro f u n d id a d , o 5 si se cree q u e los re s u lta d o s d e K n u t h [1 9 7 1 b ] s o n típicos.
El o r d e n a m ie n to e n p r o f u n d id a d es v e n ta jo s o ta m b ié n p a r a las e x p re sio n e s dis­
p o n ib le s (A lg o ritm o 10.3), o c u a lq u ie r p r o b le m a d e flu jo d e d a to s q u e se resolvió
m e d ia n te la p ro p a g a c ió n h a c ia a d e la n te . P a r a p ro b le m a s c o m o las variables activas,
d o n d e se p ro p a g a h acia a trá s, se p u e d e lo g ra r el m is m o p r o m e d io d e c in c o p a s a d a s
si se elige el c o n tr a r io d e l o rd e n e n p ro f u n d id a d . P o r ta n to , se p u e d e p r o p a g a r u n
u s o d e u n a v a ria b le e n el b lo q u e 17 h acia a trá s a lo largo del c a m in o
3 -» 5 19 - » 35 -> 16 - > 23 —►4 5 —> 4 - > 10 -> 17

! 1 La d e fin ic ió n d ta m b ié n a lc a n z a s a l [ 17 ], p e r o e sto e s irrelev a n te para e l c a m in o e n c u e stió n .


692 O PT IM A C IO N DE C O D IG O

en una pasada a ent [ 4 ] , d o n d e h a y q u e e s p e r a r h a s t a la s i g u i e n t e p a s a d a p a r a a l c a n ­


z a r e n o r d e n sal [ 4 5 ] . E n l a s e g u n d a p a s a d a a l c a n z a ent [ 1 6 ] y e n la t e r c e r a p a s a d a
v a d e s d e sa l [ 3 5 ] h a s t a sa l [3 ]. E n g e n e r a l , u n o m á s l a s p a s a d a s d e p r o f u n d i d a d b a s t a
p a r a l l e v a r e l u s o d e u n a v a r i a b l e d e v u e l t a h a c i a a t r á s , a l o l a r g o d e u n c a m i n o ací-
c l i c o , si s e e l i g e e l o r d e n e n p r o f u n d i d a d e n s e n t i d o i n v e r s o p a r a v i s i t a r l o s n o d o s e n
u n a p a s a d a , p o r q u e e n to n c e s , lo s u s o s se p r o p a g a n a lo la rg o d e c u a l q u i e r se c u e n c ia
d e c re c ie n te en u n a so la pasada.

A n á lis is de flujo de d a to s b a sa d o e n la estructura

C o n u n p o c o m á s d e e s fu e rz o , s e p u e d e n i m p l a n t a r a lg o r itm o s d e flu jo d e d a t o s q u e
v isite n n o d o s (y a p l i q u e n e c u a c io n e s d e flu jo d e d a to s ) n o m á s v e c e s q u e la p r o f u n ­
d i d a d d e i n t e r v a l o d e l g r a f o d e f l u j o , y c o n f r e c u e n c i a e l n o d o p r o m e d i o s e r á visi­
t a d o i n c l u s o m e n o s v e c e s . N o s e h a e s t a b l e c i d o f i r m e m e n t e si e l e s f u e r z o a d i c i o n a l
d a c o m o re s u tla d o u n a h o r r o re a l d e ti e m p o , p e r o se h a u tiliz a d o u n a té c n ic a c o m o
é s ta , b a s a d a e n el a n á lis is d e in te rv a lo s , e n v a r io s c o m p i l a d o r e s . A d e m á s , las id e a s
q u e a q u í s e e x p o n e n se a p lic a n a a l g o r i tm o s d e flu jo d e d a t o s d irig id o s p o r la s in ta ­
x is p a r a t o d o s l o s t i p o s d e p r o p o s i c i o n e s d e c o n t r o l e s t r u c u t r a d a s , n o s ó l o l a s p r o ­
p o s i c i o n e s i f ... then y d o ... w h ile q u e s e e s t u d i a r o n e n l a s e c c i ó n 1 0 .5 , y h a n a p a ­
recid o ta m b ié n e n v ario s co m p ilad o res.
L o s a l g o r i t m o s s e b a s a r á n e n la e s t r u c t u r a i n d u c i d a s o b r e l o s g r a f o s d e f l u j o p o r
las t r a n s f o r m a c i o n e s r , y T2. C o m o e n la s e c c i ó n 1 0 .5 , s e t r a t a n la s d e f i n i c i o n e s q u e
s e g e n e r a n y se d e s a c t i v a n c u a n d o el c o n t r o l fluye a tr a v é s d e u n a r e g ió n . A d if e r e n ­
c i a d e l a s r e g i o n e s d e f i n i d a s p o r l a s p r o p o s i c i o n e s if o w hile, u n a r e g i ó n g e n e r a l p u e d e
t e n e r m ú ltip le s salid as, d e m o d o q u e p a r a c a d a b lo q u e B e n la re g ió n R se c a lc u la ­
rá n lo s c o n j u n t o s genR B y desact R r d e d e f i n i c i o n e s g e n e r a d a s y d e s a c t i v a d a s , re s ­
p e c t i v a m e n t e , a l o l a r g o d e l o s c a m i n o s d e n t r o d e la r e g i ó n d e s d e e l e n c a b e z a m i e n t o
h a s t a el final d e l b l o q u e B. E s t o s c o n j u n t o s s e u t i l i z a r á n p a r a d e f i n i r u n a Junción de
tran sferen cia transan ( 5 ) q u e i n d i c a p a r a c u a l q u i e r c o n j u n t o 5 d e d e f i n i c i o n e s , e l c o n ­
j u n t o d e d e f i n i c i o n e s q u e a l c a n z a el f i n a l d e l b l o q u e B v i a j a n d o a lo l a r g o d e c a m i ­
n o s t o t a l m e n t e d e n t r o d e R , d a d o q u e t o d a s y s ó l o l a s d e f i n i c i o n e s e n S a l c a n c e n el
e n c a b e z a m i e n t o d e R.
C o m o s e v i o e n l a s s e c c i o n e s 10.5 y 1 0 .6 , l a s d e f i n i c i o n e s q u e a l c a n z a n e l f i n a l
del b lo q u e B p e r t e n e c e n a d o s c la s e s :

1. A q u ellas g e n e ra d a s d e n tr o áe R y q u e s e p r o p a g a n a l f i n a l d e B i n d e p e n d i e n t e
d e 5.

2. A q u e lla s q u e n o se g e n e r a n e n R, p e r o q u e t a m p o c o s o n d e s a c t iv a d a s a lo largo
d e u n c a m i n o d e s d e el e n c a b e z a m i e n t o d e R al fin al d e B, y p o r t a n t o e s tá n en
transan (S) s i, y s ó l o si, e s t á n e n S.
trans d e la f o r m a
P o r ta n to , se p u e d e e s c rib ir
transan (S) = genRM u ( S - desactR B)
El n ú c le o d e l a lg o r itm o es u n a f o r m a d e c a lc u la r transR B p a r a r e g i o n e s c a d a v e z
m a y o r e s d e f i n i d a s p o r a l g u n a d e s c o m p o s i c i ó n ( T j - T2) d e u n g r a f o d e f l u j o . P o r el
m o m e n t o , se s u p o n e q u e el g ra fo d e flu jo e s re d u c ib le , a u n q u e u n a s im p le m o d if i­
c a c ió n p e r m i te q u e el a l g o r i tm o f u n c io n e t a m b i é n p a r a g ra fo s n o red u cib les.
10.10 A L G O R I T M O S E F I C I E N T E S P A R A EL F L U J O D E D A T O S 693

L a b a se e s u n a región q u e c o n s ta d e u n solo b lo q u e . B. A q u í, la f u n c ió n d e tr a n s ­
ferencia d e la reg ió n es la f u n c ió n d e tra n s fe re n c ia del b lo q u e m is m o , y a q u e u n a
d e fin ició n a lc a n z a el final del b lo q u e si. y só lo si. es g e n e ra d a p o r el b lo q u e o está
en el c o n j u n t o S y n o está d e s a c tiv a d a . E s decir.

g e n a.B = g e n [B]

desact u n - desact \B]

C o n s id é re s e a h o r a la c o n s tru c c ió n d e u n a reg ió n R p o r 7 \: es d ecir. R se fo rm a


c u a n d o R \ c o n s u m e R>. c o m o se sugiere e n la figura 10.53. P rim e ro , o b sérv ese que
d e n t r o d e la región R n o h a y arista s d e sd e R 2 d e v u elta a R] p u e s to q u e la s aristas
d e sd e R 2 al e n c a b e z a m ie n to d e R \ n o s o n p a rte d e R . P o r ta n to , c u a lq u ie r c a m in o
q u e esté to ta lm e n te d e n t r o d e R v a p r im e r o ( o p c io n a lm e n te ) a tra v é s d e /?,, d esp u és
( o p c io n a lm e n te ) a tra v é s d e R 2, p e r o d e s p u é s n o p u e d e regresar a /?,. A s im is m o , o b ­
sérvese q u e el e n c a b e z a m ie n to d e R es el e n c a b e z a m ie n to d e R t. Se p u e d e c o n c lu ir
q u e d e n t r o d e R . R 2 n o a fe c ta a la f u n c ió n d e n o d o s en R t: es decir.

genRM = g en RxM

desact rm = desact KiB


p a r a to d a B en R {.
P a ra B e n R 2. u n a d e fin ic ió n p u e d e a lc a n z a r el final d e B si se c u m p le c u a lq u ie ra
d e las sig u ie n tes definicio n es.

Fig. 10.53. C o n stru cción d e regiones por m edio d e T2.

1. L a d e fin ic ió n se g e n e ra d e n t r o d e R 2.

2. L a d e fin ic ió n se g e n e ra d e n t r o d e /?,, a lc a n z a el final d e alg ú n p re d e c e so r del


e n c a b e z a m ie n to d e R 2t y n o se d e s a c tiv a y e n d o del e n c a b e z a m ie n to d e R 2 a B

3. L a d e fin ic ió n está e n el c o n j u n t o S d is p o n ib le en el e n c a b e z a m ie n to d e R l% n o
se d e sa c tiv a y e n d o a alg ú n p re d e c e s o r del e n c a b e z a m ie n to d e R 2. y n o se d e sa c ­
tiva y e n d o d e s d e el e n c a b e z a m ie n to d e R 2 a B.

P o r ta n to , las d e fin ic io n e s q u e a lc a n z a n los fines d e a q u e llo s b lo q u e s d e R¡ q u e sean


p red ece so res del e n c a b e z a m ie n to d e R 2 d e s e m p e ñ a n u n p a p e l especial. F u n d a m e n ­
ta lm e n te . se ve lo q u e s u c e d e a u n c o n j u n t o S q u e e n tr a al e n c a b e z a m ie n to d e R\
c u a n d o s u s d e fin ic io n e s in te n ta n a lc a n z a r el e n c a b e z a m ie n to d e R 2 a tr a v é s d e u n o
694 O PT IM A C IO N DE C O D IG O

d e sus p re d e c e so re s . El c o n j u n t o d e d e f in ic io n e s q u e a lc a n z a n u n o d e lo s p r e d e c e ­
sores del e n c a b e z a m ie n to d e R 2 s e c o n v i e r t e e n e l c o n j u n t o d e e n t r a d a p a r a R 2, y se
a p lic a n las f u n c io n e s d e tr a n s f e r e n c ia p a r a R 2 a d i c h o c o n j u n t o .
P o r t a n t o , s e a G l a u n i ó n d e g e n Ki p a r a t o d o s los p r e d e c e s o r e s P d e l e n c a b e ­
z a m i e n t o d e R 2, y s e a K la i n t e r s e c c i ó n d e desactK] H p a r a t o d o s e s o s p r e d e c e s o r e s
P. E n t o n c e s , si S e s e l c o n j u n t o d e d e f i n i c i o n e s q u e a l c a n z a n e l e n c a b e z a m i e n t o d e
R i, e l c o n j u n t o d e d e f i n i c i o n e s q u e a l c a n z a n e l e n c a b e z a m i e n t o d e R 2 a lo l a r g o d e
c a m i n o s q u e se e n c u e n t r e n t o t a l m e n t e d e n t r o d e R e s C u ( S - K ) . P o r ta n to , la f u n ­
c i ó n d e t r a n s f e r e n c i a e n R p a r a a q u e l lo s b l o q u e s B e n R 2 se p u e d e c a l c u la r m e d i a n t e

genR.B = g e n Rj^B u ( G - d e s a c t R, tí)

desactR,n = desact R;Jlv ( K - g e n R:_B)

A c o n t in u a c i ó n , c o n s id é re s e lo q u e s u c e d e c u a n d o u n a re g ió n R se c o n s t r u y e a
p a rtir d e u n a reg ió n R ] u t i l i z a n d o l a t r a n s f o r m a c i ó n T j. L a s i t u a c i ó n g e n e r a l s e
m u e s t r a e n la f i g u r a 1 0 . 5 4 ; o b s é r v e s e q u e R c o n s t a d e R \ m á s a l g u n a s a r i s t a s d e r e -
t r o c e s o h a c i a e l e n c a b e z a m i e n t o d e R i ( q u e t a m b i é n e s e l e n c a b e z a m i e n t o d e /?, p o r
s u p u e s to ). U n c a m i n o q u e v a y a d o s v e c e s a tra v é s d el e n c a b e z a m i e n t o d e b e ser cí­
c lic o y c o m o y a se v io , n o n e c e s ita a n a liz a r s e . A sí, t o d a s la s d e f in i c io n e s g e n e r a d a s
al fin al d el b l o q u e B se g e n e ra n d e u n a d e d o s m a n e ra s.

F ig . 1 0 .5 4 . C o n s tru c c ió n d e regiones p o r m e d io d e 7 j.

1. La d e fin ició n se g e n e ra d e n tro de R\ y n o n e c e s i t a l a s a r i s t a s d e r e t r o c e s o i n c o r ­


p o r a d a s a R p a r a a l c a n z a r e l f i n d e B.

2. L a d e fin ic ió n se g e n e r a e n a lg ú n lu g a r d e n t r o d e /? ,, a lc a n z a u n p r e d e c e s o r del
e n c a b e z a m ie n to , sig u e u n a a ris ta d e re tro c e s o , y n o se d e s a c tiv a y e n d o d e s d e
el e n c a b e z a m i e n t o a B.
Si G e s l a u n i ó n d e genR ,» p a r a t o d o s l o s p r e d e c e s o r e s d e l e n c a b e z a m i e n t o e n R ,
en to n ces

genR,B = genR[ B u ( G - d e s a c t

U n a d e f i n i c i ó n s e d e s a c t iv a y e n d o d e s d e el e n c a b e z a m i e n t o a B si, y s ó l o s i, s e
10.10 A L G O R IT M O S E F IC IE N T E S PA R A EL FL U JO DE DATOS 695

d e s a c t i v a a l o l a r g o d e t o d o s lo s c a m i n o s a c í c l i c o s , d e m o d o q u e l a s a r i s t a s d e r e t r o ­
c e s o i n c o r p o r a d a s a R n o h a c e n q u e se d e s a c t i v e n m á s d e f i n i c i o n e s . E s d e c i r ,

d e s u e la n = d e s a c tRí,B

Ejemplo 1 0 .4 0 . R e c o n s i d é r e s e el g r a f o d e f l u j o d e la f ig u r a 1 0 .5 0 , c u y a d e s c o m p o ­
s ic ió n ( 7 j , T 2) s e m u e s t r a e n l a f i g u r a 1 0 .5 5 , c o n n o m b r e s p a r a l a s r e g i o n e s d e la
d e s c o m p o s i c i ó n . T a m b i é n s e m u e s t r a n e n l a f i g u r a 1 0 .5 6 a l g u n o s v e c t o r e s d e b i t s
h i p o t é t i c o s q u e r e p r e s e n t a n t r e s d e f i n i c i o n e s y si s o n g e n e r a d o s o d e s a c t i v a d o s p o r
c a d a u n o d e l o s b l o q u e s d e l a f i g u r a 1 0 .5 5 .

C o m e n z a n d o d e d e n t r o h a c i a f u e r a , se o b s e r v a q u e p a r a r e g i o n e s d e u n s o l o n o d o ,
q u e s e l l a m a n A , f i, C y D . g e n y d e s a c t v i e n e n d a d o s p o r la t a b l a d e l a f i g u r a 1 0 .5 6 .
D e s p u é s s e p u e d e p a s a r a la r e g i ó n R , q u e s e f o r m a c u a n d o C c o n s u m e D p o r m e d i o
d e T 2. S i g u i e n d o la s r e g la s a n t e r i o r e s p a r a T 2, s e o b s e r v a q u e g e n y d e s a c t n o c a m -
b ia n p a r a C , es d e c ir,

genH,c = genc.c = 000


desact R%c = desact c ,c = 0 1 0
P a r a e l n o d o / ) , h a y q u e e n c o n t r a r e n l a r e g i ó n C la u n i ó n d e g e n p a r a t o d o s lo s
p r e d e c e s o r e s d e l e n c a b e z a m i e n t o d e la r e g i ó n D . P o r s u p u e s t o , el e n c a b e z a m i e n t o
d e la r e g ió n D e s e l n o d o Z), y s ó l o h a y u n p r e d e c e s o r d e e s e n o d o e n la r e g i ó n C : el
n o d o C. P o r ta n to ,

B lo q u e gen desact

A 100 010

B 0 1 0 101

C 000 0 1 0

D 001 000

Fig. 10.56. I n f o r m a c i ó n d e g en y d esa ct p a r a los b lo q u e s d e la fig u ra 10.55.


696 O PT IM A C IO N DE C O D IG O

g e n R%D = gerio.D u (g e n c . c - d e s a c tD,D) = 0 0 1 + ( 0 0 0 - 0 0 0 ) = 0 0 1


d e s a c lR%D = d e s a c tn .n u (d e s a c tc . c ~ g e n d . d ) = 0 0 0 + ( 0 1 0 - 001 ) = 0 1 0

A h o r a s e c o n s t r u y e la r e g i ó n S a p a r t i r d e l a r e g i ó n R p o r m e d i o d e T x. L o s c o n ­
ju n t o s desact n o c a m b ia n , a s í q u e se tie n e

d e s a c ts .c = d e s a c t R>c = 0 1 0
desacts.D = desact RD = 0 1 0
gen p a r a S s e o b s e r v a q u e la ú n i c a a r i s t a d e r e t r o c e s o al
P a r a c a l c u l a r lo s c o n j u n t o s
e n c a b e z a m i e n t o d e S q u e s e i n c o r p o r a y e n d o d e s d e R a S e s l a a r i s t a D —> C. P o r
ta n to ,

gens.c = g W R .c ^ (genR%D-d esa ctR,c) = 000+(001-010) = 001


g e n s .D = g e n R tD v ( g e n R,D- d e s a c t RtD) = 0 0 1 + ( 0 0 1 - 0 1 0 ) = 0 0 1

E l c á l c u l o p a r a la r e g i ó n T e s a n á l o g o a l d e la r e g i ó n R y s e o b t i e n e

genT,A = 100
desact = 010
g e n T,B = 010
d e s a c tr .n = 101

P o r ú ltim o , se c a lc u la n gen y desact p a r a la r e g i ó n U , e l g r a f o d e f l u j o c o m p l e t o .


C o m o U s e c o n s t r u y e c u a n d o T c o n s u m e S p o r l a t r a n s f o r m a c i ó n 7 , lo s v a l o r e s d e
gen y desact p a r a lo s n o d o s A y B n o s o n d i f e r e n t e s d e lo s q u e s e a c a b a n d e d a r . P a r a
C y D, s e o b s e r v a q u e e l e n c a b e z a m i e n t o d e S , e l n o d o C , t i e n e d o s p r e d e c e s o r e s en
l a r e g i ó n T: A y B. P o r t a n t o , s e c a l c u l a

G = g e n T.A ^
genT,n = 1 1 0
D = desactT.a n desact = 000

D e sp u é s se p u e d e c a lc u la r

g e n j x = g e n s .c u ( G - d e s a c t s x ) = 101
d e s a c tu%c = d e s a c ts .c v ( K —g e n s .c = 0 1 0
g e n u M = g e n s .D U ( G - d e s a c t s . D ) = 1 0 1
desact u,d = desacts ,D u (K - g e n SsD) = 010 □

H a b ie n d o c a lc u la d o genVtfí y desact u m p a r a c a d a b l o q u e B , d o n d e U e s la r e g i ó n
q u e c o n s t a d e l g r a f o d e f l u j o c o m p l e t o , s e h a c a l c u l a d o f u n d a m e n t a l m e n t e sal[B ]
p a r a c a d a b l o q u e B . E s d e c i r , si s e o b s e r v a la d e f i n i c i ó n d e transu<fí{S) = g e n ^ .B ^
u { S — d e s a c t v .b ), s e v e q u e t r a n s u ,B ( 0 ) e s e x a c t a m e n t e s a l [fí]. P e r o t r a n s UM( 0 ) =
= g e th .B• P o r t a n t o , t e r m i n a r e l a l g o r i t m o d e d e f i n i c i o n e s d e a l c a n c e b a s a d o e n la
e s t r u c t u r a c o n s i s t e e n u t i l i z a r lo s c o n j u n t o s g e n c o m o lo s s a l , y c a l c u l a r lo s c o n j u n ­
t o s e n t t o m a n d o la u n i ó n d e lo s c o n j u n t o s s a l d e lo s p r e d e c e s o r e s . E s t o s p a s o s s e
re s u m e n el el sig u ie n te a lg o ritm o .

A lgoritm o 1 0 .1 7 . D e f i n i c i o n e s d e a l c a n c e b a s a d a s e n l a e s t r u c t u r a .

Entrada. U n g r a f o d e f l u j o r e d u c i b l e G y lo s c o n j u n t o s d e d e f i n i c i o n e s gen [B] y


desact [ 5 ] p a r a c a d a b l o q u e B d e G.
10.10 A L G O R IT M O S E F IC IE N TE S P A R A EL F LU JO DE D A T O S 697

Salida, ent [B\ p a r a c a d a b lo q u e B .


M étodo.

1. E n c u é n tre s e la d e s c o m p o s ic ió n (7*, - T 2) p a r a G.

2. P a ra c a d a región R en la d e sc o m p o sic ió n , d e d e n t r o h acia fuera, calcúlese g en RH


y desactR B p a r a c a d a b lo q u e B e n R.

3. Si U es el n o m b r e d e la región q u e c o n s ta d e l g rafo c o m p le to , e n to n c e s p a ra
c a d a b lo q u e B. asíg n ese ent [5 ] a la u n ió n , e n tr e to d o s los p re d e c e so re s P del
b lo q u e B. d e genc\p • a

A lg u n o s a u m e n to s d e v elo cid a d para e l a lg o r itm o b a s a d o en la estr u c tu ra

P r im e ro , o b sérv ese q u e si se tie n e u n a fu n c ió n d e tra n s fe re n c ia G vj ( S - K ). la f u n ­


c ió n n o se m o d ific a si se e lim in a n d e K a lg u n o s m ie m b r o s d e G. A sí. c u a n d o se a p li­
q u e 7*2, en lu g a r d e u tiliz ar las fó rm u la s

g en RM = g en RyB\ j {G - desact
desactR n = desactRl H ( K - g e n R: B)

se p u e d e s u s titu ir la s e g u n d a p o r

desact RR = desact R%B kj K


a h o r r a n d o u n a o p e r a c ió n p a r a c a d a b lo q u e e n la reg ió n R 2.
O t r a id e a útil es o b s e rv a r q u e la ú n ic a vez q u e se a p lic a 7*, es d e s p u é s d e h a b e r
c o n s u m i d o a lg u n a reg ió n R 2 p o r /?,, y h a y a a lg u n a s a ris ta s d e re tro c e so d e sd e R 2 al
e n c a b e z a m ie n to d e R \. E n lu g a r d e re a liz a r p r im e r o c a m b io s en R 2 d e b id o s a la o p e ­
ra c ió n 7*2. y d e s p u é s h a c e r los c a m b io s e n /?, y R 2 d e b id o s a la o p e r a c ió n 7',, se p u e ­
d e n c o m b in a r los d o s c o n j u n to s d e c a m b io s si se hace lo siguiente:

1. U tiliz a n d o la regla 7*2, calcú lese la n u e v a fu n c ió n d e tra n s fe re n c ia p a r a aq u e llo s


n o d o s d e R 2 q u e sean p re d e c e so re s del e n c a b e z a m ie n to de R {.

2. U tiliz a n d o la regla 7 j . calc ú le se la n u e v a f u n c ió n d e tra n s fe re n c ia p a r a to d o s los


n o d o s d e R \.

3. U tiliz a n d o la regla 7 \. calc ú le se la n u e v a f u n c ió n d e tra n s fe re n c ia p a r a to d o s los


n o d o s d e R 2. O b sé rv e se q u e la re g e n e ra c ió n d e b id a a la a p lic a c ió n d e 7j h a al­
c a n z a d o los p red ece so res d e R 2 y se p a s a n a to d o s los d e R 2 m e d ia n te la regla
T2\ n o h a y n ec e sid a d d e a p lic a r la regla /', p a ra R 2.

M a n e jo d e g r a fo s d e flu jo n o r e d u c ib le s

Si la red u c c ió n (7*, - T2) d e u n g rafo d e flu jo se d e tie n e e n u n g rafo d e flu jo lím ite
q u e n o sea u n so lo n o d o , e n to n c e s se d e b e re a liz a r u n a s e p a ra c ió n d e n o d o s. S e p a ra r
u n n o d o del g rafo d e flujo lím ite c o r r e s p o n d e a d u p lic a r to d a la reg ió n re p re s e n ta d a
p o r ese n o d o . P o r e je m p lo , en la fig u ra 10.57 se su g iere el e fe c to q u e la sep aració n
d e n o d o s p u e d e te n e r so b re u n g rafo d e flu jo o rig in a l d e n u e v e n o d o s q u e fue par-
tic io n a d o p o r 7*, y T2 e n tres reg io n es c o n e c ta d a s p o r a lg u n a s aristas.
C o m o se m e n c io n ó en la secció n a n te r io r , a l te r n a n d o s e p a ra c io n e s c o n secu en ­
cias d e red u ccio n es, se tie n e la s e g u rid a d d e q u e el g rafo d e flu jo se re d u c e a u n solo
698 O P T IM A C IO N DE C O D IG O

n o d o . El re s u lta d o d e las s e p a ra c io n e s es q u e a lg u n o s d e lo s n o d o s d e l g rafo original


te n d rá n m á s d e u n a c o p ia en la región re p re se n ta d a p o r el grafo d e u n n o d o . Se pued e
a p lic a r el a lg o ritm o 10.17 a esta reg ió n c o n p o c o s c a m b io s . L a ú n ic a d ife re n c ia es
q u e c u a n d o se s e p a re u n n o d o , se d e b e n d u p lic a r los c o n j u n to s g en y desact c o rre s ­
p o n d ie n te s a los n o d o s del g rafo orig inal en la reg ió n re p re s e n ta d a p o r el n o d o se­
p a ra d o . P o r e je m p lo , c u a le s q u ie ra q u e se a n los v alo res d e g en y desact p a ra lo s n o ­
d o s d e la región d e d o s n o d o s d e la figura 10.57 d e la iz q u ie rd a se c o n v ie r te n en gen
y desact p a ra c a d a u n o d e lo s n o d o s c o r r e s p o n d ie n te s e n a m b a s reg io n es d e d o s n o ­
d o s d e la d e re c h a . E n el p a s o final, c u a n d o se c a lc u le n los c o n j u n to s ent p a r a to d o s
los n o d o s, los n o d o s del g rafo o rig in a l q u e te n g a n v a rio s re p re s e n ta n te s e n la región
final te n d r á n sus c o n j u n to s ent c a lc u la d o s t o m a n d o la u n ió n d e los c o n j u n to s ent d e
to d o s s u s re p re s e n ta n te s .

Fig. 10.57. Separación d e un grafo d e llujo n o reducible.

En el p e o r caso, la s e p a ra c ió n d e n o d o s p o d r ía e x p o n e n c ia r el n ú m e r o to tal d e
n o d o s re p re s e n ta d o s p o r to d a s las regiones. P o r ta n to , si se e s p e ra q u e m u c h o s gra­
fos d e flu jo sean n o red u cib les. p r o b a b le m e n te n o se d e b e r ía n u tiliz a r m é to d o s b a­
sa d o s en la e s tru c tu ra . P o r fo rtu n a , los g rafo s d e flu jo n o re d u cib les s o n lo suficien­
te m e n te raro s c o m o p a ra n o te n e r en c u e n t a el c o s to d e la s e p a ra c ió n d e n od o s.

1 0 .1 1 LINA H E R R A M I E N T A P A R A E L A N A L I S I S D E L F L U J O D E D A T O S

C o m o ya se ha m e n c io n a d o , ex isten g r a n d e s s im ilitu d e s e n tr e los d is tin to s p ro b le ­


m a s de flu jo d e d a to s e s tu d ia d o s . Se vio q u e las e c u a c io n e s d e flujo d e d a to s de la
secció n 10.6 se d is tin g u ía n por:

1. L a fu n ció n d e tran sferen cia utilizada, q u e e ra e n c a d a caso e s tu d ia d o d e la fo rm a


/ ( X ) = .-I u (A - B). P o r e je m p lo , A = desact y B = gen p a r a las d efin icio n es
d e alcan ce.

2. El o p e r a d o r d e c o n flu e n c ia u tiliz a d o , q u e en c a d a c a so e s tu d ia d o e ra la u n ió n o
la in tersecció n .

3. L a d ire c c ió n d e p ro p a g a c ió n d e la in fo rm a c ió n : h acia a d e la n te o h acia atrás.


10.11 U N A H E R R A M IE N T A P A R A EL A N A L IS IS D E L F LU JO DE D A T O S 699

C o m o estas d is tin c io n e s n o son g ra n d e s , n o d e b e s o r p r e n d e r q u e to d o s esto s p ro ­


b le m a s se c o n s id e r e n d e f o r m a u n if ic a d a . D ic h o e n f o q u e fue d e s c r ito p o r K ild all
[1 973]. y K ildall a p lic ó u n a h e r r a m ie n ta p a r a s im p lific a r la im p la n ta c ió n d e p ro b le­
m a s d e flu jo d e d a to s y la u tiliz ó p a r a v ario s p ro y e c to s d e c o m p ila d o re s . N o ha sido
m u y u tiliz ad a, p r o b a b le m e n te p o r q u e la c a n tid a d d e tr a b a jo a h o r r a d a p o r el sistem a
n o e s ta n g r a n d e c o m o la a h o r r a d a p o r h e r r a m ie n ta s c o m o los g e n e ra d o re s d e a n a ­
lizad o res sin tá ctic o s. S in e m b a r g o , h a y q u e sab er lo q u e se p u e d e h a c e r n o só lo p o r­
q u e sugiere u n a sim p lific ació n a los im p la n ta d o r e s d e c o m p ila d o re s o p tim a d o re s .
sin o ta m b ié n p o r q u e a y u d a a u n if ic a r las d is tin ta s id e as q u e se h a n v isto a n te s en
este c a p ítu lo . A d e m á s, esta secció n sugiere c ó m o se p u e d e n d e s a rro lla r estrateg ias de
análisis del flujo d e d a to s m á s p o d e ro s a s q u e p r o p o r c io n a n in fo rm a c ió n m á s precisa
q u e los a lg o ritm o s m e n c io n a d o s h a s ta a h o ra .

M a r c o s para a n á lis is d e flu jo d e d a to s

Se d e s c rib irá n m a rc o s q u e m o d e la n los p ro b le m a s d e p ro p a g a c ió n h acia a d e la n te . Si


sólo se c o n s id e r a el tip o ite ra tiv o d e so lu c ió n a los p ro b le m a s d e flu jo d e d a to s, e n ­
to n c e s n o im p o r ta la d ire c c ió n del flujo: se p u e d e in v e rtir la d ire c c ió n d e las aristas
y h a c e r a lg u n o s a ju ste s m e n o re s p a r a el n o d o inicial, y e n to n c e s c o n s id e r a r u n p r o ­
b le m a d e p ro p a g a c ió n h acia a trá s c o m o si fuera h acia a d e la n te . L o s a lg o ritm o s b a ­
sa d o s en la e s tr u c tu r a son a lg o d istin to s: los p ro b le m a s d e p ro p a g a c ió n h acia a d e ­
la n te y h acia a trá s n o se resu elv en d e la m is m a f o r m a p o r q u e el in v erso d e u n grafo
d e flu jo re d u c ib le n o tie n e p o r q u é s e r red u cib le. S in e m b a r g o , el tr a ta m ie n to d e los
p ro b le m a s d e p ro p a g a c ió n h acia a trá s se d e ja r á c o m o ejercicio y la a te n c ió n se c o n ­
c e n tr a r á e n p ro b le m a s d e p ro p a g a c ió n h a c ia a d e la n te .
U n m arco para análisis d e flu jo de d a to s c o n s ta de:

1. U n c o n j u n t o V d e valores q u e d e b e n s e r p ro p a g a d o s. L o s v alo res d e ent y sal


s o n m ie m b r o s d e V.

2. U n c o n ju n to F d e fu n cio n es d e transferencia d e L a V.

3. U n a operación d e reunión b in a ria A . s o b re V. p a ra re p re s e n ta r al o p e r a d o r d e


co n flu e n cia.

E je m p lo 1 0 .4 1 . P a ra las d e fin ic io n e s d e alcan ce. V c o n s ta d e to d o s los s u b c o n ju n to s


del c o n j u n t o d e d e fin ic io n e s e n el p ro g ra m a . El c o n j u n t o F e s el c o n j u n t o d e to d a s
las fu n c io n e s d e la fo rm a /(A * ) = A \u (X — B). d o n d e A y ti son c o n j u n to s d e d e f i ­
n icio n es. es d ecir, m ie m b r o s d e V; A y B s o n lo q u e se lla m a n gen y desact. resp ec­
tiv a m e n te . P o r ú ltim o , la o p e r a c ió n A es la u n ió n .
P a r a las e x p r e s io n e s d is p o n ib le s . V c o n s ta d e to d o s los s u b c o n j u n t o s d e l c o n ­
j u n t o d e e x p re sio n e s c a lc u la d a s p o r el p ro g ra m a , y F e s el c o n ju n to d e e x p re sio n e s
d e la m i s m a f o r m a q u e a n t e s p e r o d o n d e A y B s o n a h o r a c o n j u n t o s d e e x p r e ­
s io n e s . El o p e r a d o r d e r e u n ió n es la in te rse c c ió n , p o r su p u esto .

E je m p lo 1 0 .4 2 . El e n f o q u e d e K ild all n o se lim ita a los e je m p lo s sen cillo s q u e se


h a n v e n id o c o n sid e ra n d o , a u n q u e surge la c o m p le jid a d , t a n t o e n té rm in o s d e tie m p o
d e c o m p u ta c ió n c o m o d e d ific u lta d in telec tu al. L os ejercicio s p r o p o n e n un e je m p lo
700 O P T IM A C IO N DE C O D IG O

m u y p o d e r o s o , d o n d e la i n f o r m a c i ó n d e l f l u j o d e d a t o s c a l c u l a d a i n d i c a e n d e f i n i ­
t i v a t o d o s lo s p a r e s d e e x p r e s i o n e s q u e t i e n e n e l m i s m o v a l o r e n u n p u n t o . S i n e m ­
b a rg o , se a p re c ia rá la e s e n c ia d e e ste e je m p lo al p r o p o r c io n a r u n m é to d o q u e in d i­
q u e la s v a r i a b l e s c o n v a l o r e s c o n s t a n t e s d e f o r m a q u e c a p t a m á s i n f o r m a c i ó n q u e
la s d e f i n i c i o n e s d e a l c a n c e . E l n u e v o m a r c o e n t i e n d e , p o r e j e m p l o , q u e c u a n d o x e s
d e f i n i d a p o r d \ x : = x + l , y x t e n í a u n v a l o r c o n s t a n t e a n t e s d e la a s i g n a c i ó n , l o s e ­
g u irá te n ie n d o d esp u és.
P o r el c o n t r a r i o , s i s e u t i l i z a n la s d e f i n i c i o n e s d e a l c a n c e p a r a la p r o p a g a c i ó n d e
c o n s t a n t e , s e v e r í a q u e la p r o p o s i c i ó n ¿ e r a u n a p o s i b l e d e f i n i c i ó n d e x , y s e s u p o n e
p o r ta n to q u e x n o te n ía u n v a lo r c o n s ta n te . P o r s u p u e s to , e n u n a p a s a d a , el la d o
d e r e c h o d e d\ x : = x + l p u e d e s e r s u s titu id o p o r u n a c o n s ta n te y e n to n c e s o tr a r o n d a
d e p r o p a g a c i ó n d e c o n s t a n t e s d e t e c t a r í a q u e lo s u s o s d e x d e f i n i d o s e n d e r a n e n
re a lid a d u s o s d e u n a c o n s ta n te .
E n e l n u e v o m a r c o , e l c o n j u n t o F e s e l c o n j u n t o d e t o d a s la s t r a n s f o r m a c i o n e s
d e v a ria b le s d e l p r o g r a m a a u n c o n ju n to p a r tic u la r d e v alo re s. E se c o n j u n to d e v a ­
lo re s c o n s ta de:

1. T o d a s la s c o n s t a n t e s .

2. E l v a l o r n o c o n s t, q u e s ig n if ic a q u e se h a d e t e r m i n a d o q u e la v a r i a b l e e n c u e s t i ó n
n o t i e n e u n v a l o r c o n s t a n t e . E l v a l o r n o c o n s t s e a s i g n a r í a a la v a r i a b l e x s i, p o r
e j e m p l o , d u r a n t e e l a n á l i s i s d e f l u j o d e d a t o s s e d e s c u b r i e r a n d o s c a m i n o s a lo
la rg o d e lo s c u a le s 2 y 3, r e s p e c tiv a m e n te , se a s ig n a r a n a x , o u n c a m i n o a
lo la rg o d e l c u a l la d e f i n i c i ó n p r e v i a d e x f u e r a u n a p r o p o s i c i ó n d e le c tu r a ,
read .

3. L a v a r ia b le in d e f q u e sig n ific a q u e n o s e p u e d e a f i r m a r n a d a to d a v ía a c e r c a d e
la v a ria b le e n c u e s tió n , p r e s u m ib le m e n te p o r q u e al p rin c ip io d e la e je c u c ió n del
a n á lis is d e l flu jo d e d a to s n o se h a d e s c u b ie r to n in g u n a d e f in ic ió n d e la v a ria b le
q u e a lc a n c e el p u n to e n c u e stió n .

O b s é rv e s e q u e n o c o n st e i n d e f n o s o n lo m i s m o ; s o n f u n d a m e n t a l m e n t e o p u e s ­
ta s . L a p r i m e r a i n d i c a q u e s e h a n v i s t o t a n t a s f o r m a s e n q u e p o d r í a s e r d e f i n i d a u n a
v a ria b le q u e se s a b e q u e n o e s c o n s ta n te . L a s e g u n d a in d ic a q u e se h a v isto ta n p o c o
a c e rc a d e la v a ria b le , q u e n o se p u e d e d e c ir n a d a e n a b s o lu to .
L a o p e r a c i ó n d e r e u n i ó n s e d e f i n e m e d i a n t e la s i g u i e n t e t a b l a . S e d e f i n e a p y v
c o m o d o s m ie m b r o s d e F; e s d e c ir, p y v h a c e n c o r re s p o n d e r c a d a v a ria b le a u n a
c o n s t a n t e , c o n i n d e f o c o n n o c o n s t. E n t o n c e s l a f u n c i ó n p = p A v s e d e f i n e e n la
f i g u r a 1 0 .5 8 , d o n d e s e d a e l v a l o r d e p ( x ) e n t é r m i n o s d e lo s v a l o r e s d e p ( x ) y v ( x )
p a r a c a d a v a r i a b l e x . E n la t a b l a , c e s u n a c o n s t a n t e a r b i t r a r i a y d e s o t r a c o n s t a n t e
d i s t i n t a d e c. P o r e j e m p l o , si p ( x ) = c y v ( x ) = ¿ , u n a c o n s t a n t e d i s t i n t a , e n t o n c e s
a p a r e n t e m e n t e x t o m a l o s v a l o r e s c y d a l o l a r g o d e d o s c a m i n o s d i s t i n t o s y e n la
c o n f l u e n c i a d e e s o s c a m i n o s , x n o t i e n e u n v a l o r c o n s t a n t e ; d e a q u í la e l e c c i ó n d e
P ( x ) = n o c o n s t. O t r o e j e m p l o : si a lo l a r g o d e u n c a m i n o n o s e s a b e n a d a a c e r c a d e
x , l o c u a l s e r e f l e j a p o r p ( x ) = i n d e f y a lo l a r g o d e o t r o c a m i n o , s e c r e e q u e x t i e n e
e l v a l o r c., e n t o n c e s d e s p u é s d e la c o n f l u e n c i a d e e s t o s c a m i n o s s ó l o s e p u e d e a f i r m a r
q u e x t i e n e e l v a l o r c. P o r s u p u e s t o , el d e s c u b r i m i e n t o p o s t e r i o r d e o t r o c a m i n o al
10.11 U N A H E R R A M IE N T A PARA E L A N A L IS IS D E L F LU JO D E D A T O S 701

p u n t o d e c o n flu e n c ia , a lo largo del c u a l x te n ía u n v a lo r a d e m á s d e c\ c a m b ia r á el


v alo r a s ig n a d o p a r a x d e s p u é s d e la c o n f lu e n c ia d e noconst.
P o r ú ltim o , se d e b e d is e ñ a r el c o n j u n t o d e fu n c io n e s F q u e refleje la tra n s fe re n ­
cia d e in f o r m a c ió n del c o m ie n z o al final d e c u a lq u ie r b lo q u e . L a d e sc rip c ió n d e este
c o n j u n t o d e fu n c io n e s es c o m p lic a d a , a u n q u e las id e as s o n sencillas. P o r ta n to , se
d a r á u n a “ b a se ” p a r a el c o n j u n t o d e f u n c io n e s d e s c rib ie n d o las fu n c io n e s q u e rep re­
s e n ta n p ro p o s ic io n e s d e d e fin ic ió n sim p les, y el c o n j u n t o c o m p le to d e fu n c io n e s se
p u e d e c o n s tru ir e n to n c e s c o m p o n ie n d o fu n c io n e s a p a r tir de este c o n ju n to base para
reflejar los b lo q u e s c o n m á s d e u n a p ro p o s ic ió n d e d efin ición .

P(x)
v ( x)
noconst c d(*c) in d ef
noconst noconst noconst noconst noconst
c noconst c noconst c
indef noconst c d in d ef

Fig. 10.58. p(x) en té rm in o s d e p(x) y v(x).

1. L a fu n ció n id e n tid a d está en F; esta fu n c ió n refleja c u a lq u ie r b lo q u e q u e n o tenga


p r o p o s ic i o n e s d e d e f in ic ió n . Si / e s la f u n c ió n id e n t i d a d , y p e s c u a l q u i e r
c o r r e s p o n d e n c ia d e v a ria b le s a v a lo re s, e n to n c e s / ( p ) = p . O b s é rv e s e q u e p
m is m a n o tie n e p o r q u é s e r la id e n tid a d ; es a rb itra ria .

2. P a r a c a d a v ariab le x y c o n s ta n te c h a y u n a f u n c ió n / en F tal q u e p a ra c a d a
c o rre s p o n d e n c ia p en V, se t i e n e / ( p ) = v. d o n d e v(w) = p(w) p a r a to d a w dis­
tin ta d e x. y v (x ) = c. E stas fu n c io n e s reflejan la a c c ió n d e u n a p ro p o sic ió n de
a s ig n a c ió n x : =c\

3. P a r a las tr e s v aria b les x , y y z ( n o n e c e s a ria m e n te d istin ta s), h a y u n a fu n c ió n /


e n /-'tal q u e p a r a c a d a c o rre s p o n d e n c ia p e n V. se t i e n e / ( p ) = v. L a c o r r e s p o n ­
d e n c ia v se d e fin e por: p a ra c a d a w d is tin ta d e x se tie n e v(w) = p(w ) y v(x) =
= p ( y )+ p (z ). Si cu alq u iera d e p ( y ) o p ( z ) es noconst , e n to n c e s la s u m a es noconst.
Si c u a lq u ie r a d e p ( y ) o p ( z ) es in d e f p e r o n in g u n a es noconst , e n t o n c e s el r e ­
s u lta d o es indef. E sta fu n c ió n ex p resa el efecto d e la a s ig n a c ió n x : = y + z . C o m o
es h a b itu a l en este c a p ítu lo . + se p u e d e c o n s id e r a r c o m o u n o p e r a d o r genérico;
a q u í es n ec e sa ria u n a m o d ific a c ió n o b v ia si el o p e r a d o r es u n ita rio , te rn a rio , o
s u p e rio r, y se n e c e sita o tr a m o d ific a c ió n o b v ia p a r a te n e r en c u e n t a el e fe c to de
u n a p ro p o sic ió n d e c o p ia x:*=y.

4. P a ra c a d a variable x hay u n a fu n ció n / e n F t a l q u e p a ra c a d a p , / ( p ) - v, d o n d e


v(w) = p(w) p a ra to d a w d ife re n te d e x . y v(x) = noconst. Esta fu n c ió n refleja
u n a d e fin ició n le y en d o x. p u e s to q u e d e s p u é s d e u n a p ro p o s ic ió n read , h a y q u e
a s u m i r q u e x n o tie n e n in g ú n v a lo r c o n s ta n te e n co n creto .
702 O P T IM A C IO N DE C O D IG O

L o s a x io m a s d e lo s m a r c o s para a n á l is i s d e flu jo d e d a to s

P a ra h a c e r q u e los tip o s d e a lg o ritm o s d e flu jo d e d a to s q u e se h a n v isto h asta a h o ra


fu n c io n e n p a r a u n m a r c o a rb itra rio , h a y q u e s u p o n e r a lg u n a s c o sas a c e rc a del c o n ­
j u n t o V. el c o n ju n to d e f u n c io n e s F y el o p e r a d o r d e r e u n ió n A . L as su p o sicio n e s
b ásicas se listan m á s a b a jo , a u n q u e a lg u n o s a lg o ritm o s d e flu jo d e d a to s n ecesitan
su p o sic io n e s adicionales.

1. F tien e u n a fu n c ió n d e id e n tid a d / , tal q u e / ( p ) = p p a r a to d a p e n V.

2. F es c e rra d o b a jo la c o m p o s ic ió n : es d ecir, p a ra c u a le s q u ie ra d o s f u n c i o n e s / y
g e n F. la f u n c ió n h d e fin id a p o r //(p ) = # ( /'( p ) ) está e n F.

3. A es u n a o p e ra c ió n a so cia tiv a, c o n m u ta tiv a e id e m p o te n te . E sta s tr e s p ro p ie ­


d a d e s se e x p re sa n a lg e b ra ic a m e n te c o m o

pA(vAp) = (pAv)Ap
p A V = VAp
pAp = p

p a r a to d a p. v y p en V.

4. H a y u n elem ento tope T en l \ q u e satisface la ley

TAp = p

p a ra to d a p e n V.

E je m p lo 1 0 .4 3 . C o n s id é re n s e las d e fin ic io n e s d e a lc a n c e . C o n s e g u rid a d F tie n e la


id e n tid a d , la fu n c ió n d o n d e gen y desact s o n el c o n j u n t o v acío. P a ra m o s tr a r la c e ­
r r a d u r a b a jo la c o m p o s ic ió n , s u p ó n g a s e q u e se tie n e n d o s fu n c io n e s

f ( X ) = C ,u (A r-A :,)
H X ) = G2 v ( X - K 2)
E n to n c e s

M A X ) ) = G2 u («7, u < * - * , ) ) - K2)


S e p u e d e c o m p r o b a r q u e el la d o d e r e c h o d e lo a n te r io r es a lg e b ra ic a m e n te igual a

<G\ u (O , - A y ) u { X - { K y u K 2))

Si se h a c e K = K\ u K2 y G = (G2 w ( 6 | - /o))* e n to n c e s se h a d e m o s t r a d o q u e la
c o m p o s ic ió n d e f\ y f 2. q u e es f ( X ) = G u ( X - K ) . es d e la fo rm a q u e la c o n v ie rte
e n u n m ie m b r o d e F.
C o m o el o p e r a d o r d e r e u n ió n , q u e es la u n ió n , es fácil c o m p r o b a r q u e la u n ió n
e s a s o c ia tiv a , c o n m u ta tiv a e id e m p o te n te . El e le m e n to “ to p e ” re su lta s e r el c o n ju n to
vacío e n este caso , p u e s to q u e 0 u X = X p a r a c u a lq u ie r c o n j u n t o A’.
C u a n d o se c o n s id e r a n las e x p r e s io n e s d is p o n ib le s , se v e q u e los m is m o s a r g u ­
m e n to s u tiliz a d o s p a r a las d e fin ic io n e s d e a lc a n c e ta m b ié n d e m u e s tr a n q u e F tien e
u n a in ten sid ad y q u e es c e rra d o b a jo la c o m p o sic ió n . El o p e ra d o r d e re u n ió n es a h o ra
la in te rs e c c ió n , p e r o este o p e r a d o r ta m b ié n e s a s o c ia tiv o , c o n m u t a t i v o e id e m p o -
10.11 U N A H E R R A M I E N T A P A R A E L A N A L IS IS D E L F L U J O D E D A T O S 703

le n te . E l e l e m e n t o t o p e t i e n e u n s e n t i d o m á s i n t u i t i v o e s ta v e z ; e s e l c o n j u n t o E d e
to d a s la s e x p r e s io n e s e n el p r o g r a m a , p u e s to q u e p a r a c u a l q u i e r c o n j u n t o X d e e x ­
p re sio n e s, E n X = X. a

E je m p lo 1 0 .4 4 . C o n s i d é r e s e e l m a r c o p a r a c á l c u l o s c o n s t a n t e s q u e s e p r e s e n t ó e n el
e j e m p lo 1 0 .4 2 . E l c o n j u n t o d e f u n c i o n e s F s e d i s e ñ ó p a r a q u e i n c l u y e r a l a i d e n t i d a d
y p a r a q u e f u e r a c e r r a d o b a jo la c o m p o s ic ió n . P a r a c o m p r o b a r la s le y e s a lg e b ra ic a s
p a ra A b a s ta c o n d e m o s tr a r q u e se a p lic a n a c a d a v a ria b le x . C o m o e je m p lo , se
c o m p r o b a r á la id e m p o te n c ia . S e a v = p A p , e s d e c ir, p a ra to d a x , v (x ) = p (x ) A p (x ).
Es se n c illo c o m p r o b a r p o r c a s o s q u e v (x ) = p ( x ) . P o r e j e m p lo , si p ( x ) = n o c o n s t,
e n to n c e s v (x ) = n o c o n s t, p u e s t o q u e e l r e s u l t a d o d e e m p a r e j a r n o c o n s t c o n s i g o
m i s m o e n la f i g u r a 1 0 . 5 8 e s n o c o n s t.
P o r ú lt im o , e l e l e m e n t o to p e e s la c o r r e s p o n d e n c i a t d e fin id a p o r t ( x ) = in d e f
p a r a t o d a s la s v a r ia b le s x . S e p u e d e c o m p r o b a r p o r la f ig u r a 1 0 .5 8 q u e p a r a c u a l ­
q u i e r c o r r e s p o n d e n c i a p y c u a l q u i e r v a r i a b l e x , si v e s la f u n c i ó n t A p , e n t o n c e s
v ( x ) = p ( x ) , p u e s t o q u e e l r e s u l t a d o d e e m p a r e j a r i n d e f c o n c u a l q u i e r v a l o r e n la
ta b la d e la f ig u r a 1 0 .5 8 e s e s te o t r o v a lo r. □

M o n o to n ic id a d y d is trib u tiv id a d

Se n e c e sita o tr a c o n d ic ió n p a r a h a c e r q u e fu n c io n e el a lg o ritm o ite ra tiv o p a r a a n á ­


lis is d e f l u j o d e d a t o s . E s t a c o n d i c i ó n , l l a m a d a m o n o t o n i c i d a d , i n d i c a i n f o r m a l ­
m e n t e q u e si s e t o m a c u a l q u i e r f u n c i ó n / d e l c o n j u n t o F y s i s e a p l i c a / a d o s m i e m ­
b r o s d e V, u n o “ m á s g r a n d e ” q u e e l o t r o , e n t o n c e s e l r e s u l t a d o d e a p l i c a r / a l m á s
g ra n d e n o e s m e n o s q u e lo q u e se o b tie n e al a p l i c a r / a l m e n o r.
P a r a p re c is a r la n o c ió n d e “ m á s g r a n d e " , se d e fin e u n a re la c ió n < e n V m e d ia n te

p < v s i, y s ó l o s i, p Av — p
v

E je m p lo 1 0 .4 5 . E n el m a r c o d e l a s d e f i n i c i o n e s d e a l c a n c e , d o n d e e l o p e r a d o r d e
r e u n i ó n e s l a u n i ó n y l o s m i e m b r o s d e V s o n c o n j u n t o s d e d e f i n i c i o n e s , X < Y s ig ­
n ific a q u e X u Y = X , e s d e c ir , X e s u n s u p r a c o n j u n t o d e Y . A sí, < m ir a “ h a c ia
a tr á s ” ; lo s e l e m e n t o s m á s p e q u e ñ o s d e V s o n s u p r a c o n j u n t o s d e lo s m á s g ra n d e s .
P a r a la s e x p r e s io n e s d is p o n ib l e s , d o n d e e l o p e r a d o r d e r e u n i ó n e s la in te r s e c ­
c i ó n , la s c o s a s f u n c i o n a n d e l a m a n e r a “ c o r r e c t a ” , y X <, Y s i g n i f i c a q u e X n Y = X\
es d e c ir, X e s u n s u b c o n ju n to d e Y . o

O b s é r v e s e e n e l e j e m p l o 1 0 .4 5 q u e < , e n e l s e n t i d o d a d o a q u í n o t i e n e p o r q u é
te n e r to d a s la s p r o p ie d a d e s d e < e n lo s e n te ro s . E s c ie rto q u e ¿ e s tra n s itiv o ; el
le c to r p u e d e d e m o s tr a r , c o m o e je rc ic io s o b r e el u s o d e lo s a x io m a s p a r a A , q u e p < v
y v < p im p lic a n q u e p ¿ p. S in e m b a r g o , < e n e l s e n t i d o d a d o a q u í n o e s u n o r d e n
to ta l. P o r e je m p lo , e n e l m a r c o d e la s e x p r e s io n e s d is p o n ib le s , se p u e d e n t e n e r d o s
c o n ju n to s X e Y , n in g u n o d e lo s c u a le s se a u n s u b c o n ju n to d e l o tr o , e n c u y o c a so
n i X <, Y n i Y <, X s e r í a v e r d a d e r a .
A m e n u d o a y u d a d i b u j a r e l c o n j u n t o V e n u n d i a g r a m a d e r e tíc u lo , q u e e s u n
g r a f o c u y o s n o d o s s o n l o s e l e m e n t o s d e V, y c u y a s a r i s t a s e s t á n d i r i g i d a s h a c i a a b a j o ,
d e s d e X a Y , s i Y <. X . P o r e j e m p l o , e n l a f i g u r a 1 0 . 5 9 s e m u e s t r a e l c o n j u n t o V
p a ra u n p r o b le m a d e flu jo d e d a to s d e d e f in ic io n e s d e a lc a n c e d o n d e h a y tr e s d e fi­
704 O PT IM A C IO N DE C O D IG O

niciones, d¡, d 2 y d¡. Puesto que < es “ supraconjunto de” , una arista se dirige hacia
abajo desde cualqu ier subconjunto de estas tres definiciones a cada uno de sus su-
praconjuntos. Com o < es transitivo, se om ite convencionalm ente la arista de X a Y
si queda otro cam ino de X a T e n el diagram a. Por tanto, aunque {dh d 2, ¿ 3} < {</,},
no se dibuja esta arista porque está representada por el cam ino a través de {dh d 2),
por ejemplo.
Tam bién es útil observar que se puede leer la reunión de estos diagram as, puesto
que X a Y es siem pre la Z más alta para la que hay cam inos hacia abajo hasta Z
desde X e Y. Por ejem plo, si X es {dx} e Y es {d2), entonces Z en la figura 10.59 es
[d{, d 2}, lo cual tiene sentido, porque el operador de reunión es la unión. Tam bién
es cierto que el elemento tope aparecerá en el tope del diagram a de retículo; es decir,
hay un cam ino hacia abajo desde T a cada elemento.

Fig. 10.59. Retículo de subconjuntos de definiciones.

A hora se puede d efin ir que un m arco (F , V, A ) es m onótono si


p < v im p licaf ( n ) £ / ( v ) (10.15)
para toda p y v en V y f e n F .
H ay una form a equivalente de d e fin ir la m onotonicidad:
/(p A v ) S /(p )A /(v ) ( 10 . 16)

para toda p y v en V y / e n F. Es útil saltar de una a otra en estas dos definiciones


equivalentes, de modo que se esbozará una dem ostración de su equivalencia, de­
jando al lector que com pruebe algunas observaciones sencillas, utilizando la defini­
ción de ^ y las leyes asociativa, conm utativa y de idem potencia para A .
Se asum irá (1 0 .1 5 ) y se dem ostrará por qué se cum ple (10.16). Prim ero, obsér­
vese que para cualesquiera p y v, se cum plen am bas p A v < p y p A v < v; es una
prueba sencilla, que se deja al lector, dem ostrar estos hechos com probando que,
para cualesquiera x e y ,( x A y ) A y = x a y . Por tanto, p o r ( 1 0 .1 5 ),/(p A v ) ¿ / ( p ) y
/ ( p A v) < / ( v ) . Se deja al lector com probar la ley general
x < y y x <, z im plican x <. y / \ z
D efiniendo x = / ( p A v), y = / ( p ) y z = / ( v ) , se tiene (10.16).
A la inversa, se asum e (10 .16 ) y se dem uestra (10 .15). Se supone que p < v y se
u tiliza (1 0 .1 6 ) para c o n c lu ir /( p ) < / ( v ) , dem ostrando así (1 0 .1 5 ). L a ecuación
(10.16) indica q u e /(p A v ) á / ( p ) A / ( v ) . Pero ya que se asume que p < v ,p A v = p,
10.11 U N A H E R R A M I E N T A P A R A EL A N A L I S I S D E L F L U J O D E D A T O S 705

p o r d efin ició n . Así. (1 0 .1 6 ) in d ic a q u e / ( p ) < / ( p ) A / ( v ) . C o m o regla general, el


le c to r p u e d e d e m o s t r a r q u e

si x <, y A z e n to n c e s x < z

P o r ta n to . (1 0 .1 6 ) im p lic a q u e / ( p ) ^ / ( v ) , y se h a d e m o s t r a d o (10.15).
A m e n u d o un m a rc o o b e d e c e u n a c o n d ic ió n m á s fu erte q u e (10 .16 ). q u e se d e ­
n o m i n a condición d e distribuíi vi dad:

/ ( n AV) = / ( n ) A / ( v )

p a ra to d a s p y v en I ' y / e n F. C o n c e rte z a , si .v = y, e n to n c e s x A y = .v p o r idem -


p o te n c ia . d e m o d o q u e x < y . P o r ta n to , la d is trib u tiv id a d im p lic a m o n o to n ic id a d .

E je m p lo 10.46. C o n s id é re s e el m a r c o d e la s d e f in ic io n e s d e a lc a n c e . S e a n X e Y
c o n ju n to s d e d e fin ic io n e s, y sea / u n a fu n c ió n d e fin id a p o r f { 7 ) = G \ j ( / - K) p a ra
alg u n o s c o n ju n to s d e d efin icion es G y K . E n to n c e s se p u e d e c o m p r o b a r q u e el m a rc o
d e las d e fin ic io n e s d e a lc a n c e satisface la c o n d ic ió n d e d is trib u tiv id a d . m e d ia n te la
c o m p ro b a c ió n d e q u e

G u ( ( , V u ) V A ) = ( ( , ' u ( A ’- A ) ) u ( G ’ u ( r - t t )

D ib u ja r u n d ia g ra m a d e V e n n h a c e tr a n s p a r e n te la d e m o s tra c ió n d e la re la c ió n a n ­
te rio r. a u n q u e p a re z c a c o m p lic a d o . □

Ejemplo 10.47. A h o ra se d e m o s tr a r á q u e el m a r c o p a r a el c á lc u lo d e c o n s ta n te s es
m o n ó t o n o p e ro n o d is trib u tiv o . P r im e ro , sirv e d e a y u d a a p lic a r la o p e r a c ió n A y la
relació n < a los e le m e n to s q u e a p a re c e n e n la ta b la d e la figura 10.58. E s d ecir, se
define

n o c o n stA c = noconst p a r a c u a lq u ie r c o n s ta n te c
cA d = noconst p a ra c o n sta n te sc ¿ d
c A in d e f = c p a r a c u a lq u ie r c o n s ta n te c
noconst A in d e f = noconst
xA x = .v p a r a c u a lq u ie r v a lo r .v

E n to n c e s la figura 10.58 se p u e d e in te r p r e ta r c o m o si se in d ic a ra q u e p ( a ) = p ( a ) A
A v(a).
S e p u e d e d e t e r m i n a r c u á l es la re la c ió n < s o b re v a lo re s a p a r t i r d e la o p e r a ­
ción A . Se e n c u e n tr a

noconst ^ c p a r a c u a l q u ie r c o n s ta n te c
c £ in d e f p a r a c u a lq u ie r c o n s ta n t e c
noconst < in d e f

Se m u e s tr a esta re la c ió n en el d ia g ra m a d e m a lla d e la figura 10.60, d o n d e las c, sir­


ven p a r a su g e rir to d a s las c o n s ta n te s posibles. O b sé rv e se q u e esa figura n o es < so­
bre e le m e n to s d e V\ m á s b ie n es u n a re la c ió n so b re el c o n j u n t o d e v alo res p a r a p ( a )
p a ra v aria b les in d iv id u a le s a . Se p u e d e n c o n s id e r a r los e le m e n to s d e V c o m o v ec­
to re s d e d ic h o s v alo re s, u n c o m p o n e n t e p a r a c a d a v ariab le, y el d ia g ra m a d e m alla
p a ra I *se p u e d e e x tr a p o la r d e la figura 10.60 si se re c u e rd a q u e p < v se c u m p le si.
706 OPTIM ACIO N DE CO DIG O

y sólo si, p ( a ) ^ v ( a ) p a r a to d a a ; es d ecir, si los vecto res q u e re p re s e n ta n p y v


tie n e n a to d o s los c o m p o n e n te s re la c io n a d o s p o r y la relació n está en la m is m a
d ire c c ió n e n c a d a c o m p o n e n te .
P o r ta n to , d e c ir q u e p ^ v es d e c ir q u e . s ie m p re q u e p ( a ) sea u n a c o n s ta n te c,
v (a ) es e s a c o n s ta n te o es in d e f y s ie m p re q u e p ( a ) sea in d e f ta m b ié n lo será v(a).
U n e x a m e n d e ta lla d o d e las d is tin ta s f u n c i o n e s / a s o c i a d a s c o n los d is tin to s tip o s de
p ro p o s ic io n e s d e d e fin ic ió n p e rm ite c o m p r o b a r q u e si p < v, e n t o n c e s / ( p ) < / ( v ) ,
d e m o s tr a n d o así q u e c u m p le (1 0 .1 5 ) y m o s tr a n d o m o n o to n ic id a d . P o r e je m p lo , s i /
está a s o c ia d a c o n la a s ig n a c ió n a : = b + c , só lo p ( a ) y v (a ) c a m b ia n , d e m o d o q u e
h a y q u e c o m p r o b a r q u e si p ^ v (e s d e c ir . p ( x ) < v (x ), p a r a t o d a x ) . e n t o n c e s
[ / (p )](a ) ^ [ / ( v ) ] ( a ) 14. Se d e b e n c o n s id e r a r to d o s los posibles v a lo re s d e p (b ), p ( c ) ,
v(b) y v (c ). su je to s a las lim ita c io n e s q u e p ( b ) < v(b) y p ( c ) < v(c). P o r e je m p lo , si

p (b ) = noconst
v(b) = 2
P (c) = 3
v (c ) = in d e f
e n to n c e s [ A p ) l ( a ) = noconst y [ / (v )](a ) = in d e f C o m o noconst £ in d e f se ha he­
c h o la c o m p r o b a c ió n e n un caso. L o s o tr o s casos se d e ja n c o m o e jercicio al lector.

indef

F ig . 1 0 .6 0 . D i a g r a m a d e r e t í c u l o p a r a v a l o r e s d e v a r ia b le s .

A h o r a se d e b e c o m p r o b a r q u e el m a r c o p a ra el c á lc u lo d e c o n s ta n te s n o es d is ­
trib u tiv o . P a ra esta p arte , s e a / l a f u n c ió n a so c ia d a c o n la asig n ac ió n a : = b + c , y sea
p ( b ) = 2. p ( c ) = 3. v (b ) = 3 y v (c ) = 2. S e a p = p A v. E n to n c e s p ( b ) A v (b ) =
= 2 A 3 = noconst. D e m a n e r a s im ila r. p ( c ) A v ( c ) = noconst. D e f o r m a e q u i v a ­
lente, p (b ) = p (c ) = noconst. Se d e d u c e q u e [ / (p )](a ) = noconst , p u e s to q u e se p re ­
s u m e q u e la s u m a d e d o s v alo res n o c o n s ta n te s es n o c o n sta n te .
P o r o tr a p a re , [ / ( p ) l ( a ) = 5. ya q u e d a d o q u e b = 2 y c = 3. la asig n ació n
a : = b + c iguala a a 5. D e m a n e r a s im ila r, L /(v ))(a) = 5. Así. [ / ( n W ( v )](a ) = 5.
S e o b serv a a h o r a q u e p ( a ) [ / ( p A v )](a) * L / ( p ) A / ( v ) ] ( a ) . d e m o d o q u e se in c u m p le
la c o n d ic ió n d e d istrib u tiv id a d .
In tu itiv a m e n te , la razón p o r la q u e se in c u m p le la d istrib u tiv id a d es q u e el m a rc o
p a r a el c á lc u lo d e c o n s ta n te s n o es lo b a s ta n te p o d e ro so c o m o p a ra re c o rd a r to d o s
los in v a rian tes, e n c o n c re to , el h e c h o d e q u e a lo largo d e los c a m in o s c u y o s efectos

!1 S e d e b e ten er c u id a d o al leer u n a e x p r e sió n c o m o [ /( p ) f t a ) . D ic e , se a p lic a / a p para o b te n e r u n a


c o r r e s p o n d e n c ia /( p ) , q u e se llam ará p'. D e sp u é s s e a p lic a p ' a (a ), y el resu lta d o e s u n o d e lo s va­
lo res e n e l d ia g ra m a d e la figura 10.60.
10.11 UNA H E R R A M IE N T A PARA EL A N A L IS IS DEL FL U JO DE DATOS 707

sobre las variables son descritos por p o v, se cum p le la ecuación b + c = 5, aunque


ni b n i c sean por s í m ism as constantes. Se podrían diseñar m arcos m ás co m p lica­
dos para evitar este problem a, aunque no está claro que suponga un a ventaja. Por
fortuna, la m o n o to n icid ad es adecuada para que “ trabaje1' el algoritm o de flu jo de
datos iterativo , com o se verá a co n tin u a ció n . □

Soluciones de re u n ió n s o b re c a m in o s a p ro b le m a s de flu jo de datos

Im agínese que un grafo de flu jo tiene asociado con cada un o de sus nodos una fu n ­
ción de transferencia, un a de las funciones del co n ju n to F. Para cada bloque B, sea
í¡, la fu n ció n de transferencia para B.
Considérese cu a lq u ie r cam in o P = B 0 - » B l 9. . . , —> B k desde el nodo in ic ia l Bo
a un bloque B k. Se puede d e fin ir la fu n c ió n d e transferencia p a ra P co m o la co m ­
posición d e / * , / , , , . . . O bsérvese q u e /* A no es parte de la com posición, refle­
jando el punto de vista de qu e este cam in o se tom a para alcan zar el com ienzo del
bloque B k, no su final.
Se ha supuesto que los valores dentro de V representan in fo rm ació n sobre los
datos utilizad o s p o r el program a, y que el operador de co n flu en cia A in d ica cóm o
se com bina esta in fo rm ació n cuan d o convergen los cam inos. T am b ié n tiene sentido
ver el elem ento tope com o que no representa ‘‘ ninguna in fo rm a ció n ” , puesto que
un ca m in o que lle ve el elem ento tope co n d u ce a c u a lq u ie r o tro ca m in o , en lo
que se refiere a la in fo rm ació n que es llevada después de la co n flu en cia de operacio­
nes. Por tanto, si B es un bloque en el grafo de flujo , la in fo rm ació n que entre a B
debe ser calculab le considerando todo cam in o posible desde el nodo in ic ia l a B y
viendo lo qu e sucede a lo largo de esc cam in o , com enzando sin in fo rm ació n . Es de­
cir, para cada cam in o P desde Bo a B, se c a lc u la //> (T ) y se tom a la reunió n de todos
los elem entos resultantes.
En p rin cip io , esta reu n ió n podría ser sobre un núm ero in fin ito de valores d istin ­
tos, puesto qu e hay un núm ero in fin ito de cam in o s diferentes. E n la práctica, a m e­
nudo resulta adecuado co n sid erar sólo cam in o s acíclico s, y au n q ue no lo sea, com o
en el caso del m arco para el cá lcu lo de constantes anteriorm ente an alizado, general­
mente hay otras razones para hacer que esta reu n ió n in fin ita sea fin ita para c u a l­
quier grafo de flu jo determ inado.
Form alm ente, se define la solución d e reunión sobre c a m in o s para un grafo de
flujo com o

rsc (B )= A f P ( T)
cam in o s r
e n t r e li„ a D

La so lució n de rsc a un grafo de flu jo tiene sentido cuan d o se com prende que, en lo
que se refiere a la in fo rm ació n que alcanza el bloque B , el grafo de flu jo tam bién
puede ser el propuesto en la figura 10.61, donde a la fu n ció n de transferencia aso­
ciada con cada uno de (u n núm ero posiblem ente in fin ito ) los cam in o s P¡, P 2> ,
en el grafo de flu jo o rig in a l se le ha dado un cam ino com pletam ente independiente
hacia B. E n la figura 10.61, la in fo rm ació n que alcanza B viene dada p o r la reunió n
sobre todos los cam inos.
708 O P T IM A C IO N DE C O D IG O

S o lu c io n e s c o n s e r v a d o r a s a lo s p r o b l e m a s d e flu jo

C u a n d o se i n t e n t a n re s o lv e r la s e c u a c io n e s d e flu jo s d e d a to s q u e se o b tie n e n d e u n
m a r c o a r b i t r a r i o , s e p u e d e o n o s e r c a p a z d e c o n s e g u i r f á c i l m e n t e l a s o l u c i ó n d e rsc.
P o r f o r t u n a , c o m o e n lo s e j e m p l o s c o n c r e t o s d e m a r c o s d e f l u j o d e d a t o s d e la s s e c ­
c i o n e s 1 0 .5 y 1 0 .6 , h a y u n a d i r e c c i ó n s e g u r a e n l a c u a l s e p u e d e f a l l a r y el a l g o r i t m o
d e flu jo d e d a t o s ite r a tiv o e s tu d ia d o e n e sa s s e c c io n e s s ie m p r e p r o p o r c io n a u n a so ­
l u c i ó n s e g u r a . S e d i c e q u e u n a s o l u c i ó n e n t [ B ] e s u n a s o lu c ió n s e g u r a si e n t[ B \ <.
< r s c ( B ) p a r a t o d o s lo s b l o q u e s B.

Bo

F ig . 1 0 .6 1 . G r a f o q u e m u e s t r a el c o n j u n t o d e t o d o s lo s p o s i b l e s c a m i n o s a B.

A p e s a r d e lo q u e el le c to r p u e d a im a g in a r , e s ta d e f in ic ió n n o h a s id o “ s a c a d a d e
la m a n g a " . R e c u é r d e s e q u e e n c u a l q u i e r g r a f o d e f l u j o , e l c o n j u n t o d e c a m i n o s a p a ­
r e n te s a u n n o d o ( a q u e l l o s q u e s o n c a m i n o s e n e l g r a f o d e f l u j o ) p u e d e n s e r u n s u b ­
c o n j u n t o p r o p i o d e l o s c a m i n o s r e a le s, a q u e l l o s q u e s e t o m a n e n a l g u n a e j e c u c i ó n
d e l p r o g r a m a c o r r e s p o n d ie n t e a d i c h o g r a f o d e flu jo . P a r a q u e e l r e s u lta d o d e l a n á ­
lisis d e f lu jo d e d a t o s s e a u t i l i z a b l e c u a l q u i e r p r o p ó s i t o , lo s d a t o s d e b e n s e g u i r s i e n d o
f i a b l e s si s e m o d i f i c a e l g r a f o d e f l u j o e l i m i n a n d o a l g u n o s c a m i n o s , p u e s t o q u e e n
g e n e r a l n o s e p u e d e n d i s t i n g u i r lo s c a m i n o s r e a l e s d e lo s a p a r e n t e s q u e n o s o n re a le s.
S u p ó n g a s e q u e e n t r e e l c o n j u n t o i n f i n i t o d e c a m i n o s p r o p u e s t o e n la f i g u r a 1 0 .6 1 ,
x e s la r e u n i ó n d e f P(T) t o m a d a d e e n t r e t o d o s l o s c a m i n o s r e a l e s P q u e s o n s e g u i d o s
e n a l g u n a e j e c u c i ó n . A s i m i s m o , s e a y y l a r e u n i ó n d e f P( T ) s o b r e t o d o s lo s o t r o s c a ­
m i n o s P. P o r t a n t o , r s c ( B) e s x A y . E n t o n c e s , la r e s p u e s t a c i e r t a a l p r o b l e m a d e flu jo
d e d a t o s e n e l n o d o B e s x , p e r o l a s o l u c i ó n d e rsc e s x A y . R e c u é r d e s e q u e x a y < y ,
p u e s t o q u e ( x A y ) A y = x A y . A s í, l a s o l u c i ó n d e r s c e s <. l a s o l u c i ó n v e r d a d e r a .
A u n q u e s e p r e f i e r e la s o l u c i ó n “ v e r d a d e r a " a l p r o b l e m a d e f l u j o d e d a t o s , c a s i
c o n s e g u rid a d n o h a b r á u n a f o r m a e fic ie n te d e s a b e r e x a c ta m e n te la s p a r te s q u e so n
r e a l e s y l a s q u e n o , a s í q u e h a y q u e a c e p t a r la s o l u c i ó n d e r s c c o m o la m e j o r s o l u ­
c i ó n f a c t i b l e . P o r t a n t o , c u a l q u i e r u s o q u e s e h a g a d e la i n f o r m a c i ó n s o b r e e l f l u j o
d e d a t o s d e b e r á s e r c o n s i s t e n t e c o n l a p o s i b i l i d a d d e q u e la s o l u c i ó n q u e s e o b t e n g a
sea ^ la s o lu c ió n v e rd a d e ra .
U n a v e z a c e p ta d o e s to , ta m b ié n se d e b e ría p o d e r a c e p ta r u n a s o lu c ió n q u e sea
< la s o l u c i ó n d e r s c ( y p o r t a n t o < la s o lu c ió n v e rd a d e ra ). D ic h a s s o lu c io n e s s o n
m á s f á c i le s d e o b t e n e r q u e la s o l u c i ó n d e r s c p a r a a q u e l l o s m a r c o s q u e s e a n m o n ó ­
t o n o s p e r o n o d i s t r i b u t i v o s . P a r a m a r c o s d i s t r i b u t i v o s , c o m o l o s d e l a s e c c i ó n 1 0 .6 ,
e l a l g o r i t m o i t e r a t i v o s i m p l e c a l c u l a l a s o l u c i ó n d e rsc.
10.11 UNA H E R R A M IE N T A PARA EL A N A L IS IS DEL FLU JO DE DATOS 709

VA a l g o r i t m o i t e r a t i v o p a r a m a r c o s g e n e r a l e s

I l a y u n a g e n e r a l i z a c i ó n o b v i a a l a l g o r i t m o 1 0 .2 q u e s i r v e p a r a u n a g r a n v a r i e d a d d e
m a r c o s . E l a l g o r i t m o i t e r a t i v o e x i g e q u e e l m a r c o s e a m o n ó t o n o , y t i e n e q u e s e r fi­
n ito , e n el s e n ti d o q u e la r e u n i ó n s o b r e el c o n j u n t o in f in ito d e c a m i n o s s u g e r id o e n
la f i g u r a 1 0 .6 1 e s e q u i v a l e n t e a u n a r e u n i ó n s o b r e u n s u b c o n j u n t o f i n i t o . S e d a r á el
a lg o ritm o y d e s p u é s se a n a liz a r á n la s f o r m a s d e g a r a n tiz a r q u e f u e r a fin ito . S in e m ­
b a rg o , u n a g a r a n tía h a b itu a l p a r a q u e se a fin ito e s la q u e se h a te n id o to d o el tie m p o :
b a s ta c o n la p r o p a g a c ió n a lo la rg o d e c a m i n o s a c íc lic o s.

A lg o ritm o 1 0 .1 8 . S o lu c ió n ite ra tiv a a m a r c o s g e n e ra le s d e flu jo d e d a to s .

E n tr a d a . U n g r a f o d e f l u j o d e d a t o s , u n c o n j u n t o d e “ v a l o r e s " V, u n c o n j u n t o d e
fu n c io n e s F , u n a o p e ra c ió n d e re u n ió n A , y u n a a s ig n a c ió n d e u n m ie m b ro d e F a
c a d a n o d o d e l g r a f o d e flu jo .

S a lid a . U n v a l o r e n t [B] e n V p a r a c a d a n o d o d e l g r a f o d e f l u j o .

M é to d o . S e d a e l a l g o r i t m o e n l a f i g u r a 1 0 . 6 2 . A l i g u a l q u e l o s a l g o r i t m o s d e f l u j o
d e d a to s ite ra tiv o s, se c a lc u la en t y s a l p a r a c a d a n o d o m e d ia n te a p r o x im a c io n e s s u ­
c e s i v a s . S e s u p o n e q u e f n e s la f u n c i ó n e n F a s o c i a d a c o n e l b l o q u e B \ e s a f u n c i ó n
d e s e m p e ñ a e l p a p e l d e g e n y d e s a c t d e l a s e c c i ó n 1 0 .6 . □

(1 ) for c a d a n o d o B d o / * i n i c i a l i z a c i ó n , s u p o n i e n d o q u e e n t [/?] = T */
(2 ) s a l [ B \ : = f 0 [T ] ;
(3 ) w h i l e o c u r r a n c a m b i o s a c u a l q u i e r s a l do
(4 ) f o r c a d a b l o q u e B , e n o r d e n e n p r o f u n d i d a d d o begin
(5 ) sal[B \:= A sal[F];
p re d e c e so re s
P de n

/* a n t e s , la r e u n i ó n d e u n c o n j u n t o v a c í o e s T * /
(6 ) s a l [B] : = f n (e n t [B])
end

F i g . 1 0 .6 2 . A lg o r itm o ite ra tiv o p a r a m a rc o s g en e rales.

U n a h e rra m ie n ta para el a n á lisis de flu jo de datos

A h o r a se p u e d e v e r c ó m o se p u e d e n a p l i c a r la s id e a s d e e s ta s e c c ió n a u n a h e r r a ­
m i e n t a p a r a el a n á lis is d e flu jo d e d a t o s . El a l g o r i t m o 1 0 .1 8 d e p e n d e p a r a s u f u n c i o ­
n a m ie n to d e la s s ig u ie n te s s u b r u tin a s :

1. U n a r u t i n a p a r a a p l i c a r u n a d e t e r m i n a d a f B e n F a u n d e t e r m i n a d o v a l o r e n V.
E s t a r u t i n a s e u t i l i z a e n l a s l í n e a s ( 2 ) y ( 6 ) d e la f i g u r a 1 0 .6 2 .

2. U n a r u t i n a p a r a a p l i c a r e l o p e r a d o r d e r e u n i ó n a d o s v a l o r e s e n V; e s t a r u t i n a
se n e c e s ita c e r o o m á s v e c e s e n la lí n e a (5 ).

3. U n a r u t i n a p a r a s a b e r si d o s v a l o r e s s o n i g u a l e s o n o . E s t a p r u e b a n o s e r e a l i z a
d e m a n e r a e x p líc ita e n la fig u ra 1 0 .6 2 , p e r o e s tá i m p l í c i t a e n la c o m p r o b a c i ó n
d e si h a h a b i d o u n c a m b i o e n c u a l q u i e r a d e l o s v a l o r s e d e sa l.
710 O P T IM A C IO N DF. C O D IG O

T a m b ié n hay q u e esp ecificar d e c la ra c io n e s de tip o s d e d a to s p a r a F y V p a r a p o ­


d e r p asar a r g u m e n to s a las r u tin a s a n te s m e n c io n a d a s . L os v alo res d e ent y sa l d e la
figura 10.62 ta m b ié n s o n del tip o d e c la r a d o p a r a V. P o r ú ltim o , se n e c e sita u n a r u ­
t i n a q u e to m e la re p re s e n ta c ió n o r d in a r ia del c o n te n id o d e u n b lo q u e básico, es d e ­
cir. u n a lista d e p ro p o sic io n e s, y p r o d u z c a u n e le m e n to d e F, la f u n c ió n d e tra n sfe ­
re n c ia p a r a ese blo q ue.

E je m p lo 10.48. P a r a el m a r c o p a r a las d e fin ic io n e s d e a lc a n c e , p r im e r o se p u e d e


c o n s tr u ir u n a ta b la q u e id e n tific a ra c a d a p ro p o sic ió n del g rafo d e fiujo d a d o c o n un
e n te r o ú n ic o d e sd e i n a s ta u n m á x im o m . D esp u és, el tip o d e V p o d ría ser v ecto res
d e b its d e lo n g itu d m . F p o d r ía re p re s e n ta rs e p o r m e d io d e p ares d e v ecto res d e bits
d e ese ta m a ñ o , es d ecir, p o r m e d io d e los c o n j u n to s gen y desact. L a r u tin a p a r a
c o n s tr u ir los v e c to re s d e b its gen y desact , d a d a s las p ro p o s ic io n e s d e u n b lo q u e y la
ta b la q u e aso cia las p ro p o s ic io n e s d e d e fin ic ió n c o n p o sicio n es e n los v e c to re s d e
bits, es d ire c ta , c o m o lo s o n las r u tin a s p a r a c a lc u la r las r e u n io n e s (o p e ra c ió n o ló­
gica d e v ecto res d e bits), c o m p a r a r v ecto res d e b its e n té rm in o s d e ig u a ld a d y a p lic a r
fu n c io n e s d e fin id a s p o r u n p a r gen-desael a v e c to re s d e bits.

L a h e r r a m ie n ta p a r a el a n álisis de flu jo d e d a to s es p o r ta n to p o c o m á s q u e u n a
im p la n ta c ió n d e la fig u ra 10.62 c o n lla m a d a s a las s u b r u tin a s d a d a s s ie m p re q u e se
n ecesite u n a r e u n ió n , la a p lic a c ió n d e u n a f u n c ió n o u n a c o m p a r a c ió n . L a h e r r a ­
m ie n ta a p o y a r á u n a re p re s e n ta c ió n fija d e g rafo s d e flujo, y p o r t a n t o te n d r á q u e
rea liz a r fu n c io n e s c o m o e n c o n t r a r to d o s lo s p re d e c e so re s d e u n n o d o o el o r d e n a ­
m ie n to e n p ro f u n d id a d del g rafo d e flujo, y a p lic a r a c a d a b lo q u e la r u tin a q u e cal­
c u la la f u n c ió n e n F a s o c ia d a c o n e s e b lo q u e . L a v e n ta ja d e u tiliz a r d ic h a h e r r a ­
m i e n t a es q u e los a s p e c to s d e m a n i p u l a c i ó n d e g r a f o s y c o m p r o b a c i o n e s d e
co n v erg en cia del a lg o ritm o 10.18 n o tien en q u e reescribirse p a ra c a d a análisis d e flujo
d e d a to s q u e se realice.

P ro p ie d a d e s d e l a lg o ritm o 10.18

S e d e b e n a c l a r a r lo s s u p u e s to s b a j o lo s q u e f u n c i o n a el a lg o r i tm o 1 0 .1 8 y e x a c ­
t a m e n t e a q u é c o n v e r g e el a l g o r i t m o c u a n d o c o n v e rg e . P r im e r o , si el m a r c o es
m o n ó t o n o y c o n v e r g e , e n t o n c e s se a f i r m a q u e el r e s u lt a d o d e l a l g o r i t m o es q u e
ent [fl] ^ rsc(B) p a r a to d o s los b lo q u e s B. L a ra z ó n in tu itiv a es q u e a lo largo d e
c u a lq u ie r c a m in o P = B0, B Bk d e sd e el n o d o inicial a B = Bk%se p u e d e d e ­
m o s tr a r p o r in d u c c ió n so b re / q u e el efecto d e l c a m i n o d e s d e B0 h a s ta B, se percibe
d e s p u é s d e a lo s u m o i ite ra c io n e s del lazo w hile d e la figura 10.62. Es d ecir, si P, es
el c a m in o B{)____ B„ e n to n c e s d e s p u é s d e i iteracio n e s, ent [B] < f Pi( T). P o r ta n to ,
c u a n d o , y si. el a lg o ritm o c o n v erg e, e n t [B] será <>fp{T) p a r a t o d o c a m in o P desde
B0 a B. U tiliz a n d o la regla q u e si x £ y y x £ z, e n to n c e s x ^ v A z 15, se p u e d e
d e m o s t r a r q u e ent [¿?] ^ rsc(B).

15 E x i s t e l a e x i g e n c i a t é c n i c a d e q u e s e d e b e m o s t r a r e n p r i n c i p i o e s t a r e g la n o s ó l o p a r a l o s v a l o r e s .
y y z ( d e d o n d e s e d e r i v a l a r e g l a d e q u e si x ^ v, p a r a c u a l q u i e r c o n j u n t o f i n i t o d e y, e n t o n c e s
x £ A ,y,) s i n o q u e l a m i s m a r e g la s e c u m p l e p a r a u n n ú m e r o i n f i n i t o d e y,. S i n e m b a r g o , e n l a p r á c ­
t i c a . s i e m p r e q u e s e o b t e n g a c o n v e r g e n c i a d e l a l g o r i t m o 10 . 18 , s e e n c o n t r a r á u n n ú m e r o f i n i t o d e
c a m i n o s ta l q u e l a r e u n i ó n s o b r e t o d o s l o s c a m i n o s s e a i g u a l a la r e u n i ó n s o b r e e s t e c o n j u n t o f in i t o .
10.11 UNA H E R R A M IE N T A PARA EL A N A L IS IS DEL FL U JO DE DATOS 711

C u an d o el m arco es d istrib u tivo , se puede dem ostrar que el algoritm o 10.18 de


hecho converge a la so lu ció n rsc. L a idea fundam ental es dem ostrar que en todo
m om ento durante la ejecució n del algoritm o, ent [B] y sa l [B] son iguales a la reu­
nión de T ) para un co n ju n to de cam in o s P a l co m ienzo y fin al de /?, respectiva­
mente. S in em bargo, en el siguiente ejem plo se dem uestra que éste no tiene p o r qué
ser el caso cuan d o el m arco sea m onótono, pero no d istrib utivo .

E je m p lo 1 0 .4 9 . Se explotará el ejem plo de la no d istrib u tivid a d del m arco para el


cálculo de constantes que se estudió en el ejem plo 10.47; el grafo de flu jo relevante
se m uestra en la figura 10.63. Las correspondencias p y v que salen de B 2 y B 4 son
las del ejem p lo 10.47. L a co rresp o n d en cia p, que entra a # 5, es p A v, y 5 es la co ­
rrespondencia que sale de B $, asignándole n oconst a a, au n q ue cada ca m in o real
(y cada cam in o aparente), calcu le a = 5 después de f i5.

a (a ) = noconst

F ig . 1 0 .6 3 . Ejem plo de una solución m enor que la solución de .rd c .

E l problem a, intuitivam ente, es que el algoritm o 10.18, trabajando con un m arco


no d istrib u tivo , se co m po rta com o si algunas secuencias de nodos qu e ni siquiera
son cam inos aparentes (cam in o s en grafo de flu jo ), fueran cam in o s reales. P o r tanto,
en la fig u ra 10.6 3, el a lg o ritm o se co m p o rta co m o si ca m in o s co m o B 0 -> B { - »
- » B a - » B 5 o /?o —> B$ —> B 2 —> B$ fueran cam inos reales, co lo can d o a b y c una
co m b in ació n de valores que no sum an 5. □

C o n v e rg e n c ia d el a lg o ritm o 1 0 .18

H ay va ria s fo rm as de dem ostrar que el alg o ritm o 1 0 . 1 8 converge para un m arco


particular. Probablem ente el caso m ás co m ún es cuan d o sólo se necesitan cam inos
acíclicos, es decir, se puede dem ostrar que la reunió n sobre cam in o s a cíclico s es la
m ism a que la so lu ció n de rsc, sobre todos los cam inos. Si es ése el caso, no sólo co n ­
verge el algoritm o, y norm alm ente lo hará m uy rápidam ente, en dos pasadas más
que la p ro fun d idad del grafo de flu jo , co m o se an alizó en la sección 10.10.
Por otra parte, los m arcos com o el del ejem plo de cá lcu lo de constantes exigen
que se consideren m ás elem entos adem ás de los cam inos acíclico s. Por ejem plo, en
712 O PTIM A CIO N D E CODIGO

la fig u ra 10.64 se m u e s tr a u n sen cillo g rafo d e flujo d o n d e h a y q u e c o n s id e r a r el


c a m in o B { -+ B 2 B2 -* By p a r a d a rs e c u e n t a d e q u e x n o tie n e u n v a lo r c o n s ta n te
al e n t r a r a By.
S in e m b a r g o , p a r a cá lc u lo s c o n s ta n te s se p u e d e r a z o n a r q u e el a lg o ritm o 10.18
c o n v e rg e d e la sig u ie n te fo rm a . P r im e ro , es fácil d e m o s t r a r p a r a u n m a r c o m o n ó ­
t o n o a r b itr a r io q u e ent [B] y sa l [fi], p a r a c u a lq u ie r b lo q u e B , f o r m a n u n a secu en cia
n o c re c ie n te , e n el s e n tid o d e q u e el n u e v o v a lo r p a r a u n a d e e sa s v aria b les e s s ie m ­
p r e ^ el v alo r a n te rio r. Si se re c u e rd a la figura 10.60, el d ia g ra m a d e re tíc u lo p a ra
los v a lo re s d e las c o r r e s p o n d e n c ia s a p lic a d a s a variables, se ve q u e p a r a c u a lq u ie r
v a ria b le , el v a lo r d e ent [fi] o sal [fi] sólo p u e d e d is m i n u ir d o s veces, u n a d e in d e f a
u n a c o n s ta n te y u n a d e e s a c o n s ta n te a noconst.

Fig. 10.64. Grafo de flujo que exige que un camino cíclico se incluya en rsc.

S u p ó n g a s e q u e h a y n n o d o s y v v ariab les. E n to n c e s e n c a d a iteració n del lazo


w hile d e la fig u ra 10.62. al m e n o s u n a v a ria b le d e b e d is m i n u ir su v alo r e n algún
sa l [B] o el a lg o ritm o c o n v erg e, y ni s iq u ie ra u n a ite ra c ió n in f in ita del la z o w hile
m o d ific a rá los v alo res e n los e n t y los sal. P o r t a n t o , el n ú m e r o d e ite ra c io n e s se
lim ita a 2nv\ si ese n ú m e r o d e m o d ific a c io n e s o c u rre , e n to n c e s c a d a v a ria b le d ebe
h a b e r a lc a n z a d o noconst e n c a d a b lo q u e del g rafo d e flujo.

A ju s te d e la ¡m etalización

E n a lg u n o s p ro b le m a s d e flu jo d e d a to s , h a y u n a d is c re p a n c ia e n tre lo q u e el algo­


ritm o 10.18 d a c o m o so lu ció n y lo q u e in tu itiv a m e n te se desea. R ecu érd ese q u e p a ra
las e x p re s io n e s d isp o n ib les. A es la in tersecció n , así q u e T d e b e s e r el c o n j u n t o d e
to d a s las ex p resio n es. Y a q u e el a lg o ritm o 10.18 in ic ia lm e n te a s u m e q u e ent [B] es
T p a r a c a d a b lo q u e B. in c lu id o el n o d o in icial, la so lu c ió n d e rsc p r o d u c id a p o r el
a lg o ritm o 10.18 e s re a lm e n te el c o n j u n t o d e e x p re sio n e s q u e , s u p o n ie n d o q u e estén
d is p o n ib le s en el n o d o in icial ( q u e n o lo e s tá n ), e s ta ría n d is p o n ib le s a la e n t r a d a al
b lo q u e B.
L a d iferen c ia, p o r s u p u e sto , es q u e p o d r ía h a b e r c a m in o s d e sd e el n o d o inicial a
B a lo la rg o del c u a l ni se g e n e ra ni se d e s a c tiv a u n a e x p re s ió n x + y . El a lg o ritm o
10.18 in d ic a ría q u e x + y está d is p o n ib le , c u a n d o d e h e c h o n o lo e stá , p o r q u e n o se
p u e d e e n c o n t r a r n in g u n a v a ria b le a lo la rg o d e ese c a m i n o q u e c o n te n g a su valor.
El a ju ste es sencillo. Se p u e d e m o d if ic a r el a lg o ritm o 10.18 d e m o d o q u e p a r a el
m a r c o d e e x p re sio n e s d is p o n ib le s, ent [fio] se asig n e y se iguale al c o n j u n t o vacío, o
se p u e d e m o d ific a r el g rafo d e flu jo in tr o d u c ie n d o u n n o d o inicial ficticio, u n p re ­
d e c e s o r d e l n o d o in icial real, q u e d e sa c tiv e to d a s las ex p resio n es.
10.12 E ST IM A C IO N D E TIPOS 713

10.12 E S T I M A C I O N D E T I P O S

A h o ra se a b o r d a u n p r o b le m a d e flujo d e d a to s m á s c o m p le jo q u e los m a rc o s d e la
secció n a n te rio r. A lg u n o s lenguajes, d e s d e A P L a S E T L h a s ta los d iv e rs o s d ia lecto s
d e LISP. n o exigen q u e se d e c la re n los tip o s d e las variables, y h a s ta p e r m ite n q u e
la m is m a v a ria b le c o n te n g a v alo res d e d is tin to s tip o s e n d ife re n te s m o m e n to s . I n ­
te n to s serio s d e c o m p ila r d ic h o s le n g u a je s p a r a p r o d u c ir c ó d ig o eficien te h a n utili­
z a d o a n álisis d e flu jo d e d a to s p a r a in fe rir los tip o s d e las variables, ya q u e el c ó d ig o
p a ra , p o r e je m p lo , s u m a r d o s e n te ro s, es m u c h o m á s e fic ien te q u e u n a lla m a d a a
u n a r u ti n a g en eral q u e p u e d a s u m a r d o s o b je to s d e u n a v a rie d a d d e tip o s ( p o r e je m ­
plo , e n te ro s, reales, vectores).
L a p r im e ra idea e s q u e c a lc u la r tip o s d e v aria b les e s c o m o c a lc u la r las d efin icio ­
n e s d e alcan ce. S e p u e d e a s o c ia r u n c o n j u n t o d e tip o s p o sibles c o n c a d a v a ria b le en
c a d a p u n to . El o p e r a d o r d e c o n f lu e n c ia es la u n ió n d e c o n j u n to s d e tip o s, y a q u e si
la v a ria b le x tien e el c o n j u n t o S \ d e p o sib les tip o s e n u n c a m i n o y el c o n j u n t o S 2 en
o tro , e n to n c e s x tie n e c u a lq u ie r a d e los tip o s e n S i u S 2 d e s p u é s d e la c o n flu e n c ia
d e c a m in o s . A m e d id a q u e el c o n tro l p a sa a tra v é s d e u n a p ro p o s ic ió n , se p u e d e n
h a c e r a lg u n a s in fe re n c ia s rela tiv as a los tip o s d e las v aria b les b a s á n d o s e e n los o p e ­
r a d o re s q u e a p a r e z c a n e n la p ro p o s ic ió n , los tip o s p o sib le s d e s u s o p e r a n d o s y los
tip o s q u e p r o d u z c a n c o m o resu ltad o s. El e je m p lo 6 .6 , re la tiv o a u n o p e r a d o r q u e
p o d ía m u ltip lic a r e n te ro s y n ú m e r o s c o m p le jo s , e r a u n e je m p lo d e este tip o d e in ­
ferencia.
D e s g ra c ia d a m e n te , h a y al m e n o s d o s p r o b le m a s c o n este en fo q u e.

1. El c o n j u n t o d e tip o s p o sib le s p a r a u n a v a ria b le p u e d e s e r in fin ito .

2. L a d e te r m in a c ió n d e tip o s exige g e n e r a lm e n te p ro p a g a c ió n d e la in fo rm a c ió n
h acia a d e la n te y h acia a tr á s p a r a o b te n e r e s tim a c io n e s p recisas d e los tip o s p o ­
sibles. P o r ta n to , ni s iq u ie ra el m a r c o d e la sección 10.11 es lo b a s ta n te general
c o m o p a r a ju z g a r el p ro b le m a .

A n te s d e c o n s id e r a r el p u n t o 1, se e x a m i n a r á n a lg u n o s d e los tip o s d e in fe re n c ia s
so b re tip o s q u e se p u e d e n h a c e r e n le n g u a je s fam iliares.

E jem p lo 10.50. C o n s id é re n s e las p ro p o s ic io n e s

i := a [ j ]
k := a [ i ]

S u p ó n g ase q u e al p rin cip io n o se sabe n a d a so b re los tip o s d e las variables a , i , j y k.


S in e m b a r g o , s u p ó n g a s e q u e el o p e r a d o r d e a c c e s o a m a tr ic e s [ ] e x ig e u n a r g u ­
m e n t o e n te ro . Si se e x a m in a la p r im e r a p ro p o s ic ió n se p u e d e in fe rir q u e j es u n
e n t e r o e n ese p u n t o , y q u e a es u n a m a tr iz d e e le m e n to s d e a lg ú n tip o . E n to n c e s , la
s e g u n d a p ro p o s ic ió n in d ic a q u e i es u n e n tero .
A h o ra se p u e d e n p ro p a g a r las in fe re n c ia s h a c ia a trá s. Si se c a lc u ló i c o m o u n
e n te r o en la p r im e r a p ro p o s ic ió n , e n to n c e s el tip o d e la e x p re sió n a [ i ] d e b e s e r e n ­
te ro , lo c u a l sign ifica q u e a d e b e ser u n a m a triz d e e n te ro s. D e s p u é s se p u e d e seguir
r a z o n a n d o h acia a d e la n te p a r a d e s c u b r ir q u e el v a lo r a s ig n a d o a k p o r la seg u n d a
714 O PT IM A C IO N DE C O D IG O

proposición tam bién debe ser un entero. Obsérvese que es im posible descubrir que
los elementos de a son enteros razonando sólo hacia adelante o sólo hacia atrás. □

C o n ju n to s d e tip o s infinitos

H ay num erosos ejem plos de casos patológicos donde el conjunto de tipos posibles
para una variable es en realidad in fin ito . Por ejem plo, S E T L perm ite que una pro­
posición como

x := { x }

se ejecute dentro de un lazo. Si se com ienza sabiendo sólo que x podría ser un en­
tero, entonces después de considerar una iteración del lazo se descubre que x podría
ser un entero o un conjunto de enteros. Después de considerar una segunda itera­
ció n , se ve que x podría ser tam bién un conjunto de conjuntos de enteros, y así su­
cesivamente.
U n problem a sim ila r podría o c u rrir en una versión sin tipos de un lenguaje con­
vencional com o C , donde la proposición
x = &x

con la posibilidad in icial de que x sea un entero conduce al descubrim iento de que
x puede tener cualqu ier tipo de la form a
apuntador a apuntador a . . . apuntador a entero
La form a tradicional de solucionar dichos problem as es red ucir el conjunto de
tipos posibles a un núm ero finito. La idea general consiste en agrupar el núm ero
in fin ito de tipos posibles en un núm ero fin ito de clases, dejando generalmente solos
a los tipos más sim ples, y agrupando en clases más grandes los más com plicados,
que se espera sean los más escasos. Los siguientes ejem plos sugieren lo que se puede
hacer.

E jem p lo 10.51. Se sigue con el ejem plo del capítulo 6, donde se u tilizó el operador
com o un constructor de tipos para funciones. A quí, el co n ju n to de tipos in clu irá
el tipo básico ent, y todos los tipos de la form a x -> a , que representan el tipo de una
función con d o m inio tipo x y rango tipo o , donde x y o son tipos del conjunto. Por
tanto, el conjunto de tipos es in fin ito , in clu id o s tipos com o
(ent -> ent) - » ((ent -> ent) -> ent)

Para reducir este conjunto a un núm ero finito de clases, una expresión de tipos se
lim itará a tener un constructor de tipos de función sustituyendo las subexpresio­
nes en una expresión de tipos que contengan al menos una ocurrencia de —> por el
nom bre fu n c. Por tanto, hay cin co tipos distintos:
ent
ent —» ent
ent —> fu n c
fu n c ent
fu n c Jim c
1 0.1 2 E ST IM A C IO N D E TIPOS 715

L o s c o n ju n to s d e tip o s se re p re s e n ta rá n c o m o v e c to re s d e b its d e lo n g itu d c in c o , co n


las p o sicio n es c o r r e s p o n d ie n te s a los c in c o tip o s e n el o r d e n a n te r io r m e n te listado.
A sí, 0 1 11 1 re p r e s e n ta el tip o p a r a c u a l q u ie r a p lic a c ió n d e f u n c ió n , es d e c ir, p a ra
c u a lq u ie r a e x c e p to ent. O b sérv ese q u e éste es e n u n s e n tid o el tip o d c June. p u e s to
q u e fu n c n o p u e d e s e r u n e n tero .
L a p ro p o s ic ió n d e asig n ac ió n b á s ic a p a r a este m o d e lo es

x := f ( y )

C o n o c ie n d o los tip o s p o sib les d e f e y , se p u e d e n d e te r m in a r los tip o s p o sib les d e x


b u s c a n d o el tip o en la ta b la d e la figura 10.65. Si f p u e d e ser d e c u a lq u ie r ti p o e n el
c o n j u n t o S { e y d e c u a lq u ie r tip o e n el c o n j u n t o S 2, se t o m a c a d a p a r i e n 5 , y a en
S 2 y se b u s c a la e n t r a d a e n la fila c o r r e s p o n d ie n te a i y la c o l u m n a d e a . q u e se
lla m a rá x(a). D esp u és se t o m a la u n ió n d e los re s u lta d o s d e to d a s esas b ú s q u e d a s
p a r a o b te n e r el c o n j u n t o d e tip o s p o sibles p a ra x.

ent ent —►ent ent - » fu n c fu n c —* ent June -> fu n c


ent 00000 00000 00000 00000
ent -* ent 10000 00000 00000 00000 00000
ent —* func 01111 i m 00000 00000
June -> ent 00000 10000 i•m 10000 10000
fu n c -> func 01111 01111 0 1 1 11 01111

Fig. 10.65. El valor d e x(o).

P o r e je m p lo , si x = e n t - > June y o = ent , e n to n c e s x (a ) = 0 1 111. E s d ecir, el


re s u lta d o d e a p lic a r u n a c o r r e s p o n d e n c ia d e tip o e n t - * fu n c a un ent e s u n a June, lo
c u a l significa u n a tr a n s f o r m a c ió n d e c u a lq u ie r a d e los c u a t r o tip o s a d e m á s d e ent.
N o se p u e d e s a b e r c u á l p o r q u e r e p a r tir u n n ú m e r o in fin ito d e tip o s e n c in c o clases
lo im p id e .
C o m o s e g u n d o e je m p lo , sea x c o m o a n te s y a = e n t -* ent. E n to n c e s x ( a ) =
= 0 0 0 0 p o r q u e el tip o del d o m i n io d e x e s d e f in itiv a m e n te d is tin to al tip o a , y p o r
t a n t o n o se p u e d e a p lic a r la c o rre s p o n d e n c ia . □

U n s is te m a d e tip o s sencillo

P a r a ilu strar las ideas e n q u e se b a s a n los a lg o ritm o s p a r a in feren c ia d e tip o s, se in ­


t r o d u c e u n s is te m a d e t i p o s s e n c illo y u n le n g u a je b a s a d o e n el e j e m p lo 10.51.
L o s tip o s s o n los c i n c o ilu s tr a d o s e n e s te e je m p lo . L as p r o p o s ic io n e s d e l le n g u a je
s o n d e tr e s clases.

1. r e a d x . U n v a lo r d e x se lee d e s d e la e n tr a d a y p r e s u m ib le m e n te , n o se sabe
n a d a d e su tipo.
716 O PT IM A C IO N DE C O D IG O

2. x : = f ( y ). E l valor de x se iguala al obtenido m ediante la aplicación de la fun­


ción f al valor y. En la figura 10.65 está resum ido lo que se conoce del tipo de
x después de la asignación.
3. u s a r x como x. C uando se pasa a través de dicha proposición, se puede suponer
que el problem a es correcto y por tanto, el tipo de x sólo puede ser x antes y
después de la proposición. E l va lo r y el tipo de x no se ven afectados por la pro­
posición.
Los tipos se infieren realizando un análisis de flujo de datos sobre un grafo de
flujo de un program a que consta de proposiciones de estos tres tipos. Para sim p lifi­
car, se supone que todos los bloques constan de una sola asignación. Los valores de
ent y sa l para bloques son correspondencias de variables a conjuntos de los cinco
tipos del ejem plo 10.51.
A l in icio , cada ent y sal hacen una correspondencia de cada variable al conjunto
de todos los cin co tipos. C uando se propaga la inform ación, se reduce el co njun­
to de tipos asociados con algunas variables en algunos puntos, hasta que en algún mo­
mento ya no se puedan reducir más ninguno de esos conjuntos. Se supondrá que los
conjuntos resultantes indican los tipos posibles de cada variable en cada punto. Esta
suposición es conservadora, puesto que un tipo se elim ina sólo si se puede demos­
trar (dado que el program a sea correcto) que el tipo es im posible. N orm alm ente, se
espera sacar ventaja de que algunos tipos son im posibles, no de que son posibles, así
que “ dem asiado grande" es la dirección segura para los errores.
Se u tilizan dos esquem as para m o d ificar los co njunto s ent y sa l: un esquema
“ hacia adelante" y un esquema “ hacia atrás” . E l esquema hacia adelante utiliza la
proposición que está en el bloque B y el valor de ent [B] para lim ita r sa l [/?]lf\ y el
esquema hacia atrás hace lo contrario. En cada esquema, el operador de confluencia
es la “ unión orientada a variab les", en el sentido de que la co nfluencia de dos co­
rrespondencias a y (3 es aquella correspondencia y tal que para todas las variables x,

y [x ] = a [x] u p[x]

E l esquema de avance
Supóngase que se tiene un bloque B siendo ent [B] la correspondencia j¿ y sal [B] la
correspondencia v. E l esquema de avance permite lim itar v. Las reglas para lim itar
v dependen de la instrucción que se encuentre en el bloque B, naturalm ente.
1. Si la proposición es r e a d x , entonces se podría leer cualqu ier tipo. Si ya se sabe
algo acerca del tipo de x después de la lectura, no se debe o lvid ar durante esta

16 Vale la pena observar qu e en los esqu em as tradicionales de flujo d e datos hacia adelante, no se
limitó sa/y sino que m ás bien se volvió a calcular a partir d e ent cada vez. Esto se p u do hacer porque
los conjuntos ent y sal siempre cam biaron en u n a dirección, ya fuera siem pre creciendo o siempre
dism inuyendo. Sin em bargo, en un p roblem a c o m o la inferencia d e tipos, don d e se realizan pasadas
alternativam ente hacia adelante y hacia atrás, se puede d a r el caso de q u e la pasada hacia atrás haya
dejado sal m u ch o m ás pequeño q u e lo q u e se pued e justificar aplicando las reglas hacia adelante a
ent. P or tanto, n o se debe a u m e n ta r accidentalm ente sal c n la pasada hacia adelante, sólo para vol­
ver a reducirlo (pero quizá n o tanto) en la pasada hacia atrás. U n co m en tario sim ilar sirve para la
pasada hacia atrás; se debe lim itar ent, n o recalcularlo.
1 0 .1 2 E S T IM A C IO N DE T IP O S 717

pasada h acia adelante, de m odo que sim plem ente no se cam b ia v (x ) en la pa­
sada hacia adelante. Para todas las otras variables y , se hace

v(y) := v(y) n ji(y)

2. Supóngase ahora que la proposición es u s a r x como i . D espués de esta propo­


sició n , x es el ú n ico tipo posible para x . Si ya se sabe que el tip o x es im posible
para x , entonces no hay ningún tipo posible para x después de la proposición.
Estas observaciones se pueden resu m ir m ediante:

v(x):= v ( x ) o {t }

v ( y ) : = v (y ) n ¡i(y ) para y / x

3. A h o ra considérese el caso en que la p ro p o sició n es x : = f ( y ). Lo s ú n ico s tipos


posibles para x después de la pro p o sició n son aquellos que

i) son posibles según el va lo r presente de v, y

ii) son el resultado de a p lica r una correspondencia de un tipo x al tip o a , y x y


o son tipos que f e y , respectivam ente, podrían tener antes de que se ejecute
la proposición.

Form alm ente,

v (x ) : = v (x ) n {p | p = x (a ), x está en p ( f ) , y c está en p (y )}

T am b ién se pueden hacer algunas inferencias sobre los tip o s de f e y , puesto


que dando p o r supuesta la co rrecció n del program a, f no puede tener un tipo
que no se ap liq u e a algún tipo de y e y no puede tener un tipo que no pueda
se rv ir com o el tipo del argum ento para algunos tipos posibles de f . Es decir, si
f ^ x , entonces

v ( f ) : = v ( f ) n {x en p ( f ) | para alguna a en |i(y ), x (o ) # 0 }

si y i=- x , entonces

v (y ) : = v (y ) n {a en p (y ) | para alguna x en p ( f ) , x (a ) ^ 0 }
para todas las otras z,

v (z ) : = v (z ) n p (z )

E l esquema de retroceso

A h o ra se considerará cóm o, en una pasada hacia atrás, se puede lim ita r p basándose
en lo que in d ique v y las proposiciones.

1. Si la proposición es r e a d x , es fácil ver que no se pueden hacer nuevas in feren ­


cias sobre tipos im posibles antes de la proposición, así que ^t(x) no cam bia. Sin
em bargo, para toda y # x , se puede propagar in fo rm ació n h acia atrás haciendo
ú (y ) : = n ( y ) ^ v (y ). * ^
2. Si se tiene la pro po sició n u s a r x como x, entonces se puede hacer la m ism a
clase de inferencia que en la d irecció n hacia adelante; x só lo puede tener tipo x
718 O PTIM A CIO N DE C O D IG O

a n te s d e la p ro p o s ic ió n , y los tip o s d e las o tra s variables s o n los q u e se c o n s id e ­


ran p o sibles a n te s y d e s p u é s d e la p ro p o s ic ió n . E s decir:

p (x ): = p (x )n { x )
p ( y ) : = p ( y ) n v (y ) p a r a y * x

3. C o m o a n te s, el c a s o m á s c o m p le jo es u n a p ro p o sic ió n d e la fo rm a x : = f ( y ).
P a ra e m p e z a r , n o se p u e d e in fe rir n a d a n u e v o s o b re x a n te s d e la p ro p o sició n ,
a m e n o s q u e x sea u n a d e f o y . A c o n tin u a c ió n , o b sérv ese q u e , c o m o c o n las
reglas h a c ia a d e la n te , se p u e d e n h a c e r in fe re n c ia s a p a r ti r del h e c h o de q u e los
tip o s d e f e y d e b e n s e r c o m p a tib le s a n te s d e la p ro p o s ic ió n . S in e m b a r g o , si
f # x , ta m b ié n se p u e d e lim ita r p ( f ) a los tip o s en v ( f ) , y se c u m p le u n a a fir­
m a c ió n a n á lo g a a c e rc a d e y . P o r o tr a p arte , si f = x , e n to n c e s lo s tip o s d e f
d e s p u é s d e la p ro p o sic ió n n o están re la c io n a d o s c o n lo s tip o s d e f a n te s d e la
p ro p o s ic ió n , d e m o d o q u e n o se p e rm ite d ic h a lim ita c ió n . D e n u e v o se c u m p le
u n a a firm a c ió n a n á lo g a si y = x. E s ú til d e fin ir u n a c o rre s p o n d e n c ia especial,
só lo p a r a f e y . p a r a reflejar esta d e c isió n . P o r ta n to , se define:

si f = x e n to n c e s p , ( f ) : = p ( f ) , d e lo c o n tr a r io p i ( f ) : = p ( f ) n v ( f )
si y = x e n to n c e s p ((y) : = p ( y ) , d e lo c o n tr a r io p , ( y ) : = p ( y ) n v(y)

A h o ra , se p u e d e n lim ita r f e y a a q u e llo s tip o s q u e sean c o m p a tib le s c o n los


c o n j u n to s de tip o s d e l o tro . Al m is m o tie m p o , se p u e d e n lim ita r los tip o s d e f
e y b a s á n d o s e e n el h e c h o d e q u e n o sólo d e b e n s e r c o m p a tib le s , s in o q u e d e b e n
p r o d u c ir u n tip o q u e in d iq u e q u e p u e d e te n e r x . P o r t a n t o , se define:

p (f) { t en p , ( f ) | p a ra a lg u n a o e n p ,( y ) , t ( o ) n v(x) * 0 }
p ( y ) : = {o e n p , ( y ) | p a r a a lg u n a i en p , ( f ) . x ( o ) n v (x ) * 0 }
p ( z ) : = p ( z ) r v ( z ) p a r a z n o igual a x , y o f

A n te s d e p a s a r al a lg o ritm o p a r a d e te r m in a c ió n d e tipos, re cu érd ese el e s tu d io


d e las d e fin ic io n e s d e a lc a n c e en la secció n 10.5 q u e in d ic a b a q u e si se c o m ie n z a co n
la falsa s u p o sic ió n d e q u e u n a d e fin ic ió n d está d is p o n ib le e n alg ú n p u n t o en un
lazo, se p u e d e p ro p a g a r e r ró n e a m e n te este h e c h o a lo largo del lazo, d e ja n d o u n c o n ­
ju n to d e d efin ic io n e s d e a lc a n c e m a y o r d e lo n ecesario . P u e d e o c u r r ir un p ro b le m a
sim ila r c o n la d e te rm in a c ió n d e tipos, d o n d e la su p o sición d e q u e u n a v ariab le puede
te n e r u n tip o d e te r m in a d o “ se d e m u e s t r a " a sí m is m a c u a n d o se itera el lazo. P or
ta n to , se in tr o d u c ir á u n 33° valor, a d e m á s d e los 32 c o n ju n to s d e tip o s del e je m p lo
10.51 q u e u n a c o r r e s p o n d e n c ia p p u e d a a s ig n a r a u n a v ariab le, el v alo r indef. Este
u s o d e in d e f es sim ila r a su u s o en el m a r c o d e p ro p a g a c ió n de c o n s ta n te s d e la sec­
c ió n an te rio r.
D u r a n te la c o n flu e n c ia , el v a lo r in d e f a d m ite c u a lq u ie r o tr o valor, e s d ecir, a c tú a
c o m o el tip o 0 0 0 0 0 . P o r o t r o lado, c u a n d o se in te rs e c ta n c o n j u n to s d e tip o s, p o r
e je m p lo , c a lc u la r p ( y ) n v(x). el v a lo r in d e f ta m b ié n a d m ite c u a lq u ie r o t r o c o n ju n to
d e tip o s; es decir, f u n c io n a c o m o el tip o 11111. A sí, c u a n d o se lee p o r e je m p lo u n
v a lo r d e u n a v a ria b le x , se n ie g a q u e se h a y a p e n s a d o q u e el “ t i p o " d e x e r a in d e f
d e s p u é s d e la le c tu ra , y el tip o d e x se v u elv e 1 1 1 1 1.
1 0.1 2 ESTIM ACION DE TIPO S 719

A lg o r itm o 1 0 .1 9 .

Entrada. U n g rafo d e flujo c u y o s b lo q u e s s o n p ro p o s ic io n e s sim p le s d e los tres tip o s


(le c tu ra , asig n ac ió n y u tiliz a r c o m o ) m e n c io n a d o s a n te r io r m e n te .

Salida. U n c o n j u n t o d e tip o s p a r a c a d a v ariable e n c a d a p u n to . El c o n j u n t o es c o n ­


serv ad o r. en el s e n tid o d e q u e c u a lq u ie r c á lc u lo real d e b e c o n d u c ir a u n tip o d e n tro
del c o n ju n to .

M étodo. Se c a lc u la u n a c o r r e s p o n d e n c ia ent [/i] y u n a c o r r e s p o n d e n c ia sal [# ] p a ra


c a d a b lo q u e B. C a d a c o r r e s p o n d e n c ia e n v ía las v aria b les d e l p r o g r a m a a c o n j u n to s
d e tip o s e n el s is te m a d e tip o s p r e s e n ta d o e n el e je m p lo 10.51. Al in icio , to d a s las
c o rre s p o n d e n c ia s e n v ía to d a s las v aria b les a indef.
D esp u és se h a c e n a lte r n a tiv a m e n te p a s a d a s h a c ia a trá s y a d e la n te a tra v é s del
g rafo d e flujo, h a s ta q u e ta n to las p a s a d a s c o n s e c u tiv a s h acia a d e la n te c o m o hacia
a t r á s n o p u e d a n p r o d u c i r m á s c a m b io s . L a p a s a d a h a c ia a d e l a n t e se re a liz a m e ­
d ian te:

fo r c a d a b lo q u e B en o rd e n e n p r o f u n d id a d do begin
ent\B] : = u sal[P)\
p r ,x J P J r H

s a l\fí\ : = fu n c ió n d e ent [B] y sal [ # ] c o m o se d e fin ió a n te r io r m e n te


end

La p a s a d a h acia a tr á s es:

for c a d a b lo q u e B en o rd e n en p r o f u n d id a d in v erso d o begin


sa l [B] : = vj ent [5 ];
w m w r .V de H

ent [B ] : = fu n c ió n d e ent [B] y sa l [B] c o m o se d e fin ió a n te r io r m e n te


en d □

E jem p lo 10.52. C o n s id é re s e el sen cillo p r o g r a m a q u e se m u e s tra e n la figura 10.66.


Se c o n s id e r a n c u a t r o c o r r e s p o n d e n c ia s q u e se d e s ig n a r á n p , h a s ta p 4. C a d a p , es
sa l I B ] y ent (ft+ i). T é c n ic a m e n te , B¡ n o d e b e ría te n e r d o s p ro p o s ic io n e s, p o r q u e se

B,

p , = s a ! \ B x] = ent \B2]
B•

p 2 = sa¡[B 2J = ent [/A]


B,

p 3 = sal[By] = ent [BÁ¡

B,
p 4 = sal[B A\

F ig. 1 0 .6 6 . P rogram a d e ejem p lo.


720 O PTIM ACIO N D E CO DIG O

h a s u p u e s to q u e los b lo q u e s c o n s ta n d e u n a so la p ro p o s ic ió n e n e s ta secció n . Sin


e m b a rg o , n o se c o n s id e r a lo q u e o c u r r e a n te s del final d e B¡ p o r q u e to d a s las v a ria ­
bles p u e d e n te n e r allí c u a lq u ie r tipo.
R esu lta q u e se n ecesitan c in c o p asad as an tes d e q u e o c u r r a la c o n v erg en c ia y o tras
d o s p a r a d e te c ta r q u e la c o n v e rg e n c ia h a o c u rrid o . E stas p a s a d a s se r e s u m e n e n la
figura 10.67(a) a (e). L a p r im e ra p a s a d a es h a c ia a d e la n te . C u a n d o se c o n s id e ra B 2,
se d e s c u b r e q u e b n o p u e d e s e r u n e n te r o , p o r q u e se u tiliz a c o m o u n a c o r r e s p o n ­
d e n c ia . T a m b ié n se d e s c u b re q u e a se u tiliz a c o m o e n te r o en By, y p o r t a n t o sólo se
p u e d e h a c e r c o r r e s p o n d e r c o n ent en p 3 y p 4- E stas o b se rv a c io n e s se r e s u m e n e n la
fig u ra 10.67(a).

a b c a b c

Pl 11111 11111 in d ef Pi 10000 01100 in d ef


P2 11111 01111 lllll P2 10000 01111 lllll
Pí 10000 01111 11111 P* 10000 01111 lllll
P4 10000 01111 lllll ¿I 10000 01111 lllll

(a) H a c ia A delante (b) H a c ia A trás

a b c a b c

Pi 10000 01100 indef Pi 10000 01100 indef


P2 D I '. 1.' 01100 lllll P2 m oxm 01100 10000
______
P3 01100 lllll P3 10000 01100 WWJJ1
P4 01100 lllll P4 10000 01100 lllll

(c) H a c ia A delante (d) H a c ia A trás

a b c

Pi 01000 indef
P2 01000
P*•'
V 10000 01000
P4 10000 01000 10000

(e) H a c ia A delante

Fig. 10.67. Sim ulación del alg o ritm o 10.19 sobre el grafo d e flujo d e la figura 10.66.

L a s e g u n d a p a sa d a , q u e se m u e s tr a e n la figura 10.67(b), es h a c ia a trá s. E n esta


p a sa d a , c u a n d o se c o n s id e ra a B2, se sabe q u e a d e b e s e r u n e n te r o c u a n d o se le
a p lic a b . P o r ta n to , el tip o d e b só lo p o d r ía s e r ent —> e n t o ent —>{une. E n la tercera
p a s a d a , q u e es h acia a d e la n te , esta lim ita c ió n d e l tip o d e b se p r o p a g a a lo la rg o d e
t o d o el d e sc e n so p o r el grafo d e flujo, c o m o se m u e s tra e n la fig u ra 10.67(c).
L a c u a r t a p a s a d a , h a c ia a trá s, se m u e s tra e n la figura 10.67(d). A q u í, el h e c h o de
q u e c s e a u n a r g u m e n t o d e b e n By in d i c a q u e c s ó lo p u e d e s e r u n e n t e r o . A si-
10.13 D E P U R A C IO N SIM B O L IC A DE C O D IG O O P T IM A D O 721

m ism o, cu an d o se co n sid e ra B 2, se ve q u e el resu ltad o de b ( a ) só lo puede ser


del tipo de c , que es e n t . Este hecho in v a lid a la p o sib ilid a d de que b sea de tipo
ent -> fu n c. Por últim o, en la figura 10.67(e), se ve cóm o en la q u in ta pasada, hacia
adelante, se propagan estos hechos sobre b y c . E n posteriores pasadas no se pueden
realizar nuevas inferencias. En este caso se han reducido los co njunto s de tipos po­
sibles a un solo tipo para cada variable en cada punto; a y c son enteros y b es una
correspondencia de enteros a enteros. E n general, pueden haber varios tipos posibles
para una variable en un punto. □

10.13 D E P U R A C IO N S IM B O L IC A D E C O D IG O O P T IM A D O

U n depurador sim b ó lico es un sistem a que perm ite observar los datos del program a
m ientras se ejecuta el program a. G eneralm ente se llam a al depurador cuando ocurre
un erro r en el program a, com o un desbordam iento, o cuando se alcanzan determ i­
nadas proposiciones, indicadas p o r el program ador en el código fuente. U n a vez in ­
vocado, el depurador sim b ó lico perm ite al program ador exam inar, y tal vez m odi­
ficar, cualquiera de las variables que suelen ser accesibles al program a en ejecución.
Para que el depurador entienda una orden del usuario com o “ m uéstram e el va­
lo r en curso de a ” , tiene que disponer de cierta inform ación.

1. Debe haber una form a de asociar u n identificador com o a con la posición que
representa. P o r tanto, la parte de la tabla de sím bolos que asigna una posición a
cada variable, por ejem plo, un lugar en un área global de datos o en un registro
de activación para un procedim iento, debe ser registrada p o r el com pilador y
preservada para que el depurador la utilice. Por ejem plo, esta inform ación puede
codificarse en el m ódulo de carga para el program a.
2. Debe haber in fo rm ació n sobre el ám bito, de m odo que se puedan e lim in a r am ­
bigüedades de las referencias a un identificador que se declare m ás de una vez,
y de m odo que se pueda saber, si se está en algún procedim iento p, qué otros
datos de procedim ientos son accesibles y cóm o-se encuentran estos datos en la
pila o en otra estructura de ejecución. D e nuevo, esta in fo rm ació n debe tomarse
de la tabla de sím bolos del com pilador y se debe preservar para el uso futuro
que de él haga el depurador.
3. El usuario debe saber dónde se está en el program a cuando se in vo ca el depu­
rad o r. E sta in fo rm a ció n es in te rcalad a p o r el co m p ila d o r en la llam ad a al de­
p u ra d o r cuan d o el co m p ila d o r m aneja un a in vo ca ció n del d ep u rad o r d ecla­
rada p o r el usuario. T am bién se obtiene del m anejador de excepciones cuando
un e rro r de ejecu ció n hace qu e se llam e al depurador.
4. Para que la inform ación sobre la lo calizació n en el program a, que se m encionó
en 3, tenga sentido para el u su ario , debe haber un a tabla qu e asocie cada in s­
trucció n en lenguaje de m áquina con la proposición fuente de la que procede.
E l com pilador puede preparar esta tabla a m edida que genera código.

A unque el diseño de un depurador sim b ó lico es en sí interesante, sólo se co n si­


derarán las dificultades al intentar escribir un depurador sim b ó lico para un co m p i­
722 O PTIM ACIO N DF CO DIG O

la d o r o p tim a d o r . A p r im e ra vista, p u e d e p a re c e r q u e n o h a c e falta d e p u r a r u n p ro ­


g r a m a o p tim a d o . E n el ciclo d e d e s a rro llo n o r m a l, a m e d id a q u e el u s u a r io d e p u r a
u n p ro g ra m a se u tiliza u n c o m p ila d o r rá p id o n o o p ti m a d o r h asta q u e el u s u a rio sepa
q u e el p r o g r a m a fu e n te e s c o rre c to . S ó lo e n to n c e s se u tiliz a u n c o m p ila d o r o p t i m a ­
d or.
D e s g ra c ia d a m e n te , un p ro g ra m a p u e d e e je c u ta rs e c o r r e c ta m e n te c o n u n c o m ­
p ila d o r n o o p t i m a d o r y d e s p u é s fallar, c o n los m is m o s d a to s d e e n tr a d a , c u a n d o se
c o m p ila c o n el c o m p ila d o r o p tim a d o r . P o r e je m p lo , p u e d e ex istir u n e r r o r n o d e te c ­
ta d o e n el c o m p ila d o r o p ti m a d o r o . r c o r d e n a n d o las o p e ra c io n e s , el c o m p ila d o r o p ­
ti m a d o r p u e d e in tr o d u c ir u n d e s b o r d a m ie n to (overflow) o u n d e s b o r d a m ie n to n e ­
g ativ o ( underflow ). A sim is m o , in c lu so los c o m p ila d o re s “ n o o p tim a d o r e s " p u e d e n
rea liz a r a lg u n a s tr a n s f o rm a c io n e s sencillas, c o m o la e lim in a c ió n d e su b e x p re sio n e s
c o m u n e s lo cales o el r e o r d e n a m i e n t o d e c ó d ig o d e n t r o d e u n b lo q u e b ásico , q u e
m o d ifican e n gran m e d id a la d ificultad d e d is e ñ a r u n d e p u r a d o r sim bólico. P o r ta n to ,
hay q u e c o n s id e r a r los a lg o ritm o s y las e s tr u c tu r a s d e d a to s q u e se d e b e n u tiliz a r en
u n d e p u r a d o r sim b ó lic o p a r a u n c o m p ila d o r o p ti m a d o r q u e tr a n s f o r m e b lo q u e s b á­
sicos d e fo rm a a rb itra ria .

D e d u c c ió n d e v a lo r e s d e v a ria b les e n los b lo q u e s b á sic o s

P a r a sim p lific ar, su p ó n g ase q u e ta n to el c ó d ig o fu e n te c o m o el c ó d ig o o b je to s o n se­


c u e n c ia s d e p ro p o s ic io n e s in te rm e d ia s . C o n s id e r a r el c ó d ig o fu e n te c o m o c ó d ig o in ­
te r m e d io n o p re s e n ta p ro b le m a s p o r q u e este ú ltim o es m á s g en eral q u e el p rim ero .
P o r e je m p lo , s ó lo se p u e d e p e r m itir al u s u a rio q u e c o lo q u e p u n to s d e r u p tu r a (lla­
m a d a s al d e p u r a d o r ) e n tr e p ro p o s ic io n e s fu en te , p e r o a q u í se p e r m ite n p u n to s de
r u p tu r a d e s p u é s d e c u a lq u ie r p ro p o sic ió n in te rm e d ia . C o n s id e r a r el c ó d ig o o b je to
c o m o c ó d ig o in te r m e d io es c u e s tio n a b le só lo si el o p t i m a d o r p a r te u n a p ro p o sic ió n
in te r m e d ia e n v a ria s p ro p o s ic io n e s d e m á q u in a q u e q u e d a n sep arad as. P o r e jem p lo ,
p o r a lg u n a ra z ó n , se p u e d e n c o m p ila r las d o s p ro p o s ic io n e s in te rm e d ia s

u := v + w
x s= y ♦ 2
a c ó d ig o d o n d e las d o s s u m a s se realizan e n registros d ife re n te s e in te rc a la d o s. Si
este es el caso, se p u e d e n c o n s id e ra r las carg as y a lm a c e n a m ie n to s d e registros c o m o
si los registros fu e ra n te m p o ra le s e n el c ó d ig o in te rm e d io , p o r ejem p lo :

rl := v
r2 := y
rl := rl
r2 := r2
u := rl
X : = r2

O c u r r e n v a rio s p ro b le m a s c u a n d o se in te r a c tú a c o n el u s u a rio a c e rc a d e u n blo­


q u e , c u a n d o el u s u a rio p ie n sa q u e se está e je c u ta n d o el b lo q u e fu e n te p e r o d e h e c h o
se está e je c u ta n d o u n a v ersió n o p tim a d a d e ese b lo q u e:
1 0.1 3 D E P U R A C IO N SIM BOLICA DE C O D IG O O P T IM A D O 723

1. S u p ó n g a se q u e se está e je c u ta n d o el p r o g r a m a q u e se o b tie n e al “ o p ti m a r " u n


b lo q u e b ásico del p r o g r a m a f u e n te y m ie n tr a s se está e je c u ta n d o la p ro p o sic ió n
a : = b + c , o c u r r e u n d e s b o r d a m ie n to . Se d e b e d e c ir al u s u a rio q u e h a o c u rrid o
u n e r r o r e n u n a d e las p r o p o s ic io n e s fu e n te . C o m o b + c p u e d e s e r u n a s u b e x ­
p re s ió n c o m ú n q u e a p a re z c a e n d o s o m á s d e las p ro p o s ic io n e s fu en te , ¿a q u é
p ro p o sic ió n se d e b e a tr ib u ir el e rro r?

2. S e p la n te a u n p r o b le m a m á s difícil si el u s u a rio del d e p u r a d o r q u ie re v e r el va­


lo r “e n c u rs o ” d e a lg u n a v a ria b le d . E n el p r o g r a m a o p tim a d o . se p u d o h a b e r
a sig n a d o d e n a lg u n a p ro p o s ic ió n s. P e ro e n el p r o g r a m a fu en te , 5 p u e d e ir des­
p u é s d e la p ro p o s ic ió n e n la q u e se in v o c ó al d e p u r a d o r , d e m o d o q u e el valor
d e d d is p o n ib le p a r a el d e p u r a d o r n o es el q u e el u s u a r io p ie n s a q u e es el v a ­
lo r “e n cu rso ” d e d según el listad o del código fuente. D e m a n e ra sim ilar, .v p u e d e
p re c e d e r la p ro p o sic ió n q u e in v o c a al d e p u r a d o r , p e r o e n el c ó d ig o fu e n te hay
o tr a asig n ac ió n a d e n tr e ellas, d e m o d o q u e el v a lo r d e d d is p o n ib le p a ra el d e ­
p u r a d o r está a n tic u a d o . ¿E s p o s ib le p o n e r a d isp o sic ió n del u s u a rio el v alo r co­
rre c to d e d ? P o r e je m p lo , ¿ p o d ría ser el v a lo r d e a lg u n a o t r a v a ria b le e n la v e r­
sió n o p tim a d a . o se p o d r ía c a lc u la r a p a r tir d e los v a lo re s de o tra s variables?

3. P o r ú ltim o , si el u s u a r io c o lo c a u n p u n t o d e r u p t u r a d e s p u é s d e u n a p r o p o s i­
c ió n d e l c ó d ig o fu e n te , ¿ c u á n d o se d e b e e n tre g a r el c o n tro l al d e p u r a d o r d u r a n te
la e je c u c ió n del c ó d ig o o p tim a d o ?

U n a so lu c ió n p u e d e s e r e je c u ta r la v ersió n sin o p ti m a r del b lo q u e j u n t o c o n la


v ersió n o p tim a d a , p a r a h a c e r d is p o n ib le s los v a lo re s c o rre c to s d e c a d a v a ria b le en
to d o m o m e n to . Se re c h a z a esta “ s o lu c ió n ”, p o r q u e las su tilezas d e los e rro re s o c u l­
tos, e s p e c ia lm e n te los e rro re s in tr o d u c id o s p o r el c o m p ila d o r, p u e d e n d e sa p a re c e r
c u a n d o las in s tru c c io n e s q u e p r o v o c a r o n el p r o b le m a e s tá n s e p a ra d a s u n a d e o tras
e n tie m p o o espacio.
L a so lu c ió n q u e a q u í se a d o p t a e s p r o p o r c io n a r su fic ie n te in f o r m a c ió n a c e rc a d e
c a d a b lo q u e al d e p u r a d o r p a r a q u e fin a lm e n te p u e d a c o n te s ta r la p re g u n ta : ¿es p o ­
sible p r o p o r c io n a r el v a lo r c o rre c to d e la v a ria b le a?, y si lo es, ¿ c ó m o ? L a e s tru c tu ra
u tiliz a d a p a r a a b a r c a r esta in f o r m a c ió n es el G D A del b lo q u e b ásico, c o n a n o ta c io ­
nes so b re in fo rm a c ió n a c e rc a d e las v aria b les q u e g u a r d a n el v alo r c o rre s p o n d ie n te
a u n n o d o e n el G D A , y e n q u é m o m e n to s e n el p r o g r a m a f u e n te y e n el o p tim a d o .
L a n o ta c ió n
• •
a: i - j

a s o c ia d a a u n n o d o sign ifica q u e el v a lo r r e p r e s e n ta d o p o r e s e n o d o e s tá a l m a c e ­
n a d o e n la v ariab le a d e s d e el c o m ie n z o d e la p ro p o sic ió n i a lo largo d e la p a r te d e
p ro p o sic ió n . / j u s t o a n te s d e q u e se p r o d u z c a su a sig n a c ió n . Si j = oo, e n to n c e s a
c o n tie n e este v a lo r h asta el fin al del b lo q u e .

E je m p lo 10.53. E n la figura 10.68(a) se o b s e rv a u n b lo q u e b ásico d e c ó d ig o fuente,


y e n la fig u ra 10.68(b) h a y u n a p o sib le v ersió n “o p ti m a d a " d e ese códig o . E n la fi­
g u r a 10.69 se m u e s tr a el G D A p a r a u n o u o t r o b lo q u e , c o n in d ic a c io n e s d e los r a n ­
gos e n los q u e las v aria b les c o n tie n e n esos v a lo re s e n el c ó d ig o fu e n te y e n el o p ti-
724 O PTIM A CIO N D E CODIGO

(1) c := a+b <n d := a+b


(2) a := c (2') t : = b*e
(3) c := c - e (3') a := d - e
(4) a := d - e (4') b := d / t
(5) b := b*e (5') c := a
(6) b := d / b

(a) (b)

Fig. 1 0 .6 8 . C ó d ig o fu en te y c ó d ig o op tim ad o.

a : 5-oo
c : 4-co
b: o o a : 4 '-o o '

F ig. 1 0 .6 9 . G D A c o n an otacion es.

m a d o . L as p r im a s se u tiliz an p a r a in d ic a r q u e el ra n g o d e u n a p ro p o s ic ió n e s tá en
el c ó d ig o o p tim a d o . P o r e je m p lo , el n o d o e tiq u e ta d o c o n + e s el v a lo r d e c e n el
c ó d ig o fu e n te d e sd e el c o m ie n z o d e la p ro p o s ic ió n (2) h a s ta j u s t o a n te s d e la asig­
n a c ió n e n la p ro p o sic ió n (3). T a m b ié n e s el v alo r d e d e n el c ó d ig o f u e n te d e sd e el
c o m ie n z o d e la p ro p o s ic ió n (3) h a s ta el fin. A d e m á s , el m i s m o n o d o es el v a lo r de
d en el c ó d ig o o p ti m a d o d e sd e la p ro p o s ic ió n (2 ') h a s ta el fin. □

A h o ra se p u e d e c o n te s ta r a la p r im e ra p r e g u n ta d e a n te s. S u p ó n g a s e q u e o c u rre
u n erro r, c o m o u n d e s b o r d a m ie n to , m ie n tr a s se está e je c u ta n d o la p ro p o s ic ió n / del
c ó d ig o o p tim a d o . C o m o el m is m o v a lo r sería c a lc u la d o p o r c u a lq u ie r p ro p o sic ió n
fu e n te q u e c a lc u la el m is m o n o d o del G D A q u e la p ro p o s ic ió n / , tie n e s e n tid o in ­
f o r m a r al u s u a rio q u e el e r r o r o c u r r ió e n la p r im e ra p ro p o s ic ió n f u e n te q u e calcu la
este n o d o . P o r ta n to , en el e je m p lo 10.53, si el e r r o r o c u rrió e n la p ro p o s ic ió n I', 2',
3 ' ó 4 '. h a b ría q u e i n f o r m a r q u e o c u r r ió e n la p ro p o s ic ió n 1, 5, 3 y 6 , re s p e c tiv a ­
m e n te . N o p u e d e o c u r r ir n in g ú n e r r o r e n la p ro p o s ic ió n 5', p o r q u e n o se calcu la
n in g ú n valor. S e p o s p o n e n los d e ta lle s d e c ó m o se c a lc u la n las p ro p o s ic io n e s co rres­
p o n d ie n te s h asta el e je m p lo 10.54, m á s ad elan te.
T a m b ié n se p u e d e re s p o n d e r a la s e g u n d a p re g u n ta . S u p ó n g a s e q u e se está en la
p ro p o s ic ió n / del c ó d ig o o p ti m a d o y q u e se in f o r m a al u s u a r io q u e el c o n tro l se
e n c u e n t r a en la p ro p o sic ió n / del c ó d ig o fu en te , d o n d e se p r o d u jo u n e rro r. Si el
u s u a rio p id e ver el v a lo r d e u n a v a ria b le x , se d e b e e n c o n t r a r u n a v a ria b le y (c o n
1 0 .1 3 D E P U R A C IO N S IM B O L IC A DE C O D IG O O P T IM A D O 725

frecuencia, pero no siem pre, y es x ) tal que el va lo r de x en la pro po sició n / del có ­


digo fuente sea el m ism o nodo del G D A que y en la proposición / en el código op-
tim ado. Se inspecciona el G D A para ver el nodo que representa el va lo r de x en / y
se puede leer a p artir de ese nodo todas las variables del program a objeto que alguna
vez tuvieron ese valor, para com probar si un a de ellas conserva este va lo r e n / .
Si lo conserva, el proceso habrá term inado; si no, se puede ca lcu la r el valor de x
en i a p artir de otras variables en / . Sea n el nodo para x en el m om ento i. Entonces
se pueden considerar los h ijo s de ai , m y p , para ver si estos dos nodos representan
el va lo r de alguna variable en el m om ento j . Si, p o r ejem plo, hay una variable para
m, pero ninguna para /;, se pueden considerar los hijos de /?, recursivam ente. F in a l­
mente, se encuentra una form a de calcu la r el va lo r de x en el m om ento i o se de­
duce que no existe tal form a. Si se encuentra una form a de ca lcu la r los valores de m
y p, entonces se calcu lan y se aplica el operador en n para calcu la r el valor de x en
el m om ento i 11.

Supóngase que cuan d o se ejecuta el código de la figura 10.68(b),


E je m p lo 1 0 .5 4 .
ocurre un erro r en la proposición 2 '. L a proposición estaba calcu lan d o el nodo eti­
quetado con * en la figura 10.69, y la p rim e ra pro po sició n fuente que ca lcu la ese
valor es la proposición 5. A sí que se inform a de un erro r en la p ro po sició n 5.
E n la figura 10.70 se ha tabulado el nodo del G D A que corresponde a cada va­
riable en el código fuente y en el optim ado, en el com ienzo de las proposiciones 5 y
2', respectivam ente; los nodos se in d ican m ediante su etiqueta, ya sea un sím bolo de
operador o un sím b o lo de va lo r in icia l com o A 0. Tam bién se in d ica cóm o calcular
el valor en el m om ento 5 a p a rtir de los valores de las variables en el m om ento 2 '.
Por ejem plo, si el usuario pide el va lo r de a, se le da el va lo r del nodo etiquetado
con - . N inguna variable tiene ese va lo r en el m om ento 2 ' pero p o r fortuna hay va­
riables, d y e, que contienen el valor de cada uno de los hijos del nodo - en el mo­
mento 2', así que se puede im p rim ir el v a lo r de a calculand o el va lo r de d - e . □

V alor en
VARIABLE O btener por
M om en io 2! M omento 5

a Ao — d-e
b Be Bo b
c n o definido — d-e
d + + d
e E0 E0 e
t n o definido

Fig. 10.70. Valores de variables en los momentos 2' y 5.

17 Ocurre una sutileza si el cálculo del valor del nodo n ocasiona otro error. Entonces se debe in­
formar al usuario de que el error ocurrió en realidad antes, en la primera proposición fuente que
calcula el valor de n.
726 O PTIM A CIO N DE CO DIGO

A h o ra se re s p o n d e rá a la te rc e ra p re g u n ta : c ó m o t r a t a r las lla m a d a s al d e p u r a d o r
in s e rta d a s p o r el u s u a rio . E n u n se n tid o , la re sp u e sta es trivial; si el u s u a rio p id e u n a
r u p tu r a d e s p u é s d e la p ro p o sic ió n i e n el p r o g r a m a fu e n te , se p u e d e d e te n e r la eje­
c u c ió n al c o m ie n z o del b lo q u e . Si el u s u a rio q u ie re v e r el v alo r d e u n a v a ria b le x
d e s p u é s d e la p ro p o sic ió n /. se c o n s u lta el G D A c o n a n o ta c io n e s p a r a v e r q u é n o d o
re p re s e n ta el v a lo r d e s e a d o d e x y se c a lc u la ese v alo r a p a r ti r d e los v a lo re s iniciales
d e las v aria b les p a r a d ic h o b lo q u e .
P o r o tr a p arte , se p u e d e d e ja r m e n o s tra b a jo al d e p u r a d o r y e v ita r a lg u n a s s itu a ­
c io n e s d o n d e los in te n to s d e c a lc u la r u n v a lo r c o n d u c e n a e r r o r e s q u e d e b e n ser
a n u n c ia d o s al u s u a rio , si se p o s p o n e la lla m a d a al d e p u r a d o r c u a n t o s e a posible. Es
fácil c a lc u la r la ú ltim a p ro p o sició n / e n el p ro g ra m a o p tim a d o , d e m o d o q u e se llam a
al d e p u r a d o r d e s p u é s d e / y se s im u la a n t e el u s u a rio q u e la lla m a d a se h iz o d e s p u é s
d e la p ro p o s ic ió n / del p ro g ra m a fu en te . P a ra e n c o n t r a r / , sea S el c o n j u n t o d e n o ­
d o s del G D A q u e c o r r e s p o n d e n al v a lo r d e a lg u n a v ariab le del p r o g r a m a fu e n te in ­
m e d i a t a m e n t e d e s p u é s d e la p ro p o s ic ió n /. El u s u a r io p u e d e p e d ir q u e se c a lc u le
c u a lq u ie r v a lo r e n S . P o r ta n to , se p u e d e h a c e r la r u p tu r a d e s p u é s d e la p ro p o sic ió n
y del c ó d ig o o p ti m a d o só lo si p a r a c a d a n o d o n e n S h a y a lg u n a k ' > / tal q u e se
asocie a lg u n a v ariable c o n el n o d o n e n el m o m e n t o k ' en el c ó d ig o o p tim a d o . P ara
e n to n c e s se sabe q u e el v alo r d e n está d is p o n ib le in m e d ia ta m e n te d e s p u é s d e la p ro ­
p o sició n j ' o se c a lc u la rá e n alg ú n m o m e n t o d e s p u é s d e la p ro p o sic ió n / . E n el p ri­
m e r c a s o , re s u lta triv ia l c a lc u la r el v a lo r d e n si se h a c e la r u p t u r a d e s p u é s d e j \
m ie n tr a s q u e en el s e g u n d o c a so se sa b e q u e los v alo res d is p o n ib le s d e s p u é s d e y son
su ficien tes p a ra c a lc u la r n d e alg ú n m o d o .

E jem p lo 10.55. C o n s id é re n s e d e n u e v o el c ó d ig o fu e n te y el o p tim a d o d e la figura


10.68 y su p ó n g a se q u e el u s u a rio in se rta u n p u n t o d e r u p tu r a d e s p u é s d e la p r o p o ­
sició n (3) del c ó d ig o fuente. P a ra e n c o n t r a r el c o n j u n t o S. se in s p e c c io n a el G D A de
la figura 10.69, y se ve q u é n o d o s tie n e n a s o c ia d a s v aria b les del p r o g r a m a fu e n te en
el m o m e n to 4. E sto s n o d o s s o n los e tiq u e ta d o s c o n .-í0. £ o . + y - e n esa figura.
A h o ra se o b serv a d e n u e v o el G D A p a r a e n c o n t r a r la m a y o r / tal q u e c a d a u n o
d e los n o d o s d e S te n g a a s o c ia d a a lg u n a v a ria b le d e l c ó d ig o o p t i m a d o e n u n m o ­
m e n t o e s tr ic ta m e n te m a y o r q u e / . L os n o d o s e tiq u e ta d o s c o n + , - y E0% n o p la n ­
te a n p ro b le m a s, p u e s to q u e s u s v alo res s o n tr a n s p o r ta d o s p o r las v aria b les d , a y e,
re s p e c tiv a m e n te , e n el m o m e n t o oo'. L o s n o d o s Aa y B0 lim ita n el v a lo r d e / y el
p r im e ro d e ellos e n p e rd e r su v alo r es A 0. c u y o v a lo r es d e s tr u id o p o r la p ro p o sició n
3'. P o r ta n to . / = 2 ' es el m a y o r v a lo r p o sib le d e / ; es d ecir, si el u s u a rio p id e u n a
r u p tu r a d e s p u é s d e la p ro p o sic ió n fu e n te 3. se le p u e d e d a r el p u n t o d e r u p tu r a des­
p u é s d e la p ro p o sic ió n 2'.

El lecto r d e b e c o n o c e r u n a sutileza e n el e je m p lo 10.55, p a r a lo c u a l n o existe


u n a s o lu c ió n re a lm e n te b u e n a . Si se e je c u ta el c ó d ig o o p ti m a d o a tra v é s d e la p ro ­
p o s ic ió n 2 ' a n t e s d e l l a m a r al d e p u r a d o r , u n e r r o r e n el c á l c u lo d e b * e e n la
p ro po sició n 2 ' (p o r e jem p lo , u n d e s b o rd a m ie n to negativo) p u e d e o c a s io n a r q u e se in­
v o q u e al d e p u r a d o r a n te s d e la lla m a d a q u e se p e n s a b a realizar. S in e m b a r g o , c o m o
el c á lc u lo c o r r e s p o n d ie n te a la p ro p o s ic ió n 2 ' n o se p r o d u c e h a s ta la p ro p o s ic ió n 5
e n el p r o g r a m a fu en te , se d ir á al u s u a rio q u e el e r r o r o c u r r ió en la p ro p o sic ió n 5. El
u s u a rio se p r e g u n ta rá c ó m o se llegó a la p ro p o s ic ió n 5 sin lla m a r al d e p u r a d o r e n la
10.13 D E P U R A C IO N S IM B O L IC A D E C O D IG O O P T IM A D O 727

p r o p o s ic i ó n 3 . P r o b a b l e m e n t e la m e j o r s o l u c i ó n a e s t e p r o b l e m a s e a n o p e r m i t i r q u e
Y s e a t a n g r a n d e q u e h a y a u n a p r o p o s i c i ó n k ' d e l c ó d i g o o p t i m a d o , c o n k ' ^ j \ ta l
q u e el c ó d ig o fu e n te n o c a lc u le el v a lo r c a lc u la d o p o r k ' h a s ta d e s p u é s d e la p ro p o ­
s ic ió n i e n l a q u e se c o l o c ó e l p u n t o d e r u p t u r a .

E fe c to s d e la o p tim a c ió n g lo b a l

C u a n d o el c o m p i l a d o r r e a liz a o p t i m a c i o n e s g lo b a le s , h a y p r o b l e m a s m á s d ifíc ile s q u e


el d e p u r a d o r s i m b ó l i c o d e b e r e s o l v e r y a m e n u d o n o h a y m a n e r a d e e n c o n t r a r el
v a lo r c o rre c to d e u n a v a ria b le e n u n p u n to . D o s tra n s fo rm a c io n e s im p o r ta n te s q u e
n o o c a s io n a n p r o b le m a s sig n ific a tiv o s s o n la e lim in a c ió n d e v a ria b le s d e in d u c c ió n
y l a e l i m i n a c i ó n d e s u b e x p r e s i o n e s c o m u n e s g lo b a le s ; e n a m b o s c a s o s el p r o g r a m a
se p u e d e l o c a l i z a r e n u n o s p o c o s b l o q u e s y c o n s i d e r a r d e la f o r m a a n t e r i o r m e n t e
e stu d ia d a .

E l i m i n a c i ó n d e v a r i a b l e s d e i n d u c c ió n

S i se e l i m i n a u n a v a r i a b l e d e i n d u c c i ó n i d e u n p r o g r a m a e n f a v o r d e u n m i e m b r o
d e la f a m i l i a d e i , p o r e j e m p l o t , e n t o n c e s h a y u n a f u n c i ó n l i n e a l q u e r e l a c i o n a i
y t . A d e m á s , si s e s ig u e n lo s m é t o d o s d e la s e c c i ó n 1 0 .7 , e l c ó d i g o o p t i m a d o m o d i ­
f ic a rá t e n e x a c t a m e n t e a q u e l l o s b l o q u e s e n q u e s e m o d i f i c a i , d e m o d o q u e s i e m ­
p r e s e c u m p l e la r e l a c i ó n l i n e a l e n t r e i y t . P o r t a n t o , d e s p u é s d e t e n e r e n c u e n t a el
r e o r d e n a m i e n t o d e la s p r o p o s i c i o n e s d e n t r o d e u n b l o q u e q u e a s i g n a a t ( y e n el
p r o g r a m a f u e n t e , a s i g n a a i ) s e p u e d e p r o p o r c i o n a r al u s u a r i o e l v a l o r “ e n c u r s o ’*
d e i m e d i a n t e u n a t r a n s f o r m a c i ó n li n e a l s o b r e t .
H a y q u e t e n e r c u i d a d o s i i n o s e d e f i n e a n t e s d e l la z o , p u e s t o q u e t s i e m p r e s e r á
a s i g n a d o a n t e s d e la e n t r a d a al la z o , y se p u e d e p o r t a n t o p r o p o r c i o n a r u n v a l o r p a r a
i e n u n p u n t o d e l p r o g r a m a d o n d e el u s u a r i o e s p e r a q u e i e s t é i n d e f i n i d a . P o r f o r ­
tu n a , es h a b itu a l q u e u n a v a ria b le d e l p r o g r a m a fu e n te q u e s e a u n a v a ria b le d e i n ­
d u c c i ó n q u e d e b a i n i c i a l i z a r s e a n t e s d e l la z o , y s ó l o la s v a r i a b l e s g e n e r a d a s p o r el
c o m p ila d o r (c u y o s v a lo re s n o p u e d e p e d ir el u s u a rio ) e s ta rá n in d e fin id a s a la e n ­
t r a d a d e l la z o . S i e s t e n o e s el c a s o p a r a a l g u n a v a r i a b l e d e i n d u c c i ó n i , e n t o n c e s el
p ro b le m a es s im ila r al d e tra s la d o d e c ó d ig o q u e se e s tu d ia rá m á s a d e la n te .

E lim in a c ió n d e s u b e x p r e s io n e s c o m u n e s g lo b a le s

S i s e r e a l iz a u n a e l i m i n a c i ó n d e s u b e x p r e s i o n e s c o m u n e s g lo b a l e s p a r a la e x p r e s i ó n
a + b , t a m b i é n a f e c t a n u n n ú m e r o l i m i t a d o d e b l o q u e s d e f o r m a s s i m p l e s . S i t e s la
v a ria b le u tiliz a d a p a r a c o n te n e r el v a lo r d e a + b , e n to n c e s e n a lg u n o s b lo q u e s q u e
c a lc u le n a + b se p u e d e s u stitu ir

c := a+b

por

t := a+b
c := t

E s ta c la s e d e m o d i f i c a c i ó n se p u e d e ll e v a r a c a b o c o n lo s m é t o d o s p a r a b l o q u e s b á ­
s ic o s q u e y a s e h a n e s t u d i a d o .
728 O PTIM A CIO N DE C O D IG O

E n o tro s b lo q u e s, u n u s o c o m o d : = a + b p u e d e ser s u s titu id o p o r u n uso d : = t .


P a ra m a n e ja r esta situ a c ió n c o n los m é to d o s a n te rio re s , só lo h a y q u e o b s e rv a r e n el
G D A p a r a este b lo q u e q u e el v alo r d e t p e r m a n e c e to d o el tie m p o e n el v a lo r del
n o d o p a ra a + b ( q u e a p a re c e rá e n el G D A p a r a el c ó d ig o fu e n te , p e ro q u e , p o r lo
d e m á s, n o a p a re c e ría e n el G D A p a r a el c ó d ig o o p tim a d o ).

T r a s la d o de código

H a y o tra s tr a n s f o r m a c io n e s q u e n o s o n fáciles d e realizar. P o r e je m p lo , su p ó n g ase


q u e se sa c a u n a p ro p o sic ió n

s: a : = b + c

d e u n la z o p o r q u e e s u n in v a ria n te del lazo. Si se lla m a al d e p u r a d o r d e n t r o del lazo,


n o se sa b e si la p ro p o s ic ió n s y a h a sid o e je c u ta d a e n el p r o g r a m a fu e n te y p o r t a n ­
t o n o se p u e d e s a b e r si el v a lo r e n c u r s o d e a es el q u e el u s u a r io v e ría e n el p r o ­
g r a m a fuente.
U n a p o s ib ilid a d es in s e rta r en el c ó d ig o o p ti m a d o u n a n u e v a v a ria b le q u e , d e n ­
tr o del lazo, in d iq u e si se h a a sig n a d o a e n el lazo (lo q u e só lo p u e d e o c u r r ir e n la
p o sic ió n a n t e r i o r d e la p ro p o s ic ió n s). S in e m b a r g o , esta e stra te g ia p u e d e n o s ie m p re
ser a d e c u a d a , p o r q u e p a ra u n a fiabilidad ab so lu ta, se d e b e u tiliz ar só lo el c ó d ig o real,
n o u n a v ersió n del c ó d ig o c o n s tr u id a e s p e c ia lm e n te p a r a la d e p u ra c ió n .
S in e m b a r g o , h a y u n c a so esp ecial c o m ú n q u e se p u e d e m e jo ra r. S u p ó n g a s e q u e
el b lo q u e B q u e c o n tie n e a la p ro p o sic ió n s e n el p r o g r a m a f u e n te d iv id e el la z o en
d o s c o n j u n t o s d e n o d o s : los q u e d o m i n a n a B y los d o m i n a d o s p o r él. A d e m á s , s u ­
p óngase q u e to d o s los p redecesores del e n c a b e z a m ie n to son d o m i n a d o s p o r B, c o m o
se su g iere e n la fig u ra 10.71. E n to n c e s , la p r im e r a vez q u e se pase p o r los b lo q u e s

F ig. 1 0 .7 1 . U n b l o q u e q u e d iv id e u n la z o e n d o s partes.
EJERCICIOS 729

q u e d o m i n a n a B, se p u e d e s u p o n e r q u e a n o h a sid o a sig n a d a en el lazo, m ie n tra s


q u e la p r im e r a vez q u e se pase p o r los b lo q u e s q u e d o m i n a /?, a h a sid o a s ig n a d a en
la p ro p o sic ió n s. P o r s u p u e s to , a p a r ti r d e la s e g u n d a v ez in clu sive q u e se p a se p o r
lazo, a h a b rá sid o a s ig n a d a e n s.
Si la lla m a d a al d e p u r a d o r es o c a s io n a d a p o r u n e r r o r d u r a n te la e je c u c ió n , es
m u y p r o b a b le q u e el e r r o r q u e d e d e s c u b ie rto la p r im e r a vez q u e se re c o rre el lazo.
Si ese es el caso , e n to n c e s sólo h a y q u e sab er si se está e n c im a o d e b a j o d e B e n la
fig u ra 1 0 .7 1. E n to n c e s , se sa b e si el v a lo r d e a es el d e fin id o e n s, e n c u y o c a s o b asta
im p r i m i r el v a lo r d e a p r o d u c id o p o r el c ó d ig o o p tim a d o . o si el v a lo r d e a es el q u e
te n ia a a la e n t r a d a del lazo e n la v ersió n fu e n te del p ro g ra m a . E n el s e g u n d o caso,
p o c o se p u e d e hacer, e x c e p to si

1. el d e p u r a d o r tie n e a su d isp o sic ió n la in f o r m a c ió n so b re las d e fin ic io n e s d e a l­


c a n c e , ta n to p a r a el p r o g r a m a fu e n te c o m o p a r a el p r o g r a m a o p tim a d o ;

2. hay u n a d e fin ic ió n ú n ic a de a q u e a lc a n z a el e n c a b e z a m ie n to e n el p r o g r a m a
fu en te , y

3. esa d e fin ic ió n e s ta m b ié n la ú n ic a d e fin ic ió n d e u n a v ariable x q u e a lc a n z a el


p u n t o d o n d e se lla m ó al d e p u r a d o r .

Si se c u m p le n to d a s estas c o n d ic io n e s , e n to n c e s se p u e d e im p r im ir el v alo r d e x y
d e c ir q u e es el v a lo r d e a.
S e d e b e a d v e r tir al le c to r q u e esta lín ea d e r a z o n a m ie n to n o se c u m p le si el d e ­
p u r a d o r fue lla m a d o p o r u n p u n t o d e r u p tu r a in s e rta d o p o r el u s u a rio , p o r ta n to ,
n o h a y ra z ó n p a r a s o sp e c h a r q u e se está re c o r r ie n d o el la z o p o r p r im e r a vez. Sin
e m b a rg o , si se e s tá n u tiliz a n d o p u n to s d e r u p tu r a in s e rta d o s p o r el u s u a rio , e n to n c e s
ta m b ié n p u e d e s e r r a z o n a b le in s e r ta r c ó d ig o d e n t r o del p r o g r a m a d e p u r a d o p a ra
a y u d a r al d e p u r a d o r a s a b e r si ésta es la p r im e r a vez q u e se re c o rre el lazo, u n a so­
lu c ió n q u e ya se m e n c io n ó p e ro q u e p u e d e n o s e r a d e c u a d a p o r q u e a lte ra el c ó d ig o
o p tim a d o .

E JE R C IC IO S

10.1 C o n sid érese el p ro g ra m a p a ra la m u ltip licac ió n d e m atrices d e la figura 10.72.

begin
for i := 1 to n do
for j := 1 t o n d o
c li , j J := 0;
for i := 1 to n do
for j := 1 t o n do
for k := 1 t o n do
c (i * j ] := c [ i , j ) + a[i,k] * b[k,j]
end

F ig. 1 0 .7 2 . P ro g r a m a para m u ltip lic a c ió n d e m atrices.


730 O PTIM A CIO N DE CODIGO

a ) S u p o n ie n d o q u e a a . b y c se Ies h a a s ig n a d o m e m o r i a e s tá tic a y q u e
h a y c u a t r o b y te s p o r p a la b r a e n u n a m e m o r ia d ir c c c io n a d a p o r bytes.
p r o d ú z c a n s e p r o p o s ic io n e s d e tr e s d ire c c io n e s p a r a el p r o g r a m a d e la fi­
g u r a 10.72.
b) G e n é re s e c ó d ig o d e m á q u in a o b je to p a r a las p ro p o s ic io n e s d e tres d ire c ­
ciones.
c) C o n s tr ú y a s e u n g rafo d e flu jo a p a r ti r d e las p ro p o s ic io n e s d e tres d ire c ­
ciones.
d ) E lim ín e n s e las s u b e x p re s io n e s c o m u n e s d e c a d a b lo q u e básico.
e) E n c u é n tr e n s e los la zo s e n el g rafo d e flujo.
0 S á q u e n s e los cá lc u lo s in v a ria n te s d e los lazos.
g) E n c u é n tre n se las variables d e in d u c c ió n d e c a d a lazo y elim ín e n se c u a n d o
sea posible.
h) G e n é r e s e c ó d ig o d e m á q u i n a o b j e t o a p a r t i r d e l g r a f o d e flu jo d e g).
C o m p á r e s e el c ó d ig o c o n el p r o d u c id o e n b).

10.2 C a lc ú le n se las d e fin ic io n e s d e a lc a n c e y las c a d e n a s d e uso y d e fin ic ió n para


el g rafo d e flujo o rig in a l del ejercicio 10. le ) y el g rafo d e flujo final d e 10. lg).

10.3 El p r o g r a m a d e la fig u ra 10.73 c u e n t a los n ú m e r o s p r im o s d e sd e 2 a n u ti­


liz a n d o el m é to d o de la c rib a s o b re u n a m a tr iz d e b id a m e n te g ra n d e .

b eg in
r e a d n;
for i := 2 to n do
a [i ) := true; /(*) inicialización */
cuenta := 0;
for i := 2 t o n ** .5 d o
if a(i] then /* i e s p r i m o */
begin
cuenta := c u e n t a + 1;
for j ¡= 2 . i t o n b y i do
a (j ] := f a l s e
/* j e s d i v i s i b l e p o r i */
end;
print cuenta
end

Fig. 10.73. P rogram a para calcular n ú m e ro s prim os.

a) T ra d ú z c a s e el p r o g r a m a d e la fig u ra 10.73 a p ro p o s ic io n e s d e tres d irec­


c io n e s s u p o n ie n d o q u e a tie n e a sig n a d a m e m o r ia estática.
b ) G e n é re s e c ó d ig o d e m á q u in a o b je to a p a r ti r d e las p ro p o s ic io n e s d e tres
d irec cio n es.
c) C o n s tr ú y a s e u n g rafo d e flujo a p a r ti r d e las p ro p o s ic io n e s d e tres d irec­
ciones.
d) M u é stre se el á rb o l d e d o m in a c ió n p a r a el g rafo d e flu jo d e a).
E JE R C IC IO S 731

e) Para el grafo de flu jo de c), indíquense las aristas de retroceso y sus lazos
naturales.
0 Trasládense los cálculo s invariantes fuera de los lazos utilizan d o el algo­
ritm o 10.7.
g) E lim ín en se las variables de in d u cció n cuando sea posible.
h) Propágucnse las proposiciones de co pia cuando sea posible.
i) ¿Es posible la com presión de lazos? Si lo es, hágase.
j ) En el supuesto de que n siem pre sea par, despliégúense lazos internos una
vez cada uno. ¿Q ué nuevas optim aciones son posibles ahora?
10.4 Repítase el ejercicio 10.3 suponiendo que a a se le ha asignado m em oria d i­
nám ica, siendo a p n un apuntador a la prim era palabra de a.

10.5 Para el grafo de flu jo de la figura 10.74, calcúlense:


a) Las cadenas de uso y d efin ició n y de d efin ició n y uso.
b) Las variables activas al final de cada bloque.
c) Las expresiones disponibles.

Fig. 10.74. G rafo de flujo.

10.6 ¿Es posible realizar un cá lcu lo previo de una constante en la figura 10.74? Si
lo es, hágase.
10.7 ¿H ay subexpresiones com unes en la figura 10.74? Si es así, elim ínense.

10.8 Se dice que una expresión e está m u y ocupada en el punto p si, independien­
temente del cam ino que se tom e desde />, la expresión e será evaluada antes
de que se definan cu alq u iera de sus operandos. Proporciónese un algoritm o
de flu jo de datos al estilo de la sección 10.6 para en co n trar todas las expre­
sio n es m u y ocupadas. ¿Q ué o p e rad o r de c o n flu e n c ia u tiliz a usted?, y ¿la
732 O PTIM A CIO N DE C O D IG O

p ro p a g a c ió n se h a c e h acia a d e la n te o h a c ia a trá s? A p liq u e su a lg o ritm o al


g rafo d e flu jo d e la figura 10.74.

* 1 0 .9 Si la e x p re sió n e está m u y o c u p a d a e n el p u n t o /?, se p u e d e elevar e c a lc u lá n ­


d o l a e n p y p r e s e r v a n d o s u v a lo r p a r a q u e p u e d a s e r u ti liz a d o p o s t e r i o r ­
m e n te . (Nota: E sta o p tim a c ió n g e n e r a lm e n te n o a h o r r a tie m p o , p e r o p u e d e
a h o r r a r espacio.) P ro p o rc ió n e se u n a lg o ritm o p a r a elevar las ex p resio n es m u y
ocupadas.

1 0 .1 0 ¿E x isten e x p re sio n e s q u e se p u e d a n e le v a r e n la figura 10.74? Si las h ay , elé­


velas.

1 0 .1 1 C u a n d o sea p o sib le p ro p á g u e n s e los p a so s d e c o p ia in tr o d u c id o s e n las m o ­


d ific a c io n e s d e los ejercicio s 10.6. 10.7 y 10.10.

10.12 U n bloque básico am pliado es u n a s e c u e n c ia d e b lo q u e s B , Bk tal q u e


p a r a 1 < i £ k , B¡ es el ú n ic o p re d e c e so r d e B „ , y /?, n o tie n e u n p red eceso r
ú n ic o . E n c u é n tre s e el b lo q u e b ásico a m p lia d o fin a liz a n d o c a d a n o d o en
a) la figura 10.39.
b) el g rafo d e flujo c o n s tr u id o e n el ejercicio 10.1c).
c) la figura 10.74.

* 1 0 .1 3 P ro p o rc ió n e s e u n a lg o ritm o q u e se e je c u te e n u n ti e m p o d e 0 { n ) so b re u n
g rafo d e flu jo p a ra e n c o n t r a r el b lo q u e b ásico a m p lia d o q u e finaliza en c a d a
nodo.

10.14 S e p u e d e re a liz a r u n a o p tim a c ió n d e c ó d ig o e n tr e b lo q u e s s in n in g ú n a n á li­


sis d e flujo d e d a to s c o n s id e ra n d o c a d a b lo q u e b ásico a m p lia d o c o m o si fuera
u n b lo q u e b ásico. P ro p o rc ió n e n s e a lg o ritm o s p a r a re a liz a r las sig u ie n tes o p ­
tim a c io n e s d e n t r o d e u n b lo q u e b ásico a m p lia d o . E n c a d a caso , in d iq u e s e el
e fe c to q u e p u e d e t e n e r s o b re o t r o s b lo q u e s b á s ic o s a m p lia d o s u n a m o d if i­
c a c ió n d e n t r o d e u n b lo q u e b ásico a m p lia d o .
a ) E lim in a c ió n d e s u b e x p re s io n e s c o m u n e s .
b ) C á lc u lo p rev io d e c o n s ta n te s .
c ) P ro p a g a c ió n d e copias.

10.15 P a ra el g rafo d e flujo d e l e jercicio 10.1c):


a ) E n c u é n tr e s e u n a se c u e n c ia d e re d u c c ió n T\ — 7 \ p a r a el grafo.
b) E n c u é n tre s e la s e c u e n c ia d e g rafo s d e in tervalo .
c ) ¿ C u á l es el grafo d e flujo lim ite ? ¿Es re d u c ib le el g rafo d e flujo?

10.16 R e p íta s e el e jercicio 10.15 p a r a el g rafo d e flujo d e la fig u ra 10.74.

**10.17 D e m u é s tre s e q u e las sig u ie n tes c o n d ic io n e s son e q u iv a le n te s (so n d efin icio ­


n e s a lte r n a tiv a s d e “g rafo d e flu jo re d u c ib le ” ).
a ) El lím ite d e la re d u c c ió n 7 j - 7 \ es u n so lo n o d o .
b) El lím ite del a n álisis d e in te rv a lo es u n so lo n o d o .
c) El grafo d e flujo p u e d e te n e r s u s aristas d iv id id as e n d o s clases; u n a fo rm a
u n g rafo acíclico y la o tra , las arista s “d e re tro c e so ”, c o n s ta d e a ris ta s c u ­
yas c a b e z a s d o m i n a n a sus colas.
d ) El g rafo d e flu jo n o tie n e su b g ra fo s c o n fo rm a c o m o la q u e se m u e s tr a en
EJERCICIOS 733

la fig u ra 10.75. A q u í, n0 es el n o d o inicial, y n0, a . b y c s o n to d o s d is tin ­


tos, c o n la e x c e p c ió n d e q u e es p o s ib le q u e a = n0. L as flech as re p re se n ­
ta n c a m in o s d e n o d o s d is ju n t o s (e x c e p to lo s p u n t o s e x tre m o s , p o r s u ­
puesto).

Fig. 10.75. Subgrafos p ro hib ido s p a ra grafos de flujo reducibles.

10.18 P r o p o rc ió n e n s e a lg o ritm o s p a r a c a lc u la r (a ) e x p re sio n e s d is p o n ib le s y (b) v a­


riab les a c tiv a s p a r a el le n g u a je c o n a p u n t a d o r e s q u e se e s tu d ió e n la sección
10.8. A segúrese q u e h a c e s u p o sic io n e s c o n s e rv a d o ra s a c e rc a d e g en , desact ,
uso y d e f e n (b).
10.19 P ro p o rc ió n e s e u n a lg o ritm o p a r a c a lc u la r las d e fin ic io n e s d e a lc a n c e e n tre
p r o c e d im ie n to s u tiliz a n d o el m o d e lo d e la sección 10.8. D e n u e v o , asegúrese
d e q u e h a c e a p r o x im a c io n e s c o n s e r v a d o r a s a la verd ad .

10.20 S u p ó n g a se q u e los p a r á m e tr o s se p a sa n p o r v a lo r e n lu g a r d e p o r referencia.


¿ P u e d e n d o s n o m b r e s s e r s in ó n im o u n o d e o tro ? ¿ Q u é p a sa si se u tiliz a e n ­
lace d e c o p ia y re sta u ra c ió n ?

10.21 ¿C uál es la p r o f u n d id a d d e l g rafo d e flu jo del ejercicio 10. le)?

**10.22 D e m u é s tre s e q u e la p r o f u n d id a d d e u n g rafo d e flu jo re d u c ib le n u n c a e s m e­


n o r q u e el n ú m e r o d e veces q u e se d e b e rea liz a r el análisis d e in te rv a lo s p a ra
p r o d u c ir u n solo n o d o .

*10.23 G e n e ra líc e se el a lg o ritm o d e la secció n 10.8 d e a n álisis d e flujo d e d a to s b a ­


s a d o e n la e s tr u c tu r a p a r a u n m a r c o d e flujo d e d a to s g e n e ra l en el s e n tid o
d e la sección 10.11. ¿ Q u é s u p o sic io n e s so b re F y A h a y q u e h a c e r p a r a ase­
g u ra rs e d e q u e u n a lg o ritm o fu n c io n e ?

* 1 0 .2 4 S e o b tie n e u n p o d e ro s o e in te re s a n te m a r c o p a r a a n álisis d e flu jo d e d ato s


im a g in a n d o q u e los “ v a lo re s” q u e v a n a s e r p ro p a g a d o s s o n to d a s las p a rti­
cio n es d e ex p resio nes posibles a s í q u e d o s ex p resio nes están e n la m is m a clase
só lo si tie n e n el m is m o valor. P a ra e v ita r lista r to d a la in fin id a d d e ex p resio ­
n e s posibles, se p u e d e n r e p r e s e n ta r d ic h o s v alo res lis ta n d o só lo el m ín im o
d e e x p re sio n e s e q u iv a le n te s a a lg u n a o tr a ex p re sió n . P o r e je m p lo , si se e je ­
c u t a n las p ro p o sic io n e s

A := B
C := A + D
734 O PT IM A C IO N DE C O D IG O

e n t o n c e s s e t i e n e n la s s i g u i e n t e s e q u i v a l e n c i a s m í n i m a s : A = B y c = A + D.
D e a q u í se d e riv a n o tra s e q u iv a le n c ia s, c o m o c = B + D y A + E = B + E,
p e r o n o h a y p o r q u é lista rla s e x p líc ita m e n te .
a ) ¿ C u á l e s el o p e r a d o r d e r e u n i ó n o d e c o n f l u e n c i a a d e c u a d o p a r a e s t e
m arco ?
b ) P r o p o r c i ó n e s e u n a e s t r u c t u r a d e d a t o s p a r a r e p r e s e n t a r v a l o r e s y u n a l­
g o ritm o p a ra im p la n ta r el o p e ra d o r d e re u n ió n .
c ) ¿ C u á l e s s o n la s f u n c i o n e s a d e c u a d a s p a r a a s o c i a r l a s c o n l a s p r o p o s i c i o ­
n e s ? E x p l i q ú e s e e l e f e c t o q u e d e b e r í a t e n e r l a f u n c i ó n a s o c i a d a c o n a s ig ­
n a c io n e s c o m o A : = b + c e n u n a p a rtic ió n .
d ) ¿E s e ste m a rc o d is trib u tiv o ? ¿ E s m o n ó to n o ?

10.25 ¿ C ó m o s e u t i l i z a r í a n lo s d a t o s r e u n i d o s p o r e l m a r c o d e l e j e r c i c i o 1 0 .2 4 p a r a
r e a l i z a r lo s i g u i e n t e ?
a) E lim in a c ió n d e su b e x p re sio n e s c o m u n e s.
b ) P r o p a g a c ió n d e co p ias.
c) C á l c u l o p r e v i o d e c o n s t a n t e s .

*10.26 P r o p o r c i ó n e n s e p r u e b a s f o r m a l e s d e l o s i g u i e n t e a c e r c a d e l a r e l a c i ó n < s o ­
b re m a lla s.
a ) a < b y a < c im p lic a q u e a < ( b A c ) .
b ) a < ( b A c ) i m p l i c a q u e a < b.
c ) a < b y b < c i m p l i c a q u e a < c.
ó ) a < b y b < a i m p l i c a q u e a = b.

**10.27 D e m u é s t r e s e q u e l a s i g u i e n t e c o n d i c i ó n e s n e c e s a r i a y s u f i c i e n t e p a r a q u e el
a lg o ritm o d e flu jo d e d a to s ite ra tiv o , c o n o r d e n a m ie n to e n p r o f u n d id a d ,
c o n v e r j a d e n t r o d e 2 m á s la s p a s a d a s e n p r o f u n d i d a d . P a r a t o d a s la s f u n c i o -
n e s f y g y v a l o r a:

f ( g (a)) > f ( a ) A g (a) A a

10.28 D e m u é s t r e s e q u e lo s m a r c o s p a r a d e f i n i c i o n e s d e a l c a n c e y p a r a e x p r e s i o n e s
d i s p o n i b l e s c u m p l e n la c o n d i c i ó n d e l e j e r c i c i o 1 0 .2 7 . N o ta : D e h e c h o , e s t o s
m a r c o s c o n v e r g e n e n 1 m á s la s p a s a d a s e n p r o f u n d i d a d .

**10.29 ¿ S e d e d u c e l a c o n d i c i ó n d e l e j e r c i c i o 1 0 .2 7 d e l a m o n o t o n i c i d a d ? ¿ D e la d is -
tr ib u tiv id a d ? ¿A la in v e rsa ?

10.30 E n l a f i g u r a 1 0 .7 6 s e o b s e r v a n d o s b l o q u e s b á s ic o s , el p r i m e r o e s c ó d i g o “ i n i ­
c i a l ’' y el s e g u n d o e s u n a v e r s i ó n o p t i m a d a .
a ) C o n s t r ú y a n s e lo s G D A p a r a lo s b l o q u e s d e la f i g u r a 1 0 .7 6 ( a ) y ( b ) . C o m ­
p r u é b e s e q u e , s u p o n i e n d o q u e só lo J e s tá a c tiv a a la s a lid a , e sto s d o s b lo ­
q u e s s o n e q u iv a le n te s.
b ) A n ó t e s e e l G D A c o n lo s m o m e n t o s e n q u e s e c o n o c e e l v a l o r d e c a d a
v a ria b le e n c a d a n o d o .
c ) I n d í q u e s e , e n c a s o d e q u e o c u r r a u n e r r o r e n c a d a u n a d e la s p r o p o s i c i o ­
n e s ( T ) h a s t a ( 4 ') , e n q u é p r o p o s i c i ó n d e la f i g u r a 1 0 .7 6 ( a ) s e i n d i c a r í a
q u e se p ro d u jo u n erro r.
E JE R C IC IO S 735

E := A+B n E := A + B
1)
2) F := E-C 2 ') E := E-C

3) G := F*D 3') F := E*D

4) H := A + B 4') J := E+F

5) I := I-C
6) J := I+G

(a) In i c i a l (b) O p t i m a d o

F ig . 1 0 .7 6 . C ó d i g o in i c i a l y c ó d i g o o p t i m a d o .

d ) Para cada un o de los errores de la parte c), indíquense las variables de la


figura 10.76(a) para las que es posible ca lcu la r un valo r, y cóm o se hace.
e) S up ó n gase q u e se pueden u t iliz a r leyes a lg e b ra ica s v á lid a s co m o ‘¿si
a + b = c en to n ces a = c - b ”. ¿ M o d ific a ría su resp uesta a d)?

10.31 G eneralícese el ejem plo 10.14 para tener en cuenta un co n ju n to arbitrario


de proposiciones de ruptura. G eneralícese asim ism o para que perm ita pro­
posiciones de co n tin u a ció n (continué), que no interrum pen el lazo interno
sin o qu e pasan directam ente a la siguiente iteración del lazo. Sugerencia:
U tilícen se las técnicas desarrolladas en la sección 10.10 para grafos de flu jo
reducibles.
1 0 .3 2 Dem uéstrese que en el algoritm o 10.3, los co njunto s ent y sa l de d efin icio ­
nes n u n ca se red ucen . D e m anera s im ila r, dem uéstrese qu e en el algo­
ritm o 10.4 estos co n ju n to s de expresiones nunca aum entan.

1 0 .3 3 G eneralícese el algoritm o 10.9 para la e lim in a ció n de variables de in d u cció n


al caso en qu e las constantes m u ltip licativas puedan ser negativas.

1 0 .3 4 Tóm ese el algoritm o de d eterm inación a dónde pueden señalar los apunta­
dores de la sección 10.8 y generalícese al caso en que se perm ite que apunten
a otros apuntadores.
*10 .3 5 C u an d o se estim an cada uno de los siguientes co n ju n to s, in d íquese si las es­
tim acio n es dem asiado grandes o dem asiado pequeñas son conservadoras.
E xp liqúese su respuesta en térm inos del uso previsto para la in fo rm ació n.
a) Expresiones disponibles.
b) Las variables m odificadas p o r u n procedim iento.
c) Las variables no m odificadas por u n procedim iento.
d ) Las variables de in d u cció n que pertenecen a una determ inada fam ilia.
e) Las proposiciones de copia que alcanzan un punto dado.

*10 .3 6 R efínase el algoritm o 10.12 para que calcule los sin ó n im o s de un a variable
dada en u n punto dado.
*10 .3 7 M odifiqúese el algoritm o 10.12 para los casos en que los parám etros se pa­
san
a) por valor,
b) p o r copia y restauración.
736 O PT IM A C IO N DE C O D IG O

* 1 0 .3 8 Demuéstrese que el algoritm o 10.33 converge en un supraconjunto (no ne­


cesariam ente propio) de las variables realm ente m odificadas.
* 1 0 .3 9 G eneralícese el algoritm o 10.13 para determ inar las variables m odificadas
en caso de que se perm itan variables con procedim ientos com o valores.
* 1 0 .4 0 Demuéstrese que en cada grafo de intervalos cada nodo representa una re­
gión del grafo de flu jo original.

10.41 Demuéstrese que el algoritm o 10.16 calcula correctam ente el conjunto de


dom inadores de cada nodo.

* 1 0 .4 2 M odifiqúese el algoritm o 10.17 (d efin icion es de alcance basadas en la es­


tructura) para que calcule las definiciones de alcance sólo para pequeñas re­
giones designadas, sin que sea necesario que todo el grafo de flujo esté pre­
sente en m em oria inm ediatam ente. Asegúrese de que su resultado sea
conservador. Adapte su algoritm o a las expresiones disponibles. ¿Cuál de ellos
podrá proporcionar inform ación útil?

* 1 0 .4 3 En la sección 10.10 se propuso un aceleram iento al algoritm o 10.17 basado


en la com binación de una reducción T { y una reducción T 2. Demuéstrese
que la m odificación se realizó correctam ente.

10.44 Generalícese el método iterativo de la sección 10.11 para problem as de flujo


hacia atrás.

**10.45 Demuéstrese que cuando converge el algoritm o 10.18, la solución resultante


es < la solución de rsc, dem ostrando que para cada cam ino P de longitud /,
después de i iteraciones, ent [B¿1 ^ f P [T].

1 0 .4 6 E n la figura 10.77 hay un grafo de flu jo de un program a en el lenguaje hi­


potético presentado en la sección 10.12. Encuéntrese la m ejor estim ación de
los tipos de cada variable utilizando el algoritm o 10.19.

N O T A S B IB L IO G R A F IC A S

Se puede encontrar inform ación adicional sobre optim ación de código en las refe­
rencias Cocke y Schwartz [1970], Abel y B ell [1972], Schaefer [1973], Hecht [1977]
y M uch nick y Jones [1981]. A lien [1975] proporciona una bibliografía sobre opti­
m ación de programas.
En los libros se describen m uchos com piladores optim adores. Ershov [1966] es­
tudia uno de los prim eros com piladores que utilizaba sofisticadas técnicas de opti­
m ación. Low ry y M edlock [1969] y Scarborough y K o lsky [1980] detallan la cons­
trucción de com piladores optim adores para optim ación de F O R T R A N . Busam y
Englund [1969] y M etcalf [1982] describen técnicas adicionales para la optim ación
de F O R T R A N . W u lf y colaboradores [1975] estudian el diseño de un com pilador
optim ador influyente para BLISS.
A lien y colaboradores [1980] describen un sistem a construido para hacer expe­
rim entos con optim aciones de program as. C ocke y M arkstein [1980] señalan la
N O T A S BIBLIO G R AFICA S 737

Fig. 10.77. P ro g ram a d e ejem plo para inferencia d e tipos.

efectiv id a d d e v arias o p tim a c io n e s p a r a u n len g u aje del tip o d e P L /I. A n k la m , C u t-


ler. H e in e n y M a c L a re n [1982] d e s c rib e n la im p la n ta c ió n d e tr a n s f o rm a c io n e s d e
o p tim a c ió n u tiliz ad as e n c o m p ila d o re s p a r a P L /I y C. A u s la n d e r y H o p k in s [1982]
in f o r m a n d e u n c o m p ila d o r p a r a u n a v a r ia n te d e P L /I q u e u tiliza u n a lg o ritm o sen­
cillo p a r a p r o d u c ir c ó d ig o in te r m e d io d e b a jo nivel q u e d e s p u é s se m e jo r a c o n tra n s ­
fo rm a c io n e s d e o p tim a c ió n globales. F r e u d e n b e rg e r, S c h w a rtz y S h a rir [1 9 8 3 ] des­
c r ib e n e x p e r ie n c ia s c o n u n o p t i m a d o r p a r a S E T L . C h o w [1 9 8 3 ] in f o r m a s o b re
e x p e rim e n to s c o n u n o p ti m a d o r tra n s p o r ta b le e in d e p e n d ie n te d e la m á q u in a p a ra
Pascal. P ow ell [1984] d e sc rib e u n c o m p ila d o r d e o p tim a c ió n tra n s p o r ta b le in d e p e n ­
d ie n te d e la m á q u in a p a r a M O D U L A - 2 .
El e s tu d io s is te m á tic o d e la s té c n ic a s p a r a a n álisis d e flujo d e d a to s c o m ie n z a
c o n A lien [1970] y C o c k e [19 70], d e s d e q u e p u b lic a ro n j u n t o s c o m o A lien y C o ck e
[1976], a u n q u e v ario s m é to d o s d e a n álisis d e flu jo d e d a to s y a h a b ía n sid o u tiliza­
dos.
El a n álisis d e flu jo d e d a to s d irig id o p o r la sin tax is, c o m o se in tr o d u jo en la sec­
c ió n 10.5. h a s id o e m p l e a d o e n B L IS S ( W u l f y c o l a b o r a d o r e s [1 9 7 5 ], G e s c h k e
[1972]). S I M P L (Z e lk o w itz y Bail [1974]), y M O D U L A - 2 (P ow ell [1984]). E n las
referen cias H e c h t y SchafTer [1975], H e c h t [1977] y R o se n [1977] a p a re c e n e stu d io s
a d ic io n a le s so b re esta fa m ilia d e alg o ritm o s.
El e n f o q u e ite ra tiv o d e l a n álisis d e flu jo d e d a to s p r e s e n ta d o e n la secció n 10.6
se r e m o n t a a V yssotsky (véase V yssotsky y W e g n e r [1963]). q u e u tiliz ó el m é to d o
e n 1962 e n u n c o m p ila d o r d e F O R T R A N . El u s o d e o r d e n a m i e n t o en p ro f u n d id a d
p a r a m e jo ra r la efic ien cia p ro v ie n e d e H e c h t y U llm a n [1975].
738 O PTIM ACIO N D E CO DIG O

El e n f o q u e d e a n álisis d e in te rv a lo s a p lic a d o al análisis d e flu jo d e d a to s fue ini­


c ia d o p o r C o c k e [ 1970]. K e n n e d y [ 1971) o rig in a el uso d e a n á lis is d e in te rv a lo s p a ra
p ro b le m a s d e flu jo d e retro ceso , c o m o variab les activ as. H a y m o tiv o p a r a cre e r, se­
g ú n K e n n e d y [19 76], q u e los m é to d o s b a s a d o s e n in te rv a lo s s o n m á s efic ien te s qu e
los iterativ o s, si el le n g u a je q u e se está o p t i m a n d o tie n d e , si acaso , a p r o d u c ir p o c o s
grafos d e flujo n o red u cib les. La v a ria n te a q u í u tiliz ad a, b a s a d a e n las tr a n s f o r m a ­
c io n e s 7j y 7 \ , es d e U llm a n [1973]. U n a v ersió n u n p o c o m á s r á p id a q u e a p ro v e ­
c h a q u e la m a y o r í a d e la s re g io n e s t i e n e n u n a s o la s a lid a a p a r e c i ó e n G r a h a m y
W e g m a n [1976].
D e A lien [1 9 7 0 ] es la d e fin ic ió n o rig in a l d e u n grafo d e flujo re d u c ib le . u n o q u e
se c o n v ie rte e n u n so lo n o d o d e s p u é s d e re p e tid o s a n álisis d e in terv alo s. Se e n c u e n ­
t r a n c a r a c te r iz a c io n e s e q u i v a l e n t e s en H e c h t y U l l m a n [1 9 7 2 , 1 97 4 ], K a s y a n o v
[1 973], y T a r ja n [19 7 4b ]. L a s e p a ra c ió n d e n o d o s p a r a g rafo s d e flujo n o red u cib les
se d e b e a C o c k e y M ille r [1969].
L a idea de q u e el flujo d e c o n tro l e s tru c tru a d o se m o d e la m e d ia n te grafos d e flujo
re d u cib les v ie n e e x p re s a d a en K o sa ra ju [1 974], K a s a m i. P e te rso n y T o k u r a [1973].
y C h e rn ia v s k v . H e n d e r s o n y K e o h a n e [1976]. B ak er [1977] d e sc rib e s u u s o en u n
a lg o ritm o p a ra e s tru c tu ra c ió n d e p ro g ra m a s.
El e n f o q u e d e la te o ría d e re tíc u lo s al a n álisis d e flu jo d e d a to s iterativ o c o m e n z ó
en K ildall [19 73]. T e n n e m b a u m [1 9 7 4 ] y W e g b re it [1975] p re s e n ta n fo rm u la c io n e s
sim ilares. A K a m y U llm a n [1976] se d e b e la v ersió n e fic ien te del a lg o r itm o d e K il­
dall, d o n d e se u tiliz a o r d e n e n p ro f u n d id a d .
Si b ie n K ildall d io p o r s u p u e s ta la c o n d ic ió n d e d is trib u tiv id a d ( q u e n o satisface
r e a l m e n t e s u s m a r c o s c o m o el m a r c o p a r a el c á lc u lo d e c o n s t a n t e s del
E je m p lo 10.42). la validez d e la m o n o to n ic id a d fue p e rc ib id a en v ario s a r tíc u lo s q u e
p r o p o r c io n a b a n a lg o ritm o s d e flu jo d e d a to s , c o m o T e n n e n b a u m [1974], S ch w artz
[1 9 7 5 a . b]. G r a h a m y W e g m a n [1 976], J o n e s y M u c h n ic k [1 9 76], K a m y U llm a n
[ 19 7 7], y C o u s o t y C o u s o t [ 1977],
C o m o a lg o ritm o s d is tin to s exigen su p o sic io n e s d is tin ta s a c e rc a d e los d a to s , la
teo ría d e las p ro p ied a d es necesarias p a ra ciertos alg o ritm o s fue d e sa rro lla d a p o r K a m
y U llm a n [ 1977]. R o se n [ 1980] y T a r ja n [ 1981 ].
O tr a in d ic a c ió n q u e se d e d u j o del a r tíc u lo d e K ildall fue m e jo r a r los a lg o ritm o s
p a ra s o lu c io n a r los p ro b le m a s d e flujo d e d a to s ( p o r e je m p lo , el E je m p lo 10.42) q u e
p la n te ó . U n a idea c lav e es q u e los e le m e n to s del re tíc u lo n o tie n e n p o r q u é co n si­
d e ra rs e c o m o a tó m ic o s , sin o q u e se p u e d e e x p lo ta r el h e c h o d e q u e e n re a lid a d son
tr a n s f o rm a c io n e s d e variables a valores. V éase R e if y Lew is [1977] y W e g m a n y Z a-
d e c k [1985]. K o u [1977] e x p lo ta la idea p a r a p ro b le m a s m á s c o n v e n c io n a le s .
L a referen cia K e n n e d y [1981] es u n a e v a lu a c ió n d e las té c n ic a s d e a n álisis de
flujo d e d a to s, y C o u s o t [ 1981 ] a n a liz a las id e as d e la te o ría d e retículos.
G e a r [1 9 6 5 ] in tr o d u jo las o p tim a c io n e s d e la zo s b ásicas d e tra s la d o d e c ó d ig o y
u n a fo rm a lim ita d a d e e lim in a c ió n d e v aria b les d e in d u c c ió n . A lien [1969] es u n
a r t i c u l o f u n d a m e n t a l s o b re o p t i m a c i ó n d e lazo s: A lie n y C o c k e [1 9 7 2 ] y W a ite
[1976b] son e s tu d io s m á s a m p lio s d e té c n ic a s e n el área. M o re l y R e n v o is e [1979]
d e sc rib e n u n a lg o ritm o q u e e lim in a s im u ltá n e a m e n te d e lo s la zo s cá lc u lo s r e d u n ­
d a n te s e in v a rian tes.
NOTAS B IB L IO G R A F IC A S 739

E l estudio de la e lim in a ció n de variables de in d u cció n de la sección 10.7 se basa


en Lo w ry y M edlock [1969]. Véase A lie n , C o cke y K ennedy [1981] para algoritm os
más poderosos.
U n alg o ritm o para algunos de los problem as de lazos no estud iado s detallada­
mente, com o averiguar si hay un cam ino desde a a b que no pase por c\ se pueden
resolver con un algoritm o eficiente de W egm an [1983].
Lo s pioneros del uso de dom inadores, tanto para la detección de lazos com o para
realizar traslado de código, fueron Lo w ry y M ed lo ck [1969], au n q ue ello s atribuyen
la idea general a Prosser [1959]. E l algoritm o 10.16 para en co n trar dom inadores fue
d escub ierto in d ep en d ien tem en te p o r P u rd o m y M o o re [ 19 7 2 ] y A h o y U llm a n
[1973a]. E l uso del ordenam iento en p ro fun d idad para acelerar los algoritm os es de
Hecht y U llm a n [1975], pero la m anera asintóticam ente m ás eficiente de realizar el
trabajo es de T a rja n [1974a]. Lengauer y T a rja n [1979] describen u n algoritm o efi­
ciente para encontrar dom inadores que es adecuado para uso práctico.
E l estudio de sin ó n im o s y el a n álisis entre prodedim ientos co m ienza co n S p ill-
m an [1971] y A lien [1974]. Se han desarrollado algunos métodos m ás poderosos que
los de la sección 10.8. E n general, consideran la relación sin ó n im o a cada punto del
program a para evitar algunos de los pares de sin ó n im o s im posibles que el algoritm o
“ descubre” . Estos trabajos in clu yen Barth [1978], B an n in g [1979] y W e ih l [1980].
Véase tam bién R yd e r [1979] y su co n strucció n de grafos de llam adas.
H ennessy [1981] estudia un aspecto sim ila r al del an álisis entre procedim ientos,
el efecto de las excepciones en el a n álisis de flu jo de datos de program as.
El artícu lo fundam ental de la d eterm inación de tipos m ediante a n álisis de flujo
de datos es T e n n e n b a u m [1974], sobre el qu e se basa n uestro estu d io de la sec­
ción 10.12. K a p la n y U llm a n [1980] pro p o rcio nan un algoritm o m ás poderoso para
la detección de tipos.
H ennessy [1982] an aliza la depuración sim b ó lica de código optim ado de la sec­
ción 10.13. V a rio s a rtícu lo s han intentado evaluar las m ejoras gracias a distintas op­
tim acio nes. E l v a lo r de un a o p tim ació n parece depender en gran m edida del le n ­
guaje que se está co m p iland o . Q uizás el lector q u ie ra co n su ltar el estudio clásico de
optim ación de F O R T R A N en K n u th [1971b], o los artícu lo s de G ajew ska [1975],
Palm [1975], C o cke y K en n ed y [1976], C o cke y M arkstein [1980], C h o w [1983],
C h o w y H ennessy [1984] y Pow ell [1984].
O tro aspecto de la optim ación que no ha sido tratado a q u í es la optim ación de
lenguajes de “ m u y alto n iv e l” , com o el lenguaje de teoría de co n ju n to s S E T L , donde
se están m o dificando realm ente los algoritm os subyacentes y las estructuras de da­
tos. U n a optim ación central en este área es la e lim in a ció n generealizada de variables
de in d u cció n , com o en E a rle y [1975b], Fo n g y U llm a n [1976] , Paige y Schw artz
[1977] y Fong [1979].
O tro paso clave en la optim ación para lenguajes de m u y alto n ivel es la selección
de estructuras de datos; este tem a se an aliza en Schw artz [1975a, b], Lo w y R o vn e r
[1976] y Schonberg, Schw artz y S h a rir [1981].
Tam poco se han tocado los aspectos sobre la optim ación increm ental de código,
donde pequeñas m odificaciones al program a no exigen una reo p tim ació n com pleta.
R yder [1983] estudia el a n álisis de flu jo de datos increm ental, en tanto que Pollock
y SofTa [1985] intentan realizar o p tim ació n increm ental de bloques básicos.
740 O PT IM A C IO N DE C O D IG O

Por últim o, deben m encionarse algunas de las m uchas otras form as en que se
han u tilizad o las técnicas de a n álisis de flu jo de datos. Backhouse [1984] lo utiliza
en los grafos de transiciones asociados co n analizadores sintáctico s para la recupe­
ración de errores. H a rriso n [ 197 7] y S u zu ki e Ish ih ata [ 1 9 7 7 ] estudian su uso para
com probar los lím ites de m atrices durante la co m p ilació n .
U n o de los usos m ás sig n ificativo s del a n álisis de flu jo de datos fuera de la opti­
m ación de código está en el área de búsqueda estática (d urante la co m p ilació n ) de
errores del program a. Fosdick y O sterw eil [1976] es un artícu lo fundam ental, en tanto
que O sterw eil [ 1 9 8 1 ] , A d rio n , B ro n stad y C h e rn ia v sk y [1982], y Freudenberger
[ 1984] pro p o rcio nan algunos desarrollos m ás recientes.
|7411

C A P IT U L O 11

¿Quiere escribir
un compilador?

D e s p u é s d e h a b e r v is to lo s p r in c ip io s , té c n ic a s y h e r r a m i e n t a s p a r a el d is e ñ o d e
c o m p ila d o re s , su p ó n g a se q u e se q u ie re e scrib ir u n c o m p ila d o r. Si se tien e u n p la n ­
te a m ie n to p rev io , la im p la n ta c ió n re su lta m á s r á p id a y sencilla. E ste b re v e c a p ítu lo
resalta a lg u n o s a sp e c to s d e la c o n s tr u c c ió n d e c o m p ila d o re s . G r a n p a rte del análisis
se c o n c e n tr a e n la e s tr u c tu r a d e c o m p ila d o re s u tiliz a n d o el s is te m a o p e r a tiv o U N I X
y s u s h e rra m ie n ta s .

11.1 P R O Y E C T A N D O U N C O M P I L A D O R

U n c o m p i l a d o r n u e v o p u e d e s e r p a r a u n n u e v o le n g u a je f u e n te o p a r a p r o d u c i r
n u e v o c ó d ig o o b je to , o p a r a a m b o s p ro p ó s ito s . Si u tiliz a el m a r c o d e este lib ro , se
o b tie n e f in a lm e n te u n d is e ñ o p a r a u n c o m p ila d o r q u e c o n s ta d e u n c o n j u n t o d e
m ó d u lo s. D iv erso s facto res im p a c ta n el d is e ñ o e im p la n ta c ió n d e esto s m ó d u lo s.

A sp e c to s del len g u aje fuente

El “t a m a ñ o ” d e u n le n g u a je in flu y e e n el t a m a ñ o y n ú m e r o d e m ó d u lo s . A u n q u e
n o h a y u n a d e fin ic ió n p recisa p a r a el t a m a ñ o d e u n len g u aje, es e v id e n te q u e u n
c o m p ila d o r p a r a u n le n g u a je c o m o A d a o P L /I es m á s g r a n d e y difícil d e im p la n ta r
q u e u n c o m p ila d o r p a ra u n le n g u a je p e q u e ñ o c o m o R A T F O R (u n p re p ro c e s a d o r
d e F O R T R A N “ ra c io n a l" . K e m ig h a n [1 9 7 5 ]) o E Q N (u n len g u aje p a r a tip o grafía
d e m a te m á tic a s).
O tr o fa c to r i m p o r ta n te es h a s ta q u é p u n t o c a m b ia r á el le n g u a je fu e n te d u r a n te
el c u rs o d e la c o n s tru c c ió n del c o m p ila d o r . A u n q u e la esp ecificación del lenguaje
fu en te p u e d e p a re c e r in m u ta b le , p o c o s lenguajes p e rm a n e c e n iguales d u r a n te la vida
del c o m p ila d o r . I n c lu s o u n le n g u a je m a d u r o e v o lu c io n a , a u n q u e sea le n ta m e n te .
F O R T R A N , p o r e je m p lo , h a c a m b ia d o c o n s id e r a b le m e n te d e s d e 1957; las p ro p o ­
sicion es d e ite ra c ió n . H o lle rith y c o n d ic io n a le s e n F O R T R A N 7 7 s o n b a s ta n te d is ­
tin ta s d e las del le n g u a je o rig in al. R o sler [1984] in f o r m a s o b re la e v o lu c ió n d e C.
P o r o tr o la d o , u n len g u aje n u e v o , e x p e r im e n ta l, p u e d e s u frir c a m b io s d rástico s
al s e r im p la n ta d o . U n a f o r m a d e c r e a r u n n u e v o le n g u a je co n siste en h a c e r e v o lu ­
742 ¿Q U IE R E ESCRIBIR U N C O M P I L A D O R ?

c i o n a r u n c o m p ila d o r p a r a u n p r o to tip o o p e r a tiv o del le n g u a je h a s ta c o n v e rtirse en


u n o q u e satisfag a las n e c e s id a d e s d e c ie r to g r u p o d e u s u a rio s . M u c h o s d e los “ p e ­
q u e ñ o s ” len g u ajes d e s a rro lla d o s c o n el s is te m a U N I X c o m o A W K o E Q N se c re a ­
ro n d e esta fo rm a.
P o r ta n to , el e s c rito r d e u n c o m p ila d o r p u e d e p re v e r al m e n o s c ie r to c a m b io en
la d e fin ició n del le n g u a je fu e n te d u r a n te la v id a d e u n c o m p ila d o r . El d is e ñ o m o ­
d u la r y el uso d e h e r r a m ie n ta s p u e d e a y u d a r a l e s c rito r del c o m p ila d o r a e n fre n ta rs e
a este c a m b io . P o r e je m p lo , u tiliz a r g e n e ra d o re s p a r a im p la n t a r el a n a liz a d o r léxico
y el a n a l iz a d o r s in tá c tic o d e u n c o m p i l a d o r le p e r m i te al e s c r ito r d e l c o m p ila d o r
a c o m o d a r m á s fácilm en te m o d ificacio n es sin tácticas en la d e fin ició n del len g u aje q u e
si el a n a liz a d o r léxico y el s in tá c tic o e s tá n escritos d ir e c ta m e n te e n código.

A sp e c to s del len g u aje o b je to

L a n a tu ra le z a y lim ita c io n e s del le n g u a je o b je to y el e n t o r n o d e e je c u c ió n d e b e n ser


tr a ta d o s c o n c u id a d o p o r q u e ta m b ié n tie n e n u n a fu erte in flu e n c ia e n el d is e ñ o del
c o m p ila d o r y e n las estrateg ias de g e n e ra c ió n e n el d is e ñ o del c o m p ila d o r y e n las
estrateg ias d e g e n e ra c ió n d e c ó d ig o q u e d e b e utilizar. Si el len g u aje o b je to es nu ev o ,
q u ie n escrib e el c o m p ila d o r d e b e r á aseg u rarse d e q u e sea c o rre c to y d e q u e se c o m ­
p r e n d a n sus s e c u e n c ia s d e tie m p o s . U n a m á q u in a n u e v a o u n e n s a m b la d o r n u e v o
p u e d e n te n e r e rro re s n o d e te c ta d o s q u e q u iz á s d e s c u b r a el c o m p ila d o r. L os e rro re s
e n el len g u aje o b je to p u e d e n a g ra v a r la ta r e a d e d e p u r a r el c o m p ila d o r m ism o .
U n len g u aje fu en te d e éx ito se im p la n ta r á p r o b a b le m e n te e n v arias m á q u in a s
o b je to . Si u n le n g u a je p ersiste , lo s c o m p ila d o r e s p a r a el le n g u a je n e c e s ita r á n p r o ­
d u c ir c ó d ig o p a r a v arias g e n e ra c io n e s d e m á q u in a s o b je to . P arece seg u ro q u e se p ro ­
d u c irá u n a m a y o r e v o lu c ió n e n el h a rd w a re d e las m á q u in a s , así q u e es p ro b a b le
q u e los c o m p ila d o re s re d e stin a b le s te n g a n fu tu ro . P o r t a n t o , el d is e ñ o d e l len g u aje
in te r m e d io es im p o r ta n te , y a q u e c o n f in a los d e ta lle s específicos d e la m á q u i n a a u n
n ú m e r o re d u c id o d e m ó d u lo s.

C r ite rio s de ren d im ien to

H ay v ario s a sp e c to s del r e n d im ie n to d e los c o m p ila d o re s : la v e lo c id a d del c o m p ila ­


d o r , la c a lid a d del cód ig o, los d ia g n ó stic o s d e e rro r, la tra n s p o r ta b ilid a d y el m a n ­
te n im ie n to . La sep aració n e n tr e e s to s c rite rio s n o es m u y c lara, y la esp ecificación
d e l c o m p ila d o r p u e d e d e ja r m u c h o s d e e s to s p a r á m e tr o s sin especificar. P o r e je m ­
plo . ¿es m á s i m p o r ta n te la v elo cid ad d e c o m p ila c ió n q u e la v e lo c id a d del c ó d ig o o b ­
je to ? ¿ C u á n ta im p o r ta n c ia tie n e n los b u e n o s m e n sa je s d e e r r o r y la re c u p e ra c ió n d e
erro res?
L a v elo cid ad d e l c o m p ila d o r se p u e d e lo g ra r re d u c ie n d o el n ú m e r o d e m ó d u lo s
y p a s a d a s c u a n t o sea posible, q u iz á s h a s ta el p u n t o d e g e n e ra r le n g u a je d e m á q u in a
e n u n a p a sa d a . S in e m b a r g o , este e n f o q u e p u e d e n o p r o d u c ir u n c o m p ila d o r q u e
g e n e re c ó d ig o o b je to d e a lta calid ad , ni u n o q u e sea p a r tic u la r m e n te fácil d e m a n ­
te n er.
H a y d o s a sp e c to s referen tes a la tr a n s p o rta b ilid a d : la re d e s tin a c ió n y la relocali­
zación. U n c o m p ila d o r red estinable es el q u e se p u e d e m o d ific a r fácilm en te p a r a qu e
g en ere c ó d ig o p a r a u n n u e v o le n g u a je o b je to . U n c o m p ila d o r re u b ic a b le e s el q u e se
11. 2 A S P E C T O S D E L D E S A R R O L L O DE C O M P I L A D O R E S 743

p u e d e tr a n s p o r ta r fá c ilm e n te p a r a su e je c u c ió n e n u n a m á q u in a n u e v a . U n c o m p i­
la d o r tr a n s p o r ta b le p u e d e n o ser ta n e fic ien te c o m o u n c o m p ila d o r d is e ñ a d o p a ra
u n a m á q u in a especifica, p o r q u e el c o m p ila d o r p a r a u n a sola m á q u in a p u e d e h a c e r
su p o sic io n e s especificas acerc a d e la m á q u in a o b je to q u e u n c o m p ila d o r tr a n s p o r ­
ta b le n o p u ed e.

11.2 A S P E C T O S D E L D E S A R R O L L O D E C O M P I L A D O R E S

H a y v a rio s e n fo q u e s g e n e ra le s q u e p u e d e a d o p t a r q u ie n escrib e u n c o m p ila d o r para


im p la n t a r un c o m p ila d o r. El m á s sen cillo co n siste e n r e d e s tin a r o re u b ic a r u n c o m ­
p ila d o r y a ex isten te. Si n o existe ya u n c o m p ila d o r a d e c u a d o , el e s c rito r del c o m p i ­
la d o r p u e d e a d o p t a r la o rg a n iz a c ió n d e u n c o m p ila d o r c o n o c id o p a r a u n len g u aje
s im ila r e im p la n t a r los c o m p o n e n te s c o rre s p o n d ie n te s , u tiliz a n d o h e r r a m ie n ta s p a ra
la g e n e ra c ió n d e c o m p o n e n te s o im p la n tá n d o lo s a m a n o . N o es m u y fre c u e n te q u e
se re q u ie ra u n a o rg a n iz a c ió n c o m p le ta m e n te n u e v a p a r a u n c o m p ila d o r.
I n d e p e n d ie n te m e n te d e l e n f o q u e q u e se a d o p te , la e s c ritu ra d e c o m p ila d o r e s es
u n e jercicio d e in g e n ie ría d e software. L as leccio nes d e o tr o s e sfu e rz o s d e software
(v éase p o r e je m p lo B ro o k s [1 9 7 5 ]) p u e d e n a p lic a rs e p a r a m e jo r a r la fia b ilid a d y
m a n te n im ie n t o del p r o d u c to final. U n d is e ñ o q u e a s im ile c o n facilid ad las m o d ifi­
c a c io n e s p e r m itir á q u e el c o m p ila d o r e v o lu c io n e c o n el lenguaje. El uso d e h e rra ­
m ie n ta s p a r a la c o n s tru c c ió n d e c o m p ila d o r e s p u e d e s e r u n a a y u d a significativa a
este respecto.

A rra n q u e

U n c o m p ila d o r es u n p r o g r a m a lo b a s ta n te c o m p le jo q u e se d e se a ría e s c rib ir e n u n


le n g u a je m á s a s e q u ib le q u e el le n g u a je e n s a m b la d o r . E n el e n t o r n o d e p r o g r a m a ­
c ió n U N I X , los c o m p ila d o r e s se e sc rib e n g e n e ra lm e n te e n C. In c lu s o los c o m p ila ­
d o re s d e C se escrib en e n C. L a b a se del arranque es u tiliz a r las v e n ta ja s d e u n le n ­
g u a je p a r a c o m p ila r s e a sí m is m o . S e e s t u d i a r á el u s o d e l a r r a n q u e p a r a c r e a r
c o m p ila d o r e s y tra s la d a rlo s d e u n a m á q u in a a o t r a m o d if ic a n d o la e ta p a fin al. Las
id e as b á sic a s p a r a el a r r a n q u e se c o n o c e n d e s d e m e d ia d o s d e los a ñ o s c in c u e n ta .
(S tro n g y c o la b o ra d o re s [1958]).
El a r r a n q u e p u e d e d a r lu g a r a la p re g u n ta : “¿ C ó m o se c o m p iló el p r im e r c o m ­
pilador?*' algo así c o m o ¿ q u é fue a n te s , el h u e v o o la g allin a? p e r o la p r im e r a p re ­
g u n ta es m á s fácil d e c o n te sta r. P a r a ello c o n sid é re se c ó m o L IS P se c o n v irtió e n un
le n g u a je d e p r o g ra m a c ió n . M c C a r th y [1981] s e ñ a la q u e a fin ales d e 1958 L IS P se
u tilizó c o m o u n a n o ta c ió n p a r a e scrib ir fu n c io n e s; d e s p u é s se tr a d u c ía n a m a n o a
le n g u a je e n s a m b la d o r y se e je c u ta b a n . L a im p la n ta c ió n d e u n in té r p r e te p a r a L IS P
se p r o d u jo in e s p e r a d a m e n te . M c C a r th y q u e r ía d e m o s t r a r q u e L I S P e r a u n a n o t a ­
c ió n p a r a d e s c rib ir fu n c io n e s “ m u c h o m á s c la ra q u e las m á q u in a s d e T u r i n g o las
d e fin ic io n e s recu rsiv as g en erales u tiliz a d a s e n la te o ría d e fu n c io n e s recursivas*’, de
m o d o q u e e sc rib ió u n a f u n c ió n evat{e, a] en L IS P q u e to m a r a u n a e x p re s ió n e en
L IS P c o m o a r g u m e n to . S. R. R ussell o b s e rv ó q u e eval p o d ía serv ir c o m o u n in té r ­
p rete p a r a LISP. la co d ific ó a m a n o y a s í c re ó u n le n g u a je d e p r o g r a m a c ió n c o n u n
744 ¿Q U IE R E E SC R IB IR U N C O M PIL A D O R ?

intérprete. C om o se m encionó en la sección 1.1, en lugar de generar código objeto,


un intérprete realiza de hecho las operaciones del program a fuente.
A efectos de arranque, un co m p ilad o r se caracteriza p o r tres lenguajes: el len­
guaje fuente F que com pila, el lenguaje objeto O para el que genera código y el len
guaje de im plantación I en el que está escrito. Lo s tres lenguajes se representan uti­
liza n d o el siguiente diagram a, llam ad o un d i a g r a m a T, p o r su form a (B ratm an
[1961]).

F O

D entro del texto, el diagram a T anterior se abrevia: F jO . Los tres lenguajes, F, I


y O pueden ser todos m uy diferentes. P o r ejem plo, un com pilador puede ejecutarse
en una m áquina y p ro d u cir código objeto para otra m áquina. D icho com pilador se
denom ina a m enudo un com pilador cruzado.
Supóngase que se escribe un co m p ilad o r cruzado para un nuevo lenguaje L en
el lenguaje de im plantación S para que genere código para la m áquina N ; es decir,
se crea L sN . Si un com pilador ya existente para S se ejecuta en la m áquina M y
genera código para M , se caracteriza por S m M . Si L s N se ejecuta a través de S m M,
se obtiene un com pilador L m N , es decir, un com pilador de L a N que se ejecuta en
M . Este proceso se ilu stra en la fig ura 11.1 ju n ta n d o los diagram as T para estos
com piladores.

L N L N

ls S

M
M M

Fig. 11.1. Com pilación de un compilador.

C uando se ju n tan los diagram as T com o en la figura 11.1, obsérvese que el len­
guaje de im plantación S del com pilador L s N debe ser el m ism o que el lenguaje fuente
del com pilador existente S m M y que el lenguaje objeto M del com pilador existente
debe ser el m ism o que el lenguaje de im plantación de la form a traducida L m N . U n
trío de diagram as T com o el de la figura 11.1 se puede considerar com o una ecua­
ción

LsN + Sm M = L m N

La prim era versión del com pilador de E Q N (véase Sec. 12.1) tuvo a
E j e m p l o 11. 1.
C com o lenguaje de im p lan tació n y generó órdenes para el fo rm ado r de textos
T R O F F . Com o se muestra en el siguiente diagram a, se obtuvo un co m p ilad o r cru ­
1 1 .2 ASPECTOS DEL DESARROLLO DE C O M P IL A D O R E S 745

zado para E Q N , ejecutándose en un P D P -1 1, ejecutando E Q N c T R O F F en el com ­


p ila d o r de C , C 1111, en el P D P -11.

EQN TROFF EQN t r o f f I

C 11 | 11
" " 1 C

li

U n a form a de arra n q u e construye u n co m p ila d o r para su b co n ju n to s cada vez


m ayores de un lenguaje. Supóngase que va a ap licarse u n nuevo lenguaje L en la
m áquin a M . C o m o p rim e r paso se puede e sc rib ir un pequeño co m p ila d o r que tra­
duzca un sub co nju nto S de L a código objeto para M ; es decir, un co m p ilad o r S m M .
Después se u tiliza el sub co nju nto S para e scrib ir un co m p ilad o r L s M para L . C uando
L s M se ejecuta a través de S m M . se obtiene un a im p lan tació n de L : L m M . E L IA C
fue un o de los p rim ero s lenguajes im p lan tad o s en su p ro p io lenguaje (H u sk e y , H als-
tead y M c A rth u r [19 6 0]).
W irth [ 1 9 7 1 ] se ñ a la q u e P ascal se im p la n tó p o r p rim e ra vez e scrib ie n d o un
co m p ilad o r en Pascal m ism o. E l co m p ila d o r se tra d u jo después “ a m a n o ” a u n le n ­
guaje de bajo n iv e l d isp o n ib le sin n in gún intento de o p tim ació n . E l co m p ila d o r era
para u n su b c o n ju n to “ ( > 6 0 p o r c ie n to )” de P a sca l; d espués d e v a ria s etapas de
arranque, se obtuvo un co m p ila d o r para la to talid ad de Pascal. Lecarm e y Peyrolle-
T h o m as [19 78 ] resum en lo s m étodos u tilizad o s para a rra n ca r co m p ilad o res de Pas­
cal.
Para ap ro vech ar m e jo r la s ventajas del arran q u e, u n co m p ila d o r tiene qu e escri­
birse en el lenguaje qu e co m p ila . Supóngase qu e se escribe un co m p ila d o r L l N para
el lenguaje L en L para generar código para un a m áq u in a N . E l d esarro llo tiene lu ­
gar en un a m áq u in a M , do nde un co m p ila d o r existente L m M para L se ejecuta y
genera código para M . Si se co m p ila p rim e ro L l N co n L m M se obtiene u n com pi-
.la d o r cru zad o L m N qu e se ejecuta en M pero pro duce código para N :

Ll N L

M M
N

El co m p ila d o r L l N se puede co m p ila r p o r segunda vez, u tiliz a n d o esta vez el co m ­


p ila d o r cru zad o generado:

L N L N

L L N N

M
746 ¿Q U IE R E E S C R IB IR UN C O M P IL A D O R ?

E l resultado de la segunda co m p ilació n es un co m p ila d o r L jsjN que se ejecuta en N


y genera código para N. H ay varias aplicaciones útiles de este proceso de dos pasos,
de m odo que se escrib irá com o en la figura 11.2.

E j e m p l o 1 1 . 2 . Este ejem p lo está m o tivad o p o r el d e sa rro llo del c o m p ila d o r de


F O R T R A N H (véase Sec. 12.4). “ E l co m p ilad o r m ism o fue escrito en F O R T R A N
y arrancado tres veces. L a p rim era vez fue para pasar de ejecutarse en la IB M 7094
a System /360 — un procedim iento arduo. La segunda vez fue para optim arse a sí
m ism o, lo cu al redujo el tam año del co m p ilad o r de aproxim adam ente 5 5 0 K a apro­
xim adam ente 4 0 0 K bytcs” (L o w ry y M edlock [1969]).

L N L N

L N L L N N

L L M M

Fig. 11.2. A rranque de un com pilador.

U tilizan d o las técnicas de arranque, u n co m p ilad o r o p tim ad o r se puede optim ar


a sí m ism o . Supóngase qu e todo el d e sa rro llo se hace en la m á q u in a M . Se tie­
ne S sM , un buen com pilador optim ador para un lenguaje S escrito en S, y se quiere
S sM , un buen co m p ilad o r o p tim ad o r para S escrito en M .
Se puede crear S M t M j:, un co m p ila d o r “ rápid o y su cio ” para S en M que no
sólo genera código de m ala calid ad sin o que tam bién em plea m ucho tiem po en ha­
cerlo. ( M } in d ic a una m ala im p la n ta ció n en M . S m + M J es un a m ala im p lan ta­
ción de un co m p ilad o r que genera código m alo.) Sin em bargo, se puede u tiliz a r el
com pilador indiferente S¡vU .M l para obtener un buen co m p ilad o r para S en dos
pasos:

M S M
1 S

S M S S M M

S | S M í M í

M í

Prim ero, el co m p ilad o r optim ador S s M es trad ucid o p o r el co m p ilad o r rápid o y su­
cio para p ro d u cir S jy j j - M , una m ala im p lan tació n del co m p ilad o r optim ador, pero
que produce buen código. E l co m p ilad o r optim ador bueno S m M se obtiene recom -
pilando S s M a través de S m í M . □

E j e m p lo 1 1 .3 . A m m ann [19 8 1] describe cóm o se obtuvo un a im plantación lim p ia


de Pascal por un proceso sim ila r al del ejem plo 1 1.2. Las revisiones de Pascal p ro ­
dujeron la escritura de un co m p ilad o r nuevo en 1972 para las m áquinas de la serie
1 1.3 EL EN TO RN O PARA DESARROLLO DE C O M P IL A D O R E S 747

( D C 6 0 0 0 . E n el s ig u ie n te d ia g ra m a , O re p re s e n ta el le n g u a je P ascal “ a n tig u o ” y P
el le n g u a je re v isa d o .

p 6 (XX) P 6000

p 6000 p P 6000 6000

0 O 6000 $ 6000*

Se e scrib ió un c o m p ila d o r para P ascal re visad o en P ascal an tig u o y se tra d u jo a


P6000*6000. C om o en el ejem plo 11.2, el sím b o lo j: m arca una fuente de inefica­
cia. E l co m p ila d o r antiguo no generaba código lo suficientem ente eficiente. "P o r
tanto, la velocidad del co m p ilad o r de [P 6 0 0 0 t6 0 0 0 ] era bastante m oderada y sus
requisitos de m em oria m uy elevados (A m m an n [1 9 8 1 ])” . Las revisiones de Pascal
fueron lo suficientem ente pequeñas para que el co m p ilad o r P o 6 0 0 0 pudiera trad u­
cirse a m ano co n poco esfuerzo a PpóOOO y ejecutarse a través del co m p ilad o r ine­
ficiente PóoOOtGOOO para obtener una im plantación lim p ia. □

1 1 .3 E L E N T O R N O P A R A D E S A R R O L L O D E C O M P I L A D O R E S

E n realidad, un co m p ilad o r sólo es un program a. E l entorno en que se desarrolle


este program a puede afectar la velocidad y la fiab ilid ad de la im p lan tació n del co m ­
pilador. E l lenguaje en el que se im plante el co m p ilad o r es igualm ente im portante.
A un que se han escrito com piladores en lenguajes com o F O R T R A N , la m ayoría de
las personas que escriben co m p ilad o res elegirán un lenguaje orientad o a sistem as
co m o C .
Si el lenguaje fuente m ism o es un nuevo lenguaje orientado a sistem as, entonces
es razonable e scrib ir el lenguaje en su p ro p io lenguaje. U tiliz a n d o las técnicas de
arranque estudiadas en la sección anterior, co m p ila r el co m p ilad o r ayuda a depu­
rarlo.
Las herram ientas para la co n strucció n de softw are del entorno de program ación
facilitan la creación de un co m p ilad o r eficiente. A l e scrib ir un co m p ilad o r, general­
m ente se p articio n a todo el program a en m ódulos, donde cada m ó d u lo se puede
procesar de m uchas m aneras. U n program a que lleve a cabo el procesam iento de
estos m ódulos es una ayuda indispensable para q u ien escribe el co m pilad o r. E l sis­
tem a U N IX contiene un a orden llam ada m a k e (Feld m an [19 79 a ]) que adm inistra y
m antiene los m ódulos que constituyen un program a de com putador; m a k e conoce
las relaciones entre los m ódulos del program a y em ite sólo la s órdenes necesarias
para m antener consistentes los m ódulos después de la s m odificaciones.

E j e m p lo 1 1 .4 . La orden m a k e lee la especificación de la s funciones que hay que rea­


liz a r en un arch ivo llam ado m a k e f i le . E n la sección 2.9 se construyó un traductor
co m pilan d o siete arch ivo s con un co m p ilad o r de C , dependiendo cada uno de ellos
de un arch ivo encabezador global, g l o b a l .h . Para m ostrar có m o m a k e puede rea­
748 ¿Q U IE R E E S C R IB IR UN C O M P IL A D O R ?

liza r la tarea de u n ir el com pilador, supóngase que al co m p ilad o r resultante se le


llam a t r a d . La especificación m a ke f i l e puede aparecer com o:

OBJS = analizléx.o analizsint.o emisor.o símbolos.o\


inic.o error.o principal.o

trad: $(OBJS)
cc $ (OBJS ) -o trad

analizléx.o analizsint.o emisor .o símbolos .o\


inic.o error.o principal.o: global.h

El signo igual en la prim era línea hace que o b j s del lado izquierdo represente los
siete archivos objeto de la derecha. (L a s líneas largas se pueden d iv id ir colocando
una diagonal invertida al final de la parte con tin ua.) Los dos puntos de la segunda
línea indican que t r a d a su izquierd a depende de todos los archivos de o b j s . D icha
línea de dependencia puede ir seguida de una orden para co n stru ir (m a k e ) el archivo
que está a la izquierda de los dos puntos. Por tanto, la tercera línea in d ica que el
program a objeto t r a d se crea enlazando los archivos objeto a n a l i z l é x . o , a n a ­
l i z s i n t . o , . . . , p r i n c i p a l . o . Sin embargo, m a k e sabe que debe crear prim ero
los archivos objeto; lo hace autom áticam ente buscando los archivos fuente corres­
pondientes a n a l i z l é x . o , a n a l i z s i n t . o . . . . p r i n c i p a l , o, y com pilando cada
uno con el com pilador de C para crear los archivos objeto correspondientes. La ú l­
tim a línea de m a ke f i l e dice que todos los siete archivos objeto dependen del ar­
chivo de encabezam iento global, g lo b a l .h .
El traductor se crea con sólo teclear la orden m a k e , que hace que se em itan las
siguientes órdenes:

cc -c analizléx.c
cc -c analizsin.c
cc -c emisor .c
cc -c símbolos.c
cc -c inic.c
cc — c e r r o r .c
cc -c principal.c
cc analizléx.o analizsint.o emisor.o símbolos.o\
inic.o error.o principal.o -o trad

Posteriorm ente, se volverá a hacer una com pilación sólo si se m odifica un archivo
fuente dependiente después de la últim a com pilación. L a referencia K cm ighan y Pike
[1984] contiene ejem plos del uso de m a k e para facilitar la construcción de un
com pilador. □

U n perfilador es otra herram ienta útil para la construcción de com piladores. U na


vez escrito el com pilador, se puede u tiliza r un perfilador para determ inar dónde em ­
plea el co m p ilad o r su tiem po cuando co m p ila un program a fuente. L a id e n tifica­
ción y m odificación de los puntos m uy transitados del com pilador puede acelerar el
com pilador en un factor de dos o tres.
11.4 PRUEBA S Y M ANTEN IM IEN TO 749

A d e m á s d e las h e r r a m ie n ta s p a r a el d e s a rro llo d e softw are , se h a n d e s a rro lla d o


v arias h e r r a m ie n ta s e sp e c ífic a m e n te p a r a el p ro c e s o d e d e s a rro llo d e c o m p ila d o re s.
E n la sección 3.5 se d escrib ió el g e n e r a d o r L E X q u e p u e d e u tilizarse p a r a p ro d u c ir
a u to m á tic a m e n te u n a n a liz a d o r léxico a p a r ti r d e u n a esp ecificació n p o r m e d io d e
e x p r e s io n e s re g u la re s d e u n a n a l i z a d o r léx ico ; e n la se c c ió n 4 .9 se d e s c rib ió el ge­
n e r a d o r Y A C C q u e p u e d e u tilizarse p a r a p r o d u c ir a u t o m á ti c a m e n te u n a n a liz a d o r
s in tá c tic o L R a p a r tir d e u n a d e sc rip c ió n g ra m a tic a l d e la s in ta x is del len g u aje. La
o r d e n m a k e a n t e r i o r m e n t e d e s c r ita in v o c a r á a u t o m á t i c a m e n t e a L E X y Y A C C
c u a n d o los necesite. A d e m á s d e los g e n e ra d o re s léx ico s y sin tá c tic o s, se h a n c re a d o
g en erad o res d e g ram á tica s c o n a trib u to s y g en erad o res d e g en erad o res d e c ó d ig o p a ra
facilitar la c o n s tru c c ió n d e lo s c o m p o n e n te s d e u n c o m p ila d o r . M u c h a s d e e s ta s he­
r r a m ie n ta s p a r a la c o n s tru c c ió n d e c o m p ila d o re s tie n e n la v e n ta ja d e q u e a tra p a r á n
los e rro re s d e la esp ecificació n del c o m p ila d o r.
H a h a b id o d isc u sio n e s so b re la efic ien cia y c o n v e n ie n c ia d e los g e n e ra d o re s d e
p r o g r a m a s e n la c o n s tr u c c ió n d e c o m p ila d o r e s ( W a ite y C á r t e r [1 9 8 5 ]). El h e c h o
c o m p r o b a d o es q u e los g e n e ra d o re s d e p ro g r a m a s b ie n im p la n ta d o s s o n u n a a y u d a
significativa e n la p ro d u c c ió n d e c o m p o n e n te s fiables d e u n c o m p ila d o r . E s m u c h o
m á s fácil p r o d u c ir u n a n a liz a d o r s in tá c tic o c o r r e c to u tiliz a n d o u n a d e s c rip c ió n g ra ­
m a tic a l d e l le n g u a je y u n g e n e r a d o r d e a n a liz a d o r e s s in tá c tic o s q u e i m p l a n t a r un
a n a liz a d o r s in tá c tic o d ir e c ta m e n te a m a n o . S in e m b a r g o , u n a s p e c to i m p o r ta n te es
c ó m o esto s g e n e ra d o re s sirv e n d e in te rfa z re sp e c to u n o del o tr o y re sp e c to d e o tro s
p ro g ra m a s. U n e r r o r c o m ú n e n el d is e ñ o d e u n g e n e r a d o r es s u p o n e r q u e es el c e n ­
tr o del d is e ñ o . E n u n d is e ñ o m e jo r el g e n e r a d o r p r o d u c e s u b r u tin a s c o n in terfaces
lim p ia s q u e p u e d a n s e r lla m a d a s p o r o tr o s p ro g r a m a s ( J o h n s o n y Lesk[1978J).

1 1 .4 P R U E B A S Y M A N T E N I M I E N T O

U n c o m p ila d o r d e b e g e n e ra r c ó d ig o c o rre c to . Id e a lm e n te , se d e se a ría te n e r u n c o m ­


p u t a d o r q u e c o m p r o b a r a m e c á n i c a m e n t e q u e u n c o m p ila d o r i m p l a n t a fie lm e n te
su e s p e c ific a c ió n . V a r io s a r tí c u lo s e s t u d i a n la c o r r e c c i ó n d e a l g u n o s a l g o r i tm o s
d e c o m p ila c ió n p e ro d e sg ra c ia d a m e n te , los c o m p ila d o re s casi n u n c a se especifican d e
fo rm a q u e u n a im p la n ta c ió n a r b itr a r ia se p u e d a c o m p r o b a r m e c á n ic a m e n te en vez
d e u n a esp ecificació n fo rm a l. C o m o los c o m p ila d o r e s s o n fu n c io n e s b a s ta n te c o m ­
plejas. ta m b ié n h a y q u e c o m p r o b a r q u e la esp ecificació n m is m a sea co rrecta.
E n la p rá c tic a , se d e b e r e c u r r ir a u n m é to d o s is te m á tic o d e c o m p r o b a r el c o m ­
p ila d o r p a r a i n c r e m e n ta r la c o n f ia n z a d e q u e f u n c io n a r á s a tis f a c to r ia m e n te e n el
c a m p o . U n e n f o q u e q u e h a n u tiliz a d o c o n é x ito m u c h o s e sc rito re s d e c o m p ila d o re s
es la p r u e b a d e “ re g re s ió n " . S e m a n t i e n e u n c o n j u n t o d e p r o g r a m a s d e p r u e b a y
s ie m p re q u e se m o d if iq u e el c o m p ila d o r , los p ro g r a m a s d e p r u e b a se c o m p ila n u ti­
liz a n d o t a n t o la v ersió n n u e v a c o m o la a n tig u a del c o m p ila d o r . Al e s c rito r del c o m ­
p ila d o r se le in fo rm a d e las d ife re n c ia s e n los p ro g r a m a s o b je to p ro d u c id o s p o r los
d o s c o m p ila d o re s . T a m b ié n se p u e d e u tiliz a r la o r d e n del s is te m a U N I X m a k e p a ra
a u to m a tiz a r las p ru eb as.
E legir los p ro g ra m a s q u e v a n a ser in c lu id o s e n el c o n j u n t o d e p r u e b a es u n p r o ­
b le m a difícil. C o m o m e ta , sería d e se a b le q u e los p ro g r a m a s e je rc ita ra n to d a s las pro-
750 ¿Q U IE R E E S C R IB IR UN C O M P IL A D O R ?

posiciones del com pilador por lo m enos una vez. H ace falta m ucho ingenio para
encontrar un co n ju n to de prueba así. Se han co nstruido conjuntos de pruebas ex­
haustivas para varios lenguajes. (F O R T R A N , T e X , C , etc.). M uchos escritores de
co m p ilad o res añaden a las pruebas de regresión program as que han descubierto
errores en anteriores versiones de su com pilador; es frustrante que un erro r antiguo
reaparezca debido a una nueva corrección.
C o m p ro b ar el rendim iento tam bién es im portante. A lguno s escritores de com ­
piladores se aseguran de que las nuevas versiones del com pilador generen código que
sea casi tan bueno com o la versión previa realizando estudios de tiem pos com o parte
de la prueba de regresión.
E l m antenim iento de un co m p ilad o r es otro problem a a tener en cuenta, sobre
todo si el co m p ilad o r va a ejecutarse en distintos entornos o si cam bia la gente in ­
volucrada en el proyecto del com pilador. U n elem ento cru cial para poder mantener
a un co m p ilad o r es un buen estilo de program ación y una buena docum entación.
Lo s autores conocen un co m p ilad o r que fue escrito utilizan d o tan sólo siete com en­
tarios, uno de los cuales decía "E ste código está m ald ito ” . N o es necesario d e cir que
es bastante d ifíc il que nadie, excepto q u izá el escrito r, pueda m antener este pro­
grama.
K n u th [1984b] desarrolló un sistem a llam ado W E B que apunta el problem a de
docum entar grandes program as escritos en Pascal. W E B facilita la docum entación
de program as; la docum entación se desarrolla al m ism o tiem po que el código, no
después. M uchas de las ideas de W E B se pueden a p lica r asim ism o a otros lenguajes.
|7 5 1 |

C A PITU L O 12

Una mirada a
algunos compiladores

E ste c a p itu lo a n a liz a la e s tr u c tu r a d e a lg u n o s c o m p ila d o r e s e x iste n te s p a ra u n len­


g u aje d e fo rm a c ió n d e te x to s . P ascal. F O R T R A N . B L ISS y M O D U L A 2 . El p r o ­
p ó sito n o es fav o recer los d is e ñ o s a q u í re p re s e n ta d o s y e x c lu ir o tro s sin o ilu stra r la
v a rie d a d p o sib le e n la im p la n ta c ió n d e u n c o m p ila d o r.
L o s c o m p ila d o re s p a r a Pascal se eligiero n p o r q u e in flu y ero n e n el d is e ñ o del le n ­
g u aje m is m o . L o s c o m p ila d o r e s p a ra C se elig ieron p o r q u e C e s el le n g u a je p rin cip al
del sistem a o p e r a tiv o U N I X . El c o m p ila d o r d e F O R T R A N H se eligió p o r q u e tien e
u n a in flu en cia significativa so b re el d e s a rro llo d e té c n ic a s d e o p tim a c ió n . B L I S S /11
se eligió p a r a ilu stra r el d is e ñ o d e u n c o m p ila d o r c u y o o b je tiv o es o p ti m iz a r espacio.
El c o m p ila d o r M O D U L A 2 d e D E C se eligió p o r q u e u tiliza té c n ic a s re la tiv a m e n te
sen cillas p a ra p r o d u c ir c ó d ig o ex c e le n te y fue e sc rito p o r u n a p e rs o n a e n p o c o s m e ­
ses.

12.1 E Q N , U N P R E P R O C E S A D O R P A R A T I P O G R A F I A
D E M A T E M A T IC A S

El c o n ju n to d e e n tra d a s p o sib le s p a r a v a rio s p ro g r a m a s d e c o m p u ta d o r a se p u e d e


c o n s id e ra r c o m o u n p e q u e ñ o len g u aje. L a e s tr u c tu r a del c o n j u n t o se p u e d e e scrib ir
p o r m e d io d e u n a g ra m á tic a y se p u e d e u tiliz a r la tr a d u c c ió n d irig id a p o r la sin ta x is
p a ra esp ecificar d e m a n e r a p recisa lo q u e h ace el p ro g ra m a . E n to n c e s la tecn o lo g ía
d e c o m p ila d o re s p u e d e serv ir p a ra i m p l a n t a r el p ro g ra m a .
U n o d e los p r im e r o s c o m p ila d o r e s p a r a le n g u a je s p e q u e ñ o s e n el e n t o r n o d e
p r o g r a m a c ió n U N I X fue E Q N d e K e r n ig h a n y C h e r r y [1 9 7 5 ]. C o m o se d e sc rib e
b r e v e m e n te e n la sección 1.2. E Q N t o m a u n a e n tr a d a c o m o “ E s u b 1 " y g en era
ó r d e n e s p a ra el f o r m a d o r d e te x to s T R O F F p a r a p r o d u c ir u n a salid a d e la fo rm a

L a im p la n ta c ió n d e E Q N se esb o za e n la fig u ra 12.1. El p r e p r o c e s a m ie n to de


m a c ro s (véase Sec. 1.4) y el a n á lis is léx ico se re a liz a n a la vez. La c a d e n a d e c o m ­
p o n e n te s léxicos d e s p u é s del a n á lis is léx ico se tr a d u c e d u r a n te el a n álisis s in tá c tic o
a ó r d e n e s p a ra la fo rm a c ió n d e te x to s. El tr a d u c to r se c o n s tr u y e u tiliz a n d o el g ene­
r a d o r d e a n a liz a d o re s s in tá c tic o s Y A C C . d e s c rito en la sección 4.9.
752 U N A M IR A D A A A L G U N O S CO M PILADO RES

C o n s id e ra r la e n t r a d a p a r a E Q N c o m o u n len g u aje y a p lic a r te c n o lo g ía d e c o m ­


p ila d o re s p a r a c o n s tr u ir u n tr a d u c to r tie n e v a ria s v e n ta ja s s e ñ a la d a s p o r los au to re s.

c ó d i g o fu en te

ó r d e n e s para fo r m a d o d e t e x t o s a T R O F F

Fig. 12.1. Im plantación d e EQN.

1. F acilidad d e im plantación. " L a c o n s tr u c c ió n d e u n s is te m a q u e fu n c io n e , sufi­


c ie n te p a r a p r o b a r e je m p lo s sig n ificativo s ex ig ió tal v ez u n a p e rs o n a -m e s ” .

2. Evolución d el lenguaje. U n a d e fin ic ió n d irig id a p o r la sin ta x is facilita c a m b io s


e n el le n g u a je d e e n t r a d a . A tr a v é s d e los a ñ o s E Q N h a e v o lu c io n a d o e n res­
p u e s ta a las n ecesid ad es d e los usuarios.

L o s a u to r e s c o n c lu y e n o b s e r v a n d o q u e " d e f in ir u n le n g u a je y c o n s tr u ir u n c o m p i­
la d o r p a r a él u tiliz a n d o u n c o m p ila d o r d e c o m p ila d o r e s p a re c e la ú n ic a fo rm a s e n ­
sa ta d e h a c e r las c o sas” .

1 2 .2 C O M P I L A D O R E S P A R A P A S C A L

El d is e ñ o d e P ascal y el d e s a rro llo del p r im e r c o m p ila d o r p a r a él " f u e r o n in d e p e n ­


d ie n te s ”, según c o m e n ta W irth [19 71]. P o r ta n to , c o n v ie n e e x a m in a r la e s tru c tu ra
d e lo s c o m p i l a d o r e s p a r a el le n g u a je e s c r ito p o r W i r t h y s u s co leg as. El p r im e r o
(W irth [1 9 7 1 ]) y el s e g u n d o c o m p ila d o r ( A m m a n n [1 9 8 1 , 1977]) g e n e r a b a n código
d e m á q u in a a b s o lu to p a r a las m á q u in a s d e la serie C D C 6 0 0 0 . L o s e x p e rim e n to s
so b re tra n s p o r ta b ilid a d c o n el s e g u n d o c o m p ila d o r lle v a ro n a l c o m p ila d o r P ascal-P
q u e g e n e ra c ó d ig o , lla m a d o c ó d ig o P. p a r a u n a m á q u in a d e pila a b s tra c ta (N o ri y
c o la b o r a d o r e s [1981]).
C a d a u n o d e los c o m p ila d o re s a n te r io r e s e s u n c o m p ila d o r d e u n a p a s a d a o rg a ­
n iz a d o a lre d e d o r d e u n a n a liz a d o r s in tá c tic o d e s c e n d e n te recu rsiv o , c o m o la e ta p a
inicial " b e b é ” del c a p ítu lo 2. W irth [1971] o b s e rv a q u e “ re su ltó re la tiv a m e n te fácil
m o ld e a r el len g u aje según [las lim ita c io n e s del m é to d o d e a n álisis s in tá c tic o ]” . En
la figura 12.2 se m u e s tr a la o rg a n iz a c ió n del c o m p ila d o r Pascal-P.
L as o p e ra c io n e s b ásicas d e la m á q u in a d e p ila a b s tra c ta u tiliz a d a p o r el c o m p i­
la d o r P ascal-P refleja las n ecesid ad es d e Pascal. L a m e m o r ia p a r a la m á q u in a se o r ­
g a n iz a e n c u a t r o áreas:
12.3 L O S C O M P IL A D O R E S PARA C 753

código fuente

código P

Fig. 12.2. Com pilador de Pascal P.

1. código para los procedim ientos,


2. constantes,
3. una p ila para los registros de activación, y
4. un m ontículo para los datos asignados aplicando el operador new1.
Com o los procedim ientos se pueden anidar en Pascal, el registro de activación para
un procedim iento contiene enlaces de acceso y de control. U n a llam ada a procedi­
miento se traduce a una instrucción de “ m arcar la pila” para la m áquina abstracta,
con los enlaces de acceso y de control com o parámetros. E l código para un procedi­
m iento se refiere a la m em oria para un nom bre local utilizando un desplazam iento
desde el final de un registro de activación. Se hace referencia a la m em oria para nom ­
bres no locales m ediante un par, que consta del núm ero de enlaces de acceso que van
a ser recorridos y un desplazam iento, com o en la sección 7.4. E l prim er com pilador
usó un display para acceder eficientemente a los nombres no locales.
A m m ann [1981] saca las siguientes conclusiones de la experiencia al escribir el
segundo com pilador. Por una parte, el co m p ilad o r de una pasada era fá cil de im ­
plantar y generaba poca actividad de entrada y salida (el código para el cuerpo de
un procedim iento se co m p ila en m em oria y se escribe com o una unidad a m em oria
secundaria). Por otra parte, la organización de una pasada “ im pone severas lim ita­
ciones a la calidad del código generado y soporta requisitos de m em oria” relativa­
mente altos.

12.3 L O S C O M P IL A D O R E S P A R A C

C es un lenguaje de program ación de propósito general diseñado por D . M . R itchie


y se utiliza com o el principal lenguaje de program ación en el sistema operativo U N IX
(R itch ie y Thom pson [1974]). U N IX m ism o está escrito en C y ha sido trasladado a
varias m áquinas, desde m icroprocesadores hasta m acrocom putadores, trasladando
prim ero un com pilador de C . Esta sección describe brevemente la estructura global

1 El a rra n q u e se facilita p o rq u e el co m p ila d o r, escrito en el s u b c o n ju n to q u e co m p ila, utiliza el


m o n tícu lo co m o pila, así q u e al principio se pued e utilizar u n sencillo ad m in istra d o r del m ontículo.
754 UNA M IR A D A A A L G U N O S COM PILADORAS

del c o m p ila d o r p a ra el c o m p u ta d o r P D P - 1 1 p o r R itch ic ( 1079] y la fam ilia P C C d e


c o m p ila d o re s tra n sp o rta b le s p o r J o h n s o n [1979]. 'I ros c u a rto s del c ó d ig o e n P C C es
in d e p e n d ie n te d e la m á q u in a objeto. T o d o s estos c o m p ila d o re s s o n b á s ic a m e n te de
d o s pasadas; el c o m p ila d o r p a ra P D P - 1 1 tien e u n a te rc e ra pasada o p cio n al q u e realiza
o p tim a c ió n so b re la salida e n lenguaje e n s a m b la d o r, c o m o se in d ica e n la figura 12.3.
Esta fase d e o p tim a c ió n local e lim in a las p ro p o sic io n e s re d u n d a n te s o inaccesibles.
c ó d i g o f u e n ie

________________________ i ________________________
a n á lis is l é x i c o y sin tá c tic o
g e n e r a c ió n d e c ó d i g o in te r m e d io

fo rm a postfija o prefija d e e x p r e sio n e s


o c ó d i g o e n s a m b la d o r e n c a s o con trario

len g u a je e n sa m b la d o r

Fig. 1 2 3 . E structura d e pasadas d e los com piladores d e C.

L a p a s a d a I d e c a d a c o m p ila d o r realiza el a n álisis lexicográfico, el a n álisis s in ­


tá c tic o y la g e n e ra c ió n d e c ó d ig o in te r m e d io . El c o m p i l a d o r p a r a P D P - 1 1 u tiliz a
d e sc e n so re c u rsiv o p a r a a n a liz a r s in tá c tic a m e n te t o d o e x c e p to las ex p resio n es, p a ra
las q u e se u tiliza p re c e d e n c ia d e o p e ra d o re s . El c ó d ig o in te r m e d io c o n s ta d e n o t a ­
c ió n postfija p a r a e x p re sio n e s y c ó d ig o e n s a m b la d o r p a r a p ro p o s ic io n e s d e fiujo d e
c o n tro l. P C C u tiliza u n a n a liz a d o r s in tá c tic o L A L R ( 1) g e n e r a d o p o r Y A C C . S u có ­
d ig o in te r m e d io c o n s ta d e n o ta c ió n p re fija p a r a e x p re sio n e s y c ó d ig o e n s a m b la d o r
p a r a o tra s c o n s tru c c io n e s . E n c a d a caso, la asig n ac ió n d e m e m o r ia p a r a los n o m b r e s
locales se realiza d u r a n te la p r im e r a p a sa d a , a s i q u e se p u e d e h a c e r re fe re n c ia a los
n o m b r e s u tiliz a n d o d e s p la z a m ie n to s d e n t r o d e u n reg istro d e a c tiv ació n .
D e n tr o d e la e ta p a final, las e x p re sio n e s se re p re s e n ta n m e d ia n te á rb o le s sin tá c ­
ticos. E n el c o m p ila d o r p a r a P D P - 1 1, la g e n e ra c ió n d e c ó d ig o se im p la n tó m e d ia n te
u n re c o rrid o d e árb o le s, u tiliz a n d o u n a e stra te g ia s im ila r a la d e l a lg o ritm o d e e ti­
q u e t a d o d e la secció n 9 .1 0 . Se h a n h e c h o m o d ific a c io n e s a ese a lg o ritm o p a r a g a ra n ­
tiz a r q u e estén d is p o n ib le s p a r e s d e reg istro s p a r a o p e r a c io n e s q u e lo s n e c e s ite n y
p a r a a p r o v e c h a r o p e r a n d o s q u e se a n c o n stan tes.
J o h n s o n [1978] reco n sidera la influ en cia d e la teo ría e n P C C . E n P C C y en P C C 2,
u n a versión p o s te rio r del c o m p ila d o r , se g e n e ra c ó d ig o p a r a las e x p re s io n e s reescri-
b ie n d o los árboles. El g e n e r a d o r d e c ó d ig o e n P C C e x a m in a d e u n a en u n a las p ro ­
p o sicio n es del len g u aje fu en te , e n c o n t r a n d o r e p e tid a m e n te s u b á rb o le s m á x im o s q u e
se p u e d e n c a lc u la r s in a lm a c e n a m ie n to s , u tiliz a n d o los reg istro s d isp o n ib les. L as eti-
12.4 LOS C O M PIL A D O R E S DE FORTRAN H 755

quetas calculadas co m o en la sección 9 .10 id en tifican las subexpresiones que van a


ser calculadas y alm acenadas en m em oria. E l co m p ilad o r genera el código para eva­
lu a r y alm acenar los valores representados p o r estos subárboles a m edida que se se­
leccionan los subárboles. La reescritura es m ás evidente en P C C 2 , cuyo generador
de código se basa en el algoritm o de program ación d in á m ica de la sección 9.11.
Jo hnso n y R itch ie [ 1981] describen la in flu e n cia de la m áq u in a objeto en el d i­
seño de los registros de activació n y las secuencias de llam ada y retorno de proce­
dim ientos. L a fu n ció n de b ib lio teca p rin tf puede tener u n núm ero va ria b le de a r­
gum entos, así que el diseño de la secuencia de llam ad a en algunas m áquin as se ve
dom inado p o r la necesidad de p erm itir listas de argum entos de lo n gitud variable.

12.4 L O S C O M P I L A D O R E S D E F O R T R A N H

El co m p ilad o r o rig in al de F O R T R A N H escrito p o r Lo w ry y M ed lo ck [1969] era


un co m p ilad o r optim ador extenso y bastante poderoso co n stru id o con métodos que
preceden a los descritos en este lib ro . Se han realizado vario s intentos de m ejo rar el
rendim iento; se d esarro lló una versión “ am p liad a” del co m p ilad o r para el IB M /3 7 0 ,
y una versió n “ m ejorada” fue desarrollada p o r Scarborough y K o lsk y [19 80]. F O R ­
T R A N H ofrece al usuario la p o sib ilid ad de elegir entre no u tiliz a r optim ación, u ti­
liza r sólo optim ación de registros o u tiliz a r optim ación com pleta. E n la figura 12.4
aparece un esbozo del co m p ilad o r en caso de que se realice optim ación com pleta.
E l texto fuente se considera en cuatro pasadas. Las prim eras dos realizan el aná­
lisis lé xico y sintáctico, produciendo cuádruplos. La siguiente pasada in co rp o ra op­
tim ación de código y optim ación de registros y la pasada final genera código objeto
a p artir de los cu ád ru p lo s y las asignaciones a los registros.
L a fase de an álisis léxico es poco frecuente, puesto que su salida no es una cadena
de com ponentes léxicos sino una cadena de “ pares operador-operando” , que son más
o m enos equivalentes a un com ponente léxico operando ju n to con el com ponente lé­
xico no operando precedente. Se debe observar que en F O R 1 R A N , com o en la ma­
yoría de los lenguajes, nunca hay dos com ponentes léxicos operandos consecutivos
com o identificadores o constantes; más bien, dos com ponentes léxico s de ese tipo
siem pre están separados al m enos por un com ponente léxico de puntuación.
Por ejem plo, la pro p o sició n de asignación

A= B(I) + C

se tra d u ciría a la secuencia de pares:

“ p ro p o sició n d e asig n a ció n ” A


B
(S I

)
+ c

La fase de a n álisis lé xico distingue entre un paréntesis izquierdo cuya m isión es in ­


tro d u cir una lista de parám etros o sub índ ices de uno cuya m isión es agrupar ope-
756 UNA M IR A D A A A L G U N O S C O M PIL A D O R E S

código fuente

código de m áqu ina relocalizable

Fig. 12.4. Esbozo del compilador FO R T R A N H.

randos. Por tanto, el sím bolo “ ( s ” sirve para representar un paréntesis izquierdo
utilizado com o operador de subíndice. Los paréntesis derechos nunca tienen un
operando a continuación y F O R T R A N H no distingue las dos funciones de los pa­
réntesis derechos.
Asociado con el análisis léxico está el proceso de proposiciones common y equi -
valence . En esta etapa es posible localizar cada bloque de m em oria common, así
como los bloques de m em oria asociados con las subrutinas, y determ inar la locali­
zación de cada variable m encionada por el programa en una de estas áreas de me­
m oria estáticas.
Y a que F O R T R A N no tiene proposiciones de control estructuradas com o las
proposiciones while, el análisis sintáctico, excepto para las expresiones, es bastante
directo y F O R T R A N H utiliza sim plem ente un analizador sintáctico por preceden­
cia de operadores para expresiones. Algunas optim aciones locales m uy sim ples se
realizan durante la generación de cuádruplos; por ejem plo, las m ultiplicaciones por
potencias de dos se sustituyen p o r operaciones de desplazam ientos hacia la iz ­
quierda.

O ptim ación de código en F O R T R A N H

Cada subrutina se particiona en bloques básicos y la estructura de los lazos se de­


duce encontrando aristas de grafo de flujo cuyas cabezas dom inen a sus colas, como
se describe en la sección 10.4. El com pilador realiza las siguientes optim aciones.
12.4 LO S C O M PIL A D O R E S DE FORTRAN H 757

1. E lim in a ció n d e subexpresiones com unes. E l com pilador busca subexpresiones


com unes locales y expresiones com unes a un bloque B y uno o más bloques a
los que B dom ine. O tros casos de subexpresiones com unes no son detectados.
Adem ás, la detección de subexpresiones com unes se realiza expresión a expre­
sión, en vez de u tiliza r el m étodo de vectores de bits descrito en la sección 10.6.
A l desarrollar la versión “ m ejorada" del com pilador, ios autores vieron que era
posible un m ayor aum ento de velocidad utilizan d o métodos de vectores de bits.

2. Traslado d e código. Las proposiciones invariantes de los lazos se elim inan de


ellos básicam ente com o se describe en la sección 10.7.
3. Propagación d e copias. D e nuevo, se realiza no más de una proposición de co­
p ia a la vez.

4. E lim inación d e variables d e inducción. Esta optim ación se realiza sólo para va­
riables asignadas una vez dentro del lazo. E n lugar de u tiliza r el enfoque de “ fa­
m ilia " descrito en la sección 10.7, se hacen m últiples pasadas a través del código
para detectar las variables de in d u cció n que pertenecen a la fam ilia de alguna
otra variable de in d u cció n .

A un que el an álisis de flu jo de datos se realiza al estilo de uno a uno, se alm ace­
nan com o vectores de bits los valores correspondientes a lo que se ha llam ado ent y
sal. Sin em bargo, en el co m p ilad o r original se im puso un lím ite de longitud 127 a
dichos vectores, así que los program as grandes sólo tienen optim ación para sus va­
riables más utilizadas. La versión m ejorada increm enta el lím ite pero no lo elim ina.

O p tim a c io n e s a lg e b raic a s

C om o F O R T R A N se u tiliza a m enudo para cálculos num éricos, la optim ación al­


gebraica es peligrosa, puesto que las transform aciones de expresiones pueden, en la
aritm ética del com putador, in tro d u cir desbordam ientos o pérdidas de precisión que
no son visibles si se tiene una visión idealizada de la sim p lifica ció n algebraica. Sin
embargo, las transform aciones algebraicas en las que tom an parte los enteros son
generalm ente seguras y la versión m ejorada del co m p ilad o r realiza parte de esta op­
tim ación únicam ente en caso de las referencias a m atrices.
E n general, una referencia a m atriz com o A ( I , J , K ) im p lica un cálculo de des­
plazam iento en el que se calcula una expresión de la form a a i + b J + c k + d\ los
valores exactos de las constantes dependen de la posición de A y de las dim ensiones
de la m atriz. S i, p o r ejem plo, i y K fueran constantes, ya sean constantes num éricas
o variables invariantes de un lazo, entonces el com pilador ap lica la ley asociativa y
conm utativa para obtener una expresión b j + e , donde e = a l + c k + d .

O ptim ación de registros


F O R T R A N H d ivid e los registros en tres clases. Estos conjuntos de registros se u ti­
lizan para optim ación de registros locales, optim ación de registros globales y “ opti­
m ación de ram ificacio nes". E l núm ero exacto de registros en cada clase puede ser
ajustado por el co m pilad o r, dentro de unos lím ites.
Lo s registros globales se asignan sobre una base lazo a lazo a las variables con
referencias más frecuentes en ese lazo. U n a variable que califiq u e a un registro en
758 UNA M IRADA A ALGUNOS C O M PIL A D O R E S

un lazo L , pero n o en el lazo que contenga inm ediatam ente a L , se carga en el


preencabezam iento de L y se alm acena en m em oria a la salida de L.
Los registros locales se u tilizan dentro de un bloque básico para guardar los re­
sultados de una proposición hasta que se u tiliza en una proposición o proposiciones
posteriores. Sólo se alm acena el va lo r de un tem poral si no existen los suficientes
registros locales. E l co m p ilad o r intenta ca lcu la r nuevos valores en el registro que
contenga uno de sus operandos, si ese operando se desactiva posteriorm ente. E n la
versión m ejorada, se intenta reconocer la situación donde los registros globales se
pueden intercam biar con otros registros para increm entar el núm ero de veces que
puede tener lugar una operación en el registro que guarda uno de sus operandos.
L a optim ación de ram ificaciones es un artefacto del conjunto de instrucciones
del IB M /3 7 0 , que asigna una gran im portancia significativa a saltar sólo a posicio­
nes que se pueden expresar com o el contenido de algún registro, más una constante
en el rango de 0 a 4095. Por tanto, F O R T R A N H asigna algunos registros para guar­
dar direcciones en el espacio de código, a intervalos de 4096 bytes, para perm itir
saltos eficientes en todos excepto en program as dem asiado grandes.

12.5 E L C O M P I L A D O R B L I S S / 1 1

Este co m p ila d o r im p lan ta el lenguaje de p rogram ación de sistem as B L IS S en un


P D P -1 1 (W u lf y colaboradores [19 75 ]). E n cierto sentido, es un co m p ilad o r opti­
m ador de un m undo que ha dejado de existir, un m undo donde el espacio de me­
m oria estaba tan solicitado que tenía sentido realizar optim aciones cuyo solo pro­
pósito era re d u c ir espacio en lu g ar de tiem po. S in em bargo, la m ayo ría de las
optim aciones realizadas por el co m p ilad o r tam bién ahorran tiem po y hoy en día se
utilizan descendientes de este com pilador.
El com pilador debe ser considerado p o r varias razones. Su rendim iento en la op­
tim ación es fuerte, y realiza varias transform aciones que no se encuentran en casi
ninguna otra parte. Adem ás, encabezó el enfoque “ d irig id o por la sin taxis” para la
optim ación, com o se estudió en la sección 10.5. Es decir, el lenguaje B L IS S se d i­
señó para p ro d u cir sólo grafos de flu jo reducibles (n o tiene instrucciones goto). Por
tanto, fue posible realizar análisis de flu jo de datos directam ente sobre el árbol de
análisis sintáctico, en lugar de hacerlo en un grafo de flujo.
E l co m p ila d o r trabaja en una so la pasada, co n un p ro ced im ien to com pleta­
mente procesado antes de leer el siguiente. L o s diseñadores co n sid eraro n qu e el
com pilador estaba com puesto por cin co m ódulos, com o se m uestra en la figura 12.5.
L E X S Y N F L O realiza an álisis léxico y análisis sintáctico. Se u tiliza un analiza­
d o r sintáctico descendente recursivo. C om o B L IS S no perm ite proposiciones goto,
todos los grafos de flujo de los procedim ientos de B L IS S son reducibles. D e hecho,
la sintaxis del lenguaje perm ite co n stru ir el grafo de flujo , y determ inar lazos y en­
tradas a lazos, a m edida que se hace el an álisis sintáctico. L E X S Y N F L O lo hace así
y tam bién determ ina subexpresiones com unes y una variante de las cadenas de uso
y definición y de definición y uso, aprovechando la estructura de los grafos de flujo
reducibles. Otra tarea im portante de L E X S Y N F L O es detectar grupos de expresio­
nes sim ilares. Estas son candidatas a ser sustituidas por una sola subrutina. Obsér-
12.5 EL C O M P IL A D O R B L I S S /l l 759

código fuente

código de máquina relocalizable

Fig. 12.5. El co m p ilad o r B L IS S /1 1.

vese q u e esta su stitu ció n h ace q u e el p ro g ra m a se ejecu te m á s le n ta m e n te p e ro p u e d e


a h o r r a r espacio.
El m ó d u lo D E L A Y e x a m in a el árb o l s in tá c tic o p a r a d e t e r m in a r q u é e je m p lo s
p a rtic u la re s d e las o p tim a c io n e s h ab itu ale s, c o m o el tra s la d o d e c ó d ig o in v a ria n te y
la e lim in a c ió n d e s u b e x p re s io n e s c o m u n e s s u p o n e n p r o b a b le m e n te u n a v e n ta ja . El
o rd e n d e e v a lu a c ió n d e las e x p re sio n e s se d e t e r m in a e n este m o m e n to , b a s a d o en la
estrategia d e e tiq u e ta d o d e la secció n 9 .1 0 . m o d ific a d a p a ra te n e r en c u e n t a registros
q u e n o estén d is p o n ib le s p o r q u e se u tiliz a n p a r a p re s e rv a r los v alo res d e s u b e x p re ­
siones c o m u n e s . L as leyes alg eb raicas se u tiliz an p a r a d e t e r m in a r si se d e b e h a c e r
r e o r d e n a m ic n to d e los cálcu lo s. L as e x p re sio n e s c o n d ic io n a le s se e v a lú a n n u m é r i­
c a m e n te o m e d ia n te flu jo d e c o n tro l, c o m o se e s tu d ió en la sección 8.4. y D E L A Y
d e c id e el m o d o m á s b a r a to e n c a d a caso.
T N B I N D c o n s id e r a los n o m b r e s d e te m p o r a le s q u e d e b e n en la z a rse a registros.
Se a s ig n a n t a n t o re g is tro s c o m o lo c a lid a d e s d e m e m o r ia . L a e stra te g ia e m p le a d a
760 U N A M IR A D A A A L G U N O S C O M P IL A D O R E S

co n siste en a g r u p a r p r im e r o los n o d o s del árb o l s in tá c tic o a lo s q u e se d e b e a s ig n a r


el m is m o registro. C o m o se e s tu d ió e n la sección 9.6, es m e jo r e v a lu a r u n n o d o e n el
m is m o registro q u e u n o d e s u s p adres. A c o n tin u a c ió n , la v e n ta ja q u e se o b tie n e si
se c o n s e rv a u n te m p o r a l e n u n reg istro se e s tim a m e d ia n te u n c á lc u lo q u e favorece
los q u e se u tiliz an v arias veces e n e sp a c io s co rto s. D e s p u é s los reg istro s se asig n an
h a s ta q u e se u tiliz a n , e m p a q u e ta n d o los n o d o s m á s b en eficio so s p r im e r o e n los re­
g istro s. C O D E c o n v ie r te el á rb o l, c o n su in f o r m a c ió n s o b re o r d e n a m i e n t o y asig­
n a c ió n d e reg istro s e n c ó d ig o de m á q u in a relocalizable.
E ste c ó d ig o es e x a m in a d o r e p e tid a m e n te p o r F I N A L q u e realiza o p tim a c ió n lo­
cal h asta q u e n o p u e d a o b te n e r u n a m a y o r m e jo ría. L as m e jo ra s realizad as in clu y en
la e lim in a c ió n de salto s (c o n d ic io n a le s o in c o n d ic io n a le s ) a salto s y c o m p le m e n ta -
c ió n d e c o n d ic io n a le s, tal c o m o se e s tu d ia e n la sección 9.9.
L as in s tru c c io n e s r e d u n d a n te s o in a lc a n z a b le s se e lim in a n ( p o d r ía n h a b e r sid o
o c a s io n a d a s p o r o tr a s o p tim a c io n e s d e F IN A L ). Se in te n ta la fu sió n d e se cu en cias
d e c ó d ig o sim ila re s en los d o s c a m in o s d e u n a ra m ific a c ió n , c o m o e n la p ro p a g a c ió n
local d e c o n s ta n te s . Se in te n ta n o tr a s o p tim a c io n e s locales, a lg u n a s m u y d e p e n d ie n ­
tes d e la m á q u in a . U n a m u y im p o r ta n te e s la s u s titu c ió n , d o n d e sea p o sib le, d e in s ­
tru c c io n e s d e salto p o r “ ra m ific a c io n e s ” d e P D P - 11, q u e n e c e sita n u n a p a la b ra p e ro
están lim ita d a s en su ra n g o a 128 p alab ras.

1 2 .6 C O M P I L A D O R O P T I M A D O R D E M O D U L A - 2

E ste c o m p ila d o r , d e s c r ito e n P ow ell [1 9 8 4 ). fue d e s a r r o lla d o c o n la in t e n c ió n d e


p r o d u c ir b u e n códig o , u tiliz a n d o o p tim a c io n e s q u e p r o p o r c io n e n a lto re n d im ie n to
c o n p o c o esfu erzo : el a u t o r d e sc rib e su estrateg ia c o m o b ú s q u e d a d e las o p tim a c io ­
nes “ m e jo re s y m á s sen cillas” . D ic h a filosofía p u e d e ser difícil d e seguir; sin ex p eri­
m e n ta c ió n ni m e d id a s , e s difícil d e c id ir p o r a n tic ip a d o c u á le s son las o p tim a c io n e s
“ m e jo re s y m á s sen cillas” y a lg u n a s d e las d ecisio n es t o m a d a s e n el c o m p ila d o r d e
M O D U L A - 2 p r o b a b le m e n te s o n in a d e c u a d a s p a r a u n c o m p ila d o r q u e p ro p o rc io n e
o p tim a c ió n m á x im a . Sin e m b a rg o , la estrateg ia c o n s ig u ió el p ro p ó s ito del a u t o r d e
p r o d u c ir ex c e le n te c ó d ig o c o n u n c o m p ila d o r q u e se e sc rib ió p o r u n a p e rs o n a en
p o c o s m eses. En la figura 12.6 se e s b o z a n las c in c o p a s a d a s d e la e ta p a inicial del
c o m p ila d o r.
El a n a liz a d o r s in tá c tic o se g e n e ró u tiliz a n d o Y A C C , y p r o d u c e á rb o le s s in tá c ti­
c o s e n d o s p asad as, p u e s to q u e las variables d e M O D U L A n o tie n e n q u e d eclararse
a n te s d e s e r utilizad as. Se in te n tó h a c e r este c o m p ila d o r c o m p a tib le c o n los d is p o ­
sitiv o s existentes. El c ó d ig o in te r m e d io es c ó d ig o P p a r a s e r c o m p a tib le c o n m u c h o s
c o m p ila d o r e s d e Pascal. El f o r m a to d e lla m a d a a p r o c e d im ie n to p a ra este c o m p ila ­
d o r c o in c id e c o n los c o m p ila d o re s d e Pascal y C q u e se e je c u ta n b a jo Berkeley U N I X ,
d e m o d o q u e los p r o c e d im ie n to s e sc rito s e n lo s tres len g u ajes se p u e d e n in te g ra r fá­
cilm en te.
El c o m p ila d o r n o realiza a n á lis is d e flu jo d e d a to s . E n su lugar. M O D U L A - 2 ,
co m o BLISS, es un lenguaje q u e sólo p u ed e producir grafos de flujo reducibles. así
q u e a q u í ta m b ié n se p u e d e u tiliz a r la m e to d o lo g ía d e la secció n 10.5. D e h e c h o , el
c o m p ila d o r d e M O D U L A va m á s lejos q u e el c o m p ila d o r d e B L IS S -11 e n la fo rm a
12.6 C O M P IL A D O R O P T I M A D O R D E M O D U L A - 2 761

Fig. 12.6. Pasadas del compilador de MODULA-2.

en q u e se a p r o v e c h a d e la sintaxis. L o s la zo s se id e n tific a n p o r su sintaxis; e s decir,


el c o m p ila d o r b u sc a c o n s tru c c io n e s w h i l e y fo r . L as e x p re sio n e s in v a ria n te s se d e ­
te c ta n p o r el h e c h o d e q u e n in g u n a d e sus v aria b les se d e fin e e n el la z o y se tra s la ­
d a n a un e n c a b e z a m ie n to del lazo. L as ú n ic a s v aria b les d e in d u c c ió n q u e se d e te c ­
ta n s o n las d e la f a m ilia d e u n ín d ic e d e l la z o f o r . L a s s u b e x p r e s io n e s c o m u n e s
globales se d e te c ta n c u a n d o u n a e s tá e n un b lo q u e q u e d o m i n e el b lo q u e d e la otra,
p e r o este análisis se realiza e x p re sió n a ex p re sió n , en lu g a r d e c o n v e c to re s d e bits.
L a estrategia d e asig n ac ió n d e registros se d is e ñ ó d e m a n e r a s im ila r p a r a h a c e r
c o sas ra z o n a b le s sin s e r e x h a u stiv o . E n c o n c re to , c o n s id e r a c o m o c a n d id a to s p a r a la
asig n ac ió n d e u n registro só lo a:

1. te m p o r a l e s u tiliz a d o s d u r a n t e la e v a l u a c ió n d e u n a e x p r e s ió n (é s ta s re c ib e n
p rio rid a d a b so lu ta ).

2. valores d e s u b e x p re s io n e s c o m u n e s ,
3. v alo res d e ín d ic e y lím ite s e n la zo s fo r ,

4. la d ire c c ió n d e E e n u n a e x p re sió n d e la f o r m a w i t h E d o , y

5. variables sim p le s (caracteres, e n te ro s, e tc .) locales al p r o c e d im ie n to e n cu rso.

Se in te n ta e s tim a r el v a lo r d e c o n s e r v a r c a d a v a ria b le e n las clases (2) a (5) d e u n


registro. Se s u p o n e q u e u n a p ro p o sic ió n se e je c u ta \0 J veces si está u n id a d e n t r o d e
d lazos. S in e m b a rg o , las variables re fe re n c ia d a s d o s veces a lo s u m o n o se c o n s id e ­
ra n elegibles: las o tr a s se clasifican en o r d e n d e uso e s tim a d o y se asig n an a u n re­
gistro. si h a y u n o d is p o n ib le , d e s p u é s d e a s ig n a r los te m p o ra le s d e e x p resio n es y las
variab les c o n a lto rang o .
|7 6 3 |

A PEND ICE

Un proyecto
de programación

A .l IN T R O D U C C IO N

E ste a p é n d ic e p r o p o n e ejercicio s d e p r o g ra m a c ió n q u e se p u e d e n u tiliz a r en un la­


b o ra to rio d e p r o g ra m a c ió n j u n t o c o n u n c u r s o d e d is e ñ o d e c o m p ila d o re s b asad o
en este libro. L o s ejercicios c o n siste n e n im p la n t a r los c o m p o n e n te s b ásico s d e un
c o m p ila d o r p a r a u n s u b c o n j u n t o d e P ascal. El s u b c o n j u n t o e s m í n i m o , p e r o p e r ­
m ite e x p re sa r p ro g ra m a s c o m o la clasificació n recursiv a d e la sección 7.1. S e r u n
s u b c o n ju n to d e u n le n g u a je e x iste n te p o se e c ie rta u tilid a d . El sig nificad o d e los p r o ­
g ra m a s e n el s u b c o n ju n to v ie n e d e t e r m in a d o p o r la s e m á n tic a d e P ascal (J e n s e n y
W irth [1975]). Si h a y u n c o m p i l a d o r d e P ascal d is p o n ib le , se p u e d e u tiliz a r p a r a
c o m p r o b a r el c o m p o r t a m i e n to del c o m p ila d o r e sc rito c o m o ejercicio. 1-as c o n s tr u c ­
c io n e s e n el s u b c o n ju n to a p a re c e n e n la m a y o ría d e los len g u ajes d e p ro g ra m a c ió n ,
d e m o d o q u e los ejercicios c o r r e s p o n d ie n te s se p u e d e n f o r m u la r u tiliz a n d o u n len­
g u aje d is tin to si n o h a y u n c o m p ila d o r d e Pascal d isp o n ib le.

A.2 E S T R U C T U R A D E L P R O G R A M A

U n p r o g r a m a c o n s ta d e u n a s e c u e n c ia d e d e c la r a c io n e s d e d a t o s g lo b ales, u n a se­
c u e n c ia d e d e c la r a c io n e s d e p r o c e d i m i e n t o s y f u n c io n e s y u n a s o la p r o p o s ic ió n
c o m p u e s t a q u e es el “ p r o g r a m a p r i n c i p a r . A lo s d a t o s g lo b a le s se les a s ig n a m e ­
m o ria estática. A los d a to s locales a p ro c e d im ie n to s y fu n cio n es se les asigna m e m o ­
ria en u n a pila. S e p e rm ite la re c u rsiv id a d y los p a r á m e tr o s se p a s a n p o r referencia.
Se s u p o n e q u e el c o m p ila d o r p r o p o r c io n a los p ro c e d im ie n to s r e a d y w r i t e .
L a figura A. I d a u n e je m p lo d e u n p ro g ra m a . El n o m b r e del p ro g ra m a es e j e m ­
plo, e i n p u t y o u t p u t s o n lo s n o m b r e s d e lo s a r c h iv o s u t i liz a d o s p o r r e a d y
w r i t e . re sp e c tiv a m e n te .

A 3 S IN T A X IS D E U N S U B C O N J U N T O D E PA SC A L

M á s a b a jo se lista u n a g ra m á tic a L A L R ( I ) p a r a u n s u b c o n ju n to d e Pascal. L a g ra ­


m á tic a p u e d e m o d ific a rse p a ra el a n á lis is d e s c e n d e n te re c u rsiv o e lim in a n d o la re-
764 UN PROYECTO DE P R O G R A M A C IO N

p r o g r a m e j e m p l o (i n p u t , o u t p u t ) ;
var x, y: integer;
function mcd(a, b: integer): integer?
begin
if b = 0 then mcd := a
else mcd := m c d ( b , a mod b)
end;

b e g in
read(x, y);
write(mcd(x, y ))
end.

Fig. A .l. Programa de ejemplo.

cursividad p o r la izquierda, com o se describe en las secciones 2.4 y 4 .3. Se puede


co n stru ir un an alizad o r sintáctico p o r precedencia de operadores para las expresio­
nes sustituyendo oprel, opsum a y pm ult, y elim in an d o las producciones €.
La sum a de la producción

proposición —> if expresión then proposición

introduce la am bigüedad del else, que se puede e lim in a r com o se estudió en la sec­
ción 4.3 (véase tam bién el Ejem plo 4. 19 si se u tiliza un an alizad o r sintáctico predic­
tivo).
N o hay d istin ció n sintáctica entre una variable sim ple y la llam ada a una fun­
ción sin parám etros. A m bas se generan p o r m edio de la producción
fa c to r - » id

P o r tanto, la asignación a := b le asigna a a el va lo r devuelto por la función b, si b


ha sido declarado com o una función.
program a ->
program a id ( lisia -id en tifica d o res ) ;
declaraciones
d eclaraciones-subprogram as
p ro p o sició n -co m p u esta

lista -id e n tific a d o r es —>


id
| lista -id e n tific a d o re s, id

declaraciones —>
declaraciones var lista -id en tifica d o res : tip o ;
| €

tipo
tip o -e stá n d a r
I a rra y [ núm . . núm ] o f tip o estándar
A .3 SINTA XIS D E U N S U B C O N JU N T O D E PASCAL 765

tip o -e stá n d a r -►
in teg er
| real

decía raciones _ s iib program as —»


decía raciones-subprogram as decía ración _ subprogra m a

d ecla ra ció n su b p ro g ra m a -*
encab-subprogram a declaraciones proposición-com puesta

encab-subprogram a —>
fu n ctio n id argum entos : tip o -e stá n d a r ;
p ro c e d u re id argum entos ;

argum entos ->


( lista -p a rá m etro s )

lista -p a rá m etro s ->
lista-identificadores : tipo
| lista-pa rá m etro s ; lista -id en tifica d o res : tipo

proposición-com puesta ->


begin
proposiciones-optativas
end

proposiciones-optativas ->
lista-proposiciones
| €

lista-proposiciones —>
proposición
| lista-proposiciones ; proposición

proposición ->
variable o p a s ig n a expresión
proposición-procedim iento
proposición-com puesta
if expresión th e n proposición e ls e proposición
w hile expresión d o proposición

variable —>
id
id [ expresión ]

proposición-procedim iento -»
id
id ( lis ta -e x p r e s io n e s )
766 U N PR O V EC TO D E PR O G R AM A CIO N

lista -exp resio n es —»


e x p r e s ió n
| lista -exp resio n es , expresión

expresión —>
exp resió n -sim p le
| e x p resió n -sim p le o p rel exp resió n -sim p le

e x p resió n -sim p le -*
térm ino
signo térm ino
e x p resió n -sim p le opsum a térm ino
térm in o —►
factor
| térm in o o p m u lt fa ctor
f a c t o r —>
id
id ( lis ta -e x p r e s io n e s )

núm

( expresión )
not fa cto r
signo -*

A .4 C O N V E N C I O N E S L E X I C O G R A F I C A S

L a n o ta c ió n p a r a esp ecificar lo s c o m p o n e n te s léxicos p ro v ie n e d e la secció n 3.3.

1. L o s c o m e n ta r io s se e n c ie rra n e n tre { y }. N o p u e d e n c o n te n e r u n ¡. L o s c o m e n ­
ta rio s p u e d e n a p a re c e r d e s p u é s d e c u a lq u ie r c o m p o n e n te léxico.

2. L o s e sp a c io s en b la n c o e n tr e los c o m p o n e n te s léxicos s o n o p c io n a le s, c o n la e x ­
c e p c ió n d e q u e las p a la b ra s c lav e d e b e n ir e n c e rra d a s e n tr e esp acio s e n b la n co ,
c a ra c te re s d e n u e v a línea, el c o m ie n z o del p r o g r a m a o el p u n t o final.

3. F.I c o m p o n e n t e léx ico i d p a r a los id e n tif ic a d o r e s c o n c u e r d a c o n u n a le tr a se­


g u id a d e le tra s o dígitos:

le tra - * [a-zA-Z]
d í g i t o —* [ 0 - 9 ]

id - > le tr a ( le tr a | d íg ito )*

El im p la n ta d o r p u e d e d e s e a r p o n e r u n lím ite a la lo n g itu d d e u n id e n tific a d o r.

4. El c o m p o n e n t e léx ico núm c o n c u e r d a c o n e n t e r o s s in s ig n o (v é a s e E j e m ­


p lo 3.5):
A .5 EJER C IO O S PROPUESTOS 767

d í g i t o s - > d í g i t o d íg i to *
f r a c c ió n - o p ta tiv a - > . d íg ito s ¡ €
e x p o n e n t e - o p t a t i v o —> ( E ( + | — | € ) d í g i t o s ) | €
n ú m - » d íg ito s f r a c c ió n - o p ta tiv a e x p o n e n te - o p ta tiv o

5. L a s p a la b ra s c la v e s o n re s e rv a d a s y a p a re c e n e n n e g rita s e n la g ra m á tic a .

6. L o s o p e r a d o r e s d e r e l a c i ó n ( o p r e l ) s o n = , o , <, < = , > = , y >. O b sérv ese q u e o


in d ic a # .

7. L o s o p e ra d o re s o p s u m a s o n +, - y o r .

8. L o s o p e ra d o re s o p m u lt so n *, / , d i v , m od, y a n d .

9. E l le x e m a p a r a el c o m p o n e n t e lé x ic o o p a s ig n a e s := .

A .5 E J E R C I C I O S P R O P U E S T O S

U n e je rc ic io d e p r o g r a m a c ió n a d e c u a d o p a r a u n c u r s o d e u n s e m e s tre es e s c rib ir u n
i n t é r p r e t e p a r a el l e n g u a j e a n t e r i o r m e n t e d e f i n i d o , o p a r a u n s u b c o n j u n t o s i m i l a r d e
o t r o l e n g u a j e d e a l t o n i v e l . E l p r o y e c t o i m p l i c a t r a d u c i r el p r o g r a m a f u e n t e a u n a
re p re s e n ta c ió n in te r m e d ia c o m o c u á d r u p lo s o c ó d ig o p a r a m á q u in a d e p ila y d e s­
p u é s i n t e r p r e t a r l a r e p r e s e n t a c i ó n i n t e r m e d i a . S e p r o p o n d r á u n o r d e n p a r a la c o n s ­
t r u c c i ó n d e lo s m ó d u l o s . E l o r d e n e s d i s t i n t o d e l o r d e n e n el q u e l o s m ó d u l o s se
e je c u ta n e n el c o m p ila d o r p o r q u e es c o n v e n ie n te te n e r u n in té rp re te o p e ra tiv o p a ra
d e p u r a r lo s o tro s c o m p o n e n te s d e l c o m p ila d o r.

1. D is é ñ e s e u n m e c a n is m o p a r a la ta b la d e s ím b o lo s . D e c í d a s e l a o r g a n i z a c i ó n d e
la t a b l a d e s í m b o l o s . T é n g a s e e n c u e n t a la i n f o r m a c i ó n r e u n i d a s o b r e n o m b r e s , p e r o
d é j e s e la e s t r u c t u r a d e r e g i s t r o s d e la t a b l a d e s í m b o l o s f l e x i b l e e n e s c m o m e n t o . E s ­
c ríb a n se ru tin a s p ara:

i) B u s c a r e n la t a b l a d e s í m b o l o s u n d e t e r m i n a d o n o m b r e , c r e a r u n a n u e v a e n t r a d a
p a r a e s e n o m b r e si n o h a y n i n g u n a y d e v o l v e r e n c u a l q u i e r c a s o u n a p u n t a d o r
al re g istro c o r r e s p o n d ie n te a d ic h o n o m b r e .

ii) B o r r a r d e la t a b l a d e s í m b o l o s t o d o s lo s n o m b r e s l o c a le s a u n p r o c e d i m i e n t o d a d o .

2 . E s c ríb a se u n in té rp re te d e c u á d ru p lo s. E l c o n j u n t o e x a c t o d e c u á d r u p l o s s e p u e d e
d e ja r a b ie rto e n e ste m o m e n to , p e ro d e b e rá in c lu ir la s p ro p o s ic io n e s a ritm é tic a s y
d e s a lto s c o n d ic io n a le s c o r r e s p o n d ie n te s al c o n j u n t o d e o p e r a d o r e s d el le n g u a je . In ­
c l u y a n s e t a m b i é n o p e r a c i o n e s ló g i c a s si l a s c o n d i c i o n e s s e e v a l ú a n a r i t m é t i c a m e n t e
e n l u g a r d e h a c e r l o p o r p o s i c i ó n e n e l p r o g r a m a . A d e m á s , h a y q u e p r e v e r la n e c e ­
s id a d d e “ c u á d r u p lo s ” p a r a c o n v e rs ió n d e e n te r o a re a l, p a r a m a r c a r el c o m ie n z o y
el fin a l d e p r o c e d im ie n to s , y p a r a p a s a r p a r á m e t r o s y lla m a d a s a p ro c e d im ie n to s .
T a m b i é n e s n e c e s a r i o e n e s t e m o m e n t o d i s e ñ a r l a s e c u e n c i a d e l l a m a d a s y la o r ­
g a n i z a c i ó n e n el m o m e n t o d e la e j e c u c i ó n p a r a lo s p r o g r a m a s q u e e s t á n s i e n d o i n ­
t e r p r e t a d o s . L a o r g a n i z a c i ó n d e p i l a s e n c i l l a e s t u d i a d a e n la s e c c i ó n 7 .3 e s a d e c u a d a
768 U N PROYECTO DE P R O G R A M A C IO N

p a r a el le n g u a je d e e je m p lo , p o r q u e n o se p e rm ite n d e c la ra c io n e s d e p ro c e d im ie n to s
a n id a d a s e n e l le n g u a je ; es d e c ir , la s v a ria b le s s o n g lo b a le s ( d e c la r a d a s al n iv e l d el
p r o g r a m a c o m p le to ) o s o n lo c a le s a u n s o lo p r o c e d im ie n to .
P a r a s im p lif ic a r , s e p o d r í a u tiliz a r o t r o le n g u a je d e a l t o n iv e l e n lu g a r d e l i n t é r ­
p r e te . C a d a c u á d r u p l o p u e d e s e r u n a p r o p o s i c i ó n d e u n le n g u a je d e a lto n iv e l c o m o
C o in c lu s o P a s c a l. E n t o n c e s la s a lid a d e l c o m p i l a d o r e s u n a s e c u e n c ia d e p r o p o s i­
c io n e s e n C q u e se p u e d e n c o m p ila r e n u n c o m p ila d o r d e C e x iste n te . E ste e n fo q u e
p e r m i t e q u e el i m p l a n t a d o r s e c o n c e n t r e e n l a o r g a n i z a c i ó n p a r a l a e j e c u c i ó n .

3. E s c r íb a s e e l a n a liz a d o r lé x ic o . S e l e c c i ó n e n s e c ó d i g o s i n t e r n o s p a r a l o s c o m p o ­
n e n te s lé x ic o s. D e c íd a s e c ó m o s e r e p r e s e n t a r á n la s c o n s t a n t e s e n el c o m p i l a d o r .
C u é n t e n s e la s l í n e a s p a r a u n u s o p o s t e r i o r p o r p a r t e d e l m a n e j a d o r d e m e n s a j e s d e
e r r o r . H á g a s e u n l i s t a d o d e l p r o g r a m a f u e n t e si s e d e s e a . E s c r í b a s e u n p r o g r a m a p a r a
i n t r o d u c i r l a s p a l a b r a s r e s e r v a d a s e n l a t a b l a d e s í m b o l o s . D i s é ñ e s e e l a n a l i z a d o r lé ­
x ic o p a ra q u e sea u n a s u b r u tin a lla m a d a p o r el a n a liz a d o r s in tá c tic o , d e v o lv ie n d o
u n p a r ( c o m p o n e n t e lé x ic o , v a l o r d e a t r i b u to ) . P o r el m o m e n t o , lo s e r r o r e s d e t e c ­
ta d o s p o r su a n a liz a d o r lé x ic o p u e d e n tr a ta r s e l l a m a n d o a u n a r u ti n a p a r a im p r e ­
s i ó n d e e r r o r e s y s u s p e n d i e n d o la e j e c u c i ó n .

4. E s c r íb a n s e la s a c c io n e s s e m á n tic a s . E s c r í b a n s e r u t i n a s s e m á n t i c a s p a r a g e n e r a r
lo s c u á d r u p l o s . H a b r á q u e m o d i f i c a r l a g r a m á t i c a e n a l g u n o s l u g a r e s p a r a h a c e r m á s
fácil la t r a d u c c i ó n . C o n s ú l t e n s e la s s e c c i o n e s 5 .5 y 5 . 6 si s e q u i e r e n e j e m p l o s d e c ó m o
m o d if ic a r d e m a n e r a ú til la g ra m á tic a .

5. E s c r íb a s e e l a n a liz a d o r s in tá c tic o . S i h a y u n g e n e r a d o r d e a n a l i z a d o r e s s i n t á c ­
tic o s L A L R d is p o n ib le , s im p lific a rá c o n s id e r a b le m e n te el tra b a jo . Si e s tá d is p o n ib le
u n g e n e ra d o r d e a n a liz a d o re s s in tá c tic o s q u e m a n e je g ra m á tic a s a m b ig u a s , c o m o
Y A C C , e n to n c e s se p u e d e n c o m b i n a r lo s n o te r m in a le s q u e in d iq u e n e x p re s io n e s .
A d e m á s, el p r o b le m a d e l “ e lse a m b ig u o " se p u e d e re s o lv e r d e s p la z a n d o c a d a vez
q u e o c u r r a u n c o n flic to d e d e s p la z a m ie n to /re d u c c ió n .

6. E s c r íb a n s e la s r u tin a s p a r a e l m a n e j o d e e r ro r e s. H a y q u e e s t a r p r e p a r a d o p a r a
re c u p e ra rs e d e e r r o r e s lé x ic o s y s in tá c tic o s . I m p r í m a n s e d ia g n ó s tic o s d e e r r o r e s p a r a
lo s e r r o r e s l é x i c o s , s i n t á c t i c o s y s e m á n t i c o s .

7. E v a lu a c ió n E l p r o g r a m a d e l a f i g u r a A . l p u e d e s e r v i r c o m o u n a s i m p l e r u t i n a
d e p ru e b a . O tr o p r o g r a m a d e p r u e b a se p u e d e b a s a r e n el p r o g r a m a e n P a s c a l d e la
fig u ra 7 .1 . E l c ó d ig o p a r a la f u n c ió n p a r t i c i ó n d e la f ig u r a c o r r e s p o n d e a l fra g ­
m e n t o m a r c a d o e n e l p r o g r a m a e n C d e la f i g u r a 1 0 .2 . E j e c u t e s u p r o g r a m a e n u n
c o m p ila d o r , si h a y a lg u n o d is p o n ib le . D e te r m ín e n s e la s r u t i n a s e n la s q u e se e m p le a
la m a y o r p a r t e d e l t i e m p o . ¿ Q u é m ó d u l o s h a b r í a q u e m o d i f i c a r p a r a i n c r e m e n t a r la
v e lo c id a d d e su c o m p ila d o r?

A .6 E V O L U C I O N D E L I N T E R P R E T E

U n e n f o q u e a l t e r n a t i v o p a r a c o n s t r u i r u n i n t é r p r e t e p a r a el l e n g u a j e e s c o m e n z a r
im p la n ta n d o u n a c a lc u la d o r a d e b o lsillo , es d e c ir, u n in té r p r e te d e e x p re s io n e s .
A ñ á d a n s e g r a d u a lm e n te c o n s tru c c io n e s al le n g u a je h a s ta q u e se o b te n g a u n in té r ­
A .7 A M P L IA C IO N E S 769

prete para todo el lenguaje. E n K ernig h an y Pike [1984] se adopta un enfoque s i­


m ilar. U n orden propuesto para añ ad ir construcciones es:

1. T ra d ú zca n se las exp resio n es a la notación postfija. U tiliza n d o un an alizad o r


sintáctico descendente, com o en el capítulo 2, o un generador de analizadores sin ­
tácticos, fam iliarícese con el entorno de program ación escribiendo un traductor de
expresiones aritm éticas sim ples a notación postfija.
2. A ñ á d a se un a n a liza d o r léxico. Perm ítanse que en el trad ucto r anteriorm ente
construido aparezcan palabras clave, identificadores y núm eros. Redestínese el tra­
ductor para que produzca código para una m áquina de p ila o cuádruplos.

3. E scríbase un intérprete d e la representación interm edia. C o m o se estudió en la


sección A .5, se puede u tiliza r un lenguaje de alto n ive l en lugar del intérprete. Por
el m om ento, el intérprete sólo tiene que a d m itir operaciones aritm éticas, asignacio­
nes, y entrada y salida. A m plíese el lenguaje perm itiendo declaraciones de variables
globales, asignaciones y llam adas a procedim ientos r e a d y w r it e . Estas construc­
ciones perm iten que se com pruebe el intérprete.

4. A ñ á d a n se proposiciones. U n program a en el lenguaje consta ahora de un pro­


gram a p rin cip al sin declaraciones de subprogram as. Com pruébense tanto el traduc­
tor com o el intérprete.

5. A ñádanse procedim ientos y funciones. L a tabla de sím bolos debe perm itir ahora
que los ám bitos de los identificadores se lim iten a cuerpos de procedim ientos. D i­
séñese una secuencia de llam adas. D e nuevo, la organización de p ila sim ple de la
sección 7 .3 es adecuada. A m plíese el intérprete para que adm ita la secuencia de lla ­
mada.

A .7 A M P L IA C IO N E S

Se pueden añ ad ir varias características al lenguaje sin co m p licar dem asiado la com ­


pilació n . Entre éstas están:

1. m atrices m ultidim ensionales


2. proposiciones f o r y c a s e
3. estructuras de bloque
4. estructuras de registros, r e c o r d

Si el tiem po lo perm ite, añádanse una o m ás de estas am pliaciones a su com pilador.


Bibliografía

P á g in a s 7 7 1 a 7 9 0
N o in c lu id a s e n
S p a n is h E d it io n O
|7 9 1 |

Indice de materias

A b el. N . E .. 7 3 6 e s t á tic o (v é a s e á m b ito - lé x ic o )


A b elso n . H .. 4 7 5 lé x ic o . 4 2 4 - 3 6
a c ce so A m m a n n . U .. 8 3 . 5 2 6 . 5 9 9 . 7 6 4 - 4 7 . 7 5 2 . 7 5 3
p r o fu n d o . 4 3 6 . 4 3 7 análisis. 2 - 1 0 ( v é a n s e ta m b ié n a n á lis is lé x ic o :
su perficial. 4 3 7 a n á lis is sin tá c tic o )
a c c ió n se m á n tic a . 38. 3 9 . 2 6 7 . 268 d e flujo d e d a lo s . 6 0 4 . 6 2 6 - 7 4 0
a c e p ta c ió n . 117. 118. 2 0 5 de intervalos. 6 4 1 . 6 7 8 . 6 8 6 . 7 3 7 . 7 3 8
A c k le v• . S . 1.. 160 (v é a s e ta m b ié n a n á lis is 7j-7%)
a c tiv a c ió n . 401 del flujo d e d a t o s e n tr e p r o c ed im ien to s,
A d a. 3 5 5 . 3 7 3 . 3 7 5 . 3 7 6 . 3 7 8 . 3 7 9 , 4 2 5 6 7 1 -7 8
A d r io n , W . R.. 7 4 0 itera tivo d e llu j o d e d a to s . 6 4 1 - 5 1 . 6 9 0 - 9 2 .
A F D (v ó a se a u tó m a ta i m i t o d e te r m in is ta ) 709-12
A F N (v éa se a u tó m a ta f i n i t o n o d e te r m in is ta ) jerá rq u ico . 5 (v é a s e ta m b ié n a n á lis is
A h o . A . V .. 160. 161. 186. 2 1 0 . 2 8 4 - 8 6 . 3 0 1 . sin tá c tic o )
405. 458. 459. 476. 583. 588. 600. 739 lé x ic o . 5. 12. 2 6 . 5 4 -6 0 . 7 1. 8 5 - 16 1 . 164
A igrain. P .. 601 lin eal. 4 (v é a s e ta m b ié n a n á lis is lé x ic o )
a lc a n c e d in á m ic o . 4 3 6 s e m á n tic o . 5. 8
a lfa b e to . 94 sin tá c tico . 6. 7. 12. 3 0 . 3 1 . 4 0 - 4 9 . 5 7 . 5 8 .
b in ario. 94 73. 8 6 . 8 7 . 163 ( v é a n s e ta m b ié n
A L G O L . 2 4 . 8 2 . 8 3 . 160. 2 8 4 . 4 4 2 . 4 7 5 . 5 2 6 . a n á lis is s in tá c tic o a s c e n d e n te : a n á lis is
577 s in tá c tic o d e s c e n d e n te : a n á lis is
A L G O L -6 8 . 2 1 . 8 8 . 3 9 8 . 527 s in tá c tic o p o r a c o ta m ie n to d e c o n te x to )
a lg o ritm o a s c e n d e n t e . 4 l . 2 0 0 . 2 9 9 . 3 0 2 -0 4 . 3 1 7 - 2 5 .
d e C o c k e -Y o u n g e r -K a s a m i. 164, 2 8 4 4 7 7 ( v é a n s e ta m b ié n a n á lis is
d e C Y K (v é a s e a lg o r itm o d e C o c k e - s in tá c tic o L R : a n á lis is s in tá c tic o p o r
Y o u n g e r -K a s a m i) d e s p la z a m ie n to y re d u c c ió n : a n á lis is
d e Earlev. 164 s in tá c tic o p o r p r e c e d e n c ia d e
d e K M P . 1 5 4 . 155 o p e ra d o re s)
d e K n u th -M o rris-P ratt (v é a s e tam bién c a n ó n ic o . 2 3 6 . 2 4 0 . 2 4 2 . 262
a lg o ritm o d e K M P ) . 161 d e s c e n d e n te . 4 1 - 4 8 . 180. 186-2 0 0 . 3 1 2 .
alias. 6 6 6 - 7 8 . 7 3 9 4 7 7 ( v é a n s e ta m b ié n a n á lis is
a lin ea c ió n d e d ato s. 4 1 1 . 4 1 2 . 4 8 7 s in tá c tic o p r e d ic tiv o : a n á lis is
A lie n . F. E.. 7 3 6 - 7 3 9 s in tá c tic o d e s c e n d e n te re c u rsiv o )
alternativa. 171 d e s c e n d e n te rccursivo. 4 4 . 186. 187.
a m b ie n te . 4 0 7 . 471 754. 758
d e a c tiv a c ió n . 4 7 1 . 4 7 2 g u ia d o p o r tablas. 191. 1 9 6-98 . 2 2 2 - 2 6
d e pasada. 4 7 1 . 4 7 2 (v é a n se ta m b ié n a n á lis is s in tá c tic o
léx ico . 4 7 1 . 4 7 2 p o r p r e c e d e n c ia d e o p e ra d o re s;
a m b ig ü e d a d . 3 0 . 176. 179. 180. 189. 197. a n á lis is s in tá c tic o L A L R : a n á lis is
206. 207. 235. 236. 2 5 4 -6 1 . 2 6 8 -7 1 . 594 s in tá c tic o L R c a n ó n ic o : a n á lis is
á m b ito . 4 0 6 . 4 0 7 . 4 2 4 . 4 2 5 . 4 5 2 -5 4 . 4 7 3 . s in tá c tic o S L R )
489-92 L A L R (v é a s e a n á lis is s in tá c tic o L R co n
d in á m ic o . 4 2 5 e x a m e n p o r a n tic ip a d o )
792 IN D IC E D E M ATERIAS

LR. 2 2 1 -7 4 . 35 2 . 595 a r g u m e n t o fic tic io (véase p a r á m e tr o f o r m a l )


LR c o n e x a m e n p o r a n tic ip a d o , 2 2 2 . arista
2 4 2 -5 0 . 2 6 2 . 2 8 5 (véase ta m b ié n cru zad a. 6 8 2
YACC) de avance. 6 2 4 . 682
se n c illo . 2 2 2 . 2 2 7 - 3 0 . 2 6 2 . 2 8 3 d e retroceso. 6 2 2 . 6 2 4 . 6 8 1 . 6 8 2
p o r a c o ta m ie n to d e c o n t e x t o . 2 8 5 hacia a d e la n te . 6 0 6
p o r d e s p la z a m ie n to y red u cción . ar ra n q u e . 7 4 3 - 4 7
2 0 4 - 0 8 (v é a n se ta m b ié n a n á lis is A SC II. 61
si n i ú n i c o L R : a n á lis is s i m a d ic o p o r asign ación
p r e c e d e n c ia d e o p e ra d o re s) a registros. 15. 5 3 3 . 5 5 3 -5 7
p o r p r e ce d e n c ia d e op erad ores. 2 0 9 - 2 1. d e m e m o r ia . 4 13 - 2 4 . 4 5 5 - 6 1
285. 754 d e registros, 5 3 3 . 5 5 8 - 6 0 , 5 7 9 -8 2
p red ictivo . 4 8 . 4 9 . 1 8 7 -9 3 . 198. 199. d e la p ila , 4 1 5 . 4 1 7 - 2 6 , 5 3 8 . 5 4 1-4 6
2 3 1 . 3 1 1 -1 8 d in á m ic a . 4 5 4 - 6 0
S L R (v é a s e a n á lis is s in tá c tic o L R estática. 4 1 3 - 1 6 . 5 3 8 , 5 4 1 -4 4
s e n c illo ) exp lícita. 4 5 4 . 4 5 8
7 \ - T 2, 6 8 6 . 6 8 7 . 6 9 2 - 9 8 glob al d e registros. 5 5 9 - 6 3
a n a liz a d o r lé x ic o . 86 im p lícita. 4 5 4 . 4 5 8 - 6 0
A n d c r s o n . J. P „ 6 0 0 p o r m e d i o d e u n m o n t íc u lo , 4 1 5 . 4 1 6 . 4 2 3 ,
A n d e r s o n . T ., 2 8 5 4 2 4 . 454-60
a n i d a m ie n t o d e a c tiv a c io n e s . 4 0 3 (véase asocia tiv id a d . 3 0 . 3 2 . 9 7 . 9 8 . 2 1 3 . 2 5 4 -5 6 ,
ta m b ié n e s tr u c tu r a d e b lo q u e s ) 270. 2 7 1 .7 0 2
A n k la m . P.. 7 3 7 p o r la d e r e c h a . 3 1 . 2 1 3 , 2 7 0
APL. 3 ,3 9 9 . 4 2 5 .7 1 3 p o r la izq u ierd a . 3 0 . 3 1 , 2 1 3 . 2 7 0
a p o y o d u r a n te la e je c u c ió n . 4 0 1 (v é a n se atributo. 1 1. 33. 8 9 . 2 6 7 , 2 8 8 (v é a n se
ta m b ié n a s ig n a c ió n d e l a p ila : ta m b ié n a tr ib u to h e r e d a d o : a tr ib u to
a s ig n a c ió n p o r m e d i o d e u n m o n tíc u lo ) s in te tiz a d o : d e fin ic ió n d ir ig id a p o r
a p r o x im a c ió n s in ta x is : v a lo r lé x ic o )
c o n se r v a d o r a . 6 2 9 . 6 3 2 . 6 3 3 . 6 4 8 . 6 7 0 - 7 2 . h e r ed a d o . 3 4 . 2 8 8 , 2 8 9 . 2 9 1 . 2 9 2 . 3 0 8 . 309.
6 7 7 . 6 7 8 . 7 0 7 -0 8 3 1 7 - 1 9 . 3 2 1 -2 6 . 3 3 4 . 3 3 5 , 3 5 0 . 351
segura (v éa se a p r o x im a c ió n c o n se r v a d o r a ) s in te tiz a d o . 3 4 . 2 8 8 - 9 0 . 3 0 8 , 3 0 9 , 3 2 5 . 326,
a p u n ta d o r . 3 6 1 . 4 2 2 , 4 8 2 . 5 5 7 . 5 6 9 . 5 7 0 , 5 9 8 . 3 3 5 (v é a s e ta m b ié n a tr ib u lo )
599. 666. 6 7 1 A u slan d cr. M . A ., 5 6 3 , 5 9 9 . 7 3 7
árb o l. 2, 3 5 9 . 4 6 3 , 4 6 4 (v é a n se ta m b ié n á r b o l a u t ó m a ta fin ito . 11 5 -4 7 (v é a s e ta m b ié n
d e e x p a n s ñ in e n p r o fu n d id a d : á r b o l d e d ia g r a m a d e tr a n s ic io n e s )
a c tiv a c ió n : á r b o l d e d o m in a c ió n : á rb o l d e te r m in ista . 1 1 5-2 4. 1 2 9 -3 1 . 1 3 5-3 9.
s in tá c tic o ) 1 4 3 -4 8 . 152. 153. 185. 2 2 3 . 2 3 2 . 2 3 3
d e a c tiv a c ió n . 4 0 3 - 0 5 n o d e te r m in ista . 115, 116. 1 1 9 -3 0 . 132-35,
d e a n á lisis sin tá c tic o . 6 -8 . 2 8 - 3 0 , 4 0 - 4 3 . 4 9 . 138. 139
5 0 . 164. 1 7 3 -76. 2 0 1 . 2 0 2 . 2 8 7 . 3 0 5 , A W K . 8 5 . 161, 742
3 0 6 (v é a s e ta m b ié n á r b o l sin tá c tic o )
d e a n á lisis sin tá c tic o c o n a n o t a c io n e s . 34.
288 B a c k h o u sc . R . C . . 2 8 5 . 7 4 0
d e d o m in a ció n . 6 2 0 B acku s. J. W .. 2. 8 2 . 160. 398
d e e x p a n s ió n e n p r o fu n d id a d . 6 8 0 Bail. W . Ci.. 7 3 7
d e s in ta x is abstracta. 4 9 Baker. B. S .. 7 3 8
d e sin ta x is c o n c r e ta . 4 9 (v é a s e ta m b ié n Baker. T . P.. 3 9 9
á r b o l sin tá c tic o ) B a n n in g . J .. 7 3 9
sin tá c tic o . 2. 8. 5 0 . 2 9 5 -9 9 . 4 7 8 - 8 0 . 4 8 6 B arron . D . W .. 83
( v é a n s e ta m b ié n á r b o l d e a n á lis is Barth. J. M .. 7 3 9
s in tá c tic o : á r b o l d e s i n t a x i s a b stra c ta : B au er, A . M .. 3 9 9
á r b o l d e s i n t a x i s c o n c re ta ) Baucr. F. L.. 8 3 . 3 5 1 . 3 9 8
sin tá c tic o a b stra c to (v é a s e ta m b ié n á r b o l BCPL. 526
s in tá c tic o ) B eatty. J. C .. 6 0 0
A r d e n . B. W .. 4 7 6 Beeber. R . J.. 2
área d e d a to s . 4 6 0 . 4 6 1 , 4 6 8 . 4 6 9 BegrifFsschrift. 4 7 6
IN D IC E DE M A T E R IA S 793

Bclady, L. A., 599 p rev io d e co n stan tes, 6 10, 6 13, 619,


Bell. J. R ., 736 700-07
Bentley, J. L., 372, 476, 605 c a m p o de u n registro, 491-93, 502, 503
Best, S., 2 Cardelli, L., 399
biblioteca, 4, 5, 54 C ard in ael, J. P., 353-58
Birmar. A ., 285 cargador, 19
bit d e rclocalización, 19 C árter, J. L., 749
BLISS, 503, 559, 577, 599, 6 2 5 , 736, 737, C árter, L. R ., 599
758, 759, 761 C artw right, R., 399
bloque (véanse bloque básico; bloque caso d e u n tip o polim órfico, 382
C O M M O N ; estructura de bloques) C attell, R. G . G ., 5 2 8 , 600
básico, 545-49, 609, 61 6 -20 . 6 2 7 , 722, C D C 6600, 600
723 (véase ta m b ié n bloques básicos ce n tin e la , 93
am pliados) cerrad u ra, 95, 96
C O M M O N , 446, 460-62, 469 d e co n g ru en cia (véase nodos congruentes)
inicial, 545 d e K leene (véase cerradura)
bloques básicos am p liad o s, 732 d e u n c o n ju n to d e elem en to s, 230, 232,
B N F , 2 5 , 82, 163, 284 237-39
B o c h m a n n , G . V., 351 positiva, 98 (véase ta m b ié n cerradura)
b o rra d o d e valores locales. 416 € , 120-22, 232
Boyer, R. S., 161 C F G (véase gram ática independiente de!
B ra n q u a rt, P., 353, 528 contexto)
B ra tm a n . H ., 744 ciclo, 181
B ronstad, M . A., 740 e n el grafo d e tipos, 370, 371
B rooker, R. A., 351 Ciesinger, J., 286
Brooks, F. P., 743 clase de caracteres, 9 4 , 98, 99, 150, 151
Brosgol, B. M ., 351 (véase ta m b ién alfabeto)
B row n, C. A., 351 clasificación p o r particio n es, 402, 6 0 6
B runo, J. L., 583, 600 C leveland, W . S., 476
buffer, 58, 63, 90-94, 131, 132 C N F (véase fo rm a norm al de Chomsky')
Burstall, R. M ., 396 co acc ió n , 356
B usam , V . A., 736 C O B O L , 750
b ú sq u ed a C ockc, J., 164, 563, 599, 736-39
d e retroceso, 186 codificación d e tipos, 366, 367
en p ro fu n d id a d , 679-82 código
e n u n grafo, 121 (véase ta m b ié n búsqueda d e co n d ició n , 558
en profundidad) d e m á q u in a , 5, 18, 19, 585, 593
b yte, 4 1 1 ,4 1 2 absoluta, 5, 19, 530, 531
relocalizable, 5, 18, 530, 531
d e tres direcciones, 14. 480-86
C , 52, 107, 167, 336, 337, 370, 371, 376, e n c o rto c irc u ito , 4 90
378, 4 0 8-1 0 , 425, 4 2 7 , 4 2 8 , 456, 487, e n sa m b la d o r, 4, 15, 17-19, 91, 531, 535
497, 5 2 5 ,5 5 9 , 577, 6 0 7 ,7 1 4 , 743, inactivo, 548, 610, 613
753-55 inalcanzable (véase código inactivo)
cabeza, 622 interm edio, 12-14. 477-527. 530. 607. 608.
cad en a, 94, 171, 172 7 22 (véanse ta m b ié n árbol; código
d e definición y uso, 650, 6 5 1 , 6 6 1 de tres direcciones; cuádruplos;
d e F ibonacci, 155 notación postjija; m áquina abstracta)
d e uso y definición, 638. 6 3 9 , 660. 661 objeto, 722
H o llerith , 100 P. 761
literal, 87 re d u n d a n te , 571
vacía, 27, 92, 96 coerción, 371, 372, 398
cálculo C o fim a n , E. G ., 600
d e in v a rian tes d e ciclos (véase traslado de C o h é n , R ., 352
código) cola. 522, 621
la m b d a , 399 colección
794 IN D IC E DE M A T E R IA S

canónica de co n ju n to s d e elem entos. 228. (véase tam bién coacción)


230, 237. 238 explícita. 371
d e co n ju n to s de elem entos LALR. 245 implícita, 371
coloración d e grafos. 562. 563 Conway, M. E., 285
com entario. 86-87 Convvay, R. W „ 168. 286
C O M M O N LISP. 475 Corasick, M. J., 160, 161
com pactación corazón d e un co n ju n to d e elem entos, 243
d e la m em oria. 460 C orm ack, G . V., 160. 399
de tablas. 252-54 corrección d e errores d e distancia m ínim a, 90
com pilador corrección global d e errores. 168, 169
cruzado. 744 Courcellc, B., 352
d e circuitos. 4 Cousot, P.. 738
d e com piladores. 22 Cousot. R., 738
d e un a pasada (véase traducción de una CPL. 399
pasada) cuadruplos. 484. 486. 487
o p tim a d o r (véase optimación de código) cuantificador universal, 380
transportable del lenguaje C (véase PCC) cubetas. 44 8 (véase tam bién dispersión)
com p o nente léxico. 4, 5. 12. 26, 27. 56. 57. cuenta
86-88. 100, 169. 170, 184 de referencias, 459
de sincronización, 198. 199 d e uso. 559-61. 599
com posición. 702 cuerpo (véase cuerpo de un procedimiento)
com presión (véase codificación de tipos) d e un procedim iento, 402
de tablas, 147. 148, ¡53 Curry. H. B., 399
com probación(es) Cutler. D., 737
d e flujo de control. 355
d e tipos. 8, 355. 356, 359. 530
d e unicidad. 355 Chaitin. G . J.. 563, 600
dinám ica, 355. 359 C handra. A. K.. 563. 599
estática. 3. 355. 359 Chang. C. H., 285
relacionadas co n nom bres. 355 Chcrniavsky, J. C , 738, 740
concatenación, 35, 96-98 Cherry, L. L., 9, 161,259, 751
concordancia d c patrones, 87, 131-33. 594, C hoe. K. M ., 285
600 C hom sky. N., 82
configuración, 223 Chow , F., 600, 737, 739
conflicto (véanse conflicto de desplazamiento/ C hurch. A., 399, 476
reducción: conflicto de reducción/
reducción: regla para eliminar
ambigüedades) Date. C. J., 4
d e desplazam iento/reducción. 207, 219-21. dalos
244. 270, 2 7 1 .5 9 5 de longitud variable, 419, 422, 427
d e reducción/reducción. 207, 244, 270, em paqu etad o s, 412
595 D aussm ann, M ., 399
conjunto Davidson, J. W ., 526, 600
no regular, 185, 186 (véase también declaración, 276, 277, 406-08. 487-91,
conjunto regular) 524, 525
regular. 100 definición, 628, 629, 650
vacío. 94 am bigua, 628
conm utatividad, 702 circular dirigida p o r sintaxis, 295, 344-46
conservación d e valores locales. 414. 415. con atributos p o r la izquierda, 288, 305-23,
423 350
constante manifiesta. 110 co n atrib u to s sintetizados, 290. 302, 303
construcción d e alcance, 628-39, 642-45. 670. 671,
d e subconjuntos, 120-23, 137 692-98, 702
diferida de estados, 130, 160 de un procedim iento. 402
constructor de tipos. 357. 358 dirigida por la sintaxis, 33, 34, 287-95
conversión d e tipos, 371, 372, 500, 501 (véanse tam bién árbol de análisis
IN DICE D E M A T E R IA S 795

s in tá c tic o c o n a n o ta c io n e s : tr a d u c c ió n D r o s s o p o u lo u . S.. 3 9 9
d ir ig id a p o r la s in ta x is ) D ru seik is. F. C .. 166
dirigid a p o r la sin ta x is fu e r te m e n te n o d u ra c ió n
circular. 3 4 2 -4 5 . 351 d e u n a a c tiv a c ió n . 4 0 3 . 4 2 3
n o a m b ig u a . 6 2 8 d e u n atributo. 3 3 0 , 3 3 1 . 3 3 4 -3 9
regular. 9 8 . 110 d e u n v a lo r tem p oral. 4 9 4 . 4 9 5
D e le sc a ille . J. P .. 3 5 3 . 5 2 7 D u rre. K .. 160
D E L T A . 352
D e m e r s, A . J., 2 8 5
D e n k er . P.. 160 Earley. .1.. 186. 2 8 4 . 2 8 5 . 7 3 9
d e p u r a c ió n . 5 7 2 ( v é a s e ta m b ié n d e p u r a c ió n E B C D IC . 59
s im b ó lic a ) c cu a ció n (e s)
s im b ó lic a . 7 2 1 - 2 9 d e flujo d e d a to s . 6 2 6 . 6 4 2 . 6 9 8
depurador. 4 1 9 hacia a d e la n te . 6 4 2 . 7 16-2 1
Deransart. P.. 3 5 2 in verso. 6 4 2 . 7 1 7 - 2 0
D e R e m e r . F.. 2 8 5 . 2 8 6 . 3 9 9 editor
d e r iv a c ió n . 2 9 . 17 1-76 d e e n la c e . 19
c a n ó n ic a . 173 d e estructuras. 3
por la d erech a . 173. 2 0 1 -0 3 d e tex to s. 160
por la izq u ierd a . 173 e f e c t o se cu n d a rio . 2 8 9
d esactivar. 6 2 6 . 6 3 0 - 3 2 . 6 4 5 . 6 5 4 e ficien cia . 8 7 . 1 2 8-30 . 1 4 5-48 . 2 4 6 - 5 0 . 2 8 8 .
descriptor 372. 447. 4 4 9 -5 2. 465. 6 3 6 -3 8 . 743
d e d ir e c c io n e s . 5 5 3 . 5 5 4 (v é a s e ta m b ié n o p tim a c ió n d e c ó d ig o )
d e registros. 5 5 3 , 5 5 4 eg rep . 160
D e sp e y r o u x . T .. 4 0 0 E L I . 398
d e s p la z a m ie n to . 2 0 4 . 2 0 5 . 2 2 2 . 4 1 0 . 4 1 2 . e l e m e n t o ( v é a n s e e le m e n to d e l a n á lis is
4 6 4 . 4 7 7 , 4 7 8 . 541 sin tá c tic o L R fO ): e le m e n to d e l a n á lis is
d ia g n ó s tic o (v é a s e m e n s a je d e error) sin tá c tic o L R f l ) ; e le m e n to n u c le a r)
d ia g r a m a d e tra n sicio n es. 1 0 2 -0 7 . 116. 188. d e l a n á lisis sin tá c tic o L R (0 ). 2 2 7
189. 2 3 2 (v é a s e ta m b ié n a u t ó m a t a fin ito ) d e l a n á lisis sin tá c tic o LR ( I ). 2 3 7
d e te r m in ista . 102 nu clear. 2 3 0 . 2 4 8
n o d e ter m in ista . 189 to p e . 702
d ia g r a m a T . 7 4 4 -4 7 v álid o. 2 3 2 . 2 3 7 . 2 3 8
d ir ec ció n e lim in a c ió n d e a m b ig ü ed a d e s. 3 8 7 (véase
de reto m o . 4 1 4 . 415. 423 ta m b ié n so b rec a rg a )
relativa (v é a s e d e s p la z a m ie n to ) e l s e a m b ig u o . 178. 197. 2 0 7 . 2 0 8 . 2 5 7 - 5 9 .
d ir e c c io n a m ie n to 2 7 0 .2 7 5
in d irecto. 5 3 5 -3 7 EIsholT. J. L.. 5 9 9
in d iz a d o . 5 3 5 . 5 3 6 . 5 5 7 e m is o r . 6 7 . 6 8 , 72
d ir ec to r d e e n la c e . 4 1 4 e n c a b e z a m ie n t o . 6 2 1 . 6 2 2 . 6 3 0 . 6 8 3
d isp e r sió n . 3 0 1 . 3 0 2 . 4 4 7 - 5 4 . 4 7 3 , 4 7 4 d e u n la z o (v é a s e e n c a b e z a m ie n to )
p jw . 4 5 0 - 5 2 e n c u e n tr a . 3 9 0 . 391
d is p o s ic ió n d e los d a to s . 4 1 1 . 4 12. 4 8 7 Engelfriet. J.. 3 5 2
d is p o s itiv o E n glu nd . D . E .. 7 1 8
d e tra d u cció n dirigida p o r la sin ta xis. 23 e n la ce
(v é a n se ta m b ié n G A G : H I .P ; d e a c ce so . 4 1 0 . 4 1 1. 4 3 0 - 3 4 . 4 3 6
L IN G V IS T : M U G : S E A ES) d e c o n tr o l. 4 1 0 . 4 1 1 . 4 1 9 - 2 1 . 4 3 6
para a n á lisis d e flujo d e d a to s . 2 4 . 7 0 8 - 1 2 d e c o p ia y restauración. 441
d istan cia p o r v a lo r v resu ltad o (v é a s e e n la c e d e c o p ia
d e e d ic ió n , 158. 159 y re sta u ra c ió n )
e n tr e c a d e n a s. 159 e n la z a d o d e n o m b re s. 4 0 8
d istr ib u tiv id a d . 7 3 8 e n s a m b la d o r d e d o s pasadas. 18
D it z e l. D . . 5 8 3 en trad a a u n c ic lo . 5 5 0
d o m in a d o r . 6 2 1 . 6 2 7 . 6 8 8 - 9 0 . 7 3 9 E Q N . 9 . 10. 2 5 9 . 2 6 1 . 3 0 9 . 7 4 1 . 7 4 2 . 7 4 4 .
in m e d ia to . 621 745. 7 5 1 .7 5 2
D o w n c y . P. J .. 4 0 0 . 6 0 0 Equel. 16
796 IN DICE D E M A T E R IA S

e q u iv a le n c ia d is p o n ib le . 6 4 5 - 4 9 , 6 7 7 . 6 7 8 . 7 0 2 . 7 1 2
b a jo u n a su stitu c ió n . 3 8 3 . 3 89-9 1 infija. 33
d e a u tó m a ta s fin itos. 4 0 0 m u y ocupada. 731, 732
e n tr e b lo q u e s b á sico s. 5 4 7 regular. 8 5 . 9 6 - 1 0 0 . 109, 1 10. 1 1 5 . 1 16.
e n tr e d e f in ic io n e s d irigid as p o r sin ta xis. 1 2 3 -2 7 , 1 3 1 . 137. 138, 142, 150, 151,
311-14 177, 2 7 6
e n tr e e x p r e s io n e s d e tip os. 3 6 4 - 7 1 (véase
ta m b ié n u n ific a c ió n )
entre e x p r e s io n e s regulares. 9 7 . 153 Fabri. J.. 7 3 6
entre gram áticas. 172 fa cto r iza c ió n p o r la izq u ierd a , 182
entre n o m b r e s e n las e x p r e s io n e s d e tipos. fa m ilia , d e u n a variable d e in d u c c ió n . 6 6 2
368. 369 F a n g. I., 3 5 2
estru ctu ral d e las e x p r e s io n e s d e tipos. Farrow . R ., 3 5 2 , 3 5 3
365-67. 3 8 8 . 392 fase. 1 0, 1 1 (v é a n se t a m b ié n a n á lis is lé x ic o :
error a n á lis is s e m á n tic o ; a n á lis is s in tá c tic o ;
léx ico . 9 0 . 165 c ó d ig o in te r m e d io : g e n e r a c ió n d e c ó d ig o :
ló g ic o . 165 m a n e j o d e e rro res: o p tim a c ió n d e có d ig o :
s e m á n tic o . 165, 3 6 0 ta b la d e s ím b o lo s )
sin tá c tico . 1 6 5 -6 9 . 1 9 8 -2 0 0 . 2 0 5 . 2 1 2 , 2 1 6 , F e ld m a n n , S. I.. 160, 5 2 6 . 7 4 7
2 2 1 . 2 2 4 . 2 6 2 -6 4 . 2 7 2 - 7 4 , 2 8 2 . 2 8 3 . Ferrante, J., 7 3 6
286 Feys. R ., 3 9 9
E rshov. A . P.. 3 5 1 . 6 0 0 . 7 3 6 fg re p . 160
e s p a c io e n b la n c o . 5 4 . 8 4 . 8 5 . 9 9 F isch er. C . N .. 2 8 6 . 59 9-601
esquem a F ischer, M . J., 161, 4 7 6
d e tra d u cció n . 3 8 - 4 0 . 3 0 7 - 1 0 F leck. A . C .. 4 4 2
d e trad u cción p o r árboles. 5 9 0 . 591 F lo y d , R . W ., 2 7 7 . 5 8 4
d istr ib u tiv o . 7 0 4 -0 7 . 7 1 0 . 7 1 I flujo d e c o n tro l. 6 6 , 6 7 , 4 8 4 - 8 6 . 5 0 6 -2 2 . 5 7 2 .
e sta d o . 102. 103. 116. 1 17. 156. 2 2 2 . 2 2 3 , 6 2 4 , 6 2 9 , 639. 707. 708, 738
303 F N G (v é a s e f o r m a n o r m a ! d e G r e ib a c h )
d e a c e p ta c ió n . 117 FO L D S. 352
d e la m á q u in a . 4 1 0 . 4 19-2 1 F o n g. A . C , 7 3 9
d e la m e m o r ia . 4 0 7 form a
final (véase e s ta d o d e a c e p ta c ió n ) d e B a c k u s-N a u r (véase B N F )
inicial. 102 (v é a s e e s ta d o ) d e frase. 172
sig n ifica tiv o. 137 d erech a . 173. 2 0 0 -0 2
e s t im a c ió n d e tip o s . 713-21 izq uierda. 173
estructura n o rm a l
d e árbol d e a n á lisis sin tá c tic o . 2 1 2 d e C h om sk v. 284
d e b lo q u e s. 4 2 5 . 4 2 6 . 4 5 2 - 5 4 d e G re ib a ch . 2 7 9
d e d a to s tip o s d is p la y . 4 3 3 - 3 6 p o r c o lu m n a s . 4 9 6 . 4 9 7
etapa p o r filas. 4 9 6
final. 2 0 . 6 4 prefija d e u n a ex p r esió n . 524
inicial. 2 0 . 64 fo rm a d o r d e textos. 4 . 8 - 1 0
etiq u eta . 6 7 . 6 8 . 4 8 1. 5 2 0 . 5 2 1 . 5 3 1 F O R T R A N , 2 . 8 8 , 114, 1 15. 1 5 9 -6 1 . 2 1 4 .
e v a lu a ció n c o n tig u a . 5 8 6 398. 408. 4 0 9 . 414-16. 4 4 1 . 446.
E ve. J.. 2 8 5 460-69. 496. 620, 736. 7 4 1
e x c e p c ió n e n e l á m b it o . 4 2 5 F O R T R A N H . 55 9 . 59 9 . 74 6 . 755-58
e x p a n s ió n e n lin ea. 4 4 2 . 4 4 3 ( v é a s e tam bién F o sd ic k . L. D .. 7 4 0
m u ero ) Foster. J. M .. 8 3 . 2 8 5
e x p r e sió n . 6 . 7. 3 1 . 3 2 , 170. 2 9 9 - 3 0 1 . 362. fra g m e n ta c ió n . 4 5 8
3 6 3 (v é a s e ta m b ié n n o ta c ió n p o s tfijo ) frase. 9 4 . 172
a n u la b le . 138-41 Fraser. C . W .. 5 2 6 . 6 0 0
b o o le a n a . 3 3 6 - 3 8 . 5 0 2 - 1 1 . 5 1 5 - 1 8 F re d m a n . M .. 160
c o n d ic io n a l (v é a s e e x p r e s ió n b o o le a n a ) Frege. G .. 4 7 6
d e m o d o m ix t o , 5 1 0 - 1 2 F reib u rg h o u sc. R . A .. 5 2 7 . 5 9 9
d e tip os. 3 5 7 -5 9 F reudenberger. S. M ., 7 3 7 . 7 4 0
IN D IC E DE M A T E R IA S 797

Fukuya, S.. 599 d e interferencia e n tre registros. 562, 563


función (véase procedimiento) d e intervalos. 684. 685
d e dispersión, 512 d e tipos, 359, 365. 369. 370
d e fallo, 154, 156, 157 d e transiciones, 116
d e precedencia. 214-16 dirigido acíclico, 299, 300. 359, 478-80.
d e transferencia. 692. 693. 699. 707 485. 563-70. 574-77. 598-600. 616-20.
d e transiciones. 116, 156 624. 723-26
genérica. 376 (véase ta m b ién función G ra h a m . R. M ., 285, 476
polimórfico) G ra h a m , S. L.. 286. 599-601, 738
identidad. 7 0 1 ,7 0 2 gram ática
ir -a d e un c o n ju n to de elem entos, 228. afija, 351
230, 2 3 1 ,2 3 7 .2 3 8 . 245. 246 a u m e n ta d a . 228
polim órfica, 356. 376-88 co n atributos. 288. 596
d e operadores, 209. 210
d e precedencia d e operadores. 278, 279
G A G , 352. 353 in d ep en d iente del contexto. 25, 26. 29. 41.
G ajew ska, H., 739 82, 169-85. 288 (véanse tam bién
G aller. B. A.. 476 gramática de operadores: gramática
G a n a p a th i, M ., 599-601 LL; gramática LR )
G a n n o n . J. D ., 167 LA LR . 242-52
G an zing er, H ., 352, 399 LL. 164. 166. 196. 197. 227. 277. 280. 285.
G arey , M. R ., 600 317-19
G D A (véase grafo dirigido acíclico) L R . 164. 166. 207. 226, 227, 254. 280. 281,
G ear. C. W ., 738 2 8 5 ,3 1 8
G en , 608, 626, 630-32, 645, 654 LR( 1), 242
generación sin ciclos, 278
d e código, 15-16, 529-600. 754. 755 sin producciones € . 277
d e u n a cad en a. 29 SL R . 234
espontánea del exam en por anticipado. 248 G ra u , A. A.. 527
generador grep, 160
a u to m á tic o d e código. 23
d e analizadores léxicos. 23 (véase tam bién
LEX) H aibt, L. M., 2
d e analizadores sintácticos. 23, 749 (véase Haley, C. B., 286
tam bién YACC) H alstead, M . H., 526, 745
G eschke, C. M ., 503, 599. 736, 737. 758 H an so n , D . R.. 526
G iegerich. R., 352, 527, 600 H arrison, M. A., 286
G lanville, R. S., 596,601 H arríson, M. C ., 161
G oldberg. R., 2 H arrison. W. H., 600. 736, 740
grafo (véanse árbol; búsqueda en un grafo; H arry, E., 352
grafo de dependencias: grafo de flujo H echt, M. S., 736-39
reducible; grafo de flujo: grafo de H eincn. R.. 737
interferencia entre registros; grafo de H e ld .G ., 16
intervalos: grafo de tipos; grafo de Helsinki Language Processor (véase HLP)
transiciones: grafo dirigido acíclico) H cn derso n, P. B., 738
acíclico (véase grafo dirigido acíclico) H enncssy. J. L.. 600. 739
d e dependencias. 287, 288, 292-95, H enry, R. R., 599-601
341-45 herram ientas, 742 (véase ta m b ién compilador
d e dependencias a u m e n ta d o . 344 de compiladores: dispositivo para
d e flujo, 545, 549. 550. 563. 609, 620. 624 análisis de flujo de datos; dispositivo de
(véase ta m b ién grafo de flujo instrucción dirigida por sintaxis;
reducible) generador automático de código;
lím ite, 685, 686 generador de analizadores léxicos;
n o reducible, 625. 697, 698 generador de analizadores sim adn os)
reducible, 624-26, 682, 685, 686. 732, H errick, II. L., 2
733, 758 I leuft, J.. 160
798 INDICE DE M ATERIAS

H e x t . J. B.. 3 9 8 J o h n s o n . S . C .. 4. 160. 2 6 4 . 2 6 5 . 2 8 5 . 350.


hijo. 29 3 6 6 . 3 6 7 . 3 9 4 . 3 9 5 . 4 7 6 . 5 2 6 . 5 8 3 . 588.
HII1. U .. 5 2 7 600. 749, 754. 755
H in d lc y . R-. 3 9 9 J o h n s o n . W . L . 160
H L P. 286. 352 Joliat. M .. 285
H o a r e . C . A . R .. 8 3 . 3 9 8 J o n e s. N . D .. 3 5 2 . 3 9 9 . 7 3 6 . 7 3 8
H o b b s . S. O .. 5 0 3 . 5 2 6 . 5 9 9 . 6 0 1 . 7 3 6 . 7 3 7 . Jo u rd a n . M .. 3 5 2
758 J o y . W . N .. 2 8 6
H ofT m an. C . M .. 601
h oja. 2 9 . 30
d erech a . 5 7 8 K aiserw erth. M .. 160
izq uierda. 5 7 8 K a m . J. B.. 7 3 8
H o p c r o f t J. F... 144. 160. 2 8 4 . 3 0 1 . 4(M). 4 0 5 . K a p la n . M . A .. 3 9 9 . 739
458. 459. 476 K arp . R. M .. 4 0 0 . 5 9 9
H ope. 396 K a sa m i. T .. 164. 2 8 4 . 7 3 8
H o p k in s . M . E .. 5 6 3 . 5 9 9 . 7 3 7 K a sten s. U .. 3 5 2
H o r n in g . J. J.. 8 3 . 167. 2 8 5 K a s y a n o v . V . N .. 738
H o r s p o o l. R . N . S .. 160 K a ta v a m a . T .. 352
H o rw itz . L. P.. 5 9 9 K eizer. E. G .. 5 2 6
H u e t. G .. 6 0 0 K e n n e d y . K .. 3 5 2 . 6 0 0 . 7 3 8 . 7 3 9
HuITman. D . A .. 160 K e o h a n c . J .. 7 3 8
H u g h e s. R . A .. 2 K cr n ig h a n . B. W .. 9 . 2 3 . 8 3 . 161. 2 5 9 . 4 7 6 .
H u n t. J. W .. 161 7 4 1 .7 4 8 . 7 5 1 .7 6 9
H u sk e y . H . D .. 5 2 6 . 7 4 5 K icb u rtz. R . B .. 2 8 6
H u tt. B .. 3 5 2 K ild all. G . A .. 6 5 2 . 6 9 9 . 7 3 8
K iy o n o . T .. 5 9 9
K le en e. S. C .. 160
I B M -3 7 0 . 5 3 3 . 5 8 6 . 6 0 0 . 7 5 5 . 7 5 8 K n u th . D . E.. 8. 2 4 . 8 3 . 161. 2 8 5 . 3 5 1 . 399.
IB M -7 0 9 0 . 6(K) 400. 458. 476. 599. 6 0 0 . 690. 691. 739.
Ichbiah. J. D .. 2 8 5 750
id e m p o t e n t e . 9 8 . 7 0 2 K o lsk y . H . G .. 7 3 6 . 755
id en tifica ció n d e op era d ores. 3 7 3 (véase K o m lo s . J., 160
ta m b ié n so b rec a rg a ) K oren ja k . A . J.. 2 8 5
id en tifica d o r. 56. 5 7 . 88. 8 9 . 183. 184 K osaraju. S . R .. 7 3 8
Ikeda. K .. 5 9 9 K o s k im ie s . K.. 351
im p resora e stética . 3 K o ste r. C . H . A .. 351
in d irecció n . 4 8 6 K ou . I... 7 3 8
inferencia d e tip os. 3 7 8 . 3 7 9 . 3 8 5 - 8 8 . 7 1 2 K reps. P.. 16
Inga lis. D . H . H .. 3 9 9 K risten sen . B. B.. 285
In g er m a n . P. Z .. 82 K r o n . H .. 601
insertar. 6 5 K ruskal. J. B.. 161
interprete. 3. 4
d e c o n su lta s . 4
in terv alo. 6 8 3 - 8 6 L a L o n d e . W . R .. 2 8 5
Irons. E. T .. 8 2 . 2 8 6 . 3 5 1 L am b . D . A .. 6 0 0
Ishihata. K.. 7 4 0 L a m p so n . B. W .. 4 7 6
Iverson. K.. 399 L a n d in . P. J.. 4 7 6
L a n g m a a c k . H .. 5 2 7
Lassagne. T .. 6 0 0
Jaco b i. C h .. 8 3 . 5 2 6 . 7 5 2 lazo. 5 5 0 . 5 6 2 . 6 2 0 - 2 5 . 6 3 4 - 3 6 . 6 9 7
Jan as. J. M .. 3 9 9 in te r n o . 5 5 0 . 6 2 3
Jarvis. J . F . . 8 5 . 161 natural. 6 2 1 . 6 2 2
Jazaveri. M .. 3 5 2 . 3 5 3 L eca rm e, O .. 7 4 5
J e n s e n . K .. 8 3 . 5 2 6 . 7 5 2 . 7 6 3 Lcdgard. H . F.. 3 9 9
J o h n s o n . D . S.. 6 0 0 L ein iu s. R . P.. 2 8 6
J o h n s o n . R K .. 5 0 3 . 6 0 0 . 7 3 6 . 7 3 7 . 7 5 8 Lengauer. T .. 7 3 9
IN D IC E DE M A T E R IA S 799

lenguaje, 28, 94, 118, 172, 20 9 m a n e jo d e errores, 12, 73, 90, 165, 166
d e p ro g ram ació n (véanse Ada; A L G O L ; (véanse ta m b ié n error léxico; error
APL; BC PL; B L ISS; C; CO BO L; lógico; error semántico; error sintáctico)
C PL; E L I ; F O R T R A N ; L ISP ; M L; m an g o , 2 0 1 - 0 6 ,2 1 1 ,2 1 2 ,2 1 6 , 233
M O D U LA ; NEL1AC; Pascal; P L /I; m a p a d e m e m o ria , 461
S E T L ; S IM P L ; SN O B O L ) m á q u in a
fuente, 1 ab stracta, 6 4 (véase ta m b ié n m áquina de
fu ertem en te tipificado, 360 pila)
in d e p e n d ie n te del c o n te x to , 172, 177, d e pila, 64-68, 478, 6 00
183-85 o b je to , 7 4 2 , 743
objeto, 1 m a rc o (véase registro de activación)
Lesk, M . E.f 160, 749 m o n ó to n o , 686-88, 692
Leverett, B. W ., 526, 600, 601 p a ra análisis d e llu jo d e datos, 699-713
Lcvy, J. J M 601 M arill, T ., 352, 599
Levy, J. P., 286 M arkstein, J., 736, 739
Lewi, J M 353, 527 M arkstein, P. W ., 563, 599
Lewis, H . R ., 738 M artelli, A., 40 0
Lewis. P. M ., 285, 352 m atriz, 357, 361, 44 0
L E X , 8 5 , 109-15, 131, 132. 150, 151, 160, M a u n e y , J., 286
749- M axw ell, W . L., 286
lexem a, 12, 56, 5 7 , 6 1 , 6 2 , 87, 444-46 M ay o h , B. H., 351
L IN G U IS T , 352, 353 M c A rth u r, R ., 526, 745
lint, 359 M c C a rth y , J., 83, 475, 743
LISP. 4 2 5 , 454, 456, 4 7 5 , 713, 743 M cC lu rc, R. M ., 285
lista M cC ra c k c n , N . J., 399
d e adyacencias, 117 M cC u lloch, W. S., 160
en lazad a, 453 M cllroy , M . D ., 161
L o ew n er, P. G ., 736 M c K c c m a n , W . M ., 83, 285, 4 7 6 , 600
L o rh o , B., 352 M cK u sick , M. K ., 600
Low, J., 739 M cL ellan, H . R ., 599
L ow ry, E. S., 559, 599, 736, 739, 745, 755 M c N a u g h to n , R ., 160
L ucas, P., 83, 285 M cdlock, C. W ., 559, 599, 736, 739. 745, 755
L u n d e, A., 599 M certens, L., 399
L u n n e l, H ., 599 m e m o ria , 4 0 7 , 408
m e n saje d e erro r, 199, 217-21, 263, 264
M E T A , 285
lla m a d a (véase llam ada a un procedim iento) M ctcalf, M ., 736
a u n p ro ced im ien to , 208, 4 0 8 , 4 1 0 , 417-24, M cyers, R ., 399
481, 521, 522, 538-43, 570, 666 (véase M iller, R. E., 599, 738
ta m b ié n análisis del flu jo de datos M iln er, R ., 377, 399
entre procedimientos) m in im izació n d e estados, 144-47
por d irecció n (véase llam ada por M in k e r, J., 527
referencia) M in k e r, R. G ., 527
p o r localidad (véase llam ada por M itchcll, J. C ., 399
referencia) M L , 377, 385, 386, 399
p o r n o m b re . 442, 443 M ock. O ., 83, 526, 743
p o r referencia, 44 0 m odo
p o r valor, 438-40, 443 d e d irec cio n am icn to , 18, 19, 535, 536, 595
d e p án ico, 9 0 , 168, 198, 262
M O D U L A , 6 2 5 , 7 3 7 , 760, 761
M a c L a re n , M. D., 737 M o n ck e, U ., 352
M a c Q u c c n , D . B., 396, 399 m o n o to n ic id a d , 738
m a c ro , 16-17, 86, 4 4 4 .4 7 0 M o n ta n a ri, U ., 400
M ad sen , C . M ., 352 m o n tíc u lo . 4 0 9 , 4 1 0 . 753
M ad scn . O . L., 2 8 5 , 352 M o o rc, F.. F., 160. 739
m ake. 747-49 M oorc, J. S., 161
800 INDICE D E M ATERIAS

M o t e l, E.. 7 3 8 d e saltos, 7 6 0
M orris. D ., 3 5 1 g lob al. 6 1 0 . 651
M orris. J. H ., 161. 3 9 9 lo c a l. 5 7 1 - 7 5 . 6 0 0 . 6 1 0 . 651
M orris. R ., 4 7 6 ord en
M o rse. S. P., 2 8 5 d e e v a lu a c ió n para árb o les. 5 7 7 - 9 6
M o se s . J.. 4 7 6 d e e v a lu a c ió n para b lo q u e s básicos,
M o u l t o n . P. G . . 2 8 6 5 7 4 -7 7
M u c h n ic k . S. S.. 3 9 9 . 7 3 6 . 7 3 8 d e e v a lu a c ió n para d e fin ic io n e s dirigidas.
M U G . 352 p o r sin tax is. 2 9 4 - 9 5 . 3 0 7 - 0 9 . 3 2 6 -4 5
M uller. M . E ., 2 8 4 parcial. 3 4 3 . 3 4 4
o r d e n a m ie n to
e n p ro fu n d id a d . 3 0 6 . 6 7 9 . 6 8 0 . 6 9 0 - 9 2
N ageli. H. H .. 8 3 . 5 2 6 . 7 5 2 to p o ló g ic o . 2 9 4 . 5 6 8
N a k a ta . I.. 6 0 0 orga n iza ció n d e m e m o r ia . 4 0 8 - 1 2
N aur. P., 8 2 . 2 8 4 . 3 9 8 . 4 7 5 O ste rw c il. L. J.. 7 4 0
N E A T S . 352
N E L IA C . 526
N e ls o n . R . A .. 2 Pager. D .. 285
N e w c o m e r . J. M .. 5 2 6 . 601 Pai. A . B.. 2 8 6
N c w e y . M . C .. 5 2 6 . 5 2 7 P aige. R .. 7 3 9
N iev erg el!. J.. 6(X) Pair. C .. 352
n o d o (s) palabra. 9 4
c o m p a r tid o . 5 8 3 . 5 8 4 c la v e . 56. 5 7 . 8 8 . 8 9 . 4 4 4
c o n g r u e n te s. 3 9 7 . 4 0 0 reservada. 57. 8 9
d e retorn o. 6 7 2 P a lm . R . C .. 7 3 9
inicial. 5 4 9 P a n in i. 82
n o m b r e . 401 parám etro
d e u n tip o . 3 5 7 . 3 5 8 . 3 6 8 actu al. 4 0 2 - 1 2
g lob a l. 6 7 1 (v é a s e ta m b ié n n o m b r e n o fo rm a l. 4 0 2 . 4 0 3
lo ca l) par d e registros. 5 3 3 -8 2
local. 4 0 8 . 4 1 0 - 1 2 . 4 2 5 paréntesis. 9 7 . 100. 177. 178
n o lo c a l. 4 2 4 - 3 8 . 5 4 4 Park. J. C . H .. 2 8 5
N o r i. K. V .. 8 3 . 5 2 6 , 7 5 2 partición. 144. 145
n o ta c ió n postfija. 2 5 . 3 3 . 4 7 8 . 4 8 0 . 4 8 4 , 523 d e intervalos. 6 8 4
n ú m e r o d e valor, 3 0 0 . 3 0 1 . 6 5 3 pasada. 2 0 -2 2
N u tt. R .. 2 Pascal. 5 2 . 8 7 . 9 6 . 9 8 . 9 9 . 166. 167, 3 5 2 .
361. 368. 369. 377. 378. 409. 410. 425,
438-40. 454-56. 4 8 7 . 4 9 3 . 525-27. 599.
O ’D o n n e ll. M . J . . 601 7 2 3 . 7 4 5 -4 7 . 7 5 2 . 7 5 3
ob je to . 4 0 1 . 4 0 7 p a s o d e p arám etros. 4 2 7 - 2 9 . 4 3 7 - 3 9 . 6 7 1 . 6 7 2
d e d a to (s ) (v é a s e o b je to ) P aterson. M . S .. 4 0 0
O d g c n . W . F.. 3 5 2 P C C 5 3 5 . 588. 6 0 0 . 754. 755
O lszty n . J.. 8 3 . 5 2 6 . 7 4 3 P e n n e llo , T .. 2 8 5 . 2 8 6 , 3 9 9
op era d o r perfilar. 6 0 5
a r itm é tic o , 3 7 3 p e r io d o d e u n a c a d e n a . 155
d e c o n f lu e n c ia , 6 4 2 , 6 9 8 . 7 1 3 Persch. G .. 3 9 9
d e r e u n ió n . 6 9 9 P eterson. T . G .. 2 8 6
u n ario. 2 1 4 P eterson. W . W .. 4 7 6 . 7 3 8
o p t im a c ió n P e v r o lle -T h o m a s. M . C .. 7 4 5
d e c ó d ig o . 14. 15. 4 7 7 . 4 8 6 . 4 9 5 . 5 2 9 . 5 4 7 , p ie . 4 7 0
5 7 0 -7 5 . 757. 758 P ik e. R.. 8 3 . 4 7 6 . 7 4 8 . 7 6 9
d e la zo s. 6 1 3 . 6 1 4 ( v é a n s e ta m b ié n pila, 128, 129. 191, 2 0 4 . 2 2 3 . 2 6 2 . 2 6 3 , 2 8 3 .
re d u c c ió n d e in te n s id a d : 284. 2 9 9 , 3 0 3 . 3 0 4 . 319-25. 334-38, 405.
tra sla d o d e código; variable 4 0 6 , 4 0 9 . 4 1 0 , 4 9 0 . 4 9 ! . 5 7 9 . 7 5 3 (v éa se
d e in d u c c ió n ) ta m b ié n p i l a d e c o n tro l)
d e r a m ific a c io n e s. 7 5 8 d e c o n tr o l. 4 0 5 . 4 0 6 , 4 0 8 . 4 0 9
IN D IC E DE M A T E R IA S 801

Pitts, W ., 160 CASE, 511-14


P L /C , 168. 530 D A T A , 415. 416
P L /I, 21. 81, 89, 167, 395, 398, 503. 524, d e asignación, 65, 481, 492-503
5 2 7 ,7 3 7 d e copia, 481, 612
Plankalkül, 398 D O . 88, 114
P lotkin, G ., 399 E Q U IV A L E N C E , 446. 462-69
poda, 203, 204 goto, 520, 521
Pollack, B. W ., 24 if. 114, 115, 505-07 ,5 1 8-2 0
Pollock, L. L., 739 SAVE, 415, 416
Poole, P. C., 526 switch (véanse proposiciones CASE)
Porter, J. H., 160 while, 491-93, 504. 505
Posi, E., 83 Prosser. R. T., 739
Powcll, M. L., 737, 739, 760 proyecto d e program ación, 763-769
Pozcfsky. D .. 353 pru eb a, 749, 750
P ratt, T . W ., 476 d e regresión, 749
P ratt, V. R., 161,285 p u n to , 627-628
preanálisis, 92, 114, 115, 136, 2 2 1 ,2 3 7 P u rd o m , P. W ., 351, 739
precedencia, 31, 32, 97, 213, 254-56, 270.
2 7 1 (véase tam bién gramática de
precedencia de operadores) R ab in. M. O ., 160
d e estrategia mixta, 285 R ad in, G ., 398
débil, 285 Ráihá, K .J ., 286, 3 5 1 .3 5 2
sim ple, 255, 278 raíz, 29, 30
P R E D E C E S O R , 549 R a m a n a th a n , J., 352
preencabezam iento, 623, 625 R andell, B., 24, 83, 476, 527
prefijo, 95 R A T F O R , 741
viable, 206. 223, 230, 231, 236-38 recogida de basura, 456
preprocesador, 4, 5, 16 reconocedor. 115
primerapos , 138-43 recorrido, 37, 326, 327 (véase tam bién
P R IM E R O , 46, 193, 194, 198, 199 recorrido en profundidad)
procedim icnto(s), 401, 402 en orden posterior. 578
anidados. 429-36, 489-91 en p rofundidad. 37, 334. 405
c o m o parám etros, 428. 432, 433 recuperación d e errores a nivel d e frase. 169,
producción(es), 26, 29, 170 1 9 9 ,2 0 0 ,2 6 2
d e erro r, 168. 169, 272, 273 recursión, 6, 7, 169. 326, 327, 339, 340. 404,
simple, 248. 270 414 (véanse tam bién recursión por el
unitaria (véase producción sim ple) Jinal; recursión por la derecha; recursión
€ , 181, 182, 194, 278 por la izquierda)
producto, 29 (véase producto cartesiano) directa por la izquierda, 180
cartesiano, 357 p o r el final, 53
profundidad por la derecha, 48
d e an id am ien to , 430 por la izquierda. 180-82, 196, 197
d e intervalo, 690 recursividad por la izquierda, 47-50, 72, 182,
d e u n grafo d e flujo, 682, 690-92, 734 312-14
program ación redestinabilidad, 742
dinám ica, 284, 584-88, 600 redestinación (de u n com pilador), 477
propagación posibilidad de, 742
de copias, 610, 612, 613. 654-56 reducción, 200, 201, 204, 205, 217-19, 222,
d e sim bolos de anticipación, 249 263
proposición, 26, 28, 32, 67, 6 8 (véanse d e intensidad. 574, 614-16, 619. 663. 664
tam bién proposición CASE; proposición Redziejowski, R. R., 600
goto; proposición if: proposición while; reescritura d e árboles, 589-95, 600
proposición de asignación: proposición referencia (véase uso)
de copia: proposición DO; proposición a un a m atriz, 208. 498. 499. 569. 598. 606.
EQ U IVALEN C E) 667
BR EA K . 639-41 desactivada, 456, 457
802 INDICE D E M A T ER IA S

e x te rn a . 19 Sayre. D ., 2
su sp en d id a . 4 2 2 S carb oro u g h . R . G .. 7 3 6 . 7 5 5
región. 6 3 0 . 6 8 7 . 6 8 8 . 6 9 2 - 9 8 S ch a efer. M ., 7 3 6
registro. 5 3 5 - 3 8 Schafier. J. B .. 737
d e a c tiv a c ió n . 4 1 0 - 2 4 . 5 3 8 . 5 3 9 . 5 4 3 . 544 S ch atz. B. R .. 5 2 6 . 6 0 0
s im b ó lic o . 562 S c h o n b e r g . E.. 7 3 9
regla Schorre. D . V .. 285
d e c o p ia . 3 3 2 . 3 3 3 . 3 3 5 . 4 4 2 . 4 4 3 S ch w a rtz . J. T .. 3 9 9 . 5 9 9 . 7 3 6 - 3 9
d e l a n id a m ie n t o m á s c e r c a n o . 4 2 5 . 4 2 9 S c o tl. D .. 160
d e tr a d u c c ió n . 1 10 secu en cia
para e lim in a r a m b ig ü e d a d e s. 176. 2 5 4 . d e lla m a d a . 4 1 7 - 2 1 . 5 2 1 - 2 3
2 6 1 .2 6 8 - 7 1 d e retorn o. 4 0 5
s e m á n tic a . 3 4 . 2 8 7 -9 5 S ed g ew ick . R . 6 0 6
R eif. J. H .. 7 3 8 se lec ció n d e in stru ccio n es. 5 3 2
R einer. A . H .. 5 2 6 . 6 0 0 se m á n tic a . 25
R eiss. S . P.. 4 7 6 d e n o t a c io n a l. 351
r ela cio n e s d e p r e ce d e n c ia ( v é a s e re la c io n e s d e sep a ració n d e n o d o s. 6 8 5 . 6 8 6 . 6 9 7 . 6 9 8
p r e c e d e n c ia d e o p e ra d o re s) Sethi. R .. 3 5 2 . 3 9 9 . 4 0 0 . 4 7 6 . 5 8 3 . 6 0 0
d e o p e r a d o r es. 2 0 9 . 2 1 0 SETL. 3 9 9 .7 1 3 .7 1 4 . 737
r e lo c a liz a c ió n . 7 4 2 seu d olatin , 8 0
rellen o. 4 1 2 S h a n r . M .. 7 3 7 . 7 3 9
d e r etro c e so . 2 1 . 2 2 . 5 1 5 - 2 0 . 531 sh e ll. 152
r e n o m b r a m ie n t o . 5 4 8 Sheridiin. P. B.. 2. 2 8 5 . 398
R e n v o is c . C .. 7 3 8 S h im a ia k i. M .. 5 9 9
R ep s. T . W .. 3 5 1 S h u stck . L. J.. 5 9 9
retícu lo. 3 9 9 signatura d e u n n o d o d e u n G D A . 3 0 0
R e y n o ld s . J. C \, 3 9 9 S I G U I E N T E . 1 9 3-9 5. 198. 2 3 6 . 2 3 7
R h o d e s . S . P.. 2 8 6 s ig u ie n te p o s . 137. 139-43
R ichards. M .. 5 2 6 . 601 s ím b o lo
R ip k cn . K .. 6 0 0 b á sico . 9 7 . 124
R ip lev . G . D .. 166 d e entrada. 116
R itch ie. D . M .. 3 6 6 . 4 7 6 . 5 2 6 . 7 5 3 - 5 5 d e preanálisis. 4 2
R o b in s o n . J. A .. 3 9 9 inicial. 2 7 -2 9 . 170. 2 9 0
R o g o w a y , H . P.. 3 9 8 inútil. 2 7 7
R o h l. J. S.. 4 7 6 n o te r m in a l. 2 7 . 1 7 0-7 2. 2 1 0 - 1 2 (vease
R o h r ic h . J.. 2 8 6 ta m b ié n s ím b o lo n o te r m in a l
R o s e n . B. K .. 7 3 7 . 738 m arcador)
R o s e n . S .. 24 n o term in al m arcador. 3 1 8 . 3 2 1 -2 5 . 351
R o se n k r a n tz . D . J.. 2 8 5 . 351 S IM P L . 7 3 7
R osler. L ., 741 s in ó n i m o . 6 6 6 - 7 8 . 7 3 9
R o ss. D . T .. 160 sin tax is. 2 5 (v é a s e ta m b ié n g r a m á tic a
R o u n d s . W . C .. 3 5 2 in d e p e n d ie n te d e l c o n te x to )
R o v n e r . P.. 7 3 9 S ip p u . S .. 2 8 6 . 3 5 2
R u ssell. L. J „ 2 4 . 8 3 . 4 7 6 . 5 2 6 . 5 2 7 sistem a
R u ssell. S. R .. 7 4 3 d e tip os. 3 5 9 . 3 6 0 . 7 1 5 . 7 1 6
R u z z o . W . L .. 2 8 6 d e tip os seg u ro. 3 6 0
R vd cr. B. G .. 7 3 9 g e n e ra d o r d e trad uctores (v é a s e c o m p ila d o r
d e c o m p ila d o r e s )
Sneeringer. W . J.. 398
Saal. H . J.. 3 9 9 SNOBOL. 425
S aarin en . M .. 2 8 5 . 3 5 2 sobrecarga. 3 4 1. 3 7 3 -7 6 , 3 9 6 . 3 9 8
sacar. 65 S o fía . M . L.. 7 3 9
S a m e l s o n . K .. 351 S o is a lo n - S o in in e n . E.. 2X5. 2 8 6 . 3 5 2
SankolT. D .. 161 so lu c ió n d e r e u n ió n so b re c a m i n o s . 7 0 7 . 7 0 8 .
S a n n e lla . D . T .. 3 9 6 710.712
Sarjakoski. M .. 2 8 5 . 3 5 2 S p illm a n . T . C .. 7 3 9
IN D IC E DE M A T E R IA S 803

Stavercn. H. van, 526. 600 polimórfico. 380


stdio.h. 59 record (registro). 358, 3 7 1 .4 9 2
Stearns. R. E., 285, 3 5 1 vacío. 357. 363
Steel, T . B., 83, 526, 743 Tjiang, S„ 600
Stecle, G . L.. 475 T M G . 285
Stern, H .. 2 T o k u d a. T „ 286
Stevenson, J. W ., 526. 600 T o k u ra . N „ 738
Stockhausen, P. F., 600 T ra b b Pardo, L., 24
S tonebraker, M .. 16 traducción
Strong. J., 83, 526. 743 de un a pasada. 288. 753
Stroustrup. B.. 452 dirigida p o r la sintaxis. 8. 25. 33-40.
subcadena. 95 287-353. 478, 479. 482-84
subexpresión co m ú n , 299, 547, 563, 567, sencilla dirigida por la sintaxis. 39. 40. 307
5 8 3 ,6 1 0 - 1 3 .6 1 7 ,6 1 8 , 651-53. 727, trad u c to r predictivo. 316-18
757-61 (véase también expresión disponible) transform ación algebraica. 548. 573, 583,
subsecuencia. 95 (véase tam bién 618. 620. 757
subsecuencia común m ás larga) transición € , 116-18, 137
co m ú n m ás larga. 158 transportabilidad. 87. 742
sucesor. 549 traslado de código. 614. 657-61. 728, 729,
sufijo. 95 739
S ussm an. G . J.. 475 T revillyan. L. H., 736
sustitución. 382, 383. 388-91 Trickey. H . W ., 4
Suzuki. N.. 399. 740 trie , 153, 154. 156. 157
Szem crcdi, F.., 160 triples. 484-87
Szym anski. T . G ., 161,601 indirectos. 486, 487
T ritter, A., 82
T R O F F , 744. 7 4 5 ,7 5 1 .7 5 2
tabla
d e acciones. 223
d e análisis sintáctico U kkonen, E., 285
LALR. 242-50 U llm an. J. D.. 4. 144. 160. 1 8 6 ,2 1 0 , 284,
LR canónico. 236. 240. 242 285. 301, 399. 405. 458, 459. 476, 583.
SLR, 233-37 600. 606, 737-39
d e cadenas. 445 úllimapos. 138-41
d e dispersión. 512 U N C O L . 83. 526
d e la función ir_a, 222 unificación, 382-84. 388-92, 399. 400
d e sím bolos. 7. 11. 61-63, 86, 164. 443-54. unificador m ás general. 382. 383, 388. 389
484. 487-94. 721 un ión , 96-98, 390. 391
d e transiciones, 116, 117 U N IX , 152, 160. 161.265
T ai. K. C . 286 uso. 545. 550-52, 650
T a n e n b a u m . A. S.. 526. 600
T antzen , R. G .. 83
T a r h io .J ., 351 valor(es)
T arjan . R. E „ 160. 400, 476. 738, 739 d e lado derecho. 65, 235. 407. 438-43,
T e n n e n b a u m , A. M ., 399, 738, 739 563
T en n e n t, R. D ., 476 d e lado izquierdo. 65. 66, 236. 407.
term inal, 26. 169-72, 289, 290 438-43. 563
T E X . 8. 9, 16, 1 7 .8 3 . 750 devuelto, 4 1 1 .4 1 9 . 420
T h o m p so n . K.. 124. 160. 619, 753 léxico, 12. 113. 289
T ienari. M ., 286.351 p o r om isión. 512
tipo. 355-400 tem porales, 410. 484. 4 9 4 .4 9 5 . 551.
ap u n tad o r. 358 552. 653. 657
básico. 357 V an Staveren (véase Sutvcm t, II van)
d e una función. 358. 359. 364. 373-76 V an begin. M., 352, 527
(véase tam bién función po/imórfica) variable (véanse ideniijbudm variables ./•
factible. 375 tipos)
804 IN D IC E DE M A T E R IA S

activa, 551, 560, 567, 613, 617, 6 18, 649, Welsh, J., 398
650, 660, 671 W cxelblat, R. L., 24, 83
básica d e inducción, 661 W ilcox, T. R ., 168, 286
d e inducción, 614-16, 661-66, 727, 739, W ilhelm , R., 324, 526
757 W inograd, S., 599
m odificada, 676-78 W interstein, G ., 399
variables d e tipos, 378 W irth , N., 83, 285, 286, 476, 527, 745, 752,
volcado sim bólico, 552 763
Vyssotsky, V., 737 W ong, E., 16
W ood, D., 285
W o rtm a n , D. B., 83, 285
W agner, R. A., 161 W ossner, H ., 398
W aite, W. M ., 526, 527, 599, 600, 738, 749 W ulf, W. A., 503, 526, 560, 599, 600, 736,
W alter, K. G ., 352 737, 758
W ard , P., 351
W arren , S. K ., 352
Wasilew, S. G ., 600
W A T F IV , 530 Y ACC, 264-74, 749, 754, 760
W att, D . A., 351 Y am ad a, H ., 160
W EB, 750 Y annakakis, M ., 601
W eber, H ., 285 Y ao, A .C ., 160
W cgbreit, B., 398, 738 Yellin, D ., 353
W eg m an , M. N., 400, 738, 739 Y ounger, D. H ., 164, 284
W egner, P., 737
W cgstein, J. H., 83, 160, 526, 743
W cihl, W. E., 739 Z adeck, F. K., 738
W cinberger, P. J., 161, 450 Zelkow itz, M. V., 737
W eingart, S., 600 Ziller, I., 2
W einstock, C. B., 503, 560, 599, 736, 737, Z im m e rm a n n , E., 352
750 Zuse, K ., 398
|8 0 5 |

Vocabulario bilingüe
de términos técnicos
( in g lé s - e s p a ñ o l)

a b s o lu le m a c h in e code affix g ra n tm a r
c ó d i g o d e m á q u in a a b s o lu to . 5. 19. 5 3 0 . g ra m á tica alija. 3 5 1
531 algebraic transform a!ion
a b s tra c t m achine tra n sfo r m a ció n algebraica. 5 4 8 . 5 7 3 . 583.
m á q u in a abstracta. 64 618. 620. 757
( v é u s c t a m b ié n s to c k m a c h in e ) alias
a b s t r a c t s y n t a x tr e e alias. 6 6 6 - 7 8 . 7 3 9
árbol d e s in ta x is abstracta. 4 9 alignm ent. of data
í v é a s e t a m b ié n s y n t a x tre e ) a lin e a c ió n d e d a tos. 4 1 1. 4 1 2 . 4 8 7
acceptance alphabet
aceptación. 117. IIX. 205 alfabeto. 9 4
accepting state altcrnative
e sta d o d e a c e p ta c ió n . 1 17 alternativa. 171
a c c e s s link am biguitv
e n la c e d e a c ce so . 4 1 0 . 4 1 1. 4 3 0 - 3 4 . 4 3 6 a m b ig ü e d a d . 30. 176. 179. 180. 189. 197.
act ion table 206. 2 0 7 . 2 3 5 . 2 3 6 . 2 5 4 -6 1 . 268-71. 594
tabla d e a c c io n e s. 2 2 3 a n b ig u o u s definition
activation d e f in ic ió n a m b ig u a . 6 2 8
a c tiv a c ió n . 401 analysis
activation environm ent análisis. 2 -1 0
e n t o r n o d e a c tiv a c ió n . 4 7 1 . 4 7 2 ( v é a n s e t a m b ié n le x ic a l a n a ly s is : p a r s in y )
activation record a n n o ta te d p a r s e tree
registro d e a c tiv a c ió n . 4 1 0 - 2 4 . 5 3 8 . 5 3 9 . árb ol d e a n á lisis sin tá c tic o c o n a n o ta c io n e s .
543. 544 34. 288
activation tree arith m etic operator
árb ol d e a c tiv a c ió n . 4 0 3 - 0 5 o p e r a d o r a r itm é tic o . 3 7 3
actual par»m eter array
p a r á m etr o actu al. 4 0 2 - 1 2 m atriz, 3 5 7 . 361. 4 4 0
acyclic g r a p h arra y reference
gra fo a c íc lic o referencia a u n a m atriz. 2 0 8 . 4 9 8 . 4 9 9 . 5 6 9 .
( v é a s e d ir e e te d a c y c lic g ra p h ) 598. 6 0 6 . 667
adress descriptor a ssem b ly code
d escrip to r d e d ir e c c io n e s. 5 5 3 . 5 5 4 c ó d i g o e n sa m b la d o r . 4 . 15. 17- 19. 9 1 . 531.
a d d re s s modo 535
m o d o d e d ir e c c io n a m ie n to . IX. 19. 5 3 5 . assignm ent statem ent
536. 595 p ro p o sició n de a sig n a c ió n . 65. 481.
a d j a c e n c y list 492-503
lista d e a d y a c e n c ia s . 117 associativitv
advancing edge a so c ia tiv id a d , 3 0 . 3 2 . 9 7 . 9 8 . 2 1 3 , 2 5 4 -5 6 .
arista d e a v a n c e . 6 8 2 270. 271. 702
806 V O C A B U L A R IO B IL IN G Ü E D E T E R M IN O S TECNICOS

attribute bootstrap ping


a tr ib u lo . 11. 3 3 . 8 9 . 2 6 7 . 2 8 8 arran que. 7 4 3 -4 7
( v é a n s e t a m b ié n in h c r ilc d a ttr ib u te : le x ic a l b otto m -u p parsing
v a /u c : s y m a x d ir e c te d d e U n ilio n ; a n á lisis sin tá c tic o a sc e n d e n te . 4 1 . 2 0 0 . 299.
s y n th e s iz e d a t tr ib u te ) 302-04. 317-25. 477
atribute gram m ar ( v é a n s e t a m b ié n L R p a r s in g : o p e ra to r
g ra m á tica c o n atrib utos. 2X9. 5 9 6 p r e c e d e n te p a rs in g ; s h ift- r e d tic e p a r s in g )
a u g m e n te d d ep en d en ey graph bounded c o n te x t parsing
grafo d e d e p e n d e n c ia s a u m e n t a d o . 3 4 4 a n á lisis sin tá c tic o p o r a c o t a m ie n t o de
a u g m e n te d gram m ar contexto. 285
g ra m á tica a u m e n ta d a . 2 2 8 branch o p tim i/a tio n
a u to m a tic cod e generator o p t im a c ió n de sa lto s, o p t im a c io n de
g e n e ra d o r a u t o m á t ic o d e c ó d ig o . 2 3 r a m ific a c io n e s. 7 5 8 . 7 6 0
a v a ila b le e x p r e ss io n break statem en t
e x p r e sió n d is p o n ib le . 6 4 5 - 4 9 . 6 7 7 . 6 7 8 . p r o p o s ic ió n B R E A K . 639 -41
702. 712 buckct
c u b e ta . 4 4 8
back ed g e ( v é a s e t a m b i é n h a s h in g )
arista d e retroceso. 6 2 2 . 6 2 4 , 6 8 2 buffer
back end b u ffe r. 5 8 . 6 3 . 9 0 -9 4 . 131. 132
eta p a final. 2 0 . 64
byte
back p atch in g
•byte. 4 1 1 . 4 1 2
r e lle n o d e retroceso. 2 1 . 2 2 . 5 1 5 -2 0 . 531
bactracking
b ú sq u e d a d e retroceso. 186 cali
B a c k u s - N ’a u r f o r m llam ada
fo rm a d e B a ck u s-N a u r ( v é a s e p r o c e th ir e c a li)
b ack w ard d ata, flow e q u a tio n s call-by-address
e c u a c io n e s d e flu jo d e d a to s in v e r so . 6 4 2 . lla m a d a p o r dirección
717-20 (v é a s e caU -by-rej'erencé)
b a sic block c all-b y -lo ca tio n
b lo q u e b á s ic o . 5 4 5 - 4 9 . 6 0 9 , 6 1 6 - 2 0 , 6 2 7 . lla m a d a p o r dirección
722. 723 ( v é a s e c a ll-b y -re fe re n c e )
( v é a s e t a m b ié n e x t e n d e d b a s ic b /o c k ) c a ll-b y -n a m e
b a sic induction variable lla m a d a p o r n o m b r e . 4 4 2 . 4 4 3
variable b a sica d e in d u c c ió n , 661 c a ll-b y -referen ce
b a sic s y m b o l lla m a d a p o r referencia, 4 4 0
s í m b o l o b á sico . 9 7 . 124 ca ll-b y -v a lu e
b a sic tvpe lla m a d a p o r valor. 4 3 8 - 4 0 . 4 4 3
tip o b á sico . 3 5 7 c a llin g se q u en ce
b in a r) alp h ab ct s e c u e n c ia d e lla m a d a . 4 1 7 - 2 1 . 5 2 1 - 2 3
a lfa b e to b in a r io . 94 can on ical c o lle c tio n o f s e t s o f ítem s
binding. o f ñ a m e s c o le c c ió n c a n ó n ic a d e c o n j u n t o s de
e n la z a d o d e n o m b r e s . 4 0 8 e le m e n t o s . 2 2 8 . 2 3 0 . 2 3 7 . 2 3 8
block can on ical derivation
b lo q u e d e r iv a c ió n c a n ó n ic a . 173
{ v é a n s e b a s ic h l o ik : h la e k stru c t are; can on ical LR parsing
c o m m o n h lix k ) a n á lis is sin tá c tic o L R c a n ó n ic o . 2 3 6 . 2 4 0 .
b lo ck structure 242, 262
estru ctu ra d e b lo q u e s . 4 2 5 . 4 2 6 . 4 5 2 - 5 4 can on ical LR p a rsin g ta b le
body tabla d e a n á lis is s in tá c t ic o LR c a n ó n ic o .
c u e rp o 236. 240. 242
(v é a s e p n tc e d u r e b o d y ) c a rtesia n product
b oolean e x p r e ss io n p r o d u c to c a r te sia n o . 3 5 7 . 3 5 8
e x p r e sió n b o o le a n a . 336-38. 502-11. c a s e sta te m en t
515-18 p r o p o s ic ió n C A S E . 511. 5 1 4
V O C A B U L A R IO B IL IN G Ü E DE T E R M IN O S T E C N IC O S 807

CFG commutativity
CFG co n m u tativ id ad , 702
{véase conlexi-free grammar) compactaron, of storage
changcd variable co m pactación d e la m em o ria, 460
variable modificada, 676-78 compiler-compiler
character class c o m p ila d o r d e com piladores, 22
clase de caracteres, 94, 98, 99, 150, 151 composition
(véase también alphabet) com posición, 702
child compression
hijo, 29 com presión
Chomsky normal form (véase encoding o f lypes)
form a n orm al de C hom sky, 284 concatenation
circular synlax-directcd definition concatenación, 35, 96-98
definición circular dirigida p o r sintaxis, concrete syntax tree
295, 345. 346, 352 árbol d e sintaxis concreta, 49
closure ( véase tam bién syntax tree)
cerradura, 95, 96 condition code
closure, of set of items código d e condición, 558
cerrad u ra de u n c o n ju n to d e elem entos, conditional expression
237-39, 230-32 expresión condicional
CNF (véase boolean expression)
CNF confliguration
(véase C hom sky normal form ) configuración, 223
Cockc-Younger-Kasami algorithm conflict
algoritm o de C ocke-Y oungcr-K asam i, 164, conflicto
284 (véanse disamhiguation rule; reduce/reduce
code generation conflict; shifl/reduce conflict)
generación de código, 15, 16, 529-600, 754, confluence operator
755 o p erad o r de confluencia, 642, 698, 713
code hoisting congruence closure
elevación de código, 732 cerrad u ra d e congruencia
code motion (véase congruent nodes)
traslado d e código, 614, 657-61, 728, 729, congrucnt nodes
739 nodos congruentes, 397, 400
code optimizaron conservative approximation
o p tim ació n de código, 14, 15, 477, 486, aproxim ación conservadora. 629, 632, 633,
495, 529, 547, 570-75, 757, 758 648, 670-72, 677, 678, 707. 708
cocrcion constant folding
coacción, coerción, 356, 371, 372, 398 cálculo previo d e constantes, 6 10, 6 13, 6 19,
coloring 700-07
coloración context-free grammar
(véase graph coloring) gram ática independiente del contexto, 25,
column-major form 26. 2 9 ,4 1 , 82. 169-85. 288
form a por colum nas. 496, 497 (véanse también L L grammar; L R grammar;
comment operator grammar)
co m entario, 86, 87 context-free language
common block lenguaje independiente del contexto, 172.
bloque C O M M O N , 446, 460-62, 469 177, 183-85
common lisp contiguous evaluat¡on
C O M M O N LISP, 475 evaluación contigua, 586
common subexpression control flow
subexpresión c o m ú n , 299, 547, 563, 567, . flujo d e control, 66, 67, 484-86, 506, 522,
583, 583, 610-13, 617, 618, 651-53, 727, 572. 624. 629, 639, 707, 708. 7 18
757-61 control link
(véase tam bién available expression) enlace de control, 410, 4 1 1 .4 1 9 21, 4 16
808 V O C A B U L A R IO B IL IN G Ü E DE T E R M IN O S T E C N IC O S

control stack dead code


pila de control, 405, 406, 408, 409 código inactivo, 548, 610, 613
copy propagation debugger
propagación d e copias, 610, 612, 613, d ep urador, 419
654-56 debugging
copy rule d epuración, 572
regla d e copia, 332, 333, 335, 442, 443 (véase también sym bolic debugging)
copy statem ent declaration
proposición d e copia, 481, 612 declaración. 276, 406-08. 487-91, 524, 525
copy-restore-linkage deep access
enlazado d e copia y restauración, 441 acceso profundo, 436, 437
core, o f set o f ítems dcfault valué
corazón de u n c o n ju n to d e elem entos, 243 valor p o r om isión, 512
cross com piler definition
c o m p ila d o r cruzad o, 744 definición, 545. 628, 629, 650
cross edge definition-use chain
arista cruzada, 682 cadena d e definición y uso
cycle (véase du-chain)
ciclo, 181 deletion, o f locáis
cycle, in type graphs borrado de valores locales, 416
ciclo en el grafo de tipos, 370, 371 denotational semantics
cycle-free g ram m ar sem ántica denotacional, 351
gram ática sin ciclos, 278 dependeney graph
CYK algorithm grafo d e dependencias. 287, 288, 292-95
algoritm o de C Y K 341-45
(véase Cocke-Younger-Kasami algorithm) depth, of a flow graph
profundidad de u n grafo d e flujo. 682,
690-92, 734
DAG depth-first ordering
GDA o rd en am ien to en profundidad. 306, 679
(véase direcled acyclic graph ) 680, 690-92
dangling else depth-first search
else am biguo, 178, 197, 207, 208, 257-59, b úsqueda en profundidad, 679-82
270, 275 depth-first spanning tree
dangling refcrence árbol d e expansión en p rofundidad, 680
referencia desactivada, 456, 457 depth-first traversa!
data arca recorrido en p ro fu n d id ad . 37, 334, 405
área de datos, 460, 4 6 1 , 468, 469 derivation
data layout derivación, 29, 171-76
disposición d e los d ato s 4 1 1 ,4 1 2 , 487 determ inistic finite autom aton
data objcct a u tó m a ta finito determ inista, 115-24,
objeto d e datos, dato 129-31, 135-39, 143-48. 152, 153, 185,
(véase objet) 223, 232, 233
data statem ent determ inistic transition diagram
proposición D A T A , 415, 416 d iagram a d e transiciones determ inista, 102
data-flow analysis DFA
análisis d e fiujo de datos, 604, 626-40 A FD
data flow analysis fram ew ork (véase determ inistic fin ite automaton)
m arco para análisis d e flujo d e datos, diagnostic
699-713 diagnóstico
data-flow engine (véase error message)
dispositivo para análisis d e flujo d e datos, directed acyclic graph
24, 7 0 8 - 12 grafo dirigido acíclico, 299. 300. 359,
data-flow equation
478-80. 485, 563-70, 574-77. 598-600,
ecuación d e flujo de d atos, 626. 642, 698 616-20, 624. 723-26
V O C A B U L A R IO B IL IN G Ü E DE T E R M IN O S T E C N IC O S 809

d isam b igu atin g rule € -free gram m ar


regla para e lim in a r am b ig ü ed ad es. 176, g ram ática sin p ro d uccio nes € , 277
254, 26 1 ,2 6 8-7 1 € -production
display p ro d u cció n € , 181, 182, 194, 278
estru ctu ra d e datos tipo display, 433-36 € -transition
d ista n te , b etw een strings tran sició n e , 116. 118. 137
distan cia e n tre cadenas. 159 eq u ivalence, o f b a sic b lock s
distributivo fram ework equivalencia e n tre bloques básicos, 547
esq u e m a distributivo, 704-07, 710, 7 1 1 eq u ivalence, o f fin ite autóm ata
distributivity equivalencia d e a u tó m a ta s finitos, 400
distributividad, 738 eq u iv a len te, o f gram m ars
d o statem en t
equivalencia e n tre gram áticas, 172
proposición D O . 88, 114
eq u ivalen te, o f regular e x p re ssio n s
dom inator
equ iv alen cia e n tre expresiones regulares,
d o m in a d o r. 621, 657. 688-90. 739
9 7 , 153
dom inator tree
eq u ivalence, o f syn tax-d irected d efin itions
árbol de d o m in a c ió n , 620
equivalencia e n tre definiciones dirigidas
du-chain
p o r sintaxis, 311-14
cad e n a de definición y uso, 650, 651, 661
eq u ivalence, o f typ e e x p re ssio n s
d u m m y argument
equ iv alen cia e n tre expresiones d e tipos,
a rg u m e n to ficticio
364-71
(véase fo rm a l para meter)
( véase tam bién unification)
d yn am ic allocation
eq u ivalen ce statem ent
asignación d in á m ica , 454-60
d yn am ic ch eckin g proposición E Q U IV A L E N C E . 446, 462-69
eq u ivalence, under a substitution
co m p ro b a c ió n d in á m ica , 355, 359
d yn am ic progranuning equivalencia bajo u n a sustitució n , 383,
p rogram ación d in á m ic a , 284, 584-88. 600 389-91
d yn am ic sco p e error handling
á m b ito d in á m ico , 425 m a n e jo de errores, 12. 73, 90, 165, 166
(véanse tam bién lexical error; lógica! error;
sem anlic error; syn ta x error)
E a rley 's algorithm error m essa g e
alg o ritm o d e Earley, 164 m ensaje d e erro r, 199, 217-21. 263, 264
edit d istan ce error productions
distan cia d e edición, 158, 159 p ro d u ccio n es d e error. 168, 169, 272, 273
efficen cy evalu ation order, for b a sic blocks
eficiencia, 87, 128-30, 145-48. 246-50. 288, o rd e n d e evaluación para b lo q u e s básicos.
372, 447, 449-52, 4 6 5 , 636-38, 743 534, 574-78
(véase tam bién cade optimization) evaluation order, for syntax-directed
egrep definitions
egrep, 160 o rd e n de ev alu ació n p a ra definiciones
em itter dirigidas p o r sintaxis, 294. 295, 307-09,
em iso r, 67-69, 72 325-47
em p ty set evalu ation order, for trees
c o n ju n to vacío, 94 o rd e n d e evaluación para árboles. 577-96
em p ty string ex p licit allocation
cad e n a vacía, 27, 92, 96 asignación explícita. 454. 458
en cod in g o f types ex p licit typ e conversión
codificación d e tipos. 366, 367 conversión explícita d e tipos. 371
entry, t o a loop ex p re ssio n
e n tra d a a un ciclo, 550 expresión, 6. 7, 31. 32. 170, 299 Mil. 362,
environm ent 363
a m b ie n te , 407, 471 (véase tam bién pos(!i\ c\pii's\ion)
€ -closu re exten ded hiixlc I d o c U
cerradura 120-22. 23 2 hinquen lulnU n* iinqillmlni. 1 1•
810 V O C A B U L A R IO B IL IN G Ü E D E T E R M IN O S T E C N IC O S

ex tern al referen te fram e


referencia externa, 19 m arco
(véase activar ion record)
front end
failure function e tap a inicial, 20, 64
función d e fallo, 154, 156, 157 function
family, o f an induction variable función
familia, d e u n a variable d e inducción, 662 (véase procedure)
feasible type function type
tip o factible, 375 tipo d e u n a fu nción. 358, 359, 364, 373-76
fgrep (véase tam bién polym orphic function)
fgrep. 160
Fibonacci string
cadena d e F ibonacci. 155
field, o f a record garbage collection
c a m p o de u n registro, 491-93, 502, 503 recogida d e basura, 456
final state generation, of a string
estado final generación d e u n a c a d e n a , 29
(véase accepiing staie) gencric function
find fu n ció n genérica, 376
encuentra, 390, 391 (véase tam bién polym orphic function)
finito autoniaton global e rro r correction
a u tó m a ta finito, 115-47 corrección global d e errores, 168, 169
(véase tam bién transir ion diagram) global ñam e
F IR S T n o m b re global, 6 7 1
P R IM E R O , 46, 193, 194, 198, 199 (véase tam bién nonlocal ñame)
firstpos global optim ization
primerapos, 138-43 o p tim a c ió n global, 610, 651
flow graph global reg ister allocation
grafo d e fiujo. 545, 549. 550, 563. 609, 620. asignación global d e registros, 559-63
624 GNF
(véase tam bién reducible flow graph) FNG
flow of control (véase Greibach norm alform )
flujo d e co n tro l, 545 goto, o f set of ítem s
(véase tam bién controlJlow) función ir.a d e u n c o n ju n to d e elem entos,
flow-of-control check 228, 230, 231, 237, 238, 245, 246
co m p ro b ació n d e fiujo d e co n tro l, 355 goto statem ent
F O L L O YV proposición goto, 520, 521
S IG U IE N T E , 193-96, 198, 199, 236, 237 goto table
followpos tabla d e la función ir.a, 222
siguientepos, 138-43 graph
form al param eter grafo
p a rá m e tro form al, 4 0 2 , 403 (véanse dependeney; directed acyclic graph:
F ortran flo w graph: inlerval graph: reducible flow
F O R T R A N . 2, 88, 114. 115. 159-61, 214, graph: register interference graph: search;
398, 408, 409, 41 4 -16 , 441, 4 4 6 . 460-69. transition graph: tree; type graph)
496, 620, 736, 741 g ra p h coloring
F o rtran H coloración d e grafos, 562, 563
F O R T R A N H . 559, 599, 746, 755-58 G reib ach norm al form
forward data-flow equations form a n o rm a l d e G reib ach , 279
ecuaciones de fiujo d e d ato s hacia adelante, grep
642, 716-21 grep, 160
forw ard edge
arista de avance, 624
fragm entation handle
fragm entación, 458
m ango. 201-06, 211, 212, 216, 233
V O C A B U L A R IO B IL IN G Ü E D E T E R M IN O S T E C N IC O S 811

handle pruning ¡ndirect triples


poda. 203. 204 triples indirectos, 486, 487
liash function indirection
función de dispersión, 448-52 indirección, 486
hans tablc induction variable
tabla de dispersión, 512 variable de inducción. 614-16, 661-66, 727,
hashing 739, 757
dispersión, 301, 302. 447-54. 473, 474 infix expression
hashpjw expresión infija, 33
dispersión pjw , 450-52 inherited attribute
head atributo heredado, 34, 288, 289, 291, 292.
cabeza. 622 308, 309, 317-19, 321-26, 334, 335, 350,
header 351
encabezam iento, 621, 622, 630, 683 (véase también attribute)
hcap initial node
m ontículo, 409, 410, 753 nodo inicial, 549
hcap allocation initial state
asignación por medio de un montículo, estado inicial
4 1 5 ,4 1 6 , 423, 424, 454-60 (véase state)
Helsinki Language Processor in-line expansión
(véase HLP) expansión en linca, 442, 443
hierarchical analysis (véase también macro)
análisis jerárquico. 5 inner loop
( véase también parsing) lazo interno. 550, 623
HLP input symbol
H LP, 286, 352 símbolo de entrada, 1 16
H ole in scopc instance, of a polymorphic type
excepción en el ám bito. 425 caso de un tipo polimórfico, 382
Hollerith string instruetion selection
cadena Hollerith, 100 selección de instrucciones, 532
Hope intermedíate code
Hopc, 396 código intermedio, 12. 14, 477-527, 530.
607, 608, 722
(véanse también abstraet machine: postfix
idempotcncc expression: quadruple: three address
idem potente, 98. 702 code: tree)
identifier interpreter
identificador. 56, 57. 88. 89, 183, 184 intérprete, 3. 4
identity function interprocedural data flow analysis
función identidad. 701, 702 análisis del flujo de datos entre
if statement procedimientos, 671-78
proposición if, 114. 115, 505-07. 518-20 interval
inmediate dominator intervalo, 683-86
do m in ad or inmediato, 621 interval analysis
immediate left recursión análisis de intervalos, 641. 678, 686, 737,
recursión directa por la izquierda. 180 738
implicit allocation interval deptli
asignación implícita, 454, 458-60 profundidad de intervalo, 690
implicit typc conversión interval graph
conversión implícita de tipos. 371 grafo de intervalos, 684. 685
iniportant State interval partition
estado significativo, 137 partición de intervalos, 6X4
indexed addressing item
direccionaniiento indizado, 535. 536, 557 elemento
¡ndirect addressing (véanse kernel item. I.li(l) item; I R(0)
direccionaniiento indirecto, 535-37 item)
812 V O C A B U L A R IO B IL IN G Ü E D E T E R M IN O S T E C N IC O S

¡terative data-flow analysis left recursion


análisis iterativo d e flujo de datos, 641-51, recursividad p o r la izquierda, 47-50, 72,
690-92, 709-12 180-82, 196, 197, 312-14
leftmost derivation
kernel item derivación p o r la izquierda, 173
left-sentential form
elem ento nuclear, 230, 248
form a d e frase izquierda, 173
keyword
lex
palabra clave. 56. 57, 88, 89, 444
kill LEX, 85, 109-15, 131-32, 150. 151, 160,
749
elim inar, 626, 630-32, 645, 654
lexeme
Kleene closure
cerradura d e Kleene lexema. 12, 56, 57, 61, 62. 87, 444-46
lexical analysis
(véase closure)
K M P algorithm análisis léxico, 5, 12, 26. 54-60, 71. 85-161,
164. 176, 269, 272, 756
algoritm o d e M P , 154, 155
lexical environment
K n u th -M o rris-P ratt algorithm
am b ien te léxico, 471, 472
algoritm o d e K nuth-M orris-P ratt, 161
lexical error
(véase tam bién K M P algorithm)
erro r léxico, 90. 165

lexical scope
label ám b ito léxico, 424-36
etiqueta, 67, 68, 4 8 1 ,5 2 0 , 5 21 ,5 3 1 lexical valué
L A L R collection of sets o f ítems valor léxico, 12, 113, 289
colección de co n ju n to s de elem entos library
LA LR , 245 biblioteca, 4, 5, 54
L A L R gram m ar lifetime, o f a tem porary
gram ática L A L R , 245, 246 duración d e u n valor tem poral, 494, 495
LA LR parsing lifetime, o f an activation
análisis sintáctico LA LR d u ració n de un a activación, 403, 423
(véase luokahead L R parsing) lifetime, o f an attribute
LA LR parsing table d u ració n d e u n atrib u lo , 330, 331, 334-39
tabla d e análisis sintáctico LALR, 242-52 limit flow graph
lambda calculus grafo d e flujo límite, 685, 686
cálculo lam b d a, 399 linear analysis
languagc análisis lineal, 4
lenguaje, 28, 94, 118, 172, 209 (véase también lexical analysis)
lastpos link editor
últimapos, 138-41 ed ito r d e enlace, directo r de enlace, 19,414
lattice linked list
retículo, 399 lista enlazada, 453
1-attributed definition lint
definición con atribu to s p o r la izquierda, lint. 359
288, 305-23, 350 lisp
lazy state construction L1SP, 425, 454, 456, 475, 713, 743
construcción diferida d e estados, 130, 160 literal string
leader cadena literal, 88
bloque inicial, 545 líve variable
leaf variable activa, 551, 560, 567, 613, 617,
hoja, 29, 30 618, 649, 650, 660, 671
left associativity L L gram m ar
asociadvidad por la izquierda, 30, 31, 213, gram ática LL, 164. 166, 196, 197, 2 2 7 ,2 7 7 .
270 280, 285, 317-19
left factoring loader
factorización p o r la izquierda, 182 cargador, 19
left leaf local ñame
hoja izquierda, 578 n o m bre local, 408, 410-12, 425
V O C A B U L A R IO B IL IN G Ü E DE T E R M IN O S T E C N IC O S H I.I

local optim ízation m e e t-o v e r-p a th s solution


o p tim a c ió n local, 610, 651 so lu ció n d e re u n ió n sobre c am in o s. 707,
logical erro r 708, 7 1 0 , 712
e r r o r lógico, 165 m em ory m ap
longest com m on subsequence m a p a de m e m o ria , 461
su b se c u e n c ia c o m ú n m á s larga, 158 m em o ry organization
lo o k ah ead o rg an iz ació n d e la m e m o r ia
preanálisis, 92, 114, 115, 136, 2 2 1 , 237 (véase storage organization)
lo o k ah ead L R parsing m inim um -distance e rro r correction
análisis sin tá ctic o L R c o n e x a m e n por co rrecció n d e erro res d e d is ta n c ia m ín im a ,
a n tic ip a d o , 2 2 2 , 2 42 -5 0, 2 6 2 , 285 90
(véase tam bién yace) m ixed s tra te g y precedence
lo o k ah ead sym bol p reced e n cia d e estrategia m ix ta, 285
s ím b o lo d e preanálisis, 42 m ix ed -m od e ex p ression
loop ex p resió n d e m o d o m ix to , 510-12
lazo, 550, 562, 620-25, 63 4 -36 , 697 m odula
loop header M O D U L A , 6 2 5 , 7 3 7 . 7 6 0 , 761
e n c a b e z a m ie n to de u n lazo m onotone fram ew ork
(véase header) m a rc o m o n ó to n o , 704-06, 710, 711
loop optim ízatio n m onotonicity
o p tim a c ió n d e lazos, 6 1 3 , 614 m o n o to n ic id a d , 738
(véanse tam bién code m otion; induction m o s t closely nested rule
variable; reduction in strength) regla del a n id a m ie n to m á s c erca n o , 425,
lo o p -in v arian t com putation 429
c á lc u lo d e in v a rian tes d e ciclos m ost g en eral unifier
(véase code motion) u n ific a d o r m á s general, 382, 383. 388. 389
L R g ra m m a r
g ra m á tic a L R , 164, 166, 2 0 7 , 2 2 6 , 227,
254, 2 8 0 , 2 8 1 ,2 8 5 , 318 ñam e
L R p arsin g n o m b re . 401
análisis sin tá ctic o L R , 2 21 -7 4, 352, 595 ñ a m e equivalence, o f ty p e ex p ressio n s
L R (1) g ra m m a r e q u iv a le n c ia e n tre n o m b r e s e n las
g ra m á tic a L R (1), 242 ex presion es d e tipos, 368, 369
L R (1 ) ítem n am e-re late d ch eck
e le m e n to del análisis s in tá c tic o L R (1), 237 c o m p ro b a c io n e s rela cio n ad as c o n n o m b re s.
L R (0) ítem 355
e le m e n to del análisis s in tá c tic o L R (0), 228 n a tu ra l loop
l-value lazo n a tu ra l. 6 2 1 , 622
v alo r d e la d o izq u ierd o , 6 5 , 6 6 , 236, 407, neliac
4 38 -4 3, 563 N EL1A C, 526
n ested procedures
p ro c e d im ie n to s a n id a d o s, 42 9 -36 , 489-91
m a ch in e code n estin g d e p th
c ó d ig o d e la m á q u in a , 5, 18, 19, 585, 593 p ro fu n d id a d d e a n id a m ie n to , 43 0
m a ch in e sta tu s nesting, o f activations
estad o d e la m á q u in a , 4 1 0 , 419-21 a n id a m ie n to d e activaciones, 403
m acro NFA
m a c ro , 16, 17, 86, 4 4 4 , 4 70 A FN
m ake (véase nondeterm inistic fin ite autom aton)
m ake, 747-49 no d e sp littin g
n ian ifest co n stan t sep aració n d e n o do s, 6 8 5 , 686, 6 9 7 , 698
c o n s ta n te m anifiesta, 110 n o n d eterm in istic finite a u to m a to n , 115, 116,
m a rk e r nonterm inal 119-30, 132-35, 138, 139
n o te rm in a l m a rc ad o r, 318, 321-25, 351 n o n d eterm in istic tra n s itio n d iagram
m eet o p e ra to r d ia g ra m a d e tra n sic io n e s n o d e te rm in ista .
o p e r a d o r de re u n ió n , 6 9 9 189
814 V O C A B U L A R IO B IL IN G Ü E DE T E R M IN O S T E C N IC O S

nonlocal namc p aren tb eses


n o m b re n o local, 424-38, 544 paréntesis, 97, 100, 177, 178
nonreducible flow g ra p h p arse tree
grafo de flujo n o reducible, 6 2 5 , 6 9 7 , 698 árb o l d e análisis sintáctico. 6-8 . 28-30,
n on reg u lar s e t 40-43. 4 9 . 50, 164, 173-76, 201. 202,
c o n ju n to no regular. 185, 186 287, 305, 306
(véase tam bién regular set) p arser g en erato r
nonterm inal g en erad o r d e an alizad o res sintácticos. 749
n o te rm in a l, 27, 170-72, 210-12 parsing
(véase tam bién m arker nonterm inal) análisis sin tá ctic o , 6. 7, 12, 30, 31. 40, 49.
nullable cxpression 57. 58. 73. 86. 87, 163
expresión an u lab le, 138-41 (véase tam bién bottom -up parsing: bounded
contexi parsing: iop-do\vn parsing)
object parlial arder
objeto, 401, 407 o rd e n parcial. 343. 344
object code partition
código o b je to , 722 p artició n . 144. 145
object language pass
lenguaje o b je to pasad a. 20-22
(véase target language) passing environm ent
offset a m b ie n te d e pasada, 4 7 1 . 4 72
d esp laz am ie n to , 410, 4 1 2 , 464, 4 7 7 , 478, p attern m atching
541 c o n c o rd a n c ia de patrones. 87. 131-33. 594,
o n e-p ass com piler 600
c o m p ila d o r d e u n a pasada P -code
(véase single-pass translation) código P. 761
o p e ra to r g ra m m a r
peephole optim ization
g ra m á tic a d e operadores. 209, 210 o p tim a c ió n local. 571-75, 6 00
o p e ra to r ¡dentification
period, of a string
identificación de o peradores, 373
periodo d e u n a c a d e n a . 155
(véase tam bién overloading)
phase
o p e ra to r precedence g ram m ar
fase. 10. 1 1
g ra m á tic a d e p reced en cia d e operadores.
(véanse tam bién code general ion: code
278, 279
optim ization: error hand/ing: lexical
o p e ra to r precedence parsing
analysis: parsing: sem antic analysis)
análisis sintáctico p o r p reced en cia d e
p h rase-level e r r o r recovery
o p erad o res. 209-21, 2 8 5 , 754
recu peració n de erro res a nivel d e frase,
o p e ra to r precedence relations
169. 199, 200, 262
relaciones de p reced en cia de operadores,
209, 210 pie
optim izing com piler pie. 47 0
c o m p ila d o r o p tim iz a d o r pig Latín
( véase code optimizatiorí) scu d o latín . 80
overloading point
sobrecarga, 341, 345. 373-76. 397, 398 p u n to . 627. 628
pointer
a p u n ta d o r. 361. 4 2 2 . 4 8 2 . 557, 5 6 9 . 570.
piickcd d a ta 598. 599, 666-71
d a to s e m p a q u e ta d o s , 412 pointer type
pudding tip o a p u n ta d o r . 358
relleno. 412 polym orphic function
panic mode función polim órfica. 356. 376-88
m o d o de pánico, 90. 168. 198. 262 polym orphic typc
p aram eter passlng tip o p o lim ó rfico . 380
paso de p a rá m e tro s. 427-29, 437-39, 671, pop
672 sacar. 65
V O C A B U L A R IO B IL IN G Ü E D E T E R M IN O S T E C N IC O S K15

porta bility production


transportabilidad, 87, 742 producción, 26, 170
portable C com piler profile
co m p ilad o r transportable del lenguaje C perfilar, 605
positivo closure progranim ing language
cerrad u ra positiva. 98 lenguaje de program ación
(véase también closure) projet, prograniming
proyecto de program ación, 763-69
postfix expression
propagation, o f lookahead
rotación postfija, 25, 3 3 ,4 7 8 , 480, 484, 523
propagación de sím bolos d e anticipación,
postorder traversaI
249
recorrido en orden posterior, 578
push
precedence
insertar, 65
precedencia, 31, 32. 97, 213, 254-56, 270,
271
(véase tam bién operator precedence
quadruples
grammar)
cuádruplos, 484, 486, 487
precedence function
query interpreter
función d e precedencia, 214-16
interprete de consultas, 4
precedence relations
queue
relaciones d e precedencia
cola, 522
(véase operator precedence relations) quicksort
predecessor clasificación p o r particiones. 402, 606
predecesor, 549
predictive parsing
análisis sintáctico predictivo, 44-48, raftor
187-93, 198, 199, 221, 311-18 R A T F O R . 741
predictive translator rcaching definition
trad u c to r predictivo, 316-18 definición d e alcance. 628-39, 642-45, 670,
prefix 6 7 1 ,6 9 2 -9 8 . 702
prefijo, 95 recognizer
prefix expression reconocedor, 115
form a prefija d e un a expresión. 524 record type
preheader tip o record, 358, 371, 492
preencabezam iento, 623, 625 recursión
preprocessor recursión. 6. 7. 169, 326, 327, 339, 340,
preprocesador, 4, 5, 16 404, 414
pretty prim er (véanse tam bién lefl recursión; right
im presora estética, 3 recursión; tail recursión)
procedure recursive-descent parsing
procedim iento, 401, 402 análisis sintáctico descendente recursivo.
procedure body 4 4 , 186, 187, 754, 758
cu erp o d e un procedim iento, 402 reduce/reduce conflict
procedure cali conflicto d e reducción/reducción, 207, 244,
llam ada a un procedim iento, 208. 408, 410, 270, 595
417-24. 481, 521. 522. 538-43. 570, 666 reducible flow graph
(véase también interprocedural data flow grafo de flujo reducible, 624-26, 682, 685,
analysis) 686, 732, 733, 758
procedure definition reduction
definición d e un procedim iento, 402 reducción, 200, 201, 204, 205, 217-19, 222,
procedure param eter 263
procedim ientos c o m o p arám etros, 428, reduction ¡n strength
432, 433 reducción de intensidad, 574, 614-16. 619,
product 663, 664
producto redundant code
(véase cartesian product) código red u n d an te, 571
816 V O C A B U L A R IO B IL IN G Ü E DE T E R M IN O S T E C N IC O S

reference retu rn ad d ress


referencia d irecció n d e reto rn o , 421, 538-44
(véase use) retu rn node
reference count n o d o d e reto rn o , 672
c u e n ta d e referencia, 4 5 9 retu rn sequence
región secuencia d e re to rn o , 417-21
región, 6 3 0 , 687, 688, 692-98 re tu rn valué
register v alo r d ev u elto , 4 1 1 ,4 1 9 , 420
registro, 535-38 rig h t associativity
reg ister allocation asociatividad p o r la d erecha, 31, 213, 270
asignación d e registros, 533, 558-63, rig h t leaf
579-82, 739-43 hoja d erech a , 578
reg ister assignm ent right recursion
asignación a registros, 15, 533, 553-57, 561, recu rsió n p o r la d erecha, 48
562 rig h tm o st derivatíon
reg ister descrip to r d eriv ación p o r la d erecha, 173, 200-02
d escrip to r d e registros, 553, 554 righ t-sen ten tial form
register pair fo rm a d e frase derecha, 173, 200-02
p a r de registros. 5 3 3 , 582 root
reg ister-in terferen ce graph raíz, 29, 30
grafo de interferencia e n tre registros, 562, row -m ajor form
563 fo rm a p o r filas, 496
regression test run-tim e su p p o rt
p ru eb a d e regresión, 749 a p o y o d u r a n te la ejecución. 401
reg u lar definition (véanse tam bién heap allocation; stack
defin ición regular, 98, 110 allocation)
re g u la r ex p ressio n r-value
expresión regular. 85, 96-100. 109, 110, v alo r d e la d o derech o. 6 5 . 2 3 5 . 4 0 7 , 438-43,
115, 116, 123-27, 131, 137, 138. 142, 563
150, 151, 177, 276
reg u lar set
c o n ju n to regular, 100 safe ap p ro x im ation
reh o stab ility a p ro x im a c ió n segura
rclocalización (de u n co m p ilad o r), 742 (véase con serval i ve approxim ation)
relativo ad d ress s-a ttrib u te d definition
d irecció n relativa defin ición c o n a trib u to s sin tetizado s, 290,
(véase offset) 302, 303
relocatab le m achine code save statem en t
código d e m á q u in a relocalizable, 5, 18. 530. p ro po sició n SA V E, 415, 416
531 scan n er
relocation bit a n a liz a d o r léxico, 86
bit d e rclocalización, 19 s c a n n e r g en erato r
renam ing g e n e ra d o r d e an alizad o res léxicos, 23
rc n o m b ra m ie n lo . 548 (véase tam bién lex.)
re s e r ved word scanning
p alab ra reservada, 57, 89 análisis léxico
retargetab ility (véase lexical analysis)
redestinubilidad, 742 scope
retargeting á m b ito , 4 0 6 , 4 0 7 , 4 2 4 , 4 2 5 , 452-54. 473.
red estin ació n (de un c o m p ila d o r), 4 77 489-92
retention, o f locáis search , o f a graph
co n serv ación d e valores locales, 4 1 4 , 415, b ú sq u ed a e n u n grafo. 121
423 (véase tam bién deplh fir s t search)
re tre a tin g edge sem an tic action
arista de retroceso, 681, 682 acción s e m á n tic a . 38. 39, 2 6 7 , 268
V O C A B U L A R IO B IL IN G Ü E DE T E R M IN O S T E C N IC O S 817

sem an tic analysis S L R parsing


análisis sem ántico, 5, 8 análisis sintáctico SLR
sem antic erro r (véase sim ple L R parsing)
erro r sem ántico, 165, 360 S L R parsing table
sem antic rule tabla d e análisis sintáctico SL R . 233-37
regla sem ántica, 34, 287-95 snobol
scm antics S N O B O L , 425
sem ántica, 25 sound type system
sentence sistem a de tipos seguro, 360
frase, 94, 172 source language
sentential form lenguaje fuente, 1
fo rm a de frase, 172 spontaneous generation, o f lookahead
sentinel generación esp o n tán ea del ex am en por
centinela, 93 anticipado, 248
shallow access stack
acceso superficial, 437 pila. 128, 129. 191. 204. 223, 262, 263, 283,
shared node 284. 299. 303. 304. 319-25. 334-38. 405.
n od o co m p artid o , 583, 584 406, 409. 410, 490-94. 579. 753
shell ( véase también control stack)
shell. 152 stack allocation
asignación d e la pila, 415, 417-26, 538,
shift
541-44
d esplazam iento, 204, 205, 222
stack machine
sh ift/re d u c e conflict
m á q u in a d e pila, 64-68. 478, 600
conflicto de d esp lazam iento/red u cción ,
s ta rt state
207, 219-21, 244, 270, 271, 595
estado inicial. 102
shift-reduce parsing
s ta rt symbol
análisis sintáctico p o r d esp lazam ien to y
sím bolo inicial, 27-29, 170. 290
reducción, 204-08
state
(véanse también L R parsing: operaror estado, 102. 103. 116, 117. 156, 222. 223,
precedent e parsing)
303
short-circuit code s ta te minimization
código en cortocircuito, 505 m in im izació n d e estados, 144-47
side effect state (of storage)
efecto colateral, 289 estado (de la m em oria), 407
signature, of a D AG node statem en t
signatura d e u n n od o d e un G D A , 300 proposición, 26. 28. 32. 67. 68
S ilic o n c o m p i l e r {véanse también assignmenl statement: case
co m p ilad o r d e circuitos, 4 statement: copy statem ent: do statem ent;
sim ple LR parsing equivalence statement: goto statement: if
análisis sintáctico L R sencillo, 222. 227-36. statement; while statement)
262, 285 static allocation
sim ple precedence asignación estática, 413-16, 538-41, 544
precedencia simple, 285 static checking
sim ple syntax-directcd translation co m p ro b ació n estática. 3, 355, 359
tradu cción sim ple dirigida por sintaxis, 39. static scopc
40, 307 á m b ito estático
single production {véase lexical scope)
producción simple, 255, 278 storage
single-pass translation m em o ria, 407, 408
tradu cción de un a pasada, 288, 753 storage allocation
skeletal parse tree asignación d e m em oria, 413-24, 455-60
estructu ra d e árbol d e análisis sintáctico, storage organization
212 organización d e m em o ria, 408-12
S L R gram m ar string
gram ática SLR, 234 cadena, 94. 171. 172
818 V O C A B U L A R IO B IL IN G Ü E D E T E R M IN O S T E C N IC O S

strin g table syntax-directed definition


labia d e cad en as, 445 definición dirigida p o r la sintaxis, 33, 34,
strongly noncircular syntax-directed 287-94
definition (véanse tam bién annotated parse tree;
defin ición dirigida p o r sintaxis fu ertem en te syntax-directed iranslation)
n o circular, 342-46, 351 sy n tax-directed translation
strongly typed language trad u c ció n dirigida p o r la sintaxis, 8, 25,
lenguaje fu ertem en te tipificado, 360 33-40, 287-353, 478. 479, 482-84
stru ctu ra ! equivalence, o f ty p e ex pressio ns sy n tax-directed tran slatio n engine
equivalencia estru ctu ral d e las expresiones dispositivo d e trad u c ció n dirigida p o r la
d e tipos, 365-67, 388, 392 sintaxis, 23
stru ctu re editor syntbesi/.ed attrib u te
ed ito r d e estru ctu ras, 3 a trib u to sintetizado, 34, 288-90, 308, 309,
subsequence 325, 326, 335
subsecuencia, 95 (véase tam bién attribute)
su b se t construction
co n stru cció n d e s u b c o n ju n to s, 120-23, 137
substitution ta b le com pression
sustitución, 382, 383, 388-91 co m p resió n d e tablas. 147, 148, 153,
252-54
substring
table-driven parsing
subead en a, 95
análisis sintáctico guiado p o r tablas, 191,
successor
196-98, 222-26
sucesor, 549
{véanse tam bién canonical L R parsing;
suífix
L A L R parsing; operator precedente
sufijo, 95
parsing; S L R parsing)
sw itch statem en t
tail
proposición sw itch
cola. 621
( véase case statement)
tail recursión
sym bol table
recu rsió n p o r el final, 53
tabla d e sím bolos, 7, 11, 61-63, 86, 164,
target language
443-54, 484, 487,94, 721
lenguaje objeto, 1
sym bolic debugging
targ et m achine
d e p u ra c ió n sim bólica, 721-29 m á q u in a objeto, 742, 743
sym bolic dump T -d iagram
volcado sim bólico, 552 d ia g ra m a T , 744-47
sym bolic register tem porary
registro sim bólico, 562 valores tem porales, 4 1 0 , 4 8 4 , 4 9 4 , 495,
synchronizing token 551, 552, 653, 657
c o m p o n e n te léxico d e sincro nizació n, 198, term inal
199 term in al. 26, 169-72, 289, 290
syntax testing
sintaxis, 25 pru eb a, 749, 750
(véase tam bién context-free gram m ar) text editor
sy n tax analysis e d ito r d e textos, 160
análisis sintáctico te x t fo rm atter
(véase parsing) fo rm a d o r d e textos, 4 , 8-10
syntax erro r tb re e -a d d re ss code
e rro r sintáctico, 165-69, 198-200, 2 0 5 ,2 1 2 , código de tres direcciones, 14, 480-86
216, 221, 224, 262-64, 272-74, 282, 283, token
286 c o m p o n e n te léxico, 4, 5, 12, 26, 2 7 , 56, 57,
sy n tax tree 86-88, 100, 169, 170, 184
árbol sintáctico , 2, 8, 50, 295-99, 478-80, T {-T 2 analysis
485 análisis T r T : , 686, 687, 692-98
(véanse tam bién abstract syn ta x tree: tools
concrete syntax tree; parse tree) h e rram ien tas, 742
V O C A B U L A R IO B IL IN G Ü E DE T E R M IN O S T E C N IC O S 819

(véanse tam bién autom alic code generator; typ e constructor


compiler-compiler; dala-flow engine; c o n s tru c to r d e tipos, 357, 358
parser generator; scanner generator; typ e conversión
syntax-directed trans/ation engine) c o n v e rsió n d e tipos, 371, 372, 500, 501
top elem en t (véase tam bién coerción)
e le m e n to tope, 702 typ e estim a tio n
to p -d ow n parsing e stim ació n d e tipos, 713-21
análisis sintáctico d escen d en te. 41-48, 180, typ e e x p r e s sio n
186-200, 312, 477 expresión d e tipos, 357-59
(véanse tam bién predictivo parsing; typ e graph
recursive-descenl parsing) g rafo d e tipos, 359, 365, 369, 370
to p o lo g ica l sort ty p e inference
o r d e n a m ie n to topológico, 294, 568 inferen cia d e tipos, 378, 379, 385-88, 712
transfer function ty p e ñam e
fu n ció n d e tran sferen cia, 6 9 2 , 693, 699, n o m b re d e u n tipo, 357, 3 5 8 , 368
707 ty p e sy stem
transition diagram sistem a d e tipos, 359, 360, 7 1 5 , 716
d ia g ra m a d e transiciones, 102-07, 116, 188, ty p e variable
189, 232 variable d e tipos, 378
transition function
fu n ció n de transiciones, 116, 156
u d-ch ain
transition graph
cad e n a d e uso y d efin ició n, 638, 6 3 9 , 660,
grafo d e transiciones, 116
661
transition table
u n a m b ig u o u s definition
ta b la d e transiciones, 116, 117
defin ición n o a m b ig u a , 628
translation rule
unary operator
regla d e trad u cció n , 110
o p e ra d o r u n ario , 214
translation sc h e m e
unification
esq u e m a d e tra d u c c ió n , 38-40, 307, 310
u n ificació n, 382-84, 388-92, 399, 400
translator-w riting sy ste m
unión
sistem a g e n e ra d o r d e tra d u c to re s
u n ió n , 96 -9 8, 390, 391
( véase compiler-compiler)
u niq u en ess c h e c k
traversal
c o m p ro b a c ió n d e u n icid ad , 355
reco rrid o , 37, 326, 327
u nit production
(véase tam bién depth-first traversal)
p ro d u c c ió n unitaria
trec
(véase single production)
á rb o l, 2 , 359, 463, 464
u niversal quantifier
( véanse tam bién aclivation tree; depth-first
c u a n tific a d o r universal, 367, 368
spanning tree; dom inator tree; syntax
unreach ab le code
tree)
código inalcanzab le
tree rewriting
reescritura d e árboles, 589-95, 600 (véase dead code)
u sa g e cou n t
tree-tran slation sc h e m e
c u e n ta d e u so , 559-61, 599
esq u e m a de tra d u c c ió n p o r árboles, 590,
use
591
u so , 545, 550-52, 650
trie
u sc-d efin ition chain
trie, 153, 154, 156, 157
c a d e n a d e uso y definición
trip les
(véase ud-chain)
triples, 484-87
u s e l e s s sym b ol
tw o p a ss-a sse m b le r
sím b o lo in ú til, 277
e n s a m b la d o r d e d o s p asadas, 18
type
tipo, 355-400 valid item
ty p e ch eck in g e le m e n to válido, 2 3 2 , 237, 238
c o m p ro b a c ió n d e tipos, 8, 3 5 5 , 3 5 6 , 369, valué num her
530 n ú m e r o d e valor, 300, 301, 653
820 V O C A B U L A R IO B IL IN G Ü E D E T E R M IN O S T E C N IC O S

value-result linkage weat precedence


e n la c e p o r v a lo r y resu lta d o p r e c e d e n c ia d é b il, 2 8 5
(véase copy-restore-linkage) while statement
variable p r o p o s i c i ó n while, 5 0 5 - 0 7 , 518 -2 0
v a r ia b le white space
(véanse identijier; type variable) e s p a c i o e n b l a n c o , 5 6 , 8 6 , 8 7 , 101
variable-length data word
d a t o s d e l o n g i t u d v a r ia b le , 4 1 9 , 4 2 2 , 4 2 7 p a la b r a , 9 4
very busy expression
e x p r esió n m u y o c u p a d a , 7 3 1 , 732
viable prefix y ace
p r efijo v ia b le. 2 0 6 . 2 2 3 , 2 3 0 , 2 3 1 , 2 3 6 -3 8 Y A C C , 2 6 4 -7 4 , 7 4 9 , 754, 760
void type yield
tip o v a c ío , 3 5 7 ; 363 p r o d u cc ió n , 2 9
P r in c ip io s , T é c n ic a s y H e r r a m ie n ta s

A cualquier persona interesada en el diseño de compiladores


le resulta fam iliar el libro del dragón, Principies o f Compiler, de
Alfred V. Alio y Jeffrey D. I lim an. E l libro del dragón fue un
texto m em orable sobre el diseño de eoinpiladores, pero este
campo ha evolucionado con rapidez y se encuentra en un
estado muy avanzado respecto al que ten ía cuando se
publieó el libro.

E l texto comienza con un a introducción de las ideas principales


que subyacen al proceso de la compilación y posteriorm ente
ilu stra esas ideas construyendo un com pilador sencillo de una
pasada. E l resto del libro am plía los conceptos presentados en
los dos prim eros capítulos y tra ta tem as más avanzados como
el análisis sintáctico, la verificación de tipos y la generación y
optim ización de código.

El nuevo “libro del dragón” presenta m aterial básico


que caracterizó al antiguo, pero tam bién profundiza
en los avances recientes de esta área. E n tre las
características de esta nueva versión se encuentran:

* Aspectos prácticos en el desarrollo de

* M ás m aterial sobre la traducción di)


por sintaxis, la verificación de tipos,
organización d u ran te la ejecución, Ii
generación autom ática de código y I:
I optim ización del código.
U
AHO - S E T III - ULLM AN

Вам также может понравиться