public static Parser<Relation> query() {
    Parser.Reference<Relation> relationRef = Parser.newReference();
    Parser<Relation> subQuery = ExpressionParser.paren(relationRef.lazy());
    Parser.Reference<Expression> conditionRef = Parser.newReference();
    Parser<Expression> expr = ExpressionParser.expression(conditionRef.lazy());
    Parser<Expression> cond = ExpressionParser.condition(expr, subQuery);
    Parser<Relation> relation = query(expr, cond, subQuery.or(TABLE));
    conditionRef.set(cond);
    relationRef.set(relation);
    return relation;
  }
public static Parser < Relation > query ( ) { Parser . Reference < Relation > relationRef = Parser . newReference ( ) ; Parser < Relation > subQuery = ExpressionParser . paren ( relationRef . lazy ( ) ) ; Parser . Reference < Expression > conditionRef = Parser . newReference ( ) ; Parser < Expression > expr = ExpressionParser . expression ( conditionRef . lazy ( ) ) ; Parser < Expression > cond = ExpressionParser . condition ( expr , subQuery ) ; Parser < Relation > relation = query ( expr , cond , subQuery . or ( TABLE ) ) ; conditionRef . set ( cond ) ; relationRef . set ( relation ) ; return relation ; }
The {@link Parser} for a full fledged SQL query.