Potential breaking changes
scanner-common::capture_token
was renamed toscanner-common::capture
, and oldscanner-common::capture
removed.
Previously,capture_token
was a linker error anyway, but if you're callingscanner-common::capture
it will no longer work for arbitrary rules and instead only likedsl::capture
.lexy::parse_as_tree
will add a position token to production nodes that would otherwise be empty.
That way, no production node will be empty, unless the builder API is used directly.- Change
lexy::dsl::try_()
error recovery behavior:
It will now skip whitespace after the (optional) error recovery rule. - Deprecate the
lexy::parse_tree::builder::finish()
overload that does not take aremaining_input
. - The typo
lexy::code_point::spaing_mark
was fixed tospacing_mark
.
New Features
- Experimental: Add
lexy::parse_tree_input
andlexy::dsl::tnode
/lexy::dsl::pnode
to support multi-pass parsing. - Add
lexy::dsl::byte.if_
/set
/range
/ascii
methods to match specific bytes. - Add an overload of
fatal_error()
on scanners that allows construction of type-erased generic errors (#134). - Add
lexy::buffer::release()
andlexy::buffer::adopt()
to deconstruct a buffer into its components and re-assemble it later. - Add
lexy::parse_tree::node::position()
and::covering_lexeme()
. - Add default argument to
lexy::dsl::flag()
. - Add
lexy::callback_with_state
. - Pass the parse state to the tag of
lexy::dsl::op
if required (#172) and tolexy::dsl::error
(#211). - Enable CMake install rule for subdirectory builds (#205).
Bug fixes
- Add missing
constexpr
to container callbacks andlexy::as_string
. - Fix infinite loop in
dsl::delimited
when dealing with invalid code points (#173). - Fix swallowed errors from case-folding rules (#149).
- Fix
lexy::production_name
for productions in an anonymous namespace. - Fix bugs in
dsl::scan
(#133, #135, #142, #154, #209). - Fix bug with the position passed to the tag constructor of
lexy::dsl::op
(#170). - Fix bug where
lexy_ext::report_error
unconditionally wrote tostderr
, ignoring the output iterator. - Fix bug with missing
lexy::error_context::position
inlexy::parse_as_tree
(#184). - Fix
static_assert
inlexy::parse_tree
(#190). - Fix bugs in
lexy::input_location::operator<
(#228). - Fix bugs in examples (#183)
- Add missing
&&
inlexy::bind_sink
(#221). - Workaround compiler bugs and improve documentation (#128, #129, #146, #181, #197, #216, #227).
New Contributors
- @jgopel made their first contribution in #128
- @NelsonEloi made their first contribution in #129
- @nickelpro made their first contribution in #134
- @jan-kelemen made their first contribution in #146
- @shohirose made their first contribution in #181
- @MarcusVoelker made their first contribution in #182
- @klao made their first contribution in #183
- @stotiks made their first contribution in #197
- @TheServer201 made their first contribution in #227
- @Spartan322 made their first contribution in #228
Full Changelog: v2022.12.1...v2025.05.0