summaryrefslogtreecommitdiff
path: root/cli/lexer.hxx
diff options
context:
space:
mode:
authorKaren Arutyunov <karen@codesynthesis.com>2020-04-08 14:51:57 +0300
committerKaren Arutyunov <karen@codesynthesis.com>2020-04-27 11:38:53 +0300
commit720c5a33b6a49cf328fdd7611f49153cf8f60247 (patch)
tree9725f3d1f42ec90fde84520f49647edea013ce5e /cli/lexer.hxx
parent3183f3bb927a90783ae0aeaf190a0919377aabe4 (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.hxx142
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