code: public SQLAST parse() {
          ParseTree parseTree = SQLParserFactory.newInstance(databaseType, sql).execute().getChild(0);
          if (parseTree instanceof ErrorNode) {
              throw new SQLParsingUnsupportedException(String.format("Unsupported SQL of `%s`", sql));
          }
          Optional<SQLStatementRule> sqlStatementRule = parsingRuleRegistry.findSQLStatementRule(databaseType, parseTree.getClass().getSimpleName());
          if (sqlStatementRule.isPresent()) {
              return new SQLAST((ParserRuleContext) parseTree, sqlStatementRule.get());
          }
          if (parsingRuleRegistry instanceof EncryptParsingRuleRegistry) {
              return new SQLAST((ParserRuleContext) parseTree);
          }
          throw new SQLParsingUnsupportedException(String.format("Unsupported SQL of `%s`", sql));
      }
docs: Parse SQL to abstract syntax tree.
  
  @return abstract syntax tree of SQL