Está en la página 1de 6

UNIVERSIDAD DE SAN CARLOS DE GUATEMALA

FACULTAD DE INGENIERA
ESCUELA DE CIENCIAS Y SISTEMAS
LENGUAJES FORMALES Y DE PROGRAMACIN

Primer Semestre 2016


Seccin
AB-

Catedrtica
Inga. Damaris Campos de Lpez
Inga. Zulma Aguirre

Tutor acadmico
Eiji De Paz
Luis Fernando Lara Lemus

Enunciado de Proyecto No. 2


Objetivos:
Comprender y aprender a escribir gramticas libres de contexto, para poder crear un analizador
sintctico.
Implementar analizadores sintcticos, para establecer el orden correcto de los tokens resultantes
de la fase lxica del compilador.
Integrar las dos primeras fases de un compilador; anlisis lxico y sintctico.
Aprender a utilizar herramientas integradas en el lenguaje Visual Basic.
Descripcin:
Se le ha contratado a usted para desarrollar una herramienta flexible y atractiva para nios de 5 a 10
aos, que facilite la tarea de leer cuentos a maestros y padres de familia.
La herramienta consiste en tener una biblioteca de audio cuentos, capaz de convertir texto a voz, esto
con el objetivo de poder agregar cuentos dinmicamente a la biblioteca, por medio de un lenguaje
definido posteriormente en el enunciado y que llamaremos LF-Py, el cual ser gestionado por un
usuario que entiende de programacin. La aplicacin contar con algunas funciones definidas ms
adelante.
El programa contar con un editor de texto, con el cual se pueda definir el comportamiento de la
aplicacin, por lo cual se recibir como entrada un archivo con la extensin .py, este ser analizado
lxica y sintcticamente y posteriormente, siempre y cuando no exista ningn error, tendr como salida
la biblioteca de audio cuentos.
Definicin del Lenguaje:
Como se mencion, el programa contar con un mdulo para que un usuario pueda programar la
aplicacin, en la cual se tendr que definir los cuentos por medio de clases, por medio del lenguaje al
que llamaremos LF-Py basado en Python, el cual es un lenguaje orientado a objetos y ms sencillo de
entender que Java.
Creacin de clases:
Cada cuento ser representado por una clase en el
lenguaje LF-Py, se puede definir N clases en un
mismo archivo .py. La creacin de clases es posible
por medio de la palabra reservada class como se
muestra en el ejemplo:

En ocasiones necesitamos instanciar


una clase con valores iniciales, por tal
razn usamos un mtodo especial que
inicializa los valores de una clase o
tambin llamado, mtodo constructor.

Nota:
def

Palabra reservada utilizada para indicarle al lenguaje que se declarar un


mtodo/funcin.
Palabra reservada que est compuesto por dos guiones bajos seguidos
al inicio y al final, utilizado para indicarle al lenguaje que es el mtodo
constructor.
Palabra reservada, equivalente a un this en java, es obligatoria
mencionarla como 1er parmetro en cualquier mtodo/funcin.

__init__

self

Atributos: son caractersticas que identifican a un objeto. Para el lenguaje LF-Py es obligatorio
que cada clase, es decir cada cuento, tenga los siguientes atributos o variables:
o titulo: esta variable contendr el nombre o ttulo del cuento.
o cuento: esta variable contendr el texto del cuento completo, el cual ser mostrado y
traducido a voz en el mdulo Maestro/Padre (Explicado ms adelante).
o imagen: esta variable o atributo almacena la ruta donde se encuentra la imagen de
portada del cuento.
o tipoVoz: esta variable le podemos asignar 2 valores
Female: la voz que escuchar el usuario final ser de una mujer.
Male: la voz que escuchar el usuario final ser de un hombre.
o volumen: numero comprendido entre 0 y 100 que representa el volumen de las bocinas.
o velocidad: numero comprendido entre -10 y 10 que representa la velocidad con la cual
se escuchar la narracin (-10 es muy lento, 10 es rpido y 0 normal).
o Para crear un atributo o variable NO es necesario declararlo, basta con asignarle un
valor inicial y automticamente se crear nuestra variable.
o Es obligatorio asignarle un valor inicial a nuestra variable para que se cree.
o Es posible declarar N variables con su valor respectico en una sola lnea.
o Dentro de cualquier mtodo o funcin, incluyendo el constructor, es posible hacer
referencia a un atributo con la palabra reservada self, fuera de cualquier mtodo o
funcin no es posible.
Nota:

