[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