Professional Documents
Culture Documents
Teoría de Compiladores
Agenda
Introducción
Contenidos de la Tabla de Símbolos
Operaciones con la Tabla de Símbolos
Organización de la Tabla de Símbolos
Lenguajes no estructurados en bloques
Lenguajes estructurados en bloques
Tablas de símbolos orientadas a objetos
Introducción
El A. Sintac. se limita a comprobar, mediante una GLC, que
un identificador forma parte de una expresión. Una vez
comprobado que la sentencia es sintácticamente correcta,
el A. Sem. deberá verificar que el identificador empleado
como parte de una expresión haya sido declarado
previamente. Para llevar a cabo esta tarea, es típica la
utilización de una estructura de datos adicional
denominada tabla de símbolos.
TIPO
DESCRIPTOR DE FICHEROS
Otros Atributos
Utilizan información de la TS en tiempo de ejecución, por
lo que las distintas implementaciones de los compiladores
incorporan información adicional en la TS para estas
herramientas que acompañan a los compiladores.
Las listas de referencias cruzadas son otros tipos de
atributos que proporcionan una ayuda importante cuando
se está en fase de depuración.
Identificador Tipo Dimensión Declarada en Referencias
anho int 0 5 11, 23, 25
b real 0 5 10, 11, 13, 23
companhia int 1 2 9, 14, 25
forma1 char 2 4 36, 37, 38
m proc 0 6 17, 21
Operaciones con la Tabla de Símbolos
+atributo Tipo
+contiene nombre
n
Clase +extiende
n
nombre
+contiene +metodo Funcion
+valor retorno
posicion
+contiene
Jerarquía deTipos
Relación cualificada y atribuida para determinar el componente de la clase y los atributos.
Jerarquía deTipos
La herencia se implementa mediante interfaces y clases de manera que las interfaces
pueden heredar entre ellas y las clases pueden heredar de otras clases o implementar
interfaces.
Ejemplo
int i;
float f;
main() {
int f;
read f;
i = f;
write i + 2;
}
Modelos deDescripción sobre elAST
AST del código del ejemplo
Modelos deDescripción sobre elAST
Insertar una declaración y referenciar un identificador
Modelos deDescripción sobre elAST
Estructura AST-TS resultante una vez terminada la visita de identificación
Modelos de Descripción sobre el AST
Árbol AST decorado
resultante de la primera
pasada del visitor
Tipos deUsuario
1: struct Concepto {
2: int cantidad;
3: String descrip;
4: float precio;
5: };
6:
7: main() {
8: int i;
9: i = 2;
10: Concepto con;
11: con.cantidad = 1;
12: con.descrip = "teléfono";
13: con.precio = 240.00;
14: int a[5];
15: a[i] = 7;
16: }
Tipos deUsuario
Árbol AST generado por el analizador sintáctico para el ejemplo
Tipos deUsuario
Inserción del tipo Struct
Tipos deUsuario
Referencias de declaración y tipo en el árbol AST para el tipo Struct
Tipos deUsuario
Declaración de arreglos
Declaraciones Forward
Declaración de prototipos