void UnaryMinusTerm(out Expression aexp) { bool isMinus = false; Token minusToken = null; aexp = null; if (la.kind == 21) { Get(); isMinus = true; minusToken = t; } if (la.kind == 14) { Get(); Expression(out aexp); Expect(15); aexp.ParenCount += 1; } else if (la.kind == 4) { Get(); aexp = new Number(int.Parse(t.val)); SetPos(aexp, t); } else if (la.kind == 2) { Get(); aexp = new Variable(t.val); SetPos(aexp, t); } else SynErr(34); if (isMinus) {aexp = new UnaryMinus(aexp); SetPos(aexp, minusToken);} }
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(Variable node) { }
void Action(out Action act) { act = null; Expression exp = null;Variable v = null; if (la.kind == 3) { Get(); InAction inAct = new InAction(t.val); if (la.kind == 10) { Get(); Expect(3); v = new Variable(t.val); SetPos(v, t); inAct.AddVariable(v); while (la.kind == 11) { Get(); Expect(3); v = new Variable(t.val); SetPos(v, t); inAct.AddVariable(v); } Expect(12); } act = inAct; } else if (la.kind == 5) { Get(); OutAction outAct = new OutAction(t.val); if (la.kind == 10) { Get(); ArithmeticExpression(out exp); outAct.AddExpression(exp); while (la.kind == 11) { Get(); ArithmeticExpression(out exp); outAct.AddExpression(exp); } Expect(12); } act = outAct; } else if (la.kind == 6) { MethodCall(out exp, true); act = new Call((MethodCallExpression)exp); } else SynErr(43); }
public override void Visit(Variable var) { if (!Variables.Contains(var)) { Variables.Add(var); } }
public void AddVariable(Variable var) { _children.Add(var); }
public override void Visit(Variable node) { PopChildren(); Return(SurroundWithParens(node.Name, node.ParenCount)); }
public virtual string Format(Variable v) { return SurroundWithParens(v.Name, v.ParenCount); }