Skip to content

Releases: Muqsit/arithmexp

v0.1.12

02 Oct 01:17
Compare
Choose a tag to compare
  • BinaryOperatorRegistry no longer ends up in an invalid state when an InvalidArgumentException thrown by BinaryOperatorRegistry::register() is handled
  • Numbers with multiple decimal points (such as 3..2, 3.2.1, etc.) are no longer parsed as numeric literals
  • Function call token's "end pos" is now at closing parenthesis of its argument list
    • Parse exceptions arising from function calls are more comprehensible
      // before
      > tan(x) + tan(y) tan(z) ** tan(w)
      Unexpected Function Call token encountered at "tan" (16:19) in "tan(x) + tan(y) tan(z) ** tan(w)"
      
      // after
      > tan(x) + tan(y) tan(z) ** tan(w)
      Unexpected Function Call token encountered at "tan(z)" (16:22) in "tan(x) + tan(y) tan(z) ** tan(w)"

v0.1.11

01 Oct 09:36
Compare
Choose a tag to compare
  • Parser now throws a ParseException when encountering tokens that cannot be resolved to expression tokens
    • This fixes several cases where unexpected tokens are encountered (such as , outside fcall) where a RuntimeException would have instead been thrown with the message "Don't know how to convert * token"

v0.1.10

01 Oct 08:56
Compare
Choose a tag to compare
  • Add a method to observe changes to BinaryOperatorRegistry and UnaryOperatorRegistry
  • Fix operator token builders not updating operator list for runtime registrations
  • Fix a bug causing nested unary tokens to be improperly grouped

v0.1.9

30 Sep 21:44
Compare
Choose a tag to compare
  • Parser now throws ParseException when secluded tokens are encountered (such as 2 3 + 4 or tan(x) tan(y)) instead of silently ignoring
  • Fix ParseException being incorrectly thrown for specific nested binary operations
  • Fix operators in function arguments incorrectly throwing a ParseException

v0.1.8

30 Sep 14:07
Compare
Choose a tag to compare
  • Fixed a bug that caused the parser to fail due to incorrectly counting number of supplied arguments to fcalls

v0.1.7

30 Sep 02:13
Compare
Choose a tag to compare

v0.1.6

29 Sep 13:51
Compare
Choose a tag to compare
  • Fixed a bug where the parser incorrectly reported unclosed parentheses
  • Added support for variadic functions

v0.1.5

29 Sep 08:32
Compare
Choose a tag to compare
  • ParseException is now thrown when a missing opening/closing parenthesis is encountered
  • ParseException is now thrown when no lvalue or rvalue is supplied for a binary operator
  • ParseException is now thrown when no rvalue is supplied for a unary operator
  • ParseException is now thrown when the supplied expression is empty
  • ParseException now extends Exception
    • This change lets IDEs hint developers to catch ParseException when Parser::parse() is invoked

v0.1.4

29 Sep 03:55
Compare
Choose a tag to compare
Bump version to v0.1.4

v0.1.3

29 Sep 03:32
Compare
Choose a tag to compare
  • Added support for deterministic functions (see wiki)
  • Segments of the expression (or the expression as a whole) are now precalculated to reduce runtime computation