19
UNIVERSIDAD DE SAN CARLOS DE GUATEMALA FACULTAD DE INGENIERÍA ORGANIZACIÓN DE LENGUAJES Y COMPILADORES 2 SEGUNDO SEMESTRE 2012 Proyecto 1 Objetivos: Objetivo General Aplicar conceptos generales de compiladores en una aplicación práctica. Objetivos específicos Reafirmar los conceptos básicos de Compiladores. Hacer uso de la biblioteca log4j para logging de errores. Construir una aplicación que tenga como objetivo el aprendizaje de conceptos básicos de programación orientada a los niños. Definición del problema La universidad de San Carlos de Guatemala ha decidido realizar un proyecto en el cual, se desea incentivar el aprendizaje de lenguajes de programación en niños pequeños, por lo cual solicita el desarrollo de un software el cual se basa en Logo un lenguaje parte funcional y parte estructurado de fácil aprendizaje. El software contará con una interfaz, la cual debe ser amigable para el usuario, y de fácil uso, con el objetivo de que los niños no se aburran y se motiven por realizar cada vez funciones más complejas y se diviertan realizándolas.

Proyecto1_compi2_2012

Embed Size (px)

Citation preview

Page 1: Proyecto1_compi2_2012

UNIVERSIDAD DE SAN CARLOS DE GUATEMALA

FACULTAD DE INGENIERÍA

ORGANIZACIÓN DE LENGUAJES Y COMPILADORES 2

SEGUNDO SEMESTRE 2012

Proyecto 1

Objetivos:

Objetivo General Aplicar conceptos generales de compiladores en una aplicación práctica.

Objetivos específicos Reafirmar los conceptos básicos de Compiladores.

Hacer uso de la biblioteca log4j para logging de errores.

Construir una aplicación que tenga como objetivo el aprendizaje de conceptos básicos de programación orientada a los niños.

Definición del problema La universidad de San Carlos de Guatemala ha decidido realizar un proyecto en el cual, se desea incentivar el aprendizaje de lenguajes de programación en niños pequeños, por lo cual solicita el desarrollo de un software el cual se basa en Logo un lenguaje parte funcional y parte estructurado de fácil aprendizaje. El software contará con una interfaz, la cual debe ser amigable para el usuario, y de fácil uso, con el objetivo de que los niños no se aburran y se motiven por realizar cada vez funciones más complejas y se diviertan realizándolas.

Page 2: Proyecto1_compi2_2012

Diseño de la Interfaz

- Editor: Un área de editor en la cual se escribirán las instrucciones del lenguaje, o se podrá cargar y modificar un archivo con instrucciones previamente realizadas.

- Lienzo: El área de lienzo en la cual se realizarán las acciones definidas en el programa, dibujando lo que esté indicado. Al momento de ejecutar nuestro código se pueden dar 2 casos que el programa no contenga errores, en cuyo caso se ejecuta y se muestre la imagen en nuestro lienzo y la posición final de la tortuga, o que se encuentre algún error y nos muestre una ventana que indique que ocurrió un error. Para saber en que parte ocurrió un error se deberá de acceder al archivo de log y verificar las partes del programa donde ocurrió el error y de qué tipo es o son los errores, la estructura y comportamiento del archivo de error se describe posteriormente.

- Menú la aplicación contará además con una barra de menú en la cual se tendrán como mínimo, las siguientes opciones:

o Guardar: permite guardar lo que se encuentra en el área del editor en un archivo con extensión .logc

○ Guardar como: permite guardar el programa que se encuentra en el área del editor de texto con un nombre diferente con extensión .logc

○ Abrir: permite abrir un archivo .logc y cargarlo en área del editor. ○ Ejecutar: esta opción permitirá ejecutar el programa que se encuentra en el área del

editor, realizando las instrucciones que estén codificadas. ○ Abrir árbol: esta opción nos permite ver el árbol sintáctico, generado por la herramienta

