Archive for septiembre, 2009

septiembre 28, 2009

Turorial: Parser Descendente Recursivo

por Josue Ortega

Bueno para los que se preguntan como hacer un parser a partir de una gramática que hemos diseñado, aquí le enseñare brevemente como hacer un parser descendente recursivo

Tenemos que tomar en cuenta lo siguiente:

1. Nuestra gramática no debe ser recursiva a la izquierda.Por ejemplo la producción

E::=Er

es recursiva  la izquierda, para este tipo de gramáticas nuestro parser no sería funcional, asi que hay que quitarle la recursividad a la izquierda

2.Debemos construir los conjuntos: First, Follow, para cada producción de nuestra gramatica.

Estructura del parser:

LookAhead: Esta variable(global), inicialmente es el token de mas a la izquierda de la entrada.

Por cada NO TERMINAL de la gramática debe existir un procedimiento del parser.Para hacer mas fácil su programación, el nombre del procedimiento tendrá el nombre del no terminal.

Cada una de las opciones del no terminal formaran el cuerpo del procedimiento.

Procedimiento Match: Con este procedimiento sabremos si es el TERMINAL correcto, lo detallare a continuación

void Match(token simbolo){
if(lookahead==simbolo)
lookahead=siguienteSimbolo;/* para obtener el siguiente simbolo se puede hacer un procedimiento para pedir el siguiente toke que recibimos del analizador lexico*/
else
ERROR
}

Bueno, ahora a programar, escribiré un parser para la siguiente gramática:

terminales: x,y,z;

E:=xP | H     /*  E produce x segido de la producción P ó la producción H       */

P:=Tz

H:=y

T:=yx;

****************************************************************

var token lookahead;//variable del tipo del token que ustedes utilicen

void main {

//Iniciar Scanner si s necesario

lookahead=nexToken() // funcion que devuelve el token siguiente

E();
}
void E(){
if(lookahead==x)
Match(x);
P();
else
H();
}
void P(){
T();
Match(z);
}
void T(){
Match(y);
Match(x);
}
void H(){
Match(z);
}

Y así de sencillo es un parser descendente Recursivo 🙂

Si se dan cuenta el parser recorre el árbol de arriba hacia abajo de allí viene descendente,

Y Recursivo se debe a que el parser puede llamarse a si mismo directa o indirectamente por medio de sus funciones 🙂

Espero que les sirva de algo,

Dudas, comentarios o sugerencias, no duden en escribir

saludos

septiembre 25, 2009

El Nombre Correcto es GNU/Linux

por Josue Ortega

Y una vez mas dándole el seguimiento al hilo del Software libre (Open Source ¿es la Solución?, Revolution OS), aqui les dejo al señor RICHARD STALLMAN, entrevistado en una cadena Española, dando a conocer su punto de vista y filosofía  sobre el software libre, y el por que del nombre GNU/LINUX , y  asi es Stallman habla castellano 🙂

por ultimo algo que hay que hacer notar de las palabras de Stallman, “El conocimiento no tiene un precio, el conocimiento se comparte”, creo que  cuando en realidad todos logremos entender esto, el mundo cambiará 😀

septiembre 25, 2009

Agenda FX, proyecto Estructuras de Datos

por Josue Ortega
AGENDAFX
AGENDAFX

Muchas veces es difícil al principio de un proyecto implementar o abstraer lo que se nos esta pidiendo, creo que a la mayoría en el curso de Estructuras de Datos al principio andamos un poco perdidos de como empezar.

Los ejemplos visto en clase no son lo suficiente claros o muy sencillos, luego acudimos a la web para ver si podemos darnos una idea de como implementar lo que se nos pide, pero al final solo encontramos ejemplos sencillos o los mismos ejemplos en todas las paginas.

Por eso e decidido subir mis proyectos, al menos los que me queden bien jaja, para poder ayudar  a los que tienen este problema, y empiezo con mi proyecto de Estructuras de Dato.

Se nos pidió desarrollar una agenda web, con las siguientes funciones:

Calendario, cada día del año con una festividad y evento, Una lista de contactos, una libreta de apuntes, y gráficas de reporte.

Ahora vamos con lo emocionante, para implementar la parte de el calendario hice lo siguiente:

Voy a empezar con el nodo mas elemental, que era el nodo de eventos, este esta contenido en una lista doble enlazada ordenada por prioridad de evento. La lista de los eventos esta contenida en el nodo de día, este nodo de día esta contenido en una Matriz Ortogonal(en el proyecto es la clase melOrto.java) o Lista Ortogonal, es decir cada nodo tiene 4 punteros a otros nodos.Cada instancia de la Matriz Ortogonal conforma una lista doble enlazada que es con la que se maneja el año en curso.

