package lux.xquery; import lux.xpath.AbstractExpression; import lux.xpath.ExpressionVisitor; /** * represents xquery conditionals (if, then, else) */ public class Conditional extends AbstractExpression { public Conditional (AbstractExpression condition, AbstractExpression trueAction, AbstractExpression falseAction) { super (Type.CONDITIONAL); subs = new AbstractExpression[] { condition, trueAction, falseAction }; } @Override public AbstractExpression accept(ExpressionVisitor visitor) { acceptSubs(visitor); return visitor.visit(this); } @Override public void toString(StringBuilder buf) { buf.append ("if ("); getCondition().toString(buf); buf.append (")\n then ("); getTrueAction().toString(buf); if (getFalseAction() != null) { buf.append(")\n else ("); getFalseAction().toString(buf); } buf.append (")"); } public final AbstractExpression getCondition () { return subs[0]; } public final AbstractExpression getTrueAction() { return subs[1]; } public final AbstractExpression getFalseAction() { return subs[2]; } @Override public int getPrecedence () { return 3; } } /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this file, * You can obtain one at http://mozilla.org/MPL/2.0/. */