5

我想解析 REXX 源代码,以便我可以从 Java 分析程序的结构。

我需要做一些事情,比如规范化源中语法不同的等效逻辑结构,查找重复的变量声明等,而且我已经有 Java 背景。

有什么比编写大量代码更简单的方法吗?

4

3 回答 3

8

REXX 不是一种用常用工具解析的简单语言,尤其是那些需要 BNF 语法的工具。与大多数接触过 C 的人设计的语言不同,REXX 没有任何保留字,这使得任务有些复杂。每个看起来像保留字的术语实际上仅在其特定上下文中解析(例如,“PULL”仅保留为指令的第一个字PULL或指令的第二个字PARSE PULL- 您还可以有一个名为 PULL (" PULL = 1 + 2“))。此外,评论还有一些非常令人惊讶的效果。但是ANSI REXX 标准具有完整的语法和所有规则。

于 2010-01-01T04:42:34.390 回答
5

如果您有BNF Rexx 语法,那么javacc可以帮助您构建该 Rexx 代码的AST(抽象语法树)表示。

更准确地说,javacc 将构建Java 类,这些类将:

  • 解析 Rexx 代码和
  • 实际上构建了 AST。

仍然会有“代码负载”,但您不会成为为该 Rexx 代码解析器编写类的人。只有它的一代。

于 2009-03-28T22:45:38.460 回答
2

看看ANTLR,它在构建 AST、转换它等方面确实做得很好......它有一个很好的编辑器 (ANTLRWorks),基于 Java,并且可以在它们运行时调试你的解析器/tree walkers应用。真的值得研究任何类型的解析工作。

于 2009-03-28T23:51:59.440 回答