2009-05-20 10 views
14

Cette question a probablement une réponse embarrassante simple, mais existe-t-il une bonne façon de formater/dessiner des arbres dans Common Lisp? J'ai essayé quelques livres ainsi que googler sur, mais le problème semble tomber entre les fissures des termes de recherche.Arbres de dessin en Common Lisp

Merci d'avance!

Répondre

26

Quel genre d'arbres que vous voulez dessiner?

SDRAW dessine des structures de cellules par rapport à un terminal. Similaire: Draw Cons Tree.

Si vous avez McCLIM, CLIM ou une machine Lisp, vous pouvez appeler la fonction CLIM CLIM:FORMAT-GRAPH-FROM-ROOT ou CLIM: FORMAT-GRAPH-FROM-ROOTS. Si vous utilisez LispWorks, il existe un graph pane.

Si vous voulez dessiner des plantes, utilisez celui-ci: L-Lisp.

plant drawing

+1

Génial, SDRAW était exactement ce que je cherchais: une manière propre de représenter les cellules contre-indiquées. Merci encore. – wvoq

+0

QUOI - UN - IMPRESSIONNANT - RÉPONSE. Sensationnel. Vous n'avez pas répondu à OP mais à un flux entier de chercheurs google. – MaiaVictor

+1

Une autre option est (ql: quickload: draw-contre-tree) – Baggers

4

Si vous ne trouvez pas une meilleure solution, je serais enclin à émettre un fichier .dot, puis l'alimenter à l'un des outils Graphviz (comme point). Le format de fichier est vraiment simple, et les outils peuvent générer une variété de formats, y compris PNG, SVG, PostScript et même des cartes d'image (pour créer des graphiques cliquables sur les pages Web).

Cette approche ne fonctionne probablement que pour vous si vous voulez ces graphiques pour votre usage personnel (par exemple: le débogage) ou si vous les générez sur un serveur. L'appel à un outil distinct dans une application cliente peut présenter des problèmes d'utilisation et/ou de licence.

Ce n'est pas vraiment une solution spécifique au Lisp commun, mais j'ai utilisé cette approche à partir de quelques langues dans le passé.

+0

Salut, merci beaucoup pour votre réponse. J'espérais imprimer directement sur la console, mais votre suggestion semble beaucoup plus flexible pour les grands arbres. Merci encore pour votre temps! – wvoq

1

Je l'ai utilisé lisp2dot (un script Awk qui génère des commandes Dot) ces dernières années dans les applications GP mais actuellement il ne semble pas fonctionner. Chaque fois que je le nourris avec une expression Lisp valide, il renvoie des fichiers Dot étranges avec plein de messages d'erreur non-sens. Néanmoins, il vaut la peine de mentionner.

+0

J'ai eu l'occasion de revenir en arrière [lisp2dot] (http://www.cs.ucl.ac.uk/staff/W.Langdon/lisp2dot) et il semble toujours fonctionner, mais méfiez-vous des noms de fonctions et de l'arité des nœuds fonctionnels qui peuvent être difficiles dans Awk. – oakenshield1