diff options
author | Karen Arutyunov <karen@codesynthesis.com> | 2020-04-08 14:51:57 +0300 |
---|---|---|
committer | Karen Arutyunov <karen@codesynthesis.com> | 2020-04-27 11:38:53 +0300 |
commit | 720c5a33b6a49cf328fdd7611f49153cf8f60247 (patch) | |
tree | 9725f3d1f42ec90fde84520f49647edea013ce5e /cli/lexer.hxx | |
parent | 3183f3bb927a90783ae0aeaf190a0919377aabe4 (diff) |
Separate tests and examples into individual packages
Also make cli module to be explicitly enabled via the config.cli configuration
variable.
Diffstat (limited to 'cli/lexer.hxx')
-rw-r--r-- | cli/lexer.hxx | 142 |
1 files changed, 0 insertions, 142 deletions
diff --git a/cli/lexer.hxx b/cli/lexer.hxx deleted file mode 100644 index bd7b0c9..0000000 --- a/cli/lexer.hxx +++ /dev/null @@ -1,142 +0,0 @@ -// file : cli/lexer.hxx -// author : Boris Kolpackov <boris@codesynthesis.com> -// license : MIT; see accompanying LICENSE file - -#ifndef CLI_LEXER_HXX -#define CLI_LEXER_HXX - -#include <map> -#include <string> -#include <locale> -#include <cstddef> // std::size_t -#include <istream> - -#include <cli/token.hxx> - -class lexer -{ -public: - lexer (std::istream& is, std::string const& id); - - token - next (); - - bool - valid () const; - -protected: - class xchar - { - public: - typedef std::char_traits<char> traits_type; - typedef traits_type::int_type int_type; - typedef traits_type::char_type char_type; - - xchar (int_type v, std::size_t l, std::size_t c); - - operator char_type () const; - - int_type - value () const; - - std::size_t - line () const; - - std::size_t - column () const; - - private: - int_type v_; - std::size_t l_; - std::size_t c_; - }; - - xchar - peek (); - - xchar - get (); - - void - unget (xchar); - -protected: - class invalid_input {}; - - void - skip_spaces (); - - token - identifier (xchar); - - token - int_literal (xchar, - bool neg = false, - std::size_t ml = 0, - std::size_t mc = 0); - - token - char_literal (xchar); - - token - string_literal (xchar); - - std::string - string_literal_trailer (); - - token - path_literal (xchar); - - token - call_expression (xchar); - - token - template_expression (xchar); - -protected: - bool - is_alpha (char c) const; - - bool - is_oct_digit (char c) const; - - bool - is_dec_digit (char c) const; - - bool - is_hex_digit (char c) const; - - bool - is_alnum (char c) const; - - bool - is_space (char c) const; - - bool - is_eos (xchar const& c) const; - - char - to_upper (char c) const; - -private: - typedef std::map<std::string, token::keyword_type> keyword_map; - - std::locale loc_; - std::istream& is_; - std::string id_; - std::size_t l_; - std::size_t c_; - - keyword_map keyword_map_; - - bool eos_; - bool include_; // Literal in include or source. - bool valid_; - - xchar buf_; - bool unget_; -}; - -#include <cli/lexer.ixx> - -#endif // CLI_LEXER_HXX |