<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<div class="moz-cite-prefix">Muchas gracias a todos por las
respuestas.<br>
<br>
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.<br>
<br>
De nuevo gracias :) ¡Un saludo!<br>
<br>
Juanlu<br>
<br>
On 07/03/2014 11:53 AM, Chema Cortes wrote:<br>
</div>
<blockquote
cite="mid:CAAD4gUDpro7BowsGHo=cFTfNjjKUFmQhL-Tys8TnRi49QkntYw@mail.gmail.com"
type="cite">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">El 2 de julio de 2014, 23:27, Juan
Luis Cano <span dir="ltr"><<a moz-do-not-send="true"
href="mailto:juanlu001@gmail.com" target="_blank">juanlu001@gmail.com</a>></span>
escribió:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left:1px solid
rgb(204,204,204);padding-left:1ex">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.<br>
<br>
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í:<br>
<br>
[TITULO]<br>
Aquí va el título, bla bla<br>
<br>
[META1]<br>
Más información<br>
<br>
[BLOQUE1]<br>
<br>
[PARAM1][XX,00-10,99]<br>
<br>
[FIN_BLOQUE1]<br>
<br>
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.<br>
<br>
¿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?<br>
<br>
</blockquote>
<div><br>
</div>
<div>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.<br>
<br>
</div>
<div>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.</div>
<div><br>
</div>
<div>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.</div>
<div><br>
<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left:1px solid
rgb(204,204,204);padding-left:1ex">
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.<br>
<br>
Un saludo y gracias de antemano<br>
<br>
Juanlu<br>
</blockquote>
</div>
<br clear="all">
<br>
-- <br>
Hyperreals *R "Quarks, bits y otras criaturas
infinitesimales": <a moz-do-not-send="true"
href="http://ch3m4.org/blog" target="_blank">http://ch3m4.org/blog</a><br>
Buscador Python Hispano: <a moz-do-not-send="true"
href="http://ch3m4.org/python-es" target="_blank">http://ch3m4.org/python-es</a>
</div>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
Python-es mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Python-es@python.org">Python-es@python.org</a>
<a class="moz-txt-link-freetext" href="https://mail.python.org/mailman/listinfo/python-es">https://mail.python.org/mailman/listinfo/python-es</a>
FAQ: <a class="moz-txt-link-freetext" href="http://python-es-faq.wikidot.com/">http://python-es-faq.wikidot.com/</a>
</pre>
</blockquote>
<br>
</body>
</html>