【发布时间】:2014-05-04 10:58:41
【问题描述】:
您知道任何从 Java 程序或类创建 AST 并从 AST 创建 XML 表示(集合或单个 XML 文档)的工具吗?
亲切的问候,
约翰内斯
【问题讨论】:
标签: java xml abstract-syntax-tree
您知道任何从 Java 程序或类创建 AST 并从 AST 创建 XML 表示(集合或单个 XML 文档)的工具吗?
亲切的问候,
约翰内斯
【问题讨论】:
标签: java xml abstract-syntax-tree
不是直接的任何工具,但http://www.antlr.org/ 是从任何通用语言构建 AST 的事实上的工具。并且存在几个 Java 语法文件,您可以将它们重新用于您自己的程序。所以抓住 ANTLR,使用最新的 Java 语法,写出你想要的 XML 表示。
【讨论】:
我们的DMS Software Reengineering Toolkit 及其Java Front End 可以直接执行此操作。您要求 DMS 解析文件,并使用命令行开关 ++XML 生成 XML 转储。
见What would an AST (abstract syntax tree) for an object-oriented programming language look like?。
一般来说,我们不建议这样做,原因如下:
真实文件的 XML 输出非常庞大,写入和读取需要大量时间
大多数人这样做是因为他们相信通过 XML 表示,只需一点点 XSLT 就能得到他们想要的东西
如果您打算修改代码,一旦获得 XML,您几乎无法重新生成它。
DMS 提供的机制(属性语法、符号表、流分析、模式匹配和源到源转换、从 AST 重新生成源)是您真正想要的,您可以通过以下方式访问它在解析步骤之后使用 DMS 而无需导出 XML
【讨论】:
ANTLR,因为DMS 很可能不是开源的,我们正在研究版本化树结构数据和secure 云存储领域。我目前正在使用 FSMap 将一些目录从我的桌面映射到带有一些元数据的 XML 表示,但 AST 的演变可能也很有趣。但也许它对开发人员来说太低了,一个简单的基于行的差异就足够了,我不知道。