“Preparación para la generación de código, generación de directivas para la tabla de símbolo”
Enviado por Rusber Cuello Sangama • 23 de Agosto de 2017 • Monografía • 3.275 Palabras (14 Páginas) • 331 Visitas
Universidad nacional de San Martín Facultad de ingeniería de Sistemas e Informática[pic 1][pic 2][pic 3][pic 4][pic 5]
[pic 6][pic 7]
[pic 8][pic 9]
“Preparación para la generación de código, generación
de directivas para la tabla de símbolo” Docente: Ing. Víctor Alejandro Ávila Tuesta. Curso: Compiladores.
Estudiantes:
1.- Ali Smith Carrero Flores.
2.- Rusber Cuello Sangama.
3.- Beell Evans Acuña Ushiñahua.
4.- Rene Arenas Santamaria.
5.-Andre Alonso Rengifo del Águila.
Ciclo: VII
Tarapoto-Perú
2017
Introducción
En este informe se realizará las acciones que uno debe tener en cuenta antes de generar códigos, esta fase del compilador puede resultar la parte más tediosa ya que uno tiene que estar seguro que los operadores estén correctos y sean compatibles con el compilador. Esta fase prepara el terreno que van a tomar los códigos y lanzar mensajes de error si encuentra alguno, es decir tiene que leer todo lo anterior para ver si no existe algún error. El siguiente tema a tratar en el informe es sobre cómo se estructura los datos para que el proceso de traducción de un compilador sea más eficaz, de esta forma las consultas, los almacenamientos de datos sean rápidos y seguro.
Cuando se escribe un programa empleando un determinado lenguaje de programación, la computadora es capaz de entenderlo, tal cual, debido a que los lenguajes de programación diseñados para que las personas los puedan leer y escribir fácilmente. Por eso, es necesario traducir dicho programa, escrito en un lenguaje de programación, a algo que la computadora pueda entender y ejecutar. A este proceso se le denomina compilación.
Pero lo que vamos a tener en cuenta a continuación es de mucha importancia para nosotros, ya que estaremos definiendo la preparación para la generación de código donde se clasifica en dos cuestiones: asignación de memoria y asignación de registros. También la generación de directivas para la tabla de símbolos.
Preparación para la generación de código
El compilador decide muchas de las cuestiones acerca de donde residirán los valores dos de las cuestiones en la preparación de la generación de código son: la asignación de memoria y la asignación de registros.
Asignación de memoria. La asignación y el mantenimiento del espacio de memoria para conservar los valores de las variables y expresiones se conoce como asignación de memoria.
Asignación de registros. Los registros se utilizan para conservar los valores de las variables y expresiones, y aunque rara vez hay suficientes para un programa completo, las arquitecturas más recientes basadas en RISC (Conjunto reducido de instrucciones de Cómputo) poseen más.
[pic 10]
ANÁLISIS LÉXICO
PREPARATIVOS
Los preparativos que se van a tomar son importaciones esto es en caso de lenguajes de programación como java, c++ etc, para la utilización de los tokens, se añaden las directivas adecuadas y se añaden métodos que sirven para devolver los tokens y para señalar que línea del código se está procesando actualmente y el token actual. Esto es necesario para que en caso de error, se señale dónde está. Se puede utilizar una clase que se puede llamar InformaciónCódigo que se encarga de guardar los códigos en campos estáticos la línea actual y token actual.
ANÁLISIS SINTÁCTICO
PREPARATIVOS
Este análisis es que guía todo el proceso de traducción. tanto el análisis sintáctico como semántico y la generación de código estas se incluyen en un solo archivo con extensión según el lenguaje de programación que usas, en caso de java es .cup.
En este análisis es necesario todas las importaciones de las librerías necesarias. Luego tenemos la sección que contendrá los métodos por defecto que contiene el manejo de errores, el método nos permitirá lanzar el proceso de análisis y para lanzarlo, y por último se encuentra la sección dónde situamos los terminales, los no terminales, las precedencias y las reglas de la gramáticas.
ANÁLISIS SEMÁNTICO Y GENERACIÓN DE CÓDIGO
PREPARATIVOS
El análisis semántico prácticamente no existe ya que el análisis sintáctico impide cometer errores semánticos.
Por ejemplo, como no hay que declarar las variable lógicas antes de ser usadas, no hay que comprobar al usar una variable lógica si antes había sido declarada o no, cuando aparece una variable lógica (Una variable lógica es una variable que sólo puede tener dos valores posibles de forma que un valor excluye al otro), si antes había sido declarada o no. Cuando aparece una variable lógica, se mira
en la tabla de símbolos y si no estaba, se añade con el valor que tenga. Y si estaba, solamente se pone con el valor que tenga.
Por lo tanto, lo único que hay que hacer es gestionar la tabla de símbolos y generar el código oportuno.
CÓDIGO INTERMEDIO
PREPARATIVOS
Una vez que ya hemos realizado las comprobaciones semánticas, enfocaremos la generación de código en ensamblador. pero sería algo absurdo hacerlo directamente. Y lo que se suele hacer es realizar un paso intermedio para reducir un poco su complejidad. Para resumir lo que hace está fase crea una serie de instrucciones en un pseudolenguaje que nos permita, a partir de él llegar al código final. El pseudolenguaje debe ser independiente de la plataforma en la que uno está realizando el compilador, es decir independiente del ensamblador de la máquina. Entonces decimos que nuestro compilador debe estar preparado para ambas cosas: para cualquier plataforma y por simplificar un poco el trabajo de crear directamente nuestro programa ensamblador.
...