jhjj

Páginas: 7 (1532 palabras) Publicado: 18 de julio de 2013
Tabla de símbolos


1.- Introducción

La tabla de símbolos se implementará con una estructura de vector que contendrá registros variantes. Se irá insertando en ella los símbolos que se van declarando en el código del programa.

Esta tabla de símbolos tiene la particularidad de que debe permanecer tras el proceso de compilación, para poder visualizar correctamente la gestión de lamemoria en tiempo de ejecución. Para ello se utilizará una estructura en forma de árbol de bloques, según el anidamiento de los mismos. Se utilizará una estructura algo diferente a una tabla de símbolos común, que permitirá seguir la evolución del proceso de compilación.

Básicamente se utilizarán dos pilas durante la compilación, cuyos fundamentos se explicarán más tarde, y al final, la tabla sevolcará en un fichero, de manera que conserve la forma de árbol de bloques.


2.- Tipos de símbolos

Los tipos de símbolos que se insertarán en la tabla de símbolos son los siguientes:

a) Tipobase: Se ha decidido incluir al principio de la tabla de símbolos los cuatro tipos predefinidos (Integer, LongInt, Char, Boolean), que se situarán al inicio del primer bloque. Esto se hace porquelas variables contendrán un puntero al tipo que les corresponda.

b) Etiqueta.

c) Constante.

d) Tipodef: Tipos definidos.

e) Variable.

f) Función: Se refiere a procedimientos y funciones. [¿POR QUÉ NO SEPARAR?]

g) Ristra.

h) Matriz.

i) Puntero.

j) Enumerado: Para listas de identificadores.

k) Registro: Tendrá su propia lista de campos. Si tiene partesvariantes, contendrá apuntadores a las mismas.

l) Variante: Corresponde a la parte variante del registro.


3.- Estructura de los registros

Parte fija:

Nombre

Tipo de símbolo


Parte variante:

· Tipobase: - Tamaño en bytes.


· Etiqueta: - Procedimiento al que pertenece.
- Nivel de anidamiento del procedimientoal que pertenece.
- Nº de bloque dentro de lafunción/procedimiento que la engloba.
- Nivel de anidamiento de bloque, relativo a la función/proc al que pertenece.
- Flag que indica si se trata de un parámetro o no.

· Variable: - Procedimiento al que pertenece.
- Nivel de anidamiento del procedimientoal que pertenece.
- Nº de bloque dentro de la función/procedimiento que la engloba.
- Nivel de anidamiento de bloque, relativo a lafunción/proc al que pertenece.
- Puntero al tipo de datos (otro registro de la tabla).
- Flag que indica si es una variable o un parámetro.
- Modo de acceso cuando sea un parámetro.

· Constante: - Procedimiento al que pertenece.
- Nivel de anidamiento del procedimientoal que pertenece.
- Nº de bloque dentro de la función/procedimiento que la engloba.
- Nivel de anidamientode bloque, relativo a la función/proc al que pertenece.
- Valor.
- Tipo (directamente, no un puntero: número, NIL, string, constante).

· Función: - Procedimiento al que pertenece.
- Nivel de anidamiento del procedimientoal que pertenece.
- Nº de bloque dentro de la función/procedimiento que la engloba.
- Nivel de anidamiento de bloque, relativo a la función/proc al quepertenece.
- Tipo (Procedimiento o función).
[...]


[FALTA: ristra, matriz, tipodef, puntero, enumerado]

· Registro: - Nº de campos máximo (contando con los variantes).
- Tamaño del registro (máximo, con los variantes).
- Vector con los nombres de los campos.
- Tipo de cada campo.
- Desplazamiento de cada campo, relativo al registro.
- Nombre de la parte variante activa.· Variante: - Nº de campos.
- Tamaño de la parte variante.
- Puntero al tipo de cada campo.
- Dimensión.
- Puntero variante (vector).
- Lista de campos.
- Nombre de la parte variante activa.





4.- Funcionamiento de la tabla de símbolos


Como se dijo anteriormente, tenemos una estructura de árbol de bloques, en la cual simularemos un recorrido en...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • jhjj
  • jhjj
  • Jhjj
  • jhjj
  • jhjj jhj
  • jhjj
  • jhjj
  • Jhjj

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS