Рисование деревьев в Common Lisp - PullRequest
14 голосов
/ 21 мая 2009

Этот вопрос, вероятно, имеет смущающий простой ответ, но есть ли Правильный способ форматировать / рисовать деревья в Common Lisp? Я перепробовал несколько книг, а также занялся поиском, но проблема, похоже, оказалась между трещинами поисковых запросов.

Заранее спасибо!

Ответы [ 4 ]

27 голосов
/ 21 мая 2009

Какие деревья вы хотите нарисовать?

SDRAW выводит структуры cons-ячеек на терминал. Похожие: Draw Draw Tree .

Если у вас McCLIM , CLIM или машина Lisp, вы можете вызвать функцию CLIM CLIM: FORMAT-GRAPH-FROM-ROOT или CLIM: FORMAT-GRAPH-FROM- КОРНИ.

Если вы используете LispWorks, есть графическая панель .

Если вы хотите рисовать растения, используйте это: L-Lisp .

plant drawing

5 голосов
/ 21 мая 2009

Если вы решили пойти с GraphViz, проверьте http://common -lisp.net / project / cl-graphviz

4 голосов
/ 21 мая 2009

Если вы не найдете лучшего решения, я был бы склонен создать файл .dot и затем передать его одному из инструментов Graphviz (например, точка). Формат файла действительно прост, и инструменты могут генерировать различные форматы, включая PNG, SVG, PostScript и даже карты изображений (для создания интерактивных графиков на веб-страницах).

Этот подход, вероятно, работает только для вас, если вы хотите эти графики для собственного использования (например, отладка) или вы генерируете их на сервере. При вызове отдельного инструмента в клиентском приложении могут возникнуть проблемы с удобством использования и / или лицензированием.

Это на самом деле не решение для общего использования, но я использовал этот подход на нескольких языках в прошлом.

1 голос
/ 02 октября 2011

В последние годы я использовал lisp2dot (скрипт Awk, который генерирует команды Dot) в приложениях GP, но в настоящее время он, похоже, не работает. Каждый раз, когда я передаю его с правильным выражением Lisp, он возвращает странные Dot-файлы с полными бессмысленными сообщениями об ошибках. Тем не менее, стоит упомянуть.

...