graphviz.

- Barra de herramientas: Además de esto se tendrá una barra de herramientas en la cual se contará con botones para un acceso más rápido y cómodo a las opciones del menú.

Page 3: Proyecto1_compi2_2012

- Inspector: La interfaz deberá desplegar una ventana donde indique las variables conforme se van ejecutando, así como su tipo y su valor.

- Piscina de opciones: Además de esto la aplicación debe contar con un área donde se muestre un ejemplo de las funciones disponibles en la aplicación, la finalidad de esta área es que los niños puedan tomar este código y copiarlo en su programa, remplazando únicamente por las variables y operadores que necesiten.

Ejemplo piscina de opciones

- Drag and Drop: La aplicación deberá contar con la opción de diseñar el programa de forma completamente gráfica, en esta opción se cambiará el editor por un lienzo al cual se arrastrarán las figuras, y la piscina de opciones mostrará iconos que representen las funciones disponibles, como se muestra en la figura. NOTA: al cambiar de modo gráfico a modo texto y viceversa el programa debe mantenerse, del mismo modo debe ser posible guardar y abrir archivos en ambos modos, los archivos guardados se almacenan en modo texto, así mismo debe tomarse en cuenta que en la opción gráfica se pueden generar proyectos con todas las funcionalidades de los tres lenguajes, por lo que se deberá generar los respectivos archivos de texto y llamadas a funciones.

Figura que representa los comandos avanzar, repetir y si

- Selección de pincel: La aplicación debe dar la opción de elegir entre distintos pinceles, que

deben ser atractivos para niños pequeños, debe poder seleccionar entre un mínimo de cuatro pinceles.

Definición lenguaje Se realizaran 3 lenguajes los cuales se relacionaran entre sí para poder llevar el flujo del programa, estos

lenguajes tienen limitaciones cada uno y necesitan de los otros para poderse complementar y realizar

operaciones más complejas.

Page 4: Proyecto1_compi2_2012

Lenguaje P

Para agregar otro documento del mismo proyecto se utilizara la notación. Esta debe ser al principio del

archivo.

#!archivo.plog

Funciones del lienzo

Para la definición del tamaño del lienzo y su color se utilizarán las siguientes funciones:

Tamaño: &tamañoLienzo($ x,$ y); Donde “x” es el largo en pixeles y “y” el alto en pixeles del lienzo. Para el color se tiene: &coloLienzo($negro); Donde el color del lienzo podrá ser negro, blanco, azul, gris, amarillo, rojo, anaranjado o verde. Funciones del pincel

Cuando se mueve el pincel se tiene la opción de que este deje pintado el trazo, este trazo puede

cambiar de color, dependiendo de la definición del usuario, para definir el color se utiliza la siguiente

función:

&colorPincel($negro); Donde el color del pincel podrá ser negro, blanco, azul, gris, amarillo, rojo, anaranjado o verde. También es posible cambiar el grosor del pincel con la siguiente función: &grosorPincel($grosor); Donde la variable grosor es el tamaño en pixeles que tendrá de grosor el trazo del pincel. Comentarios

Para escribir un comentario es de la siguiente forma: ##esto es un comentario.

Page 5: Proyecto1_compi2_2012

Donde se utiliza el símbolo # # y todo lo que siga después de esa línea es considerado un comentario. Variables

Para escribir variables dentro del programa es de la siguiente forma: $var; $var=100; $var=”esto es una cadena”; $var=’C’; $var=10.02; $var=true; $var=false; Una variable debe llevar el símbolo $ seguido del identificador de la variable. Las variables son débilmente tipificadas, lo que quiere decir que al momento de declarar las variables no se les antepone un tipo, sin embargo al momento de igualar la variable a algún valor esta se vuelve del tipo que se le esté asignando y ya no puede cambiar en el resto del programa, es decir si tengo una variable $var=100 no se puede después añadir el valor $var=”Cadena”. $var=100; $var=”cadena” El ejemplo anterior es inválido y debe considerarse un error. $var=100; $var=99; El ejemplo anterior es válido. Tipos de variables:

