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 ExpressionVisitor { private boolean reverse = false; /** * @return true if the visit is done; this allows visits to terminate early */ public boolean isDone () { return false; } /** * @return whether the sub-expressions should be visited in reverse (right-to-left) * order. */ public boolean isReverse () { return reverse; } public void setReverse (boolean reverse) { this.reverse = reverse; } public abstract AbstractExpression visit (AttributeConstructor attributeConstructor); public abstract AbstractExpression visit (BinaryOperation op); public abstract AbstractExpression visit (CastableExpression castable); public abstract AbstractExpression visit (CommentConstructor commentConstructor); public abstract AbstractExpression visit (ComputedElementConstructor computedElementConstructor); public abstract AbstractExpression visit (Conditional conditional); public abstract AbstractExpression visit (DocumentConstructor documentConstructor); public abstract AbstractExpression visit (Dot dot); public abstract AbstractExpression visit (ElementConstructor elementConstructor); public abstract AbstractExpression visit (FLWOR flwor); public abstract ForClause visit (ForClause forClause); public abstract AbstractExpression visit (FunCall func); public abstract AbstractExpression visit(FunctionDefinition func); public abstract AbstractExpression visit (InstanceOf instanceOf); public abstract AbstractExpression visit (Let let); public abstract LetClause visit (LetClause letClause); public abstract AbstractExpression visit (LiteralExpression literal); public abstract OrderByClause visit (OrderByClause orderByClause); public abstract AbstractExpression visit (PathExpression path); public abstract AbstractExpression visit (PathStep step); public abstract AbstractExpression visit (Predicate predicate); public abstract AbstractExpression visit (ProcessingInstructionConstructor processingInstructionConstructor); public abstract AbstractExpression visit (Root root); public abstract AbstractExpression visit (Satisfies satisfies); public abstract AbstractExpression visit (Sequence sequence); public abstract AbstractExpression visit (Subsequence subsequence); public abstract AbstractExpression visit (TextConstructor textConstructor); public abstract AbstractExpression visit (TreatAs treat); public abstract AbstractExpression visit (UnaryMinus predicate); public abstract AbstractExpression visit (Variable variable); public abstract WhereClause visit (WhereClause 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/. */