Merge pull request #216 from nikomatsakis/release-0.13.0

Release 0.13.0
This commit is contained in:
Niko Matsakis 2017-04-07 06:28:25 -04:00 committed by GitHub
commit 2d3de75fcf
11 changed files with 76 additions and 1131 deletions

View File

@ -1,4 +1,41 @@
# master (not yet released)
# Version 0.13
This is a bug release for LALRPOP. First, we have two major improvements to the
generated lexer:
- The lexer now generates code that uses the `regex` crate. This
results in **far** less code than the older style, and seems to
preserve performance.
- The lexer now supports custom priorities for regular expression tokens,
making it possible to support case-insensitive keywords.
- See the [calculator2b example] for details.
Second, we have a **beta release** of the new lane-table based
LR-table generation. Lane tables handle the full set of LR(1)
grammars but typically reduce **much** smaller state tables. This
feature eliminates the need to manually mark grammars as `#[LALR]`.
Lane tables are **not** on by default; you can enable them by setting
`LALRPOP_LANE_TABLE=enabled` in your environment (use
`std::env::set_var` in your `build.rs`).
[calculator2b example]: https://github.com/nikomatsakis/lalrpop/blob/master/doc/tutorial.md#calculator2b
Finally, the `lalrpop` executable now has the ability to generate
standalone reports (`--report`).
Fixed bugs:
- Fix #157: We now recognize single quote (`'`) properly in our tokenizer.
- Fix #179: Fix bug in recursive ascent code generation.
Thanks to the following contributors to this release:
- @ahmedcharles
- @king6cong
- @nikomatsakis
- @nixpulvis
- @wagenet
- @wieczyk
# Version 0.12.5

View File

@ -1,17 +1,17 @@
[package]
name = "calculator"
version = "0.12.5"
version = "0.13.0"
authors = ["Niko Matsakis <niko@alum.mit.edu>"]
build = "build.rs" # <-- We added this and everything after!
workspace = "../.."
[build-dependencies.lalrpop]
version = "0.12.5"
version = "0.13.0"
path = "../../lalrpop"
[dependencies]
regex = "0.2.1"
[dependencies.lalrpop-util]
version = "0.12.5"
version = "0.13.0"
path = "../../lalrpop-util"

View File

@ -9,6 +9,9 @@ path = "../../../lalrpop"
[dependencies]
docopt = "0.7"
lalrpop-util = { version = "0.12.5", path = "../../../lalrpop-util" }
rustc-serialize = "0.3"
regex = "0.2.1"
[dependencies.lalrpop-util]
version = "0.13.0"
path = "../../../lalrpop-util"

View File

@ -1,13 +1,13 @@
[package]
name = "whitespace"
version = "0.12.5"
version = "0.13.0"
authors = ["Mako <jlauve@rsmw.net>"]
build = "build.rs"
[build-dependencies.lalrpop]
version = "0.12.5"
version = "0.13.0"
path = "../../lalrpop"
[dependencies.lalrpop-util]
version = "0.12.5"
version = "0.13.0"
path = "../../lalrpop-util"

View File

@ -1,6 +1,6 @@
[package]
name = "lalrpop-intern"
version = "0.12.5" # LALRPOP
version = "0.13.0" # LALRPOP
description = "Simple string interner used by LALRPOP"
repository = "https://github.com/nikomatsakis/lalrpop"
license = "Apache-2.0/MIT"

View File

@ -1,6 +1,6 @@
[package]
name = "lalrpop-snap"
version = "0.12.5" # LALRPOP
version = "0.13.0" # LALRPOP
description = "snapshot of LALRPOP for use in bootstrapping"
repository = "https://github.com/nikomatsakis/lalrpop"
license = "Apache-2.0/MIT"
@ -30,8 +30,8 @@ rand = "0.3"
[dependencies.lalrpop-util]
path = "../lalrpop-util"
version = "0.12.5" # LALRPOP
version = "0.13.0" # LALRPOP
[dependencies.lalrpop-intern]
path = "../lalrpop-intern"
version = "0.12.5" # LALRPOP
version = "0.13.0" # LALRPOP

View File

@ -1,6 +1,6 @@
[package]
name = "lalrpop-test"
version = "0.12.5" # LALRPOP
version = "0.13.0" # LALRPOP
authors = ["Niko Matsakis <niko@alum.mit.edu>"]
license = "Apache-2.0/MIT"
build = "build.rs"

File diff suppressed because it is too large Load Diff

View File

@ -3,6 +3,6 @@ name = "lalrpop-util"
description = "Runtime library for parsers generated by LALRPOP"
repository = "https://github.com/nikomatsakis/lalrpop"
license = "Apache-2.0/MIT"
version = "0.12.5" # LALRPOP
version = "0.13.0" # LALRPOP
authors = ["Niko Matsakis <niko@alum.mit.edu>"]
workspace = ".."

View File

@ -1,6 +1,6 @@
[package]
name = "lalrpop"
version = "0.12.5" # LALRPOP
version = "0.13.0" # LALRPOP
description = "convenient LR(1) parser generator"
repository = "https://github.com/nikomatsakis/lalrpop"
readme = "../README.md"
@ -33,12 +33,12 @@ rand = "0.3"
[dependencies.lalrpop-util]
path = "../lalrpop-util"
version = "0.12.5" # LALRPOP
version = "0.13.0" # LALRPOP
[dependencies.lalrpop-intern]
path = "../lalrpop-intern"
version = "0.12.5" # LALRPOP
version = "0.13.0" # LALRPOP
[build-dependencies.lalrpop-snap]
path = "../lalrpop-snap"
version = "0.12.5" # LALRPOP
version = "0.13.0" # LALRPOP

View File

@ -8,5 +8,23 @@ if [ "$1" == "" ]; then
exit 1
fi
VERSION=$(
ls lalrpop*/Cargo.toml | \
xargs grep "# LALRPOP$" | \
perl -p -e 's/.*version = "([0-9.]+)" # LALRPOP$/$1/' |
sort |
uniq)
if [ $(echo $VERSION | wc -w) != 1 ]; then
echo "Error: inconsistent versions detected across Cargo.toml files!"
echo "$VERSION"
exit 1
fi
echo "Found consistent version $VERSION"
perl -p -i -e 's/version *= *"[0-9.]+" # LALRPOP$/version = "'$1'" # LALRPOP/' \
$(ls lalrpop*/Cargo.toml)
perl -p -i -e 's/version *= *"'$VERSION'"$/version = "'$1'"/' \
$(find doc -name Cargo.toml)