Las variables pueden ser: - Int - String - Char - Double - Boolean

Operaciones Aritméticas:

En caso de los tipos int y double los operadores aceptados son los siguientes: $var= 2+2; $var=2-3; $var=2*2; $var=2/2; $var=2^2;

Page 6: Proyecto1_compi2_2012

Donde el operador “+” es suma, el operador “-“es resta, el operador “*” es multiplicación, el “/” es división y el “^” es potencia. NOTA: Se deben realizar sus respectivas validaciones es decir un int solo puede realizar operaciones con otro int, mientras que un double puede realizar operaciones con un int y un double. En el caso de los tipo String sólo es permitido el operador “+” con el cual se concatena el valor de un String o un char al valor de otro String. Ejemplo: $var=”hola” +’C’; El nuevo valor de $var en este caso es “holaC”. NOTA: NO se puede dar que a un char se le concatene algo más, eso debe ser marcado como error. Ejemplo: $var=’C’+’D’; Operadores lógicos

Para trabajar las variables de tipo boolean se puede utilizar los operadores lógicos, los cuales nos devolverán un valor verdadero o falso, los operadores lógicos aceptados son los siguientes: $var = verdadero and verdadero $var = verdadero or falso $var = not verdadero

- and Representa al operador AND, en el ejemplo el resultado es verdadero. - or Representa al operador OR, en el ejemplo el resultado es verdadero. - not Representa al operador NOT, en el ejemplo el resultado es falso.

Operadores de comparación:

Se cuenta además con operadores de comparación, los cuales permiten realizar un programa más complejo y aprender a utilizar las instrucciones de bifurcación y ciclos, los operadores de comparación aceptados por el lenguaje son: $var= 10 > 3 $var= 10 <3 $var= 10 ==3 $var= 10 <= 3 $var= 10 >=3 $var= 10 != 3

- > mayor que, devuelve verdadero si el operando izquierdo es mayor.

Page 7: Proyecto1_compi2_2012

- < menor que, devuelve verdadero si el operando derecho es mayor. - == igual a, devuelve verdadero si ambos operandos son iguales. - <= menor o igual, devuelve verdadero si ambos operandos son iguales o el de la izquierda es

menor. - >= mayor o igual, devuelve verdadero si ambos operandos son iguales o el de la izquierda es

mayor. - != devuelve verdadero si los operandos son distintos.

Los operadores de comparación pueden ser usados tanto en variables como en números, con la respectiva validación de que la variable sea de tipo numérica. NOTA: Para las variables o valores de tipo String ó char solo se permiten los operadores de comparación: != y ==. Ejemplo: $var= ‘C’==’C’; $var= “hola”!=”hola mundo”; Funciones y procedimientos Las funciones se declaran de la siguiente manera, donde después de sub se encuentra el nombre de la función y dentro de los paréntesis se encuentran los parámetros, también se puede dar el caso de que no tenga parámetros, la lista de parámetros puede ser de tamaño N, según se necesite dentro de la función: Sub fun1 ($var1,$var2){ $var = ´C´; }

La diferencia entre un procedimiento y una función es que este retorna un valor, la sintaxis es similar

solo debe agregar la palabra return y la variable o valor a retornar.

Sub fun1 ($var1,$var2){ $var = ´C´; return $var; }

Llamada a funciones o procedimientos.

Esta se realiza agregando un & al inicio del nombre de la función o procedimiento.

&fun1($var2,$var3);

Sentencias de control

También se cuenta con las sentencias de control if dentro del lenguaje la cual nos permitirá realizar

operaciones más complejas. La sintaxis de if es como a continuación:

Page 8: Proyecto1_compi2_2012

