Skip to content

Releases: taocpp/PEGTL

PEGTL 3.0.0

28 Nov 15:28
df0d9ee
Compare
Choose a tag to compare
  • Use the migration guide when updating.
  • Infrastructure
    • Updated required C++ standard to C++17.
    • Updated required CMake version to 3.8.
    • The macro TAO_PEGTL_NAMESPACE now contains the fully qualified namespace, e.g. tao::pegtl.
    • Added [[nodiscard]] or [[noreturn]] to most non-void functions.
  • Meta-Data Layer
    • Replaced analysis_t with more general and complete rule_t and subs_t.
    • Added functions to visit all rules of a grammar.
    • Added functions to measure rule coverage of a parsing run.
    • Moved the analysis function and header to contrib.
  • Error Handling
    • Replaced tao::pegtl::input_error with std::system_error and std::filesystem::filesystem_error.
    • Added must_if<>
      • Allows to define custom error messages for global errors.
      • Adds a non-intrusive way to define global parse errors for a grammar retroactively.
  • Demangling
    • Removed the need for RTTI.
      • Some broken/unknown compilers will use RTTI as a fallback, without demangling.
    • Moved tao::pegtl::internal::demangle<T>() to tao::demangle<T>().
    • Improved generated code to be shorter and more efficient.
  • Parse Tree
    • Removed the need for RTTI.
  • Other
    • Changed std::string to std::filesystem::path for filename parameters.
    • Renamed byte_in_line to column and use 1-based counting.
    • Moved rule eolf from inline namespace tao::pegtl::ascii to tao::pegtl.
    • Changed rules in tao/pegtl/contrib/integer.hpp to not accept redundant leading zeros.
    • Added rules to tao/pegtl/contrib/integer.hpp that test unsigned values against a maximum.
    • Demoted UTF-16 and UTF-32 support to contrib.
    • Demoted UINT-8, UINT-16, UINT-32 and UINT-64 support to contrib.
    • Folded contrib/counter.hpp into json_count.cpp, count is superceded by coverage.
    • Removed right padding from contrib/json.hpp's value.
  • Cleanup
    • Removed option of state's S::success() to have an extended signature to get access to the current apply_mode, rewind_mode, action- and control class (template).
    • Removed compatibility macros starting with TAOCPP_PEGTL_.
    • Removed compatibility uppercase enumerators.
    • Removed compatibility peek_byte() member functions.
    • Removed compatibility header changes.hpp from contrib.

PEGTL 2.8.3

22 Apr 22:45
47e878a
Compare
Choose a tag to compare
  • Fixed excessive read-ahead with incremental inputs.
  • Added state manipulators remove_first_state, remove_last_states, rotate_states_right, rotate_states_left, and reverse_states to contrib.
  • Reduced the number of intermediate parse tree nodes.

PEGTL 2.8.2

04 Apr 23:28
ede3ce1
Compare
Choose a tag to compare
  • Fixed parse tree node generation to correctly remove intermediate nodes.

PEGTL 2.8.1

06 Aug 20:47
7aff80d
Compare
Choose a tag to compare
  • Added fallback symbol demangling if RTTI is disabled.
  • Fixed missing string_input<> in amalgamated header.
  • Fixed discard_input* actions to properly forward the apply mode.
  • Fixed contrib HTTP grammar for chunked data.

PEGTL 2.8.0

09 Apr 18:41
3132d64
Compare
Choose a tag to compare
  • Use the migration guide when updating.
  • Changed enumerators to lowercase.
    • Renamed tracking_mode::IMMEDIATE to tracking_mode::eager.
    • Compatibility enumerators with uppercase names are still included.
      • Will be removed in version 3.0.0.
  • Renamed peek_byte() to peek_uint8().
    • Compatibility member functions with previous names are still included.
      • Will be removed in version 3.0.0.
  • Allowed actions to implement match.
  • Made deriving action class templates from nothing optional.
  • Added debug tools require_apply and require_apply0.
  • Added combinator class rematch.
  • Improved the Parse Tree / AST interface to mostly hide its internal state.
  • Added new action-based helpers change_*.hpp.
    • The control-based helpers in contrib/changes.hpp are still included.
      • Will be removed in version 3.0.0.
  • Added new action-based helpers disable_action.hpp and enable_action.hpp.
  • Added new action-based helpers discard_input.hpp, discard_input_on_success.hpp, and discard_input_on_failure.hpp.
  • Added Clang Static Analyzer to the CI build.
  • Added new Makefile target amalgamate to generate a single-header version of the PEGTL.
  • Added support for Universal Windows Platform (UWP).

PEGTL 2.7.1

29 Sep 21:30
ea09eb9
Compare
Choose a tag to compare
  • Added new ASCII convenience rule forty_two.
  • Added experimental if_then rule.
  • Simplified how parse tree nodes can be selected.
  • Reduced the number of intermediate parse tree nodes.
  • Allowed an action class template to be used with the parse tree.

PEGTL 2.7.0

31 Jul 21:49
5a3a35b
Compare
Choose a tag to compare
  • Added mmap_file<> support for Windows.
  • Added deduction guides for the input classes when compiling with C++17.

PEGTL 2.6.1

22 Jul 18:23
5ca0db3
Compare
Choose a tag to compare
  • Fixed endianness detection in test program.

PEGTL 2.6.0

23 Jun 05:42
ecec1f6
Compare
Choose a tag to compare
  • Added Conan packages.
  • Fixed the UTF-8 decoder to no longer accept UTF-16 surrogates.
  • Fixed the UTF-16 decoder to no longer accept UTF-16 unmatched surrogates.
  • Fixed the UTF-32 "decoder" to no longer accept UTF-16 surrogates.
  • Fixed pegtl/contrib/unescape.hh to no longer accept unmatched surrogates.
  • Optimised convenience rule two.
  • Added new convenience rule three.

PEGTL 2.5.2

31 May 11:49
d64123d
Compare
Choose a tag to compare
  • Fixed opt and until to work as documented in some rare edge cases.
  • Used opt_must and star_must to optimise some included grammars.