@parser-generator/grammar-interpreter
Version:
A Parser Generator that supports LL,SLR,LR1,LALR
164 lines • 7.63 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const definition_1 = require("@parser-generator/definition");
const ast_1 = require("./ast");
exports.digit = new definition_1.TokenPro("digit");
let S = new definition_1.NonTerminal("S");
let E = new definition_1.NonTerminal("E");
/* (0) S->E */
let p0 = new definition_1.Production(0, S, [
new definition_1.SymbolWrapper(E)
], undefined, undefined);
/* (1) E->E+E<%(e)=>new Expr(e)%> */
let p1 = new definition_1.Production(1, E, [
new definition_1.SymbolWrapper(E),
new definition_1.SymbolWrapper("+"),
new definition_1.SymbolWrapper(E)
], undefined, (e) => new ast_1.Expr(e));
/* (2) E->E-E<%(e)=>new Expr(e)%> */
let p2 = new definition_1.Production(2, E, [
new definition_1.SymbolWrapper(E),
new definition_1.SymbolWrapper("-"),
new definition_1.SymbolWrapper(E)
], undefined, (e) => new ast_1.Expr(e));
/* (3) E->E*E<%(e)=>new Expr(e)%> */
let p3 = new definition_1.Production(3, E, [
new definition_1.SymbolWrapper(E),
new definition_1.SymbolWrapper("*"),
new definition_1.SymbolWrapper(E)
], undefined, (e) => new ast_1.Expr(e));
/* (4) E->E/E<%(e)=>new Expr(e)%> */
let p4 = new definition_1.Production(4, E, [
new definition_1.SymbolWrapper(E),
new definition_1.SymbolWrapper("/"),
new definition_1.SymbolWrapper(E)
], undefined, (e) => new ast_1.Expr(e));
/* (5) E->(E)<%(e)=>new Expr(e)%> */
let p5 = new definition_1.Production(5, E, [
new definition_1.SymbolWrapper("("),
new definition_1.SymbolWrapper(E),
new definition_1.SymbolWrapper(")")
], undefined, (e) => new ast_1.Expr(e));
/* (6) E->digit<%(e)=>new Expr(e)%> */
let p6 = new definition_1.Production(6, E, [
new definition_1.SymbolWrapper(exports.digit)
], undefined, (e) => new ast_1.Expr(e));
S.prods = [p0];
E.prods = [p1, p2, p3, p4, p5, p6];
let table = new definition_1.ParsingTable();
table.put(0, E, new definition_1.Goto(1));
table.put(0, "(", new definition_1.Shift(2));
table.put(0, exports.digit, new definition_1.Shift(3));
table.put(1, definition_1.EOF, new definition_1.Accept());
table.put(1, "+", new definition_1.Shift(4));
table.put(1, "-", new definition_1.Shift(5));
table.put(1, "*", new definition_1.Shift(6));
table.put(1, "/", new definition_1.Shift(7));
table.put(2, E, new definition_1.Goto(8));
table.put(2, "(", new definition_1.Shift(9));
table.put(2, exports.digit, new definition_1.Shift(10));
table.put(3, "+", new definition_1.Reduce(p6));
table.put(3, "-", new definition_1.Reduce(p6));
table.put(3, "*", new definition_1.Reduce(p6));
table.put(3, "/", new definition_1.Reduce(p6));
table.put(3, definition_1.EOF, new definition_1.Reduce(p6));
table.put(4, E, new definition_1.Goto(11));
table.put(4, "(", new definition_1.Shift(2));
table.put(4, exports.digit, new definition_1.Shift(3));
table.put(5, E, new definition_1.Goto(12));
table.put(5, "(", new definition_1.Shift(2));
table.put(5, exports.digit, new definition_1.Shift(3));
table.put(6, E, new definition_1.Goto(13));
table.put(6, "(", new definition_1.Shift(2));
table.put(6, exports.digit, new definition_1.Shift(3));
table.put(7, E, new definition_1.Goto(14));
table.put(7, "(", new definition_1.Shift(2));
table.put(7, exports.digit, new definition_1.Shift(3));
table.put(8, ")", new definition_1.Shift(15));
table.put(8, "+", new definition_1.Shift(16));
table.put(8, "-", new definition_1.Shift(17));
table.put(8, "*", new definition_1.Shift(18));
table.put(8, "/", new definition_1.Shift(19));
table.put(9, E, new definition_1.Goto(20));
table.put(9, "(", new definition_1.Shift(9));
table.put(9, exports.digit, new definition_1.Shift(10));
table.put(10, "+", new definition_1.Reduce(p6));
table.put(10, "-", new definition_1.Reduce(p6));
table.put(10, "*", new definition_1.Reduce(p6));
table.put(10, "/", new definition_1.Reduce(p6));
table.put(10, ")", new definition_1.Reduce(p6));
table.put(11, "+", new definition_1.Reduce(p1));
table.put(11, "-", new definition_1.Reduce(p1));
table.put(11, "*", new definition_1.Shift(6));
table.put(11, "/", new definition_1.Shift(7));
table.put(11, definition_1.EOF, new definition_1.Reduce(p1));
table.put(12, "+", new definition_1.Reduce(p2));
table.put(12, "-", new definition_1.Reduce(p2));
table.put(12, "*", new definition_1.Shift(6));
table.put(12, "/", new definition_1.Shift(7));
table.put(12, definition_1.EOF, new definition_1.Reduce(p2));
table.put(13, "+", new definition_1.Reduce(p3));
table.put(13, "-", new definition_1.Reduce(p3));
table.put(13, "*", new definition_1.Reduce(p3));
table.put(13, "/", new definition_1.Reduce(p3));
table.put(13, definition_1.EOF, new definition_1.Reduce(p3));
table.put(14, "+", new definition_1.Reduce(p4));
table.put(14, "-", new definition_1.Reduce(p4));
table.put(14, "*", new definition_1.Reduce(p4));
table.put(14, "/", new definition_1.Reduce(p4));
table.put(14, definition_1.EOF, new definition_1.Reduce(p4));
table.put(15, "+", new definition_1.Reduce(p5));
table.put(15, "-", new definition_1.Reduce(p5));
table.put(15, "*", new definition_1.Reduce(p5));
table.put(15, "/", new definition_1.Reduce(p5));
table.put(15, definition_1.EOF, new definition_1.Reduce(p5));
table.put(16, E, new definition_1.Goto(21));
table.put(16, "(", new definition_1.Shift(9));
table.put(16, exports.digit, new definition_1.Shift(10));
table.put(17, E, new definition_1.Goto(22));
table.put(17, "(", new definition_1.Shift(9));
table.put(17, exports.digit, new definition_1.Shift(10));
table.put(18, E, new definition_1.Goto(23));
table.put(18, "(", new definition_1.Shift(9));
table.put(18, exports.digit, new definition_1.Shift(10));
table.put(19, E, new definition_1.Goto(24));
table.put(19, "(", new definition_1.Shift(9));
table.put(19, exports.digit, new definition_1.Shift(10));
table.put(20, ")", new definition_1.Shift(25));
table.put(20, "+", new definition_1.Shift(16));
table.put(20, "-", new definition_1.Shift(17));
table.put(20, "*", new definition_1.Shift(18));
table.put(20, "/", new definition_1.Shift(19));
table.put(21, "+", new definition_1.Reduce(p1));
table.put(21, "-", new definition_1.Reduce(p1));
table.put(21, "*", new definition_1.Shift(18));
table.put(21, "/", new definition_1.Shift(19));
table.put(21, ")", new definition_1.Reduce(p1));
table.put(22, "+", new definition_1.Reduce(p2));
table.put(22, "-", new definition_1.Reduce(p2));
table.put(22, "*", new definition_1.Shift(18));
table.put(22, "/", new definition_1.Shift(19));
table.put(22, ")", new definition_1.Reduce(p2));
table.put(23, "+", new definition_1.Reduce(p3));
table.put(23, "-", new definition_1.Reduce(p3));
table.put(23, "*", new definition_1.Reduce(p3));
table.put(23, "/", new definition_1.Reduce(p3));
table.put(23, ")", new definition_1.Reduce(p3));
table.put(24, "+", new definition_1.Reduce(p4));
table.put(24, "-", new definition_1.Reduce(p4));
table.put(24, "*", new definition_1.Reduce(p4));
table.put(24, "/", new definition_1.Reduce(p4));
table.put(24, ")", new definition_1.Reduce(p4));
table.put(25, "+", new definition_1.Reduce(p5));
table.put(25, "-", new definition_1.Reduce(p5));
table.put(25, "*", new definition_1.Reduce(p5));
table.put(25, "/", new definition_1.Reduce(p5));
table.put(25, ")", new definition_1.Reduce(p5));
let traits = new Map();
traits.set("+", new definition_1.SymbolTrait(0, true));
traits.set("-", new definition_1.SymbolTrait(0, true));
traits.set("*", new definition_1.SymbolTrait(1, true));
traits.set("/", new definition_1.SymbolTrait(1, true));
const core_1 = require("@parser-generator/core");
exports.parser = new core_1.LRParser(table);
//# sourceMappingURL=parser.tmp.js.map