If ($x==7){ $x=6; } elsif($x>=7){ $x=5; } else{ $x=3; }

Lenguaje L Funciones de Dirección

Para definir la dirección en la que se moverá la tortuga se tienen las siguientes funciones: (Dirección grados) (izquierda grados) (derecha grados)

- Dirección: esta función girará a la tortuga desde cero grados hasta llegar a la cantidad de grados

indicados, es decir se da el ángulo absoluto. - Izquierda y Derecha: estas funciones realizarán un giro relativo de la tortuga, empezando desde

la posición en que se encuentra la tortuga y girando x grados en la dirección que indique la función.

Comentarios

Para escribir un comentario es de la siguiente forma: ;esto es un comentario. Donde se utiliza el símbolo “;” y todo lo que siga después de esa línea es considerado un comentario. Variables

Para escribir variables de tipo global dentro del programa es de la siguiente forma: defparameter var defparameter var 100 defparameter var ”esto es una cadena” defparameter var ’C’ defparameter var 10.02 defparameter var true defparameter var false

Page 9: Proyecto1_compi2_2012

Una variable debe llevar en su sintaxis defparameter seguido del identificador de la variable. Las variables son débilmente tipificadas, lo que quiere decir que al momento de declarar las variables no se les antepone un tipo, sin embargo al momento de igualar la variable a algún valor esta se vuelve del tipo que se le esté asignando y ya no puede cambiar en el resto del programa, es decir si se tiene una variable var 100 no se puede después añadir el valor setf var ”Cadena”. Para agregarle un nuevo valor a una variable se utiliza la sintaxis setf, esto solo aplica en variables globales. setf var 100; setf var ”cadena” El ejemplo anterior es inválido y debe considerarse un error. setf var=100; setf var=99; El ejemplo anterior es válido. Las variables locales se declaran: var 100 var ”esto es una cadena” var ’C’ var 10.02 var true var false Las cuales solo se nombran y se les da un valor. Para asignarles un valor no es necesario utilizar el comando setf. Tipos de variables:

Las variables pueden ser: - Int - String - Char - Double - Boolean

Operaciones Aritméticas:

En caso de los tipos int y double los operadores aceptados son los siguientes: (+ 2 2) (- 3 2) (* 2 2)

Page 10: Proyecto1_compi2_2012

(/ 2 2) (^2 2) Donde el operador “+” es suma, el operador “-“es resta, el operador “*” es multiplicación, el “/” es división y el “^” es potencia. NOTA: Se deben realizar sus respectivas validaciones es decir un int solo puede realizar operaciones con otro int, mientras que un double puede realizar operaciones con un int y un double. Operadores lógicos

Para trabajar las variables de tipo boolean se puede utilizar los operadores lógicos, los cuales nos devolverán un valor verdadero o falso, los operadores lógicos aceptados son los siguientes: var (and verdadero verdadero) var (or verdadero falso) var (not verdadero)

- And Representa al operador AND, en el ejemplo el resultado es verdadero. - Or Representa al operador OR, en el ejemplo el resultado es verdadero. - Not Representa al operador NOT, en el ejemplo el resultado es falso.

Operadores de comparación:

Se cuenta además con operadores de comparación, los cuales permiten realizar un programa más complejo y aprender a utilizar las instrucciones de bifurcación y ciclos, los operadores de comparación aceptados por el lenguaje son: var (>10 3) var (< 10 3) var (= 5 3) var (<= 3 4) var ( >=3 4) var ( != 3 4)

- > mayor que, devuelve verdadero si el operando izquierdo es mayor. - < menor que, devuelve verdadero si el operando derecho es mayor. - = igual a, devuelve verdadero si ambos operandos son iguales. - <= menor o igual, devuelve verdadero si ambos operandos son iguales o el de la izquierda es

menor. - >= mayor o igual, devuelve verdadero si ambos operandos son iguales o el de la izquierda es

