Skip to content

Parsley 3.0.0

Compare
Choose a tag to compare
@j-mie6 j-mie6 released this 23 Mar 17:16
· 238 commits to master since this release
96843b4

NOTE: This release has several backwards incompatible changes: this includes changing runParser to parse and any previously deprecated functionality from v2.2.0+, some combinators were removed without prior deprecation warning as well.

What's Changed

  • deprecated combinators from the old-style API have been removed
  • #81 Parser API Changes: This adjusts the old runParser to be just parse as well as introducing a separation between IO-based methods of
    running a parser and not. Also, running a parser from file results in a Try wrapper to protect properly against exceptions
  • #82 Higher-arity map changed to zipped: the .map notation has been changed to a .zipped notation and the function has been made
    optional. The implicits have also been reorganised into submodules within parsley.implicits
  • #83 Parsley 3 debug: coloured output can now be disabled on debug combinators. Fixing #60.
  • #88 Parsley 3 expr: Adds in curried application of precedence
  • #91 Parsley 3 precedence improvements: Allows for precedence tables to written in either strong-to-weak or weak-to-strong ordering.
    Improved the levels datatype to remove the redundant Levels.empty terminal node.
  • Moved withFilter to its own module, since its only needed in 2.12
  • Improved error for notFollowedBy
  • Moved unexpected, fail, filterOut, collectMsg, guardAgainst, ?, label, explain, hide, ! to parsley.errors.combinators.
  • Removed >?>, guard, and guardNot

What's New

  • #81 Parser API Changes: introduced the parsley.io module (absent for scala-js parsley)
  • #88 Parsley 3 expr: added prefix1 and postfix1 combinators
  • #90 Parsley 3 errors: The main body of work for the Parsley 3 release, introduces an ErrorBuilder abstraction to allow the users of the API to
    decide how errors should be formatted, giving them the control to produce their own datatypes.
  • #91 Parsley 3 precedence improvements: This adds the ability to use non-associative operators (i.e. single use) in a precedence table. Also
    allows for precedence tables to written in either strong-to-weak or weak-to-strong ordering. Introduced a new SOps abstraction to better
    support sub-typed non-monolithic trees. Added Atoms terminal node for Levels.