package lux.xquery;
import lux.xml.QName;
import lux.xpath.AbstractExpression;
import lux.xpath.ExpressionVisitor;
public class Let extends AbstractExpression {
private QName name;
public Let (QName name, AbstractExpression assignment, AbstractExpression returnExp) {
super (Type.LET);
subs = new AbstractExpression [] { assignment, returnExp };
this.name = name;
}
@Override
public AbstractExpression accept(ExpressionVisitor visitor) {
super.acceptSubs(visitor);
return visitor.visit(this);
}
@Override
public void toString(StringBuilder buf) {
buf.append("let $");
name.toString (buf);
buf.append (" := ");
appendSub (buf, getAssignment());
buf.append (" return ");
getReturn().toString(buf);
}
public QName getName () {
return name;
}
public AbstractExpression getAssignment () {
return subs[0];
}
public AbstractExpression getReturn () {
return subs[1];
}
@Override
public boolean isDocumentOrdered () {
return getReturn().isDocumentOrdered();
}
@Override
public int getPrecedence () {
return 2;
}
}
/* 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/. */