@andrei-sfia/jison
v0.0.29
Published
Jison parser
Readme
JISON: Create your own language parsers / code syntax highlighters
Use this package to parse a string, according to a grammar you specify.
- parse formulas
- create your own language
Usage:
Parse text only
import {AST, Parser, Tokenizer} from "@andrei-sfia/jison";
// STEP 1. Create a grammar object from a string (typically loaded from a grammar file)
const grammar = new Grammar(
/** a structure of type JISON containing your parser rules.
** see "unit/rules/math-orig-jison.ts" for such example.
**/
grammarJISON
);
// STEP 2. Create a text tokenizer, based on the grammar you specified
const tokenizer = new Tokenizer(grammar);
// STEP 3. Create a parser based on the grammar
const parser = new Parser(grammar);
// STEP 4.1 (default usecase) Tokenize and parse
const tokens = tokenizer.tokenize(`1 + 1 * (3 + 4 * 5)`);
const ast = parser.parse(tokens);
// `ast` contains the parsed resut.
console.log(ast);
Parse text and annotate it's tokens
... so that you can use the annotated tokens inside your own syntax highlighter:
// STEP 4.2 (optional usecase, instead of 4.1) Tokenize, parse and annotate parsed tokens
const tokensWhichWillBeAnnotated = tokenizer.tokenize(`1 + 1 * (3 + 4 * 5)`, 'error');
try {
const astValue = parser.parse(tokensWhichWillBeAnnotated, true);
console.log(astValue);
} catch (e) {}
console.log(tokensWhichWillBeAnnotated);
Grammar files
A grammar file includes all specifications needed for the tokenizer and the parser.
A default grammar file (which is used also by the unit tests) can be found in unit/rules/math-orig-jison.ts
Development:
npm install- install dependenciesnpm test- run unit testsnpm lint- lint, scan for issues
