Sei sulla pagina 1di 8

UNIVERSIDAD DE SAN CARLOS DE GUATEMALA

FACULTAD DE INGENIERIA
ESCUELA DE CIENCIAS Y SISTEMAS
LENGUAJES FORMALES Y DE PROGRAMACION
Segundo Semestre 2014
Ing. William Estuardo Escobar Argueta
Aux. Carlos Abraham Yoque Rodrguez




Proyecto #1
1. OBJETIVO
Hacer que el estudiante pueda desarrollar y practicar sus conocimientos en
teora de autmatas y pueda aplicar los mtodos de implementacin de
analizadores lexicogrficos, sintcticos y semnticos.

2. DESCRIPCION
La prctica consiste en realizar un evaluador expresiones matemticas y
expresiones regulares, realizando para esto un scanner.
Las expresiones como la evaluacin de estas y sus resultados son ledos de un
archivo de texto con extensin .graficlfp. El archivo debe tener el siguiente formato
(se har diferencia entre maysculas y minsculas) y sin importar el
orden en el que vengan los bloques.

2.1. Estructura Bsica

<INICIO DE PROGRAMA> nombre
<<DECLARACIONES>>
{
Declaracin de variables y expresiones regulares
}
<<DEFINICIONES>>
{
Definicin de variables y expresiones regulares
}
<<RESULTADOS>>
{
Escritura de Resultados.
}
<FIN EVALUADOR>



2.2. Declaraciones:
En este bloque del evaluador se declararn las variables a las que se les asignar
el resultado de evaluar una expresin matemtica o expresin regular. Las variables
son representadas por identificadores (un identificador comienza con una letra
cualquiera y es seguido de letras o dgitos). Pueden ser de tipo ENTERO o
CARCTER para las expresiones matemticas de tipo ER para las expresiones
regulares. Opcionalmente las variables pueden tener definido un rango de valores
Validos que pueden tomar. Solamente esos valores pueden recibir, de lo contrario
dar un error. Si la variable es entera el rango se define con los nmeros separados
por dos puntos (..). Si la variable es de tipo carcter el rango se define con el cdigo
ASCII del carcter colocado con la instruccin chr(cdigo).

Ejemplo:
A: Entero [1..10];
Valor1 : Caracter [chr (65)..chr(71)];
Alto: Entero;
S:Caracter;
B,A,C:ER;

2.3 Definiciones:
Las expresiones se definen por una variable seguido del operador de asignacin
(==) seguido por las expresiones que estn formadas por variables, valores
enteros, constantes, operadores y parntesis de agrupacin.

Los operadores para expresiones de tipo entero son suma o + y resta o (Nota: SI
se tomar en cuenta la precedencia de operadores).
Para el caso de las expresiones regulares se utilizarn los operadores de
agrupacin (), el operador O ( | ), la concatenacin se har implcita esto quiere decir
que no es necesario el operador punto (.), el * para denotar los ciclos, para el caso
de los psilon se utilizar la letra E mayscula.

Ejemplo:
* Expresiones matemticas
Alto== 4+4;
o
Alto== suma (4,4);
Peso== (4+4)-8;
o
Peso== resta(suma(4,4),8);
Peso==Alto+4
o
Peso==suma(Alto,4)





* Expresiones regulares
A==0|1
B==(00|11)*
C==( (ab|cd|ef)* | (00|11|E) )
* Caracteres
Los operadores para expresiones de tipo carcter son:
* \\\ concatena dos strings.
'abc' \\\ 'def' 'abcdef';

* ||| Agrega el primer string al final del segundo y los pone en maysculas.
'abc' ||| 'def' 'DEFABC';
* /// Concatena los string y los pone en maysculas.
'abc' /// 'def' 'ABCDEF';

2.4 Resultados:
Los resultados de las expresiones asignados a las variables sern escritos
mediante la instruccin:
Escribir(variable1, variable2,..variablen) o Escribir(texto + variable1,
variable2,..variablen). Esta puede aparecer cualquier nmero de veces en la
parte de resultados, para el caso de las expresiones matemticas.

Graph(variable tipo ER) . Esta puede aparecer cualquier nmero de veces en la
parte de resultados, para el caso de las expresiones regulares.

Ejemplo
RESULTADOS
Escribir (El valor del alto es: + Alto);
Escribir (Alto, Peso);
Escribir (Peso);
Graph(A);
Graph(B);
Graph(C);

2.5. Comentarios: Dentro de cualquier parte del archivo de entrada se pueden
colocar comentarios que pueden ser:
Multi- lnea:
/# Este es un
Comentario de
varias lneas #/




2.6. Ejemplo de Archivo de entrada:
<EVALUADOR> Primer Proyecto
/# Comienza la declaracin
de variables #/
<<DECLARACIONES>>
{
A: Entero [1..10]; /#variable entera con rango de valores#/
Valor1 : Carcter [chr (65)..chr(71)];
Alto: Entero;
B,C:ER;
}
<<DEFINICIONES>> /#Expresiones a ser evaluadas #/
{
A == 3 + (9x87) 12;
Valor1= = abc ||| xyz;
Alto == multiplicacin(A , 23);
B==0|1|E;
C==(ab|01)F*;
}
<<RESULTADOS>>
{
Escribir (A);
Escribir (Los valores de alto y de carcter son: Alto, Valor1);
Graph(B);
Graph(C);
}
<FIN EVALUADOR>

