UNPKG

@parser-generator/grammar-interpreter

Version:

A Parser Generator that supports LL,SLR,LR1,LALR

164 lines 7.63 kB
"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