void Term(out Expression e) { Operator op; Expression e1, e2; Factor(out e1); e = e1; while (la.kind == 26 || la.kind == 27 || la.kind == 28) { MulOp(out op); Factor(out e2); e = new BinOp(op, e, e2); } }
void SimExpr(out Expression e) { Expression e1, e2; Operator op; Term(out e1); e = e1; while (la.kind == 21 || la.kind == 22) { AddOp(out op); Term(out e2); e = new BinOp(op, e, e2); } }
void BoolTerm(out Expression e) { Expression e1, e2; Operator op; e = null; SimBoolExpr(out e1); e = e1; while (la.kind == 14) { OrOp(out op); SimBoolExpr(out e2); e = new BinOp(op, e, e2); } }
void SimBoolExpr(out Expression e) { Expression e1, e2; Operator op; e = null; SimExpr(out e1); e = e1; if (StartOf(2)) { RelOp(out op); SimExpr(out e2); e = new BinOp(op, e, e2); } }
void Expr(out Expression e) { Expression e1, e2; Operator op; e = null; BoolTerm(out e1); e = e1; while (la.kind == 13) { AndOp(out op); BoolTerm(out e2); e = new BinOp(op, e, e2); } }