Está en la página 1de 806

Compiladores

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

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

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

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

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


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

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

PRIM ERA EDICIÓ N, 1990


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

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

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


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

CNIEM 1031

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


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

ISBN 968 444 333 1

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

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

CAPITULO 1

Introducción
a la compilación

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


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

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

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


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

program a program a
fu en te objeto

m en sajes
d e error

Fig. 1 .1 . U n com pilador.

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


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

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


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

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

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


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

posición +

velocidad 60

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


1.1 CO M PILADO RES 3

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


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

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


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

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

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


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

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


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

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


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

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

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


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

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

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


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

estru ctu ra del program a fu en te

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

i __________________

en sa m b la d o r

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

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

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


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

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

A n á lis is lé x ic o

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


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

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

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

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

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


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

A n á lis is sin tá ctico

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


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

proposición
de asignación

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

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

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


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

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

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

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


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

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


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

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

identijicador , : = expresión2

es u n a p "oposición.

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

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


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

son p rop o sicio nes.

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


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

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

(a) <b) 60

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


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

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


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

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

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


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

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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

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


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

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


en E Q N

a s u b ¡ i s u p 2}

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


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

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

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


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

program a fu en te

programa objeto

Fig. 1.9. Fases d e un com pilador.

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


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

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

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

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


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

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


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

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

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


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

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


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

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

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

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


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

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

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


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

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

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


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

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

id,
id .
id» 60

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

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

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

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

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

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

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

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


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

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

(a ) (b)

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

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


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

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

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


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

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

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


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

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


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

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

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


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

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

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


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

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

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

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


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

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


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

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

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


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

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

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


fu n c io n e s siguientes:

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


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

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


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

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


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

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


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

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

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


p ia m acro .

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


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

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

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

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


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

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

y se esp era q u e ap arezca

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


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

E n sa m b la d o r e s

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


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

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


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

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


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

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

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


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

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

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


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

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

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

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

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


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

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

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


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

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

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


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

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

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


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

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


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

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

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


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

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

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


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

P asadas

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


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

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


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

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

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


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

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


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

GOTO destino

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


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

destino: M O V algo, R1

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


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

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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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

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


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

CA PITU LO 2

Un compilador
sencillo
de una pasada

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


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

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

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


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

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


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

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

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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

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


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

lista -* lista + dígito (2.2)


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

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


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

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

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


los s ím b o lo s

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

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


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

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

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

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


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

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


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

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

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


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

lista

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

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

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


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

bloque - > b egin props.


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

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


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

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

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


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

X Y Z

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


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

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

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

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

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

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


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

lista - » lista + dígito

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


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

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


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

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


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

A m b igü ed a d

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

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


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

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

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


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

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

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

cadena cadena

cadena
l\
+ cadena
/l\
cadena - cadena

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

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

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

derecha -> letra = derecha \ letra


letra —* a

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


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

lista derecha

/l\ lista - d íg ito


/l\
letra = derecha

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

I I
d íg ito 5
I I b letra

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

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

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

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

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


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

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

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


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

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

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


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

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


térm in o / factor
fa ctor

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


tivos.

expr —> ex p r + térm ino


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

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


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

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


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

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


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

prop —> id s = expr


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

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


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

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

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

N o ta c ió n postfija

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


sigue:

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

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

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

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


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

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

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

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


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

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

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


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

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


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

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

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


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

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


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

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


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

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

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


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

expr.t 9 5 -2 +

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

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

I
térm ino.! - 9

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

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

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


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

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


la e n tra d a

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


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

(2.1)

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

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


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

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

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

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


sec.y = 0 in s trd y = 0

com ien za o e ste

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

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


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

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


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

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

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

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

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

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


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

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


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

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


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

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


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

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

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


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

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

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

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

resto

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

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

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


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

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

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


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

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

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


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

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

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

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


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

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


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

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


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

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

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


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

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


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

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

i’.xpr term ino


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

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

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


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

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

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


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

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


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

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

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


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

tipo -> sim p le


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

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

(a ) tipo

tipo
(b)
/ \
arra> sim ple tipo

le) arra\ tipo

num puntopunto núm

(d) arra) tipo

num puntopunto núm \ im p le

J*rra> ( sim ple J of tipo


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

¡nteger

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

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


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

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

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


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

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

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


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

A rbol de
tipo
A n á l is is

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

t ip o
A r bo l di

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

t ip o
A r b o i di

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

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


a derecha.

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

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


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

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

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


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

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

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

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


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

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


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

procedure parea (/: complex):


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

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

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

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

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

tipo sim ple (2.10)


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

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


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

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

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

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

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


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

prop -> b eg in propS-Opc end


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

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

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


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

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

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

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


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

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

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

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


p ro d u ccio n es.

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


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

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

R ecu rsiv id a d p or la izquierda

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


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

expr -> expr + térm ino

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

A -+ A a | (3

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

A R

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

(a) (b)

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

P o r e jem p lo , en

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

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


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

A P R
(2 .11)
R a R

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


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

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

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

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


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

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

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

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

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

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

/ \ 2

9 5

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


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

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


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

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


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

ex p r —>térm ino resto


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

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


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

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


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

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


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

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

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


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

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


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

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

expr térm in o resto


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

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


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

expr

term ino

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

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

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

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

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


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

expr()

(
término(); resto();

}
re sto ()

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

}
else ;

}
término()

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

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

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

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


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

O peración C P ascal

asignación = : =

prueba d e igualdad — 37

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

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


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

O p tim a c ió n d el traductor

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


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

resto()

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


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

}
else ;

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

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


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

while(l) prop

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

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

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

El program a completo

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


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

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

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


predicado isdigit */
int preanálisis;

main()

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

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

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

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


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

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


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

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

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


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

C o n sta n te s

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

31 + 2 8 + 59

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

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

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


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

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

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


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

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


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

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

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

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

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


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

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

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


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

|ee p asa el

carácter

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

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


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

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

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


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

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

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


2.6 ANALISIS LEXICO 59

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


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

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

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


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

# d e f i n e N U M 256

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

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

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


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

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

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

(1) #include < stdio.h>


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

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

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


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

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


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

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

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


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

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

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


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

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

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


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

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

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

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

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


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

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

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


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

M a triz ta b la sim b
aplex complex atributos

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

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


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

function análex : integer:


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

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


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

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

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


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

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

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

INSTRUCCIONRS P ila D atos

1
2
3
4
mete 5
valord
+
valord
2

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

3 cp
6

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

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


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

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

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


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

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

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


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

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

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


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

p t : = q t ;

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

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

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


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

inserta v inserta v en la pila


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

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

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


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

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


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

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

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

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

valori día mete 2


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

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

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

prop -> id := expr


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

F lu jo d e co n tro l

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


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

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


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

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


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

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


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

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

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


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

Ii W hile

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

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

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

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

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

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


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

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

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


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

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

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


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

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

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


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

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


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

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


fo rm a:

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

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

ex p r{ o r expr2

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

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

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

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

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


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

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

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


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

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


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

D escrip ció n del trad u c to r

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


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

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

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


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

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

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


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

e x p r e sio n e s in fijas

e x p r e sio n e s p ostfijas

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

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

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


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

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

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


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

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

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

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


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

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


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

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

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


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

inicio lisia eof


lista - * expr : lista

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

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

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

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

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

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

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


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

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

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


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

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

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

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

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

c c - c nom brearch . c

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

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

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

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

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

E l listad o

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


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

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

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


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

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


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

¿define NUM 256


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

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

int n u m l í n e a ;

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


de s í m b o l o s */
char *aplex;
int complex;

);
struct entrada tablasimb]]; /* tabla de símbolos */

/* * ** an a liz léx .c

¿include "global.h"

char b u f l e x ( T A M B U F F ] ;
int numlínea ■ 1;
int v a l c o m p l e x = NINGU N O ;

int a n á l e x () /* analizador léxico */

{
int t;
while(l) {
t * getchar();
it (t = " ¡ ¡ t = ’\ f )
; /* e l i m i n a e s p a c i o s e n b l a n c o */
e l s e if (t = = '\n')
n u m l í n e a = n u m l í n e a + 1;
2.9 R E U N IO N DE LAS TECNICAS 75

e l s e if (isdigit(t)) { /* t es un d í g i t o */
ungetc(t, st d i n ) ;
scanf("%d", & v a l c o m p l e x );
r e t u r n NUM;

}
e l s e if (isalpha(t)) ( /* t e s una letra */
int p, b = 0;
while (isalnum(t)) { /* t es alfanumérico */
buflex(b) = t;
t = getchar();
b = b + 1;
if (b >= T A M B U F F )
error("error del compilador");

}
b u f l e x [bJ = FDC;
if (t 1= EOF)
ungetc(t, st d i n ) ;
p = busca(buflex);
if (p = = 0)
p = inserta(buflex, ID);
valcomplex = p;
return tablasimb(pj.complex;

}
e l s e if (t = = EOF)
return FIN;
else {
v a l c o m p l e x = NING U N O ;
r e t u r n t;

1
)
}

/**** analizsint.c *****************************************/

#include "global.h"

int p r e a n á l i s i s ;

análsint() /* a n a l i z a s i n t á c t i c a m e n t e y t r a d u c e la l i s t a de
la e x p r e s i ó n */

{
preanálisis = análex();
while (preanálisis 1= F I N ) {
expr(); parea( V ) ;

}
}
76 l ' N C O M PIL A D O R SENCILLO D F U N A PASADA

e x p r ( )

{
int t;
t é r m i n o ( );
w h i l e (1 )
sw itc h ( p r e a n á lis is ) {
ca se V : case

t = p r e a n á lis is ;
parea (preanálisis); término(); emite(t, NINGUNO);
continúe;
default:
re t u r n ;

}
i

término()

(
int t;
f a c t o r ();
while(1 )
switch (preanálisis) {
case case c a s e DIV: c a s e MOD:
t = preanálisis;
parea (preanálisis); factor(); emite(t, NINGUNO)
continúe;
default:
return;

}
(

f a c t o r ()

{
s w i t c h ( p r e a n á l i s i s ) {
ca se '(':
p a r e a ('('); e x p r ( ) ; p a r e a (')'); b r e a k ;
c a s e NUM:
e m i t e (NUM, valcomplex); parea(NUM); break;
c a s e ID:
emite(ID, valcomplex); parea(ID); break;
default:
error("error de sintaxis");

}
)
p a r e a (t )
int t;

(
2.9 R E U N IO N D E LAS TECNICAS 77

if (preanálisis = t)
preanálisis = análex();
else error ("error de sintaxis");

}
/**** emisor.c *********************************************/

# include "global.h"

emite(t, tval) / * g e n e r a la s a l i d a */
int t, tval;

{
switch(t) {
case case case case
p r i n t f ("%c\n", t); break;
c a s e DIV:
p r i n t f ("DIV\n" ); break;
c a s e MOD:
p r i n t f ( "MOD\n" ) ; break;
c a s e NUM:
p r i n t f (" % d \ n " , t v a l ) ; break;
case ID:
p r i n t f (" % s \ n " , t a b l a s i m b [ t v a l } .a p l e x ); break;
default:
p r i n t f (" c o m p l e x %d, v a l c o m p l e x %d\n", t, tval);

}
}
/**** símbolos.c *******************************************/

# include "global.h"
^define MAXLEX 999 /* t a m a ñ o de la m a t r i z d e lexemas */
# d e f i n e MAXSIMB 100 /* tamaño de tablasimb */

char lexemas(MAXLEX];
int u l t c a r = -1; /* última posición usada en los l e x e m a s */
struct entrada t a b l a s i m b [ M A X S I M B ] ;
int ultent = 0 ; /* ú l t i m a p o s i c i ó n u s a d a e n t a b l a s i m b */

int busca(s) /* d e v u e l v e la p o s i c i ó n d e l e l e m e n t o de e n t r a d a
d e s */
c h a r s [];

{
int p;
for (p = u l t e n t ; p > 0 ; p = p - l )
if (s t r c m p ( t a b l a s i m b [ p ] . a p l e x , s) = = 0)
r e t u r n p;
return 0;
78 U N C O M PIL A D O R SENCILLO D E U N A PASADA

int i n s e r t a (s , c l e x ) /* devuelve la p o s i c i ó n d e l e l e m e n t o de
e n t r a d a d e s */
c h a r s (];
int clex;

¡
int Ion;
Ion = s t r l e n ( s ) ; /* strlen evalúa la l o n g i t u d d e s */
if (u l t e n t + 1 >= M A X S I M B )
e r r o r (" t a b l a d e símbolos llena " ) ;
if (u l t c a r + I o n + 1 >= M A X L E X )
e r r o r (" m a t r i z d e lexemas llena " ) ;
ultent = u l t e n t + 1;
t a b l a s i m b í u l t e n t ] . c o m p l e x = clex;
t a b l a s i m b [ u l t e n t ] .aplex = ¿¿lexemas (u l t c a r + 1 );
ultcar = ultcar + Ion + 1;
s t r c p y (t a b l a s i m b [ u l t e n t ] . a p l e x , s);
r e t u r n ul t e n t ;

/**** inic.c /

# include "global.h"

struct entrada palsclave(] = {


"div", DIV,
"mod", MOD,
0, 0

struct entrada *p;


for (p = p a l s c l a v e ; p->complex; p++)
i n s e r t a (p - > a p l e x , p - > c o m p l e x );

/**** error.c /

# include "global.h"

error(m) /* genera todos los m e n s a j e s d e e r r o r */


char *m;

i
f p r i n t f (s t d e r r , " l í n e a %d: %s\n", numlínea, m);
exit(l); /* t e r m i n a c i ó n s i n é x i t o */

)
EJERCICIOS 79

/**** principal.c ******************************************/

# include "global.h"

main()

{
inic( )t
a n á l s i n t ();
exit(O); /* t e r m i n a c i ó n c o n é x i t o */

) -

E JE R C IC IO S

2.1 C o n s id é re s e la g ra m á tic a in d e p e n d ie n te del c o n te x to

S - > S S + | S S * |a

a) D e m u é s tre s e c ó m o se p u e d e g e n e ra r la c a d e n a a a + a * c o n esta g ra m á tic a .


b) C o n s tru y a s e u n á rb o l d e a n álisis s in tá c tic o p a r a esta c a d e n a .
c) ¿ Q u é le n g u a je g e n e ra esta g ra m á tic a ? E x p liq ú e se la respuesta.

2 .2 ¿ Q u é len g u ajes g e n e r a n la s sig u ie n tes g ra m á tic a s? E n c a d a caso, e x p liq ú e s e la


respuesta.
a) S -* o S 1 o i
b) S - > + S .S - S S |a
c) S - > S ( S ) S | €
d) S - > a S b S \b S a S \ c
e) S - > a | 5 + 5 | 5 5 | 5 * | ( S )

2 3 ¿ C u á le s d e las g ra m á tic a s del e jercicio 2 .2 s o n a m b ig u a s?

2 .4 C o n stru y ase u n a g ra m á tic a in d e p e n d ie n te del c o n te x to n o a m b ig u a p a ra cada


u n o d e los len g u ajes siguientes. E n c a d a caso, d e m u é s tre s e q u e la g ra m á tic a
es co rrecta.
a ) E x p r e s io n e s a r it m é t ic a s d e n o t a c ió n p o s tfija .
b) L istas a so c ia tiv a s p o r la iz q u ie r d a d e id e n tific a d o re s s e p a ra d o s p o r co m as.
c) L istas a so c ia tiv a s p o r la d e r e c h a d e id e n tific a d o re s s e p a ra d o s p o r co m as.
d ) E x p re s io n e s a r itm é tic a s d e e n te r o s e id e n tific a d o re s c o n los c u a t r o o p e ra ­
d o re s b in a rio s +, *, / .
e) A ñ á d a n s e los o p e r a d o r e s m á s y m e n o s u n a rio s a los o p e r a d o r e s a r itm é ti­
cos d e (d).

* 2 .5 a) D e m u é s tre s e q u e to d a s las c a d e n a s b in a ria s g e n e r a d a s p o r la sig u ie n te g ra ­


m á tic a tie n e n v alo res d iv isib les p o r 3. Sugerencia : U tilícese in d u c c ió n so­
bre el n ú m e r o d e n o d o s e n u n á rb o l d e a n á lis is sin tá ctic o .

n ú m —» 11 | í o o i ! n ú m o | n ú m nú m
80 U N CO M PILADO R SENCILLO DE U N A PASADA

b) ¿ G e n e ra la g ra m á tic a to d a s las c a d e n a s b in a ria s c o n v alo res divisibles p o r 3?

2.6 C o n s tru y a s e u n a g ra m á tic a in d e p e n d ie n te del c o n te x to p a r a los n ú m e r o s r o ­


m a n o s.

2.7 C o n s tr ú y a s e un e s q u e m a d e tr a d u c c ió n d irig id a p o r la s in ta x is q u e tra d u z c a


e x p r e s io n e s a r itm é tic a s d e n o ta c ió n in flja a n o ta c ió n p re fija , e n la q u e u n
o p e r a d o r a p a re c e a n te s q u e s u s o p e ra n d o s ; p o r e je m p lo , - x y es la n o ta c ió n
prefija d e x —y . C o n s tru y a n s e á rb o le s d e a n álisis s in tá c tic o c o n a n o ta c io n e s
p a r a las e n tr a d a s 9 - 5 + 2 y 9 - 5 * 2 .

2.8 C o n s trú y a s e u n e s q u e m a d e tr a d u c c ió n d irig id a p o r la s in ta x is q u e tra d u z c a


e x p re s io n e s a r itm é tic a s d e n o ta c ió n p o stfija a n o ta c ió n infija. C o n s trú y a n s e
á r b o le s d e a n á lis is s in tá c tic o c o n a n o t a c i o n e s p a r a la s e n t r a d a s 9 5 - 2 * y
9 5 2 * -.
2 .9 C o n s trú y a s e u n e s q u e m a d e tr a d u c c ió n d irig id a p o r la sin ta x is q u e tra d u z c a
e n te ro s a n ú m e r o s ro m a n o s .

2 .1 0 C o n s tr ú y a s e u n e s q u e m a d e tr a d u c c ió n d irig id a p o r la s in ta x is q u e tra d u z c a
n ú m e r o s r o m a n o s a en tero s.
2.11 C o n s tr ú y a n s e lo s a n a liz a d o r e s s in tá c tic o s d e s c e n d e n te s re c u rs iv o s p a r a las
g ra m á tic a s del ejercicio 2 .2 a), b) y c).
2.12 C o n s trú y a s e u n tr a d u c to r d irig id o p o r la s in ta x is q u e c o m p r u e b e si to d o s los
p a ré n te sis d e u n a c a d e n a d e e n t r a d a e s tá n e q u ilib ra d o s d e m a n e r a a p ro p ia d a .
2 .1 3 L as s ig u ie n te s reglas d e fin e n la t r a d u c c ió n d e u n a p a la b r a e n in g lés al scu-
d o la tín :
a) Si la p a la b ra c o m ie n z a c o n u n a c a d e n a n o v acía d e c o n s o n a n te s , d e sp la z a r
la c a d e n a in icial d e c o n s o n a n te s al final d e la p a la b ra y a ñ a d i r el su fijo a y ;
p o r e je m p lo , p i g se c o n v ie r te e n i g p a y .
b) Si la p a la b ra c o m ie n z a c o n u n a v o cal, a ñ a d i r el su fijo y a y ; p o r e je m p lo ,
o w l se c o n v ie rte e n o w l y a y .
c) u d e s p u é s d e u n a Q es u n a c o n s o n a n te .
d ) Y al in ic io d e u n a p a la b ra es u n a vocal si n o v a s e g u id a d e u n a vocal.
e ) L as p a la b ra s d e u n a sola letra n o se m o d ific a n .

C o n s tr ú y a s e u n e s q u e m a d e tr a d u c c ió n d irig id a p o r la s in ta x is p a r a el seu-
d o latin .
2 .1 4 E n el le n g u a je d e p r o g ra m a c ió n C . la p ro p o s ic ió n fo r tie n e la fo rm a:
f o r ( e x p ry ; expr 2 ; e x p r y ) prop

La p r im e ra ex p resió n se ejecu ta a n te s del lazo; g e n e ra lm e n te se utiliza p a ra ini-


cializar el ín d ice del lazo. La seg u n d a expresión es u n a p ru e b a realizad a an tes
d e c a d a iteració n del lazo; se sale del lazo si la ex p resió n se co n v ie rte e n 0. El
ciclo en si m is m o consiste en u n a p ro p o sició n { prop cxpry \ }. L a tercera expre­
sión se ejecu ta al final d e c a d a iteració n ; p o r lo general, se usa p a r a in c re m e n ­
ta r el ín d ice del lazo. El significado d e la p ro p o sició n for es sim ila r a

e x p rx ; w h i l e ( expr2 ) { prop e x p r y ; [
EJERCICIOS D E P R O G R A M A C I O N 81

C o n s tr u y a s e u n e s q u e m a d e tr a d u c c ió n d irig id a p o r la sin ta x is p a ra tra d u c ir


p ro p o s ic io n e s fo r d e C al c ó d ig o d e la m á q u in a d e pila.

* 2 .1 5 C o n s id é re s e la sig u ien te p ro p o sic ió n for:

for / : = 1 s t e p 10 - j u n til 10 * j d o j : = j + I

S e p u e d e n d a r tres d efin ic io n e s s e m á n tic a s p a r a esta p ro p o s ic ió n . L a p rim e ra


es q u e el lim ite 10 * j y el in c re m e n to 10 - j d e b e n ser e v a lu a d o s u n a vez
a n te s del la z o c o m o e n P L /I . P o r e je m p lo , si j = 5 a n te s del lazo, h a b ría q u e
re c o rre r el lazo d ie z veces y se sald ría. E xiste u n s e g u n d o sig n ificad o, c o m p le ­
ta m e n te d istin to , c u a n d o es n ecesario e v a lu a r el lím ite y el in c r e m e n to c a d a
vez q u e se re c o rre el lazo. P o r e je m p lo , si j = 5 a n te s d e l lazo, el ciclo n o
te rm in a r ía n u n c a . U n te rc e r sig n ificad o e sta ría d e te r m in a d o p o r los len g u ajes
d e tip o A L G O L . C u a n d o el in c r e m e n to es n eg ativ o , la p r u e b a re a liz a d a para
la c o n c lu s ió n del lazo es /' < 10 * j , y n o / > 10 * j. P a ra c a d a u n a d e estas
tres d e fin ic io n e s se m á n tic a s , c o n s tru y a s e u n e s q u e m a d e tr a d u c c ió n dirigid a
p o r la sin ta x is p a r a tr a d u c ir esto s tres la zo s fo r al c ó d ig o d e la m á q u in a de
pila.

2 .1 6 C o n sid érese el siguiente fra g m e n to d e g ra m á tic a p a ra las p ro p o sicio n es if-then


e ¡f-th en -else:

prop —> if e x p r th e n prop


| i f e x p r th en prop e l s e prop
o tra s

d o n d e o t r a s re p re s e n ta a las d e m á s p ro p o s ic io n e s del lenguaje.


a ) D e m u é s tre s e q u e esta g ra m á tic a es a m b ig u a .
b) C o n s tru y a s e u n a g ra m á tic a n o a m b ig u a e q u iv a le n te q u e aso cie c a d a e l s e
c o n el th en sin e m p a r e ja r in m e d ia ta m e n te an te rio r.
c) C o n s tru y a s e u n e s q u e m a d e tr a d u c c ió n d irig id a p o r la sin ta x is b a s a d o en
esta g ra m á tic a p a ra tr a d u c ir p ro p o s ic io n e s c o n d ic io n a le s al c ó d ig o d e la
m á q u in a d e pila.

* 2 .1 7 C o n s tru y a s e u n e s q u e m a d e tr a d u c c ió n d irig id a p o r la s in ta x is q u e tra d u z c a


e x p re sio n e s a r itm é tic a s d e n o ta c ió n in fija a e x p re sio n e s a r itm é tic a s d e n o t a ­
c ió n in fija sin p a ré n te sis re d u n d a n te s . M u éstrese el árb o l d e a n álisis s in tá c ­
tico c o n a n o ta c io n e s p a r a la e n t r a d a ( ( ( 1 + 2 ) * ( 3 * 4 ) ) + 5 ) .

E JE R C IC IO S D E P R O G R A M A C IO N

P 2 .1 A p liq ú e se u n tr a d u c to r d e e n te ro s a n ú m e r o s r o m a n o s b a s a d o e n el e s q u e m a
d e tr a d u c c ió n d irig id a p o r la sin ta x is d e s a rro lla d o en el e jercicio 2.9.

P 2 .2 M o d ifiq ú e se el tr a d u c to r d e la secció n 2.9 c o n o b je to d e p r o d u c ir c o m o s a ­


lida u n c ó d ig o p a r a la m á q u in a d e p ila a b s tra c ta d e la secció n 2.8.

P 2 .3 M o d ifiq ú e se el m ó d u l o d e re c u p e ra c ió n d e e rro re s del tr a d u c to r d e la sección


2.9 p a r a s a lta r a la sig u ie n te e x p re s ió n d e e n t r a d a al e n c o n t r a r u n erro r.
82 U N C O M PIL A D O R SENCILLO DE U N A PASADA

P 2 .4 A m p líe s e el tr a d u c to r d e la secció n 2 .9 p a r a m a n e ja r to d a s la s e x p re s io n e s de
Pascal.

P 2 .5 A m p líe s e el c o m p i l a d o r d e la se c c ió n 2 .9 p a r a tr a d u c i r a c ó d ig o d e la m á ­
q u i n a d e pila las p ro p o s ic io n e s g e n e ra d a s p o r la g ra m á tic a siguiente:

prop - » id : = expr
I i f expr th e n prop
w hile e x p r d o prop
begin p ro p s-o p c end
p ro p s-o p c - > listd -p ro p s | €
lislu -p ro p s - » lista-props : prop | prop

* P 2 .6 C o n s tr u y a s e u n c o n j u n t o d e e x p re sio n e s d e p r u e b a p a r a el c o m p ila d o r d e la
secció n 2.9. d e m o d o q u e c a d a p ro d u c c ió n se use c o m o m í n i m o u n a v ez p a ra
o b te n e r a lg u n a ex p resió n d e p ru e b a . C o n s tru y a s e u n p ro g ra m a d e p ru e b a q u e
p u e d a s e r u tiliz a d o c o m o h e r r a m i e n ta g e n e ra l d e p r u e b a p a r a los c o m p i l a ­
d ores. U tilícese el p r o g r a m a d e p r u e b a p a r a e je c u ta r su c o m p ila d o r c o n esas
e x p re sio n e s d e p ru e b a .

P 2 .7 C o n s tr ú y a s e u n c o n ju n to d e p ro p o s ic io n e s d e p r u e b a p a r a el c o m p ila d o r del
ejercicio P2.5, d e m o d o q u e c a d a p ro d u c c ió n se use c o m o m í n i m o u n a vez
p a ra g e n e ra r a lg u n a s p ro p o sicio n es d e p ru e b a . U tilícese el p ro g ra m a d e p ru e b a
del ejercicio P2.6 para ejecutar el compilador con estas expresiones de prueba.

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

E ste c a p ítu lo p r e li m in a r h a c e r e fe re n c ia a d iv e rs o s t e m a s tr a t a d o s m á s d e t a lla d a ­


m e n te e n el resto del libro. E n los c a p ítu lo s q u e c o n tie n e n in f o r m a c ió n ad ic io n a l se
h a c e referen cia a la b ibliografía r e c o m e n d a d a .
C h o m s k y [1956] in tro d u jo las g ram á tica s in d e p e n d ie n te s del c o n te x to c o m o parte
d e u n e s tu d io so b re los le n g u a je s n a tu ra le s . S u u tiliz a c ió n p a r a esp ecificar la sin taxis
d e lo s le n g u a je s d e p r o g ra m a c ió n su rg ió in d e p e n d ie n te m e n te . M ie n tra s tr a b a ja b a en
u n b o r r a d o r d e A L G O L 6 0 . J o h n B acku s “ a d a p t ó d e in m e d ia to (las p ro d u c c io n e s
d e E m il Post] a ese uso** (W e x e lb la t [1 98 1 , pág. 162]). L a n o ta c ió n r e s u lta n te fue
u n a v a ria n te d e las g ra m á tic a s in d e p e n d ie n te s del c o n te x to . El ling ü ista P a n in i d i­
s e ñ ó u n a n o ta c ió n sin tá c tic a e q u iv a le n te p a r a esp ecificar las reglas d e la g ra m á tic a
del s á n s c rito d e e n tr e el 4 0 0 a. d e C. y el 20 0 a. d e C . ( I n g e r m a n [1967]).
E n u n a c a rta d e K n u th [1964], está c o n t e n id a la p ro p u e s ta d e q u e B N F , q u e co ­
m e n z ó c o m o a b re v ia tu r a d e B ackus N o rm a l F orm (fo rm a n o r m a l d e B ackus), se le­
yera B ackus-N aur F orm ( f o r m a d e B a c k u s -N a u r), p a ra re c o n o c e r las c o n trib u c io n e s
d e N a u r c o m o e d i to r del in fo rm e d e A L G O L 6 0 ( N a u r [1963]).
L as d e fin ic io n e s d irig id a s p o r la sin ta x is s o n u n a fo rm a d e d e fin ic ió n in d u c tiv a
e n la c u a l la in d u c c ió n se e n c u e n t r a e n la e s tr u c tu r a sin tá ctic a. C o m o tales, h a n sido
m u y u tiliz a d a s in f o r m a lm e n te e n m a te m á tic a s . S u a p lic a c ió n a los le n g u a je s d e p ro ­
g ra m a c ió n se in tr o d u jo c o n el u s o d e u n a g ra m á tic a p a r a e s tr u c tu r a r el in f o r m e de
A L G O L 6 0 . P o c o ti e m p o d esp u és. Iro n s [1961] c o n s tr u y ó u n c o m p ila d o r d irig ido
p o r la sintaxis.
N O T A S BIBLIOGRAFICAS 83

El a n á lis is s in tá c tic o d e s c e n d e n te r e c u r s iv o se u tiliz a a p r o x i m a d a m e n t e d e s d e


1960. B a u e r [ 19 7 6 ] a trib u y e el m é to d o a l.u c a s (1961 ]. H o a re [ 19 6 2 b . pág. 128] d e s ­
c rib e u n c o m p ila d o r d e A L G O L o rg a n iz a d o c o m o “ u n c o n j u n t o d e p ro c e d im ie n to s ,
c a d a u n o d e los cu ales p u e d e p r o c e s a r u n a d e las u n id a d e s s in tá c tic a s del in fo rm e
d e A L G O L 6 0 ”. F o s te r [1 9 6 8 ] a n a l iz a la e l im in a c ió n d e la r e c u r s iv id a d p o r la iz­
q u ie r d a d e las p ro d u c c io n e s c o n a c c io n e s s e m á n tic a s q u e n o a fe c te n a los v alo res d e
los a trib u to s.
M c C a r th y [1963] a b o g a b a p o r q u e la tr a d u c c ió n d e u n le n g u a je se b a s a ra e n u n a
sin ta x is a b s tra c ta . E n el m is m o a r tíc u lo , M c C a r th y (1 9 6 3 , pág. 24] d e ja b a “q u e el
le c to r se c o n v e n c ie ra p o r sí m is m o “d e q u e u n a fo rm u la c ió n re c u rsiv a p o r el final
d e la f u n c ió n facto rial es e q u iv a le n te a u n p r o g r a m a iterativ o .
L as v e n ta ja s d e d iv id ir u n c o m p ila d o r e n u n a e ta p a in icial y o tr a final se a n a li­
z a ro n e n u n in fo rm e d e c o m ité d e S tr o n g y c o la b o ra d o re s [1 958]. El in fo rm e a c u ñ ó
el té r m in o U N C O L (siglas, e n inglés, d e len g u aje o r ie n t a d o a u n c o m p u t a d o r u n i­
versal. universal Computer oriented language) p a r a u n len g u aje in te r m e d io u n iv ersal.
El c o n c e p to h a q u e d a d o c o m o u n ideal.
U n a b u e n a fo rm a d e a p r e n d e r té c n ic a s d e im p la n ta c ió n es le er el c ó d ig o d e los
c o m p ila d o re s ex isten tes. L a m e n ta b le m e n te , n o se su ele p u b lic a r el cód ig o. R an d ell
y R ussell [1 9 6 4 ] h a c e n u n a a m p lia d e s c rip c ió n d e u n o d e los p r im e r o s c o m p ila d o re s
d e A L G O L . El c ó d ig o d e c o m p ila d o r e s ta m b ié n e s t r a t a d o p o r M c K e e m a n . H o r-
n in g y W o r tm a n [ 1970]. B a rro n [ 1981 ], es u n c o n j u n t o d e a r tíc u lo s s o b re la im p la n ­
ta c ió n d e Pascal, q u e in c lu y e n o ta s so b re im p la n ta c ió n d is trib u id a s c o n el c o m p ila ­
d o r d e Pascal P (N o ri y c o la b o r a d o r e s [1981]), d e ta lle s d e la g e n e ra c ió n d e código
( A m m a n n [1 9 7 7 ]) y el c ó d ig o p a r a u n a im p la n ta c ió n d e P ascal S. u n s u b c o n ju n to
d e Pascal d is e ñ a d o p o r W ir th [1 9 8 1 ] p a r a el u s o d e e s tu d ia n te s . K n u th [1985] d a
u n a d escrip ció n e x c e p c io n a lm e n te c la ra y d e ta lla d a del t r a d u c t o r d e T e X .
K e rn ig h a n y P ike [1 9 8 4 ] d e s c rib e n e n d e ta lle c ó m o c o n s tr u ir u n p r o g r a m a d e
c a lc u la d o ra d e e sc rito rio a p a r ti r d e u n e s q u e m a d e tr a d u c c ió n d irig id a p o r la s in ­
taxis. u tiliz a n d o las h e r r a m ie n ta s p a r a la c o n s tr u c c ió n d e c o m p ila d o r e s d isp o n ib le s
en el s is te m a o p e r a tiv o U N I X . I-a e c u a c ió n (2 .1 7 ) está t o m a d a d e T a n t z e n [1963].
1851

C A P IT U L O 3

Análisis
léxico

E ste c a p ítu lo tr a ta so b re las té c n ic a s p a r a e s p e c ific a r e im p la n t a r a n a liz a d o r e s léxi­


cos. U n a fo rm a sen cilla d e c re a r u n a n a liz a d o r léx ico co n siste e n la c o n s tru c c ió n d e
u n d ia g ra m a q u e ilu stre la e s tru c tu ra d e los c o m p o n e n te s léxicos del lenguaje fuente,
y d e s p u é s h a c e r la tr a d u c c ió n “a m a n o " d e l d ia g ra m a a u n p r o g r a m a p a r a e n c o n tr a r
los c o m p o n e n te s léxicos. D e esta fo rm a , se p u e d e n p r o d u c ir a n a liz a d o re s léxicos efi­
cientes.
L as té c n ic a s u tiliz a d a s p a r a c o n s t r u i r a n a liz a d o r e s léx ico s ta m b ié n se p u e d e n
a p lic a r a o tra s áreas, c o m o , p o r e je m p lo , a le n g u a je s d e c o n s u lta y s is te m a s d e re­
c u p e ra c ió n d e in f o r m a c ió n . E n c a d a a p lic a c ió n , el p r o b le m a d e f o n d o es la especi­
ficació n y d is e ñ o d e p r o g r a m a s q u e e je c u te n las a c c io n e s a c tiv a d a s p o r p a tr o n e s
d e n t r o d e las c a d e n a s. C o m o la p r o g r a m a c ió n d irig id a p o r p a tro n e s es d e m u c h a u ti­
lidad, se in tr o d u c e u n le n g u a je d e p a tró n - a c c ió n , lla m a d o L E X . p a ra esp ecificar los
a n a liz a d o re s léxicos. E n este len g u aje, los p a tr o n e s se esp ecifican p o r m e d io d e ex­
p re sio n e s regulares, y u n c o m p ila d o r d e L E X p u e d e g e n e ra r u n r e c o n o c e d o r d e las
e x p re sio n e s reg u lares m e d ia n te u n a u t ó m a t a fin ito eficiente.
O tr o s len g u ajes u tiliz an e x p re s io n e s reg u la re s p a r a d e s c rib ir p a tro n e s . P o r e je m ­
plo , el len g u aje a n a liz a d o r d e p a tr o n e s A W K u tiliz a e x p re sio n e s reg u la re s p a r a se­
le c c io n a r las lín e a s d e la e n t r a d a q u e se h a n d e p ro cesar, y el shell del s is te m a U N I X
p e rm ite al u s u a rio referirse a u n c o n j u n t o d e n o m b r e s d e a rc h iv o m e d ia n te la escri­
tu r a d e u n a e x p re sió n regular. L a in s tr u c c ió n rm * . o d e U N I X , p o r e je m p lo , b o rra
to d o s los a rc h iv o s c u y o s n o m b r e s t e r m i n e n e n “ . o " 1.
U n a h e r r a m ie n ta d e softw are q u e a u t o m a ti z a la c o n s tru c c ió n d e a n a liz a d o re s lé­
x ic o s p e rm ite q u e p e rs o n a s c o n d ife re n te s c o n o c im ie n to s utilicen la c o n c o rd a n c ia
d e p a tro n e s e n s u s p ro p ia s á re a s d e a p lic a c ió n . P o r e je m p lo , J a r v is [1 9 7 6 ] u tiliz ó un
g e n e r a d o r d e a n a liz a d o re s léx ico s p a r a c re a r u n p r o g r a m a q u e r e c o n o c e im p e rfe c ­
c io n e s e n ta rjetas d e c irc u ito s im p re s o s. L o s c irc u ito s se e x a m in a n d ig ita lm e n te y se
tr a n s f o r m a n e n “cadenas** d e s e g m e n to s d e recta a d is tin to s á n g u lo s. El “a n a liz a d o r
lé x ic o " b u sc a p a tro n e s c o r r e s p o n d ie n te s a im p e rfe c c io n e s e n la c a d e n a d e s e g m e n ­
to s d e recta. L a g ra n v e n ta ja d e u n g e n e r a d o r d e a n a liz a d o re s léxicos es q u e p u e d e

1 La e x p r e sió n * . o e s u n a v a ria n te d e la n o ta c ió n u su a l para la s e x p r e s io n e s regu lares. E n lo s ejer­


c ic io s 3 .1 0 y 3 .1 4 so m e n c io n a n a lg u n a s v a r ia n te s d e u s o c o m ú n d e la s n o ta c io n e s d e la s e x p r esio n es
regulares.
86 ANALISIS LEXICO

u tiliz ar los a lg o ritm o s m á s c o n o c id o s d e c o n c o r d a n c ia d e p a tro n e s, c o n lo c u a l crea


a n a liz a d o re s léxicos efic ien te s p a r a los n o esp ecialistas e n d ic h a s técnicas.

3.1 F U N C I O N D E L A N A L I Z A D O R L E X I C O

El a n a liz a d o r léxico es la p r im e ra fase d e u n c o m p ila d o r. Su p rin cip al fu n c ió n c o n ­


siste e n leer los c a ra c te re s d e e n t r a d a y e la b o r a r c o m o salid a u n a se c u e n c ia d e c o m ­
p o n e n te s léxicos q u e u tiliza el a n a liz a d o r s in tá c tic o p a r a h a c e r el análisis. E sta in­
te ra c c ió n . e s q u e m a tiz a d a e n la figura 3 .1 , su ele a p licarse c o n v irtie n d o al a n a liz a d o r
léxico en u n a s u b r u tin a o c o r r u tin a del a n a liz a d o r sin tá ctic o . R e c ib id a la o rd e n “ob-
té n el sig u ie n te c o m p o n e n te léxico'* del a n a liz a d o r s in tá c tic o , el a n a liz a d o r léxico
lee los c a ra c te re s d e e n tr a d a h asta q u e p u e d a id e n tific a r el sig u ien te c o m p o n e n t e lé­
xico.

Fig. 3.1. Interacción d e un an alizado r léxico co n el an alizado r sintáctico.

C o m o el a n a liz a d o r léxico e s la p a rte del c o m p ila d o r q u e lee el te x to fu e n te , ta m ­


bién p u e d e rea liz a r c ie rta s f u n c io n e s s e c u n d a r ia s e n la in te rfa z d e l u s u a rio , c o m o
e lim in a r del p ro g ra m a f u e n te c o m e n ta r io s y e sp a c io s e n b la n c o en f o r m a d e c a ra c ­
teres d e e s p a c io e n b la n c o , c a ra c te re s T A B y d e lín ea n u e v a . O t r a fu n c ió n e s relacio ­
n a r los m e n sa je s d e e r r o r d e l c o m p ila d o r c o n el p r o g r a m a fu e n te . P o r e je m p lo , el
a n a liz a d o r léxico p u e d e te n e r lo c a liz a d o el n ú m e r o d e c a ra c te re s d e n u e v a lín e a d e ­
tectados. d e m o d o q u e se p u e d a aso ciar u n n ú m e r o d e línea c o n u n m e n saje d e error.
E n algu i o s c o m p ila d o re s , el a n a liz a d o r léx ico se e n c a rg a d e h a c e r u n a c o p ia d e l p ro ­
g ra m a fu e n te e n el q u e e s tá n m a rc a d o s los m e n s a je s d e e rro r. Si el le n g u a je fu en te
es la a s e d e a lg u n a s fu n c io n e s d e p r e p r o c e s a m ie n to d e m a c ro s . e n to n c e s esas fu n ­
c io n e s del p re p ro c e s a d o r ta m b ié n se p u e d e n a p lic a r al h a c e r el a n álisis léxico.
E n a lg u n a s o casio n es, lo s a n a liz a d o re s léxicos se d iv id e n e n u n a c a s c a d a d e dos
fases; la p r im e ra , lla m a d a ‘" e x a m e n " , y la seg u n d a, “a n álisis léxico” . El e x a m in a d o r
se en carg a d e rea liz a r ta re a s sencillas, m ie n tr a s q u e el a n a liz a d o r léxico e s el q u e rea­
liza las o p e r a c i o n e s m á s c o m p le ja s . P o r e j e m p lo , u n c o m p i l a d o r d e F O R T R A N
•uede u tiliz ar u n e x a m in a d o r p a r a e lim in a r e sp a c io s e n b la n c o d e la e n tra d a .

A sp e c to s del a n á lis is léxico


H a y v arias r a z o n e s p a r a d iv id ir la fase d e a n álisis d e la c o m p ila c ió n en análisis
léxico y a n álisis sin táctico.
3.1 F U N C IO N DEL A N A L IZ A D O R LEXICO 87

1. U n d is e ñ o se n c illo es q u iz á la c o n s id e ra c ió n m á s im p o r ta n te . S e p a ra r el análisis
léxico del a n álisis s in tá c tic o a m e n u d o p e r m ite s im p lific a r u n a u o tr a d e d ic h a s
fases. P o r e je m p lo , u n a n a liz a d o r s in tá c tic o q u e in clu y a las c o n v e n c io n e s d e los
c o m e n ta r io s y esp acio s e n b la n c o es b a s ta n te m á s c o m p le jo q u e u n o q u e p u e d a
c o m p r o b a r si los c o m e n ta r io s y e sp a c io s e n b la n c o ya h a n sid o e lim in a d o s p o r
el a n a liz a d o r léxico. Si se está d is e ñ a n d o u n len g u aje n u e v o , la s e p a r a c ió n d e las
c o n v e n c io n e s léxicas d e las s in tá c tic a s p u e d e d a r o rig en a u n d is e ñ o del len g u aje
m á s claro.
2. S e m e jo r a la efic ien cia del c o m p ila d o r. U n a n a liz a d o r léxico in d e p e n d ie n te p e r­
m ite c o n s tr u ir u n p ro c e s a d o r esp e c ia liz a d o y p o tc n c ia lm c n tc m á s e fic ien te p a ra
esta fu n c ió n . G r a n p a rte d e tie m p o se c o n s u m e en leer el p r o g r a m a f u e n te y d i­
v id irlo e n c o m p o n e n te s léxicos. C o n té c n ic a s e sp ecializ ad as d e m a n e jo d e bu -
ffe rs p a r a la le c tu ra d e c a ra c te re s d e e n tr a d a y p r o c e s a m ie n to d e c o m p o n e n te s
léxicos se p u e d e m e jo r a r s ig n ific a tiv a m e n te el r e n d im ie n to d e u n c o m p ila d o r.
3. Se m e jo ra la tra n s p o r ta b iü d a d del c o m p ila d o r. L as p e c u lia rid a d e s del alfa b e to
d e e n t r a d a y o tra s a n o m a lía s p ro p ia s d e los d is p o s itiv o s p u e d e n lim ita rs e al a n a ­
liz a d o r léxico. L a re p re s e n ta c ió n d e s ím b o lo s especiales o n o e s tá n d a r, c o m o t
e n P ascal, p u e d e n ser a isla d a s e n el a n a liz a d o r léxico.
S e h a n d is e ñ a d o h e r r a m ie n ta s e sp ecializ ad as q u e a y u d a n a a u to m a tiz a r la c o n s ­
tru c c ió n d e a n a liz a d o re s léxicos y a n a liz a d o re s s in tá c tic o s c u a n d o e s tá n sep arad o s.
E n este lib ro se tr a ta r á n a lg u n o s e je m p lo s d e estas h e rra m ie n ta s .

C o m p o n e n t e s lé x ic o s , p a tr o n e s y le x e m a s

C u a n d o se m e n c io n a el a n á lis is s in tá c tic o , los t é r m i n o s “c o m p o n e n t e lé x ic o " (to-


k e n ), “ p a t r ó n ” y “ le x e m a " se e m p le a n c o n sig n ificad o s específicos. E n la fig u ra 3.2
a p a re c e n e je m p lo s d e d ic h o s usos. E n g en eral, h a y u n c o n j u n t o d e c a d e n a s e n la e n ­
tra d a p a r a el c u a l se p r o d u c e c o m o salid a el m i s m o c o m p o n e n te léxico. E ste c o n ­
j u n t o d e c a d e n a s se d e sc rib e m e d ia n te u n a regla lla m a d a pairan a s o c ia d o al c o m ­
p o n e n t e léxico. S e d ic e q u e el p a tró n concuerda c o n c a d a c a d e n a del c o n ju n to . U n
le x e m a es u n a s e c u e n c ia d e c a ra c te re s en el p r o g r a m a fu e n te c o n la q u e c o n c u e r d a
el p a tró n p a r a u n c o m p o n e n te léxico. P o r e je m p lo , e n la p ro p o sic ió n d e Pascal

const pi = 3.1416;

la s u b e a d e n a p i e s u n le x e m a p a r a el c o m p o n e n te léx ico “ id e n tific a d o r”.

C o m ponente
Le x e m a s d e Eje m pl o D e s c r ip c ió n I n f o r m a i d e i P a t r ó n
L é x ic o

eo n st const const
if if if
re la ció n <, <=. =, O , >, >= < o <= 0 = 0 0 0 > = 0 >
id pi, cuenta, D2 letra seguida de letras y dígitos
núm 3. 1 4 1 6 , 0, 6.02E23 cualquier constante numérica
lite r a l "vaci a d o d e m e m o r i a " cualquier carácter entre " y excepto "

Fig. 3 . 2 . E je m p lo s d e c o m p o n e n t e s léxicos.
88 ANALISIS LEXICO

L o s c o m p o n e n te s léxicos se tr a ta n c o m o s ím b o lo s te rm in a le s d e la g ra m á tic a del


len g u aje fu en te , c o n n o m b r e s en n e g r ita s p a r a rep resen ta rlo s. L os le x e m a s p a r a el
c o m p o n e n te léxico q u e c o n c u e r d a n c o n el p a tró n re p re s e n ta n c a d e n a s d e carac teres
e n el p ro g ra m a fu e n te q u e se p u e d e n t r a t a r j u n t o s c o m o u n a u n id a d léxica.
E n la m a y o ría d e los le n g u a je s d e p r o g ra m a c ió n , se c o n s id e ra n c o m p o n e n te s lé­
x ic o s las sig u ie n tes c o n stru c c io n e s: p a la b ra s clave, o p e ra d o re s , id e n tific a d o re s, c o n s ­
ta n te s . c a d e n a s literales y signos d e p u n tu a c ió n , c o m o parén tesis, c o m a y p u n t o y
c o m a . E n el e je m p lo a n te r io r , c u a n d o la s e c u e n c ia d e c a ra c te re s p i a p a re c e en el
p r o g r a m a fu en te , se d e v u e lv e al a n a liz a d o r s in tá c tic o u n c o m p o n e n te léx ico q u e re­
p re s e n ta u n id e n tific a d o r. L a d e v o lu c ió n d e u n c o m p o n e n te léxico a m e n u d o se re a ­
liza m e d ia n te el p a s o d e u n n ú m e r o e n te r o c o r r e s p o n d ie n te al c o m p o n e n te léxico.
E ste e n te r o es al q u e h a c e referen cia el id en n e g r ita s d e la figura 3.2.
U n p a tró n es u n a regla q u e d e sc rib e el c o n j u n t o d e le x em as q u e p u e d e n r e p re ­
s e n ta r a u n d e te r m in a d o c o m p o n e n te léxico e n los p ro g ra m a s fu en te . E l p a t r ó n p a ra
el c o m p o n e n te léxico c o n s t d e la figura 3.2 es s im p le m e n te la c a d e n a sen cilla c o n s t
q u e d e le tre a la p a la b ra clave. El p a tró n p a r a el c o m p o n e n te léxico r e la c ió n es el c o n ­
j u n t o d e los seis o p e r a d o r e s relació n ales d e P ascal. P a ra d e s c rib ir c o n precisió n los
p a tro n e s p a r a c o m p o n e n te s léxicos m á s c o m p le jo s, c o m o id ( p a ra id e n tific a d o r) y
núni ( p a ra n ú m e ro ) , se u tiliz a rá la n o ta c ió n d e e x p re sio n e s reg u lares d e s a rro lla d a en
la secció n 3.3.
C ie rta s c o n v e n c io n e s del le n g u a je se reflejan e n la d ific u lta d d e l a n álisis léxico.
A lg u n o s lenguajes, c o m o F O R T R A N , exigen q u e c i e ñ a s c o n s tru c c io n e s a p a re z c a n
e n posiciones fijas e n la línea d e e n tra d a . P o r ta n to , la a lin eació n d e u n lexem a pued e
ser i m p o r ia n te p a r a d e te r m in a r si u n p r o g r a m a f u e n te es o n o c o rre c to . E n el d iseñ o
d e le n g u a je s m o d e r n o s se tie n d e a la e n t r a d a in d e p e n d ie n t e d e l f o r m a to , p e r m i ­
tie n d o la co lo c a c ió n d e las c o n s tru c c io n e s e n c u a lq u ie r p a r te d e la lin ea d e e n tra d a ,
d e m o d o q u e este a s p e c to del a n álisis léxico está p e r d ie n d o im p o r ta n c ia .
El tr a ta m ie n to d e los esp acio s e n b la n c o v aría m u c h o d e u n le n g u a je a o tr o . En
a lg u n o s lenguajes, c o m o F O R T R A N o A L G O L 6 8 . los e sp a c io s e n b la n c o n o son
significativos, e x c e p to en las c a d e n a s literales, y se p u e d e n a ñ a d i r a v o lu n ta d para
m e jo r a r la legibilidad d e u n p ro g ra m a . I-as c o n v e n c io n e s rela tiv as a los e sp a c io s en
b la n c o p u e d e n c o m p lic a r m u c h o la ta re a d e id e n tific a r los c o m p o n e n te s léxicos.
U n e je m p lo b a s ta n te c o n o c id o q u e ilu stra la d ific u lta d p o te n c ia l de re c o n o c e r
los c o m p o n e n te s léxicos e s la p ro p o s ic ió n d o d e F O R T R A N . E n la p ro p o sic ió n

DO 5 I = 1 .2 5

n o se p u e d e s a b e r h asta v e r el p u n t o d e c im a l si do es u n a p a la b ra clave, o es m ás
b ie n p a rte del id e n tific a d o r D 0 5 I . P o r o tr o la d o , e n la p ro p o sició n

DO 5 I = 1 , 2 5

hay siete c o m p o n e n te s léxicos, q u e c o rre s p o n d e n a la p a la b ra clave DO. la e tiq u e ta


d e p ro p o s ic ió n 5 . el id e n tific a d o r I , el o p e r a d o r =, la c o n s ta n te 1, la c o m a y la c o n s ­
ta n te 2 5 . A q u í, n o se p u e d e e s ta r seg u ro h a s ta e n c o n t r a r la c o m a si DO es u n a p a la ­
b ra clave. P a r a s o lv e n ta r esta in c e r tid u m b r e , F O R T R A N 77 p e r m i te in c lu ir u n a
c o m a o p c io n a l e n tr e la e tiq u e ta y el ín d ic e d e la p ro p o s ic ió n DO. S e r e c o m ie n d a el
u s o d e esta c o m a p o r q u e a y u d a a h a c e r m á s c la ra y legible la p ro p o sic ió n DO.
3.1 FU N C IO N DEL A N ALIZADO R LEXICO 89

E n m u c h o s lenguajes, c ie rta s c a d e n a s s o n reservadas ; es d ecir, su sig n ificad o está


p re d e f in id o y el u s u a r io n o lo p u e d e m o d if ic a r . Si las p a la b r a s c lav e n o s o n reser­
v a d a s, e n to n c e s el a n a l i z a d o r lé x ic o d e b e d is tin g u ir e n t r e u n a p a la b r a c la v e y un
id e n tific a d o r d e fin id o p o r el u s u a rio . E n P L /I , las p a la b ra s clave n o s o n reservadas,
p o r lo q u e las reglas p a r a d is tin g u ir las p a la b ra s clave d e lo s id e n tific a d o re s son bas­
ta n te c o m p lic a d a s , c o m o ilustra la sig u ie n te p ro p o s ic ió n d e P L /I:

IF T H E N T H E N T H E N = ELSE; ELSE ELSE = THEN;

A trib u to s d e los c o m p o n e n te s léxicos

C u a n d o c o n c u e r d a c o n u n le x e m a m á s d e u n p a tró n , el a n a liz a d o r léxico d e b e p ro ­


p o r c io n a r in fo rm a c ió n a d ic io n a l so b re el le x e m a c o n c r e to q u e c o n c o r d ó c o n las si­
g u ie n te s fases del c o m p ila d o r . P o r e je m p lo , el p a tró n n ú m c o n c u e r d a c o n la s c a d e ­
n a s 0 y 1, p e ro es in d isp e n sa b le q u e el g e n e r a d o r d e c ó d ig o c o n o z c a q u é c a d e n a fue
re a lm e n te la q u e se e m p a re jó .
El a n a l iz a d o r léx ico reco g e i n f o r m a c ió n s o b r e los c o m p o n e n t e s léx ico s e n sus
a tr ib u to s aso ciad o s. L o s c o m p o n e n te s léx ico s in flu y e n e n las d ecisio n es del análisis
s in tá c tic o , y los a trib u to s , e n la tr a d u c c ió n d e los c o m p o n e n te s léxicos. E n la p r á c ­
tica, los c o m p o n e n te s léxicos su elen te n e r u n so lo a tr ib u to — u n a p u n t a d o r a la e n ­
tra d a d e la ta b la d e s ím b o lo s d o n d e se g u a r d a la in f o r m a c ió n s o b re el c o m p o n e n te
léxico; el a p u n t a d o r se c o n v ie rte en el a tr ib u to del c o m p o n e n te léxico. A efecto s d e
d ia g n ó stico , p u e d e c o n s id e ra rs e t a n t o el le x e m a p a r a u n id e n tific a d o r c o m o el n ú ­
m e r o d e lin e a en el q u e éste se e n c o n t r ó p o r p r im e ra vez. E stos d o s e le m e n to s d e
in fo rm a c ió n se p u e d e n a lm a c e n a r e n la e n t r a d a d e la ta b la d e s ím b o lo s p a r a el id e n ­
tificad o r.

E jem p lo 3 .1 . L o s c o m p o n e n te s léx ico s y los v alo res de a tr i b u to s a s o c ia d o s p a r a la


p ro p o sic ió n d e F O R T R A N .

E = M * C ** 2

se e sc rib e n a c o n tin u a c ió n c o m o u n a se c u e n c ia d e parejas:

c i d . a p u n t a d o r a la e n t r a d a d e la ta b la d e s ím b o lo s p a r a E >
c o p _ a s ig n .>
c i d . a p u n t a d o r a la e n tr a d a d e la ta b la d e s ím b o lo s p a r a M>
c o p _ m u lt.>
c i d . a p u n t a d o r a la e n t r a d a d e la ta b la d e s ím b o lo s p a ra C >
C o p _ e x p .>
c n ú m . v a lo r e n t e r o 2 >

O bsérvese q u e en c ie rta s p a re ja s n o se n ecesita u n v a lo r d e a tr ib u to ; el p r im e r c o m ­


p o n e n te es suficiente para id en tificar el lexem a. E n este p e q u e ñ o e jem p lo , se h a d a d o
al c o m p o n e n te léxico n ú m u n a t r i b u t o d e v a lo r e n te ro . El c o m p ila d o r p u e d e a l m a ­
c e n a r la c a d e n a d e c a ra c te re s q u e fo rm a u n n u m e r o e n u n a ta b la d e s ím b o lo s y d e ­
j a r q u e el a trib u to del c o m p o n e n te léxico n ú m sea u n a p u n t a d o r a la e n t r a d a d e la
tabla.
90 \\M ISIS I E X ICO

E r r o r e s léxicos

S o n p o c o s los e rro re s q u e se p u e d e n d e te c ta r s im p le m e n te e n el nivel léxico p o r q u e


u n a n a l iz a d o r léx ico tie n e u n a v isió n m u y r e s tr in g id a d e u n p r o g r a m a fu e n te . Si
a p a re c e la c a d e n a f i p o r p r im e ra v ez e n u n p r o g r a m a e n C e n el c o n te x to

fi ( a =** f ( x ) ) ...

u n a n a liz a d o r léxico n o p u e d e d is tin g u ir si f i es u n e r r o r d e e s c ritu ra d e la p a la b ra


c lav e i f o si es u n id e n tific a d o r d e f u n c ió n n o d e c la ra d o . C o m o f i e s u n identifi-
c a d o r válido, el a n a liz a d o r léxico d e b e d e v o lv e r el c o m p o n e n te léxico d e u n id en ti-
fic a d o r y d e ja r q u e a lg u n a o tr a fase del c o m p ila d o r se o c u p e d e los erro res.
P ero , s u p ó n g a s e q u e su rg e u n a situ a c ió n e n la q u e el a n a liz a d o r léxico n o p u e d e
c o n t i n u a r p o r q u e n i n g u n o d e los p a tr o n e s c o n c u e r d a c o n u n p re fijo d e la e n tra d a
re sta n te . T a l vez la estrateg ia d e re c u p e ra c ió n m á s sen cilla sea la re c u p e ra c ió n en
“ m o d o d e p á n ic o " . Se b o r r a n c a ra c te re s su cesiv o s d e la e n tr a d a re s ta n te h a s ta q u e
el a n a liz a d o r léxico p u e d a e n c o n t r a r u n c o m p o n e n te léx ico b ie n fo rm a d o . E sta té c ­
n ic a d e re c u p e ra c ió n p u e d e c o n f u n d ir e n o c a s io n e s al a n a liz a d o r s in tá c tic o , p e r o en
u n a m b ie n te d e c o m p u ta c ió n in te ra c tiv o p u e d e re s u lta r b a s ta n te a d e c u a d a .
O tr a s p o sib les a c c io n e s d e re c u p e ra c ió n d e e rro re s son:

1. b o r r a r u n c a r á c te r e x tra ñ o
2. in s e rta r u n c a rá c te r q u e falta
3. r e e m p la z a r u n c a r á c te r in c o rre c to p o r o t r o c o rre c to
4. in te r c a m b ia r d o s c a ra c te re s a d y a c e n te s.

Se p u e d e p r o b a r este tip o d e tr a n s f o r m a c io n e s d e e r r o r p a r a in te n ta r r e p a ra r la
e n t r a d a . L a m á s s e n c illa d e ta le s e s tr a te g ia s c o n s is te e n o b s e r v a r si u n p re fijo d e
la e n t r a d a r e s ta n te se p u e d e t r a n s f o r m a r e n u n le x e m a v á lid o m e d i a n t e u n a sola
tr a n s fo rm a c ió n d e erro r. E sta estrateg ia d a p o r s u p u e s to q u e la m a y o ría d e los e r r o ­
re s léx ico s se d e b e n a u n a so la tr a n s f o r m a c ió n d e e r r o r , s u p o s ic ió n q u e n o r m a l ­
m e n te . p e ro n o s ie m p re , se c u m p le e n la p ráctica.
U n a fo rm a d e e n c o n t r a r los e rro re s en u n p r o g r a m a co n siste en c a lc u la r el n ú ­
m e r o m í n i m o d e tr a n s f o rm a c io n e s n ecesarias p a r a tr a n s f o r m a r el p r o g r a m a e rró n e o
e n o t r o q u e e s té s i n t á c t i c a m e n t e b ie n c o n s t r u i d o . S e d ic e q u e el p r o g r a m a e r r ó ­
n e o tie n e k e rro re s c u a n d o la se c u e n c ia m á s c o r ta d e tr a n s f o r m a c io n e s d e e r r o r q u e
lo tr a n s f o r m a r á e n alg ú n p r o g r a m a v álid o tie n e la lo n g itu d k. L a c o rre c c ió n d e e r r o ­
re s d e d is ta n c ia m í n i m a e s u n c rite rio te ó ric o a p ro p ia d o , p e ro n o se su ele u sa r e n la
p ra c tic a p o r q u e su a p lic a c ió n e s d e m a s ia d o co sto sa. S in e m b a rg o , a lg u n o s c o m p i­
lad o res e x p e rim e n ta le s h a n e m p le a d o el c rite rio d e la d is ta n c ia m í n im a p a r a h a c e r
c o rre c c io n e s locales.

3 .2 M A N E J O D E L O S B V F F E R S D E E N T R A D A

E sta secció n tr a ta a lg u n o s a s p e c to s d e la efic ien cia re la c io n a d o s c o n el m a n e jo de


los buffers d e e n tr a d a . P r im e r o se m e n c io n a u n e s q u e m a d e d o s buffers d e e n tr a d a
q u e re su lta útil c u a n d o es n e c e sa rio u n p rean álisis e n la e n tr a d a p a r a id e n tific a r los
c o m p o n e n te s léxicos. D e s p u é s se in tr o d u c e n a lg u n a s té c n ic a s ú tiles p a r a a u m e n t a r
3.2 M A N E J O D E LOS BUFFERS DE ENTRADA 91

la v e lo c id a d del a n a liz a d o r léxico, c o m o el uso d e “c e n tin e la s " q u e sirv en p a r a m a r ­


c a r el final d e l buffer.
H ay tres m é to d o s g e n e ra le s d e im p la n ta c ió n d e u n a n a liz a d o r léxico.

1. U tiliz a r u n g e n e r a d o r d e a n a liz a d o re s léxicos, c o m o el c o m p ila d o r L E X d e la


secció n 3.5, p a r a p r o d u c ir el a n a liz a d o r léx ico a p a r tir d e u n a esp ecificació n b a­
sa d a e n e x p resio n es regulares. E n este caso, el g e n e ra d o r p ro p o r c io n a ru tin a s para
leer la e n t r a d a y m a n e ja r la c o n buffers.

2. E sc rib ir el a n a liz a d o r léx ico e n u n le n g u a je c o n v e n c io n a l d e p r o g r a m a c ió n d e


siste m a s, u tiliz a n d o las p o s ib ilid a d e s d e e n t r a d a y salid a d e este le n g u a je p a ra
leer la e n tra d a .

3. E sc rib ir el a n a liz a d o r léxico e n le n g u a je e n s a m b la d o r y m a n e ja r e x p líc ita m e n te


la le c tu ra d e la e n tra d a .

L as tr e s o p c io n e s se re la c io n a n e n o r d e n d e d if ic u lta d c r e c ie n te p a r a el e n c a r ­
g a d o de la im p la n ta c ió n . L a m e n ta b le m e n te , los e n fo q u e s m ás difíciles d e im p la n ta r,
m u c h a s veces d a n c o m o re s u lta d o a n a liz a d o re s léx ico s m á s rá p id o s . C o m o el a n a ­
liz a d o r léxico e s la ú n ic a fase del c o m p ila d o r q u e lee el p r o g r a m a fu e n te c a r á c te r a
c a rá c te r, e s p o s ib le q u e se c o n s u m a m u c h o ti e m p o en la fase d e a n álisis léxico, a u n ­
q u e las fases p o s te rio re s se a n c o n c e p tu a l m e n te m á s c o m p le ja s . A sí, la v e lo c id a d del
a n álisis léxico s u p o n e u n p r o b le m a e n el d is e ñ o d e c o m p ila d o re s . A u n q u e la m a y o r
p a rte del c a p ítu lo está d e d ic a d o al p r i m e r m é to d o , el d is e ñ o y uso d e u n g e n e r a d o r
a u t o m á t i c o , ta m b ié n se c o n s id e r a n té c n ic a s ú tile s e n el d is e ñ o m a n u a l . E n la sec­
c ió n 3 .4 se e s tu d ia n los d ia g ra m a s d e tra n s ic io n e s , u n c o n c e p to útil p a r a la o r g a n i­
z a c ió n d e u n a n a liz a d o r léxico d is e ñ a d o a m a n o .

P a re ja s de buffers

E n m u c h o s le n g u a je s f u e n te h a y v e c e s e n q u e el a n a l i z a d o r lé x ic o n e c e s ita p re -
a n a liz a r v a rio s c arac teres, a d e m á s del le x e m a p a r a u n p a tró n , a n te s d e p o d e r a n u n ­
c ia r u n a c o n c o r d a n c ia . L os a n a liz a d o re s léx ico s del c a p ítu lo 2 u tiliz a ro n la fu n c ió n
ú n g e t e p a ra re in s e rta r c a ra c te re s p re a n a liz a d o s e n la c a d e n a d e e n t r a d a . C o m o se
p u e d e c o n s u m ir m u c h o ti e m p o m o v ie n d o c a ra c te re s , se h a n d e s a rro lla d o té c n ic a s
e sp ecializ ad as e n el m a n e jo d e buffers p a ra re d u c ir el n ú m e r o d e o p e r a c io n e s n e c e ­
sa ria s p a r a p ro c e s a r u n c a r á c te r d e e n tr a d a . Se p u e d e n e m p le a r m u c h o s e s q u e m a s
d e m a n e jo d e buffers . p e ro , c o m o las té c n ic a s d e p e n d e n en c ie r to m o d o d e los p a ­
r á m e tr o s d e l sistem a, a q u í ta n só lo se s e ñ a la rá n los p rin c ip io s q u e h a y d e trá s d e u n a
clase d e esq u em a s.
S e u tiliz a u n buffer d iv id id o e n d o s m ita d e s d e N c a ra c te re s c a d a u n a . tal c o m o
se in d ic a en la fig u ra 3.3. P o r lo g en eral. N e s el n ú m e r o d e c a ra c te re s e n u n b lo q u e
d e d isc o , p o r e je m p lo , 1024 ó 4 0 9 6 .
S e leen N c a ra c te re s d e e n tr a d a e n c a d a m ita d del buffer c o n u n a o r d e n d e lec­
tu r a d e s is te m a , e n vez d e in v o c a r u n a in s tr u c c ió n d e le c tu ra p a r a c a d a c a r á c te r d e
e n tr a d a . Si q u e d a n m e n o s d e N c a ra c te re s e n la e n tr a d a , e n to n c e s se lee u n c a rá c te r
esp ecial e o f e n el buffer d e s p u é s d e los c a ra c te re s d e e n tr a d a , c o m o e n la figura 3.3.
E s d ecir, e o f m a rc a el final del a rc h iv o f u e n te y es d is tin to a c u a lq u ie r c a r á c te r d e la
e n tra d a .
92 ANALISIS LEXICO

E = M * C ‘* * ; 2 eof

T— í -----------------------
delantero
com ienzo Je x e m a

F ig . 3 .3 . U n b u l l ir d e e n t r a d a e n d o s m it a d e s .

Se m a n tie n e n d o s a p u n ta d o r e s al huffer d e e n tra d a . L a c a d e n a d e c a ra c te re s e n ­


tr e lo s d o s a p u n t a d o r e s es el le x e m a e n c u r s o . AI p r in c i p io , lo s d o s a p u n t a d o r e s
a p u n ta n al p r im e r c a rá c te r del p r ó x im o le x e m a q u e hay q u e e n c o n tra r. U n o d e ellos,
lla m a d o a p u n t a d o r d e la n te ro , e x a m in a h acia a d e la n te h asta e n c o n t r a r u n a c o n c o r ­
d a n c ia c o n u n p a tró n . U n a vez d e t e r m in a d o el sig u ie n te le x e m a , el a p u n t a d o r d e ­
la n te ro se c o lo c a e n el c a r á c te r d e su e x tr e m o d e re c h o . D e s p u é s d e h a b e r p ro c e s a d o
el le x e m a . a m b o s a p u n t a d o r e s se c o lo c a n e n el c a r á c te r s itu a d o i n m e d i a t a m e n t e
d e s p u é s d e l le x e m a . C o n este e s q u e m a , se p u e d e n c o n s id e r a r los c o m e n ta r io s y los
e sp a c io s e n b la n c o c o m o p a tro n e s q u e n o p r o d u c e n c o m p o n e n te s léxicos.
C u a n d o el a p u n t a d o r d e la n te r o está a p u n t o d e s o b re p a s a r p o r la m a r c a in te r­
m e d ia d e l huffer. se lle n a la m i t a d d e r e c h a c o n N n u e v o s c a r a c te r e s d e e n t r a d a .
C u a n d o el a p u n t a d o r d e la n te r o está a p u n t o d e s o b re p a s a r el e x tr e m o d e r e c h o del
huffer. se llen a la m ita d iz q u ie rd a c o n A' n u e v o s c a ra c te re s d e e n t r a d a y el a p u n t a d o r
d e la n te r o se regresa al p r in c ip io del huffer.
E ste e s q u e m a d e m a n e jo d e buffers casi s ie m p re f u n c io n a m u y b ie n , p e r o lim ita
la c a n tid a d d e c a ra c te re s d e preanálisis, y esto p u e d e im p o s ib ilita r el r e c o n o c im ie n to
d e los c o m p o n e n te s léx ico s c u a n d o la d is ta n c ia re c o rrid a p o r el a p u n t a d o r d e la n te r o
sea m a y o r q u e la lo n g itu d del huffer. P o r e je m p lo , si se e n c u e n tr a

DECLARE ( A R G 1 , ARG2, . . . , ARG ti )


e n u n p r o g r a m a d e P L /I , n o s e p u e d e d e t e r m i n a r si d e c l a r e e s u n a p a l a b r a c l a v e
o u n n o m b r e d e a rre g lo h a s ta v e r el c a r á c te r q u e sig u e al p a r é n te s is d e r e c h o . En
c u a l q u i e r c a s o , el l e x e m a t e r m i n a e n la s e g u n d a E, p e r o la c a n t i d a d d e p r e a n á l i s i s
necesaria es p ro p o rc io n a l al n ú m e r o d e a r g u m e n to s , q u e , e n p rin cip io , es ilim itado.

¡f delantero está al final de la p rim era m itad then begin


recargar la segunda m itad;
delantero : = delantero + 1
end
else if delantero está al final de la segunda m itad then begin
recargar la p rim era m itad;
pasar delantero al principio d e la p rim era m itad
end
else delantero : = delantero + 1;

Fig. 3.4. C ódigo para av an za r el a p u n ta d o r delantero.


3.2 M A N E J O D E LOS BUFFERS DE E N T R A D A 93

C e n tin e la s

Si se u tiliz a el e s q u e m a d e la fig u ra 3.3 tal c o m o se h a e x p u e sto , c a d a v ez q u e se


m u e v a el a p u n t a d o r d e la n te r o se d e b e c o m p r o b a r si se h a salid o d e u n a m ita d del
buffer, si así o c u r r ie r a se d e b e r á re c a rg a r la o t r a m ita d . E s d ecir, el c ó d ig o p a r a h a c e r
a v a n z a r el a p u n t a d o r d e l a n t e r o re a liz a p r u e b a s c o m o las q u e se m u e s t r a n e n la
figura 3.4.
E x ce p to e n los e x tre m o s d e las m ita d e s del buffer, el c ó d ig o d e la figura 3.4 n e ­
cesita d o s p r u e b a s p a r a c a d a a v a n c e del a p u n t a d o r d e la n te r o . Se p u e d e n r e d u c ir es­
ta s d o s p r u e b a s a u n a si se a m p lia c a d a m ita d del buffer p a r a a d m iti r u n c a rá c te r
centinela al final. E l c e n tin e la es u n c a r á c te r especial q u e n o p u e d e s e r p a rte del p ro ­
g r a m a fu en te . U n a elecció n n a tu ra l e s e o f (fin d e a rc h iv o , e n inglés): en la figura 3.5
se m u e s tra la m is m a d isp o sic ió n d e buffer q u e la fig u ra 3.3. a ñ a d id o s los c en tin elas.

~e ~: “ m : * :eofl c : * : » : 2 eof ; : :eof|


------------------------- t ----------------------------------------------

| delantero
comienzo-lexema

Fig. 3.5. C en tin elas al final d e cada m itad del buffer.

C o n la d isp o sició n d e la figura 3 .5 , se p u e d e u tiliz a r el c ó d ig o d e la figura 3.6


p a r a h a c e r a v a n z a r el a p u n t a d o r d e la n te r o (y d e t e r m in a r el final del a rc h iv o fuente).
E n la m a y o ría d e las o c a s io n e s el c ó d ig o realiza sólo u n a p r u e b a p a r a v e r si ciclan-
tero a p u n t a h a c ia u n c a rá c te r eof. S ó lo se re a liz a n m á s p r u e b a s c u a n d o se a lc a n z a el
final d e u n a m ita d del buffer o el fin al d e l a rc h iv o . C o m o se e n c u e n t r a n A carac teres
d e e n tr a d a e n tre los s ím b o lo s eof, el p r o m e d io d e p r u e b a s p o r c a d a c a r á c te r d e e n ­
tr a d a es p r ó x im o a 1.

delantero : = delantero + 1;
if delantero t = eof th e n begin
if delantero qstá al final d e la p rim era m itad th e n begin
recargar la segunda m itad;
delantero : = delantero + 1
end
else if delantero está al final de la segunda m itad then begin
recargar la p rim era m itad:
pasar delantero al principio de la prim era m itad
end
else / * e o f d e n tro d e un buffer significa el final de la e n tra d a */
te rm in a r el análisis léxico
end

F ig. 3 .6 . C ó d ig o d e preanálisis c o n cen tin ela s.


94 A N A L ISIS LEXICO

T a m b ié n h a y q u e d e c id ir c ó m o p ro c e s a r el c a r á c te r e x a m in a d o p o r el a p u n t a d o r
d e la n te ro ; ¿ m a r c a el fin d e u n c o m p o n e n te léxico?, ¿ re p re s e n ta u n a v a n c e p a r a la
b ú s q u e d a d e d e te r m in a d a p a la b r a clave?, ¿o q u é h a c e ? U n a f o r m a d e e s tr u c tu r a r es­
ta s p r u e b a s es u tiliz a r u n a p ro p o s ic ió n c a s e , si e x iste e n el len g u aje d e im p la n ta c ió n .
L a p ru e b a

i f delantero í = e o f

se p u e d e im p la n t a r e n to n c e s c o m o u n o d e los d is tin to s casos.

33 E S P E C IF IC A C IO N D E L O S C O M P O N E N T E S L E X IC O S

L as e x p r e s io n e s r e g u la re s s o n u n a n o ta c ió n i m p o r t a n t e p a r a e s p e c ific a r p a tro n e s .
C a d a p a t r ó n c o n c u e r d a c o n u n a serie d e c a d e n a s , d e m o d o q u e las e x p re sio n e s re­
g u la re s se rv irá n c o m o n o m b r e s p a r a c o n j u n to s d e c a d e n a s. L a secció n 3 .5 a m p lía
esta n o ta c ió n a u n le n g u a je d irig id o p o r p a tro n e s p a r a el a n á lis is léxico.

C a d e n a s y le n g u a je s

El té r m in o alfabeto o clase d e carácter d e n o t a c u a lq u ie r c o n j u n t o fin ito d e s ím b o ­


los. E je m p lo s típ ic o s d e s ím b o lo s s o n las le tra s y lo s caracteres. El c o n j u n t o ( o , 1)
es el alfabeto binario. L o s c ó d ig o s A S C II y E B C D IC s o n d o s e je m p lo s d e alfa b eto s
d e c o m p u ta d o r .
U n a cadena so b re a lg ú n a lfa b e to es u n a s e c u e n c ia fin ita d e s ím b o lo s t o m a d o s de
ese a lfa b e to . E n te o ría del len g u aje, lo s té r m in o s fra se y palabra a m e n u d o se utili­
z a n c o m o s in ó n im o s d e l t é r m i n o “c a d e n a " L a lo n g itu d d e u n a c a d e n a s, q u e suele
escrib irse |s|, e s el n ú m e r o d e a p a ric io n e s d e s ím b o lo s e n s. P o r e je m p lo , c a m i n o es
u n a c a d e n a d e lo n g itu d seis. L a c a d e n a vacia , re p re s e n ta d a p o r € , e s u n a c a d e n a
esp ecial d e lo n g itu d c e ro . E n la fig u ra 3.7 se reco g en a lg u n o s té r m in o s c o m u n e s aso­
c ia d o s c o n la s p a rte s d e u n a c a d e n a .
El té r m in o lenguaje se refiere a c u a lq u ie r c o n j u n t o d e c a d e n a s d e u n alfa b e to
fijo. E sta d e fin ic ió n e s m u y a m p lia , y a b a r c a le n g u a je s a b s tra c to s c o m o 0 , el c o n ­
j u n t o vacio, o {c } y el c o n j u n t o q u e s ó l o c o n t i e n e la c a d e n a v a c ía , a s i c o m o al
c o n j u n t o d e to d o s los p ro g r a m a s d e Pascal s in tá c tic a m e n te b ie n f o r m a d o s y el c o n ­
j u n t o d e to d a s las o r a c io n e s e n inglés g r a m a tic a lm e n te co rre c ta s, a u n q u e los d o s úl­
tim o s c o n j u n to s s o n m u c h o m á s dificiles d e especificar. O b sérv ese ta m b ié n q u e esta
d e fin ic ió n n o a trib u y e n in g ú n sig n ificad o a las c a d e n a s d e u n lenguaje. L o s m é to d o s
p a ra a s ig n a r sig n ificad o s a las c a d e n a s se e s tu d ia n e n el c a p ítu lo 5.
Si .v e y s o n c a d e n a s, e n to n c e s la concatenación d e a e y , q u e se e sc rib e x y , es la
c a d e n a q u e re su lta d e ag reg ar y a x . P o r e je m p lo , si x = c a z a e y = f o r t u n a s ,
e n to n c e s x y = c a z a f o r t u n a s . L a c a d e n a v acía es el e le m e n to id e n tid a d q u e se
c o n c a te n a . E s d e c ir. = c s - s.
C u a n d o se c o n s id e ra la c o n c a te n a c ió n c o m o u n “ p r o d u c to " , c a b e d e fin ir la “ cx-
p o n e n c ia c ió n " d e c a d e n a s d e la sig u ie n te m a n e r a . S e d e fin e c o m o € , y p a r a /> ( )
se d efin e V c o m o V 1s . D a d o q u e e.v e s .v, .v1 = s. E n to n ces, . r = ss%s~ - sss. etcétera.
3.3 ESPECIFICACION D E LOS C O M P O N E N T E S LEXICO S 95

T é r m in o D efinición

U n a cad e n a q u e se o b tien e e lim in a n d o cero o m ás sím bolos


prefijo d e s desde la d erech a de la cadena s: por ejem plo, b a n es u n prefijo
de b an d era.

U n a cad e n a q u e se fo rm a su p rim ien d o cero o m ás sím bolos


sufijo d e s desde la izquierda d e u n a cad e n a s\ por ejem plo, e r a es u n su­
fijo d e b a n d e r a .

U n a cadena q u e se o b tien e su p rim ien d o un prefijo y un sufijo


d e s: por ejem plo, a n d e es u n a su beadena de b a n d e r a . T o d o
subeadena d e .v prefijo y sufijo d e s es u n a cad e n a d e v, p e ro n o to d a su b e a ­
d e n a de 5 es un prefijo o u n sufijo d e s. P ara to d a cad e n a s,
ta n to s c o m o € son prefijos, sufijos y subeadenas de s.

prefijo, sufijo o C u alq u ier cad e n a no vacía x que sea, respectivam ente, u n pre­
su beadena propios d e s fijo, sufijo o subeadena d e s tal q u e s # x.

C u alq u ier cad e n a fo rm ad a m ediante la elim inación de cero o


subsecuencia d e s m ás sím bolos no necesariam ente co n tig u o s a .v; por ejem plo,
b a d a es u n a subsecuencia d e b a n d e r a .

Fig. 3.7. T é rm in o s de p artes d e u n a cadena.

O p e ra c io n e s a p lic a d a s a len g u ajes

H ay v a ria s o p e ra c io n e s im p o r ta n te s q u e se p u e d e n a p lic a r a los lenguajes. P a r a el


a n álisis léxico, in te re s a n p r in c ip a lm e n te la u n ió n , la c o n c a te n a c ió n y la c e rra d u ra ,
d efin id as en la fig u ra 3.8. T a m b ié n se p u e d e e x te n d e r el o p e r a d o r d e “e x p o n e n c ia -
c ió n " a lo s len g u ajes d e f in ie n d o L ° c o m o {c}, y L ' c o m o L ' 'L . P o r ta n to , L ' es L
c o n c a te n a d o co n sig o m is m o i — I veces.

E je m p lo 3 .2 S ea L el c o n j u n t o ¡A, B, . . . , Z , a , b , . . . , z ¡ y D el
c o n j u n t o {0, 1 , . . . , 9). S e p u e d e n c o n s id e r a r L y D d e d o s m a n e ra s : /„,
c o m o el a lf a b e to q u e c o n t i e n e el c o n j u n t o d e le tr a s m a y ú s c u l a s y m i n ú s c u la s , y
P , c o m o el a lfa b e to q u e c o n tie n e el c o n j u n t o d e los d ie z d íg ito s d e c im a le s. Se p u e d e
d a r el caso, p u e s to q u e u n s ím b o lo p u e d e s e r c o n s id e r a d o c o m o u n a c a d e n a d e lo n ­
g itu d u n o . d e q u e L y D se a n los d o s le n g u a je s fin itos. L os sig u ie n te s s o n a lg u n o s
e je m p lo s d e n u e v o s len g u ajes c r e a d o s a p a r tir d e L y D m e d ia n te la a p lic a c ió n d e
los o p e ra d o re s d e fin id o s en la figura 3.8.

1. L U D es el c o n j u n t o d e le tra s y dígitos.
2. L D es el c o n ju n to d e c a d e n a s q u e c o n s ta d e u n a letra s e g u id a d e u n dígito.

3. L 4 es el c o n j u n t o d e to d a s las c a d e n a s d e c u a t r o letras.

4. L * es el c o n j u n t o d e to d a s las c a d e n a s d e letras, in c l u y e n d o c , la c a d e n a vacía.


96 ANALISIS LEXICO

O p e r a c ió n D e f in ic ió n

unión d e L y M. q u e se
L U M = { s | s está en ¿ o s está e n M }
escribe L U M

concatenación d e L y M.
L M = { st | s e s t á e n L y t está e n M ¡
q u e se escrib e L M
CéS

cerradura de Kleene d e /.. I * = u /-'


#-0
q u e se escrib e L*
L* d e n o t a “c e r o o m á s c o n c a t e n a c i o n e s d e ” L.

cerradura positiva d e L. L* = U U
/-i
q u e se escrib e /. *
/ . ’ d e n o t a “ u n a o m á s c o n c a t e n a c i o n e s d e ” L.

Fig. 3.8. D efiniciones d e operaciones sobre lenguajes.

5. L ( L U D)* es el c o n j u n t o d e to d a s las c a d e n a s d e letras y d íg ito s q u e c o m ie n z a n


c o n u n a letra.

6. /)* es el c o n j u n t o d e to d a s las c a d e n a s d e u n o o m á s d íg ito s. □

E x p r e s io n e s r e g u la r e s

E n P ascal, u n id e n tific a d o r e s u n a le tra seg u id a d e c e r o o m á s letras o díg ito s; es


d ecir, u n id e n tific a d o r es u n m i e m b r o d e l c o n j u n t o d e f in id o e n el a p a r ta d o 5 del
e je m p lo 3.2. E n esta sección, se p r e s e n ta u n a n o ta c ió n , lla m a d a e x p re s io n e s reg u la­
res. q u e p e r m ite d e f in ir d e m a n e r a p recisa c o n j u n to s c o m o éste. C o n esta n o ta c ió n ,
se p u e d e n d e f in ir los id e n tific a d o re s d e P ascal c o m o

letra ( letra | d íg ito ) *

L a b a r r a vertical a q u í sig n ifica “o ” , lo s p a ré n te sis se u sa n p a r a a g r u p a r su bexp resio -


nes. el a sterisc o significa “c e ro o m á s c aso s d•e ” la e x p re sió n e n tr e p arén tesis, y la
y u x ta p o sic ió n d e letra c o n el resto d e la e x p re sió n sig n ifica c o n c a te n a c ió n .
U n a e x p re sió n re g u la r se c o n s tr u y e a p a r ti r d e e x p re sio n e s reg u lares m á s sim p les
u tiliz a n d o u n c o n j u n t o d e reglas d e fin ito ria s. C a d a e x p re sió n re g u la r r r e p re s e n ta un
len g u aje L(r). L as reglas d e d e fin ic ió n esp ecifican c ó m o se f o r m a L(r) c o m b in a n d o
d e v arias m a n e r a s lo s len g u ajes re p r e s e n ta d o s p o r las s u b e x p re s io n e s d e r.
L as sig u ie n tes s o n las reglas q u e d e fin e n las expresiones regulares d e l alfabeto
A so c iad a a c a d a regla h a y u n a esp ecificació n del le n g u a je re p r e s e n ta d o p o r la e x p re ­
sió n reg u lar q u e se está d e fin ie n d o .

1. € e s u n a e x p re sió n re g u la r d e s ig n a d a p o r je}: es d ecir, el c o n j u n t o q u e c o n tie n e


la c a d e n a vacia.

2. Si a es un s ím b o lo d e e n to n c e s a e s u n a e x p re s ió n re g u la r d e sig n a d a p o r {¿i};
p o r e je m p lo , e l c o n j u n t o q u e c o n tie n e la c a d e n a a. A u n q u e se usa la m is m a no ­
ta c ió n p a r a las tres, té c n ic a m e n te , la e x p re sió n re g u la r a es d is tin ta d e la c a d e n a
3.3 ESPECIFICACION D E LOS C O M P O N E N T E S LEXICO S 97

a o del s ím b o lo a. El c o n te x to a c la r a r á si se h a b la d e a c o m o e x p re s ió n regular,
c a d e n a o sím b o lo .

3. S u p o n ie n d o q u e r y s se a n e x p re s io n e s regu lares re p r e s e n ta d a s p o r los len g u ajes


L (r) y L ( j), en to n ces.

a) (r) | (s) e s u n a e x p re s ió n re g u la r re p re s e n ta d a p o r L(r) U L(s).


b) (rK v) e s u n a e x p re s ió n re g u la r re p re s e n ta d a p o r L(r)L(s).
c) (r)* es u n a e x p re sió n re g u la r re p re s e n ta d a p o r ( L (r ))*.
d) (z) e s u n a e x p re s ió n re g u la r re p r e s e n ta d a p o r L(r).2

Se dice q u e u n len g u aje d e sig n a d o p o r u n a ex p resió n reg u lar es u n conjunto regular.


L a esp ecificació n d e u n a e x p re s ió n re g u la r e s u n e je m p lo d e d e fin ic ió n recursiva.
L as reglas 1 y 2 s o n la base d e la d e fin ic ió n ; se u s a el té r m in o sím b o lo básico p a ra
referirse a € o a un s ím b o lo d e 2 Que a p a r e z c a n e n u n a e x p re s ió n regular. L a regla
3 p r o p o r c io n a el p a so in d u c tiv o .
Se p u e d e n e v i ta r los p a r é n te s is in n e c e s a r io s e n la s e x p r e s io n e s re g u la re s si se
a d o p t a n las c o n v e n c io n e s :

1. el o p e r a d o r u n a r io * tien e la m a y o r p re c e d e n c ia y e s a s o c ia tiv o p o r la iz q u ie rd a .
2. la c o n c a te n a c ió n tie n e la s e g u n d a m a y o r p re c e d e n c ia y es a s o c ia tiv a p o r la iz­
q u ie rd a .
3. i tie n e la m e n o r p re c e d e n c ia y es a s o c ia tiv o p o r la izq u ierd a.
#
S eg ú n estas c o n v e n c io n e s , (a) | ((¿>)*(c)) es e q u iv a le n te a a\b*c. E sta s d o s e x p resio n es
d e sig n a n el c o n j u n t o d e c a d e n a s q u e tie n e n u n a so la a . o c e r o o m á s b seg u id as d e
u n a c.

E je m p lo 3 .3 S ea y = {a, b).

1. La e x p re sió n re g u la r a \ b d esig n a el c o n j u n t o {a , />}.

2. j
La e x p re sió n re g u la r ( a b)(a | b) se in d ic a c o n {aa. ab, ba , bb}%el c o n j u n t o de
to d a s las c a d e n a s d e a y b d e lo n g itu d dos. O tr a ex p resió n regular p a r a este m ism o
c o n j u n t o e s a a | ab \ ba \ bb.

3. L a e x p re s ió n re g u la r a* d e s ig n a el c o n j u n t o d e to d a s las c a d e n a s d e c e r o o m ás
a , p o r e je m p lo , (c, a , aa , a a a }.

4. L a e x p re sió n re g u la r (a | b)* d e s ig n a el c o n j u n t o d e to d a s las c a d e n a s q u e c o n ­


tie n e n c e r o o m á s c aso s d e u n a a o b. es d ecir, el c o n j u n t o d e to d a s las c a d e n a s
d e a y h. O tr a e x p re s ió n re g u la r p a r a este c o n j u n t o es (a* b*)*.

5. L a e x p re sió n re g u la r a | a*b d e s ig n a el c o n j u n t o q u e c o n tie n e la c a d e n a a y to ­


d a s las q u e se c o m p o n e n d e c e r o o m á s a seg u id as d e u n a b. □

Si d o s e x p re sio n e s reg u la re s r y s re p re s e n ta n al m is m o len g u aje, se d ic e q u e r y


s s o n equivalentes y se escrib e r = s. P o r e je m p lo , ( a \ b ) = {b \ a).

: Esta regla e sta b le c e q u e . si s e d e se a , s e p u e d e n p o n e r p a res d e p a r é n tesis a d ic io n a le s e n to r n o a las


e x p r e sio n e s regulares.
98 ANALISIS LEXICO

------------------
A x io m a D e s c r ip c ió n

r \ s = .«| r e s c o n m u t a t iv o

r |( . v |/ ) = (r | s ) 1 1 e s a s o c ia tiv o

(rs)l = r(sl) la c o n c a t e n a c ió n e s a s o c ia tiv a

r(.y 11 ) = rs ri
la c o n c a t e n a c ió n d is tr ib u y e so b r e
(.y | t)r = sr tr
€r = r
e e s el e l e m e n t o id e n tid a d p ara la c o n c a t e n a c ió n
re = r
r* = (r | 0 * la r e la c ió n e n tr e * y e
r** = r* * e s id e m p o t e n t e

Fig. 3.9. Propiedades algebraicas d e las expresiones regulares.

S o n v a ria s las leyes alg eb raicas q u e o b e d e c e n las e x p re sio n e s reg u la re s y p u e d e n


ser u tiliz ad as p a r a tr a n s f o r m a r las e x p re s io n e s regu lares a f o r m a s e q u iv a le n te s. E n
la figura 3 .9 se m u e s tr a n a lg u n a s leyes alg eb raicas q u e se c u m p le n p a r a las ex p resio ­
nes reg u lares r, s y /.

D efin icio nes reg u la re s

P o r c o n v e n ie n c ia d e n o ta c ió n , p u e d e s e r d eseab le d a r n o m b r e s a la s e x p re sio n e s re­


g u la re s y d e f in ir e x p r e s io n e s re g u la re s u tiliz a n d o d ic h o s n o m b r e s c o m o si fu eran
sím b o lo s. Si 2 es u n alfa b e to d e s ím b o lo s básicos, e n to n c e s u n a definición regular
e s u n a se c u e n c ia d e d e fin ic io n e s d e la fo rm a

d\ - > r,
d 2 -> r2

d o n d e c a d a d, e s u n n o m b r e d is tin to , y c a d a r, e s u n a e x p re s ió n re g u la r so b re los
s ím b o lo s d e 2 U {í/i, ¿ 2, . . . , d¡-\}> p o r e je m p lo , los s ím b o lo s b ásico s y los n o m b r e s
p r e v ia m e n te d e fin id o s. A l lim ita r c a d a r, a los s ím b o lo s d e 2 y a l ° s n o m b r e s pre­
v ia m e n te d e fin id o s, se p u e d e c o n s tr u ir u n a e x p re sió n re g u la r e n 2 p a r a c u a lq u ie r r„
r e e m p la z a n d o u n a y o t r a vez los n o m b r e s d e las e x p re sio n e s reg ulares p o r las e x p re ­
s io n e s q u e d e sig n a n . Si r, u tiliz a ra d, p a r a a l g u n a /, e n to n c e s r¡ se p o d r ía d e fin ir
re c u rs iv a m e n te y este p ro c e s o d e s u s titu c ió n n o te n d r ía fin.
P a ra d is tin g u ir los n o m b r e s d e los s ím b o lo s , se im p r im e n e n n e g rita s los n o m ­
b re s d e las d e fin ic io n e s regulares.

E je m p lo 3 .4 . C o m o y a se estab leció a n te s, el c o n j u n t o d e id e n tific a d o re s d e Pascal


es el c o n j u n t o d e c a d e n a s d e le tra s y d íg ito s q u e e m p ie z a n c o n u n a letra. A c o n ti­
n u a c ió n se d a u n a d e fin ic ió n re g u la r p a r a este c o n ju n to .
3.3 ESPECIFICACION D E LOS C O M P O N E N T E S LEXICO S 99

le t r a A B • • • Z a | b . . . |
d íg ito - > 0 1 • • • 9
id —> le tr a ( e t r a 1 d í g i t o )*

E je m p lo 3 .5 . L o s n ú m e r o s s in sig n o e n P ascal s o n c a d e n a s, c o m o 5 2 8 0 , 3 9 . 3 7 ,
6 . 3 3 6 E 4 , o 1 . 8 9 4 E - 4 . L a sig u ie n te d e fin ic ió n re g u la r p r o p o r c io n a u n a esp ecifi­
c a c ió n p recisa p a r a esta clase d e cad en as:

d íg ito —> 0 | 1 | . . . | 9
d í g it o s d íg ito d íg ito *
fr a c c ió n -o p ta tiv a —* . d íg it o s | *
e x p o n e n t o - o p t a t i v o — » ( E ( + |— | € ) d íg it o s ) | e
n ú m —> d íg it o s f r a c c ió n - o p t a t iv a e x p o n e n t e - o p t a t iv o

E sta d e fin ic ió n estab lece q u e u n a f r a c c i ó n - o p t a t i v a e s u n p u n t o d e c im a l s e g u id o d e


u n o o m á s d íg ito s, o está a u s e n te (la c a d e n a vacía). U n e x p o n e n t e - o p t a t iv o . si no
está a u s e n te , es u n a E s e g u id a d e u n sig n o + o - o p c io n a l, s e g u id o d e u n o o m á s
dígitos. O b sé rv e se q u e , c o m o m ín im o , d e b e ir u n d íg ito d e s p u é s del p u n to , d e m o d o
q u e n ú m n o c o n c u c r d e c o n 1, p e r o sí c o n 1 . 0. □

A b r e v ia tu r a s e n la n o ta c ió n

C ie rta s c o n s tr u c c io n e s a p a r e c e n c o n t a n t a fre c u e n c ia e n u n a e x p re s ió n reg u la r, q u e


e s c o n v e n ie n te in tr o d u c ir a lg u n a s a b re v ia tu ra s .

1. U no o m á s casos. El o p e r a d o r u n ita r io po stfijo * significa “ u n o o m á s c aso s d e ” .


Si r es u n a e x p re s ió n re g u la r q u e d e s ig n a al le n g u a je L (r), e n to n c e s (r)‘ e s u n a
e x p re sió n re g u la r q u e d e s ig n a al le n g u a je (L(r))*. A sí, la e x p re s ió n re g u la r a* re­
p r e s e n ta a l c o n j u n t o d e to d a s las c a d e n a s d e u n a o m á s a. El o p e r a d o r * tie n e la
m is m a p re c e d e n c ia y a s o c ia tiv id a d q u e el o p e r a d o r *. L as d o s id e n tid a d e s alge­
b raicas r* = r* |c y r* = rr* r e la c io n a n los o p e r a d o r e s d e la c e r r a d u r a d e K le e n e
y los d e la c e r r a d u r a p o sitiv a.

2. Cero o un caso. El o p e r a d o r u n ita r io p o stfijo ? significa '‘c e r o o u n c a s o d e ”. La


n o ta c ió n r ? e s u n a a b r e v ia tu r a d e r | e . Si r e s u n a e x p re s ió n reg u la r, e n to n c e s
( r ) ? e s u n a e x p re s ió n re g u la r q u e d e s ig n a el le n g u a je L(r) U {«}. P o r e je m p lo ,
u s a n d o los o p e r a d o r e s ‘ y ?, se p u e d e re e sc rib ir la d e fin ic ió n re g u la r p a r a núm
del e je m p lo 3.5 e n la fo rm a

d íg it o 0 | 1 | . . . | 9
d í g it o s -> d íg it o '
f r a c c ió n - o p t a t iv a - > ( . d íg it o s )?
e x p o n e n t e - o p t a t i v o —» ( E ( + | — )? d íg it o s )?
n ú m - » d íg it o s f r a c c i ó n - o p t a t i v a e x p o n e n t e - o p t a t i v o

3. Clases d e caracteres. L a n o ta c ió n ( a b e ] , d o n d e a , b y c s o n s ím b o lo s d e l al­


fab eto , d e s ig n a la e x p re s ió n re g u la r a | b | c . U n a clase a b re v ia d a d e c a rá c te r
c o m o [ a - z ] d e s ig n a la e x p re s ió n re g u la r a | b | . . . | z . U tiliz a n d o cía-
100 ANALISIS LEXICO

ses d e c arac teres, se p u e d e d e f in ir los id e n tific a d o re s c o m o c a d e n a s g e n e ra d a s


p o r la e x p re s ió n reg u lar

[A-Za-z][A-Za-zO-9]*

C o n ju n to s n o r e g u la r e s

A lg u n o s le n g u a je s n o se p u e d e n d e s c rib ir c o n n in g u n a e x p re s ió n regular. P a r a ilus­


t r a r los lím ite s del p o d e r d e sc rip tiv o d e las e x p re sio n e s regulares, se d a n a c o n t i n u a ­
c ió n e je m p lo s d e c o n s tr u c c io n e s d e le n g u a je s d e p r o g r a m a c ió n q u e n o se p u e d e n
d e s c rib ir c o n e x p re s io n e s regulares. E n las referen cias e s tá n las p r u e b a s d e ta le s a fir­
m a cio n es.
N o se p u e d e n u tiliz a r las e x p r e s io n e s re g u la re s p a r a d e s c r ib ir c o n s tr u c c io n e s
e q u ilib ra d a s o a n id a d a s . P o r e je m p lo , el c o n j u n t o d e to d a s las c a d e n a s d e p a ré n te sis
e q u ilib r a d o s n o se p u e d e d e s c rib ir c o n u n a e x p re s ió n regular. P o r o t r a p a rte , este
c o n j u n t o se p u e d e e s p e c ific a r m e d ia n te u n a g r a m á tic a in d e p e n d ie n te del c o n te x to .
Las c a d e n a s d e re p e tic ió n n o se p u e d e n d e s c rib ir c o n e x p re sio n e s regulares. El
c o n ju n to

{ wcw ¡ ví’ es u n a c a d e n a d e s ím b o lo s a y b }

n o se p u e d e r e p r e s e n ta r c o n n in g u n a e x p re s ió n reg u la r, ni se p u e d e d e s c rib ir con


u n a g ra m á tic a in d e p e n d ie n te d e l c o n te x to .
L as e x p re sio n e s reg u la re s se p u e d e n u tiliz a r p a r a d e s ig n a r só lo u n n ú m e r o fijo
d e re p e tic io n e s o u n n ú m e r o n o e sp e c ific a d o d e re p e tic io n e s d e u n a d e te r m in a d a
c o n s tru c c ió n . N o se p u e d e n c o m p a r a r d o s n ú m e r o s a r b itr a r io s p a r a c o m p r o b a r si
s o n iguales. P o r ta n to , la s c a d e n a s H o lle rith d e la f o r m a nH a\a2 . . . any p e rte n e c ie n ­
te s a las p r im e r a s v e rsio n e s d e F O R T R A N , n o se p u e d e n d e s c rib ir c o n u n a e x p re ­
sió n reg u la r, p u e s el n ú m e r o d e c a ra c te re s q u e sigue a H d e b e c o n c o r d a r c o n el n ú ­
m e r o d e c im a l n q u e p re c e d e a H .

3.4 R E C O N O C IM IE N T O D E C O M P O N E N T E S L E X IC O S

E n la secció n a n te r io r , se tr a tó el p r o b le m a d e c ó m o esp ecificar lo s c o m p o n e n te s


léxicos. E n esta secció n , se e s tu d ia el r e c o n o c im ie n to d e los c o m p o n e n te s léxicos y
se u tiliz a c o m o e je m p lo el le n g u a je g e n e ra d o p o r la sig u ie n te g ra m á tic a .

E je m p lo 3 . 6 . C o n s id é re s e el sig u ie n te fra g m e n to g ram a tica l:

prop - * i f expr th e n prop


i f expr th e n prop e l s e prop

expr -> térm in o o p r e l térm ino
| térm ino
térm in o - » id
núm
3.4 R E C O N O C IM IE N T O DE C O M P O N E N T E S LEXICOS 101

d o n d e los te rm in a le s ¡f. th e n . else, o p re l, id y n ú m g e n e r a n c o n j u n to s d e c a d e n a s


d a d o s p o r las sig u ie n tes d e fin ic io n e s regulares:

if-» if
th e n —» th e n
e lse -» e lse
o p re l —» < | <= | = | o | > | >=
id -» le tr a ( le tra | d íg ito )*
núm -» dígito* ( . d íg ito * )? ( E ( + | - )? d íg ito )?

d o n d e le tr a y d íg ito se h a n d e f in id o a n te r io r m e n te .
P a ra este fra g m e n to d e lenguaje, el a n a liz a d o r léxico re c o n o c e rá las p a la b ra s clave
i f . t h e n , e l s e . al igual q u e los le x e m a s re p re s e n ta d o s p o r o p re l, id y núm . P ara
s im p lific a r las cosas, se s u p o n e q u e las p a la b r a s c lav e son reserv ad as; es d ecir, n o se
p u e d e n u s a r c o m o id e n tific a d o re s. C o m o e n el e je m p lo 3.5. n ú m re p re s e n ta los n ú ­
m e ro s e n te r o s y reales s in signo d e Pascal.
A d e m á s, se s u p o n e q u e los le x e m a s e s tá n s e p a r a d o s p o r e s p a c io e n b la n c o , for­
m a d o s p o r s e c u e n c ia s n o n u la s d e e sp a c io s en b la n co , c a ra c te re s T A B y carac teres
d e n u e v a lín ea. El a n a liz a d o r léx ico e lim in a r á los e sp a c io s e n b la n c o . E sto lo h a rá
c o m p a r a n d o u n a c a d e n a c o n la d e fin ic ió n d e la e x p re sió n reg u lar e b sig u ien te.

d e lim - » b la n co 1 ta b | linean u ev a
eb —> d e lim '

Si se e n c u e n t r a u n a c o n c o r d a n c ia p a r a eb , el a n a liz a d o r léxico n o d e v u e lv e u n c o m ­
p o n e n t e léxico al a n a liz a d o r s in tá c tic o , s in o q u e se d is p o n e a e n c o n t r a r u n c o m p o ­
n e n te léxico a c o n tin u a c ió n del esp acio e n b la n c o y lo d e v u e lv e al a n a liz a d o r s in tá c ­
tico.
El o b je tiv o es c o n s tr u i r u n a n a liz a d o r léxico q u e aísle el le x e m a p a r a el sig uiente
c o m p o n e n t e léx ico d e l buffer d e e n t r a d a y q u e p r o d u z c a c o m o sa lid a u n p a r for-

E xpresión Componente
V alor del A tributo
R egular Léxico

eb — —

if if —
then then —

else e ls e —
¡d id apuntador a la entrada en la tabla
núm núm apuntador a la entrada en la tabla
< oprel MEN
<= oprel MEI
= oprel IGU
o oprel DIF
> oprel MAY
>= oprel MAI

F ig . 3 .1 0 . P a tr o n e s d e e x p r e s io n e s regu lares p ara c o m p o n e n t e s léxicos.


102 ANALISIS LEXICO

m a d o p o r el c o m p o n e n te léxico a p r o p ia d o y el v a lo r d e a trib u to , u tiliz a n d o la ta b la


d e tr a d u c c ió n d e la figura 3.10. L o s v alo res d e a tr ib u to p a r a los o p e r a d o r e s relació ­
nales están d a d o s p o r las c o n s ta n te s s im b ó lic a s men. m e i. ig u . may. m a i . n

D ia g r a m a s d e tr a n s ic io n e s

C o m o p a so in te r m e d io e n la c o n s tru c c ió n d e u n a n a liz a d o r léxico, p r im e r o se p ro ­


d u c e un d ia g ra m a d e flu jo estiliza d o , lla m a d o diagram a d e transiciones. L os d ia g ra ­
m a s d e tra n s ic io n e s re p re s e n ta n las a c c io n e s q u e tie n e n lu g a r c u a n d o el a n a liz a d o r
léxico es lla m a d o p o r el a n a liz a d o r s in tá c tic o p a r a o b te n e r el sig u ie n te c o m p o n e n te
léxico, c o m o sugiere la fig u ra 3.1. S u p ó n g a s e q u e el buffer d e e n t r a d a es c o m o el de
la figura 3.3 y q u e el a p u n t a d o r del p r in c ip io del le x e m a a p u n t a al c a r á c te r q u e sigue
al ú ltim o le x e m a e n c o n tr a d o . Se u tiliz a u n d ia g ra m a d e tra n s ic ió n p a r a lo c aliz ar la
in fo rm a c ió n so b re los c a ra c te re s q u e se d e te c ta n a m e d id a q u e el a p u n t a d o r d e la n ­
te ro e x a m in a la e n tra d a . E sto se h a c e c a m b ia n d o d e p o sició n e n el d ia g ra m a según
se leen los caracteres.
L as p o sicio n es e n u n d ia g ra m a d e tra n s ic ió n se re p re s e n ta n c o n u n c írc u lo y se
lla m a n estados. L os e s ta d o s se c o n e c ta n m e d ia n te flechas, lla m a d a s aristas. L as aris­
ta s q u e salen del e s ta d o s tie n e n e tiq u e ta s q u e in d ic a n los c a ra c te re s d e e n t r a d a q u e
p u e d e n a p a r e c e r d e s p u é s d e h a b e r lleg ad o el d ia g ra m a d e tra n s ic ió n al e s ta d o .v. La
e tiq u e ta o tr o se refiere a t o d o c a r á c te r q u e n o h a y a sid o in d ic a d o p o r n in g u n a d e las
o tra s arista s q u e salen d e s.
Se s u p o n e q u e los d ia g ra m a s d e tra n s ic io n e s d e esta secció n son determ inistas;
es d ecir, n in g ú n s ím b o lo p u e d e c o n c o r d a r c o n las e tiq u e ta s d e d o s arista s q u e salgan
d e u n estad o . Al e m p e z a r la secció n 3.5, se h a r á m e n o s rig u ro sa esta c o n d ic ió n , fa­
c ilita n d o las c o sas al d is e ñ a d o r del a n a liz a d o r léxico y, c o n las h e r r a m ie n ta s a d e c u a ­
d as. ta m b ié n al e n c a r g a d o d e su im p la n ta c ió n .
U n e s ta d o se e tiq u e ta c o m o el e s ta d o d e inicio ; e s e n el e s ta d o in ic ia l d e l d ia ­
g ra m a d e tra n s ic ió n d o n d e reside el c o n tr o l c u a n d o se e m p ie z a a re c o n o c e r u n c o m ­
p o n e n te léxico. C ierto s e s ta d o s p u e d e n te n e r accio n es q u e se e je c u ta n c u a n d o el flujo
del c o n tro l a lc a n z a d ic h o estad o . Al e n t r a r e n u n e s ta d o se lee el sig u ie n te c a rá c te r
d e e n t r a d a . Si h a y u n a a r is ta del e s ta d o e n c u r s o d e e je c u c ió n c u y a e t i q u e t a c o n -
c u e rd e c o n ese c a rá c te r d e e n tra d a , e n to n c e s se v a al e s ta d o a p u n t a d o p o r la arista.
D e o t r o m o d o , se in d ic a u n fallo.
En la fig u ra 3.11 se m u e s tra u n d ia g ra m a d e tra n s ic io n e s p a r a los p a tro n e s >= y
>. F.I d ia g ra m a d e tra n s ic io n e s fu n c io n a d e la sig u ie n te fo rm a . S u e s ta d o d e in icio es
el e s ta d o 0 . E n el e s ta d o 0 se lee el sig u ie n te c a r á c te r d e e n tr a d a . L a a ris ta e tiq u e ta d a
c o n > del e s ta d o 0 se d e b e seg u ir h a s ta el e s ta d o 6 si este c a rá c te r d e e n t r a d a es >. De
o tr o m o d o , significa q u e n o se h a b r á re c o n o c id o ni > ni >=.

F ig . 3 .1 1 . D ia g r a m a d e tr a n s ic io n e s para >=.
3.4 R E C O N O C IM IE N T O DE C O M P O N E N T E S LEXICOS 103

Ai llegar al e s ta d o 6 se lee el sig u ie n te c a rá c te r d e e n tr a d a . L a a ris ta e tiq u e ta d a


c o n = q u e sa le del e s ta d o 6 d e b e r á seguirse h a s ta el e s ta d o 7 si este c a r á c te r d e e n ­
tra d a es u n =. D e o t r o m o d o , la a ris ta e tiq u e ta d a c o n o tr o in d ica q u e se d e b e r á ir al
e s ta d o 8. El c írc u lo d o b le del e s ta d o 7 in d ic a q u e éste es u n e s ta d o d e a c e p ta c ió n ,
u n e s ta d o e n el c u a l se h a e n c o n t r a d o el c o m p o n e n te léxico >=.
O b sé rv e se q u e el c a r á c te r > y o t r o c a r á c te r a d ic io n a l se leen a m e d id a q u e se
sigue la se c u e n c ia d e arista s d e sd e el e s ta d o in icial al e s ta d o d e a c e p ta c ió n 8. C o m o
el c a rá c te r a d ic io n a l n o e s p a rte del o p e r a d o r re la c io n a l >. se d e b e re tro c e d e r u n ca­
r á c te r el a p u n t a d o r d e la n te r o . Se u s a u n * p a r a in d ic a r los e s ta d o s en q u e s e d e b e
llev ar a c a b o este re tro c e so e n la e n tra d a .
E n g en eral, p u e d e h a b e r v ario s d ia g r a m a s d e tra n s ic io n e s , c a d a u n o d e los cuales
esp ecifiq u e u n g ru p o d e c o m p o n e n te s léxicos. Si su rg e u n fallo m ie n tr a s se e s tá si­
g u ie n d o u n d ia g ra m a d e tran sicion es, se d e b e re tro c e d e r el a p u n t a d o r d e la n te r o hasta
d o n d e estab a e n el e s ta d o in icial d e d ic h o d ia g ra m a , y a c tiv a r el sig u ie n te d ia g ra m a
d e tra n sic io n e s. D a d o q u e los a p u n ta d o r e s d e in ic io d e le x e m a y los d e la n te r o s m a r ­
c a b a n la m is m a po sició n e n el e s ta d o inicial del d ia g ra m a , se re tro c e d e el a p u n t a d o r
d e la n te r o h a s ta la p o sic ió n q u e m a rc a el a p u n t a d o r al in ic io d e lex em a. Si el fallo
surge en to d o s los d ia g ra m a s d e tra n s ic io n e s , e s q u e se h a d e te c ta d o u n e r r o r léxico
y se in v o c a u n a r u ti n a d e re c u p e ra c ió n d e errores.

E je m p lo 3 .7 . E n la figura 3 .1 2 se m u e s tra u n d ia g ra m a d e tra n s ic io n e s p a r a el c o m ­


p o n e n te léxico o p r e l. O b sé rv e se q u e la figura 3 . 11 es u n a p a rte d e este d ia g ra m a d e
tra n s ic ió n m á s c o m p le jo . □

inicio „ , „ „
devuelve! o p rc l. M E I )

devuelve!oprel. DIF)

devuelve(oprel. MEN)

dc\uelve(oprcl, IG U )

7 í¡ devuelve(oprel. MAI)
*
devuelve!oprel. MAY)

Fig. 3.12. D iagram a d e transiciones p a ra o p erad o res relaciónales.

E je m p lo 3 .8 . C o m o las p a la b r a s c lav e r o n s e c u e n c ia s d e letras, son la e x c e p c ió n a la


regla d e q u e u n a s e c u e n c ia d e letras y d íg ito s q u e c o m ie n c e c o n u n a letra e s u n id e n -
tificad o r. E n vez d e c o d ific a r las e x c e p c io n e s en u n d ia g ra m a d e tra n s ic io n e s , e s m e ­
j o r c o n s id e r a r las p a la b r a s clave c o m o id e n tific a d o re s especiales, c o m o en la sección
2.7. C u a n d o se llega al e s ta d o d e a c e p ta c ió n d e la figura 3 .1 3 , se e je c u ta alg ú n c ó ­
d ig o p a ra d e t e r m in a r si el le x e m a q u e c o n d u j o al e s ta d o d e a c e p ta c ió n e s u n a p a la ­
b ra c lav e o u n id en tificad o r.
104 A N A L IS IS LEXICO

le tr a o d íg ito

d e v u e lv e ( o b l e n - c o m p l e x (). i n s i a l a - i d ())

Fig. 3.13. D iagram a d e transiciones para identificadores y palabras clave.

U n a té c n ic a sencilla p a r a s e p a ra r las p a la b ra s c lav e d e los id e n tific a d o re s es ini-


c ializ ar a d e c u a d a m e n te la ta b la d e s ím b o lo s e n d o n d e se g u a r d a la in f o r m a c ió n so­
bre id e n tific ad o res. P a ra los c o m p o n e n te s léxicos d e la figura 3.10. es n e c e s a rio in ­
tro d u c ir las c a d e n a s i f . t h e n y e l s e e n la ta b la d e sím b o lo s a n te s de q u e ap arezca
n in g ú n c a r á c te r en la e n tra d a . T a m b i é n se p o n e u n a n o t a e n la ta b la d e s ím b o lo s
del c o m p o n e n te léxico q u e d e b e s e r d e v u e lto c u a n d o se r e c o n o c e u n a d e estas ca­
d e n a s. L a p ro p o s ic ió n devuelve d e s p u é s del e s ta d o d e a c e p ta c ió n d e la figura 3.13
u tiliza o b te n -c o m p le x o c in s ta la -id i ) p a r a o b te n e r el c o m p o n e n te léx ico y el v a lo r
d e a trib u to , re s p e c tiv a m e n te , q u e d e b e n s e r d ev u e lto s. El p r o c e d im ie n to in sta la -i d()
tien e acce so al buffer, e n d o n d e está lo c a liz a d o el le x e m a del id e n tific a d o r. S e e x a ­
m in a la ta b la d e s ím b o lo s y si se e n c u e n tr a el le x e m a m a r c a d o c o m o u n a p a la b ra
clave. in sta la -id O d e v u e lv e 0. Si se e n c u e n t r a el le x e m a y e s u n a v a ria b le d e p ro ­
g ra m a . in sta la -id O d e v u e lv e u n a p u n t a d o r a la e n tr a d a d e la ta b la d e s ím b o lo s. Si
el le x e m a n o se e n c u e n t r a e n la ta b la d e s ím b o lo s, se in sta la c o m o u n a v a ria b le y se
d e v u e lv e u n a p u n t a d o r a la e n tr a d a recién c read a .
El p r o c e d im ie n to o b té n -c o m p le x b u sc a el le x e m a d e fo rm a p a re c id a e n la ta b la
d e s ím b o lo s. Si el le x e m a e s u n a p a la b ra clave, se d e v u e lv e el c o r r e s p o n d ie n te c o m ­
p o n e n te léxico; si n o . se d e v u e lv e el c o m p o n e n t e léx ico id.
O b sérv ese q u e el d ia g ra m a d e tra n s ic io n e s n o se m o d ific a si se re c o n o c e n p a la ­
b ra s c lav e ad ic io n a le s; s im p le m e n te se in icializa la ta b la d e s ím b o lo s c o n las c a d e n a s
\ c o m p o n e n te s léxicos d e las p a la b ra s clave a d icio n ales.

in ic io

in ic io

F ig. 3 .1 4 . D ia g r a m a s d e tr a n s ic io n e s para n ú m e r o s sin s i g n o e n P ascal.


3.4 R E C O N O C IM IE N T O D E C O M P O N E N T E S LEXICOS 105

L a té c n ic a d e c o lo c a r las p a la b ra s c lav e e n la ta b la d e s ím b o lo s es casi in d is p e n ­


sable c u a n d o el a n a liz a d o r léxico se co difica m a n u a lm e n te . D e n o h a c e rlo así, el n ú ­
m e r o d e e s ta d o s e n u n a n a liz a d o r léxico p a r a u n len g u aje d e p r o g ra m a c ió n típ ic o es
d e v ario s cien to s, m ie n tr a s q u e u tiliz a n d o el tru c o , q u iz á b aste c o n m e n o s d e cien
estados.

E je m p lo 3 .9 . C u a n d o se c o n s tr u y e u n re c o n o c c d o r d e n ú m e r o s sin signo d a d o s p o r
la d e fin ic ió n reg u lar

n ú m -* d ígito * (.d íg ito * )? (E (+ | - ) ? d ígito* )?

su rg en v arias c u estio n es. O b sé rv e se q u e la d e fin ic ió n tie n e la fo rm a d íg ito s fracción ?


e x p o n e n te ? , d o n d e fra cció n y e x p o n e n t e s o n o p c io n a le s.
El le x e m a d e u n d e te r m in a d o c o m p o n e n t e léx ico d e b e s e r el m á s g r a n d e posible.
P o r e je m p lo , el a n a liz a d o r léx ico n o d e b e d e te n e r s e d e s p u é s d e a p a r e c e r 12 o in ­
clu so 12 .3 c u a n d o la e n t r a d a es 12 . 3E4. E m p e z a n d o e n los e s ta d o s 25. 2 0 y 12
d e la figura 3 .1 4 . los e s ta d o s d e a c e p ta c ió n se a lc a n z a r á n d e s p u é s d e q u e h a y a n a p a ­
re c id o 12. 1 2 . 3 y 12 . 3E4, r e s p e c tiv a m e n te , s u p o n ie n d o q u e 12 . 3E4 v a y a se­
g u id o d e u n c a r á c te r d is tin to d e d íg ito e n la e n tra d a . L o s d ia g ra m a s d e tra n sic io n e s
c o n e s ta d o s d e in ic io 2 5. 2 0 y 12 s o n p a ra d íg ito s , d íg it o s fra cció n y d íg it o s frac­
ció n ? e x p o n e n te , re s p e c tiv a m e n te , d e m o d o q u e se d e b e n p r o b a r los e s ta d o s d e in i­
c io e n el o r d e n in v e rs o 12, 20, 25.
L a a cció n , c u a n d o se llega a c u a lq u ie r a d e los e s ta d o s d e a c e p ta c ió n 1 9 . 2 4 ó
2 7 , e s lla m a r al p r o c e d im ie n to / n s ta la -n w n , q u e in tr o d u c e el le x e m a en u n a ta b la
d e n ú m e r o s y d e v u e lv e u n a p u n t a d o r a la e n t r a d a c read a . El a n a liz a d o r léx ico d e ­
vuelve el c o m p o n e n te léxico n ú m c o n este a p u n t a d o r c o m o v alo r léxico.

Se p u e d e u tiliz a r la in f o r m a c ió n so b re el len g u aje q u e n o está e n las d e fin ic io n e s


r e g u la r e s d e lo s c o m p o n e n t e s lé x ic o s p a r a s e ñ a la r lo s e r r o r e s e n la e n t r a d a . P o r
e je m p lo , c o n la e n t r a d a l.<x. se fracasa e n los e s ta d o s 14 y 2 2 d e la fig u ra 3.14
c o n < c o m o sig u ie n te c a r á c te r d e e n tra d a . E n v ez d e d e v o lv e r el n ú m e r o 1. se p o d ría
i n f o r m a r d e u n e r r o r y c o n t i n u a r c o m o si la e n t r a d a f u e ra 1 . 0 < x . E ste c o n o c i ­
m i e n to se p u e d e u sa r ta m b ié n p a r a s im p lific a r los d ia g r a m a s de tra n sic io n e s, p u e s to
q u e el m a n e jo d e e rro re s se p u e d e u tiliz a r p a r a re c u p e ra rs e d e a lg u n a s situ a c io n e s
q u e d e o tr o m o d o c o n d u c ir ía n a u n fallo.
H a y v a ria s f o r m a s d e e v i ta r la c o n c o r d a n c ia r e d u n d a n t e d e lo s d ia g r a m a s d e
tr a n s i c io n e s d e la fig u ra 3 .1 4 . U n a d e e lla s c o n s is te e n r e e s c r ib ir lo s d ia g r a m a s
d e tra n s ic io n e s c o m b in á n d o lo s e n u n o . ta re a g e n e r a lm e n te la b o rio sa . O tr a fo rm a es
m o d ific a r la respu esta al fallo d u r a n te el p r o c e s o d e s e g u im ie n to d e u n d ia g ra m a .
U n m é to d o e s tu d ia d o m á s a d e la n te e n este c a p ítu lo p e r m ite a tra v e s a r v ario s estad o s
d e a c e p ta c ió n : se re tro c e d e al ú ltim o e s ta d o d e a c e p ta c ió n q u e se a tra v e s ó c u a n d o
se p r o d u jo el fallo.

E jem p lo 3 .1 0 . U n ie n d o los d ia g ra m a s d e tra n sic io n e s d e las figuras 3.12. 3.13 y 3.14.


se p u e d e o b te n e r u n a s e c u e n c ia d e d ia g r a m a s d e tr a n s ic io n e s p a r a to d o s los c o m ­
p o n e n te s léxicos del e je m p lo 3.6. L o s e s ta d o s d e in icio c o n n ú m e r o s m e n o r e s d e b e n
s e r a lc a n z a d o s a n te s q u e los e s ta d o s d e in ic io c o n n ú m e r o s m ayo res.
106 ANALISIS LEXICO

L a ú n ic a c u e s tió n q u e re s ta es la re la c io n a d a c o n el e s p a c io e n b la n c o . El tr a ta ­
m i e n to d e eb . q u e r e p re s e n ta el e s p a c io e n b la n c o , es d is tin to d e l d e lo s p a tro n e s
a n a liz a d o s a n te r io r m e n te , p o rq u e n o se d ev u elv e n a d a al a n a liz a d o r s in tá c tic o c u a n d o
se e n c u e n tr a el e s p a c io e n b la n c o e n la e n tr a d a . U n d ia g ra m a d e tra n s ic io n e s q u e
re c o n o c e a e b p o r si m is m o es

delim

N o se d e v u e lv e n a d a c u a n d o se a lc a n z a el e s ta d o d e a c e p ta c ió n ; s im p le m e n te se re­
g resa al e s ta d o in icial d e l p r im e r d ia g r a m a d e tra n s ic io n e s p a r a b u s c a r o t r o p a tró n .
S ie m p re q u e sea posible, e s m e jo r b u s c a r c o m p o n e n te s léxicos q u e a p a re z c a n co n
m a y o r fre c u e n c ia a n te s q u e los m e n o s frecu en tes, p o r q u e a u n d ia g ra m a d e tr a n s i­
c io n e s só lo se llega d esp u és d e h a b e r fallado e n to d o s los d ia g ra m a s a n terio res. C o m o
se e s p e ra q u e el e s p a c io e n b la n c o a p a re z c a c o n frec u e n c ia , e s m e jo r p o n e r el d ia ­
g ra m a d e tr a n s ic io n e s p a r a el e s p a c io e n b la n c o cerc a del p r in c ip io q u e p r o b a r el
e s p a c io e n b la n c o al final. □

Im p la n ta ció n d e un d ia g r a m a d e tr a n s ic io n e s

U n a se c u e n c ia d e d ia g ra m a s d e tra n s ic io n e s se p u e d e c o n v e r tir e n u n p r o g r a m a q u e
b u s q u e los c o m p o n e n te s léxicos e sp e c ific a d o s p o r los d ia g ra m a s . S e a d o p t a u n e n ­
fo q u e s is te m á tic o q u e sirve p a r a to d o s los d ia g ra m a s d e tra n s ic io n e s y q u e c o n s tr u y e
p ro g ra m a s c u y o t a m a ñ o e s p ro p o rc io n a l al n ú m e r o d e e s ta d o s y d e arista s d e los
d ia g ra m as.
A c a d a e s ta d o le c o r r e s p o n d e u n s e g m e n to d e cód igo . Si h a y arista s q u e salen d e
u n e s ta d o , e n to n c e s su c ó d ig o lee u n c a r á c te r y selec cio n a u n a a ris ta p a r a seguir, si
es posible. S e u tiliz a la fu n c ió n s i g t e c a r ( ) p a r a le er el sig u ie n te c a r á c te r d e l buffer
d e e n tr a d a , p a r a a v a n z a r el a p u n t a d o r d e l a n te r o e n c a d a lla m a d a y p a r a d e v o lv e r el
c a r á c te r le íd o 1. Si h a y u n a a ris ta e tiq u e ta d a c o n el c a r á c te r leído, o e tiq u e ta d a c o n
u n a clase d e c a ra c te re s q u e c o n te n g a a l c a r á c te r le íd o , e n to n c e s el c o n tro l se tra n s ­
fiere al c ó d ig o del e s ta d o a p u n t a d o p o r e s a arista. Si n o h a y ta l a r is ta y el e s ta d o en
c u r s o d e e je c u c ió n n o es el q u e in d ic a q u e se h a e n c o n t r a d o u n c o m p o n e n t e léxico,
e n to n c e s se lla m a a la r u ti n a f a l l o ( ) p a r a h a c e r re tro c e d e r el a p u n t a d o r d e la n te r o
a la p o sic ió n del a p u n t a d o r al c o m ie n z o e in ic ia r la b ú s q u e d a d e l c o m p o n e n te léxico
e s p e c ific a d o p o r el s ig u ie n te d i a g r a m a d e tr a n s ic io n e s . Si n o h a y q u e p r o b a r m á s
d ia g r a m a s d e tra n sic io n e s. f a l l o ( ) lla m a a u n a r u ti n a d e re c u p e ra c ió n d e erro res.
Para d ev o lv er los c o m p o n e n te s léxicos se utiliza la variable global v a l o r _ l é x i c o ,
a la q u e se a s ig n a n los a p u n t a d o r e s d e v u e lto s p o r las fu n c io n e s i n s t a l a _ i d ( ) e
i n s t a l a _ n ú m ( ) c u a n d o se e n c u e n t r a u n id e n tif ic a d o r o u n n ú m e r o , r e s p e c tiv a ­
m e n te . Se d e v u e lv e la clase del c o m p o n e n t e léx ico p o r el p r o c e d im ie n to p rin cip al
del a n a liz a d o r léxico, lla m a d o s i g t e _ c o m p l e x ( ) .

1 U n a im p la n ta c ió n m a s e fic ie n t e u tiliz a r ía u n a m a c r o e n lin e a e n lu g a r d e la f u n c ió n s i g t e -


c a r ( ).
3.4 R E C O N O C IM IE N T O DE C O M P O N E N T E S LEXICOS 107

Se u tiliza u n a p ro p o sic ió n c a se p a r a e n c o n t r a r el e s ta d o in icial d e l sig u ie n te d ia ­


g r a m a d e tra n sic io n e s. E n la a p lic a c ió n e n C d e la fig u ra 3 . 15, d o s v ariab les, e s t a d o
e i n i c i o , re c o rre n el e s ta d o a c tu a l y el e s ta d o in icial del d ia g ra m a d e tra n s ic io n e s
e n c u r s o . L o s n ú m e r o s d e e s t a d o d e l c ó d i g o s o n p a r a lo s d i a g r a m a s d e tr a n s i c io ­
nes d e las figuras 3.12 a 3.14.
L as a n s t a s d e los d ia g r a m a s d e tra n s ic io n e s se e n c u e n t r a n s e le c c io n a n d o r e p e ti­
d a m e n te el fra g m e n to d e c ó d ig o p a r a u n e s ta d o y e je c u ta n d o ese fra g m e n to d e c ó ­
d ig o p a r a d e t e r m i n a r el sig u ie n te e s ta d o , c o m o se in d ic a e n la figura 3 .1 6 . Se m u e s ­
t r a n el c ó d ig o p a r a el e s t a d o 0 , ta l c o m o s e m o d i f i c ó e n el e j e m p l o 3 .1 0 p a r a
c o n s id e r a r los e sp a c io s e n b la n co , y el c ó d ig o p a r a d o s d e los d ia g ra m a s d e tra n s ic io ­
nes d e la s fig u ras 3 .1 3 y 3 .1 4 . O b sérv ese q u e la c o n s tr u c c ió n en C

while(l) prop
re p ite prop “ i n d e f i n id a m e n te ” , e s d e c ir, h a s ta q u e a p a r e z c a u n a in s tr u c c ió n r e ­
turn.

int e s t a d o = 0 , inicio = 0;
int v a l o r _ l é x i c o ;
/* para "devolver" el segundo componente del componente
léxico */

int fallo()

{
delantero = inicio_lexema;
switch (inic i o ) {
c a s e 0: inicio = 9; break;
c a s e 9: inicio = 12; break;
c a s e 12: inicio = 2 0 ; break;
c a s e 20: i n i c i o = 25; break;
c a s e 25: r e c u p e r a n ; break;
default: /* e r r o r d e l c o m p i l a d o r */

}
}

Fig. 3.15. C ódigo en C p a ra e n c o n tra r el siguiente estad o d e inicio.

C o m o e n C n o se p e rm ite q u e se d e v u e lv a n u n c o m p o n e n t e léxico y u n v alo r d e


a trib u to , i n s t a l a _ i d ( ) e i n s t a l a _ n ú m ( ) a s ig n a n e n c o n s e c u e n c ia a lg u n a v a­
riab le g lo b a l al v alo r d e a tr ib u to c o r r e s p o n d ie n te a la e n tr a d a e n la ta b la d e l id o
n ú m e n c u e stió n .
Si el le n g u a je d e im p la n ta c ió n n o tie n e u n a p ro p o s ic ió n case, se p u e d e c re a r u n a
m a tr iz p a r a c a d a e s ta d o , in d e x a d a p o r c arac teres. Si esta d o 1 es u n a m a triz d e este
tip o , e n to n c e s estado\[c] e s u n a p u n t a d o r a u n a p a r te d e c ó d ig o q u e d e b e ejecu tarse
s ie m p re q u e el c a r á c te r d e p re a n á lisis sea c. P o r lo g en eral, este c ó d ig o fin alizaría
c o n u n a in s tr u c c ió n g o t o a l c ó d ig o p a r a el sig u ie n te estad o . L a m a tr iz del e s ta d o s
se c o n o c e c o m o ta b la d e tra n s fe re n c ia in d ire c ta d e s.
ANALISIS LEXICO

complex sigte_complex()
w h i l e (1) {
switch (esta d o ) {
case 0: c = sigtecar();
/* c es el c a r á c t e r d e p r e a n á l i s i s */
if (c==blanco ¡ ¡ c==tab ¡ ¡ c = l í n e a _ n u e v a ) {
estado = 0;
inicio_lexema++;
/* se a v a n z a el i n i c i o d e l lexema

>
else if (c = = '<') estado = 1;
else if (c = = '=') estado = 5;
else if (c = = '>') estado = 6;
else e s t a d o = fallo ( ) ;
break;

.../* a q u í v a n los c a s o s d e l 1 al 8 */
case 9: c * sigtecar();
if (i s l e t t e r ( c ) ) e s t a d o = 10;
else e s tado » fallo();
break;
case 10: c = sigtecar();
if (i s l e t t e r ( c ) ) e s t a d o = 10;
else if (isdigit(c)) estado * 10;
else estado = 11;
break;
case 11: regresa(l); instala_id;
return ( o b t é n _ c o m p l e x () );

.../* a q u í v a n los c a s o s d e l 12 al 24 */
case 25: c = sigtecar();
if (isdigit(c)) estado = 26;
else estado = f allo ( ) ;
break;
case 26: c = sigtecar();
if (isdigit(c)) estado = 26;
else estado = 27;
break;
c a s e 27: regresa(l); i n s t a l a _ n ú m ( );
r eturn( NUM );

)
}
}

Fig. 3.16. C ódigo en C p a ra el an alizado r léxico.


3.5 L E N G U A JE P A R A ESPECIFICACION D E A N A L IZ A D O R E S LEXICO S 109

3 .5 U N L E N G U A J E P A R A L A E S P E C IF IC A C IO N
D E A N A L IZ A D O R E S L E X IC O S

Se h a n d e s a rro lla d o a lg u n a s h e r r a m ie n ta s p a r a c o n s tr u ir a n a liz a d o re s léx ico s a p a r ­


tir d e n o ta c io n e s d e p r o p ó s ito esp ecial b a s a d a s e n e x p re sio n e s regulares. Y a se h a
e s tu d ia d o el u s o d e e x p re sio n e s reg u la re s e n la esp ecificació n d e p a tro n e s d e c o m ­
p o n e n te s léxicos. A n te s d e c o n s id e r a r lo s a lg o ritm o s p a r a c o m p ila r e x p re s io n e s re­
g u la re s e n p ro g r a m a s d e c o n c o r d a n c ia d e p a tro n e s , se d a u n e je m p lo d e u n a h e rra ­
m ie n ta q u e p u e d a ser u tiliz a d a p o r d ic h o alg o ritm o .
E n esta secció n se d e sc rib e u n a h e r r a m ie n ta c o n c re ta , lla m a d a L E X , m u y utili­
z a d a e n la e s p e c ific a c ió n d e a n a liz a d o r e s léx ico s p a r a v a r io s le n g u a je s . E sa h e r r a ­
m ie n ta se d e n o m i n a com pilador L E X , y la esp ecificació n d e s u e n tr a d a , lenguaje
L E X . El e s tu d io d e u n a h e r r a m ie n ta e x iste n te p e r m itir á m o s tr a r c ó m o , u tiliz a n d o
e x p re sio n e s reg u lares, se p u e d e c o m b in a r la e sp ecificació n d e p a tro n e s c o n accio n es,
p o r e je m p lo , h a c ie n d o e n tra d a s e n u n a ta b la d e s ím b o lo s, c u y a e je c u c ió n se p u e d a
p e d ir a u n a n a liz a d o r léxico. Se p u e d e n u tiliz a r las esp ecificacio n es tip o L E X a u n ­
q u e n o se d is p o n g a d e u n c o m p ila d o r L E X ; las esp ecificacio n es se p u e d e n tra n s c ri­
b ir m a n u a lm e n te a u n p r o g r a m a o p e r a tiv o e m p le a n d o las té c n ic a s d e d ia g r a m a s d e
tra n s ic io n e s d e la sección a n te rio r.

program a
fu en te c o m p ila d o r
-► l e x .yy-c
e n LEX d e LEX
lex. 1

c o m p ila d o r
lex.yy.c a.out
deC

a r c h iv o d e se c u e n c ia de
en tra d a » c o m p o n e n te s
lé x ic o s

F ig . 3 .1 7 . C r e a c ió n d e u n a n a liz a d o r lé x ic o c o n L E X .

P o r lo g en eral, se u tiliz a el L E X d e la f o r m a re p re s e n ta d a e n la figura 3 .1 7 . P ri­


m e r o , se p r e p a r a u n a e s p e c ific a c ió n d e l a n a l i z a d o r lé x ic o c r e a n d o u n p r o g r a m a
l e x . 1 e n le n g u a je L E X . D e s p u é s l e x . 1 se p a sa p o r el c o m p ila d o r L E X p a r a p ro ­
d u c i r el p r o g r a m a e n C l e x . y y . c . El p r o g r a m a l e x . y y . c c o n s ta d e u n a r e p re ­
s e n ta c ió n ta b u la r d e u n d ia g ra m a d e tra n s ic io n e s c o n s tr u id o a p a r tir d e la s e x p re sio ­
nes reg ulares d e l e x . 1. j u n t o c o n u n a r u ti n a e s tá n d a r q u e u tiliz a la ta b la p a r a r e ­
c o n o c e r le x em as. L as a c c io n e s a s o c ia d a s a las e x p re s io n e s reg u la re s d e l e x . 1 son
p a r te s d e c ó d ig o e n C y se t r a n s f ie r e n d i r e c t a m e n t e a l e x . y y . c . P o r ú ltim o .
110 A N A L ISIS LEXICO

l e x . y y . c se e je c u ta e n el c o m p i l a d o r d e C p a r a p r o d u c i r u n p r o g r a m a o b je to
a . o u t . q u e es el a n a liz a d o r léx ico q u e tr a n s f o r m a u n a r c h iv o d e e n tr a d a e n u n a
se c u e n c ia d e c o m p o n e n te s léxicos.

E s p e c ific a c io n e s en L E X

U n p r o g r a m a e n L E X c o n s ta d e tres partes:

d e c la ra c io n e s
%%
reglas d e tr a d u c c ió n
%%
p r o c e d im ie n to s au x iliares

L a secció n d e d e c la ra c io n e s in c lu y e d e c la ra c io n e s d e v ariab les, c o n s ta n te s m a n ifie s­


ta s y d e fin ic io n e s reg u lares. ( U n a c o n s ta n t e m a n ifie s ta es u n id e n tific a d o r q u e se d e ­
c la ra p a r a r e p r e s e n ta r u n a c o n s ta n te .) L as d e fin ic io n e s reg u la re s s o n p ro p o s ic io n e s
sim ila re s a las e s tu d ia d a s e n la secció n 3.2, y se u tiliz an c o m o c o m p o n e n te s d e las
e x p re sio n e s reg ulares q u e a p a re c e n e n las reglas d e tra d u c c ió n .
L as reglas d e tr a d u c c ió n d e u n p r o g r a m a e n L E X s o n p ro p o s ic io n e s d e la fo rm a

P\ { acción , }
P2 { acción2 }
• •• •••

p„ { acción , , }

d o n d e p¡ es u n a e x p re s ió n re g u la r y c a d a acción es u n fra g m e n to d e p r o g r a m a q u e
d e sc rib e c u á l h a d e ser la a c c ió n d e l a n a liz a d o r léx ico c u a n d o el p a t r ó n p , c o n c u e r d a
c o n u n le x e m a . E n L E X , las a c c io n e s se e sc rib e n e n C , e n g en eral, sin e m b a r g o , p u e ­
d e n e s ta r en c u a lq u ie r le n g u a je d e im p la n ta c ió n .
L a te rc e ra secció n c o n tie n e to d o s los p r o c e d im ie n to s a u x ilia re s q u e p u e d a n n e ­
c e sita r las a c c io n e s. A veces, esto s p r o c e d im ie n to s se p u e d e n c o m p i l a r p o r se p a ra d o
y c a r g a r c o n el a n a liz a d o r léxico.
U n a n a liz a d o r léxico c r e a d o p o r L E X se c o m p o r t a e n s in c ro n ía c o n u n a n a liz a ­
d o r s in tá c tic o c o m o sigue. C u a n d o es a c tiv a d o p o r el a n a liz a d o r s in tá c tic o , el a n a ­
liz a d o r léxico c o m ie n z a a le er su e n t r a d a re s ta n te , u n c a r á c te r a la vez, h a s ta q u e
e n c u e n tr e el m a y o r p refijo d e la e n t r a d a q u e c o n c u e r d e c o n u n a d e las e x p re sio n e s
reg u lares p,. E n to n c e s , e je c u ta la acción,. G e n e r a lm e n te , acción, d e v o lv e rá el c o n tro l
al a n a liz a d o r s in tá c tic o . S in e m b a r g o , si n o lo h ace, el a n a liz a d o r léx ico se d is p o n e
a e n c o n t r a r m á s le x em as, h a s ta q u e u n a a c c ió n h a c e q u e el c o n tr o l regrese al a n a li­
z a d o r s in tá c tic o . L a b ú s q u e d a re p e tid a d e le x e m a s h a s ta e n c o n t r a r u n a in s tru c c ió n
return e x p lícita p e r m ite al a n a liz a d o r léx ico p ro c e s a r e sp a c io s e n b la n c o y c o m e n ­
ta rio s d e m a n e r a a p r o p ia d a .
El a n a liz a d o r léxico d e v u e lv e u n a ú n ic a c a n tid a d , el c o m p o n e n t e léxico, al a n a ­
liz a d o r s in tá c tic o . P a r a p a s a r u n v a lo r d e a t r i b u t o c o n la in f o r m a c ió n d e l le x e m a , se
p u e d e a s ig n a r u n a v a ria b le g lo b a l lla m a d a y y l v a l .
3.5 L E N G U A JE P A R A ESPECIFICACION DE A N A L IZ A D O R E S L E X IC O S III

E jem p lo 3 .1 1 . L a figura 3 .1 8 e s u n p r o g r a m a e n L E X q u e r e c o n o c e los c o m p o n e n ­


te s léxicos d e la figura 3 .1 0 y d e v u e lv e el c o m p o n e n te léxico e n c o n tr a d o . A lg u n as
o b s e r v a c io n e s s o b re el c ó d ig o s e r v ir á n p a r a i n t r o d u c i r m u c h a s c a ra c te r ís tic a s im ­
p o r ta n te s d e L E X .

%{
/* d e f i n i c i ó n d e las c o n s t a n t e s m a n i f i e s t a s
MEN, MEI, IGU, DIF, M A Y , MAI,
IF, THEN, ELSE, ID, NUMERO, OPREL */

%}
/* definiciones regulares */
delim l \t\nj
eb {d e 1 i m }+
letra (A -Za-z]
dígito (0 -9 )
id ¡ l e t r a { ( (letra) i {dígito})*
número {d í g i t o ) + (\. { d í g i t o }+ )?(E [+\— ] ? { d í g i t o } +)?

%%

¡eb¡ {/* n o h a y a c c i ó n ni se d e v u e l v e n a d a */}


if r e t u r n ( I F ) ;}
then r e t u r n ( T H E N ) ;}
else r e t u r n ( E L S E ) ;}
(id } {yylval = i n s t a l a _ i d ( ); return(ID);}
{núme r o } iyylval = instala_núm; return{NUMERO);¡
{yylval = MEN; r e t u r n ( O P R E L ) ;}
{yylval = MEI; r e t u r n ( O P R E L ) ;}
tiM ti
{yylval = IGU; r e t u r n ( O P R E L ) ;}
H < > «
'yylval = DIF; r e t u r n ( O P R E L ) ;}
{y y l v a l = MAY; r e t u r n ( O P R E L ) ;}
">=» (y y l v a l = MAI; r e t u r n ( O P R E L ) ;}

%%

instala_id() {
/* pro ced im ien to para in stala r el lexem a, cuyo prim er
carácter está apuntado por yytexto y cuya l o n g i t u d es
yylong, dentro de la t a b l a d e s í m b o l o s y d e v u e l v e un
a p u n t a d o r a él */

}
instala_núm() {
/* procedimiento similar para i n s t a l a r un l e x e m a q u e es
un número */

Fig. 3.18. P rogram a en LEX para los c o m p o n e n te s léxicos d e la figura 3.10.


112 A N A L ISIS LEXICO

E n la secció n d e d e c la ra c io n e s, a p a re c e ( u n lu g a r p a r a ) la d e c la ra c ió n d e c ie rta s
c o n s ta n te s m a n ifie sta s u tiliz a d a s p o r las reglas d e traducción*1. E sta s d e c la ra c io n e s
e s tá n e n c e r r a d a s e n tr e llaves esp eciales %{ y %}. T o d o lo q u e a p a r e z c a e n tr e estas lla­
ves se c o p ia d ir e c ta m e n te e n el a n a liz a d o r léx ico l e x . y y . c , y n o se c o n s id e r a c o m o
p a rte d e las d e fin ic io n e s reg u la re s ni d e las reglas d e tra d u c c ió n . L o s p r o c e d im ie n to s
a u x ilia re s d e la te rc e ra secció n tie n e n a s ig n a d o e x a c ta m e n te el m is m o tr a ta m ie n to .
E n la fig u ra 3 .1 8 h a y d o s p ro c e d im ie n to s , i n s t a l a - i d e i n s t a l a _ n ú m . q u e son
u tilizados p o r las reglas d e tra d u c c ió n , y q u e se c o p ia rá n lite ra lm e n te e n l e x . y y . c .
E n la se c c ió n d e d e fin ic io n e s ta m b ié n se in c lu y e n a lg u n a s d e fin ic io n e s regulares.
C a d a u n a d e estas d e fin ic io n e s co n siste e n u n n o m b r e y u n a e x p re s ió n re g u la r re­
p r e s e n ta d a p o r ese n o m b r e . P o r e je m p lo , el p r im e r n o m b r e d e fin id o es d e l i m , q u e
re p r e s e n ta a la clase d e c a ra c te re s ( \ t \ n ] , es d e c ir, c u a lq u ie r a d e los tres sím b o lo s,
b la n c o , T A B (re p r e s e n ta d o p o r \ t ) , o n u e v a línea. L a s e g u n d a d e fin ic ió n es la d e
e s p a c io e n b la n c o , re p re s e n ta d a p o r el n o m b r e eb. El e s p a c io e n b la n c o es to d a se­
c u e n c ia d e u n o o m á s c a ra c te re s d e lim ita d o re s . O b sé rv e se q u e en L E X la p a la b ra
d e l i m d e b e e s ta r e n tr e llaves p a r a d is tin g u irla del p a t r ó n q u e c o n s ta d e las c in c o
le tra s delim.
E n la d e fin ic ió n d e l e t r a , se v e el u s o d e u n a clase d e c a ra c te re s . L a a b re v ia tu r a
( A - Z a - z ] r e p re s e n ta c u a lq u ie r a d e las le tra s m a y ú sc u la s d e la A a la z o d e las le­
tras m in ú s c u la s d e la a a la z. L a q u i n t a d e fin ic ió n , d e id. usa p arén tesis, q u e son
m e ta s ím b o lo s d e L E X . c o n su sig n ificad o n a tu ra l d e a g ru p a d o re s . Ig u a lm e n te , la b a ­
rra v e rtic a l es u n m e ta s im b o lo d e L E X q u e sig nifica u n ió n .
E n la ú ltim a d e fin ic ió n reg u la r, d e n ú m e r o , se o b s e rv a a lg ú n o tr o d e ta lle . ? se
u tiliz a c o m o m e ta s im b o lo , c o n su sig n ificad o h a b itu a l d e “c e r o o u n c a so d e ” . T a m ­
b ié n se o b s e rv a la d ia g o n a l in v e rtid a u tiliz a d a c o m o salid a, p a r a p e r m itir q u e u n c a ­
r á c te r q u e sea m e ta s im b o lo d e L E X te n g a su sig n ific a d o n a tu r a l. E n p a rtic u la r, el
p u n t o d e c im a l e n la d e fin ic ió n d e n ú m e r o se e x p re s a c o n u n \ . , p o r q u e u n p u n t o
p o r sí m is m o re p r e s e n ta la clase d e c a ra c te re s d e to d o s los c a ra c te re s s a lv o la n u e v a
lín ea, t a n t o e n L E X c o m o e n m u c h o s p r o g r a m a s d e siste m a s e n U N I X q u e tr a b a ja n
c o n e x p re sio n e s reg u lares. E n la clase d e c a ra c te re s [ + \ - J , se c o lo c a u n a d ia g o n a l
in v e rtid a d e la n te del sig n o m e n o s , p o r q u e solo, el signo m e n o s se p o d r ía c o n f u n d ir
c o n su uso p a r a r e p r e s e n ta r u n in te rv a lo , c o m o e n [ A - z J\
H a y o tr a f o r m a d e h a c e r q u e los c a ra c te re s te n g a n su sig n ificad o n a tu r a l, a u n q u e
se a n m e ta s ím b o lo s d e L E X : e n c e rra rlo s e n tr e co m illas. E n el a p a r ta d o d e las reglas
d e tr a d u c c ió n se m u e s tr a u n e je m p lo d e e s ta c o n v e n c ió n d o n d e los seis o p e ra d o re s
re la c ió n a le s están e n tr e c o m illa s6.

4 E s n o r m a l u sar e l p ro g ra m a l e x . y y . c c o m o su b r u tin a d e u n a n a liz a d o r s in tá c tic o g e n e r a d o por


Y a c e , u n g en era d o r d e a n a liz a d o r e s sin tá c tic o s q u e s e e stu d ia r á e n e l c a p itu lo 4 . E n e ste c a s o , el
a n a liz a d o r s in tá c tic o p r o p o rcio n a ría la d e c la r a ció n d e la s c o n s ta n te s m a n ifie s ta s al c o m p ila r lo co n
el p ro g ra m a l e x . y y . c .
5 E n rea lid a d . L E X m a n e ja la c la s e d e c a ra cteres [ + - ) c o r r e c ta m e n te s in la d ia g o n a l in v e rtid a , por­
q u e el s ig n o m e n o s q u e a p arece a l fin al n o p u e d e rep resen tar u n in terv a lo .
h S e h iz o a sí p o r q u e < y > s o n m e ta s ím b o lo s d e L E X ; e n c ie r r a n e n tr e c o m illa s a lo s n o m b r e s d e lo s
“e sta d o s" , p e r m itie n d o a L E X c a m b ia r d e e sta d o al e n c o n tr a r d e te r m in a d o s c o m p o n e n t e s lé x ic o s,
c o m o c o m e n ta r io s o c a d e n a s e n tr e c o m illa s , q u e h a n d e te n e r u n tr a ta m ie n to d ife r e n te al d e l te x to
h a b itu a l. N o e s n e c esa r io e n tr e c o m illa r e l s ig n o ig u a l, p e r o ta m p o c o e stá p r o h ib id o .
3.5 L E N G U A J E P A R A ESPECIFICACION D E A N A L IZ A D O R E S L E X IC O S 113

Se v a n a c o n s id e r a r a h o r a las reglas d e tr a d u c c ió n d e la secció n q u e sig u e a los


p r im e r o s %%. L a p r im e r a reg la e s ta b le c e q u e si se e n c u e n t r a u n e b . e s d e c ir, c u a l ­
q u i e r s e c u e n c ia m á x im a d e e sp a c io s e n b la n co , c a ra c te re s T A B o d e n u e v a lín ea, n o
se h a c e n a d a . S o b re to d o , n o se d e v u e lv e el c o n tro l al a n a liz a d o r s in tá c tic o . R e c u é r ­
d e se q u e la e s tr u c tu r a del a n a liz a d o r léx ico e s ta l q u e sigue in t e n t a n d o re c o n o c e r
c o m p o n e n te s léxicos h a s ta q u e la a c c ió n a s o c ia d a a u n e n c u e n t r o ex ija u n return.
L a s e g u n d a regla esta b le c e q u e si a p a re c e n las le tra s i f . se d e v u e lv e el c o m p o ­
n e n te léxico I F , q u e es u n a c o n s ta n t e m a n ifie s ta q u e r e p re s e n ta u n n ú m e r o e n te r o
q u e el a n a liz a d o r s in tá c tic o in te r p r e ta c o m o el c o m p o n e n t e léx ico i f . L as d o s reglas
sig u ie n tes tr a t a n las p a la b ra s c lav e t h e n y e l s e d e fo rm a sim ilar.
E n la regla p a r a id, a p a r e c e n d o s p ro p o s ic io n e s e n la a c c ió n a so c ia d a . P rim e ro ,
a la v a ria b le y y v a l se le a s ig n a el v alo r d e v u e lto p o r el p r o c e d im ie n to i n s t a l a \ i d ;
la d e fin ic ió n d e este p r o c e d im ie n to está e n la te rc e ra sección, y y l v a l es u n a v a ria ­
ble c u y a d e fin ic ió n a p a re c e e n la salid a d e L E X l e x . y y . c . q u e ta m b ié n está a d is ­
p o sic ió n del a n a liz a d o r s in tá c tic o . El p r o p ó s ito d e y y l v a l es re te n e r el v a lo r léxico
d e v u e lto , p u e s to q u e la s e g u n d a p ro p o s ic ió n d e la a cció n , r e t u r n ( I D ) , só lo p u e d e
d e v o lv e r u n c ó d ig o p a r a la clase d e c o m p o n e n te s léxicos.
N o se m u e s t r a n los d e ta lle s del c ó d ig o p a r a i n s t a l a _ i d ( ) . S in e m b a r g o , se
p u e d e s u p o n e r q u e b u s c a en la ta b la d e s ím b o lo s el le x e m a q u e c o n c o r d ó c o n el p a ­
tr ó n id. L E X p o n e el le x e m a a d isp o sic ió n d e las r u tin a s q u e a p a re c e n e n la te rc e ra
se c c ió n m e d i a n t e la s d o s v a r ia b le s y y t e x t o e y y l o n g . L a v a r ia b le y y t e x t o
c o r r e s p o n d e a la v a ria b le q u e se h a e s ta d o ll a m a n d o in ic io -le x e m a , e s d e c ir, un
a p u n t a d o r al p r im e r c a r á c te r del le x em a; y y l o n g e s u n e n te r o q u e in d ic a la lo n g i­
tu d d e l lex em a. P o r e je m p lo , si i n s t a l a _ i d n o e n c u e n t r a al id e n tific a d o r e n la ta ­
bla d e s ím b o lo s, le p u e d e c re a r u n a n u e v a e n tr a d a . L o s y y l o n g c a ra c te re s d e la e n ­
tr a d a . c o m e n z a n d o en y y t e x t o , se p u e d e n c o p ia r e n u n a m a tr iz d e c a ra c te re s y de­
lim itarse c o n u n m a rc a d o r d e fin de c a d e n a (F D C ), c o m o en la sección 2.7. L a nuev a
e n t r a d a en la ta b la d e s ím b o lo s a p u n t a r ía al p r in c ip io d e esta co pia.
L a sig u ie n te regla c o n s id e ra d e igual m a n e r a los n ú m e ro s . E n las seis ú ltim a s re­
glas, y y l v a l se u tiliz a p a r a d e v o lv e r u n c ó d ig o p a r a el o p e r a d o r re la c io n a l e n c o n ­
tra d o . m ie n tr a s q u e el v e rd a d e r o v a lo r q u e se d e v u e lv e e n c a d a c a so es el c ó d ig o del
c o m p o n e n te léxico op rel.
S u p ó n g a se q u e al a n a liz a d o r léx ico q u e re su lta del p r o g r a m a d e la figura 3.1 se
le d a u n a e n t r a d a f o r m a d a p o r d o s c a ra c te re s T A B . las le tra s i f y u n e s p a c io en
b la n co . L o s d o s c a ra c te re s T A B son el p re fijo inicial m á s la rg o d e la e n tr a d a e m p a ­
re ja d o p o r u n p a tró n , o sea. el p a t r ó n e b . L a a c c ió n q u e c o r r e s p o n d e a e b e s n o
h a c e r n a d a , d e m o d o q u e el a n a l i z a d o r léx ico p a s a el a p u n t a d o r d e in ic io del le­
x e m a , y y t e x t o , a la i y e m p ie z a a b u s c a r o t r o c o m p o n e n te léxico.
El sig u ie n te le x e m a a e m p a r e ja r es i f . A d v ié rta se q u e los p a tro n e s , i f e { id ¡.
c o n c u e r d a n c o n este le x e m a , y n in g ú n p a tró n c o n c u e r d a c o n u n a c a d e n a m a y o r.
C o m o el p a tró n d e la p a la b ra clave i f p re c e d e al p a tró n d e los id e n tific a d o re s d e la
lista d e la fig u ra 3 .1 8 , el c o n flic to se resu elv e a fav o r d e la p a la b ra clave. E n general,
esta estrateg ia d e reso lu ció n d e a m b ig ü e d a d e s facilita el re se rv a r p a la b r a s c lav e re­
la c io n á n d o la s p o r d e la n te del p a t r ó n d e los id en tificad o res.
C o m o o t r o e je m p lo , s u p ó n g a s e q u e <= s o n los d o s p r im e r o s c a ra c te re s q u e se
leen. A u n q u e el p a tró n < c o n c u e r d a c o n el p r im e r carácter, n o es el p a tró n m á s largo
114 ANALISIS LEXICO

q u e c o n c u e r d a c o n u n prefijo d e la e n tr a d a . D e este m o d o , la e stra te g ia d e L E X d e


se le c c io n a r el m a y o r p re fijo q u e c o n c u e r d e c o n u n p a t r ó n facilita la re s o lu c ió n del
c o n flic to e n tr e < y <= s e g ú n se e s p e ra b a (e lig ien d o <= c o m o el sig u ie n te c o m p o n e n te
léxico). □

E l o p e r a d o r d e p re a n á lis is

C o m o se h a in d ic a d o e n la secció n 3.1, lo s a n a liz a d o re s léxicos p a r a a lg u n a s c o n s ­


tr u c c io n e s d e los le n g u a je s d e p r o g r a m a c ió n n e c e s ita n h a c e r u n p re a n á lisis d e l fin
d e u n le x e m a a n t e s d e p o d e r d e t e r m i n a r c o n c e r te z a u n c o m p o n e n t e léxico. R e ­
c u é rd e se el e je m p lo d e F O R T R A N p a r a el p a r d e p ro p o sic io n e s

DO 5 I = 1 .2 5
DO 5 I = 1 ,2 5

E n F O R T R A N , los e sp a c io s e n b la n c o n o s o n sig n ificativ o s f u e ra d e lo s c o m e n ta ­


rio s y d e las c a d e n a s H o lle rith , d e m o d o q u e su p ó n g a se q u e to d o s los e sp a c io s en
b la n c o e lim in a b le s se s u p r im e n a n te s d e c o m e n z a r el a n álisis léxico. E n ta l caso , las
p ro p o s ic io n e s a n te rio re s a p a re c e ría n al a n a liz a d o r léxico c o m o

D 0 5 1 = l.2 5
D 0 5 I= 1 ,2 5

E n la p r im e r a p ro p o s ic ió n , n o se p u e d e s a b e r q u e la c a d e n a d o es p a rte del id e n ti­


fic a d o r D 0 5 I , h a s ta h a b e r visto el p u n t o d e c im a l. E n la s e g u n d a p ro p o s ic ió n , DO p o r
sí so la es u n a p a la b ra clave.
E n L E X , u n p a t r ó n se p u e d e e scrib ir d e la f o r m a r , / r 2, d o n d e r¡ y r 2 s o n ex p re-

s io n e s reg u lares, y q u ie re d e c ir q u e se e m p a r e je u n a c a d e n a e n r u p e ro só lo si v a
seg u id a d e u n a c a d e n a e n r 2. L a e x p re sió n re g u la r r2 d e s p u é s d e l o p e r a d o r d e p r e a ­
nálisis in d ic a el c o n te x to a d e c u a d o p a r a u n a c o n c o r d a n c ia ; só lo se u tiliza p a r a res­
trin g ir u n a c o n c o r d a n c ia , n o p a r a ser p a rte d e ella. P o r e je m p lo , u n a esp ecificación
e n L E X q u e re c o n o c e la p a la b ra clave DO e n el c o n te x to a n te r io r es

D O / ({letra} ¡ ¡dígito})* = ({letra} ¡ ¡dígito})*.

C o n e s ta e s p e c ific a c ió n , el a n a l i z a d o r léx ico b u s c a r á e n su b u ffer d e e n t r a d a u n a


s e c u e n c ia d e letras y d íg ito s seg u id a d e u n sig n o igual, seg u id o d e letras y dígitos,
se g u id o s d e u n a c o m a , p a r a te n e r la s e g u rid a d d e q u e n o te n ía u n a p ro p o s ic ió n d e
a s ig n a c ió n . S ó lo e n to n c e s lo s c a ra c te re s D y o , q u e p re c e d e n al o p e r a d o r d e p r e a n á ­
lisis / serán p a rte del le x e m a e m p a r e ja d o . D esp u és d e u n a c o n c o r d a n c ia c o n éxito,
y y t e x t o a p u n t a a D y a y y l o n g = 2. O b s é rv e s e q u e e s te s e n c illo p a t r ó n d e p r e ­
a n álisis p e rm ite el r e c o n o c im ie n to d e d o c u a n d o v a y a seg u id o d e b a s u ra , c o m o en
Z4=6Q, p e r o n u n c a re c o n o c e rá a d o c o m o p a r te d e u n id e n tific a d o r.

E jem p lo 3 .1 2 . Se p u e d e u tiliz a r el o p e r a d o r d e p re a n á lisis p a r a t r a t a r o t r o p ro b le m a


difícil d e a n álisis léxico en F O R T R A N : d is tin g u ir las p a la b ra s c lav e d e lo s identifi­
cad o res. P o r e je m p lo , la e n tr a d a

I F (I , J) = 3

es u n a p ro p o s ic ió n d e a s ig n a c ió n p e r f e c ta m e n te v á lid a e n F O R T R A N , n o u n a p ro ­
3.6 A U T O M A T A S FINITO S 115

p o sic ió n i f lógica. U n a fo rm a d e e s p e c ific a r la p a la b r a c lav e i f u tiliz a n d o L E X es


d e f in ir s u s p o s ib le s c o n t e x to s a d e c u a d o s u tiliz a n d o el o p e r a d o r d e p re a n á lis is . L a
f o r m a s im p le d e la p ro p o s ic ió n i f ló g ica es

if ( condición ) proposición

F O R T R A N 77 in tr o d u jo o t r a fo rm a d e la p ro p o s ic ió n i f lógica:

if ( condición ) then
b lo q u e-th en
ELSE
bloque ~else
END IF

Se o b s e rv a q u e to d a p ro p o s ic ió n n o e tiq u e ta d a d e F O R T R A N c o m ie n z a c o n u n a
letra y q u e to d o p a ré n te sis d e r e c h o u tiliz a d o p a r a s u b in d iz a r o a g r u p a r o p e r a n d o s
d e b e ir s e g u id o d e u n s ím b o lo d e o p e r a d o r , c o m o =, + o c o m a , o t r o p a ré n te s is d e ­
re c h o o el fin d e la p ro p o s ic ió n . E ste p a ré n te sis d e r e c h o n o p u e d e ir s e g u id o d e u n a
letra. E n e s ta situ a c ió n , p a r a c o n f ir m a r q u e I F es u n a p a la b r a c lav e e n v ez d e u n
n o m b r e d e m a tr iz , se e x a m in a p o r a d e la n ta d o , b u s c a n d o u n p a ré n te s is d e r e c h o se­
g u id o d e u n a le tra a n te s d e q u e a p a re z c a u n c a r á c te r d e n u e v a lín ea (se s u p o n e q u e
las ta rje ta s d e c o n t in u a c i ó n “ c a n c e la n ” el c a r á c te r d e n u e v a lín ea a n te rio r). E ste p a ­
tr ó n p a r a la p a la b ra c lav e I F se p u e d e e s c rib ir c o m o

IF / \( .* \) (letra}

El p u n t o r e p re s e n ta “c u a lq u ie r c a r á c te r salv o n u e v a lín e a ” y las d ia g o n a le s in v e rti­


d a s d e la n te d e lo s p a ré n te sis e x ig en q u e L E X las c o n s id e re lite ra lm e n te , y n o c o m o
m e ta s ím b o lo s p a r a a g r u p a r e x p re s io n e s reg u la re s (véase E jercicio 3.10). □

O t r a f o r m a d e a b o r d a r el p r o b le m a p la n te a d o p o r las p ro p o s ic io n e s i f d e F O R ­
T R A N es, d e s p u é s d e h a b e r v isto I F ( , d e t e r m i n a r si I F se d e c la ró c o m o m a triz.
S ó lo e n ta l c a so se b u s c a t o d o el p a t r ó n a n te r io r . E sta s p r u e b a s h a c e n m á s difícil la
ap licació n a u to m á tic a d e u n a n a liz a d o r léxico a p a r tir d e u n a especificación e n L E X ,
y a la rg o p la zo p u e d e n in c lu so h a c e r p e r d e r tie m p o , d a d a s las f re c u e n te s v erificacio ­
n e s q u e d e b e h a c e r el p r o g r a m a q u e s im u la u n d ia g ra m a d e tra n s ic io n e s p a r a d e te r ­
m i n a r si se d e b e n e f e c tu a r tales p ru e b a s . O b sé rv e se q u e d iv id ir F O R T R A N e n c o m ­
p o n e n te s léxicos es u n a ta r e a ta n irre g u la r q u e m u c h a s veces es m á s fácil e s c rib ir u n
a n a l iz a d o r léx ico esp e c ia l p a r a F O R T R A N e n u n le n g u a je d e p r o g r a m a c ió n c o n ­
v e n c io n a l, q u e u s a r u n g e n e r a d o r a u t o m á t i c o d e a n a liz a d o re s léxicos.

3 .6 A U T O M A T A S F IN IT O S

U n reconocedor d e u n le n g u a je es u n p r o g r a m a q u e t o m a c o m o e n t r a d a u n a c a d e n a
x y re s p o n d e “ sí” si x es u n a frase del p r o g r a m a , y “ n o ” , si n o lo es. S e c o m p ila u n a
e x p re sió n re g u la r e n u n r e c o n o c e d o r c o n s tr u y e n d o u n d ia g ra m a d e tra n s ic io n e s g e­
n e r a liz a d o lla m a d o a u t ó m a t a fin ito . U n a u t ó m a t a fin ito p u e d e s e r d e te r m in is ta o
n o d e te rm in is ta , d o n d e “ n o d e te r m in is ta ” sign ifica q u e e n u n e s ta d o se p u e d e d a r el
c a so d e te n e r m á s d e u n a tr a n s ic ió n p a r a el m i s m o s ím b o lo d e e n tra d a .
116 A N A L ISIS LEXICO

T a n to los a u t ó m a t a s fin ito s d e te r m in is ta s c o m o los n o d e te r m in is ta s p u e d e n re­


c o n o c e r c o n p recisió n a los c o n j u n t o s reg u lares. P o r ta n to , a m b o s p u e d e n re c o n o c e r
c o n p re c isió n lo q u e d e n o t a n la s e x p r e s io n e s re g u la re s. S in e m b a r g o , h a y u n c o n ­
flicto e n tr e e s p a c io y tie m p o ; m ie n tr a s q u e u n a u t ó m a t a f in ito d e t e r m in i s t a p u e d e
d a r re c o n o c e d o re s m á s r á p id o s q u e u n o n o d e te r m in is ta , u n a u t ó m a t a fin ito d e te r ­
m in is ta p u e d e s e r m u c h o m a y o r q u e u n a u t ó m a t a n o d e te r m in is ta e q u iv a le n te . E n
la sig u ie n te secció n , se in tr o d u c e n m é to d o s p a r a c o n v e r tir e x p re s io n e s reg u la re s en
a m b a s clases d e a u t ó m a t a s finitos. L a c o n v e rs ió n e n u n a u t ó m a t a n o d e te r m in is ta
e s m á s d ire c ta , p o r lo q u e p r im e r o se e s tu d ia este caso.
L o s e je m p lo s d e esta secció n y d e la sig u ie n te se refieren p r in c ip a lm e n te a l le n ­
g u aje re p re s e n ta d o p o r la e x p re sió n re g u la r ( a | b)*abb, q u e e s tá f o r m a d a p o r el c o n ­
j u n t o d e to d a s las c a d e n a s d e c a ra c te re s a y b q u e te r m in e n e n abb. E n la p rá c tic a
ex isten le n g u a je s sim ilares. P o r e je m p lo , u n a e x p re s ió n re g u la r p a r a los n o m b r e s d e
to d o s los a rc h iv o s q u e te r m in e n e n . o es d e la f o r m a ( . | o | c)* . o , d o n d e e r e -
p re s e n ta c u a lq u ie r c a r á c te r salv o u n p u n t o o u n a o . O tr o e je m p lo : d e s p u é s d e la se­
c u e n c ia d e a p e r t u r a / * , los c o m e n ta r io s e n C c o n s is te n e n c u a l q u ie r s e c u e n c ia d e
c a ra c te re s q u e te r m in e e n * / , c o n el re q u is ito a d ic io n a l d e q u e n in g ú n p re fijo p ro ­
p io te r m in e e n * / .

A u tó m a t a s fin ito s n o d e te r m in is ta s

U n a u tó m a ta fin ito no determ in ista (a b re v ia d o , A F N ) es u n m o d e lo m a te m á tic o


f o r m a d o por:

1. u n c o n j u n t o d e estados S
2. u n c o n j u n t o d e s ím b o lo s d e e n t r a d a 2 (el alfabeto de sím bolos d e entrada)
3. u n a f u n c ió n d e tra n s ic ió n m u eve q u e tr a n s f o r m a p a re s e s ta d o -s ím b o lo e n c o n ­
j u n t o s d e estad o s
4. u n e s ta d o s0 q u e se c o n s id e r a el esta d o d e inicio ( o inicial)
5. u n c o n j u n t o d e e s ta d o s F c o n s id e ra d o s c o m o estados d e aceptación ( o finales)

U n A F N se p u e d e r e p r e s e n ta r d i a g r a m á t i c a m e n t e m e d i a n t e u n g r a f o d ir ig id o e ti­
q u e ta d o , lla m a d o grafo d e transiciones , e n el q u e los n o d o s s o n los e s ta d o s y las aris­
ta s e tiq u e ta d a s re p re s e n ta n la f u n c ió n d e tra n s ic ió n . E ste g rafo se p arece a u n d ia ­
g ra m a d e tran sicio nes, p e ro el m is m o c a rá c te r p u e d e e tiq u e ta r d o s o m á s tra n sic io n e s
fu era d e u n e s ta d o , y las arista s p u e d e n e tiq u e ta rs e c o n el s ím b o lo esp ecial € y c o n
s ím b o lo s d e e n tra d a .
E n la figura 3 .1 9 se m u e s tra el grafo d e tra n s ic io n e s d e u n A F N q u e r e c o n o c e al

Fig. 3 .1 9 . U n a u tó m a ta finito n o determ inista.


3.6 A U T O M A T A S FINITO S 117

le n g u a je (a \ b )* a b b . El c o n j u n t o d e e s ta d o s d e l A E N es ¡0. 1. 2. 3) y el a lfa b e to de
s ím b o lo s d e e n tr a d a e s {a, b}. El e s ta d o 0 d e la figura 3 .1 9 se c o n s id e r a el e s ta d o d e
inicio, y el e s ta d o d e a c e p ta c ió n 3 está in d ic a d o m e d ia n te u n c ír c u lo dob le.
C u a n d o se d e sc rib e u n A F N . se u tiliz a la re p re s e n ta c ió n d e g rafo d e tra n sic io n e s.
E n u n c o m p u ta d o r , p u e d e a p licarse la f u n c ió n d e tra n s ic ió n d e u n A F N d e varias
fo rm a s, c o m o se verá m á s a d e la n te . L a im p la n ta c ió n m á s sen cilla es u n a ta b la d e
tra n sicio n es e n d o n d e hay u n a fila p o r c a d a e s ta d o y u n a c o l u m n a p o r c a d a s ím b o lo
d e e n t r a d a y e . si es n ecesario . L a e n tr a d a p a ra la fila i y el s ím b o lo a e n la ta b la es
el c o n j u n t o d e e s ta d o s ( o m á s p r o b a b le m e n te en la p rá c tic a , u n a p u n t a d o r al c o n ­
j u n t o d e esta d o s) q u e p u e d e s e r a lc a n z a d o p o r u n a tra n s ic ió n del e s ta d o / c o n la e n ­
t r a d a a. E n la fig u ra 3 .2 0 se m u e s t r a la ta b la d e tr a n s i c i o n e s p a r a el A F N d e la
fig u ra 3.19.

S ím b o l o d e E n t r a d a
Est a d o
a b

0 { 0 .1 } {0}
1 —
{2}
2 —
{3}

Fig. 3.20. T a b la d e transiciones p a ra el a u tó m a ta finito d e la figura 3.19.

La re p re s e n ta c ió n e n f o r m a d e ta b la d e tra n s ic io n e s tie n e la v e n ta ja d e q u e p r o ­
p o rc io n a r á p id o acce so a las tra n s ic io n e s d e u n d e t e r m in a d o e s ta d o en u n c a rá c te r
d a d o ; su in c o n v e n ie n te es q u e p u e d e o c u p a r g ra n c a n tid a d d e e s p a c io c u a n d o el a l­
fa b e to d e e n t r a d a e s g r a n d e y la m a y o ría d e las tra n s ic io n e s son h acia el c o n j u n t o
vacío. L a s re p re s e n ta c io n e s d e listas d e a d y a c e n c ia s d e la fu n c ió n d e tra n s ic ió n p ro ­
p o r c io n a n im p la n ta c io n e s m á s c o m p a c ta s , p e ro el a c c e s o a u n a tra n s ic ió n d a d a es
m á s le n to . D e b e q u e d a r c la ro q u e se p u e d e tr a n s f o r m a r f á c ilm e n te c u a lq u ie r a d e es­
ta s im p la n ta c io n e s d e u n a u t ó m a t a fin ito e n otra.
U n A F N a cep ta u n a c a d e n a d e e n t r a d a x si. y só lo si, h a y a lg ú n c a m i n o e n el
grafo d e tra n sic io n e s d e sd e el estad o d e in ic io a algún e s ta d o d e ac e p ta c ió n , d e fo rm a
q u e las e tiq u e ta s d e las arista s a lo la rg o d e d i c h o c a m i n o d e le tre e n .v. El A F N d e la
fig u ra 3 .1 9 a c e p ta las c a d e n a s d e e n t r a d a a b b , a a b b , b a h b . a a a b b ,. . . . P o r e je m p lo .
a a b b es a c e p ta d a p o r el c a m in o d e s d e 0 , s ig u ie n d o la a ris ta e tiq u e ta d a a d e n u e v o
al e s ta d o 0 y d e s p u é s a los e s ta d o s 1, 2 y 3 p o r las arista s e tiq u e ta d a s a , b y b. res­
p e c tiv a m e n te .
Se p u e d e r e p r e s e n ta r u n c a m in o m e d ia n te u n a s e c u e n c ia d e tra n s ic io n e s d e es­
ta d o s lla m a d a m o v im ie n to s . El sig u ie n te d ia g ra m a m u e s tra los m o v im ie n to s reali­
z a d o s p a r a a c e p ta r la c a d e n a d e e n t r a d a a a b b ;

t\ a í\ a t a
O --------- ► 0 1 ► 2 --------- ► 3

E n g en eral, p u e d e h a b e r m á s d e u n a s e c u e n c ia d e m o v im ie n to s q u e c o n d u z c a a u n
e s ta d o d e a c e p ta c ió n . O b s é rv e s e q u e p u e d e n re a liz a rse o tr a s s e c u e n c ia s d e m o v i­
118 ANALISIS LEXICO

m ie n to s en la c a d e n a d e e n t r a d a aabb. p e r o o c u r r e q u e n in g u n a d e d ic h a s s e c u e n ­
cia s te r m in a e n u n e s ta d o d e a c e p ta c ió n . P o r e je m p lo , o tr a s e c u e n c ia d e m o v i m ie n ­
to s e n la e n tr a d a aabb sigue r e in s e r ta n d o el e s ta d o d e n o a c e p ta c ió n 0:

0 _ 0 _í _* 0 — o — - o

El lenguaje definido p o r u n A F N es el c o n ju n to d e c a d e n a s d e e n tr a d a q u e acepta.


N o es difícil d e m o s t r a r q u e el A F N d e la figura 3 .1 9 a c e p ta (a | b)*abb.

E je m p lo 3 .1 3 . E n la figura 3 .2 1 , se ve c ó m o u n A F N r e c o n o c e aa* \bb*. L a c a d e n a


a a a es a c e p ta d a re c o r r ie n d o los e s ta d o s 0 , !, 2 , 2 y 2. L as e tiq u e ta s d e e s ta s arista s
son e. a. a y a . c u y a c o n c a te n a c ió n e s aaa. O b sérv ese q u e los s ím b o lo s € “ d e s a p a ­
re c e n " e n u n a c o n c a te n a c ió n . □

inicio
O

E ír. 3.21. U n A F N q u e acep ta un* : />/>*.

A u tó m a ta s fin ito s d e te rm in is ta s

U n a u tó m a ta fin ito determ in ista (a b re v ia d o A F D ) es u n c a so especial d e u n a u t ó ­


m a ta fin ito n o d e te r m in is ta e n el cual

1. n in g ú n e s ta d o tien e u n a tran sició n t . es d ecir, u n a tran sició n c o n la e n tra d a e. y


2. p a r a c a d a e s ta d o s y c a d a s ím b o lo d e e n t r a d a a . h a y a lo s u m o u n a a ris ta e t i­
q u e t a d a ¿ / q u e sale d e s.
U n a u t ó m a t a fin ito d e te r m in is ta tie n e a lo s u m o u n a tra n s ic ió n d e sd e c a d a e s ta d o
c o n c u a lq u ie r e n tr a d a . Si se e s tá u s a n d o u n a ta b la d e tr a n s ic io n e s p a ra re p re s e n ta r
la f u n c ió n d e tra n s ic ió n d e u n A F D , e n to n c e s c a d a e n tr a d a e n la ta b la d e tr a n s ic io ­
nes es u n so lo e s ta d o . C o m o c o n s e c u e n c ia , e s m u y fácil d e t e r m i n a r si u n a u tó m a ta
f in ito d e te r m in is ta a c e p ta o n o u n a c a d e n a d e e n tr a d a , p u e s to q u e h a y a lo s u m o u n
c a m in o d e sd e el e s ta d o d e in ic io e tiq u e ta d o c o n esa c a d e n a . El sig u ie n te a lg o ritm o
m u e s tr a c ó m o s im u la r el c o m p o r t a m i e n t o d e u n A F D c o n u n a c a d e n a d e e n tra d a .

A lg o ritm o 3 .1 . S im u la c ió n d e u n A F D .

E ntrada. U n a c a d e n a d e e n t r a d a x q u e te r m in a c o n u n c a r á c te r d e fin d e a rc h iv o
eof. U n A F D D c o n u n e s ta d o d e in ic io s0 y u n c o n j u n t o E d e e s ta d o s d e a c e p ta c ió n .

Salida. L a re s p u e s ta “sí” , si D a c e p ta x: “ n o " , e n c a so c o n tra rio .


3.6 A U T O M A T A S FINITO S 119

M étodo. A p liq ú e s e el a lg o ritm o d e la figura 3.22 a la c a d e n a d e e n t r a d a x . L a f u n ­


c ió n m u e v e (5, c) d a el e s ta d o al c u a l h a y u n a tra n s ic ió n d e sd e el e s ta d o s e n u n c a ­
r á c te r d e e n tr a d a c. La fu n c ió n sigtecar d e v u e lv e el sig u ie n te c a r á c te r d e la c a d e n a
d e e n tr a d a x . a

.v v.
c : = sigtecar
while c ¿ e o f do
v : = m ueve ts. <):
<’ : = sigtecar
end;
if ' está en / then
return “ si"
else retu rn “ no";

Fig. 3.22. S im ulación d e un AFD.

E je m p lo 3 .1 4 . E n la figura 3.23 se v e al g rafo d e tra n s ic io n e s d e u n a u t ó m a t a finito


d e te r m in is ta a c e p ta r el m is m o len g u aje (a | b)*ahb a c e p ta d o p o r el A F N d e la figura
3.19. C o n este A F D y la c a d e n a d e e n tr a d a ababb , el a lg o ritm o 3.1 sigue la s e c u e n ­
c ia d e e s ta d o s 0 . 1 . 2 , 1. 2, 3 y d e v u e lv e “s í” . □

F ír . 3 .2 3 . A F D q u e a c e p ta (a | b)*abb.

C o n v e rsió n d e u n A F N en un A F D

O b sérv ese q u e el A F N d e la figura 3 .1 9 tien e d o s tra n s ic io n e s d e s d e el e s ta d o 0 c o n


la e n t r a d a u \ es d ecir, p u e d e ir al e s ta d o 0 o al 1. Ig u a lm e n te , el A F N d e la fig u ra
3.21 tie n e d o s tra n s ic io n e s e n € d e s d e el e s ta d o 0. A u n q u e n o se h a y a ilu s tra d o c o n
u n e je m p lo , u n a situ a c ió n e n la q u e se p o d r ía elegir u n a tra n s ic ió n c o n e o c o n u n
s ím b o lo d e e n t r a d a real ta m b ié n p r o d u c e a m b ig ü e d a d . D ic h a s s itu a c io n e s, d o n d e la
fu n c ió n d e tra n s ic ió n tien e v ario s valores, h a c e n difícil s im u la r u n A F N c o n u n p r o ­
g r a m a d e c o m p u ta d o r . L a d e fin ic ió n d e a c e p ta c ió n s im p le m e n te esta b le c e q u e d e b e
h a b e r a lg ú n c a m in o e tiq u e ta d o p o r la c a d e n a d e e n t r a d a e n c u e s tió n q u e c o n d u z c a
d e sd e el e s ta d o d e in ic io a u n e s ta d o d e a c e p ta c ió n . P e ro si h a y m u c h o s c a m in o s q u e
d e le tre e n la m is m a c a d e n a d e e n tr a d a , q u iz á s h a y a q u e c o n s id e ra rlo s to d o s a n te s d e
e n c o n t r a r u n o q u e c o n d u z c a a la a c e p ta c ió n o d e s c u b r ir q u e n in g ú n c a m i n o c o n ­
d u c e a u n e s ta d o d e ac e p ta c ió n .
120 ANALISIS LEXICO

A h o ra se in tr o d u c e u n a lg o ritm o p a r a c o n s tr u i r a p a r tir d e u n A F N u n A F D q u e
r e c o n o z c a el m i s m o le n g u a je . E ste a lg o r itm o , a m e n u d o ll a m a d o construcción de
subconjunios . es ú til p a r a s im u l a r u n A F N p o r m e d io d e u n p r o g r a m a d e c o m p u ­
ta d o r. E n el sig u ie n te c a p ítu lo u n a lg o ritm o e s tr e c h a m e n te re la c io n a d o d e s e m p e ñ a
u n p a p e l f u n d a m e n ta l e n la c o n s tru c c ió n d e a n a liz a d o r e s s in tá c tic o s LR.
E n la ta b la d e tra n s ic io n e s d e u n A F N , c a d a e n tr a d a es u n c o n j u n t o d e estados;
e n la ta b la d e tra n s ic io n e s d e u n A F D , c a d a e n t r a d a es ta n sólo u n e s ta d o . L a idea
g en eral tras la c o n s tru c c ió n A F N a A F D es q u e c a d a e s ta d o d e A F D c o r r e s p o n d e a
u n c o n j u n t o d e e s ta d o s del A F N . El A F D u tiliz a u n e s ta d o p a r a lo c aliz ar to d o s los
p o sib les e s ta d o s e n los q u e p u e d e e s ta r el A F N d e s p u é s d e leer c a d a s ím b o lo d e la
e n tr a d a . E s d ecir, d e s p u é s d e leer la e n t r a d a a \a 2 . . . a n. el A F D se e n c u e n t r a e n un
e s ta d o q u e r e p re s e n ta al s u b c o n j u n t o T d e los e s ta d o s del A F N a lc a n z a b le s d e s d e el
e s ta d o d e in icio del A F N a lo largo d e a lg ú n c a m i n o e tiq u e ta d o c o n a^a 2 . . . a„. El
n ú m e r o d e estad o s d e A F D p u e d e ser e x p o n e n c ia l en el n ú m e r o d e estad o s del A F N ,
p e ro e n la p rá c tic a este p e o r c a so o c u r r e ra ra m e n te .

A lg o ritm o 3 .2 . {Construcción d e subconj untos.) C o n s tr u c c ió n d e un A F D a p a r tir


d e un A F N .

E ntrada. U n A F N N .

Salido. U n A F D D q u e a c e p ta el m is m o lenguaje.
M étodo. El a lg o r itm o c o n s tr u y e u n a ta b la d e tra n s ic io n e s tranD p a r a D . C a d a es­
t a d o d e l A F D es u n c o n j u n t o d e e s ta d o s del A F N y se c o n s tr u y e tranD d e m o d o q u e
D s im u la ra “e n p a ra le lo ” to d o s los p o sib le s m o v im ie n to s q u e A’ p u e d e re a liz a r con
u n a d e te r m in a d a c a d e n a d e e n tra d a .
Se u tiliz an las o p e r a c io n e s d e la figura 3 .2 4 p a r a lo c aliz ar los c o n j u n to s d e los
e s ta d o s del A F N (s r e p re s e n ta u n e s ta d o del A F N . y T u n c o n j u n t o d e e s ta d o s del
A F N ).

■ -------—----■•■■■■ 1
O p e r a c ió n D e s c r ip c ió n

cerradura - € ( v) C o n ju n to d e estados del A FN alcanzables desde el estado 5


del A FN con transiciones c solam ente.

cerradura -€ (7') C o n ju n to d e estad o s del A FN alcanzables desde algún es­


ta d o 5 en T c o n transiciones t solam ente.

m ueve(T . a) C o n ju n t o de e s ta d o s del A F N h a c ia los cu ales h a y u n a


transición co n el sím bolo d e e n tra d a a desde algún estado
5 en T del A FN .

Fig. 3.24. O peraciones sobre los estados de u n AFN.

A n te s d e d e te c ta r el p r im e r s ím b o lo d e e n t r a d a , Ar se p u e d e e n c o n t r a r e n c u a l­
q u ie ra d e los e s ta d o s del c o n j u n t o cerradura - « (5o), d o n d e 50 e s el e s ta d o d e in icio de
N . S u p ó n g a s e q u e e x a c ta m e n te los e s ta d o s del c o n j u n t o T s o n a lc a n z a b le s d e s d e Sq
3.6 A U T O M A T A S FINITO S 121

c o n u n a s e c u e n c ia d a d a d e s ím b o lo s d e e n tr a d a , y sea a el sig u ie n te s ím b o lo d e e n ­
tra d a . Al v e r a, N p u e d e tr a s la d a r s e a c u l q u ie r a d e los e s ta d o s del c o n j u n t o m u eve
( T. a). C u a n d o se p e r m ite n tra n s ic io n e s -c . A p u e d e e n c o n tr a r s e en c u a lq u ie ra d e los
e s ta d o s d e cerradura-*. (T . ¿/)). d e s p u é s d e v e r la a.

al inicio, cerradura-* (s0) es el ú n ic o estado d e n tro d e esiadosD y n o está m arcado:


w hile haya un estado n o m a rc ad o 7 en estadosl) d o begin
m arcar 7;
for cada sím bolo de e n tra d a a do begin
V : = cerradura-* (mueve(T, a)):
¡f U n o esta en estados!) then
añ ad ir i c o m o estad o n o m a rc ad o a estadosD:
tranD [ 7 r/] : = V
end
end

Fig. 3.25. La co n strucció n d e subconjuntos.

Se c o n s tru y e n estadosD , el c o n j u n t o d e e s ta d o s d e D, y tranD , la ta b la d e t r a n ­


sic io n e s d e D. d e la sig u ie n te fo rm a . C a d a e s ta d o d e D c o r r e s p o n d e a u n c o n ju n to
d e e s ta d o s d e A F N e n los q u e p o d r ía e s ta r N d e s p u é s d e le er a lg u n a se c u e n c ia d e
s ím b o lo s d e e n tra d a , in c lu id a s to d a s las p o sib le s tra n s ic io n e s -€ a n te r io r e s o p o s te rio ­
res a la le c tu ra d e s ím b o lo s. El e s ta d o d e in ic io d e D es cerradura -e (.v0). Se a ñ a d e n
los e s ta d o s y las tra n s ic io n e s a D u tiliz a n d o el a lg o ritm o d e la fig u ra 3.25. U n e s ta d o
d e D es u n e s ta d o d e a c e p ta c ió n si es u n c o n j u n t o d e e s ta d o s d e A F N q u e c o n te n g a
al m e n o s u n e s ta d o d e a c e p ta c ió n d e N.

m eter to d o s los estados d e T en pila:


inicializar cerradura- * (T ) a T:
while pila no esté vacia d o begin
sacar /. el elem en to del tope, d e pila:
for cada estado u co n un a arista desde i a u etiq uetad a co n € do
if u n o está en cerradura-* (T ) do begin
a ñ a d ir u a cerradura - e ( 7 ) :
m eter u e n pila
end
end

Fig. 3.26. C álculo de cerradura - c .

El c á lc u lo d e cerradura-*.(T) e s u n p ro c e s o típ ic o d e b ú s q u e d a e n u n g rafo d e


n o d o s a lc a n z a b le s d e s d e un c o n j u n t o d a d o d e n o d o s. E n este caso, los e s ta d o s d e T
s o n el c o n j u n t o d a d o d e n o d o s, y el g rafo está c o m p u e s t o s o la m e n te p o r las arista s
del A F N e tiq u e ta d a s p o r €. U n a lg o r itm o se n c illo p a r a c a lc u la r cerradura -e (T ) u ti­
liza u n a e s tr u c tu r a d e d a to s tip o p ila p a r a g u a r d a r e s ta d o s e n c u y a s arista s n o se h a ­
y a n b u s c a d o tr a n s ic io n e s e t iq u e ta d a s c o n e. E ste p r o c e d i m ie n t o se m u e s t r a e n la
figura 3 .2 6 . □
122 A N A L ISIS I E X ICO

E jem plo 3 .1 5 . Luí figura 3.27 m u e stra o t r o A F N A a c e p ta n d o el len g u aje (a ¡ b)*abb.


(E l d e la sig u ie n te secció n es el q u e se c o n s tr u ir á m e c á n ic a m e n te a p a r ti r d e la e x ­
p re s ió n re g u la r.) S e a p lic a el a l g o r i t m o 3.2 a A'. El e s ta d o d e in ic io del A F D e q u i ­
v a le n te es cerradura -€ (0), q u e e s A = {0. 1. 2, 4 , 7}. p u e s to q u e e s to s s o n e x a c t a ­
m e n te los e s ta d o s a lc a n z a b le s d e s d e el e s ta d o 0 p o r u n c a m i n o en el q u e to d a s las
arista s e s tá n e tiq u e ta d a s p o r € . O b sé rv e se q u e un c a m i n o p u e d e n o t e n e r aristas, de
m o d o q u e 0 es a lc a n z a d o d e sd e si m i s m o p o r d ic h o c a m in o .
A q u í, el a lfa b e to d e s ím b o lo s d e e n t r a d a es {a. b }. El a lg o ritm o d e la figura 3.25
in d ic a q u e h a y q u e m a r c a r A y d e s p u é s c a lc u la r
cerradura-€ (m u eve (A . a)).
P r im e r o se c a lc u la m ueve(A . a), el c o n j u n t o d e e s ta d o s d e q u e tie n e tra n s ic io n e s
e n a d e sd e m ie m b r o s d e A. E n tr e los e s ta d o s 0 . 1. 2. 4 y 7 só lo 2 y 7 tie n e n d ic h as
tra n s ic io n e s , a 3 y a 8 , d e m o d o q u e

cerradura - c (w i« n v ({ 0 , I. 2. 4, 7¡. a )) = cerradura - t ({3.8}) = {I. 2. 3. 4. 6. 7. 8,

E ste c o n j u n t o se d e n o m i n a r á B. A sí. tranD [A. a] =■ B.

E n tre los e s ta d o s d e A %sólo 4 tie n e n u n a tra n s ic ió n e n b a 5. d e m o d o q u e el


A F D tie n e u n a tr a n s ic ió n e n b d e s d e A a

C = cerradura-*. ({5}) = {1, 2 , 4 , 5, 6 , 7}.


P o r ta n to . tra n D lA , b] = C.

Fig. 3.27. A FN A’ q u e acep ta (a ¡ b)*abh.

Si se c o n t i n ú a este p r o c e s o c o n lo s c o n j u n t o s B y C. a h o r a s in m a r c a r , fin al­


m e n t e se llegará al p u n t o e n q u e to d o s los c o n j u n to s q u e s o n e s ta d o s del A F D estén
m a r c a d o s . E s to e s c ie r to p o r q u e “s ó lo " h a y 2 " s u b c o n j u n t o s d is ti n to s d e u n c o n ­
j u n t o d e 11 estad o s, y u n c o n j u n to , u n a vez m a r c a d o , q u e d a m a r c a d o p a r a s ie m p re .
L o s c in c o c o n j u n to s d e e s ta d o s d ife re n te s r e a lm e n te c o n s tr u id o s son:

A = {0. 1. 2. 4 . 7} D = { 1 .2 . 4 , 5. 6 . 7, 9}
B = { 1 . 2 . 3 , 4. 6 , 7. 8} E = { 1 .2 . 4 . 5. 6. 7. 10}
C = { 1 . 2 . 4 . 5. 6 . 7}
3.7 PASO DE U N A EXPRESIO N R E G U L A R A UN AFN 123

El e s ta d o A es el e s ta d o d e inicio, y el e s ta d o E es el ú n ic o e s ta d o d e a c e p ta c ió n . La
ta b la d e tra n s ic io n e s c o m p le ta ira n D se m u e s tr a e n la figura 3.28.

----

Sí m b o l o d e E n t r a d a
Es t a d o
a b
A B C
B B D
C B C
/) B E
E B C

Fig. 3.28. T abla d e transiciones tranD para el A FD .

A d e m á s , e n la fig u ra 3 .2 9 s e m u e s t r a u n g ra fo d e tr a n s i c i o n e s p a r a el A F D
r e s u lt a n te . D e b e t e n e r s e e n c u e n t a q u e el A F D d e la f ig u r a 3 .2 3 t a m b i é n a c e p t a
(a | b )* a b b y tie n e u n e s ta d o m e n o s . E n la sección 3 .9 se e s tu d ia la c u e s tió n d e m i-
n im iz a c ió n del n ú m e r o d e e s ta d o s d e u n A F D . □

Fig. 3 .2 9 . R esultado d e ap licar la co n strucció n d e su b co n ju n tos a la figura 3.27.

3 .7 P A S O D E U N A E X P R E S IO N R E G U L A R A U N A F N

E x isten m u c h a s estrateg ias p a ra c o n s tr u ir u n re c o n o c e d o r a p a r tir d e u n a e x p re sió n


reg u la r, c a d a u n a c o n sus p u n to s fu e rte s y s u s p u n to s débiles. LJna e stra te g ia utili­
z a d a e n v ario s p ro g r a m a s d e e d ic ió n d e te x to s co n siste en c o n s tr u ir u n A F N a p a r tir
d e u n a e x p re s ió n re g u la r y d e s p u é s s im u la r el c o m p o r t a m i e n t o del A F N c o n u n a
c a d e n a d e e n t r a d a u tiliz a n d o los a lg o ritm o s 3.3 y 3.4 d e esta sección. Si la v elo cid ad
d e e je c u c ió n e s f u n d a m e n ta l, se p u e d e c o n v e r tir el A F N e n u n A F D u tiliz a n d o la
c o n s tr u c c ió n d e s u b c o n ju n to s d e la secció n a n te r io r . E n la secció n 3 .9 se p re se n ta
u n a a p lic a c ió n o p c io n a l d e u n A F D a p a r ti r d e u n a e x p re sió n re g u la r e n la q u e n o
124 ANALISIS LEXICO

se c o n s tr u y e d e m a n e r a e x p lícita u n A F N in te r m e d io . E sta secció n c o n c lu y e c o n u n


a n á lis is d e l a s p e c to tie m p o -e s p a c io e n la im p la n ta c ió n d e re c o n o c e d o re s b a s a d o s en
A FN y AFD.

C o n str u c c ió n d e un A F N a p artir d e u n a e x p r e s ió n reg u la r

A c o n t in u a c i ó n se p r o p o r c io n a u n a lg o r itm o p a r a c o n s tr u i r u n A F N a p a r ti r d e u n a
e x p re s ió n reg u la r. H a y m u c h a s v a ria n te s d e este a lg o ritm o , p e r o a q u í se in tr o d u c e
u n a v ersió n se n c illa fácil d e a p lic a r. El a lg o r itm o está d irig id o p o r la s in ta x is e n el
s e n tid o d e q u e u tiliz a la e s tr u c tu r a s in tá c tic a d e la e x p re s ió n re g u la r p a r a g u ia r el
p ro c e s o d e c o n s tru c c ió n . L o s c a s o s d e l a lg o r itm o sig u en a lo s c a s o s d e la d e fin ició n
d e u n a e x p r e s ió n re g u la r. P r im e r o , se m u e s t r a c ó m o c o n s t r u i r a u t ó m a t a s p a r a r e ­
c o n o c e r t y c u a lq u ie r s ím b o lo del a lfa b e to . D e sp u é s, se m u e s tr a c ó m o c o n s tr u i r a u ­
tó m a ta s p a r a e x p re s io n e s q u e c o n te n g a n u n a a lte r n a c ió n , c o n c a te n a c ió n o el o p e ­
r a d o r d e la c e r r a d u r a d e K le e n e . P o r e je m p lo , p a r a la e x p re s ió n r | s. se c o n s tr u y e
u n A F N d e m a n e r a in d u c tiv a a p a r ti r d e los A F N p a r a r y .y.
A m e d id a q u e a v a n z a la c o n s tru c c ió n , c a d a p a so in tr o d u c e a lo s u m o d o s n u e ­
vos e s ta d o s , d e m o d o q u e el A F N r e s u lta n te c o n s tr u id o p a r a u n a e x p re s ió n re g u la r
te n d r á a lo s u m o el d o b le d e e s ta d o s q u e s ím b o lo s y o p e r a d o r e s h a y e n la e x p re sió n
regular.

A lg o r itm o 3 .3 . (Construcción d e T hom pson.) C o n s tr u c c ió n d e u n A F N a p a r ti r d e


u n a e x p re s ió n regular.

E ntrada. U n a e x p re s ió n re g u la r r e n u n a lfa b e to £ .

Salida. U n A F N N q u e a c e p te L{r).

M étodo. P r im e r o se h a c e el a n álisis s in tá c tic o d e r e n s u s s u b e x p re s io n e s c o n s titu ­


y entes. D espu és, p o r las reglas 1 y 2 q u e se v e rá n m á s a d e la n te , se c o n s tr u y e n los
A F N p a r a c a d a u n o d e los s ím b o lo s b á s ic o s d e r ( a q u e llo s q u e se a n c o un s ím b o lo
del alfa b e to ). L o s s ím b o lo s b ásico s c o r r e s p o n d e n a las p a r te s 1 y 2 d e la d e fin ic ió n
d e u n a e x p re s ió n regular. E s i m p o r ta n te c o m p r e n d e r q u e si u n s ím b o lo a ap arec e
v arias veces en /*. se c o n s tr u y e u n A F N in d e p e n d ie n te e n c a d a caso.
D e sp u é s, g u iá n d o s e p o r la e s tr u c tu r a s in tá c tic a d e la e x p re s ió n re g u la r r, se c o m ­
b in a n in d u c tiv a m e n te e so s A F N u tiliz a n d o la regla 3 q u e se v e rá m á s a d e la n te hasta
o b te n e r el A F N p a r a la e x p re s ió n c o m p le ta . T o d o s los A F N in te r m e d io s p r o d u c id o s
d u r a n te el c u rs o d e la c o n s tr u c c ió n c o r r e s p o n d e n a u n a s u b e x p re s ió n d e r y tie n e n
v arias p ro p ie d a d e s im p o rta n te s : tie n e n e x a c ta m e n te u n e s ta d o final, n in g u n a a ris ta
e n tr a e n el e s ta d o d e in icio , y n in g u n a a ris ta sale del e s ta d o final.

1. P a r a € . c o n s tr u i r el A F N

A q u í, i e s u n n u e v o e s ta d o d e in ic io y / e s u n n u e v o e s ta d o d e a c e p ta c ió n . C ie r ­
ta m e n te este A F N r e c o n o c e je}.
3.7 PASO DE U N A EXPRESIO N R E G U L A R A U N A F N 125

2. P a ra a d e 2 * c o n s tr u ir el A F N

D e n u e v o , / es u n n u e v o e s ta d o d e in icio , y / u n n u e v o e s ta d o d e a c e p ta c ió n .
E sta m á q u i n a r e c o n o c e {a}.

3. S u p ó n g a s e q u e A(.v) y Ar(/) son A F N p a r a las e x p re sio n e s reg u la re s s y /.

a) P a ra la e x p re sió n reg u lar s | /, c o n stru y a se el sig u ien te A F N c o m p u e s to A\s | /):

A q u í, i es u n n u e v o e s ta d o d e in icio , y f u n n u e v o e s ta d o d e a c e p ta c ió n . H ay
u n a tra n s ic ió n c o n € d e s d e / a los e s ta d o s d e in ic io d e N (s) y N (t). H a y u n a
tra n s ic ió n c o n € d e sd e lo s e s ta d o s d e a c e p ta c ió n d e A (s) y A'(/) al n u e v o es­
t a d o d e a c e p t a c ió n / L o s e s ta d o s d e in ic io y a c e p ta c ió n d e N (s) y A'(/) n o son
e s ta d o s d e in ic io o a c e p ta c ió n d e N (s | /). O b sérv ese q u e to d o s los c a m in o s
d e s d e / a / d e b e n p a s a r e x c lu s iv a m e n te p o r Ar(.v) o p o r A’(/). A sí. se v e q u e el
A F N c o m p u e s to r e c o n o c e L(s) U L(t).

b) P a r a la e x p re s ió n re g u la r st. c o n s tr u y a s e el A F N c o m p u e s t o A'(v/):

El e s ta d o d e in ic io d e N (s) se c o n v ie r te e n el e s ta d o d e in ic io d e l A F N c o m ­
p u e s to y el e s ta d o d e a c e p ta c ió n d e N (t) se c o n v ie r te e n el e s ta d o d e a c e p ta ­
c ió n d e l A F N c o m p u e s to . El e s ta d o d e a c e p ta c ió n d e N (s) se f u s io n a c o n el
e s ta d o d e in ic io d e N (t)\ es d e c ir, to d a s las tra n s ic io n e s d e s d e el e s ta d o d e in i­
cio d e N (t) se c o n v ie rte n e n tra n sic io n e s d e sd e el e s ta d o d e a c e p tació n d e Ar(s).
El n u e v o e s ta d o fu s io n a d o p ie rd e su c o n d ic ió n d e e s ta d o d e in ic io o d e a c e p ­
ta c ió n e n el A F N c o m p u e s to . U n c a m i n o d e s d e / a / d e b e p a s a r p r im e r o a
tra v é s d e N(s), y d esp u és, p o r Ar(/), d e m o d o q u e la e tiq u e ta d e ese c a m in o
se rá u n a c a d e n a d e L (s)U t). P u e s to q u e n in g u n a a ris ta e n tr a e n el e s ta d o de
in ic io d e A (/) ni sale del e s ta d o d e a c e p ta c ió n d e N(s), n o p u e d e h a b e r n in ­
g ú n c a m i n o d e s d e i a / q u e v u e lv a d e N (t) a N(s). P o r t a n t o , el A F N c o m ­
p u e s to r e c o n o c e L(s)L(t).
126 ANALISIS LEXICO

c) P a ra la e x p re sió n re g u la r s *, c o n s tru y a s e el A F N c o m p u e s t o N(s*):

A q u í. / es u n n u e v o e s ta d o d e in ic io y / u n n u e v o e s ta d o d e a c e p ta c ió n . En
el A F N c o m p u e s to , se p u e d e ir d e s d e i a / d ir e c ta m e n te , a lo la rg o d e u n a
a ris ta e tiq u e ta d a p o r €. q u e re p r e s e n ta el h e c h o d e q u e € está en L(s))*. o se
p u e d e ir d e s d e / a / p a s a n d o p o r A /v) u n a o m á s veces. C ie r ta m e n te , el A F N
c o m p u e s to r e c o n o c e (/-(5))*.

d ) P a ra la e x p re sió n re g u la r e n tr e p a ré n te s is (.v), utilícese N (s) c o m o A F N .

C a d a vez q u e se c o n s tr u y e u n n u e v o e s ta d o , se le d a u n n o m b r e d is tin to . D e esta


fo rm a , n o p u e d e h a b e r d o s e s ta d o s d e u n A F N c o m p o n e n te s c o n el m is m o n o m b r e .
A u n q u e a p a r e z c a n lo s m is m o s s ím b o lo s v a ria s veces en r. se c r e a p a r a c a d a e je m p lo
d e ese s ím b o lo u n A F N a p a r t e c o n s u s p r o p io s estad o s. □

Se p u e d e c o m p r o b a r q u e c a d a p a so d e la c o n s tr u c c ió n d e l a lg o ritm o 3 .3 p r o d u c e
u n A F N q u e reco n o ce el len g u aje co rrecto . A d e m á s, la c o n s tru c c ió n p ro d u c e u n A F N
N (r) c o n las sig u ie n te s p ro p ie d a d e s.

1. \ ( r ) tie n e a lo s u m o el d o b le d e e s ta d o s q u e d e s ím b o lo s y o p e r a d o r e s e n r. E sto
se d e b e ai h e c h o d e q u e e n c a d a p a so d e la c o n s tr u c c ió n se c r e a n a lo s u m o dos
n u e v o s estados.

2. A’(r) tie n e e x a c ta m e n te u n e s ta d o d e in ic io y o t r o d e a c e p ta c ió n . El e s ta d o de
a c e p ta c ió n n o tie n e tra n s ic io n e s salien tes. E sta p ro p ie d a d se c u m p le ig u a lm e n te
p a r a to d o s los a u t ó m a ta s c o n s titu y e n te s .

''u

rV r II)
\ I
r» b
I
'•<, b
I
r4 * "
I \
( r, )
/ " I \
r, | '2

a í
Fig. 3.30. D escom posición de (a | b)*abb.
3.7 PASO DE U N A E X PR E SIO N R EG U LA R A U N A F N 127

3. C a d a e s ta d o d e A (r) tie n e u n a tra n s ic ió n s a lie n te c o n u n s ím b o lo e n 2 o a lo


s u m o d o s tra n s ic io n e s € salientes.

E je m p lo 3 .1 6 . U tilíc e s e el a lg o r itm o 3.3 p a r a c o n s t r u i r N (r) p a r a la e x p re s ió n r e ­


g u la r r = (a | b)*abb. E n la figura 3 .3 0 se m u e stra u n árb o l d e análisis s in tá c tic o para
r a n á lo g o a los á r b o le s d e a n á lis is s in tá c tic o c o n s tr u i d o s p a r a la s e x p r e s io n e s a r i t ­
m é tic a s d e la secció n 2.2. P a ra el c o n s titu y e n te r ,. la p r im e ra a . se c o n s tr u y e el AFIN

P a ra r2. se c o n s tr u y e

in i c i o b ¿sss*.
H 4 ------------5 J)

A h o ra se p u e d e n c o m b in a r A ( r,) y A (r2) u tiliz a n d o la regla d e la u n i ó n p a r a o b te n e r


el A F N p a r a r3 = \ r2

El AF'N p a ra (r3) e s el m is m o q u e p a r a r 3. E n to n c e s , el A F N p a r a ( r 3)* es

El A F N p a r a r6 = a es
128 A N A L ISIS LEXICO

P a ra o b te n e r el a u t ó m a t a p a r a r 5 se fu s io n a n los e s ta d o s 7 y 7', lla m a n d o al es­


ta d o 7 re s u lta n te , p a r a o b te n e r

Si se c o n tin ú a así, se o b tie n e el A F N p a r a r u = {a \ b)*abb m o s tr a d o p o r p r im e ra


vez e n la figura 3.27. □

S im u la c ió n d e un A F N p or m e d io d e d o s p ila s

A c o n tin u a c ió n se in tr o d u c e u n a lg o r itm o q u e , d e s d e u n A F N N c o n s tr u id o p o r el
a lg o ritm o 3.3 y u n a c a d e n a d e e n tr a d a jv. d e t e r m in a si A a c e p ta o n o a x . El algo­
r itm o f u n c io n a le y e n d o la e n t r a d a u n c a r á c te r a la v ez y c a lc u la n d o t o d o el c o n ju n to
d e e s ta d o s e n los q u e p o d r ía e s ta r A' d e s p u é s d e h a b e r le íd o to d o s lo s p re fijo s d e la
e n tra d a . E l a lg o ritm o a p r o v e c h a las p ro p ie d a d e s esp eciales d e l A F N p r o d u c id o p o r
el a lg o r itm o 3.3 p a r a c a lc u la r e fic a z m e n te c a d a c o n j u n t o d e e s ta d o s n o d e te r m in is ­
tas. P u e d e im p la n ta r s e p a r a q u e se e je c u te e n u n ti e m p o p r o p o r c io n a l a | A' | x | .v |,
d o n d e | A' | es el n ú m e r o d e e s ta d o s d e N y | x j e s la lo n g itu d d e x .

A lg o r itm o 3 .4 . S im u la c ió n d e u n A F N .

Entrada. U n A F N A c o n s tr u id o p o r el a lg o ritm o 3.3 y u n a c a d e n a d e e n t r a d a x . Se


s u p o n e q u e x te r m in a c o n u n c a r á c te r d e fin d e a rc h iv o e o f . N tie n e e s ta d o inicial 50
y u n c o n j u n t o d e e s ta d o s d e a c e p ta c ió n F.

Salida. L a re s p u e s ta “s f \ si N a c e p ta x: “ n o " , en c a so c o n tra rio .


M étodo . A p liq ú e s e el a lg o ritm o e s b o z a d o e n la fig u ra 3.31 a la c a d e n a d e e n tra d a
.v. El a lg o ritm o realiza d e h e c h o la c o n s tr u c c ió n d e s u b c o n j u n to s e n el m o m e n t o d e
la eje c u c ió n . C a lc u la u n a tra n s ic ió n d e s d e el c o n j u n t o e n c u rs o d e e s ta d o s S al si­
g u ie n te c o n j u n t o d e e s ta d o s e n d o s e ta p a s . P r im e ro , d e t e r m in a m u ev e (S . a), to d o s
los e s ta d o s q u e se p u e d e n a lc a n z a r d e sd e u n e s ta d o e n S m e d ia n te u n a tra n s ic ió n
c o n a. el c a rá c te r d e e n tra d a en c u rso . D esp ués, c a lc u la la cerradura -€ d e m u eve (s. a).
es d ecir, to d o s los e s ta d o s q u e se p u e d e n a lc a n z a r d e sd e m u ev e (.v, a ) m e d ia n te cero
o m á s tra n s ic io n e s e . El a lg o ritm o u tiliza la f u n c ió n sigtecar p a r a leer los c a ra c te re s
d e .v, u n o a la vez. C u a n d o h a n a p a r e c id o to d o s los c a ra c te re s d e x , el a lg o ritm o
d e v u e lv e “sí", si u n e s ta d o d e a c e p ta c ió n está e n el c o n j u n t o S d e e s ta d o s en c u rs o ;
d e lo c o n tra rio , d e v u e lv e “ n o ". □
3.7 PASO D E U N A EXPRESIO N R EG U LA R A U N A F N 129

S : = cerradlira-€ (¡5o));
a : = sigtecan
w h ile a * e o f do bcgin
S : = cerradura - 1 (m ueve(S, a)):
a : = sigtecar
end
if S fi /■ * 0 then
return " s i” :
e ls e return " n o ” :

F ig . 3.31. S i m u l a c i ó n del A F N d el a l g o r i t m o 3.3.

El a lg o ritm o 3 .4 p u e d e s e r im p la n ta d o d e m a n e r a e fic ie n te u tiliz a n d o d o s pilas


y u n v e c to r d e b its in d e x a d o p o r e s ta d o s del A F N . Se u tiliz a u n a pila p a r a te n e r lo­
c a liz a d o el c o n j u n t o e n c u rs o d e e s ta d o s n o d e te rm in is ta s , y la o tra , p a r a c a lc u la r el
sig u ie n te c o n j u n t o d e e s ta d o s n o d e te r m in is ta s . S e p u e d e u s a r el a lg o ritm o d e la fi­
g u r a 3 .2 6 p a r a c a lc u la r la cerradura -€. y el v e c to r d e bits, p a r a d e t e r m in a r en u n
tie m p o c o n s ta n te si u n e s ta d o n o d e te r m in is ta ya está e n u n a pila, p a ra n o s e r a ñ a ­
d i d o d o s veces. U n a v ez c a lc u la d o el sig u ie n te e s ta d o e n la s e g u n d a pila, se p u e d e n
in te r c a m b ia r las f u n c io n e s d e las d o s pilas. P u e s to q u e c a d a e s ta d o n o d e te rm in is ta
tie n e a lo s u m o d o s tra n s ic io n e s d e salida, c a d a e s ta d o p u e d e d a r lu g a r a lo s u m o a
d o s n u e v o s e s ta d o s e n u n a tra n s ic ió n . S ea | A | el n ú m e r o d e e s ta d o s d e A . C o m o
p u e d e h a b e r a lo s u m o | A | e s ta d o s e n u n a p ila , se p u e d e h a c e r el c á lc u lo del s i­
g u ie n te c o n j u n t o d e e s ta d o s a p a r ti r del c o n j u n t o a c tu a l d e e s ta d o s en u n tie m p o
p ro p o rc io n a l a | ;V|. A si. el ti e m p o to ta l n e c e s a rio p a ra s im u la r el c o m p o r ta m ie n to
d e N c o n la e n t r a d a x es p r o p o r c io n a l a | A' | x | .v |.

E jem plo 3.17. S ea A’ el A F N d e la figura 3 .2 7 y sea x la c a d e n a c o m p u e s t a ú n i c a ­


m e n te p o r el c a r á c te r a. El e s ta d o d e in icio es cerradura -e (¡0)) = ¡0. 1, 2. 4 , 7}. C o n
el s ím b o lo d e e n tr a d a a h a y u n a tr a n s ic ió n d e s d e 2 a 3 y d e sd e 7 a 8. P o r t a n t o . T
es (3. 8). T o m a n d o la cerradura - e d e T se o b tien e el siguiente estad o {1. 2 . 3. 4. 6 , 7. 8).
C o m o n in g u n o d e esto s e s ta d o s n o d e te r m in is ta s es d e a c e p ta c ió n , el a lg o ritm o d e ­
vuelve “ n o ” .
O b sérv ese q u e el a lg o ritm o 3 .4 h a c e la c o n s tr u c c ió n d e s u b c o n ju n t o s e n el m o ­
m e n to d e la eje c u c ió n . P o r e je m p lo , c o m p á r e n s e las tra n s ic io n e s a n te r io r e s c o n los
e s ta d o s del A F D d e la fig u ra 3 .2 9 c o n s tr u id o a p a r ti r del A F N d e la figura 3.27. Los
c o n j u n t o s d e e s t a d o d e in i c io y e s t a d o s ig u ie n te e n la e n t r a d a a c o r r e s p o n d e n a
lo s e s ta d o s A y B d e l A F D . □

E l a s p e c to tie m p o -e sp a c io

D a d a u n a e x p re s ió n re g u la r r y u n a c a d e n a d e e n tr a d a x , e x iste n a h o r a d o s m é to d o s
p a r a d e t e r m in a r si x está e n L(r). U n e n f o q u e c o n s is te e n u tiliz a r el a lg o r itm o 3.3
p a r a c o n s tr u i r u n A F N A a p a r tir d e r. S e p u e d e rea liz a r d ic h a c o n s tr u c c ió n e n u n
tie m p o d e O (| r |), d o n d e | r | e s la lo n g itu d d e r. A tie n e a lo s u m o el d o b le d e e s ta ­
d o s q u e ¡ r |, y a lo s u m o d o s tra n s ic io n e s d e sd e c a d a estad o , d e m o d o q u e se p u e d e
130 A N A L ISIS LEXICO

a lm a c e n a r u n a ta b la d e tra n s ic io n e s p a r a N en u n e s p a c io d e 0 ( \ r |). E n to n c e s se
p u e d e u t i l i z a r el a l g o r i t m o 3 .4 p a r a d e t e r m i n a r si N a c e p t a a a* e n u n t i e m p o
0 ( \ r \ x | a |). P o r ta n to , u tiliz a n d o este e n f o q u e , se p u e d e d e t e r m i n a r si x está en
L{r) e n u n t i e m p o to ta l p ro p o rc io n a l a la lo n g itu d d e r m u ltip lic a d a p o r la lo n g itu d
d e x . E ste e n f o q u e h a sid o u tiliz a d o en v ario s e d ito re s d e te x to p a r a b u s c a r p a tro n e s
d e e x p re s io n e s reg u la re s d o n d e la c a d e n a o b je tiv o x n o su ele s e r m u y larga.
U n s e g u n d o e n f o q u e es c o n s tr u i r u n A F D a p a r tir d e la e x p re s ió n re g u la r r a p li­
c a n d o la c o n s tr u c c ió n d e T h o m p s o n a r y d e s p u é s la c o n s tru c c ió n d e s u b c o n ju n to s .
a lg o ritm o 3.2. al A F N re s u lta n te . (E n la Sec. 3 .9 se d a u n a im p la n ta c ió n q u e evita
c o n s tr u i r el A F N in te r m e d io d e m a n e r a e x p líc ita .) I m p l a n ta n d o la f u n c ió n d e t r a n ­
sició n c o n u n a ta b la d e tra n s ic io n e s , se p u e d e u tiliz a r el a lg o r itm o 3.1 p a ra s im u la r
el A F D c o n la e n t r a d a v e n u n tie m p o p r o p o r c io n a l a la lo n g itu d d e a *, in d e p e n d ie n ­
te m e n te del n ú m e r o d e e s ta d o s del A F D . E ste e n f o q u e h a sid o u tiliz a d o a m e n u d o
en p ro g r a m a s d e c o n c o r d a n c ia d e p a tr o n e s q u e b u s c a n e n a rc h iv o s d e te x to p a tr o ­
nes d e e x p r e s io n e s re g u la re s. U n a vez c o n s t r u i d o el a u t ó m a t a fin ito , la b ú s q u e d a
a v a n z a m u y rá p id o , d e m o d o q u e este e n f o q u e es el m á s a d e c u a d o c u a n d o la c a d e n a
o b je tiv o v e s m u y larga.
H a y . s in e m b a r g o , c ie rta s e x p re sio n e s reg u la re s c u y o m e n o r A F D tie n e u n n ú ­
m e r o d e e s ta d o s c o n u n t a m a ñ o d e e x p re sió n re g u la r e x p o n e n c ia l. P o r e je m p lo , la
expresión reg u lar (a ¡ b)*a(a | b)(a | / > ) . . . (a | b). d o n d e hay //— I e x p resio n es (a ¡ />) al
final, n o tie n e n in g ú n A F D c o n m e n o s d e 2" estad o s. E sta e x p re sió n re g u la r r e p re ­
s e n ta t o d a s las c a d e n a s d e c a r a c te r e s a y b d o n d e el n-c s im o c a r á c t e r d e s d e el ex ­
t r e m o d e r e c h o es u n a a. N o es difícil d e m o s t r a r q u e c u a lq u ie r A F D p a ra esta e x p re ­
sió n d e b e reg istra r lo s n ú ltim o s c a ra c te re s q u e v e a e n la e n tr a d a : d e lo c o n tra rio ,
p u e d e d a r u n a re sp u e sta e r ró n e a . E s e v id e n te q u e se r e q u ie re n al m e n o s 2" e s ta d o s
p a r a lo c a liz a r to d a s las p o sib le s s e c u e n c ia s d e n c a ra c te re s a y b. A f o r tu n a d a m e n te ,
e x p re s io n e s c o m o ésta n o se p r e s e n ta n c o n fre c u e n c ia en a p lic a c io n e s d e a n á lis is lé­
x ico, p e r o si e n o tra s ap licacio n es.
U n te rc e r e n fo q u e co nsiste e n u tiliz ar u n A F D . p e ro h a y q u e e v ita r c o n s tru ir to d a
la ta b la d e tra n s ic io n e s m e d ia n te la té c n ic a lla m a d a “e v a lu a c ió n d ife rid a d e tr a n s i­
c io n e s " . A q u í, se c a lc u la n las tra n s ic io n e s e n el m o m e n t o d e la e je c u c ió n , p e r o n o
se d e te r m in a u n a tra n s ic ió n d e sd e u n e s ta d o d e te r m in a d o c o n u n c a rá c te r d a d o hasta
q u e es r e a lm e n te n ecesario . L as tra n s ic io n e s c a lc u la d a s se a l m a c e n a n e n u n cache.
S e c o n s u lta el cache c a d a vez q u e se v a a h a c e r u n a tr a n s ic ió n . Si la tra n s ic ió n no
está a h í, se c a lc u la y se a lm a c e n a e n el cache. Si el cache está llen o , se p u e d e b o r r a r
a lg u n a tra n s ic ió n y a c a lc u la d a p a r a d e ja r s itio a la n u e v a tra n s ic ió n .
E n la figura 3.32 se re s u m e n los req uisitos d e e s p a c io y ti e m p o del p e o r c a so para
d e t e r m i n a r si u n a c a d e n a d e e n t r a d a x e s tá e n el le n g u a je re p r e s e n ta d o p o r u n a ex-

A utóm ata E sp a c io T ie m po

A FN 0 ( M ) 0 < M x \x\)
A FD 0 ( 2 ' i) 0 (1 * 1 )

F ig . 3 .3 2 . Espacio y tiem p o o c u p a d o s en reconocer expresiones regulares.


3.8 DISEÑ O DE U N G E N E R A D O R D E A N A L IZ A D O R E S LEXICOS 131

p re s ió n re g u la r r u tiliz a n d o re c o n o c e d o re s c o n s tr u id o s a p a r tir d e a u t ó m a t a s finitos


d e te r m in is ta s y n o d e te rm in is ta s . L a té c n ic a d e “e v a lu a c ió n d if e r id a " c o m b in a los
re q u is ito s d e e s p a c io d e l m é t o d o del A F N c o n el r e q u e r im ie n to d e ti e m p o d e l e n ­
fo q u e d e l A F D . S u r e q u e r im ie n to d e e s p a c io es el t a m a ñ o d e la e x p re s ió n reg u lar
m á s el t a m a ñ o del cache, su ti e m p o d e e je c u c ió n o b s e r v a d o es casi ta n r á p id o c o m o
el d e l r e c o n o c e d o r d e te rm in is ta . E n a lg u n a s a p lic a c io n e s , la té c n ic a d e “e v a lu a c ió n
d ife rid a " es c o n s id e r a b le m e n te m á s r á p id a q u e el e n f o q u e d e l A F D , p o r q u e n o se
p ie rd e ti e m p o e n c a lc u la r tra n s ic io n e s d e e s ta d o s q u e n u n c a se utilizan .

3 .8 D I S E Ñ O D E U N G E N E R A D O R D E A N A L I Z A D O R E S L E X I C O S

E n esta secció n se c o n s id e r a el d is e ñ o d e u n a h e r r a m ie n ta d e softw are q u e c o n s tr u y e


a u t o m á t i c a m e n t e u n a n a liz a d o r léxico a p a r tir d e u n p r o g r a m a e s c rito e n len g u aje
L E X . A u n q u e se a n a l i z a n v a r io s m é to d o s , y n i n g u n o es id é n tic o al u s a d o p o r el
m a n d a t o L E X d e l s is te m a U N I X , d ic h o s p ro g r a m a s p a r a c o n s tr u i r a n a liz a d o r e s lé­
xicos se d e n o m i n a r á n c o m p ila d o r e s d e L E X .
S u p ó n g a s e q u e se tie n e u n a esp ecificació n d e u n a n a liz a d o r léx ico d e la fo rm a

p\ { acción \ }
Pi { acción2 }
• • • • a •

Pn { acción n }

d o n d e , c o m o e n la se c c ió n 3.5, c a d a p a t r ó n p, es u n a e x p re s ió n re g u la r y c a d a a c c ió n
acción, e s u n fra g m e n to d e p r o g r a m a q u e d e b e e je c u ta rs e s ie m p re q u e se e n c u e n t r e
e n la e n t r a d a u n le x e m a q u e c o n c u e r d e c o n p¡.
El p r o b le m a es c o n s tr u i r u n r e c o n o c e d o r q u e b u s q u e le x e m a s e n el b u ffer d e la
e n t r a d a . Si c o n c u e r d a m á s d e u n p a t r ó n , el r e c o n o c e d o r eleg irá el le x e m a m á s largo
q u e h a y a c o n c o r d a d o . Si h a y d o s o m á s p a tro n e s q u e c o n c u e r d e n c o n el le x e m a m á s
largo, se elige el p r i m e r p a tró n q u e h a y a c o n c o r d a d o d e la lista.
U n a u t ó m a t a fin ito e s u n m o d e lo n a tu r a l s o b re el q u e se c o n s tr u y e u n a n a liz a ­
d o r léxico, y el c o n s tr u id o p o r este c o m p ila d o r d e L E X tie n e la f o r m a q u e se m u e s ­
tra e n la fig u ra 3.33(b). H a y u n buffer d e e n t r a d a c o n d o s a p u n t a d o r e s h a c ia él. u n o
al in ic io del le x e m a y el o tr o u n a p u n t a d o r d e la n te r o , c o m o se vio en la secció n 3.2.
El c o m p ila d o r d e L E X c o n s tr u y e u n a ta b la d e tr a n s ic io n e s p a r a u n a u t ó m a t a fin ito
a p a r ti r d e p a tr o n e s d e e x p re s io n e s reg u la re s e n la esp ecificació n d e L E X . El a n a li­
z a d o r léx ico e n sí c o n s ta d e u n s im u l a d o r d e a u t ó m a t a f in ito q u e u tiliz a e s ta ta b la
d e tr a n s ic io n e s p a r a b u s c a r los p a tr o n e s d e la s e x p re s io n e s reg u la re s en el buffer d e
e n tra d a .
El re s to d e esta se c c ió n d e m u e s t r a q u e la i m p l a n t a c i ó n d e u n c o m p i l a d o r d e
L E X se p u e d e b a s a r e n a u t ó m a t a s d e t e r m in i s t a s o n o d e te r m in is ta s . Al final d e la
ú lt im a secció n se v io q u e la ta b la d e tr a n s i c io n e s d e u n A F N p a r a u n p a t r ó n de
u n a e x p re s ió n re g u la r p u e d e s e r c o n s id e r a b l e m e n t e m e n o r q u e la d e u n A F D . p e ro
el A F D tie n e la g r a n v e n ta ja d e q u e p u e d e r e c o n o c e r p a t r o n e s m á s r á p id a m e n te
q u e el A F N .
132 A N A L ISIS LEXICO

especificación compilador tabla de


de LEX de LEX transiciones

(a) Compilador de LEX

buffer de entrada

(b) Analizador léxico esquemático

Fig. 3.33. M o d elo d e c o m p ila d o r d e LEX.

C o n c o rd a n c ia de p a tr o n e s b a s a d a e n los A F N

U n m é t o d o es c o n s tr u i r la ta b la d e tra n s ic io n e s d e u n a u t ó m a t a f in ito n o d e t e r m i­
n is ta N p a r a el p a tró n c o m p u e s t o p { \ p 2 1 • • • | p H. E sto s e p u e d e h a c e r c r e a n d o p r i­
m e r o u n A F N N{p¡) p a r a c a d a p a t r ó n p, u tiliz a n d o el a lg o ritm o 3.3. a ñ a d i e n d o d e s ­
p u é s u n n u e v o e s ta d o d e in ic io s0t y p o r ú lt im o e n l a z a n d o s0 al e s ta d o d e in ic io de
c a d a A\p ,) c o n u n a tra n s ic ió n € , tal c o m o se m u e s tr a e n la fig u ra 3.34.
P a ra s im u la r este A F N , se p u e d e u tiliz a r u n a m o d ific a c ió n d e l a lg o r itm o 3.4. La
m o d ific a c ió n g a r a n tiz a q u e el A F N c o m b i n a d o r e c o n o c e el p re fijo m á s la rg o d e la

Fig. 3.34. A FN co n stru id o a partir d e un a especificación d e LEX.


3.8 DISEÑO DE U N G E N E R A D O R DE A N A L IZ A D O R E S LEXICOS 133

e n t r a d a q u e h a y a c o n c o r d a d o c o n u n p a t r ó n . E n el A F N c o m b in a d o , hay u n e s ta d o
d e a c e p ta c ió n p a r a c a d a p a t r ó n p,. C u a n d o se s im u la el A F N u tiliz a n d o el a lg o ritm o
3.4. se c o n s tr u y e la s e c u e n c ia d e c o n j u n t o s d e e s ta d o s d o n d e p u e d e e s ta r el A F N
c o m b in a d o d e s p u é s d e leer c a d a c a r á c te r d e e n tr a d a . In c lu s o si se e n c u e n t r a u n c o n ­
j u n t o d e e s ta d o s q u e c o n te n g a u n e s ta d o d e a c e p ta c ió n , p a r a e n c o n t r a r la c o n c o r ­
d a n c ia m á s larga se d e b e seg u ir s im u l a n d o el A F N h a s ta a lc a n z a r term inación, es
d ecir, u n c o n j u n t o d e e s ta d o s d e s d e el q u e n o hay tr a n s ic io n e s c o n el s ím b o lo d e
e n t r a d a en cu rso.
S e p r e s u p o n e q u e la e sp ecificació n d e L E X está d is e ñ a d a d e m o d o q u e u n p ro ­
g r a m a fu e n te v álid o n o p u e d e lle n a r p o r c o m p le to el buffer d e e n tr a d a , a n o s e r q u e
el A F N h a y a a lc a n z a d o la te r m in a c ió n . P o r e je m p lo , c a d a c o m p ila d o r im p o n e a l­
g u n a s restric cio n es a la lo n g itu d d e u n id e n tific a d o r. y se s a b rá q u e n o se h a resp e­
t a d o este lím ite c u a n d o se d e s b o r d e el buffer d e la e n t r a d a o in c lu s o a n te s.
P a ra e n c o n t r a r la c o n c o r d a n c ia a d e c u a d a , se h a c e n d o s m o d ific a c io n e s al algo­
r itm o 3.4. P r im e r o , s ie m p re q u e se a ñ a d a u n e s ta d o d e a c e p ta c ió n al c o n j u n t o d e
e s ta d o s e n c u rso , se re g istra n la p o s ic ió n e n c u rs o d e e n t r a d a y el p a t r ó n p, c o rre s ­
p o n d ie n te a este e s ta d o d e a c e p ta c ió n . Si el c o n j u n t o d e e s ta d o s e n c u r s o y a c o n tie n e
u n e s ta d o d e a c e p ta c ió n , e n to n c e s só lo se reg istra el p a tró n q u e a p a r e z c a p r im e r o en
la esp ecificació n d e L E X . S e g u n d o , se c o n t i n ú a h a c ie n d o tra n s ic io n e s h a s ta q u e se
a lc a n z a la te r m in a c ió n . E n la te r m in a c ió n , se re tro c e d e el a p u n t a d o r d e la n te r o a la
p o sició n e n q u e o c u r r ió la ú lt im a c o n c o r d a n c ia . El p a t r ó n q u e h iz o d ic h a c o n c o r ­
d a n c ia id e n tific a al c o m p o n e n te léx ico e n c o n t r a d o , y el le x e m a e m p a r e ja d o es la c a ­
d e n a e n tre los a p u n ta d o r e s d e in ic io d e l le x e m a y los d e la n te ro s .
N o r m a lm e n te , la e sp ecificació n d e L E X es tal q u e alg ú n p a tró n , p o s ib le m e n te
u n p a tró n d e e rro r, s ie m p re c o n c u e r d e . S in e m b a r g o , si esto n o es asi se tie n e u n a
c o n d ic ió n d e e r r o r n o p re v is ta y el a n a liz a d o r léx ico d e b e r á tra n s fe rir el c o n tro l a
a lg u n a r u ti n a d e re c u p e ra c ió n d e e r r o r p o r o m is ió n .

E je m p lo 3 .1 8 . U n s e n c illo e j e m p lo ilu s tra la s id e a s a n te r io r e s . S u p ó n g a s e q u e se


tie n e el s ig u ie n te p r o g r a m a e n L E X . q u e c o n s t a d e t r e s e x p r e s io n e s r e g u la r e s y
n in g u n a d e f in ic ió n regular.
a { } /* a q u í se o m i t e n las a c c io n e s */
abb j }
a*h' { }
L o s tr e s c o m p o n e n te s léxicos a n te r io r e s se re c o n o c e n p o r m e d io d e l a u t ó m a t a
d e la fig u ra 3.35(a). S e h a sim p lific a d o u n p o c o el te rc e r a u t ó m a t a c o n re la c ió n al
q u e p r o d u c ir í a el a lg o r i tm o 3 .3 . C o m o se h a in d i c a d o a n t e r i o r m e n t e , se p u e d e n
c o n v e r tir los A F N d e la fig u ra 3 .3 5 (a) e n u n A F N c o m b i n a d o N de la fig u ra 3.35(b).
A h o r a se c o n s id e r a r á el c o m p o r t a m i e n t o d e N c o n la c a d e n a d e e n t r a d a aaba
u tiliz a n d o la m o d ific a c ió n del a lg o r itm o 3.4. E n la fig u ra 3 .3 6 se m u e s tr a n lo s c o n ­
j u n t o s d e e s ta d o s y p a tr o n e s q u e c o n c u e r d a n c o n f o r m e se p ro c e s a c a d a c a r á c te r d e
la e n t r a d a aaba. E sta fig u ra m u e s tr a q u e el c o n j u n t o inicial d e e s ta d o s e s {0, 1. 3, 7).
C a d a u n o d e los e s ta d o s 1, 3 y 7 tie n e u n a tr a n s ic ió n e n a . a los e s ta d o s 2, 4 y 7,
r e s p e c tiv a m e n te . P u e s to q u e el e s ta d o 2 es el e s ta d o d e a c e p ta c ió n del p r i m e r p a ­
tr ó n . se registra el h e c h o d e q u e el p r im e r p a t r ó n c o n c u e r d a d e s p u é s d e leer la p ri­
m e r a a.
134 ANALISIS LEXICO

inicio

inicio

( a ) A F N p a ra a, abb y a*b'.

• • 4

(b) A F N c o m b in a d o .

F ír . 3.35. A F N q u e reconoce tres p atro n es distintos.

Pi P3
a a b^ •
a
0 ~
~ m 0 n in g u n o

T T
T T

T
F í r . 3.36. Secuencia d e c o n ju n to s de estados visitados al procesar la e n tra d a aaba.

S in e m b a r g o , h a y u n a tr a n s ic ió n d e l e s ta d o 7 al e s ta d o 7 e n el s e g u n d o c a r á c te r
d e la e n t r a d a , d e m o d o q u e se d e b e se g u ir h a c ie n d o tr a n s ic io n e s . H a y u n a tr a n s i­
c ió n d e s d e el e s ta d o 7 al e s ta d o 8 e n el c a r á c te r d e e n t r a d a b. E l e s ta d o 8 e s el es­
t a d o d e a c e p ta c ió n p a r a el t e r c e r p a t r ó n . U n a v ez a l c a n z a d o el e s ta d o 8 , n o hay
tr a n s i c io n e s p o sib le s c o n el s ig u ie n te c a r á c te r d e e n t r a d a a , a s í q u e se h a a lc a n z a d o
la te r m in a c ió n . P u e s to q u e se p r o d u j o la ú l t i m a c o n c o r d a n c i a d e s p u é s d e le e r el
te rc e r c a r á c te r d e e n t r a d a , se in f o r m a d e q u e el t e r c e r p a t r ó n h a c o n c o r d a d o c o n
el le x e m a aab. □
3.8 DISEÑO DE U N G E N E R A D O R DE A N A L IZ A D O R E S LEXICOS 135

El papel d e acción , aso ciad o c o n el p a tró n p, e n la especificación d e L E X e s c o m o


sigue. C u a n d o se re c o n o c e u n c a so d e /;, el a n a liz a d o r léx ico e je c u ta el p ro g ra m a
a s o c ia d o a c c i ó n O b sérv ese q u e acción, n o se e je c u ta p o r q u e el A F N e n tr a en u n
e s ta d o q u e in c lu y e el e s ta d o d e a c e p ta c ió n d e p,\ acción, se e je c u ta s o la m e n te si p ,
re su lta ser el p a tró n q u e p r o d u c e la c o n c o r d a n c ia m á s larga.

A F D p ara a n a liz a d o r e s lé x ic o s

O tr o e n f o q u e p a ra la c o n s tr u c c ió n d e u n a n a liz a d o r léxico a p a r tir d e u n a esp ecifi­


cació n d e L E X e s utilizar u n A F D p a r a realizar la c o n c o rd a n c ia d e p a tro n e s. La única
d ife re n c ia es aseg u rarse d e e n c o n t r a r las a d e c u a d a s c o n c o r d a n c ia s c o n los p a tro n e s.
L a s itu a c ió n es c o m p le ta m e n te a n á lo g a a la s im u la c ió n m o d ific a d a del A F N q u e se
a c a b a d e d escrib ir. C u a n d o se c o n v ie r te u n A F N e n u n A F D u tiliz a n d o el a lg o ritm o
3.2 p a r a la c o n s tr u c c ió n d e s u b c o n ju n to s . p u e d e h a b e r v a rio s e s ta d o s d e a c e p ta c ió n
e n u n s u b c o n j u n t o d a d o d e e s ta d o s n o d e te r m in is ta s . E n tal caso , tie n e p r io rid a d el
e s ta d o d e a c e p ta c ió n c o r r e s p o n d ie n te al p a t r ó n lista d o e n p r im e r lu g a r en la e sp e ­
cificació n d e L E X . C o m o en la s im u la c ió n del A F N . la ú n ic a m o d ific a c ió n q u e hay
q u e re a liz a r e s c o n t i n u a r h a c ie n d o tra n s ic io n e s d e e s ta d o s h a s ta a lc a n z a r un e s ta d o
sin e s ta d o sig u ie n te ( p o r e je m p lo , el e s ta d o 0 ) p a r a el s ím b o lo d e e n t r a d a e n c u rso .
P a r a e n c o n t r a r el le x e m a e m p a r e ja d o , se reg resa a la ú lt im a p o s ic ió n d e e n t r a d a
d o n d e el A F D e n tr ó e n u n e s ta d o d e a c e p ta c ió n .

E jem p lo 3 .1 9 . Si se c o n v ie r te el A F N d e la figura 3.35 en u n A F D . se o b tie n e la


ta b la d e tra n s ic io n e s d e la fig u ra 3.37. d o n d e se h a n n o m b r a d o los e s ta d o s del A F D
m e d ia n te listas d e los e s ta d o s del A F N . L a ú ltim a c o l u m n a d e la figura 3 .3 7 in d ica
u n o d e lo s p a tr o n e s re c o n o c id o s al e n t r a r e n ese e s ta d o d e l A F D . P o r e je m p lo , e n tre
los e s ta d o s 2, 4 y 7 d e l A F N . só lo el 2 e s d e a c e p ta c ió n , y es el e s ta d o d e a c e p ta c ió n
del a u t ó m a t a p a r a la e x p re s ió n re g u la r a d e la figura 3.35(a). P o r ta n to , el e s ta d o 247
del A F D r e c o n o c e el p a tró n a.
O b sé rv e se q u e la c a d e n a abb c o n c u e r d a c o n d o s p a tro n e s , abb y a * b ', r e c o n o ­
c id o s e n los e s ta d o s 6 y 8 del A F N . El e s ta d o 68 d e l A F D , e n la ú ltim a lín ea d e la
ta b la d e tra n sic io n e s, in c lu y e p o r t a n t o d o s e s ta d o s d e a c e p ta c ió n d e l A F N . Se ob-

S ím bolo d e E n t r a d a
Es t a d o Patr ó n A nun c ia d o
a b
0137 247 8 n inguno
247 7 58 a
8 — 8 a*b'
7 7 8 n inguno
58 — 68 a *b'
68 — 8 abb

Fig. 3.37. T abla de transiciones para un A FD .


136 ANALISIS LEXICO

serv a q u e a b b a p a re c e a n te s q u e a*b* e n las reglas d e tr a d u c c ió n d e la esp ecificació n


d e L E X . d e m o d o q u e se a n u n c i a q u e a b b h a s id o h a lla d o e n el e s ta d o 6 8 d e l A F D .
C o n la c a d e n a d e e n t r a d a a a b a , el A F D e n t r a e n el e s ta d o s u g e r id o p o r la si­
m u la c ió n del A F N q u e se m u e s tr a e n la fig u ra 3 .3 6 . C o n s id é re s e u n s e g u n d o e je m ­
p lo . la c a d e n a d e e n t r a d a aba. El A F D d e la fig u ra 3 .3 7 e m p ie z a e n el e s ta d o 0 1 3 7 .
C o n la e n tr a d a a, va al e s ta d o 2 4 7 . D e sp u é s, c o n la e n t r a d a b a v a n z a h a s ta el e s ta d o
58, y c o n la e n t r a d a a n o tie n e u n e s ta d o sig u ien te. P o r ta n to , se h a a lc a n z a d o la
te r m in a c ió n , a v a n z a n d o p o r los e s ta d o s del A F D 0 1 3 7 , d e s p u é s 2 4 7 y lu e g o 58. El
ú lt im o d e ésto s in c lu y e el e s ta d o d e a c e p ta c ió n 8 d e l A F N d e la fig u ra 3.3 5(a). A sí,
en el e s ta d o 5 8 el A F D a n u n c i a q u e h a sid o re c o n o c id o el p a t r ó n a*b*, y selec cio n a
a ab, el p re fijo d e la e n t r a d a q u e c o n d u j o al e s ta d o 5 8 , c o m o le x e m a . □

Im p la n ta c ió n d e l o p e r a d o r d e p r e a n á lisis

R e c u é rd e se d e la se c c ió n 3.4 q u e es n e c e sa rio el o p e r a d o r d e p re a n á lisis / e n a lg u n a s


s itu a c io n e s, p u e s to q u e el p a tró n q u e re p r e s e n ta u n d e t e r m in a d o c o m p o n e n t e léxico
p u e d e n e c e s ita r d e s c r ib ir a lg ú n c o n t e x t o p o s te r io r a l le x e m a real. C u a n d o se c o n ­
v ie rte u n p a tró n c o n / e n u n A F N . se p u e d e c o n s id e r a r al / c o m o si f u e ra € . d e
m o d o q u e e n re a lid a d n o se b u s c a / e n la e n tr a d a . S in e m b a rg o , si u n a c a d e n a re­
p r e s e n ta d a p o r esta e x p re s ió n re g u la r es re c o n o c id a e n el buffer d e e n tr a d a , el final
del le x e m a n o es la p o sic ió n del e s ta d o d e a c e p ta c ió n del A F N . M á s b ie n e s tá e n la
ú ltim a a p a r ic ió n del e s ta d o d e este A F N e n q u e tu v o u n a tra n s ic ió n e n el / (im a g i­
nario).

E je m p lo 3 .2 0 . E n la figura 3.38, se m u e s tr a el A F N q u e r e c o n o c e el p a t r ó n p a r a i f
d a d o e n el e je m p lo 3.12. El e s ta d o 6 in d ic a la p re s e n c ia d e la p a la b ra c lav e I F ; sin
e m b a r g o , se e n c u e n t r a el c o m p o n e n t e lé x ic o i f b u s c a n d o h a c ia a tr á s h a s ta la úl­
ti m a a p a r ic ió n d e l e s ta d o 2. □

cualquiera

F ig. 3 .3 8 . A F N q u e reconoce la palabra clave i f de F O R T R A N .

3 .9 O P T I M A C I O N D E B U S C A D O R E S P O R C O N C O R D A N C I A
DE PATRO NES BASADO S EN AFD

E n esta se c c ió n se in tr o d u c e n tres a lg o ritm o s q u e se h a n u tiliz a d o p a r a i m p l a n t a r y


o p t i m a r b u s c a d o re s p o r c o n c o r d a n c ia d e p a tr o n e s c o n s tr u id o s a p a r ti r d e e x p re sio ­
n e s regulares. E l p r im e r a lg o r itm o se p u e d e in c lu ir e n u n c o m p ila d o r d e L E X p o r ­
q u e c o n s tr u y e u n A F D d ir e c ta m e n te a p a r tir d e u n a e x p re s ió n reg u la r, s in c o n s tr u ir
u n A F N in te r m e d io d u r a n t e el p roceso.
3.9 O PT IM A C IO N DE B U S C A D O R E S POR C O N C O R D A N C IA 137

El s e g u n d o a lg o ritm o m in im iz a el n ú m e r o d e e s ta d o s d e c u a lq u ie r A F D , así q u e
p u e d e u tilizarse p a r a re d u c ir el t a m a ñ o d e u n b u s c a d o r p o r c o n c o r d a n c ia d e p a tr o ­
n e s b a s a d o e n A F D . El a lg o ritm o es eficien te; s u ti e m p o d e e je c u c ió n es O (n log n),
d o n d e n es el n ú m e r o d e e s ta d o s d e l A F D . El te rc e r a lg o ritm o se p u e d e u tiliz a r p a r a
p r o d u c ir r e p r e s e n ta c io n e s rá p id a s y m á s c o m p a c ta s p a r a la ta b la d e tr a n s ic io n e s d e
u n A F D q u e u n a sen cilla ta b la d e d o s d im e n s io n e s .

E s ta d o s s ig n ific a tiv o s d e un A F N

Se lla m a significativo a u n e s ta d o d e u n A F D si tie n e u n a tran sició n d e salida q u e n o


sea co n e . L a c o n s tru c c ió n d e s u b c o n ju n to s d e la figura 3.25 sólo utiliza los estad o s
significativos e n u n s u b c o n ju n to T c u a n d o d e te r m in a cerradura - € {m ueve (T . a)), el
c o n ju n to d e estad o s es a lc an zab le d e sd e T c o n e n tr a d a a. El c o n ju n to m u eve ( v. a) es
n o vacío sólo c u a n d o el e s ta d o .v es significativo. D u r a n te la c o n s tru c ió n . se p u e d e n
identificar d o s s u b c o n ju n to s si tie n e n los m is m o s e s ta d o s significativos, y los d o s o
n in g u n o in clu y en estad o s d e a c e p ta c ió n del A F N .
C u a n d o se a p lic a la c o n s tr u c c ió n d e s u b c o n ju n to s a u n A F N o b te n id o a p a r tir
d e u n a e x p re sió n re g u la r m e d ia n te el a lg o r itm o 3 .3 , se p u e d e n a p r o v e c h a r las p ro ­
p ie d a d e s ex clu siv as del A F N p a r a c o m b in a r las d o s c o n s tru c c io n e s . L a c o n s tr u c c ió n
c o m b in a d a r e la c io n a los e s ta d o s sig n ificativ o s del A F N c o n los s ím b o lo s d e la ex ­
p re s ió n reg u la r. L a c o n s tr u c c ió n d e T h o m p s o n realiza u n e s ta d o sig n ificativ o ju s to
c u a n d o u n s ím b o lo del a lfa b e to a p a re c e e n u n a e x p re sió n reg u la r. P o r e je m p lo , se
c o n s tr u ir á n e s ta d o s sign ificativ os p a ra c a d a a y b en ( a | b)*abb.
A d e m á s , el A F N re s u lta n te tie n e e x a c ta m e n te u n e s ta d o d e a c e p ta c ió n , p e r o el
e s ta d o d e a c e p ta c ió n n o es sig n ificativ o p o r q u e n o tie n e tra n s ic io n e s q u e salg an de
él. C o n c a t e n a n d o u n m a r c a d o r ú n i c o d e l e x t r e m o d e r e c h o # a u n a e x p r e s ió n re­
g u la r r, se d a al e s ta d o d e a c e p ta c ió n d e r u n a tr a n s ic ió n e n # , c o n v ir tié n d o lo en
e s ta d o sig n ificativ o d e l A F N p a r a r # . E n o tra s p a la b ra s, u tiliz a n d o la e x p re s ió n re­
g u la r a u m e n t a d a ( r ) # n o h a c e falta o c u p a rs e d e los e s ta d o s d e a c e p ta c ió n c o n f o r m e
a v a n z a la c o n s t r u c c i ó n d e s u b c o n j u n t o s ; c u a n d o la c o n s t r u c c i ó n e s tá c o m p le ta ,
c u a l q u ie r e s ta d o d e l A F D c o n u n a tr a n s ic ió n e n # d e b e s e r u n e s ta d o d e a c e p t a ­
ción.
U n a ex p resió n reg u lar a u m e n ta d a se re p re s e n ta m e d ia n te u n árb o l s in tá c tic o co n
s ím b o lo s b ásico s e n las h o ja s y o p e r a d o r e s e n los n o d o s in te rio re s. U n n o d o in te rio r
se d e n o m i n a nodo-cal , nodo-o o nodo-ast si está e tiq u e ta d o c o n u n o p e r a d o r d e c o n ­
c a te n a c ió n , d e |, o d e *, re s p e c tiv a m e n te . E n la fig u ra 3 .3 9 (a) se m u e s tr a u n árb o l
s in tá c tic o p a r a u n a e x p re sió n re g u la r a u m e n t a d a d o n d e los nodos-cat están m a r c a ­
d o s c o n p u n to s . S e p u e d e c o n s tr u i r el á r b o l s in tá c tic o p a r a u n a e x p re s ió n reg u lar
igual q u e u n á rb o l s in tá c tic o p a r a u n a e x p re sió n a r itm é tic a (véase C a p . 2).
S e e t i q u e t a n la s h o ja s d e l á rb o l s in tá c tic o p a r a u n a e x p re s ió n re g u la r c o n s ím ­
b o lo s d e l alfa b e to o c o n € . A c a d a h o ja n o e tiq u e ta d a c o n c se le aso cia u n e n te r o
ú n ic o y este e n t e r o se d e n o m i n a posición d e la h o ja y ta m b ié n p o sic ió n d e s u s ím ­
b o lo . U n s ím b o lo re p e tid o tie n e p o r t a n t o v arias p o sicio n es. E n el árb o l s in tá c tic o
d e la fig u ra 3 .39(a) las p o s ic io n e s se m u e s tr a n p o r d e b a j o d e los s ím b o lo s. L o s e s ta ­
d o s n u m e r a d o s del A F N d e la fig u ra 3 .39(c) c o r r e s p o n d e n a las p o s ic io n e s d e las
h o ja s e n el á rb o l s in tá c tic o d e la fig u ra 3.3 9(a). N o es u n a c o in c id e n c ia q u e esto s
138 ANALISIS LEXICO

e s ta d o s s e a n lo s e s ta d o s s ig n if ic a tiv o s d e l A F N . L o s e s ta d o s n o s ig n if ic a tiv o s se
n o m b r a n c o n le tra s m a y ú s c u la s e n la figura 3.39(c).
S e p u e d e o b te n e r el A F D d e la figura 3.3 9(b) a p a r tir del A F N d e la figura 3.39(c)
si se a p lic a la c o n s tr u c c ió n d e s u b c o n ju n t o s y se id e n tific a n los s u b c o n ju n t o s q u e
c o n te n g a n lo s m is m o s e s ta d o s sig n ificativ o s. L a id e n tific a c ió n d a c o m o r e s u lta d o la
c o n s t r u c c i ó n d e u n e s ta d o m e n o s , ta l c o m o d e m u e s t r a u n a c o m p a r a c i ó n c o n la
fig u ra 3.29.

C o n str u c c ió n d e un A F D a p a r ti r d e u n a e x p r e s ió n regu lar

E n esta secció n se m u e s tr a c ó m o c o n s tr u i r d ir e c ta m e n te u n A F D a p a r tir d e u n a


e x p re s ió n re g u la r a u m e n t a d a ( r ) # . P r im e r o se c o n s tr u y e u n á rb o l s in tá c tic o 7 p a ra
( r ) # y d e s p u é s se c a lc u la n c u a t r o fu n cio n e s: anulable. p rim era pos, ú h im a p o s y si-

/ \
#
/ \ 6 (a ) A rb ol d e s in ta x is para (< /1 h ) * a b b # .
h
\ 5
b
/ \ 4
a
3

/ \
a h
I 2

(b) A F D resultante.

(c ) A F N su b x a c e n te .

Fig. 3.39. A F D y A F N co n stru id o s a p artir d e (a b)* a b b # .


3.9 O PT IM A C IO N DE B U S C A D O R E S POR C O N C O R D A N C IA 139

guienlepos, h a c ie n d o re c o rrid o s s o b re T. P o r ú ltim o se c o n s tr u y e el A F D a p a r tir d e


siguientepos. L as f u n c io n e s anuladle, p rim era p o s y últim apos se d e fin e n s o b re los
n o d o s del á rb o l s in tá c tic o y se u sa n p a r a c a lc u la r siguientepos , q u e está d e f in id a en
el c o n j u n t o d e p o sicio n es.
R e c o r d a n d o la e q u iv a le n c ia e n t r e los e s ta d o s sig nificativ o s del A F N y las p o si­
c io n e s d e las h o ja s e n e! á rb o l s in tá c tic o d e la e x p re s ió n regular, se p u e d e a b re v ia r
la c o n s tru c c ió n del A F N c o n s tr u y e n d o el A F D c u y o s e s ta d o s c o r r e s p o n d e n a c o n ­
j u n t o s d e p o s ic io n e s e n el á rb o l. L a s tr a n s ic io n e s € d e l A F N re p re s e n ta n a lg u n a s
e s tr u c tu r a s d e las p o s ic io n e s b a s ta n te c o m p lic a d a s ; e n p a rtic u la r, co d ific a n la in fo r­
m a c ió n referen te a la p o s ib ilid a d d e q u e u n a p o sic ió n p u e d a seg u ir a o tra . E s decir,
c a d a s ím b o lo d e u n a c a d e n a d e e n t r a d a p a r a u n A F N p u e d e s e r e m p a r e ja d o p o r d e ­
te r m in a d a s p o sicio n es. U n s ím b o lo d e e n t r a d a c só lo p u e d e e m p a r e ja r s e c o n p o si­
c io n e s e n las q u e h a y a u n a c, p e r o n o to d a s las p o s ic io n e s c o n u n a c c o n c u e r d a n
n e c e s a r ia m e n te c o n u n d e t e r m i n a d o c a so d e c e n la c a d e n a d e e n tra d a .
L a n o c ió n d e u n a p o s ic ió n c o n c o r d a n d o c o n u n s í m b o l o d e e n t r a d a se rá d e fi­
n id a e n c u a n t o a la f u n c ió n siguientepos e n p o s ic io n e s del á rb o l s in tá c tic o . Si / es
u n a p o sic ió n , siguientepos (/) e s el c o n j u n t o d e p o s ic io n e s j tales q u e h a y a lg u n a c a ­
d e n a d e e n t r a d a . . . o / . . . tal q u e i c o r r e s p o n d e a e s ta a p a r ic ió n d e c y / a esta a p a ­
rició n d e d.

E je rc ic io 3 .2 1 . E n la fig u ra 3 .3 9 (a ), siguientepos{ 1) = j l , 2. 3}. E l r a z o n a m i e n t o


e s q u e si se ve u n a s c o r r e s p o n d ie n t e a la p o s ic ió n 1, se h a o b s e r v a d o s o la m e n te
u n a a p a r i c ió n d e a | b e n la c e r r a d u r a ( a \ b)*. A c o n t i n u a c i ó n se p o d r ía v e r la p r i­
m e r a p o s ic ió n d e o t r o c a s o d e a | b, lo q u e e x p lic a p o r q u é 1 y 2 e s tá n e n sig u ien ­
tepos (1). L u e g o se p o d r ía o b s e r v a r la p r i m e r a p o s ic ió n d e lo q u e sig u e a (a \ b)*.
es d e c ir, la p o s ic ió n 3 . □

P a r a c a lc u la r la f u n c ió n siguientepos , e s n e c e s a rio c o n o c e r q u é p o s ic io n e s p u e ­
d e n c o n c o r d a r c o n el p r i m e r o ú lt im o s ím b o lo d e u n a c a d e n a g e n e ra d a p o r u n a d e­
te r m in a d a s u b e x p re s ió n d e u n a e x p re s ió n reg u la r. (E sta in f o r m a c ió n se u tiliz ó in ­
f o r m a lm e n te e n el E je m p lo 3 .2 1 .) Si r* es ta l s u b e x p re s ió n . e n to n c e s to d a p o sic ió n
q u e p u e d a e s ta r p r im e r o e n r sigue a to d a po sició n q u e p u e d a e s ta r al final e n r. De
f o r m a s im ila r, si rs es u n a s u b e x p re s ió n , e n to n c e s to d a p r im e r a p o sic ió n d e s sigue
a to d a ú ltim a p o sic ió n d e r.
E n c a d a n o d o n del á rb o l s in tá c tic o d e u n a e x p re s ió n reg u la r, se d e fin e la f u n ­
c ió n prim erapos {n) q u e p r o p o r c io n a el c o n j u n t o d e p o s ic io n e s q u e p u e d e n c o n c o r ­
d a r c o n el p r im e r s ím b o lo d e u n a c a d e n a g e n e r a d a p o r la s u b e x p re s ió n c o n ra íz en
n. A s im is m o , se d e fin e la f u n c ió n ú ltim a p o s (n) q u e p r o p o r c io n a el c o n j u n t o d e p o ­
sic io n e s q u e p u e d e n c o n c o r d a r c o n el ú lt im o s ím b o lo e n esa c a d e n a . P o r e je m p lo ,
si n e s la r a íz del á r b o l c o m p l e t o d e la fig u ra 3 .3 9 (a ), e n t o n c e s p rim era p o s (n) =
= {1. 2. 3) y últim a p o s (n) = {6¡. E n b re v e se d a r á u n a lg o ritm o p a r a c a lc u la r estas
fu n c io n e s.
P a r a c a lc u la r prim erapos y últim apos , es n e c e s a rio c o n o c e r q u é n o d o s s o n las
raíces d e las s u b e x p re s io n e s q u e g e n e r a n le n g u a je s q u e in c lu y e n la c a d e n a v acía. A
d ic h o s n o d o s se les d e n o m in a anuladles , y se d e f in e anulab/e{n) c o m o v e r d a d e r o si
el n o d o n es a n u la b le , y falso e n c a so c o n tra rio .
A h o r a se p u e d e n d a r las reglas p a r a c a lc u la r las f u n c io n e s anulable . primerap< '
140 ANALISIS LEXICO

últim apos y siguientepos. P a r a las tr e s p r im e r a s fu n c io n e s, h a y u n a regla b a se a c e rc a


d e e x p re s io n e s d e u n s ím b o lo b ásico , y ta m b ié n tres reg las in d u c tiv a s q u e p e r m ite n
d e t e r m in a r el v a lo r d e las f u n c io n e s q u e c o n s titu y e n el á rb o l s in tá c tic o d e s d e a b a jo ;
e n to d o s e s to s casos. las reglas in d u c tiv a s c o r r e s p o n d e n a los tres o p e ra d o re s , u n ió n ,
c o n c a t e n a c i ó n y c e r r a d u r a . E n la fig u ra 3 .4 0 se d a n la s reg las p a r a a n u la b le y p ri­
m erapos. L as reglas p a r a últim a p o s (ri) s o n la s m is m a s q u e p a r a prim erapos (/?), pero
c o n Ci y í '2 in v e rtid as, y n o se m o s tr a rá n .
L a p r im e r a regla p a r a anu lable esta b le c e q u e si n es u n a h o ja e tiq u e ta d a c o n € ,
e n to n c e s anulable (n) e s v e rd a d e ra . L a s e g u n d a regla esta b le c e q u e si n es u n a h o ja
e tiq u e ta d a c o n u n s ím b o lo del a lfa b e to , e n to n c e s a n u lable (n) e s falsa. E n este caso ,
c a d a h o ja c o r r e s p o n d e a u n so lo s ím b o lo d e e n tr a d a , y p o r t a n t o n o p u e d e g e n e ra r
a € . L a ú ltim a regla p a r a an u lable esta b le c e q u e si n es u n n o d o - a s t c o n h ijo C\,
e n to n c e s anulable (n) es v e rd a d e ra , p u e s to q u e la c e r r a d u r a d e u n a e x p re s ió n g en era
u n len g u aje q u e in c lu y e a € .
O tr o e je m p lo , la c u a r t a regla p a r a prim erapos esta b le c e q u e si n e s u n n o d o -c a t
c o n h ijo iz q u ie rd o c, e h ijo d e r e c h o c2, y si anulable {c{) es v e rd a d e ra , e n to n c e s

prim erapos (n) = prim erapos (c ,) U prim erapos (c2)

d e lo c o n tr a r io , prim erapos (n) = prim erapos (c*). L o q u e esta regla esta b le c e es q u e


si e n u n a e x p re s ió n rs, r g e n e r a € , e n to n c e s las p r im e r a s p o s ic io n e s d e s “a p a re c e n
a lo largo d e " r y ta m b ié n s o n las p r im e r a s p o s ic io n e s d e rs: d e o tr o m o d o , só lo las
p r im e r a s p o s ic io n e s d e r s o n p r im e r a s p o s ic io n e s d e rs. E l r a z o n a m i e n t o es sim ila r
p a r a el resto d e las reglas p a r a a n u lable y prim erapos.
L a fu n c ió n siguientepos (i) in d ic a q u é p o s ic io n e s p u e d e n seg u ir a la p o sic ió n i
e n el árb o l s in tá c tic o . D o s reglas d e fin e n to d a s las f o r m a s e n q u e u n a p o sic ió n p u e d e
seg u ir a otra.

N odo n anulable {n) primerapos (n)

n es una hoja
true 0
eliquetada con €

n es una hoja
false {/}
etiquetada con la posición i

anulable (ct) or anulable (c2) primerapos (C\) U primerapos (C:)

n C \) ¡f anulable{C\) then
anulable{C\) and anulable{C:) primerapos (c») U primerapos (ci)
© © else primerapos (c,)

n (jT )
true primerapos (c,)
©
Fig. 3.40. Reglas p a ra calcu lar anulable y primerapos.
3.9 O P T I M A C I O N D E B U S C A D O R E S P O R C O N C O R D A N C IA 141

1. Si zi e s u n n o d o -c a t c o n h ijo iz q u ie r d o c ( e h ijo d e r e c h o c2. e / es u n a p o sició n


d e n t r o d e últim a p o s (c,), e n to n c e s to d a s las p o s ic io n e s d e prim erapos ( o ) están
e n siguientepos (/).

2. Si n e s u n n o d o -a st. e i e s u n a p o sic ió n d e n t r o d e ú ltim a p o s (n), e n to n c e s to d a s


las p o s ic io n e s d e prim erapos (n) e s tá n e n siguientepos (/).

Si se h a n c a lc u la d o prim erapos y últim apos p a r a c a d a n o d o , siguientepos d e c a d a


p o sició n se p u e d e c a lc u la r h a c ie n d o u n r e c o r r id o e n p r o f u n d id a d del á rb o l s in tá c ­
tico.

E je m p lo 3 .2 2 . E n la figura 3.41 se m u e s tr a n los v alo res d e prim erapos y últim apos


e n to d o s lo s n o d o s d e l á r b o l d e la f ig u r a 3 .3 9 (a ): p rim era p o s (n) a p a r e c e a la iz­
q u ie r d a del n o d o n y ú ltim a p o s (n) a la d e re c h a . P o r e je m p lo , prim erapos d e la h o ja
s itu a d a m á s a la iz q u ie r d a e t iq u e ta d a c o n a es {1}, p u e s to q u e d i c h a h o ja e s tá e t i­
q u e t a d a c o n la p o sic ió n 1. A sim is m o , prim erapos d e la s e g u n d a h o ja e s {2}. p u esto
q u e esta h o ja está e tiq u e ta d a c o n la p o sic ió n 2. P o r la te rc e ra regla d e la figura 3.40,
prim erapos d e s u s p a d r e s es {1. 2}.

{1.2.3} • {61

{1.2,31 • {51 {61 # {61

{1.2.3} • {41 {51 b {51

{1.2.31 • {31 ( 4 | b {41

{ 1.21 * { 1.21 (3> </ {31


I
{1.21 | {l.2|

{II </ H l (2) b {2)

Fig. 3.41. primerapos y últimapos para los nodos del árbol de sintaxis para (a ¡ b)*abb#

El n o d o e tiq u e ta d o c o n * es el ú n ic o n o d o a n u la b le . P o r ta n to , p o r la c o n d ic ió n
if d e la c u a r t a regla, prim erapos p a r a el p a d re d e este n o d o (el q u e re p r e s e n ta la ex ­
p re s ió n (a | b)*a) es la u n i ó n d e {1, 2} y {3}, q u e s o n las prim erapos d e s u s h ijo s iz­
q u ie r d o y d e r e c h o . P o r o t r a p arte , la c o n d ic ió n e ls e se a p lic a a ú ltim a p o s d e este
n o d o , p u e s to q u e la h o ja d e la p o s ic ió n 3 n o es a n u la b le . P o r ta n to , ú ltim a p o s del
p a d r e d e l n o d o -a s t c o n tie n e só lo 3.
A h o r a se c a lc u la siguientepos d e a b a jo a a r r ib a p a r a c a d a n o d o del á rb o l s in tá c ­
tic o d e la fig u ra 3 . 4 1. E n el n o d o -a s t, se a ñ a d e n 1 y 2 a siguientepos (1 ) y a siguien­
tepos (2) u tiliz a n d o la regla 2. E n el p a d re del n o d o -a s t, se a ñ a d e 3 a siguientepos (1)
y a siguientepos (2 ) p o r la regla 1. E n el sig u ie n te n o d o -a s t, se a ñ a d e 4 a siguiente-
142 A N A L ISIS LEXICO

p o s (3 ) p o r la regla 1. E n los d o s n o d o s-e st sig u ie n te s se a ñ a d e 5 a siguientepos (4) y


6 a siguientepos (5 ) u tiliz a n d o la m i s m a regla. E sto c o m p le ta la c o n s tr u c c ió n d e si-
guien! epos. E n la fig u ra 3 .4 2 se r e s u m e siguientepos.

N odo siguientepos
1 ( 1 . 2 , 3}
2 ( 1 , 2 , 3}
3 {4}
4 {5}
5 (6)
6 —

Fig. 3.42. La función siguientepos.

S e p u e d e ilu s tr a r la f u n c ió n siguientepos c r e a n d o u n g ra fo d irig id o c o n u n n o d o


p a r a c a d a p o s ic ió n y u n a a r is ta d irig id a d e s d e el n o d o / al m o d o j si j e s tá e n siguien­
tepos (/). E n la figura 3 .4 3 se m u e s tra este g rafo d irig id o p a r a siguientepos d e la figu­
ra 3.42.

Es in te r e s a n te o b s e rv a r q u e este d ia g r a m a se c o n v e r tir ía e n u n A F N s in tr a n s i­
c io n e s € p a r a la e x p re s ió n re g u la r e n c u e s tió n si:

1. se c o n v ie r te n to d a s las p o s ic io n e s d e prim erapos d e la ra íz e n e s ta d o s d e inicio.


2. se e tiq u e ta c a d a a ris ta d irig id a (/, j ) c o n el s ím b o lo d e la p o s ic ió n j , y
3. se c o n v ie r te la p o sic ió n a s o c ia d a c o n # e n el ú n ic o e s ta d o d e a c e p ta c ió n .

P o r t a n t o , n o es s o r p r e n d e n te q u e se p u e d a c o n v e r tir el g rafo d e siguientepos e n u n


A F D u tiliz a n d o la c o n s tr u c c ió n d e s u b c o n ju n to s . T o d a la c o n s tr u c c ió n p u e d e efec­
tu a rs e s o b re la s p o sicio n es, u s a n d o el sig u ie n te a lg o ritm o . □

A lg o ritm o 3 .5 . C o n s tr u c c ió n d e u n A F D a p a r tir d e u n a e x p re s ió n re g u la r r.

E ntrada. U n a e x p re s ió n re g u la r r.
Salida. U n A F D D q u e r e c o n o c e a L(r).
3.9 O PTIM A CIO N D E B U SC A D O R E S POR C O N C O R D A N C IA 143

M étodo.

1. C o n s tru y a s e u n á rb o l sin tá ctic o p a r a la ex p resió n re g u la r a u m e n ta d a (r) # , d o n d e


# es u n m a r c a d o r d e final ú n ic o q u e se a ñ a d e a (r).

2. C o n s tr u y a n s e las f u n c io n e s anulable , prim erapos , ú llim a p o s y siguienlepos h a ­


c ie n d o re c o rrid o s e n p r o f u n d id a d d e T.

3. C o n s tr u y a n s e estadosD , el c o n j u n t o d e e s ta d o s d e D , y /r¿wZ>, la ta b la d e t r a n ­
sic io n e s p a r a D p o r el p r o c e d im ie n to d e la fig u ra 3 4 4 . L o s e s ta d o s d e n t r o d e
estadosD s o n c o n j u n to s d e p o sicio n es; al p rin c ip io , c a d a e s ta d o está “ n o m a r ­
c a d o " , y u n e s ta d o se c o n v ie r te e n “ m a r c a d o " j u s t o a n te s d e c o n s id e r a r s u s t r a n ­
sic io n e s d e salid a. El e s ta d o d e in ic io d e D e s prim erapos ( ra íz). y lo s e s ta d o s d e
a c e p ta c ió n s o n to d o s los q u e c o n t ie n e n la p o s ic ió n a s o c ia d a c o n el m a r c a d o r d e
final # . □

E je m p lo 3 .2 3 . C o n s tr u y a s e u n A F D p a r a la e x p re s ió n re g u la r (a | b)*abb. E n la fi­
g u r a 3 .3 9 (a) se m u e s tra el á rb o l s in tá c tic o p a r a ((a | b )* a b b )# . a n u lable es v e rd a ­
d e r o só lo p a r a el n o d o e t iq u e ta d o c o n *. E n la fig u ra 3.41 se m u e s tr a n las fu n c io n e s
prim erapos y úllim apos. y siguientepos se m u e s tra e n la fig u ra 3.42.
E n la figura 3 .4 1 . prim erapos d e la raíz es {I, 2, 3(. S ea A este c o n j u n t o y c o n s i­
d érese el s ím b o lo d e e n tr a d a a. L as p o s ic io n e s 1 y 3 son p a r a a. a s í q u e sea B = si-
guientepos ( 1) U siguienlepos (3 ) = {I. 2. 3. 4). P u e s to q u e este c o n j u n t o n o h a a p a ­
re c id o h a s ta a h o r a se h a c e tra n D (/i, a] : = B.

al principio, el único estado n o m a rc ad o en estadosD es


primerapos (raíz), d o n d e raíz es la raíz del árbol
d e sintaxis p a ra (r) # ;
while hay u n estado sin m a rc ar T en estadosD do begin
m a rc ar T :
for cada sím bolo d e e n tra d a a d o begin
sea U el c o n ju n to d e posiciones q u e están en
siguientepos (p) p a ra alguna posición p en tal
q u e el sím b o lo en la posición p es a:
if i n o está vacio y n o está en estadosD then
a ñ a d ir V c o m o estado no m a rc a d o a estadosD ;
tranD [T. a \ : = U
end
end
Fig. 3.44. C o n stru cción de u n A FD .

C u a n d o se c o n s id e r a la e n t r a d a by se o b s e rv a q u e d e la s p o s ic io n e s d e A. só lo 2
está a s o c ia d a a b, a s í q u e se d e b e c o n s id e r a r el c o n j u n t o siguientepos (2 ) = (1, 2, 3}.
P u e s to q u e este c o n j u n t o ya h a b ía a p a r e c id o , n o se a ñ a d e a estadosD , s in o q u e se
a ñ a d e la tra n s ic ió n tranD [.A , b] : = A.
A h o r a se c o n t i n ú a c o n B = { I, 2 , 3, 4}. L os e s ta d o s y tr a n s ic io n e s q u e fin a l­
m e n te se o b tie n e n s o n los m is m o s q u e se m o s tr a r o n e n la figura 3 .3 9 (b). □
144 A N A L ISIS LEXICO

M in im iz a c ió n del n ú m e ro d e e s ta d o s d e un A F D

U n a c o n c lu s ió n te ó ric a i m p o r t a n t e es q u e to d o c o n j u n t o re g u la r es re c o n o c id o p o r
u n A F D c o n el m í n i m o d e e s ta d o s q u e es ú n ic o h a s ta n o m b r e s d e e s ta d o s . E n esta
secció n , se m u e s tr a c ó m o c o n s tr u i r este A F D del m í n i m o d e e s ta d o s re d u c ie n d o al
m í n i m o p o s ib le el n ú m e r o d e e s ta d o s e n u n A F D d e t e r m i n a d o s in a f e c ta r al le n ­
g u aje q u e se está re c o n o c ie n d o . S u p ó n g a s e q u e se tie n e u n A F D M c o n su c o n ju n to
d e e s ta d o s S y su alfa b e to d e s ím b o lo s d e e n tr a d a 2 - Se s u p o n e q u e c a d a estad o tiene
u n a tra n s ic ió n c o n c a d a s ím b o lo d e la e n tr a d a . Si n o fu era así, se p u e d e in tr o d u c ir
u n n u e v o “e s ta d o in a c tiv o " d . c o n tra n s ic io n e s d e d a d c o n to d a s las e n tra d a s , y
a ñ a d i r u n a tr a n s ic ió n d e s d e el e s ta d o s a l d e n la e n t r a d a a si n o h u b o tra n s ic ió n
d e sd e 5 en a.
S e d ic e q u e la c a d e n a w d istin g u e al e s ta d o s del e s ta d o 1 si. e m p e z a n d o c o n el
A F D M e n el e s ta d o s y a l im e n t á n d o lo c o n la e n t r a d a w, se te r m in a e n u n e s ta d o d e
a c e p ta c ió n , p e r o c o m e n z a n d o e n el e s ta d o / y a l im e n t á n d o lo c o n la e n t r a d a w, se
t e r m i n a e n u n e s ta d o d e n o a c e p ta c ió n o viceversa. P o r e je m p lo . € d is tin g u e c u a l­
q u i e r e s ta d o d e a c e p ta c ió n d e c u a lq u ie r e s ta d o d e n o a c e p ta c ió n , y e n el A F D d e la
fig u ra 3 .2 9 , los e s ta d o s A y B h a n sid o d ife re n c ia d o s p o r la e n tr a d a bb , p u e s to q u e
A v a al e s ta d o d e n o a c e p ta c ió n C e n la e n t r a d a bb, m ie n tr a s q u e B v a al e s ta d o de
a c e p ta c ió n E e n la m is m a e n tr a d a .
El a lg o ritm o p a r a m i n im i z a r el n ú m e r o d e e s ta d o s d e u n A F D f u n c io n a e n c o n ­
tr a n d o to d o s los g r u p o s d e e s ta d o s q u e p u e d e n s e r d ife r e n c ia d o s p o r u n a c a d e n a d e
e n tr a d a . C a d a g r u p o d e e s ta d o s q u e n o p u e d e d ife re n c ia rs e se f u s io n a e n to n c e s en
u n ú n i c o e s ta d o . E l a lg o r i tm o o p e r a m a n t e n i e n d o y r e f i n a n d o u n a p a r ti c ió n del
c o n j u n t o d e estad o s. C a d a g r u p o d e e s ta d o s d e n t r o d e la p a rtic ió n está f o r m a d o p o r
e s ta d o s q u e a ú n n o h a n sid o d is tin g u id o s u n o s d e o tro s , y to d o s los p a re s d e e s ta d o s
esco g id o s d e e n t r e g r u p o s d ife re n te s h a n s id o c o n s id e r a d o s d is tin g u ib le p o r u n a e n ­
tra d a .
Al p r in c ip io , la p a rtic ió n c o n s ta d e d o s g ru p o s: los e s ta d o s d e a c e p ta c ió n y los
e s ta d o s d e n o a c e p ta c ió n . El p a so f u n d a m e n ta l c o n s is te e n t o m a r u n g r u p o d e esta ­
d o s , p o r e je m p lo A = {su s 2, . . . s*} y u n s ím b o lo d e e n t r a d a a y c o m p r o b a r q u é
tra n s ic io n e s tie n e n los e s ta d o s $ 1, s 2, . . . , s* c o n la e n t r a d a a. Si d ic h a s tra n s ic io n e s
s o n h acia e s ta d o s d e d o s o m á s g r u p o s d is tin to s d e la p a rtic ió n e n c u rso , e n to n c e s
h a y q u e d iv id ir A p a r a q u e la s tra n s ic io n e s d e s d e los s u b c o n ju n to s d e A q u e d e n to ­
d a s c o n f in a d a s e n u n ú n ic o g r u p o d e la p a rtic ió n e n c u rs o . S u p ó n g a se , p o r e je m p lo ,
q u e S| y s2 v a n a lo s e s ta d o s t\ y t2 c o n la e n t r a d a a, y q u e /, y t2 e s tá n e n d ife re n te s
g ru p o s d e la p a rtic ió n . E n to n c e s se d e b e d iv id ir A al m e n o s e n d o s s u b c o n ju n to s ,
p a r a q u e u n s u b c o n ju n to c o n te n g a a y el o tr o , a 52. O b sé rv e se q u e t\ y t2 son
d ife re n c ia d o s p o r a lg u n a c a d e n a >v, y s { y s 2, p o r la c a d e n a aw.
E ste p ro c e s o d e d iv id ir g ru p o s d e n t r o d e la p a r tic ió n e n c u rs o se re p ite h asta q u e
n o sea n e c e sa rio d iv id ir n in g ú n o t r o g ru p o . A u n q u e se h a ju s tif ic a d o p o r q u é p u e ­
d e n re a lm e n te d ife re n c ia rs e lo s e s ta d o s q u e h a n sid o d iv id id o s e n d ife re n te s gru p os,
n o se h a in d ic a d o p o r q u é lo s e s ta d o s q u e n o h a n s id o d iv id id o s e n g r u p o s d ife re n te s
n o p u e d e n e n n in g ú n c a so s e r d ife r e n c ia d o s p o r n in g u n a c a d e n a d e e n tr a d a . S in e m ­
bargo . tal es el c a so y se d e ja la p r u e b a d e ese h e c h o al le c to r in te r e s a d o e n la te o ría
(véase, p o r e je m p lo , H o p c r o f t y U llm a n [1979]). T a m b ié n se d e ja al le c to r in te re ­
3.9 O PT IM A C IO N D E B U S C A D O R E S POR C O N C O R D A N C IA 145

s a d o la p r u e b a d e q u e el A F D c o n s tr u i d o t o m a n d o u n e s ta d o d e c a d a g r u p o d e la
p a rtic ió n fin al y e l im i n a n d o d e s p u é s lo s e s ta d o s in a c tiv o s y los e s ta d o s n o a lc a n z a -
bles d e sd e el e s ta d o d e in ic io q u e tie n e ta n p o c o s e s ta d o s c o m o c u a l q u ie r A F D q u e
a c e p te el m is m o lenguaje.

A lg o ritm o 3 .6 . M in im iz a c ió n d e l n ú m e r o d e e s ta d o s d e u n A F D .

E ntrada . U n A F D M c o n u n c o n j u n t o d e e s ta d o s 5 , u n c o n j u n t o d e e n tr a d a s
tra n s ic io n e s d e fin id a s p a r a to d o s los e s ta d o s y las e n tra d a s , u n e s ta d o d e in ic io s 0 y
u n c o n j u n t o d e e s ta d o s d e a c e p ta c ió n F.

Salida. U n A F D Af q u e a c e p ta el m i s m o le n g u a je q u e M y tie n e el m e n o r n ú m e r o
d e e s ta d o s posible.

M étodo.

1. C o n s tr ú y a s e u n a p a rtic ió n in icial f] del c o n j u n t o d e e s ta d o s c o n d o s g ru p o s : los


e s ta d o s d e a c e p ta c ió n F y los e s ta d o s d e n o a c e p ta c ió n S - F .

2. A p liq ú e se el p r o c e d im ie n to d e la fig u ra 3.45 a H p a r a c o n s tr u i r u n a n u e v a p a r ­


tic ió n 0 nueva*

3. Si I]nueva = II' h a c e r |'|finBi = | | y c o n t i n u a r c o n el p a so (4). Si n o . re p e tir el paso


(2) c o n f| : = n nutfva.
4. E scó jase u n e s ta d o e n c a d a g r u p o d e la p a rtic ió n [ | fina, c o m o representante d e
este g ru p o . L o s re p r e s e n ta n te s serán los e s ta d o s d e A F D r e d u c id o s M \ S ea s u n
e s ta d o re p r e s e n ta n te , y s u p ó n g a s e q u e c o n la e n t r a d a a h a y u n a tr a n s ic ió n d e M
d e sd e 5 a / . S ea r el re p re s e n ta n te del g ru p o d e / ( r p u e d e s e r /). E n to n c e s Af tien e
u n a tr a n s ic ió n d e sd e 5 a r c o n la e n t r a d a a. S ea el e s ta d o d e in ic io d e M ' el re­
p r e s e n ta n te del g r u p o q u e c o n tie n e al e s ta d o d e in ic io s0 d e A /, y se a n lo s esta ­
d o s d e a c e p ta c ió n d e \ V los re p r e s e n ta n te s q u e e s tá n e n F. O b sé rv e se q u e c a d a
g ru p o de firmal c o n s ta ú n ic a m e n te d e e s ta d o s e n F o n o tien e n in g ú n e s ta d o e n F.

5. Si M ' tie n e u n e s ta d o in a c tiv o , es d e c ir, u n e s ta d o d q u e n o es d e a c e p ta c ió n y


q u e tie n e tr a n s ic io n e s h a c ia él m i s m o c o n to d o s los s ím b o lo s d e e n t r a d a , eli­
m ín e s e d d e M \ E lim ín e n s e ig u a lm e n te to d o s los e s ta d o s q u e n o se a n a lc a n z a -
bles d e sd e el e s ta d o inicial. T o d a s las tr a n s ic io n e s a d d e sd e o tro s e s ta d o s se c o n ­
v ie rte n e n in d e fin id a s . □

for cada g rupo G d e f] do begin


partición d e G en su b g ru p o s tales q u e d o s estados s y /
d e G están en el m ism o su b g ru p o si. y sólo si, para todos
los sím bolos d e en trad a a , los estados s y / tienen
transiciones en a hacia estados del m ism o g rupo de [];
/* e n el p e o r caso, u n estad o estará sólo e n u n su b g ru p o */
su stitu ir G en ünueva p o r el c o n ju n to de to d o s los subgrupos fo rm ados
end

Fig. 3 .4 5 . C o n stru cció n d e flnucva


146 A N A L ISIS L E X IC O

E je m p lo 3 .2 4 . C o n s id é re s e d e n u e v o el A F D re p r e s e n ta d o e n la fig u ra 3.29. L a p a r ­
tic ió n in icial [I c o n s ta d e d o s g ru p o s : ( £ ) , el e s ta d o d e a c e p ta c ió n , y {A B C D ). los
e s ta d o s d e n o a c e p ta c ió n . P a r a c o n s t r u i r Hnueva» el a lg o r i tm o d e la fig u ra 3 .4 5 p r i­
m e r o c o n s id e r a (£'). P u e s to q u e este g r u p o c o n s ta d e u n so lo e s ta d o , y a n o se p u e d e
d iv id ir m ás, así q u e ( £ 7 ) se coloca en flnuevu- E nto n ces, el alg o ritm o con sid era el g ru p o
(A B C D ). C o n la e n t r a d a a, c a d a u n o d e e s to s e s ta d o s tie n e u n a tr a n s ic ió n a B. asi
q u e to d o s p o d r ía n p e r m a n e c e r e n u n m i s m o g r u p o e n lo q u e a la e n t r a d a a se r e ­
fiere. S in e m b a r g o , c o n la e n t r a d a b, A , B y C v a n a m ie m b r o s d e l g r u p o (A B C D )
d e I], m ie n tr a s q u e D v a a E , u n m i e m b r o d e o t r o g ru p o . P o r ta n to , d e n t r o d e Hnueva
el g r u p o (A B C D ) se d e b e d iv id ir e n d o s n u e v o s g ru p o s , (A B C ) y (D )\ [jnueva es e n ­
to n c e s (A B C )(D )(E ).
E n el sig u ie n te r e c o r r id o p o r el a lg o r itm o d e la fig u ra 3 .4 5 , d e n u e v o n o h a y d i­
v isió n e n la e n t r a d a a , p e r o (A B C ) d e b e d iv id irs e e n d o s n u e v o s g ru p o s , (A C )(B ).
p u e s to q u e e n la e n t r a d a b y A y C tie n e n a m b a s u n a tra n s ic ió n a C. m ie n tr a s q u e B
tie n e u n a tra n s ic ió n a D , u n m i e m b r o d e u n g r u p o d e la p a rtic ió n d is tin to d e l d e C
A sí, el sig u ie n te v a lo r d e [] es (A C )(B )(D )(E ).
E n el sig u ie n te re c o rrid o p o r el a lg o ritm o d e la figura 3 .4 5 . n o se p u e d e d iv id ir
n in g u n o d e los g ru p o s d e u n so lo estado. I-a ú n ic a p o sib ilid ad e s in te n ta r d iv id ir ( . 4 0 .
S in e m b a r g o . A y C v a n al m is m o e s ta d o B en la e n t r a d a a y al m is m o e s ta d o C en
la e n t r a d a b. P o r c o n s ig u ie n te , d e s p u é s d e este re c o rrid o , Flnueva = I I- ílfinai e s e n t o n ­
ces ( A C t B W t E ) .
Si se escoge A c o m o re p r e s e n ta n te d e l g r u p o (A C )%y B. D y E, c o m o re p re s e n ­
ta n te s d e los g r u p o s d e u n so lo e s ta d o , se o b tie n e el a u t ó m a t a re d u c id o c u y a ta b la
d e tra n s ic io n e s se m u e s tr a e n la fig u ra 3.46. El e s ta d o A es el e s ta d o d e in ic io y el
e s ta d o E es el ú n ic o e s ta d o d e ac e p ta c ió n .

S ím b o l o d e E n t r a d a
Estado
a b

A B A
B B D
D B E
E B A

F ig . 3 .4 6 . T abla de transiciones del A F D reducido.

P o r e je m p lo , e n el a u t ó m a t a re d u c id o , el e s ta d o E tie n e u n a tr a n s ic ió n al e s ta d o
A c o n la e n t r a d a b, p u e s to q u e A es el r e p r e s e n ta n te d e l g r u p o d e C y h a y u n a t r a n ­
sició n d e E a C c o n la e n t r a d a b e n el a u t ó m a t a o rig in a l. U n a m o d ific a c ió n s im ila r
tu v o lu g a r e n la e n t r a d a p a r a A y la e n t r a d a b. T o d a s las d e m á s tr a n s ic io n e s están
c o p ia d a s d e la fig u ra 3 .2 9 . N o h a y n in g ú n e s ta d o in a c tiv o e n la fig u ra 3 .4 6 . y to d o s
los e s ta d o s s o n a lc a n z a b le s d e s d e él e s ta d o d e in ic io A . □
3.9 O PTIM A CIO N D E B U S C A D O R E S POR C O N C O R D A N C IA 147

M in im iz a c ió n d e e s t a d o s e n a n a liz a d o r e s lé x ic o s

P a r a a p lic a r el p r o c e d im ie n to d e m in im iz a c ió n d e e s ta d o s a lo s A F D c o n s tr u id o s en
la secció n 3.7, se d e b e c o m e n z a r el a lg o r itm o 3 .5 c o n u n a p a r tic ió n in ic ia l q u e c o ­
lo q u e en g r u p o s d ife re n te s a to d o s los e s ta d o s q u e in d iq u e n d is tin to s c o m p o n e n te s
léxicos.

E je m p lo 3 .2 5 . E n el c a so del A F D d e la fig u ra 3 .3 7 , la p a rtic ió n in icial a g ru p a r ía


0 1 3 7 c o n 7, p u e s to q u e n i n g u n o d e ello s in d ic ó u n c o m p o n e n t e léxico; ta m b ié n se
a g r u p a r ía n 8 y 5 8 , p o r q u e a m b o s in d ic a r o n el c o m p o n e n t e léxico a * b ' . O tr o s es­
ta d o s e s ta r ía n so lo s e n u n g ru p o . I n m e d i a ta m e n te se d e s c u b r e q u e 0 1 3 7 y 7 p e r te ­
n e c e n a g r u p o s d is tin to s , p u e s to q u e v a n a d if e r e n te s g r u p o s e n la e n t r a d a a. A si­
m is m o , 8 y 5 8 n o están j u n t o s d a d a s s u s tr a n s ic io n e s e n la e n t r a d a b. P o r ta n to , el
A F D d e la fig u ra 3 .3 7 es el a u t ó m a t a c o n el n ú m e r o m í n i m o d e e s ta d o s q u e h a c e
este tra b a jo . □

M é to d o s p a ra c o m p r e s ió n d e ta b la s

C o m o y a se h a in d ic a d o , e x iste n m u c h a s f o r m a s d e i m p l a n t a r la f u n c ió n d e tr a n s i­
c ió n d e u n a u t ó m a t a fin ito . El p r o c e s o d e l a n álisis léxico o c u p a u n a p a r te c o n s id e ­
r a b le d e l ti e m p o d e l c o m p ila d o r , p u e s to q u e e s el ú n ic o p r o c e s o q u e d e b e o b s e rv a r
e n la e n t r a d a u n c a r á c te r a la vez. P o r ta n to , el a n a liz a d o r léxico d e b e m i n i m i z a r el
n ú m e r o d e o p e ra c io n e s q u e realiza p o r c a d a c a rá c te r d e e n tra d a . Si se u tiliza u n A F D
p a ra a y u d a r a i m p l a n t a r el a n a liz a d o r léxico, es a c o n s e ja b le u n a re p re s e n ta c ió n e fi­
c ie n te d e la f u n c ió n d e tra n s ic ió n . U n a m a tr iz b id im e n s io n a l. in d e x a d a p o r e s ta d o s
y c a ra c te re s , p r o p o r c io n a el a c c e s o m á s rá p id o , p e r o p u e d e o c u p a r d e m a s i a d o es­
p acio ( p o r e je m p lo , v ario s c ie n to s d e e s ta d o s p o r 128 c a ra c te re s). U n e s q u e m a m á s
c o m p a c to , p e r o m á s le n to , es u tiliz a r u n a lista e n la z a d a p a r a a l m a c e n a r las tr a n s i­
c io n e s d e salid a d e c a d a e s ta d o , c o n u n a tr a n s ic ió n “ p o r o m i s i ó n ” al final d e la lista.
O b v i a m e n t e la tr a n s ic ió n q u e o c u r r e c o n m á s fr e c u e n c ia e s la e le g id a p a r a d ic h a
o m isió n .
E x iste u n a im p la n ta c ió n m á s s u til q u e c o m b in a el acce so r á p id o d e la re p re s e n ­
ta c ió n p o r m e d io d e m a tric e s c o n la c o m p a c id a d d e las e s tr u c tu r a s d e listas. Se u ti­
liza u n a e s tr u c tu r a d e d a t o s q u e c o n s ta d e c u a t r o m a tr ic e s in d e x a d a s p o r n ú m e r o s
d e e s ta d o s , c o m o se m o s tr ó e n la fig u ra 3 .4 7 7. S e u tiliz a la m a tr iz base p a r a d e te r ­
m i n a r la p o sic ió n b a se d e las e n t r a d a s p a r a c a d a e s ta d o a l m a c e n a d o e n las m a tric e s
siguiente y revisa. S e u tiliz a la m a tr iz o m isió n p a r a d e t e r m i n a r u n a p o s ic ió n base
a lte r n a tiv a e n c a so d e q u e la p o s ic ió n base e n c u r s o n o sea válida.
P a r a c a lc u la r sig te ed o (5, a), la tr a n s ic ió n p a r a el e s ta d o s c o n el s ím b o lo d e e n ­
tr a d a a , p r im e r o se c o n s u lta el p a r d e m a tr ic e s sig u ien te y revisa. S u s e n t r a d a s p a ra
el e s ta d o s s e e n c u e n t r a n e n la p o s ic ió n / = b a se [5] -f a. d o n d e el c a r á c te r a e s c o n ­
s id e ra d o c o m o u n e n te r o . Se c o n s id e r a sig u ien te [/ ] c o m o el sig u ie n te e s ta d o d e s en

E n la p rá ctica h a y o tra m a tr iz in d e x a d a p o r 5 . q u e d a e l p a tró n c o n e l q u e c o n c u e r d a , si lo h a y .


c u a n d o se e n tr a e n e l e s ta d o s . E sta in fo r m a c ió n s e d e r iv a d e lo s e sta d o s d e l A F N q u e c o n stitu y e n
al e sta d o s d e l A F D .
148 A N A L IS IS L E X IC O

la e n t r a d a a si revisa [I J = s. Si revisa [/ ] ¿ s, se d e t e r m i n a q = o m isió n [5 ] y se


re p ite el p r o c e d im ie n to r e c u rs iv a m e n te , u tiliz a n d o q e n lu g a r d e s. El p r o c e d im ie n to
es el siguiente:

p ro c e d u re sigte ed o (s, a)\


i f revisa [base [5] + a] = 5 th e n
r e tu r n sig u ien te [base [5] + a ]
else
r e tu r n sig te edo (o m isió n [5 ], a)

L a fin a lid a d d e la e s tr u c tu r a d e la fig u ra 3.47 es a c o r t a r las m a tr ic e s sig u ien te y


revisa p e q u e ñ a s , a p r o v e c h a n d o las s im ilitu d e s e n tr e estad o s. P o r e je m p lo , el e s ta d o
q. el v alo r p o r o m is ió n p a r a el e s ta d o s, p u e d e s e r el e s ta d o q u e e stab lezca q u e se
está “t r a b a ja n d o c o n u n id e n tific a d o r'’, c o m o el e s ta d o 10 d e la fig u ra 3 .1 3 . Q u iz á
se e n tr e e n s d e s p u é s d e m o s tr a r t h u n p refijo d e la p a la b ra c lav e t h e n a d e m á s de
c o m o u n p refijo d e u n id e n tific a d o r. E n el c a r á c te r d e e n t r a d a e se d e b e ir a u n es­
ta d o especial q u e re c u e rd e q u e se h a o b s e r v a d o la c a d e n a t h e , p e ro si n o . el e s ta d o
s se c o m p o r t a c o m o el e s ta d o q. P o r ta n to , se asig n a revisa [base [5+ ] + e ) a s y si­
g u ien te [base[s] - f e ] al e s ta d o d e t h e .

o m is ió n ba se s ig u ie n te re v is a

Fig. 3.47. E structura de d ato s para rep resen ta r tablas d e transiciones.

A u n q u e q u iz á n o se p u e d a n elegir lo s v a lo re s d e base p a r a q u e n o q u e d e n sin


u tiliz a r e n tr a d a s d e siguiente y revisa , la e x p e r ie n c ia m u e s t r a q u e la se n c illa e s tra ­
te g ia d e a s ig n a r la base al n ú m e r o m e n o r d e f o r m a q u e las e n tr a d a s esp eciales pu e­
d a n lle n a rse sin in te rfe rir c o n las e n tr a d a s y a e x isten tes, es b a s ta n te b u e n a y u tiliz a
p o c o m á s e s p a c io q u e el m í n i m o posible.
Se p u e d e re d u c ir revisa a u n a m a tr iz in d e x a d a p o r e s ta d o s si el A F D tie n e la
p r o p ie d a d d e q u e las a ris ta s e n t r a n te s e n c a d a e s ta d o t te n g a n la m i s m a e tiq u e ta a.
P a r a im p la n t a r este e s q u e m a , se h a c e revisa [f ] = a y se re e m p la z a la p r u e b a d e la
lín ea 2 de) *'f,o c e d i m i e n t o sig te ed o p o r

[base[s] + a]] = a th e n
EJERCICIOS 149

E JE R C IC IO S

3.1 ¿ C u á l es el a lfa b e to d e e n t r a d a d e c a d a u n o d e los sig u ie n te s lenguajes?


a ) Pascal
b) C
c ) F O R T R A N 77
d ) A da
e) LISP

3 .2 ¿C u áles s o n las c o n v e n c io n e s c o n c e r n ie n te s al u s o d e e s p a c io s e n b la n c o en
c a d a u n o d e los le n g u a je s d e l e je rc ic io 3.1?

3 .3 Id e n tif iq ú e n s e los le x e m a s q u e f o r m a n lo s c o m p o n e n t e s lé x ic o s e n lo s si­


g u ie n te s p ro g ra m a s . D e n s e v a lo re s ra z o n a b le s d e a tr ib u to p a r a los c o m p o ­
n e n te s léxicos.
a ) Pascal

fu n c tio n m ax (i, j, : in te g e r ) : in te g e r;
{ d e v u e l v e e l m á x im o d e l o s e n te ro s i y j }
b e g in
i f i > j t h e n m ax : = i
e l s e m ax : = j
end;

b) C

i n t m ax ( i, j ) in t i, j;
/* d e v u e l v e e l m á x im o d e lo s e n te ro s i y j */
{
re tu rn i> j ? i : j ;
}
c ) F O R T R A N 77

FUNCTION MAX ( I, J )
C DEVUELVE EL MAXIMO DE LOS ENTEROS I Y J
IF (I .GT. J) THEN
MAX = I
ELSE
MAX = J
END IF
RETURN

3 .4 E scrib ase u n p r o g r a m a p a r a la f u n c ió n s i g t e c a r ( ) d e la se c c ió n 3.4 utili­


z a n d o e l e s q u e m a d e m a n e j o d e b u ffers c o n c e n t i n e l a s d e s c r i t o e n la
secció n 3.2.

3 .5 E n u n a c a d e n a d e lo n g itu d n , ¿ c u á n to s d e lo s sig u ie n te s h ay?


a) prefijos
b) su fijo s
c) s u b c a d e n a s
150 A N A L IS IS LEXICO

d ) p re fijo s p ro p io s
e) s u b s e c u e n c ia s

* 3 .6 D e s c ríb a n s e los le n g u a je s re p r e s e n ta d o s p o r las sig u ie n te s e x p re s io n e s re g u ­


lares:
a) 0 (0 0 *0
b ) ((€ 0)1*)*
c ) ( 0 1 1)*0(01 1 X 0 1 1)
d ) 0 * 1 0 * 10 * 1 0 *
e) ( 0 0 1 11)* ( ( 0 1 1 1 0 X 0 0 1 1 1)* ( 0 1 1 1 0 X 0 0 1 11)*)*

* 3 .7 E sc ríb a n se d e fin ic io n e s re g u la re s p a r a los sig u ie n te s lenguajes.


a ) T o d a s las c a d e n a s d e le tra s q u e c o n tie n e n la s c in c o v o cales e n o rd e n .
b ) T o d a s las c a d e n a s d e letras e n la s q u e las le tra s e s tá n e n o r d e n lex ico grá­
fico a s c e n d e n te .
,c) C o m e n ta r io s q u e c o n s is te n e n u n a c a d e n a e n c e r r a d a e n t r e / * y * / sin
n in g ú n * / in te r m e d io , a m e n o s q u e a p a r e z c a e n tr e las c o m illa s “ y
* d ) T o d a s las c a d e n a s d e d íg ito s s in n in g ú n d íg ito rep etid o ,
e ) T o d a s las c a d e n a s d e d íg ito s c o n a lo s u m o u n d íg ito re p e tid o .
0 T o d a s las c a d e n a s d e 0 y 1 c o n u n n ú m e r o p a r d e d íg ito s 0 y u n n ú m e r o
i m p a r d e d íg ito s 1.
g) El c o n j u n t o d e m o v im ie n to s d e l a je d re z , c o m o p - k 4 o k b p x qn.
h ) T o d a s las c a d e n a s d e 0 y 1 q u e n o c o n t ie n e n la s u b c a d e n a '0 1 1.
i) T o d a s las c a d e n a s d e 0 .y 1 q u e n o c o n tie n e n la s u b s e c u e n c ia 011.

3 .8 E sp ecífiq u ese la f o r m a lex icográfica d e las c o n s ta n te s n u m é r ic a s e n lo s le n ­


g u ajes d e l e je rc ic io 3.1.

3 .9 E sp ecífiq u ese la f o r m a lex ico g ráfica d e los id e n tific a d o re s y p a la b ra s c lav e


d e los le n g u a je s del e jercicio 3.1.

3 .1 0 E n la fig u ra 3 .4 8 se r e la c io n a n e n o r d e n d e c re c ie n te d e p re c e d e n c ia las c o n s ­
tr u c c io n e s d e e x p re s io n e s reg u la re s q u e p e r m ite L E X . E n esta ta b la , c r e p re ­
s e n ta t o d o c a r á c te r s im p le , r re p r e s e n ta u n a e x p re s ió n re g u la r, y 5 u n a c a ­
dena.
a ) S e d e b e e lim in a r el sig n ific a d o esp e c ia l d e los s ím b o lo s d e o p e ra d o re s

\ " . s [ i * + ? { } : /

si el s ím b o lo d e o p e r a d o r se u tiliz a c o m o c a rá c te r d e e m p a r e ja m ie n to . Esto
se p u e d e h a c e r e n c e r r a n d o e n tr e c o m illa s el c a rá c te r, u tiliz a n d o u n o de
d o s estilo s d e e n tr e c o m illa d o . L a e x p r e s ió n " s " se e m p a r e j a c o n la ca-
d e n a s lite ra lm e n te , s ie m p re q u e n o a p a re c e n in g u n a " e n s. P o r e je m p lo ,
H*•*" c o n c u e r d a c o n la c a d e n a * * . T a m b ié n se p o d r ía h a b e r e m p a r e ja d o
esta c a d e n a c o n la e x p re s ió n \ * \ * . O b sé rv e se q u e u n * s in c o m illa s e s u n
e je m p lo d e l o p e r a d o r d e la c e r r a d u r a d e K le e n e . E scríb ase u n a e x p re s ió n
re g u la r e n L E X q u e c o n c u e r d e c o n la c a d e n a " \ .
b) E n L E X , u n a clase d e c a r a c te r e s co m p lem en ta d a es u n a clase d e c a ra c ­
te r e s e n la q u e el p r i m e r s í m b o l o e s U n a c la s e d e c a r a c te r e s c o m p le -
EJER C IC IO S 151

E xpresión Empareja con Ejemplo

c cu a lq u ie r carácter c q u e no sea o p erad o r a


\c el c a rá c te r c literalm ente \*
“s" la cad e n a s literalm ente " * *"
• cu a lq u ie r carácter excepto d e n u e v a línea a . *b
A
el c o m ien zo de línea ~abc
$ el fin de línea abc$
IV] cu a lq u ie r c a rá c te r en s [ab e]
rs i cu a lq u ie r carácter q u e n o esté en s ("ab e]
r* c e ro o m á s r a*
r+ u n a o m ás r a+
r? cero o u n a r a?
r{m .n} m a n casos d e r a{l,5}
n r2 r, y en to n ces r2 ab
r\ r2 r\ o r2 a b
(r ) T (a b)
r\/r2 r, c u a n d o va seguida d e r 2 a b c /1 2 3

Fig. 3.48. Expresiones regulares en LEX.

m e n ta d a c o n c u e r d a c o n c u a lq u ie r c a r á c te r q u e n o esté e n la clase. P o r
ta n to , P a ] c o n c u e rd a c o n c u a lq u ie r c a rá c te r q u e no sea u n a a ,
p A - Z a - z ] c o n c u e r d a c o n c u a l q u ie r c a r á c te r q u e n o s e a u n a letra m a ­
y ú s c u la o m in ú s c u la , e tc é te ra . D e m u é s tr e s e q u e p a r a to d a d e fin ic ió n re­
g u l a r c o n c la se s d e c a r a c te r e s c o m p l e m e n t a d a s e x is te u n a e x p r e s ió n
re g u la r e q u iv a le n te s in clases d e c a ra c te re s c o m p le m e n ta d a s .
c) L a e x p re s ió n re g u la r r {m,/i} e m p a r e j a d e m a n o c u rr e n c ia s del p a t r ó n r.
P o r e je m p lo , a { 1 ,5 } c o n c u e r d a c o n u n a c a d e n a d e u n a a c in c o a . D e ­
m u é s tre s e q u e p a r a to d a e x p re s ió n re g u la r q u e c o n te n g a o p e r a d o r e s d e
re p e tic ió n ex iste u n a e x p re s ió n re g u la r e q u iv a le n te s in d ic h o s o p e ra d o re s .
d ) El o p e r a d o r ~ c o n c u e r d a c o n el e x t r e m o iz q u ie r d o d e u n a línea. E ste es
el m i s m o o p e r a d o r q u e i n t r o d u c e u n a c la s e d e c a r a c te r e s c o m p l e m e n ­
ta d a . p e r o el c o n te x to e n d o n d e a p a r e z c a ~ s ie m p re d e t e r m in a r á u n sig­
n if ic a d o ú n i c o p a r a este o p e r a d o r . El o p e r a d o r $ c o n c u e r d a c o n el ex-
t r e m o d e r e c h o d e u n a línea. P o r e je m p lo , ' ' p a e i o u ] * $ c o n c u e r d a c o n
c u a l q u ie r lín ea q u e n o c o n te n g a u n a vocal e n m in ú s c u la s . ¿E xiste p a r a
to d a e x p re s ió n re g u la r q u e c o n te n g a lo s o p e r a d o r e s ~ y $ u n a e x p re sió n
re g u la r e q u iv a le n te s in d ic h o s o p e ra d o re s ?

3.11 E scríb ase u n p r o g r a m a e n L E X q u e c o p ie u n a rc h iv o , s u s titu y e n d o c a d a se­


c u e n c ia n o n u la d e e sp a c io s e n b la n c o p o r u n solo e s p a c io e n b la n co .

3 .1 2 E scríb ase u n p r o g r a m a e n L E X q u e c o p ie u n p r o g r a m a e n F O R T R A N , s u s ­
titu y e n d o to d o s los e je m p lo s d e d o u b l e p r e c i s i ó n p o r r e a l .
152 ANALISIS LEXICO

3 .1 3 U tilícese u n a e sp ecificació n p r o p ia p a r a p a la b r a s clave e id e n tific a d o re s p a ra


el F O R T R A N 7 7 d e l e jercicio 3 .9 p a r a id e n tific a r los c o m p o n e n te s léxicos
d e las sig u ie n tes p ro p o sic io n e s:

I F (I ) = CMPLEX
I F (I ) A S S I G N 5 C M P L E X
I F (I ) 1 0 , 2 0 , 3 0
I F (I ) G O T O 15
I F (I ) T H E N

P u e d e escrib irse u n a e sp ecificació n p r o p ia p a r a p a la b ra s c lav e e id e n tific a -


d o re s en L E X .

3 .1 4 E n el s is te m a U N I X , el m a n d a t o s h d e l sh ell u tiliz a los o p e r a d o r e s d e la fi­


g u ra 3 .4 9 e n e x p re s io n e s d e n o m b r e s d e a r c h iv o p a r a d e s c rib ir c o n j u n to s d e
n o m b r e s d e a rc h iv o . P o r e je m p lo , la e x p re s ió n d e n o m b r e s d e a r c h iv o * . o
c o n c u e r d a c o n to d o s lo s n o m b r e s d e a rc h iv o q u e te r m in e n c o n . o ; s o r t . ?
c o n c u e r d a c o n t o d o s lo s a r c h i v o s d e la f o r m a s o r t . c , d o n d e c
es c u a l q u i e r c a r á c te r . L a s clases d e c a r a c te r e s se p u e d e n a b r e v ia r c o m o en
[ a - z ]. D e m u é s tre s e c ó m o se p u e d e n e x p re s a r p o r m e d io d e e x p re s io n e s re­
g u la re s las e x p re s io n e s d e n o m b r e s d e a r c h iv o s d e l shell.

3 .1 5 M o d ifiq ú e se el a lg o ritm o 3.1 p a r a e n c o n t r a r el m a y o r p re fijo d e la e n tr a d a


q u e sea aceptado por el A F D .

3 .1 6 C o n s tr u y a n s e a u t ó m a t a s fin ito s n o d e te r m in is ta s p a r a las sig u ie n te s e x p re ­


s io n e s re g u la re s u tiliz a n d o el a lg o r itm o 3.3. M u é stre se la s e c u e n c ia d e m o ­
v im ie n to re a liz a d a p o r c a d a u n o d e ello s al p ro c e s a r la c a d e n a d e e n t r a d a
ababbab.
a) ( a | b)*
b) (a* | b * r
c) ( ( « | ü)b*)*
d) (b | b)*abb (a \ b )*

EXPRESIÓN Empareja con Ejemplo

'5' la cad e n a 5 literalm ente Y


el c a rá c te r c literalm ente V
★ cu a lq u ie r cadena * .O
? cu alq uier carácter s o r t l .?
IV) cu alq uier carácter en s s o r t . [eso]

Fig. 3 .4 9 . Expresiones d e n o m b re d e archivo en el p ro g ram a sh .

3 .1 7 C o n v ié r ta n s e los A F N del e jercicio 3 .1 6 e n A F D u tiliz a n d o el a lg o r itm o 3.2.


M u é stre se la s e c u e n c ia d e m o v i m ie n to s re a liz a d a p o r c a d a u n o d e ello s al
p r o c e s a r la c a d e n a d e e n t r a d a ababbab .
EJERCICIOS 153

3 .1 8 C o n s tr u y a n s e A F D p a r a las e x p re s io n e s reg u la re s del e jercicio 3 .1 6 u s a n d o


el a lg o ritm o 3.5. C o m p á r e s e el t a m a ñ o d e lo s A F D c o n el d e los c o n s tr u id o s
e n el e jercicio 3.17.

3 .1 9 C o n s tr u y a s e u n a u t ó m a t a fin ito d e te r m in is ta a p a r ti r del d ia g r a m a d e t r a n ­


sic io n e s p a r a lo s c o m p o n e n t e s léxicos d e la fig u ra 3.10.

3 .2 0 A m p líe s e la ta b la d e la fig u ra 3 .4 0 p a r a in c lu ir los o p e r a d o r e s d e e x p re sio n e s


reg u la re s ? y +.

3 .2 1 M in im íc e s e el n ú m e r o d e e s ta d o s e n los A F D del e jercicio 3 .1 8 u tiliz a n d o el


a lg o ritm o 3.6.

3 .2 2 Se p u e d e d e m o s t r a r q u e d o s e x p re s io n e s reg u la re s s o n e q u iv a le n te s c o m p r o ­
b a n d o q u e su A F D d e n ú m e r o m í n i m o d e e s ta d o s s o n los m is m o s , e x c e p to
p a r a los n o m b r e s d e e s ta d o s . U tiliz a n d o e s ta té c n ic a , d e m u é s tr e s e q u e las si­
g u ie n te s e x p re s io n e s reg u la re s s o n to d a s eq u iv alen tes.
a ) (a | b)*
b) ( a * |/ > * r
c) ( ( € | a)b*)*

3 .2 3 C o n s tr ú y a n s e A F D c o n m í n i m o d e e s ta d o s p a ra las sig u ie n te s e x p re sio n e s


regulares.
a) (a b)*a (a b)
b) (a b f a <« b){a
c) (a b)*a (a bXa
**d) D e m u é s tre s e q u e c u a l q u ie r a u t ó m a t a fin ito d e te r m in is ta p a r a las e x p re ­
s io n e s reg u la re s (a | b)*a (a | b){a | b) . . . (a | b). d o n d e h a y n ~ 1 (a \ b) al
final, d e b e te n e r al m e n o s 2" estad o s.

3 .2 4 C o n s tr ú y a s e la re p re s e n ta c ió n d e la fig u ra 3 .4 7 p a r a la ta b la d e tra n s ic io n e s
del e je rc ic io 3 .1 9 . S e le c c ió n e n s e e s ta d o s p o r o m is ió n y p r u é b e n s e los d o s
m é to d o s sig u ie n tes d e c o n s tr u c c ió n d e la m a tr iz siguióm e y c o m p á r e n s e las
c a n tid a d e s d e e s p a c io utilizado:
a) C o m e n z a n d o c o n lo s e s ta d o s m á s d e n s o s ( a q u e llo s c o n el m a y o r n ú m e r o
d e e n tr a d a s q u e d ifie ra n d e s u s e s ta d o s d e o m is ió n ), p r im e r o c o lo q ú e n s e
las e n tr a d a s p a r a los e s ta d o s e n la m a tr iz siguiente.
b) C o ló q u e n s e las e n tr a d a s p a r a los e s ta d o s e n la m a triz siguiente e n o rd e n
ale a to rio .

3 .2 5 U n a v a r ia n te del e s q u e m a d e c o m p re s ió n d e ta b la s d e la secció n 3 .9 sería


e v i ta r u n p r o c e d i m i e n t o s ig te - e d o re c u rs iv o , u t i liz a n d o u n a p o s ic ió n p o r
o m is ió n fija p a r a c a d a estado. C o n s trú y a s e la rep re se n ta c ió n d e la figura 3.47
p a r a la ta b la d e tra n s ic io n e s d e l e jercicio 3 .1 9 u tiliz a n d o esta té c n ic a n o r e ­
cu rsiv a. C o m p á r e n s e los re q u isito s d e e s p a c io c o n los del e jercicio 3.24.

3 .2 6 S ea b ]b 2 . . . b„, u n a c a d e n a d e p a tro n e s , lla m a d a palabra clave. U n trie p a ra


u n a p a la b r a c lav e e s u n d ia g r a m a d e tr a n s ic io n e s c o n m + 1 e s ta d o s d o n d e
c a d a e s ta d o c o r r e s p o n d e a u n p re fijo d e la p a la b ra clave. P a r a 1 < s ^ in.
154 A N A L ISIS LEXICO

h a y u n a tr a n s ic ió n del e s ta d o s - 1 a l e s ta d o s e n el s ím b o lo bs. L o s e s ta d o s
in icial y final c o r r e s p o n d e n a la c a d e n a v acía y a la p a la b ra c o m p le ta , res­
p e c tiv a m e n te . El trie p a r a la p a l a b r a c lav e ababaa es:

A h o r a se d e fin e u n a fu n c ió n d e f a l l o / e n c a d a e s ta d o del d ia g r a m a d e t r a n ­
sicio n es. e x c e p to el e s ta d o d e in icio . S u p ó n g a s e q u e lo s e s ta d o s s y i r e p re ­
s e n ta n a los p re fijo s u y v d e la p a la b r a c la v e . E n to n c e s se d e f in e f ( s ) = t si,
y só lo si, v e s el s u fijo p r o p io m a y o r d e u q u e ta m b ié n e s el p re fijo d e la
p a la b r a clave. L a f u n c ió n d e f a llo / p a r a el trie a n t e r i o r es

s 1 2 3 4 5 6

A s) 0 0 1 2 3 1

P o r e je m p lo , lo s e s ta d o s 3 y 1 r e p r e s e n ta n a los prefijos a b a y a d e la p a la b ra
c lav e ababaa. / ( 3 ) = 1 p o r q u e a e s el s u fijo p r o p io m a y o r d e a b a q u e es
p re fijo d e la p a la b r a clave.
a ) C o n s tr ú y a s e la f u n c ió n d e fallo p a r a la p a la b ra c lav e abababaab.
*b) S e a n 0 , 1 m los e s ta d o s d e l trie, d o n d e 0 es el e s ta d o d e in icio . D e ­
m u é s tr e s e q u e el a lg o r itm o d e la fig u ra 3 .5 0 c a lc u la c o r r e c ta m e n te la fu n ­
c ió n d e fallo.
*c) D e m u é stre se q u e d u r a n te to d a la e je c u c ió n del a lg o ritm o d e la figura 3.50,
se e je c u ta la p ro p o s ic ió n d e a s ig n a c ió n t : = / ( / ) e n el la z o in t e r n o a lo
s u m o m veces.
*d) D e m u é s tre s e q u e el a lg o ritm o f u n c io n a e n u n t i e m p o O (m ).

/* calcula la función de f a l l o / p a r a / > , . . . b,„ */


t : = 0 ; / ( l ) : = 0;
for 5 : = 1 to m - 1 d o begin
while / > 0 a n d b„ i * b ,+1 d o t : = /( /> ;
if 1= then begin t : = / + I ; / ( s + 1 ) := t end;
e l s e ./'(.?+ I) : = 0
end

Fig. 3.50. A lgoritm o p a ra calcular la fu n ció n de fallo del ejercicio 3.26.

3 .2 7 E l a lg o r itm o K M P d e la fig u ra 3.51 u tiliz a la f u n c ió n d e f a l l o / c o n s t r u i d a


c o m o e n el e jercicio 3 .2 6 p a r a d e t e r m i n a r si la p a la b r a c lav e . . . bm es o
n o u n a s u b c a d e n a d e u n a c a d e n a o b je tiv o a x . . ^ a n. S e n u m e r a n lo s e s ta d o s
e n el trie p a r a b\ . . . bm d e 0 a m c o m o e n el e je rc ic io 3.26(b).
a ) A p liq ú e se el a lg o ritm o K M P p a r a d e t e r m i n a r si ababaa es o n o u n a s u b ­
c a d e n a d e abababaab.
EJERCICIOS 155

/* revisa si a\ . . . an co n tien e a b \ . . . bm c o m o su b ead en a */


5 : = 0;
for i : = 1 t o a/ d o b eg in
w h ile s .9 > 0 and a, ± do s : = f( s ) \
if a, = then s : = s + 1
if .9 = rn th en retiirn “si"
end;
return “ n o "

Fig. 3.51. A lgoritm o K M P .

*b) D e m u é s tre s e q u e el a lg o r itm o K M P d e v u e lv e “sí" si, y só lo si, b\ . . . bm


es u n a s u b e a d e n a d e
*c) D e m u é s tre s e q u e el a lg o r itm o K M P se e je c u ta e n u n ti e m p o O (m + n ).
*d) D a d a u n a p a la b ra c lav e y , d e m u é s tr e s e q u e la f u n c ió n d e fallo p u e d e u ti­
lizarse p a r a c o n s tr u ir , e n u n ti e m p o O (| >’ |), u n A F D c o n | y | + 1 e s ta d o s
p a r a la e x p re sió n re g u la r .*y.*. d o n d e . r e p re s e n ta c u a lq u ie r c a r á c te r de
e n tra d a .

**3.28 D efín ase el periodo d e u n a c a d e n a .9 c o m o u n e n t e r o p tal q u e s se p u e d e


e x p re s a r c o m o [u v ^ u . p a r a u n a k 0 , d o n d e \itv \ = p y v n o e s la c a d e n a
v acía. P o r e je m p lo , 2 y 4 s o n p e rio d o s d e la c a d e n a abobaba.
a) D e m u é s tre s e q u e p e s u n p e r io d o d e u n a c a d e n a s si, y só lo si, st = us
p a r a a lg u n a s c a d e n a s / y // d e lo n g itu d p.
b) D em uéstrese q u e si p y q s o n p erio d o s d e u n a c a d e n a s y si p + q < \s \ +
+ mcd(yx</). e n to n c e s m e d (/>,</) es u n p e r io d o d e .9, d o n d e m e d (p,q) es el
m á x i m o c o m ú n d iv is o r d e p y q.
c) S e a m p (S i) el m e n o r p e r i o d o d e u n p r e f i j o d e l o n g i t u d / d e u n a c a ­
d e n a v. D e m u é s t r e s e q u e la f u n c ió n d e f a l l o / t i e n e la p r o p i e d a d d e q u e
f ( j ) = J ~ m p { s ¡ - ,).

* 3 .2 9 S ea el prefijo repetitivo m á s corto d e u n a c a d e n a s el prefijo m á s c o r t o u d e


5 tal q u e s = u k, p a r a u n a k ^ 1. P o r e je m p lo , ab e s el p re fijo re p e titiv o m á s
c o r to d e abababab y aba es el p re fijo re p e titiv o m á s c o r to d e aba. C o n s tr u ­
yase u n a lg o r itm o q u é e n c u e n t r e el p re fijo re p e titiv o m á s c o r to d e u n a c a ­
d e n a .9 en u n ti e m p o O ( | s | ). Sugerencia. U tilícese la f u n c ió n d e fallo del
e jercicio 3.26.

3 .3 0 U n a cadena d e F ibonacci se d e fin e c o m o sigue:

S\ = b
s2 = a
s k = i * . , 5*_2, p a r a k > 2.

P o r e je m p lo , s 3 = ab , 54 = aba y s 5 = abaab.
a ) ¿ C u á l e s la lo n g itu d d e s„?
**b) ¿ C u á l e s el p e rio d o m á s p e q u e ñ o d e s f .
c ) C o n s tr u y a s e la f u n c ió n d e fallo p a r a s 6.
156 A \ \ l ISIS L E X I C O

*d) P o r in d u c c ió n , d e m u é s tr e s e q u e la f u n c ió n d e fallo p a r a .v„ se p u e d e e x ­


p re s a r p o r / ( /) = ¡ - [sk i i. d o n d e k e s tal q u e | s k ¡ < / + I < | , | p a ra
i « / « i | .
e) A p liq ú e se el a lg o r itm o K M P p a r a d e t e r m i n a r si s(. e s o n o u n a s u b e a d e n a
d e la c a d e n a o b je to a ? .
f) C o n s tr u y a s e un A F D p a r a la e x p re s ió n re g u la r *sh *.
**g) E n el a lg o ritm o K M P . ¿c u a l e s el n ú m e r o m á x im o d e a p lic a c io n e s c o n ­
s e c u tiv a s d e la f u n c ió n d e fallo e je c u ta d a p a r a d e t e r m i n a r si sk e s u n a
s u b e a d e n a d e la c a d e n a o b je to vt*i?

3.31 Se p u e d e n a m p lia r los c o n c e p to s d e trie y f u n c ió n d e fallo d e l e je rc ic io 3.26


d e u n a sola p a la b ra c lav e a u n c o n j u n t o d e p a la b ra s c lav e c o m o sigue. C a d a
e s ta d o d e l trie c o r r e s p o n d e a u n p re fijo d e u n a o m á s p a la b ra s clave. El es­
ta d o d e in ic io c o r r e s p o n d e a la c a d e n a v acía, y u n e s ta d o q u e c o r r e s p o n d a a
u n a p alab ra clave c o m p le ta es u n e s ta d o final. E sta d o s a d ic io n a le s p u e d e n
c o n v e rtirs e e n fin ales d u r a n t e el c á lc u lo d e la d e f u n c ió n d e fallo. E n la fi­
g u r a 3.52 se m u e s tr a el d ia g r a m a d e tr a n s ic io n e s p a r a el c o n j u n t o d e p a la ­
b ra s c lav e ( h e , s h e , h i s , h e r s } .

P a r a el trie s e d e f in e u n a fu n c ió n d e transición q q u e t r a n s f o r m a p a r e s e s ­
ta d o -s ím b o lo e n e s ta d o s tal q u e g ( s , b,+ó = s f si el e s ta d o s c o r r e s p o n d e a
u n p re fijo b\ . . . b, d e u n a p a la b ra clave, y s' c o r r e s p o n d e a u n p refijo by . . .
/>;/>„,. Si Sq es el e s ta d o d e in ic io , se d e f in e g ( s 0, a) = s0 p a r a to d o s los s ím ­
b o lo s d e e n t r a d a a q u e n o se a n el s ím b o lo in icial d e n in g u n a p a la b r a clave.
E n to n c e s se esta b le c e íMv. a ) = Jallo p a r a c u a lq u ie r tra n s ic ió n n o d e fin id a .
O b sé rv e se q u e n o h a y tr a n s ic io n e s fa llo p a r a el e s ta d o d e in icio .

S u p ó n g a s e q u e los e s ta d o s s y t re p re s e n ta n a lo s p re fijo s u y v d e a lg u n a s
p a la b ra s clave. E n to n c e s , se d e f i n e / ( a ) = t si, y sólo si, v es el m a y o r sufijo
p r o p io d e u q u e es a d e m á s p re fijo d e u n a p a la b r a clave. L a f u n c ió n d e fallo
/ p a r a el d ia g r a m a d e tra n s ic io n e s a n t e r i o r es:

1 3 4 5 6 7 8 9
0 0 0 1 2 0 3 0 3
EJERCICIOS 157

P o r e je m p lo , los e s ta d o s 4 y 1 r e p r e s e n ta n a los p re fijo s s h y h . / ( 4 ) = 1


p o r q u e h e s el m a y o r s u fijo p r o p io d e s h prefijo d e a lg u n a p a la b r a clave. Se
p u e d e c a lc u la r la f u n c ió n d e f a l l o / p a r a e s ta d o s d e p r o f u n d id a d c re c ie n te
u tiliz a n d o el a lg o r itm o d e la fig u ra 3.53. L a p r o f u n d id a d d e u n e s ta d o e s su
d is ta n c ia d e sd e el e s ta d o d e inicio.

for cada estad o .s d e p ro fu n d id ad 1 do


./'(•*) : = v0:
for cada pro fu n d id ad d > 1 do
for cada estad o s,¡ d e p ro fu n d id ad d y c a rá c te r a
tal q u e !'(\/. a) = v' do begin
.v: = ./(.vv/):
" h i l e ¿'(v. a ) = Jallo d o s : = f{ s):
/ ( . O : * tf(.v.a):
end

Fig. 3.53. A lgoritm o para c a lc u la r la función d e fallo para el trie


d e palabras clave.

O b sé rv e se q u e c o m o g (.v0, c) # Jallo p a r a c u a lq u ie r c a r á c te r c\ se g a ra n tiz a


la te r m in a c ió n del lazo w h ile d e la fig u ra 3.53. D e s p u é s d e a s ig n a r g ( t, a) a
/ ( / ) , si g (/, a) es u n e s ta d o final, ta m b ié n se c o n v ie r te / e n u n e s ta d o final,
si n o lo es ya.
a) C o n s tr ú y a s e la f u n c ió n d e fallo p a r a el c o n j u n t o d e p a la b r a s c lav e {aaa.
abaaa . ababaaa).
*b) D e m u é s tre s e q u e el a lg o r itm o d e la figura 3 .5 3 c a lc u la c o r r e c ta m e n te la
f u n c ió n d e fallo.
*c) D e m u é s tre s e q u e se p u e d e c a lc u la r la f u n c ió n d e fallo e n u n ti e m p o p ro ­
p o rc io n a l a la s u m a d e las lo n g itu d e s d e las p a la b ra s clave.

3 .3 2 S ea g la f u n c ió n d e tr a n s ic ió n , y / la f u n c ió n d e fallo d e l e je rc ic io 3.31 p a ra
u n c o n j u n t o d e p a la b r a s c lav e K = y 2, . . . , y k). El a lg o r itm o A C d e la
figura 3 .5 4 u tiliz a g y / p a r a d e t e r m i n a r si u n a c a d e n a o b je to a { . . . a,, c o n ­
tie n e o n o u n a s u b e a d e n a q u e s e a u n a p a la b r a clave. El e s ta d o s0 es el e s ta d o
d e in ic io del d ia g ra m a d e tr a n s ic io n e s p a r a K , y F es el c o n j u n t o d e e s ta d o s
finales.

/* revisa si ¿/, . . . a„ c o n tie n e una palabra clave c o m o su b ead en a */


s : = sol
for / : = 1 to n do begin
while g (s . a,) = Jallo d o v : = / ( y ) ;
.* := g (s.a ,):
if s está en h then retu rn **sí"
end;
return “ no"

Fig. 3 .5 4 . A lgoritm o AC.


158 A N A L ISIS L E X IC O

a) A p liq ú e se el a lg o ritm o A C a la c a d e n a d e e n t r a d a u s h e r s u tiliz a n d o las


f u n c io n e s d e tr a n s ic ió n y d e fallo del e je rc ic io 3.31.
*b) D e m u é s tre s e q u e el a lg o r itm o A C d e v u e lv e “s í" si. y só lo si, a lg u n a p a ­
la b ra c lav e y es u n a s u b c a d e n a d e a y . . . a„.
*c) D e m u é s tr e s e q u e el a lg o r i tm o A C h a c e a lo s u m o 2 n tr a n s ic io n e s al p r o ­
c e s a r u n a c a d e n a d e e n t r a d a d e lo n g itu d n.
*d) D e m u é s tre s e q u e a p a r ti r d e l d ia g r a m a d e tra n s ic io n e s y la f u n c ió n d e fa­
llo p a r a u n c o n j u n t o d e p a la b r a s c lav e {>’i, y 2, . . . , y*}, se p u e d e c o n s tru ir
k
u n A F D c o n a lo s u m o 2 1y¡ | + 1 e s ta d o s e n u n ti e m p o lin eal p a r a la cx-
/-i
p re s ió n reg u lar.* (y , | y 2 1 . . . |y*).*
e) M o d ifiq ú e s e el a lg o ritm o A C p a r a i m p r i m i r c a d a p a la b r a c lav e q u e se e n ­
c u e n t r e e n la c a d e n a o b je to .

3 3 3 U tilícese el a lg o r itm o del e je rc ic io 3 .3 2 p a r a c o n s tr u i r u n a n a liz a d o r léxico


p a r a la s p a la b r a s c lav e d e Pascal.

3 3 4 D e fín a se scm(x, y), u n a subsecuencia común más larga d e d o s c a d e n a s x e


y , c o m o u n a c a d e n a q u e e s s u b s e c u e n c ia t a n t o d e x c o m o d e y y e s t a n larga
c o m o c u a l q u ie r a d e e s ta s s u b s e c u e n c ia s . P o r e j e m p lo , r a n a e s u n a s u b s e ­
c u e n c ia c o m ú n m á s la rg a d e r a z o n a y r e b a n a . S e d e fin e d (x, y), la distan­
cia e n tr e x e j \ c o m o el n ú m e r o m í n i m o d e in s e rc io n e s y s u p re s io n e s n e c e ­
s a rio p a r a t r a n s f o r m a r x e n y. P o r e je m p lo , d ( r a z o n a , r e b a n a ) = 4.
a ) D e m u é s tre s e q u e p a r a d o s c a d e n a s c u a le s q u ie ra x e y, la d is ta n c ia e n tr e
.v e y y la lo n g itu d d e s u s u b s e c u e n c ia c o m ú n m á s larga están re la c io n a -
d a s p o r d (.v, y) = | x | + |j»| - | scm (x, y) |.
*b) E scrib ase u n a lg o ritm o q u e c o n s id e r e d o s c a d e n a s x e y c o m o e n tra d a y
p r o d u z c a u n a s u b s e c u e n c ia c o m ú n m á s la rg a d e x e y c o m o salida.
3 .3 5 D e fín a se e ( a \ y), la distancia de edición e n tr e d o s c a d e n a s x e y. c o m o el
n ú m e r o m í n i m o d e in sercio n es, s u p re s io n e s y s u s titu c io n e s d e c a ra c te re s n e ­
c e sa rio p a r a tr a n s f o r m a r x e n y. S e a x - a x . . . a,„ e y = Se puede
c a l c u l a r e(x. y) m e d i a n t e u n a l g o r i t m o d e p r o g r a m a c i ó n d i n á m i c a u t i l i ­
z a n d o u n a m a tr iz d e d is ta n c ia s d [ 0 ..m , 0..w ], d o n d e d [i, j] es la d is ta n c ia d e
e d ic ió n e n tr e a x . . . a, y b x . . . b,. S e p u e d e u tiliz a r el a lg o r itm o d e la figura
3.55 p a r a c a lc u la r la m a tr iz d. L a f ü n c ió n reemp es el c o s te d e re e m p la z a r
u n c a rá c te r: reemp ( a ,, b¡) = 0 si a¡ = bh 1 e n o t r o caso.

for / : = 0 t o m (te d [/, 0 ] : = /;


for j : = 1 to n d o d f0 , i ] : = j ;
for / : = 1 to m do
for j : = i to n do
O ( / , / ] : = m in ( < / [ / - 1J - \ ] + reem p(ah b,)%
d [ i ~ \ J ] + I,
d [ i . j - 1) + I)

Fig. 3.55. A lgoritm o p a ra calcular la distan cia d e edición e n tre d o s cadenas.


N O T A S B IB L IO G R A FIC A S 159

a ) ¿ C u á l es la re la c ió n e n t r e la d is ta n c ia d e l e jercicio 3 .3 4 y la d is ta n c ia d e
e d ic ió n ?
b) U tilícese el a lg o ritm o d e la fig u ra 3 .5 5 p a r a c a lc u la r la d is ta n c ia d e e d i­
c ió n e n t r e a b a b b y babaaa.
c) C o n s tr u y a s e u n a lg o r itm o q u e i m p r i m a la s e c u e n c ia m í n i m a d e tr a n s f o r ­
m a c io n e s d e e d ic ió n n e c e s a ria p a r a t r a n s f o r m a r x e n y.

3 .3 6 D ése u n a lg o r itm o q u e t o m e c o m o e n t r a d a u n a c a d e n a x y u n a e x p re sió n


re g u la r r, y p r o d u z c a c o m o sa lid a u n a c a d e n a y e n U r ) ta l q u e d{x, y ) sea lo
m á s p e q u e ñ a p o s ib le , d o n d e d es la f u n c ió n d e d is ta n c ia d e l e je rc ic io 3.34.

E JE R C IC IO S D E P R O G R A M A C IO N

P 3 .1 E scríb ase u n a n a liz a d o r léx ico e n P ascal o C p a r a los c o m p o n e n te s léxicos


m o s tr a d o s e n la fig u ra 3.10.

P 3 .2 E scríb ase u n a e sp ecificació n p a r a los c o m p o n e n te s léx ico s d e P ascal, y a p a r ­


ti r d e e s ta e sp ecificació n c o n s tr u y a n s e los d ia g r a m a s d e tra n s ic io n e s . U tilí­
c e n se los d ia g r a m a s d e tra n s ic io n e s p a r a i m p l a n t a r u n a n a l iz a d o r léx ico p a r a
P ascal e n u n le n g u a je c o m o C o P ascal.

P 3 .3 C o m p lé te s e el p r o g r a m a e n L E X d e la fig u ra 3.18. C o m p á r e n s e el t a m a ñ o y
la v e lo c id a d d e l a n a liz a d o r léx ico r e s u lta n te p r o d u c id o p o r L E X c o n el p r o ­
g r a m a e s c rito e n el e je rc ic io P3.1.

P 3 .4 Escríbase u n a especificación e n L E X p a r a los c o m p o n e n te s léxicos d e Pascal


y c o n el c o m p ila d o r d e L E X c o n stru y a se u n a n a liz a d o r léxico p a r a Pascal.

P 3 .5 E scríb ase u n p r o g r a m a q u e t o m e c o m o e n t r a d a u n a e x p re s ió n re g u la r y el
n o m b r e d e u n a rc h iv o , y p r o d u z c a c o m o sa lid a to d a s las lín e a s d e l a rc h iv o
q u e c o n te n g a n u n a s u b c a d e n a re p r e s e n ta d a p o r la e x p re s ió n reg u la r.

P 3 .6 A ñ á d a s e u n e s q u e m a d e re c u p e r a c ió n d e e rro re s a l p r o g r a m a e n L E X d e la
fig u ra 3 .1 8 p a r a p e r m itir le se g u ir b u s c a n d o c o m p o n e n te s léx ico s e n p re s e n ­
c ia d e erro res.

P 3 .7 P ro g rá m e s e u n a n a liz a d o r léx ico a p a r ti r del A F D c o n s tr u id o e n el ejercicio


3 .1 8 y c o m p á r e s e este a n a l iz a d o r léx ico c o n el c o n s tr u id o e n los ejercicios
P3.1 y P3.3.

P 3 .8 C o n s tr u y a s e u n a h e r r a m i e n ta q u e p r o d u z c a u n a n a l iz a d o r léx ico a p a r ti r d e
u n a d e s c rip c ió n d e u n a e x p re s ió n re g u la r d e u n c o n j u n t o d e c o m p o n e n te s
léxicos.

N O T A S B IB L IO G R A F IC A S

L as lim ita c io n e s im p u e s ta s a lo s a s p e c to s léx ico s d e u n le n g u a je :su e le n e s ta r d e te r ­


m in a d a s p o r el a m b i e n t e e n q u e se c r e ó el le n g u a je . C u a n d o se d is e ñ ó F O R T R A N
e n 1954, las ta rje ta s p e r f o r a d a s e r a n u n m e d io c o m ú n d e e n tr a d a . E n F O R T R A N
160 A N A L ISIS LEXICO

se ig n o r a r o n los e sp a c io s e n b la n c o d e b id o e n p a r te a q u e los p e rfo rista s. q u e p re ­


p a r a b a n las ta rje ta s a p a r ti r d e n o ta s e scritas a m a n o te n d ía n a e q u iv o c a rs e al c o n t a r
los e sp a c io s en b la n c o (B a c k u s [ 1 98 1 J). L a s e p a ra c ió n e n A L G O L 58 d e la re p re s e n ­
ta c ió n e n hardw are a p a r ti r del le n g u a je d e re fe re n c ia fue u n a c u e r d o a lc a n z a d o d e ­
b id o a q u e u n m i e m b r o d e l c o m ité d e d is e ñ o insistió , “ N o , n u n c a u s a ré u n p u n t o
p a r a el sig n o d e c im a l” . (W e g ste in [1981]).
K n u t h [1 9 7 3 a] p r e s e n ta o tr a s té c n ic a s p a r a m a n e ja r la e n t r a d a c o n buffers. F eld-
m a n [1 9 7 9 b ] a n a liz a las d ific u lta d e s p rá c tic a s d e l r e c o n o c im ie n to d e c o m p o n e n te s
léxicos e n F O R T R A N 77.
L as e x p re s io n e s reg u la re s f u e r o n e s tu d ia d a s p o r p r im e r a vez p o r K le e n e [1956],
q u e e s ta b a in teresad o e n d e scrib ir los a c o n te c im ie n to s q u e se p o d ía n re p re s e n ta r con
el m o d e lo d e a u t ó m a t a fin ito d e a c tiv id a d n e rv io s a d e M c C u Ilo c h y P itts [19 43]. La
m in im iz a c ió n d e los a u t ó m a t a s fin ito s fue e s tu d ia d a p o r p r im e r a vez p o r H uíT m an
[1954] y M o o r e [19 56]. L a e q u iv a le n c ia e n tr e a u t ó m a t a s d e te r m in is ta s y n o d e te r ­
m in is ta s e n c u a n t o a su c a p a c id a d p a r a r e c o n o c e r le n g u a je s fue m o s tr a d a p o r R a b in
y S co tt [1 959]. M c N a u g h to n y Y a m a d a [1960] d e s c rib e n u n a lg o ritm o p a r a c o n s­
tr u ir u n A F D d ir e c ta m e n te a p a r ti r d e u n a e x p re sió n reg u la r. E n H o p c r o f t y U llm a n
[1 9 7 9 ] se p u e d e e n c o n t r a r m á s in f o r m a c ió n s o b re la te o ría d e las e x p re s io n e s regu­
lares.
P r o n to se c o m p r e n d ió q u e las h e r r a m i e n ta s p a r a c o n s tr u i r a n a liz a d o r e s léxicos
a p a r ti r d e esp ecificacio n es e n fo rm a d e e x p re s io n e s reg u la re s se ría n ú tiles e n la im ­
p la n ta c ió n d e c o m p ila d o re s . E n J o h n s o n y o tr o s [1 9 6 8 ] se a n a liz a u n o d e esto s p ri­
m e ro s sistem as. L E X , el le n g u a je e s tu d ia d o e n este c a p ítu lo , se d e b e a L esk [1975],
y se ha u tiliz a d o p a r a c o n s tr u i r a n a liz a d o r e s léx ico s p a r a m u c h o s c o m p ila d o r e s a u e
u sa n el s is te m a U N I X . El c o m p a c to e s q u e m a d e la secció n 3 .9 p a r a las ta b la s de
tra n s ic ió n es o b r a d e S. C. J o h n s o n , q u e fue el p r im e r o e n u s a rlo p a r a la im p l a n t a ­
c ió n del g e n e r a d o r d e a n a liz a d o r e s s in tá c tic o s Y a c e ( J o h n s o n [1975]). E n D e n c k e r,
D ü rre y H e u ft [1 9 84], se e s tu d ia n y e v a lú a n o tr o s e s q u e m a s d e c o m p re s ió n d e t a ­
blas.
El p r o b le m a d e la im p la n ta c ió n c o m p a c t a d e ta b la s d e tr a n s ic io n e s h a sid o es­
tu d i a d o te ó r ic a m e n te e n u n p la n te a m ie n to g e n e ra l p o r T a r j a n y Y a o [1 9 7 9 ], y p o r
F r e d m a n , K o m ló s y S z e m e ré d i [1 9 8 4 ]. C o r m a c k . H o r s p o o l y K a is e rs w e rth [1985]
in tr o d u c e n u n a lg o r itm o d e d is p e rs ió n p e rfe c ta b a s a d o e n este tra b a jo .
S e h a n u tiliz a d o e x p re s io n e s reg u la re s y a u t ó m a t a s fin ito s p a r a m u c h a s a p lic a ­
cio n es, a d e m á s d e p a r a la c o m p ila c ió n . M u c h o s e d ito re s d e te x to u s a n e x p re sio n e s
reg u lares p a r a b ú s q u e d a s e n c o n te x to . T h o m p s o n [1 9 6 8 ], p o r e je m p lo , d e s c rib e la
c o n s tr u c c ió n d e u n A F N a p a r tir d e u n a e x p re s ió n re g u la r ( A lg o r itm o 3 .3 ) e n el c o n ­
te x to d e l e d i to r d e te x to s Q E D . E l s is te m a U N I X tie n e tr e s p r o g r a m a s d e b ú s q u e d a
d e p r o p ó s ito g e n e ra l b a s a d o s e n e x p re s io n e s reg ulares: grep, e g r e p y f grep. g r e p
n o p e r m ite u n ió n o p a ré n te s is p a r a a g r u p a r e n s u s e x p re s io n e s reg u lares, p e r o sí u n a
fo rm a lim ita d a d e re fe re n c ia h a c ia a tr á s c o m o e n S N O B O L . g r e p e m p le a lo s algo­
r itm o s 3.3 y 3 .4 p a r a b u s c a r s u s p a tr o n e s d e e x p re sio n e s reg u lares. L as e x p re sio n e s
reg u lares d e e g r e p s o n sim ila re s a las d e L E X , salv o p a r a ite ra c ió n y preanálisis.
e g r e p u tiliz a u n A F D c o n u n a c o n s tr u c c ió n d ife rid a d e e s ta d o s p a r a b u s c a r s u s p a ­
tro n e s d e e x p resio n es regulares, c o m o se in d ic ó en la sección 3.7. f g r e p b u sc a p a tro ­
nes f o r m a d o s p o r c o n j u n to s d e p a la b ra s c lav e u tiliz a n d o el a lg o r itm o d e A h o y C o -
N O T A S BIBLIO GRAFICA S 161

ra s ic k [1 9 7 5 ] , q u e se a n a l i z a e n lo s e je r c ic io s 3.31 y 3 .3 2 . A h o [ 1 9 8 0 ] a n a l i z a el
r e n d im ie n to re la tiv o d e d ic h o s p ro g ra m a s .
L as e x p re s io n e s reg u la re s h a n sid o m u y u tiliz a d a s en s is te m a s d e re c u p e ra c ió n
d e te x to s , e n le n g u a je s d e c o n s u l t a d e b a s e s d e d a t o s y e n le n g u a je s p a r a p r o c e s a ­
m i e n t o d e a r c h iv o s , c o m o A W K ( A h o , K e r n i g h a n y W e i n b e r g e r [ 1 9 7 9 ]). J a r v is
[1976] u tiliz ó e x p re s io n e s reg u la re s p a r a d e s c rib ir im p e rfe c c io n e s e n c irc u ito s i m ­
presos. C h e r r y [1982] u tiliz ó el a lg o r itm o d e c o n c o r d a n c ia d e p a la b r a s c lav e del e jer­
cicio 3.32 p a r a b u s c a r m a l le n g u a je e n m a n u s c rito s .
El a lg o ritm o d e c o n c o rd a n c ia d e p a tro n e s d e c a d e n a s d e los ejercicios 3.26 y 3.27
es o b r a d e K n u th , M o rris y P r a tt [1 9 7 7 ]. E ste a r tíc u lo ta m b ié n c o n tie n e u n b u e n
e s tu d io d e p e r io d o s d e n t r o d e c a d e n a s . O t r o a lg o r itm o e fic ie n te p a r a la c o n c o r d a n ­
c ia d e c a d e n a s fue in v e n ta d o p o r B o y er y M o o re [19 77], q u ie n e s d e m o s t r a r o n q u e
n o r m a l m e n t e se p u e d e d e t e r m i n a r la c o n c o r d a n c ia d e u n a s u b c a d e n a sin te n e r q u e
e x a m i n a r to d o s los c a ra c te re s d e la c a d e n a o b je to . L a d is p e rs ió n ta m b ié n h a resu l­
t a d o ser u n a té c n ic a efectiv a p a r a la c o n c o r d a n c ia d e p a tr o n e s d e c a d e n a s (H a r r is o n
[1971]).
E l c o n c e p to d e s u b s e c u e n c ia c o m ú n m á s la rg a a n a liz a d o e n el e jercicio 3 .3 4 h a
sid o u tiliz a d o e n el d is e ñ o d e l p r o g r a m a d i f f p a r a c o m p a r a c ió n d e a r c h iv o s del sis­
t e m a U N I X ( H u n t y M c llro y [1 9 7 6 ]). S e d e s c rib e e n H u n t y S z y m a n s k i [1 9 7 7 ] u n
a lg o ritm o p r á c tic o eficaz p a r a c a lc u la r s u b s e c u e n c ia s c o m u n e s m á s largas. El a lg o ­
r itm o p a r a c a lc u la r las d is ta n c ia s d e e d ic ió n m í n im a s del e jercicio 3 .3 5 es o b r a d e
W a g n e r y F is c h e r [1 974]. W a g n e r [1 9 7 4 ] in c lu y e u n a s o lu c ió n al e je rc ic io 3 .3 6 . El
tr a b a jo d e S a n k o f f y K r u s k a l [1 9 8 3 ] c o n tie n e u n e s tu d io f a s c in a n te d e la g r a n v arie­
d a d d e a p lic a c io n e s d e los a lg o ritm o s d e r e c o n o c im ie n to d e d is ta n c ia m ín im a , d e sd e
el e s tu d io d e p a tr o n e s e n s e c u e n c ia s g e n é tic a s h a s ta p r o b le m a s e n el p r o c e s a m ie n to
del le n g u a je h a b la d o .
|1 6 3 |

C A P IT U L O 4

Análisis
sintáctico

T o d o le n g u a je d e p r o g r a m a c ió n tie n e reglas q u e p r e s c rib e n la e s tr u c tu r a sin tá c tic a


d e p ro g r a m a s b ie n fo rm a d o s . E n P ascal, p o r e je m p lo , u n p r o g r a m a se c o m p o n e d e
b lo q u e s, u n b lo q u e d e p ro p o s ic io n e s , u n a p r o p o s ic ió n d e e x p re s io n e s , u n a e x p re sió n
d e c o m p o n e n te s léxicos, y a s í s u c e s iv a m e n te . S e p u e d e d e s c rib ir la s in ta x is d e las
c o n s tr u c c io n e s d e los le n g u a je s d e p r o g r a m a c ió n p o r m e d io d e g r a m á tic a s in d e p e n ­
d ie n te s d e l c o n te x to o n o ta c ió n B N F ( f o r m a d e B a c k u s -N a u r), q u e se in tr o d u jo en
la s e c c ió n 2 .2 . L as g r a m á tic a s o f r e c e n v e n ta ja s s ig n ific a tiv a s a lo s d is e ñ a d o r e s d e
le n g u a je s y a los e sc rito re s d e c o m p ila d o re s .

• U n a g r a m á tic a d a u n a e sp ecificació n s in tá c tic a p re c isa y fácil d e e n t e n d e r d e u n


le n g u a je d e p r o g ra m a c ió n .

• A p a r ti r d e a lg u n a s ciases d e g r a m á tic a s se p u e d e c o n s tr u i r a u t o m á t i c a m e n t e u n
a n a liz a d o r s in tá c tic o e fic ie n te q u e d e t e r m in e si u n p r o g r a m a f u e n te está sin tá c ­
ti c a m e n te b ie n f o r m a d o . O t r a v e n ta ja es q u e el p ro c e s o d e c o n s tr u c c ió n d e l a n a ­
liz a d o r s in tá c tic o p u e d e re v e la r a m b ig ü e d a d e s s in tá c tic a s y o tr a s c o n s tr u c c io n e s
difíciles d e a n a liz a r q u e d e o t r o m o d o p o d r ía n p a s a r sin d e te c ta r e n la fase in i­
cial d e d is e ñ o d e u n le n g u a je y d e su c o m p ila d o r.

• U n a g r a m á tic a d is e ñ a d a a d e c u a d a m e n t e im p a r te u n a e s tr u c tu r a a u n len g u aje


d e p r o g r a m a c ió n ú til p a r a la tr a d u c c ió n d e p r o g r a m a s f u e n te a c ó d ig o o b je to
c o r r e c to y p a r a la d e te c c ió n d e e rro re s . E x iste n h e r r a m ie n ta s p a r a c o n v e r tir d e s ­
c rip c io n e s d e tr a d u c c io n e s b a s a d a s e n g r a m á tic a s e n p r o g r a m a s o p e ra tiv o s .

• L o s le n g u a je s e v o lu c io n a n c o n el tie m p o , a d q u i r i e n d o n u e v a s c o n s tr u c c io n e s y
r e a liz a n d o ta re a s a d ic io n a le s. E sta s n u e v a s c o n s tr u c c io n e s se p u e d e n a ñ a d i r c o n
m á s facilid ad a u n le n g u a je c u a n d o ex iste u n a a p lic a c ió n b a s a d a e n u n a d e s c rip ­
c ió n g ra m a tic a l del len g u aje.

L a m a y o r p a r te d e este c a p itu lo e s tá d e d ic a d a a lo s m é to d o s d e a n á lis is s in tá c tic o


d e uso típ ic o e n c o m p ila d o re s . P r im e r o se in tr o d u c e n los c o n c e p to s b ásico s, d e s p u é s
las té c n ic a s a d e c u a d a s p a r a la a p lic a c ió n m a n u a l y, p o r ú ltim o , los a lg o r itm o s q u e
h a n s id o u tiliz a d o s e n h e r r a m i e n t a s a u t o m a t i z a d a s . C o m o lo s p r o g r a m a s p u e d e n
c o n t e n e r e rro re s sin tá c tic o s, se a m p lía n los m é to d o s d e a n á lis is s in tá c tic o p a r a q u e
se re c u p e r e n d e los e rro re s d e o c u r r e n c ia m á s frecu en te.
164 ANALISIS SINTA CTIC O

4.1 E L P A P E L D E L A N A L I Z A D O R S I N T A C T I C O

E n este m o d e lo d e c o m p ila d o r , el a n a liz a d o r s in tá c tic o o b tie n e u n a c a d e n a d e c o m ­


p o n e n te s léx ico s d e l a n a l i z a d o r lé x ico , c o m o se m u e s t r a e n la fig u ra 4 .1 , y c o m ­
p r u e b a si la c a d e n a p u e d a s e r g e n e r a d a p o r la g r a m á tic a del le n g u a je fu en te . S e s u ­
p o n e q u e el a n a liz a d o r s in tá c tic o in f o r m a r á d e c u a l q u ie r e r r o r d e s in ta x is d e m a n e r a
inteligible. T a m b ié n d e b e ría re c u p e ra rs e d e los e rro re s q u e o c u r r e n f r e c u e n te m e n te
p a r a p o d e r c o n t i n u a r p r o c e s a n d o el resto d e s u e n tr a d a .

c o m p o n e n te
lé x ic o
program a a n a liz a d o r m á rb o l d e r ep resen ta ció n
u n a liz a tlo r
■ . • • * « ^ r esto d e la
• •

fu en te lé x ico s in tá c tic o a n á lisis e ta p a inicial in te r m e d ia


o b te n e r
s in tá c tic o
s ig u ie n te
c o m p o n e n te lé x ic o

tab la de
s ím b o lo s

Fig. 4.1. Posición del analizad or sintáctico en el m o d e lo del co m p ilador.

E x isten tres tip o s g e n e ra le s d e a n a liz a d o r e s s in tá c tic o s p a r a g ra m á tic a s . L os m é ­


to d o s u n iv e rsa le s d e a n á lis is s in tá c tic o , c o m o el a lg o ritm o d e C o c k e -Y o u n g e r-K a -
s a m i y el d e E arley, p u e d e n a n a liz a r c u a lq u ie r g r a m á tic a (v é a n s e las n o ta s b ib lio g rá ­
ficas). E s to s m é to d o s , s in e m b a r g o , s o n d e m a s i a d o in e fic ie n te s p a r a u s a rlo s e n la
p ro d u c c ió n d e c o m p ila d o re s . L o s m é to d o s e m p le a d o s g e n e r a lm e n te e n los c o m p i­
la d o re s se clasifican c o m o d e s c e n d e n te s o a s c e n d e n te s . C o m o s u s n o m b r e s in d ic a n ,
lo s a n a liz a d o r e s s in tá c tic o s d e s c e n d e n t e s c o n s t r u y e n á r b o le s d e a n á lis is s in tá c tic o
d e sd e a r r ib a (la raíz) h a s ta a b a jo (las hojas), m ie n tr a s q u e los a n a liz a d o re s s in tá c ti­
c o s a s c e n d e n te s c o m ie n z a n e n las h o ja s y s u b e n h a c ia la raíz. E n a m b o s casos, se
e x a m in a la e n t r a d a al a n a liz a d o r s in tá c tic o d e iz q u ie r d a a d e re c h a , u n s ím b o lo a la
vez.
L o s m é to d o s d e s c e n d e n te s y a s c e n d e n te s m á s efic ien te s tr a b a ja n só lo c o n s u b ­
clases d e g ra m á tic a s , p e r o v a ria s d e e s ta s su b clases, c o m o las g r a m á tic a s L L y L R .
s o n lo s u f ic ie n te m e n te e x p r e s iv a s p a r a d e s c r ib i r la m a y o r í a d e la s c o n s tr u c c io n e s
s in tá c tic a s d e los le n g u a je s d e p r o g r a m a c ió n . L o s a n a liz a d o r e s s in tá c tic o s im p la n ­
ta d o s a m a n o a m e n u d o tr a b a ja n c o n g r a m á tic a s L L 1 ; p o r e je m p lo , el m é t o d o d e la
secció n 2.4 c o n s tr u y e a n a liz a d o r e s s in tá c tic o s p a r a g r a m á tic a s L L 1 . L o s a n a liz a d o ­
res s in tá c tic o s p a r a la clase m á s g r a n d e d e g r a m á tic a s L R se c o n s t r u y e n n o r m a l ­
m e n te c o n h e r r a m ie n ta s a u to m a tiz a d a s .
E n este c a p ítu lo se a s u m e q u e la salid a del a n a l iz a d o r s in tá c tic o es u n a re p re s e n ­
ta c ió n d e l á r b o l d e a n á lis is s in tá c tic o p a r a la c a d e n a d e c o m p o n e n t e s lé x ic o s p ro -
4.1 EL PAPEL DEL A N A L IZ A D O R SIN T A C T IC O 165

elucida p o r el a n a liz a d o r léxico. E n la p rá c tic a , h a y v a ria s ta re a s q u e se p u e d e n re a ­


liz a r d u r a n t e el a n á lis is s in tá c tic o , c o m o r e c o g e r i n f o r m a c i ó n s o b r e d i s t i n t o s
c o m p o n e n te s léxicos e n la ta b la d e s ím b o lo s, rea liz a r la v erific a c ió n d e tip o y o tra s
clases d e a n á lis is s e m á n tic o , y g e n e r a r c ó d ig o in te r m e d io c o m o e n el c a p ítu lo 2. Se
h a n a g r u p a d o to d a s estas a c tiv id a d e s e n la casilla d e “re s to d e la e ta p a in ic ia l" d e la
figura 4.1 y se a n a liz a r á c o n d e ta lle e n los tr e s c a p ítu lo s siguientes.
E n el resto d e esta secció n , se c o n s id e r a la n a tu ra le z a d e los e rro re s s in tá c tic o s y
las estrateg ias g e n e ra le s p a r a su re c u p e ra c ió n . D o s d e e s ta s estrateg ias, lla m a d a s re­
c u p e ra c ió n e n m o d o d e p á n ic o y a nivel d e frase, se e s tu d ia n c o n m á s d e ta lle j u n t o
c o n los m é to d o s d e a n álisis s in tá c tic o in d iv id u a le s. L a im p la n ta c ió n d e c a d a e s tra ­
tegia d e p e n d e del c rite rio d e l q u e e sc rib e el c o m p ila d o r , p e ro a q u í se d a r á n a lg u n a s
s u g e re n c ia s re sp e c to al m é to d o .

M a n e jo d e e r r o r e s sin tá c tic o s

Si u n c o m p i l a d o r tu v ie r a q u e p r o c e s a r s ó lo p r o g r a m a s c o r r e c to s , su d is e ñ o e i m ­
p la n ta c ió n se s im p lif ic a r ía n m u c h o . P e r o lo s p r o g r a m a d o r e s a m e n u d o e sc rib e n
p r o g r a m a s in c o r r e c to s , y u n b u e n c o m p i l a d o r d e b e r í a a y u d a r al p r o g r a m a d o r a
id e n tific a r y lo c aliz ar e rro re s . E s s o r p r e n d e n te q u e a u n q u e los e rro re s se a n ta n fre­
c u e n te s , p o c o s le n g u a je s h a n sid o d is e ñ a d o s te n ie n d o e n c u e n t a el m a n e jo d e e r r o ­
res. E sta civ ilizació n sería c o m p le ta m e n te d is tin ta si lo s le n g u a je s h a b la d o s ex ig ieran
t a n t a e x a c titu d s in tá c tic a c o m o los le n g u a je s d e p r o g ra m a c ió n . L a m a y o ría d e las
esp ecificacio n es d e lo s le n g u a je s d e p r o g r a m a c ió n n o d e s c rib e n c ó m o d e b e re s p o n ­
d e r u n c o m p ila d o r a los e rro re s: la r e s p u e s ta se d e ja al d is e ñ a d o r d e l c o m p ila d o r .
C o n s id e r a r d e s d e el p r in c ip io el m a n e jo d e e rro re s p u e d e s im p lific a r la e s tr u c tu r a d e
u n c o m p ila d o r y m e jo r a r s u r e s p u e s ta a los erro res.
Se sa b e q u e los p r o g r a m a s p u e d e n c o n t e n e r e r r o r e s d e m u y d iv e r s o tip o . P o r
e je m p lo . los e rro re s p u e d e n ser:

• léxicos, c o m o e s c rib ir m al u n id e n tific a d o r. p a la b r a c lav e u o p e r a d o r


• sin tá c tic o s, c o m o u n a e x p re s ió n a r itm é tic a c o n p a ré n te sis n o e q u ilib ra d o s
• se m á n tic o s , c o m o u n o p e r a d o r a p lic a d o a u n o p e r a n d o in c o m p a tib le
• lógicos, c o m o u n a lla m a d a in f in ita m e n te re c u rsiv a

A m e n u d o , g ra n p a rte d e la d e te c c ió n y re c u p e ra c ió n d e e rro re s e n u n c o m p ila ­


d o r se c e n tr a en la fase d e a n álisis s in tá c tic o . U n a ra z ó n es q u e m u c h o s e rro re s son
d e n a tu ra le z a s in tá c tic a o se m a n if ie s ta n c u a n d o la c a d e n a d e c o m p o n e n te s léxicos
q u e p ro v ie n e del a n a liz a d o r léxico d e s o b e d e c e las reglas g ra m a tic a le s q u e d e fin e n al
le n g u a je d e p r o g r a m a c ió n . O t r a ra z ó n es la p recisió n d e los m é to d o s m o d e r n o s de
a n álisis sin tá c tic o s, q u e p u e d e n d e te c ta r la p re s e n c ia d e e rro re s d e n t r o d e los p ro g ra ­
m a s d e u n a fo rm a m u y efic ien te . I,a d e te c c ió n e x a c ta d e la p re s e n c ia d e e rro re s se­
m á n tic o s y lógicos e n el m o m e n t o d e la c o m p ila c ió n es m u c h o m á s difícil. E n esta
secció n se p re s e n ta n a lg u n a s té c n ic a s b á sic a s p a r a re c u p e ra rs e d e e rro re s sin tá c tic o s;
en este c a p ítu lo se e s tu d ia su im p la n ta c ió n j u n t o c o n los m é to d o s d e a n á lis is s in tá c ­
tico.
El m a n e ja d o r d e e rro re s e n u n a n a liz a d o r s in tá c tic o tie n e o b je tiv o s fáciles d e es­
tablecer:
166 A N A LISIS SINTA CTIC O

• D e b e in f o r m a r d e la p re se n c ia d e e rro re s c o n c la rid a d y e x a c titu d .

• Se d e b e r e c u p e r a r d e c a d a e r r o r c o n la s u fic ie n te r a p id e z c o m o p a r a d e te c ta r
e rro re s posterio res.

• N o d e b e re tra s a r d e m a n e r a sig n ificativ a el p r o c e s a m ie n to d e p r o g r a m a s c o rre c ­


tos.

La re a liz a c ió n e fe c tiv a d e e s to s o b je tiv o s p la n te a d esafío s im p o rta n te s .


A f o r tu n a d a m e n te , lo s e rro re s m á s c o m u n e s s o n sim p le s y a m e n u d o b a s ta c o n
u n m e c a n is m o sencillo d e m a n e jo d e erro res. S in e m b a rg o , e n alg u n o s casos u n e rro r
p u d o h a b e r o c u r r id o m u c h o a n te s d e la p o sic ió n en q u e se d e te c tó su p re se n c ia , y
p u e d e s e r m u y difícil d e d u c i r la n a tu ra le z a p recisa de! e rro r. E n los c aso s d ifíciles, el
m a n e ja d o r d e e rro re s q u iz á te n g a q u e a d iv in a r q u é te n ía en m e n te el p r o g r a m a d o r
c u a n d o e sc rib ió el p ro g ra m a .
V ario s m é to d o s d e a n álisis s in tá c tic o , c o m o los m é to d o s L L y L R . d e te c ta n un
e r r o r lo a n te s posible. Es d ecir, tie n e n la propiedad d e l prefijo viable , lo c u a l q u ie re
d e c ir q u e d e te c ta n la p re se n c ia d e un e r r o r n a d a m á s ver u n p re fijo d e la e n tr a d a
q u e n o es p re fijo d e n in g u n a c a d e n a del lenguaje.

E jem p lo 4 .1 . P a ra c o m p r o b a r la clase d e e rro re s q u e o c u r r e n en la p rá c tic a , se e x a ­


m in a n los e r r o r e s q u e R ip le y y D r u s e ik is [1 9 7 8 ] e n c o n t r a r o n e n u n a m u e s t r a d e
p r o g r a m a s e n P a sc a l r e a liz a d o s p o r e s tu d ia n te s .
D e sc u b rie ro n q u e los e rro re s n o o c u rre n ta n fre c u e n te m e n te ; el 6 0 p o r 100 de
los p r o g r a m a s c o m p ila d o s e ra c o r r e c to s in tá c tic a y s e m á n t ic a m e n te . A u n c u a n d o
h ab ía erro res, ésto s e s ta b a n b a s ta n te d isp erso s: el 8 0 p o r 100 d e las p ro p o s ic io n e s
c o n e rro re s só lo te n ía u n e rro r, y el 13 p o r 100. d os. P o r ú ltim o , la m a y o ría e ra n
e rro re s triviales: el 9 0 p o r 100 e r a n e rro re s d e u n c o m p o n e n te léxico.
M u c h o s d e los e rro re s se p o d ría n clasificar s im p le m e n te : 6 0 p o r 100 e r a n erro res
d e p u n tu a c ió n , el 2 0 p o r 100 e r a n e rro re s d e o p e r a d o r y o p e r a n d o , el 15 p o r 100,
e rro re s d e p a la b ra s clave, y el re s ta n te 5 p o r 100, d e o tr a s clases. L a m a y o ría d e los
e rro re s d e p u n tu a c ió n g ira b a a lre d e d o r del u s o in c o rre c to del p u n t o y c o m a .
C o m o e je m p lo c o n c r e to , c o n s id é re s e el sig u ie n te p r o g r a m a e n Pascal.

(1) p ro g ram im p m a x (in p u t, o u tp u t);


(2) var
(3) x, y: in te g e r;

(4) fu n c tio n m a x (i: i n t e g e r ; j : i n t e g e r ) : in te g e r;


(5) ( d e v u e l v e e l m á x im o d e l o s e n t e r o s i y j}
(6 ) b e g in
(7 ) i f i > j t h e n m ax : = i
(8 ) e l s e m ax : = j
(9) end;

(1 0 ) b e g in
( 11) re a d ln ( x , y ) ;
(1 2 ) w rite ln (max(x,y))
( 13) end.
4.1 EL PAPEL D E L A N A L IZ A D O R SIN T A C T IC O 167

U n e r r o r d e p u n tu a c ió n f r e c u e n te e s u s a r u n a c o m a e n lu g a r del p u n t o y c o m a en
la lista d e a r g u m e n to s d e u n a d e c la r a c ió n d e f u n c ió n ( p o r e je m p lo , u s a r u n a c o m a
e n lu g a r del p r im e r p u n t o y c o m a e n la lín e a (4)): o t r o e s n o p o n e r u n p u n t o y c o m a
o b lig a to rio al fin al d e u n a lín ea ( p o r e je m p lo , el p u n t o y c o m a d e l final d e la línea
(4)); o t r o e s p o n e r u n p u n t o y c o m a in d e b id o al final d e u n a lin ea a n te s d e u n e l s e
( p o r e je m p lo , p o n e r u n p u n t o y c o m a al final d e la lín e a (7)).
T a l v ez lo s e rro re s d e p u n t o y c o m a s o n ta n c o m u n e s p o r q u e el u s o d e l p u n t o y
c o m a v a ría m u c h o d e u n le n g u a je a o tr o . E n P ascal, u n p u n t o y c o m a e s u n se p a ­
r a d o r d e p ro p o s ic io n e s; e n P L / I y e n C . te r m in a u n a p ro p o s ic ió n . A lg u n o s e stu d io s
h a n s u g e rid o q u e este ú lt im o u s o es m e n o s p r o p e n s o a e rro re s ( G a n n o n y H o r n in g
[1975]).
U n e je m p lo típ ic o d e u n e r r o r d e o p e r a d o r es n o p o n e r los d o s p u n to s e n := .
L o s e rro re s d e e s c ritu ra d e las p a la b r a s c lav e son b a s ta n te raro s, p e ro u n e je m p lo
ilu stra tiv o e s o lv id a r la i en w r i t e l n .
M u c h o s c o m p ila d o r e s d e P ascal n o tie n e n d ific u lta d e s p a r a m a n e ja r e rro re s c o ­
m u n e s d e in s e rc ió n , b o r r a d o y m u ta c ió n . D e h e c h o , v a rio s c o m p ila d o r e s d e Pascal
c o m p ila r á n c o r r e c ta m e n te el p r o g r a m a a n te r io r c o n u n e r r o r c o m ú n d e p u n tu a c ió n
o d e o p e r a d o r , e m itir á n só lo u n d ia g n ó s tic o d e a d v e rte n c ia , s e ñ a la n d o la c o n s tr u c ­
c ió n e rró n e a .
S in e m b a r g o , h a y o t r a c la s e h a b i t u a l d e e r r o r m u c h o m á s d if íc il d e r e p a r a r
c o r r e c ta m e n te : n o p o n e r u n b e g i n o u n e n d ( p o r e je m p lo , la o m is ió n d e la línea
(9)). L a m a y o ría d e los c o m p ila d o r e s n o in te n ta r ía r e p a r a r esta clase d e erro r.

¿ C ó m o d e b e in f o r m a r u n m a n e j a d o r d e e rro re s d e la p re s e n c ia d e u n e rro r? Al
m e n o s d e b e i n f o r m a r del lu g a r e n el p r o g r a m a f u e n te d o n d e se d e te c ta el e rro r, p o r ­
q u e es m u y p r o b a b le q u e el e r r o r re a l se h a y a p r o d u c id o e n a lg u n o d e lo s c o m p o ­
n e n te s léxicos a n te rio re s . U n a e stra te g ia c o m ú n e m p le a d a p o r m u c h o s c o m p ila d o ­
res es im p r im ir la lín ea e r r ó n e a c o n u n a p u n t a d o r a la p o sic ió n d o n d e se d e te c ta el
e rro r. Si h a y u n a p o sib ilid a d ra z o n a b le d e s a b e r c u á l es re a lm e n te el e rro r, ta m b ié n
se in clu y e u n m e n sa je d e d ia g n ó stic o in fo rm a tiv o y co m p re n sib le ; p o r e je m p lo , “ falta
p u n t o y c o m a e n esta p o s ic ió n " .
U n a vez d e t e c t a d o el e r r o r , ¿ c ó m o se d e b e r e c u p e r a r el a n a l iz a d o r s in tá c tic o ?
C o m o se v e rá , e x iste n v a r ia s e s tr a te g ia s g e n e ra le s , p e r o n in g ú n m é t o d o e s c l a r a ­
m e n te s u p e rio r. E n la m a y o ría d e los casos, n o es a d e c u a d o q u e el a n a liz a d o r s in ­
tá c tic o a b a n d o n e d e s p u é s d e d e te c ta r el p r i m e r erro r, p o r q u e el p o s te rio r p ro c e s a ­
m i e n to d e la e n tr a d a p o d r ía re v e la r m á s e rro re s . N o r m a lm e n te , hay a lg u n a fo rm a
d e re c u p e ra c ió n del e r r o r d o n d e el a n a liz a d o r s in tá c tic o in te n ta v o lv e r él m is m o a
u n e s ta d o e n el q u e el p r o c e s a m ie n to d e la e n t r a d a p u e d a c o n t i n u a r c o n u n a e sp e ­
ra n z a ra z o n a b le d e q u e se h a r á el a n álisis d e la e n t r a d a c o r r e c ta o d e q u e será m a ­
n e ja d a c o r r e c ta m e n te p o r el c o m p ila d o r.
U n a re c u p e ra c ió n in a d e c u a d a p u e d e in t r o d u c ir u n a a v a la n c h a a b r u m a d o r a d e
e r r o r e s “ e s p u r io s " , n o c o m e t i d o s p o r el p r o g r a m a d o r , s i n o i n t r o d u c i d o s p o r los
c a m b io s h e c h o s al e s ta d o del a n a liz a d o r s in tá c tic o d u r a n t e la re c u p e ra c ió n d e l erro r.
D e fo rm a s im ila r, la re c u p e ra c ió n del e r r o r s in tá c tic o p u e d e in tr o d u c ir e rro re s se­
m á n tic o s e s p u rio s q u e m á s ta rd e d e te c ta r á n las fases d e a n álisis s e m á n tic o o d e ge­
n e ra c ió n d e cód igo . P o r e je m p lo , al re c u p e r a r s e d e u n e rro r, el a n a liz a d o r s in tá c tic o
168 A N A LISIS SINTACTICO

p u e d e h a b e r o m i tid o u n a d e c la ra c ió n d e a lg u n a v a ria b le , p o r e je m p lo z a p . C u a n d o
lu e g o se e n c u e n t r a z a p e n e x p re s io n e s , n a d a e s s in tá c tic a m e n t e in c o rr e c to , p e ro
c o m o n o h a y u n a e n t r a d a e n la ta b la d e s ím b o lo s p a r a z a p , se g e n e ra el m e n sa je
“ z a p in d e fin id a ” .
U n a estrateg ia c o n s e r v a d o r a p a r a u n c o m p ila d o r e s in h ib ir los m e n s a je s d e e rro r
q u e p ro v e n g a n d e e rro re s d e s c u b ie rto s d e m a s i a d o cerc a u n o s d e o tr o s e n la c a d e n a
d e e n tra d a . D esp u és d e d e sc u b rir u n e r r o r sin táctico, el c o m p ila d o r p o d ría exigir q u e
v ario s c o m p o n e n te s léxicos se a n a liz a r á n s in tá c tic a m e n te c o n é x ito a n te s d e p e r m i­
ti r o t r o m e n sa je d e e rro r. E n a lg u n o s c a so s, p u e d e h a b e r d e m a s ia d o s e rro re s c o m o
p a r a q u e el c o m p ila d o r c o n t i n ú e u n p r o c e s a m ie n to ra z o n a b le . ( P o r e je m p lo , ¿ c ó m o
d e b e r e s p o n d e r u n c o m p ila d o r d e P ascal a u n p r o g r a m a e n F O R T R A N c o m o e n ­
tra d a ? ) P arece q u e u n a estrateg ia d e re c u p e ra c ió n d e e rro re s tie n e q u e s e r u n c o m ­
p r o m is o c u id a d o s a m e n te c o n s id e ra d o , te n ie n d o e n c u e n t a las clases d e e rro re s q u e
se p u e d e n p r e s e n ta r y q u e se a n d e p r o c e s a m ie n to ra z o n a b le .
C o m o ya se h a m e n c i o n a d o , a lg u n o s c o m p ila d o r e s in t e n t a n r e p a r a r el e rro r,
p ro ceso e n el c u a l el c o m p ila d o r i n t e n ta a d iv in a r lo q u e p r e te n d ía e scrib ir el p r o g r a ­
m a d o r. El c o m p ila d o r d e P L /C ( C o n w a y y W ilc o x [1 9 7 3 ]) es u n e je m p lo d e este
tip o d e c o m p ila d o r . E x c e p to ta l vez e n u n e n t o r n o d e p ro g r a m a s c o r to s e sc rito s p o r
e s tu d ia n te s in e x p e rto s , n o es p r o b a b le q u e la re c u p e ra c ió n c o m p le ta d e los e rro re s
sea re n ta b le . D e h e c h o , c o n la im p o r ta n c ia c re c ie n te d e la in f o r m á tic a in te r a c tiv a y
los b u e n o s e n t o r n o s d e p r o g r a m a c ió n , la te n d e n c ia p a r e c e s e r h a c ia m e c a n is m o s
sen cillo s d e re c u p e ra c ió n d e erro res.

E s tr a te g ia s d e re c u p e ra c ió n d e e rro re s

H a y m u c h a s e stra te g ia s g e n e ra le s d is tin ta s q u e p u e d e e m p le a r un a n a liz a d o r sin tá c ­


tic o p a r a re c u p e ra rs e d e u n e r r o r s in tá c tic o . A u n q u e n in g u n a d e ellas h a d e m o s tr a d o
s e r d e a c e p ta c ió n u n iv e rsa l, a lg u n o s m é to d o s tie n e n u n a a m p lia a p lic a b ilid a d . A q u í
se in tr o d u c e n la s sig u ie n te s estrategias:
• en m o d o d e p á n ic o
• a nivel d e frase
• de p ro d u c c io n e s d e e rro r
• d e c o rre c c ió n global

Recuperación en m o d o d e pánico. E ste es el m é to d o m á s se n c illo d e im p la n ta r


y p u e d e n u tiliz a rlo la m a y o r ía d e los m é to d o s d e a n álisis s in tá c tic o . Al d e s c u b r ir un
erro r, el a n a liz a d o r s in tá c tic o d e s e c h a s ím b o lo s d e e n t r a d a , d e u n o e n u n o , h asta
q u e e n c u e n t r a u n o p e rte n e c ie n te a u n c o n j u n t o d e s ig n a d o d e c o m p o n e n te s léxicos
d e s in c ro n iz a c ió n . E stos c o m p o n e n te s léx ico s d e s in c ro n iz a c ió n s o n g e n e ra lm e n te
d e lim ita d o re s , c o m o el p u n t o y c o m a o la p a la b r a c lav e en d . c u y o p a p e l e n el p ro ­
g ra m a fu e n te está c laro . E s e v id e n te q u e q u ie n d is e ñ a el c o m p ila d o r d e b e seleccio­
n a r los c o m p o n e n te s léxicos d e s in c ro n iz a c ió n a d e c u a d o s p a r a el le n g u a je fu en te .
A u n q u e la c o r r e c c ió n e n m o d o d e p á n i c o a m e n u d o o m i t e u n a c a n t i d a d c o n s id e ­
rab le d e e n t r a d a sin c o m p r o b a r la e x iste n c ia d e e rro re s a d ic io n a le s, tie n e la v e n ta ja
d e la sencillez y, a d ife re n c ia d e o tr o s m é to d o s c o n s id e r a d o s m á s a d e la n te , está g a­
r a n tiz a d o c o n t r a la zo s in fin ito s. E n s itu a c io n e s e n d o n d e s o n ra ro s los e r r o r e s m ú l ­
tiples e n la m is m a p ro p o s ic ió n , este m é to d o p u e d e re s u lta r b a s ta n te a d e c u a d o .
4.2 G RAM ATICAS IN D EPENDIENTES DEL C O N T E X T O 169

Recuperación a nivel d e frase. Al d e s c u b r ir u n e rro r, el a n a liz a d o r s in tá c tic o


p u e d e re a liz a r u n a c o r re c c ió n local d e la e n t r a d a re s ta n te ; es d ecir, p u e d e s u s titu ir
u n p re fijo d e la e n t r a d a r e s ta n te p o r a lg u n a c a d e n a q u e p e r m i ta c o n t i n u a r al a n a li­
z a d o r s in tá c tic o . U n a c o r re c c ió n local típ ic a sería s u s titu ir u n a c o m a p o r u n p u n to
y c o m a , s u p r im ir u n p u n t o y c o m a s o b r a n te , o in s e r ta r u n p u n t o y c o m a q u e falta.
L a e le c c ió n d e la c o r re c c ió n local c o r r e s p o n d e al d is e ñ a d o r del c o m p ila d o r . P o r s u ­
p u esto , se d e b e te n e r c u i d a d o d e eleg ir s u s titu c io n e s q u e n o c o n d u z c a n a la zo s in fi­
nitos, c o m o sería el c a s o , p o r e je m p lo , si s ie m p re se in s e rta ra a lg o e n la e n t r a d a p o r
d e la n te d e l s ím b o lo d e e n t r a d a e n c u rso .
E ste ti p o d e s u s titu c ió n p u e d e c o r r e g ir c u a l q u i e r c a d e n a d e e n t r a d a y h a sid o
e m p le a d o e n v a rio s c o m p ila d o r e s q u e c o rrig e n los e rro re s . El m é t o d o se u s ó p o r p ri­
m e r a vez e n el a n álisis s in tá c tic o d e s c e n d e n te . S u p rin c ip a l d e s v e n ta ja es su d ific u l­
ta d p a r a a f r o n t a r s itu a c io n e s en q u e el e r r o r real se p r o d u jo a n te s del p u n t o d e d e ­
te cció n .
Producciones d e error . Si se tie n e u n a b u e n a id e a d e los e rro re s c o m u n e s q u e
p u e d e n e n c o n tr a r s e , se p u e d e a u m e n t a r la g r a m á tic a del le n g u a je c o n p ro d u c c io n e s
q u e g e n e re n la s c o n s tr u c c io n e s e rró n e a s . E n to n c e s se u s a esta g r a m á tic a a u m e n t a d a
c o n las p ro d u c c io n e s d e e r r o r p a r a c o n s tr u i r el a n a liz a d o r s in tá c tic o . Si el a n a liz a d o r
s in tá c tic o u s a u n a p r o d u c c i ó n d e e r r o r , s e p u e d e n g e n e r a r d ia g n ó s t i c o s d e e r r o r
a p r o p ia d o s p a ra in d ic a r la c o n s tr u c c ió n e r r ó n e a re c o n o c id a e n la e n tra d a .
Corrección global. Id e a lm e n te , seria d e se a b le q u e u n c o m p ila d o r h ic ie ra el m í­
n im o d e c a m b io s p o sibles al p r o c e s a r u n a c a d e n a d e e n t r a d a in c o rre c ta . E x isten a l­
g o r itm o s p a r a elegir u n a s e c u e n c ia m í n i m a d e c a m b io s p a r a o b te n e r u n a c o rre c c ió n
global d e m e n o r c o sto . D a d a u n a c a d e n a d e e n t r a d a in c o rr e c ta x y la g r a m á tic a G.
e s to s a lg o ritm o s e n c o n tr a r á n u n á rb o l d e a n á lis is s in tá c tic o p a r a u n a c a d e n a re la c io ­
n a d a y , ta l q u e el n ú m e r o d e in se rc io n e s, s u p re s io n e s y m o d ific a c io n e s d e c o m p o ­
n e n te s léx ico s n e c e s a rio p a r a t r a n s f o r m a r x e n y sea el m í n i m o p o sib le. P o r d esg ra­
cia, la im p la n ta c ió n d e e s to s m é to d o s es e n g e n e ra l d e m a s ia d o c o s to s a e n té rm in o s
d e ti e m p o y esp acio , a s í q u e e s ta s té c n ic a s e n la a c tu a lid a d só lo s o n d e in te ré s te ó ­
rico.
S e d e b e s e ñ a la r q u e u n p r o g r a m a c o r r e c to m á s p a r e c id o al o rig in a l p u e d e n o ser
lo q u e el p r o g r a m a d o r te n ía e n m e n te . S in e m b a rg o , la n o c ió n d e co rrecció n d e costo
m í n i m o p r o p o r c io n a u n a escala p a r a e v a lu a r las té c n ic a s d e re c u p e ra c ió n d e e rro re s ,
y se h a u s a d o p a r a e n c o n t r a r c a d e n a s d e s u s titu c ió n ó p ti m a s p a r a la re c u p e ra c ió n a
nivel d e frase.

4 .2 G R A M A T I C A S I N D E P E N D I E N T E S D E L C O N T E X T O

M u c h a s c o n s tr u c c io n e s d e los le n g u a je s d e p r o g r a m a c ió n tie n e n u n a e s tr u c tu r a in ­
h e re n te m e n te recu rsiva q u e se p u e d e d e fin ir m e d ia n te g ra m á tic a s in d e p e n d ie n te s del
c o n te x to . P o r e je m p lo , se p u e d e te n e r u n a p ro p o s ic ió n c o n d ic io n a l d e f in id a p o r u n a
regla c o m o

Si S i y S 2 s o n p ro p o s ic io n e s y E e s u n a e x p re s ió n , e n to n c e s

“if E th e n S \ e ls e S { ' e s u n a p ro p o s ic ió n . (4.1)


170 ANALISIS SIN T A C T IC O

N o se p u e d e e s p e c ific a r esta fo rm a d e p ro p o s ic ió n c o n d ic io n a l u s a n d o la n o ta c ió n
d e las e x p re s io n e s reg u lares; e n el c a p ítu lo 3 se vio q u e las e x p re s io n e s reg u la re s p u e ­
d e n esp ecificar la e s tr u c tu r a lex ico g ráfica d e los c o m p o n e n te s léxicos. P o r o t r o lado,
u tiliz an d o la v a ria b le sin tá ctic a prop p a ra d e n o t a r la clase d e las p ro p o s ic io n e s y expr
p a r a la clase d e las ex p resio n es, y a se p u e d e e x p r e s a r (4.1) u s a n d o la p r o d u c c ió n gra­
m atical

prop —> if ex p r th e n prop e ls e prop (4.2)

E n esta secció n se revisa la d e fin ic ió n d e u n a g r a m á tic a in d e p e n d ie n te del c o n ­


te x to y se in tr o d u c e te rm in o lo g ía p a r a el a n álisis s in tá c tic o . S eg ún la se c c ió n 2.2,
u n a g ra m á tic a in d e p e n d ie n te d e l c o n te x to (g ra m á tic a , p o r b re v e d a d ) c o n s ta d e te r ­
m in ales. n o te rm in a le s , u n s ím b o lo inicial y p ro d u c c io n e s .

1. Los te rm in a le s s o n los s ím b o lo s b ásico s c o n q u e se f o r m a n las c a d e n a s . “C o m ­


p o n e n te léxico " es u n s in ó n im o d e “te r m in a l” c u a n d o se tra ta d e g ra m á tic a s p a ra
len g u ajes d e p r o g r a m a c ió n . E n (4 .2 ), c a d a u n a d e las p a la b r a s c lav e if. t h e n y
e lse es u n te rm in a l.

2. Los n o te rm in a le s s o n v aria b les s in tá c tic a s q u e d e n o t a n c o n j u n t o s d e c a d e n a s.


E n (4 .2 ), prop y ex p r son n o te rm in a le s . L o s n o te r m in a le s d e fin e n c o n j u n to s
d e c a d e n a s q u e a y u d a n a d e f in i r el le n g u a je g e n e r a d o p o r la g r a m á tic a . T a m ­
b ié n i m p o n e n u n a e s tr u c tu r a je r á r q u i c a s o b re el le n g u a je q u e es útil t a n t o p a ra
el a n álisis s in tá c tic o c o m o p a r a la tra d u c c ió n .

3. E n u n a g ra m á tic a , u n n o te rm in a l es c o n s id e r a d o c o m o el s ím b o lo in icial, y el
c o n j u n t o d e c a d e n a s q u e r e p re s e n ta e s el le n g u a je d e f in id o p o r la g ra m á tic a .

4. L as p ro d u c c io n e s d e u n a g r a m á tic a esp ecifican c ó m o se p u e d e n c o m b i n a r los


te rm in a le s y los n o te rm in a le s p a r a f o r m a r c a d e n a s. C a d a p r o d u c c ió n c o n s ta d e
u n n o te rm in a l, seg u id o p o r u n a flech a (a veces se u s a el s ím b o lo , e n lu g a r
d e la flecha), s e g u id a p o r u n a c a d e n a d e n o te rm in a le s y te rm in a le s .

E je m p lo 4 .2 . L a g r a m á tic a c o n las sig u ie n te s p ro d u c c io n e s d e fin e e x p re s io n e s a r i t ­


m é tic a s sim ples.

ex p r - » ex p r op expr
expr —►( e x p r )
ex p r -> - expr
ex p r - » id
op -» +
op -
op -> *
op -* /
Op -> t

E n esta g ra m á tic a , los s ím b o lo s te r m in a le s son

id + - */ T()

L o s s ím b o lo s n o te rm in a le s s o n e x p r y op, y e x p r e s el s ím b o lo inicial. □
4.2 G R A M A T IC A S IN D E PE N D IE N T E S D EL C O N T E X T O 171

C o n v e n c io n e s d e n o ta ció n

P a r a e v ita r te n e r q u e e s ta b le c e r s ie m p re q u e “ esto s s o n los term inales*', “e s to s son


los n o te rm in a le s ” , e tc é te ra , a p a r tir d e a h o r a se e m p le a r á n las sig u ie n te s c o n v e n c io ­
n e s d e n o ta c ió n c o n re s p e c to a las g ra m á tic a s.

1. E stos s ím b o lo s son te rm in a le s:

a) L as p r im e r a s letras m in ú s c u la s del a lfa b e to , c o m o a. b . c.


b) L o s s ím b o lo s d e o p e r a d o r , c o m o + . etcétera.
c ) L os s ím b o lo s d e p u n tu a c ió n , c o m o p arén tesis, c o m a , etcétera.
d ) Los d íg ito s 0 , 1........... 9.
e) C a d e n a s e n n e g rita s, c o m o id o if.

2. E sto s s ím b o lo s s o n n o te rm in a le s:

a ) Las p r im e r a s le tra s m a y ú s c u la s del a lfa b e to , c o m o A. li, C.


b) La le tra S . q u e c u a n d o a p a re c e su ele s e r el s ím b o lo inicial.
c ) L o s n o m b r e s e n c u rs iv a s m in ú s c u la s , c o m o expr o prop.

3. L as ú ltim a s le tra s m a y ú s c u la s del a lfa b e to , c o m o X. Y. / . re p re s e n ta n sím bolos


gram aticales . es d ecir, te r m in a le s o n o te rm in ales.

4. L as ú lt im a s le tra s m in ú s c u la s del a lfa b e to , p r in c ip a lm e n te u. v z. re p re s e n ­


ta n c a d e n a s d e te rm in ales.

5. L as letras griegas m in ú s c u la s , a . (3, y, p o r e je m p lo , re p re s e n ta n c a d e n a s d e s ím ­


b o lo s g ra m a tic a le s. P o r ta n to , u n a p ro d u c c ió n g e n é ric a p o d ría escrib irse A -* a.
in d ic a n d o q u e h a y u n so lo n o te rm in a l A a la iz q u ie rd a d e la flecha (el lado iz ­
quierdo d e la p ro d u c c ió n ) y u n a c a d e n a d e s ím b o lo s g ra m a tic a le s a a la d e r e c h a
d e la flecha (el lado derecho d e la p ro d u c c ió n ).

6. Si A - » a , . A - > a 2 I -* ai son to d a s p ro d u ccio n es c o n A a la izq uierd a (se


les llam a producciones de A ), se pued e escribir ,^1 —> a i | a? | . . . | a*. a t. Gb a*
se d e n o m in a n alternativas d e A.
7. A m e n o s q u e se d ig a o t r a co sa, el la d o iz q u ie r d o d e la p r im e r a p ro d u c c ió n e s el
s ím b o lo inicial.

E je m p lo 4 .3 . U s a n d o estas a b re v ia tu ra s , se p o d r ía e scrib ir e n fo rm a c o n c isa la g ra ­


m á tic a del e je m p lo 4 .2 c o m o

E-+EA E\[E) \- E|id

L as c o n v e n c io n e s d e n o ta c ió n in d ic a n q u e E y A son n o te rm in a le s , c o n E c o m o
s ím b o lo in icial. El resto d e los s ím b o lo s s o n te rm in a le s . □

D e r iv a c io n e s

H a y v arias f o r m a s d e c o n s id e r a r el p ro c e s o m e d ia n te el c u a l u n a g r a m á tic a d efin e


u n len g u aje. E n la secció n 2.2 se c o n s id e r ó este p r o c e s o c o m o el d e c o n s tr u c c ió n de
á rb o le s d e a n á lis is s in tá c tic o , p e r o e x iste ta m b ié n u n a v isió n d e riv a tiv a re la c io n a d a
q u e su ele r e s u lta r ú til. D e h e c h o , esta v isió n d e riv a tiv a d a u n a d e sc rip c ió n precisa
172 ANALISIS SIN T A C T IC O

d e la c o n s tr u c c ió n d e s c e n d e n te d e u n á rb o l d e a n á lis is s in tá c tic o . L a id e a c e n tra l es


q u e se c o n s id e r a u n a p ro d u c c ió n c o m o u n a regla d e re e sc ritu ra , d o n d e el n o t e r m i ­
nal d e la iz q u ie r d a es s u s titu id o p o r la c a d e n a d e l la d o d e r e c h o d e la p ro d u c c ió n .
P o r e je m p lo , c o n s id é r e s e la s ig u ie n te g r a m á t i c a p a r a e x p r e s io n e s a r itm é tic a s ,
d o n d e el n o te rm in a l E re p r e s e n ta u n a ex p re sió n .

E -> E + E \ E + E \ { E ) \ - E |id (4.3)

L a p ro d u c c ió n E - » - E sig n ifica q u e u n a e x p re sió n p re c e d id a p o r u n sig n o m e n o s


es ta m b ié n u n a e x p re s ió n . E sta p ro d u c c ió n se p u e d e u s a r p a r a g e n e ra r e x p re sio n e s
m á s c o m p le ja s a p a r tir d e e x p re s io n e s m á s s im p le s p e r m i tie n d o s u s titu ir c u a lq u ie r
p re s e n c ia d e E p o r - E. E n el c a s o m á s sim p le, se p u e d e s u s titu ir u n a so la E p o r
- E. S e p u e d e d e s c rib ir esta a c c ió n e s c rib ie n d o

E => - E

q u e se lee ”E d e r iv a - E ”. L a p ro d u c c ió n E - » ( / ; ) esta b le c e q u e ta m b ié n se p o d ria


s u s titu ir u n a p re s e n c ia d e u n a E e n c u a lq u ie r c a d e n a d e s ím b o lo s g ra m a tic a le s p o r
( £ ) ; p o r e je m p lo . E * E => ( E )* E o E * E => F*{E).
Se p u e d e t o m a r u n a so la E y a p lic a r r e p e tid a m e n te p ro d u c c io n e s en c u a lq u ie r
o r d e n p a r a o b te n e r u n a s e c u e n c ia d e s u s titu c io n e s . P o r e je m p lo .

E => - E => - ( £ ) = > - ( i d )


A d ic h a s e c u e n c ia d e s u s titu c io n e s se le lla m a derivación d e —(id) a p a r tir d e E . E sta
d e riv a c ió n p r o p o r c io n a u n a p r u e b a d e q u e u n c a s o d e t e r m i n a d o d e u n a ex p resió n
es la c a d e n a —(id).
D e f o r m a m á s a b s tra c ta , se d ic e q u e a.Tp => ay¡5 si A - » y es u n a p ro d u c c ió n y
a y p son c a d e n a s a r b itr a r ia s d e s ím b o lo s g ra m a tic a le s . Si a i => a i => . . . => a„. se
d ic e q u e a i deriva a u„. El s ím b o lo => sig n ifica “d e r iv a e n u n p a s o " . A m e n u d o se
d e s e a d e c ir “d e r iv a e n c e r o o m á s p a s o s ” . P a r a este p r o p ó s ito se p u e d e u s a r el
s im b o lo = > . Asi:

1. a = > a p a r a c u a lq u ie r c a d e n a a . y
2. Si a => p y p => y. e n to n c e s a => y.

D el m i s m o m o d o se p u e d e u s a r => p a r a e x p r e s a r " d e riv a e n u n o o m á s p a s o s ” .


D a d a u n a g ra m á tic a G c o n s ím b o lo in ic ia l S , se p u e d e u tiliz a r la re la c ió n =>
p a r a def i ni r L ( G \ el lenguaje generado p o r G. L as c a d e n a s d e L (G ) p u e d e n c o n te n e r
só lo s ím b o lo s te rm in a le s d e G. S e d ic e q u e u n a c a d e n a d e te rm in a le s iv está e n L(G )
si, y só lo si, S= > w\ A la c a d e n a w se le ll a m a frase d e G. D e u n le n g u a je q u e p u e d a
s e r g e n e r a d o p o r u n a g r a m á tic a se d ic e q u e es u n lenguaje independiente deI con­
texto. Si d o s g r a m á tic a s g e n e r a n el m is m o le n g u a je , se d ic e q u e s o n equivalentes.
Si 5 = > a . d o n d e a p u e d e c o n t e n e r n o te rm in a le s , e n to n c e s se d ic e q u e a es u n a
fo rm a d e frase d e G. U n a frase e s u n a f o r m a d e frase sin n o te rm in a le s .

E je m p lo 4 .4 . L a c a d e n a —(id -f- id) e s u n a frase d e la g r a m á tic a (4 .3 ), p o r q u e existe


la d e riv a c ió n

E=> - E => - (E)= > - ( E + E )= > - (¡d + E )= > - (id + id) (4.4)
4.2 G R A M A T IC A S IN D E PE N D IE N T E S DEL C O N T E X T O 173

L as c a d e n a s E . - E . - ( £ ) , . . . , - ( i d + i d) q u e a p a r e c e n en esta d e riv a c ió n son t o ­


d a s fo rm a s d e frases d e esta g ra m á tic a . Se e sc rib e £ = > - ( i d + id ) p a r a in d ic a r q u e
- ( i d 4- id) se p u e d e d e r iv a r d e E.
S e p u e d e d e m o s t r a r p o r in d u c c ió n s o b re la lo n g itu d d e u n a d e riv a c ió n q u e to d a
frase del len g u aje d e la g r a m á tic a (4.3) e s u n a e x p re sió n a r itm é tic a q u e c o m p r e n d e
a los o p e ra d o re s b in a rio s + y *. al o p e r a d o r u n a r io p a ré n te sis y al o p e r a n d o id.
D e m a n e r a s im ila r, se p u e d e d e m o s t r a r p o r in d u c c ió n s o b re la lo n g itu d d e u n a ex ­
p re s ió n a r it m é t ic a q u e t o d a s e s ta s e x p r e s io n e s p u e d e n s e r g e n e r a d a s p o r e s ta g ra ­
m á tic a . A sí. la g ra m á tic a (4 .3 ) g e n e ra p re c is a m e n te el c o n j u n t o d e to d a s las e x p re ­
sio n es a r itm é tic a s q u e c o m p r e n d e n a los b in a rio s + y *, al - u n a rio . a los p a r é n ­
tesis y al o p e r a n d o id. □

En c a d a p a so d e u n a d e riv a c ió n h a y q u e h a c e r d o s eleccio n es. E s n e c e sa rio es­


coger q u é n o te rm in a l se d e b e s u s titu ir y. u n a vez h e c h a esta elecció n , q u é a l te r n a ­
tiv a u sa r p a r a este n o te rm in a l. P o r e je m p lo . la d e riv a c ió n (4.4) del e je m p lo 4 .4 p o ­
d ría c o n t i n u a r d e s d e —( £ + £ ) c o m o sigue

- { E + E ) = > - ( £ + i d ) => - ( i d + ¡d) (4.5)

Se s u stitu y e c a d a n o te rm in a l d e (4.5) p o r el m i s m o la d o d e r e c h o q u e e n el e je m p lo
4 .4 , p e ro el o r d e n d e s u s titu c ió n e s d ife re n te .
P a ra c o m p r e n d e r c ó m o tr a b a ja n a lg u n o s a n a liz a d o re s sin tá c tic o s, h a y q u e c o n ­
s id e ra r d e r iv a c io n e s d o n d e t a n s ó lo el n o te r m in a l d e m á s a la iz q u ie r d a d e c u a l­
q u ie r fo rm a d e frase se s u s titu y a a c a d a paso . D ic h a s d e riv a c io n e s se d e n o m i n a n por
la izquierda. Si a = > p m e d ia n te u n p a so e n el q u e se s u s titu y e el n o te rm in a l m á s a
la iz q u ie rd a d e a , se escrib e u ^ > p . P u e s to q u e la d e riv a c ió n (4 .4 ) e s p o r la iz q u ie rd a ,
se p u e d e e s c rib ir así:

- < £ + * ) = ? - (¡d + £ ) ^ " (¡d + id)

U s a n d o las c o n v e n c io n e s d e n o ta c ió n , t o d o p a s o p o r la iz q u ie rd a se p u e d e escrib ir
wAy=^>w6y. d o n d e w c o n s ta só lo d e te rm in a le s . A —* 8 e s la p ro d u c c ió n a p lic a d a y y
e s u n a c a d e n a d e s ím b o lo s g ra m a tic a le s . P a ra s u b r a y a r el h e c h o d e q u e a d e riv a a (3
p o r m e d io de u n a d e riv a c ió n p o r la iz q u ie rd a , se e sc rib e a=^*p. Si S=>a, e n to n c e s se
d ic e q u e a es u n a fo r m a de fr a s e izquierda d e la g r a m á tic a e n c u e stió n .
A n á lo g a s d e fin ic io n e s se a p lic a n a las d e riv a c io n e s derechas , d o n d e el n o t e r m i ­
nal m á s a la d e r e c h a se s u s titu y e e n c a d a p aso . L a s d e riv a c io n e s d e r e c h a s a m e n u d o
se d e n o m i n a n d e riv a c io n e s canónicas.

A r b o le s d e a n á lis is s in tá c tic o y d e r iv a c io n e s

U n á rb o l d e a n á lis is s in tá c tic o se p u e d e c o n s id e r a r c o m o u n a r e p re s e n ta c ió n g ráfica


d e u n a d e riv a c ió n q u e n o m u e s tr a la e le c c ió n re la tiv a al o r d e n d e s u s titu c ió n . C o m o
se vio e n la secció n 2 .2 , c a d a n o d o in te r io r d e u n á rb o l d e a n álisis s in tá c tic o se e ti­
q u e t a c o n alg ú n n o te rm in a l .4, y q u e lo s h ijo s d e ese n o d o se e tiq u e ta n , d e iz q u ie rd a
a d e re c h a , c o n los s ím b o lo s del la d o d e r e c h o d e la p ro d u c c ió n p o r la c u a l se s u s ti­
tu y ó esta A e n la d e riv a c ió n . L as h o ja s d e l á rb o l d e a n álisis s in tá c tic o se e tiq u e ta n
174 ANALISIS SINTA CTIC O

c o n t e r m in a l e s o n o t e r m in a l e s y, le íd a s d e iz q u ie r d a a d e r e c h a , c o n s ti tu y e n u n a
f o r m a d e frase, lla m a d a el p r o d u c t o o f r o n te r a d e l á rb o l. P o r e je m p lo , e n la figura
4 .2 se m u e s tr a el árb o l d e a n álisis s in tá c tic o p a r a - ( i d + id) in d ic a d o p o r la d e r iv a ­
c ió n (4.4).
P a r a v e r la re la c ió n e n t r e d e r iv a c io n e s y á rb o le s d e a n á lis is s in tá c tic o , c o n s id é ­
rese c u a l q u ie r d e riv a c ió n a i = > a 2= > . . .=> a„. d o n d e a , es u n so lo n o te r m in a l A.
P a r a c a d a f o r m a d e frase a, d e la d e riv a c ió n , se c o n s tr u y e u n á rb o l d e a n á lis is s in ­
tá c tic o c u y o p r o d u c to e s a,. El p ro c e s o es u n a in d u c c ió n s o b re /. P a r a la base, el á r ­
bol p a ra Q| = A es u n so lo n o d o e tiq u e ta d o c o n A. P a r a h a c e r la in d u c c ió n , s u p ó n ­
gase q u e y a se h a c o n s tr u id o u n á rb o l d e a n á lis is s in tá c tic o c u y o p r o d u c to es a, t =
= ViX 2 . . . ( R e c o r d a n d o las c o n v e n c io n e s , c a d a X , e s o u n te rm in a l o u n n o
te r m in a l.) S u p ó n g a s e q u e a , se d e riv a d e a , _ t s u s titu y e n d o Xp q u e es u n n o t e r m i ­
n al. p o r p = Y\ Y 2 . . . Y,. E s d ecir, e n el /-é s im o p a so d e la d e r iv a c ió n , la p ro d u c c ió n
X, —> P se a p lic a a a , _, p a r a d e riv a r a , = X \X 2 . . . X ,- \ PAT,*, . . . A*.
P a ra m o d e la r este p a so d e la d e riv a c ió n , h a y q u e e n c o n t r a r la y -ésim a h o ja p o r
la iz q u ie r d a e n el á rb o l d e a n á lis is s in tá c tic o e n c u rs o . E sta h o ja está e tiq u e ta d a c o n
X ,. A e s ta h o ja se le a s ig n a n r h ijo s , e t i q u e t a d o s c o n Y u Y2. , Y, d e s d e la iz­
q u ie rd a . C o m o c a so esp ecial, si r = 0 . e s d ecir, p = e , e n to n c e s a la y -é sim a h o ja se
le asig n a u n h ijo e t iq u e ta d o c o n € .

E
/ X
E
/ 1X
( E )

E
/ +1X
E
1 1
id id

Eig. 4.2. Arbol d e análisis sintáctico p a ra —(id + id).

E je m p lo 4 .5 . C o n s id é r e s e la d e r iv a c ió n (4.4 ). L a s e c u e n c ia d e á r b o le s d e a n á lis is
s in tá c tic o c o n s tr u id o s a p a r ti r d e e s ta d e r iv a c ió n se m u e s tr a e n la fig u ra 4 .3 . E n el
p r im e r p a so d e la d e r iv a c ió n , E=> — E . P a r a m o d e la r este p a s o , se a ñ a d e n d o s hijos,
e tiq u e ta d o s c o n — y c o n E, a la ra íz E del á rb o l in ic ia l p a r a c r e a r el s e g u n d o á rb o l.
E n el s e g u n d o p a so d e la d e riv a c ió n , - E = > - ( E ) . E n c o n s e c u e n c ia , se a ñ a d e n
tr e s hijos, e tiq u e ta d o s c o n (. E y ). a la h o ja e tiq u e ta d a c o n E d e l s e g u n d o á r b o l p a r a
o b te n e r el te rc e r á rb o l c o n p r o d u c t o -(£ * ). Si se c o n t i n ú a a s í se o b tie n e el á r b o l d e
a n á lis is s in tá c tic o c o m p le to c o m o sex to á rb o l. □

C o m o ya se h a m e n c io n a d o , u n á rb o l d e a n á lis is s in tá c tic o ig n o ra la s v a ria c io n e s


e n el o r d e n e n q u e se s u s titu y e n los s ím b o lo s e n las f o r m a s d e frases. P o r e je m p lo ,
si se c o n t i n u a r a la d e riv a c ió n (4 .4 ) c o m o e n la lín ea (4.5 ), d a ría c o m o re s u lta d o el
4.2 G R A M A TIC A S IN D EPENDIENTES DEL C O N T E X T O 175

\ / \
E
/ I \
( E )

E => E => E
\ / \
E E E
/ 1 \ / 1 \ / 1 \
( E ) ( E ) ( E )
/ 1 \ / 1 \ / 1 \
E + E E + E E + E
é
1 l l
id id id

Fig. 4.3. C o n stru cció n del árbol d e análisis sintáctico a partir d e la derivación (4.4).

m is m o árb o l d e a n álisis s in tá c tic o final d e la fig u ra 4 .3 . T a m b ié n se p u e d e n e lim in a r


e s ta s v a ria c io n e s e n el o rd e n e n q u e se a p lic a n las p r o d u c c io n e s si se c o n s id e r a n ú n i­
c a m e n te d e riv a c io n e s p o r la iz q u ie r d a ( o p o r la d e re c h a ). N o es difícil v e r q u e to d o
árbol d e a n álisis s in tá c tic o tien e a so c ia d o u n a ú n ic a d e riv a c ió n iz q u ie rd a y u n a única
d e riv a c ió n d e re c h a . E n lo q u e sigue, a m e n u d o se h a r á el a n álisis s in tá c tic o p r o d u ­
c ie n d o u n a d e riv a c ió n p o r la iz q u ie r d a o p o r la d e re c h a , s a b ie n d o q u e e n lu g a r d e
esta d e r iv a c ió n s e p o d r ía p r o d u c i r el p r o p i o á r b o l d e a n á lis is s in tá c tic o . S in e m ­
bargo , n o se d e b e s u p o n e r q u e to d a frase tie n e o b lig a to r ia m e n te u n solo á rb o l d e
a n álisis s in tá c tic o o u n a so la d e r iv a c ió n p o r la iz q u ie rd a o p o r la d erech a .

E je m p lo 4 .6 . Se c o n s id e r a d e n u e v o la g r a m á tic a (4 .3 ) d e e x p re s io n e s a ritm é tic a s .


L a frase id + id*id tie n e las d o s c la ra s d e riv a c io n e s p o r la iz q u ierd a:

E => E + E E => E+E


=> id + E = > E+ E*E
=> id + E+E => id + E+E
=> id + ¡d * £ => id + i d+E
=> id + id*id => id f id*id

c o n los d o s á rb o le s d e a n á lis is s in tá c tic o c o r r e s p o n d ie n te s q u e se m u e s tr a n e n la fi­


g u r a 4 .4 . □

O b sé rv e se q u e el á rb o l d e a n á lis is s in tá c tic o d e la figura 4 .4 (a ) refleja la p re c e ­


d e n c ia c o m ú n m e n t e a c e p ta d a d e + y *, m ie n tr a s q u e el á rb o l d e la fig u ra 4 .4 (b ) n o .
E s d e c ir, e s h a b itu a l c o n s id e r a r q u e el o p e r a d o r * tie n e m a y o r p re c e d e n c ia q u e + .
lo c u a l c o r r e s p o n d e al h e c h o d e q u e u n a e x p re s ió n c o m o a + b*c n o r m a l m e n t e se
e v a lu a ría c o m o a + {b+c\ e n lu g a r d e c o m o (a + b)+c.
176 ANALISIS SINTA C TIC O

E E

£
/i\ + £
E/ i x E
£ * £

id
/ I\
£ * £ £
/ I\ + E id
l i
id id
l id
i id

(a) <»»

Fig. 4.4. D o s árboles d e análisis sintáctico p a ra id + id*id.

Ambigüedad
Se d ic e q u e u n a g r a m á tic a q u e p r o d u c e m á s d e u n á rb o l d e a n á lis is s in tá c tic o p a r a
a lg u n a frase e s am bigua. O , d ic h o d e o t r o m o d o , u n a g r a m á tic a a m b ig u a es la q u e
p r o d u c e m á s d e u n a d eriv a ció n p o r la iz q u ie rd a o p o r la d e re c h a p a r a la m is m a frase.
P a r a a lg u n o s tip o s d e a n a liz a d o re s s in tá c tic o s e s p referib le q u e la g r a m á tic a n o sea
a m b ig u a , p u e s si lo fu e ra , n o se p o d r ía d e t e r m i n a r d e m a n e r a e x c lu siv a q u é árb o l
d e a n á lis is s in tá c tic o se le c c io n a r p a r a u n a frase. P a r a a lg u n a s a p lic a c io n e s se c o n s i­
d e r a r á n ta m b ié n los m é to d o s m e d ia n te lo s c u a le s se p u e d a n u tiliz a r c ie rta s g r a m á ­
ticas a m b ig u a s , j u n t o c o n reglas para elim in a r a m b ig ü ed a d es q u e d e s e c h a n á rb o le s
d e a n álisis s in tá c tic o in d e sea b les, d e j a n d o só lo u n á rb o l p a r a c a d a frase.

4 .3 E S C R I T U R A D E U N A G R A M A T I C A

L as g r a m á tic a s s o n c a p a c e s d e d e s c rib ir la m a y o ría , p e r o n o to d a s, d e las s in ta x is de


los le n g u a je s d e p r o g r a m a c ió n . U n a n a liz a d o r léx ico e fe c tú a u n a c a n t i d a d lim ita d a
d e a n álisis s in tá c tic o c o n f o r m e p r o d u c e la s e c u e n c ia d e c o m p o n e n te s léxicos a p a r tir
d e los c a ra c te re s d e e n tr a d a . C ie rta s lim ita c io n e s d e la e n t r a d a , c o m o el r e q u is ito d e
q u e los id e n tific a d o re s se d e c la re n a n t e s d e s e r u tiliz a d o s, n o p u e d e n d e sc rib irse m e ­
d ia n te u n a g r a m á tic a in d e p e n d ie n te d e l c o n te x to . P o r t a n t o , las s e c u e n c ia s d e c o m ­
p o n e n te s léxicos a c e p ta d a s p o r u n a n a l iz a d o r s in tá c tic o f o r m a n u n s u p e r c o n ju n t o
d e u n le n g u a je d e p r o g r a m a c ió n ; las fases p o s te r io r e s d e b e n a n a l i z a r la s a lid a del
a n a liz a d o r s in tá c tic o p a r a g a r a n tiz a r la o b e d ie n c ia a reg las q u e el a n a liz a d o r s in tá c ­
tic o n o c o m p r u e b a . (V é a s e C a p . 6.)
E sta secció n se in ic ia c o n s id e r a n d o la d iv isió n del tr a b a jo e n tr e u n a n a liz a d o r
léxico y u n a n a liz a d o r sintáctico . P u e s to q u e c a d a m é to d o d e a n álisis s in tá c tic o p u e d e
m a n e ja r só lo g r a m á tic a s d e u n a c ie rta fo rm a , q u iz á se d e b a re e sc rib ir la g ra m á tic a
in icial p a r a h a c e rla a n a liz a b le p o r el m é t o d o elegido. A m e n u d o se p u e d e n c o n s tr u ir
g r a m á tic a s a d e c u a d a s p a r a e x p re s io n e s u tiliz a n d o la in f o r m a c ió n a c e r c a d e la aso-
c ia tiv id a d y la p r e c e d e n c ia , c o m o e n la se c c ió n 2 .2 . A q u í, se c o n s i d e r a n tr a n s f o r ­
m a c io n e s ú tiles p a r a reescrib ir g r a m á tic a s y h a c e rla s a p r o p ia d a s p a r a el a n á lis is s in ­
tá c tic o d e s c e n d e n te . E sta secció n c o n c lu y e c o n s id e r a n d o a lg u n a s c o n s tr u c c io n e s d e
los le n g u a je s d e p r o g r a m a c ió n q u e n o p u e d e n s e r d e s c rita s p o r n in g u n a g ra m á tic a .
4.3 ESCRITURA DE U N A GRAM ATICA 177

E x p r e s io n e s r e g u la r e s, o g r a m á tic a s in d e p e n d ie n te s d el c o n te x to

T o d a c o n s tr u c c ió n q u e se p u e d a d e s c rib ir m e d ia n te u n a e x p re s ió n re g u la r ta m b ié n
se p u e d e d e s c rib ir p o r m e d io d e u n a g r a m á tic a . P o r e je m p lo , la e x p re s ió n reg u lar
(a\b)*abb y la g ra m á tic a

A q —» (lA o | b A o j íl 4 i
A , -+ bA 2
A 2 —* bAy
A 3 —> €

d e s c rib e n el m is m o len g u aje, el c o n j u n t o d e c a d e n a s d e c a ra c te re s a y b q u e te r m i­


n a n e n abb.
S e p u e d e c o n v e r t i r d e m a n e r a m e c á n i c a u n a u t ó m a t a f in i to n o d e t e r m i n i s t a
( A F N ) e n u n a g r a m á tic a q u e g e n e re el m is m o le n g u a je re c o n o c id o p o r el A F N . La
g r a m á tic a a n te r io r se c o n s tr u y ó a p a r ti r d e l A F N d e la fig u ra 3 .2 3 u tiliz a n d o la si­
g u ie n te c o n s tru c c ió n : p a r a c a d a e s ta d o i d e l A F N , créese u n s ím b o lo n o te rm in a l A,.
Si el e s ta d o i tie n e u n a tr a n s i c ió n al e s ta d o j c o n el s í m b o l o d e e n t r a d a a , i n t r o ­
d ú z c a s e la p ro d u c c ió n A, -*■ aAj. Si el e s ta d o i v a al e s ta d o j c o n la e n t r a d a € , i n ­
tr o d ú z c a s e la p r o d u c c i ó n A¡ —> A ,. S i i es u n e s t a d o d e a c e p t a c i ó n , in t r o d ú z c a s e
A , —►€ . Sj / es el e s ta d o d e in ic io , h a c e r d e A , el s ím b o lo in ic ia l d e la g ra m á tic a .
P u e s to q u e t o d o c o n j u n t o re g u la r es u n le n g u a je in d e p e n d ie n te del c o n te x to , es
ra z o n a b le p r e g u n ta r: ¿ P o r q u é u tiliz a r e x p re s io n e s reg u la re s p a r a d e f in ir la sin ta x is
lexicográfica d e u n le n g u a je ? E x iste n v a ria s razo n es.

1. L as reglas lexicográficas d e u n le n g u a je a m e n u d o s o n b a s ta n te sen cillas, y p a ra


d e s c rib irla s n o se n e c e s ita u n a n o ta c ió n ta n p o d e r o s a c o m o la s g ra m á tic a s.

2. L a s e x p re s io n e s reg u la re s p o r lo g e n e ra l p r o p o r c io n a n u n a n o ta c ió n m á s c o n ­
cisa y fácil d e e n t e n d e r p a r a los c o m p o n e n te s léx ico s q u e u n a g ra m á tic a .

3. S e p u e d e n c o n s tr u i r a u t o m á t i c a m e n t e a n a liz a d o r e s léx ico s m á s e fic ie n te s a p a r ­


ti r d e e x p re s io n e s reg u la re s q u e d e g r a m á tic a s a rb itra ria s.

4. S e p a ra r la e s tr u c tu r a s in tá c tic a d e u n le n g u a je e n p a rte s léx icas y n o léxicas p ro ­


p o r c io n a u n a f o r m a c o n v e n ie n te d e m o d u la r iz a r la e ta p a in icial d e u n c o m p i ­
la d o r en d o s c o m p o n e n te s d e t a m a ñ o ra z o n a b le .

N o ex isten n o r m a s fijas e n c u a n t o a q u é p o n e r e n las reg las lexicográficas, e n vez


d e las reglas sin tácticas. L as e x p re s io n e s reg u la re s s o n m u y ú tiles p a r a d e s c rib ir la
e s tr u c tu r a d e las c o n s tr u c c io n e s léxicas, c o m o id e n tific a d o re s . c o n s ta n te s , p a la b ra s
clave, e tc é te ra . L as g ra m á tic a s , p o r o t r a p arte , son m u y ú tiles p a r a d e s c rib ir e s tr u c ­
tu r a s a n id a d a s , c o m o p a ré n te s is e q u ilib ra d o s , c o n c o r d a n c ia d e las p a la b r a s c lav e b e­
g in y en d . los c o rr e s p o n d ie n te s if-t h e n -e ls e . e tc é te ra . C o m o y a se h a s e ñ a la d o , estas
e s tr u c tu r a s a n id a d a s n o se p u e d e n d e s c rib ir c o n e x p re s io n e s regulares.

C o m p ro b a ció n d el le n g u a je g e n e r a d o p or u n a g ra m á tica

A u n q u e los d is e ñ a d o r e s d e c o m p ila d o r e s r a r a vez lo h a c e n p a r a u n a g r a m á tic a c o m ­


p le ta d e u n le n g u a je d e p r o g r a m a c ió n , es i m p o r t a n t e s e r c a p a z d e r a z o n a r q u e un
c o n j u n t o d a d o d e p ro d u c c io n e s g e n e ra u n le n g u a je d e te r m in a d o . L as c o n s tr u c c io ­
178 ANALISIS SIN TA CTIC O

n e s p ro b le m á tic a s se p u e d e n e s tu d ia r e s c rib ie n d o u n a g r a m á tic a a b s tr a c ta c o n c is a y


e s tu d ia n d o el le n g u a je q u e g e n e ra . M ás a d e la n te se c o n s tr u ir á u n a d e estas g r a m á ­
ticas p a r a los co n d ic io n a le s.
U n a p r u e b a d e q u e u n a g r a m á tic a O g e n e r a u n le n g u a je L tie n e d o s p a rte s: se
d e b e d e m o s t r a r q u e to d a c a d e n a g e n e r a d a p o r G e s tá e n L , y lo o p u e s to , q u e to d a
c a d e n a d e L p u e d e d e h e c h o s e r g e n e r a d a p o r G.

E je m p lo 4 .7 . C o n s id é re s e la g r a m á tic a (4.6)

S - » (S ) S | € (4.6)

Al p r in c ip io p u e d e n o r e s u lta r e v id e n te , p e r o esta s im p le g r a m á tic a g e n e ra to d a s las


c a d e n a s d e p a ré n te sis e q u ilib r a d o s y só lo e s ta s c a d e n a s. P a r a c o m p r o b a r lo , p r im e r o
se d e m o s tr a r á q u e to d a frase d e riv a b le d e S está e q u ilib r a d a , y d e s p u é s , q u e to d a
c a d e n a e q u ilib r a d a es d e r iv a b le d e 5 . P a r a d e m o s t r a r q u e to d a frase d e r iv a b le d e S
está e q u ilib r a d a , se usa u n a p r u e b a in d u c tiv a s o b re el n ú m e r o d e p a s o s d e u n a d e ­
riv a c ió n . P a ra el p a so base, se o b s e rv a q u e la ú n ic a c a d e n a d e te rm in a le s d e riv a b le
d e S e n u n p a s o es la c a d e n a vacía, q u e s in d u d a e s tá e q u ilib ra d a .
A h o ra , s u p ó n g a s e q u e to d a s la s d e riv a c io n e s d e m e n o s d e n p a s o s p r o d u c e n fra ­
ses e q u ilib r a d a s y c o n s id é re s e u n a d e riv a c ió n p o r la iz q u ie r d a d e e x a c ta m e n te n p a ­
sos. D ic h a d e riv a c ió n d e b e te n e r la fo rm a

5 =>(5)5 (a)S (x)y


L as d e riv a c io n e s d e x e y a p a r tir d e S o c u p a n m e n o s d e n p aso s, d e m o d o q u e , p o r
la hipó tesis d e in d u c c ió n , .v e y e s tá n e q u ilib ra d a s . P o r ta n to , la c a d e n a (x ) y d e b e
e s ta r e q u ilib ra d a .
S e h a d e m o s t r a d o asi q u e c u a lq u ie r c a d e n a d e riv a b le d e S está e q u ilib r a d a . A
c o n tin u a c ió n se d e b e d e m o s t r a r q u e to d a c a d e n a e q u ilib r a d a es d e r iv a b le d e S . P a ra
h acerlo , se u tiliz a in d u c c ió n so b re la lo n g itu d d e u n a c a d e n a . P a r a el p a s o base, la
c a d e n a v acía e s d e riv a b le d e 5 .
A h o ra , s u p ó n g a s e q u e to d a c a d e n a e q u ilib r a d a d e lo n g itu d m e n o r q u e 2 n es de-
riv a b lc d e S y c o n s id é re s e u n a c a d e n a e q u ilib r a d a w d e lo n g itu d 2 n, n ^ 1. S in d u d a .
w c o m ie n z a c o n u n p a ré n te s is iz q u ie rd o . S ea (x) el p re fijo m á s c o r t o d e w q u e te n g a
u n n ú m e r o igual d e p a ré n te s is iz q u ie rd o s y d e re c h o s. E n to n c e s w* se p u e d e escrib ir
(A)y. d o n d e t a n t o x c o m o y e s tá n e q u ilib ra d o s . P u e s to q u e x e y s o n d e lo n g itu d
m e n o r q u e 2//. s o n d e riv a b le s d e S p o r la h ip ó te s is d e in d u c c ió n . P o r t a n t o , se p u e d e
e n c o n t r a r u n a d e riv a c ió n d e la fo rm a

S => { S )S = > ( a ) 5 => (x)v

lo c u a l d e m u e s tr a q u e w = {x )y ta m b ié n es d e riv a b le d e S. □

S u p r e s ió n d e la a m b ig ü ed a d

A veces, u n a g ra m á tic a a m b ig u a se p u e d e re c sc rib ir p a r a e lim in a r la a m b ig ü e d a d .


C o m o e je m p lo , se e l im i n a r á la a m b ig ü e d a d d e la sig u ie n te g r a m á tic a c o n “e ls e a m ­
b ig u o":
4.3 ESCRITURA DF U N A G R A M A T IC A 179

prop —> if ex p r th e n prop


if ex p r th e n prop e ls e prop (4.7)
o tra

A q u í, o t r a r e p re s e n ta c u a lq u ie r o tr a p ro p o s ic ió n . D e a c u e r d o c o n esta g r a m á tic a , la
p ro p o s ic ió n c o n d ic io n a l c o m p u e s ta

if th e n 5 , e lse if E 2 th e n S 2 e lse Sy

tien e el árb o l d e análisis s in tá c tic o q u e se m u e stra e n la figura 4.5. La g ra m á tic a (4.7)


es a m b ig u a , p u e s to q u e la c a d e n a

if E ) th e n if E \ th e n .S| e lse S 2 (4.8)

tie n e los d o s a rb o le s d e a n á lis is s in tá c tic o q u e se m u e s tr a n en la llg u ra 4.6.

Prop

if expr th e n prop e ls e p ro p

ZA ZA
if

Fig. 4.5. A rbol d e análisis sintáctico para la proposición condicional.

prop

if

prop th e n p ro p e ls e p ro p

ZA ZA ZA
El Si S2
prop

if expr th e n prop e ls e p ro p

^ / / \ \ e
if expr th e n prop

ZA ZA
e 2 s ,

F ig . 4 .6 . D o s árboles d e análisis sintáctico para un a frase am bigua.


180 A N A L IS IS S IN T A C T IC O

E n to d o s los le n g u a je s d e p r o g r a m a c ió n c o n p ro p o s ic io n e s c o n d ic io n a le s d e esta
fo rm a , se p refiere el p r im e r á rb o l d e a n á lis is s in tá c tic o . L a regla g e n e ra l es, “ e m p a ­
re ja r c a d a e ls e c o n e l th e n s in e m p a r e j a r a n t e r i o r m á s c e r c a n o ”. E sta regla p a r a eli­
m i n a r a m b ig ü e d a d e s se p u e d e in c o r p o r a r d ir e c ta m e n te a la g r a m á tic a . P o r e jem p lo ,
se p u e d e reescrib ir la g r a m á tic a (4 .7 ) c o m o la sig u ie n te g r a m á tic a n o a m b ig u a . La
id e a es q u e u n a p ro p o s ic ió n q u e a p a re z c a e n tr e u n th e n y u n e l s e d e b e e s ta r “e m ­
p a r e ja d a ” ; es d e c ir, n o d e b e t e r m i n a r c o n u n th e n s in e m p a r e j a r s e g u id o d e c u a l ­
q u ie r p ro p o sició n , p o r q u e e n to n c e s el e ls e estaría o b lig a d o a c o n c o r d a r c o n este th en
n o e m p a r e ja d o . U n a p ro p o s ic ió n e m p a r e ja d a e s o u n a p ro p o s ic ió n ¡f-th e n -e ls e q u e
n o c o n te n g a p ro p o s ic io n e s sin e m p a r e ja r o c u a lq u ie r o t r a clase d e p ro p o s ic ió n n o
c o n d ic io n a l. A sí, se p u e d e u tiliz a r la g ra m á tic a

prop - » p r o p - em parejada
| p r o - n o -e m p a reja d a
p ro p -em p a reja d a —> i f e x p r th e n p ro p -e m p a reja d a e l s e p ro p -em p a reja d a
| o tr a ( 4 .9 )
p r o p -n o -e m p a re ja d a —►i f e x p r th e n prop
| i f e x p r th e n p ro p -e m p a reja d a e l s e p r o p -n o -e m p a re ja d a

E sta g r a m á tic a g e n e ra el m i s m o c o n j u n t o d e c a d e n a s q u e (4.7 ), p e r o p e rm ite sólo


u n a n álisis s in tá c tic o p a r a la c a d e n a (4.8), es d ecir, el q u e aso cia c a d a e l s e c o n el
th e n s in e m p a r e ja r a n te r io r m á s c e rc a n o .

E lim in a c ió n d e la r e c u r sió n p or la izq u ierd a

U n a g r a m á tic a es recursiva p o r ía izquierda si tie n e u n n o te rm in a l A tal q u e existe


u n a d e r iv a c ió n A = > A a p a r a a lg u n a c a d e n a a. L o s m é to d o s d e a n á lis is s in tá c tic o
d e s c e n d e n te n o p u e d e n m a n e ja r g r a m á tic a s re c u rs iv a s p o r la iz q u ie rd a , así q u e se
n ecesita u n a tr a n s f o r m a c ió n q u e e lim in e la r e c u r s ió n p o r la iz q u ie rd a . E n la sección
2 .4 se a n a liz ó la r e c u r s ió n s im p le p o r la iz q u ie r d a , d o n d e h a b ía u n a p ro d u c c ió n de
la fo rm a A -> A a . A q u í se e s tu d ia el c a so g e n e ra l. E n la secció n 2 .4 se d e m o s tr ó q u e
el p a r d e p r o d u c c io n e s re c u rs iv a s p o r la iz q u ie r d a A - > .4 a 113 p o d ía n s u stitu irs e por
las p ro d u c c io n e s n o re c u rs iv a s p o r la iz q u ie rd a

A fiA '
A ' - » a /Y | e

sin m o d if ic a r el c o n j u n t o d e c a d e n a s d e riv a b le s d e A . E sta regla y a es su fic ie n te en


m u c h a s g ra m á tic a s.

E je m p lo 4 .8 . C o n s id é re s e la sig u ie n te g r a m á tic a p a r a e x p re s io n e s a ritm é tic a s .

E-+E + T | T
T-+T*F\F (4 .10)
F ( E ) | id

E l im i n a n d o la recursión directa p o r la izquierda (p r o d u c c io n e s d e la fo rm a A A a)


a las p ro d u c c io n e s d e E y d e s p u é s a las d e T. se o b tie n e
4.3 ESCRITURA D E U N A G R A M A T IC A 181

E-+TE
+ TE |c
T -+ F T (4.11)
T -> * F T | €
F - * ( E ) | id □

I n d e p e n d ie n te m e n te d e c u á n t a s p ro d u c c io n e s d e .4 e x ista n , se p u e d e e lim in a r de
ellas la re c u rs ió n d ire c ta p o r la iz q u ie r d a m e d ia n te la sig u ie n te té cn ica. P r im e r o se
a g r u p a n las p ro d u c c io n e s d e .4 e n la fo rm a

A .4 a , | .4 a : | . . . | .4a,„ | p , | (3: | . . . | P„
d o n d e n in g u n a P, c o m ie n z a c o n u n a A . D e s p u é s se s u s titu y e n las p ro d u c c io n e s de
A por

A -» M ' P: A ' • • • P„ A 1
V -» a ,/T a2A' • • • a,„ A ' |

El n o te rm in a l A g e n e r a las m i s m a s c a d e n a s q u e a n te s , p e ro y a n o es re c u rs iv o p o r
la iz q u ie r d a . E ste p r o c e d i m i e n t o e l i m i n a t o d a la r e c u r s ió n i n m e d i a t a p o r la iz ­
q u ie r d a d e las p ro d u c c io n e s A y A ' ( s u p o n ie n d o q u e n in g ú n a, es € ) , p e r o n o eli­
m in a la re c u rs ió n p o r la iz q u ie r d a q u e in c lu y a d e riv a c io n e s d e d o s o m á s paso s. P o r
e je m p lo , c o n sid é re se la g ra m á tic a

aZ A - <4 - , 2 >

El n o te rm in a l S es re c u rs iv o p o r la iz q u ie r d a , p o r q u e S =>Aa =>Sda. p e r o n o es
re c u rsiv o in m e d ia to p o r la iz q u ie rd a .
El a lg o ritm o 4 .1 , e lim in a r á s is te m á tic a m e n te la re c u rsió n p o r la iz q u ie rd a d e u n a
g ra m á tic a . S ie m p re fu n c io n a si la g ra m á tic a n o tien e ciclos (d e riv a c io n e s d e la fo rm a
A =>A) o p ro d u c c io n e s € ( p r o d u c c io n e s d e la f o r m a A -+ c ). L o s ciclos, al igual
q u e la s p r o d u c c i o n e s € , se p u e d e n e l i m i n a r s i s t e m á t i c a m e n t e d e u n a g r a m á t i c a
(v é a n s e E jercicios 4 .2 0 y 4 .2 2 ).

A lg o ritm o 4 .1 . E lim in a c ió n d e la re c u rs ió n p o r la izq u ierd a.

Entrada. L a g r a m á tic a G s in c ic lo s ni p ro d u c c io n e s € .

Salida. U n a g r a m á tic a e q u iv a le n te s in re c u rs ió n p o r la iz q u ie rd a .
1. O rd én en se los n o term in ales en u n o rd e n .4,. A 2 , • • • • A n.
2. for i : = 1 to n do
begin
for / : = I to / — 1 do
sustituir c a d a p ro d u cció n d e la fo rm a A, -* A ff
p o r las p ro d uccio nes A, 5 ,y 1b 2y | • • • |
d o n d e A¡ - * 8, | 621. . . | 5* son todas
las p ro d u ccio n es actuales d e A/,
e lim in a r la recursividad in m e d ia ta p o r la izq uierd a e n tre las p ro d uccio nes d e A,
end

Fig. 4.7. A lgoritm o p a ra e lim in a r la recursividad p o r la izqu ierd a d e u n a gram ática.


182 A N A LISIS SINTA CTIC O

M étodo. A p liq ú e se el a lg o r itm o d e la fig u ra 4 .7 a G. O b sé rv e se q u e la g r a m á tic a sin


re c u rsiv id a d p o r la iz q u ie r d a re s u lta n te p u e d e te n e r p ro d u c c io n e s € . □

La ra z ó n p o r la q u e el p r o c e d im ie n to d e la figura 4 .7 f u n c io n a es q u e d e s p u é s d e
la (/ - 1 )-é s im a it e r a c ió n d e l la z o fo r e x t e r n o e n el p a s o 2 , c u a l q u i e r p r o d u c c i ó n
d e la fo rm a A i - > A ¡a, d o n d e k < d e b e te n e r l > k . C o m o re s u lta d o , e n la sig uiente
ite ra c ió n , el la z o in te r n o (so b re j ) a u m e n t a p ro g re s iv a m e n te el lím ite in fe rio r e n m
e n c u a lq u ie r p ro d u c c ió n A -> A„,a. h a s ta q u e se te n g a m > i . E n to n c e s , e l i m i n a r la
re c u rs ió n d ire c ta p o r la iz q u ie rd a d e las p r o d u c c io n e s d e A, h a c e q u e m sea m a y o r
q u e i.

E jem p lo 4 .9 . A plicación d e este p r o c e d im ie n to a la g ra m á tic a (4.12). D esd e el p u n to


d e v ista té c n ic o , el a lg o ritm o 4.1 n o s ie m p r e fu n c io n a , d e b i d o a la p ro d u c c ió n e .
p e r o e n este c a so la p ro d u c c ió n A —> € re s u lta s e r in o fen siv a.
S e o r d e n a n los n o te rm in a le s 5 . A. N o h a y re c u rs ió n d ire c ta p o r la iz q u ie r d a e n ­
tre las p r o d u c c io n e s d e S, d e m o d o q u e n o o c u r r e n a d a d u r a n t e el p a s o 2 p a r a el
c a so / = I. P a ra i = 2. se s u s titu y e n las p r o d u c c io n e s d e S e n A S d p a r a o b te n e r
las sig u ie n tes p ro d u c c io n e s d e A.

A -+ A c I A a d I h d í c

E lim in a n d o la re c u rs ió n d ire c ta p o r la iz q u ie r d a e n t r e las p r o d u c c io n e s d e A. se o b ­


tie n e la sig u ie n te g ra m á tic a .

S - > -Aa | h
A - > bdA ' | A'
A ' - > cAf | adA ' | c rj

F a c to r iz a c ió n p or la izq u ierd a

1.a factorización p o r la iz q u ie rd a es u n a tr a n s fo rm a c ió n g ra m a tic a l útil p a r a p ro d u c ir


u n a g ra m á tic a a d e c u a d a p a ra el análisis s in tá c tic o p red ictivo . La idea básica es q u e
c u a n d o n o está claro cuál d e d o s p ro d u c c io n e s a lte rn a tiv a s u tiliz ar p a r a a m p lia r u n
n o te rm in a l A . se p u e d e n reescrib ir las p ro d u c c io n e s d e A p a r a re tra s a r la decisión
hasta h a b e r visto lo suficiente d e la e n t r a d a c o m o p a ra eleg ir la o p c ió n correcta.
P o r e je m p lo , si se tie n e n las d o s p ro d u c c io n e s

prop - > i f expr th e n prop e ls e prop


i f expr th e n prop

al v e r el c o m p o n e n te léxico d e e n t r a d a if. n o se p u e d e s a b e r d e in m e d ia t o q u é p r o ­
d u c c ió n eleg ir p a r a e x p a n d ir prop. E n g en eral, si A —►a p i | a p 2 s o n d o s p r o d u c c io ­
n e s d e A y la e n t r a d a c o m ie n z a c o n u n a c a d e n a n o v acia d e r iv a d a d e a . n o se sabe
si e x p a n d ir A a a P , o a a p : . S in e m b a r g o , se p u e d e re tra s a r la d e c is ió n e x p a n d ie n d o
A a a . 4 \ E n to n c e s , d e s p u é s d e v e r la e n t r a d a d e r iv a d a d e a , se p u e d e e x p a n d i r A ' a
(3i o a p 2- Es d ecir, fa c to riz a d a s p o r la iz q u ie r d a , las p r o d u c c io n e s o rig in a le s se c o n ­
v ie rte n en
4.3 ESCRITURA DE U N A G R A M A T IC A 183

A lg o r itm o 4 .2 . F a c to riz a c ió n p o r la iz q u ie r d a d e u n a g ra m á tic a .

E ntrada. L a g ra m á tic a G.
Salida. U n a g ra m á tic a e q u iv a le n te fa c to riz a d a p o r la iz q u ie rd a .

M étodo. P a ra c a d a n o te r m in a l A , e n c u é n tr e s e el p re fijo a m á s la rg o c o m ú n a dos


o m á s d e s u s a l t e r n a t i v a s . Si a # € , e s d e c ir , e x is te u n p r e f ijo c o m ú n n o triv ia l,
su stitu y a n se to d a s las p r o d u c c io n e s d e -4. A —►<xpi | a p 2 ¡ • • • | «P/» i Y- d o n d e y r e p re ­
s e n ta to d a s las a lte r n a tiv a s q u e n o c o m ie n z a n c o n a . p o r

A -+ < l 4' |y
A' - p , | p 2 1. . . | p„

A q u í. A ' es u n n u e v o n o te rm in a l. A p lic a r r e p e tid a m e n te e s ta tr a n s f o r m a c ió n h asta


q u e n o h a y a d o s a lte r n a tiv a s p a r a u n n o te rm in a l c o n u n p re fijo c o m ú n .

E je m p lo 4 .1 0 . L a sig u ie n te g r a m á tic a r e s u m e el p r o b le m a del e l s e a m b ig u o :

P - * iE iP | iE tP eP | a
( 4. 13)
E -* b
A q u í, / . / y e re p re s e n ta n if. th e n y e ls e ; E y P r e p r e s e n ta n “e x p r e s ió n " y “ p ro p o s i­
c ió n " . F a c to riz a d a p o r la iz q u ie rd a , e s ta g r a m á tic a se c o n v ie r te en:

P iE tP F | a
F -> e P |c (4 .14)
E -* b

Así, se p u e d e e x p a n d ir P a iE tP F c o n la e n t r a d a /. y e s p e ra r h a s ta q u e iE tP h a y a
a p a re c id o p a r a d e c id ir si e x p a n d ir F a e P o a € . P o r s u p u e s to , las g r a m á tic a s ( 4 . 13)
y (4 .1 4 ) s o n a m b ig u a s , y c o n la e n t r a d a e. n o está c la ro q u é a lte r n a tiv a d e P' se d e ­
b ería elegir. El e je m p lo 4 .1 9 a n a liz a u n a m a n e r a d e s o lu c io n a r este d ile m a .

C o n s tr u c c io n e s d e le n g u a je s n o in d e p e n d ie n te s d e l c o n te x to

N o d e b e s o r p r e n d e r q u e a lg u n o s le n g u a je s n o p u e d a n s e r g e n e r a d o s p o r n in g u n a
g ra m á tic a . D e h e c h o , u n a s c u a n t a s c o n s tr u c c io n e s s in tá c tic a s d e m u c h o s len g u ajes
d e p r o g r a m a c ió n n o se p u e d e n e s p e c ific a r u tiliz a n d o ta n sólo g ra m á tic a s . E n esta
secció n se in tr o d u c e n a lg u n a s d e estas c o n s tr u c c io n e s u s a n d o le n g u a je s a b s tra c to s
sen cillos p a r a ilu s tr a r las d ific u lta d e s.

E je m p lo 4 . 1 1. C o n s id é re s e el le n g u a je a b s tr a c to L , = {wov | n* está en (a | /?)*}. L {


c o n s ta d e to d a s las p a la b ra s c o m p u e s ta s p o r u n a c a d e n a re p e tid a d e carac teres a y h
s e p a r a d o s p o r u n a c. c o m o aabcaab. S e p u e d e d e m o s t r a r q u e este le n g u a je n o es
in d e p e n d ie n te del c o n te x to . E ste le n g u a je r e s u m e el p r o b le m a d e a s e g u ra r q u e los
id e n tific a d o re s se d e c la re n a n te s d e su u s o en u n p r o g r a m a . E s d ecir, la p r im e r a w
d e h x ’h * r e p re s e n ta la d e c la r a c ió n d e u n id e n tif ic a d o r w. L a s e g u n d a w r e p re s e n ta su
u so . M ie n tr a s q u e d e m o s tr a r lo está m á s a llá d e l p r o p ó s ito d e este lib ro , la falta d e
in d e p e n d e n c ia d e l c o n t e x t o d e L \ im p lic a d i r e c t a m e n t e la n o in d e p e n d e n c ia del
c o n te x to d e le n g u a je s d e p r o g r a m a c ió n c o m o A L G O L y P ascal, q u e exigen d ecía-
184 ANALISIS SIN TA CTIC O

ra c ió n d e los id e n tific a d o re s a n t e s d e s u u s o , y q u e a d m ite n id e n tific a d o re s d e c u a l­


q u ie r lo n g itu d .
P o r esta ra z ó n , u n a g r a m á tic a p a r a la s in ta x is d e A L G O L o P ascal n o especifica
los c a ra c te re s e n u n id e n tific a d o r, s in o q u e to d o s los id e n tific a d o re s se re p re s e n ta n
en la g ra m á tic a m e d ia n te u n c o m p o n e n t e léx ico c o m o id. E n u n c o m p ila d o r p a r a
u n le n g u a je d e este ti p o , la fase d e a n á lis is s e m á n t i c o c o m p r u e b a si lo s id e n tific a -
d o r e s h a n s id o d e c la r a d o s a n te s d e su u so. □

E je m p lo 4 .1 2 . El len g u aje L 2 = {anb n'c"(f” | n ^ 1 y m ^ 1} n o e s in d e p e n d ie n te


del c o n te x to . E s d ecir. L 2 c o n s ta d e c a d e n a s e n el le n g u a je g e n e r a d o p o r la e x p re sió n
reg u lar a*b*c*d* tales q u e lo s n ú m e r o s d e a y e s o n iguales, lo m i s m o q u e los n ú ­
m e ro s d e b y d. (R e c u é rd e s e q u e a” sig n ifica a e sc rita n veces.) L 2 r e s u m e el p r o ­
b le m a d e c o m p r o b a r si el n ú m e r o d e p a r á m e tr o s fo rm a le s e n la d e c la r a c ió n d e u n
p r o c e d i m ie n t o c o in c id e c o n el n ú m e r o d e p a r á m e t r o s a c tu a le s e n u n u s o d e este
p r o c e d im ie n to . E s d e c ir. an y b m p o d r ía n r e p r e s e n ta r las listas d e p a r á m e tr o s for-
m á le s e n d o s p r o c e d i m ie n t o s c o n n y ni a r g u m e n to s , r e s p e c tiv a m e n te . E n to n c e s ,
<•" y d m r e p r e s e n ta n la s lista s d e p a r á m e t r o s re a le s e n ll a m a d a s a d ic h o s p r o c e d i­
m ie n to s .
D e n u e v o , se o b s e rv a q u e la s in ta x is típ ic a d e las d e fin ic io n e s y u so s d e p ro c e ­
d im ie n t o s n o se o c u p a d e c o n t a r el n ú m e r o d e p a r á m e tr o s . P o r e je m p lo , la p r o p o ­
sició n c a l l e n u n le n g u a je del ti p o F O R T R A N se p o d r ía d e scrib ir
prop - > c a li id (lista -e x p r)
Usta-expr -* lisia -exp r, expr
| expr
c o n las p r o d u c c i o n e s a d e c u a d a s p a r a exp r. G e n e r a l m e n t e se c o m p r u e b a si el n ú ­
m e r o d e p a r á m e tr o s a c tu a le s e n la lla m a d a es c o r r e c to d u r a n t e la fase d e análisis
s e m á n tic o . □

E jem p lo 4 .1 3 . El len g u aje Ly = {anf f c n | n > 0}. es d ecir, c a d e n a s e n L(a*b*c*) c o n


el m is m o n ú m e r o d e c a ra c te re s a. b y c, n o es in d e p e n d ie n te del c o n te x to . U n e je m ­
p lo d e u n p r o g r a m a q u e in c lu y e ¿3 e s el sig u ie n te . L os te x to s d e tip o g rafía u tiliz an
cursivas d o n d e lo s te x to s c o r r ie n te s u tiliz an el s u b r a y a d o . Al c o n v e r tir u n a rc h iv o
d e te x to d e s tin a d o a im p r im ir s e e n u n a im p r e s o r a d e lín e a s e n te x to a d e c u a d o p a r a
u n d is p o s itiv o d e f o to c o m p o s ic ió n , h a y q u e s u s t it u ir la s p a la b r a s s u b r a y a d a s p o r
cursivas. U n a p a la b ra s u b r a y a d a es u n a c a d e n a d e letras s e g u id a d e u n m is m o n ú ­
m e r o d e re tro c e so s (c a ra c te re s d e b a c k s p a c e d e A S C II) y d e u n n ú m e r o ig u a l d e
c a ra c te re s d e s u b r a y a d o . Si se c o n s id e r a a c o m o u n a le tra, b c o m o el c a r á c te r d e
re tro c e so y c c o m o el c a r á c te r d e s u b r a y a d o , el le n g u a je L y re p r e s e n ta p a la b ra s s u ­
b ra y a d a s. L a c o n c lu s ió n es q u e n o se p u e d e u tiliz a r u n a g r a m á tic a p a r a d e s c rib ir
p a la b ra s s u b r a y a d a s d e esta fo rm a . P o r o t r a p a rte , si se re p r e s e n ta u n a p a la b r a s u ­
b r a y a d a m e d i a n t e u n a s e c u e n c ia d e tr ip le s le tr a - r e tr o c e s o - s u b r a y a d o , e n t o n c e s se
p u e d e n r e p r e s e n ta r la s p a la b ra s s u b r a y a d a s c o n la e x p re s ió n re g u la r (abe)*. □

E s in te r e s a n te o b s e r v a r q u e le n g u a je s m u y sim ila re s a L \, L 2 y L y s o n in d e p e n ­
d ie n te s del c o n te x to . P o r e je m p lo , L \ = {w nv* | w e s tá e n (a | b)*}, d o n d e w R rep re­
s e n ta u n a w in v e rtid a , es in d e p e n d ie n te del c o n te x to . S e g e n e ra p o r la g ra m á tic a
4.3 ESCRITURA D E U N A G R A M A T IC A 185

S -+ a S a | b S b | c

El le n g u a je V 2 = {a"b”'c,nd" | n ^ 1 y ni ^ 1} es in d e p e n d ie n te del c o n te x to , c o n la
g ra m á tic a

S aSci ciAci
A - » bA c be

A s im is m o . L " = | n ^ I y m > 1} e s in d e p e n d ie n te d e l c o n te x to , c o n la
g ra m á tic a

S -» AB
A -> a A h | ab
B -> c B J | cd

P o r ú ltim o . L'y = ja"b" | n > I } es in d e p e n d ie n te del c o n te x to , c o n la g ra m á tic a

5 -► a S b | ab

E s c o n v e n ie n te o b s e rv a r q u e L \ e s el típ ic o e je m p lo d e le n g u a je n o d e fin ib le p o r
n in g u n a e x p re s ió n reg u la r. C o m o p r u e b a , s u p ó n g a s e q u e Z /3 fu era el le n g u a je d e fi­
n id o p o r u n a e x p re s ió n reg u la r. A s im is m o , s u p ó n g a s e q u e se p u d ie r a c o n s tr u i r un
A F D D q u e a c e p ta r a L \ . D d e b e te n e r u n n ú m e r o fin ito d e e s ta d o s , p o r e je m p lo k.
C o n s id é re s e la s e c u e n c ia d e e s ta d o s s0, s ,, s 2 s k in tr o d u c id o s p o r D al h a b e r
le íd o € , a. aa ak. E s d ecir, s, es el e s ta d o v is ita d o p o r D al h a b e r le íd o i c a ra c ­
teres a.

camino etiquetado a’ '

Fig. 4.8. A F D D q u e acepta a'b' y a ‘b‘.

P u e s to q u e D só lo tie n e k e s ta d o s d is tin to s , al m e n o s d o s e s ta d o s d e la s e c u e n c ia
% s i. s2 sk d e b e n s e r el m is m o , p o r e je m p lo s , y Sj. D e sd e el e s ta d o .y„ u n a
s e c u e n c ia d e i c a ra c te re s b lleva a D a u n e s ta d o d e a c e p ta c ió n f y a q u e a'b' e s tá en
L y . P e r o e n to n c e s ta m b ié n h a y u n c a m i n o d e s d e el e s ta d o in icial s0 a s¡ y d e a h í a /
e tiq u e ta d o c o n a 'b \ c o m o se m u e s tr a e n la fig u ra 4 .8 . P o r t a n t o , D ta m b ié n a c e p ta
a'b'. q u e n o está e n Z /3, c o n tr a d ic ie n d o el s u p u e s to d e q u e L ’y es el le n g u a je a c e p ­
t a d o p o r D.
C o lo q u ia lm c n te , se d ic e q u e “ u n a u t ó m a t a fin ito n o p u e d e c o n t a r ” , lo c u a l sig­
nifica q u e u n a u t ó m a t a fin ito n o p u e d e a c e p ta r u n le n g u a je c o m o L '3, q u e le exigiría
llev ar la c u e n ta del n ú m e r o d e c a ra c te re s a a n te s d e v e r lo s c a ra c te re s b. A sim is m o ,
se dice q u e “ u n a g ra m á tic a p u e d e llev ar la c u e n ta d e d o s e le m e n to s , p e r o n o d e tres”,
p u e s to q u e c o n u n a g r a m á tic a se p u e d e d e f in ir L'y p e r o n o Ly.
186 ANALISIS SINTA C TIC O

4.4 A N A LISIS SIN TA CTICO D ESC EN D EN TE

En esta secció n se in tr o d u c e n las ¡deas b á sic a s d e l a n á lis is s in tá c tic o d e s c e n d e n te y


se e n s e ñ a a c o n s tr u i r u n a fo rm a e fic ien te s in r e tr o c e s o d e u n a n a liz a d o r s in tá c tic o
d e s c e n d e n te lla m a d a a n a liz a d o r s in tá c tic o p re d ic tiv o . S e d e f in e la clase d e g r a m á ti­
c a s LL( 1). a p a r ti r d e las c u a le s se p u e d e n c o n s tr u i r d e m a n e r a a u t o m á ti c a a n a liz a ­
d o r e s s in tá c tic o s p r e d ic tiv o s . A d e m á s d e f o r m a liz a r el e s tu d i o d e los a n a liz a d o r e s
s in tá c tic o s p re d ic tiv o s d e la secció n 2 .4 . se c o n s id e r a n a n a liz a d o r e s s in tá c tic o s p re ­
d ic tiv o s n o recu rsiv o s. E sta secció n c o n c lu y e c o n u n a n álisis s o b re la re c u p e ra c ió n
d e erro res. L os a n a liz a d o r e s s in tá c tic o s a s c e n d e n te s se e s tu d ia n e n la s se c c io n e s 4.5
a 4.7.

A n á lis is s in tá c tic o p or d e s c e n s o re c u r siv o

S e p u e d e c o n s id e r a r el a n á lis is s in tá c tic o d e s c e n d e n te c o m o u n in t e n to d e e n c o n t r a r
u n a d e riv a c ió n p o r la iz q u ie rd a p a r a u n a c a d e n a d e e n tr a d a . T a m b ié n se p u e d e c o n ­
s id e ra r c o m o u n in t e n to d e c o n s tr u i r u n á rb o l d e a n álisis s in tá c tic o p a r a la e n tr a d a
c o m e n z a n d o d e sd e la ra íz y c r e a n d o lo s n o d o s del á rb o l e n o r d e n p rev io . E n la sec­
c ió n 2 .4 se e s tu d ió el c a so esp ecial del a n á lis is s in tá c tic o p o r d e sc e n so re c u rsiv o , lla­
m a d o a n á lis is s in tá c tic o p red ic tiv o . d o n d e n o se n e c e sita re tro c e so . A h o r a se c o n s i­
d e r a u n a fo rm a g en eral d e a n álisis s in tá c tic o d esc e n d e n te , d e n o m in a d o p o r d escen so
re c u rsiv o , q u e p u e d e in c lu ir retro ceso s, es d e c ir, v a rio s e x á m e n e s d e la e n tr a d a . S in
e m b a r g o , n o h a y m u c h o s a n a liz a d o r e s s in tá c tic o s c o n re tro c e so . E n p a rte , p o r q u e
casi n u n c a se n e c e sita el re tro c e so p a r a a n a liz a r s in tá c tic a m e n te las c o n s tru c c io n e s
d e los le n g u a je s d e p r o g ra m a c ió n . E n c aso s c o m o el a n á lis is s in tá c tic o del len g u aje
n a tu r a l, el re tro c e so t a m p o c o es m u y efic ien te , y se p re fie re n los m é to d o s ta b u la re s,
c o m o el a lg o r itm o d e p r o g r a m a c ió n d i n á m i c a d e l e jercicio 4 .6 3 o el m é t o d o d e E ar-
lev [1 9 70]. V éase e n A h o y U llm a n [1 9 7 2 b ] u n a d e s c rip c ió n d e m é to d o s g e n e ra le s
d e a n á lis is sin tá ctic o .
E n el sig u ie n te e je m p lo , el re tro c e so e s n e c e sa rio , y se su g iere u n a fo rm a d e no
p e r d e r la e n t r a d a c u a n d o tie n e lu g a r el retro ceso .

E je m p lo 4 .1 4 . C o n s id é re s e la g r a m á tic a

S —►cA d
A -* a b \a (4 .15)

y la c a d e n a d e e n t r a d a w = cad. P a r a c o n s tr u i r u n á rb o l d e a n á lis is s in tá c tic o d e s ­


c e n d e n te p a r a esta c a d e n a , p r im e r o se c r e a u n á rb o l f o r m a d o p o r u n s o lo n o d o e ti­
q u e t a d o c o n S . U n a p u n t a d o r a la e n t r a d a a p u n t a a c. el p r i m e r s ím b o lo d e w. D es­
p u é s se u tiliza la p r im e r a p ro d u c c ió n d e S p a r a e x p a n d ir el á rb o l y o b te n e r el árb o l
d e la fig u ra 4.9(a).
Se e m p a r e ja la h o ja s itu a d a m á s a la iz q u ie rd a , e tiq u e ta d a c o n t\ c o n el p r im e r
s ím b o lo d e \\\ y a c o n t in u a c i ó n se a p r o x im a el a p u n t a d o r d e e n t r a d a a a. el s e g u n d o
s ím b o lo d e ir, y se c o n s id e r a la sig u ie n te h o ja e tiq u e ta d a c o n A . E n to n c e s se p u e d e
e x p a n d ir A u tiliz a n d o la p r im e r a a lte r n a tiv a d e A p a r a o b te n e r el á rb o l d e la figura
4 .9 (b ). C o m o y a se tie n e u n a c o n c o r d a n c ia p a r a el s e g u n d o s ím b o lo d e la e n t r a d a se
lleva el a p u n t a d o r d e e n t r a d a a d. el te rc e r s ím b o lo d e la e n t r a d a , y se c o m p a r a d
4.4 ANALISIS SINTA CTIC O D E S C E N D E N T E 187

S S S

c
/IV A J c
/l\A J c
/l\A d

a b a
(a) (b) (c)

Fig. 4 .9 . Pasos en el análisis sintáclico descendente.

c o n la h o ja sig u ie n te , e tiq u e ta d a c o n b . C o m o b n o c o n c u e r d a c o n d , se in d ic a fallo


y se regresa a A p a r a s a b e r si ex iste o t r a a lte r n a tiv a d e A q u e n o se h a y a in te n ta d o ,
p e r o q u e p u e d a d a r lu g a r a u n e m p a r e ja m ie n to .
Al reg resar a A, se d e b e re s ta b le c e r el a p u n t a d o r d e e n t r a d a a la p o sic ió n 2 . a q u e ­
lla q u e te n ía al ir a A p o r p r im e r a vez. lo c u a l sig nifica q u e el p r o c e d im ie n to p a r a A
(a n á lo g o al p r o c e d i m i e n t o p a r a n o t e r m i n a l e s d e la Fig. 2 .1 7 ) d e b e a l m a c e n a r el
a p u n t a d o r a la e n t r a d a e n u n a v a ria b le local. S e i n t e n ta a c o n tin u a c ió n la s e g u n d a
a lte r n a tiv a d e .4 p a r a o b te n e r el á rb o l d e la fig u ra 4.9(c). Se e m p a r e ja la h o ja a con
el s e g u n d o s ím b o lo d e w. y la h o ja d. c o n el te rc e r s ím b o lo . C o m o ya se h a p r o d u ­
c id o u n árb o l d e a n á lis is s in tá c tic o p a r a w. se p a r a y se a n u n c i a el é x ito d e la reali­
z a c ió n c o m p le ta del a n álisis s in tá c tic o . □

U n a g ra m á tic a re c u rsiv a p o r la iz q u ie r d a p u e d e h a c e r q u e u n a n a liz a d o r s in tá c ­


tic o p o r d e s c e n s o re c u rsiv o , in c lu s o u n o c o n re tro c e so , e n tr e en u n lazo in fin ito . Es
d ecir, c u a n d o se i n t e n ta e x p a n d ir .4, p u e d e q u e d e n u e v o se esté in t e n t a n d o e x p a n ­
d ir A s in h a b e r c o n s u m i d o n in g ú n s ím b o lo d e e n tra d a .

A n a liz a d o r e s s in tá c tic o s p red ictiv o s

E n m u c h o s casos, e s c rib ie n d o c o n c u id a d o u n a g r a m á tic a , e lim in a n d o s u re c u rsió n


p o r la iz q u ie rd a y fa c to riz a n d o p o r la iz q u ie r d a la g ra m á tic a re s u lta n te , se p u e d e o b ­
te n e r u n a g ra m á tic a a n a liz a b le c o n u n a n a liz a d o r s in tá c tic o p o r d e s c e n s o re c u rsiv o
q u e n o n e c e site re tro c e so , es d ecir, u n a n a liz a d o r s in tá c tic o p red ic tiv o . c o m o se es­
tu d ió e n la secció n 2.4. P a ra c o n s tr u i r u n a n a liz a d o r s in tá c tic o p re d ic tiv o , se d e b e
c o n o c e r, d a d o el s ím b o lo a c tu a l a d e e n t r a d a y el n o te rm in a l A a e x p a n d ir , c u á l d e
las a lte rn a tiv a s d e p ro d u c c ió n A-> a , ¡ a 2 1. . . | a „ es la ú n ic a a lte r n a tiv a q u e d a lu g a r
a u n a c a d e n a q u e c o m ie n c e c o n a. Es d ecir, la a lte r n a tiv a a p r o p ia d a d e b e s e r d etec-
ta b le c o n só lo v e r el p r im e r s ím b o lo al q u e d a lu g a r. Así se d e te c ta n g e n e ra lm e n te
las c o n s tr u c c io n e s d e (lujo d e c o n tr o l d e la m a y o ría d e los len g u ajes d e p r o g r a m a ­
c ió n , c o n s u s p a la b ra s c lav e d ife re n c ia d o ra s . P o r e je m p lo , si se tie n e n las p ro d u c c io ­
nes

prop —> i f ex p r th e n prop e l s e prop


w h ile expr d o prop
b eg in lista —props end

las p a la b ra s c lav e if. w h ile y b eg in in d ic a n q u é a lte r n a tiv a es la ú n ic a c o n p o sib ilid ad


d e é x ito p a r a e n c o n t r a r u n a p ro p o s ic ió n .
188 A N A LISIS SINTA CTIC O

D ia g r a m a s d e tr a n s ic io n e s p ara a n a liz a d o r e s s in t á c tic o s p r e d ic tiv o s

E n la secció n 2 .4 se e s tu d ió la im p la n ta c ió n d e a n a liz a d o r e s s in tá c tic o s p re d ic tiv o s


m e d ia n te p r o c e d im ie n to s recu rsiv o s, c o m o los d e la fig u ra 2 .1 7 . Igual q u e e n la sec­
c ió n 3.4 se v io q u e u n d ia g r a m a d e tr a n s ic io n e s es u n p la n o d ia g ra m a d e flu jo útil
p a r a u n a n a liz a d o r léxico, se p u e d e c r e a r u n d ia g r a m a d e tra n s ic io n e s c o m o p la n
p a r a u n a n a liz a d o r s in tá c tic o p red ic tiv o .
E n seg u id a se e v id e n c ia n v a ria s d ife re n c ia s e n t r e los d ia g r a m a s d e tra n s ic io n e s
p a r a u n a n a liz a d o r léx ico y p a r a u n a n a liz a d o r s in tá c tic o p re d ic tiv o . E n el c a so d e
u n a n a liz a d o r s in tá c tic o , h a y u n d ia g ra m a p a r a c a d a n o te rm in a l. L as e tiq u e ta s d e
las a ris ta s s o n c o m p o n e n t e s lé x ic o s y n o te r m in a le s . U n a tr a n s ic ió n c o n u n c o m ­
p o n e n t e léx ico ( te r m in a l) s u p o n e q u e se d e b e t o m a r d ic h a tr a n s ic ió n si e s e c o m p o ­
n e n te léxico es el sig u ie n te s ím b o lo d e e n t r a d a . U n a tra n s ic ió n c o n u n n o te rm in a l
A es u n a lla m a d a al p r o c e d im ie n to p a r a A.
P a r a c o n s tr u ir el d ia g r a m a d e tra n s ic io n e s d e u n a n a l iz a d o r s in tá c tic o p re d ic tiv o
a p a r tir d e u n a g r a m á tic a , p r im e r o se d e b e e lim in a r la re c u rs ió n p o r la iz q u ie rd a d e
la g r a m á tic a , y d e s p u é s fa c to riz a r d ic h a g r a m á tic a p o r la iz q u ie rd a . L u eg o , p a r a c a d a
n o te r m in a l A se h a c e lo siguiente:

1. C ré e s e u n e s ta d o in icial y u n e s ta d o final (d e re to rn o ).

2. P a ra c a d a p ro d u c c ió n A —> X \X 2 . . . X„. créese u n c a m i n o d e sd e el e s ta d o inicial


al e s ta d o final, c o n a ris ta s e tiq u e ta d a s c o n X t, X 2 Y„.

El a n a liz a d o r s in tá c tic o p re d ic tiv o q u e se d e s p r e n d e d e los d ia g r a m a s d e tr a n s i­


c io n e s se c o m p o r t a c o m o sigue. C o m ie n z a e n el e s ta d o d e in ic io d e l s ím b o lo inicial.
Si d e s p u é s d e a lg u n o s m o v im ie n to s se e n c u e n t r a e n el e s ta d o s c o n u n a a ris ta e ti­
q u e t a d a c o n el te r m in a l a al e s ta d o /. y si el sig u ie n te s ím b o lo d e e n t r a d a e s a , e n ­
to n c e s el a n a liz a d o r s in tá c tic o c a m b i a el c u r s o r d e la e n t r a d a u n a p o s ic ió n a la d e ­
recha y se va al e s ta d o /. Si, p o r o tr a parte, la a ris ta está e tiq u e ta d a c o n u n n o te rm in a l
.4. el a n a liz a d o r s in tá c tic o va al e s ta d o d e in ic io d e A, s in m o v e r el c u r s o r d e la e n ­
tr a d a . Si llega a a l c a n z a r el e s ta d o fin al d e A , i n m e d i a t a m e n t e va al e s ta d o l. h a ­
b ie n d o e n e fe c to “ le íd o " A d e la e n t r a d a c u a n d o se tr a s la d ó del e s ta d o s al /. P or
ú ltim o , si h a y u n a a ris ta d e s a / e tiq u e ta d a c o n € , el a n a liz a d o r s in tá c tic o va in ­
m e d ia ta m e n te del e s ta d o s al t s in a v a n z a r la e n tra d a .
U n p r o g r a m a p a r a h a c e r a n á lis is s in tá c tic o p re d ic tiv o b a s a d o e n u n d ia g r a m a d e
tra n s ic io n e s in te n ta e m p a r e ja r s ím b o lo s te rm in a le s c o n la e n tr a d a , y re a liz a u n a lla­
m a d a p o t e n c i a l m e n t e r e c u r s iv a a u n p r o c e d i m i e n t o s ie m p r e q u e d e b a se g u ir u n a
a r is ta e tiq u e ta d a c o n u n n o te rm in a l. Se p u e d e o b te n e r u n a im p la n ta c ió n n o r e c u r ­
siv a c o n u n a p ila p a r a g u a r d a r los e s ta d o s s c u a n d o h a y u n a tra n s ic ió n c o n u n no
te rm in a l s a lie n d o d e s, y e l im i n a n d o la p ila al a lc a n z a r el e s ta d o final d e u n n o te r­
m in a l. M u y p r o n to se a n a liz a r á m á s d e ta lla d a m e n te la im p la n ta c ió n d e d ia g ra m a s
d e tra n s ic ió n .
El e n f o q u e a n t e r i o r f u n c io n a si el d ia g ra m a d e tr a n s ic io n e s d a d o n o p r e s e n ta in ­
d e t e r m in i s m o , e n el s e n tid o d e q u e h a y a m á s d e u n a tr a n s ic ió n d e s d e u n e s ta d o c o n
la m is m a e n tr a d a . Si ex iste a m b ig ü e d a d , se p u e d e s o lu c io n a r d e u n a f o r m a esp eci­
fica. c o m o se v e rá e n el s ig u ie n te e je m p lo . Si n o se p u e d e e l i m i n a r el i n d e t e r m i ­
n ism o . n o se p u e d e c o n s tr u i r u n a n a liz a d o r s in tá c tic o p re d ic tiv o , p e r o sí u n a n a li­
4.4 AN ALISIS SINTA CTIC O D E SC E N D E N T E 189

z a d o r s i n t á c t i c o p o r d e s c e n s o r e c u r s iv o u t i l i z a n d o el r e tr o c e s o p a r a i n t e n t a r
s is te m á tic a m e n te to d a s las p o sib ilid a d e s, si é s a f u e ra la m e jo r e stra te g ia d e análisis
posible.

E je m p lo 4 .1 5 . L a figura 4 . 10 c o n tie n e u n c o n ju n to d e d ia g ra m a s d e tra n sic io n e s para


la g r a m á tic a (4 .11 ). L as ú n ic a s a m b ig ü e d a d e s se re fie re n a si se d e b e o n o t o m a r u n a
a ris ta € . Si se in te r p r e ta q u e las a ris ta s q u e salen del e s ta d o inicial d e E c o m o in ­
d ic a tiv a s d e t o m a r la tra n s ic ió n c o n + s ie m p r e q u e ésta sea la e n t r a d a sig u ie n te o
t o m a r la tr a n s ic ió n c o n € e n o tr o c a s o , y re a liz a r el m i s m o s u p u e s to p a r a 7V, e n t o n ­
ces se e lim in a la a m b ig ü e d a d y se p u e d e e s c rib ir u n p r o g r a m a d e a n á lis is s in tá c tic o
p re d ic tiv o p a r a la g r a m á tic a (4 .1 1 ). □

S e p u e d e n s im p lif ic a r lo s d i a g r a m a s d e tr a n s i c io n e s s u s t i t u y e n d o u n o s d ia g r a ­
m a s p o r o tro s ; e s ta s s u s titu c io n e s s o n s im ila r e s a las t r a n s f o r m a c io n e s e n las g r a ­
m á tic a s d e la secció n 2.5. P o r e je m p lo , e n la fig u ra 4.1 l(a ), la lla m a d a d e E se h a
r e e m p la z a d o a sí m is m a p o r u n s a lto h a s ta el p r in c ip io d e l d ia g r a m a d e E .

F ig . 4 .1 0 . D i a g r a m a s d e t r a n s i c i o n e s p a r a la g r a m á t i c a ( 4 . 1 1).

E n la figura 4.1 l( b ) se m u e s tr a u n d ia g r a m a d e tra n s ic io n e s e q u iv a le n te p a r a E .


D e s p u é s se p o d r ía s u s titu ir el d ia g r a m a d e la fig u ra 4.11 p a r a la tr a n s ic ió n p a r a E
e n el d ia g r a m a d e E d e la figura 4 .1 0 . o b te n ié n d o s e el d ia g ra m a d e la fig u ra 4 . 1 1(c).
P o r ú ltim o , se o b s e rv a q u e el p r im e r o y te rc e r n o d o s d e la fig u ra 4.11 (c) s o n e q u i ­
v a le n te s y se fu s io n a n . El r e s u lta d o , fig u ra 4.1 l(d ). se re p ite e n el p r im e r d ia g ra m a
190 ANALISIS SIN TA CTIC O

(c) (d)

F ig . 4 . 1 1 . D iagram as d e transiciones simplificados.

d e la figura 4 .1 2 . L as m is m a s té c n ic a s sirv e n p a r a los d ia g r a m a s d e T y T . E n la


figura 4 .1 2 se m u e s tr a el c o n j u n t o c o m p l e t o d e los d ia g r a m a s o b te n id o s . U n a im ­
p la n ta c ió n e n C d e este a n a liz a d o r s in tá c tic o p re d ic tiv o f u n c io n a u n 2 0 ó 25 p o r
100 m á s r á p id a m e n te q u e u n a im p la n ta c ió n en el m is m o le n g u a je d e la figura 4.10.

F ig. 4 .1 2 . D iag ram as d e transiciones sim plificados para las expresiones aritm éticas.

A n á lis is s in tá c tic o p r e d ic tiv o n o re c u r siv o

Se p u e d e c o n s tr u i r u n a n a liz a d o r s in tá c tic o p re d ic tiv o n o re c u rs iv o e x p líc ita m e n te


m a n t e n i e n d o u n a p ila , e n lu g a r d e h a c e r lo i m p l í c i t a m e n t e m e d i a n t e lla m a d a s r e ­
cursivas. El p r o b le m a c lav e d u r a n te el a n á lis is s in tá c tic o p r e d ic tiv o e s d e t e r m in a r la
4.4 ANALISIS SIN T A C T IC O D E S C E N D E N T E 191

p ro d u c c ió n q u e d e b e a p lic a rs e a u n n o te rm in a l. El a n a liz a d o r s in tá c tic o n o r e c u r­


sivo d e la figura 4 .1 3 b u s c a la p ro d u c c ió n q u e d e b e a p lic a rs e e n u n a ta b la d e a n álisis
sin tá ctic o . A c o n tin u a c ió n se verá c ó m o se p u e d e c o n s tr u i r d ir e c ta m e n te la ta b la a
p a r tir d e c ie rta s g ra m á tic a s.

PILA SAI IDA

Fig. 4.13. M odelo de u n an alizad o r sintáctico predictivo n o recursivo.

U n a n a liz a d o r s in tá c tic o p re d ic tiv o g u ia d o p o r ta b la s tie n e u n buffer d e e n tra d a ,


u n a pila, u n a ta b la d e a n á lis is s in tá c tic o y u n a c a d e n a d e salida. El buffer d e e n tra d a
c o n tie n e la c a d e n a q u e se v a a a n a liz a r , s e g u id a d e $. u n s ím b o lo u tiliz a d o c o m o
d e lim ita d o r d e r e c h o p a r a in d ic a r el fin d e la c a d e n a d e e n tr a d a . L a p ila c o n tie n e u n a
se c u e n c ia d e s ím b o lo s g ra m a tic a le s c o n $ e n la p a r te d e a b a jo , q u e in d ic a la b a se d e
la pila. Al p rin c ip io , la p ila c o n tie n e el s ím b o lo inicial d e la g r a m á tic a e n c i m a d e S.
L a ta b la d e a n á lis is s in tá c tic o es u n a m a tr iz b id im e n s io n a l M [ A %a], d o n d e A es u n
n o te rm in a l, y a e s u n te r m in a l o el s ím b o lo $.
S e c o n tro la el a n a liz a d o r s in tá c tic o m e d ia n te u n p ro g ra m a q u e se c o m p o r ta c o m o
sigue. El p r o g r a m a tie n e e n c u e n t a X , el s ím b o lo d e la c im a d e la p ila , y a %el s ím ­
b o lo en c u r s o d e la e n tr a d a . E sto s d o s s ím b o lo s d e t e r m i n a n la a c c ió n del a n a liz a d o r.
E xisten tres posibilidades:

1. Si X = a = S. el a n a liz a d o r s in tá c tic o se d e tie n e y a n u n c i a el éx ito d e la reali­


z a c ió n del análisis.

2. Si .V = a ?£$. el a n a liz a d o r s in tá c tic o sa c a a X d e la p ila y m u e v e el a p u n t a d o r


d e e n t r a d a al sig u ie n te s ím b o lo d e e n tra d a .

3. Si X es u n n o te rm in a l, el p r o g r a m a c o n s u lta la e n t r a d a M [X . a] d e la ta b la M
d e a n á lis is s in tá c tic o . E sta e n t r a d a se rá o u n a p ro d u c c ió n d e X d e la g ra m á tic a
o u n a e n t r a d a d e e rro r. Si, p o r e je m p lo . M [X , a) = {A '-» ÍT W -}, el a n a liz a d o r
sin tá ctic o su stitu y e la A' de la c i m a d e la p ila p o r H T U (con V e n la c im a ). C o m o
salida, se sa b e q u e el a n a liz a d o r s in tá c tic o só lo im p r im e la p ro d u c c ió n u tiliz a d a ;
a h í se p o d r ía e je c u ta r c u a l q u ie r o t r o cód ig o. Si \ f \ X . a] = erro r, el a n a liz a d o r
s in tá c tic o lla m a a u n a r u ti n a d e re c u p e ra c ió n d e erro r.
192 A N A LISIS SINTA CTIC O

Se p u e d e d e s c rib ir el c o m p o r t a m i e n t o d e l a n a liz a d o r s in tá c tic o e n f u n c ió n d e sus


configuraciones, q u e d a n el c o n t e n id o d e la p ila y la e n t r a d a re sta n te .

A lg o r itm o 4 .3 . A n á lisis s in tá c tic o p re d ic tiv o n o recu rsiv o .

E n tra da . U n a c a d e n a w y u n a ta b la d e a n á lis is s in tá c tic o M p a r a la g r a m á tic a G.

Salida. Si w e s tá e n L (G ), u n a d e r iv a c ió n p o r la iz q u ie r d a d e wr, d e lo c o n tr a r io , u n a
in d ic a c ió n d e erro r.

M étodo. Al p r in c ip io , el a n a liz a d o r s in tá c tic o está e n u n a c o n fig u ra c ió n e n la q u e


tie n e a S S en la p ila c o n S . el s ím b o lo inicial d e G e n el to p e , y \\$ e n el buffer d e
e n tr a d a . E n la fig u ra 4 .1 4 se m u e s tr a el p r o g r a m a q u e u tiliza la ta b la d e a n á lis is s in ­
tá c tic o p re d ic tiv o M p a r a p r o d u c i r u n a n á lis is d e la e n tr a d a . □

a p u n ta r ae al p rim e r sím b o lo d e w$;


rep ea t
sea X el sím b o lo d e la cim a d e la pila y a el sím bolo a p u n ta d o por ae:
i f X es un term in al o $ then
if X = a then
ex traer X de la pila y av an za r ae
else error ()
else /* X e s u n n o te r m in a l * /
if M [X, a \ = X - * Y\ Y2 . . . Yk th en begin
extraer X d e la pila;
m eter Yk. y * ., T, en la pila, co n Y { en la cim a:
em itir la p ro d u cció n X -► Y\ . . . Yk
en d
e lse error()
until X = $ /* la pila está vacia */

Fig. 4.14. P ro gram a p a ra análisis sintáctico predictivo.

E je m p lo 4 .1 6 . C o n s id é re s e la g r a m á tic a (4 .1 1 ) del e je m p lo 4 .8 . E n la fig u ra 4 .1 5 se


m u e s tra u n a ta b la d e a n á lis is s in tá c tic o p re d ic tiv o p a r a e s ta g r a m á tic a . L os e sp a c io s
e n b la n c o s o n e n tr a d a s d e e rro r; lo s o t r o s e s p a c io s in d ic a n u n a p ro d u c c ió n c o n la
c u a l e x p a n d ir el n o te rm in a l d e la c i m a e n la p ila . O b sé rv e se q u e a ú n n o se h a in ­
d ic a d o c ó m o se le c c io n a r d ic h a s e n tra d a s , p e r o se in d ic a r á e n brev e.
C o n la e n t r a d a id + id * id el a n a l iz a d o r s in tá c tic o p re d ic tiv o realiza la s e c u e n ­
c ia d e m o v im ie n to s d e la fig u ra 4 .1 6 . El a p u n t a d o r d e e n t r a d a a p u n t a al s ím b o lo d e
la e x tr e m a iz q u ie r d a d e la c a d e n a e n la c o l u m n a E N T R A D A . Si se o b s e r v a n con
a te n c ió n las a c c io n e s d e este a n a l iz a d o r s in tá c tic o , se n o t a q u e está b u s c a n d o u n a
d e riv a c ió n p o r la iz q u ie r d a p a r a la e n t r a d a , es d ecir, las p r o d u c c io n e s e m itid a s son
las d e u n a d e riv a c ió n p o r la iz q u ie rd a . L o s s ím b o lo s d e e n t r a d a q u e y a se h a n e x a ­
m in a d o . se g u id o s d e los s ím b o lo s g ra m a tic a le s d e la p ila (d e la c i m a al fo n d o ), son
las f o r m a s d e frase iz q u ie r d a s d e la d e riv a c ió n . □
4.4 ANALISIS SIN T A C T IC O D E S C E N D E N T E 193

• Sí m b o l o de En t r a d a
No
T erminal *
id + ( ) $

E E -* T E ' e - * te:
E' £'_»+ TE' r->€
T T -+ F T t -* f t
T T '-> t r-+ * F r r->€ r->€
F F -M F-*(E)

Fig. 4.15. T abla d e análisis siniáctico M para la g ram ática (4.11).

P ila Entrada Sa l i d a

SE id + id * id$
SET id + id * id$ E -> T E '
SET F id + id * idS T FT
S E T id id + id * id$ F - * id-
SET + id * idS
SE- + id * idS r-> c
SET + + id * id$ E' + TE'
SET id * idS
SETF id * idS T -» F T
SETi d id * id$ F - > id
SET * id$
SETF* ♦ id$ r *FT
SETF idS
S E T id idS F -* id
SET $
SE ' $ r-> €
S $ E' ~*f

Fig. 4 .1 6 . M o v im ien to s realizados por el an alizad o r sintáctico predictivo c o n la


e n tra d a id + id*id.

P R IM E R O y S IG U IE N T E

S e facilita la c o n s tr u c c ió n d e u n a n a l iz a d o r s in tá c tic o p re d ic tiv o c o n d o s fu n c io n e s


a s o c ia d a s a u n a g r a m á tic a G. E sta s fu n c io n e s . P R I M E R O y S I G U I E N T E , p e r m ite n
rellen ar, s ie m p re q u e sea p o sib le, las e n tr a d a s d e u n a ta b la d e a n á lis is s in tá c tic o p r e ­
d ic tiv o p a r a G . T a m b i é n se p u e d e n u tiliz a r los c o n j u n t o s d e c o m p o n e n te s léxicos
d e v u e lto s p o r la f u n c ió n S I G U I E N T E c o m o c o m p o n e n te s léxicos d e s in c ro n iz a c ió n
d u r a n te la re c u p e ra c ió n d e e rro re s e n m o d o d e p án ico .
194 ANALISIS SIN TA CTIC O

Si a es u n a c a d e n a d e s ím b o lo s g ra m a tic a le s , se c o n s id e r a P R /M E R O (a ) c o m o
el c o n j u n t o d e te rm in a le s q u e in ic ia n la s c a d e n a s d e r iv a d a s d e a. Si a=> e , e n to n c e s
€ ta m b ié n está e n P R I M E R O ( a ) .
S e d e f in e S I G U I E N T E {A ), p a r a el n o t e r m i n a l A , c o m o el c o n j u n t o d e t e r m i ­
n ales a q u e p u e d e n a p a r e c e r in m e d ia t a m e n t e a la d e r e c h a d e A e n a lg u n a fo rm a d e
frase, e s d ecir, el c o n j u n t o d e te rm in a le s a tal q u e h a y a u n a d e r iv a c ió n d e la fo rm a
5= >cl4í?P p a r a a lg ú n a y [5. O b sé rv e se q u e e n a lg ú n m o m e n t o d e la d e riv a c ió n p u ­
d ie ro n h a b e r e x is tid o s ím b o lo s e n tr e A y a . p e r o si asi fu e. d e r iv a r o n a € y d e s a p a ­
re c ie ro n . Si A p u e d e s e r el s ím b o lo s itu a d o m á s a la d e r e c h a en u n a fo rm a d e frase,
e n to n c e s S está en S I G U I E N T E S ).
P a ra c a lc u la r P R I M E R O ( A ) p a r a to d o s los s ím b o lo s g ra m a tic a le s X . a p liq ú e n s e
las reglas sig u ie n te s h a s ta q u e n o se p u e d a n a ñ a d i r m á s te r m in a le s o c a n in g ú n
c o n ju n to P R IM E R O .

1. Si X e s te rm in a l, e n to n c e s P R IM E R O (A ') es {A’¡.

2. Si X c e s u n a p ro d u c c ió n , e n to n c e s a ñ á d a s e e a P R IM E R O (A ^ .

3. Si X es n o te r m in a l y A '—* y , Y 2 . . . Yk e s u n a p ro d u c c ió n , e n to n c e s p ó n g a s e a
en P R I M E R O S ) si, p a r a a lg u n a i, a está e n P R I M E R O S , ) y € está en to d o s
los P R I M E R O S , ) P R I M E R O S , ,): es d ecir, y , . . . Y, , ^ > c . Si c está
e n P R I M E R O ) y ,) p a r a t o d a j = 1 . 2 k % e n to n c e s a ñ á d a se c a P R I­
M E R O S ) . P o r e je m p lo , t o d o lo q u e está e n P R I M E R O ! Y t) s in d u d a está en
P R I M E R O S ). Si y , n o d e r i v a a e , e n t o n c e s n o se a ñ a d e n a d a m á s a P R I ­
M E R O S ) , p e r o si } ', = > € . e n to n c e s se le a ñ a d e P R I M E R O ! T:), y así s u c e siv a ­
m e n te .

A h o r a se p u e d e c a lc u la r P R I M E R O p a r a c u a l q u ie r c a d e n a X \X 2 d e la si­
g u ie n te fo rm a : a ñ á d a n s e a P R I M E R O S ,A % • • • X n) to d o s los s ím b o lo s d is tin to s d e
€ d e P R I M E R O S , ) . Si € está e n P R I M E R O S , ) , a ñ á d a n s e ta m b ié n lo s s ím b o lo s
d is tin to s d e 6 d e P R I M E R O S : ) : si e e s tá t a n t o e n P R I M E R O S ', ) c o m o e n P R I ­
M E R O S : ) , a ñ á d a n s e ta m b ié n los s ím b o lo s d is tin to s d e c d e P R I M E R O S ;» ) , y así
s u c e s iv a m e n te . P o r ú ltim o , a ñ á d a s e c a P R I M E R O S , A " : • - • A'»,) si, p a r a to d a /.
P R I M E R O S , ) c o n tie n e c .
P a r a c a lc u la r S I G U I E N T E S ) p a r a to d o s lo s n o te r m in a le s A, a p liq ú e n s e las re­
g la s s ig u ie n te s h a s ta q u e n o se p u e d a a ñ a d i r n a d a m á s a n i n g ú n c o n j u n t o S I ­
G U IE N T E .

1. P ó n g a s e $ e n S I G U I E N T E S ) , d o n d e S es el s ím b o lo in icial y $ e s el d e lim ita ­


d o r d e r e c h o d e la e n tra d a .

2. Si h a y u n a p ro d u c c ió n A -+ ü # p , e n to n c e s t o d o lo q u e esté e n P R I M E R O ( P )
e x c e p to € se p o n e e n S I G U I E N T E ! # ) .

3. Si h a y u n a p ro d u c c ió n A a B o u n a p r o d u c c i ó n A - * a # p , d o n d e P R I-
M E R O ( P ) c o n t e n g a e (e s d e c ir , P = > * ) , e n t o n c e s t o d o lo q u e e s té e n S I ­
G U I E N T E S ) se p o n e e n S I G U I E N T E ! # ) .
4.4 ANALISIS S IN T A C T IC O D E S C E N D E N T E 195

E je m p lo 4 .1 7 . C o n s id é re s e d e n u e v o la g r a m á tic a (4 .1 1 ). q u e se re p ite a c o n t i n u a ­
ción:
E -> T E
E -+ + T E | €
T FT
Tf *FT | €
F - > ( E ) | id
E n to n c e s:
P R I M E R O ( F ) = P R I M E R O ( T ) = P R I M E R O ( F ) = {(, id}

P R I M E R O S ) = {+ , * }

P R I M E R O ! 7") = {*>*}

S I G U I E N T E ! F ) = S I G U I E N T E ^ ) = {), $}

S IG U IE N T E ! T ) = S IG U IE N T E ! T ) = { + , ) , $ }

S IG U IE N T E ! F ) = { + , * ) , $ }

P o r e je m p lo , se a ñ a d e n id y el p a r é n te s is iz q u ie r d o a P R I M E R O ( F ) p o r la r e ­
g la 3 d e la d e f in ic ió n d e P R I M E R O , c o n / = 1 e n c a d a c a s o , p u e s t o q u e P R I-
M E R O (id ) = {id} y P R I M E R O ! '! ') = { ( } p o r la regla 1. E n to n c e s p o r la regla 3. c o n
/ = 1. la p r o d u c c i ó n T —» F T ' s u p o n e q u e id y el p a r é n t e s i s i z q u i e r d o e s tá n a s i­
m i s m o e n P R I M E R O ! T). O tr o e j e m p lo m á s . € e s tá e n P R I M E R O ! F ) p o r la r e ­
gla 2.
P a ra c a lc u la r los c o n j u n to s S I G U I E N T E , se p o n e $ e n S I G U I E N T E ( F ) p o r la
regla 1 d e S I G U I E N T E . P o r la regla 2 a p lic a d a a la p ro d u c c ió n F - > ( F ) , el p a r é n ­
tesis d e r e c h o ta m b ié n está e n S I G U I E N T E ! E ). P o r la regla 3 a p lic a d a a la p r o d u c ­
c ió n E T E \ $ y el p a ré n te s is d e r e c h o e s tá n e n S I G U I E N T E ! F ') . C o m o F ^ > €.
ta m b ié n e s tá n e n S I G U I E N T E ! T). C o m o ú l t i m o e je m p lo d e la a p lic a c ió n d e la s re­
glas d e S I G U I E N T E , la p ro d u c c ió n F T E s u p o n e , p o r la regla 2 , q u e t o d o lo q u e
esté e n P R I M E R O ! F ) , salv o € . d e b e p o n e r s e e n S I G U I E N T E ! T ). V a se h a visto
q u e $ está e n S I G U I E N T E ! T ). □

C o n str u c c ió n d e ta b la s d e a n á lis is s in tá c tic o

Se p u e d e u tiliz a r el sig u ie n te a lg o ritm o p a r a c o n s tr u i r u n a ta b la d e a n álisis s in tá c ­


tic o p r e d ic tiv o p a r a u n a g r a m á tic a G . L a id e a e n q u e se b a s a el a lg o r i tm o e s la si­
g u ie n te . S u p ó n g a s e q u e A -> a e s u n a p r o d u c c ió n c o n a e n P R I M E R O ! » ) . E n t o n ­
ces, el a n a liz a d o r s in tá c tic o e x p a n d ir á A p o r a c u a n d o el s ím b o lo a c tu a l d e la e n tra d a
sea a. L a ú n ic a c o m p lic a c ió n su rg e c u a n d o a = € o a = > . E n este caso, se d e b e
e x p a n d ir d e n u e v o A e n a si el s ím b o lo a c tu a l d e la e n t r a d a e s tá e n S I G U I E N T E ! /! ),
o si ya se h a a lc a n z a d o e n S d e la e n t r a d a y S e s tá e n S I G U I E N T E ! /! ).

A lg o r itm o 4 .4 . C o n s tr u c c ió n d e u n a ta b la d e a n á lis is s in tá c tic o p red ictiv o .

E ntrada. U n a g ra m á tic a G.

Salida. L a tab la d e a n á lisis sin tá ctico M.


196 ANALISIS SIN TA CTIC O

M étodo.

1. P a r a c a d a p ro d u c c ió n A —> a d e la g r a m á tic a , d e n s e los p a so s 2 y 3.

2. P a ra c a d a te rm in a l a d e P R I M E R O í a ) , a ñ á d a s e A - > a a M \A %a].

3. Si « e s t á e n P R IM E R C X a ), a ñ á d a s e A a a M [A , b] p a r a c a d a te rm in a l b d e
S I G U I E N T E S ) . Si € está e n P R I M E R O ( a ) y $ está e n S I G U I E N T E S ) , a ñ á ­
d a se A a a M [ A %$).

4. H á g a se q u e c a d a e n t r a d a n o d e f in id a d e M sea error.

E je m p lo 4 .1 8 . A p lic a c ió n d e l a lg o r itm o 4 .4 a la g r a m á tic a (4 .1 1 ). P u e s to q u e P R I-


M E R O C T F ) = P R I M E R O C D = {(, id}, la p ro d u c c ió n E T E h a c e q u e M [ E , (J y
M [ E >id] a d q u i e r a n la e n t r a d a E - > T E .
L a p r o d u c c i ó n E -* + T E h a c e q u e M [ E , + ] a d q u i e r a E - > + T E . L a p r o ­
d u c c i ó n E - * t h a c e q u e M [ E %)] y M [ E , $] a d q u i e r a n E -> p u e s to q u e S I­
G U I E N T E ^ ) = {), $}.
E n la fig u ra 4 .1 5 se m o s t r ó la t a b l a d e a n á lis is s i n t á c t i c o p r o d u c i d a p o r el
a lg o r itm o 4 .4 p a r a la g ra m á tic a (4 . I I ) . □

G r a m á tic a s L L (1 )

S e p u e d e a p lic a r el a lg o r itm o 4 .4 a c u a l q u ie r g r a m á tic a G p a r a p r o d u c ir u n a ta b la


d e a n álisis s in tá c tic o M . S in e m b a r g o , p a r a a lg u n a s g ra m á tic a s , M p u e d e te n e r a l­
g u n a s e n tr a d a s c o n d e fin ic io n e s m ú ltip le s . P o r e je m p lo , si G es re c u rsiv a p o r la iz­
q u ie r d a o a m b ig u a , e n to n c e s M te n d r á a l m e n o s u n a e n t r a d a c o n d e fin ic ió n m ú l t i ­
ple.

E je m p lo 4 . 1 9 . C o n s id é re s e d e n u e v o la g r a m á tic a (4 .1 3 ) del e je m p lo 4 .1 0 ; c o n v ie n e
re p e tirla a c o n tin u a c ió n .

P -> iE tP F | a
F -> e P | €
E-> b

E n la fig u ra 4 .1 7 se m u e s tr a la ta b la d e a n á lis is s in tá c tic o p a r a e s ta g r a m á tic a .

N o Sí m b o l o de Entrada
T e r m in a l •

a b e / t $

P P-*a P-+ iEtPF


F -+ c
F F -» €
F -* e P
E E -* b

F ig. 4 .1 7 . T ab la d e an álisis sin tá c tico M para la g r a m á tic a (4 .1 3 ).


4.4 ANALISIS SIN T A C T IC O D E S C E N D E N T E 197

L a e n t r a d a p a r a A i [ P \ e] c o n t i e n e a P ' -> e P y a P ' - > € , p u e s t o q u e S I ­


G U I E N T E ^ ) = (í', $). L a g r a m á tic a e s a m b ig u a y la a m b ig ü e d a d se m a n ifie s ta en
la elecció n d e la p ro d u c c ió n q u e se v a a u tiliz a r c u a n d o se e n c u e n t r a u n e ( e ls e ) . Se
p u e d e re so lv e r la a m b ig ü e d a d e s c o g ie n d o F - * eP. E sta e le c c ió n c o r r e s p o n d e a a s o ­
c ia r los e l s e c o n los th e n p re v io s m á s c e rc a n o s . O b sé rv e se q u e la elecció n d e S ' -+ *
im p e d ir ía q u e c se in s e rta ra e n la p ila o se e lim in a r a d e la e n tr a d a . lo c u a l, p o r s u ­
p u e s to . e s in c o rre c to . □

U n a g r a m á tic a c u y a ta b la d e a n á lis is s in tá c tic o n o tie n e e n tr a d a s c o n d e fin ic io ­


nes m ú ltip le s se d e f in e c o m o LIA I). L a p r im e r a “ L ” d e L L (1 ) r e p re s e n ta ( p o r lefl,
en inglés, izquierda ) el e x a m e n d e la e n t r a d a d e iz q u ie r d a a d e re c h a , la s e g u n d a “ L "
re p re s e n ta u n a d e riv a c ió n p o r la iz q u ie rd a , y el “ 1” es p o r u tiliz a r u n s ím b o lo de
e n t r a d a d e e x a m e n p o r a n t i c i p a d o a c a d a p a s o p a r a t o m a r la s d e c is io n e s d e la a c ­
c ió n en el a n á lis is s in tá c tic o . S e p u e d e d e m o s t r a r q u e el a lg o r itm o 4 .4 p r o d u c e p a ra
to d a g r a m á tic a G en fo rm a LL( I ) u n a ta b la d e a n álisis s in tá c tic o q u e a n a liz a todas,
y e x c lu s iv a m e n te , las frases d e G.
L as g r a m á tic a s L L ( I ) tie n e n v a ria s p ro p ie d a d e s d is tin tiv a s. N in g u n a g ra m á tic a
a m b ig u a o re c u rs iv a p o r la iz q u ie rd a p u e d e s e r LL( I ). T a m b ié n se p u e d e d e m o s t r a r
q u e u n a g ra m á tic a G es LL( I ) si. y só lo si, c u a n d o A - » a | (3 se a n d o s p ro d u c c io n e s
d is tin ta s d e G se c u m p le n las sig u ie n te s c o n d ic io n e s:

1. P a ra n in g ú n te rm in a l a t a n t o u c o m o P d e riv a n a la vez c a d e n a s q u e c o m ie n c e n
c o n a.

2. A lo s u m o u n a d e a y P p u e d e d e r iv a r la c a d e n a vacía.
3. Si P = > e , a n o d e r iv a n in g u n a c a d e n a q u e c o m i e n c e c o n u n te r m in a l e n SI-
G U IE N T E M ).

E stá c la ro q u e la g r a m á tic a (4 .1 1 ) p a r a las e x p re s io n e s a r itm é tic a s es LL (1). N o lo


e s la g ra m á tic a (4 .1 3 ). q u e m o d e la las p ro p o s ic io n e s ¡f-th e n -e b e .
Q u e d a la c u e s tió n d e lo q u e se d e b e h a c e r c u a n d o la ta b la d e a n á lis is s in tá c tic o
tie n e e n tr a d a s c o n d e fin ic io n e s m ú ltip le s. U n r e c u rs o es t r a n s f o r m a r la g ra m á tic a
e l im i n a n d o to d a re c u rs ió n p o r la iz q u ie r d a y fa c to riz a n d o p o r la iz q u ie rd a s ie m p re
q u e sea posible, c o n la e s p e r a n z a d e p r o d u c ir u n a g r a m á tic a p a r a la c u a l la ta b la d e
a n álisis s in tá c tic o n o te n g a e n tr a d a s c o n d e fin ic io n e s m ú ltip le s. D e s g ra c ia d a m e n te ,
hay a lg u n a s g r a m á tic a s a las q u e n in g u n a tr a n s f o r m a c ió n c o n v e r tir á en L L (1). p o r
e jem p lo , la g ra m á tic a ( 4 . 13). c u y o len g u aje n o tien e n in g u n a g ra m á tic a LL( 1). C o m o
y a se h a visto, ta m b ié n e s p o s ib le a n a liz a r s in tá c tic a m e n te la g r a m á tic a (4 .1 3 ) c o n
u n a n a liz a d o r p re d ic tiv o h a c ie n d o a r b i t r a r i a m e n t e q u e M [ P \ e) = { F —* eP). En
g en eral, n o h a y reglas u n iv e rs a le s p o r las q u e las e n tr a d a s c o n e n tr a d a s m ú ltip le s se
p u e d a n c o n v e r tir en e n t r a d a s d e u n s o lo v a lo r sin q u e a fe c te al le n g u a je re c o n o c id o
p o r el a n a liz a d o r.
L a m a y o r d ific u lta d al u s a r el a n á lis is s in tá c tic o p re d ic tiv o c o n s is te e n escrib ir
u n a g r a m á tic a p a r a el le n g u a je f u e n te tal q u e el a n a liz a d o r se p u e d a c o n s tr u i r a p a r ­
ti r d e d ic h a g r a m á tic a . A u n q u e son fáciles d e realizar, la e lim in a c ió n d e la recursi-
v id a d p o r la iz q u ie rd a y la fa c to riz a c ió n p o r la iz q u ie rd a , h a c e n q u e la g ra m á tic a
re s u lta n te sea d ifícil d e le er y d e u tiliz a r p a r a la tra d u c c ió n . P a ra d i s m i n u i r esta d i­
ficu ltad . u n a o rg a n iz a c ió n h a b itu a l d e u n a n a liz a d o r s in tá c tic o e n u n c o m p i l a d o r es
198 A N A LISIS SINTA CTIC O

u tiliz ar u n a n a liz a d o r s in tá c tic o p re d ic tiv o p a r a las c o n s tr u c c io n e s d e c o n tr o l y la


p re c e d e n c ia d e o p e r a d o r e s ( q u e se e s tu d ia n e n la S ec. 4 .6 ) p a r a las ex p resio n es. Sin
e m b a rg o , si h a y d is p o n ib le u n g e n e r a d o r d e a n a liz a d o r e s s in tá c tic o s L R , c o m o el
q u e se e s tu d ia e n la secció n 4 .9 . se p u e d e n a p r o v e c h a r a u t o m á t i c a m e n t e to d a s las
v e n ta ja s del a n álisis s in tá c tic o p re d ic tiv o y d e la p re c e d e n c ia d e o p e ra d o re s .

R ec u p er a ció n d e e r r o r e s en e l a n á lis is s in tá c tic o p red ictiv o

L a pila d e u n a n a liz a d o r s in tá c tic o n o re c u rs iv o h a c e e x p líc ito s lo s te rm in a le s y n o


te rm in a le s q u e el a n a liz a d o r e s p e ra e m p a r e ja r c o n el re s to d e la e n tr a d a . P o r ta n to ,
se h a r á re fe re n c ia a los s ím b o lo s d e la p ila d e u n a n a l iz a d o r s in tá c tic o e n la sig u ie n te
e x p o sic ió n . D u r a n te el a n á lis is s in tá c tic o p r e d ic tiv o se d e te c ta u n e r r o r c u a n d o el
te rm in a l d e la c i m a d e la p ila n o c o n c u e r d a c o n el sig u ie n te s ím b o lo d e e n t r a d a o
c u a n d o el n o te rm in a l A está en la c im a d e la p ila , a es el sig u ie n te s ím b o lo d e e n ­
tra d a . y la e n t r a d a M [ A %a] d e la ta b la d e a n álisis s in tá c tic o está vacía.
L a re c u p e ra c ió n e n m o d o d e p á n ic o se b a s a e n la id e a d e sa lta rse s ím b o lo s d e la
e n tra d a hasta q u e a p a re z c a u n c o m p o n e n te léxico q u e p e rte n e z c a a u n c o n ju n to se­
le c c io n a d o d e c o m p o n e n te s léx ico s d e s in c ro n iz a c ió n . S u e fe c tiv id a d d e p e n d e d e la
elecció n del c o n j u n t o d e s in c ro n iz a c ió n . L os c o n j u n to s d e b e n elegirse d e fo rm a q u e
el a n a liz a d o r s in tá c tic o se re c u p e re c o n r a p id e z d e lo s e rro re s c o n m á s p r o b a b ilid a ­
d e s d e o c u r r ir e n la p rá c tic a . A lg u n a s té c n ic a s h e u r ís tic a s s o n las siguientes:
1. C o m o p u n t o d e p a r ti d a , se p u e d e n c o l o c a r to d o s lo s s ím b o l o s d e SI-
G U IE N T E (.-I) d e n t r o del c o n j u n t o d e s in c ro n iz a c ió n p a r a el n o te r m in a l A. Si
se saltan c o m p o n e n te s léxicos h a s ta e n c o n t r a r u n e l e m e n t o d e S I G U I E N T E S )
y se saca a A d e la pila, es p ro b a b le q u e el a n á lis is s in tá c tic o p u e d a c o n tin u a r .

2. N o es su fic ie n te u sa r S I G U I E N T E S ) c o m o c o n j u n t o d e s in c ro n iz a c ió n p a r a A.
P o r e je m p lo , si los s ím b o lo s d e p u n t o y c o m a t e r m i n a n las p ro p o s ic io n e s , c o m o
e n C . e n to n c e s las p a la b ra s c lav e q u e c o m ie n z a n p ro p o s ic io n e s p u e d e n n o a p a ­
recer e n el c o n j u n t o S I G U I E N T E d e l n o te r m in a l q u e g e n e ra las ex p resio n es.
P o r ta n to , u n p u n to y c o m a q u e falte d e s p u é s d e u n a asig n ac ió n p u e d e d a r c o m o
re s u lta d o q u e se salte la p a la b ra c la v e q u e in ic ia la sig u ie n te p ro p o s ic ió n . A m e ­
n u d o h a y u n a e s tr u c tu r a je r á r q u i c a e n la s c o n s tr u c c io n e s d e u n len g uaje: p o r
e je m p lo , las e x p re s io n e s a p a r e c e n d e n t r o d e p ro p o s ic io n e s, las c u a le s a p a re c e n
d e n tro d e blo ques, y a s í su c e siv a m e n te . Se p u e d e n a ñ a d i r al c o n ju n to d e sin cro ­
n iz a c ió n d e u n a c o n s tr u c c ió n d e m e n o r je r a r q u í a los s ím b o lo s q u e in ic ia n las
c o n s tru c c io n e s d e m a y o r je ra rq u ía . P o r e jem p lo , se p u e d e n ag reg ar p a la b ra s clave
q u e c o m ie n z a n p ro p o s ic io n e s a los c o n j u n t o s d e s in c ro n iz a c ió n p a r a lo s n o te r­
m in a le s q u e g e n e r a n ex p resio n es.

3. Si se a ñ a d e n s ím b o lo s d e P R I M E R O S ) al c o n j u n t o d e s in c ro n iz a c ió n p a r a el
n o te r m in a l A. e n to n c e s se p u e d e c o n t i n u a r el a n á lis is s in tá c tic o s e g ú n A si a p a ­
rece e n la e n t r a d a u n s ím b o lo d e PR IM ER C X .4).

4. Si u n n o te r m in a l p u e d e g e n e r a r la c a d e n a v acía, se p u e d e u s a r la p ro d u c c ió n
q u e d e riv e a € c o m o a lte r n a tiv a p o r o m is ió n . E sto p u e d e p o s p o n e r a lg u n a d e ­
te c c ió n d e e r r o r e s p e r o n o la o m is ió n d e u n e r r o r . E ste m é t o d o r e d u c e el n ú ­
m e r o d e n o te rm in a le s q u e h a y q u e c o n s id e ra r d u r a n te la re c u p e ra c ió n del error.
4 .4 ANALISIS SIN T A C T IC O D E S C E N D E N T E 199

5. Si n o se p u e d e e m p a r e ja r u n te rm in a l d e la c i m a d e la pila, u n a idea sen cilla es


s a c a r el te rm in a l, e m iti r u n m e n s a je q u e in d i q u e q u e se in s e rtó el te r m in a l y
c o n t i n u a r el an álisis. E n re a lid a d , este m é to d o c o n s id e r a al c o n j u n t o d e sin c ro ­
n iz a c ió n d e u n c o m p o n e n t e léx ico c o m o si e s tu v ie ra c o m p u e s t o p o r to d o s los
o tro s c o m p o n e n te s léxicos.

E je m p lo 4 .2 0 . U tiliz a r lo s s ím b o lo s d e S I G U I E N T E y P R I M E R O c o m o c o m p o ­
n e n te s léxicos d e s in c ro n iz a c ió n f u n c io n a b a s ta n te b ie n c u a n d o las e x p re s io n e s se
a n a liz a n s in tá c tic a m e n te s e g ú n la g r a m á tic a (4 .1 1 ). L a ta b la d e a n á lis is s in tá c tic o
p a r a esta g r a m á tic a d e la fig u ra 4 .1 5 se re p ite e n la fig u ra 4 .1 8 . d o n d e “s i n c ” in d ic a
los c o m p o n e n te s léx ico s d e s in c ro n iz a c ió n o b te n id o s d e l c o n j u n t o S I G U I E N T E del
n o te rm in a l e n c u e s tió n . L o s c o n j u n t o s S I G U I E N T E p a r a los n o te r m in a le s se o b ­
tie n e n del e je m p lo 4.17.
L a ta b la d e la figura 4 .1 8 d e b e u tiliz a rse d e la f o r m a sig u ie n te . Si el a n a liz a d o r
s in tá c tic o b u sc a la e n t r a d a ;l/[.-L a] y v e q u e e s tá en b la n c o , d e b e sa lta rse el s ím b o lo
d e e n t r a d a a. Si la e n t r a d a es sin c . se saca el n o te rm in a l d e la c i m a d e la p ila para
c o n t i n u a r el an álisis. Si u n c o m p o n e n t e léx ico d e la c im a d e la pila n o c o n c u e r d a
c o n el s ím b o lo d e e n tr a d a , e n to n c e s se saca el c o m p o n e n t e léxico d e la pila, c o m o
y a se ha m e n c io n a d o .
C o n la e n t r a d a e r r ó n e a )id* + ¡d. el a n a liz a d o r s in tá c tic o y el m e c a n is m o d e r e ­
c u p e r a c ió n d e e rro re s d e la fig u ra 4 .1 8 se c o m p o r t a n c o m o en la fig u ra 4 .1 9 .

No Sí m b o l o de Entrada
T erminal *
id + ( ) $
E E-+TE' E -* T E ' sinc sinc
E' E'-> + T E ' /;-> €
I T -* F T sinc T -* E T sinc sinc
T r-> € r-> * F T /■->€ /'*->€
F E->id sinc sinc F-M E) sinc sinc

Fig. 4 .1 8 . C o m p o n e n te s léxicos d e sincronización a ñ a d id o s a la tabla d e análisis


sintáctico de la figura 4 . 15.

El a n álisis a n t e r i o r d e la re c u p e ra c ió n e n m o d o d e p á n i c o n o tr a ta c! a s p e c to im ­
p o r t a n t e d e los m e n s a je s d e e rro r. E n g e n e ra l, el d is e ñ a d o r del c o m p ila d o r tie n e q u e
p r o p o r c io n a r los m e n s a je s in f o r m a tiv o s d e los erro res.

Recuperación a nivel d e fra se . L a re c u p e ra c ió n a nivel d e frase se a p lic a lle­


n a n d o la s e n tr a d a s e n b la n c o en la ta b la d e a n álisis s in tá c tic o p re d ic tiv o c o n a p u n ­
ta d o r e s a r u ti n a s d e e r r o r . E sta s r u ti n a s p u e d e n c a m b ia r , in s e r ta r o e l i m i n a r s í m ­
b o lo s d e e n t r a d a y e n v ia r los m e n s a je s d e e r r o r a p ro p ia d o s . T a m b ié n p u e d e n s a c a r
e le m e n to s d e la pila. S e c u e s tio n a si se d e b e p e r m itir la a lte ra c ió n d e los s ím b o lo s
d e la pila o la in tr o d u c c ió n d e s ím b o lo s n u e v o s e n ella, p u e s to q u e lo s p a s o s llev ad o s
a c a b o p o r el a n a liz a d o r s in tá c tic o p o d r ía n n o c o r r e s p o n d e r a la d e riv a c ió n d e n in -
200 ANALISIS SINTA CTIC O

P ila Entrada Comentario

SE ) id * + id $ error, saltar)
SE id * + id S id está en P R IM E R O < £ )
S E 'T id * + id $
SET E id * + id $
S E T ió id * + id $
SET * + id $
S E T F* * + id S
SET E + id $ error. M [ £ , + ] = sinc
SET + id S E ha sido extraída de la pila
SE' + id S
SET + + ¡d S
S E 'T id S
S E ’T F id $
$ £ ' 7 vid ¡d $
SET $
SE ' s
S $

F ír. 4 .1 9 . M o v im ien to s p a ra el análisis y la recuperación d e erro res realizados p o r el


an alizad o r sintáctico predictivo.

g u n a p a la b ra d e l le n g u a je . E n c u a lq u ie r c a s o , se d e b e e s ta r seg u ro d e q u e n o p u e d e
h a b e r u n lazo in fin ito . C o m p r o b a r q u e c u a lq u ie r acció n d e re c u p e ra c ió n s u p o n e q u e
se c o n s u m a u n s ím b o lo d e e n t r a d a (o q u e la p ila se a c o r te si y a se h a a lc a n z a d o el
final d e la e n tr a d a ) es u n a b u e n a f o r m a d e p ro te g e rs e c o n t r a d ic h o s lazos.

4 .5 A N A L I S I S S I N T A C T I C O A S C E N D E N T E

E n esta se c c ió n se in tr o d u c e u n e s tilo g en eral d e a n álisis s in tá c tic o a s c e n d e n te , c o ­


n o c id o c o m o a n álisis s in tá c tic o p o r d e s p la z a m ie n to y re d u c c ió n . E n la se c c ió n 4 .6
se in tr o d u c e u n a f o r m a fácil d e a p lic a r el a n á lis is p o r d e s p la z a m ie n to y re d u c c ió n ,
lla m a d a a n álisis s in tá c tic o p o r p re c e d e n c ia d e o p e ra d o re s . E n la secció n 4.7 se es­
tu d ia u n m é to d o m u c h o m á s g e n e ra l d e a n á lis is s in tá c tic o p o r d e s p la z a m ie n to y re­
d u c c ió n . lla m a d o a n álisis s in tá c tic o L R . El a n álisis s in tá c tic o L R se u tiliz a en varios
g e n e r a d o r e s a u t o m á ti c o s d e a n a liz a d o r e s sin tá c tic o s.
El a n á lis is s in tá c tic o p o r d e s p la z a m ie n to y re d u c c ió n i n t e n ta c o n s tr u i r u n árbol
d e a n á lis is s in tá c tic o p a r a u n a c a d e n a d e e n t r a d a q u e c o m i e n z a p o r las h o ja s (el
f o n d o ) y a v a n z a h a c ia la r a íz (la c im a ). Se p u e d e c o n s id e r a r este p ro c e s o c o m o de
“ r e d u c ir " u n a c a d e n a w al s ím b o lo in icial d e la g r a m á tic a . E n c a d a p a so d e reduc­
ción se s u stitu y e u n a s u b e a d e n a d e t e r m in a d a q u e c o n c u e r d e c o n el la d o d e r e c h o d e
u n a p ro d u c c ió n p o r el s ím b o lo del la d o iz q u ie r d o d e d ic h a p r o d u c c ió n y si e n c a d a
p a so se elige c o r r e c ta m e n te la s u b e a d e n a . se tra z a u n a d e riv a c ió n p o r la d e r e c h a en
s e n tid o in v e rso .
4.5 ANALISIS SINTA C TIC O A S C E N D E N T E 201

E je m p lo 4 .2 1 . C o n s id é re s e la g ra m á tic a

S - * a A fíe
A Abe ¡ h
fí-> d

L a frase abhecle se p u e d e re d u c ir a S p o r los sig u ie n te s pasos:

abbcde
aAhcde
a A de
a A fíe
S

S e e x a m in a abbcde b u s c a n d o u n a s u b c a d e n a q u e c o n c u e r d c c o n el la d o d e r e c h o d e
a lg u n a p ro d u c c ió n . L as s u b c a d e n a s b y d sirv en . E líjase la b s itu a d a m á s a la iz­
q u ie r d a y s u stitu y a se p o r A , el la d o iz q u ie r d o d e la p ro d u c c ió n A - » b\ a s í se o b tie n e
la c a d e n a aAbcde. A c o n t in u a c i ó n , las s u b c a d e n a s A be, b y d c o n c u e r d a n c o n el lado
d e r e c h o d e a lg u n a p ro d u c c ió n . A u n q u e b es la s u b c a d e n a s itu a d a m á s a la iz q u ie rd a
q u e c o n c u e r d a c o n el l a d o d e r e c h o d e u n a p r o d u c c i ó n , se elige s u s t it u ir la s u b c a ­
d e n a A b e p o r A . q u e es el la d o d e r e c h o d e la p ro d u c c ió n A -* A be. Se o b tie n e a h o ra
tiAde. S u s titu y e n d o d e s p u é s d p o r B. q u e es el la d o iz q u ie rd o d e la p ro d u c c ió n f í - * d ,
se o b tie n e a A fíe . A h o r a se p u e d e s u s t it u ir to d a esta c a d e n a p o r S. P o r t a n t o , m e ­
d ia n te u n a s e c u e n c ia d e c u a t r o re d u c c io n e s se p u e d e r e d u c ir abbcde a S. D e h e c h o ,
e s ta s re d u c c io n e s tr a z a n la sig u ie n te d e r iv a c ió n p o r la d e r e c h a e n o r d e n in v erso:

S => a A fíe => a A d e => a A b cd e => abbcde □

M angos

I n f o r m a lm e n te , u n “ m a n g o " d e u n a c a d e n a es u n a s u b c a d e n a q u e c o n c u e r d a c o n el
la d o d e r e c h o d e u n a p ro d u c c ió n y c u y a re d u c c ió n al n o te rm in a l del la d o iz q u ie r d o
d e la p ro d u c c ió n re p r e s e n ta u n p a s o a lo la rg o d e la in v e rs a d e u n a d e riv a c ió n p o r
la d e r e c h a . E n m u c h o s c a so s, la s u b c a d e n a s itu a d a m á s a la iz q u ie r d a p q u e c o n ­
c u e r d a c o n el la d o d e r e c h o d e a lg u n a p ro d u c c ió n A P no es un m ango, porque
u n a r e d u c c ió n p o r la p r o d u c c ió n A - » p p r o d u c e u n a c a d e n a n o r e d u c ib le a l s ím ­
b o lo inicial. E n el e je m p lo 4.21, si se su stitu y e ra b p o r / i e n la seg u n d a c a d e n a aAbcde
se o b te n d r ía la c a d e n a a A A cd e q u e n o se p u e d e re d u c ir p o s te r io r m e n te a S . P o r esta
ra z ó n , se d e b e d a r u n a d e fin ic ió n m á s p re c isa d e u n m a n g o .
F o r m a l m e n t e , u n m a n g o d e u n a f o r m a d e frase d e r e c h a y es u n a p r o d u c c ió n
A - * p y u n a p o sic ió n d e y d o n d e la c a d e n a P p o d r ía e n c o n tr a r s e y s u stitu irs e p o r A
p a r a p r o d u c ir la fo rm a d e frase d e r e c h a p re v ia en u n a d e riv a c ió n p o r la d e r e c h a de
y. Es d ecir, si S => aA w => a p u \ e n to n c e s A p si la p o sic ió n q u e sigue d e a e s un
m a n g o d e aP»r. L a c a d e n a w a la d e r e c h a del m a n g o c o n tie n e só lo s ím b o lo s te r m i­
nales. O b sé rv e se q u e d ic e “ u n m a n g o " e n lu g a r d e “el m a n g o " , p o r q u e la g ra m á tic a
p o d ría s e r a m b ig u a , c o n m á s d e u n a d e riv a c ió n p o r la d e r e c h a d e «Pu*. Si u n a g ra ­
m á tic a n o es a m b ig u a , e n to n c e s to d a f o r m a d e frase d e r e c h a d e la g r a m á tic a tien e
e x a c ta m e n te u n m a n g o .
202 ANALISIS SIN TA CTIC O

E n el e je m p lo a n te r io r , abbcde e s u n a f o r m a d e frase d e r e c h a c u y o m a n g o es
. I -* b e n la p o sic ió n 2. Del m is m o m o d o . aA bcde e s u n a fo rm a d e frase d e re c h a
c u y o m a n g o es A - * A b e e n la p o sic ió n 2. A lg u n a s veces se d ic e "la s u b e a d e n a p es
u n m a n g o d e « P h " si están c la ra s la p o sic ió n d e (i y la p ro d u c c ió n .-I - * P q u e se
tie n e n e n m e n te .
E n la fig u ra 4 .2 0 se re p re s e n ta el m a n g o A - » p en el á rb o l d e a n á lis is s in tá c tic o
d e u n a fo rm a d e frase d e r e c h a ap»r. El m a n g o re p re s e n ta al s u b á rb o l c o m p le to si­
t u a d o m á s a la iz q u ie rd a q u e c o n s ta d e u n n o d o y to d o s s u s hijos. E n la fig u ra 4.20,
A es el n o d o in te r io r s itu a d o m á s a b a jo y m á s a la iz q u ie r d a c o n to d o s s u s h ijo s en
el á rb o l. S e p u e d e c o n s id e r a r c o m o “p o d a d e l m a n g o " , es d ecir, e lim in a c ió n d e los
hijos d e A del á rb o l d e a n á lis is s in tá c tic o .

E je m p lo 4 .2 2 . C o n s id é r e s e la sig u ie n te g ra m á tic a :

(1 ) E -*E + E
( 2) e ^ > e*e a
(3 ) E -* (£ ) (4 I6)
(4) E - > id
> la d e riv a c ió n p o r la iz q u ie rd a

fc 3 - fL U i
E = E- E

9 * •+ * > « »
=> I¿ + id: * id ,
=> id, + id; * id.

Fig. 4 .2 0 . El m a n g o A -+ p en el árbol d e análisis sintáctico para apw .

P a ra facilitar la n o ta c ió n se h a n p u e s to s u b ín d ic e s a los s ím b o lo s id y se h a s u b r a ­
y a d o u n m a n g o d e c a d a fo rm a d e frase d e re c h a . P o r e je m p lo , id ( es u n m a n g o d e la
f o r m a d e frase d e r e c h a ¡d| + id? * id*, p o r q u e ¡d es el la d o d e r e c h o d e la p ro d u c c ió n
4.5 ANALISIS SINTA C TIC O A S C E N D E N T E 203

E - > id , y s u s titu ir id , p o r E p r o d u c e la f o r m a d e frase d e r e c h a p re v ia E + id 2 * id».


O b sé rv e se q u e la c a d e n a q u e a p a re c e a la d e r e c h a d e u n m a n g o c o n tie n e só lo s ím ­
b o lo s te rm in a le s .
P u e s to q u e la g ra m á tic a (4 .1 6 ) es a m b ig u a , h a y o tr a d e riv a c ió n p o r la d e r e c h a d e
la m is m a c a d e n a :

e 3 K l£

E + E * id 3

3- E + « 2 * id ,

C o n s id é re s e la fo rm a d e frase d e r e c h a E + E * id ,. E n esta d e riv a c ió n . E + E e s u n


m a n g o d e E + E * id 3, m ie n tr a s q u e i d , p o r si m i s m o e s u n m a n g o d e esta m ism a
fo rm a d e frase d e r e c h a según la d e r iv a c ió n a n te rio r.
L a s d o s d e riv a c io n e s p o r la d e r e c h a d e este e je m p lo s o n a n á lo g a s a las d o s d e r i­
v a c io n e s p o r la iz q u ie r d a d e l e je m p lo 4 .6 . La p r im e r a d e riv a c ió n le d a a * u n a m a ­
y o r p re c e d e n c ia q u e a + , m ie n tr a s q u e la s e g u n d a le d a a + la m a y o r p reced e n cia.

P od a

S e p u e d e o b te n e r u n a d e riv a c ió n p o r la d e r e c h a e n o rd e n in v e rs o m e d i a n t e la “ p o d a
d e m a n g o s ” . E s d e c ir, se c o m ie n z a c o n u n a c a d e n a d e te rm in a le s w q u e se desee
a n a liz a r s in tá c tic a m e n t e . Si w es u n a frase d e la g r a m á tic a e n c u e s tió n , e n to n c e s
ví- = y,,. d o n d e y„ e s la //-ésim a f o r m a d e frase d e r e c h a d e u n a . a ú n d e s c o n o c id a , d e ­
riv ació n p o r la d e re c h a .

S = 7o 3 Y» 3 Y: 3 ••• 3 7 .-. 3 7 , = *■.

P a ra r e c o n s tr u ir esta d e riv a c ió n e n o r d e n in v e rso , se c o lo c a el m a n g o (3„ e n y„ y se


re e m p la z a p„ p o r el la d o iz q u ie r d o d e a lg u n a p ro d u c c ió n A„ —* p„ p a r a o b te n e r la
(n - 1 E ésim a f o r m a d e frase d e r e c h a y„_,. O b sé rv e se q u e a ú n n o se sa b e c ó m o e n ­
c o n t r a r lo s m a n g o s , p e r o p r o n t o se v e rá n los m é to d o s p a r a hacerlo.
D e s p u é s se re p ite este p ro ceso . E s d e c ir, se s itú a el m a n g o p„ i e n y„ i y se r e ­
d u c e este m a n g o p a ra o b te n e r la f o r m a d e frase d e re c h a y„ 2* Si al c o n t i n u a r este
p ro c e s o se p r o d u c e u n a f o r m a d e frase d e r e c h a q u e c o n s te só lo del s ím b o lo inicial
S , e n to n c e s se p a r a y se a n u n c i a la re a liz a c ió n c o n é x ito del a n álisis s in tá c tic o . La
in v e rs a d e la s e c u e n c ia d e p ro d u c c io n e s u tiliz a d a e n estas re d u c c io n e s es u n a deri-
, v ació n p o r la d e r e c h a d e la c a d e n a d e e n tra d a .

E je m p lo 4 .2 3 . C o n s id é re s e la g r a m á tic a (4 .1 6 ) del e je m p lo 4 .2 2 y la c a d e n a d e e n ­
tr a d a id i + ¡d: * id 3. L a s e c u e n c ia d e re d u c c io n e s q u e se m u e s tr a e n la fig u ra 4.21
re d u c e id , + id : * id , al s ím b o lo inicial E . O b sé rv e se q u e la se c u e n c ia d e f o r m a s de
frase d e r e c h a d e este e j e m p lo e s p r e c i s a m e n t e la in v e rs a d e la s e c u e n c ia d e la p ri­
m e r a d e riv a c ió n p o r la d e r e c h a d e l e je m p lo 4 .2 2 . □
204 AN ALISIS SINTA CTIC O

F o r m a df. F r a s e D e r e c h a M a n g o P r o d u c c ió n d e R e d u c c ió n

id , + id: * id? ¡d, F - > id


/: + id : * ¡d? id> id
E + E * id? ¡di E - + id
E + E* E E *E E E* E
E + E E + E E-+ E + E
E

lig . 4.21. R educciones realizadas por el a n a liz a d o r sintáctico p o r d esp laz am ie n to y


reducción.

Im p la n ta c ió n p or m e d io d e u n a p ila d e l a n á lis is s in tá c tic o


por d e s p la z a m ie n to y red u cción

H a y d o s p r o b le m a s a re so lv e r si se va a h a c e r el a n á lis is s in tá c tic o m e d i a n t e p o d a .
El p r im e r o c o n s is te e n s itu a r la s u b e a d e n a a re d u c ir e n u n a f o r m a d e frase d e re c h a ,
y el se g u n d o , e n d e t e r m i n a r q u é p r o d u c c ió n eleg ir e n c a so d e q u e h a y a m á s d e u n a
p ro d u c c ió n c o n d ic h a s u b e a d e n a e n el la d o d e r e c h o . A n te s d e c o n s id e r a r estas c u e s ­
tio n es. c o n sid é re se p r im e r o el tip o d e e s tr u c tu r a s d e d a t o s q u e se d e b e u tiliz a r en un
a n a liz a d o r s in tá c tic o p o r d e s p la z a m ie n to y re d u c c ió n .
U n m o d o a d e c u a d o d e i m p l a n t a r u n a n a liz a d o r s in tá c tic o p o r d e s p la z a m ie n to y
re d u c c ió n e s m e d ia n te la u tiliz a c ió n d e u n a p ila p a r a m a n e ja r los s ím b o lo s g r a m a ­
ticales. y u n buffer d e e n t r a d a p a r a m a n e ja r la c a d e n a n* q u e se h a d e a n a liz a r. Se
u tiliz a $ p a r a m a r c a r el fo n d o d e la p ila y el e x t r e m o d e r e c h o d e la e n t r a d a . Al p r i n ­
c ip io . la p ila e s tá v acia, y la c a d e n a w e s tá e n la e n tr a d a , c o m o sigue:

P il a E n tr a d a

S wS

El a n a liz a d o r s in tá c tic o f u n c io n a d e s p la z a n d o c e r o o m á s s ím b o lo s d e la e n t r a d a a
la p ila h a s ta q u e u n m a n g o (3 esté e n su c im a . E n to n c e s , el a n a l iz a d o r re d u c e p al
la d o iz q u ie rd o d e la p ro d u c c ió n a d e c u a d a . E l a n a liz a d o r re p ite este la z o h a s ta q u e
d e te c ta un e r r o r o h a s ta q u e la pila c o n tie n e el s ím b o lo inicial y la e n tr a d a está vacia:

P il a E n tr a d a

SS $
D e s p u é s d e esta c o n fig u ra c ió n , el a n a liz a d o r se p a r a y a n u n c i a la te r m in a c ió n con
é x ito del a n álisis sin tá ctic o .

E je m p lo 4 .2 4 . H á g a se el r e c o r r id o p a s o a p a so d e las a c c io n e s q u e p u e d e re a liz a r u n
a n a liz a d o r s in tá c tic o p o r d e s p la z a m ie n to y re d u c c ió n p a r a a n a liz a r la c a d e n a d e e n ­
tr a d a id , + id : * id? s e g ú n la g r a m á tic a (4.1 6). u tiliz a n d o la p r im e r a d e r iv a c ió n del
e je m p lo 4 .2 2 . L a s e c u e n c ia se m u e s tr a e n la figura 4 .2 2 . O b s é rv e s e q u e . c ó m o la g ra ­
m á tic a (4 .1 6 ) tie n e d o s d e riv a c io n e s p o r la d e r e c h a p a r a esta e n t r a d a , e x iste o tr a se­
c u e n c ia d e p a so s q u e p u e d e d a r u n a n a liz a d o r p o r d e s p la z a m ie n to y re d u c c ió n , n
4.5 A N A L I S I S SINTACTIC O A S C E N D E N T E 205

P ila Entrada A c ci ó n

(1 ) $ id, + id2 * id3$ desplazar


(2 ) Sid, + id2 * id $ 3 reducir por»K id
(3) SE + id2 * idiS desplazar
(4) SE + id> * id $ 3 desplazar
(5) SE + ¡d> * id $ 3 reducir por •F- -> id
(6) SE + E * id $ 3 desplazar
(7) SE + £* id 3$ desplazar
(8 ) SE + E * íd3 $ reducir por i id
19) SE + E * E $ reducir por iE - > E * E
(1 0 ) SE + E S reducir por .K E + E
(1 1 ) SE $ aceptar

Fig. 4.22. C onfiguraciones del an alizad o r sintáctico p o r d esp laz am ie n to y reducción


co n la e n tra d a id ( + id?*idi.

A u n q u e las p rin c ip a le s o p e r a c io n e s d e l a n a liz a d o r son el d e s p la z a m ie n to y la re­


d u c c ió n . ex isten e n re a lid a d c u a t r o a c c io n e s p o sib le s q u e u n a n a liz a d o r p o r d e s p la ­
z a m ie n to y re d u c c ió n p u e d e realizar: I ) d e s p la z a r. 2) r e d u c ir, 3) a c e p t a r y 4) erro r.

1. En u n a acció n d e desplazar. el sigu ien te s ím b o lo d e e n t r a d a se d e sp la z a a la c im a


d e la pila.

2. E n u n a a c c ió n d e reducir , el a n a l iz a d o r sa b e q u e el e x t r e m o d e r e c h o del m a n g o
está e n la c im a d e la pila. E n to n c e s d e b e localizar el e x tr e m o iz q u ie r d o del m a n g o
d e n t r o d e la pila y d e c id ir el n o te r m in a l c o n q u é d e b e s u s titu ir el m a n g o .

3. E n u n a a c c ió n d e aceptar, el a n a liz a d o r a n u n c i a la te r m in a c ió n c o n é x ito del


a n á lis is s in tá c tic o .

4. E n u n a a c c ió n d e error, el a n a l iz a d o r d e s c u b r e q u e se h a p r o d u c id o u n e r r o r
s in tá c tic o y lla m a a u n a r u ti n a d e re c u p e ra c ió n d e erro res.

H a y u n h e c h o i m p o r t a n t e q u e ju s tific a el u s o d e u n a p ila en el a n álisis s in tá c tic o


p o r d e s p la z a m ie n to y re d u c c ió n : el m a n g o s ie m p re a p a re c e r á e n la c i m a d e la pila,
n u n c a d e n tro . E sto re s u lta o b v io c u a n d o se c o n s id e r a n las fo rm a s p o sib le s d e dos
p a so s su c e siv o s e n c u a lq u ie r d e r iv a c ió n p o r la d e re c h a . E sto s d o s p a s o s p u e d e n ser
d e la fo rm a

(1) .5 => a A z => a f i f l i c => a p y y z

(2) S = * a B x A z => a B x y z => ay x y z

E n el c a so (1). A se s u stitu y e p o r p B \\ y d e s p u é s , el n o te rm in a l s itu a d o m á s a la


d e r e c h a B e n ese la d o d e r e c h o se s u s titu y e p o r y. E n el c a so (2). A se s u s titu y e o tr a
v ez el p r im e r o , p e r o e s ta v ez el la d o d e r e c h o es u n a c a d e n a y q u e c o n s ta só lo d e
te rm in a le s . El sig u ie n te n o te r m in a l s itu a d o m á s a la d e r e c h a B e s ta rá e n a lg ú n lu g a r
a la iz q u ie r d a d e y.
206 ANALISIS SINTA CTIC O

C o n s id é re s e el c a s o ( I ) e n o r d e n in v e rs o , d o n d e u n a n a l iz a d o r s in tá c tic o p o r d e s ­
p la z a m ie n to y re d u c c ió n a c a b a d e a lc a n z a r la c o n fig u ra c ió n

Pila En t r a d a
Sapy vr$

El a n a liz a d o r re d u c e a h o r a el m a n g o y a B p a r a a lc a n z a r la c o n fig u ra c ió n

P ila Entrada
$apB vzS

C o m o tí e s el n o te rm in a l m á s a la d e r e c h a e n a p f t y r . el e x tr e m o d e r e c h o d e l m a n g o
d e a p / f y z n o p u e d e a p a r e c e r d e n t r o d e la p ila . P o r ta n to , el a n a liz a d o r p u e d e des­
p la z a r la c a d e n a y s o b re la pila p a r a a lc a n z a r la c o n fig u ra c ió n

P ila Entrada
Sap By r$

e n la q u e p tf r es el m a n g o , q u e q u e d a re d u c id o a A.
E n el c a so (2). e n la c o n fig u ra c ió n

P ila Entrada
Say xyz$

el m a n g o y está e n la c im a d e la pila. D e s p u é s d e re d u c ir el m a n g o y a tí. el a n a li­


z a d o r p u e d e d e s p la z a r la c a d e n a x y p a r a c o lo c a r el sig u ie n te m a n g o y e n la c im a d e
la pila:

P ila En t r a d a
S a tíx *v r$

El a n a liz a d o r re d u c e a h o r a y a A.
E n a m b o s casos, d e s p u é s d e re a liz a r u n a re d u c c ió n , el a n a liz a d o r tu v o q u e d e s ­
p la z a r c e r o o m á s s ím b o lo s p a r a c o lo c a r el m a n g o sig u ie n te e n la c i m a d e la pila.
N u n c a t u v o q u e b u s c a r d e n t r o d e la p ila p a r a e n c o n t r a r el m a n g o . E ste a s p e c to d e
p o d a d o e s el q u e c o n v ie r te u n a p ila e n u n a e s tr u c tu r a d e d a to s p a r tic u la r m e n te a d e ­
c u a d a p a r a a p lic a r u n a n a liz a d o r s in tá c tic o p o r d e s p la z a m ie n to y re d u c c ió n . A ú n
q u e d a p o r e x p lic a r c ó m o e le g ir la s a c c io n e s p a r a q u e el a n a l i z a d o r p o r d e s p la z a ­
m i e n to y re d u c c ió n tra b a je a d e c u a d a m e n t e . L os a n a liz a d o r e s s in tá c tic o s L R y p o r
p re c e d e n c ia d e o p e r a d o r e s s o n d o s d e e s ta s té c n ic a s y se e s tu d ia r á n e n breve.

Prefijos viables

L o s p re fijo s d e las f o r m a s d e frase d e r e c h a q u e p u e d e n a p a r e c e r e n la pila d e u n a n a ­


liz a d o r sin tá ctic o p o r d e s p la z a m ie n to y red u c c ió n se d e n o m i n a n prefijos viables. U n a
d e fin ic ió n e q u iv a le n te d e u n p re fijo v ia b le e s la d e q u e es u n p re fijo d e u n a fo rm a
d e frase d e r e c h a q u e n o c o n t i n ú a m á s a llá del e x tr e m o d e r e c h o d e l m a n g o s itu a d o
m á s a la d e r e c h a d e esta f o r m a d e frase. C o n e s ta d e fin ic ió n , s ie m p re e s p o sib le a ñ a ­
d ir s ím b o lo s te r m in a le s al final d e u n p re fijo v ia b le p a r a o b te n e r u n a f o r m a d e frase
d e re c h a . P o r ta n to , a p a r e n t e m e n t e n o h a y e r r o r s ie m p re q u e la p o r c ió n e x a m in a d a
d e la e n t r a d a h a s ta u n p u n t o d a d o p u e d a re d u c irs e a u n p re fijo viable.
4.5 ANALISIS SIN T A C T IC O A S C E N D E N T E 207

C o n flic to s d u r a n te e l a n á lis is s in tá c tic o p or d e s p la z a m ie n to y red u cción

E x isten g r a m á tic a s in d e p e n d ie n te s d e l c o n te x to p a r a la s c u a le s n o se p u e d e n u tiliz ar


a n a liz a d o re s s in tá c tic o s p o r d e s p la z a m ie n to y re d u c c ió n . T o d o a n a liz a d o r p o r d e s ­
p la z a m ie n to y re d u c c ió n p a r a e s ta s g r a m á tic a s p u e d e a lc a n z a r u n a c o n fig u ra c ió n en
la q u e el a n a liz a d o r s in tá c tic o , c o n o c ie n d o el c o n t e n id o to ta l d e la p ila y el sig u ie n te
s ím b o lo d e e n tr a d a , n o p u e d e d e c id ir si d e s p la z a r o re d u c ir (u n conflicto d e despla­
zam iento/reducción), o n o p u e d e d e c id ir q u é tip o d e re d u c c ió n e fe c tu a r ( u n conflicto
d e reducción/reducción). A c o n t in u a c i ó n se v e rá n a lg u n o s e je m p lo s d e c o n s tr u c c io ­
nes s in tá c tic a s q u e d a n lu g a r a d ic h a s g ra m á tic a s . T é c n ic a m e n te , estas g ra m á tic a s
n o están d e n t r o d e la clase L R (k) d e g ra m á tic a s d e fin id a e n la secció n 4.7: se les
d e n o m in a g r a m á tic a s n o L R . L a A: d e LR(/c) se refiere al n ú m e r o d e s ím b o lo s d e
p re a n á lisis s o b re la e n tr a d a . P o r lo g en eral, la s g r a m á tic a s u tiliz a d a s e n c o m p ila c ió n
se in c lu y e n e n la clase L R (1 ). c o n u n s ím b o lo d e a n tic ip a c ió n .

E je m p lo 4 . 2 5 . U n a g ra m á tic a a m b ig u a n o p u e d e s e r n u n c a L.R. P o r e je m p lo , c o n ­
sidérese la g ra m á tic a (4 .7 ) d e e l s e a m b ig u o d e la secció n 4.3:

prop - * i f ex p r th e n prop
( i f ex p r th e n prop e l s e prop
' o tro

Si se tie n e u n a n a liz a d o r s in tá c tic o p o r d e s p la z a m ie n to y re d u c c ió n e n la c o n fig u ­


ración

Pita Entrada
. . . i f expr th e n prop e ls e . . . $

n o se p u e d e s a b e r si i f e x p r th e n prop e s el m a n g o , in d e p e n d ie n te m e n te d e lo q u e
a p a r e z c a d e b a j o d e él e n la p ila . A q u í h a y u n c o n f lic to d e d e s p l a z a m i e n t o / r e d u c ­
c ió n . D e p e n d ie n d o d e lo q u e siga al e l s e d e la e n tr a d a , p u e d e s e r c o r r e c to r