Наш набор инструментов для реинжиниринга программного обеспечения DMS разработан для того, чтобы делать это как любезный покерный анте, необходимый для любого проекта автоматизированного реинжиниринга программного обеспечения.
DMS позволяет определять грамматику,похож на стили ANTLR (и другого генератора парсера).В отличие от ANTLR (и других генераторов синтаксического анализатора), DMS использует синтаксический анализатор GLR, что означает, что вам не нужно изменять правила грамматики языка для соответствия требованиям генератора синтаксического анализатора.Если вы можете написать грамматику без контекста, DMS преобразует ее в синтаксический анализатор для этого языка.Фактически это означает, что вы можете получить рабочую правильную грамматику значительно быстрее, чем с обычными генераторами синтаксического анализатора LL или L (AL) R.
В отличие от ANTLR (и других генераторов синтаксического анализатора), нет никакой дополнительной работы по созданию AST;это автоматически построено.Это означает, что вы тратите ноль времени на написание правил построения дерева, а не на их отладку.
DMS дополнительно предоставляет симпатичный язык спецификации печати, задающий стек текстовых полей по вертикали, горизонтали или с отступом, в котором вы можете определить «формат», который используется для полного преобразования AST в полностью легальный, красиво отформатированный исходный текст.Ни один из известных генераторов синтаксического анализатора здесь не помогает;если вы хотите красиво распечатать дерево, вы можете выполнить множество пользовательских программ.Подробнее об этом см. Мой SO-ответ на Компиляция AST обратно к источнику .Это означает, что вы можете создать симпатичный принтер для вашей грамматики в (интенсивный) день, просто аннотируя правила грамматики с помощью директив макета блока.
Лексер DMS очень тщательно собирает комментарии и «лексические форматы» (это было восьмеричное число? Какие цитаты были в этой строке? Экранированные символы?), Чтобы их можно было правильно перегенерировать.Анализ синтаксического анализа в AST и затем Prettyprint-AST-to-text позволяет произвольно отображать некрасивый код в отформатированный код, следуя правилам prettyprinting.(Этот круговой ход - покерный анте: если вы хотите пойти дальше, чтобы фактически манипулировать AST, вы все равно хотите иметь возможность восстановить действительный исходный текст).
Недавно мы создали парсер / prettyprinters для EGL.Это заняло около недели до конца.Конечно, мы являемся экспертами в наших инструментах.
Вы можете загрузить любой из различных форматеров, созданных с использованием DMS, с нашего веб-сайта, чтобы увидеть, на что способно такое форматирование.
РЕДАКТИРОВАТЬ Июль 2012: Последняя неделя (5 дней) с использованием DMS. С нуля мы (лично я) создали полностью совместимый с IEC61131-3 синтаксический анализатор структурированного текста (язык промышленного управления, Pascal-подобный) и prettyprinter.(Он обрабатывает все примеры из документов стандартов).