Releases: j-mie6/parsley
Parsley 3.0.1
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
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 justparse
as well as introducing a separation between IO-based methods of
running a parser and not. Also, running a parser from file results in aTry
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 withinparsley.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 redundantLevels.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
,!
toparsley.errors.combinators
. - Removed
>?>
,guard
, andguardNot
What's New
- #81 Parser API Changes: introduced the
parsley.io
module (absent for scala-js parsley) - #88 Parsley 3 expr: added
prefix1
andpostfix1
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 newSOps
abstraction to better
support sub-typed non-monolithic trees. AddedAtoms
terminal node forLevels
.
Parsley 2.8.7
Fixed the root documentation so that the index page is there again.
Parsley 2.8.6
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
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
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
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
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
Parsley 2.8.0
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.