23
LA TABLA DE SÍMBOLOS INTEGRANTES: Victor Mamani Catachura 04-26451 Gabriela Mamani Musaja 04-26405 UNJBG-TACNA-PERU BOREASH BOREAS.H

Tabla SiMbolos, victor mamani catachura, boreasH,Compiladores

Embed Size (px)

DESCRIPTION

Tabla SiMbolos, victor mamani catachura, boreasH,Compiladores

Citation preview

Page 1: Tabla SiMbolos, victor mamani catachura, boreasH,Compiladores

LA TABLA DE SÍMBOLOS

INTEGRANTES: Victor Mamani Catachura 04-26451 Gabriela Mamani Musaja 04-26405

UNJBG-TACNA-PERU BOREASH BOREAS.H

Page 2: Tabla SiMbolos, victor mamani catachura, boreasH,Compiladores

CONTENIDO

La tabla de símbolos TDS Requerimientos de información de la TDS Diseño de la tabla de símbolos Gestión de la TDS en un lenguaje con estructura de bloques. Bibliografía

Page 3: Tabla SiMbolos, victor mamani catachura, boreasH,Compiladores

LA TABLA DE SÍMBOLOS

La tabla de símbolos es una estructura global utilizada por distintos módulos del compilador.

Es el principal atributo heredado.

Contiene una entrada para cada uno de los símbolos definidos en el programa fuente.

Sobre los identificadores, y

opcionalmente sobre las palabras reservadas y las

constantes.

Información sobre el lexema, tipo de datos, ámbito y dirección en

memoria.

Operaciones principales:

Buscar: recupera información asociada a una símbolo.

Insertar: introduce un símbolo tras una declaración.

Eliminar: borra la información de un símbolo cuando ya no se utiliza.

Page 4: Tabla SiMbolos, victor mamani catachura, boreasH,Compiladores

LA TABLA DE SÍMBOLOS

Page 5: Tabla SiMbolos, victor mamani catachura, boreasH,Compiladores

REQUERIMIENTOS DE INFORMACIÓN DE LA TDS

Datos que se almacenan Información sobre la asignación de la

memoria

Page 6: Tabla SiMbolos, victor mamani catachura, boreasH,Compiladores

DATOS QUE SE ALMACENAN

– Para un array: Tipo de los elementos. Número de elementos. Límites inferior y superior.

– Para una función: Número de parámetros. Tipo de los parámetros. Forma de paso de parámetros. Tipo de retorno.

INFORMACIÓN SOBRE LA ASIGNACIÓN DE LA MEMORIA

En la TDS se mantiene información acerca de las posiciones de memoria que se ligaran a nombres durante la ejecución.

Si el código objeto es lenguaje ensamblador, el ensamblador puede encargarse de la posiciones de memoria para los distintos nombres.

El compilador genera código de maquina, entonces se debe indagar la posición de cada objeto de datos relativa a un origen fijo.

Page 7: Tabla SiMbolos, victor mamani catachura, boreasH,Compiladores

DISEÑO DE LA TABLA DE SÍMBOLOS

Estructura de la tabla de símbolos TDS como listas TDS como tabla de dispersión Declaraciones Reglas de ámbito

Page 8: Tabla SiMbolos, victor mamani catachura, boreasH,Compiladores

ESTRUCTURA DE LA TABLA DE SÍMBOLOS

Estructura de datos global de tipo diccionario.

Principalmente hay tres estructuras de implementación:

Listas lineales simple o

doblemente enlazadas,

normalmente de tamaño variable. Es un sistema sencillo, pero

lento cuando hay muchas entradas.

Árboles de búsqueda

binarios, AVL y árboles B. No

demasiado útiles por la complejidad

de ciertas operaciones como

la eliminación.

Tablas de dispersión (hash),

su eficacia depende de la

tabla de dispersión

elegida. Es la más utilizada..

Las entradas de la tabla de símbolos deben ser suficientemente flexibles como para almacenar información heterogénea.

Page 9: Tabla SiMbolos, victor mamani catachura, boreasH,Compiladores

TDS COMO LISTAS

Se utiliza unas sola matriz, o varias, para almacenar nombres y su información asociada.

Infon

Idn

Info2

Id2

Info1

Id1

DISPONIBLE

Page 10: Tabla SiMbolos, victor mamani catachura, boreasH,Compiladores

TDS COMO TABLA DE DISPERSIÓN

Una tabla de dispersión es un array con entradas indexadas:

Una función de dispersión convierte el nombre del

identificador en un valor entero que

corresponde con un índice.

La función de dispersión

debe producir pocas

colisiones.

La resolución de colisiones se lleva a cabo mediante encadenamiento por separado (una lista enlazada en cada índice).

