package lux.xpath;
import lux.xquery.AttributeConstructor;
import lux.xquery.CastableExpression;
import lux.xquery.CommentConstructor;
import lux.xquery.ComputedElementConstructor;
import lux.xquery.Conditional;
import lux.xquery.DocumentConstructor;
import lux.xquery.ElementConstructor;
import lux.xquery.FLWOR;
import lux.xquery.ForClause;
import lux.xquery.FunctionDefinition;
import lux.xquery.InstanceOf;
import lux.xquery.Let;
import lux.xquery.LetClause;
import lux.xquery.OrderByClause;
import lux.xquery.ProcessingInstructionConstructor;
import lux.xquery.Satisfies;
import lux.xquery.TextConstructor;
import lux.xquery.TreatAs;
import lux.xquery.Variable;
import lux.xquery.WhereClause;
public abstract class ExpressionVisitorBase extends ExpressionVisitor {
/**
* This method is called by every visit() method in this class.
* Subclasses may extend this convenience method in order to provide a default behavior for all
* expressions for which they don't provide an explicit visit() override.
* @param expr an expression to visit
* @return the expression
*/
protected AbstractExpression visitDefault (AbstractExpression expr) {
return expr;
}
protected AbstractExpression visitSubs (AbstractExpression expr) {
for (int i = 0; i < expr.getSubs().length; i++) {
AbstractExpression sub = expr.getSubs()[i].accept(this);
if (sub != expr.getSubs()[i]) {
expr.getSubs()[i] = sub;
}
}
return expr;
}
@Override
public AbstractExpression visit(AttributeConstructor attributeConstructor) {
return visitDefault (attributeConstructor);
}
@Override
public AbstractExpression visit(BinaryOperation op) {
return visitDefault (op);
}
@Override
public AbstractExpression visit(CastableExpression cast) {
return visitDefault(cast);
}
@Override
public AbstractExpression visit(CommentConstructor comment) {
return visitDefault (comment);
}
@Override
public AbstractExpression visit(ComputedElementConstructor element) {
return visitDefault (element);
}
@Override
public AbstractExpression visit(Conditional cond) {
return visitDefault (cond);
}
@Override
public AbstractExpression visit(DocumentConstructor documentConstructor) {
return visitDefault (documentConstructor);
}
@Override
public AbstractExpression visit(Dot dot) {
return visitDefault (dot);
}
@Override
public AbstractExpression visit(ElementConstructor elementConstructor) {
return visitDefault (elementConstructor);
}
@Override
public AbstractExpression visit(FLWOR flwor) {
return visitDefault (flwor);
}
@Override
public ForClause visit (ForClause forClause) {
return forClause;
}
@Override
public AbstractExpression visit(FunCall func) {
return visitDefault (func);
}
@Override
public AbstractExpression visit(FunctionDefinition func) {
return visitDefault (func);
}
@Override
public AbstractExpression visit(InstanceOf expr) {
return visitDefault (expr);
}
@Override
public AbstractExpression visit(Let let) {
return visitDefault (let);
}
@Override
public LetClause visit (LetClause letClause) {
return letClause;
}
@Override
public AbstractExpression visit(LiteralExpression literal) {
return visitDefault (literal);
}
@Override
public OrderByClause visit (OrderByClause orderByClause) {
return orderByClause;
}
@Override
public AbstractExpression visit(PathExpression path) {
return visitDefault (path);
}
@Override
public AbstractExpression visit(PathStep step) {
return visitDefault (step);
}
@Override
public AbstractExpression visit(Predicate predicate) {
return visitDefault (predicate);
}
@Override
public AbstractExpression visit(ProcessingInstructionConstructor pi) {
return visitDefault (pi);
}
@Override
public AbstractExpression visit(Root root) {
return visitDefault (root);
}
@Override
public AbstractExpression visit(Satisfies satisfies) {
return visitDefault (satisfies);
}
@Override
public AbstractExpression visit(Sequence seq) {
return visitDefault (seq);
}
@Override
public AbstractExpression visit(Subsequence subseq) {
return visitDefault (subseq);
}
@Override
public AbstractExpression visit(TreatAs treat) {
return visitDefault(treat);
}
@Override
public AbstractExpression visit(TextConstructor textConstructor) {
return visitDefault (textConstructor);
}
@Override
public AbstractExpression visit(UnaryMinus unaryMinus) {
return visitDefault (unaryMinus);
}
@Override
public AbstractExpression visit(Variable var) {
return visitDefault (var);
}
@Override
public WhereClause visit (WhereClause whereClause) {
return whereClause;
}
}
/* 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/. */