Define parsers in JavaScript
JavaScript
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
lib
test
.gitignore
.npmignore
LICENSE
README.md
package.json
test.js

README.md

SimpleGrammar

SimpleGrammar define parsers.

Installation

Via npm on Node:

npm install simplegrammar

Usage

Reference in your program:

var sg = require('simplegrammar');
var get = sg.get;
var peek = sg.peek;

There are rules, that process string input:

var rulefor = get('for'); // the word 'for'
var ruledigit = get('0-9'); // digits
var ruleaorb = get(['a', 'b']); // an array is an 'or'
var ruletwodigit = get('0-9', '0-9'); // two digits

An array means an option: the rule accepts one of the elements.

More than one parameter is a sequence: the rule accepts the sequence.

The rule can process a string:

var result = get('for').process('for'); // result is 'for'
var noresult = get('for').process('if'); // noresult is null

But in general, the rules are invoked by a parser.

var parser = sg.createParser(text, [rulefor, ruledigit, ... ]);

A parser has an array of rule to execute.

There are peek rules to get an element, but without removing it from the parser process:

var rule = peek('for'); var rule2 = get('for'); var parser = sg.createParser('for'); // without rules, invoke the rule directly rule.process(parser); // success, it detects 'for' rule2.process(parser); // success again, it detects and remove 'for'

TBD: explain other rules (generate, not, oneOrMore, zeroOrMore, zeroOrOne, ...) and more examples

Development

git clone git://github.com/ajlopez/SimpleGrammar.git
cd SimpleGrammar
npm install
npm test

Samples

TBD

Projects

Projects that use SimpleGrammar:

TBD

Versions

  • 0.0.1: Published
  • 0.0.2: Published. Refactor TransformRule to process an array
  • 0.0.3: Published. Peek element (like get but without removing the element from the parser)
  • 0.0.4: Published. Fixing push array bug in parser
  • 0.0.5: Published. Delimited by character rule
  • 0.0.6: Published. zeroOrOne rule
  • 0.0.7: Published. skip in ElementRule, fix parser push
  • 0.0.8: Published. Internal push refactor, to parse = and ==
  • 0.0.9: Published. Elements with value == null
  • 0.0.10: Published. log, fail, not functions. Parser with log options

References

License

MIT

Contribution

Feel free to file issues and submit pull requests — contributions are welcome<

If you submit a pull request, please be sure to add or update corresponding test cases, and ensure that npm test continues to pass.