private void parseHierachical(OracleSelectQueryBlock queryBlock) { OracleSelectHierachicalQueryClause hierachical = null; if (lexer.token() == Token.CONNECT) { hierachical = new OracleSelectHierachicalQueryClause(); lexer.nextToken(); accept(Token.BY); if (lexer.token() == Token.PRIOR) { lexer.nextToken(); hierachical.setPrior(true); } if (identifierEquals("NOCYCLE")) { hierachical.setNoCycle(true); } hierachical.setConnectBy(this.createExprParser().expr()); } if (lexer.token() == Token.START) { lexer.nextToken(); if (hierachical == null) { hierachical = new OracleSelectHierachicalQueryClause(); } accept(Token.WITH); hierachical.setStartWith(this.createExprParser().expr()); } if (lexer.token() == Token.CONNECT) { if (hierachical == null) { hierachical = new OracleSelectHierachicalQueryClause(); } lexer.nextToken(); accept(Token.BY); if (lexer.token() == Token.PRIOR) { lexer.nextToken(); hierachical.setPrior(true); } if (identifierEquals("NOCYCLE")) { hierachical.setNoCycle(true); } hierachical.setConnectBy(this.createExprParser().expr()); } if (hierachical != null) { queryBlock.setHierachicalQueryClause(hierachical); } }