Practica1_Compiladores1
Click here to load reader
Transcript of Practica1_Compiladores1
Primera
1. Descripción General
1.1 Objetivo General
Que el estudiante aprenda a utilizar la
la finalidad de implementar un editor de texto.
1.2 Objetivos Específicos
• Manejar e Implementar expresiones regulares para reconocer un lenguaje de
entrada.
• Realizar un editor de texto avanzado que reconozca palabras
resalte como un editor de texto avanzado [Kate, notepad++].
• Aprender a utilizar
1.3 Descripción
La empresa XYZ requiere la implementación de un editor de texto avanzado para
facilitar el uso y visualización de las palabr
empleados para la utilización del lenguaje.
2. Características de la solución
Para responder a las necesidades que se le plantean, se ha pensado en el
Desarrollo de una aplicación en lenguaje JAVA que permita r
clases, variables y métodos,
operadores, expresiones
resalte las palabras con otro color
Primera Práctica
Descripción General
Que el estudiante aprenda a utilizar la herramienta de análisis léxico y [JLex|JFlex]
la finalidad de implementar un editor de texto.
Objetivos Específicos
Manejar e Implementar expresiones regulares para reconocer un lenguaje de
Realizar un editor de texto avanzado que reconozca palabras reservadas y
resalte como un editor de texto avanzado [Kate, notepad++].
Aprender a utilizar las herramientas de [JLex|JFlex].
La empresa XYZ requiere la implementación de un editor de texto avanzado para
facilitar el uso y visualización de las palabras reservadas del lenguaje C# que utilizan los
empleados para la utilización del lenguaje.
Características de la solución
Para responder a las necesidades que se le plantean, se ha pensado en el
de una aplicación en lenguaje JAVA que permita reconocer definición de
clases, variables y métodos, palabras reservadas, comentarios, modificadores
expresiones y de métodos en lenguaje C#. Con el único objetivo de
con otro color de acuerdo a la especificación.
Universidad de San Carlos de GuatemalaFacultad de Ingeniería Escuela de Ciencias y Sistemas Organización de Lenguajes y Compiladores 2do. semestre del 2010
[JLex|JFlex] con
Manejar e Implementar expresiones regulares para reconocer un lenguaje de
reservadas y
La empresa XYZ requiere la implementación de un editor de texto avanzado para
que utilizan los
Para responder a las necesidades que se le plantean, se ha pensado en el
definición de
modificadores,
Con el único objetivo de que
Universidad de San Carlos de Guatemala
Organización de Lenguajes y Compiladores 1
Con la ayuda de las herramientas [JLex|JFlex] se deberá implementar un analizador
léxico que reconozca el archivo con la definición de un lenguaje en C#.
Se deben de mostrar de manera funcional y agradable al usuario errores: léxicos,
sintácticos y semánticos. Además la aplicación debe ser capaz de implementar el
manejo y recuperación de errores.
2.1 Diseño de la interfaz
En la aplicación se deberán demostrar como mínimo los siguientes menús, tomando en
cuenta que deberá de ser totalmente grafica.
Archivo Ayuda
Nuevo Manual de Usuario
Abrir Manual Técnico
Guardar Temas de Ayuda
Guardar Como
Compilar
Errores
Salir
La especificación del menú será de la siguiente forma
• Menú
o Nuevo: Despliega una nueva pestaña en la cual el usuario podrá crear un
nuevo programa en lenguaje c#.
o Abrir: Permite abrir un programa en c# para poder seguir editándolo
o Guardar: Permite guardar el programa en c# que está siendo editado.
o Guardar Como: Permite guardar el programa en c# con un nombre nuevo.
o Errores Muestra los errores al cargar el programa de c#
o Salir: Con esta opción se cerrara la aplicación.
• Ayuda
o Manual de Usuario: Se deberá demostrar el manual de usuario realizado
por el estudiante para guiar a la persona en la utilización de la aplicación.
o Manual Técnico: Se deberá demostrar el manual técnico realizado por el
estudiante para entender como se ha realizado la aplicación.
o Temas de Ayuda: Permite mostrar información de la persona que ha
creado la aplicación.
2.2 Estructura del archivo de entrada
//definición de Clase
{
/*
Definición de variables con asignación opcional
Definición de constructores y métodos
*/
}
El lenguaje a desarrollar será sensible al texto por lo que deberá de hacer distinción entre
mayúsculas y minúsculas. Además se aceptaran comentarios en cualquier parte del archivo
como los siguientes
En resumen se definen las variables que podrán ser una lista de ellas con un tipo asociado
y una asignación opcional, además de que se definen una lista que incluirá constructores y
métodos a utilizar, en los cuales se pueden incluir sentencias de ciclos, condicionales,
declaraciones de variables con asignación y asignaciones sin declaración de variables.
El archivo de entrada que deberá de reconocer los componentes siguientes del lenguaje
c#.
• Palabras reservadas
o Tipos (int, doublé, String)
o Sentencias (if, switch, for, while, do while, repeat)
o Sentencias de impresión (ConsoleWrite.line)
o Tipos devueltos(int, doublé, String)
o Otras palabras (this, return, break)
• Operadores
o Aritméticos (+,-,*,/,%)
o Relacionales (==,!=,<,<=,>,>=)
o Lógicos(&&,||,!)
o Asignación(=)
• Comentarios
o de una línea (//)
o de varias líneas(/**** */)
• Identificadores (Nombres de Clases, Variables y Métodos)
• Contantes (enteros, decimales, cadenas)
// Comentario de una línea
/* Comentario
De varias
Líneas*/
2.3 Funcionalidad de la aplicación
La aplicación debe ser capaz de cargar un archivo de entrada y reconocer los
componentes del archivo de entrada especificados antes. Resaltándolos con diferentes
colores de acuerdo a la siguiente tabla.
Componentes de C# Color
Palabras reservadas Azul
Operadores Anaranjado
Comentarios Gris
Identificadores Rojo
Constantes Verde
2.4 Manejo de errores
La aplicación deberá reportar los errores léxicos que encuentre al momento de ingresar un nuevo archivo. En el reporte de errores se debe indicar la posición donde ocurrió (fila columna) y qué provoco el error. Se evaluará la respuesta de la aplicación a los errores, esto quiere decir que se subrayaran los errores encontrados con algún color que los resalte.
Error Descripción Columna Fila
2.5 Documentación
• Manual de Instalación y Desinstalación • Manual Técnico (debe de incluir la(s) gramática(s) que se utilizó, la • gramática es distinta al archivo que utilice para la herramienta que • genera el analizador) • Manual de Usuario • Archivos de Prueba
3. Notas Importantes
• NO SE DARÁ PRORROGA, por ningún motivo. • Los comentarios de múltiples líneas deberá realizarse con estados en
[JLex|JFlex]. • La práctica se deberá realizar en forma individual. • La práctica deberá implementarse en lenguaje JAVA, en caso contrario
este no será calificado. • Para leer los archivos de entrada se deberá utilizar la herramienta
[JLex|JFlex] • Se valorará 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.
• Copias de proyectos o de la gramática tendrán una nota de 0 puntos y Las sanciones por parte de la Escuela de Sistemas.
• Es obligatorio que la aplicación tenga un instalador el cual se deberá realizar con una aplicación especial para hacer instaladores profesionales (Inno, NSIS, etc.), por lo que no se permitirá archivos “.bat”.
• La calificación de la práctica será personal y durará como mínimo 15 minutos, en un horario que posteriormente será establecido. Se deberá tomar en cuenta que durante la calificación no podrán estar terceras personas alrededor o de lo contrario no se calificará el proyecto.
• Todos los errores generados por la aplicación deberán ser de manera amigable al usuario o de lo contrario no serán calificados.
• No se aceptará la ejecución de procesos en consola u otro tipo de programa, a excepción del archivo ejecutable de la aplicación o de lo contrario no serán tomados en cuenta para la nota final del proyecto.
• Se debe tomar en cuenta que la funcionalidad es importante para la calificación del mismo.
CD deberá contener: El instalador de la aplicación el cual deberá estar incluida la documentación, archivos de prueba y código fuente de la aplicación. No deberá entregar la documentación impresa, solamente la hoja de calificación y la hoja de elementos elaborados de la aplicación. En sobre con los datos completos.
Fecha de entrega: sábado 21 de agosto de 2010.
4. Anexo
A continuación se muestra un archivo de entrada y su correspondiente salida como
ejemplo.
Class Objeto{
//definición de variables
int a;
double b;
String c;
Objeto(){
this.a=0;
this.b=0.0;
this.c=””;
}
Objeto(int a,double b,String c){
this.a=a;
this.b=b;
this.c=c;
}
void metodoIf(){
if(a==b){
write.line(a);
}
else if(a!=b) {
write.line(b);
}
}
String metodofor(){
for(int c=0;c<10;c++){
c=c+”1”;
}
return c;
}
}