Вы можете создать свой собственный синтаксический анализатор, свой собственный конструктор деревьев, свой собственный обходчик деревьев, свои собственные анализаторы, свои собственные симпатичные принтеры ... но это большая работа.
Вы могли бы рассмотреть инструменты, которые предоставляют всю эту технику для вас.
Одним из таких инструментов является наш DMS Software Reengineering Toolkit .
Учитывая грамматику, DMS будет анализировать и автоматически строить дерево; да, он автоматически захватывает «микротокены», такие как комментарии, и прикрепляет их к соответствующим узлам дерева. Он может распечатать дерево обратно, до или после преобразований. Вы должны обеспечить поддержку таблиц символов, поскольку это семантическая, а не синтаксическая конструкция, но DMS предоставляет универсальные таблицы символов и инструменты управления областью действия в качестве библиотеки для построения. DMS также предоставляет полные библиотеки для управления и анализа потока данных, которые необходимы, если вы хотите выполнить серьезные преобразования или рефакторинг кода.
Одним из самых приятных свойств DMS является возможность применять преобразования, указанные с использованием синтаксиса вашей грамматики, например: «если вы видите this (на моем языке), то замените его на , что ».
Вы можете увидеть пример определения правил лексера, парсера, prettyprinter и преобразования, которые определяют алгебру 9-го класса и немного исчисления. Переписать
правила используются для упрощения и вычисления символических производных по алгебраическим формулам.