Professional Documents
Culture Documents
Introduccin
Las reglas lxicas, de forma general, dictan que cada uno de los smbolos
empleados escritos en el lenguaje, deben de pertenecer al alfabeto del
mismo; las reglas sintcticas, por medio de una serie de gramticas, definen
la estructura y el acomodo de las cadenas; y las reglas semnticas dicen que
las instrucciones escritas deben de tener sentido. Pero, para garantizar que
esto se cumpla, cada uno de ellos realiza una serie de operaciones. En
cuanto al semntico, lleva a cabo una serie de comprobaciones:
comprobaciones de unicidad; comprobaciones de enlace; comprobaciones de
tipo, etc.
En este escrito nos enfocaremos a la comprobacin de tipos del anlisis
semntico, y ms especficamente, a la manera en que los tipos son
manejados.
Existen dos categoras de tipos: tipos bsicos, y tipos construidos. Los tipos
bsicos corresponden a tipos atmicos sin una estructura interna, como
pueden ser int ,char , float , short ,boolean , etc. En cuanto a los lenguajes
construidos, son tipos que s cuentan con una estructura interna, como por
ejemplo String , Integer ; un tipo de dato abstracto definido por el
programador, como Persona, Transporte; un apuntador o una funcin (Ortn
et al, 2004).
P R
(1) expresion.et = boolean
(2) expresion.et = boolean
(3) expresion.et = char
(4) expresion.et = integer
(5) expresion.et = real
(6) expresion1.et = boolean
(7) expresion1.et = boolean
(8) expresion1.et = boolean
(9) expresion1.et = expresion2.et
(10) expresion1.et =
MayorTipo(expresion2.et,expresion3.et)
(11) expresion1.et =
MayorTipo(expresion2.et,expresion3.et)
(12) expresion1.et =
MayorTipo(expresion2.et,expresion3.et)
(13) expresion1.et =
MayorTipo(expresion2.et,expresion3.et)
(14) expresion1.et = integer
(15) expresion1.et = boolean
(16) expresion1.et = boolean
(17) expresion1.et = boolean
P B
(6) expresion2.et==boolean && expresion3.et==boolean
(7) expresion2.et==boolean && expresion3.et==boolean
(8) expresion2.et==boolean
(10) realOentero(expresion2.et,expresion3.et)
(11) realOentero(expresion2.et,expresion3.et)
(12) realOentero(expresion2.et,expresion3.et)
(13) realOentero(expresion2.et,expresion3.et)
(14) expresion2.et==integer && expresion3.et==integer
(15) realOentero(expresion2.et,expresion3.et) ||
(expresion2.et==char && expresion3.et==char)
(16) realOentero(expresion2.et,expresion3.et) ||
(expresion2.et==char && expresion3.et==char)
(17) realOentero(expresion2.et,expresion3.et) ||
(expresion2.et==char && expresion3.et==char)
Con esto, podemos darnos una idea de que existen dos tipos conversin:
explcita e implcita. En la conversin explcita, el programador indica el tipo
de destino. sta funciona como una llamada a una funcin, la cual recibe un
tipo y devuelve otro. Y en la conversin implcita, es el compilador quien
convierte automticamente elementos de un tipo de elemento a otro. En este
caso la conversin se lleva a cabo en la accin semntica de la regla donde
se realiza.
Ortn F., Cueva J., Luengo M., Juan A., Labra J., Izquierdo R. (2004). Anlisis
semntico en procesadores de lenguaje. Asturias, Espaa: Universidad de
Oviedo.
Pyster A. (1988). Compiler design and construction. New York, NY: Van
Nostrand Reinhold.