ROSE (framework do compilador) - ROSE (compiler framework)

ROSA
Autor (es) original (is) Daniel J. Quinlan, Chunhua (Leo) Liao, Robb P. Matzke, Markus Schordan, et al.
Desenvolvedor (s) Laboratório Nacional Lawrence Livermore
Versão estável
0.9.13.0 / 15 de dezembro de 2019 ; 19 meses atrás ( 15/12/2019 )
Versão de visualização
0.9.6a / 16 de março de 2016 ; 5 anos atrás ( 2016/03/16 )
Escrito em C ++
Sistema operacional Linux , OS X
Plataforma IA-32 , x86-64
Disponível em inglês
Modelo Compilador
Licença BSD modificado
Local na rede Internet rosecompiler .org

A estrutura do compilador ROSE , desenvolvida no Lawrence Livermore National Laboratory (LLNL), é uma infraestrutura de compilador de software de código-fonte aberto para gerar analisadores e tradutores de código-fonte para várias linguagens de origem, incluindo C (C89, C98, Unified Parallel C (UPC) ), C ++ (C ++ 98, C ++ 11), Fortran (77, 95, 2003), OpenMP , Java , Python e PHP .

Ele também oferece suporte a determinados arquivos binários e compiladores de paralelização automática , gerando código-fonte anotado com diretivas OpenMP. Ao contrário da maioria dos outros compiladores de pesquisa, o ROSE visa permitir que não especialistas aproveitem as tecnologias de compilador para construir seus próprios analisadores e otimizadores de software personalizado.

A infraestrutura

O ROSE consiste em vários front-ends, um midend operando em sua representação intermediária interna (IR) e back-ends regenerando (não analisado) o código-fonte do IR. Opcionalmente, os compiladores do fornecedor podem ser usados ​​para compilar o código-fonte não analisado em executáveis ​​finais.

Para analisar aplicativos C e C ++, ROSE usa o front-end C ++ do Edison Design Group. O suporte para Fortran, incluindo F2003 e versões anteriores de 1977, 1990 e 1995, é baseado no Open Fortran Parser (OFP) desenvolvido no Laboratório Nacional de Los Alamos .

O ROSE IR consiste em uma árvore de sintaxe abstrata , tabelas de símbolos, gráfico de fluxo de controle, etc. É um IR orientado a objetos com vários níveis de interfaces para a construção rápida de tradutores de fonte para fonte. Todas as informações do código-fonte de entrada são cuidadosamente preservadas no ROSE IR, incluindo a estrutura de controle do pré-processador C, comentários da fonte, informações de posição da fonte e informações do modelo C ++ , por exemplo, argumentos do modelo.

ROSE é lançado sob uma licença do estilo BSD . Destina-se ao Linux e OS X nas plataformas IA-32 e x86-64 . As partes do Edison Design Group (EDG) são proprietárias e distribuídas em forma binária. Os arquivos fonte das partes EDG podem ser obtidos se os usuários tiverem uma licença comercial ou de pesquisa da EDG.

Prêmio

A infraestrutura do compilador ROSE recebeu um dos prêmios R&D 100 de 2009. Os prêmios R&D 100 são apresentados anualmente pela R&D Magazine para reconhecer os 100 avanços comprovados mais significativos em pesquisa e desenvolvimento introduzidos no ano passado. Um painel de especialistas independentes seleciona os vencedores.

Veja também

  • DMS Software Reengineering Toolkit  - uma estrutura de compilador de origem a origem usando regras explícitas de reescrita dirigidas por padrão que lida com Fortran e C ++

Referências

links externos