Releases: j-mie6/parsley
Parsley 3.2.0
This release adds methods to the Reg
class instead of using the functions defined in registers
. This improves the type inference characteristics of the combinators.
Parsley 3.1.3
Fixed a bug with case-insensitive keywords, where if they are combined in an "or-chain" then they must have the leading character match case #95. Also slightly improved performance for keyword and operator combinators when the identifier and operator letters are not specified.
Parsley 3.1.2
Nothing much to see here, except dropped support for Scala 3.0.0 pre-releases, we now support Scala 3's official release!
Parsley 3.1.1
This release fixes a bug when amended errors are converted to hints. It also improves the semantics of .label and .explain to ensure that they are applied only when the error message has not observed the consumption of input, as opposed to whether or not input was actually consumed. This means that amend instead of attempt can control the behaviour of these combinators.
Also generalised the interface for ErrorBuilder, thereby introducing Revision2. The messages and extra lines of input are now provided as Seq instead of Set and List respectively. This is to allow an ordering for fancy error messages (explain hasn't changed).
Parsley 3.1.0
This release incorporates the changes in #92, #93, and #94. In summary, added the <+>
combinator, and amend
and entrench
in parsley.errors.combinator
. The calling mechanism for recursive parsers has been reworked and should be better for performance and memory consumption for larger parsers. The error builder now supports multiple lines of error input, with the default set at 1 line before and 1 after. This can be configured by extending the error builder class. This change has shifted the revision number of the builder to Revision1
and Revision0
retains the original behaviour of a single line.
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.