La labor de comprobación de tipos consiste en conferir a las
construcciones sintácticas del lenguaje la semántica de tipificación y en
realizar todo tipo de comprobaciones de dicha índole. Por su naturaleza, sin
embargo, ésta se encuentra repartida entre la fase de análisis semántico y la
generación de código intermedio.
·
Comprobaciones estáticas
Las comprobaciones estáticas recogen el compendio de todas aquellas
tareas de carácter semántico que, por su naturaleza, pueden ser realizadas
directamente durante la fase de compilación mediante el uso de artefactos y
mecanismos propios de dicha fase. Este tipo de comprobaciones son beneficiosas
puesto que confieren seguridad a la ejecución del programa.
Características
- Diferente de la dinámica en runtime.
- Ejemplo: comprobación de tipos, flujo de control, unicidad.
·
Comprobaciones dinámicas
Las comprobaciones dinámicas son aquellas que no se realizan durante la
fase de compilación y se delegan al momento de la ejecución del programa. Ello
requiere generar código ejecutable específicamente diseñado para realizar tales
comprobaciones. Los lenguajes con una carga excesiva de comprobaciones
dinámicas generan programas más largos, lentos e inseguros en ejecución.
Verificación de tipos
Comprueba la compatibildad de tipos de todas las expresiones del código
fuente recuperando la información durante la gestión de declaraciones. Además
se asegura de que no existe en el programa ninguna referencia a ningún símbolo
no declarado.
Inferencia de tipos
En lenguajes sin tipificación de variables o con sobrecarga se aplican
tareas de inferencia de tipos en el nivel gramatical de las expresiones para
resovler el tipo de datos de la expresión resultante en función del contexto de
evaluación.
No hay comentarios:
Publicar un comentario