MathExpressionParser 1.0.0

dotnet add package MathExpressionParser --version 1.0.0
NuGet\Install-Package MathExpressionParser -Version 1.0.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="MathExpressionParser" Version="1.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add MathExpressionParser --version 1.0.0
#r "nuget: MathExpressionParser, 1.0.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install MathExpressionParser as a Cake Addin
#addin nuget:?package=MathExpressionParser&version=1.0.0

// Install MathExpressionParser as a Cake Tool
#tool nuget:?package=MathExpressionParser&version=1.0.0

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.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.1 is compatible. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • .NETStandard 2.1

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.0.0 140 8/23/2023

First publication