public boolean isSatisfied(Binding binding, ExecutionContext execCxt) { for (Expr expr : expressions) { if ( !expr.isSatisfied(binding, execCxt) ) return false ; } return true ; }
/** Special form evaluation (example, don't eval the arguments first) */ @Override protected NodeValue evalSpecial(Binding binding, FunctionEnv env) { NodeValue nv = condition.eval(binding, env) ; if ( condition.isSatisfied(binding, env) ) return thenExpr.eval(binding, env) ; else return elseExpr.eval(binding, env) ; }
@Override public Binding accept(Binding binding) { try { if ( expr.isSatisfied(binding, super.getExecContext()) ) return binding ; return null ; } catch (ExprException ex) { // Some evaluation exception Log.warn(this, "Expression Exception in "+expr, ex) ; return null ; } catch (Exception ex) { Log.warn(this, "General exception in "+expr, ex) ; return null ; } }