Есть необходимость для визуального «прототипирования» синтаксически- управляемых трансляторов на основе GNU Bison (далее — bison). Bison умеет генерировать исходные тексты синтаксических анализаторов на C/C++/Java по заданной спецификации в формате, похожем на контекстно-свободные грамматики Хомского. На сегодня имеются несколько подобных инструментов, и они либо коммерческие, либо не бесплатные (например, Visual BNF). Возникает необходимость в бесплатном инструменте с GPL- или BSD-подобной лицензией.
Приложение должно выполнять функции:
> Написание bison-грамматики с подсветкой синтаксиса и генерацией по ней кода синтаксического анализатора;
> Выделение конфликтов по мере написания грамматики (в стиле Eclipse или MSVS);
> Пошаговое выполнение на тестовом входном файле и визуализация переносов и сверток в стеке;
> Использование точек останова в тестовом файле или грамматике;
> Проверка символов предпросмотра в каждом состоянии и изменение ввода перед каждым последующим шагом синтаксического анализа;
Данная работа пока представляет академический интерес, но может использоваться в учебном процессе при обучении студентов по «комипляторным курсам», и в отдаленной перспективе — при промышленной разработке компиляторов.
В соответствии с полученными знаниями и заданием на выпускную работу, реализовано приложение Visual Bison. Visual Bison является кроссплатформенным приложением, и позволяет пошагово выполнять разбор синтаксических конструкций разрабатываемой грамматики, ставить точки останова, для быстрого перехода к интересующему месту, имеет удобный графический интерфейс пользователя с подсветкой синтаксиса и выделением ошибок по мере написания грамматики. Процесс отладки проходит с выводом подробной информации о текущем шаге, об истории шагов, и печатью уточняющих сообщений от отладчика. Примеры работы отладчика представлены в приложении А.
Учитывая все возможности визуального редактора-генератора синтаксических анализаторов Visual Bison, можно отметить что он хорошо подходит для студентов, начинающих осваивать компиляторные курсы, т.к. наглядно показывает работу синтаксического анализатора.