pegjs/spec
David Majda 6ce97457bf Fix left recursion detection
So far, left recursion detector assumed that left recursion occurs only
when the recursive rule is at the very left-hand side of rule's
expression:

  start = start

This didn't catch cases like this:

  start = "a"? start

In general, if a rule reference can be reached without consuming any
input, it can lead to left recursion. This commit fixes the detector to
consider that.

Fixes #190.
2015-04-01 10:10:51 +02:00
..
api Implement basic support for tracing 2015-03-30 14:00:19 +02:00
behavior Make labels behave like block-scoped variables 2015-02-13 14:10:32 +01:00
unit Fix left recursion detection 2015-04-01 10:10:51 +02:00
vendor/jasmine Upgrade jasmine and jasmine-node 2013-08-22 09:07:19 +02:00
helpers.js Specs cleanup: Split specs into unit and API specs 2014-05-23 12:57:41 +02:00
index.html Behavior specs cleanup: Move spec/api/generated-parser-behavior.spec.js 2015-01-12 16:39:56 +01:00
README.md Use sentence case consistently in {spec,benchmark}/README.md headers 2014-05-10 16:40:39 +02:00

PEG.js Spec Suite

This is the PEG.js spec suite. It ensures PEG.js works correctly. All specs should always pass on all supported platforms.

Running in Node.js

All commands in the following steps need to be executed in PEG.js root directory (one level up from this one).

  1. Install all PEG.js dependencies, including development ones:

    $ npm install

  2. Execute the spec suite:

    $ make spec

  3. Watch the specs pass (or fail).

Running in the Browser

All commands in the following steps need to be executed in PEG.js root directory (one level up from this one).

  1. Make sure you have Node.js and Python installed.

  2. Install all PEG.js dependencies, including development ones:

    $ npm install

  3. Build browser version of PEG.js:

    $ make browser

  4. Serve PEG.js root directory using a web server:

    $ python -m SimpleHTTPServer

  5. Point your browser to the spec suite.

  6. Watch the specs pass (or fail).