scieee Science in your language
[es] (orig)

Construcción de un depurador portable de código. Evaluador de expresiones (LSI-2000-03)

Abstract

En este tercer artículo veremos la forma en la que podrá interactuar el usuario con el depurador, los comandos que podrá usar; para despues centrarnos en la construcción del evaluador de expresiones.

Read accessible full text

Construcción de un depurador portable de código. Evaluador de expresiones (LSI-2000-03)

Author: Arjona Fernández, José Luis; Prieto Pérez, José M.; Corchuelo Gil, Rafael
Year: 2000
Source: https://idus.us.es/bitstreams/b97020dd-ce05-42d5-bb53-c429616558e8/download
&
216758&&,Ï1'(81'(385$'253257$%/('(&Ï',*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,QWHUDFFLyQFRQHOXVXDULR
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
ÏUGHQHVGHD 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.
ÏUGHQHVGHHMHFXFLyQ
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.
ÏUGHQHVGHHYDOXDFLyQGHOYDORU WLSRGHXQDH[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.
ÏUGHQHVGHDVLJQDFLyQGHYDORUHV
se Pe mi e asigna a un de e minado obje o del p og ama un alo .
ÏUGHQHVGHPDQHMRGHSXQWRVGHUXSWXUD
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.
ÏUGHQHVGHVDOLGDGHOGHSXUDGRU
exi Salida inmedia a de la ejecución del p og ama.
TABLA 1. RESUMEN DE ÓRDENES DEL DEPURADOR.
([SUHVLRQHVGHOGHSXUDGRU
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
FRPSDWLELOLGDGGHWLSRV
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 DVRFLDWLYLGDGGHORVRSHUDGRUHV
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.
&RPSDWLELOLGDGGHWLSRV
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
D9DF 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
3XQWHURD9DF 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.
7LSR5HVXOWDGRGHODHYDOXDFLyQGHXQDH[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
WLSRD
cualquie a da á como ipo esul ado un pun e o a
WLSRD
(OHYDOXDGRUGHH[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
)LJXUD3URFHVRGHHYDOXDFLyQGHH[SUHVLRQHV