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 <juanlu...@gmail.com
<mailto:juanlu...@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@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/
_______________________________________________
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/