mscalc (1.0)
Installation
pip install --index-url mscalc
About this package
Console calculator
КАЛЬКУЛЯТОР
Консольный калькулятор простых арифметических выражений.
Требования
- Язык программирования - Python.
- Интерфейс программы - командная строка.
- Программа принимает на вход (читает строку из стандартного потока ввода) числа (операнды) и арифметические операции (+, -, *, /).
- Результатом выполнения задачи является вывод (в стандартный поток вывода) результата вычисления арифметического выражения.
Контрольные примеры
- 2 + 2 = 4
- 5 - 3 = 2
- 7 * 8 = 56
- 56 / 8 = 7
- (3 + 4) * 8 = 56
- 64 / (2 * 4) = 8
Решение
Предлагается следующая концепция решения задачи:
- Лексический анализатор принимает на вход строку с выражением и разбивает его на лексемы. Процесс может завершиться аварийно с выдачей соответствующей диагностикой об ошибке синтаксиса.
- Синтаксический анализатор принимает на вход поток лексем и строит из них двоичное синтаксическое дерево. Процесс может завершиться аварийно с выдачей соответствующей диагностикой об ошибке синтаксиса.
- Вычислитель проходит по синтаксическому дереву и вычисляет значение выражения. Процесс может завершиться аварийно с выдачей соответствующей диагностикой об ошибке вычисления (например - деление на ноль).
Тестирование
Зависимости проекта могут быть установлены командой:
pip install -U -e .[dev]
Для запуска тестов следует выполнить команду:
make test
Для получения отчёта о покрытии кода проекта тестами в формате HTML нужно запустить команду:
EXPORT_RESULT=true make coverage
После успешного выполнения в папке out/coverage
будут находиться файлы отчёта
о покрытии кода проекта тестами в формате HTML с индексом в файле index.html
.
Сборка дистрибутива
Для сборки пакета Debian/Ubuntu необходимо установить пакеты python3-all
,
dh-python
, debhelper
.
Собрать пакет Debian можно командой:
make dist-deb
После успешного выполнения команды в папке out/deb
будут пакеты Debian.
Для сборки пакета Wheel необходимо запустить команду:
make dist-wheel
После успешного выполнения команды в папке out/dist
будет пакет Wheel.
Для сборки всех возможных пакетов необходимо выполнить команду:
make dist