24 using size_type = uint64_t;
25 using error_callback = std::function<void(
const Token&,
const std::string&)>;
40 const std::vector<Token>& tokens,
41 error_callback callback = [](
const Token&,
const std::string&) {}
49 [[nodiscard]] std::optional<Expr>
parse() noexcept;
71 [[nodiscard]]
bool tokens_remaining() const noexcept;
80 [[nodiscard]]
Token peek_back() const;
89 [[nodiscard]]
Token peek() const;
96 Token advance() noexcept;
104 [[nodiscard]]
bool check(TokenType type) const noexcept;
114 [[nodiscard]]
bool match(TokenTypes... types) noexcept;
125 Token consume(TokenType type, const
std::
string& message);
134 [[nodiscard]] Expr parse_expression();
143 [[nodiscard]] Query parse_query();
161 [[nodiscard]]
PutQuery parse_put_query();
188 [[nodiscard]]
DropQuery parse_drop_query();
197 [[nodiscard]]
AddQuery parse_add_query();
224 [[nodiscard]] SelectType parse_select_type();
233 [[nodiscard]] SelectClause parse_select_clause();
241 [[nodiscard]]
AllClause parse_all_clause();
259 [[nodiscard]]
AtClause parse_at_clause();
286 [[nodiscard]]
TagExpr parse_tag();
359 error_callback callback_;