import { LL1Parser } from 'll1-parser';
const parser = new LL1Parser();
parser.AddRule('E', '(E+I)');
parser.AddRule('E', 'I');
parser.AddRule('I', '0');
parser.AddRule('I', '1');
parser.Compile();
console.table(parser.DumpTransitionTable());
/**
* ┌─────────┬──────┬──────┬─────────┐
* │ (index) │ 0 │ 1 │ ( │
* ├─────────┼──────┼──────┼─────────┤
* │ E │ 'I' │ 'I' │ '(E+I)' │
* │ I │ '0' │ '1' │ │
* │ S │ 'E$' │ 'E$' │ 'E$' │
* └─────────┴──────┴──────┴─────────┘
**/
const tree1 = parser.Parse('((0+1)+1)');
/**
* E
* ├── (
* ├─┬ E
* │ ├── (
* │ ├─┬ E
* │ │ └─┬ I
* │ │ └── 0
* │ ├── +
* │ ├─┬ I
* │ │ └── 1
* │ └── )
* ├── +
* ├─┬ I
* │ └── 1
* └── )
**/
const tree2 = parser.Parse('(0+2)');
// Error: Failed to find grammar for transition 'I => 2'
ll1-parser
0.0.3 • Public • PublishedPackage Sidebar
Install
npm i ll1-parser
Weekly Downloads
1
Version
0.0.3
License
ISC
Unpacked Size
13.9 kB
Total Files
11