2009-04-29 22 views
10

我的職業生涯中經常遇到的一個問題是我有某種數據結構(可能是s表達式),我想用人類可讀的形式打印,並且有合理的縮進選擇。如何編寫自定義的漂亮打印機

有沒有描述如何優雅地做這件事的書或博客條目?我對算法感興趣的不僅僅是特定的庫。

回答

13

S-Exps相當於樹結構,如果你可以漂亮地打印一棵樹,你可以漂亮地打印一個S-EXP。

例如,比較:

(tree 
    (value 89) 
    (tree 
     (value 9) 
     nil 
     nil) 
    (tree 
     (value 456) 
     nil 
     nil)) 

到:

89 
+- 9 
+- 456 

的算法是相同的,唯一不同的是,你要打印出周圍數據的ammount的。

This paper描述的算法非常打印樹

This one描述了編程語言

+0

一個漂亮的打印機的第二個鏈接不再可用。 – Jon 2017-07-25 07:47:06