lex-bnf
v1.1.6
Published
General-purpose recursive descent parser and evaluator
Downloads
162
Maintainers
Readme
Lex-BNF
This is a general-purpose recursive descent parser and evaluator.
Using this module, You can:
- Defines a syntax rule such as programming languages, expressions, or structured statements.
- Parses the code written based on the rules.
- Evaluates the result of the parsing.
NOTE: The class BNF
exported in v0.3.3 is deprecated and it can be used as Language.BNF
.
Create A Language
Definition
The parser is defined as an instance of Language
class by using objects of BNF-like
notation and its evaluator functions. Those can run in dynamically and immediately.
The Language
constructor takes one array of syntax rule.
To create the syntax rule, use Language.syntax()
function.
Paramters of Language.syntax()
:
- A name of the syntax rule.
- An array of a rule which is an array of terms.
- A character '*' at the end of a rule name as an element of the terms is Repetition Specifier that means the rule is repeatable.
- See the rule declaration part of
additive-expression
in sample/calc.js to use the feature.
- An evaluator function (optional). It can be omitted when the second parameter contains only one rule which containing only one other name of syntax rule.
Demo: Evaluating arithmetic expression
With following files, those shows how define a syntax of language.
- sample/eval-expr.js
A simple calculator script to parse and evaluate an expression from CLI. - sample/calc.js
An implementation of the calculator syntax.
run on bash
$ node sample/eval-expr.js '(1 + 2) * ((3 + 4) / 2)'
10.5
$
Documents
- GitHub Pages
- API Reference
LICENSE
This software is released under the MIT License, see LICENSE