我想解析 REXX 源代码,以便我可以从 Java 分析程序的结构。
我需要做一些事情,比如规范化源中语法不同的等效逻辑结构,查找重复的变量声明等,而且我已经有 Java 背景。
有什么比编写大量代码更简单的方法吗?
REXX 不是一种用常用工具解析的简单语言,尤其是那些需要 BNF 语法的工具。与大多数接触过 C 的人设计的语言不同,REXX 没有任何保留字,这使得任务有些复杂。每个看起来像保留字的术语实际上仅在其特定上下文中解析(例如,“PULL”仅保留为指令的第一个字PULL
或指令的第二个字PARSE PULL
- 您还可以有一个名为 PULL (" PULL = 1 + 2
“))。此外,评论还有一些非常令人惊讶的效果。但是ANSI REXX 标准具有完整的语法和所有规则。
看看ANTLR,它在构建 AST、转换它等方面确实做得很好......它有一个很好的编辑器 (ANTLRWorks),基于 Java,并且可以在它们运行时调试你的解析器/tree walkers应用。真的值得研究任何类型的解析工作。