TO SUPPORT MY WORK, ORDER A COMMERCIAL LICENSE
THANK YOU!
Tutorial Math Collection API spec Download
Below is the code for JAVA, the code for C# is almost identical.
Case 1: Printing expression tokens
import org.mariuszgromada.math.mxparser.*; ... Expression e = new Expression("1+2^3-sin(10+cos(20-1))+30"); mXparser.consolePrintTokens(e.getCopyOfInitialTokens());
[mXparser-v.5.0.0] -------------------- [mXparser-v.5.0.0] | Expression tokens: | [mXparser-v.5.0.0] --------------------------------------------------------------------------------------------------------------- [mXparser-v.5.0.0] | TokenIdx | Token | KeyW | TokenId | TokenTypeId | TokenLevel | TokenValue | LooksLike | [mXparser-v.5.0.0] --------------------------------------------------------------------------------------------------------------- [mXparser-v.5.0.0] | 0 | 1 | _num_ | 1 | 0 | 0 | 1.0 | | [mXparser-v.5.0.0] | 1 | + | + | 1 | 1 | 0 | NaN | | [mXparser-v.5.0.0] | 2 | 2 | _num_ | 1 | 0 | 0 | 2.0 | | [mXparser-v.5.0.0] | 3 | ^ | ^ | 5 | 1 | 0 | NaN | | [mXparser-v.5.0.0] | 4 | 3 | _num_ | 1 | 0 | 0 | 3.0 | | [mXparser-v.5.0.0] | 5 | - | - | 2 | 1 | 0 | NaN | | [mXparser-v.5.0.0] | 6 | sin | sin | 1 | 4 | 1 | NaN | | [mXparser-v.5.0.0] | 7 | ( | ( | 1 | 20 | 2 | NaN | | [mXparser-v.5.0.0] | 8 | 10 | _num_ | 1 | 0 | 2 | 10.0 | | [mXparser-v.5.0.0] | 9 | + | + | 1 | 1 | 2 | NaN | | [mXparser-v.5.0.0] | 10 | cos | cos | 2 | 4 | 3 | NaN | | [mXparser-v.5.0.0] | 11 | ( | ( | 1 | 20 | 4 | NaN | | [mXparser-v.5.0.0] | 12 | 20 | _num_ | 1 | 0 | 4 | 20.0 | | [mXparser-v.5.0.0] | 13 | - | - | 2 | 1 | 4 | NaN | | [mXparser-v.5.0.0] | 14 | 1 | _num_ | 1 | 0 | 4 | 1.0 | | [mXparser-v.5.0.0] | 15 | ) | ) | 2 | 20 | 4 | NaN | | [mXparser-v.5.0.0] | 16 | ) | ) | 2 | 20 | 2 | NaN | | [mXparser-v.5.0.0] | 17 | + | + | 1 | 1 | 0 | NaN | | [mXparser-v.5.0.0] | 18 | 30 | _num_ | 1 | 0 | 0 | 30.0 | | [mXparser-v.5.0.0] ---------------------------------------------------------------------------------------------------------------
Case 2: Using tokens to print expression in a fancy way
import org.mariuszgromada.math.mxparser.*; import org.mariuszgromada.math.mxparser.parsertokens.Token; import java.util.List; ... /* Expression definition */ Expression e = new Expression("1+2^3-sin(10+cos(20-1))+30"); /* Getting list of tokens */ List<Token> tokens = e.getCopyOfInitialTokens(); /* Evaluating max level */ int mxlev = 0; for (Token t : tokens) if (t.tokenLevel > mxlev) mxlev = t.tokenLevel; /* Printing tokens */ mXparser.consolePrintln(e.getExpressionString()); mXparser.consolePrintln("--------------------------"); for (int level = 0; level <= mxlev; level++) { for (Token t : tokens) { String s; if (t.tokenLevel == level) s = t.tokenStr; else { s = ""; for (int i = 0; i < t.tokenStr.length(); i++) s = s + " "; } mXparser.consolePrint(s); } mXparser.consolePrintln(); }
[mXparser-v.5.0.0] 1+2^3-sin(10+cos(20-1))+30 [mXparser-v.5.0.0] -------------------------- [mXparser-v.5.0.0] 1+2^3- +30 [mXparser-v.5.0.0] sin [mXparser-v.5.0.0] (10+ ) [mXparser-v.5.0.0] cos [mXparser-v.5.0.0] (20-1)
Case 3: Playing with invalid tokens
import org.mariuszgromada.math.mxparser.*; ... Expression e = new Expression("pi+var1-fun1(var1)+fun2(var2)-1pi"); mXparser.consolePrintTokens(e.getCopyOfInitialTokens());
Please check “Looks Like” field
[mXparser-v.5.0.0] -------------------- [mXparser-v.5.0.0] | Expression tokens: | [mXparser-v.5.0.0] --------------------------------------------------------------------------------------------------------------- [mXparser-v.5.0.0] | TokenIdx | Token | KeyW | TokenId | TokenTypeId | TokenLevel | TokenValue | LooksLike | [mXparser-v.5.0.0] --------------------------------------------------------------------------------------------------------------- [mXparser-v.5.0.0] | 0 | pi | pi | 1 | 9 | 0 | NaN | | [mXparser-v.5.0.0] | 1 | + | + | 1 | 1 | 0 | NaN | | [mXparser-v.5.0.0] | 2 | var1 | | -1 | -1 | 0 | NaN | argument | [mXparser-v.5.0.0] | 3 | - | - | 2 | 1 | 0 | NaN | | [mXparser-v.5.0.0] | 4 | fun1 | | -1 | -1 | 0 | NaN | function | [mXparser-v.5.0.0] | 5 | ( | ( | 1 | 20 | 1 | NaN | | [mXparser-v.5.0.0] | 6 | var1 | | -1 | -1 | 1 | NaN | argument | [mXparser-v.5.0.0] | 7 | ) | ) | 2 | 20 | 1 | NaN | | [mXparser-v.5.0.0] | 8 | + | + | 1 | 1 | 0 | NaN | | [mXparser-v.5.0.0] | 9 | fun2 | | -1 | -1 | 0 | NaN | function | [mXparser-v.5.0.0] | 10 | ( | ( | 1 | 20 | 1 | NaN | | [mXparser-v.5.0.0] | 11 | var2 | | -1 | -1 | 1 | NaN | argument | [mXparser-v.5.0.0] | 12 | ) | ) | 2 | 20 | 1 | NaN | | [mXparser-v.5.0.0] | 13 | - | - | 2 | 1 | 0 | NaN | | [mXparser-v.5.0.0] | 14 | 1 | | 1 | 0 | 0 | 1.0 | | [mXparser-v.5.0.0] | 15 | * | | 3 | 1 | 0 | NaN | | [mXparser-v.5.0.0] | 16 | pi | | 1 | 9 | 0 | NaN | | [mXparser-v.5.0.0] ---------------------------------------------------------------------------------------------------------------
Nuget
Install-Package MathParser.org-mXparser -Version 5.0.2
Maven
<dependency>
<groupid>org.mariuszgromada.math</groupid>
<artifactid>MathParser.org-mXparser</artifactid>
<version>5.0.2</version>
</dependency>
Gradle
implementation 'org.mariuszgromada.math:MathParser.org-mXparser:5.0.2'
Gradle (Kotlin)
implementation("org.mariuszgromada.math:MathParser.org-mXparser:5.0.2")
GitHub
git clone https://github.com/mariuszgromada/MathParser.org-mXparser
OTHER DOWNLOAD OPTIONS
Download latest release – v.5.0.2 Leonis: bin + docDownload latest release – v.5.0.2 Leonis: bin only, includes separate binaries for various .NET platforms and Java versions
Source code .zipSource code .tar.gz
View on GitHubMathSpace.pl