Page 11: Tabla SiMbolos, victor mamani catachura, boreasH,Compiladores

DECLARACIONES

Dos tipos de declaraciones: explícitas e implícitas.

Hay cuatro clases de declaraciones explícitas:

De constante: const double PI = 3.1415;De tipo: struct Complejo{ float re, im; }De variable: bool encontrado;De función: void f(int,float);

Declaraciones implícitas: en Fortran un identificador no declarado que comience por una letra entre la i y la n es un entero.

Los atributos asociados a un nombre en la tabla de símbolos dependen del tipo de declaración.

Page 12: Tabla SiMbolos, victor mamani catachura, boreasH,Compiladores

REGLAS DE ÁMBITO

Aunque varían mucho entre los diferentes lenguajes de programación, es posible identificar reglas comunes.

– Declaración antes del uso: regla que obliga a declarar un identificador antes de hacer referencia a él en el programa fuente.

– Estructura de bloques: cada bloque puede contener declaraciones, algunas de las cuales pueden incluir nombres ya utilizados.

Facilita la compilación, pues permite construir la

TDS a medida que se analiza sintácticamente el

código fuente.

Si al hacer una búsqueda de un

símbolo, ésta falla, se detecta una violación de

la regla.

Facilita la compilación, pues permite construir la

TDS a medida que se analiza sintácticamente el

código fuente.

Page 13: Tabla SiMbolos, victor mamani catachura, boreasH,Compiladores

GESTIÓN DE LA TDS EN UN LENGUAJE CON ESTRUCTURA DE BLOQUES

Las estructura de bloques Alternativas de implementación

Page 14: Tabla SiMbolos, victor mamani catachura, boreasH,Compiladores

LAS ESTRUCTURA DE BLOQUES

Un lenguaje está estructurado en bloques:– Si permite la anidación de unos bloques dentro de otros, y– Si el ámbito de una declaración se limita al bloque y sus bloques

anidados. Ejemplo:

float g(int a, floatb){int x, y;for (x=0;x<10;x++){

bool encontrado; regla de animación//... mas próxima{

char* x; //...}

}}

Regla de anidación más próxima: las referencias a un identificador se refieren siempre a la declaración realizada en el bloque más próximo.

Implementación de esta regla en la tabla de símbolos:

Al procesar ámbitos anidados, la tabla de símbolos se comporta como una pila.

La operación Insertar no debe

sobrescribir declaraciones

anteriores.

La operación Buscar debe

encontrar siempre la declaración

más reciente.

La operación Eliminar sólo

elimina la declaración

más reciente de un nombre.

Ejemplo basado en una tabla hash. Código a analizar:

int i,j;int f(int size){

char i,temp;//..{char* j;//..}

}

Se supone que la aplicación de la función de dispersión sobre “j” y “size” retorna el mismo valor: 1

int i,j;int f(int size){ char i,temp; //... { char* j; //.. }}

Con varias tablas anidadas:

Page 15: Tabla SiMbolos, victor mamani catachura, boreasH,Compiladores

ALTERNATIVAS DE IMPLEMENTACIÓN

Construir una nueva tabla de símbolos para cada ámbito, vinculando las tablas desde los ámbitos internos a los ámbitos externos.

Una operación de búsqueda

continuaría en la tabla “padre” si no obtiene resultados en la tabla actual.

Al abandonar un ámbito, se elimina la tabla de símbolos completa.

En lenguajes en los que los ámbitos están contenidos unos en otros (Pascal) puede bastar con numerar los ámbitos por niveles

La inserción de un elemento se

realiza en el nivel actual.

Al cambiar de ámbito, se incrementa o

decrementa el nivel actual (al llamar a una función se incrementa

y al retornar se decrementa).

Es un método mas sencillo pero menos

eficiente.

Page 16: Tabla SiMbolos, victor mamani catachura, boreasH,Compiladores

BIBLIOGRAFÍA

Construcción de compiladores. Principios y práctica. Kenneth C. Louden. Thomson-Paraninfo. 2004.

Compiladores: principios, técnicas y herramientas. A.V. Aho, R. Sethi, J.D. Ullman. Addison-Wesley Iberoamerica. 1990.

Page 17: Tabla SiMbolos, victor mamani catachura, boreasH,Compiladores
Page 18: Tabla SiMbolos, victor mamani catachura, boreasH,Compiladores
Page 19: Tabla SiMbolos, victor mamani catachura, boreasH,Compiladores
Page 20: Tabla SiMbolos, victor mamani catachura, boreasH,Compiladores
Page 21: Tabla SiMbolos, victor mamani catachura, boreasH,Compiladores
Page 22: Tabla SiMbolos, victor mamani catachura, boreasH,Compiladores
Page 23: Tabla SiMbolos, victor mamani catachura, boreasH,Compiladores