// 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) #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) #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) #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) #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) #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) #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) #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) #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) #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_PATTERN(DefaultValueExprStart) CARBON_PARSE_NODE_KIND_PATTERN(DefaultValuePattern) CARBON_PARSE_NODE_KIND_EXPRESSION(DefaultValueUnspecified) 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_EXPRESSION(PositionalParamExpr) 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