|
|
|
@ -4,6 +4,75 @@ Change Log
|
|
|
|
|
This file documents all notable changes to PEG.js. The releases follow [semantic
|
|
|
|
|
versioning](http://semver.org/).
|
|
|
|
|
|
|
|
|
|
0.9.0
|
|
|
|
|
-----
|
|
|
|
|
|
|
|
|
|
Released: August 30, 2015
|
|
|
|
|
|
|
|
|
|
### Major Changes
|
|
|
|
|
|
|
|
|
|
* **Tracing support.** Parsers can be compiled with support for tracing their
|
|
|
|
|
progress, which can help debugging complex grammars. This feature is
|
|
|
|
|
experimental and is expected to evolve over time as experience is gained.
|
|
|
|
|
[More details](https://github.com/pegjs/pegjs/commit/da57118a43a904f753d44d407994cf0b36358adc)
|
|
|
|
|
|
|
|
|
|
* **Infinite loop detection.** Grammar constructs that could cause infinite
|
|
|
|
|
loops in generated parsers are detected during compilation and cause errors.
|
|
|
|
|
|
|
|
|
|
* **Improved location information API.** The `line`, `column`, and `offset`
|
|
|
|
|
functions available in parser code were replaced by a single `location`
|
|
|
|
|
function which returns an object describing the current location. Similarly,
|
|
|
|
|
the `line`, `column`, and `offset` properties of exceptions were replaced by
|
|
|
|
|
a single `location` property. The location is no longer a single point but a
|
|
|
|
|
character range, which is meaningful mainly in actions where the range
|
|
|
|
|
covers action’s expression.
|
|
|
|
|
[More details](https://github.com/pegjs/pegjs/compare/e75f21dc8f0e66b3d87c4c19b3fcb8f89d9c3acd...eaca5f0acf97b66ef141fed84aa95d4e72e33757)
|
|
|
|
|
|
|
|
|
|
* **Improved error reporting.** All exceptions thrown when generating a parser
|
|
|
|
|
have associated location information. And all exceptions thrown by generated
|
|
|
|
|
parser and PEG.js itself have a stack trace (the `stack` property) in
|
|
|
|
|
environments that support `Error.captureStackTrace`.
|
|
|
|
|
|
|
|
|
|
* **Strict mode code**. All PEG.js and generated parser code is written using
|
|
|
|
|
[JavaScript strict mode](https://developer.mozilla.org/cs/docs/Web/JavaScript/Reference/Strict_mode).
|
|
|
|
|
|
|
|
|
|
### Minor Changes
|
|
|
|
|
|
|
|
|
|
* Labels behave like block-scoped variables. This means parser code can see
|
|
|
|
|
labels defined outside expressions containing code.
|
|
|
|
|
|
|
|
|
|
* Empty sequences are no longer allowed.
|
|
|
|
|
|
|
|
|
|
* Label names can’t be JavaScript reserved words.
|
|
|
|
|
|
|
|
|
|
* Rule and label names can contain Unicode characters like in JavaScript.
|
|
|
|
|
|
|
|
|
|
* Rules have to be separated either by `;` or a newline (until now, any
|
|
|
|
|
whitespace was enough).
|
|
|
|
|
|
|
|
|
|
* The PEG.js grammar and all the example grammars were completely rewritten.
|
|
|
|
|
This rewrite included a number of cleanups, formatting changes, naming
|
|
|
|
|
changes, and bug fixes.
|
|
|
|
|
|
|
|
|
|
* The parser object can now be accessed as `parser` in parser code.
|
|
|
|
|
|
|
|
|
|
* Location information computation is faster.
|
|
|
|
|
|
|
|
|
|
* Added support for Node.js >= 0.10.x, io.js, and Edge. Removed support for
|
|
|
|
|
Node.js < 0.10.x.
|
|
|
|
|
|
|
|
|
|
### Bug Fixes
|
|
|
|
|
|
|
|
|
|
* Fixed left recursion detector which missed many cases.
|
|
|
|
|
|
|
|
|
|
* Fixed escaping of U+0100—U+107F and U+1000—U+107F in generated code and
|
|
|
|
|
error messages.
|
|
|
|
|
|
|
|
|
|
* Renamed `parse` and `SyntaxError` to `peg$parse` and `peg$SyntaxError` to
|
|
|
|
|
mark them as internal identifiers.
|
|
|
|
|
|
|
|
|
|
[Complete set of changes](https://github.com/pegjs/pegjs/compare/v0.8.0...v0.9.0)
|
|
|
|
|
|
|
|
|
|
0.8.0
|
|
|
|
|
-----
|
|
|
|
|
|
|
|
|
|