Skip to content

Releases: j-mie6/parsley

Parsley 3.0.1

27 Mar 18:00
4fb31b0
Compare
Choose a tag to compare

Improved performance of error message formatting. Expected tokens now properly account for the input that was consumed for the previous "hints" in the grammar. Deprecated <\> since it has counter-intuitive associativity, which can easily result in unexpected performance characteristics and possible damage to error messages.

Parsley 3.0.0

23 Mar 17:16
96843b4
Compare
Choose a tag to compare

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.

Parsley 2.8.7

17 Mar 18:15
590de35
Compare
Choose a tag to compare

Fixed the root documentation so that the index page is there again.

Parsley 2.8.6

07 Mar 23:49
67a5839
Compare
Choose a tag to compare

This release adds no features or bugfixes. However, it does add official scala-js 1.5.0 and scala-native 0.4.0 support tested against Node 14 LTS and Node 15, as well as LLVM 10 respectively.

Parsley 2.8.5

05 Mar 18:59
4515ca3
Compare
Choose a tag to compare

Incorporated #79, which brings some improvements to the specificity of error messages from the Lexer (and fixed missing "longer" unexpected items from some branches). Trimmed unexpected or raw items at the next newline or space. This makes them a little friendlier.

Parsley 2.8.4

05 Mar 09:17
4373db0
Compare
Choose a tag to compare

This release incorporates the work in #74, #75, #76, and #78 as well as a couple of bug fixes including:

  • Correct line endings for error messages on windows
  • Files opened with parseFromFile now correctly close their input
  • Some minor bugs where hints were not correctly reported

The PRs are as follows:

  • #74 Converted the input backed by arrays into input backed by string, this improves performance in the context of the new error messages
  • #75 Optimised the new error message system to bring it back down to the same performance as the original, inferior, system. Error messages are now generated lazily
  • #76 Optimised the stacks to reduce redundant allocations
  • #78 Optimised the lazy computation of error messages to make them much faster and perform a lot less work than before

Parsley 2.8.3

12 Feb 11:00
21594ba
Compare
Choose a tag to compare

Fixed a bug where the comment in lexer doesn't work for single line comment only languages when the whitespace provided is given as a Parser. #73

Parsley 2.8.2

11 Feb 22:30
7b26af8
Compare
Choose a tag to compare

Fixed an obscure bug #72 where parsers that fail inside labels cannot benefit from the hints of parsers that came before (a simple case of misinterpreted semantics!)

Parsley 2.8.1

11 Feb 09:33
d57bd41
Compare
Choose a tag to compare

Fixed #70 via #71.

Parsley 2.8.0

10 Feb 22:14
b32b622
Compare
Choose a tag to compare

This release incorporates #68, which provides a more uniform API for not guard (with a more understandable name) as well as a helpful combinator to perform filters with added reasons.