我有Java的前端有一个DSL,我想序列化的AST,我在一些容易解析的格式前端部分得到,使其更易于编写后端一部分用不同的编程语言生成代码。为此目的有什么比XML更好的吗?序列化AST在解析的格式
2
A
回答
4
XML产生大量的文字和AST的可能是惊人的大。 (我构建解析器并且)我们的解析器将生成XML,因为我们的客户要求它......但它们都没有实际使用它。恕我直言,最好设计一种自定义格式来密集编码你的树,以避免读取和写入AST所花费的时间。例如,你可能会满足于:
(nodetype =value childnodes)
其中()是括号,用(开树节点,将NODETYPE是代表甚至在高基数的格式,以尽量减少字符数节点类型的整数。 ],=如果节点携带一个值[如果你考虑它,你并不真的需要=符号],并且提供了该值,则在结束之前内联子节点。如果他们在场的话,他们显然是以左撇子开始的。不需要空间!如果您实际上需要请参阅,有时您可以构建一个简单的哑工具来在需要查看时缩进括号。
[老式计时器将此识别为LISP S表达式,并且自20世纪50年代后期以来一直以树编码形式出现]。
(我们完全避免这种情况,因为无论您如何操作,阅读和编写树木都很昂贵,而且它往往更简单,更高效地处理记忆中的树,只是吐出最终答案) 。
相关问题
- 1. 自定义消息格式的反序列化/解析
- 2. 如何序列化antlr3 AST
- 3. LinqToXml:解析和格式化
- 4. antlr为c生成ast并解析ast
- 5. 问题的AST解析器
- 6. Ast.Expr类型的Ast解析
- 7. 反序列化与解析
- 8. 解析序列化阵列(WordPress的)
- 9. Java AST解析器.Net
- 10. Haskell解析器到AST
- 11. 将AngularJS格式化器和解析器函数时到$格式化和$解析器阵列是为了重要
- 12. 反序列化或解析在Symfony2中
- 13. 在Java中反序列化/解析JSON
- 14. 解析反序列化阵列
- 15. 在LR解析期间构造AST
- 16. django url解析格式化网址
- 17. 用PowerShell解析/格式化字符串
- 18. 无法正确解析HTML格式化
- 19. 如何解析结构化格式?
- 20. 格式化字符串解析
- 21. 递归解析预格式化数组
- 22. 解析格式化文本文件
- 23. 无法格式化/解析此日期
- 24. Python CSV解析和格式化
- 25. 双解析与文化格式
- 26. Haskell日期解析和格式化
- 27. 非常规格式化/解析XML
- 28. 迭代字符串格式化/解析?
- 29. 解析API的JSON反序列化IOS
- 30. 解析序列化的数据回JSON
我几乎总是使用类似于上面描述的S表达式。这样,后端生成可以使用函数绑定和评估来完成。 (例如,1 + 2变成(+ 1 2),并且“+”的计算结果为知道自己产生什么的函数,即“1”和“2”)。还可以使用后缀表达式,这些表达式可以更快地序列化,但是它们更难以阅读,并且难以用于堆叠机以外的其他东西。 – TechNeilogy 2011-04-26 23:46:29