public override void Visit(BranchProcess p)
 {
     if (p.Expression is Bool) { //Has been optimized completely away...
         bool value = ((Bool)p.Expression).Value;
         if (value) {
             p.ElseBranch.IsUsed = false;
         } else {
             p.IfBranch.IsUsed = false;
         }
     }
 }
 void BranchProcess(out Process proc)
 {
     Expression exp = null; Process ifProc = null; Process elseProc = null;
     Expect(18);
     Expression(out exp);
     Expect(19);
     Process(out ifProc);
     Expect(20);
     Process(out elseProc);
     proc = new BranchProcess(exp, ifProc, elseProc);
 }
 public virtual void Visit(BranchProcess node)
 {
 }
 public override void Visit(BranchProcess node)
 {
     List<string> children = PopChildren();
     Return("if " + children[2] + " then " + children[3] + " else " + children[4]);
 }