2009-04-29 4 views
10

Ein Problem, das in meiner Karriere häufig aufgetreten ist, habe ich eine Art von Datenstruktur (vielleicht ein S-Ausdruck) und ich möchte es in einer menschenlesbaren Form komplett mit sinnvollen Einzug drucken Entscheidungen.Wie schreibe ich einen benutzerdefinierten hübschen Drucker

Gibt es einen Buch- oder Blogeintrag, der beschreibt, wie man das elegant macht? Ich interessiere mich für den Algorithmus mehr als eine bestimmte Bibliothek.

Antwort

13

S-Exps sind äquivalent zu Baumstrukturen, wenn Sie einen Baum hübsch drucken können, können Sie ein S-Exp hübsch drucken.

Zum Beispiel vergleichen:

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

zu:

89 
+- 9 
+- 456 

Der Algorithmus ist identisch, der einzige Unterschied ist die ammount Daten umgibt Sie heraus drucken möchten.

This paper beschreibt einen Algorithmus für ziemlich Druck Bäume

This one beschreibt ein recht-Drucker für Programmiersprachen

+0

Der zweite Link ist nicht mehr verfügbar. – Jon