True
False
Cadenas
Caracter

Palabra reservada para denotar


un valor booleano verdadero
Palabra reservada para denotar
un valor booleano falso.
Las cadenas de texto empiezan
y terminan con comillas dobles.
Al igual que las cadenas, inician
y terminan con comillas dobles.

Mtodos: utilizados para gestionar nuestra aplicacin, la cual cuenta con 3 mtodos propios, los
cuales pueden estar presentes en una clase en cualquier orden, y como se mencion darn
funcionalidad a nuestro programa.
o Mtodos obligatorios:
traducir_a_voz: este mtodo cuenta con un atributo obligatorio llamado
traduccion el cual le dir a nuestro lenguaje, por medio de la palabra reservada
True o False que la traduccin de texto a voz estar o no disponible en el ModoMaestro/Padre.
mostrar_texto_cuento: este mtodo cuenta con un atributo obligatorio llamado
texto el cual le dir a nuestro lenguaje, por medio de la palabra reservada True o
False si el texto de nuestro cuento se muestra o no en el Modo-Maestro/Padre.
resaltar_palabra: este mtodo cuenta con un atributo obligatorio llamado resaltar

o
o

el cual le dir a nuestro lenguaje, por medio de la palabra reservada True o


False si se debe pintar de color Verde la palabra que se est escuchando en
tiempo real, por lo tanto, se debe validar, que, si est activada esta variable, las
otras dos anteriores tambin lo estn, pues no se podr pintar de color verde la
palabra actualmente en reproduccin si no se encuentran activas las variables de
mostrar el texto y de traducir de texto a voz en el Modo-Maestro/Padre.
Los mtodos se declaran con la palabra reservada def.
El primer parmetro que debe tener todo mtodo es la palabra reservada self.

Comentarios: existen 2 tipos de comentarios de una lnea y mltiples lneas.


o Los comentarios de una sola lnea inician con #
o Los comentarios de varias lneas inician y terminan con 3 comillas dobles.

Operaciones: las operaciones pueden presentarse en cualquier asignacin de variable/atributo.


Precedencia
1
1
2
2
3

Operacin
Suma
Resta
Multiplicacin
Divisin
Agrupacin

Operador
+
*
/
()

Ecuacin
2*5+1
(2+4)*2
10/5*3

Resultado
11
12
6

Interfaz grfica:
La herramienta a desarrollar contar con 2 modos de ingreso, una para el usuario desarrollador y el otro para
maestros o padres de familia que usarn la aplicacin.

Pantalla de Inicio:
Esta pantalla da la bienvenida al usuario, y le pide ingresar a
cualquiera de los 2 modos, segn el modo seleccionado, se debe
abrir otra ventana que mostrar las opciones correspondientes.
NOTA: se debe validar que si es la primera vez que se ingresa a la
aplicacin, el modo Maestro/Padre no est disponible hasta que
desarrollador haya definido el comportamiento de la aplicacin.

un

Modo-Desarrollador
Al igual de como se ha venido trabajando, la
herramienta contar con un editor de texto el
cual podr manejar pestaas, es decir, abrir,
guardar y escribir en cualquier pestaa los
archivos con extensin .py; se debe contar con
la opcin de ayuda (ayuda de la aplicacin en
pdf y datos del estudiante). Adicional a esto, se
contar con estos botones:
o A. Lxico: botn que inicia el anlisis
lxico.
o A. Sintctico: botn que inicia el
anlisis sintctico.
o Generar Archivos: botn que, al haber algn error, ya sea en la fase lxica o sintctica, muestre
los errores en una tabla HTML, se adjunta ejemplo en la seccin, archivos de salida.

