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