|
|
@@ -21,6 +21,8 @@
|
|
|
// - CARBON_KEYWORD_TOKEN(Name, Spelling)
|
|
|
// Defines a keyword which has the provided spelling, such as `if`.
|
|
|
// Spellings must be unique.
|
|
|
+// - CARBON_DECL_INTRODUCER_TOKEN(Name, Spelling)
|
|
|
+// A declaration introducer keyword, such as `fn`.
|
|
|
// - CARBON_TOKEN_WITH_VIRTUAL_NODE(TokenIndex)
|
|
|
// Wrapped around one of the above _TOKEN macros, indicates that this
|
|
|
// token has one additional virtual node in the parse tree.
|
|
|
@@ -137,53 +139,62 @@ CARBON_CLOSING_GROUP_SYMBOL_TOKEN(CloseSquareBracket, "]", OpenSquareBracket)
|
|
|
#ifndef CARBON_KEYWORD_TOKEN
|
|
|
#define CARBON_KEYWORD_TOKEN(Name, Spelling) CARBON_TOKEN(Name)
|
|
|
#endif
|
|
|
+
|
|
|
+#ifndef CARBON_DECL_INTRODUCER_TOKEN
|
|
|
+#define CARBON_DECL_INTRODUCER_TOKEN(Name, Spelling) \
|
|
|
+ CARBON_KEYWORD_TOKEN(Name, Spelling)
|
|
|
+#endif
|
|
|
+
|
|
|
// clang-format off
|
|
|
+
|
|
|
+CARBON_DECL_INTRODUCER_TOKEN(Adapt, "adapt")
|
|
|
+CARBON_DECL_INTRODUCER_TOKEN(Alias, "alias")
|
|
|
+CARBON_DECL_INTRODUCER_TOKEN(Base, "base")
|
|
|
+CARBON_DECL_INTRODUCER_TOKEN(Class, "class")
|
|
|
+CARBON_DECL_INTRODUCER_TOKEN(Constraint, "constraint")
|
|
|
+CARBON_DECL_INTRODUCER_TOKEN(Export, "export")
|
|
|
+CARBON_DECL_INTRODUCER_TOKEN(Fn, "fn")
|
|
|
+CARBON_DECL_INTRODUCER_TOKEN(Impl, "impl")
|
|
|
+CARBON_DECL_INTRODUCER_TOKEN(Import, "import")
|
|
|
+CARBON_DECL_INTRODUCER_TOKEN(Interface, "interface")
|
|
|
+CARBON_DECL_INTRODUCER_TOKEN(Let, "let")
|
|
|
+CARBON_DECL_INTRODUCER_TOKEN(Library, "library")
|
|
|
+CARBON_DECL_INTRODUCER_TOKEN(Namespace, "namespace")
|
|
|
+CARBON_DECL_INTRODUCER_TOKEN(Package, "package")
|
|
|
+CARBON_DECL_INTRODUCER_TOKEN(Var, "var")
|
|
|
+
|
|
|
CARBON_KEYWORD_TOKEN(Abstract, "abstract")
|
|
|
-CARBON_KEYWORD_TOKEN(Adapt, "adapt")
|
|
|
CARBON_KEYWORD_TOKEN(Addr, "addr")
|
|
|
-CARBON_KEYWORD_TOKEN(Alias, "alias")
|
|
|
CARBON_TOKEN_WITH_VIRTUAL_NODE(
|
|
|
CARBON_KEYWORD_TOKEN(And, "and"))
|
|
|
CARBON_KEYWORD_TOKEN(Api, "api")
|
|
|
CARBON_KEYWORD_TOKEN(As, "as")
|
|
|
CARBON_KEYWORD_TOKEN(Auto, "auto")
|
|
|
-CARBON_KEYWORD_TOKEN(Base, "base")
|
|
|
CARBON_KEYWORD_TOKEN(Bool, "bool")
|
|
|
CARBON_KEYWORD_TOKEN(Break, "break")
|
|
|
CARBON_KEYWORD_TOKEN(Case, "case")
|
|
|
CARBON_KEYWORD_TOKEN(Choice, "choice")
|
|
|
-CARBON_KEYWORD_TOKEN(Class, "class")
|
|
|
CARBON_KEYWORD_TOKEN(Const, "const")
|
|
|
-CARBON_KEYWORD_TOKEN(Constraint, "constraint")
|
|
|
CARBON_KEYWORD_TOKEN(Continue, "continue")
|
|
|
CARBON_KEYWORD_TOKEN(Default, "default")
|
|
|
CARBON_KEYWORD_TOKEN(Destructor, "destructor")
|
|
|
CARBON_KEYWORD_TOKEN(Else, "else")
|
|
|
-CARBON_KEYWORD_TOKEN(Export, "export")
|
|
|
CARBON_KEYWORD_TOKEN(Extend, "extend")
|
|
|
CARBON_KEYWORD_TOKEN(Extern, "extern")
|
|
|
CARBON_KEYWORD_TOKEN(False, "false")
|
|
|
CARBON_KEYWORD_TOKEN(Final, "final")
|
|
|
-CARBON_KEYWORD_TOKEN(Fn, "fn")
|
|
|
CARBON_KEYWORD_TOKEN(For, "for")
|
|
|
CARBON_KEYWORD_TOKEN(Forall, "forall")
|
|
|
CARBON_KEYWORD_TOKEN(Friend, "friend")
|
|
|
CARBON_KEYWORD_TOKEN(If, "if")
|
|
|
-CARBON_KEYWORD_TOKEN(Impl, "impl")
|
|
|
CARBON_KEYWORD_TOKEN(Impls, "impls")
|
|
|
-CARBON_KEYWORD_TOKEN(Import, "import")
|
|
|
CARBON_KEYWORD_TOKEN(In, "in")
|
|
|
-CARBON_KEYWORD_TOKEN(Interface, "interface")
|
|
|
-CARBON_KEYWORD_TOKEN(Let, "let")
|
|
|
-CARBON_KEYWORD_TOKEN(Library, "library")
|
|
|
CARBON_KEYWORD_TOKEN(Like, "like")
|
|
|
CARBON_KEYWORD_TOKEN(Match, "match")
|
|
|
-CARBON_KEYWORD_TOKEN(Namespace, "namespace")
|
|
|
CARBON_KEYWORD_TOKEN(Not, "not")
|
|
|
CARBON_KEYWORD_TOKEN(Observe, "observe")
|
|
|
CARBON_TOKEN_WITH_VIRTUAL_NODE(
|
|
|
CARBON_KEYWORD_TOKEN(Or, "or"))
|
|
|
-CARBON_KEYWORD_TOKEN(Package, "package")
|
|
|
CARBON_KEYWORD_TOKEN(Partial, "partial")
|
|
|
CARBON_KEYWORD_TOKEN(Private, "private")
|
|
|
CARBON_KEYWORD_TOKEN(Protected, "protected")
|
|
|
@@ -200,11 +211,12 @@ CARBON_KEYWORD_TOKEN(True, "true")
|
|
|
CARBON_KEYWORD_TOKEN(Type, "type")
|
|
|
// Underscore is tokenized as a keyword because it's part of identifiers.
|
|
|
CARBON_KEYWORD_TOKEN(Underscore, "_")
|
|
|
-CARBON_KEYWORD_TOKEN(Var, "var")
|
|
|
CARBON_KEYWORD_TOKEN(Virtual, "virtual")
|
|
|
CARBON_KEYWORD_TOKEN(Where, "where")
|
|
|
CARBON_KEYWORD_TOKEN(While, "while")
|
|
|
+
|
|
|
// clang-format on
|
|
|
+#undef CARBON_DECL_INTRODUCER_TOKEN
|
|
|
#undef CARBON_KEYWORD_TOKEN
|
|
|
|
|
|
CARBON_TOKEN(Identifier)
|