La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Teoría de lenguajes y compiladores

Presentaciones similares


Presentación del tema: "Teoría de lenguajes y compiladores"— Transcripción de la presentación:

1 Teoría de lenguajes y compiladores
Unidad I Analizador Sintáctico Semana 7 Temas Generalidades. Tablas de símbolos..

2 Objetivo General El alumno al finalizar el curso podrá desarrollar aplicaciones que le permitan determinar si una estructura gramatical corresponde a una sentencia valida en la definición de un lenguaje en particular, teniendo en cuenta el contexto sintáctico y semántico. Así mismo estará capacitado para proponer nuevas formas estructurales en la definición de lenguajes de programación.

3 Objetivos Específicos
Diseñar e implementar un analizador lexicográfico. Diseñar e implementar un analizador sintáctico. Diseñar e implementar un analizador semántico.

4 Objetivos Instruccionales
Implementar una tabla de símbolos para asociarla a un compilador en cada una de sus fases.

5 Temas Generalidades Tabla de Símbolos

6 Generalidades La tabla de símbolos también es conocido como tabla de nombres o tabla de identificadores y tienen dos funciones principales: Efectuar chequeos semánticos Generación de código Permanece solo en tiempo de compilación, no en ejecución.

7 Tabla de Símbolos Es utilizada por el compilador para asociar a cada símbolo del programa fuente (identificadores, constantes, ... , etc) un contenido semántico. Esta formada por registros que en general tienen una longitud fija. Los campos asociados al registros pueden contener la 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.

8 ESTRUCTURA Tabla de Símbolos
Algunos campos que pueden definirse para los registros de la tabla son: A. Nombre del símbolo En la tabla de símbolos deben aparecer todos los lexemas correspondientes a los símbolos usados en el texto fuente. Los símbolos serán todos aquellos trozos de código que representen identificadores, constantes numéricas o cualquier otro elemento que el lenguaje sea capaz de manejar. Para el almacenamiento en la TS de los lexemas pueden utilizarse las técnicas: A.1 Interna: El campo de la tabla de símbolos se define como de tipo cadena de caracteres de dimensión fija. El inconveniente esta en que la longitud de los identificadores esta restringida al valor fijado. A.2 externa: El campo de la tabla de símbolos contiene un puntero a una zona de memoria en la que se almacena el lexema.

9 ESTRUCTURA Tabla de Símbolos B. Dirección de memoria
En este campo se almacenan las direcciones de memoria en las que se guardaran los valores de las variables correspondientes a cada símbolo, durante la ejecución del programa. Es importante recordar que la tabla de símbolos no contiene los valores de las variables, sino simplemente las dirección en la que se almacenaran cuando el programa se ejecute.

10 C. Tipos ESTRUCTURA Tabla de Símbolos
En este campo se almacenara el código correspondiente al tipo de datos representado por el símbolo, o bien un puntero a la estructura de datos correspondiente.

11 ESTRUCTURA Tabla de Símbolos
D.  Numero de la línea de la declaración en la que se usa el símbolo Esta es una información auxiliar, que será de utilidad para producir un listado de referencias cruzadas que ayuden a la depuración de los programas. Puede utilizarse una lista encadenada de números de línea, siendo la cabeza de esta la línea en donde aparece la declaración del símbolo.

12 FUNCIONAMIENTO Tabla de Símbolos Análisis léxico sintáctico
INICIALIZACION Análisis léxico sintáctico Análisis Semántico Generador de código TABLA DE SIMBOLOS

13 FUNCIONAMIENTO Tabla de Símbolos
a. La TS puede inicializarse con cierta información sobre símbolos especiales en el lenguaje, como son las palabras reservadas, funciones de librerías, constantes predefinidas, etc. b. El analizador lexicográfico va leyendo el texto fuente y construyendo lexemas, creando nuevas entradas en la TS conforme va encontrando nuevos símbolos, para lo cual a de comprobar que el símbolo no figure en la TS. c. El analizador sintáctico trabaja solamente con la estructura formal y a nivel de tokens ya formados en la fase anterior. 

