&
216758&&,Ï1'(81'(385$'253257$%/('(&Ï',*2
(
9$/8$'25'((;35(6,21(6
José L. A jona Fe nández, José M. P ie o Pé ez, R. Co chuelo Gil
Dp o. de Lenguajes y Sis emas In o má icos
Facul ad de In o má ica y Es adí ica
Uni e sidad de Se illa
Web: h p://www.lsi.us.es
En es e e ce a ículo e emos la o ma en la que pod á in e ac ua el usua io con el
depu ado , los comandos que pod á usa ; pa a despues cen a nos en la cons ucción del e aluado
de exp esiones.
&RPDQGRV,QWHUDFFLyQFRQHOXVXDULR
Una pa e p imo dial en el desa ollo del depu ado ha sido la in e acción que debe lle a a
cabo en odo momen o con el usua io. Pensemos que la unción de un depu ado de código es la
de ección de e o es en un p og ama. Pe o es a de ección se debe de basa en una colabo ación
in ensa en e la pe sona que se enca gue de ello y el p opio depu ado .
Pa a pode consegui es a colabo ación es esencial que el depu ado cuen e con una in e az
de usua io a a és de la cual eciba odo ipo de ó denes po pa e del mismo. Es as ó denes se án
ejecu adas po un obedien e depu ado . La in e az de usua io en nues o caso se basa en una línea
de comandos, muy simila a la que o ecen los sis emas ope a i os in e ac i os ales como MS-DOS
o UNIX. Po lo an o, la in e acción con el depu ado se lle a a cabo a a és de un p omp en
pan alla p epa ado pa a ecibi las ó denes.
Pensando siemp e en la posibilidad exis en e de que el p og ama que es emos depu ando
cons e de a ios módulos con enidos en sus co epondien es iche os de ex o, el p omp es á
pensado pa a que en odo momen o indique al usua io donde se encuen a den o del p og ama, y
es o simplemen e se consigue indicando el nomb e del iche o po donde a la aza de la ejecución
y la línea del mismo donde se encuen a esa aza. En conc e o, es e p omp iene el siguien e
aspec o:
( iche o:línea)? _
Como ya se ha dicho con an e io idad, el depu ado o ece una se ie de ó denes o comandos,
cada uno de los cuales iene una sin áxis y una semán ica de inida. La o e a de ó denes se ha
in en ado que ue a lo más po en e posible pa a da la posibilidad al usua io de ealiza una aza del
p og ama donde se le escapa an los menos de alles posibles. Un esumen de las ó denes que se
p e enden implemen a se elacionan en la abla 1:
ORDEN DESCRIPCIÓN
ÏUGHQHVGHD XGD GHWDOOHV
help Ayuda en línea del depu ado . O ece un esumen en pan alla de odos los comandos posibles.
line Mues a en pan alla la línea del p og ama uen e po donde a la aza de ejecución.
sou ce Mues a en pan alla el con enido de un iche o. Con es a o den se puede echa un is azo a los
iche os que cons i uyen el p og ama uen e.
ÏUGHQHVGHHMHFXFLyQ
nex Se ejecu a la línea de código co espondien e a la si uación ac ual de la aza y se pasa a la siguien e
ins ucción.
s ep Idén ica a la o den
QH[W
con la di e encia esencial de que se sal a la ejecución de las u inas.
un Se ejecu a el p og ama desde donde se es á has a que se llegue al inal de la ejecución o bien se
e alúe un pun o de up u a a “cie o”.
anima e Idén ica a la o den
UXQ
, solo que se puede especi ica un e aso en milisegundos en e cada
ins ucción del p og ama que se ejecu a.
ÏUGHQHVGHHYDOXDFLyQGHOYDORU WLSRGHXQDH[SUHVLyQ
wa ch Pe mi e e alua una de e minada exp esión, de ol iendo su alo y su ipo.
wha is Pe mi e an o mos a qué es cie o obje o de inido en el p og ama como e alua el ipo de un
de e minada exp esión.
ÏUGHQHVGHDVLJQDFLyQGHYDORUHV
se Pe mi e asigna a un de e minado obje o del p og ama un alo .
ÏUGHQHVGHPDQHMRGHSXQWRVGHUXSWXUD
b eak Pe mi e coloca un pun o de up u a en algún pun o del p og ama.
unb eak Pe mi e elimina un pun o de up u a p e iamen e colocado.
b eak Pe mi e isualiza los pun os de up u a colocados.
ÏUGHQHVGHVDOLGDGHOGHSXUDGRU
exi Salida inmedia a de la ejecución del p og ama.
TABLA 1. RESUMEN DE ÓRDENES DEL DEPURADOR.
([SUHVLRQHVGHOGHSXUDGRU
Una ez que se ha dado una idea de como in e ac úa el depu ado con el usua io y de las
ó denes que pod á ejecu a , enemos que pasa a de alla aspec os más conc e os ela i os a la línea
de comandos del mismo. Po lo an o, es obliga o io dedica a una sección de es e a ículo a las
exp esiones que pe mi e el depu ado .
Po
H[SUHVLyQ
podemos en ende a un conjun o de
RSHUDQGRV
que se elacionan en e sí
median e unos
RSHUDGRUHV
. Como consecuencia de al combinación, de la e aluación de una
exp esión siemp e se gene a un alo conc e o. Po ejemplo, una exp esión muy simple pudie a se
1+1, donde se iene un solo ope ado (la suma, +) y dos ope andos (los núme os 1). Como se pod á
imagina , exis en exp esiones muchos más complejas que es e ejemplo. De es a exp esión se
gene a á un alo , en es e caso numé ico (2).
Ya que podemos mezcla ope ado es di e en es en una misma exp esión, se necesi a de ini
siemp e lo que se conoce como
SUHFHGHQFLD
y
DVRFLDWLGDG
de los mismos. Con p ecedencia se hace
e e encia a la p io idad que se asigna a cada ope ado , es deci , qué o cual ope ado se e alúa an es
que o o. La asocia i idad de los ope ado es hace e e encia al o den de e aluación de a ios
ope ado es iguales.
O o aspec o impo an e de las exp esiones es que cada una de ellas iene asociado un ipo,
es deci , una de e minada exp esión puede se de ipo en e a, eal, e c. Debido a lo an e io , no se
puede aplica no malmen e cualquie ope ado sob e cualquie ipo de ope ando. De es o que exis a
lo que se llama
FRPSDWLELOLGDGGHWLSRV
en las exp esiones po la cual se especi ica qué ope ado es
se pueden aplica a qué ipos de ope andos y cúal es el ipo del esul ado de ealiza dicha ope ación
sob e los ope andos.
Pues bien, el depu ado de ine sus p opios ope ado es, ni eles de p ecedencia, asocia i idad
de los mismos, así como su sis ema de compa ibilidad de los ipos exis en es.
Una posible g amá ica abs ac a pa a el e aluado de exp esiones del depu ado se ía:
Bina ia :: i, d:Exp esion; op:Ope ado Bin /* OPERACIONES BINARIAS */
Una ia :: :Exp esion; op:Ope ado Un /* OPERACIONES UNARIAS */
/* OPERADORES BINARIOS */
Ope ado Bin :: Ope ado BA i /* A i mé icos */
| Ope ado BLog /* Lógicos */
| Ope ado BRel /* Relacionales */
| Ope ado BAcceso /* Acceso a Regis os, Uniones y A ays */
| Ope ado BAsig /* Pa a el comando SET -> Asignación*/
/* OPERADORES UNARIOS */
Ope ado Un :: MasU /* (+) una io */
| MenosU /* (-) una io */
| Indi eccion /* (*) Pa a pode accede al con enido de
pun e os, di de memo ia */
| Di eccion /* (&) Di ección del obje o */
| No /* (!) in e so lógico */
Ope ado BA i :: Suma /* (+) Suma */
| Res a /* (-) Res a */
| Mul ip /* (*) Mul iplicacion */
| Di ision /* (/) Di isión */
Ope ado BRel :: Mayo /* (>) Mayo */
| Meno /* (<) Meno */
| Mayo Ig /* (>=) Mayo o igual */
| Meno Ig /* (<=) Meno o igual */
| Dis in o /* (!=) Dis in o */
| Ig /* (==) Igual */
Ope ado BLog :: And /* (&&) And lógico */
| O /* (||) O lógico */
Ope ado BAcceso :: Aa ay /* ([]) Acceso a un elemen o de un a ay */
| A egis o /* (.) Acceso a un campo de un egis o o
unión*/
| A lecha /* (->) Acceso indi ec o a un campo del
egis o o unión*/
3UHFHGHQFLD DVRFLDWLYLGDGGHORVRSHUDGRUHV
La abla 2 mues a odos los ope ado es del depu ado . Es án o denados desde la
p ecedencia más al a, es deci , los más p io i a ios, hacia la p ecedencia más baja. Además, aquellos
ope andos que se encuen an en e líneas ienen el mismo ni el de p ecedencia. Po o a pa e, en
dicha abla ambién se indica la asocia i idad de los mismos, indicando con “izquie da” aquellos
cuya asocia i idad es po la izquie da, con “de echa” aquellos que la ienen po la de echa y con
“no asocia i o” aquellos a los que no se le aplica asocia i idad.
23(5$'25 '(6&5,3&,Ï1 $62&,$7,9,'$' 35(&('(1&,$
. Acceso a egis o Izquie da más al a
[] Acceso a elemen o de un a ay Izquie da
-> Acceso indi ec o a egis o Izquie da
! Negación lógica De echa
+ (una io) Más una io De echa
- (una io) Menos una io De echa
* (des e e encia) Con enido de un pun e o De echa
& Di ección De echa
* P oduc o Izquie da
/ Di isión Izquie da
+ Suma Izquie da
- Res a Izquie da
> Mayo que no asocia i o
< Meno que no asocia i o
>= Mayo o igual que no asocia i o
<= Meno o igual que no asocia i o
== Igual a no asocia i o
!= Dis in o de no asocia i o
&& And lógico Izquie da
|| O lógico Izquie da más baja
TABLA 2. PRECEDENCIA Y ASOCIATIVIDAD DE LOS OPERADORES.
&RPSDWLELOLGDGGHWLSRV
Veamos aho a la compa ibilidad de ipos pa a el depu ado , la compa ibilidad de ipos
impone es icciones sob e la u ilización de los ope ado es. Po ello es impo an e que quede
absolu amen e cla o qué clase de alo es podemos combina con los dis in os ope ado es que se
o ecen si se p e ende que la u ilización de las exp esiones en el depu ado sea co ec a.
Pues o que básicamen e los ope ado es exis en es se pueden clasi ica en
RSHUDGRUHV
ELQDULRV
(aquellos que necesi an dos ope andos pa a pode aplica se) y
RSHUDGRUHV XQDULRV
(aquellos que necesi an an solo un ope ando pa a pode aplica se), nos basa emos en es a
clasi icación pa a mos a la compa ibilidad de ipos espec o a es os ope ado es. Es deci , dado un
ope ado cualquie a, ¿qué ipos podemos combina con él?
La abla 3 mues a la compa ibilidad de ipos espec o a los ope ado es una ios. Es os, en
nues o caso son cinco, a sabe : el más y el menos una io (+,-), la indi ección o des e e encia (*), el
ope ado de di ección (&) y el in e so lógico o negación (!). En dicha abla, las columnas
ep esen an a es os ope ado es y las ilas a los dis in os ipos. Así po ejemplo, que exis a un “sí” en
la casilla co espondien e a la ila “En e o” y a la columna “+/- (Una io)” signi ica que dicho ipo sí
es compa ible espec o a es os ope ado es una ios y, po lo an o, una exp esión al como +6 ó -5
se ían co ec as.
8QDULR 1RW ,QGLUHFFLyQ 'LUHFFLyQ
(QWHUR
sí no no Sí
% WH
sí no no Sí
5HDO
sí no no Sí
%RROHDQR
no sí no Sí
&DUiFWHU
no no no Sí
&DGHQD
no no no Sí
(QXPHUDFLyQ
sí no no Sí
9DF R
no no no No
$UUD
no no no Sí
5HJLVWUR
no no no Sí
8QLyQ
no no no Sí
3XQWHUR
no no sí Sí
TABLA 3. COMPATIBILIDAD DE TIPO RESPECTO A LOS OPERADORES UNARIOS.
En la abla 3 podemos obse a a ios pun os que pueden esul a con usos:
• El ipo
9DF R
es algo especial pues a él no le podemos aplica ninguno de los ope ado es
an e io es. Es o es debido a que nunca nos amos a encon a con el caso de que exis an
a iables de es e ipo. Po ejemplo, no iene sen ido que un compilado dé como álido
una decla ación al como
D9DF R
pues ¿qué ep esen a la a iable “a”? ¿qué amaño
ocupa en memo ia dicha a iable? Teó icamen e el ipo Vacío ep esen a el “nada”,
¿ iene algún sen ido ope a algo con la “nada”? E iden emen e, NO. Sin emba go, como
en C, sí iene sen ido decla a a iables de ipo
3XQWHURD9DF R
pa a ep esen a obje os
que con ienen una di ección de memo ia que apun a a “yo no sé que ipo”, es deci , pa a
ep esen a una di ección de memo ia gené ica.
• El ope ado de di ección se puede aplica sob e cualquie ipo, excep uando al ipo
9DF R
.
Es o es así pues se puede ene en memo ia obje os de cualquie a de los ipos con los que
se cuen a y po lo an o pod emos sabe su di ección con es e ope ando.
Po o o lado, los ope ado es bina ios se pueden subdi idi a su ez en los siguien es g upos:
1. Ope ado es a i mé icos: + (suma), - ( es a), * (p oduc o), / (di isión).
2. Ope ado es elacionales: > (mayo ), < (meno ), >=(mayo o igual), <= (meno o igual),
==(igual), != (dis in o).
3. Ope ado es lógicos: && (and), || (o ).
4. Ope ado es de acceso: . (a egis o), [] (a a ay), -> (indi ec o a egis o).
5. Ope ado de asignación: =.
La abla 4 mues a la compa ibilidad de los ipos espec o a los ope ado es a i mé icos,
elacionales y lógicos. Los ope ado es de acceso y de asignación son un poco más especiales que
es os. El encabezado ho izon al de dicha abla hace e e encia al ipo del ope ando a la de echa del
ope ado co espondien e, mien as que el encabezado e ical se e ie e al ipo del ope ando a la
izquie da de ese ope ado .
7pUPLQR
,]TXLHUGD 7pUPLQR'HUHFKD
(QWHUR % WH 5HDO %RRO &DUDF &DGHQD (QXP 9DF R $UUD 5HJ 8QLRQ 3XQW
(QWHUR
A,R A,R A,R A,R A(+,-)
% WH
A,R A,R A,R A,R R
A(+,-)
5HDO
A,R A,R A,R A,R
%RRO
L
R(==)
&DUDF
R
&DGHQD
R
(QXP
A,R A,R A,R A,R R
A(+,-)
9DF R
$UUD
5HJ
8QLRQ
3XQW
R
A(+,-.) R
A(+,-) R
A(+,-) R(1)
(1) Independien emen e del ipo al que apun en.
A: Ope ado es A i mé icos [en e pa én esis aquel subconjun o de és e a los que se aplica].
R: Ope ado es Relacionales [en e pa én esis aquel subconjun o de és e a los que se aplica].
L: Ope ado es Lógicos.
casilla en blanco: los ipos no son compa ibles espec o a ningún ope ado .
TABLA 4. COMPATIBILIDAD DE TIPOS EN OPERADORES BINARIOS ARITMÉTICOS, RELACIONALES Y LÓGICOS.
Po úl imo, la abla 5 mues a la compa ibilidad de ipos espec o al ope ado de asignación.
La lec u a que se hace de la misma es idén ica a la abla 4, excep o que en es e caso solo se indica si
es compa ible, o no lo es, asigna al ipo de la exp esión de la izquie da del signo de asignación (=)
el ipo de la de echa del mismo.
7pUPLQR
,]TXLHUGD 7pUPLQR'HUHFKD
(QWHUR % WH 5HDO %RRO &DUDF &DGHQD (QXP 9DF R $UUD 5HJ 8QLRQ 3XQW
(QWHUR
sí sí No no no no Sí no no no no no
% WH
no sí No no no no No no no no no no
5HDO
sí sí Sí no no no Sí no no no no no
%RRO
no no No sí no no No no no no no no
&DUDF
no no No no sí no No no no no no no
&DGHQD
no no No no no sí No no no no no no
(QXP
sí sí No no no No Sí no no no no no
9DF R
no no No no no No No no no no no no
$UUD
no no No no no No No no sí(1) no no no
5HJ
no no No no no No no no no sí(2) no no
8QLRQ
no no No no no No no no no no sí(3) no
3XQW
sí sí No no No No sí no no no no sí(4)
(1): ambos a ays deben se es uc u almen e iguales.
(2): ambos egis os deben se es uc u almen e iguales.
(3): ambas uniones deben se es uc u almen e iguales.
(4): ambos pun e os deben apun a a obje os ipos “asignables”, o bien alguno de ellos se un “Pun e o a Vacío”.
TABLA 5. COMPATIBILIDAD DE TIPOS EN LA ASIGNACIÓN.
7LSR5HVXOWDGRGHODHYDOXDFLyQGHXQDH[SUHVLyQ
La abla 6 mues a la o alidad de combinaciones a i mé icas posibles que podemos hace
con dichos cua o ipos numé icos ( an o a ni el de ope ado es bina ios como una ios) y a su ez el
ipo que se induce de e alua la exp esión a i mé ica con la combinación co espondien e.
2SHUDGRUHV%LQDULRV
7pUPLQR 7pUPLQR'HUHFKR 2SHUDGRUHV
,]TXLHUGR (QWHUR % WH (QXPHUDFLyQ 5HDO 8QDULRV
(QWHUR
En e o En e o En e o Real En e o
% WH
En e o By e En e o Real By e
(QXPHUDFLyQ
En e o En e o En e o Real En e o
5HDO
Real Real Real Real Real
TABLA 5. TIPOS EVALUADOS EN EXPRESIONES NUMÉRICAS.
Con espec o a los ope ado es lógicos y elacionales, deci que el ipo del esul ado de la
e aluación se á siemp e lógico, es deci , o CIERTO o FALSO.
El esul ado de los ope ado es de acceso a uniones y egis os se á el ipo de inido pa a el
campo al que es amos accediendo. Igualmen e al accede a un a ay el ipo esul ado se á el ipo
base del a ay (el ipo de los elemen os almacenados en el a ay).
Al aplica el ope ado de con enido (*) sob e un pun e o, ob end emos como ipo esul ado el
ipo del obje o apun ado po ese pun e o. Igualmen e, el ope ado di ección (&) sob e un obje o de
WLSRD
cualquie a da á como ipo esul ado un pun e o a
WLSRD
(OHYDOXDGRUGHH[SUHVLRQHV
Una ez de inidas la p ecedencia, asocia i idad y la compa ibilidad de ipos pa a las
exp esiones que pe mi i á el depu ado , la o ma de p ocede se á la siguien e:
1. Se analiza á léxicamen e y sin ác icamen e la exp esión.
2. Se analiza á semán icamen e, pa a ello a pa i del á bol de sin axis abs ac a de la
exp esión, se á necesa io hace un chequeo de ipos que nos pe mi a sabe si la exp esión
es semán icamen e co ec a (los ope ado es pueden se aplicados a los ope andos).
También se ía necesa io comp oba si el usua io in oduce co ec amen e los índices de los
a ays o si accede a campos exis en es de egis os...
3. Una ez de e minada que la exp esión es co ec a, sólo queda ía da el esul ado de su
e aluación.
Análisis
léxico Análisis
sin ác ico Análisis
semán ico
Exp esión Tokens
Á bol de
sin axis
Abs ac a
Resul ado
de e alua la
exp esión
)LJXUD3URFHVRGHHYDOXDFLyQGHH[SUHVLRQHV