53 lines
674 B
C++
53 lines
674 B
C++
#ifndef code__query__token_hxx_
|
|
#define code__query__token_hxx_
|
|
|
|
#include <code/query/types.hxx>
|
|
|
|
#include <iostream>
|
|
|
|
namespace code::query
|
|
{
|
|
|
|
enum class token_type_t
|
|
{
|
|
end,
|
|
|
|
simple_term,
|
|
quoted_term,
|
|
|
|
colon,
|
|
|
|
logical_and,
|
|
logical_not,
|
|
logical_or,
|
|
|
|
open_parens,
|
|
close_parens
|
|
|
|
};
|
|
|
|
class token_t
|
|
{
|
|
public:
|
|
explicit
|
|
token_t(token_type_t, optional<string> = nullopt);
|
|
|
|
token_type_t
|
|
type() const;
|
|
|
|
optional<string> const&
|
|
value() const;
|
|
|
|
private:
|
|
token_type_t type_;
|
|
optional<string> value_;
|
|
|
|
};
|
|
|
|
std::ostream&
|
|
operator<<(std::ostream&, token_t const&);
|
|
|
|
} // namespace code::query
|
|
|
|
#endif
|