#pragma once
#include <string_view>
#include <unordered_set>
#include <vector>
#include "tokenizer/sql_base.hpp"
namespace ddwaf {
class generic_sql_tokenizer : public sql_tokenizer<generic_sql_tokenizer> {
public:
explicit generic_sql_tokenizer(
std::string_view str, std::unordered_set<sql_token_type> skip_tokens = {});
static bool initialise_regexes();
protected:
std::vector<sql_token> tokenize_impl();
void tokenize_keyword_operator_or_identifier();
void tokenize_inline_comment_or_operator();
void tokenize_eol_comment();
void tokenize_eol_comment_or_operator_or_number();
friend class sql_tokenizer<generic_sql_tokenizer>;
};
}