Proyecto_2

8
Universidad de San Carlos de Guatemala Facultad de Ingeniería Escuela de Ciencias y Sistemas Organización de Lenguajes y Compiladores 1 Escuela de Vacaciones, junio de 2015 Segundo Proyecto Objetivo Que el estudiante ponga en práctica los conocimientos aprendidos en clase y laboratorio para el desarrollo de las fases de análisis léxico, sintáctico y semántico de un compilador, utilizando herramientas generadoras de analizadores léxicos y sintácticos. Descripción Se desea que el estudiante realice una aplicación que sea capaz de utilizar un lenguaje de programación como código fuente que pueda traducir y a la vez generar una salida un usuario final. Contará con la fase de análisis de un compilador que engloba los análisis léxico, sintáctico y semántico, así como la ejecución de código mediante la utilización de árboles de sintaxis abstracta. La aplicación contara con un conjunto de archivos, que contendrán las operaciones que podrán ser ejecutadas por la aplicación. Archivo Matemáticas: Este archivo será capaz de realizar todo tipo de operaciones matemáticas, declarando funciones que puedan ser utilizadas desde otros archivos y aumentar funcionalidad de la aplicación. Archivo Estructuras de datos: Este archivo contiene las estructuras de datos que podrán ser utilizadas por la aplicación y la creación de funciones para su utilización dentro de otro lenguaje. Archivo Principal: Este archivo contiene el método principal que será el que realice la ejecución de los métodos y a su vez generara una salida. Se deberá realizar la fase de análisis de un compilador para asegurar que todo el código escrito sea coherente y no contenga errores para su ejecución. Si existen errores deberá generarse un reporte en HTML con estilo para cada tipo de error (léxico, sintáctico y semántico). También deberá mostrarse la tabla de símbolo utilizada para la ejecución del código, también en un reporte usando HTML con estilo.

description

enunciado

