Class QueryTreeWalker<T extends QueryTreeContext<T>>

java.lang.Object
com.google.appengine.api.search.query.QueryTreeWalker<T>
Type Parameters:
T - the context used by the visitor

public class QueryTreeWalker<T extends QueryTreeContext<T>> extends Object
The walking of the query tree. This class takes care of visiting a tree resulting from parsing a query. As it traverses the tree it calls appropriate methods of the visitor, set at the construction time. The class uses a depth-first search, visiting all children of a node, before visiting the node. The visit is done by calling an appropriate method of the visitor. Typical code should match the following pattern:

 class MyVisitor implements QueryTreeVisitor {
   ...
 }
 class MyContext extends QueryTreeContext<MyContext> {
   ...
   @Override
   protected MyContext newChildContext() {
     return new MyContext();
   }
 }

 MyContext context = new MyContext();
 QueryTreeWalker<MyContext> walker = new QueryTreeWalker<MyContext>(new MyVisitor());
 Tree root = parser.query(queryStr);
 walker.walk(root, context);
 // retrieve whatever information you need from context
 
  • Constructor Details

    • QueryTreeWalker

      public QueryTreeWalker(QueryTreeVisitor<T> visitor)
      Creates a new query walker that calls the given visitor.
      Parameters:
      visitor - the visitor to be called by this walker
  • Method Details

    • walk

      public void walk(org.antlr.runtime.tree.Tree tree, T context) throws QueryTreeException
      Parameters:
      tree - the tree to be walked
      context - the context in which the tree is walked
      Throws:
      QueryTreeException
    • simplify

      public static org.antlr.runtime.tree.Tree simplify(org.antlr.runtime.tree.Tree tree)