Options
All
  • Public
  • Public/Protected
  • All
Menu

Chevrotain

npm version Build Status Coverage Status Dependency status devDependency Status

Chevrotain

Chevrotain is a Javascript parsing DSL for building fault tolerant recursive decent parsers.

Chevrotain is NOT a parser generator. it solves the same kind of problems as a parser generator, just without any code generation phase.

---> Try it online <---

Features

  • Lexer engine based on RexExps.

    • Supports Token location tracking.
    • Supports Token skipping (whitespace/comments/...).
    • Allows prioritising shorter matches (Keywords vs Identifiers).
    • No code generation The Lexer does not require any code generation phase.
  • Parsing DSL for creating the parsing rules.

    • No code generation
      • The DSL is just javascript not an external language, what is written is what will be run.
      • Speeds up development,
      • Makes debugging trivial.
      • Allows great flexibility for inserting custom Parser actions.
    • Error Reporting with full location information.
    • Strong Error Recovery/fault tolerance capabilities based on Antlr3's algorithms.
    • Automatic lookahead calculation for LL(1) grammars.
    • Supports Custom lookahead logic for LL(k) grammars.
    • Backtracking support.
  • High performance.

  • Grammar Reflection/Introspection

    • A Parser's grammar's structure is known and exposed at runtime.
    • Can be used to implement advanced features such as dynamically generated syntax diagrams or Syntactic error recovery.
  • Well tested with ~100% code coverage, Unit & Integration tests

Installation

  • npm: npm install chevrotain
  • Bower bower install chevrotain
  • or download directly from github releases:
    • the 'chevrotain-binaries-...' files contain the compiled javascript code.

Getting Started

Online tutorial

Examples Folder

Documentation

Dependencies

None.

Compatibility

The Generated artifact(chevrotain.js) should run on any modern Javascript ES5.1 runtime.

  • The CI build runs the tests under
    • Node.js (0.10 / 0.12 / 4 / 5).
    • latest Chromium
    • latest Firefox
  • Additionally local testing is done on latest versions of Chrome/Firefox/IE.
  • Uses UMD to work with common module loaders (browser global / require.js / node.js)

Generated using TypeDoc