UNPKG

@parser-generator/grammar-interpreter

Version:

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

67 lines 1.54 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); class ASTList { constructor(eles) { this.eles = eles; } } class Expr extends ASTList { get left() { return this.eles[0]; } get term() { return this.eles.length == 2 ? this.eles[1] : undefined; } eval() { let result = this.left.eval(); let term = this.term; while (term != undefined) { let op = term.op; let right = term.right; switch (op) { case "+": result += right; break; case "-": result -= right; break; } term = term.subTerm; } return result; } toString() { return "E"; } } exports.Expr = Expr; class Term extends ASTList { get op() { return this.eles.length > 0 ? this.eles[0].value() : undefined; } get right() { return this.eles.length > 1 ? this.eles[1].eval() : undefined; } get subTerm() { return this.eles.length > 2 ? this.eles[2] : undefined; } toString() { return "T"; } } exports.Term = Term; class Factor extends ASTList { eval() { if (this.eles.length == 1) { return this.eles[0].value(); } else { return this.eles[1].eval(); } } toString() { return "F"; } } exports.Factor = Factor; //# sourceMappingURL=ast.js.map