void term(out Compiler.IfExpression e) { string op; IfExpression e2; e = null; factor(out e); while (la.kind == 8 || la.kind == 9) { multiply(out op); factor(out e2); e = new BinaryExpression(e, op, e2); } }
void factor(out Compiler.IfExpression e) { Compiler.IfValue val; e = null; if (StartOf(6)) { value(out val); e = new ExpressionLeaf(val); } else if (la.kind == 40) { Get(); expression(out e); Expect(41); } else { SynErr(60); } }
void expression(out Compiler.IfExpression e) { e = null; string op; IfExpression e2; if (la.kind == 6) { Get(); term(out e2); e = new UnaryExpression("-", e2); } else if (StartOf(5)) { term(out e); } else { SynErr(58); } while (la.kind == 6 || la.kind == 7) { addition(out op); term(out e2); e = new BinaryExpression(e, op, e2); } }