Что такое хороший инструмент для создания железнодорожных диаграмм?

Я был очень впечатлен синтаксическими диаграммами sqlite и задавался вопросом, может ли кто-нибудь рекомендовать программное обеспечение, которое позволило бы мне создавать похожие графики.

Ответ 1

Похоже, они написали свои собственные script для их создания, как немного встроенного DSL в TCL. Возможно, вы сможете повторно использовать их script.

edit: Да, это довольно просто использовать, хотя похоже, что потребуется небольшая настройка, чтобы сделать вывод более красивым (по какой-то причине convert не выполняет antialias this on моя система, выход postscript выглядит хорошо).

alt text

hello {                                                                       
  line HELLO {or WORLD {line MY FRIEND {opt ANDREY}} }                      
}

edit 2: здесь краткая статья о том, как это работает, а также некоторые примечания о том, как регистрировать анонимно для просмотра источника, если вы не видите его сразу.

Ответ 2

Если вы используете EBNF для своего синтаксиса, для этой цели существует EBNF Visualizer.

Вы также можете попробовать Graphviz. Это с открытым исходным кодом, и у них есть несколько графических инструментов для работы с ним. Это в основном полезно для общих графиков, но оно также может быть адаптировано для синтаксических графиков.

Также существует еще один бесплатный инструмент под названием SYNGEN.

Ответ 3

Я не знаю никаких специальных инструментов, но могу сказать, что их часто называют Рекурсивные транзитные сети (RTN), Таким образом, вы можете использовать это, чтобы расширить свой поиск.

Вы также можете получить ответ от списка рассылки SQLite и узнать, что именно они используют.

Ответ 5

Я думаю, что должно быть возможно определить граф RTN в Dot language, а затем сгенерировать с одним из Dot-enabled tools.

Ответ 6

Возможно, вы сможете приблизиться к RFFlow

Ответ 7

(Извините, у меня недостаточно ответов, чтобы просто добавить комментарий к ответу)

В принятом ответе : перейдите к строке 1035 и просто измените расширение файла для вывода из "gif" go "png", что создаст сглаженное изображение в формате PNG.

Также в моей системе "xv" недоступно, просто прокомментируйте это (строка 1036, следующая):

if 0 {
  if {$do_xv} {
    exec xv $name.gif &
  }
}

веселит

Ответ 8

Я был бы удивлен, если SmartDraw не может этого сделать - у меня очень мало ограничений в моем опыте.

Ответ 9

Я использую OpenOffice Draw для многих моих потребностей в рисовании. Свободные, с открытым исходным кодом и мультиплатформы - большие вещи для меня. Он отлично справляется с блок-схемами с небольшой кривой обучения.

Я использовал SmartDraw раньше и нашел его очень способным, но моя потребность в