#ifndef RSQL_PARSER_PARSER_HPP #define RSQL_PARSER_PARSER_HPP #include "token.hpp" #include "token_type.hpp" #include #include namespace matador::rsql { class node; class parser { public: explicit parser(std::vector t); std::shared_ptr parse(); private: // OR level std::shared_ptr parse_or_expression(); // AND level std::shared_ptr parse_and_expression(); // Primary: parenthesis or condition std::shared_ptr parse_primary(); std::shared_ptr parse_condition(); bool match(const std::vector& types); const token& previous() const; private: std::vector tokens_; size_t current_size_ = 0; }; } #endif //RSQL_PARSER_PARSER_HPP