From 9fb791e9fad6c63fc1dac49f4d05ae63b8a3db9b Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Tue, 5 Jan 2016 11:55:15 +0200 Subject: Rename build directory/namespace to build2 --- build2/token | 73 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 build2/token (limited to 'build2/token') diff --git a/build2/token b/build2/token new file mode 100644 index 0000000..55ab1ee --- /dev/null +++ b/build2/token @@ -0,0 +1,73 @@ +// file : build2/token -*- C++ -*- +// copyright : Copyright (c) 2014-2015 Code Synthesis Ltd +// license : MIT; see accompanying LICENSE file + +#ifndef BUILD2_TOKEN +#define BUILD2_TOKEN + +#include +#include +#include // size_t +#include // uint64_t +#include // move + +namespace build2 +{ + enum class token_type + { + eos, + name, + newline, + pair_separator, + colon, + lcbrace, + rcbrace, + equal, + equal_plus, + plus_equal, + dollar, + lparen, + rparen + }; + + class token + { + public: + token_type type; + bool separated; // Whitespace-separated from the previous token. + bool quoted; // Name (or some part of it) was quoted. + + char pair; // Only valid for pair_separator. + std::string value; // Only valid for name. + + std::uint64_t line; + std::uint64_t column; + + public: + token (token_type t, bool s, std::uint64_t l, std::uint64_t c) + : type (t), separated (s), quoted (false), line (l), column (c) {} + + token (char p, bool s, std::uint64_t l, std::uint64_t c) + : type (token_type::pair_separator), + separated (s), + quoted (false), + pair (p), + line (l), + column (c) {} + + token (std::string n, bool s, bool q, std::uint64_t l, std::uint64_t c) + : type (token_type::name), + separated (s), + quoted (q), + value (std::move (n)), + line (l), + column (c) {} + }; + + // Output the token value in a format suitable for diagnostics. + // + std::ostream& + operator<< (std::ostream&, const token&); +} + +#endif // BUILD2_TOKEN -- cgit v1.1