14 FUNCIONAMIENTO Tabla de Símbolos
d. El analizador sintáctico sirve de soporte o armazón de un conjunto de rutinas del análisis semántico. Parte de estas rutinas puede completar la información de la TS sobre el tipo de un determinado lexema. e. El generador de código usa la información de la TS para referenciar el código a las posiciones adecuadas de memoria.

15 OPERACIONES Tabla de Símbolos
La TS funciona como una estructura de base de datos en la que el campo clave es el lexema correspondiente al símbolo. En general, puede hacerse las siguientes operaciones: a.  Insertar un nuevo registro y comprobar que no existe otro con el mismo nombre. b. Buscar y localizar el contenido de la TS asociado a un determinado lexema c.  Modificar la información contenida en un registro. En lenguaje con estructura de bloque se incluyen dos operaciones más: d.   Nuevo bloque : Inicio de un nuevo bloque e.   Fin_bloque : Terminación del ámbito de un bloque. Las inserciones se realizan cuando se procesa la zona de declaración de variables.

16 ORGANIZACIÓN Tabla de Símbolos Pueden emplearse algunos métodos:
a. Tablas no ordenadas: (Arrays, listas, etc.) Son métodos poco eficientes, pero fáciles de programar. b. Tablas ordenadas: (Arrays ordenados, listas ordenadas, arboles binarios, tablas hash, etc) Son métodos mas eficientes.  El manejo de TS en los lenguajes con estructura de bloque tiene unas características propias, y sugieren el empleo de técnicas especificas de organización para hacer mas eficaces las operaciones de búsqueda y desalojo de registros una vez finalizada la compilación de un bloque.  Un lenguaje con estructura de bloques es aquel que esta compuesto de módulos o trozos de código cuya ejecución es secuencial. Estos módulos a su vez pueden contener en su secuencia de instrucciones llamadas a otros módulos, que a su vez pueden llamar a otros submodulos y así sucesivamente. 

17 ORGANIZACIÓN Tabla de Símbolos
Program ejemplo; Var uno : integer; Procedure dos Var tres, cuatro : integer; Procedure cinco Var uno, dos:real;  (a) Begin End Procedure seis Var uno, tres:real;  (b) 1 2 3 4 Las técnicas para el manejo de TS en lenguajes con estructura de bloques suelen emplear una pila auxiliar de índices de bloque cuyos elementos son punteros a las tablas de símbolos y sirven para marcar el comienzo o el final de los símbolos correspondientes a un bloque.

18 Tabla de símbolos con estructura de árbol (bosque de árboles)
En este caso la TS esta formada por múltiples arboles, uno por cada bloque. Se usa una estructura de datos auxiliar pila que sirve de índice de bloque. uno tres dos cuatro cinco Índice de bloque 1 2 3 (a)

19 Tabla de símbolos con estructura de árbol (bosque de árboles)
Las operaciones sobre esta tabla son: a. Insertar: Al existir tablas independientes para cada bloque, la operación inserción se realiza normalmente atendiendo al bloque activo. b. Buscar: La búsqueda es algo mas compleja. Para localizar un lexema se busca primero en la tabla de bloque activo, luego en la tabla a la que apunta el índice del bloque anterior y así sucesivamente hasta localizarlo o hasta que se hayan rastreado todos los árboles. c. Nuevo_bloque: Se crea un nuevo elemento en la pila de índice de bloque y una nueva estructura de tipo árbol inicialmente vacía. d. Fin_bloque: Se destruye toda la estructura arborescente asociada al bloque que se termina y se elimina el puntero de la pila de índice de bloques.

20 Teoría de lenguajes y compiladores
Unidad I Analizador Sintáctico Semana 7 Temas Generalidades. Tablas de símbolos..


Descargar ppt "Teoría de lenguajes y compiladores"

Presentaciones similares


Anuncios Google