Академический Документы
Профессиональный Документы
Культура Документы
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
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 .
CNIEM 1031
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
1.1 C O M P I L A D O R E S
program a program a
fu en te objeto
m en sajes
d e error
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
posición +
velocidad 60
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.
El c o n te x to d e un co m p ila d o r
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
*
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
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
p o sic ió n := i n i c i a l + v e lo c id a d * 60
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.
proposición
de asignación
identificador
I
posición
expresión
i
¡dentificador
I
in icial
identificador
l
velocidad
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 )
identijicador , : = expresión2
es u n a p "oposición.
/ \ / \
posición + posición +
/ \ / \
in icial * in icial
/ \ / \
velocidad 60 velocidad e n ta r e a l
(a) <b) 60
A n á lis is s e m á n tic o
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
d o P a 1a b a
Fig. 1.6. A grupam iento d e caracteres y palabras en cajas.
\ h b o x { d is ta d e cajas> }
a s u b ¡ i s u p 2}
1.3 L A S F A S E S D E E N C O M P I L A D O R
program a fu en te
programa objeto
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
D e te c c ió n e in fo rm a ción d e errores
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)
id , := id> + id , * 6 0 (1 .2 )
G e n e r a c ió n d e c ó d ig o in term ed io
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
/ \
idi +
/ \
id • *
/ \
id 60
(a ) (b)
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
O p tim a c ió n d e có d igo
templ := i d 3 * 60.0 .j
idl := i d 2 + templ
G e n e r a c ió n d e cód igo
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-
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
P r e p r o c e sa d o r e s
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
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 .}
\JACM 1 7 ; 4 ; 7 1 5 - 7 2 8 .
E n sa m b la d o r e s
M O V a, R1
ADD #2, R1 (|.6)
MOV R1 , b
E n s a m b la d o d e d o s p a sa d a s
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
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 *
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
C a rg a d o re s y e d ito r e s d e e n la c e
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
P asadas
R ed u cció n d e l n úm ero d e p a sa d a s
GOTO destino
destino: M O V algo, R1
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
N O T A S B IB L IO G R A F IC A S
CA PITU LO 2
Un compilador
sencillo
de una pasada
2.1 P E R S P E C T I V A
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
2 .2 D E F I N I C I O N D E L A S I N T A X I S
2. U n c o n j u n t o d e n o te rm in ales.
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!.
+ —0 1 2 3 4 5 6 7 8 9
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
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.
X Y Z
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 .
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.
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
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:
lista 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 .
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: * /
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
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.
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
A tr ib u to s sin te tiz a d o s
P r o d u c c ió n R e g la S e m á n t ic a
expr.t 9 5 -2 +
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:
(2.1)
sec.x = - 1
sec.y = - 1
sec.x = - 1 instr.dx = 0
sec.y = 0 instr.dv = - 1
Fig. 2.8. Arbol d e análisis sintáctico co n an o tacio n es para comienza oeste sur.
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
R e c o r r i d o s e n p r o f u n d id a d
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 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
Fig. 2.12. C onstrucción d e una hoja adicional corresp o nd iente a un a acción semántica.
9
E m is ió n d e una traducción
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)
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:
término 9 ( p r im é 9') )
{print ('+')}
term ino
/ " .
[print ('-')} 2 {p rin t ( ' 2 ')}
2.4 A N A L I S I S S I N T A C T I C O
A n á lis is s in tá c tic o d e s c e n d e n te
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
¡nteger
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 ‘
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
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
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:
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
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 €
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
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:
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)
P o r e jem p lo , en
A P R
(2 .11)
R a R
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 .
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
A d a p ta c ió n d el e s q u e m a d e tradu cción
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
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 + .
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 ();
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
O p tim a c ió n d el traductor
resto()
}
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
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 ;
)
El program a completo
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
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 */
)
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
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 >
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
c u e n ta = c u e n ta + in c re m e n to ; (2.15)
id = id + i d ; (2 .16)
|ee p asa el
carácter
U n a n a liz a d o r lé x ic o
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
c = g e t c h a r ( ) ; u'ngetc(c, s t d i n ) ;
# 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 ) }
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 ();
}
(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) }
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
L a in terfa z d e la ta b la d e s ím b o lo s
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 .
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 );
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
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
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 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 .
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.
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.
i := 5;
i := i + 1;
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
T ra d u c c ió n de e x p re sio n e s
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
se tr a d u c e al c ó d ig o d e la figura 2.32.
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.
F lu jo d e co n tro l
T ra d u c ció n d e p r o p o s ic io n e s
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
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 - » 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 ) : }
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:
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
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
2 .9 R E U N I O N D E L A S T E C N I C A S
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) )
e x p r e sio n e s in fijas
e x p r e sio n e s p ostfijas
M ó d u lo d e a n á lis is léxico a n a l i z l é x . c
+ - * / D I V M O D ( ) ID N U M FIN
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
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
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
M ó d u lo de errores e r r o r . c
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
c c - c nom brearch . c
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
/* g l o b a l .h '/
int n u m l í n e a ;
);
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 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
)
}
#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"
/**** error.c /
# include "global.h"
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
# 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
S - > S S + | S S * |a
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
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
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
for / : = 1 s t e p 10 - j u n til 10 * j d o j : = j + I
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 .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
C A P IT U L O 3
Análisis
léxico
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
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
const pi = 3.1416;
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
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
E = M * C ** 2
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 >
E r r o r e s léxicos
fi ( a =** f ( x ) ) ...
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
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 .
C e n tin e la s
| delantero
comienzo-lexema
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
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
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
T é r m in o D efinición
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.
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.
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 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.
E x p r e s io n e s r e g u la r e s
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 .
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).
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 }.
------------------
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
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
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.
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
A b r e v ia tu r a s e n la n o ta c ió n
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
[A-Za-z][A-Za-zO-9]*
C o n ju n to s n o r e g u la r e s
{ wcw ¡ ví’ es u n a c a d e n a d e s ím b o lo s a y b }
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
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
D ia g r a m a s d e tr a n s ic io n e s
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
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)
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 ())
in ic io
in ic io
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
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 ( ) .
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 */
}
}
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 );
)
}
}
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
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 .
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
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
%{
/* 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 } +)?
%%
%%
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 */
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.
E l o p e r a d o r d e p re a n á lis is
DO 5 I = 1 .2 5
DO 5 I = 1 ,2 5
D 0 5 1 = l.2 5
D 0 5 I= 1 ,2 5
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
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
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}
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
A u tó m a t a s fin ito s n o d e te r m in is ta s
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
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}
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
inicio
O
A u tó m a ta s fin ito s d e te rm in is ta s
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 .
.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";
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
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 .
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
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.
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
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 . □
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
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.
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).
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}.
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
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))*.
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
P a ra r2. se c o n s tr u y e
in i c i o b ¿sss*.
H 4 ------------5 J)
El A F N p a r a r6 = a es
128 A N A L ISIS LEXICO
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 .
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 ” :
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 )
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
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
buffer de entrada
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
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 .
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 .
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
A F D p ara a n a liz a d o r e s lé x ic o s
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
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
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
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
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
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.
/ \
#
/ \ 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 .
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
n es una hoja
true 0
eliquetada con €
n es una hoja
false {/}
etiquetada con la posición i
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.2.3} • {61
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
N odo siguientepos
1 ( 1 . 2 , 3}
2 ( 1 , 2 , 3}
3 {4}
4 {5}
5 (6)
6 —
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:
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.
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.
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.
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
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.
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
o m is ió n ba se s ig u ie n te re v is a
[base[s] + a]] = a th e n
EJERCICIOS 149
E JE R C IC IO S
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?
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
d ) p re fijo s p ro p io s
e) s u b s e c u e n c ia s
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
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 .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
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
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 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 .
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 ).
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
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
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.
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.
E JE R C IC IO S D E P R O G R A M A C IO N
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 .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 .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
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
• 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.
• 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.
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
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
• •
tab la de
s ím b o lo s
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:
• 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.
(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
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
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
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 .
•
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
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
1. E stos s ím b o lo s son te rm in a le s:
2. E sto s s ím b o lo s s o n n o te rm in a le s:
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
E => - E
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.
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
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í:
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
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
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. □
\ / \
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).
E E
£
/i\ + £
E/ i x E
£ * £
id
/ I\
£ * £ £
/ I\ + E id
l i
id id
l id
i id
(a) <»»
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
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 —> €
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 .
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
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)
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 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
Prop
if expr th e n prop e ls e p ro p
ZA ZA
if
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 ,
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
A fiA '
A ' - » a /Y | e
E-+E + T | T
T-+T*F\F (4 .10)
F ( E ) | id
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 ).
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
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.
A -+ A c I A a d I h d í c
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
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
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 .
A -+ < l 4' |y
A' - p , | p 2 1. . . | p„
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 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
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.
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
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)
S S S
c
/IV A J c
/l\A J c
/l\A d
a b a
(a) (b) (c)
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 ).
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.
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).
(c) (d)
F ig. 4 .1 2 . D iag ram as d e transiciones sim plificados para las expresiones aritm éticas.
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
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.
• 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)
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
P R IM E R O y S IG U IE N T E
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 .
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 ). □
E ntrada. U n a g ra m á tic a G.
M étodo.
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.
G r a m á tic a s L L (1 )
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
N o Sí m b o l o de Entrada
T e r m in a l •
a b e / t $
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 ).
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
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
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.
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 $
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 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
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:
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.
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 3 K l£
E + E * id 3
3- E + « 2 * id ,
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 .
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
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
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 .
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.
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$
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
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
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 . □
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). . .
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 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
£ • _ * e + E \ E - E \ E * E I E / E \ E t E \ ( E ) | - E \ id (4 .17)
R e la c i ó n S ignificado
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 •> •> •>
+ <• •> <• •>
* <• •> •> •>
$ <• <• <•
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 $.
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 .
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.
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.
( = ) $ < • ( $ < • id
(< •( id - > S )•> $
( < • id id • > ) )•> )
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 ,
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 .
+ — • / í id ( $
)
+ •> •> <• <• <• <• <• •> •>
—
•> •> <• <• <• <• <• •> ■>
* •> •> •> •> <• <• <• •> •>
/ •> •> •> •> <• <• <• •> •>
í •> •> •> •> <• <• <• •> •>
id •> •> •> •> •> •> •>
( <• <• <• <• <• <• <•
) •> •> •> •> ■> •> •>
$ <• <• <• <• <• <• <•
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
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.
+ — * / 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 . □
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 $.
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. □
+ * 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
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 .
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
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
© o o o © ©
© — *©
Fig. 4.27. G rafo p a ra la m a triz d e precedencia de la figura 4.25.
E -+ E + E \ E - E \ E * E | E / E | £ t £ | ( E ) | - £ | i d
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
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 □
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
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
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 "
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-
P ila Entrada
$E+ )$
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
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
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 .
P ila S a l id a
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
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
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
(5o X \ 5, X i 52 . . . X m _ r S m _ r A 5, ü , a , , , . . . £/„$)
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 .
(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:
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
(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
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
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 (/).
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
E •£
F - F -f T
F -* T
r-> f *f
r-> f
F -> •(£ )
F - * id
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
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
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
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
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
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.
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
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).
M étodo.
£ ' -> £
£->•£ + 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
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
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 . □
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
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 ).
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 .
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:
p ro ced u re elementos ( 6 ” );
b e g in
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)
/„: y -> y $
S - * -C C , $
C —> "CC, c /d
C - » d. c /d
/, : 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 - > •</,$
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 $
¡ 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 . □
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
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 . □
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 ) .
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
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
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 .
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 . □
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 / $
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
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.
0 c 3 6 c 36 d 4 7
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
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
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
/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 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 .
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.
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 ).
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 •/-, #
De A
oc
/ 4: L -> * R
•
ll
•
'C
•
/ 5: ¿
/»: R - * L-
/„: S -> L = R -
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 - $
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
Sí m b o l o A cción
id d5
( d4
c u a lq u ie r a erro r
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
y p a r a el e s ta d o 9:
* d7
c u a lq u ie r a rl
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:
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.
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
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
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
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-
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 $
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
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
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
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
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.
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
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 $
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
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
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
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
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 . □
#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
e n Y A C C se escrib iría
%{
finclude <ctype.h>
%}
%token DIGITO
%%
línea e x p r '\n' { p r i n t f (" % d \ n ” , SI); }
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;
E -*E + T\T
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
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
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 */
%%
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;
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
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 .
%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
%nonassoc V
% r i g h t MENOSU
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
right MENOSU
%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
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? }
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; }
%%
¿include "lex.yy.c"
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
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.
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 .
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 .
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
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 .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 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 .
S ->0\A
A-+AB
tí - > I
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 $
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 .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
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
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
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 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 € .
E E su b R E su p E | { E } | c
R -* E s u p E E
£ , - * £ , 0, £ 2 Ei
E l —> E l 02 ¿ 3 £3
En En 0„ £ n+1 | £ „ + i
£ „ « - * < £ , ) |id
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 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
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 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.
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.
N O T A S B IB L IO G R A F IC A S
C A P IT U L O 5
Traducción
dirigida por
la sintaxis
á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
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
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
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 .
Pr o d u c c i ó n R eglas Semánticas
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 .
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
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
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
id,
G r a f o s d e d e p e n d e n c ia s
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.
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
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
O r d e n de ev alu ació n
T 4 her 5 L
tipo
real id , 3 entrada
her 7
kl7 2 entrada
her 9
id,
tI entrada
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)\
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
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
3 5
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 .
a la e n tra d a p a ra a
P r o d u c c ió n R eglas S emánticas
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 apn
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
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
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 .
Fig. 5.12. Instrucciones para c o n s tru ir el grafo dirigido aciclico de la figura 5.11.
id a la en trad a
1
i := i + 10
\ +
2 num 10
para i
3 + 1 2
/ \ 10
4 := 1 3
5 • • •
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 .
20
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 . □
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
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 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
• • • • • •
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
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
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 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 .
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:
2. los a tr i b u to s h e re d a d o s d e 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 .
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)
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 ) }
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' ) } €
Producción R e g l a Se m á n t i c 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 .
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 s u b 1 .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)
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
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 )
5 .5 T R A D U C C I O N D E S C E N D E N T E
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 \:
£ -* £ , + 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 }
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. 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 ]
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)
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)
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.
E
• •
T apn R
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 .
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:
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 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 .
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
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
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])
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
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
€
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)
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 . □
Pr o d u c c i ó n R e g l a s Se m á n t i c a s
M -> € M .s : = M.h
N -+ € N s : - contrac(N./i)
Pr o d u c c i ó n Fr a g m e n t o de C ódigo
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.
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 .
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
D -+ L : T
7 in te g e r | c h a r
L -* L , id | id
D - > id L
L , ¡d L | : T
T - » in te g e r | ch a r
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
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)
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 .
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 .
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.
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
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 .
real c [ 12 ! [ 3 1 ) ; ( 5 .9 )
in t x [ 3 ] , y [5 ] ? (5.10)
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. □
Pr o d u c c i ó n R eglas
L -* I l.her := L.her
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
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.
E v ita r la s co p ias
I ----- ► = 2
ri ri
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
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)
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
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.
Fig. 5.48. U so de pilas independ ien tes para los a trib u to s tp y al.
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 ) }
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
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 ) }
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
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
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 -> € R .s := R.h
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) }
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
begin
r : = T: R
return r
end:
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
Pr o d u c c i ó n R egi a s S e m á n t i c a s
E v a lu a c ió n re c u rs iv a d e a tr ib u to s
h ^ s i
N T
id A
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
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 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 ,
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.
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 .
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
F ig. 5 .6 2 . U n a p ru eb a d e circularidad.
E JE R C IC IO S
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
S w h ile e x p r d o b eg in S end
break
o tra s
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 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.
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
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).
L M L b\ a
M-> €
* 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.
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
N O T A S B IB L IO G R A F IC A 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
C A P IT U L O 6
Comprobación
de 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
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 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
(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 )
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 :
v a r A: a r r a y [1 ..1 0 ] of in te g e r;
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
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
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
O tr o e je m p lo : la d e c la r a c ió n e n P ascal
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
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.
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
S is t e m a s d e tip o s
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
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
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
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
clave: integer;
c l a v e mo d 1 9 9 9
t integer
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 ) }
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
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
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 .
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.
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.
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
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
.v = a rra y (s u s2)
t = a rra y (ti, t2)
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
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
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;
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 )
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
nodo
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 .
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
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
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 .
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;
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
e lse e r r o r -tip o )
P R O D U C C IO N R e g l a s e m á n t ic a
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
P r o d u c c ió n R eglas S emánticas
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?
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;
aplista := a p l i s t a í .s i g u i e n t e
end;
longitud := Ion
end;
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
V a r ia b le s d e tipo
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. □
ty p e e n la c e = ín o d o ;
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)
p a r a el tip o d e la f u n c ió n d e s r e f . □
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 .
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:
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
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 ,
ap lica : ae
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
S u s titu c io n e s , c a s o s y unificación
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):
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
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
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 ) }
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
-> :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
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;
así q u e el tip o d e l o n g i t u d es
V a . Iist{a) —►integer
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
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.
A s ;,, y u)
<l| «3 a,
0-2 a: ai
«3 ®3 a,
cu a2 a,
a5 lis t ( a 2) list (a,)
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.
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 .
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.
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 . □
x : 10
X \ cts : 14
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 : real e
f : real - » (real - > f )
re a l : 2
E JE R C IC IO S
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 .
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 - * nil
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 .
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
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.
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 )
a) 1 * 2 * 3
b) 1 * ( z * 2 )
c) (1 * z ) * z
¿ 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)
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
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 )))
* * 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.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) >
N O T A S B IB L IO G R A F IC A S
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
(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 ;
(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.
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
A rb o le s d e activ ació n
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.
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 .
P (2,3 )
/ I\
c ( 2,1) c ( 3 ,3) p<7,9)
/ c(7,7)
I\ c<9,9)
P ila s d e co n tro l
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 )
y n in g ú n o t r o n o d o . □
E l á m b ito d e un a d eclaració n
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
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
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 ?
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
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
Código
Datos estáticos
-----------------------------------------------
Pila
J
1 _
Montículo
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 .
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■ ■. ■ ■
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
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
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
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.
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.
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.
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.
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
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
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 .
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.
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
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.
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
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;
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
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.
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
á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
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);
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.
ao
b0
b,
^2, b 3
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 . . . }
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
(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
2 0
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-
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 .
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 :
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.
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
(4) procedure c;
(5) var ® : integer;
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
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
A m b ito d in á m ic o
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
(8) begin
(9) r := 0 .25;
(10) m uestra; chico;
•
w riteln ;
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
¿ 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 .
(5) end
L la m a d a p or valor
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.
(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.
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
(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
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.
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 . □
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 .
(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:
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
x := f ( A ) + f ( B)
t , := A ;
t 2 := B ;
t 3 := f ( t , ) ;
t 4 : = f ( t 2) ;
x : = t i + t 4;
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
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.
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
N ombre A tributos
—° !1— r í
1—a !
1— e !
1— n !
1— a l
!m l i !
ie i n !
it i
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
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.
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.
•
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.
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
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.
20
final acto ws
32
210
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
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) )
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
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. □
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
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
76 3
4 * 2
7 1
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. □
(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
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 );
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
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.
disponible
(a)
disponible
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 .
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].
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
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-
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
el c o m p i l a d o r d e b e h a c e r lo siguiente:
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 .
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.
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 .
E Q U IV A L E N C E A , B+í/ÚY
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
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 . □
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
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.
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 I baja 2
alta 2
bloqconti
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
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 (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))
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.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.
v : = y + 1:
r : = z + x;
end.
begin
a : = 2;
h : = 3;
p ( a + b. a. a);
p rin t a
end.
(5) procedure c;
(6) var m : integer;
(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.
(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;
(1 0 ) begin
(1 1 ) /:= a\ b( f )
(1 2 ) end.
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 ?
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}.
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.
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 -
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))
* 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
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
CAPITULO 8
Generación
de código
intermedio
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.
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.
8.1 L E N G U A J E S I N T E R M E D I O S
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
P r o d u c c ió n R egla S em á n tic a
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 .
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 '
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
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
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:
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.
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.
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.
P r o d u c c ió n R egla Sem á n t ic a
gen ( EJ u g a r ’ E xJ u g a r V E 2 Jugar)
E. código : = £ , . código || E c ó d ig o ||
J u g a r ' E \ Jugar V £ 2./n#ar)
( £
£ - * ( £ 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
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.
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
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.
( 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.
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
8.2 D E C L A R A C IO N E S
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
) desplazam iento : = 0 }
D
D -> D ; D
D -* ¡ó : T { introduce (id. nombre, T.tipo. desplazamiento );
desplazam iento: = desplazam iento + T.ancho }
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-
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 }
^ ^ í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
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 .
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 }
D -> /), ; I ) 2
N -+ e { / : = creatabla (tope(tblapn)):
m e te d , tblapn ); m e te (0. desplazamiento) }
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.
F ig. 8 .1 4 . Creación de una tabla de sím bolos para nombres de campo en un registro.
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
P -> M I)
M —> €
D D ; D | id : T | p r o c ¡d ; N D ; S
N -> €
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
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
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)
i x a + (b a se - i n f x a)
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 )
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
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
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.
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
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.
(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:
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]:
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}
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.
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
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
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
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;
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
t| := i in t* j
ti := e n t a r e a l t|
t: := y r e a l + t*
x := ti
p T .in fo + 1
pointer {record(t))
8.4 E X P R E S I O N E S B O O L E A N A S
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):
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) }
£ -» 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 —> 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 ') }
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 .
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 {
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
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
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
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
.......... =
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
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
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
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
8 .5 P R O P O S I C I O N E S C A S E
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 .
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
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
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 :
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: • • •
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
• • •
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
(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
{ M. c ita d : = sig te c u a d }
(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 }
(8) M -* c { M .c u a d : = s ig te c u a d }
8.6 RELLENO DE RETROCESO 517
100: i f a < b g o to _
101: g o to _
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 _
\ / 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 _
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
(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 .
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
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.
(3) M € { M .c u a d : = s ig te c u a d }
(7 ) S ¿ { S.sigtelista : = n il}
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 .
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 .
S e c u e n c ia s d e lla m a d a s
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.
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
E J E R C IC IO 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;
}
}
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 -
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,;
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
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
N O T A S B IB L IO G R A F IC A S
C A P IT U L O 9
Generación
de código
p ro g ra m a
p ro g ra m a
fuente objeto
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 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
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
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
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
MOV a , RO
ADD #1, RO
MOV RO, a
Asignación de registros
M x, y
D x, y
a + b t := a + b
t * c t := t + c
t / d t := t / d
(a) (b)
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)
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
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
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):
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:
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))
MOV RO, M
a lm a c e n a el v alo r
MOV * 4 ( R O ) , M
a l m a c e n a el v alo r
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 :
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
4- ADD R2' R1 c o s to = 3
MOV *R1, a
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
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.
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
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).
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
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
/* 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 . □
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 :
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 ó 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.
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
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
M O V # 0 , 12 (R3)
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
B loques básicos
t| := a * a
t 2 := a * b
t3 : = 2 * t 2 (9.1)
t4 t, + t3
t j := b * b
t6 : = t 4 + U
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.
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
(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)
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. □
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.
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
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
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
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.
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 .
L azos
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
C á lc u lo d e lo s s ig u ie n t e s u so s
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.
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 -
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
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
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.
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.
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
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 .
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
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)
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)
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
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
D istrib u c ió n d e r e g is tro s g lo b a le s
C u e n ta s d e uso
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:
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.
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
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
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
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.
(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
b [4 * i ]
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.
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
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).
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>
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
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
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 ro d := p r o d +
i := i + 1
i f i <= 20 g o to (1)
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 )
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.
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.
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
• 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
C ó d ig o in a lc a n z a b le
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
#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;
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
goto Ll
• • •
Lis goto L2
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
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
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«>
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
t i := c + d
t 3 := e - t i
t j := a + b
t4 := t, - t3
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 .
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
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
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
m á x (/,. A) si /, ¿ A
etiqueta(n) =
si /, = A
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
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
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
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 .
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 |
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.
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
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
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
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
E l a lg o r itm o d e p ro g ra m a ció n d in á m ic a
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.
( 0 , 1, 1)
1 ig. 9.29. Arbol sintáctico para ( a - b ) +c* ( d / e ) con vector de costos en cada nodo.
Rl
••
II
Rl := a
Rl := Rl — b
Rl := Rl + RO
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
ind +
ind
const.
/ \ reg#p +
const, r e g ap
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
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.
reg/ reg,
/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
ind
memD consta
reg0 ind
I
const* regs,
592 G EN ER A C IO N DE CO DIG O
(3) mem — •
• { M O V R /, a }
y \
mem, reg,
(4) mem •
• { M O V Rj , *R/ }
/ \
ind reg,
reg,
1
+
/ \
constc reg,
1
+
/ \
constc r e 9/
(8) r e g, + { I N C R/ }
/ \
reg, const,
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
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 ]).
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 :
E J E R C IC IO S
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
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.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
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 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?
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.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
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
10.1 I N T R O D U C C I O N
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
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
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
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
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 );
}
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 .
- ( 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
( 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.
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
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
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
S u b e x p r e s io n e s co m u n e s
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
a[t6] := t5
P ro p a g a c ió n d e c o p ia s
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.
if (d ep u ra) p rin t . . . (1 0 .2 )
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¿
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
T raslado de código
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
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.
: 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
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
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
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 - . □
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 .
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
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 +.
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
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.
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
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 :
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
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
if a = 10 goto B¿
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.
G r a fo s d e flu jo r e d u c ib le s
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.
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
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.
P u n to s y cam inos
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
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.
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.
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])
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}
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,
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
g en IS ] = g en [5 ,]
desaci [.S] = desact [ 5 ,]
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.
sa l [ 5 ] = s a U S ^ v sal [S2]
U tiliz a c ió n d e la z o s
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
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*}
El = F
A 1 = G u (E ] - D) = G’ u ( F - D)
E2 = F u A 1 = F u G u (F - D) = F u G
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
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
/* 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
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
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
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
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
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
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
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
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.
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:
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 [tí2] =
desact [fi2] = R , d2,d-i)
gen [/i,] = R}
desact [tí3j = RÍ
gen [tí,] = R } •
desact [tí,] = {dudJi
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]
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
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
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.
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.
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)
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
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
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
sa l[B ) = w ent [S ]\ (1 0 .1 1 )
.S u n s u c e -
*JCde H
C a d e n a s d e definición y uso
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.
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:
u s= y + z
w := u
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.
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-
(a) (b)
P ro p a g a c ió n d e co p ias
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:
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}
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
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
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 '’.
R e a liz a c ió n d e tr a s la d o d e c ó d ig o
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.
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
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
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:
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
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
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 .
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
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
t5 := a [ t 4]
if 15> v g o t o By
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
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.
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 . □
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
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 )
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
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.
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
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
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
Bx
B2
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
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.
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.
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?
u n o ( k , y)
end;
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:
donde
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
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. □
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 .
U s o d e la in fo rm ació n d e cam b io
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
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 ,
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
P ro fu n d id a d d e un g ra fo d e flu jo
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
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
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
G r a f o s de in te r v a lo s
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.
1 , . . . . 10
(b) (c) (d )
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.
(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
Qabctíf
T2
Regiones
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.
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.
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
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 .
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 */
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
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
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
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
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]
genRM = g en RxM
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.
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.
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
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.
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,
B lo q u e gen desact
A 100 010
B 0 1 0 101
C 000 0 1 0
D 001 000
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 ,
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
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 .
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.
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
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
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
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
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 .
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.
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(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
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\
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
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.
pA(vAp) = (pAv)Ap
p A V = VAp
pAp = p
p a r a to d a p. v y p en V.
TAp = p
p a ra to d a p e n V.
f ( X ) = C ,u (A r-A :,)
H X ) = G2 v ( X - K 2)
E n to n c e s
<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
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.
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 )
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
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
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.
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
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
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
a (a ) = noconst
C o n v e rg e n c ia d el a lg o ritm o 1 0 .18
Fig. 10.64. Grafo de flujo que exige que un camino cíclico se incluya en rsc.
A ju s te d e la ¡m etalización
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.
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.
i := a [ j ]
k := a [ i ]
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
x := f ( y )
U n s is te m a d e tip o s sencillo
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
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(x):= v ( x ) o {t }
v ( y ) : = v (y ) n ¡i(y ) para y / x
v (x ) : = v (x ) n {p | p = x (a ), x está en p ( f ) , y c está en p (y )}
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.
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)
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 lg o r itm o 1 0 .1 9 .
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
La p a s a d a h acia a tr á s es:
B,
p , = s a ! \ B x] = ent \B2]
B•
B,
p 4 = sal[B A\
a b c a b c
a b c a b c
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.
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.
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
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 ?
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 .
(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 '
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
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
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 .
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
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
T r a s la d o de código
s: a : = b + c
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
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
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
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
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).
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
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.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
* 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.
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:
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
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 .
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
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
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.
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 ?
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
A rra n q u e
F O
L N L N
ls S
M
M M
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
C 11 | 11
" " 1 C
li
Ll N L
M M
N
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 ?
L N L N
L N L L N N
L L M M
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 . □
( 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
0 O 6000 $ 6000*
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
trad: $(OBJS)
cc $ (OBJS ) -o trad
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. □
1 1 .4 P R U E B A S Y M A N T E N I M I E N T O
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
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
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
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
código fuente
código P
12.3 L O S C O M P IL A D O R E S P A R A C
________________________ 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
len g u a je e n sa m b la d o r
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
A= B(I) + C
)
+ c
código fuente
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.
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
12.5 E L C O M P I L A D O R B L I S S / 1 1
código fuente
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
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
A PEND ICE
Un proyecto
de programación
A .l IN T R O D U C C IO N
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
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.
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
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
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 ;
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
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
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.
le tra - * [a-zA-Z]
d í g i t o —* [ 0 - 9 ]
id - > le tr a ( le tr a | d íg ito )*
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 .
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
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
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
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
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
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
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
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
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