2025
Tabla de Tokens
Lenguajes y Autómatas I
Introducción
La tabla de tokens, también se le llama tabla de símbolos o tabla de identificadores y tiene dos funciones principales:
- Efectuar chequeos semánticos
- Generación de código
---Contiene información útil para poder compilar, por tanto existe en tiempo de compilación, y no de ejecución, excepto en aquellos casos en que se compila con opciones de depuración.
---Sin embargo, en un intérprete, dado que la compilación y ejecución se producen a la vez, la tabla de símbolos permanece todo el tiempo.
Función e importancia de la tabla de símbolos
La tabla de símbolos almacena la información esencial sobre las variables y otros identificadores de un programa, como su nombre, tipo, dirección de memoria y tamaño. Su gestión es crítica, ya que consume gran parte del tiempo de compilación, por lo que debe ser altamente eficiente. Además de variables, también puede contener datos de tipos definidos por el usuario, enumeraciones y otros identificadores creados en el código.
Información que almacena la tabla
Entre los datos más comunes que guarda están: el nombre de la variable (con longitud fija o dinámica), el tipo, las líneas en las que se usa y se declara, la dirección de memoria para acceder a su valor en ejecución, y detalles adicionales como el número de dimensiones de un arreglo o los parámetros de funciones/procedimientos con sus respectivos tipos. Esta información permite un chequeo semántico eficiente y facilita la correcta traducción del programa en el proceso de compilación
Consideraciones sobre la TS
La tabla de símbolos puede iniciarse con cierta información útil como:
Constantes: PI, E, etc.
Funciones de librería: EXP, LOG, etc.
- Palabras reservadas. Esto facilita el trabajo al lexicográfico, que tras reconocer un identificador lo busca en la tabla de símbolos, y si es palabra reservada devuelve un token asociado. Bien estructurado puede ser una alternativa más eficiente al lex.
- Conforme van apareciendo nuevas declaraciones de identificadores, el analizador léxico, o el analizador sintáctico según la estrategia que sigamos, insertará nuevas entradas en la tabla de símbolos, evitando siempre la existencia de entradas repetidas.
El analizador semántico efectúa las comprobaciones sensibles al contexto gracias a la tabla de símbolos, y el generador de código intermedio usa las direcciones de memoria asociadas a cada identificador en la tabla de símbolos, al igual que el generador de código. El optimizador de código no necesita hacer uso de ella.
Contenido de la TS
Una tabla de símbolos puede conceptualizarse como una serie de renglones, cada uno de los cuales contiene una lista de valores de atributos que son asociados con una variable en particular. Las clases de los atributos que aparecen en una tabla de símbolos dependen en algún grado de la naturaleza del lenguaje de programación para el cual se escribe el compilador
- Por ejemplo, un lenguaje puede ser sin tipos, y por lo tanto el atributo tipo no necesita aparecer en la tabla.
- Similarmente, la organización de la tabla de símbolos variará dependiendo de las limitaciones de memoria y tiempo de acceso.
- A continuación se presenta un ejemplo de una tabla de símbolos típica
Los atributos que se manejan en la tabla anterior y que se describen enseguida, no son estrictamente necesarios para todos los compiladores; sin embargo, cada uno de tales atributos deberá ser considerado para la implementación de un compilador de un compilador en particular.
- Nombre de la variable: es el medio por el cual una variable en particular es identificada en las etapas de análisis semántico y generación de código.
- Dirección del código objeto: establece la ubicación relativa para los valores de la variable en tiempo de ejecución.
Tipo: cuando los lenguajes compilados tienen tipos de datos explícitos o implícitos. Tradicionalmente, el tipo de dato de una variable es almacenado codificada en la tabla de símbolos; por ejemplo 1 puede representar el tipo real , 2 el tipo integer , etc.
- Valor (o número de parámetros para un procedimiento)
- Número de línea fuente donde fue declarada la variable.
- Números de línea fuente donde se hace referencia a la variable.
- Liga. Campo cuyos valores sirven para listar las variables en orden alfabético.
Ejemplo
Vamos a hacer un intérprete. Recordar que en un intérprete la entrada es un programa y la salida es la ejecución de ese programa.Suponemos que queremos hacer las siguientes operaciones: a=7*3b=3*a En la segunda instrucción necesitamos saber cuanto vale ‘a’; es decir el valor de ‘a’ debe estar guardado en algún sitio. Para ello utilizaremos una lista de pares:
A continuación nos encontramos con b = 3 * a. ¿Qué es ‘a’? Busco en la tabla de símbolos y vemos que el valor de ‘a’ es 21.b = 3 * a Ahora buscamos b en la tabla de símbolos y como no está lo creamos Si ejecutáramos ahora la instrucción: a = a + bTendríamos a ‘a’ y ‘b’ en la tabla de símbolos con lo cual solo tendríamos que modificar el valor de ‘a’.
Como hemos dicho una tabla de símbolos es una estructura que almacena información relativa a los identificadores de usuario. Pero, ¿que información exactamente?, según el propósito que tengamos. En nuestro caso el propósito es hacer un intérprete y nos interesa mantener información, entre otras cosas, del valor de cada variable.
Operaciones en una TS
Las operaciones que puede realizar son: crear :
- Crea una tabla vacía.
- insertar: Parte de una tabla de símbolo y de un nodo, lo que hace es añadir ese nodo a la cabeza de la tabla.
- buscar: Busca el nodo que contiene el nombre que le paso por parámetro.
- imprimir: Devuelve una lista con los valores que tiene los identificadores de usuario, es decir recorre la tabla de símbolos. Este procedimiento no es necesario pero se añade por claridad, y a efectos de resumen y depuración.
Ejemplo en C
¡GRACIAS!
2025
Copia - 4.3 Creación de tabla de tokens
TECNOLOGICO NACIONAL DE MÉXICO
Created on September 10, 2025
Start designing with a free template
Discover more than 1500 professional designs like these:
View
Decisions and Behaviors in the Workplace
View
Tangram Game
View
Process Flow: Corporate Recruitment
View
Weekly Corporate Challenge
View
Wellbeing and Healthy Routines
View
Match the Verbs in Spanish: Present and Past
View
Planets Sorting Game
Explore all templates
Transcript
2025
Tabla de Tokens
Lenguajes y Autómatas I
Introducción
La tabla de tokens, también se le llama tabla de símbolos o tabla de identificadores y tiene dos funciones principales:
- Efectuar chequeos semánticos
- Generación de código
---Contiene información útil para poder compilar, por tanto existe en tiempo de compilación, y no de ejecución, excepto en aquellos casos en que se compila con opciones de depuración. ---Sin embargo, en un intérprete, dado que la compilación y ejecución se producen a la vez, la tabla de símbolos permanece todo el tiempo.Función e importancia de la tabla de símbolos
La tabla de símbolos almacena la información esencial sobre las variables y otros identificadores de un programa, como su nombre, tipo, dirección de memoria y tamaño. Su gestión es crítica, ya que consume gran parte del tiempo de compilación, por lo que debe ser altamente eficiente. Además de variables, también puede contener datos de tipos definidos por el usuario, enumeraciones y otros identificadores creados en el código.
Información que almacena la tabla
Entre los datos más comunes que guarda están: el nombre de la variable (con longitud fija o dinámica), el tipo, las líneas en las que se usa y se declara, la dirección de memoria para acceder a su valor en ejecución, y detalles adicionales como el número de dimensiones de un arreglo o los parámetros de funciones/procedimientos con sus respectivos tipos. Esta información permite un chequeo semántico eficiente y facilita la correcta traducción del programa en el proceso de compilación
Consideraciones sobre la TS
La tabla de símbolos puede iniciarse con cierta información útil como: Constantes: PI, E, etc. Funciones de librería: EXP, LOG, etc.
El analizador semántico efectúa las comprobaciones sensibles al contexto gracias a la tabla de símbolos, y el generador de código intermedio usa las direcciones de memoria asociadas a cada identificador en la tabla de símbolos, al igual que el generador de código. El optimizador de código no necesita hacer uso de ella.
Contenido de la TS
Una tabla de símbolos puede conceptualizarse como una serie de renglones, cada uno de los cuales contiene una lista de valores de atributos que son asociados con una variable en particular. Las clases de los atributos que aparecen en una tabla de símbolos dependen en algún grado de la naturaleza del lenguaje de programación para el cual se escribe el compilador
Los atributos que se manejan en la tabla anterior y que se describen enseguida, no son estrictamente necesarios para todos los compiladores; sin embargo, cada uno de tales atributos deberá ser considerado para la implementación de un compilador de un compilador en particular.
Tipo: cuando los lenguajes compilados tienen tipos de datos explícitos o implícitos. Tradicionalmente, el tipo de dato de una variable es almacenado codificada en la tabla de símbolos; por ejemplo 1 puede representar el tipo real , 2 el tipo integer , etc.
Ejemplo
Vamos a hacer un intérprete. Recordar que en un intérprete la entrada es un programa y la salida es la ejecución de ese programa.Suponemos que queremos hacer las siguientes operaciones: a=7*3b=3*a En la segunda instrucción necesitamos saber cuanto vale ‘a’; es decir el valor de ‘a’ debe estar guardado en algún sitio. Para ello utilizaremos una lista de pares:
A continuación nos encontramos con b = 3 * a. ¿Qué es ‘a’? Busco en la tabla de símbolos y vemos que el valor de ‘a’ es 21.b = 3 * a Ahora buscamos b en la tabla de símbolos y como no está lo creamos Si ejecutáramos ahora la instrucción: a = a + bTendríamos a ‘a’ y ‘b’ en la tabla de símbolos con lo cual solo tendríamos que modificar el valor de ‘a’.
Como hemos dicho una tabla de símbolos es una estructura que almacena información relativa a los identificadores de usuario. Pero, ¿que información exactamente?, según el propósito que tengamos. En nuestro caso el propósito es hacer un intérprete y nos interesa mantener información, entre otras cosas, del valor de cada variable.
Operaciones en una TS
Las operaciones que puede realizar son: crear :
Ejemplo en C
¡GRACIAS!
2025