El 2 de julio de 2014, 23:27, Juan Luis Cano <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/