Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »

    krl-parserpublic

    krl-parser

    Build Status Windows Build Status

    Parse KRL source code into an AST

    Usage

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

    AST Specification

    The specification is found in spec.md

    API

    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 }';
    try{
      ast = parser(src, {filename: 'bad-function.krl'});
    }catch(err){
      console.log(err.where);
    }
    { filename: 'bad-function.krl',
      line: 1,
      col: 14,
      excerpt: 'function(a, b] { a + b }\n             ^' }

    Developing

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

    The KRL grammar is defined here: src/grammar.ne

    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.

    License

    MIT

    install

    npm i krl-parser

    Downloadsweekly downloads

    8

    version

    0.45.0

    license

    MIT

    repository

    github.com

    last publish

    collaborators

    • avatar
    • avatar