Pergunta

Eu gostaria de analisar fonte REXX para que eu possa analisar a estrutura do programa de Java.

Eu preciso fazer coisas como normalizar estruturas lógicas equivalentes na fonte que são sintaticamente diferente, encontrar declarações de variáveis ??duplicados, etc. e eu já tenho um fundo Java.

Todas as maneiras mais fáceis de fazer isso do que escrever uma carga de código?

Foi útil?

Solução

Se você tiver BNF Rexx gramática, em seguida, javacc pode ajudá-lo a construir um AST (Abstract árvore de sintaxe) representação de que o código Rexx.

Mais precisamente, javacc vai construir classes Java , que irá:

  • parse código Rexx e
  • realmente constrói a AST.

Há ainda seria "carga de código", mas você não ser o único a fazer a escrita das classes para esse analisador de código Rexx. Apenas sua geração.

Outras dicas

REXX não é uma língua fácil de analisar com ferramentas comuns, especialmente aqueles que esperam uma gramática BNF. Diferentemente da maioria dos idiomas personalizados por pessoas expostas a C, REXX não tem nenhum palavras reservadas, tornando a tarefa um pouco complicada. Cada termo que se parece com uma palavra reservada é na verdade apenas resolvido no seu contexto específico ( ex , "puxar" está reservada somente como a primeira palavra de uma instrução PULL ou a segunda palavra de uma instrução PARSE PULL - você também pode ter uma variável chamada puxar ( "PULL = 1 + 2")). Além disso, existem alguns efeitos muito surpreendentes de comentários. Mas a ANSI REXX padrão tem a sintaxe completa e todas as regras.

Tenha um olhar em ANTLR , ele realmente faz um bom trabalho de construção de um AST, transformando-etc ... Tem um editor agradável (ANTLRWorks), é construído em Java, e pode depurar seus caminhantes analisador / árvore, enquanto eles correm em sua aplicação. Realmente vale a pena investigar para qualquer tipo de análise de trabalho.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top