Vooooy Desveladooo….

Ya estoy harto de estar desvelandome todos los días, son las 2:45am y tengo que entregar un analizador sintáctico a las 9am y presentar un exámen a las 10am.

Pero bueno encontré algo fantástico en [el más fantástico aún] python, un módulo llamado pyparsing, el cual es una biblioteca de funciones extremadamente potente, me encantó esta herramienta, pero bueno hagamos el archi requete famosísimo “Hola, Mundo!”:

#importamos el modulo
from pyparsing import *
saludo= Word(alphas) + ‘,’ + Word(alphas) + ‘!’
#Aqui decimos que la gramatica “saludo” DEBE contener una palabra compuesta de caracteres alfanumericos (Word(alphas)) mas una ‘,’ mas otra palabra alfanumerica, mas ‘,’ y esos seian nuestros tokens
tokens = saludo.parseString(“Hola, Mundo !”)
#Ahora parseamos una cadena, “Hola, Mundo!”, el metodo parseString, nos devuelve una lista con los tokens encontrados, en caso de no haber errores…
for i in range(len(tokens)):
print “Token %d -> %s” % (i,tokens[i]) #imprimimos cada uno de los tokens

Y listooo!!, he aquí la salida

 
Token 0?> Hola
Token 1?> ,
Token 2?> Mundo
Token 3?> ! 

Por supuesto, se pueden “reutilizar” gramáticas, por ejemplo:


numimag = Word(nums) + 'i' 
numreal = Word(nums) 
numcomplex = numreal + numimag 
numcomplex.parseString("3+5i")

Excelente!!, bueno, los dejo, me voy a seguir tirando código…

Salu2

2 comments

  1. Su ejemplo para procesar “Hola, Mundo!” me gusta mucho! Permiteme usarlo como ejemplo en la proxima distribucion de pyparsing?

    — Paul McGuire
    (Lo siento para mi espanol pobre – hace muchos anos que lo estudie.)

  2. Hola, la otra vez encontré en mi blog un comentario y siguiendo el enlace llegue a este blog, en el comentario me decía que un enlace estaba dañado y que no se podía bajar desde megaupload, si tu eres el del comentario te informo que acabo de cambiar el enlace a rapidshare y si tu no pusiste el comentario mil disculpas y puedes borrar este comentario, a por cierto estaba el comentario en un post titulado la biblia del software libre.

    Saludos.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *