[Python-es] Consulta sobre crear un lenguaje de etiquetas

Juan Luis Cano juanlu001 en gmail.com
Lun Jul 7 18:38:33 CEST 2014


Muchas gracias a todos por las respuestas.

Al final era más fácil de lo que pensaba. Por un lado necesitaba un tipo 
de etiquetas para delimitar unos bloques en el archivo de texto y por 
otro otras etiquetas de las que tenía que establecer unos parámetros. El 
asunto es que no había nada de recursividad, con lo que separando el 
archivo en bloques y luego leyendo línea por línea con expresiones 
regulares me las puedo apañar.

De nuevo gracias :) ¡Un saludo!

Juanlu

On 07/03/2014 11:53 AM, Chema Cortes wrote:
> El 2 de julio de 2014, 23:27, Juan Luis Cano <juanlu001 en gmail.com 
> <mailto:juanlu001 en gmail.com>> escribió:
>
>     Hola a todos, como no sé mucho sobre conceptos teóricos de
>     programación me gustaría hacer una consulta a la lista a ver si
>     alguien me puede ayudar.
>
>     Necesito crear un lenguaje de etiquetas para que el usuario pueda
>     escribir una especie de «plantilla» con él y que el programa
>     extraiga una información de él y genere unos datos. A grandes
>     rasgos algo así:
>
>     [TITULO]
>     Aquí va el título, bla bla
>
>     [META1]
>     Más información
>
>     [BLOQUE1]
>
>     [PARAM1][XX,00-10,99]
>
>     [FIN_BLOQUE1]
>
>     Mi primera aproximación ha sido ir «parseando» el archivo caracter
>     a caracter, porque el programa no sabe lo que va a leer. Abro
>     corchete [, cierro corchete ], si encuentro texto entonces hago
>     esto, si no lo otro... Sin embargo me figuro que a medida que el
>     lenguaje crezca en complejidad puedo verme en serios problemas, y
>     además entiendo que este proceso no es nuevo.
>
>     ¿Pensáis que para este tipo de cosas es mejor utilizar algo tipo
>     pyparsing o PLY? ¿O tal vez tratar de traducir esto a un lenguaje
>     de marcas ya conocido como XML y utilizar herramientas ya
>     disponibles para ello? ¿Podría limitarme a expresiones regulares o
>     necesitaría una gramática libre de contexto?
>
>
> Parece que necesitas un "lenguaje de marcas" para parametrizar una 
> aplicación. Lo normal sería usar XML ó JSON/YAML, pero no sé qué grado 
> de complicación esperas que pase. JSON es bastante fácil y directo de 
> usar y siempre puedes pasar a YAML si requieres tipos de datos más 
> específicos y complicados. Por otro lado, XML tiene herramientas de 
> procesado semántico y numerosos estándares de integración que lo hacen 
> más compatible con otras aplicaciones.
>
> Si la complejidad viene desde la necesidad de ser más "expresivo", la 
> solución pasa por crearte un DSL. Con python no es tarea imposible, 
> pero hay otros lenguajes que se prestan más a ello como son lua, ruby 
> o scala (por decir unos pocos similares a python). Lua es bastante 
> flexible para esta tarea y es sencillo empotrarlo a través del módulo 
> Lupa para python.
>
> Es mejor que el usuario "colabore" y escriba la información lo más 
> fácil posible (eg: ConfigParser). Lo que sí que te recomiendo es que 
> evites crear un lenguaje nuevo. Es mucho trabajo y complicas más tu 
> problema que lo que se simplifica.
>
>
>     Espero haberme explicado bien, me temo que no puedo dar muchos
>     detalles o ejemplos concretos. Si tengo que contar algo un poco
>     mejor haré lo que pueda.
>
>     Un saludo y gracias de antemano
>
>     Juanlu
>
>
>
> -- 
> Hyperreals *R  "Quarks, bits y otras criaturas infinitesimales": 
> http://ch3m4.org/blog
> Buscador Python Hispano: http://ch3m4.org/python-es
>
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> https://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/

------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20140707/977643ac/attachment.html>


Más información sobre la lista de distribución Python-es