2009-04-29 10 views
10

Un problema che si è presentato frequentemente nella mia carriera è che ho una sorta di struttura dati (forse un'espressione s) e voglio stamparla in una forma leggibile dall'uomo completa di indentazione ragionevole scelte.Come scrivere una stampante carina personalizzata

C'è un libro o un post di blog che descrive come farlo in modo elegante? Sono interessato all'algoritmo più di una libreria specifica.

risposta

13

Le S-Exp sono equivalenti alle strutture ad albero, se riesci a stampare un albero puoi stampare un s-exp.

Per esempio, confrontare:

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

a:

89 
+- 9 
+- 456 

L'algoritmo è identico, l'unica differenza è la quantità degli circostante dati che si desidera stampare.

This paper descrive un algoritmo per alberi pretty-stampa

This one descrive un pretty-stampante per i linguaggi di programmazione

+0

Il secondo collegamento non è più disponibile. – Jon

Problemi correlati