La forma de aumentar la capacidad expresiva de los árboles de derivación es añadir información en los nodos, mientras se recorre el árbol en profundidad.
Figura 1: Ejemplo de AST let x: Int <- 0 in e
Una tabla de símbolos es una estructura que permite almacenar, eliminar y consultar de forma eficiente símbolos definidos en un programa. Tiene las siguientes operaciones:
Añadimos dos operaciones a la tabla de símbolos:
Si tenemos la siguiente porción de código de ensamblador:
add $r1 ,$r2, $r3
¿Qué tipos tienen los registros?
El objetivo del chequeo de tipos es comprobar que todos los métodos que se utilizan en un programa utilizan los tipos correctos.
Demostrar que \(1+2*3\) tiene tipo \(INT\), añadiendo las reglas necesarias.
Un conjunto de reglas para la inferencia de tipos tiene la propiedad de solidez si, cada vez que se deduce un tipo, entonces el objeto tiene ese tipo para cualquier entrada.
Si \(x\) es el nombre de la variable, y tenemos que ponerle tipo, ¿cual es la regla que debemos escribir?
Un ambiente de tipos (type environment) es una estructura que da tipos a las variables libres.
Sea \(O\) una estructura de datos que, a cada identificador devuelve el tipo del objeto.
Utilizaremos la siguiente notación: