Está en la página 1de 8

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO

INGENIERIA EN SISTEMAS COMPUTACIONALES


LENGUAJES AUTOMATAS
MTRO. JUAN CARLOS GONZALEZ CORDOBA
UNIDAD 4
TEMA: ANALISIS LEXICO
ACTIVIDAD 3: INVESTIGACION
QUE ES UNA TABLA DE TOKENS Y PARA QUE SE UTILIZA

RAMIREZ ALDACO CARLOS


IS19111260
FECHA DE ENTREGA: 16/03/2022
INTRODUCCION

En informática, una tabla de símbolos o de tokens es una estructura de datos utilizada


por un compilador o intérprete durante la traducción de un lenguaje de programación,
donde cada símbolo en el código fuente de un programa está asociado con información
como la ubicación, el tipo de datos y el alcance. Cada variable, constante o
procedimiento. Una implementación común de una tabla de símbolos podría ser una
tabla hash, que se mantendrá en todas las etapas del proceso de compilación de
cotizaciones. Se puede tratar como una estructura temporal o volátil, utilizada solo en el
proceso de traducción de un lenguaje de programación, desechada más tarde o
integrada en el resultado del proceso de compilación para su uso posterior, como durante
una sesión de depuración o como un “or” “get”.

Los tokens o también llamados componentes léxicos son una cadena de caracteres que
tiene un significado coherente en cierto lenguaje de programación.

Ejemplos de tokens, podrían ser palabras clave (if, while, int,...), identificadores,
números, signos, o un operador de varios caracteres, (por ejemplo, :=).

Son los elementos más básicos sobre los cuales se desarrolla toda traducción de un
programa, surgen en la primera fase, llamada análisis léxico, sin embargo se siguen
utilizando en las siguientes fases (análisis sintáctico y análisis semántico) antes de
perderse en la fase de síntesis.

Los tokens son las palabras reservadas de un lenguaje, secuencia de caracteres que
representa una unidad de información en el programa fuente.
En cada caso un token representa un cierto patrón de caracteres que el analizador léxico
reconoce, o ajusta desde el inicio de los caracteres de entrada. De tal manera es
necesario generar un mecanismo computacional que nos permita identificar el patrón de
transición entre los caracteres de entrada, generando tokens, que posteriormente serán
clasificados.

Este mecanismo es posible crearlo a partir de un tipo especifico de maquina de estados


llamado autómata finito.
DESARROLLO

Tabla de símbolos o tokens es una importante estructura de datos creada y


mantenida por los compiladores con el fin de almacenar información acerca de la
ocurrencia de diversas entidades, tales como nombres de variables, nombres de
funciones, objetos, clases, interfaces, etc. tabla de símbolos se utiliza en el análisis
y la síntesis de un compilador.

Una tabla de símbolos puede servir los fines siguientes en función del idioma de la
mano:

• Para almacenar los nombres de todas las entidades de forma estructurada


en un solo lugar.

• Para verificar si se ha declarado una variable.

• Comprobación del tipo de implemento, comprobando las cesiones y las


expresiones en el código fuente son semánticamente correcto.

• Para determinar el alcance de un nombre (alcance de la resolución).

Una tabla de símbolos es simplemente una tabla que puede ser lineal o una tabla
hash. Mantiene una entrada para cada uno de los nombres con el formato siguiente:

<symbol name, type, attribute>

Por ejemplo, si tiene una tabla de símbolos para almacenar información acerca de
la siguiente declaración de variables:

static int interest;

A continuación, debe almacenar la entrada como la siguiente:

<interest, int, static>


El atributo cláusula contiene las entradas relacionadas con el nombre.

La tabla de tokens o también llamada tabla de nombres o tabla de identificadores y


tiene dos funciones principales:

• Efectuar chequeos semánticos


• Generación de código

Permanece sólo en tiempo de compilación, no de ejecución, excepto en aquellos


casos en que se compila con opciones de depuración.

La tabla almacena la información que en cada momento se necesita sobre las


variables del programa, información tal como: nombre, tipo, dirección de
localización, tamaño, etc. La gestión de la tabla de símbolos es muy importante, ya
que consume gran parte del tiempo de compilación. De ahí que su eficiencia sea
crítica. Aunque también sirve para guardar información referente a los tipos creados
por el usuario, tipos enumerados y, en general, a cualquier identificador creado por
el usuario, nos vamos a centrar principalmente en las variables de usuario.

Respecto a cada una de ellas podemos guardar:

• Almacenamiento del nombre.

Se puede hacer con o sin límite. Si lo hacemos con límite, emplearemos una longitud
fija para cada variable, lo cual aumenta la velocidad de creación, pero limita la
longitud en unos casos, y desperdicia espacio en la mayoría. Otro método es
habilitar la memoria que necesitemos en cada caso para guardar el nombre.

En C esto es fácil con los “char”.

• El tipo también se almacena en la tabla, como veremos en un apartado dedicado


a ello.

• Dirección de memoria en que se guardará.


Esta dirección es necesaria, porque las instrucciones que referencian a una variable
deben saber dónde encontrar el valor de esa variable en tiempo de ejecución,
también cuando se trata de variables globales. En lenguajes que no permiten
recursividad, las direcciones se van asignando secuencialmente a medida que se
hacen las declaraciones. En lenguajes con estructuras de bloques, la dirección se
da con respecto al comienzo del bloque de datos de ese bloque, (función o
procedimiento) en concreto:

• El número de dimensiones de una variable array, o el de parámetros de una


función o

procedimiento junto con el tipo de cada uno de ellos es útil para el chequeo
semántico. Aunque esta información puede extraerse de la estructura de tipos, para
un control más eficiente, se puede indicar explícitamente.

• También podemos guardar información de los números de línea en los que se ha


usado un identificador, y de la línea en que se declaró.

La tabla de símbolos puede iniciarse con cierta información útil, tal 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.
La tabla de símbolos contiene información útil para poder compilar, por tanto, existe
en tiempo de compilación, y no de ejecució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

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.

Si un compilador es manejar una pequeña cantidad de datos, a continuación, la


tabla de símbolos puede ser implementado como una lista desordenada, que es
muy fácil de código, sino que sólo es adecuado para pequeñas mesas. Una tabla
de símbolos se puede implementar en una de las siguientes formas:

• Lineal (ordenadas o desordenadas) lista

• Árbol de búsqueda binaria

• Tabla Hash

Entre todos, tablas de símbolos son en su mayoría implementadas como tablas


hash, en el que el código fuente propio símbolo es tratado como un elemento clave
para la función de hash y el valor de retorno es la información sobre el símbolo.
BIBLIOGRAFIA

Ortega Sánchez, C. I. (2018). Procesador de lenguaje JavaScript-PL.

Sandoval Zúñiga, C. (2018). Corrector automático de tabla de símbolos.

Léonard Schardijn, D. (2018). Comprobador automático de tablas de símbolos.

Catalán, J. R. (2010). COMPILADORES. Teoría e implementación. RC Libros.

LOS LENGUAJES, D. P. (2012). LENGUAJES BASIC EN LAS HOME


COMPUTERS. DE TECNOLOGÍA E INFORMÁTICA, 49.

Autómatas 1, L. Y., & Perfil, V. T. M. (s. f.). Lenguajes y autómatas I. Blogspot.


Recuperado 15 de marzo de 2022, de
https://lenguajesyautomatas1998.blogspot.com/2019/04/unidad-4-4.html

También podría gustarte