All Versions
11
Latest Version
Avg Release Cycle
127 days
Latest Release
664 days ago

Changelog History
Page 1

  • v0.6.3 Changes

    July 22, 2020
    • ๐Ÿ›  Fix multiline doc-comments (#232)
    • ๐Ÿ“š Documentation improvements

    Contributors: @dario23 @kevinmehall

  • v0.6.2 Changes

    February 15, 2020
    • Derive PartialEq, PartialOrd, Eq, Ord, Debug, Hash for RuleResult (#217)
    • ๐Ÿ“š Documentation improvements

    Contributors: @dario23 @kevinmehall

  • v0.6.1 Changes

    January 18, 2020
    • ๐Ÿ‘‰ Use fully qualified Result path to avoid problems if Result is shadowed (#214)
    • โšก๏ธ Update to 2018 edition for more consistent behavior when the peg name is shadowed
    • ๐Ÿ‘ Allow crate-relative imports in grammars (#213)
    • ๐Ÿ“š Documentation improvements
    • ๐Ÿ›  Fix rule arguments on pub rule
    • Forbid #[cache] on rules with arguments

    Contributors: @dario23 @kevinmehall

  • v0.6.0 Changes

    October 06, 2019

    Major improvements

    • ๐Ÿ— Replaced build script integration and nightly-only syntax extension with a procedural macro that works on stable Rust. This means that errors both in the PEG grammar and the Rust code embedded from it are reported with source position by rustc. It even works with RLS!
    • โž• Add the ability to parse non-str input by implementing traits. It comes with an implementation for [T] (including [u8]), but you can define the traits for your own types. In fact, the rust-peg grammar is parsed with rust-peg via an implementation for token trees from proc-macro2.
    • โž• Add precedence!{} block for adding a precedence-climbing expression parser integrated with the surrounding PEG source.
    • Report errors in left-recursive rules that would cause infinte loops.
    • ๐Ÿ‘ Allow rules to accept value and type parameters, including passing closures to replace the template syntax.
    • ๐ŸŽ Significant performance improvement for input that parses successfully by deferring error handling until parsing has failed.

    โฌ†๏ธ Upgrade from 0.5.x

    ๐Ÿ— 1. Remove peg = "0.5" from [build_dependencies] in Cargo.toml, and add peg = "0.6" under [dependencies]. ๐Ÿ— 2. If nothing else is in build.rs, delete it and remove build = "build.rs" from Cargo.toml

    1. If using the 2015 edition of Rust, add extern crate peg; to your crate root. ๐Ÿšš 4. Move your grammar from a separate .rustpeg file into a Rust source file. Remove the
      mod somename { include!(...) } and replace it with:

      peg::parser!{grammar somename() for str { // grammar goes here }}

    2. Add the rule keyword and parentheses to rule declarations.

      • foo = ... becomes rule foo() = ...
      • pub bar -> X = ... becomes pub rule bar() -> X = ....
    3. Add parentheses to expressions that invoke another rule.

      • name:ident becomes name:ident().
    4. Replace the character set syntax with the pattern matching syntax.

      • [a-zA-Z] becomes ['a'..='z' | 'A'..='Z'].
      • [^X] becomes (!['X'][_]) -- the inverted character set syntax was removed, but can be substituted with a negative lookahead followed by [_] to match and consume the character. โœ… 4. If your grammar used templates, replace them with rule arguments.
    5. Replace

      • . with [_].
      • #position with position!()
      • #quiet<e> with quiet!{e}
      • #expected("foo") with expected!("foo").
  • v0.5.7 Changes

    October 06, 2018
    • ๐Ÿ‘‰ Use ? instead of try!() for compatibility with Rust 2018.
    • โž• Add support for dyn and impl in rule return types
    • ๐Ÿ›  Fix peg-syntax-ext for changes in Rust nightly (0.6 will replace peg-syntax-ext with a proc-macro for stable Rust)
  • v0.5.6 Changes

    August 21, 2018

    ๐Ÿ›  Fix for libsyntax OneVector rename

  • v0.5.5 Changes

    December 16, 2017

    ๐Ÿ›  Fix for FileName change in libsyntax API

  • v0.5.4 Changes

    June 24, 2017

    ๐Ÿ›  Fixes

    • ๐Ÿ›  Fix operator capture in #infix parser (#165)
  • v0.5.3 Changes

    May 09, 2017

    ๐Ÿ›  Fixes

    • ๐Ÿ›  Fix infix parsers in grammars using context arguments (#162)
  • v0.5.2 Changes

    April 29, 2017

    ๐Ÿ†• New Features

    ๐Ÿ›  Fixes

    • โšก๏ธ [peg-syntax-ext] Update for rust-nightly-2017-04-28