C++ parsing DSL
lexy::input_location
.lexy::error_context::production
will not be a transparent production.lexy::production_info::operator==
when the compiler doesn't merge string literals.dsl::ascii::print
and dsl::ascii::graph
.Full Changelog: https://github.com/foonathan/lexy/compare/v2022.12.0...v2022.12.1
Headline: Unicode 15 support, ability to split a grammar into multiple translation units using lexy::dsl::subgrammar
, and significant performance improvements.
lexy::dsl::peek_not()
error recovery behavior:
it will now consume the input it matched to recover, which is more useful.Production
parameter from lexy::error_context
.
It is replaced by a type-erased lexy::production_info
.lexy::validate
, lexy::parse
, and lexy::parse_as_tree
now type-erase generic error tags prior to invoking the callback.lexy::production_info
instead of Production
type in lexy::parse_tree
.
This is technically a breaking change, as it may affect overload resolution.lexy::dsl::subgrammar
to split a grammar into multiple translation units.lexy::dsl::flags
and lexy::dsl::flag
to parse enum flags.lexy::dsl::position
that parses a rule.
This allows using it as branch conditions.lexy::dsl::effect
to trigger side-effects during parsing.lexy::subexpression_production
to parse a subexpression.lexy::utf8_char_encoding
.lexy::parse_tree::remaining_input()
and populate it by lexy::parse_as_tree
.lexy::make_buffer_from_input
function.lexy::error
.const
parse state.lexy::bind
callback does not forward rvalue arguments; they got turned into lvalues instead.void
.dsl::quoted(cc.error<foo>)
did not use foo
as the error.Full Changelog: https://github.com/foonathan/lexy/compare/v2022.05.1...v2022.12.0
dsl::scan
: it will now be invoked with the previously produced values.dsl::parse_as
to ensure that a rule always produces a value (e.g. when combined with the dsl::scan
change above).lexy::lexeme_input
to support multi-pass parsing.dsl::terminator(term)(branch)
into a branch rule, as opposed to being a plain rule (#74).dsl::ignore_trailing_sep()
separator.lexy::bounded<T, Max>
for bounded integer parsing (#72).dsl::code_unit_id
rule.lexy::forward<void>
into a sink.lexy::parse_result
and lexy::scan_result
lexy::parse
with a root production whose value is void
.lexy::scanner
for token productions.Initial release.