Facultad Profesional de Ingeniería de Sistemas

Lenguajes y Compiladores Tabla de Símbolos

Lenguajes y Compiladores 1

Tabla de Símbolos
La Tabla de Símbolos (TS) es una estructura de datos que usa un compilador para manipular los identificadores que aparecen en un código fuente. Almacena todas las características necesarias de un identificador. La estructura y organización de la TS depende de las características del Lenguaje Fuente. La TS es consultada constantemente durante la compilación por tanto es importante que su organización sea eficiente.
Compiladores
2

Tabla de Símbolos
La TS normalmente está vigente sólo durante la compilación del programa fuente por lo que, en general, se ubica en la memoria principal. Es usada en varias fases de un compilador:
Semántico
» Para incluir nuevos identificadores » Para verificar si un identificador ya existe » Para verificación de tipos

Generación de código
» Para generar el código (direcciones de los operadores)
Compiladores
3

Tabla de Símbolos
Algunas TS contienen también las palabras reservadas del Lenguaje, esto implica que sea creada inicialmente con todas las posibles Palabras Reservadas, para que después se incluyan los identificadores del programa. En este caso el léxico debe usar la TS para ver si una cadena es o no una palabra reservada. Caso la TS contenga sólo identificadores, el léxico podrá mantener una Tabla de Palabras Reservadas para poder identificar si una cadena es o no palabra Reservada.
Compiladores
4

Tabla de Símbolos
La Tabla de Palabras reservada es una tabla estática que debe tener valores definidos por el mismo programa (constante). Debe estar organizada de manera a tener un acceso eficiente. La Tabla de palabras reservadas también debe incluir los nombres de las funciones intrínsecas del lenguaje.

Compiladores
5

Estructura de la TS
Tiene básicamente dos campos:
Nombre Atributos

Campo Nombre: almacena la cadena de caracteres que representa el identificador.
Algunos Lenguajes permiten que los identificadores varíen su tamaño hasta 64 caracteres, otros permiten sólo hasta 31 y algunos más antiguos sólo permitían hasta 7 caracteres. Dependiendo de diseño del Compilador éste campo puede ser de tamaño fijo o puede ser ser un campo de tamaño variable.
6

Compiladores

Estructura de la TS
Campo Atributo: asociado al nombre que generalmente es compuesto y puede contener:
Tipo: indica si el identificador es variable, constante, entero, real, procedimiento, función, etc. Indicador: si el identificador tiene valor definido o no Valor: si se trata de una constante Ambito del identificador: si fuera el caso Dimensión: (para arreglos) cuantas dimensiones y el rango para cada una

Compiladores
7

Estructura de la TS
Dirección asignada al identificador, generalmente es una posición relativa a una dirección base Número y tipo de parámetros (si fuera procedimiento o función)

Compiladores
8

Organización
Un aspecto muy importante de la TS es su organización de manera tal que su acceso sea eficiente. Se debe especificar las operaciones válidas sobre esta estructura y cada operación deberá estar asociada generalmente a una acción semántica (un método). La operaciones más frecuentes son:
Inclusión Consulta Modificación de algún subcampo de atributo
Compiladores
9

Organización
La TS debe organizarse de manera eficiente teniendo en cuenta las características del lenguaje. Se puede proponer:
Campos de tamaño fijo o variable Entradas ordenadas, tablas secuencial indexadas Listas ligadas Arboles binarios Arboles B Dispersión Una combinación de los métodos anteriores
Compiladores
10

Organización
Campos fijos
Nombre Atributo

Es usado generalmente cuando el nombre del identificador tiene un máximo de pocos caracteres.
Compiladores
11

Organización
Campo Nombre Variable
Nombre Atributos

Se usa generalmente cuando el número de caracteres máximo para un identificador es bastante grande.
Compiladores
12

Organización
Campos Variables
Nombre Atributos

Se usa cuando la estructura de la TS es muy variada para los diferentes tipos de entrada.
Compiladores
13

Inclusión
Esta operación se realiza cada vez que aparece un nuevo identificador en el programa fuente. La operación se ejecuta, generalmente, cuando no existe otro identificador con el mismo nombre. Normalmente se incluye el nombre del identificador y el tipo del mismo. Si se trata de un procedimiento o función será necesario crear entradas para los parámetros formales o realizar un proceso especial para guardar la declaración del procedimiento o función.
Compiladores
14

Consulta
Toda vez que aparece la referencia a un identificador es necesario verificar si éste ya está en la TS. Dependiendo del lenguaje si el identificador no está:
Hay que incluirlo (lenguajes sin declaración de variables) Hay un error (lenguajes con declaración de variables)

En el análisis Semántico se consulta para realizar la verificación de tipos (entero, real, arreglos, etc). En el generador de código se consulta para obtener la dirección asignada al identificador
Compiladores
15

Modificación
Algunos de los valores del atributo se conocen con posterioridad a la declaración/aparición por primera vez de la variable. En este caso será necesario realizar una operación de modificación sobre un atributo como por ejemplo:
Dirección de memoria asignada Si la variable tiene valor asignado o no.

Compiladores
16

Sign up to vote on this title
UsefulNot useful