Transcript of Proyecto_2

  • Universidad de San Carlos de GuatemalaFacultad de IngenieraEscuela de Ciencias y SistemasOrganizacin de Lenguajes y Compiladores 1Escuela de Vacaciones, junio de 2015

    Segundo Proyecto

    Objetivo

    Que el estudiante ponga en prctica los conocimientos aprendidos en clase y laboratorio para eldesarrollo de las fases de anlisis lxico, sintctico y semntico de un compilador, utilizandoherramientas generadoras de analizadores lxicos y sintcticos.

    Descripcin

    Se desea que el estudiante realice una aplicacin que sea capaz de utilizar un lenguaje de programacincomo cdigo fuente que pueda traducir y a la vez generar una salida un usuario final.

    Contar con la fase de anlisis de un compilador que engloba los anlisis lxico, sintctico y semntico,as como la ejecucin de cdigo mediante la utilizacin de rboles de sintaxis abstracta.

    La aplicacin contara con un conjunto de archivos, que contendrn las operaciones que podrn serejecutadas por la aplicacin.

    Archivo Matemticas: Este archivo ser capaz de realizar todo tipo de operaciones matemticas,declarando funciones que puedan ser utilizadas desde otros archivos y aumentar funcionalidad de laaplicacin.

    Archivo Estructuras de datos: Este archivo contiene las estructuras de datos que podrn ser utilizadaspor la aplicacin y la creacin de funciones para su utilizacin dentro de otro lenguaje.

    Archivo Principal: Este archivo contiene el mtodo principal que ser el que realice la ejecucin de losmtodos y a su vez generara una salida.

    Se deber realizar la fase de anlisis de un compilador para asegurar que todo el cdigo escrito seacoherente y no contenga errores para su ejecucin. Si existen errores deber generarse un reporte enHTML con estilo para cada tipo de error (lxico, sintctico y semntico). Tambin deber mostrarse latabla de smbolo utilizada para la ejecucin del cdigo, tambin en un reporte usando HTML con estilo.

  • Diseo de la interfaz

    Deber contener como mnimo los siguientes mens:

    Archivo Nuevo proyecto: Despliega un nuevo proyecto al cual se le asignara un nombre y contendr

    los archivos que se le asignen. Abrir proyecto: Abrir un nuevo proyecto que haya sido previamente construido. Nuevo archivo: Despliega un nuevo documento en blanco para editar, que podr ser

    guardado y agregado al rbol del proyecto. Abrir archivo: Permite abrir un archivo con las extensiones especificadas y agregarlo al

    rbol del proyecto. Guardar archivo: Permite guardar el archivo editado actualmente con la extensiones

    especificada. Guardar Como: Permite guardar el archivo actual con otro nombre con extensin

    especificada. Salir: Con esta opcin se cerrar la aplicacin.

    Anlisis Compilar: Realizara la compilacin sobre la entrada que se encuentra sobre el rea de texto

    de cada archivo o en el rbol del proyecto, es decir, cada archivo que haya sido agregado alproyecto.

    Mostrar errores: Mostrara los errores lxicos, sintcticos y semnticos identificando elsmbolo o lexema, la columna, la fila, tipo, archivo y la descripcin de cada error que hayasido encontrado.

    Ayuda Manual de Usuario: Se deber mostrar el manual de usuario, para guiar a la persona en la

    utilizacin de la aplicacin (requerimientos, funcionamiento paso a paso). Manual Tcnico: Se deber mostrar el manual tcnico, para entender como se ha realizado

    la aplicacin (requerimientos, explicacin de elementos importantes, diagramas). Acerca de: Permite mostrar informacin de la persona que ha creado la aplicacin.

    Se deber crear una pestaa por cada archivo que sea abierto para su modificacin y debe desaparecercuando el usuario lo desee. Contara con dos pestaas por defecto:

    Tabla de smbolos: Contendr todo el contenido de la tabla de smbolos que se cre en el tiempoque se compilo el programa.

    Errores: Mostrara los errores que fueron encontrados durante el anlisis.

    Las dems pestaas sern gestionadas dinmicamente, cuando sea necesario se crear una ms paracontener el archivo que se desea abrir.

  • Descripcin de los lenguajes

    Archivo de Matemticas (extensin mate)

    Este archivo ser el nico que contara con la posibilidad de realizar operaciones matemticas y podrser incluido dentro del archivo principal para agregar ms funcionalidad. Contendr las siguientescaractersticas:

    Creacin de variables: Se podrn crear variables de tipo entero y decimal, de tipado dbil. Las variablespodrn ser globales y locales dependiendo de su lugar de creacin.

    VariablEs:{a; //Creacin de variableb :: 32; //Creacin y asignacin de variablec :: 2.45; //Creacin y asignacin de variable

    }

    Operaciones aritmticas: Estas operaciones contendrn dos operandos por cada operacin y podrn seranidadas una dentro de otra. Se permitirn sumas (+), restas (-), multiplicaciones (*), divisiones (/),modulo (%) y potencia (^). Se utilizar la notacin postfija.

    VariablEs:{c :: (2 (3 (4 5 ^) *) +);

    }

    Definir funciones: Estas funciones realizaran un la ejecucin de un conjunto de instrucciones quedevolvern un valor a su retorno, estas pueden contener parmetros y podrn utilizar funciones localeso de otros archivos. Se utilizara la palabra reservada retorno para indicar cul ser el retorno de lafuncin.

    Funciones:{Def Promedio(num1,num2,num3)

    Suma :: (num1 (num2 num3 +) +);Retorno :: (Suma 3 /);

    FIN;}

    Incluir: Las funciones de otros archivos de matemtica podrn ser utilizadas por medio de la propiedadde incluir, estos deben ser incluidos al inicio del archivo solamente, indicando su ubicacin.

    IncLuir;

    Cada una de estas secciones no tienen un orden especfico y pueden aparecer ordenados de cualquierforma, sin embargo deben aparecer solamente una vez.

    Archivo de Estructuras de datos (extensin edd)

    Este archivo ser el nico que contara con la posibilidad de manejar estructuras de datos y podr serincluido dentro del archivo principal para agregar ms funcionalidad. Contendr las siguientescaractersticas:

  • Creacin de variables: Se podrn crear variables de tipo cadena, entero y decimal, estas variables sernde tipado fuerte. Las variables podrn ser globales y locales dependiendo de su lugar de creacin.

    /*Creacin de variables*/Entero t1, t2, t3pi,avogadro}cadena:{

    >inicio>fin>Completa

    }}

    Concatenar cadenas: Se podr realizar la concatenacin de cadenas utilizando la funcin concatenar,que tomara un listado de cadenas, enteros o decimales para su concatenacin.

    Asignacin de valores: Para la asignacin de un valor a una variable se usara la funcin asignar, quetomara como entrada una variable y el valor que se desea asignar.

    VariaBLes:{EnteroS:{

    >i,k,Tam>edad

    }decimal:{

    >pi,avogadro}cadena:{

    >inicio, fin>Cadena>nombre

    }>AsigNar(inicio,'Hola')>Asignar(fin,'Mundo')>asignar(pi,3.1416)>asignar(pi,avogadro)>ASIGNAR(Completa,concatenar(inicio,'',fin))

    }

  • - Funciones

    Sentencias de control: Se podrn utilizar las sentencias de si (if), repetir hasta (repeat until), para (for) ymientras (while), estos de igual forma se pueden anidar uno con otros.

    Si: Representara una condicin de bifurcacin con la siguiente sintaxis:

    SI (){//instrucciones dentro del si

    }sino SI (){

    //instrucciones dentro del sino Si}Sino{

    //instrucciones dentro del sino}

    Repetir hasta: Realizara el conjunto de instrucciones y luego evaluara la condicin, mientras sea falsoseguir ejecutndose, se representara con la siguiente sintaxis:

    Repetir{//instrucciones dentro del mientras

    }hasTa()

    Para: Primero se debe ejecutar la asignacin, luego de esto se evala la condicin y si esta es verdaderase debe ejecutar las instrucciones que estn dentro del ciclo, luego se ejecuta la expresin y se reevalala condicin, repitiendo hasta que la condicin sea falsa, en cuyo caso termina el ciclo.

    ParA (i; AsigNAR(i,0); ; Asignar(i,suma(i,1))){//instrucciones dentro del para

    }

    Mientras: Ejecutara un conjunto de instrucciones mientras la expresin dentro de su condicin seaverdadera, deber primero verificar la expresin y si es verdadera deber ejecutar las instrucciones, encaso sea falsa ya no deber ejecutar las instrucciones.

    MientraS (){//instrucciones dentro del mientras

    }

    Condiciones: Sern las que son evaluadas en las sentencias de control para obtener un resultado y podertomar decisiones conforme a este. Podrn ser combinadas respetando la precedencia de su ejecucin yel uso de parntesis.

    Comparadores:

    Operacin OperadorMayor >

  • Mayor o igual >=

    Menor insertarPila_edad(Suma(k,i,27))

    }}

    }

    Principal: Sera una funcin con retorno vaco y no contendr parmetros y deber llamarseexactamente Principal, esta ser la encargada de ejecutar las funciones, es decir, solo las funcionesque se encuentren dentro de esta funcin sern las que sern ejecutadas.

  • Funciones: {vacio Principal(){

    >Asignar(Cadena,'Nombre,Edad')> imprimir('/home/user/b.txt',Cadena,Escribir)>EscribirPila()

    }}

    Comentarios

    Existirn dos tipos de de comentarios:

    Multilnea: Estos comentarios podrn contener cambios de lnea. Por ejemplo:/*EjemploComentario*/

    Lnea simple: Estos comentarios no podrn contener cambios de lnea. Por ejemplo://Comentario lnea simple

    Consideraciones

    Trabajar de manera individual, utilizando Java con las herramientas JFlex y CUP. El sistema operativo y el IDE son libres. Cualquier copia total o parcial ser reportada y no permitir la continuidad en el laboratorio. No se calificar desde el IDE, deber generarse un ejecutable. Los archivos de entrada sern proporcionados el da de la calificacin. No habr prrroga y entregas fuera de horario tienen una nota de CERO.

    Entregables

    Cdigo fuente, ejecutable, manuales y archivos de prueba Enviarlo en un archivo comprimido a travs de Google Drive o Dropbox al correo

    [email protected] con el asunto [OLC1V] Proyecto2_carnet a ms tardar eljueves 2 de julio, hasta las 23:59. La calificacin ser el viernes 3 de julio a partir de las 10:00en el rea de columnas.