diff options
| author | Fuwn <[email protected]> | 2022-07-03 19:44:59 -0700 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2022-07-03 19:44:59 -0700 |
| commit | 9ab0f74aa643dc5d27508e9b2043f0c476f8f928 (patch) | |
| tree | 28865c9003efc06615258a965b1d766386fb8805 /src/token.hh | |
| parent | fix(cli): initialise padding (diff) | |
| download | cait-9ab0f74aa643dc5d27508e9b2043f0c476f8f928.tar.xz cait-9ab0f74aa643dc5d27508e9b2043f0c476f8f928.zip | |
chore(ninja): rename src_dir
Diffstat (limited to 'src/token.hh')
| -rw-r--r-- | src/token.hh | 153 |
1 files changed, 0 insertions, 153 deletions
diff --git a/src/token.hh b/src/token.hh deleted file mode 100644 index 44f8f69..0000000 --- a/src/token.hh +++ /dev/null @@ -1,153 +0,0 @@ -// This file is part of Cait <https://github.com/Fuwn/cait>. -// Copyright (C) 2022-2022 Fuwn <[email protected]> -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, version 3. -// -// This program is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see <http://www.gnu.org/licenses/>. -// -// Copyright (C) 2022-2022 Fuwn <[email protected]> -// SPDX-License-Identifier: GPL-3.0-only - -#ifndef TOKEN_HH -#define TOKEN_HH - -#include <string> -#include <vector> - -#include "utility.hh" - -namespace cait { - -struct token; - -using token_tree = std::vector<std::vector<token>>; - -// https://stackoverflow.com/a/53284026/14452787 -class token_type { -public: - enum token_type_value { - rule_declaration, - rule_command, - rule_depfile, - rule_deps, - rule_msvc_deps_prefix, - rule_description, - rule_dyndep, - rule_generator, - rule_in, - rule_in_newline, - rule_out, - rule_restat, - rule_rspfile, - rule_rspfile_content, - build_declaration, - build_input, - build_rule, - build_output, - default_declaration, - default_target, - string_literal, - variable_declaration, - variable_value, - assignment_operator, - identifier, - pool_declaration, - pool_depth, - subninja_declaration, - include_declaration - }; - -private: - token_type_value value; - [[maybe_unused]] int padding; - -public: - token_type() = default; - constexpr token_type(token_type_value _value) : value(_value) {} - [[nodiscard]] constexpr std::string string() const { - switch (this->value) { - case rule_declaration: - return "rule_declaration"; - case rule_command: - return "rule_command"; - case rule_depfile: - return "rule_depfile"; - case rule_deps: - return "rule_deps"; - case rule_msvc_deps_prefix: - return "rule_msvc_deps_prefix"; - case rule_description: - return "rule_description"; - case rule_dyndep: - return "rule_dyndep"; - case rule_generator: - return "rule_generator"; - case rule_in: - return "rule_in"; - case rule_in_newline: - return "rule_in_newline"; - case rule_out: - return "rule_out"; - case rule_restat: - return "rule_restat"; - case rule_rspfile: - return "rule_rspfile"; - case rule_rspfile_content: - return "rule_rspfile_content"; - case build_declaration: - return "build_declaration"; - case build_input: - return "build_input"; - case build_rule: - return "build_rule"; - case default_declaration: - return "default_declaration"; - case default_target: - return "default_target"; - case string_literal: - return "string_literal"; - case variable_declaration: - return "variable_declaration"; - case variable_value: - return "variable_value"; - case assignment_operator: - return "assignment_operator"; - case identifier: - return "identifier"; - case build_output: - return "build_output"; - case pool_declaration: - return "pool_declaration"; - case pool_depth: - return "pool_depth"; - case subninja_declaration: - return "subninja_declaration"; - case include_declaration: - return "include_declaration"; - } - } - constexpr operator token_type_value() const { return this->value; } -}; - -struct token { - std::size_t line; - [[maybe_unused]] std::size_t begin; - [[maybe_unused]] std::size_t end; - std::string word; - token_type type{}; - - token(std::size_t, std::size_t, std::size_t, const std::string &); - auto with_type(token_type) -> token; -}; - -} // namespace cait - -#endif // TOKEN_HH |