parsing fortran llvm abstract-syntax-tree

parsing - ¿Puedo usar LLVM para analizar Fortran?



abstract-syntax-tree (3)

Soy un novato en LLVM. Mi necesidad básica es analizar los códigos Fortran. Al mirar el sitio web de LLVM, parece que LLVM puede usarse como una biblioteca para analizar códigos. Entonces, ¿podría usarlo para analizar códigos Fortran y extraer información sobre los códigos (AST?)?


LLVM es un compilador de fondo. Lo único que sabe cómo analizar es LLVM IR, un lenguaje intermedio diseñado para emitirse desde interfaces de lenguaje de programación. La interfaz oficial para LLVM es Clang, que puede manejar C, C ++ y ObjC. Si está interesado en otros idiomas, también está DragonEgg , que es un plugin de LLVM para gcc. Utiliza el front-end de gcc y LLVM como un backend, por lo que puede analizar todo lo que gcc sepa cómo analizar. Sé que se está trabajando para que genere el código correcto de Ada y Fortran. Aquí hay un extracto de su página:

Estado actual

  • Funciona mejor con gcc-4.6.
  • Fortran funciona muy bien. Ada, C y C ++ también funcionan bien. Ada funciona mal con gcc-4.7.
  • Puede compilar una cantidad razonable de Obj-C, Obj-C ++ y Go.
  • Puede compilar programas Java simples, pero no se ejecutan correctamente (esto es una consecuencia del front-end java que no admite LTO de GCC).
  • La información de depuración es pobre.

No, LLVM no es una biblioteca para analizar Fortran. LLVM es una biblioteca para implementar el back-end de un compilador. Tendría que escribir el frontend Fortran usted mismo.


Añadiendo al comentario de Eli Bendersky, puede usar la opción -fdump-parse-tree en gfortran para "generar el árbol de análisis interno antes de comenzar la generación del código".