package org.exist.xquery;
import org.exist.xquery.functions.ExtFulltext;
/**
* Defines a visitor to be used for traversing and analyzing the
* expression tree.
*
* @author wolf
*
*/
public interface ExpressionVisitor {
/**
* Default fallback method if no other method matches
* the object's type.
*
* @param expression
*/
public void visit(Expression expression);
/** Found a PathExpr */
public void visitPathExpr(PathExpr expression);
/** Found a LocationStep */
public void visitLocationStep(LocationStep locationStep);
public void visitFilteredExpr(FilteredExpression filtered);
public void visitPredicate(Predicate predicate);
public void visitGeneralComparison(GeneralComparison comparison);
/** Found a CastExpression */
public void visitCastExpr(CastExpression expression);
public void visitUnionExpr(Union union);
public void visitIntersectionExpr(Intersection intersect);
public void visitAndExpr(OpAnd and);
public void visitOrExpr(OpOr or);
public void visitFtExpression(ExtFulltext fulltext);
public void visitForExpression(ForExpr forExpr);
public void visitLetExpression(LetExpr letExpr);
public void visitBuiltinFunction(Function function);
public void visitUserFunction(UserDefinedFunction function);
public void visitConditional(ConditionalExpression conditional);
public void visitDocumentConstructor(DocumentConstructor constructor);
public void visitElementConstructor(ElementConstructor constructor);
public void visitTextConstructor(DynamicTextConstructor constructor);
public void visitAttribConstructor(AttributeConstructor constructor);
public void visitAttribConstructor(DynamicAttributeConstructor constructor);
public void visitVariableReference(VariableReference ref);
}