Синт. анализатор, который формирует абстрактное дерево синтаксиса по коду на языке 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/ - ссылка на актуальную документацию - собирается при каждом пуше.
- magic_enum.hpp - для получения имен энамов в рантайме
- plantUML - для написания объектной модели
- Graphviz - для отрисовски дерева синтаксиса
- Doxygen - документация
- Doxygen Awesome - стиль для документации
- https://bottlecaps.de/rr/ui - для написания схем синтаксиса (Форма Бэкуса-Наура)
- https://products.aspose.app/words/conversion/xhtml-to-svg - превращать выходные .xhtml от синт.схем по ссылке выше в .svg
- Valgrind - для проверок на утечки памяти
- Google tests - тестирование
- Codacy - анализ кода
- ClangFormat - форматирование кода