Package xbird.xquery.expr

Examples of xbird.xquery.expr.XQExpression


        variable.setLoopInvariant(true);
        return variable;
    }

    public XQExpression visit(PathVariable variable, XQueryContext ctxt) throws XQueryException {
        XQExpression e = variable.getValue();
        assert (e != null);
        XQExpression e2 = e.visit(this, ctxt);
        variable.setValue(e2);
        boolean isLoopInvariant = e.isLoopInvariant();
        if(isLoopInvariant) {
            removeInvariants(e);
            return hookLoopInvariant(variable);
View Full Code Here


    public XQExpression visit(PIConstructor constructor, XQueryContext ctxt) throws XQueryException {
        boolean isLoopInvariant = true;
        String target = constructor.getTarget();
        if(target == null) {
            XQExpression t = constructor.getTargetExpr();
            t.visit(this, ctxt);
            isLoopInvariant &= t.isLoopInvariant();
        }
        String content = constructor.getContent();
        if(content == null) {
            XQExpression c = constructor.getContentExpr();
            c.visit(this, ctxt);
            isLoopInvariant &= c.isLoopInvariant();
        }
        if(isLoopInvariant) {
            XQExpression t = constructor.getTargetExpr();
            if(t != null) {
                removeInvariants(t);
            }
            XQExpression c = constructor.getContentExpr();
            if(c != null) {
                removeInvariants(c);
            }
            return hookLoopInvariant(constructor);
        }
View Full Code Here

        return variable;
    }

    public XQExpression visit(PromoteJoinExpression join, XQueryContext ctxt)
            throws XQueryException {
        XQExpression srcExpr = join.getSrcExpr();
        XQExpression replaced = srcExpr.visit(this, ctxt);
        join.setSrcExpr(replaced);

        List<XQExpression> searchKeys = join.getSearchKeyExprs();
        for(int i = 0; i < searchKeys.size(); i++) {
            XQExpression key = searchKeys.get(i);
            XQExpression newKey = key.visit(this, ctxt);
            if(newKey != key) {
                searchKeys.set(i, newKey);
            }
        }
View Full Code Here

        boolean isLoopInvariant = true;
        BindingVariable binding = expr.getBinding();
        visit(binding, ctxt);
        isLoopInvariant &= binding.isLoopInvariant();

        XQExpression cond = expr.getCondExpr();
        cond.visit(this, ctxt);
        isLoopInvariant &= cond.isLoopInvariant();

        if(isLoopInvariant) {
            removeInvariants(binding);
            removeInvariants(cond);
            return hookLoopInvariant(expr);
View Full Code Here

        return expr;
    }

    public XQExpression visit(SequenceOp op, XQueryContext ctxt) throws XQueryException {
        boolean isLoopInvariant = true;
        XQExpression left = op.getLeftOperand();
        left.visit(this, ctxt);
        isLoopInvariant &= left.isLoopInvariant();
        XQExpression right = op.getRightOperand();
        right.visit(this, ctxt);
        isLoopInvariant &= right.isLoopInvariant();
        if(isLoopInvariant) {
            removeInvariants(left);
            removeInvariants(right);
            return hookLoopInvariant(op);
        }
View Full Code Here

        return op;
    }

    public XQExpression visit(TextConstructor constructor, XQueryContext ctxt)
            throws XQueryException {
        XQExpression content = constructor.getContent();
        content.visit(this, ctxt);
        boolean isLoopInvariant = content.isLoopInvariant();
        if(isLoopInvariant) {
            removeInvariants(content);
            return hookLoopInvariant(constructor);
        }
        return constructor;
View Full Code Here

        }
        return constructor;
    }

    public XQExpression visit(TreatExpr expr, XQueryContext ctxt) throws XQueryException {
        XQExpression e = expr.getExpression();
        e.visit(this, ctxt);
        boolean isLoopInvariant = e.isLoopInvariant();
        if(isLoopInvariant) {
            removeInvariants(e);
            return hookLoopInvariant(expr);
        }
        return expr;
View Full Code Here

        }
        return expr;
    }

    public XQExpression visit(TypePromotedExpr expr, XQueryContext ctxt) throws XQueryException {
        XQExpression e = expr.getPromotedExpr();
        e.visit(this, ctxt);
        boolean isLoopInvariant = e.isLoopInvariant();
        if(isLoopInvariant) {
            removeInvariants(e);
            return hookLoopInvariant(expr);
        }
        return expr;
View Full Code Here

        return expr;
    }

    public XQExpression visit(TypeswitchExpr expr, XQueryContext ctxt) throws XQueryException {
        boolean isLoopInvariant = true;
        XQExpression opr = expr.getOperandExpr();
        opr.visit(this, ctxt);
        isLoopInvariant &= opr.isLoopInvariant();
        for(XQExpression c : expr.getCaseClauses()) {
            c.visit(this, ctxt);
            isLoopInvariant &= c.isLoopInvariant();
        }
        XQExpression def = expr.getDefaultClause();
        if(def != null) {
            def.visit(this, ctxt);
            isLoopInvariant &= def.isLoopInvariant();
        }
        if(isLoopInvariant) {
            removeInvariants(opr);
            for(XQExpression c : expr.getCaseClauses()) {
                removeInvariants(c);
View Full Code Here

        visit((SequenceOp) op, ctxt);
        return op;
    }

    public XQExpression visit(UnorderedExpr expr, XQueryContext ctxt) throws XQueryException {
        XQExpression e = expr.getExpr();
        e.visit(this, ctxt);
        boolean isLoopInvariant = e.isLoopInvariant();
        if(isLoopInvariant) {
            removeInvariants(e);
            return hookLoopInvariant(expr);
        }
        return expr;
View Full Code Here

TOP

Related Classes of xbird.xquery.expr.XQExpression

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.