Данный проект представляет собой реализацию синтаксического анализатора для грамматики, представленной в задании. Анализатор построен с использованием инструмента ANTLR4 и реализует древовидное представление (TREE) результатов разбора.
Грамматика в БНФ:
<Program> ::= <Expr> ";" <Program> | <Expr>
<Expr> ::= <Sum> <Comp> <Sum>
<Sum> ::= <Num> "+" <Sum> | <Num>
где:
- Num – число
- Expr – выражение сложения
- Comp – оператор сравнения (<, >, =, !=)
- Expr.g4 - файл грамматики ANTLR4
- ExprParser.cpp - основной файл C++ с реализацией анализатора
- CMakeLists.txt - конфигурация сборки проекта
- input.txt - пример входных данных для тестирования анализатора
- build_and_run.sh - скрипт для сборки и запуска проекта
- /generated/ - директория с генерированными ANTLR файлами
2+3 < 4;
5 < 10+2;
7 != 7+1
Для сборки проекта требуются:
- Компилятор C++ (с поддержкой C++17)
- CMake (версия 3.14 или выше)
- Java (для запуска ANTLR)
- Библиотека ANTLR4 C++ runtime
-
Установить зависимости:
# Для macOS с Homebrew brew install cmake antlr4-cpp-runtime openjdk # Для Linux sudo apt-get install cmake openjdk-11-jdk # Затем установить ANTLR4 C++ runtime из исходников
-
Создать директорию для сборки и собрать проект:
mkdir -p build cd build cmake .. make
После сборки проекта вы можете запустить анализатор, передав ему файл с входными данными:
./expr_parser ../input.txtАнализатор выводит древовидное представление разобранных выражений в соответствии с заданной грамматикой. Для каждого выражения показывается его структура, компоненты сумм, операторы сравнения и отдельные числа.
Пример вывода:
Program:
Expression: 2+3 < 4
Sum: 2+3
Number: 2
Sum: 3
Number: 3
Comparison operator: <
Sum: 4
Number: 4
Разработанный анализатор успешно реализует поставленную задачу по созданию ANTLR+TREE анализатора для заданной грамматики. Он корректно разбирает выражения, содержащие операции сложения и сравнения, и представляет результаты в виде дерева разбора.