mayor. - != devuelve verdadero si los operandos son distintos.

Los operadores de comparación pueden ser usados tanto en variables como en números, con la respectiva validación de que la variable sea de tipo numérica.

Page 11: Proyecto1_compi2_2012

NOTA: Para las variables o valores de tipo String ó char solo se permiten los operadores de comparación: != y =. Ejemplo: Var (=’C’ ´C´) Var (!= “hola” ”hola mundo”) Comandos de movimiento

Para que se desplace la tortuga por el lienzo se utilizarán los siguientes comandos: (avanzar x) Donde x es un número entero, esta función desplaza a la tortuga hacia adelante x pixeles. (retroceder x) Donde x es un número entero, esta función desplaza a la tortuga hacia atrás x pixeles. (Centrar) Mueve a la tortuga al centro del lienzo; ( ir x, y) Desplaza a la tortuga a cualquier posición dentro del lienzo sin dejar rastro, “x” se refiere a la posición desde la izquierda del lienzo y “y” a la posición desde arriba del mismo. (irx x) Desplaza a la tortuga sin dejar rastro a la posición “x” desde el margen izquierdo del lienzo. Sin modificar su posición respecto al margen superior del lienzo. (iry y) Desplaza a la tortuga sin dejar rastro a la posición “y” desde el margen superior del lienzo. Sin modificar su posición respecto al margen izquierdo del lienzo. Para saber en qué posición se encuentra nuestro pincel tenemos los comandos siguientes: (obtener x) (Obtener y)

- Obtenerx: nos indica el número de pixeles desde el margen izquierdo del lienzo hasta la posición

actual del pincel. - obtenery nos indica el número de pixeles desde el margen superior del lienzo hasta la posición

actual del pincel.

Page 12: Proyecto1_compi2_2012

Sentencias de control (if (> a 5) (setf var 5) ) (elseif (< a 5) (set f var 3) ) Definición de procedimientos El lenguaje L solo tiene procedimientos todas sus operaciones siempre devuelven un valor. La sintaxis de los procedimientos es la siguiente: (defun procedure1 (x ) (setf x 10) ) Llamada de procedimientos Para llamar un procedimiento se hace de la siguiente forma, donde puede tener o no parámetros y su lista de parámetros puede ser N. (proceder1 x)

Lenguaje C

Comentarios

Para escribir un comentario es de la siguiente forma: //esto es un comentario. Donde se utiliza el símbolo // todo lo que se encuentra después del símbolo es un comentario. Variables

Para escribir variables de tipo global dentro del programa es de la siguiente forma: int var; int var = 100; String var= ”esto es una cadena”; Char var =’C’; double var= 10.02 ; boolean var =true;

Page 13: Proyecto1_compi2_2012

boolean var =false; Tipos de variables:

Las variables pueden ser: - Int - String - Char - Double - Boolean

Operaciones Aritméticas:

En caso de los tipos int y double los operadores aceptados son los siguientes: Var = 2+2; Var= 3-2; Var= 2*2 Var= 2/2; Var=3^2; Donde el operador “+” es suma, el operador “-“es resta, el operador “*” es multiplicación, el “/” es división y el “^” es potencia. NOTA: Se deben realizar sus respectivas validaciones es decir un int solo puede realizar operaciones con otro int, mientras que un double puede realizar operaciones con un int y un double. Operadores lógicos

Para trabajar las variables de tipo boolean se puede utilizar los operadores lógicos, los cuales nos devolverán un valor verdadero o falso, los operadores lógicos aceptados son los siguientes: var = verdadero && verdadero; Var= verdadero || falso; var = ! verdadero;

- && Representa al operador AND, en el ejemplo el resultado es verdadero. - || Representa al operador OR, en el ejemplo el resultado es verdadero. - ! Representa al operador NOT, en el ejemplo el resultado es falso.

Page 14: Proyecto1_compi2_2012

Operadores de comparación:

