2016-08-05 05:27:49 -04:00
# master (not yet released)
2016-02-28 05:36:50 -05:00
2016-08-05 05:27:49 -04:00
# Version 0.12
**Enabled a new table-driven code-generator by default.** This generates
2016-08-02 21:44:15 -04:00
less code than the older recursive-ascent-based generation scheme, but
may parse less efficiently. To go back to the old scheme, annotate
the grammar declaration:
```
#[recursive_ascent] grammar;
```
2016-08-05 05:27:49 -04:00
Also, **the syntax for requesting LALR-generation has changed** to use
2016-08-02 21:44:15 -04:00
an annotation:
```
#[LALR] grammar;
```
2016-08-05 05:27:49 -04:00
We no longer **emit module-level attributes** , which means that unused
imports in your .lalrpop file may start getting warnings. [Thanks
@dflemstr !](https://github.com/nikomatsakis/lalrpop/pull/118)
An overflow bug in LALRPOP was
fixed. [Thanks @larsluthman! ](https://github.com/nikomatsakis/lalrpop/pull/120 )
We no longer depend on `time` , but now use
`std::time` . [Thanks @serprex! ](https://github.com/nikomatsakis/lalrpop/pull/121 )
There is now a `Configuration` object for use in your `build.rs`
scripts. And,
[thanks to @dflemstr! ](https://github.com/nikomatsakis/lalrpop/pull/108 ),
it permits you to configure the directory where LALRPOP output is
generated.
Fixed a bug in the LALRPOP option
parsing. [Thanks @Nemikolh! ](https://github.com/nikomatsakis/lalrpop/pull/106 )
Various typos and small corrections. Thanks [@reuben ](https://github.com/nikomatsakis/lalrpop/pull/1103 ) and [@ashleygwilliams ](https://github.com/nikomatsakis/lalrpop/pull/116 )!
2016-02-28 05:36:50 -05:00
# Version 0.11
2016-02-19 05:50:21 -05:00
2016-02-22 13:14:20 -05:00
Updated to use the `regex-syntax` crate for regular expression
parsing instead of rolling our own parser. This means we can now
support the [same regular expression syntax as the regex crate ](https://doc.rust-lang.org/regex/regex/index.html#syntax ),
and in particular can support unicode character classes like `\p{Greek}` .
Note that some regex features -- such as non-greedy repetition and
named capture groups -- are still not supported (or just not meaningful).
2016-02-24 06:07:28 -05:00
Optimized LR(1) construction time by approximately 5x.
2016-02-25 05:59:32 -05:00
Improved handling of location tokens `@L` and `@R` so that they can be
freely used without ever causing parse conflicts.
2016-02-19 05:50:21 -05:00
# Version 0.10
2016-01-23 11:43:50 -05:00
2016-02-18 04:08:02 -05:00
Major update to LALRPOP error messages in cases of shift/reduce and
reduce/reduce conflicts. The messages now try to explain the problem
in terms of your grammar, as well as diagnosing common problem
scenarios and suggesting solutions.
2016-02-19 04:09:29 -05:00
Added a standalone LALRPOP executable.
2016-02-19 04:26:32 -05:00
We no longer generate incomplete files when grammar generation fails
(Issue #57 ).
2016-01-23 11:37:02 -05:00
# Version 0.9
Miscellaneous bug fixes, mostly. Processing for a `build.rs` file now
starts from the project directory, rather than being hardcoded to
start from `src` .
# Version 0.8
2015-10-15 13:11:12 -04:00
2015-10-25 07:34:08 -04:00
Add support for inlining nonterminals. Nonterminals can now be
annotated with `#[inline]` . If you do so, each use of the nonterminal
will be inlined into its place. This can be very helpful in addressing
shift-reduce or reduce-reduce conflicts, at the cost of a larger
grammar. We now inline `Foo*` , `Foo?` , and `(Foo Bar)` nonterminals by
default.
2015-10-15 12:34:16 -04:00
# Version 0.7
This is mostly a bug-fix release.
Various minor issues were addressed:
- Issue #25: Unbalanced parens in string literals appearing in code now work properly.
- Issue #32: Regular expression parsing consumed infinite memory when a `.` appeared.
- Issue #34: Automatic tokenizer generation did not play well with generic type parameters.
# Older versions
I hadn't yet started writing release notes, sorry.