public virtual void Visit(InAction act)
 {
 }
 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(InAction act)
 {
     List<string> children = PopChildren();
     if (children.Count == 0) {
         Return(act.Name);
     } else {
         Return(act.Name + "(" + Join(", ", children) + ")");
     }
 }
 public override void Visit(InAction act)
 {
     _inActions.Add(act);
 }
 public virtual string Format(InAction act)
 {
     return act.Name;
 }