node package manager



Build Status Windows Build Status

Parse KRL source code into an AST


var parser = require('krl-parser');
var src = ...//somehow get your krl string
var ast = parser(src);

AST Specification

The specification is found in


ast = parser(src[, options])

  • src - your krl source code string
  • options.filename - If provided, it will be used on parsing errors so the user know what file failed to parse.

This function will throw errors when it can't parse. When applicable, the Error object may have a where property. i.e.

var src = 'function(a, b] { a + b }';
  ast = parser(src, {filename: 'bad-function.krl'});
{ filename: 'bad-function.krl',
  line: 1,
  col: 14,
  excerpt: 'function(a, b] { a + b }\n             ^' }


The parser is built using nearley. It uses the Earley parser algorithm.

The KRL grammar is defined here: src/

When developing run this:

$ npm start

It will watch for file changes, rebuild the grammar and run tests.

To rebuild and run tests once, run this:

$ npm test

Sometimes you may unwittingly introduce an ambiguity into the grammar. Run this script to help you find it:

$ node tests/ambiguityFinder.js

It will generate and try to parse random KRL programs (using tests/unparse.js). When it finds an ambiguity it will stop and diff the outputs to help you spot the ambiguity.