[Python-es] Parsear Fortran en Python
Juan Luis Cano
juanlu001 en gmail.com
Dom Nov 15 13:06:05 EST 2015
On 2015-11-11 13:48, Luis Fernando Lopez Aguilar wrote:
> Pueden pasarme ese programa escrito en fortran?
>
> Tengo curiosidad de cuan dificil es reinterpretar, por los 80 al 85 he
> programado en fortran IV en un pdp11/45
>
> Saludos.
> f.l.
Luis Fernando, no es un programa concreto el que quiero parsear: estaba
explorando opciones sobre cuál sería la mejor manera de escribir un
parser. Me temo que desde FORTRAN IV hasta Fortran 2003 ha cambiado
bastante la cosa :)
Gracias Alex y Mario por las ideas. Mario, no me queda claro cómo
utilizar alguno de los parsers de Fortran existentes para extraer los
tokens y convertirlos a Python, o a lo mejor es que te he entendido mal.
¿Te refieres, por ejemplo, a tratar de reutilizar la lógica de gfortran?
También he descubierto grako, que está bastante bien documentado y
trabaja con EBNF https://pypi.python.org/pypi/grako Creo que escogeré
una de estas tres opciones.
Y sí, efectivamente quiero hacerlo con tokens y reglas porque ya he
leído demasiado código que trata de parsear lenguajes complicados
"chapuceramente" solo utilizando regex (o ni siquiera) y me sangran los
ojos. Quiero producir una cosa que sea lo más sólida y robusta posible
(si es que finalmente lo hago).
Un saludo:
Juanlu
>
> El 11 de noviembre de 2015, 6:45, Alexandre Manhaes Savio
> <alexsavio en gmail.com <mailto:alexsavio en gmail.com>> escribió:
>
> Tengo experiencia con ANTLR y bison (ya he hecho functionar un
> parser para un sub-set de algo parecido a python con ambos).
> Además de las respectivas asignaturas en la ingeniería.
> Estoy de acuerdo con María. Lo de programar con tokens aunque al
> principio parezcan un engorro, te salvarán el pellejo.
>
> Yo que tú le daba un intento con pyparser, lo más aburrido es
> generar las reglas desde la sintaxis y comprobar que va bien.
>
>
> -----------------------------------
> Alexandre Manhães Savio
> Post-doctoral researcher
> Klinikum rechts der Isar, TUM, München
> alexsavio.github.io <http://alexsavio.github.io>
> Nebenstellennummer: 4570
> On 11.11.2015 09:39, Kiko wrote:
> >
> >
> > El 11 de noviembre de 2015, 0:02, Mario R. Osorio
> > <mario en osorio.solutions <mailto:mario en osorio.solutions
> <mailto:mario en osorio.solutions>>> escribió:
> >
> > Juan Luis,
> >
> > Es posible que yo haya simplificado mucho tus necesidades. A
> mi me
> > toco estudiar a profundidad pyparser y me dio la impresion
> que era
> > casi imposible no poder parsear cualquier cosa, por
> complicado que
> > fuera.
> >
> > Sin embargo, y en otro order de ideas, no se conoces *como
> funcionan
> > los parsers y compiladores*
> <http://parsingintro.sourceforge.net/>,
> > pero en dos palabras, el parser genera tokens, los cuales son
> > convertidos en lenguaje de maquina por el compilador. Existen
> > docenas de parsers para fortran. Quizas perrefieras utilizar
> alguno
> > de estos parsers y en vez de compilar los token, convertirlos a
> > python con tu priopio codigo.
> >
> > Pareciera el mismo trabajo porque de todas maneras tendrias
> que (o
> > al menos te seria mas facil) utilizar pyparser para
> convertir los
> > tokens a codigo python. SIN EMBARGO, debo SUPONER que es mas
> facil
> > generar las reglas para los tokens que para el codigo.
> >
> > Mi preferencia personal seria utilizar pyparser, pero debes
> tener la
> > documentacion correcta y completa del lenguaje a compilar, o
> mejor
> > aun, las definiciones EBNF de FORTRAN 77, asi podrias
> utilizar *este
> > modulo* <http://pyparsing.wikispaces.com/file/view/ebnf.py>, y
> > ahorrarte muuuchos dolores de cabeza...
> >
> >
> > Dtb/Gby
> > =======
> > Mario R. Osorio
> > A.S. of Computer Programming and Analysis
> >
> > “If I had asked people what they wanted, they would have
> said faster
> > horses.”
> > ― Henry Ford
> >
> >
> >
> > 2015-11-10 16:06 GMT-05:00 Juan Luis Cano <juanlu001 en gmail.com <mailto:juanlu001 en gmail.com>
> > <mailto:juanlu001 en gmail.com <mailto:juanlu001 en gmail.com>>>:
> >
> > Gracias a todos por las respuestas, si consigo algo decente
> > habrá artículo en el blog pero no antes de 2016 :)
> >
> > Juanlu
> >
> >
> > On 2015-11-10 21:47, francismb wrote:
> >
> > Hola Juan,
> >
> > Otras opciones que tengo son usar unas reglas
> formuladas
> > con SDF[1],
> > pero como no sé qué hacer con ellas no sé en qué
> estado
> > están. He
> > intentado usar Open Fortran Parser,
> supuestamente basado
> > en ANTLR, pero
> > ni siquiera me compila. También he buscado por ahí
> > gramáticas de Fortran
> > ya escritas (por ejemplo para lex/yacc) pero no he
> > encontrado nada
> > satisfactorio.
> >
> > Aprovechando, si alguien me recomienda alguna
> lecturita
> > al respecto o da
> > algún consejo genérico se lo agradecería
> también. No es
> > mi objetivo
> > hacerme un experto en parsers, con que resuelva mi
> > problema me basta.
> >
> > Otra alternativa si tuvieras la gramatica seria
> ANTLR [1],
> > es java pero
> > segun tengo entendido genera python [2]
> >
> >
> >
> > [1] http://www.antlr.org/
> > [2]
> > https://theantlrguy.atlassian.net/wiki/display/ANTLR4/Python+Target
> >
> > Saludos,
> > francis
> >
> >
> >
> > Quizá en la lista de numpy te puedan dar más opciones.
> >
> > De mi experiencia con Brython y su transpilador (Python a JS) te
> puedo
> > decir que la tarea es un infierno lleno de excepciones en las
> reglas y
> > corner cases que hacen que sea fácil tener bugs.
> >
> > Saludos.
> >
> >
> > _______________________________________________
> > Python-es mailing list
> > Python-es en python.org <mailto:Python-es en python.org>
> > https://mail.python.org/mailman/listinfo/python-es
> > FAQ: http://python-es-faq.wikidot.com/
> >
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org <mailto:Python-es en python.org>
> https://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
>
>
>
> _______________________________________________
> 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/20151115/6f9c8ff0/attachment.html>
Más información sobre la lista de distribución Python-es