Sunteți pe pagina 1din 32

TABLAS DE

SIMBOLOS
INTEGRANTES:
• FLORES QUEZADA, OLIVER
• LLAVE VERGARAY, JOSÉ
• MARCOS CAMBELL, ROSSLEE
• PAREDES VENTURA, DEIVY
• VACA PASTOR, ARNOLD

ASIGNATURA:
AUTÓMATAS Y COMPILADORES
DEFINICIÓN Y FORMAS DE
01 ALMACENAMIENTO

FUNCIONES DE LAS TABLAS


DE SIMBOLOSEN EL COMPILADOR 02
DEFINICION DE PALABRAS RESERVADAS
03 E INSTRUCCIONES

ACCIONES DEL ANALIZADOR LEXICO


EN LAS TABLAS DE SÍMBOLOS 04
ACCIONES DEL ANALIZADOR LEXICO
05 EN LAS TABLAS DE SÍMBOLOS
TABLA DE
SÍMBOLOS (TS)
Necesidad de las Tablas de símbolos

 Los compiladores utilizan una  El analizador sintáctico se limita a


gramática libre de contexto para comprobar, mediante una gramática
describir la sintaxis de lenguaje y libre de contexto, que un identificador
una fase de análisis semántico forma parte de un expresión. Luego si
posterior para restringir las la sentencia es sintácticamente
sentencias que “semánticamente” correcta, el analizador semántico
no pertenecen al lenguaje. deberá verificar que el identificador
empleado haya sido declarado .

 Para llevar a cabo esta tarea es


necesaria la utilización de una
estructura de datos denominada tabla
de símbolos. Esta poseerá una
entrada por cada identificador
declarado en el contexto que se está
analizando.
4
¿Qué son
las tablas de
símbolos?
5
TABLAS DE SIMBOLOS

La tabla de símbolos 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. La tabla de símbolos se utiliza en el
análisis y la síntesis de un compilador.

6
CONTENIDO DE UNA TABLA
DE SÍMBOLOS

Una TS se puede definir como una estructura de datos


organizada en función de los identificadores que aparecen en
el programa fuente. Aunque su nombre parece indicar una
estructuración en una tabla no es necesariamente ésta la
única estructura de datos utilizada, 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 en la TS para un símbolo determinado se
define como registro de la tabla de símbolos

7
Una forma de organización simple es imaginar la TS
como una tabla con una serie de filas, cada fila contiene
una lista de atributos que están asociados a un
identificador.

8
1 2
Nombre de Lista de atributos
Dirección
identificador

3 4

Tipo del identificador 100% Dimensión

5 6

Número de la línea Campo puntero

7 8
Tamaño máximo o Tipo y forma de
rango acceso
FORMA DE
ALMACENAMIENTO
Más tarde las normas ANSI
e ISO de los lenguajes C,
C++ y PASCAL permiten un
El primer problema en la organización mínimo de 31 caracteres
de la TS es la variación en la longitud
de los nombres de los identificadores. En los lenguajes como C y
C++ se puede utilizar un
En las primeras versiones de los campo del tipo puntero a
lenguajes de los años sesenta tales carater (char *) y reservar la
como el BASIC y el FORTRAN, los memoria dinámica
identificadores tenían como máximo necesaria en cada caso.
seis caracteres significativos
Lenguajes como C++, Java,
C#, etc. se puede utilizar
directamente el tipo String

10
11
FUNCIÓN
DE LA TABLA DE
SIMBOLOS DENTRO
DE UN COMPILADOR

12
La Tabla de símbolos es una importante estructura
de datos creada y mantenida por los compiladores
con el fin de almacenar información acerca de la oc
urrencia de diversas entidades, tales como nombre
s de
variables, nombres de funciones, objetos, clases,
interfaces, etc.

Esta tabla de símbolos se utiliza en el análisis y


la síntesis de un compilador.

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.
ADD YOUR TITLE HERE
YOUR OTHER TEXT HERE

1 2 Guardar información
Almacena la información que en referente a cualquier
cada momento se necesita sobre identificador creado
las variables del programa por el usuario

FUNCIONES
Para almacenar los 3 4
nombres de todas las
Efectuar chequeos semánticos
entidades de forma
estructurada en un sol
o lugar.
Puntos importantes acerca de la Tabla de
símbolos (TS)

 La información almacenada aquí  En el proceso de compilación se accede


depende directamente del tipo de a la TS en unos determinados puntos.
elementos del lenguaje especifico a
procesar y las características de
dicho lenguaje.

 Cuando un compilador comienza a


 En los traductores y compiladores, traducir un programa fuente, la TS está
las TS existen únicamente en tiempo vacía o contiene unas pocas entradas
de ejecución. para las funciones incorporadas (las
palabras reservadas habitualmente son
almacenadas en una tabla aparte y
usadas exclusivamente por el analizador
léxico).

15
DEFINICION DE
PALABRAS
RESERVADAS E
INSTRUCCIONES
16
CONSIDERACIONES SOBRE LA TABLA
DE SÍMBOLOS

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.

