Skip to content

Синтаксический анализатор языка micro-Pascal

Notifications You must be signed in to change notification settings

DanArmor/micro-Pascal

Repository files navigation

micro-Pascal

Docs Status Codacy Badge C/C++ Build & Test & Memory Test Draw Trees

Синт. анализатор, который формирует абстрактное дерево синтаксиса по коду на языке micro-Pascal. Состоит из:

  • Лексера - разбивате на токены полученную программу
  • Синтаксического анализатора - из токенов формирует дерево программы
  • Различные посетители (наследники IVisitor) - обходят дерево, выполняя какую-то задачу (Например, GraphizVisitor формирует изображения деревьев, как ниже. Другие примеры вы можете увидеть в этой ветке https://github.com/DanArmor/micro-Pascal/tree/treeImg)

Изображение дерева, если вы видите этот текст - у вас не прогрузилось

Текст программы, по которому построено дерево:

Изображение с подсветкой синтаксиса

Если поставить точку с запятой после sayHello() внутри if в конце программы (В micro-Pascal её нельзя ставить перед else), то анализатор сообщит об этом:

Изображение с сообщением об ошибке

И так далее.

Структура

  • side_include - различные сторонние библиотеки
  • include - мои заголовочные файлы
  • src - сурсы для классов и т. п.
  • schemes - объектная схема и диаграмма классов (не всегда актуальные на данный момент)
  • progs - тексты программ для ручного запуска и проверки
  • tests - тесты, имеющие свои тексты для проверок
  • examples - для Doxygen, попытка добавить примеры кода для документации

К большей части кода есть doxy комменты, поэтому подкорректировав Doxyfile можно собрать документацию к проекту. (А так же в VSCode и других редакторах за счет этого более хорошие подсказки по параметрам и т. п.)

https://danarmor.github.io/micro-Pascal/ - ссылка на актуальную документацию - собирается при каждом пуше.

Что используется из стороннего?

Синтаксические диаграммы:

Изображение схемы синтаксиса

Объектная модель:

Изображение схемы синтаксиса

Диаграмма классов:

Токен и шаблон токена:

Изображение схемы синтаксиса

Интерфейс AST-узлов и Простая Фабрика для их создания:

Изображение схемы синтаксиса

Реализации интерфейса AST-узла:

Изображение схемы синтаксиса

Посетители:

Изображение схемы синтаксиса

Список (собственый контейнер):

Изображение схемы синтаксиса

Синтаксический анализатор:

Изображение схемы синтаксиса

Лексер:

Изображение схемы синтаксиса

Исключения:

Изображение схемы синтаксиса

Анализатор:

Изображение схемы синтаксиса