Mini Javascript
Tipo: Interprete
Para este proyecto necesitara un subconjunto de la gramatica de Javascript
-Tabla de simbolos HOC3 ( variables , builtins )
-Maquina virtual de pila como la de HOC4
-Decisiones y ciclos HOC5 (AND OR NOT EQ NE GT LT GE LE)
-Ciclos con for
-Funciones y procedimientos ( declaracion , definicion y llamada) HOC6
-Debe soportar recursividad directa e indirecta
-Debe soportar Entrada y salida
Hacer un programa Demo para: adivinar animales
Usando un Árbol Binario (donde los nodos internos son preguntas y los nodos hoja son animales) haga un programa adivinador de animales. Este programa “pedira” al usuario que piense en un animal y luego hará una serie de preguntas que el usuario respondera con si o no y dichas respuestas serviran para buscar en el Árbol Binario el animal pensado. De este modo se “navega” por el Árbol Binario y cuando llega a una hoja se imprime su contenido (una cadena con un nombre de animal). Si falla en la adivinación deberá preguntar en que animal penso el usuario y pedir al usuario agregando una pregunta que permita distinguir entre los dos animales el que penso el usuario y el del fallo.
El programa al inicio sólo tendrá una pregunta en la raíz y dos hijos (uno para el si y otro para el no) que seran dos animales diferentes, si al tratar de adivinar el animal no se encuentra en el árbol Binario se agregara como hijo de la hoja a la que se llego a partir de las respuestas del usuario.
Ejemplo del codigo de recorrido del árbol binario
while(1){
//imprime raiz.dato
//lee respuesta
if(c=='s' || c=='S') raiz = raiz.izq;
else raiz = raiz.der;
if( raiz.izq == null && raiz.der == null) break;
}
Cuando se termina de recorrer el árbol es decir se llega a una hoja y se trata de adivinar el animal es decir se imprime el contenido de dicha hoja y el recorrido inicia de nuevo en la raiz.
De lo contrario se agregan dos nodos al árbol que se ligan como hijos al nodo hoja ( el cual ya no sera hoja). El contenido del padre (que era hoja) se copia a uno de los hijos , el animal que penso el usuario se copia en el otro hijo y la pregunta se copia en el padre.
Entregar
Documentacion a entregar
-Comentarios en codigo fuente.
-Manual de usuario impreso minimo 2 paginas y maximo 5 paginas
incluir las pantallas necesarias
-Manual tecnico impreso minimo 5 paginas y maximo 14 paginas.
-Expresiones regulares
-Gramatica
-Mapa de memoria
-Diagrama de clases.
-Dar una explicacion de alto nivel de como se realizo el proyecto e incluir
los fragmentos de codigo mas importantes para complementar dicha
explicacion
Entregar un CD , DVD o Bluray con
-codigo fuente ( no comprimir )
-archivos: extension y (de yacc ) , extension l (de lex ) , de lenguaje c, java, class,
jar, imagenes, base de datos y todos aquellos recursos necesarios para compilar y
ejecutar el proyecto
-Manuales
Rotular el CD , DVD o Bluray con la siguiente informacion:
Nombre completo
Grupo
Proyecto para Compiladores
Nombre del Proyecto
Fecha
Materia
Incluir dichos datos en la envoltura del CD y en cada archivo del código fuente como un comentario usando /* */ y en un Acerca de.
.