| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- // Part of the Carbon Language project, under the Apache License v2.0 with LLVM
- // Exceptions. See /LICENSE for license information.
- // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
- #include "toolchain/lex/token_kind.h"
- namespace Carbon::Lex {
- CARBON_DEFINE_ENUM_CLASS_NAMES(TokenKind) {
- #define CARBON_TOKEN(TokenName) CARBON_ENUM_CLASS_NAME_STRING(TokenName)
- #include "toolchain/lex/token_kind.def"
- };
- constexpr bool TokenKind::IsSymbol[] = {
- #define CARBON_TOKEN(TokenName) false,
- #define CARBON_SYMBOL_TOKEN(TokenName, Spelling) true,
- #include "toolchain/lex/token_kind.def"
- };
- constexpr bool TokenKind::IsGroupingSymbol[] = {
- #define CARBON_TOKEN(TokenName) false,
- #define CARBON_OPENING_GROUP_SYMBOL_TOKEN(TokenName, Spelling, ClosingName) \
- true,
- #define CARBON_CLOSING_GROUP_SYMBOL_TOKEN(TokenName, Spelling, OpeningName) \
- true,
- #include "toolchain/lex/token_kind.def"
- };
- constexpr bool TokenKind::IsOpeningSymbol[] = {
- #define CARBON_TOKEN(TokenName) false,
- #define CARBON_OPENING_GROUP_SYMBOL_TOKEN(TokenName, Spelling, ClosingName) \
- true,
- #include "toolchain/lex/token_kind.def"
- };
- constexpr TokenKind TokenKind::ClosingSymbol[] = {
- #define CARBON_TOKEN(TokenName) Error,
- #define CARBON_OPENING_GROUP_SYMBOL_TOKEN(TokenName, Spelling, ClosingName) \
- ClosingName,
- #include "toolchain/lex/token_kind.def"
- };
- constexpr bool TokenKind::IsClosingSymbol[] = {
- #define CARBON_TOKEN(TokenName) false,
- #define CARBON_CLOSING_GROUP_SYMBOL_TOKEN(TokenName, Spelling, OpeningName) \
- true,
- #include "toolchain/lex/token_kind.def"
- };
- constexpr TokenKind TokenKind::OpeningSymbol[] = {
- #define CARBON_TOKEN(TokenName) Error,
- #define CARBON_CLOSING_GROUP_SYMBOL_TOKEN(TokenName, Spelling, OpeningName) \
- OpeningName,
- #include "toolchain/lex/token_kind.def"
- };
- constexpr bool TokenKind::IsOneCharSymbol[] = {
- #define CARBON_TOKEN(TokenName) false,
- #define CARBON_ONE_CHAR_SYMBOL_TOKEN(TokenName, Spelling) true,
- #include "toolchain/lex/token_kind.def"
- };
- constexpr bool TokenKind::IsKeyword[] = {
- #define CARBON_TOKEN(TokenName) false,
- #define CARBON_KEYWORD_TOKEN(TokenName, Spelling) true,
- #include "toolchain/lex/token_kind.def"
- };
- constexpr llvm::StringLiteral TokenKind::FixedSpelling[] = {
- #define CARBON_TOKEN(TokenName) "",
- #define CARBON_SYMBOL_TOKEN(TokenName, Spelling) Spelling,
- #define CARBON_KEYWORD_TOKEN(TokenName, Spelling) Spelling,
- #include "toolchain/lex/token_kind.def"
- };
- constexpr int8_t TokenKind::ExpectedParseTreeSize[] = {
- #define CARBON_TOKEN(Name) 1,
- #define CARBON_TOKEN_WITH_VIRTUAL_NODE(size) 2,
- #include "toolchain/lex/token_kind.def"
- };
- } // namespace Carbon::Lex
|