Skip to content

Chevrotain/chevrotain

Repository files navigation

Build Status Coverage Status npm version

Chevrotain

Chevrotain is a high performance fault Tolerant Javascript parsing DSL for building recursive decent parsers.

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

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 a new external language, what is written is what will be run, this speeds up development, makes debugging trivial and provides great flexibility for inserting custom actions into the grammar.
    • Strong Error Recovery capabilities based on Antlr3's algorithms.
    • Automatic lookahead calculation for LL(1) grammars.
    • In addition custom lookahead logic can be provided explicitly.
    • Backtracking support.
  • High performance see:

  • Grammar Introspection, the grammar's structure is known and exposed this can be used to implement features such as automatically generated syntax diagrams or Syntactic error recovery.

  • Well tested with ~100% code coverage

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 version

Related Repos

Runnable (and debuggable) examples:

Documentation

Dependencies

Only a single dependency to lodash.

Compatibility

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

  • The CI build runs the tests under Node.js.
  • Additionally local testing is done on latest versions of Chrome/Firefox/IE.
  • The dependency to lodash is imported via UMD, in order to make chevrotain.js portable to multiple environments.