void UnaryMinusTerm(out Expression aexp) { bool isMinus = false; Token minusToken = null; aexp = null; if (la.kind == 36) { Get(); isMinus = true; minusToken = t; } switch (la.kind) { case 10: { Get(); ArithmeticExpression(out aexp); Expect(12); aexp.ParenCount += 1; break; } case 7: { Get(); aexp = new Number(int.Parse(t.val)); SetPos(aexp, t); break; } case 17: { Get(); aexp = new Number(int.Parse(t.val)); SetPos(aexp, t); break; } case 39: { Get(); aexp = new Bool(true); SetPos(aexp, t); break; } case 40: { Get(); aexp = new Bool(false); SetPos(aexp, t); break; } case 3: { Get(); aexp = new Variable(t.val); SetPos(aexp, t); break; } case 6: { MethodCall(out aexp, false); break; } default: SynErr(47); break; } if (isMinus) {aexp = new UnaryMinus(aexp); SetStartPos(aexp, minusToken); SetEndPos(aexp, t);} }
public virtual void Visit(Bool node) { }
public override void Visit(Bool node) { PopChildren(); Return(node.Value ? "true" : "false"); }