3. Funcionalidad Bsica que debe poseer la aplicacin
La aplicacin debe poseer como mnimo lo siguiente:
3.1. rea de edicin: permite editar un archivo nuevo o ya existente.
3.2. Abrir: Muestra una ventana de seleccin de archivos donde solo se
mostraran los que tengan extensin. graficlfp para abrirlos.
3.3. Guardar: Permite guardar los cambios del archivo actual que se encuentra
abierto.
3.4. Guardar como: Muestra una ventana para seleccionar la ubicacin en la
cual se guardara el nuevo archivo, utilizando filtros que muestren
nicamente los archivos con extensin. graficlfp
3.5. Copiar, Pegar, Cortar: permitirn realizar las opciones de copiar, pegar y
cortar de forma parcial o total el contenido del rea de edicin.
3.6. Mostrar: Deber dar las opciones para que se pueda mostrar los reportes
y resultados de los distintos anlisis.





4. Funcionalidad Especfica
Al comienzo de la aplicacin y antes de realizar cualquier accin de anlisis se
deber preguntar al usuario la ubicacin y nombre de la carpeta donde se
almacenarn los resultados del anlisis, luego de eso se deber crear la carpeta si
no existiera.

Archivo de Salida
Consiste en la entrega de la aplicacin realizando anlisis lexicogrfico, el cual
deber generar un archivo de salida con extensin html el cual contendr la tabla
de smbolos correspondiente al escaneo del archivo de entrada, la estructura de la
tabla de smbolos deber ser de la siguiente forma:



Ejemplo:


Archivo de Errores
En el caso que existieran errores lxicos se deber generar una tabla de
errores en una pgina en formato html cuyo nombre ser ERR, la estructura de la
tabla de errores deber ser:








NOTA: La aplicacin deber contar con un espacio donde se podr ver el nmero
de fila y columna del puntero.



NOTA:
Si existen ERRORES NO se genera el html de errores y viceversa.

ENTREGABLES:
La segunda fase consiste en la entrega de la aplicacin completamente funcional,
realizando anlisis lexicogrfico, sintctico y semntico, el cual deber generar un
archivo de salida con extensin .resultlfp el cual contendr todos los resultados
de las distintas operaciones.
Asi como generar los archivos .JPG, GIF, .BMP, o cualquier otra extensin de
archivos de imagen que contendrn las expresiones regulares mediante el mtodo
del rbol.
Todos los archivos debern de guardarse en la carpeta creada al iniciar la
aplicacin.

Ejemplo:
En el archivo con la extensin .resultlfp la salida sera la siguiente (de acuerdo al
ejemplo de archivo de entrada):
774
Los valores de alto y de carcter son: 17802, XYZABC
En los archivos de imagen la salida sera la siguiente (de acuerdo al ejemplo de
archivo de entrada):

En el caso de la variable B (B==0|1|E)












En el caso de C (C==(ab|01)F*)
















Para la entrega de la segunda fase se deber entregar lo siguiente:
Manual Tcnico.
Manual de Usuario.
rbol de anlisis sintctico
Autmata Finito.
Gramtica.
Tabla de smbolos.
Aplicacin Funcional en su totalidad.

NOTAS:
Presentar sus respectivos informes de errores lxicos y sintcticos en formato
HTML.

El diseo de las tablas queda a discrecin del usuario media vez se presenten los
datos solicitados.

Todos los archivos generados .graficlfp, .resultlfp .jpg,.png etc debern de
guardarse en la carpeta creada al iniciar la aplicacin de lo contrario habr
sancin de nota.










CONSIDERACIONES GENERALES A TOMAR EN CUENTA:
El lenguaje en el que se desarrollara la aplicacin es JAVA usando
Netbeans (si se usa otro IDE o lenguaje la nota ser de 0). El sistema
Operativo es libre.
Se deber utilizar graphviz para la realizacin de los rboles.
Se tomara en cuenta el uso de filtros para abrir y guardar archivos con
extensin valida.
No se permite el uso de libreras, clase o mtodo que hagan el trabajo.
El parser y scanner debern ser realizados por el estudiante
Fecha de entrega:
Fase Jueves 11 de Septiembre 2014
La hora y lugar de entrega ser definida por el auxiliar

FORMA DE CALIFICACIN:
Presencial y conforme entregaron la prctica, si el estudiante no se encuentra
cuando se le llame este pasara al ltimo, y si por alguna razn se le vuelve a
llamar por segunda ocasin y no estuviese ya no se le calificar.

FORMA DE ENTREGABLES:
Se deber de entregar en un CD, En una carpeta llamada Cdigo, todas las
clases que se utilicen para el correcto funcionamiento de la prctica, en otra
carpeta llamada Ejecutable se encontrara el ejecutable (jar) y cualquier archivo
que sea necesario para su funcionamiento de no cumplirse esta condicin se
tendr una sancin en la nota obtenida.

IMPORTANTE

El proyecto 1 se entrega en la fecha indicada, se tomara en cuenta que la
puntualidad en la entrega afectara la nota, as tambin como queda a
discrecin del auxiliar el recibir algo fuera del tiempo estipulado.
Se deber realizar de forma individual.
Cualquier Copia, ser sancionada con la perdida automtica del
Laboratorio y la sancin correspondiente por parte de la escuela de
Sistemas.
Si se usa alguna librera se le sancionara con el 50% de la nota obtenida.
Si alguna persona no puede llegar a calificacin, debe informar con
anticipacin tanto al auxiliar como al ingeniero indicando el motivo de su
falta, el ingeniero determinara si puede o no realizarse la calificacin y bajo
qu trminos se har si esto se realiza.

Si se llegara a incumplir cualquiera de las normativas se tendr una
sancin en la nota.

Potrebbero piacerti anche