Самый близкий инструмент, который я видел, это Система восстановления грамматики Ральфа Ламмеля.Это зависит от доступности железнодорожных схем в виде текстовых строк .Это обычно не так, как они найдены.Вам кажется, что вам повезло в случае с DB2, работа Ральфа направлена в правильном направлении.
Учитывая, что такие диаграммы обычно отображаются как просто набор пикселей (PLSQL похожи на это в файлах PDF, предоставленных для документации)У вас есть несколько наборов проблем: распознавание графических объектов из пикселей, сборка их в фактические представления железнодорожных диаграмм, а затем использование таких как ваш помощник.
Я думаю, что это длинный, жесткий, непрактичный подход.Если вы заставите его работать, вы обнаружите, что схемы во многих местах немного неправильны (прочитайте статью Ральфа или узнаете трудный путь), и, следовательно, непригодны для инструмента, который должен производить «правильные» вещи, чтобы помочь вашемуАдминистраторы баз данных.
Конечно, вы возражаете против другого длинного, жесткого, "непрактичного" подхода: читать документацию и создавать грамматики, которые соответствуют, а затем проверять эти грамматики на соответствие реальному миру.Да, это тоже непростая задача, но она действительно дает полезные результаты.Вам нужно найти поставщиков, которые сделали это и сделают это доступным для вас.
ANTLR.org предлагает различные грамматики.Вы проверяли там?
Моя компания предлагает грамматики и инструменты для их обработки.Мы сделали это для PLSQL и SQL2011, но еще не для DB2.
Учитывая грамматику, теперь вам нужно использовать ее для предоставления "рекомендаций" своим пользователям.Ваши пользователи не собираются вводить полную «программу»;они хотят генерировать фрагменты (например, операторы SELECT).Теперь вам нужен синтаксический анализатор, который будет обрабатывать фрагменты грамматики и, по крайней мере, говорить «законно» или «нет».Большинство этого не сделает.Наш DMS Software Reengineering Toolkit сделает сделать это.
Чтобы предоставить совет , вы должны уметь ходить по грамматике (как и вырассматривается для железнодорожных схем), чтобы вычислить "что законно дальше".Это на самом деле довольно сложно (на самом деле это примерно эквивалентно тому, что делает генератор синтаксических анализаторов LR / GLR при построении таблиц).Наш механизм DMS делает это во время исправления синтаксической ошибки путем обхода таблиц анализа GLR (поскольку эта работа уже закодирована в таблицах!).Это нелегко сделать, так как это своеобразный вариант алгоритма синтаксического анализа GLR.Вы можете добиться большего успеха с парсером Earley, который хранит все возможные парсинги как набор вариантов;Вы могли бы просто проверить каждого из них.
Но это выглядит довольно большой работой, и я думаю, вы будете удивлены количеством необходимого вам оборудования.
Лучшая работа в этомобласть Harmonia , которая производит инкрементальные редакторы для кода.Парсер нашего механизма DMS основан на более ранней работе, проделанной этим проектом, потому что нас интересует аспект инкрементальности.