An open API service indexing awesome lists of open source software.

https://github.com/yawkar/extended-expressions-parser-calculator

(Student Lab Project) Первая проба пера в создании калькулятора, строящего вычислительный граф на основе спарсенных выражений и вычисляющего значение главного выражения
https://github.com/yawkar/extended-expressions-parser-calculator

calculator laboratory-work parser

Last synced: about 1 year ago
JSON representation

(Student Lab Project) Первая проба пера в создании калькулятора, строящего вычислительный граф на основе спарсенных выражений и вычисляющего значение главного выражения

Awesome Lists containing this project

README

          

# extended-expressions-parser-calculator

## Кратко
Программа получает основное выражение и дополнительные объявления переменных, парсит их и на основе них строит вычислительный граф, значение корня которого затем высчитывается и выводится обратно.

## Базовый пример
Выражение:

sin(x) ^ 2 + cos(x) ^ 2

Переменные:

x = a + b

a = 13

b = sqrt(54)

Вычисленное значение:

1.000000

## Функционал (✅ - реализовано)


  1. ✅ Поддержка чисел в выражениях

    1. ❌ Расширение чисел до множества комплексных



  2. ✅ Поддержка математических констант в выражениях

    1. ✅ Число 'PI'

    2. ✅ Число Эйлера 'e'



  3. ✅ Поддержка бинарных операторов в выражениях

    1. ✅ ^ (возведение в степень)

    2. ✅ * (умножение)

    3. ✅ / (деление)

    4. ✅ + (сложение)

    5. ✅ - (вычитание)



  4. ✅ Поддержка своих переменных в выражениях

  5. ❌ Поддержка своих (custom) функций в выражениях

    1. ❌ Реализация контекста функции для хранения переменных текущей области видимости

    2. ❌ Реализация доступа к переменным более высоких контекстов (доступ к глобальной переменной, замыкание)



  6. ✅ Поддержка стандартного перечня функций в выражениях

    1. ✅ cos()

    2. ✅ sin()

    3. ✅ tg()

    4. ✅ ctg()

    5. ✅ log()

    6. ✅ ln()

    7. ✅ sqrt()

    8. ✅ pow()

    9. ✅ abs()

    10. ✅ exp()



  7. ❌ Поддержка функций для работы с комплексными числами

    1. ❌ real() (комплексные числа)

    2. ❌ imag() (комплексные числа)

    3. ❌ mag() (комплексные числа)

    4. ❌ phase() (комплексные числа)



  8. ❌ Вывод вычислительного графа в виде обратной польской нотации