Para almacenar los contactos utilice un árbol AVL, el cual tenía que desplegar sus contactos : InOrden, post-Orden, PreOrden.

También se despliegan los contactos en un grafo.

Para los apuntes no es mayor ciencia, una lista doble enlazada circular.

Para ingresar los eventos y contactos se puede hacer de 2 maneras:

Manual o cargando un archivo XML al servidor.

A continuacion les describo que herramientas use para hacer la agenda:

Sistema Operativo: GNU/Linux Debian Lenny 5.0.2
Tecnologia:JSP
Java: Java Enterprise Editition.
IDE: NetBeans 6.7.1
Servidor web: Glassfish v2.1
Parser XML: JDOM.
JAR  para enviar archivos al servidor: commons-fileupload-1.2.1, commons-io-1.4.

El enunciado se encuentra en la carpeta del proyecto, los JAR antes mencionados y el JDOM se encuentran en la carpeta “dist” donde encuentran un archivo con extensión “war” lo descomprimen , en la carpeta resultante pueden encontrar las librerías.

Cualquier duda o comentario de como implementar una estructura, no duden en preguntar en este blog, haré lo posible por contestar 😛

CLICK EN LA IMAGEN PARA DESCAGAR

septiembre 20, 2009

Alcancé el Nivel 60 en World of Warcraft!!!!!

por Josue Ortega

Nota: No soy jugador de WOW, solo estoy un poco aburrido de escuchar conversaciones como esta: Ayer fuimos a tomar la ciudad melorto, agarramos nuestra montura y con mi paladin pude matar 45 orkos, justa cuando subía al nivel 56, el servidor se colgó jajaja.

Please get a Real Life 🙂

Etiquetas: ,
septiembre 17, 2009

Revolution OS

por Josue Ortega

Continuando con el tema que me hizo crear este blog, el Open Source. Bueno  Revolution OS, es un documental que relata un grupo de hackers se revelaron contra el modelo de Software Propietario y contra  Microsoft, creando GNU/LINUX  y el movimiento Open Source.

Podremos escuchar las palabras de  Richard Stallman (Fundador de GNU)que personalmente he empezado a admirar el trabajo que a hecho por el Open Source , si lo traen a COECYS pago lo que sea!!:) jaja, claro no podia faltar el  señor que hizo el kernel de Linux: Linus Torvalds, cuenta con la colaboracion tambien de Bruce Perens(ex Lider de el movimiento Debian), Eric Raymond, Brian Behlendorf(Creador del Servidor HTTP Apache), Michael Tiemann (vicepresidente de Open Source Affairs de Red-Hat),Larry Augustin, Frank Hecker y Rob Malda

bueno aqui les dejo el video…

enjoy it 😛

septiembre 17, 2009

tomando un poco de aire…

por Josue Ortega

Un mes de ausencia en el blog, 2 proyectos: Compiladores 1, Estructuras de Datos, look a lo Richie Stallman, regreso a postear un poco de mis ideas ,buenas o malas, la verdad no lo se. Bueno creo que todos los que estudiamos Sistemas en USAC, tenemos algo en común: esperar(rogar) por una prorroga, de un proyecto que nos consume totalmente,(Lo peor es cuando no la dan…).Ahora surge una pregunta en mi mente, si los catedráticos o auxiliares a la hora de plantear el proyecto, toman conciencia de evaluar en verdad los conceptos del curso, o solamente poner un obstáculo mas para el estudiante.

Con lo que va del semestre, y con lo que va de los proyectos, el proyecto de Estructuras de Datos, bastante extenso por cierto, pero la forma en que será evaluado es acorde al contenido del curso. Situación que no se dio con el Proyecto de Organización de Lenguajes y Compiladores 1, donde usamos Jlex y Cup, para el análisis léxico y análisis sintáctico respectivamente, donde nosotros teníamos que diseñar la gramática o al menos deducirla de un enunciado bastante confuso, que da la impresión de que lo hicieron bastante rápido. Y la forma en que será evaluado el proyecto o al menos la ponderación en la hoja de calificación no evalúan nuestros conocimientos en teoría de autómatas, ni de operaciones con gramáticas, pero bueno, creo que me desvíe un poco del tema.

Creo que es tiempo de dejar de pensar en proyectos donde solo se evalúa la resistencia del estudiante para desvelarse, y empezar a proponer proyectos donde en realidad se creen nuevas tecnologías o soluciones para problemas existentes. Proyectos que nazcan de las inquietudes los estudiantes, quien sabe que se conviertan en soluciones para nuestra sociedad o nuestro país…

En fin solo queda seguir hechandole ganas y a divertirnos con esos preciosos proyectos 😀 jeje.

Un saludo para el mártir de Compi 1: BorisCougar, que arriesgo su vida por la ciencia hahahaha

saludos a todos como leí por ahí…

id y programad todo