Professional Documents
Culture Documents
FACULTAD DE INGENIERÍA
ESCUELA DE CIENCIAS Y SISTEMAS
LENGUAJES FORMALES Y DE PROGRAMACIÓN
Descripción:
La práctica consiste en realizar un organigrama para la empresa Digital IngameSolutions y los
departamentos que dicha empresa posee, para dicho organigrama se tiene un lenguaje definido, y a
través de éste se pueden generar gráficas que muestren las relaciones existentes entre los diferentes
trabajadores y sus superiores. La aplicación será desarrollada en lenguaje de programación C#.
El gráfico propio del organigrama se realizará a partir del contenido del editor de organigramas, este
editor se puede llenar directamente o a través de la carga de un archivo con extensión .ogm, y los
gráficos serán mostrados en una página HTML externa a la aplicación.
La aplicación debe proveer la opción de analizar el contenido del editor, y deberá generar como
salida una página HTML con los resultados, en caso de que el archivo contenga errores, mostrará
una página HTML con el detalle de estos.
• Bloque Organigrama
Dentro del lenguaje propio de la aplicación es posible indicar que se desea realizar un
organigrama de la siguiente manera:
organigrama:<departamento>:{<Bloques trabajador>}
Para cada instrucción organigrama que se ingrese en el archivo de entrada, se generará una tabla
en la página HTML que mostrará el nombre del organigrama y el grafico correspondiente. El
segmento <departamento> en la instrucción organigrama es una cadena que contiene el nombre
del departamento, el segmento <Bloques trabajador> se detallará más adelante.
• Bloque Trabajador
trabajador:{
codigo:<numero entero>;
nombre:<cadena>;
superiores:{<lista de códigos>};
}
organigrama:"Dev Ops":{
trabajador:{
codigo:433;
nombre:" Mario Arnulfo Prera";
superiores:{};
}
trabajador:{
codigo:107;
nombre:" Jose Fernando Aguirre";
superiores:{433};
}
trabajador:{
codigo:017;
nombre:" Jorge Daniel Morales";
superiores:{433};
}
trabajador:{
codigo:103;
nombre:" Eduardo Javier Florian";
superiores:{433};
}
trabajador:{
codigo:147;
nombre:" Donoban Manuel Orellana";
superiores:{017};
}
trabajador:{
codigo:019;
nombre:" Juan Pablo Calderon";
superiores:{017};
}
trabajador:{
codigo:795;
nombre:" Jessica Felicia";
superiores:{103};
}
trabajador:{
codigo:960;
nombre:" Priscila Maria Molina";
superiores:{103};
}
trabajador:{
codigo:770;
nombre:" Jherson Jose Hevia";
superiores:{103};
}
trabajador:{
codigo:796;
nombre:" Zoe Fabiola Hernandez";
superiores:{795, 960, 770};
}
}
Al ejecutar las instrucciones anteriores en el editor, se generaría una página HTML que mostraría
algo como lo siguiente:
En la imagen anterior podemos observar que en la parte superior de la tabla resultante se muestra
el nombre que se le dio al bloque organigrama como título.
Cada una de las etiquetas de trabajador muestra únicamente el código y el nombre del trabajador,
las flechas del grafo son generadas en función de los superiores de cada trabajador, por ejemplo,
Jorge Fernando Aguirre tiene como superior a Mario Arnulfo Prera, lo que significa que existirá una
flecha que va de Mario Arnulfo Prera hacia Jorge Fernando Aguirre.
Aplicación:
La aplicación debe analizar el texto del editor, de encontrar errores léxicos, la aplicación debe
informar al usuario y mostrar un reporte de errores en formato HTML, en este caso no debe generar
la página de salida. En la tabla con el reporte de errores se deben mostrar los siguientes campos:
Tipo Color
Palabras reservadas Azul
Números Amarillo
Cadenas Verde
Dos puntos Morado
Punto y coma Rojo
Llaves Rosado
Coma Celeste
Otros Negro
Además de colorear los elementos léxicos y generar la página de salida HTML, se debe generar otra
página HTML que contenga una Tabla de tokens con los siguientes campos:
1. Editor de texto: Debe ser un área de texto en el cual se puedan escribir nuevas instrucciones
de entrada o bien cargar texto desde archivos con extensión .ogm
2. Abrir: La interfaz debe proveer la capacidad de abrir archivos con extensión .ogm.
3. Guardar: La aplicación debe proveer la capacidad de guardar el texto contenido en el editor.
Si no ha sido guardada nunca, debe proveer una opción para ingresar el nombre del nuevo
archivo y la ubicación en la que se desea guardar.
4. Guardar como: Está opción permite guardar el archivo de entrada con otro nombre, se debe
preguntar el nombre del nuevo archivo.
5. Analizar: Debe realizar el análisis léxico del lenguaje que se encuentra actualmente en el
editor y generar la salida correspondiente.
6. Acerca de: Debe desplegar una ventana con los datos del estudiante y del curso.
7. Salir: Debe terminar la ejecución de la aplicación.
Entregables:
• Manual de Usuario
• Manual Técnico: Dentro de este manual debe incluirse el autómata finito determinista que
se utilizó para la implementación del analizador léxico.
• Código fuente.
• Ejecutable de la práctica