@ull-esit-pl/peg-stack

1.1.6 • Public • Published

PEGStack

A minimal node module providing utility methods to work with PEG.js semantic predicates

Installation

  npm install @ull-esit-pl/peg-stack --save

Example of use

{
  var PEGStack = require('@ull-esit-pl/peg-stack');
  var stack = new PEGStack();
  var action = function() {
    var [val1, op, val2] = stack.pop(3);
    stack.log('Action!: '+`${val1} ${op} ${val2}`); 
    stack.push(eval(`${val1} ${op} ${val2}`)); 
  }
}

sum     = first:product &{ return stack.push(first); } 
          (op:[+-] product:product 
            &{ stack.push(op, product); return stack.make(action); })* 
             { return stack.pop(); } 
product = first:value &{ return stack.push(first); } 
          (op:[*/] value:value 
            &{ stack.push(op, value); return stack.make(action); })* 
             { return stack.pop(); } 
value   = number:$[0-9]+                     { return parseInt(number,10); }
        / '(' sum:sum ')'                    { return sum; }

Tests

   npm test

API Documents

See Documentation at https://ull-esit-pl.github.io/peg-stack/

To generate the docs we use documentation.js:

   npm run doc

Install $ npm install -g documentation

Contributing

In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code.

Release History

  • 1.0.0 Initial release

Dependencies (0)

    Dev Dependencies (3)

    Package Sidebar

    Install

    npm i @ull-esit-pl/peg-stack

    Weekly Downloads

    1

    Version

    1.1.6

    License

    none

    Last publish

    Collaborators

    • casiano
    • crguezl