Releases: kevinmehall/rust-peg
Releases · kevinmehall/rust-peg
0.5.7
- Use
?
instead oftry!()
for compatibility with Rust 2018. - Add support for
dyn
andimpl
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)
0.5.6 (peg-syntax-ext)
Fix for libsyntax OneVector
rename
0.5.5 (peg-syntax-ext)
Fix for FileName change in libsyntax API
0.5.4
0.5.3
0.5.2
New Features
- Context arguments for passing variables to all rules
Fixes
- [peg-syntax-ext] Update for rust-nightly-2017-04-28
0.5.1
0.5.0
Changes
- Change
#[pub] rule_name = ...
syntax topub rule_name = ...
. The old syntax is retained for backwards compatibility, butpub
is now a reserved keyword and cannot be used as an identifier.
New features
- Add rule templates
- Add experimental
#infix
syntax for parsing binary infix expressions by precedence climbing. - Allow delimited-repeat with range bounds
**<n,m>
. - Add
x*<{count}>
syntax for a repeat bounded by a Rust expression. - Add
#quiet<e>
and#expected("msg")
expressions for improved error reporting. - Allow
as
inuse
statements to match Rust syntax.
Fixes
- Fix a bug in error reporting of
&
and!
expressions. - Avoid type errors if a rule returns a result, but the result is not used.
- Error when using a nonexistent rule, rather than generating Rust code that doesn't compile.
0.4.0
Migrating from 0.3
- If you were using the syntax extension, replace
peg = "0.3.0"
withpeg-syntax-ext = "0.4.0"
in yourCargo.toml
's[dependencies]
section. The library name in#![plugin(peg_syntax_ext)]
remains the same. Consider moving to the build script for compatibility with Rust stable. - The
match_str
variable has been removed in favor of the$(expr)
syntax. Replace[0-9]+ { match_str.parse().unwrap() }
withn:$([0-9]+) { n.parse().unwrap() }
start_pos
andpos
variables have been removed. Use#position
as an expression, which returns ausize
offset into the source string. Replacefoo:x { Span(start_pos, pos, foo) }
withstart:#position foo:x end:#position { Span(start, end, foo) }
- The
\u2029
unicode hex escape syntax has been removed, as it has long-since been removed from Rust. Use\u{2029}
instead. - The previously-undocumented
foo{x,y}
bounded-repeat syntax was replaced withfoo*<x,y>
to avoid a grammar ambiguity (#74).