Se cuenta además con operadores de comparación, los cuales permiten realizar un programa más complejo y aprender a utilizar las instrucciones de bifurcación y ciclos, los operadores de comparación aceptados por el lenguaje son: var = 10 < 3; var = 3< 10 ; var = 5<= 3; var = 4==4; var 4>=4; Var= 4!= 3

- > mayor que, devuelve verdadero si el operando izquierdo es mayor. - < menor que, devuelve verdadero si el operando derecho es mayor. - = =igual a, devuelve verdadero si ambos operandos son iguales. - <= menor o igual, devuelve verdadero si ambos operandos son iguales o el de la izquierda es

menor. - >= mayor o igual, devuelve verdadero si ambos operandos son iguales o el de la izquierda es

mayor. - != devuelve verdadero si los operandos son distintos.

Los operadores de comparación pueden ser usados tanto en variables como en números, con la respectiva validación de que la variable sea de tipo numérica. NOTA: Para las variables o valores de tipo String ó char solo se permiten los operadores de comparación: != y =. Ejemplo: Var =’C’== ´C´ Var =“hola”!= ”hola mundo”;

Opciones de pincel

Nuestro pincel puede estar arriba o abajo esto se indica con los siguientes comandos: levatarPincel(); bajarPincel(); Donde levantarPincel() levanta el pincel, cuando el pincel se encuentra levantado y se desplaza no deja ningún rastro. bajarPincel() es la operación contraria, bajando el pincel para que al desplazarse el rastro quede pintado.

Page 15: Proyecto1_compi2_2012

Opciones de limpiado

Para limpiar todo el lienzo se tienen los siguientes comandos: limpiar(); reiniciar();

- limpiar() borrará todo rastro pintado, pero dejará el pincel en la posición y ángulo en la que se

encuentra antes de llamar a la función. - reiniciar() por su parte, borra todo trazo pintado, pero también retorna el pincel al centro del

lienzo y lo coloca a 90° sobre la horizontal. Icono

Ya que la aplicación está orientada a niños, se buscará que la misma tenga un atractivo para ellos, utilizando una imagen de una tortuga como en Kturtle, la cual puede ocultarse o mostrarse con los siguientes comandos: mostrarTortuga(); ocultarTortuga(); Mensajes

La aplicación debe ser capaz de mostrar mensajes en pantalla, es decir que al momento de ingresar el comando se desplegará un mensaje, el comando para desplegar mensajes es el siguiente: print (X); Donde x es el mensaje que se desea mostrar; Pedir parámetros

También se puede mandar a pedir parámetros al usuario, esto se realizará con el siguiente comando: read(X, var); Donde var es la variable que almacenará la entrada del usuario, y X es un mensaje que se desee mostrar al usuario. Espera

Podemos hacer que la tortuga se detenga durante cierta cantidad de segundos, el comando es: esperar(x); Donde x es la cantidad de segundo a esperar.

Page 16: Proyecto1_compi2_2012

Sentencias de control

