Node Parser.p_expr_core() { Node ex[]; OpType op[]; OpType t; Node a; ex = [this.p_primary()]; op = []; while(t = tok2op[this.peek().t], t !== undefined){ while(op.length > 0 && prectab[op[0]] >= prectab[t]){ a = ex.shift(); ex[0] = new Node(Node{t: ASTBIN, op: op.shift(), n1: ex[0], n2: a, lineno: this.lineno}); } this.lex(); op.unshift(t); this.p_attributes(); ex.unshift(this.p_primary()); } while(op.length > 0){ a = ex.shift(); ex[0] = new Node(Node{t: ASTBIN, op: op.shift(), n1: ex[0], n2: a, lineno: this.lineno}); } return ex[0]; }