Compilacion parcial

18

Click here to load reader

description

Traducción de compiladores

Transcript of Compilacion parcial

Page 1: Compilacion parcial

Ing. Diego Fernando CastañoCompilación vs. Clase

COMPILADORES

Page 2: Compilacion parcial

INCORPORACION DE UNA TABLA DE SIMBOLOS

COMPILADORES

Page 3: Compilacion parcial

La tabla de símbolos es una estructura de datos que nos permite realizar operaciones de inserción, búsqueda y eliminación de información en varias construcciones del lenguaje fuente, la cual es analizada por el compilador originándose un código objeto.

Page 4: Compilacion parcial

Interfaz de la tabla de símbolosLas principales operaciones de la tabla de

símbolos las definimos así:Inserción: Almacena información

proporcionada por las declaraciones de nombre cuando estas son procesadas.

Búsqueda: Recupera la información asociada con un nombre cuando este se utiliza en una declaración o el código asociado.

Page 5: Compilacion parcial

Eliminación: Elimina la información proporcionada por una declaración cuando esta ya no se aplica.

Ejemplo : Parte de procedimientos en programa fuente

Datos(var1, var2)

SiSe aplica la operaciónNo

Se procesa de nuevoLa operación Datos(var1, var2) porSer llamada de nuevo en la aplicación

Se elimina de la tabla de símbolosLa operación Datos(var1, var2)Ya que no se considera necesarios para procesos posteriores

Page 6: Compilacion parcial

Manejo de la palabra clave reservada En las sintaxis anteriores, también se pueden

emplear palabras reservadas como pueden ser los componentes léxico por ej: mod, div

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

Cualquier llamada posterior busca(“div”) devuelve el componente léxico div, de modo que div no puede usarse como identificador o variable.

Page 7: Compilacion parcial

Implantación de una tabla de símbolos En la siguiente tabla de símbolos de

matriz para el almacenamiento de cadenas, una cadena fija de espacios no puede ser lo suficientemente grande para guardar un identificador muy largo, y puede ser innecesariamente grande para un identificador corto, donde se determina que al final de cada cadena se finaliza con un fin-de-cadena representado por FDC, y que no puede aparecer en los identificadores.

Page 8: Compilacion parcial

d i v FDC m o d FDC i FDC

Div

Mod

i

MATRIZ TABLASIMB

Matriz Lexemas

Page 9: Compilacion parcial

MAQUINA DE PILA ABSTRACTASLa maquina tiene memorias

independiente para las instrucciones y datos, y todas las operaciones aritméticas se realizan con los valores en una pila. Las instrucciones son bastantes limitadas y están comprendidas en las siguientes clases:

Aritmética, Manipulación de la pila

Page 10: Compilacion parcial

A continuación se simula la representación de una expresión en una pila. La evaluación se realiza de izq. A der. Insertando los operadores en la pila a medida que los encuentran asi:

La expresión -- 1 3 + 5 Insertar 1 en la pilaInsertar 3 en la pilaSumar Insertar 5 en la pilaSumar los dos elementos de la cima, extraerlos e

insertar en la pila el resultado 9

PILA----------------------------------

13

Operador aritmético 5

+ (VALOR DE LA CIMA)9

Page 11: Compilacion parcial

GRAMATICAS LIBRES DE CONTEXTOEl análisis gramatical es la tarea de determinar

la sintaxis, o estructura de un programa. Por esta razón también se le conoce como

análisis sintáctico. La sintaxis de un lenguaje de programación por lo regular se determina mediante las reglas gramaticales de una gramática libre de contexto de manera similar como se determina mediante expresiones regulares la estructura léxica de los tokens.

Page 12: Compilacion parcial

EL PROCESO DEL ANALISIS SINTACTICOLa tarea del analizador sintáctico es determinarla estructura sintáctica de un programa a partirde los tokens producidos por el analizador lexico y, ya sea de manera explicita o implícita, construirun árbol de análisis gramatical o árbol sintáctico Que represente esta estructura. De este modo, Se puede ver el analizador sintáctico como una Funcion que toma su entrada la secuencia de

Page 13: Compilacion parcial

Tokens producidos por el analizador léxico y que produce como su salida el árbol sintáctico.

Secuencia de tokens analizador sintáctico árbol sintáctico

La secuencia de tokens por lo regular no es un parámetro de entrada explicito pero el analizador sintáctico llama a un procedimiento del analizador léxico, como get token para obtener el siguiente token desde la entrada a medida que lo necesite durante el proceso de analisis sintactico. De este modo, la etapa de analisis sintactico del compilador se reduce a una llamada al anlizador lexico de la manera :

Page 14: Compilacion parcial

syntaxtree = parse (); En un compilador de una sola pasada el

analizador sintáctico incorpora todas las otras fases de un compilador incluyendo la generacion del codigo y no es necesario construir ningun arbol sintactico explicito (las mismas etapas del analizador sintactico representaran de manera implicita al arbol sintactico y por consiguiente una llamada.

parse();

Page 15: Compilacion parcial

GRAMATICAS LIBRES DE CONTEXTO Una gramática libre de contexto es una

especificación para la estructura sintactica de un lenguaje de programación. Una especificación así es muy similar a la especificación de la estructura lexica de un lenguaje utilizando expresiones regulares, excepto que una gramática libre de contexto involucra reglas de recursividad. Como ejemplo de ejecución utilizaremos expresiones aritmeti

Page 16: Compilacion parcial

Simples de enteros con operaciones de suma resta y multiplicación. Estas expresiones se pueden dar mediante la gramatica siguiente

exp — exp op exp /(exp)/ numero op -- +/-/*

Page 17: Compilacion parcial

ARBOLES GRAMATICALES Y ABSTRACTOSCorresponde al árbol de análisis

gramatical

Page 18: Compilacion parcial

ARBOL DE ANALISIS GRAMATICAL PARA LA EXPRESION ARITMETICA (34-3) * 42