Sentencia sí: Int x=6; If x > 6 { print(“si es mayor”); } Verifica que la condición se cumpla, si se cumple se ejecuta el código en su interior. También se pueden realizar comparaciones más complejas: Int x =6 if x > 6 { print(“si es mayor”); } If else (x < 4) && (x>1){ print(“si esta entre 4 y 1”); } else { print(“ninguna de los anteriores”); } Bucles Mientras El bucle mientras se ejecuta mientras la condición sea verdadero. Int x = 1 while (x < 5) { esperar( 1=; x = x + 1; } Repetir El bucle repetir es igual que mientras, solo que este se va ejecutando el número de veces que se le indique en la expresión a evaluar: For ( int x=0; x <4; x++) { esperar (1); }

Page 17: Proyecto1_compi2_2012

Interrupción de un bucle Si se encuentra una condición en que el bucle ya no se deba seguir ejecutando, se puede interrumpir el mismo, para interrumpir un bucle, el comando es el siguiente: Break; Estructuras Se podrá crear estructuras personalizadas para apoyar la programación. La sintaxis es la siguiente: Struct posicion{ Int x; Int y; } Al momento de declarar una variable estructura, se deben crear los campos en memoria. Se podrá acceder a los miembros de las estructuras, a través de la siguiente sintaxis: posicionenx = posicion->x Procedimiento y funciones: Las funciones su sintaxis es como la siguiente: Void función(int x){ print(x); } Los procedimientos pueden de ser de cualquier tipo de variables o de alguna estructura, por lo cual siempre devolverán un valor del tipo que están asignados: Int procedure1(int x){ Return x+3; } Llamada a funciones o procedimientos: Las funciones y procedimientos pueden ser llamados de la siguiente manera: Función(); Al ejecutar un proyecto, se deberá ejecutar el método main (flujo principal), El cual solo pertenece al lenguaje C. Sin embargo las funciones que se llaman pueden estar escritas en cualquiera de los otros dos lenguajes.

Page 18: Proyecto1_compi2_2012

Análisis de código Al momento de analizar un proyecto, si este no contiene errores se deberá crear un archivo el cual mostrará un análisis del código que se ha ejecutado, con la finalidad de medir el aprendizaje y en cuanto a optimizar el código que generaron los niños, la información que debe colocarse en este archivo es:

- Número de variables globales - Nombre de cada método con el número de parámetros, variables declaradas e instrucciones - Número de sentencias en el flujo principal

También podrán analizarse dos en los cuales el reporte deberá contener (además los elementos anteriores):

- Número de variables con el mismo nombre - Número de métodos que tienen el mismo número de instrucciones - Estructuras definidas con el mismo número de campos

Panel de control Una vez analizado un proyecto, se deberá generar un panel con la información (variables globales y procedimientos) de cada archivo, al darse doble clic en alguno de los elementos se deberá mostrar un cuadro de diálogo para editarlo, en caso de editar el nombre de algún elemento, deberá ser reemplazado el antiguo nombre, por el nuevo nombre en TODOS los archivos donde se referencie el objeto. Como el siguiente:

Errores Para el manejo de errores se hará uso de la librería log4j de apache en la cual indicaremos como nivel INFO cada uno de los errores, indicando si estos son de tipo léxico, sintáctico o semántico, en que parte del código fue que se encontró el error, y en caso de ser sintáctico o semántico cual era el valor que se esperaba. Se debe realizar todo esto en un archivo y se debe borrar el contenido de este archivo cada vez que se pulse la opción ejecutar en la interfaz gráfica, de modo que solamente se muestren los errores de la última ejecución.

Page 19: Proyecto1_compi2_2012

Entregables Se deberá entregar un disco compacto identificado el día acordado, en el mismo deben incluir:

- Aplicación funcional

- Código Fuente

- Manual de usuario

- Manual Técnico

Restricciones y Notas Importantes Se deberá utilizar el lenguaje JAVA

Para la construcción del análisis léxico y sintáctico se utilizarán las herramientas Flex y CUP.

El proyecto es individual.

Copias de proyectos o de gramáticas tendrán una nota de 0 puntos y serán reportados al Ingeniero de su sección, así como a la Escuela de Ciencias y Sistemas.

Se tomará en cuenta la calidad de la información proporcionada por el compilador cuando se produzcan errores, así como la presentación de la interfaz gráfica y amigabilidad de la aplicación.

La calificación del proyecto será personal, en un horario que posteriormente será establecido. Se debe tomar en cuenta que durante la calificación no podrán estar terceras personas alrededor o de lo contrario no se tendrá derecho a calificación

Fecha de Entrega Lunes 1 de Octubre del 2012 No hay prórroga, se entrega todo en un disco compacto y la entrega será

presencial. El lugar y hora será acordado con su auxiliar.