class ShardingCTLHintParser implements ShardingCTLParser<ShardingCTLHintStatement> {

    @Override
    public Optional<ShardingCTLHintStatement> doParse() {
        Optional<ShardingCTLHintStatement> updateShardingCTLHintStatement = parseUpdateShardingCTLHintStatement();
        if (updateShardingCTLHintStatement.isPresent()) {
            return updateShardingCTLHintStatement;
        }
        Optional<ShardingCTLHintStatement> queryShardingCTLHintStatement = parseQueryShardingCTLHintStatement();
        if (queryShardingCTLHintStatement.isPresent()) {
            return queryShardingCTLHintStatement;
        }
        if (errorParameterMatcher.find()) {
            return Optional.of(new ShardingCTLHintStatement(new HintErrorParameterCommand()));
        }
        return Optional.empty();
    }

    public  ShardingCTLHintParser(final String sql);

}