Documentos de Académico
Documentos de Profesional
Documentos de Cultura
11 Analisis Semantico
11 Analisis Semantico
Semntica
Cul es el significado del programa
Es ms difcil dar una definicin matemtica precisa
Por qu hacer anlisis semntico
Asegurarnos que el programa cumple con la
definicin del lenguaje de programacin
Proveer mensajes de error tiles al usuario
Resumen
Introduccin
Tablas de Smbolos
Chequeo Semntico
Chequeo de Tipos
Semntica de un Programa Orientado a Objetos
Tipos Polimrficos
foo(int B[128]) { }
Dos entradas de tipo distintas en dos tablas de smbolos
distintas
Pero deberan ser iguales
Equivalencia Estructural
Si la expresin de tipo de dos tipos tiene la
misma construccin, entonces son equivalentes
Misma Construccin
Tipos base equivalentes
Mismo conjunto de constructores de tipo son
aplicados en el mismo orden (e.d. rbol de tipos
equivalente)
Coercin de Tipos
Conversin implcita de un tipo a otro tipo
Ejemplo
int A;
float B;
B = B + A
Dos tipos de coercin
widening conversions
narrowing conversions
Widening conversions
Conversiones sin prdida de informacin
Ejemplos:
integers a floats
shorts a longs
Narrowing conversions
Conversiones que pueden perder informacin
Ejemplos:
integers a chars
longs a shorts
Raro en lenguajes
Type casting
Conversin explcita de un tipo a otro
Tanto widening como narrowing
Ejemplo
int A;
float B;
A = A + (int)B
Typecasting ilimitado puede ser peligroso
Pregunta:
Podemos asignarle un solo tipo a todas las
variables, funciones y operadores?
Qu hay de +, cul es su tipo?
vehicle A;
A.print_num_wheels( )
Herencia Mltiple
Cuando cada clase puede tener ms de una
superclase inmediata
Jerarqua de Herencia
La relacin subclase/superclase
Definida por los extends
Puede ser modelada mediante un grafo acclico
dirigido (DAG)
Jerarqua de Herencia
vehicle
class vehiculo {
}
class yuppie_toys {
}
yuppie_toy teen_toy
vehicle
toys
yuppie_toy teen_toy
vehicle