[pyar] Cosas que me gustaria que existieran 1: ragel-python

Roberto Alsina ralsina en netmanagers.com.ar
Vie Feb 25 15:28:27 ART 2011


Dado que ya estoy grande y he decidido que no voy a escribir todos los 
programas que quisiera tener (porque la lista es cada año mas larga, por 
algun motivo), voy a empezar, de vez en cuando, a mandar acá a la lista 
a ver si alguien me hace el gran favor de implementarlos :-)

El primero, porque es copado, útil y realmente pero REALMENTE no existe, 
es un backend de ragel para Python.

Primero: qué es ragel? Ragel es un compilador de máquinas de estado finito.

Alguno querrá saber qué es una maquina de estado: bueno, es un sistemita 
que tiene estados y transiciones entre los mismos. Cada transicion tiene 
una accion de entrada y una accion de salida.

Por ejemplo, podemos tener una maquina que sea una puerta:

Estado 1: Abierta
Estado 2: Cerrada

Para pasar de 1 a 2, se hace la accion "cerrar puerta". Para pasar de 2 
a 1, se hace la accion "abrir puerta".

Eso es muy pavote, pero pensemos en por ejemplo en la implementación de 
un protocolo o en un parser para un lenguaje (limitado a lenguajes 
regulares).

Resulta que usar maquinas de estado es super piola, porque producís 
código eficiente y recontra estable con muy pocas sorpresas, porque 
definís EXACTAMENTE que pasa en cada caso.

En serio, la MEJOR manera de implementar un protocolo es probablemente 
con una maquina de estado. Y para parsers? ragel te toma la gramática en 
BNF y te produce código, asi, casi de una.

Cual es el problema? Que ragel genera ruby. Y C. Y C++. Y Java. Pero no 
python.

Entonces no puedo (no podemos) usar ragel para hacer cosas copadas con 
python. Y tenemos peor código del que debiéramos.

Yo estimo que arrancando con el generador de ruby, es un proyecto de un 
mes trabajando de a ratitos.

Entonces, quién se copa, eh?



More information about the pyar mailing list