public WRC WalkExpr(Expr expr) { if (expr == null) { return(WRC.Continue); } C.ASSERTCOVERAGE(E.ExprHasProperty(expr, EP.TokenOnly)); C.ASSERTCOVERAGE(E.ExprHasProperty(expr, EP.Reduced)); WRC rc = ExprCallback(this, expr); if (rc == WRC.Continue && !E.ExprHasAnyProperty(expr, EP.TokenOnly)) { if (WalkExpr(expr.Left) != 0) { return(WRC.Abort); } if (WalkExpr(expr.Right) != 0) { return(WRC.Abort); } if (E.ExprHasProperty(expr, EP.xIsSelect)) { if (WalkSelect(expr.x.Select) != 0) { return(WRC.Abort); } } else { if (WalkExprList(expr.x.List) != 0) { return(WRC.Abort); } } } return(rc & WRC.Abort); }
public WRC WalkSelect(Select p) { if (p == null || SelectCallback == null) { return(WRC.Continue); } WRC rc = WRC.Continue; while (p != null) { rc = SelectCallback(this, p); if (rc != 0) { break; } if (WalkSelectExpr(p) != 0 || WalkSelectFrom(p) != 0) { WalkerDepth--; return(WRC.Abort); } p = p.Prior; } return(rc & WRC.Abort); }