Skip to content

ArtyuhovVadim/MathExpressionParser

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 

Repository files navigation

MathExpressionParser

Общая информация

MathExpressionParser - библиотека для парсинга математических выражений.

Nuget

MathExpressionParser для .netstandard2.1

Быстрый старт

var parser = MathParserBuilder.BuildDefaultParser();
var output = parser.Parse("2 + 2 * 2"); // 6 

Возможности библиотеки

Встроенные операторы

  1. + - сложение
  2. - - вычитание
  3. / - деление
  4. * - умножение
  5. ^ - возведение в степень
  6. // - деление нацело
  7. % - деление с остатком
  8. ( ) - изменение приоритета операций

Синтаксис вызова функций

some_func(arg1, arg2, arg3, ...)

Все функции не чувствительны к регистру, можно писать как max(...), так и MAX(...) и т.д.

Синтаксис использования констант

pi
e
max
min

Все константы не чувствительны к регистру, можно писать как pi, так и PI и т.д.

Запись чисел

  1. 42069 - десятичное число
  2. 0xFBF - шестнадцатеричное число
  3. 0o453 - восьмеричное число
  4. 0b101 - двоичное число

Встроенные константы

  1. pi - число пи
  2. e - число e
  3. max - максимальное значение числа double (1.7976931348623157E+308)
  4. min - минимальное значение числа double (-1.7976931348623157E+308)

Встроенные функции

  1. sin(x) - синус числа x
  2. cos(x) - косинус числа x
  3. tg(x) - тангенс числа x
  4. ctg(x) - котангенс числа x
  5. arcsin(x) - арксинус числа x
  6. arccos(x) - арккосинус числа x
  7. arctg(x) - арктангенс числа x
  8. arcctg(x) - арккотангенс числа x
  9. pow(x, y) - число x возведенное в степень y
  10. asb(x) - модуль числа x
  11. sqrt(x) - квадратный корень числа x
  12. log(x, y) - логарифм числа x по основанию y
  13. lg(x) - десятичный логарифм числа x
  14. ln(x) - натуральный логарифм числа x
  15. exp(x) - экспонента числа x
  16. sign(x) - возвращает знак числа (-1 если число меньше 0, 1 если больше 0, 0 если число равно 0)
  17. d2r(x) - переводит число x в градусах в радианы
  18. r2d(x) - переводит число x в радианах в градусы
  19. max(x, y, ...) - возвращает максимальное число из x, y и т.д. (функция принимает 2 или больше аргументов)
  20. min(x, y, ...) - возвращает минимальное число из x, y и т.д. (функция принимает 2 или больше аргументов)
  21. avg(x, y, ...) - возвращает среднее число из x, y и т.д. (функция принимает 2 или больше аргументов)

Построение не стандартного парсера

Создание парсера без стандартных функций и констант

var parser = MathParserBuilder
    .Create()
    .Build();

Создание парсера со всеми встроенными функциями и всеми встроенными константами

var parser = MathParserBuilder
    .Create()
    .WithDefaultConstants()
    .WithDefaultFunctions()
    .Build();

Запись выше эквивалента данной записи

var parser = MathParserBuilder.BuildDefaultParser()

Создание парсера с нестандартными функциями и константами

var parser = MathParserBuilder
    .Create()
    .WithConstant("my_const", 54)
    .WithFunction("my_func", 2, args => (args[0] + args[1]) / 2) // кол-ко аргументов строго 2
    .WithFunction("my_func1", argsCount => argsCount >= 3, args => args.Average() / 2) // кол-ко аргументов больше или равно 3
    .Build();

Пример использования

Пример консольного приложения - TestProject.

var parser = MathParserBuilder.BuildDefaultParser()
var output = parser.Parse("pow(2 + 2 * 2 - sqrt(2) / cos(max(pi / 2, pi)), 2)") // 54.97

Лицензия

Этот проект лицензирован MIT.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages