如何编写自定义漂亮的打印机

时间:2009-04-29 13:20:36

标签: algorithm pretty-print

我职业生涯中经常遇到的一个问题是我有某种数据结构(可能是一个s表达式),我希望以人类可读的形式打印出来,并且有合理的缩进选择。

是否有书籍或博客条目描述如何优雅地执行此操作?我对算法感兴趣而不是特定的库。

1 个答案:

答案 0 :(得分:14)

S-Exps相当于树形结构,如果你可以漂亮地打印一棵树,你可以漂亮地打印一个s-exp。

例如,比较:

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

为:

89
 +- 9
 +- 456

算法完全相同,唯一的区别是您要打印的周围数据的数量。

This paper描述了一种用于漂亮打印树的算法

This one描述了一种用于编程语言的漂亮打印机