mirror of
https://github.com/fluencelabs/lalrpop
synced 2025-03-15 08:20:50 +00:00
96 lines
3.3 KiB
Markdown
96 lines
3.3 KiB
Markdown
# master (not yet released)
|
|
|
|
# Version 0.12
|
|
|
|
**Enabled a new table-driven code-generator by default.** This generates
|
|
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;
|
|
```
|
|
|
|
Also, **the syntax for requesting LALR-generation has changed** to use
|
|
an annotation:
|
|
|
|
```
|
|
#[LALR] grammar;
|
|
```
|
|
|
|
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)!
|
|
|
|
# Version 0.11
|
|
|
|
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).
|
|
|
|
Optimized LR(1) construction time by approximately 5x.
|
|
|
|
Improved handling of location tokens `@L` and `@R` so that they can be
|
|
freely used without ever causing parse conflicts.
|
|
|
|
# Version 0.10
|
|
|
|
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.
|
|
|
|
Added a standalone LALRPOP executable.
|
|
|
|
We no longer generate incomplete files when grammar generation fails
|
|
(Issue #57).
|
|
|
|
# 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
|
|
|
|
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.
|
|
|
|
# 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.
|