Token.h 999 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. /*
  2. * Copyright (c) 2023, Sam Atkins <atkinssj@serenityos.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include <LibCMake/Position.h>
  8. namespace CMake::Cache {
  9. struct Token {
  10. enum class Type {
  11. Comment,
  12. HelpText,
  13. Key,
  14. Colon,
  15. Type,
  16. Equals,
  17. Value,
  18. Garbage,
  19. };
  20. Type type;
  21. StringView value;
  22. Position start;
  23. Position end;
  24. };
  25. static constexpr StringView to_string(Token::Type type)
  26. {
  27. switch (type) {
  28. case Token::Type::Comment:
  29. return "Comment"sv;
  30. case Token::Type::HelpText:
  31. return "HelpText"sv;
  32. case Token::Type::Key:
  33. return "Key"sv;
  34. case Token::Type::Colon:
  35. return "Colon"sv;
  36. case Token::Type::Type:
  37. return "Type"sv;
  38. case Token::Type::Equals:
  39. return "Equals"sv;
  40. case Token::Type::Value:
  41. return "Value"sv;
  42. case Token::Type::Garbage:
  43. return "Garbage"sv;
  44. }
  45. VERIFY_NOT_REACHED();
  46. }
  47. }