Nut*_*tel 3 compiler-construction backend abstract-syntax-tree
我有一个带有 Java 前端的 DSL,我想以某种易于解析的格式序列化我在前端部分获得的 AST,以便更轻松地编写使用不同编程语言生成代码的后端部分。为此,有什么比 XML 更好的方法吗?
XML 产生大量文本,而 AST 可能非常大。(我构建解析器并且)我们的解析器将生成 XML,因为我们的客户需要它……但实际上没有人使用它。恕我直言,最好设计一种对树进行密集编码的自定义格式,以避免读取和写入 AST 所需的时间。例如,您可能会满足于:
( nodetype =value childnodes )
Run Code Online (Sandbox Code Playgroud)
其中 ( ) 是括号,其中 ( 打开树节点,nodetype 是一个表示节点类型的整数 [甚至可能采用高基数格式以最小化字符数],如果节点带有值 [你不知道],则存在 =如果您考虑一下,确实需要 = 符号],并且提供了值。子节点在结束之前内联);如果它们存在,它们显然以左括号开头。不需要空格!如果您有时确实需要阅读本文,则可以构建一个简单的笨工具来在您需要查看括号时缩进。
[老手会将其识别为 LISP S 表达式,并且自 1950 年代后期以来一直作为树编码存在]。
(我们完全避免这种情况,因为无论您如何操作,读写树都是昂贵的,而且通常更容易、更高效地完成处理内存中的树并吐出最终答案)。
| 归档时间: |
|
| 查看次数: |
1315 次 |
| 最近记录: |