Sie sind auf Seite 1von 16

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.
Compiladores
6
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

Das könnte Ihnen auch gefallen