17
En la implementación de la tabla de símbolos nos
creamos un Tipo Abstracto de Datos (Se utilizará una lista
por simplicidad. Lo mejor es usar otra estructura más
eficiente. Por ejemplo un árbol AVL).

18
PALABRAS RESERVADAS

Las palabras reservadas facilitan 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, esta estructura
puede ser una alternativa mas eficiente al lex.
Considérense los componentes léxicos div y mod con lexemas div y
mod, respectivamente. Se puede inicializar la tabla de símbolos
mediante las llamadas

Inserta(“div”, div);
Inserta(“mod”, mod);

Cualquier llamada posterior busca (“div”) devuelve el componente


léxico div, de modo que div no puede usarse como identificador.
Cualquier conjunto de palabras clave reservadas se puede manejar
de esta forma inicializando apropiadamente la tabla de símbolos.
19
PALABRAS RESERVADAS

20
• Es utilizada por el compilador para asociar a cada símbolo
del programa fuente (identificadores, constantes,…, etc) un
contenido semántico.

• Los campos asociados al registro pueden contener


información misma para lo que están destinados, o bien un
puntero a posiciones de memoria en las que se guarda esta
información.

Nombre Tipo Dirección


. . .
. . .
. . .
I Entero 0245
J Entero 0246
K Entero 0247
. . .
. . .
. . . 21
ACCIONES DEL
ANALIZADOR
LEXICO EN LAS TS

22
TIPOS DE ALMACENAMIENTO
TIPOS ESTRUCTURADOS TIPOS ARCHIVOS O FICHEROS
TIPOS SIMPLE
Entero, Real,Caracter Arrays Y Struct

1 2 3

6 5 4

CLASES FUNCIONES Y PROCEDIMIENTOS TIPOS PUNTEROS


Atributos y tipos, métodos
y relaciones
OPERACIONES
1 Previo a cada inserción hay que 2
consultar en la tabla, si para ese
Al reconocer un ámbito, existe o no el
identificador el Consulta
identificador. Si ya existe, no
compilador debe insertar debe permitirse la inserción.
un identificador. Inserción
Actualización
4 3

Se utiliza para eliminar la Conforme van avanzando a lo largo


Eliminación del árbol de análisis sintáctico los
información de una
valores de los atributos van
declaración cuando esta cambiando y esto requiere
ya no es necesaria. actualizarlos en la tabla de símbolos.
ÁMBITOS

LÉXICO DINÁMICO

La tabla de estados La tabla de estados


se construye de se construye
manera estática siguiendo el orden
siguiendo el orden de ejecución del
del programa. programa.
BUSQUEDA DE
LEXEMAS

26
BUSQUEDA DE LEXEMAS

La tabla de símbolos almacena información sobre los


identificadores, las palabras reservadas y las constantes. Se
dice que contiene una entrada para cada uno de los símbolos
definidos en el programa fuente, información sobre el lexema,
tipo de datos, ámbito y dirección en memoria.
BUSQUEDA DE LEXEMAS
La creación de la tabla de símbolos compete
inicialmente al analizador de léxico, quien
registrará a las entidades (reconocidas bajo el
patrón de Identificador) de manera única, por
medio del binomio de operaciones Búsqueda-
Inserción.
BUSQUEDA DE LEXEMAS E INSERCIÓN DE
LEXEMAS
El analizador de léxico funciona bajo el siguiente mecanismo:

Como las palabras reservadas es un conjunto de entidades conocido y finito,


la tabla de símbolos se inicializa con ellas y cuando se reconoce un
identificador, su lexema se busca en la tabla y si se encuentra en ella, se
regresa el token correspondiente a través de invocar a la función
REVISA_RESERVADAS.
BUSQUEDA DE LEXEMAS E INSERCIÓN DE
LEXEMAS
El algoritmo de la función REVISA_RESERVADAS es el siguiente:

Este algoritmo supone al existencia de dos funciones que realizan la


búsqueda y la inserción de un lexema en la tabla de símbolos,
considerando de la existencia de la siguiente estructura de la tabla
de símbolos:
BUSQUEDA DE LEXEMAS E INSERCIÓN DE
LEXEMAS

Tabla de símbolos:
Donde última entrada direcciona la última entidad registrada y
último_lexema la primera localidad disponible donde se registran los
lexemas. La función BUSQUEDA se guía bajo el siguiente algoritmo:
BUSQUEDA DE LEXEMAS E INSERCIÓN DE
LEXEMAS
Donde LONGITUD es una función que determina el número de caracteres que
conforman al lexema insertado.

Donde es de notar que la búsqueda se inicia de la última entidad


registrada hacia la primera bajo el supuesto que en un programa se
encuentran con mayor frecuencia referencias a variables (que se
registran al final) que a palabras reservadas (que estan registradas al
inicio de la tabla). Si la búsqueda fracasa, la entidad tiene que darse de
alta por la función INSERTAR

S-ar putea să vă placă și