svoid nlLogic_visit(IfThen rule, VF1 visitor) { if (rule == null) ret; callF(visitor, rule); nlLogic_visit(rule.in, visitor); nlLogic_visit(rule.out, visitor); } svoid nlLogic_visit(Exp e, VF1 visitor) { if (e == null) ret; callF(visitor, e); if (e cast And) { nlLogic_visit(e.a); nlLogic_visit(e.b); } else if (e cast ExpNot) nlLogic_visit(e.a); }