Skip to content

romfed205/translators

Repository files navigation

Анализатор выражений ANTLR+TREE

Вариант 7: Выражение из нескольких сложений через ';' и операций сравнения <, >, =, != над INT

Данный проект представляет собой реализацию синтаксического анализатора для грамматики, представленной в задании. Анализатор построен с использованием инструмента 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

Сборка проекта

Необходимые компоненты

Для сборки проекта требуются:

  1. Компилятор C++ (с поддержкой C++17)
  2. CMake (версия 3.14 или выше)
  3. Java (для запуска ANTLR)
  4. Библиотека ANTLR4 C++ runtime

Инструкция по сборке

  1. Установить зависимости:

    # Для macOS с Homebrew
    brew install cmake antlr4-cpp-runtime openjdk
    
    # Для Linux
    sudo apt-get install cmake openjdk-11-jdk
    # Затем установить ANTLR4 C++ runtime из исходников
  2. Создать директорию для сборки и собрать проект:

    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 анализатора для заданной грамматики. Он корректно разбирает выражения, содержащие операции сложения и сравнения, и представляет результаты в виде дерева разбора.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages