Files
carbon-lang/toolchain/parse/node_kind.def
T
Chandler Carruth f58de06c0d parse, lex: Decompose AST extraction and forward-declare dump types (#7645)
- Enhance toolchain/parse/node_kind.def with category x-macros
(CARBON_PARSE_NODE_KIND_DECLARATION, CARBON_PARSE_NODE_KIND_EXPRESSION,
CARBON_PARSE_NODE_KIND_PATTERN, CARBON_PARSE_NODE_KIND_STATEMENT) that
default to CARBON_PARSE_NODE_KIND, keeping node_kind.def as the single
source of truth without manual expansion divergence.
- Decompose the monolithic toolchain/parse/extract.cpp translation unit
into separate compilation units for declarations, expressions, patterns,
and statements by expanding respective category x-macros.
- Forward-declare Tree and TokenizedBuffer in parse and lex dump headers
to reduce header inclusion depth.

Assisted-by: Antigravity with Gemini
2026-08-17 17:39:42 +00:00

491 lines
20 KiB
C++

// 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
//
// This is an X-macro header. It does not use guards, and instead is
// designed to be ed after the x-macro is defined in order for its
// inclusion to expand to the desired output. Macro definitions are cleaned up
// at the end of this file.
//
// Supported x-macros are:
// - CARBON_PARSE_NODE_KIND(Name)
// Used as a fallback if other macros are missing. Also, used directly
// when none of the below category-oriented macros apply.
// - CARBON_PARSE_NODE_KIND_DECLARATION(Name)
// Defines a parse node for a declaration or namespace structure.
// - CARBON_PARSE_NODE_KIND_EXPRESSION(Name)
// Defines a parse node for an expression, literal, or operator.
// - CARBON_PARSE_NODE_KIND_PATTERN(Name)
// Defines a parse node for a pattern, parameter list, binding, or modifier.
// - CARBON_PARSE_NODE_KIND_STATEMENT(Name)
// Defines a parse node for a statement or control-flow construct.
// - CARBON_PARSE_NODE_KIND_PREFIX_OPERATOR(Name)
// Defines a parse node for a prefix operator, with the Name as token.
// - CARBON_PARSE_NODE_KIND_INFIX_OPERATOR(Name)
// Defines a parse node for an infix operator, with the Name as token.
// - CARBON_PARSE_NODE_KIND_POSTFIX_OPERATOR(Name)
// Defines a parse node for a postfix operator, with the Name as token.
// - CARBON_PARSE_NODE_KIND_TOKEN_LITERAL(Name, LexTokenKind)
// Defines a parse node that corresponds to a token that is a single-token
// literal.
// - CARBON_PARSE_NODE_KIND_TOKEN_MODIFIER(Name)
// A token-based modifier. The Name is the TokenKind, and will be appended
// with "Modifier" for the parse kind.
//
// LexTokenKind indicates the token kind required on a valid node.
//
// Parse nodes are clustered based on language feature. See typed_nodes.h for
// the expected tree structure under each node kind.
#if !defined(CARBON_PARSE_NODE_KIND)
#error "Must define CARBON_PARSE_NODE_KIND family x-macros to use this file."
#define CARBON_PARSE_NODE_KIND(Name)
#endif
// This is expected to be used with something like:
//
// // Use x-macros to handle declaration cases.
// #define CARBON_PARSE_NODE_KIND(Name)
// #define CARBON_PARSE_NODE_KIND_DECLARATION(Name) <code>
#ifndef CARBON_PARSE_NODE_KIND_DECLARATION
#define CARBON_PARSE_NODE_KIND_DECLARATION(Name) CARBON_PARSE_NODE_KIND(Name)
#endif
// This is expected to be used with something like:
//
// // Use x-macros to handle expression cases.
// #define CARBON_PARSE_NODE_KIND(Name)
// #define CARBON_PARSE_NODE_KIND_EXPRESSION(Name) <code>
#ifndef CARBON_PARSE_NODE_KIND_EXPRESSION
#define CARBON_PARSE_NODE_KIND_EXPRESSION(Name) CARBON_PARSE_NODE_KIND(Name)
#endif
// This is expected to be used with something like:
//
// // Use x-macros to handle pattern cases.
// #define CARBON_PARSE_NODE_KIND(Name)
// #define CARBON_PARSE_NODE_KIND_PATTERN(Name) <code>
#ifndef CARBON_PARSE_NODE_KIND_PATTERN
#define CARBON_PARSE_NODE_KIND_PATTERN(Name) CARBON_PARSE_NODE_KIND(Name)
#endif
// This is expected to be used with something like:
//
// // Use x-macros to handle statement cases.
// #define CARBON_PARSE_NODE_KIND(Name)
// #define CARBON_PARSE_NODE_KIND_STATEMENT(Name) <code>
#ifndef CARBON_PARSE_NODE_KIND_STATEMENT
#define CARBON_PARSE_NODE_KIND_STATEMENT(Name) CARBON_PARSE_NODE_KIND(Name)
#endif
// This is expected to be used with something like:
//
// // Use x-macros to handle prefix operator cases.
// #define CARBON_PARSE_NODE_KIND(Name)
// #define CARBON_PARSE_NODE_KIND_PREFIX_OPERATOR(Name) <code>
#ifndef CARBON_PARSE_NODE_KIND_PREFIX_OPERATOR
#define CARBON_PARSE_NODE_KIND_PREFIX_OPERATOR(Name) \
CARBON_PARSE_NODE_KIND_EXPRESSION(PrefixOperator##Name)
#endif
// This is expected to be used with something like:
//
// // Use x-macros to handle infix operator cases.
// #define CARBON_PARSE_NODE_KIND(Name)
// #define CARBON_PARSE_NODE_KIND_INFIX_OPERATOR(Name) <code>
#ifndef CARBON_PARSE_NODE_KIND_INFIX_OPERATOR
#define CARBON_PARSE_NODE_KIND_INFIX_OPERATOR(Name) \
CARBON_PARSE_NODE_KIND_EXPRESSION(InfixOperator##Name)
#endif
// This is expected to be used with something like:
//
// // Use x-macros to handle postfix operator cases.
// #define CARBON_PARSE_NODE_KIND(Name)
// #define CARBON_PARSE_NODE_KIND_POSTFIX_OPERATOR(Name) <code>
#ifndef CARBON_PARSE_NODE_KIND_POSTFIX_OPERATOR
#define CARBON_PARSE_NODE_KIND_POSTFIX_OPERATOR(Name) \
CARBON_PARSE_NODE_KIND_EXPRESSION(PostfixOperator##Name)
#endif
// This is expected to be used with something like:
//
// // Use x-macros to handle literal cases.
// #define CARBON_PARSE_NODE_KIND(Name)
// #define CARBON_PARSE_NODE_KIND_TOKEN_LITERAL(Name, LexTokenKind) <code>
#ifndef CARBON_PARSE_NODE_KIND_TOKEN_LITERAL
#define CARBON_PARSE_NODE_KIND_TOKEN_LITERAL(Name, LexTokenKind) \
CARBON_PARSE_NODE_KIND_EXPRESSION(Name)
#endif
// This is expected to be used with something like:
//
// // Use x-macros to handle modifier cases.
// #define CARBON_PARSE_NODE_KIND(Name)
// #define CARBON_PARSE_NODE_KIND_TOKEN_MODIFIER(Name) <code>
#ifndef CARBON_PARSE_NODE_KIND_TOKEN_MODIFIER
#define CARBON_PARSE_NODE_KIND_TOKEN_MODIFIER(Name) \
CARBON_PARSE_NODE_KIND_PATTERN(Name##Modifier)
#endif
CARBON_PARSE_NODE_KIND_DECLARATION(FileStart)
CARBON_PARSE_NODE_KIND_DECLARATION(FileEnd)
CARBON_PARSE_NODE_KIND_DECLARATION(InvalidParse)
CARBON_PARSE_NODE_KIND_DECLARATION(InvalidParseStart)
CARBON_PARSE_NODE_KIND_DECLARATION(InvalidParseSubtree)
CARBON_PARSE_NODE_KIND_DECLARATION(Placeholder)
CARBON_PARSE_NODE_KIND_DECLARATION(EmptyDecl)
CARBON_PARSE_NODE_KIND_DECLARATION(IdentifierNameNotBeforeSignature)
CARBON_PARSE_NODE_KIND_DECLARATION(IdentifierNameMaybeBeforeSignature)
CARBON_PARSE_NODE_KIND_DECLARATION(IdentifierNameExpr)
CARBON_PARSE_NODE_KIND_DECLARATION(SelfValueName)
CARBON_PARSE_NODE_KIND_DECLARATION(SelfValueNameExpr)
CARBON_PARSE_NODE_KIND_DECLARATION(SelfTypeNameExpr)
CARBON_PARSE_NODE_KIND_DECLARATION(UnderscoreName)
CARBON_PARSE_NODE_KIND_DECLARATION(BaseName)
CARBON_PARSE_NODE_KIND_DECLARATION(PackageExpr)
CARBON_PARSE_NODE_KIND_DECLARATION(CoreNameExpr)
CARBON_PARSE_NODE_KIND_DECLARATION(CppNameExpr)
CARBON_PARSE_NODE_KIND_DECLARATION(IdentifierPackageName)
CARBON_PARSE_NODE_KIND_DECLARATION(CorePackageName)
CARBON_PARSE_NODE_KIND_DECLARATION(CppPackageName)
CARBON_PARSE_NODE_KIND_DECLARATION(LibraryName)
CARBON_PARSE_NODE_KIND_DECLARATION(PackageIntroducer)
CARBON_PARSE_NODE_KIND_DECLARATION(PackageDecl)
CARBON_PARSE_NODE_KIND_DECLARATION(ImportIntroducer)
CARBON_PARSE_NODE_KIND_DECLARATION(ImportDecl)
CARBON_PARSE_NODE_KIND_DECLARATION(DefaultLibrary)
CARBON_PARSE_NODE_KIND_DECLARATION(LibraryIntroducer)
CARBON_PARSE_NODE_KIND_DECLARATION(LibraryDecl)
CARBON_PARSE_NODE_KIND_DECLARATION(LibrarySpecifier)
CARBON_PARSE_NODE_KIND_DECLARATION(InlineImportSpecifier)
CARBON_PARSE_NODE_KIND_DECLARATION(InlineImportBody)
CARBON_PARSE_NODE_KIND_DECLARATION(InlineIntroducer)
CARBON_PARSE_NODE_KIND_DECLARATION(InlineCppDecl)
CARBON_PARSE_NODE_KIND_DECLARATION(IdentifierNameQualifierWithParams)
CARBON_PARSE_NODE_KIND_DECLARATION(IdentifierNameQualifierWithoutParams)
CARBON_PARSE_NODE_KIND_DECLARATION(ExportIntroducer)
CARBON_PARSE_NODE_KIND_DECLARATION(ExportDecl)
CARBON_PARSE_NODE_KIND_DECLARATION(NamespaceStart)
CARBON_PARSE_NODE_KIND_DECLARATION(Namespace)
CARBON_PARSE_NODE_KIND_STATEMENT(MatchFirstIntroducer)
CARBON_PARSE_NODE_KIND_STATEMENT(MatchFirstDefinitionStart)
CARBON_PARSE_NODE_KIND_STATEMENT(MatchFirst)
CARBON_PARSE_NODE_KIND_STATEMENT(CodeBlockStart)
CARBON_PARSE_NODE_KIND_STATEMENT(CodeBlock)
CARBON_PARSE_NODE_KIND_DECLARATION(FunctionIntroducer)
CARBON_PARSE_NODE_KIND_DECLARATION(LambdaIntroducer)
CARBON_PARSE_NODE_KIND_DECLARATION(ReturnType)
CARBON_PARSE_NODE_KIND_DECLARATION(ReturnForm)
CARBON_PARSE_NODE_KIND_DECLARATION(FunctionDefinitionStart)
CARBON_PARSE_NODE_KIND_DECLARATION(FunctionDefinition)
CARBON_PARSE_NODE_KIND_DECLARATION(FunctionTerseDefinition)
CARBON_PARSE_NODE_KIND_DECLARATION(FunctionDecl)
CARBON_PARSE_NODE_KIND_DECLARATION(Lambda)
CARBON_PARSE_NODE_KIND_DECLARATION(TerseBodyArrow)
CARBON_PARSE_NODE_KIND_DECLARATION(BuiltinFunctionDefinitionStart)
CARBON_PARSE_NODE_KIND_DECLARATION(BuiltinName)
CARBON_PARSE_NODE_KIND_DECLARATION(BuiltinFunctionDefinition)
CARBON_PARSE_NODE_KIND_DECLARATION(AliasIntroducer)
CARBON_PARSE_NODE_KIND_DECLARATION(AliasInitializer)
CARBON_PARSE_NODE_KIND_DECLARATION(Alias)
CARBON_PARSE_NODE_KIND_PATTERN(TuplePatternStart)
CARBON_PARSE_NODE_KIND_PATTERN(PatternListComma)
CARBON_PARSE_NODE_KIND_PATTERN(ParenPattern)
CARBON_PARSE_NODE_KIND_PATTERN(TuplePattern)
CARBON_PARSE_NODE_KIND_PATTERN(StructPatternStart)
CARBON_PARSE_NODE_KIND_PATTERN(StructPatternDesignatedField)
CARBON_PARSE_NODE_KIND_PATTERN(StructPattern)
CARBON_PARSE_NODE_KIND_PATTERN(ExplicitParamListStart)
CARBON_PARSE_NODE_KIND_PATTERN(ExplicitParamList)
CARBON_PARSE_NODE_KIND_PATTERN(ImplicitParamListStart)
CARBON_PARSE_NODE_KIND_PATTERN(ImplicitParamList)
CARBON_PARSE_NODE_KIND_EXPRESSION(ArrayExprOpenParen)
CARBON_PARSE_NODE_KIND_EXPRESSION(ArrayExprKeyword)
CARBON_PARSE_NODE_KIND_EXPRESSION(ArrayExprComma)
CARBON_PARSE_NODE_KIND_EXPRESSION(ArrayExpr)
CARBON_PARSE_NODE_KIND_PATTERN(RefBindingName)
CARBON_PARSE_NODE_KIND_PATTERN(RuntimeBindingName)
CARBON_PARSE_NODE_KIND_PATTERN(UnusedPattern)
CARBON_PARSE_NODE_KIND_PATTERN(BindingPatternTypeStart)
CARBON_PARSE_NODE_KIND_PATTERN(LetBindingPattern)
CARBON_PARSE_NODE_KIND_PATTERN(SelfBindingPattern)
CARBON_PARSE_NODE_KIND_PATTERN(AssociatedConstantNameAndType)
CARBON_PARSE_NODE_KIND_PATTERN(VarBindingPattern)
CARBON_PARSE_NODE_KIND_PATTERN(FormBindingPattern)
CARBON_PARSE_NODE_KIND_PATTERN(TemplateBindingName)
CARBON_PARSE_NODE_KIND_PATTERN(CompileTimeBindingPatternTypeStart)
CARBON_PARSE_NODE_KIND_PATTERN(CompileTimeBindingPattern)
CARBON_PARSE_NODE_KIND_DECLARATION(LetIntroducer)
CARBON_PARSE_NODE_KIND_DECLARATION(LetInitializer)
CARBON_PARSE_NODE_KIND_DECLARATION(LetDecl)
CARBON_PARSE_NODE_KIND_DECLARATION(AssociatedConstantIntroducer)
CARBON_PARSE_NODE_KIND_DECLARATION(AssociatedConstantInitializer)
CARBON_PARSE_NODE_KIND_DECLARATION(AssociatedConstantDecl)
CARBON_PARSE_NODE_KIND_DECLARATION(VariableIntroducer)
CARBON_PARSE_NODE_KIND_PATTERN(ReturnedModifier)
CARBON_PARSE_NODE_KIND_DECLARATION(VariableInitializer)
CARBON_PARSE_NODE_KIND_DECLARATION(VariableDecl)
CARBON_PARSE_NODE_KIND_PATTERN(VariablePattern)
CARBON_PARSE_NODE_KIND_STATEMENT(ExprStatement)
CARBON_PARSE_NODE_KIND_STATEMENT(BreakStatementStart)
CARBON_PARSE_NODE_KIND_STATEMENT(BreakStatement)
CARBON_PARSE_NODE_KIND_STATEMENT(ContinueStatementStart)
CARBON_PARSE_NODE_KIND_STATEMENT(ContinueStatement)
CARBON_PARSE_NODE_KIND_STATEMENT(ReturnStatementStart)
CARBON_PARSE_NODE_KIND_STATEMENT(ReturnVarModifier)
CARBON_PARSE_NODE_KIND_STATEMENT(ReturnStatement)
CARBON_PARSE_NODE_KIND_STATEMENT(ForHeaderStart)
CARBON_PARSE_NODE_KIND_STATEMENT(ForIn)
CARBON_PARSE_NODE_KIND_STATEMENT(ForHeader)
CARBON_PARSE_NODE_KIND_STATEMENT(ForStatement)
CARBON_PARSE_NODE_KIND_STATEMENT(IfConditionStart)
CARBON_PARSE_NODE_KIND_STATEMENT(IfCondition)
CARBON_PARSE_NODE_KIND_STATEMENT(IfStatementElse)
CARBON_PARSE_NODE_KIND_STATEMENT(IfStatement)
CARBON_PARSE_NODE_KIND_STATEMENT(WhileConditionStart)
CARBON_PARSE_NODE_KIND_STATEMENT(WhileCondition)
CARBON_PARSE_NODE_KIND_STATEMENT(WhileStatement)
CARBON_PARSE_NODE_KIND_EXPRESSION(IndexExprStart)
CARBON_PARSE_NODE_KIND_EXPRESSION(IndexExpr)
CARBON_PARSE_NODE_KIND_EXPRESSION(RefPrimitiveForm)
CARBON_PARSE_NODE_KIND_EXPRESSION(VarPrimitiveForm)
CARBON_PARSE_NODE_KIND_EXPRESSION(ValPrimitiveForm)
CARBON_PARSE_NODE_KIND_EXPRESSION(FormLiteralKeyword)
CARBON_PARSE_NODE_KIND_EXPRESSION(FormLiteralOpenParen)
CARBON_PARSE_NODE_KIND_EXPRESSION(FormLiteral)
CARBON_PARSE_NODE_KIND_EXPRESSION(ParenExprStart)
CARBON_PARSE_NODE_KIND_EXPRESSION(ParenExpr)
CARBON_PARSE_NODE_KIND_EXPRESSION(TupleLiteralStart)
CARBON_PARSE_NODE_KIND_EXPRESSION(TupleLiteralComma)
CARBON_PARSE_NODE_KIND_EXPRESSION(TupleLiteral)
CARBON_PARSE_NODE_KIND_EXPRESSION(CallExprStart)
CARBON_PARSE_NODE_KIND_EXPRESSION(CallExpr)
CARBON_PARSE_NODE_KIND_EXPRESSION(MemberAccessExpr)
CARBON_PARSE_NODE_KIND_EXPRESSION(PointerMemberAccessExpr)
CARBON_PARSE_NODE_KIND_EXPRESSION(IntLiteral)
CARBON_PARSE_NODE_KIND_TOKEN_LITERAL(BoolLiteralFalse, False)
CARBON_PARSE_NODE_KIND_TOKEN_LITERAL(BoolLiteralTrue, True)
CARBON_PARSE_NODE_KIND_TOKEN_LITERAL(CharLiteral, CharLiteral)
CARBON_PARSE_NODE_KIND_TOKEN_LITERAL(RealLiteral, RealLiteral)
CARBON_PARSE_NODE_KIND_TOKEN_LITERAL(StringLiteral, StringLiteral)
CARBON_PARSE_NODE_KIND_TOKEN_LITERAL(AutoTypeLiteral, Auto)
CARBON_PARSE_NODE_KIND_TOKEN_LITERAL(BoolTypeLiteral, Bool)
CARBON_PARSE_NODE_KIND_TOKEN_LITERAL(CharTypeLiteral, Char)
CARBON_PARSE_NODE_KIND_TOKEN_LITERAL(FloatTypeLiteral, FloatTypeLiteral)
CARBON_PARSE_NODE_KIND_TOKEN_LITERAL(IntTypeLiteral, IntTypeLiteral)
CARBON_PARSE_NODE_KIND_TOKEN_LITERAL(StringTypeLiteral, Str)
CARBON_PARSE_NODE_KIND_TOKEN_LITERAL(TypeTypeLiteral, Type)
CARBON_PARSE_NODE_KIND_TOKEN_LITERAL(UnsignedIntTypeLiteral,
UnsignedIntTypeLiteral)
CARBON_PARSE_NODE_KIND_PREFIX_OPERATOR(Amp)
CARBON_PARSE_NODE_KIND_PREFIX_OPERATOR(Caret)
CARBON_PARSE_NODE_KIND_PREFIX_OPERATOR(Const)
CARBON_PARSE_NODE_KIND_PREFIX_OPERATOR(Not)
CARBON_PARSE_NODE_KIND_PREFIX_OPERATOR(Minus)
CARBON_PARSE_NODE_KIND_PREFIX_OPERATOR(MinusMinus)
CARBON_PARSE_NODE_KIND_PREFIX_OPERATOR(Partial)
CARBON_PARSE_NODE_KIND_PREFIX_OPERATOR(PlusPlus)
CARBON_PARSE_NODE_KIND_PREFIX_OPERATOR(Ref)
CARBON_PARSE_NODE_KIND_PREFIX_OPERATOR(Star)
CARBON_PARSE_NODE_KIND_INFIX_OPERATOR(Amp)
CARBON_PARSE_NODE_KIND_INFIX_OPERATOR(AmpEqual)
CARBON_PARSE_NODE_KIND_INFIX_OPERATOR(As)
CARBON_PARSE_NODE_KIND_INFIX_OPERATOR(Caret)
CARBON_PARSE_NODE_KIND_INFIX_OPERATOR(CaretEqual)
CARBON_PARSE_NODE_KIND_INFIX_OPERATOR(Equal)
CARBON_PARSE_NODE_KIND_INFIX_OPERATOR(EqualEqual)
CARBON_PARSE_NODE_KIND_INFIX_OPERATOR(ExclaimEqual)
CARBON_PARSE_NODE_KIND_INFIX_OPERATOR(Greater)
CARBON_PARSE_NODE_KIND_INFIX_OPERATOR(GreaterEqual)
CARBON_PARSE_NODE_KIND_INFIX_OPERATOR(GreaterGreater)
CARBON_PARSE_NODE_KIND_INFIX_OPERATOR(GreaterGreaterEqual)
CARBON_PARSE_NODE_KIND_INFIX_OPERATOR(Less)
CARBON_PARSE_NODE_KIND_INFIX_OPERATOR(LessEqual)
CARBON_PARSE_NODE_KIND_INFIX_OPERATOR(LessEqualGreater)
CARBON_PARSE_NODE_KIND_INFIX_OPERATOR(LessLess)
CARBON_PARSE_NODE_KIND_INFIX_OPERATOR(LessLessEqual)
CARBON_PARSE_NODE_KIND_INFIX_OPERATOR(Minus)
CARBON_PARSE_NODE_KIND_INFIX_OPERATOR(MinusEqual)
CARBON_PARSE_NODE_KIND_INFIX_OPERATOR(Percent)
CARBON_PARSE_NODE_KIND_INFIX_OPERATOR(PercentEqual)
CARBON_PARSE_NODE_KIND_INFIX_OPERATOR(Pipe)
CARBON_PARSE_NODE_KIND_INFIX_OPERATOR(PipeEqual)
CARBON_PARSE_NODE_KIND_INFIX_OPERATOR(Plus)
CARBON_PARSE_NODE_KIND_INFIX_OPERATOR(PlusEqual)
CARBON_PARSE_NODE_KIND_INFIX_OPERATOR(Slash)
CARBON_PARSE_NODE_KIND_INFIX_OPERATOR(SlashEqual)
CARBON_PARSE_NODE_KIND_INFIX_OPERATOR(Star)
CARBON_PARSE_NODE_KIND_INFIX_OPERATOR(StarEqual)
CARBON_PARSE_NODE_KIND_POSTFIX_OPERATOR(Star)
CARBON_PARSE_NODE_KIND_EXPRESSION(ShortCircuitOperandAnd)
CARBON_PARSE_NODE_KIND_EXPRESSION(ShortCircuitOperandOr)
CARBON_PARSE_NODE_KIND_EXPRESSION(ShortCircuitOperatorAnd)
CARBON_PARSE_NODE_KIND_EXPRESSION(ShortCircuitOperatorOr)
CARBON_PARSE_NODE_KIND_PATTERN(UnsafeModifier)
CARBON_PARSE_NODE_KIND_EXPRESSION(DesignatorExpr)
CARBON_PARSE_NODE_KIND_EXPRESSION(SelfTypeName)
CARBON_PARSE_NODE_KIND_EXPRESSION(RequirementAnd)
CARBON_PARSE_NODE_KIND_EXPRESSION(RequirementEqual)
CARBON_PARSE_NODE_KIND_EXPRESSION(RequirementEqualEqual)
CARBON_PARSE_NODE_KIND_EXPRESSION(RequirementImpls)
CARBON_PARSE_NODE_KIND_EXPRESSION(WhereExpr)
CARBON_PARSE_NODE_KIND_EXPRESSION(WhereOperand)
CARBON_PARSE_NODE_KIND_EXPRESSION(IfExprIf)
CARBON_PARSE_NODE_KIND_EXPRESSION(IfExprThen)
CARBON_PARSE_NODE_KIND_EXPRESSION(IfExprElse)
CARBON_PARSE_NODE_KIND_EXPRESSION(StructFieldDesignator)
CARBON_PARSE_NODE_KIND_EXPRESSION(StructLiteralStart)
CARBON_PARSE_NODE_KIND_EXPRESSION(StructLiteralField)
CARBON_PARSE_NODE_KIND_EXPRESSION(StructLiteralComma)
CARBON_PARSE_NODE_KIND_EXPRESSION(StructLiteral)
CARBON_PARSE_NODE_KIND_EXPRESSION(StructTypeLiteralStart)
CARBON_PARSE_NODE_KIND_EXPRESSION(StructTypeLiteralField)
CARBON_PARSE_NODE_KIND_EXPRESSION(StructTypeLiteralComma)
CARBON_PARSE_NODE_KIND_EXPRESSION(StructTypeLiteral)
CARBON_PARSE_NODE_KIND_PATTERN(ExternModifierWithLibrary)
CARBON_PARSE_NODE_KIND_PATTERN(ExternModifier)
CARBON_PARSE_NODE_KIND_TOKEN_MODIFIER(Abstract)
CARBON_PARSE_NODE_KIND_TOKEN_MODIFIER(Base)
CARBON_PARSE_NODE_KIND_TOKEN_MODIFIER(Default)
CARBON_PARSE_NODE_KIND_TOKEN_MODIFIER(Eval)
CARBON_PARSE_NODE_KIND_TOKEN_MODIFIER(Export)
CARBON_PARSE_NODE_KIND_TOKEN_MODIFIER(Extend)
CARBON_PARSE_NODE_KIND_TOKEN_MODIFIER(Final)
CARBON_PARSE_NODE_KIND_TOKEN_MODIFIER(Impl)
CARBON_PARSE_NODE_KIND_TOKEN_MODIFIER(MustEval)
CARBON_PARSE_NODE_KIND_TOKEN_MODIFIER(Override)
CARBON_PARSE_NODE_KIND_TOKEN_MODIFIER(Private)
CARBON_PARSE_NODE_KIND_TOKEN_MODIFIER(Protected)
CARBON_PARSE_NODE_KIND_TOKEN_MODIFIER(Static)
CARBON_PARSE_NODE_KIND_TOKEN_MODIFIER(Virtual)
CARBON_PARSE_NODE_KIND_DECLARATION(ClassIntroducer)
CARBON_PARSE_NODE_KIND_DECLARATION(ClassDefinitionStart)
CARBON_PARSE_NODE_KIND_DECLARATION(ClassDefinition)
CARBON_PARSE_NODE_KIND_DECLARATION(ClassDecl)
CARBON_PARSE_NODE_KIND_DECLARATION(AdaptIntroducer)
CARBON_PARSE_NODE_KIND_DECLARATION(AdaptDecl)
CARBON_PARSE_NODE_KIND_DECLARATION(BaseIntroducer)
CARBON_PARSE_NODE_KIND_DECLARATION(BaseColon)
CARBON_PARSE_NODE_KIND_DECLARATION(BaseDecl)
CARBON_PARSE_NODE_KIND_DECLARATION(InterfaceIntroducer)
CARBON_PARSE_NODE_KIND_DECLARATION(InterfaceDefinitionStart)
CARBON_PARSE_NODE_KIND_DECLARATION(InterfaceDefinition)
CARBON_PARSE_NODE_KIND_DECLARATION(InterfaceDecl)
CARBON_PARSE_NODE_KIND_DECLARATION(ImplIntroducer)
CARBON_PARSE_NODE_KIND_DECLARATION(ImplDefinitionStart)
CARBON_PARSE_NODE_KIND_DECLARATION(ImplDefinition)
CARBON_PARSE_NODE_KIND_DECLARATION(ImplDecl)
CARBON_PARSE_NODE_KIND_DECLARATION(Forall)
CARBON_PARSE_NODE_KIND_DECLARATION(ImplTypeAs)
CARBON_PARSE_NODE_KIND_DECLARATION(ImplDefaultSelfAs)
CARBON_PARSE_NODE_KIND_DECLARATION(RequireIntroducer)
CARBON_PARSE_NODE_KIND_DECLARATION(RequireTypeImpls)
CARBON_PARSE_NODE_KIND_DECLARATION(RequireDefaultSelfImpls)
CARBON_PARSE_NODE_KIND_DECLARATION(RequireDecl)
CARBON_PARSE_NODE_KIND_DECLARATION(ObserveIntroducer)
CARBON_PARSE_NODE_KIND_DECLARATION(ObserveEqualEqual)
CARBON_PARSE_NODE_KIND_DECLARATION(ObserveImpls)
CARBON_PARSE_NODE_KIND_DECLARATION(ObserveDecl)
CARBON_PARSE_NODE_KIND_DECLARATION(NamedConstraintIntroducer)
CARBON_PARSE_NODE_KIND_DECLARATION(NamedConstraintDefinitionStart)
CARBON_PARSE_NODE_KIND_DECLARATION(NamedConstraintDefinition)
CARBON_PARSE_NODE_KIND_DECLARATION(NamedConstraintDecl)
CARBON_PARSE_NODE_KIND_DECLARATION(ChoiceIntroducer)
CARBON_PARSE_NODE_KIND_DECLARATION(ChoiceDefinitionStart)
CARBON_PARSE_NODE_KIND_DECLARATION(ChoiceDefinition)
CARBON_PARSE_NODE_KIND_DECLARATION(ChoiceAlternativeListComma)
CARBON_PARSE_NODE_KIND_STATEMENT(MatchIntroducer)
CARBON_PARSE_NODE_KIND_STATEMENT(MatchConditionStart)
CARBON_PARSE_NODE_KIND_STATEMENT(MatchCondition)
CARBON_PARSE_NODE_KIND_STATEMENT(MatchStatementStart)
CARBON_PARSE_NODE_KIND_STATEMENT(MatchStatement)
CARBON_PARSE_NODE_KIND_STATEMENT(MatchCaseIntroducer)
CARBON_PARSE_NODE_KIND_STATEMENT(MatchCaseGuardIntroducer)
CARBON_PARSE_NODE_KIND_STATEMENT(MatchCaseGuardStart)
CARBON_PARSE_NODE_KIND_STATEMENT(MatchCaseGuard)
CARBON_PARSE_NODE_KIND_STATEMENT(MatchCase)
CARBON_PARSE_NODE_KIND_STATEMENT(MatchDefaultIntroducer)
CARBON_PARSE_NODE_KIND_STATEMENT(MatchDefault)
CARBON_PARSE_NODE_KIND_STATEMENT(MatchHandlerStart)
CARBON_PARSE_NODE_KIND_STATEMENT(MatchHandler)
#undef CARBON_PARSE_NODE_KIND
#undef CARBON_PARSE_NODE_KIND_DECLARATION
#undef CARBON_PARSE_NODE_KIND_EXPRESSION
#undef CARBON_PARSE_NODE_KIND_PATTERN
#undef CARBON_PARSE_NODE_KIND_STATEMENT
#undef CARBON_PARSE_NODE_KIND_INFIX_OPERATOR
#undef CARBON_PARSE_NODE_KIND_POSTFIX_OPERATOR
#undef CARBON_PARSE_NODE_KIND_PREFIX_OPERATOR
#undef CARBON_PARSE_NODE_KIND_TOKEN_LITERAL
#undef CARBON_PARSE_NODE_KIND_TOKEN_MODIFIER