• Public
  • Public/Protected
  • All


npm version Build Status Coverage Status Dependency status devDependency Status


Chevrotain is a Javascript parsing DSL for building high performance 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 <---


  1. Lexer Engine based on Regular Expression.

    • 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.
  2. Parsing DSL for defining the grammar.

    • No code generation.
      • The DSL is just Javascript, not an external language.
      • The Parsing flow is easily debuggable.
      • Short feedback loops.
      • 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.
  3. High performance - (see on JSPerf).

  4. Grammar Reflection/Introspection.

    • The 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.
  5. Well tested with ~100% code coverage, Unit & Integration tests


  • npm: npm install chevrotain
  • Bower bower install chevrotain
  • or download directly from github releases

Getting Started

Online tutorial

Examples Folder





Chevrotain should run on any modern Javascript ES5.1 runtime.

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

Generated using TypeDoc