// IfStmt public override bool Walk(IfStmt node) { BitArray result = new BitArray(bits.Length, true); BitArray save = bits; bits = new BitArray(bits.Length); foreach (IfStmtTest ist in node.tests) { // Set the initial branch value to bits bits.SetAll(false); bits.Or(save); // Flow the test first ist.test.Walk(this); // Flow the body ist.body.Walk(this); // Intersect result.And(bits); } // Set the initial branch value to bits bits.SetAll(false); bits.Or(save); if (node.elseStmt != null) { // Flow the else_ node.elseStmt.Walk(this); } // Intersect result.And(bits); bits = save; // Remember the result bits.SetAll(false); bits.Or(result); return(false); }
public virtual void PostWalk(IfStmt node) { }
// IfStmt public virtual bool Walk(IfStmt node) { return(true); }
// IfStmt public virtual bool Walk(IfStmt node) { return(false); }