Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implied Multiplication #243

Closed
mariuszgromada opened this issue Jan 16, 2022 · 2 comments
Closed

Implied Multiplication #243

mariuszgromada opened this issue Jan 16, 2022 · 2 comments
Assignees
Milestone

Comments

@mariuszgromada
Copy link
Owner

To introduce implied multiplication syntax.

@mariuszgromada
Copy link
Owner Author

mariuszgromada commented Jan 30, 2022

  • starting form v5.0 parser works in implied multiplication mode as default mode
  • Implied multiplication can be disabled / enabled at the level of Expression object: e.disableImpliedMultiplicationMode(), e.enableImpliedMultiplicationMode()
  • a method to check in what mode an expression operates was introduced: e.checkIfImpliedMultiplicationMode()
  • special method to get modified expression string was introduced - meaning there is an option to see how parser is going to interpret given expression string: e.getCanonicalExpressionString()
  • usage example is below
mXparser.setConsolePrefix("");
Expression e = new Expression("2(3+5)sin(2pi)pipi");

mXparser.consolePrintln("----- DEFAULT MODE -----");
mXparser.consolePrintln(e.getExpressionString() + " = " + e.getCanonicalExpressionString());
mXparser.consolePrintln();
e.checkSyntax();
mXparser.consolePrintln(e.getErrorMessage());

mXparser.consolePrintln("----- disableImpliedMultiplicationMode MODE -----");
e.disableImpliedMultiplicationMode();
mXparser.consolePrintln(e.getExpressionString() + " = " + e.getCanonicalExpressionString());
mXparser.consolePrintln();
e.checkSyntax();
mXparser.consolePrintln(e.getErrorMessage());

mXparser.consolePrintln("----- enableImpliedMultiplicationModeMODE -----");
e.enableImpliedMultiplicationMode();
mXparser.consolePrintln(e.getExpressionString() + " = " + e.getCanonicalExpressionString());
mXparser.consolePrintln();
e.checkSyntax();
mXparser.consolePrintln(e.getErrorMessage());

mXparser.consolePrintln("----- checkIfImpliedMultiplicationMode -----");
mXparser.consolePrintln("Implied Multiplication is on = " + e.checkIfImpliedMultiplicationMode());
e.disableImpliedMultiplicationMode();
mXparser.consolePrintln("Implied Multiplication is on = " + e.checkIfImpliedMultiplicationMode());

Result:

----- DEFAULT MODE -----
2(3+5)sin(2pi)pipi = 2*(3+5)*sin(2*pi)*pi*pi

[2(3+5)sin(2pi)pipi] checking ...
[2(3+5)sin(2pi)pipi] no errors.

----- disableImpliedMultiplicationMode MODE -----
2(3+5)sin(2pi)pipi = 2(3+5)sin(2pi)pipi

[2(3+5)sin(2pi)pipi] checking ...
[2(3+5)sin(2pi)pipi] (2pi, 8) invalid <TOKEN>.
[2(3+5)sin(2pi)pipi] (pipi, 10) invalid <TOKEN>.
[2(3+5)sin(2pi)pipi] errors were found.

----- enableImpliedMultiplicationMode MODE -----
2(3+5)sin(2pi)pipi = 2*(3+5)*sin(2*pi)*pi*pi

[2(3+5)sin(2pi)pipi] checking ...
[2(3+5)sin(2pi)pipi] no errors.

----- checkIfImpliedMultiplicationMode -----
Implied Multiplication is on = true
Implied Multiplication is on = false

I have the impression that it will be a very useful feature :-)

Best regards

@mariuszgromada
Copy link
Owner Author

Global Mode on / off also possible"

  • mXparser.enableImpliedMultiplicationMode()
  • mXparser.disableImpliedMultiplicationMode()
  • mXparser.checkIfImpliedMultiplicationMode()

Global settings can be overwritten by local (expression level) settings.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant