Создан заказ №2768519
31 марта 2018
Разработка интерпретатора математических выражений(калькулятор)
Как заказчик описал требования к работе:
Написать интерпретатор (Java) Есть свой код, но его нужно немного изменить
Минимальный набор операторов:
Умножение *
Деление /
Сложение +
Вычитание -
Возведение в степень ^
Унарные операторы +/-
Минимальный набор типов данных:
Число с плавающей запятой (double)
Интерпретатор должен корректно разби
рать выражения произвольной вложенности скобок.
Интерпретатор должен корректно разбирать числа, заданные в формате {S}{I}{.F}{e{PS}P}, где
S – необязательный знак, + или -
I – необязательная целая часть
F – необязательная дробная часть, если указана, перед ней всегда ставится символ .
PS – необязательный знак показателя десятичного порядка, + или -
P – необязательный десятичный порядок, если указан, перед ним (или перед знаком), всегда ставится символ e или E.
Как минимум, задана либо целая, либо дробная часть.
Интерпретатор должен поддерживать определение переменных при помощи оператора = и их использование в выражениях. Названия переменных состоят из строчных латинских букв.
Интерпретатор должен быть реализован в форме программы командной строки, принимающей на стандартный ввод одно или несколько выражений, разделенных символом ; или переносом строки. Для каждого выражения, интерпретатор должен вывести соответствующее ему значение (если есть), или ошибку (если произошла ошибка разбора или интерпретации).
Для разбора строк настоятельно рекомендуется использовать генератор лексических и синтаксических анализаторов Antlr4.
Примеры:
Ввод: 42
Вывод: 42.0
Ввод: +42
Вывод: 42.0
Ввод: -42
Вывод: -42.0
Ввод: -42.42
Вывод: -42.42
Ввод: -42e3
Вывод: -42000.0
Ввод: 1e-1
Вывод: 0.1
Ввод: 3*7
Вывод: 21
Ввод: x=5; x*5
Вывод: 25.0
Ввод: x=10/2
x*5
Вывод: 25.0
Ввод: 6*7
42/2
Вывод: 42
21
Ввод: (3*5)+(6-(4/3))^(14-(5+7))
Вывод: 36.7777778
Ввод: e3
Вывод: Ошибка лексического разбора
Ввод: 3e
Вывод: Ошибка лексического разбора
Ввод: 3+
Вывод: Ошибка синтаксического разбора
Ввод: z
Вывод: Неопределенная переменная z
В отчете по курсовой работе обязательно должны присутствовать:
Определение единиц лексического анализатора (лексем) в форме регулярных выражений
Определение грамматики синтаксического анализатора в (расширенной) форме Бэкуса-Наура
Примеры разбора выражений в синтаксические деревья
Описание действий интерпретатора на каждом узле синтаксического дерева
Примерное содержание:
Введение. Постановка задачи
Лексический анализ. Определения лексем
Синтаксический анализ. Определение грамматики
Выбор методики анализа грамматики
Примеры разбора выражений в синтаксические деревья
Разработка стратегии интерпретации синтаксических деревьев
Программа интерпретатора. Примеры сессий (если есть)
подробнее
Заказчик
заплатил
заплатил
500 ₽
Заказчик не использовал рассрочку
Гарантия сервиса
Автор24
Автор24
20 дней
Заказчик принял работу без использования гарантии
3 апреля 2018
Заказ завершен, заказчик получил финальный файл с работой
5
Разработка интерпретатора математических выражений(калькулятор).docx
2018-04-06 10:05
Последний отзыв студента о бирже Автор24
Общая оценка
5
Положительно
Очень быстрое выполнение любой задачи, помощь в исполнении изменений от преподавателя.