Modo-Maestro/Padre
Es en este modo donde el usuario final podr hacer uso realmente de la aplicacin, pues se tendr que
crear y mostrar de una forma ordenada y creativa los cuentos que el usuario desarrollador haya definido.
Funcionalidades:
o Reproducir cuento: con este
botn la aplicacin ser capaz
de traducir el texto, definido por
el usuario desarrollador, a voz,
siempre y cuando haya sido
definido como True la variable
traduccion en el mtodo
traducir_a_voz.
o Mostrar cuento: debe
mostrarse el cuento definido
por el usuario desarrollador en
alguna etiqueta o rea de texto,
para que el usuario final pueda
leerlo, siempre y cuando haya sido definida la variable texto como True en el mtodo
mostrar_texto_cuento.
o Resaltar palabras: debe de pintarse de color verde, en el texto del cuento mostrado, la palabra
que se est escuchando actualmente, todo en tiempo real, siempre y cuando este definida la
variable resaltar como True en el mtodo resaltar_palabra.
NOTA: es indispensable que la aplicacin pueda traducir el texto a voz, no se permite reproducir algn
archivo de audio que contenta el cuento narrado.
NOTA: el usuario desarrollador puede definir N cuentos, y debe mostrarse todos en una forma ordena con
su nombre e imagen. Se recomienda mostrarlo en forma de tabla o lista.

Archivos de Salida:
El archivo de Tokens se debe mostrar en una pgina HTML, la informacin en una tabla como se
muestra a continuacin:

#
1
2
3

Fila
09
02
07

Columna
25
02
15

Lexema
class
tipoVoz
def

Id Token
11
12
13

Token
inicioClase
variable
inicioMetodo

El archivo de Errores, si existieran, se debe mostrar en una pgina HTML con la informacin en una tabla
como se muestra a continuacin:
Lxicos:

#
1
2
3

Fila
05
08
10

Columna
10
30
05

Fila
05
18
10

Columna
10
03
05

Carcter
|

Descripcin
Desconocido
Desconocido
Desconocido

Sintcticos:

#
1
2
3

Descripcin
Se esperaba { despus del identificador
Se esperaba + despus de un numero
Se esperaba __ en el mtodo constructor

Entregables que se deben incluir en el CD:

Manual de Usuario

Manual Tcnico, debe incluir la definicin de los tokens (IdToken, Token, patrn Exp.Reg.-) y el DFA (por el
mtodo del rbol a partir de las Expresiones Regulares de los tokens definidos) que se use para el analizador
lxico.
Adicionalmente se debe incluir la Gramtica tipo 2 (a mano o computadora) utilizada para resolver el anlisis
sintctico.

Cdigo Fuente y ejecutable de la aplicacin.


Documentacin a entregar de forma fsica el da de la calificacin:
Hoja de calificacin (Original y una copia)
Notas importantes:

La prctica se debe desarrollar de forma individual.

Este proyecto se deber desarrollar utilizando Visual Basic .Net con Visual Studio 2013.

Para la traduccin de texto a voz, se recomienda el uso de la librera: System.speech.dll

El proceso de obtener tokens, se debe hacer a travs de la implementacin del autmata finito determinista
obtenido por medio del mtodo del rbol y desarrollado por el propio estudiante.
Es obligatorio implementar el analizador sintctico con base a la gramtica tipo 2 que se incluya en la
documentacin.
No se puede agregar o quitar algn smbolo en el archivo de entrada. El proyecto deber funcionar con los
archivos de prueba que se disponga para la calificacin, sin modificacin.
La calificacin del proyecto ser personal y durar como mximo 30 minutos, en un horario que
posteriormente ser establecido. Se debe tomar en cuenta que durante la calificacin no podrn estar
terceras personas alrededor, de lo contrario no se calificar la prctica.
No se dar prrroga para la entrega del proyecto.
Copia parcial o total tendr una nota de 0 puntos, y se notificar a la Escuela de Sistemas para que
se apliquen las sanciones correspondientes.
En el caso de no cumplir con alguna de las indicaciones antes mencionadas, NO se calificar el
proyecto; por lo cual, se tendr una nota de cero puntos.
Fecha de entrega: 03 de Mayo de 2016

Anexos:
A continuacin se muestra algunos ejemplos de archivos de entrada.