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 <alexsa...@gmail.com <mailto:alexsa...@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@osorio.solutions <mailto:mario@osorio.solutions
    <mailto:mario@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 <juanlu...@gmail.com 
<mailto:juanlu...@gmail.com>
    >     <mailto:juanlu...@gmail.com <mailto:juanlu...@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@python.org <mailto: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 <mailto: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/

_______________________________________________
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Responder a