Tabla de símbolos (compilador)

Tabla de símbolos (compilador)

En informática, una tabla de símbolos es una estructura de datos que usa el proceso de traducción de un lenguaje de programación, por un compilador o un intérprete, donde cada símbolo en el código fuente de un programa está asociado con información tal como la ubicación, el tipo de datos y el ámbito de cada variable, constante o procedimiento.

Una implementación común de una tabla de símbolos puede ser una tabla hash, la cual será mantenida a lo largo de todas las fases del proceso de compilación.

Puede tratarse como una estructura transitoria o volátil, que sea utilizada únicamente en el proceso de traducción de un lenguaje de programación, para luego ser descartada, o integrada en la salida del proceso de compilación para una explotación posterior, como puede ser por ejemplo, durante una sesión de depuración, o como recurso para obtener un informe de diagnóstico durante o después la ejecución de un programa.

Los símbolos en la tabla de símbolos pueden referirse a constantes, a funciones o a tipos de datos en el código fuente de un programa.

La tabla de símbolos forma parte de cada fichero que contiene el código objeto durante el enlazado o linking de los diferentes ficheros; recae en la responsabilidad del linker o enlazador resolver cualquier referencia no resuelta.

Contenido

Tabla de símbolos en lenguaje C

Como ya se dijo en el esbozo la tabla de símbolos es una estructura de datos que se crea en tiempo de traducción del programa fuente. Es como un diccionario variable, debe darle apoyo a la inserción, búsqueda y cancelación de nombres (identificadores) con sus atributos asociados, representando las vinculaciones con las declaraciones. Debe aclararse que no necesariamente deberá estar representada en una tabla como su nombre indica ya que también se emplean árboles, pilas , etc.

Los símbolos se guardan en la tabla con su nombre y una serie de atributos opcionales que dependerán del lenguaje y de los objetivos del procesador, este conjunto de atributos almacenados se denominan registro de la tabla de símbolos.

La siguiente representa una serie de atributos que no es necesaria para todos los compiladores, sin embargo cada uno de ellos se puede utilizar en la implementación de un compilador particular.

  • nombre del identificador.
  • dirección en tiempo de ejecución a partir del cual se almacenara el identificador si es una variable.
  • tipo del identificador. Si es una función el tipo que devuelve la función.
  • número de dimensiones del array (arreglo), o número de miembros de una estructura o clase, o números de parámetros si se trata de una función.
  • tamaño máximo o rango de cada una de las dimensiones de los array, si tiene dimensión estática.
  • etc.

Operaciones con la Tabla de símbolos

En general en la Tabla de símbolos (TS a partir de ahora) se realizan dos operaciones: la inserción y la búsqueda.

En C la operación de inserción se realiza cuando se procesa una declaración.

Hay dos posibilidades: que la TS esté ordenada (o sea, nombres de variables por orden alfabético) o que no esté ordenada.

Si está ordenada, entonces la operación de inserción llama a un procedimiento de búsqueda para encontrar el lugar donde colocar los atributos del identificador a insertar, por lo que en este caso la inserción lleva tanto tiempo como la búsqueda. En cambio, si no está ordenada la TS, la inserción se simplifica mucho aunque se complica la búsqueda, pues debe examinar toda la tabla.

En la búsqueda, se detectan los identificadores que no hayan sido declarados previamente, emitiendo un mensaje de error.

ejemplo en lenguaje C: Undefined símbolo 'x', si es una variable que desea usarse pero no se declaró.

En la inserción, se detectan identififcadores que ya han sido declarados previamente, emitiendo un mensaje de error

ejemplo en C: multiple declaration for 'x' si x ya estaba en TS.

Analizador Sintáctico(Parser)

Sintaxis: El orden correcto de las palabras

   Ej. Programa Fuente: 34:= *x - 640;
      Analex: NUM ASIGN POR ID MENOS NUM PTOCOMA
      Parser: "Error Sintáctico"

El Analizador semántico

Semántica: Significado de las frases.

Estando una frase del programa fuente ya analizada sintácticamente ("parseada") pasa al analizador semántico para verificar la intención del programador con esa frase: "Pasó por el parser y no presentó errores".

  Ejemplo:
    byte b;
    int v[3];
    String s;//Error semántico
    b = 4000; //out of range
    s = 6000; //incompatible type's o "Type mismatch"
    v[8]= 12; // out of range

Wikimedia foundation. 2010.

Игры ⚽ Нужно решить контрольную?

Mira otros diccionarios:

  • Compilador — «Compilación» redirige aquí. Para otras acepciones, véase recopilación. Diagrama a bloques de la operación de un buen compilador. Un compilador es un programa informático que traduce un programa escrito en un lenguaje de programación a otro… …   Wikipedia Español

  • Proceso de traducción de programas — Saltar a navegación, búsqueda Además de un traductor, se pueden necesitar otros programas para crear un programa objeto ejecutable. Un programa fuente se puede dividir en módulos almacenados en archivos distintos. La tarea de reunir el programa… …   Wikipedia Español

  • Variable externa — Una variable externa es, en los lenguajes de programación C y C++, una variable declarada con la palabra clave extern. Contenido 1 Campo de aplicación 2 Ejemplo (C) 3 Referencias …   Wikipedia Español

  • Biblioteca (informática) — Saltar a navegación, búsqueda Ilustración de una aplicación que utiliza la biblioteca libvorbisfile.so para reproducir un archivo Ogg Vorbis. En ciencias de la computación, una biblioteca (o librería) es un conjunto de subprogram …   Wikipedia Español

  • Compilers: Principles, Techniques, and Tools — Compiladores: Principios, técnicas y herramientas Autor Alfred V. Aho, Monica S. Lam, Ravi Sethi y Jeffrey D. Ullman Género libro de texto científico Idioma English …   Wikipedia Español

  • Microsoft BASIC — fue el primer producto de la compañía Microsoft. Su primera aparición fue en 1975 como Altair BASIC, que fue el primer BASIC (y de hecho el primer lenguaje de programación de alto nivel) disponible para el microcomputador MITS Altair 8800 El… …   Wikipedia Español

  • Lenguaje ensamblador — Para otros usos de este término, véase Ensamblador (desambiguación). Lenguaje de máquina del Intel 8088. El código de máquina en hexadecimal se resalta en rojo, el equivalente en lenguaje assembler en magenta, y las direcciones de memoria donde… …   Wikipedia Español

  • Juan el Apóstol — «San Juan el Evangelista», por El Greco. 1600. Museo del Prado (Madrid). Apóstol y Evangelista …   Wikipedia Español

  • Barranquilla — Saltar a navegación, búsqueda 10°59′16″N 74°47′20″O …   Wikipedia Español

  • Granada — Para otros usos de este término, véase Granada (desambiguación). Granada …   Wikipedia Español

Compartir el artículo y extractos

Link directo
Do a right-click on the link above
and select “Copy Link”