我想解析REXX源代码,以便我可以从Java分析程序的结构.
我需要做一些事情,比如在源语法中规范化等价逻辑结构,语法不同,找到重复的变量声明等等,我已经有了Java背景.
比编写大量代码更简单的方法吗?
REXX不是用常用工具解析的简单语言,特别是那些期望BNF语法的工具.与暴露于C的人设计的大多数语言不同,REXX没有任何保留字,使得任务有点复杂.每个看起来像保留字的术语实际上只能在其特定的上下文中解析(例如,"PULL"仅保留为PULL
指令的第一个字或指令的第二个字PARSE PULL
- 您还可以有一个名为PULL的变量(" PULL = 1 + 2
")).此外,还有一些非常令人惊讶的评论效果.但ANSI REXX标准具有完整的语法和所有规则.
如果您有BNF Rexx语法,那么javacc可以帮助您构建该Rexx代码的AST(抽象语法树)表示.
更准确地说,javacc将构建Java类,它们将:
解析Rexx代码和
实际上构建了AST.
仍然会有"代码加载",但你不会成为那个为Rexx代码解析器编写类的人.只有它的一代.