1.0.2 • Published 6 years ago

parsingtables v1.0.2

Weekly downloads
2
License
MIT
Repository
github
Last release
6 years ago

parsingtables

npm package that should compute the LL(1) parsing table and the LR(0) parsing table. (for the moment only the LL(1) table will be computed)

Installing

var table = require('parsingtables');

then run:

npm install parsingtables

Usage

var grammar= ' S-> b T;'+ ' T-> A b | B a;'+ ' A-> a S | C B;'+ ' B-> b D;'+ ' C-> c D;'+ ' D-> |c D';

var parse= table(grammar);

console.log(parse);

Output

{ S: { b: [ 'S->bT' ] }, T: { a: [ 'T->Ab' ], c: [ 'T->Ab' ], b: [ 'T->Ba' ] }, A: { a: [ 'A->aS' ], c: [ 'A->CB' ] }, B: { b: [ 'B->bD' ] }, C: { c: [ 'C->cD' ] }, D: { a: [ 'D->' ], b: [ 'D->' ], c: [ 'D->cD' ] } }

input

You should separate Nonterminals from their derivations by -> or →

A -> B or B → y

Separate multiple symbols by blank spaces. if two nonTerminals do not have space in between, they are considered as one!

Each set of rules must be in a newline

or optionally multiple sets of rules can be placed at the same line as long as all of them, with the exception of the last one, are terminated by a semicolon (;)

A → y w B; B → C y; C → w

Use the separator '|' with multiple derivations

A → w y | k | f

For Epsilon use ε, ϵ or leave the derivation empty. The input 'null' will be considered a terminal not epsilon!

A → B | ε B → | K B → j | ϵ K →