我有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