UNPKG

@parser-generator/grammar-interpreter

Version:

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

62 lines 1.42 kB
class ASTList { constructor(eles) { this.eles = eles; } } export 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"; } } export 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"; } } export class Factor extends ASTList { eval() { if (this.eles.length == 1) { return this.eles[0].value(); } else { return this.eles[1].eval(); } } toString() { return "F"; } } //# sourceMappingURL=ast.js.map