|
|
|
@ -1,618 +1,4 @@
|
|
|
|
|
Change Log
|
|
|
|
|
==========
|
|
|
|
|
* Commit history: [https://github.com/pegjs/pegjs/commits/master](https://github.com/pegjs/pegjs/commits/master)
|
|
|
|
|
* Previous changelogs: [https://github.com/pegjs/pegjs/tree/master/docs/changelogs](https://github.com/pegjs/pegjs/tree/master/docs/changelogs)
|
|
|
|
|
|
|
|
|
|
This file documents all notable changes to PEG.js. The releases follow [semantic
|
|
|
|
|
versioning](http://semver.org/).
|
|
|
|
|
|
|
|
|
|
0.10.0
|
|
|
|
|
------
|
|
|
|
|
|
|
|
|
|
Released: August 19, 2016
|
|
|
|
|
|
|
|
|
|
### Major Changes
|
|
|
|
|
|
|
|
|
|
* **Parsers can be generated in multiple module formats.** The available
|
|
|
|
|
formats are: CommonJS (the default), AMD, UMD, globals, and bare (not
|
|
|
|
|
available from the command-line).
|
|
|
|
|
|
|
|
|
|
The format can be specified using the `format` option of the `peg.generate`
|
|
|
|
|
function or the `--format` option on the command-line.
|
|
|
|
|
|
|
|
|
|
It is also possible to specify parser dependencies using the `dependencies`
|
|
|
|
|
option of the `peg.generate` function or the `--dependency`/`-d` option on
|
|
|
|
|
the command-line. This is mainly useful for the UMD format, where the
|
|
|
|
|
dependencies are translated into both AMD dependencies and CommonJS
|
|
|
|
|
`require` calls.
|
|
|
|
|
|
|
|
|
|
* **Browser version of PEG.js is now in the UMD format.** This means it will try
|
|
|
|
|
to detect AMD or Node.js/CommonJS module loader and define itself as a
|
|
|
|
|
module. If no loader is found, it will export itself using a global
|
|
|
|
|
variable.
|
|
|
|
|
|
|
|
|
|
* **API polishing.** The `peg.buildParser` function was renamed to
|
|
|
|
|
`peg.generate`. The global variable the browser version of PEG.js is
|
|
|
|
|
available in when no loader is detected was renamed from `PEG` to `peg`.
|
|
|
|
|
|
|
|
|
|
* **CLI improvements.** There is new `--output`/`-o` command-line option which
|
|
|
|
|
allows to specify the output file. The old way of specifying the output file
|
|
|
|
|
using a second argument was removed. To make room for the new `-o` option
|
|
|
|
|
the old one (a shortcut for `--optimize`) was renamed to `-O`. All these
|
|
|
|
|
changes make PEG.js conform to traditional compiler command-line interface.
|
|
|
|
|
|
|
|
|
|
It is now also possible to use `-` as a file name on the command-line (with
|
|
|
|
|
the usual meaning of standard input/output).
|
|
|
|
|
|
|
|
|
|
* **Improved error messages.** Both messages produced by PEG.js and generated
|
|
|
|
|
parsers were improved.
|
|
|
|
|
|
|
|
|
|
* **Duplicate rule definitions are reported as errors.**
|
|
|
|
|
|
|
|
|
|
* **Duplicate labels are reported as errors.**
|
|
|
|
|
|
|
|
|
|
### Minor Changes
|
|
|
|
|
|
|
|
|
|
* Exposed the AST node visitor builder as `peg.compiler.visitor`. This is
|
|
|
|
|
useful mainly for plugins which manipulate the AST.
|
|
|
|
|
|
|
|
|
|
* Exposed the function which builds messages of exceptions produced by
|
|
|
|
|
generated parsers as `SyntaxError.buildMessage`. This is useful mainly for
|
|
|
|
|
customizing these error messages.
|
|
|
|
|
|
|
|
|
|
* The `error` and `expected` functions now accept an optional `location`
|
|
|
|
|
parameter. This allows to customize the location in which the resulting
|
|
|
|
|
syntax error is reported.
|
|
|
|
|
|
|
|
|
|
* Refactored expectations reported in the `expected` property of exceptions
|
|
|
|
|
produced by generated parsers. They are no longer de-duplicated and sorted,
|
|
|
|
|
their format changed to be more machine-readable, and they no longer contain
|
|
|
|
|
human-readable descriptions.
|
|
|
|
|
|
|
|
|
|
* The `found` property of exceptions produced by the `error` function is now
|
|
|
|
|
set to `null`.
|
|
|
|
|
|
|
|
|
|
* Removed access to the parser object in parser code via the `parser`
|
|
|
|
|
variable.
|
|
|
|
|
|
|
|
|
|
* Made handling of optional parameters consistent with ES 2015. Specifically,
|
|
|
|
|
passing `undefined` as a parameter value is now equivalent to not passing
|
|
|
|
|
the parameter at all.
|
|
|
|
|
|
|
|
|
|
* Renamed several compiler passes.
|
|
|
|
|
|
|
|
|
|
* Generated parsers no longer consider `\r`, `\u2028`, and `\u2029` as
|
|
|
|
|
newlines (only `\n` and `\r\n`).
|
|
|
|
|
|
|
|
|
|
* Simplified the arithmetics example grammar.
|
|
|
|
|
|
|
|
|
|
* Switched from `first`/`rest` to `head`/`tail` in PEG.js grammar and example
|
|
|
|
|
grammars.
|
|
|
|
|
|
|
|
|
|
* Started using ESLint instead of JSHint and fixed various problems it found.
|
|
|
|
|
|
|
|
|
|
* Added [contribution
|
|
|
|
|
guidelines](https://github.com/pegjs/pegjs/blob/master/CONTRIBUTING.md).
|
|
|
|
|
|
|
|
|
|
* Removed support for io.js.
|
|
|
|
|
|
|
|
|
|
### Bug Fixes
|
|
|
|
|
|
|
|
|
|
* Fixed `bin/pegjs` so that invoking it with one non-option argument which is
|
|
|
|
|
an extension-less file doesn’t cause that file to be overwritten.
|
|
|
|
|
|
|
|
|
|
* Fixed label scoping so that labels in expressions like `(a:"a")` or `(a:"a"
|
|
|
|
|
b:"b" c:"c")` aren’t visible from the outside.
|
|
|
|
|
|
|
|
|
|
* Fixed escaping of generated JavaScript strings & regexps to also escape DEL
|
|
|
|
|
(U+007F).
|
|
|
|
|
|
|
|
|
|
* Fixed the JSON example grammar to correctly handle characters with code
|
|
|
|
|
points above U+10FF in strings.
|
|
|
|
|
|
|
|
|
|
* Fixed multiple compatibility issues of `tools/impact` on OS X.
|
|
|
|
|
|
|
|
|
|
* Fixed slow deduplication of expectation descriptions.
|
|
|
|
|
|
|
|
|
|
[Complete set of changes](https://github.com/pegjs/pegjs/compare/v0.9.0...v0.10.0)
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
-----
|
|
|
|
|
|
|
|
|
|
Released: December 24, 2013
|
|
|
|
|
|
|
|
|
|
### Big Changes
|
|
|
|
|
|
|
|
|
|
* Completely rewrote the code generator. Among other things, it allows
|
|
|
|
|
optimizing generated parsers for parsing speed or code size using the
|
|
|
|
|
`optimize` option of the `PEG.buildParser` method or the `--optimize`/`-o`
|
|
|
|
|
option on the command-line. All internal identifiers in generated code now
|
|
|
|
|
also have a `peg$` prefix to discourage their use and avoid conflicts.
|
|
|
|
|
[[#35](https://github.com/dmajda/pegjs/issues/35),
|
|
|
|
|
[#92](https://github.com/dmajda/pegjs/issues/92)]
|
|
|
|
|
|
|
|
|
|
* Completely redesigned error handling. Instead of returning `null` inside
|
|
|
|
|
actions to indicate match failure, new `expected` and `error` functions can
|
|
|
|
|
be called to trigger an error. Also, expectation inside the `SyntaxError`
|
|
|
|
|
exceptions are now structured to allow easier machine processing.
|
|
|
|
|
[[#198](https://github.com/dmajda/pegjs/issues/198)]
|
|
|
|
|
|
|
|
|
|
* Implemented a plugin API. The list of plugins to use can be specified using
|
|
|
|
|
the `plugins` option of the `PEG.buildParser` method or the `--plugin`
|
|
|
|
|
option on the command-line. Also implemented the `--extra-options` and
|
|
|
|
|
`--extra-options-file` command-line options, which are mainly useful to pass
|
|
|
|
|
additional options to plugins.
|
|
|
|
|
[[#106](https://github.com/dmajda/pegjs/issues/106)]
|
|
|
|
|
|
|
|
|
|
* Made `offset`, `line` and `column` functions, not variables. They are now
|
|
|
|
|
available in all parsers and return lazily-computed position data. Removed
|
|
|
|
|
now useless `trackLineAndColumn` option of the `PEG.buildParser` method and
|
|
|
|
|
the `--track-line-and-column` option on the command-line.
|
|
|
|
|
|
|
|
|
|
* Added a new `text` function. When called inside an action, it returns the
|
|
|
|
|
text matched by action's expression.
|
|
|
|
|
[[#131](https://github.com/dmajda/pegjs/issues/131)]
|
|
|
|
|
|
|
|
|
|
* Added a new `$` operator. It extracts matched strings from expressions.
|
|
|
|
|
|
|
|
|
|
* The `?` operator now returns `null` on unsuccessful match.
|
|
|
|
|
|
|
|
|
|
* Predicates now always return `undefined`.
|
|
|
|
|
|
|
|
|
|
* Replaced the `startRule` parameter of the `parse` method in generated
|
|
|
|
|
parsers with more generic `options` parameter. The start rule can now be
|
|
|
|
|
specified as the `startRule` option. The `options` parameter can be also
|
|
|
|
|
used to pass custom options to the parser because it is visible as the
|
|
|
|
|
`options` variable inside parser code.
|
|
|
|
|
[[#37](https://github.com/dmajda/pegjs/issues/37)]
|
|
|
|
|
|
|
|
|
|
* The list of allowed start rules of a generated parser now has to be
|
|
|
|
|
specified explicitly using the `allowedStartRules` option of the
|
|
|
|
|
`PEG.buildParser` method or the `--allowed-start-rule` option on the
|
|
|
|
|
command-line. This will make certain optimizations like rule inlining easier
|
|
|
|
|
in the future.
|
|
|
|
|
|
|
|
|
|
* Removed the `toSource` method of generated parsers and introduced a new
|
|
|
|
|
`output` option of the `PEG.buildParser` method. It allows callers to
|
|
|
|
|
specify whether they want to get back the parser object or its source code.
|
|
|
|
|
|
|
|
|
|
* The source code is now a valid npm package. This makes using development
|
|
|
|
|
versions easier.
|
|
|
|
|
[[#32](https://github.com/dmajda/pegjs/issues/32)]
|
|
|
|
|
|
|
|
|
|
* Generated parsers are now ~25% faster and ~62%/~3% smaller (when optimized
|
|
|
|
|
for size/speed) than those generated by 0.7.0.
|
|
|
|
|
|
|
|
|
|
* Requires Node.js 0.8.0+.
|
|
|
|
|
|
|
|
|
|
### Small Changes
|
|
|
|
|
|
|
|
|
|
* `bin/pegjs` now outputs just the parser source if the value of the
|
|
|
|
|
`--export-var` option is empty. This makes embedding generated parsers into
|
|
|
|
|
other files easier.
|
|
|
|
|
[[#143](https://github.com/dmajda/pegjs/issues/143)]
|
|
|
|
|
|
|
|
|
|
* Changed the value of the `name` property of `PEG.GrammarError` instances
|
|
|
|
|
from “PEG.GrammarError” to just “GrammarError”. This better reflects the
|
|
|
|
|
fact that PEG.js can get required with different variable name than `PEG`.
|
|
|
|
|
|
|
|
|
|
* Setup prototype chain for `PEG.GrammarError` correctly.
|
|
|
|
|
|
|
|
|
|
* Setup prototype chain for `SyntaxError` in generated parsers correctly.
|
|
|
|
|
|
|
|
|
|
* Fixed error messages in certain cases with trailing input
|
|
|
|
|
[[#119](https://github.com/dmajda/pegjs/issues/119)]
|
|
|
|
|
|
|
|
|
|
* Fixed code generated for classes starting with `\^`.
|
|
|
|
|
[[#125](https://github.com/dmajda/pegjs/issues/125)]
|
|
|
|
|
|
|
|
|
|
* Fixed too eager proxy rules removal.
|
|
|
|
|
[[#137](https://github.com/dmajda/pegjs/issues/137)]
|
|
|
|
|
|
|
|
|
|
* Added a license to all vendored libraries.
|
|
|
|
|
[[#207](https://github.com/dmajda/pegjs/issues/207)]
|
|
|
|
|
|
|
|
|
|
* Converted the test suite from QUnit to Jasmine, cleaning it up on the way.
|
|
|
|
|
|
|
|
|
|
* Travis CI integration.
|
|
|
|
|
|
|
|
|
|
* Various internal code improvements and fixes.
|
|
|
|
|
|
|
|
|
|
* Various generated code improvements and fixes.
|
|
|
|
|
|
|
|
|
|
* Various example grammar improvements and fixes.
|
|
|
|
|
|
|
|
|
|
* Improved `README.md`.
|
|
|
|
|
|
|
|
|
|
* Converted `CHANGELOG` to Markdown.
|
|
|
|
|
|
|
|
|
|
0.7.0
|
|
|
|
|
-----
|
|
|
|
|
|
|
|
|
|
Released: April 18, 2012
|
|
|
|
|
|
|
|
|
|
### Big Changes
|
|
|
|
|
|
|
|
|
|
* Added ability to pass options to `PEG.buildParser`.
|
|
|
|
|
|
|
|
|
|
* Implemented the `trackLineAndColumn` option for `PEG.buildParser` (together
|
|
|
|
|
with the `--track-line-and-column` command-line option). It makes the
|
|
|
|
|
generated parser track line and column during parsing. These are made
|
|
|
|
|
available inside actions and predicates as `line` and `column` variables.
|
|
|
|
|
|
|
|
|
|
* Implemented the `cache` option for `PEG.buildParser` (together with the
|
|
|
|
|
`--cache` command-line option). This option enables/disables the results
|
|
|
|
|
cache in generated parsers, resulting in dramatic speedup when the cache is
|
|
|
|
|
disabled (the default now). The cost is breaking the linear parsing time
|
|
|
|
|
guarantee.
|
|
|
|
|
|
|
|
|
|
* The current parse position is visible inside actions and predicates as the
|
|
|
|
|
`offset` variable.
|
|
|
|
|
|
|
|
|
|
* Exceptions thrown by the parser have `offset`, `expected` and `found`
|
|
|
|
|
properties containing machine-readable information about the parse failure
|
|
|
|
|
(based on a patch by Marcin Stefaniuk).
|
|
|
|
|
|
|
|
|
|
* Semantic predicates have access to preceding labels.
|
|
|
|
|
[[GH-69](https://github.com/dmajda/pegjs/issues/69)]
|
|
|
|
|
|
|
|
|
|
* Implemented case-insensitive literal and class matching.
|
|
|
|
|
[[GH-34](https://github.com/dmajda/pegjs/issues/34)]
|
|
|
|
|
|
|
|
|
|
* Rewrote the code generator — split some computations into separate passes
|
|
|
|
|
and based it on a proper templating system (Codie).
|
|
|
|
|
|
|
|
|
|
* Rewrote variable handling in generated parsers in a stack-like fashion,
|
|
|
|
|
simplifying the code and making the parsers smaller and faster.
|
|
|
|
|
|
|
|
|
|
* Adapted to Node.js 0.6.6+ (no longer supported in older versions).
|
|
|
|
|
|
|
|
|
|
* Dropped support for IE < 8.
|
|
|
|
|
|
|
|
|
|
* As a result of several optimizations, parsers generated by 0.7.0 are ~6.4
|
|
|
|
|
times faster and ~19% smaller than those generated by 0.6.2 (as reported by
|
|
|
|
|
`/tools/impact`).
|
|
|
|
|
|
|
|
|
|
### Small Changes
|
|
|
|
|
|
|
|
|
|
* Fixed reported error position when part of the input is not consumed.
|
|
|
|
|
[[GH-48](https://github.com/dmajda/pegjs/issues/48)]
|
|
|
|
|
|
|
|
|
|
* Fixed incorrect disjunction operator in `computeErrorPosition` (original
|
|
|
|
|
patch by Wolfgang Kluge).
|
|
|
|
|
|
|
|
|
|
* Fixed regexp for detecting command-line options in `/bin/pegjs`.
|
|
|
|
|
[[GH-51](https://github.com/dmajda/pegjs/issues/51)]
|
|
|
|
|
|
|
|
|
|
* Generate more efficient code for empty literals (original patch by Wolfgang
|
|
|
|
|
Kluge).
|
|
|
|
|
|
|
|
|
|
* Fixed comment typos (patches by Wolfgang Kluge and Jason Davies).
|
|
|
|
|
[[GH-59](https://github.com/dmajda/pegjs/issues/59)]
|
|
|
|
|
|
|
|
|
|
* Fixed a typo in JavaScript example grammar.
|
|
|
|
|
[[GH-62](https://github.com/dmajda/pegjs/issues/62)]
|
|
|
|
|
|
|
|
|
|
* Made copy & paste inclusion of the PEG.js library into another code easier
|
|
|
|
|
by changing how the library is exported.
|
|
|
|
|
|
|
|
|
|
* Improved the copyright comment and the “Generated by...” header.
|
|
|
|
|
|
|
|
|
|
* Replaced `Jakefile` with `Makefile`.
|
|
|
|
|
|
|
|
|
|
* Added `make hint` task that checks all JavaScript files using JSHint and
|
|
|
|
|
resolved all issues it reported. All JavaScript files and also generated
|
|
|
|
|
parsers are JSHint-clean now.
|
|
|
|
|
|
|
|
|
|
* Fixed output printed during test failures (expected value was being printed
|
|
|
|
|
instead of the actual one). Original patch by Wolfgang Kluge.
|
|
|
|
|
|
|
|
|
|
* Added a `/tools/impact` script to measure speed and size impact of commits.
|
|
|
|
|
|
|
|
|
|
* Various generated code improvements and fixes.
|
|
|
|
|
|
|
|
|
|
* Various internal code improvements and fixes.
|
|
|
|
|
|
|
|
|
|
* Improved `README.md`.
|
|
|
|
|
|
|
|
|
|
0.6.2
|
|
|
|
|
-----
|
|
|
|
|
|
|
|
|
|
Released: August 20, 2011
|
|
|
|
|
|
|
|
|
|
### Small Changes
|
|
|
|
|
|
|
|
|
|
* Reset parser position when action returns `null`.
|
|
|
|
|
|
|
|
|
|
* Fixed typo in JavaScript example grammar.
|
|
|
|
|
|
|
|
|
|
0.6.1
|
|
|
|
|
-----
|
|
|
|
|
|
|
|
|
|
Released: April 14, 2011
|
|
|
|
|
|
|
|
|
|
### Small Changes
|
|
|
|
|
|
|
|
|
|
* Use `--ascii` option when generating a minified version.
|
|
|
|
|
|
|
|
|
|
0.6.0
|
|
|
|
|
-----
|
|
|
|
|
|
|
|
|
|
Released: April 14, 2011
|
|
|
|
|
|
|
|
|
|
### Big Changes
|
|
|
|
|
|
|
|
|
|
* Rewrote the command-line mode to be based on Node.js instead of Rhino — no
|
|
|
|
|
more Java dependency. This also means that PEG.js is available as a Node.js
|
|
|
|
|
package and can be required as a module.
|
|
|
|
|
|
|
|
|
|
* Version for the browser is built separately from the command-line one in two
|
|
|
|
|
flavors (normal and minified).
|
|
|
|
|
|
|
|
|
|
* Parser variable name is no longer required argument of `bin/pegjs` — it is
|
|
|
|
|
`module.exports` by default and can be set using the `-e`/`--export-var`
|
|
|
|
|
option. This makes parsers generated by `/bin/pegjs` Node.js modules by
|
|
|
|
|
default.
|
|
|
|
|
|
|
|
|
|
* Added ability to start parsing from any grammar rule.
|
|
|
|
|
|
|
|
|
|
* Added several compiler optimizations — 0.6 is ~12% faster than 0.5.1 in the
|
|
|
|
|
benchmark on V8.
|
|
|
|
|
|
|
|
|
|
### Small Changes
|
|
|
|
|
|
|
|
|
|
* Split the source code into multiple files combined together using a build
|
|
|
|
|
system.
|
|
|
|
|
|
|
|
|
|
* Jake is now used instead of Rake for build scripts — no more Ruby
|
|
|
|
|
dependency.
|
|
|
|
|
|
|
|
|
|
* Test suite can be run from the command-line.
|
|
|
|
|
|
|
|
|
|
* Benchmark suite can be run from the command-line.
|
|
|
|
|
|
|
|
|
|
* Benchmark browser runner improvements (users can specify number of runs,
|
|
|
|
|
benchmarks are run using `setTimeout`, table is centered and fixed-width).
|
|
|
|
|
|
|
|
|
|
* Added PEG.js version to “Generated by...” line in generated parsers.
|
|
|
|
|
|
|
|
|
|
* Added PEG.js version information and homepage header to `peg.js`.
|
|
|
|
|
|
|
|
|
|
* Generated code improvements and fixes.
|
|
|
|
|
|
|
|
|
|
* Internal code improvements and fixes.
|
|
|
|
|
|
|
|
|
|
* Rewrote `README.md`.
|
|
|
|
|
|
|
|
|
|
0.5.1
|
|
|
|
|
-----
|
|
|
|
|
|
|
|
|
|
Released: November 28, 2010
|
|
|
|
|
|
|
|
|
|
### Small Changes
|
|
|
|
|
|
|
|
|
|
* Fixed a problem where “SyntaxError: Invalid range in character class.” error
|
|
|
|
|
appeared when using command-line version on Widnows
|
|
|
|
|
([GH-13](https://github.com/dmajda/pegjs/issues/13)).
|
|
|
|
|
|
|
|
|
|
* Fixed wrong version reported by `bin/pegjs --version`.
|
|
|
|
|
|
|
|
|
|
* Removed two unused variables in the code.
|
|
|
|
|
|
|
|
|
|
* Fixed incorrect variable name on two places.
|
|
|
|
|
|
|
|
|
|
0.5
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
Released: June 10, 2010
|
|
|
|
|
|
|
|
|
|
### Big Changes
|
|
|
|
|
|
|
|
|
|
* Syntax change: Use labeled expressions and variables instead of `$1`, `$2`,
|
|
|
|
|
etc.
|
|
|
|
|
|
|
|
|
|
* Syntax change: Replaced `:` after a rule name with `=`.
|
|
|
|
|
|
|
|
|
|
* Syntax change: Allow trailing semicolon (`;`) for rules
|
|
|
|
|
|
|
|
|
|
* Semantic change: Start rule of the grammar is now implicitly its first rule.
|
|
|
|
|
|
|
|
|
|
* Implemented semantic predicates.
|
|
|
|
|
|
|
|
|
|
* Implemented initializers.
|
|
|
|
|
|
|
|
|
|
* Removed ability to change the start rule when generating the parser.
|
|
|
|
|
|
|
|
|
|
* Added several compiler optimizations — 0.5 is ~11% faster than 0.4 in the
|
|
|
|
|
benchmark on V8.
|
|
|
|
|
|
|
|
|
|
### Small Changes
|
|
|
|
|
|
|
|
|
|
* `PEG.buildParser` now accepts grammars only in string format.
|
|
|
|
|
|
|
|
|
|
* Added “Generated by ...” message to the generated parsers.
|
|
|
|
|
|
|
|
|
|
* Formatted all grammars more consistently and transparently.
|
|
|
|
|
|
|
|
|
|
* Added notes about ECMA-262, 5th ed. compatibility to the JSON example
|
|
|
|
|
grammar.
|
|
|
|
|
|
|
|
|
|
* Guarded against redefinition of `undefined`.
|
|
|
|
|
|
|
|
|
|
* Made `bin/pegjs` work when called via a symlink
|
|
|
|
|
([issue #1](https://github.com/dmajda/pegjs/issues/1)).
|
|
|
|
|
|
|
|
|
|
* Fixed bug causing incorrect error messages
|
|
|
|
|
([issue #2](https://github.com/dmajda/pegjs/issues/2)).
|
|
|
|
|
|
|
|
|
|
* Fixed error message for invalid character range.
|
|
|
|
|
|
|
|
|
|
* Fixed string literal parsing in the JavaScript grammar.
|
|
|
|
|
|
|
|
|
|
* Generated code improvements and fixes.
|
|
|
|
|
|
|
|
|
|
* Internal code improvements and fixes.
|
|
|
|
|
|
|
|
|
|
* Improved `README.md`.
|
|
|
|
|
|
|
|
|
|
0.4
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
Released: April 17, 2010
|
|
|
|
|
|
|
|
|
|
### Big Changes
|
|
|
|
|
|
|
|
|
|
* Improved IE compatibility — IE6+ is now fully supported.
|
|
|
|
|
|
|
|
|
|
* Generated parsers are now standalone (no runtime is required).
|
|
|
|
|
|
|
|
|
|
* Added example grammars for JavaScript, CSS and JSON.
|
|
|
|
|
|
|
|
|
|
* Added a benchmark suite.
|
|
|
|
|
|
|
|
|
|
* Implemented negative character classes (e.g. `[^a-z]`).
|
|
|
|
|
|
|
|
|
|
* Project moved from BitBucket to GitHub.
|
|
|
|
|
|
|
|
|
|
### Small Changes
|
|
|
|
|
|
|
|
|
|
* Code generated for the character classes is now regexp-based (= simpler and
|
|
|
|
|
more scalable).
|
|
|
|
|
|
|
|
|
|
* Added `\uFEFF` (BOM) to the definition of whitespace in the metagrammar.
|
|
|
|
|
|
|
|
|
|
* When building a parser, left-recursive rules (both direct and indirect) are
|
|
|
|
|
reported as errors.
|
|
|
|
|
|
|
|
|
|
* When building a parser, missing rules are reported as errors.
|
|
|
|
|
|
|
|
|
|
* Expected items in the error messages do not contain duplicates and they are
|
|
|
|
|
sorted.
|
|
|
|
|
|
|
|
|
|
* Fixed several bugs in the example arithmetics grammar.
|
|
|
|
|
|
|
|
|
|
* Converted `README` to GitHub Flavored Markdown and improved it.
|
|
|
|
|
|
|
|
|
|
* Added `CHANGELOG`.
|
|
|
|
|
|
|
|
|
|
* Internal code improvements.
|
|
|
|
|
|
|
|
|
|
0.3
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
Released: March 14, 2010
|
|
|
|
|
|
|
|
|
|
* Wrote `README`.
|
|
|
|
|
|
|
|
|
|
* Bootstrapped the grammar parser.
|
|
|
|
|
|
|
|
|
|
* Metagrammar recognizes JavaScript-like comments.
|
|
|
|
|
|
|
|
|
|
* Changed standard grammar extension from `.peg` to `.pegjs` (it is more
|
|
|
|
|
specific).
|
|
|
|
|
|
|
|
|
|
* Simplified the example arithmetics grammar + added comment.
|
|
|
|
|
|
|
|
|
|
* Fixed a bug with reporting of invalid ranges such as `[b-a]` in the
|
|
|
|
|
metagrammar.
|
|
|
|
|
|
|
|
|
|
* Fixed `--start` vs. `--start-rule` inconsistency between help and actual
|
|
|
|
|
option processing code.
|
|
|
|
|
|
|
|
|
|
* Avoided ugliness in QUnit output.
|
|
|
|
|
|
|
|
|
|
* Fixed typo in help: `parserVar` → `parser_var`.
|
|
|
|
|
|
|
|
|
|
* Internal code improvements.
|
|
|
|
|
|
|
|
|
|
0.2.1
|
|
|
|
|
-----
|
|
|
|
|
|
|
|
|
|
Released: March 8, 2010
|
|
|
|
|
|
|
|
|
|
* Added `pegjs-` prefix to the name of the minified runtime file.
|
|
|
|
|
|
|
|
|
|
0.2
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
Released: March 8, 2010
|
|
|
|
|
|
|
|
|
|
* Added `Rakefile` that builds minified runtime using Google Closure Compiler
|
|
|
|
|
API.
|
|
|
|
|
|
|
|
|
|
* Removed trailing commas in object initializers (Google Closure does not like
|
|
|
|
|
them).
|
|
|
|
|
|
|
|
|
|
0.1
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
Released: March 8, 2010
|
|
|
|
|
|
|
|
|
|
* Initial release.
|
|
|
|
|
> This is a work in progress changelog for the next release _(currently v0.11)_.
|
|
|
|
|