opendap/src/main/java/opendap/servers/parsers/CeParser.java
static public boolean constraint_expression(CEEvaluator ceEval,
                                         BaseTypeFactory factory,
					 ClauseFactory clauseFactory,
					 String constraint,
				         String url // for error reporting
					 )
            throws DAP2Exception, ParseException
    {
	CeParser parser = new CeParser(factory);
	parser.setURL(url);
	parser.setConstraint(constraint);
        ServerDDS sdds = ceEval.getDDS();
        if(!parser.parse(constraint)) return false;
        ASTconstraint root = (ASTconstraint)parser.getAST();
	root.init(ceEval,factory,clauseFactory,sdds,parser.getASTnodeset());
	root.walkConstraint();
        return true;
    }
static public boolean constraint_expression(CEEvaluator ceEval,
                                         BaseTypeFactory factory,
					 ClauseFactory clauseFactory,
					 String constraint,
				         String url // for error reporting
					 )
            throws DAP2Exception, ParseException
    {
	CeParser parser = new CeParser(factory);
	parser.setURL(url);
	parser.setConstraint(constraint);
        ServerDDS sdds = ceEval.getDDS();
        if(!parser.parse(constraint)) return false;
        ASTconstraint root = (ASTconstraint)parser.getAST();
	root.init(ceEval,factory,clauseFactory,sdds,parser.getASTnodeset());
	root.walkConstraint();
        return true;
    }
This parses, then fills in the evaluator from the AST