// This is a generated file. Not intended for manual editing. package org.dlangplugin.parser; import com.intellij.lang.PsiBuilder; import com.intellij.lang.PsiBuilder.Marker; import static org.dlangplugin.psi.DTokenTypes.*; import static org.dlangplugin.parser.DLangParserUtil.*; import com.intellij.psi.tree.IElementType; import com.intellij.lang.ASTNode; import com.intellij.psi.tree.TokenSet; import com.intellij.lang.PsiParser; @SuppressWarnings({"SimplifiableIfStatement", "UnusedAssignment"}) public class DParser implements PsiParser { public ASTNode parse(IElementType t, PsiBuilder b) { parseLight(t, b); return b.getTreeBuilt(); } public void parseLight(IElementType t, PsiBuilder b) { boolean r; b = adapt_builder_(t, b, this, null); Marker m = enter_section_(b, 0, _COLLAPSE_, null); if (t == AGGREGATE_BODY) { r = AggregateBody(b, 0); } else if (t == ALIAS_DECLARATION) { r = AliasDeclaration(b, 0); } else if (t == ALIAS_INITIALIZER) { r = AliasInitializer(b, 0); } else if (t == ALIAS_INITIALIZER_LIST) { r = AliasInitializerList(b, 0); } else if (t == ALIAS_THIS) { r = AliasThis(b, 0); } else if (t == ALIAS_THIS_DECLARATION) { r = AliasThisDeclaration(b, 0); } else if (t == ALIGN_ATTRIBUTE) { r = AlignAttribute(b, 0); } else if (t == ALLOCATOR) { r = Allocator(b, 0); } else if (t == ARGUMENT_LIST) { r = ArgumentList(b, 0); } else if (t == ARRAY_INITIALIZER) { r = ArrayInitializer(b, 0); } else if (t == ARRAY_LITERAL) { r = ArrayLiteral(b, 0); } else if (t == ARRAY_MEMBER_INITIALIZATION) { r = ArrayMemberInitialization(b, 0); } else if (t == ASM_INSTRUCTION) { r = AsmInstruction(b, 0); } else if (t == ASM_STATEMENT) { r = AsmStatement(b, 0); } else if (t == ASSERT_EXPRESSION) { r = AssertExpression(b, 0); } else if (t == ASSOC_ARRAY_LITERAL) { r = AssocArrayLiteral(b, 0); } else if (t == ATTRIBUTE_SPECIFIER) { r = AttributeSpecifier(b, 0); } else if (t == AUTO_DECLARATION) { r = AutoDeclaration(b, 0); } else if (t == BASE_CLASS_LIST) { r = BaseClassList(b, 0); } else if (t == BASE_INTERFACE_LIST) { r = BaseInterfaceList(b, 0); } else if (t == BASIC_TYPE) { r = BasicType(b, 0); } else if (t == BASIC_TYPE_2) { r = BasicType2(b, 0); } else if (t == BASIC_TYPE_X) { r = BasicTypeX(b, 0); } else if (t == BLOCK_STATEMENT) { r = BlockStatement(b, 0); } else if (t == BODY_STATEMENT) { r = BodyStatement(b, 0); } else if (t == BREAK_STATEMENT) { r = BreakStatement(b, 0); } else if (t == COMMENT) { r = COMMENT(b, 0); } else if (t == CASE_RANGE_STATEMENT) { r = CaseRangeStatement(b, 0); } else if (t == CASE_STATEMENT) { r = CaseStatement(b, 0); } else if (t == CAST_PREFIX) { r = CastPrefix(b, 0); } else if (t == CATCH) { r = Catch(b, 0); } else if (t == CATCHES) { r = Catches(b, 0); } else if (t == CLASS_DECLARATION) { r = ClassDeclaration(b, 0); } else if (t == CLASS_TEMPLATE_DECLARATION) { r = ClassTemplateDeclaration(b, 0); } else if (t == COMMA_EXPRESSION) { r = CommaExpression(b, 0); } else if (t == COMPONENT_NAME) { r = ComponentName(b, 0); } else if (t == CONDITION) { r = Condition(b, 0); } else if (t == CONDITIONAL_DECLARATION) { r = ConditionalDeclaration(b, 0); } else if (t == CONDITIONAL_STATEMENT) { r = ConditionalStatement(b, 0); } else if (t == CONSTRAINT) { r = Constraint(b, 0); } else if (t == CONSTRUCTOR) { r = Constructor(b, 0); } else if (t == CONSTRUCTOR_TEMPLATE) { r = ConstructorTemplate(b, 0); } else if (t == CONTINUE_STATEMENT) { r = ContinueStatement(b, 0); } else if (t == DEALLOCATOR) { r = Deallocator(b, 0); } else if (t == DEBUG_CONDITION) { r = DebugCondition(b, 0); } else if (t == DEBUG_SPECIFICATION) { r = DebugSpecification(b, 0); } else if (t == DECL) { r = Decl(b, 0); } else if (t == DECL_DEF) { r = DeclDef(b, 0); } else if (t == DECLARATION) { r = Declaration(b, 0); } else if (t == DECLARATION_BLOCK) { r = DeclarationBlock(b, 0); } else if (t == DECLARATOR) { r = Declarator(b, 0); } else if (t == DECLARATOR_2) { r = Declarator2(b, 0); } else if (t == DECLARATOR_IDENTIFIER) { r = DeclaratorIdentifier(b, 0); } else if (t == DECLARATOR_IDENTIFIER_LIST) { r = DeclaratorIdentifierList(b, 0); } else if (t == DECLARATOR_INITIALIZER) { r = DeclaratorInitializer(b, 0); } else if (t == DECLARATOR_SUFFIX) { r = DeclaratorSuffix(b, 0); } else if (t == DECLARATORS) { r = Declarators(b, 0); } else if (t == DEFAULT_INITIALIZER_EXPRESSION) { r = DefaultInitializerExpression(b, 0); } else if (t == DEFAULT_STATEMENT) { r = DefaultStatement(b, 0); } else if (t == DEPRECATED_ATTRIBUTE) { r = DeprecatedAttribute(b, 0); } else if (t == DESTRUCTOR) { r = Destructor(b, 0); } else if (t == DO_STATEMENT) { r = DoStatement(b, 0); } else if (t == ENUM_BODY) { r = EnumBody(b, 0); } else if (t == ENUM_DECLARATION) { r = EnumDeclaration(b, 0); } else if (t == ENUM_MEMBER) { r = EnumMember(b, 0); } else if (t == EXP_INITIALIZER) { r = ExpInitializer(b, 0); } else if (t == EXPRESSION) { r = Expression(b, 0); } else if (t == FINALLY_STATEMENT) { r = FinallyStatement(b, 0); } else if (t == FOR_STATEMENT) { r = ForStatement(b, 0); } else if (t == FOREACH_RANGE_STATEMENT) { r = ForeachRangeStatement(b, 0); } else if (t == FOREACH_STATEMENT) { r = ForeachStatement(b, 0); } else if (t == FOREACH_TYPE) { r = ForeachType(b, 0); } else if (t == FOREACH_TYPES) { r = ForeachTypes(b, 0); } else if (t == FUNCTION_ATTRIBUTE) { r = FunctionAttribute(b, 0); } else if (t == FUNCTION_ATTRIBUTES) { r = FunctionAttributes(b, 0); } else if (t == FUNCTION_BODY) { r = FunctionBody(b, 0); } else if (t == FUNCTION_LITERAL) { r = FunctionLiteral(b, 0); } else if (t == GOTO_STATEMENT) { r = GotoStatement(b, 0); } else if (t == IDENTIFIER_LIST) { r = IdentifierList(b, 0); } else if (t == IF_CONDITION) { r = IfCondition(b, 0); } else if (t == IF_STATEMENT) { r = IfStatement(b, 0); } else if (t == IMPORT) { r = Import(b, 0); } else if (t == IMPORT_BIND) { r = ImportBind(b, 0); } else if (t == IMPORT_BINDINGS) { r = ImportBindings(b, 0); } else if (t == IMPORT_DECLARATION) { r = ImportDeclaration(b, 0); } else if (t == IMPORT_EXPRESSION) { r = ImportExpression(b, 0); } else if (t == IMPORT_LIST) { r = ImportList(b, 0); } else if (t == IN_OUT_X) { r = InOutX(b, 0); } else if (t == IN_STATEMENT) { r = InStatement(b, 0); } else if (t == INITIALIZER) { r = Initializer(b, 0); } else if (t == INTERFACE_DECLARATION) { r = InterfaceDeclaration(b, 0); } else if (t == INTERFACE_TEMPLATE_DECLARATION) { r = InterfaceTemplateDeclaration(b, 0); } else if (t == INVARIANT) { r = Invariant(b, 0); } else if (t == IS_EXPRESSION) { r = IsExpression(b, 0); } else if (t == KEY_VALUE_PAIR) { r = KeyValuePair(b, 0); } else if (t == LAMBDA) { r = Lambda(b, 0); } else if (t == LAST_CATCH) { r = LastCatch(b, 0); } else if (t == LINKAGE_ATTRIBUTE) { r = LinkageAttribute(b, 0); } else if (t == MEMBER_FUNCTION_ATTRIBUTES) { r = MemberFunctionAttributes(b, 0); } else if (t == MIXIN_DECLARATION) { r = MixinDeclaration(b, 0); } else if (t == MIXIN_STATEMENT) { r = MixinStatement(b, 0); } else if (t == MIXIN_TEMPLATE_NAME) { r = MixinTemplateName(b, 0); } else if (t == MODULE_DECLARATION) { r = ModuleDeclaration(b, 0); } else if (t == MODULE_FULLY_QUALIFIED_NAME) { r = ModuleFullyQualifiedName(b, 0); } else if (t == NEW_EXPRESSION) { r = NewExpression(b, 0); } else if (t == NEW_EXPRESSION_WITH_ARGS) { r = NewExpressionWithArgs(b, 0); } else if (t == OUT_STATEMENT) { r = OutStatement(b, 0); } else if (t == PARAMETER) { r = Parameter(b, 0); } else if (t == PARAMETERS) { r = Parameters(b, 0); } else if (t == POSTBLIT) { r = Postblit(b, 0); } else if (t == PRAGMA) { r = Pragma(b, 0); } else if (t == PRAGMA_STATEMENT) { r = PragmaStatement(b, 0); } else if (t == PROPERTY) { r = Property(b, 0); } else if (t == PROTECTION_ATTRIBUTE) { r = ProtectionAttribute(b, 0); } else if (t == QUALIFIED_IDENTIFIER_LIST) { r = QualifiedIdentifierList(b, 0); } else if (t == REFERENCE_EXPRESSION) { r = ReferenceExpression(b, 0); } else if (t == RETURN_STATEMENT) { r = ReturnStatement(b, 0); } else if (t == STRING) { r = STRING(b, 0); } else if (t == SCOPE_GUARD_STATEMENT) { r = ScopeGuardStatement(b, 0); } else if (t == SCOPE_STATEMENT) { r = ScopeStatement(b, 0); } else if (t == SHARED_STATIC_CONSTRUCTOR) { r = SharedStaticConstructor(b, 0); } else if (t == SHARED_STATIC_DESTRUCTOR) { r = SharedStaticDestructor(b, 0); } else if (t == SPECIAL_KEYWORD) { r = SpecialKeyword(b, 0); } else if (t == STATEMENT) { r = Statement(b, 0); } else if (t == STATIC_ASSERT) { r = StaticAssert(b, 0); } else if (t == STATIC_CONSTRUCTOR) { r = StaticConstructor(b, 0); } else if (t == STATIC_DESTRUCTOR) { r = StaticDestructor(b, 0); } else if (t == STATIC_IF_CONDITION) { r = StaticIfCondition(b, 0); } else if (t == STORAGE_CLASS) { r = StorageClass(b, 0); } else if (t == STRUCT_DECLARATION) { r = StructDeclaration(b, 0); } else if (t == STRUCT_INITIALIZER) { r = StructInitializer(b, 0); } else if (t == STRUCT_MEMBER_INITIALIZER) { r = StructMemberInitializer(b, 0); } else if (t == STRUCT_TEMPLATE_DECLARATION) { r = StructTemplateDeclaration(b, 0); } else if (t == SWITCH_STATEMENT) { r = SwitchStatement(b, 0); } else if (t == SYMBOL) { r = Symbol(b, 0); } else if (t == SYNCHRONIZED_STATEMENT) { r = SynchronizedStatement(b, 0); } else if (t == TEMPLATE_ALIAS_PARAMETER) { r = TemplateAliasParameter(b, 0); } else if (t == TEMPLATE_ARGUMENT) { r = TemplateArgument(b, 0); } else if (t == TEMPLATE_ARGUMENTS) { r = TemplateArguments(b, 0); } else if (t == TEMPLATE_DECLARATION) { r = TemplateDeclaration(b, 0); } else if (t == TEMPLATE_INSTANCE) { r = TemplateInstance(b, 0); } else if (t == TEMPLATE_MIXIN) { r = TemplateMixin(b, 0); } else if (t == TEMPLATE_MIXIN_DECLARATION) { r = TemplateMixinDeclaration(b, 0); } else if (t == TEMPLATE_PARAMETER) { r = TemplateParameter(b, 0); } else if (t == TEMPLATE_PARAMETER_LIST) { r = TemplateParameterList(b, 0); } else if (t == TEMPLATE_SINGLE_ARGUMENT) { r = TemplateSingleArgument(b, 0); } else if (t == TEMPLATE_THIS_PARAMETER) { r = TemplateThisParameter(b, 0); } else if (t == TEMPLATE_TUPLE_PARAMETER) { r = TemplateTupleParameter(b, 0); } else if (t == TEMPLATE_TYPE_PARAMETER) { r = TemplateTypeParameter(b, 0); } else if (t == TEMPLATE_VALUE_PARAMETER) { r = TemplateValueParameter(b, 0); } else if (t == THROW_STATEMENT) { r = ThrowStatement(b, 0); } else if (t == TRAITS_ARGUMENTS) { r = TraitsArguments(b, 0); } else if (t == TRAITS_EXPRESSION) { r = TraitsExpression(b, 0); } else if (t == TRY_STATEMENT) { r = TryStatement(b, 0); } else if (t == TYPE) { r = Type(b, 0); } else if (t == TYPE_CISI) { r = TypeCISI(b, 0); } else if (t == TYPE_CTOR) { r = TypeCtor(b, 0); } else if (t == TYPE_CTORS) { r = TypeCtors(b, 0); } else if (t == TYPE_SPECIALIZATION) { r = TypeSpecialization(b, 0); } else if (t == TYPEID_EXPRESSION) { r = TypeidExpression(b, 0); } else if (t == TYPEOF) { r = Typeof(b, 0); } else if (t == UNARY_EXPRESSION) { r = UnaryExpression(b, 0); } else if (t == UNION_DECLARATION) { r = UnionDeclaration(b, 0); } else if (t == UNION_TEMPLATE_DECLARATION) { r = UnionTemplateDeclaration(b, 0); } else if (t == UNIT_TEST) { r = UnitTest(b, 0); } else if (t == USER_DEFINED_ATTRIBUTE) { r = UserDefinedAttribute(b, 0); } else if (t == VERSION_CONDITION) { r = VersionCondition(b, 0); } else if (t == VERSION_SPECIFICATION) { r = VersionSpecification(b, 0); } else if (t == WHILE_STATEMENT) { r = WhileStatement(b, 0); } else if (t == WITH_STATEMENT) { r = WithStatement(b, 0); } else if (t == IDENTIFIER) { r = identifier(b, 0); } else { r = parse_root_(t, b, 0); } exit_section_(b, 0, m, t, r, true, TRUE_CONDITION); } protected boolean parse_root_(IElementType t, PsiBuilder b, int l) { return dLangFile(b, l + 1); } /* ********************************************************** */ // OP_BRACES_LEFT DeclDef* OP_BRACES_RIGHT public static boolean AggregateBody(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "AggregateBody")) return false; if (!nextTokenIs(b, OP_BRACES_LEFT)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_BRACES_LEFT); r = r && AggregateBody_1(b, l + 1); r = r && consumeToken(b, OP_BRACES_RIGHT); exit_section_(b, m, AGGREGATE_BODY, r); return r; } // DeclDef* private static boolean AggregateBody_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "AggregateBody_1")) return false; int c = current_position_(b); while (true) { if (!DeclDef(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "AggregateBody_1", c)) break; c = current_position_(b); } return true; } /* ********************************************************** */ // KW_ALIAS (StorageClass* BasicType Declarators | AliasInitializerList) OP_SCOLON public static boolean AliasDeclaration(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "AliasDeclaration")) return false; if (!nextTokenIs(b, KW_ALIAS)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KW_ALIAS); r = r && AliasDeclaration_1(b, l + 1); r = r && consumeToken(b, OP_SCOLON); exit_section_(b, m, ALIAS_DECLARATION, r); return r; } // StorageClass* BasicType Declarators | AliasInitializerList private static boolean AliasDeclaration_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "AliasDeclaration_1")) return false; boolean r; Marker m = enter_section_(b); r = AliasDeclaration_1_0(b, l + 1); if (!r) r = AliasInitializerList(b, l + 1); exit_section_(b, m, null, r); return r; } // StorageClass* BasicType Declarators private static boolean AliasDeclaration_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "AliasDeclaration_1_0")) return false; boolean r; Marker m = enter_section_(b); r = AliasDeclaration_1_0_0(b, l + 1); r = r && BasicType(b, l + 1); r = r && Declarators(b, l + 1); exit_section_(b, m, null, r); return r; } // StorageClass* private static boolean AliasDeclaration_1_0_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "AliasDeclaration_1_0_0")) return false; int c = current_position_(b); while (true) { if (!StorageClass(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "AliasDeclaration_1_0_0", c)) break; c = current_position_(b); } return true; } /* ********************************************************** */ // ID TemplateParameters? OP_EQ Type public static boolean AliasInitializer(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "AliasInitializer")) return false; if (!nextTokenIs(b, ID)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, ID); r = r && AliasInitializer_1(b, l + 1); r = r && consumeToken(b, OP_EQ); r = r && Type(b, l + 1); exit_section_(b, m, ALIAS_INITIALIZER, r); return r; } // TemplateParameters? private static boolean AliasInitializer_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "AliasInitializer_1")) return false; TemplateParameters(b, l + 1); return true; } /* ********************************************************** */ // AliasInitializer (OP_COMMA AliasInitializer)* public static boolean AliasInitializerList(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "AliasInitializerList")) return false; if (!nextTokenIs(b, ID)) return false; boolean r; Marker m = enter_section_(b); r = AliasInitializer(b, l + 1); r = r && AliasInitializerList_1(b, l + 1); exit_section_(b, m, ALIAS_INITIALIZER_LIST, r); return r; } // (OP_COMMA AliasInitializer)* private static boolean AliasInitializerList_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "AliasInitializerList_1")) return false; int c = current_position_(b); while (true) { if (!AliasInitializerList_1_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "AliasInitializerList_1", c)) break; c = current_position_(b); } return true; } // OP_COMMA AliasInitializer private static boolean AliasInitializerList_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "AliasInitializerList_1_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_COMMA); r = r && AliasInitializer(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // AliasThisDeclaration OP_SCOLON public static boolean AliasThis(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "AliasThis")) return false; if (!nextTokenIs(b, KW_ALIAS)) return false; boolean r; Marker m = enter_section_(b); r = AliasThisDeclaration(b, l + 1); r = r && consumeToken(b, OP_SCOLON); exit_section_(b, m, ALIAS_THIS, r); return r; } /* ********************************************************** */ // KW_ALIAS ID KW_THIS public static boolean AliasThisDeclaration(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "AliasThisDeclaration")) return false; if (!nextTokenIs(b, KW_ALIAS)) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, KW_ALIAS, ID, KW_THIS); exit_section_(b, m, ALIAS_THIS_DECLARATION, r); return r; } /* ********************************************************** */ // KW_ALIGN (OP_PAR_LEFT INTEGER_LITERAL OP_PAR_RIGHT)? public static boolean AlignAttribute(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "AlignAttribute")) return false; if (!nextTokenIs(b, KW_ALIGN)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KW_ALIGN); r = r && AlignAttribute_1(b, l + 1); exit_section_(b, m, ALIGN_ATTRIBUTE, r); return r; } // (OP_PAR_LEFT INTEGER_LITERAL OP_PAR_RIGHT)? private static boolean AlignAttribute_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "AlignAttribute_1")) return false; AlignAttribute_1_0(b, l + 1); return true; } // OP_PAR_LEFT INTEGER_LITERAL OP_PAR_RIGHT private static boolean AlignAttribute_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "AlignAttribute_1_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, OP_PAR_LEFT, INTEGER_LITERAL, OP_PAR_RIGHT); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // KW_NEW Parameters (OP_SCOLON | FunctionBody) public static boolean Allocator(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Allocator")) return false; if (!nextTokenIs(b, KW_NEW)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KW_NEW); r = r && Parameters(b, l + 1); r = r && Allocator_2(b, l + 1); exit_section_(b, m, ALLOCATOR, r); return r; } // OP_SCOLON | FunctionBody private static boolean Allocator_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Allocator_2")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_SCOLON); if (!r) r = FunctionBody(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // Expression (OP_COMMA Expression)* public static boolean ArgumentList(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ArgumentList")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<argument list>"); r = Expression(b, l + 1); r = r && ArgumentList_1(b, l + 1); exit_section_(b, l, m, ARGUMENT_LIST, r, false, null); return r; } // (OP_COMMA Expression)* private static boolean ArgumentList_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ArgumentList_1")) return false; int c = current_position_(b); while (true) { if (!ArgumentList_1_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "ArgumentList_1", c)) break; c = current_position_(b); } return true; } // OP_COMMA Expression private static boolean ArgumentList_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ArgumentList_1_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_COMMA); r = r && Expression(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // OP_BRACKET_LEFT (ArrayMemberInitialization (OP_COMMA ArrayMemberInitialization)* )? OP_BRACKET_RIGHT public static boolean ArrayInitializer(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ArrayInitializer")) return false; if (!nextTokenIs(b, OP_BRACKET_LEFT)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_BRACKET_LEFT); r = r && ArrayInitializer_1(b, l + 1); r = r && consumeToken(b, OP_BRACKET_RIGHT); exit_section_(b, m, ARRAY_INITIALIZER, r); return r; } // (ArrayMemberInitialization (OP_COMMA ArrayMemberInitialization)* )? private static boolean ArrayInitializer_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ArrayInitializer_1")) return false; ArrayInitializer_1_0(b, l + 1); return true; } // ArrayMemberInitialization (OP_COMMA ArrayMemberInitialization)* private static boolean ArrayInitializer_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ArrayInitializer_1_0")) return false; boolean r; Marker m = enter_section_(b); r = ArrayMemberInitialization(b, l + 1); r = r && ArrayInitializer_1_0_1(b, l + 1); exit_section_(b, m, null, r); return r; } // (OP_COMMA ArrayMemberInitialization)* private static boolean ArrayInitializer_1_0_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ArrayInitializer_1_0_1")) return false; int c = current_position_(b); while (true) { if (!ArrayInitializer_1_0_1_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "ArrayInitializer_1_0_1", c)) break; c = current_position_(b); } return true; } // OP_COMMA ArrayMemberInitialization private static boolean ArrayInitializer_1_0_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ArrayInitializer_1_0_1_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_COMMA); r = r && ArrayMemberInitialization(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // OP_BRACKET_LEFT ArgumentList? OP_BRACKET_RIGHT public static boolean ArrayLiteral(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ArrayLiteral")) return false; if (!nextTokenIs(b, OP_BRACKET_LEFT)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_BRACKET_LEFT); r = r && ArrayLiteral_1(b, l + 1); r = r && consumeToken(b, OP_BRACKET_RIGHT); exit_section_(b, m, ARRAY_LITERAL, r); return r; } // ArgumentList? private static boolean ArrayLiteral_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ArrayLiteral_1")) return false; ArgumentList(b, l + 1); return true; } /* ********************************************************** */ // NonVoidInitializer | Expression OP_COLON NonVoidInitializer public static boolean ArrayMemberInitialization(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ArrayMemberInitialization")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<array member initialization>"); r = NonVoidInitializer(b, l + 1); if (!r) r = ArrayMemberInitialization_1(b, l + 1); exit_section_(b, l, m, ARRAY_MEMBER_INITIALIZATION, r, false, null); return r; } // Expression OP_COLON NonVoidInitializer private static boolean ArrayMemberInitialization_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ArrayMemberInitialization_1")) return false; boolean r; Marker m = enter_section_(b); r = Expression(b, l + 1); r = r && consumeToken(b, OP_COLON); r = r && NonVoidInitializer(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // (ID OP_COLON)? "aaa" public static boolean AsmInstruction(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "AsmInstruction")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<asm instruction>"); r = AsmInstruction_0(b, l + 1); r = r && consumeToken(b, "aaa"); exit_section_(b, l, m, ASM_INSTRUCTION, r, false, null); return r; } // (ID OP_COLON)? private static boolean AsmInstruction_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "AsmInstruction_0")) return false; AsmInstruction_0_0(b, l + 1); return true; } // ID OP_COLON private static boolean AsmInstruction_0_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "AsmInstruction_0_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, ID, OP_COLON); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // KW_ASM OP_BRACES_LEFT (AsmInstruction (OP_SCOLON AsmInstruction)* )? OP_BRACES_RIGHT public static boolean AsmStatement(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "AsmStatement")) return false; if (!nextTokenIs(b, KW_ASM)) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, KW_ASM, OP_BRACES_LEFT); r = r && AsmStatement_2(b, l + 1); r = r && consumeToken(b, OP_BRACES_RIGHT); exit_section_(b, m, ASM_STATEMENT, r); return r; } // (AsmInstruction (OP_SCOLON AsmInstruction)* )? private static boolean AsmStatement_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "AsmStatement_2")) return false; AsmStatement_2_0(b, l + 1); return true; } // AsmInstruction (OP_SCOLON AsmInstruction)* private static boolean AsmStatement_2_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "AsmStatement_2_0")) return false; boolean r; Marker m = enter_section_(b); r = AsmInstruction(b, l + 1); r = r && AsmStatement_2_0_1(b, l + 1); exit_section_(b, m, null, r); return r; } // (OP_SCOLON AsmInstruction)* private static boolean AsmStatement_2_0_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "AsmStatement_2_0_1")) return false; int c = current_position_(b); while (true) { if (!AsmStatement_2_0_1_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "AsmStatement_2_0_1", c)) break; c = current_position_(b); } return true; } // OP_SCOLON AsmInstruction private static boolean AsmStatement_2_0_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "AsmStatement_2_0_1_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_SCOLON); r = r && AsmInstruction(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // KW_ASSERT OP_PAR_LEFT Expression (OP_COMMA Expression)* OP_PAR_RIGHT public static boolean AssertExpression(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "AssertExpression")) return false; if (!nextTokenIs(b, KW_ASSERT)) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, KW_ASSERT, OP_PAR_LEFT); r = r && Expression(b, l + 1); r = r && AssertExpression_3(b, l + 1); r = r && consumeToken(b, OP_PAR_RIGHT); exit_section_(b, m, ASSERT_EXPRESSION, r); return r; } // (OP_COMMA Expression)* private static boolean AssertExpression_3(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "AssertExpression_3")) return false; int c = current_position_(b); while (true) { if (!AssertExpression_3_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "AssertExpression_3", c)) break; c = current_position_(b); } return true; } // OP_COMMA Expression private static boolean AssertExpression_3_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "AssertExpression_3_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_COMMA); r = r && Expression(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // OP_BRACKET_LEFT KeyValuePair (OP_COMMA KeyValuePair)* OP_BRACKET_RIGHT public static boolean AssocArrayLiteral(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "AssocArrayLiteral")) return false; if (!nextTokenIs(b, OP_BRACKET_LEFT)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_BRACKET_LEFT); r = r && KeyValuePair(b, l + 1); r = r && AssocArrayLiteral_2(b, l + 1); r = r && consumeToken(b, OP_BRACKET_RIGHT); exit_section_(b, m, ASSOC_ARRAY_LITERAL, r); return r; } // (OP_COMMA KeyValuePair)* private static boolean AssocArrayLiteral_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "AssocArrayLiteral_2")) return false; int c = current_position_(b); while (true) { if (!AssocArrayLiteral_2_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "AssocArrayLiteral_2", c)) break; c = current_position_(b); } return true; } // OP_COMMA KeyValuePair private static boolean AssocArrayLiteral_2_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "AssocArrayLiteral_2_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_COMMA); r = r && KeyValuePair(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // LinkageAttribute | AlignAttribute | Pragma | DeprecatedAttribute | ProtectionAttribute | Property // | KW_STATIC | KW_EXTERN | KW_FINAL | KW_SYNCHRONIZED | KW_OVERRIDE // | KW_ABSTRACT | KW_AUTO | KW_SCOPE | KW_CONST | KW_IMMUTABLE | KW_INOUT // | KW_SHARED | KW___GSHARED static boolean Attribute(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Attribute")) return false; boolean r; Marker m = enter_section_(b); r = LinkageAttribute(b, l + 1); if (!r) r = AlignAttribute(b, l + 1); if (!r) r = Pragma(b, l + 1); if (!r) r = DeprecatedAttribute(b, l + 1); if (!r) r = ProtectionAttribute(b, l + 1); if (!r) r = Property(b, l + 1); if (!r) r = consumeToken(b, KW_STATIC); if (!r) r = consumeToken(b, KW_EXTERN); if (!r) r = consumeToken(b, KW_FINAL); if (!r) r = consumeToken(b, KW_SYNCHRONIZED); if (!r) r = consumeToken(b, KW_OVERRIDE); if (!r) r = consumeToken(b, KW_ABSTRACT); if (!r) r = consumeToken(b, KW_AUTO); if (!r) r = consumeToken(b, KW_SCOPE); if (!r) r = consumeToken(b, KW_CONST); if (!r) r = consumeToken(b, KW_IMMUTABLE); if (!r) r = consumeToken(b, KW_INOUT); if (!r) r = consumeToken(b, KW_SHARED); if (!r) r = consumeToken(b, KW___GSHARED); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // Attribute (OP_COLON | DeclarationBlock) public static boolean AttributeSpecifier(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "AttributeSpecifier")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<attribute specifier>"); r = Attribute(b, l + 1); r = r && AttributeSpecifier_1(b, l + 1); exit_section_(b, l, m, ATTRIBUTE_SPECIFIER, r, false, null); return r; } // OP_COLON | DeclarationBlock private static boolean AttributeSpecifier_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "AttributeSpecifier_1")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_COLON); if (!r) r = DeclarationBlock(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // StorageClass+ ID TemplateParameters? OP_EQ Initializer (OP_COMMA ID TemplateParameters? OP_EQ Initializer)* OP_SCOLON public static boolean AutoDeclaration(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "AutoDeclaration")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<auto declaration>"); r = AutoDeclaration_0(b, l + 1); r = r && consumeToken(b, ID); r = r && AutoDeclaration_2(b, l + 1); r = r && consumeToken(b, OP_EQ); r = r && Initializer(b, l + 1); r = r && AutoDeclaration_5(b, l + 1); r = r && consumeToken(b, OP_SCOLON); exit_section_(b, l, m, AUTO_DECLARATION, r, false, null); return r; } // StorageClass+ private static boolean AutoDeclaration_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "AutoDeclaration_0")) return false; boolean r; Marker m = enter_section_(b); r = StorageClass(b, l + 1); int c = current_position_(b); while (r) { if (!StorageClass(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "AutoDeclaration_0", c)) break; c = current_position_(b); } exit_section_(b, m, null, r); return r; } // TemplateParameters? private static boolean AutoDeclaration_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "AutoDeclaration_2")) return false; TemplateParameters(b, l + 1); return true; } // (OP_COMMA ID TemplateParameters? OP_EQ Initializer)* private static boolean AutoDeclaration_5(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "AutoDeclaration_5")) return false; int c = current_position_(b); while (true) { if (!AutoDeclaration_5_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "AutoDeclaration_5", c)) break; c = current_position_(b); } return true; } // OP_COMMA ID TemplateParameters? OP_EQ Initializer private static boolean AutoDeclaration_5_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "AutoDeclaration_5_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, OP_COMMA, ID); r = r && AutoDeclaration_5_0_2(b, l + 1); r = r && consumeToken(b, OP_EQ); r = r && Initializer(b, l + 1); exit_section_(b, m, null, r); return r; } // TemplateParameters? private static boolean AutoDeclaration_5_0_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "AutoDeclaration_5_0_2")) return false; TemplateParameters(b, l + 1); return true; } /* ********************************************************** */ // OP_COLON (TemplateInstance|ReferenceExpression) (OP_COMMA (TemplateInstance|ReferenceExpression))* public static boolean BaseClassList(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "BaseClassList")) return false; if (!nextTokenIs(b, OP_COLON)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_COLON); r = r && BaseClassList_1(b, l + 1); r = r && BaseClassList_2(b, l + 1); exit_section_(b, m, BASE_CLASS_LIST, r); return r; } // TemplateInstance|ReferenceExpression private static boolean BaseClassList_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "BaseClassList_1")) return false; boolean r; Marker m = enter_section_(b); r = TemplateInstance(b, l + 1); if (!r) r = ReferenceExpression(b, l + 1); exit_section_(b, m, null, r); return r; } // (OP_COMMA (TemplateInstance|ReferenceExpression))* private static boolean BaseClassList_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "BaseClassList_2")) return false; int c = current_position_(b); while (true) { if (!BaseClassList_2_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "BaseClassList_2", c)) break; c = current_position_(b); } return true; } // OP_COMMA (TemplateInstance|ReferenceExpression) private static boolean BaseClassList_2_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "BaseClassList_2_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_COMMA); r = r && BaseClassList_2_0_1(b, l + 1); exit_section_(b, m, null, r); return r; } // TemplateInstance|ReferenceExpression private static boolean BaseClassList_2_0_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "BaseClassList_2_0_1")) return false; boolean r; Marker m = enter_section_(b); r = TemplateInstance(b, l + 1); if (!r) r = ReferenceExpression(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // OP_COLON ID (OP_COMMA ID)* public static boolean BaseInterfaceList(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "BaseInterfaceList")) return false; if (!nextTokenIs(b, OP_COLON)) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, OP_COLON, ID); r = r && BaseInterfaceList_2(b, l + 1); exit_section_(b, m, BASE_INTERFACE_LIST, r); return r; } // (OP_COMMA ID)* private static boolean BaseInterfaceList_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "BaseInterfaceList_2")) return false; int c = current_position_(b); while (true) { if (!BaseInterfaceList_2_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "BaseInterfaceList_2", c)) break; c = current_position_(b); } return true; } // OP_COMMA ID private static boolean BaseInterfaceList_2_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "BaseInterfaceList_2_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, OP_COMMA, ID); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // BasicTypeX | OP_DOT? IdentifierList | Typeof OP_DOT IdentifierList | Typeof public static boolean BasicType(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "BasicType")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<basic type>"); r = BasicTypeX(b, l + 1); if (!r) r = BasicType_1(b, l + 1); if (!r) r = BasicType_2(b, l + 1); if (!r) r = Typeof(b, l + 1); exit_section_(b, l, m, BASIC_TYPE, r, false, null); return r; } // OP_DOT? IdentifierList private static boolean BasicType_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "BasicType_1")) return false; boolean r; Marker m = enter_section_(b); r = BasicType_1_0(b, l + 1); r = r && IdentifierList(b, l + 1); exit_section_(b, m, null, r); return r; } // OP_DOT? private static boolean BasicType_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "BasicType_1_0")) return false; consumeToken(b, OP_DOT); return true; } // Typeof OP_DOT IdentifierList private static boolean BasicType_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "BasicType_2")) return false; boolean r; Marker m = enter_section_(b); r = Typeof(b, l + 1); r = r && consumeToken(b, OP_DOT); r = r && IdentifierList(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // OP_ASTERISK | OP_BRACKET_LEFT OP_BRACKET_RIGHT | OP_BRACKET_LEFT Expression OP_BRACKET_RIGHT // | OP_BRACKET_LEFT Expression OP_DDOT Expression OP_BRACKET_RIGHT // | OP_BRACKET_LEFT Type OP_BRACKET_RIGHT // | KW_DELEGATE Parameters MemberFunctionAttributes? | KW_FUNCTION Parameters FunctionAttributes? public static boolean BasicType2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "BasicType2")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<basic type 2>"); r = consumeToken(b, OP_ASTERISK); if (!r) r = parseTokens(b, 0, OP_BRACKET_LEFT, OP_BRACKET_RIGHT); if (!r) r = BasicType2_2(b, l + 1); if (!r) r = BasicType2_3(b, l + 1); if (!r) r = BasicType2_4(b, l + 1); if (!r) r = BasicType2_5(b, l + 1); if (!r) r = BasicType2_6(b, l + 1); exit_section_(b, l, m, BASIC_TYPE_2, r, false, null); return r; } // OP_BRACKET_LEFT Expression OP_BRACKET_RIGHT private static boolean BasicType2_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "BasicType2_2")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_BRACKET_LEFT); r = r && Expression(b, l + 1); r = r && consumeToken(b, OP_BRACKET_RIGHT); exit_section_(b, m, null, r); return r; } // OP_BRACKET_LEFT Expression OP_DDOT Expression OP_BRACKET_RIGHT private static boolean BasicType2_3(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "BasicType2_3")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_BRACKET_LEFT); r = r && Expression(b, l + 1); r = r && consumeToken(b, OP_DDOT); r = r && Expression(b, l + 1); r = r && consumeToken(b, OP_BRACKET_RIGHT); exit_section_(b, m, null, r); return r; } // OP_BRACKET_LEFT Type OP_BRACKET_RIGHT private static boolean BasicType2_4(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "BasicType2_4")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_BRACKET_LEFT); r = r && Type(b, l + 1); r = r && consumeToken(b, OP_BRACKET_RIGHT); exit_section_(b, m, null, r); return r; } // KW_DELEGATE Parameters MemberFunctionAttributes? private static boolean BasicType2_5(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "BasicType2_5")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KW_DELEGATE); r = r && Parameters(b, l + 1); r = r && BasicType2_5_2(b, l + 1); exit_section_(b, m, null, r); return r; } // MemberFunctionAttributes? private static boolean BasicType2_5_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "BasicType2_5_2")) return false; MemberFunctionAttributes(b, l + 1); return true; } // KW_FUNCTION Parameters FunctionAttributes? private static boolean BasicType2_6(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "BasicType2_6")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KW_FUNCTION); r = r && Parameters(b, l + 1); r = r && BasicType2_6_2(b, l + 1); exit_section_(b, m, null, r); return r; } // FunctionAttributes? private static boolean BasicType2_6_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "BasicType2_6_2")) return false; FunctionAttributes(b, l + 1); return true; } /* ********************************************************** */ // KW_BOOL | KW_BYTE | KW_UBYTE | KW_SHORT | KW_USHORT // | KW_INT | KW_UINT | KW_LONG | KW_ULONG | KW_CHAR | KW_WCHAR // | KW_DCHAR | KW_FLOAT | KW_DOUBLE | KW_REAL | KW_IFLOAT | KW_IDOUBLE // | KW_IREAL | KW_CFLOAT | KW_CDOUBLE | KW_CREAL | KW_VOID public static boolean BasicTypeX(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "BasicTypeX")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<basic type x>"); r = consumeToken(b, KW_BOOL); if (!r) r = consumeToken(b, KW_BYTE); if (!r) r = consumeToken(b, KW_UBYTE); if (!r) r = consumeToken(b, KW_SHORT); if (!r) r = consumeToken(b, KW_USHORT); if (!r) r = consumeToken(b, KW_INT); if (!r) r = consumeToken(b, KW_UINT); if (!r) r = consumeToken(b, KW_LONG); if (!r) r = consumeToken(b, KW_ULONG); if (!r) r = consumeToken(b, KW_CHAR); if (!r) r = consumeToken(b, KW_WCHAR); if (!r) r = consumeToken(b, KW_DCHAR); if (!r) r = consumeToken(b, KW_FLOAT); if (!r) r = consumeToken(b, KW_DOUBLE); if (!r) r = consumeToken(b, KW_REAL); if (!r) r = consumeToken(b, KW_IFLOAT); if (!r) r = consumeToken(b, KW_IDOUBLE); if (!r) r = consumeToken(b, KW_IREAL); if (!r) r = consumeToken(b, KW_CFLOAT); if (!r) r = consumeToken(b, KW_CDOUBLE); if (!r) r = consumeToken(b, KW_CREAL); if (!r) r = consumeToken(b, KW_VOID); exit_section_(b, l, m, BASIC_TYPE_X, r, false, null); return r; } /* ********************************************************** */ // OP_BRACES_LEFT Statement* OP_BRACES_RIGHT public static boolean BlockStatement(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "BlockStatement")) return false; if (!nextTokenIs(b, OP_BRACES_LEFT)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_BRACES_LEFT); r = r && BlockStatement_1(b, l + 1); r = r && consumeToken(b, OP_BRACES_RIGHT); exit_section_(b, m, BLOCK_STATEMENT, r); return r; } // Statement* private static boolean BlockStatement_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "BlockStatement_1")) return false; int c = current_position_(b); while (true) { if (!Statement(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "BlockStatement_1", c)) break; c = current_position_(b); } return true; } /* ********************************************************** */ // KW_BODY BlockStatement public static boolean BodyStatement(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "BodyStatement")) return false; if (!nextTokenIs(b, KW_BODY)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KW_BODY); r = r && BlockStatement(b, l + 1); exit_section_(b, m, BODY_STATEMENT, r); return r; } /* ********************************************************** */ // KW_BREAK ID? OP_SCOLON public static boolean BreakStatement(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "BreakStatement")) return false; if (!nextTokenIs(b, KW_BREAK)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KW_BREAK); r = r && BreakStatement_1(b, l + 1); r = r && consumeToken(b, OP_SCOLON); exit_section_(b, m, BREAK_STATEMENT, r); return r; } // ID? private static boolean BreakStatement_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "BreakStatement_1")) return false; consumeToken(b, ID); return true; } /* ********************************************************** */ // BLOCK_COMMENT|LINE_COMMENT|NESTING_BLOCK_COMMENT public static boolean COMMENT(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "COMMENT")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<comment>"); r = consumeToken(b, BLOCK_COMMENT); if (!r) r = consumeToken(b, LINE_COMMENT); if (!r) r = consumeToken(b, NESTING_BLOCK_COMMENT); exit_section_(b, l, m, COMMENT, r, false, null); return r; } /* ********************************************************** */ // KW_CASE Expression OP_COLON OP_DDOT KW_CASE Expression OP_COLON (OP_SCOLON | NonEmptyStatementNoCaseNoDefault | BlockStatement)+ public static boolean CaseRangeStatement(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "CaseRangeStatement")) return false; if (!nextTokenIs(b, KW_CASE)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KW_CASE); r = r && Expression(b, l + 1); r = r && consumeTokens(b, 0, OP_COLON, OP_DDOT, KW_CASE); r = r && Expression(b, l + 1); r = r && consumeToken(b, OP_COLON); r = r && CaseRangeStatement_7(b, l + 1); exit_section_(b, m, CASE_RANGE_STATEMENT, r); return r; } // (OP_SCOLON | NonEmptyStatementNoCaseNoDefault | BlockStatement)+ private static boolean CaseRangeStatement_7(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "CaseRangeStatement_7")) return false; boolean r; Marker m = enter_section_(b); r = CaseRangeStatement_7_0(b, l + 1); int c = current_position_(b); while (r) { if (!CaseRangeStatement_7_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "CaseRangeStatement_7", c)) break; c = current_position_(b); } exit_section_(b, m, null, r); return r; } // OP_SCOLON | NonEmptyStatementNoCaseNoDefault | BlockStatement private static boolean CaseRangeStatement_7_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "CaseRangeStatement_7_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_SCOLON); if (!r) r = NonEmptyStatementNoCaseNoDefault(b, l + 1); if (!r) r = BlockStatement(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // KW_CASE ArgumentList OP_COLON (OP_SCOLON | NonEmptyStatementNoCaseNoDefault | BlockStatement)* public static boolean CaseStatement(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "CaseStatement")) return false; if (!nextTokenIs(b, KW_CASE)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KW_CASE); r = r && ArgumentList(b, l + 1); r = r && consumeToken(b, OP_COLON); r = r && CaseStatement_3(b, l + 1); exit_section_(b, m, CASE_STATEMENT, r); return r; } // (OP_SCOLON | NonEmptyStatementNoCaseNoDefault | BlockStatement)* private static boolean CaseStatement_3(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "CaseStatement_3")) return false; int c = current_position_(b); while (true) { if (!CaseStatement_3_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "CaseStatement_3", c)) break; c = current_position_(b); } return true; } // OP_SCOLON | NonEmptyStatementNoCaseNoDefault | BlockStatement private static boolean CaseStatement_3_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "CaseStatement_3_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_SCOLON); if (!r) r = NonEmptyStatementNoCaseNoDefault(b, l + 1); if (!r) r = BlockStatement(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // KW_CAST OP_PAR_LEFT (Type | (KW_CONST | KW_CONST KW_SHARED // | KW_SHARED KW_CONST | KW_INOUT | KW_INOUT KW_SHARED // | KW_SHARED KW_INOUT | KW_IMMUTABLE | KW_SHARED)? ) OP_PAR_RIGHT public static boolean CastPrefix(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "CastPrefix")) return false; if (!nextTokenIs(b, KW_CAST)) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, KW_CAST, OP_PAR_LEFT); r = r && CastPrefix_2(b, l + 1); r = r && consumeToken(b, OP_PAR_RIGHT); exit_section_(b, m, CAST_PREFIX, r); return r; } // Type | (KW_CONST | KW_CONST KW_SHARED // | KW_SHARED KW_CONST | KW_INOUT | KW_INOUT KW_SHARED // | KW_SHARED KW_INOUT | KW_IMMUTABLE | KW_SHARED)? private static boolean CastPrefix_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "CastPrefix_2")) return false; boolean r; Marker m = enter_section_(b); r = Type(b, l + 1); if (!r) r = CastPrefix_2_1(b, l + 1); exit_section_(b, m, null, r); return r; } // (KW_CONST | KW_CONST KW_SHARED // | KW_SHARED KW_CONST | KW_INOUT | KW_INOUT KW_SHARED // | KW_SHARED KW_INOUT | KW_IMMUTABLE | KW_SHARED)? private static boolean CastPrefix_2_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "CastPrefix_2_1")) return false; CastPrefix_2_1_0(b, l + 1); return true; } // KW_CONST | KW_CONST KW_SHARED // | KW_SHARED KW_CONST | KW_INOUT | KW_INOUT KW_SHARED // | KW_SHARED KW_INOUT | KW_IMMUTABLE | KW_SHARED private static boolean CastPrefix_2_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "CastPrefix_2_1_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KW_CONST); if (!r) r = parseTokens(b, 0, KW_CONST, KW_SHARED); if (!r) r = parseTokens(b, 0, KW_SHARED, KW_CONST); if (!r) r = consumeToken(b, KW_INOUT); if (!r) r = parseTokens(b, 0, KW_INOUT, KW_SHARED); if (!r) r = parseTokens(b, 0, KW_SHARED, KW_INOUT); if (!r) r = consumeToken(b, KW_IMMUTABLE); if (!r) r = consumeToken(b, KW_SHARED); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // KW_CATCH OP_PAR_LEFT BasicType ID OP_PAR_RIGHT (NonEmptyStatement | BlockStatement) public static boolean Catch(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Catch")) return false; if (!nextTokenIs(b, KW_CATCH)) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, KW_CATCH, OP_PAR_LEFT); r = r && BasicType(b, l + 1); r = r && consumeTokens(b, 0, ID, OP_PAR_RIGHT); r = r && Catch_5(b, l + 1); exit_section_(b, m, CATCH, r); return r; } // NonEmptyStatement | BlockStatement private static boolean Catch_5(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Catch_5")) return false; boolean r; Marker m = enter_section_(b); r = NonEmptyStatement(b, l + 1); if (!r) r = BlockStatement(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // LastCatch | (Catch+ LastCatch?) public static boolean Catches(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Catches")) return false; if (!nextTokenIs(b, KW_CATCH)) return false; boolean r; Marker m = enter_section_(b); r = LastCatch(b, l + 1); if (!r) r = Catches_1(b, l + 1); exit_section_(b, m, CATCHES, r); return r; } // Catch+ LastCatch? private static boolean Catches_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Catches_1")) return false; boolean r; Marker m = enter_section_(b); r = Catches_1_0(b, l + 1); r = r && Catches_1_1(b, l + 1); exit_section_(b, m, null, r); return r; } // Catch+ private static boolean Catches_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Catches_1_0")) return false; boolean r; Marker m = enter_section_(b); r = Catch(b, l + 1); int c = current_position_(b); while (r) { if (!Catch(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "Catches_1_0", c)) break; c = current_position_(b); } exit_section_(b, m, null, r); return r; } // LastCatch? private static boolean Catches_1_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Catches_1_1")) return false; LastCatch(b, l + 1); return true; } /* ********************************************************** */ // KW_CLASS ComponentName (OP_SCOLON | BaseClassList? AggregateBody) // | ClassTemplateDeclaration public static boolean ClassDeclaration(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ClassDeclaration")) return false; if (!nextTokenIs(b, KW_CLASS)) return false; boolean r; Marker m = enter_section_(b); r = ClassDeclaration_0(b, l + 1); if (!r) r = ClassTemplateDeclaration(b, l + 1); exit_section_(b, m, CLASS_DECLARATION, r); return r; } // KW_CLASS ComponentName (OP_SCOLON | BaseClassList? AggregateBody) private static boolean ClassDeclaration_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ClassDeclaration_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KW_CLASS); r = r && ComponentName(b, l + 1); r = r && ClassDeclaration_0_2(b, l + 1); exit_section_(b, m, null, r); return r; } // OP_SCOLON | BaseClassList? AggregateBody private static boolean ClassDeclaration_0_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ClassDeclaration_0_2")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_SCOLON); if (!r) r = ClassDeclaration_0_2_1(b, l + 1); exit_section_(b, m, null, r); return r; } // BaseClassList? AggregateBody private static boolean ClassDeclaration_0_2_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ClassDeclaration_0_2_1")) return false; boolean r; Marker m = enter_section_(b); r = ClassDeclaration_0_2_1_0(b, l + 1); r = r && AggregateBody(b, l + 1); exit_section_(b, m, null, r); return r; } // BaseClassList? private static boolean ClassDeclaration_0_2_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ClassDeclaration_0_2_1_0")) return false; BaseClassList(b, l + 1); return true; } /* ********************************************************** */ // KW_CLASS ClassName TemplateParameters // (BaseClassList Constraint | Constraint BaseClassList | Constraint | BaseClassList)? AggregateBody public static boolean ClassTemplateDeclaration(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ClassTemplateDeclaration")) return false; if (!nextTokenIs(b, KW_CLASS)) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, KW_CLASS, CLASSNAME); r = r && TemplateParameters(b, l + 1); r = r && ClassTemplateDeclaration_3(b, l + 1); r = r && AggregateBody(b, l + 1); exit_section_(b, m, CLASS_TEMPLATE_DECLARATION, r); return r; } // (BaseClassList Constraint | Constraint BaseClassList | Constraint | BaseClassList)? private static boolean ClassTemplateDeclaration_3(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ClassTemplateDeclaration_3")) return false; ClassTemplateDeclaration_3_0(b, l + 1); return true; } // BaseClassList Constraint | Constraint BaseClassList | Constraint | BaseClassList private static boolean ClassTemplateDeclaration_3_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ClassTemplateDeclaration_3_0")) return false; boolean r; Marker m = enter_section_(b); r = ClassTemplateDeclaration_3_0_0(b, l + 1); if (!r) r = ClassTemplateDeclaration_3_0_1(b, l + 1); if (!r) r = Constraint(b, l + 1); if (!r) r = BaseClassList(b, l + 1); exit_section_(b, m, null, r); return r; } // BaseClassList Constraint private static boolean ClassTemplateDeclaration_3_0_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ClassTemplateDeclaration_3_0_0")) return false; boolean r; Marker m = enter_section_(b); r = BaseClassList(b, l + 1); r = r && Constraint(b, l + 1); exit_section_(b, m, null, r); return r; } // Constraint BaseClassList private static boolean ClassTemplateDeclaration_3_0_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ClassTemplateDeclaration_3_0_1")) return false; boolean r; Marker m = enter_section_(b); r = Constraint(b, l + 1); r = r && BaseClassList(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // Expression (OP_COMMA Expression)* public static boolean CommaExpression(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "CommaExpression")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<comma expression>"); r = Expression(b, l + 1); r = r && CommaExpression_1(b, l + 1); exit_section_(b, l, m, COMMA_EXPRESSION, r, false, null); return r; } // (OP_COMMA Expression)* private static boolean CommaExpression_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "CommaExpression_1")) return false; int c = current_position_(b); while (true) { if (!CommaExpression_1_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "CommaExpression_1", c)) break; c = current_position_(b); } return true; } // OP_COMMA Expression private static boolean CommaExpression_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "CommaExpression_1_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_COMMA); r = r && Expression(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // identifier public static boolean ComponentName(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ComponentName")) return false; if (!nextTokenIs(b, ID)) return false; boolean r; Marker m = enter_section_(b); r = identifier(b, l + 1); exit_section_(b, m, COMPONENT_NAME, r); return r; } /* ********************************************************** */ // VersionCondition | DebugCondition | StaticIfCondition public static boolean Condition(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Condition")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<condition>"); r = VersionCondition(b, l + 1); if (!r) r = DebugCondition(b, l + 1); if (!r) r = StaticIfCondition(b, l + 1); exit_section_(b, l, m, CONDITION, r, false, null); return r; } /* ********************************************************** */ // Condition ( DeclarationBlock KW_ELSE OP_COLON DeclDef* | DeclarationBlock KW_ELSE DeclarationBlock | DeclarationBlock | OP_COLON DeclDef*) public static boolean ConditionalDeclaration(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ConditionalDeclaration")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<conditional declaration>"); r = Condition(b, l + 1); r = r && ConditionalDeclaration_1(b, l + 1); exit_section_(b, l, m, CONDITIONAL_DECLARATION, r, false, null); return r; } // DeclarationBlock KW_ELSE OP_COLON DeclDef* | DeclarationBlock KW_ELSE DeclarationBlock | DeclarationBlock | OP_COLON DeclDef* private static boolean ConditionalDeclaration_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ConditionalDeclaration_1")) return false; boolean r; Marker m = enter_section_(b); r = ConditionalDeclaration_1_0(b, l + 1); if (!r) r = ConditionalDeclaration_1_1(b, l + 1); if (!r) r = DeclarationBlock(b, l + 1); if (!r) r = ConditionalDeclaration_1_3(b, l + 1); exit_section_(b, m, null, r); return r; } // DeclarationBlock KW_ELSE OP_COLON DeclDef* private static boolean ConditionalDeclaration_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ConditionalDeclaration_1_0")) return false; boolean r; Marker m = enter_section_(b); r = DeclarationBlock(b, l + 1); r = r && consumeTokens(b, 0, KW_ELSE, OP_COLON); r = r && ConditionalDeclaration_1_0_3(b, l + 1); exit_section_(b, m, null, r); return r; } // DeclDef* private static boolean ConditionalDeclaration_1_0_3(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ConditionalDeclaration_1_0_3")) return false; int c = current_position_(b); while (true) { if (!DeclDef(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "ConditionalDeclaration_1_0_3", c)) break; c = current_position_(b); } return true; } // DeclarationBlock KW_ELSE DeclarationBlock private static boolean ConditionalDeclaration_1_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ConditionalDeclaration_1_1")) return false; boolean r; Marker m = enter_section_(b); r = DeclarationBlock(b, l + 1); r = r && consumeToken(b, KW_ELSE); r = r && DeclarationBlock(b, l + 1); exit_section_(b, m, null, r); return r; } // OP_COLON DeclDef* private static boolean ConditionalDeclaration_1_3(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ConditionalDeclaration_1_3")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_COLON); r = r && ConditionalDeclaration_1_3_1(b, l + 1); exit_section_(b, m, null, r); return r; } // DeclDef* private static boolean ConditionalDeclaration_1_3_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ConditionalDeclaration_1_3_1")) return false; int c = current_position_(b); while (true) { if (!DeclDef(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "ConditionalDeclaration_1_3_1", c)) break; c = current_position_(b); } return true; } /* ********************************************************** */ // Condition (NonEmptyStatement | BlockStatement) (KW_ELSE (NonEmptyStatement | BlockStatement))? public static boolean ConditionalStatement(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ConditionalStatement")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<conditional statement>"); r = Condition(b, l + 1); r = r && ConditionalStatement_1(b, l + 1); r = r && ConditionalStatement_2(b, l + 1); exit_section_(b, l, m, CONDITIONAL_STATEMENT, r, false, null); return r; } // NonEmptyStatement | BlockStatement private static boolean ConditionalStatement_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ConditionalStatement_1")) return false; boolean r; Marker m = enter_section_(b); r = NonEmptyStatement(b, l + 1); if (!r) r = BlockStatement(b, l + 1); exit_section_(b, m, null, r); return r; } // (KW_ELSE (NonEmptyStatement | BlockStatement))? private static boolean ConditionalStatement_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ConditionalStatement_2")) return false; ConditionalStatement_2_0(b, l + 1); return true; } // KW_ELSE (NonEmptyStatement | BlockStatement) private static boolean ConditionalStatement_2_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ConditionalStatement_2_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KW_ELSE); r = r && ConditionalStatement_2_0_1(b, l + 1); exit_section_(b, m, null, r); return r; } // NonEmptyStatement | BlockStatement private static boolean ConditionalStatement_2_0_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ConditionalStatement_2_0_1")) return false; boolean r; Marker m = enter_section_(b); r = NonEmptyStatement(b, l + 1); if (!r) r = BlockStatement(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // KW_IF OP_PAR_LEFT Expression OP_PAR_RIGHT public static boolean Constraint(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Constraint")) return false; if (!nextTokenIs(b, KW_IF)) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, KW_IF, OP_PAR_LEFT); r = r && Expression(b, l + 1); r = r && consumeToken(b, OP_PAR_RIGHT); exit_section_(b, m, CONSTRAINT, r); return r; } /* ********************************************************** */ // KW_THIS Parameters MemberFunctionAttributes? (OP_SCOLON | FunctionBody) // | ConstructorTemplate public static boolean Constructor(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Constructor")) return false; if (!nextTokenIs(b, KW_THIS)) return false; boolean r; Marker m = enter_section_(b); r = Constructor_0(b, l + 1); if (!r) r = ConstructorTemplate(b, l + 1); exit_section_(b, m, CONSTRUCTOR, r); return r; } // KW_THIS Parameters MemberFunctionAttributes? (OP_SCOLON | FunctionBody) private static boolean Constructor_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Constructor_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KW_THIS); r = r && Parameters(b, l + 1); r = r && Constructor_0_2(b, l + 1); r = r && Constructor_0_3(b, l + 1); exit_section_(b, m, null, r); return r; } // MemberFunctionAttributes? private static boolean Constructor_0_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Constructor_0_2")) return false; MemberFunctionAttributes(b, l + 1); return true; } // OP_SCOLON | FunctionBody private static boolean Constructor_0_3(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Constructor_0_3")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_SCOLON); if (!r) r = FunctionBody(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // KW_THIS TemplateParameters Parameters MemberFunctionAttributes? Constraint? (OP_COLON | FunctionBody) public static boolean ConstructorTemplate(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ConstructorTemplate")) return false; if (!nextTokenIs(b, KW_THIS)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KW_THIS); r = r && TemplateParameters(b, l + 1); r = r && Parameters(b, l + 1); r = r && ConstructorTemplate_3(b, l + 1); r = r && ConstructorTemplate_4(b, l + 1); r = r && ConstructorTemplate_5(b, l + 1); exit_section_(b, m, CONSTRUCTOR_TEMPLATE, r); return r; } // MemberFunctionAttributes? private static boolean ConstructorTemplate_3(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ConstructorTemplate_3")) return false; MemberFunctionAttributes(b, l + 1); return true; } // Constraint? private static boolean ConstructorTemplate_4(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ConstructorTemplate_4")) return false; Constraint(b, l + 1); return true; } // OP_COLON | FunctionBody private static boolean ConstructorTemplate_5(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ConstructorTemplate_5")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_COLON); if (!r) r = FunctionBody(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // KW_CONTINUE ID? OP_SCOLON public static boolean ContinueStatement(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ContinueStatement")) return false; if (!nextTokenIs(b, KW_CONTINUE)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KW_CONTINUE); r = r && ContinueStatement_1(b, l + 1); r = r && consumeToken(b, OP_SCOLON); exit_section_(b, m, CONTINUE_STATEMENT, r); return r; } // ID? private static boolean ContinueStatement_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ContinueStatement_1")) return false; consumeToken(b, ID); return true; } /* ********************************************************** */ // KW_DELETE Parameters (OP_SCOLON | FunctionBody) public static boolean Deallocator(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Deallocator")) return false; if (!nextTokenIs(b, KW_DELETE)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KW_DELETE); r = r && Parameters(b, l + 1); r = r && Deallocator_2(b, l + 1); exit_section_(b, m, DEALLOCATOR, r); return r; } // OP_SCOLON | FunctionBody private static boolean Deallocator_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Deallocator_2")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_SCOLON); if (!r) r = FunctionBody(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // KW_DEBUG (OP_PAR_LEFT (INTEGER_LITERAL | ID) OP_PAR_RIGHT)? public static boolean DebugCondition(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "DebugCondition")) return false; if (!nextTokenIs(b, KW_DEBUG)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KW_DEBUG); r = r && DebugCondition_1(b, l + 1); exit_section_(b, m, DEBUG_CONDITION, r); return r; } // (OP_PAR_LEFT (INTEGER_LITERAL | ID) OP_PAR_RIGHT)? private static boolean DebugCondition_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "DebugCondition_1")) return false; DebugCondition_1_0(b, l + 1); return true; } // OP_PAR_LEFT (INTEGER_LITERAL | ID) OP_PAR_RIGHT private static boolean DebugCondition_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "DebugCondition_1_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_PAR_LEFT); r = r && DebugCondition_1_0_1(b, l + 1); r = r && consumeToken(b, OP_PAR_RIGHT); exit_section_(b, m, null, r); return r; } // INTEGER_LITERAL | ID private static boolean DebugCondition_1_0_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "DebugCondition_1_0_1")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, INTEGER_LITERAL); if (!r) r = consumeToken(b, ID); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // KW_DEBUG OP_EQ (ID | INTEGER_LITERAL) OP_SCOLON public static boolean DebugSpecification(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "DebugSpecification")) return false; if (!nextTokenIs(b, KW_DEBUG)) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, KW_DEBUG, OP_EQ); r = r && DebugSpecification_2(b, l + 1); r = r && consumeToken(b, OP_SCOLON); exit_section_(b, m, DEBUG_SPECIFICATION, r); return r; } // ID | INTEGER_LITERAL private static boolean DebugSpecification_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "DebugSpecification_2")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, ID); if (!r) r = consumeToken(b, INTEGER_LITERAL); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // (TypeCISI | StorageClass* BasicType) Declarators (OP_SCOLON | FunctionBody) | AutoDeclaration public static boolean Decl(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Decl")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<decl>"); r = Decl_0(b, l + 1); if (!r) r = AutoDeclaration(b, l + 1); exit_section_(b, l, m, DECL, r, false, null); return r; } // (TypeCISI | StorageClass* BasicType) Declarators (OP_SCOLON | FunctionBody) private static boolean Decl_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Decl_0")) return false; boolean r; Marker m = enter_section_(b); r = Decl_0_0(b, l + 1); r = r && Declarators(b, l + 1); r = r && Decl_0_2(b, l + 1); exit_section_(b, m, null, r); return r; } // TypeCISI | StorageClass* BasicType private static boolean Decl_0_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Decl_0_0")) return false; boolean r; Marker m = enter_section_(b); r = TypeCISI(b, l + 1); if (!r) r = Decl_0_0_1(b, l + 1); exit_section_(b, m, null, r); return r; } // StorageClass* BasicType private static boolean Decl_0_0_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Decl_0_0_1")) return false; boolean r; Marker m = enter_section_(b); r = Decl_0_0_1_0(b, l + 1); r = r && BasicType(b, l + 1); exit_section_(b, m, null, r); return r; } // StorageClass* private static boolean Decl_0_0_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Decl_0_0_1_0")) return false; int c = current_position_(b); while (true) { if (!StorageClass(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "Decl_0_0_1_0", c)) break; c = current_position_(b); } return true; } // OP_SCOLON | FunctionBody private static boolean Decl_0_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Decl_0_2")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_SCOLON); if (!r) r = FunctionBody(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // AttributeSpecifier | Declaration | Constructor | Destructor | Postblit | Allocator | Deallocator // | Invariant | AliasThis | StaticConstructor | StaticDestructor | SharedStaticConstructor | SharedStaticDestructor // | ConditionalDeclaration | DebugSpecification | VersionSpecification | StaticAssert | MixinDeclaration // | TemplateDeclaration | TemplateMixinDeclaration | TemplateMixin | UnitTest | OP_SCOLON public static boolean DeclDef(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "DeclDef")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<decl def>"); r = AttributeSpecifier(b, l + 1); if (!r) r = Declaration(b, l + 1); if (!r) r = Constructor(b, l + 1); if (!r) r = Destructor(b, l + 1); if (!r) r = Postblit(b, l + 1); if (!r) r = Allocator(b, l + 1); if (!r) r = Deallocator(b, l + 1); if (!r) r = Invariant(b, l + 1); if (!r) r = AliasThis(b, l + 1); if (!r) r = StaticConstructor(b, l + 1); if (!r) r = StaticDestructor(b, l + 1); if (!r) r = SharedStaticConstructor(b, l + 1); if (!r) r = SharedStaticDestructor(b, l + 1); if (!r) r = ConditionalDeclaration(b, l + 1); if (!r) r = DebugSpecification(b, l + 1); if (!r) r = VersionSpecification(b, l + 1); if (!r) r = StaticAssert(b, l + 1); if (!r) r = MixinDeclaration(b, l + 1); if (!r) r = TemplateDeclaration(b, l + 1); if (!r) r = TemplateMixinDeclaration(b, l + 1); if (!r) r = TemplateMixin(b, l + 1); if (!r) r = UnitTest(b, l + 1); if (!r) r = consumeToken(b, OP_SCOLON); exit_section_(b, l, m, DECL_DEF, r, false, null); return r; } /* ********************************************************** */ // AliasDeclaration | AliasThisDeclaration | ImportDeclaration | StructDeclaration // | ClassDeclaration | InterfaceDeclaration | EnumDeclaration | UnionDeclaration | Decl public static boolean Declaration(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Declaration")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<declaration>"); r = AliasDeclaration(b, l + 1); if (!r) r = AliasThisDeclaration(b, l + 1); if (!r) r = ImportDeclaration(b, l + 1); if (!r) r = StructDeclaration(b, l + 1); if (!r) r = ClassDeclaration(b, l + 1); if (!r) r = InterfaceDeclaration(b, l + 1); if (!r) r = EnumDeclaration(b, l + 1); if (!r) r = UnionDeclaration(b, l + 1); if (!r) r = Decl(b, l + 1); exit_section_(b, l, m, DECLARATION, r, false, null); return r; } /* ********************************************************** */ // DeclDef | OP_BRACES_LEFT DeclDef* OP_BRACES_RIGHT public static boolean DeclarationBlock(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "DeclarationBlock")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<declaration block>"); r = DeclDef(b, l + 1); if (!r) r = DeclarationBlock_1(b, l + 1); exit_section_(b, l, m, DECLARATION_BLOCK, r, false, null); return r; } // OP_BRACES_LEFT DeclDef* OP_BRACES_RIGHT private static boolean DeclarationBlock_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "DeclarationBlock_1")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_BRACES_LEFT); r = r && DeclarationBlock_1_1(b, l + 1); r = r && consumeToken(b, OP_BRACES_RIGHT); exit_section_(b, m, null, r); return r; } // DeclDef* private static boolean DeclarationBlock_1_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "DeclarationBlock_1_1")) return false; int c = current_position_(b); while (true) { if (!DeclDef(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "DeclarationBlock_1_1", c)) break; c = current_position_(b); } return true; } /* ********************************************************** */ // BasicType2* ( OP_PAR_LEFT Declarator OP_PAR_RIGHT | ID) DeclaratorSuffixes? public static boolean Declarator(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Declarator")) return false; boolean r; Marker m = enter_section_(b, l, _COLLAPSE_, "<declarator>"); r = Declarator_0(b, l + 1); r = r && Declarator_1(b, l + 1); r = r && Declarator_2(b, l + 1); exit_section_(b, l, m, DECLARATOR, r, false, null); return r; } // BasicType2* private static boolean Declarator_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Declarator_0")) return false; int c = current_position_(b); while (true) { if (!BasicType2(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "Declarator_0", c)) break; c = current_position_(b); } return true; } // OP_PAR_LEFT Declarator OP_PAR_RIGHT | ID private static boolean Declarator_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Declarator_1")) return false; boolean r; Marker m = enter_section_(b); r = Declarator_1_0(b, l + 1); if (!r) r = consumeToken(b, ID); exit_section_(b, m, null, r); return r; } // OP_PAR_LEFT Declarator OP_PAR_RIGHT private static boolean Declarator_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Declarator_1_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_PAR_LEFT); r = r && Declarator(b, l + 1); r = r && consumeToken(b, OP_PAR_RIGHT); exit_section_(b, m, null, r); return r; } // DeclaratorSuffixes? private static boolean Declarator_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Declarator_2")) return false; DeclaratorSuffixes(b, l + 1); return true; } /* ********************************************************** */ // BasicType2* (OP_PAR_LEFT Declarator2 OP_PAR_RIGHT)? DeclaratorSuffixes? public static boolean Declarator2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Declarator2")) return false; boolean r; Marker m = enter_section_(b, l, _COLLAPSE_, "<declarator 2>"); r = Declarator2_0(b, l + 1); r = r && Declarator2_1(b, l + 1); r = r && Declarator2_2(b, l + 1); exit_section_(b, l, m, DECLARATOR_2, r, false, null); return r; } // BasicType2* private static boolean Declarator2_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Declarator2_0")) return false; int c = current_position_(b); while (true) { if (!BasicType2(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "Declarator2_0", c)) break; c = current_position_(b); } return true; } // (OP_PAR_LEFT Declarator2 OP_PAR_RIGHT)? private static boolean Declarator2_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Declarator2_1")) return false; Declarator2_1_0(b, l + 1); return true; } // OP_PAR_LEFT Declarator2 OP_PAR_RIGHT private static boolean Declarator2_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Declarator2_1_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_PAR_LEFT); r = r && Declarator2(b, l + 1); r = r && consumeToken(b, OP_PAR_RIGHT); exit_section_(b, m, null, r); return r; } // DeclaratorSuffixes? private static boolean Declarator2_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Declarator2_2")) return false; DeclaratorSuffixes(b, l + 1); return true; } /* ********************************************************** */ // ID (TemplateParameters? OP_EQ Initializer)? public static boolean DeclaratorIdentifier(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "DeclaratorIdentifier")) return false; if (!nextTokenIs(b, ID)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, ID); r = r && DeclaratorIdentifier_1(b, l + 1); exit_section_(b, m, DECLARATOR_IDENTIFIER, r); return r; } // (TemplateParameters? OP_EQ Initializer)? private static boolean DeclaratorIdentifier_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "DeclaratorIdentifier_1")) return false; DeclaratorIdentifier_1_0(b, l + 1); return true; } // TemplateParameters? OP_EQ Initializer private static boolean DeclaratorIdentifier_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "DeclaratorIdentifier_1_0")) return false; boolean r; Marker m = enter_section_(b); r = DeclaratorIdentifier_1_0_0(b, l + 1); r = r && consumeToken(b, OP_EQ); r = r && Initializer(b, l + 1); exit_section_(b, m, null, r); return r; } // TemplateParameters? private static boolean DeclaratorIdentifier_1_0_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "DeclaratorIdentifier_1_0_0")) return false; TemplateParameters(b, l + 1); return true; } /* ********************************************************** */ // DeclaratorIdentifier (OP_COMMA DeclaratorIdentifier)* public static boolean DeclaratorIdentifierList(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "DeclaratorIdentifierList")) return false; if (!nextTokenIs(b, ID)) return false; boolean r; Marker m = enter_section_(b); r = DeclaratorIdentifier(b, l + 1); r = r && DeclaratorIdentifierList_1(b, l + 1); exit_section_(b, m, DECLARATOR_IDENTIFIER_LIST, r); return r; } // (OP_COMMA DeclaratorIdentifier)* private static boolean DeclaratorIdentifierList_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "DeclaratorIdentifierList_1")) return false; int c = current_position_(b); while (true) { if (!DeclaratorIdentifierList_1_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "DeclaratorIdentifierList_1", c)) break; c = current_position_(b); } return true; } // OP_COMMA DeclaratorIdentifier private static boolean DeclaratorIdentifierList_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "DeclaratorIdentifierList_1_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_COMMA); r = r && DeclaratorIdentifier(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // Declarator (TemplateParameters? OP_EQ Initializer)? public static boolean DeclaratorInitializer(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "DeclaratorInitializer")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<declarator initializer>"); r = Declarator(b, l + 1); r = r && DeclaratorInitializer_1(b, l + 1); exit_section_(b, l, m, DECLARATOR_INITIALIZER, r, false, null); return r; } // (TemplateParameters? OP_EQ Initializer)? private static boolean DeclaratorInitializer_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "DeclaratorInitializer_1")) return false; DeclaratorInitializer_1_0(b, l + 1); return true; } // TemplateParameters? OP_EQ Initializer private static boolean DeclaratorInitializer_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "DeclaratorInitializer_1_0")) return false; boolean r; Marker m = enter_section_(b); r = DeclaratorInitializer_1_0_0(b, l + 1); r = r && consumeToken(b, OP_EQ); r = r && Initializer(b, l + 1); exit_section_(b, m, null, r); return r; } // TemplateParameters? private static boolean DeclaratorInitializer_1_0_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "DeclaratorInitializer_1_0_0")) return false; TemplateParameters(b, l + 1); return true; } /* ********************************************************** */ // OP_BRACKET_LEFT OP_BRACKET_RIGHT // | OP_BRACKET_LEFT (Expression | Type) OP_BRACKET_RIGHT //TODO: Use AssignExpression here // | TemplateParameters Parameters MemberFunctionAttributes? Constraint? // | Parameters MemberFunctionAttributes? public static boolean DeclaratorSuffix(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "DeclaratorSuffix")) return false; if (!nextTokenIs(b, "<declarator suffix>", OP_BRACKET_LEFT, OP_PAR_LEFT)) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<declarator suffix>"); r = parseTokens(b, 0, OP_BRACKET_LEFT, OP_BRACKET_RIGHT); if (!r) r = DeclaratorSuffix_1(b, l + 1); if (!r) r = DeclaratorSuffix_2(b, l + 1); if (!r) r = DeclaratorSuffix_3(b, l + 1); exit_section_(b, l, m, DECLARATOR_SUFFIX, r, false, null); return r; } // OP_BRACKET_LEFT (Expression | Type) OP_BRACKET_RIGHT private static boolean DeclaratorSuffix_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "DeclaratorSuffix_1")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_BRACKET_LEFT); r = r && DeclaratorSuffix_1_1(b, l + 1); r = r && consumeToken(b, OP_BRACKET_RIGHT); exit_section_(b, m, null, r); return r; } // Expression | Type private static boolean DeclaratorSuffix_1_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "DeclaratorSuffix_1_1")) return false; boolean r; Marker m = enter_section_(b); r = Expression(b, l + 1); if (!r) r = Type(b, l + 1); exit_section_(b, m, null, r); return r; } // TemplateParameters Parameters MemberFunctionAttributes? Constraint? private static boolean DeclaratorSuffix_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "DeclaratorSuffix_2")) return false; boolean r; Marker m = enter_section_(b); r = TemplateParameters(b, l + 1); r = r && Parameters(b, l + 1); r = r && DeclaratorSuffix_2_2(b, l + 1); r = r && DeclaratorSuffix_2_3(b, l + 1); exit_section_(b, m, null, r); return r; } // MemberFunctionAttributes? private static boolean DeclaratorSuffix_2_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "DeclaratorSuffix_2_2")) return false; MemberFunctionAttributes(b, l + 1); return true; } // Constraint? private static boolean DeclaratorSuffix_2_3(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "DeclaratorSuffix_2_3")) return false; Constraint(b, l + 1); return true; } // Parameters MemberFunctionAttributes? private static boolean DeclaratorSuffix_3(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "DeclaratorSuffix_3")) return false; boolean r; Marker m = enter_section_(b); r = Parameters(b, l + 1); r = r && DeclaratorSuffix_3_1(b, l + 1); exit_section_(b, m, null, r); return r; } // MemberFunctionAttributes? private static boolean DeclaratorSuffix_3_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "DeclaratorSuffix_3_1")) return false; MemberFunctionAttributes(b, l + 1); return true; } /* ********************************************************** */ // DeclaratorSuffix+ static boolean DeclaratorSuffixes(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "DeclaratorSuffixes")) return false; if (!nextTokenIs(b, "", OP_BRACKET_LEFT, OP_PAR_LEFT)) return false; boolean r; Marker m = enter_section_(b); r = DeclaratorSuffix(b, l + 1); int c = current_position_(b); while (r) { if (!DeclaratorSuffix(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "DeclaratorSuffixes", c)) break; c = current_position_(b); } exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // DeclaratorInitializer (OP_COMMA DeclaratorIdentifierList)? public static boolean Declarators(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Declarators")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<declarators>"); r = DeclaratorInitializer(b, l + 1); r = r && Declarators_1(b, l + 1); exit_section_(b, l, m, DECLARATORS, r, false, Declarators_recover_parser_); return r; } // (OP_COMMA DeclaratorIdentifierList)? private static boolean Declarators_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Declarators_1")) return false; Declarators_1_0(b, l + 1); return true; } // OP_COMMA DeclaratorIdentifierList private static boolean Declarators_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Declarators_1_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_COMMA); r = r && DeclaratorIdentifierList(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // !(OP_SCOLON | OP_BRACES_LEFT) static boolean Declarators_recover(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Declarators_recover")) return false; boolean r; Marker m = enter_section_(b, l, _NOT_, null); r = !Declarators_recover_0(b, l + 1); exit_section_(b, l, m, null, r, false, null); return r; } // OP_SCOLON | OP_BRACES_LEFT private static boolean Declarators_recover_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Declarators_recover_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_SCOLON); if (!r) r = consumeToken(b, OP_BRACES_LEFT); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // Expression | KW___FILE__ | KW___MODULE__ | KW___LINE__| KW___FUNCTION__ // | KW___PRETTY_FUNCTION__ public static boolean DefaultInitializerExpression(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "DefaultInitializerExpression")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<default initializer expression>"); r = Expression(b, l + 1); if (!r) r = consumeToken(b, KW___FILE__); if (!r) r = consumeToken(b, KW___MODULE__); if (!r) r = consumeToken(b, KW___LINE__); if (!r) r = consumeToken(b, KW___FUNCTION__); if (!r) r = consumeToken(b, KW___PRETTY_FUNCTION__); exit_section_(b, l, m, DEFAULT_INITIALIZER_EXPRESSION, r, false, null); return r; } /* ********************************************************** */ // KW_DEFAULT OP_COLON (OP_SCOLON | NonEmptyStatementNoCaseNoDefault | BlockStatement)+ public static boolean DefaultStatement(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "DefaultStatement")) return false; if (!nextTokenIs(b, KW_DEFAULT)) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, KW_DEFAULT, OP_COLON); r = r && DefaultStatement_2(b, l + 1); exit_section_(b, m, DEFAULT_STATEMENT, r); return r; } // (OP_SCOLON | NonEmptyStatementNoCaseNoDefault | BlockStatement)+ private static boolean DefaultStatement_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "DefaultStatement_2")) return false; boolean r; Marker m = enter_section_(b); r = DefaultStatement_2_0(b, l + 1); int c = current_position_(b); while (r) { if (!DefaultStatement_2_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "DefaultStatement_2", c)) break; c = current_position_(b); } exit_section_(b, m, null, r); return r; } // OP_SCOLON | NonEmptyStatementNoCaseNoDefault | BlockStatement private static boolean DefaultStatement_2_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "DefaultStatement_2_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_SCOLON); if (!r) r = NonEmptyStatementNoCaseNoDefault(b, l + 1); if (!r) r = BlockStatement(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // KW_DEPRECATED (OP_PAR_LEFT STRING OP_PAR_RIGHT) ? public static boolean DeprecatedAttribute(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "DeprecatedAttribute")) return false; if (!nextTokenIs(b, KW_DEPRECATED)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KW_DEPRECATED); r = r && DeprecatedAttribute_1(b, l + 1); exit_section_(b, m, DEPRECATED_ATTRIBUTE, r); return r; } // (OP_PAR_LEFT STRING OP_PAR_RIGHT) ? private static boolean DeprecatedAttribute_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "DeprecatedAttribute_1")) return false; DeprecatedAttribute_1_0(b, l + 1); return true; } // OP_PAR_LEFT STRING OP_PAR_RIGHT private static boolean DeprecatedAttribute_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "DeprecatedAttribute_1_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_PAR_LEFT); r = r && STRING(b, l + 1); r = r && consumeToken(b, OP_PAR_RIGHT); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // OP_TILDA KW_THIS OP_PAR_LEFT OP_PAR_RIGHT MemberFunctionAttributes? (OP_SCOLON | FunctionBody) public static boolean Destructor(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Destructor")) return false; if (!nextTokenIs(b, OP_TILDA)) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, OP_TILDA, KW_THIS, OP_PAR_LEFT, OP_PAR_RIGHT); r = r && Destructor_4(b, l + 1); r = r && Destructor_5(b, l + 1); exit_section_(b, m, DESTRUCTOR, r); return r; } // MemberFunctionAttributes? private static boolean Destructor_4(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Destructor_4")) return false; MemberFunctionAttributes(b, l + 1); return true; } // OP_SCOLON | FunctionBody private static boolean Destructor_5(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Destructor_5")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_SCOLON); if (!r) r = FunctionBody(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // KW_DO ScopeStatement KW_WHILE OP_PAR_LEFT Expression OP_PAR_RIGHT OP_SCOLON public static boolean DoStatement(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "DoStatement")) return false; if (!nextTokenIs(b, KW_DO)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KW_DO); r = r && ScopeStatement(b, l + 1); r = r && consumeTokens(b, 0, KW_WHILE, OP_PAR_LEFT); r = r && Expression(b, l + 1); r = r && consumeTokens(b, 0, OP_PAR_RIGHT, OP_SCOLON); exit_section_(b, m, DO_STATEMENT, r); return r; } /* ********************************************************** */ // OP_SCOLON | OP_BRACES_LEFT EnumMember (OP_COMMA EnumMember)* OP_COMMA? OP_BRACES_RIGHT public static boolean EnumBody(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "EnumBody")) return false; if (!nextTokenIs(b, "<enum body>", OP_BRACES_LEFT, OP_SCOLON)) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<enum body>"); r = consumeToken(b, OP_SCOLON); if (!r) r = EnumBody_1(b, l + 1); exit_section_(b, l, m, ENUM_BODY, r, false, null); return r; } // OP_BRACES_LEFT EnumMember (OP_COMMA EnumMember)* OP_COMMA? OP_BRACES_RIGHT private static boolean EnumBody_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "EnumBody_1")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_BRACES_LEFT); r = r && EnumMember(b, l + 1); r = r && EnumBody_1_2(b, l + 1); r = r && EnumBody_1_3(b, l + 1); r = r && consumeToken(b, OP_BRACES_RIGHT); exit_section_(b, m, null, r); return r; } // (OP_COMMA EnumMember)* private static boolean EnumBody_1_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "EnumBody_1_2")) return false; int c = current_position_(b); while (true) { if (!EnumBody_1_2_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "EnumBody_1_2", c)) break; c = current_position_(b); } return true; } // OP_COMMA EnumMember private static boolean EnumBody_1_2_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "EnumBody_1_2_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_COMMA); r = r && EnumMember(b, l + 1); exit_section_(b, m, null, r); return r; } // OP_COMMA? private static boolean EnumBody_1_3(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "EnumBody_1_3")) return false; consumeToken(b, OP_COMMA); return true; } /* ********************************************************** */ // KW_ENUM ID? (OP_COLON Type)? EnumBody public static boolean EnumDeclaration(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "EnumDeclaration")) return false; if (!nextTokenIs(b, KW_ENUM)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KW_ENUM); r = r && EnumDeclaration_1(b, l + 1); r = r && EnumDeclaration_2(b, l + 1); r = r && EnumBody(b, l + 1); exit_section_(b, m, ENUM_DECLARATION, r); return r; } // ID? private static boolean EnumDeclaration_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "EnumDeclaration_1")) return false; consumeToken(b, ID); return true; } // (OP_COLON Type)? private static boolean EnumDeclaration_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "EnumDeclaration_2")) return false; EnumDeclaration_2_0(b, l + 1); return true; } // OP_COLON Type private static boolean EnumDeclaration_2_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "EnumDeclaration_2_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_COLON); r = r && Type(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // Type ID OP_EQ Expression | ID OP_EQ Expression | ID public static boolean EnumMember(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "EnumMember")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<enum member>"); r = EnumMember_0(b, l + 1); if (!r) r = EnumMember_1(b, l + 1); if (!r) r = consumeToken(b, ID); exit_section_(b, l, m, ENUM_MEMBER, r, false, null); return r; } // Type ID OP_EQ Expression private static boolean EnumMember_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "EnumMember_0")) return false; boolean r; Marker m = enter_section_(b); r = Type(b, l + 1); r = r && consumeTokens(b, 0, ID, OP_EQ); r = r && Expression(b, l + 1); exit_section_(b, m, null, r); return r; } // ID OP_EQ Expression private static boolean EnumMember_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "EnumMember_1")) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, ID, OP_EQ); r = r && Expression(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // Expression public static boolean ExpInitializer(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ExpInitializer")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<exp initializer>"); r = Expression(b, l + 1); exit_section_(b, l, m, EXP_INITIALIZER, r, false, null); return r; } /* ********************************************************** */ // Expression1 ( (OP_EQ | OP_PLUS_EQ | OP_MINUS_EQ | OP_MUL_EQ | OP_DIV_EQ | OP_MOD_EQ // | OP_AND_EQ | OP_OR_EQ | OP_XOR_EQ | OP_TILDA_EQ | OP_SH_LEFT_EQ | OP_SH_RIGHT_EQ // | OP_USH_RIGHT_EQ | OP_POW_EQ) Expression )? public static boolean Expression(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Expression")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<expression>"); r = Expression1(b, l + 1); r = r && Expression_1(b, l + 1); exit_section_(b, l, m, EXPRESSION, r, false, null); return r; } // ( (OP_EQ | OP_PLUS_EQ | OP_MINUS_EQ | OP_MUL_EQ | OP_DIV_EQ | OP_MOD_EQ // | OP_AND_EQ | OP_OR_EQ | OP_XOR_EQ | OP_TILDA_EQ | OP_SH_LEFT_EQ | OP_SH_RIGHT_EQ // | OP_USH_RIGHT_EQ | OP_POW_EQ) Expression )? private static boolean Expression_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Expression_1")) return false; Expression_1_0(b, l + 1); return true; } // (OP_EQ | OP_PLUS_EQ | OP_MINUS_EQ | OP_MUL_EQ | OP_DIV_EQ | OP_MOD_EQ // | OP_AND_EQ | OP_OR_EQ | OP_XOR_EQ | OP_TILDA_EQ | OP_SH_LEFT_EQ | OP_SH_RIGHT_EQ // | OP_USH_RIGHT_EQ | OP_POW_EQ) Expression private static boolean Expression_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Expression_1_0")) return false; boolean r; Marker m = enter_section_(b); r = Expression_1_0_0(b, l + 1); r = r && Expression(b, l + 1); exit_section_(b, m, null, r); return r; } // OP_EQ | OP_PLUS_EQ | OP_MINUS_EQ | OP_MUL_EQ | OP_DIV_EQ | OP_MOD_EQ // | OP_AND_EQ | OP_OR_EQ | OP_XOR_EQ | OP_TILDA_EQ | OP_SH_LEFT_EQ | OP_SH_RIGHT_EQ // | OP_USH_RIGHT_EQ | OP_POW_EQ private static boolean Expression_1_0_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Expression_1_0_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_EQ); if (!r) r = consumeToken(b, OP_PLUS_EQ); if (!r) r = consumeToken(b, OP_MINUS_EQ); if (!r) r = consumeToken(b, OP_MUL_EQ); if (!r) r = consumeToken(b, OP_DIV_EQ); if (!r) r = consumeToken(b, OP_MOD_EQ); if (!r) r = consumeToken(b, OP_AND_EQ); if (!r) r = consumeToken(b, OP_OR_EQ); if (!r) r = consumeToken(b, OP_XOR_EQ); if (!r) r = consumeToken(b, OP_TILDA_EQ); if (!r) r = consumeToken(b, OP_SH_LEFT_EQ); if (!r) r = consumeToken(b, OP_SH_RIGHT_EQ); if (!r) r = consumeToken(b, OP_USH_RIGHT_EQ); if (!r) r = consumeToken(b, OP_POW_EQ); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // Expression2 Expression1Rest? static boolean Expression1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Expression1")) return false; boolean r; Marker m = enter_section_(b); r = Expression2(b, l + 1); r = r && Expression1_1(b, l + 1); exit_section_(b, m, null, r); return r; } // Expression1Rest? private static boolean Expression1_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Expression1_1")) return false; Expression1Rest(b, l + 1); return true; } /* ********************************************************** */ // OP_QUEST Expression OP_COLON Expression1 static boolean Expression1Rest(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Expression1Rest")) return false; if (!nextTokenIs(b, OP_QUEST)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_QUEST); r = r && Expression(b, l + 1); r = r && consumeToken(b, OP_COLON); r = r && Expression1(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // UnaryExpression Expression2Rest? static boolean Expression2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Expression2")) return false; boolean r; Marker m = enter_section_(b); r = UnaryExpression(b, l + 1); r = r && Expression2_1(b, l + 1); exit_section_(b, m, null, r); return r; } // Expression2Rest? private static boolean Expression2_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Expression2_1")) return false; Expression2Rest(b, l + 1); return true; } /* ********************************************************** */ // ( (OP_BOOL_OR | OP_BOOL_AND | OP_OR | OP_AND | OP_XOR | OP_EQ_EQ // | OP_NOT_EQ | OP_SH_RIGHT | OP_SH_LEFT | OP_USH_RIGHT | OP_LESS_EQ | OP_GT_EQ | OP_LESS | OP_GT // | OP_UNORD | OP_UNORD_EQ | OP_LESS_GR | OP_LESS_GR_EQ | OP_NOT_GR | OP_NOT_GR_EQ | OP_NOT_LESS // | OP_NOT_LESS_EQ | OP_PLUS | OP_MINUS | OP_ASTERISK | OP_DIV | OP_MOD | KW_IN // | OP_NOT KW_IN | OP_TILDA) Expression2 ) * static boolean Expression2Rest(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Expression2Rest")) return false; int c = current_position_(b); while (true) { if (!Expression2Rest_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "Expression2Rest", c)) break; c = current_position_(b); } return true; } // (OP_BOOL_OR | OP_BOOL_AND | OP_OR | OP_AND | OP_XOR | OP_EQ_EQ // | OP_NOT_EQ | OP_SH_RIGHT | OP_SH_LEFT | OP_USH_RIGHT | OP_LESS_EQ | OP_GT_EQ | OP_LESS | OP_GT // | OP_UNORD | OP_UNORD_EQ | OP_LESS_GR | OP_LESS_GR_EQ | OP_NOT_GR | OP_NOT_GR_EQ | OP_NOT_LESS // | OP_NOT_LESS_EQ | OP_PLUS | OP_MINUS | OP_ASTERISK | OP_DIV | OP_MOD | KW_IN // | OP_NOT KW_IN | OP_TILDA) Expression2 private static boolean Expression2Rest_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Expression2Rest_0")) return false; boolean r; Marker m = enter_section_(b); r = Expression2Rest_0_0(b, l + 1); r = r && Expression2(b, l + 1); exit_section_(b, m, null, r); return r; } // OP_BOOL_OR | OP_BOOL_AND | OP_OR | OP_AND | OP_XOR | OP_EQ_EQ // | OP_NOT_EQ | OP_SH_RIGHT | OP_SH_LEFT | OP_USH_RIGHT | OP_LESS_EQ | OP_GT_EQ | OP_LESS | OP_GT // | OP_UNORD | OP_UNORD_EQ | OP_LESS_GR | OP_LESS_GR_EQ | OP_NOT_GR | OP_NOT_GR_EQ | OP_NOT_LESS // | OP_NOT_LESS_EQ | OP_PLUS | OP_MINUS | OP_ASTERISK | OP_DIV | OP_MOD | KW_IN // | OP_NOT KW_IN | OP_TILDA private static boolean Expression2Rest_0_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Expression2Rest_0_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_BOOL_OR); if (!r) r = consumeToken(b, OP_BOOL_AND); if (!r) r = consumeToken(b, OP_OR); if (!r) r = consumeToken(b, OP_AND); if (!r) r = consumeToken(b, OP_XOR); if (!r) r = consumeToken(b, OP_EQ_EQ); if (!r) r = consumeToken(b, OP_NOT_EQ); if (!r) r = consumeToken(b, OP_SH_RIGHT); if (!r) r = consumeToken(b, OP_SH_LEFT); if (!r) r = consumeToken(b, OP_USH_RIGHT); if (!r) r = consumeToken(b, OP_LESS_EQ); if (!r) r = consumeToken(b, OP_GT_EQ); if (!r) r = consumeToken(b, OP_LESS); if (!r) r = consumeToken(b, OP_GT); if (!r) r = consumeToken(b, OP_UNORD); if (!r) r = consumeToken(b, OP_UNORD_EQ); if (!r) r = consumeToken(b, OP_LESS_GR); if (!r) r = consumeToken(b, OP_LESS_GR_EQ); if (!r) r = consumeToken(b, OP_NOT_GR); if (!r) r = consumeToken(b, OP_NOT_GR_EQ); if (!r) r = consumeToken(b, OP_NOT_LESS); if (!r) r = consumeToken(b, OP_NOT_LESS_EQ); if (!r) r = consumeToken(b, OP_PLUS); if (!r) r = consumeToken(b, OP_MINUS); if (!r) r = consumeToken(b, OP_ASTERISK); if (!r) r = consumeToken(b, OP_DIV); if (!r) r = consumeToken(b, OP_MOD); if (!r) r = consumeToken(b, KW_IN); if (!r) r = parseTokens(b, 0, OP_NOT, KW_IN); if (!r) r = consumeToken(b, OP_TILDA); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // KW_FINALLY (NonEmptyStatement | BlockStatement) public static boolean FinallyStatement(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "FinallyStatement")) return false; if (!nextTokenIs(b, KW_FINALLY)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KW_FINALLY); r = r && FinallyStatement_1(b, l + 1); exit_section_(b, m, FINALLY_STATEMENT, r); return r; } // NonEmptyStatement | BlockStatement private static boolean FinallyStatement_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "FinallyStatement_1")) return false; boolean r; Marker m = enter_section_(b); r = NonEmptyStatement(b, l + 1); if (!r) r = BlockStatement(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // KW_FOR OP_PAR_LEFT (OP_SCOLON | NonEmptyStatement | BlockStatement) Expression OP_SCOLON Expression OP_PAR_RIGHT ScopeStatement public static boolean ForStatement(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ForStatement")) return false; if (!nextTokenIs(b, KW_FOR)) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, KW_FOR, OP_PAR_LEFT); r = r && ForStatement_2(b, l + 1); r = r && Expression(b, l + 1); r = r && consumeToken(b, OP_SCOLON); r = r && Expression(b, l + 1); r = r && consumeToken(b, OP_PAR_RIGHT); r = r && ScopeStatement(b, l + 1); exit_section_(b, m, FOR_STATEMENT, r); return r; } // OP_SCOLON | NonEmptyStatement | BlockStatement private static boolean ForStatement_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ForStatement_2")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_SCOLON); if (!r) r = NonEmptyStatement(b, l + 1); if (!r) r = BlockStatement(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // (KW_FOREACH | KW_FOREACH_REVERSE) OP_PAR_LEFT ForeachTypes OP_SCOLON Expression OP_DDOT Expression OP_PAR_RIGHT ScopeStatement public static boolean ForeachRangeStatement(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ForeachRangeStatement")) return false; if (!nextTokenIs(b, "<foreach range statement>", KW_FOREACH, KW_FOREACH_REVERSE)) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<foreach range statement>"); r = ForeachRangeStatement_0(b, l + 1); r = r && consumeToken(b, OP_PAR_LEFT); r = r && ForeachTypes(b, l + 1); r = r && consumeToken(b, OP_SCOLON); r = r && Expression(b, l + 1); r = r && consumeToken(b, OP_DDOT); r = r && Expression(b, l + 1); r = r && consumeToken(b, OP_PAR_RIGHT); r = r && ScopeStatement(b, l + 1); exit_section_(b, l, m, FOREACH_RANGE_STATEMENT, r, false, null); return r; } // KW_FOREACH | KW_FOREACH_REVERSE private static boolean ForeachRangeStatement_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ForeachRangeStatement_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KW_FOREACH); if (!r) r = consumeToken(b, KW_FOREACH_REVERSE); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // (KW_FOREACH | KW_FOREACH_REVERSE) OP_PAR_LEFT ForeachTypes OP_SCOLON Expression OP_PAR_RIGHT (NonEmptyStatement | BlockStatement) public static boolean ForeachStatement(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ForeachStatement")) return false; if (!nextTokenIs(b, "<foreach statement>", KW_FOREACH, KW_FOREACH_REVERSE)) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<foreach statement>"); r = ForeachStatement_0(b, l + 1); r = r && consumeToken(b, OP_PAR_LEFT); r = r && ForeachTypes(b, l + 1); r = r && consumeToken(b, OP_SCOLON); r = r && Expression(b, l + 1); r = r && consumeToken(b, OP_PAR_RIGHT); r = r && ForeachStatement_6(b, l + 1); exit_section_(b, l, m, FOREACH_STATEMENT, r, false, null); return r; } // KW_FOREACH | KW_FOREACH_REVERSE private static boolean ForeachStatement_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ForeachStatement_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KW_FOREACH); if (!r) r = consumeToken(b, KW_FOREACH_REVERSE); exit_section_(b, m, null, r); return r; } // NonEmptyStatement | BlockStatement private static boolean ForeachStatement_6(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ForeachStatement_6")) return false; boolean r; Marker m = enter_section_(b); r = NonEmptyStatement(b, l + 1); if (!r) r = BlockStatement(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // KW_REF? TypeCtors? (BasicType Declarator | ID) public static boolean ForeachType(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ForeachType")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<foreach type>"); r = ForeachType_0(b, l + 1); r = r && ForeachType_1(b, l + 1); r = r && ForeachType_2(b, l + 1); exit_section_(b, l, m, FOREACH_TYPE, r, false, null); return r; } // KW_REF? private static boolean ForeachType_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ForeachType_0")) return false; consumeToken(b, KW_REF); return true; } // TypeCtors? private static boolean ForeachType_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ForeachType_1")) return false; TypeCtors(b, l + 1); return true; } // BasicType Declarator | ID private static boolean ForeachType_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ForeachType_2")) return false; boolean r; Marker m = enter_section_(b); r = ForeachType_2_0(b, l + 1); if (!r) r = consumeToken(b, ID); exit_section_(b, m, null, r); return r; } // BasicType Declarator private static boolean ForeachType_2_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ForeachType_2_0")) return false; boolean r; Marker m = enter_section_(b); r = BasicType(b, l + 1); r = r && Declarator(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // ForeachType (OP_COMMA ForeachType)* public static boolean ForeachTypes(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ForeachTypes")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<foreach types>"); r = ForeachType(b, l + 1); r = r && ForeachTypes_1(b, l + 1); exit_section_(b, l, m, FOREACH_TYPES, r, false, null); return r; } // (OP_COMMA ForeachType)* private static boolean ForeachTypes_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ForeachTypes_1")) return false; int c = current_position_(b); while (true) { if (!ForeachTypes_1_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "ForeachTypes_1", c)) break; c = current_position_(b); } return true; } // OP_COMMA ForeachType private static boolean ForeachTypes_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ForeachTypes_1_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_COMMA); r = r && ForeachType(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // KW_NOTHROW | KW_PURE | Property public static boolean FunctionAttribute(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "FunctionAttribute")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<function attribute>"); r = consumeToken(b, KW_NOTHROW); if (!r) r = consumeToken(b, KW_PURE); if (!r) r = Property(b, l + 1); exit_section_(b, l, m, FUNCTION_ATTRIBUTE, r, false, null); return r; } /* ********************************************************** */ // FunctionAttribute+ public static boolean FunctionAttributes(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "FunctionAttributes")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<function attributes>"); r = FunctionAttribute(b, l + 1); int c = current_position_(b); while (r) { if (!FunctionAttribute(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "FunctionAttributes", c)) break; c = current_position_(b); } exit_section_(b, l, m, FUNCTION_ATTRIBUTES, r, false, null); return r; } /* ********************************************************** */ // BlockStatement | (InStatement OutStatement | OutStatement InStatement | InStatement | OutStatement)? BodyStatement public static boolean FunctionBody(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "FunctionBody")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<function body>"); r = BlockStatement(b, l + 1); if (!r) r = FunctionBody_1(b, l + 1); exit_section_(b, l, m, FUNCTION_BODY, r, false, null); return r; } // (InStatement OutStatement | OutStatement InStatement | InStatement | OutStatement)? BodyStatement private static boolean FunctionBody_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "FunctionBody_1")) return false; boolean r; Marker m = enter_section_(b); r = FunctionBody_1_0(b, l + 1); r = r && BodyStatement(b, l + 1); exit_section_(b, m, null, r); return r; } // (InStatement OutStatement | OutStatement InStatement | InStatement | OutStatement)? private static boolean FunctionBody_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "FunctionBody_1_0")) return false; FunctionBody_1_0_0(b, l + 1); return true; } // InStatement OutStatement | OutStatement InStatement | InStatement | OutStatement private static boolean FunctionBody_1_0_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "FunctionBody_1_0_0")) return false; boolean r; Marker m = enter_section_(b); r = FunctionBody_1_0_0_0(b, l + 1); if (!r) r = FunctionBody_1_0_0_1(b, l + 1); if (!r) r = InStatement(b, l + 1); if (!r) r = OutStatement(b, l + 1); exit_section_(b, m, null, r); return r; } // InStatement OutStatement private static boolean FunctionBody_1_0_0_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "FunctionBody_1_0_0_0")) return false; boolean r; Marker m = enter_section_(b); r = InStatement(b, l + 1); r = r && OutStatement(b, l + 1); exit_section_(b, m, null, r); return r; } // OutStatement InStatement private static boolean FunctionBody_1_0_0_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "FunctionBody_1_0_0_1")) return false; boolean r; Marker m = enter_section_(b); r = OutStatement(b, l + 1); r = r && InStatement(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // KW_FUNCTION Type? ParameterAttributes? FunctionBody // | KW_DELEGATE Type? ParameterAttributes? FunctionBody // | ParameterAttributes FunctionBody // | FunctionBody public static boolean FunctionLiteral(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "FunctionLiteral")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<function literal>"); r = FunctionLiteral_0(b, l + 1); if (!r) r = FunctionLiteral_1(b, l + 1); if (!r) r = FunctionLiteral_2(b, l + 1); if (!r) r = FunctionBody(b, l + 1); exit_section_(b, l, m, FUNCTION_LITERAL, r, false, null); return r; } // KW_FUNCTION Type? ParameterAttributes? FunctionBody private static boolean FunctionLiteral_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "FunctionLiteral_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KW_FUNCTION); r = r && FunctionLiteral_0_1(b, l + 1); r = r && FunctionLiteral_0_2(b, l + 1); r = r && FunctionBody(b, l + 1); exit_section_(b, m, null, r); return r; } // Type? private static boolean FunctionLiteral_0_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "FunctionLiteral_0_1")) return false; Type(b, l + 1); return true; } // ParameterAttributes? private static boolean FunctionLiteral_0_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "FunctionLiteral_0_2")) return false; ParameterAttributes(b, l + 1); return true; } // KW_DELEGATE Type? ParameterAttributes? FunctionBody private static boolean FunctionLiteral_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "FunctionLiteral_1")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KW_DELEGATE); r = r && FunctionLiteral_1_1(b, l + 1); r = r && FunctionLiteral_1_2(b, l + 1); r = r && FunctionBody(b, l + 1); exit_section_(b, m, null, r); return r; } // Type? private static boolean FunctionLiteral_1_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "FunctionLiteral_1_1")) return false; Type(b, l + 1); return true; } // ParameterAttributes? private static boolean FunctionLiteral_1_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "FunctionLiteral_1_2")) return false; ParameterAttributes(b, l + 1); return true; } // ParameterAttributes FunctionBody private static boolean FunctionLiteral_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "FunctionLiteral_2")) return false; boolean r; Marker m = enter_section_(b); r = ParameterAttributes(b, l + 1); r = r && FunctionBody(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // KW_GOTO (ID | KW_DEFAULT | KW_CASE Expression?) OP_SCOLON public static boolean GotoStatement(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "GotoStatement")) return false; if (!nextTokenIs(b, KW_GOTO)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KW_GOTO); r = r && GotoStatement_1(b, l + 1); r = r && consumeToken(b, OP_SCOLON); exit_section_(b, m, GOTO_STATEMENT, r); return r; } // ID | KW_DEFAULT | KW_CASE Expression? private static boolean GotoStatement_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "GotoStatement_1")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, ID); if (!r) r = consumeToken(b, KW_DEFAULT); if (!r) r = GotoStatement_1_2(b, l + 1); exit_section_(b, m, null, r); return r; } // KW_CASE Expression? private static boolean GotoStatement_1_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "GotoStatement_1_2")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KW_CASE); r = r && GotoStatement_1_2_1(b, l + 1); exit_section_(b, m, null, r); return r; } // Expression? private static boolean GotoStatement_1_2_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "GotoStatement_1_2_1")) return false; Expression(b, l + 1); return true; } /* ********************************************************** */ // (TemplateInstance | ID) (OP_DOT (TemplateInstance | ID))* public static boolean IdentifierList(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "IdentifierList")) return false; if (!nextTokenIs(b, ID)) return false; boolean r; Marker m = enter_section_(b); r = IdentifierList_0(b, l + 1); r = r && IdentifierList_1(b, l + 1); exit_section_(b, m, IDENTIFIER_LIST, r); return r; } // TemplateInstance | ID private static boolean IdentifierList_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "IdentifierList_0")) return false; boolean r; Marker m = enter_section_(b); r = TemplateInstance(b, l + 1); if (!r) r = consumeToken(b, ID); exit_section_(b, m, null, r); return r; } // (OP_DOT (TemplateInstance | ID))* private static boolean IdentifierList_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "IdentifierList_1")) return false; int c = current_position_(b); while (true) { if (!IdentifierList_1_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "IdentifierList_1", c)) break; c = current_position_(b); } return true; } // OP_DOT (TemplateInstance | ID) private static boolean IdentifierList_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "IdentifierList_1_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_DOT); r = r && IdentifierList_1_0_1(b, l + 1); exit_section_(b, m, null, r); return r; } // TemplateInstance | ID private static boolean IdentifierList_1_0_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "IdentifierList_1_0_1")) return false; boolean r; Marker m = enter_section_(b); r = TemplateInstance(b, l + 1); if (!r) r = consumeToken(b, ID); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // Expression | KW_AUTO ID OP_EQ Expression // | TypeCtors ID OP_EQ Expression // | TypeCtors? BasicType ID OP_EQ Expression public static boolean IfCondition(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "IfCondition")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<if condition>"); r = Expression(b, l + 1); if (!r) r = IfCondition_1(b, l + 1); if (!r) r = IfCondition_2(b, l + 1); if (!r) r = IfCondition_3(b, l + 1); exit_section_(b, l, m, IF_CONDITION, r, false, null); return r; } // KW_AUTO ID OP_EQ Expression private static boolean IfCondition_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "IfCondition_1")) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, KW_AUTO, ID, OP_EQ); r = r && Expression(b, l + 1); exit_section_(b, m, null, r); return r; } // TypeCtors ID OP_EQ Expression private static boolean IfCondition_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "IfCondition_2")) return false; boolean r; Marker m = enter_section_(b); r = TypeCtors(b, l + 1); r = r && consumeTokens(b, 0, ID, OP_EQ); r = r && Expression(b, l + 1); exit_section_(b, m, null, r); return r; } // TypeCtors? BasicType ID OP_EQ Expression private static boolean IfCondition_3(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "IfCondition_3")) return false; boolean r; Marker m = enter_section_(b); r = IfCondition_3_0(b, l + 1); r = r && BasicType(b, l + 1); r = r && consumeTokens(b, 0, ID, OP_EQ); r = r && Expression(b, l + 1); exit_section_(b, m, null, r); return r; } // TypeCtors? private static boolean IfCondition_3_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "IfCondition_3_0")) return false; TypeCtors(b, l + 1); return true; } /* ********************************************************** */ // KW_IF OP_PAR_LEFT IfCondition OP_PAR_RIGHT ScopeStatement (KW_ELSE ScopeStatement)? public static boolean IfStatement(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "IfStatement")) return false; if (!nextTokenIs(b, KW_IF)) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, KW_IF, OP_PAR_LEFT); r = r && IfCondition(b, l + 1); r = r && consumeToken(b, OP_PAR_RIGHT); r = r && ScopeStatement(b, l + 1); r = r && IfStatement_5(b, l + 1); exit_section_(b, m, IF_STATEMENT, r); return r; } // (KW_ELSE ScopeStatement)? private static boolean IfStatement_5(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "IfStatement_5")) return false; IfStatement_5_0(b, l + 1); return true; } // KW_ELSE ScopeStatement private static boolean IfStatement_5_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "IfStatement_5_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KW_ELSE); r = r && ScopeStatement(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // (ID OP_EQ)? ModuleFullyQualifiedName public static boolean Import(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Import")) return false; if (!nextTokenIs(b, ID)) return false; boolean r; Marker m = enter_section_(b); r = Import_0(b, l + 1); r = r && ModuleFullyQualifiedName(b, l + 1); exit_section_(b, m, IMPORT, r); return r; } // (ID OP_EQ)? private static boolean Import_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Import_0")) return false; Import_0_0(b, l + 1); return true; } // ID OP_EQ private static boolean Import_0_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Import_0_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, ID, OP_EQ); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // (ID OP_EQ)? ID public static boolean ImportBind(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ImportBind")) return false; if (!nextTokenIs(b, ID)) return false; boolean r; Marker m = enter_section_(b); r = ImportBind_0(b, l + 1); r = r && consumeToken(b, ID); exit_section_(b, m, IMPORT_BIND, r); return r; } // (ID OP_EQ)? private static boolean ImportBind_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ImportBind_0")) return false; ImportBind_0_0(b, l + 1); return true; } // ID OP_EQ private static boolean ImportBind_0_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ImportBind_0_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, ID, OP_EQ); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // Import OP_COLON ImportBind (OP_COMMA ImportBind)* public static boolean ImportBindings(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ImportBindings")) return false; if (!nextTokenIs(b, ID)) return false; boolean r; Marker m = enter_section_(b); r = Import(b, l + 1); r = r && consumeToken(b, OP_COLON); r = r && ImportBind(b, l + 1); r = r && ImportBindings_3(b, l + 1); exit_section_(b, m, IMPORT_BINDINGS, r); return r; } // (OP_COMMA ImportBind)* private static boolean ImportBindings_3(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ImportBindings_3")) return false; int c = current_position_(b); while (true) { if (!ImportBindings_3_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "ImportBindings_3", c)) break; c = current_position_(b); } return true; } // OP_COMMA ImportBind private static boolean ImportBindings_3_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ImportBindings_3_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_COMMA); r = r && ImportBind(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // KW_STATIC? KW_IMPORT ImportList OP_SCOLON public static boolean ImportDeclaration(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ImportDeclaration")) return false; if (!nextTokenIs(b, "<import declaration>", KW_IMPORT, KW_STATIC)) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<import declaration>"); r = ImportDeclaration_0(b, l + 1); r = r && consumeToken(b, KW_IMPORT); r = r && ImportList(b, l + 1); r = r && consumeToken(b, OP_SCOLON); exit_section_(b, l, m, IMPORT_DECLARATION, r, false, null); return r; } // KW_STATIC? private static boolean ImportDeclaration_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ImportDeclaration_0")) return false; consumeToken(b, KW_STATIC); return true; } /* ********************************************************** */ // KW_IMPORT OP_PAR_LEFT Expression OP_PAR_RIGHT public static boolean ImportExpression(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ImportExpression")) return false; if (!nextTokenIs(b, KW_IMPORT)) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, KW_IMPORT, OP_PAR_LEFT); r = r && Expression(b, l + 1); r = r && consumeToken(b, OP_PAR_RIGHT); exit_section_(b, m, IMPORT_EXPRESSION, r); return r; } /* ********************************************************** */ // (ImportBindings | Import) (OP_COMMA (ImportBindings | Import))* public static boolean ImportList(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ImportList")) return false; if (!nextTokenIs(b, ID)) return false; boolean r; Marker m = enter_section_(b); r = ImportList_0(b, l + 1); r = r && ImportList_1(b, l + 1); exit_section_(b, m, IMPORT_LIST, r); return r; } // ImportBindings | Import private static boolean ImportList_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ImportList_0")) return false; boolean r; Marker m = enter_section_(b); r = ImportBindings(b, l + 1); if (!r) r = Import(b, l + 1); exit_section_(b, m, null, r); return r; } // (OP_COMMA (ImportBindings | Import))* private static boolean ImportList_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ImportList_1")) return false; int c = current_position_(b); while (true) { if (!ImportList_1_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "ImportList_1", c)) break; c = current_position_(b); } return true; } // OP_COMMA (ImportBindings | Import) private static boolean ImportList_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ImportList_1_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_COMMA); r = r && ImportList_1_0_1(b, l + 1); exit_section_(b, m, null, r); return r; } // ImportBindings | Import private static boolean ImportList_1_0_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ImportList_1_0_1")) return false; boolean r; Marker m = enter_section_(b); r = ImportBindings(b, l + 1); if (!r) r = Import(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // KW_AUTO | TypeCtor | KW_FINAL | KW_IN | KW_LAZY | KW_OUT | KW_REF | KW_SCOPE public static boolean InOutX(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "InOutX")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<in out x>"); r = consumeToken(b, KW_AUTO); if (!r) r = TypeCtor(b, l + 1); if (!r) r = consumeToken(b, KW_FINAL); if (!r) r = consumeToken(b, KW_IN); if (!r) r = consumeToken(b, KW_LAZY); if (!r) r = consumeToken(b, KW_OUT); if (!r) r = consumeToken(b, KW_REF); if (!r) r = consumeToken(b, KW_SCOPE); exit_section_(b, l, m, IN_OUT_X, r, false, null); return r; } /* ********************************************************** */ // KW_IN BlockStatement public static boolean InStatement(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "InStatement")) return false; if (!nextTokenIs(b, KW_IN)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KW_IN); r = r && BlockStatement(b, l + 1); exit_section_(b, m, IN_STATEMENT, r); return r; } /* ********************************************************** */ // KW_VOID | NonVoidInitializer public static boolean Initializer(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Initializer")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<initializer>"); r = consumeToken(b, KW_VOID); if (!r) r = NonVoidInitializer(b, l + 1); exit_section_(b, l, m, INITIALIZER, r, false, null); return r; } /* ********************************************************** */ // KW_INTERFACE ID (OP_SCOLON | BaseInterfaceList? AggregateBody) // | InterfaceTemplateDeclaration public static boolean InterfaceDeclaration(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "InterfaceDeclaration")) return false; if (!nextTokenIs(b, KW_INTERFACE)) return false; boolean r; Marker m = enter_section_(b); r = InterfaceDeclaration_0(b, l + 1); if (!r) r = InterfaceTemplateDeclaration(b, l + 1); exit_section_(b, m, INTERFACE_DECLARATION, r); return r; } // KW_INTERFACE ID (OP_SCOLON | BaseInterfaceList? AggregateBody) private static boolean InterfaceDeclaration_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "InterfaceDeclaration_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, KW_INTERFACE, ID); r = r && InterfaceDeclaration_0_2(b, l + 1); exit_section_(b, m, null, r); return r; } // OP_SCOLON | BaseInterfaceList? AggregateBody private static boolean InterfaceDeclaration_0_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "InterfaceDeclaration_0_2")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_SCOLON); if (!r) r = InterfaceDeclaration_0_2_1(b, l + 1); exit_section_(b, m, null, r); return r; } // BaseInterfaceList? AggregateBody private static boolean InterfaceDeclaration_0_2_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "InterfaceDeclaration_0_2_1")) return false; boolean r; Marker m = enter_section_(b); r = InterfaceDeclaration_0_2_1_0(b, l + 1); r = r && AggregateBody(b, l + 1); exit_section_(b, m, null, r); return r; } // BaseInterfaceList? private static boolean InterfaceDeclaration_0_2_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "InterfaceDeclaration_0_2_1_0")) return false; BaseInterfaceList(b, l + 1); return true; } /* ********************************************************** */ // KW_INTERFACE ID TemplateParameters // (BaseClassList Constraint | Constraint BaseClassList | Constraint | BaseClassList)? AggregateBody public static boolean InterfaceTemplateDeclaration(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "InterfaceTemplateDeclaration")) return false; if (!nextTokenIs(b, KW_INTERFACE)) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, KW_INTERFACE, ID); r = r && TemplateParameters(b, l + 1); r = r && InterfaceTemplateDeclaration_3(b, l + 1); r = r && AggregateBody(b, l + 1); exit_section_(b, m, INTERFACE_TEMPLATE_DECLARATION, r); return r; } // (BaseClassList Constraint | Constraint BaseClassList | Constraint | BaseClassList)? private static boolean InterfaceTemplateDeclaration_3(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "InterfaceTemplateDeclaration_3")) return false; InterfaceTemplateDeclaration_3_0(b, l + 1); return true; } // BaseClassList Constraint | Constraint BaseClassList | Constraint | BaseClassList private static boolean InterfaceTemplateDeclaration_3_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "InterfaceTemplateDeclaration_3_0")) return false; boolean r; Marker m = enter_section_(b); r = InterfaceTemplateDeclaration_3_0_0(b, l + 1); if (!r) r = InterfaceTemplateDeclaration_3_0_1(b, l + 1); if (!r) r = Constraint(b, l + 1); if (!r) r = BaseClassList(b, l + 1); exit_section_(b, m, null, r); return r; } // BaseClassList Constraint private static boolean InterfaceTemplateDeclaration_3_0_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "InterfaceTemplateDeclaration_3_0_0")) return false; boolean r; Marker m = enter_section_(b); r = BaseClassList(b, l + 1); r = r && Constraint(b, l + 1); exit_section_(b, m, null, r); return r; } // Constraint BaseClassList private static boolean InterfaceTemplateDeclaration_3_0_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "InterfaceTemplateDeclaration_3_0_1")) return false; boolean r; Marker m = enter_section_(b); r = Constraint(b, l + 1); r = r && BaseClassList(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // KW_INVARIANT OP_PAR_LEFT OP_PAR_RIGHT BlockStatement public static boolean Invariant(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Invariant")) return false; if (!nextTokenIs(b, KW_INVARIANT)) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, KW_INVARIANT, OP_PAR_LEFT, OP_PAR_RIGHT); r = r && BlockStatement(b, l + 1); exit_section_(b, m, INVARIANT, r); return r; } /* ********************************************************** */ // KW_IS OP_PAR_LEFT Type ( // OP_COLON TypeSpecialization // | OP_EQ_EQ TypeSpecialization // | ID // | ID OP_COLON TypeSpecialization (OP_COMMA TemplateParameterList)? // | ID OP_EQ_EQ TypeSpecialization (OP_COMMA TemplateParameterList)? ) OP_PAR_RIGHT public static boolean IsExpression(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "IsExpression")) return false; if (!nextTokenIs(b, KW_IS)) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, KW_IS, OP_PAR_LEFT); r = r && Type(b, l + 1); r = r && IsExpression_3(b, l + 1); r = r && consumeToken(b, OP_PAR_RIGHT); exit_section_(b, m, IS_EXPRESSION, r); return r; } // OP_COLON TypeSpecialization // | OP_EQ_EQ TypeSpecialization // | ID // | ID OP_COLON TypeSpecialization (OP_COMMA TemplateParameterList)? // | ID OP_EQ_EQ TypeSpecialization (OP_COMMA TemplateParameterList)? private static boolean IsExpression_3(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "IsExpression_3")) return false; boolean r; Marker m = enter_section_(b); r = IsExpression_3_0(b, l + 1); if (!r) r = IsExpression_3_1(b, l + 1); if (!r) r = consumeToken(b, ID); if (!r) r = IsExpression_3_3(b, l + 1); if (!r) r = IsExpression_3_4(b, l + 1); exit_section_(b, m, null, r); return r; } // OP_COLON TypeSpecialization private static boolean IsExpression_3_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "IsExpression_3_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_COLON); r = r && TypeSpecialization(b, l + 1); exit_section_(b, m, null, r); return r; } // OP_EQ_EQ TypeSpecialization private static boolean IsExpression_3_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "IsExpression_3_1")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_EQ_EQ); r = r && TypeSpecialization(b, l + 1); exit_section_(b, m, null, r); return r; } // ID OP_COLON TypeSpecialization (OP_COMMA TemplateParameterList)? private static boolean IsExpression_3_3(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "IsExpression_3_3")) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, ID, OP_COLON); r = r && TypeSpecialization(b, l + 1); r = r && IsExpression_3_3_3(b, l + 1); exit_section_(b, m, null, r); return r; } // (OP_COMMA TemplateParameterList)? private static boolean IsExpression_3_3_3(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "IsExpression_3_3_3")) return false; IsExpression_3_3_3_0(b, l + 1); return true; } // OP_COMMA TemplateParameterList private static boolean IsExpression_3_3_3_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "IsExpression_3_3_3_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_COMMA); r = r && TemplateParameterList(b, l + 1); exit_section_(b, m, null, r); return r; } // ID OP_EQ_EQ TypeSpecialization (OP_COMMA TemplateParameterList)? private static boolean IsExpression_3_4(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "IsExpression_3_4")) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, ID, OP_EQ_EQ); r = r && TypeSpecialization(b, l + 1); r = r && IsExpression_3_4_3(b, l + 1); exit_section_(b, m, null, r); return r; } // (OP_COMMA TemplateParameterList)? private static boolean IsExpression_3_4_3(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "IsExpression_3_4_3")) return false; IsExpression_3_4_3_0(b, l + 1); return true; } // OP_COMMA TemplateParameterList private static boolean IsExpression_3_4_3_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "IsExpression_3_4_3_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_COMMA); r = r && TemplateParameterList(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // Expression OP_COLON Expression public static boolean KeyValuePair(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "KeyValuePair")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<key value pair>"); r = Expression(b, l + 1); r = r && consumeToken(b, OP_COLON); r = r && Expression(b, l + 1); exit_section_(b, l, m, KEY_VALUE_PAIR, r, false, null); return r; } /* ********************************************************** */ // ID OP_LAMBDA_ARROW Expression // | (KW_FUNCTION|KW_DELEGATE)? ParameterAttributes OP_LAMBDA_ARROW Expression public static boolean Lambda(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Lambda")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<lambda>"); r = Lambda_0(b, l + 1); if (!r) r = Lambda_1(b, l + 1); exit_section_(b, l, m, LAMBDA, r, false, null); return r; } // ID OP_LAMBDA_ARROW Expression private static boolean Lambda_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Lambda_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, ID, OP_LAMBDA_ARROW); r = r && Expression(b, l + 1); exit_section_(b, m, null, r); return r; } // (KW_FUNCTION|KW_DELEGATE)? ParameterAttributes OP_LAMBDA_ARROW Expression private static boolean Lambda_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Lambda_1")) return false; boolean r; Marker m = enter_section_(b); r = Lambda_1_0(b, l + 1); r = r && ParameterAttributes(b, l + 1); r = r && consumeToken(b, OP_LAMBDA_ARROW); r = r && Expression(b, l + 1); exit_section_(b, m, null, r); return r; } // (KW_FUNCTION|KW_DELEGATE)? private static boolean Lambda_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Lambda_1_0")) return false; Lambda_1_0_0(b, l + 1); return true; } // KW_FUNCTION|KW_DELEGATE private static boolean Lambda_1_0_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Lambda_1_0_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KW_FUNCTION); if (!r) r = consumeToken(b, KW_DELEGATE); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // KW_CATCH (NonEmptyStatement | BlockStatement) public static boolean LastCatch(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "LastCatch")) return false; if (!nextTokenIs(b, KW_CATCH)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KW_CATCH); r = r && LastCatch_1(b, l + 1); exit_section_(b, m, LAST_CATCH, r); return r; } // NonEmptyStatement | BlockStatement private static boolean LastCatch_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "LastCatch_1")) return false; boolean r; Marker m = enter_section_(b); r = NonEmptyStatement(b, l + 1); if (!r) r = BlockStatement(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // KW_EXTERN OP_PAR_LEFT // ("C" OP_PLUS_PLUS OP_COMMA IdentifierList | ("C" OP_PLUS_PLUS | "C" | "D" | "Windows" | "Pascal" | "System")) // OP_PAR_RIGHT public static boolean LinkageAttribute(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "LinkageAttribute")) return false; if (!nextTokenIs(b, KW_EXTERN)) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, KW_EXTERN, OP_PAR_LEFT); r = r && LinkageAttribute_2(b, l + 1); r = r && consumeToken(b, OP_PAR_RIGHT); exit_section_(b, m, LINKAGE_ATTRIBUTE, r); return r; } // "C" OP_PLUS_PLUS OP_COMMA IdentifierList | ("C" OP_PLUS_PLUS | "C" | "D" | "Windows" | "Pascal" | "System") private static boolean LinkageAttribute_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "LinkageAttribute_2")) return false; boolean r; Marker m = enter_section_(b); r = LinkageAttribute_2_0(b, l + 1); if (!r) r = LinkageAttribute_2_1(b, l + 1); exit_section_(b, m, null, r); return r; } // "C" OP_PLUS_PLUS OP_COMMA IdentifierList private static boolean LinkageAttribute_2_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "LinkageAttribute_2_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, "C"); r = r && consumeTokens(b, 0, OP_PLUS_PLUS, OP_COMMA); r = r && IdentifierList(b, l + 1); exit_section_(b, m, null, r); return r; } // "C" OP_PLUS_PLUS | "C" | "D" | "Windows" | "Pascal" | "System" private static boolean LinkageAttribute_2_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "LinkageAttribute_2_1")) return false; boolean r; Marker m = enter_section_(b); r = LinkageAttribute_2_1_0(b, l + 1); if (!r) r = consumeToken(b, "C"); if (!r) r = consumeToken(b, "D"); if (!r) r = consumeToken(b, "Windows"); if (!r) r = consumeToken(b, "Pascal"); if (!r) r = consumeToken(b, "System"); exit_section_(b, m, null, r); return r; } // "C" OP_PLUS_PLUS private static boolean LinkageAttribute_2_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "LinkageAttribute_2_1_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, "C"); r = r && consumeToken(b, OP_PLUS_PLUS); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // (KW_CONST | KW_IMMUTABLE | KW_SHARED | KW_INOUT | FunctionAttribute)+ public static boolean MemberFunctionAttributes(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "MemberFunctionAttributes")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<member function attributes>"); r = MemberFunctionAttributes_0(b, l + 1); int c = current_position_(b); while (r) { if (!MemberFunctionAttributes_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "MemberFunctionAttributes", c)) break; c = current_position_(b); } exit_section_(b, l, m, MEMBER_FUNCTION_ATTRIBUTES, r, false, null); return r; } // KW_CONST | KW_IMMUTABLE | KW_SHARED | KW_INOUT | FunctionAttribute private static boolean MemberFunctionAttributes_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "MemberFunctionAttributes_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KW_CONST); if (!r) r = consumeToken(b, KW_IMMUTABLE); if (!r) r = consumeToken(b, KW_SHARED); if (!r) r = consumeToken(b, KW_INOUT); if (!r) r = FunctionAttribute(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // MixinStatement OP_SCOLON public static boolean MixinDeclaration(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "MixinDeclaration")) return false; if (!nextTokenIs(b, KW_MIXIN)) return false; boolean r; Marker m = enter_section_(b); r = MixinStatement(b, l + 1); r = r && consumeToken(b, OP_SCOLON); exit_section_(b, m, MIXIN_DECLARATION, r); return r; } /* ********************************************************** */ // KW_MIXIN OP_PAR_LEFT Expression OP_PAR_RIGHT public static boolean MixinStatement(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "MixinStatement")) return false; if (!nextTokenIs(b, KW_MIXIN)) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, KW_MIXIN, OP_PAR_LEFT); r = r && Expression(b, l + 1); r = r && consumeToken(b, OP_PAR_RIGHT); exit_section_(b, m, MIXIN_STATEMENT, r); return r; } /* ********************************************************** */ // OP_DOT QualifiedIdentifierList | Typeof OP_DOT QualifiedIdentifierList | QualifiedIdentifierList public static boolean MixinTemplateName(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "MixinTemplateName")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<mixin template name>"); r = MixinTemplateName_0(b, l + 1); if (!r) r = MixinTemplateName_1(b, l + 1); if (!r) r = QualifiedIdentifierList(b, l + 1); exit_section_(b, l, m, MIXIN_TEMPLATE_NAME, r, false, null); return r; } // OP_DOT QualifiedIdentifierList private static boolean MixinTemplateName_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "MixinTemplateName_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_DOT); r = r && QualifiedIdentifierList(b, l + 1); exit_section_(b, m, null, r); return r; } // Typeof OP_DOT QualifiedIdentifierList private static boolean MixinTemplateName_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "MixinTemplateName_1")) return false; boolean r; Marker m = enter_section_(b); r = Typeof(b, l + 1); r = r && consumeToken(b, OP_DOT); r = r && QualifiedIdentifierList(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // KW_MODULE ModuleFullyQualifiedName OP_SCOLON public static boolean ModuleDeclaration(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ModuleDeclaration")) return false; if (!nextTokenIs(b, KW_MODULE)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KW_MODULE); r = r && ModuleFullyQualifiedName(b, l + 1); r = r && consumeToken(b, OP_SCOLON); exit_section_(b, m, MODULE_DECLARATION, r); return r; } /* ********************************************************** */ // (ID OP_DOT)* ID public static boolean ModuleFullyQualifiedName(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ModuleFullyQualifiedName")) return false; if (!nextTokenIs(b, ID)) return false; boolean r; Marker m = enter_section_(b); r = ModuleFullyQualifiedName_0(b, l + 1); r = r && consumeToken(b, ID); exit_section_(b, m, MODULE_FULLY_QUALIFIED_NAME, r); return r; } // (ID OP_DOT)* private static boolean ModuleFullyQualifiedName_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ModuleFullyQualifiedName_0")) return false; int c = current_position_(b); while (true) { if (!ModuleFullyQualifiedName_0_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "ModuleFullyQualifiedName_0", c)) break; c = current_position_(b); } return true; } // ID OP_DOT private static boolean ModuleFullyQualifiedName_0_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ModuleFullyQualifiedName_0_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, ID, OP_DOT); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // KW_NEW (OP_PAR_LEFT ArgumentList OP_PAR_RIGHT)? Type public static boolean NewExpression(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "NewExpression")) return false; if (!nextTokenIs(b, KW_NEW)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KW_NEW); r = r && NewExpression_1(b, l + 1); r = r && Type(b, l + 1); exit_section_(b, m, NEW_EXPRESSION, r); return r; } // (OP_PAR_LEFT ArgumentList OP_PAR_RIGHT)? private static boolean NewExpression_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "NewExpression_1")) return false; NewExpression_1_0(b, l + 1); return true; } // OP_PAR_LEFT ArgumentList OP_PAR_RIGHT private static boolean NewExpression_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "NewExpression_1_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_PAR_LEFT); r = r && ArgumentList(b, l + 1); r = r && consumeToken(b, OP_PAR_RIGHT); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // KW_NEW (OP_PAR_LEFT ArgumentList OP_PAR_RIGHT)? Type // (OP_PAR_LEFT ArgumentList OP_PAR_RIGHT | OP_BRACKET_LEFT Expression OP_BRACKET_RIGHT) public static boolean NewExpressionWithArgs(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "NewExpressionWithArgs")) return false; if (!nextTokenIs(b, KW_NEW)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KW_NEW); r = r && NewExpressionWithArgs_1(b, l + 1); r = r && Type(b, l + 1); r = r && NewExpressionWithArgs_3(b, l + 1); exit_section_(b, m, NEW_EXPRESSION_WITH_ARGS, r); return r; } // (OP_PAR_LEFT ArgumentList OP_PAR_RIGHT)? private static boolean NewExpressionWithArgs_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "NewExpressionWithArgs_1")) return false; NewExpressionWithArgs_1_0(b, l + 1); return true; } // OP_PAR_LEFT ArgumentList OP_PAR_RIGHT private static boolean NewExpressionWithArgs_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "NewExpressionWithArgs_1_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_PAR_LEFT); r = r && ArgumentList(b, l + 1); r = r && consumeToken(b, OP_PAR_RIGHT); exit_section_(b, m, null, r); return r; } // OP_PAR_LEFT ArgumentList OP_PAR_RIGHT | OP_BRACKET_LEFT Expression OP_BRACKET_RIGHT private static boolean NewExpressionWithArgs_3(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "NewExpressionWithArgs_3")) return false; boolean r; Marker m = enter_section_(b); r = NewExpressionWithArgs_3_0(b, l + 1); if (!r) r = NewExpressionWithArgs_3_1(b, l + 1); exit_section_(b, m, null, r); return r; } // OP_PAR_LEFT ArgumentList OP_PAR_RIGHT private static boolean NewExpressionWithArgs_3_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "NewExpressionWithArgs_3_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_PAR_LEFT); r = r && ArgumentList(b, l + 1); r = r && consumeToken(b, OP_PAR_RIGHT); exit_section_(b, m, null, r); return r; } // OP_BRACKET_LEFT Expression OP_BRACKET_RIGHT private static boolean NewExpressionWithArgs_3_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "NewExpressionWithArgs_3_1")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_BRACKET_LEFT); r = r && Expression(b, l + 1); r = r && consumeToken(b, OP_BRACKET_RIGHT); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // NonEmptyStatementNoCaseNoDefault | CaseStatement | CaseRangeStatement | DefaultStatement static boolean NonEmptyStatement(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "NonEmptyStatement")) return false; boolean r; Marker m = enter_section_(b); r = NonEmptyStatementNoCaseNoDefault(b, l + 1); if (!r) r = CaseStatement(b, l + 1); if (!r) r = CaseRangeStatement(b, l + 1); if (!r) r = DefaultStatement(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // (ID OP_COLON Expression) | Expression OP_SCOLON | Declaration // | IfStatement | WhileStatement | DoStatement | ForStatement | ForeachStatement // | SwitchStatement | ContinueStatement | BreakStatement | ReturnStatement // | GotoStatement | WithStatement | SynchronizedStatement | TryStatement // | ScopeGuardStatement | ThrowStatement | AsmStatement | PragmaStatement // | MixinStatement | ForeachRangeStatement | ConditionalStatement | StaticAssert // | TemplateMixin | ImportDeclaration static boolean NonEmptyStatementNoCaseNoDefault(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "NonEmptyStatementNoCaseNoDefault")) return false; boolean r; Marker m = enter_section_(b); r = NonEmptyStatementNoCaseNoDefault_0(b, l + 1); if (!r) r = NonEmptyStatementNoCaseNoDefault_1(b, l + 1); if (!r) r = Declaration(b, l + 1); if (!r) r = IfStatement(b, l + 1); if (!r) r = WhileStatement(b, l + 1); if (!r) r = DoStatement(b, l + 1); if (!r) r = ForStatement(b, l + 1); if (!r) r = ForeachStatement(b, l + 1); if (!r) r = SwitchStatement(b, l + 1); if (!r) r = ContinueStatement(b, l + 1); if (!r) r = BreakStatement(b, l + 1); if (!r) r = ReturnStatement(b, l + 1); if (!r) r = GotoStatement(b, l + 1); if (!r) r = WithStatement(b, l + 1); if (!r) r = SynchronizedStatement(b, l + 1); if (!r) r = TryStatement(b, l + 1); if (!r) r = ScopeGuardStatement(b, l + 1); if (!r) r = ThrowStatement(b, l + 1); if (!r) r = AsmStatement(b, l + 1); if (!r) r = PragmaStatement(b, l + 1); if (!r) r = MixinStatement(b, l + 1); if (!r) r = ForeachRangeStatement(b, l + 1); if (!r) r = ConditionalStatement(b, l + 1); if (!r) r = StaticAssert(b, l + 1); if (!r) r = TemplateMixin(b, l + 1); if (!r) r = ImportDeclaration(b, l + 1); exit_section_(b, m, null, r); return r; } // ID OP_COLON Expression private static boolean NonEmptyStatementNoCaseNoDefault_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "NonEmptyStatementNoCaseNoDefault_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, ID, OP_COLON); r = r && Expression(b, l + 1); exit_section_(b, m, null, r); return r; } // Expression OP_SCOLON private static boolean NonEmptyStatementNoCaseNoDefault_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "NonEmptyStatementNoCaseNoDefault_1")) return false; boolean r; Marker m = enter_section_(b); r = Expression(b, l + 1); r = r && consumeToken(b, OP_SCOLON); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // ExpInitializer | ArrayInitializer | StructInitializer static boolean NonVoidInitializer(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "NonVoidInitializer")) return false; boolean r; Marker m = enter_section_(b); r = ExpInitializer(b, l + 1); if (!r) r = ArrayInitializer(b, l + 1); if (!r) r = StructInitializer(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // KW_OUT (OP_PAR_LEFT ID OP_PAR_RIGHT)? BlockStatement public static boolean OutStatement(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "OutStatement")) return false; if (!nextTokenIs(b, KW_OUT)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KW_OUT); r = r && OutStatement_1(b, l + 1); r = r && BlockStatement(b, l + 1); exit_section_(b, m, OUT_STATEMENT, r); return r; } // (OP_PAR_LEFT ID OP_PAR_RIGHT)? private static boolean OutStatement_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "OutStatement_1")) return false; OutStatement_1_0(b, l + 1); return true; } // OP_PAR_LEFT ID OP_PAR_RIGHT private static boolean OutStatement_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "OutStatement_1_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, OP_PAR_LEFT, ID, OP_PAR_RIGHT); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // InOutX* (BasicType Declarator (OP_TRIPLEDOT | OP_EQ DefaultInitializerExpression)? | Type OP_TRIPLEDOT? ) public static boolean Parameter(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Parameter")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<parameter>"); r = Parameter_0(b, l + 1); r = r && Parameter_1(b, l + 1); exit_section_(b, l, m, PARAMETER, r, false, null); return r; } // InOutX* private static boolean Parameter_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Parameter_0")) return false; int c = current_position_(b); while (true) { if (!InOutX(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "Parameter_0", c)) break; c = current_position_(b); } return true; } // BasicType Declarator (OP_TRIPLEDOT | OP_EQ DefaultInitializerExpression)? | Type OP_TRIPLEDOT? private static boolean Parameter_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Parameter_1")) return false; boolean r; Marker m = enter_section_(b); r = Parameter_1_0(b, l + 1); if (!r) r = Parameter_1_1(b, l + 1); exit_section_(b, m, null, r); return r; } // BasicType Declarator (OP_TRIPLEDOT | OP_EQ DefaultInitializerExpression)? private static boolean Parameter_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Parameter_1_0")) return false; boolean r; Marker m = enter_section_(b); r = BasicType(b, l + 1); r = r && Declarator(b, l + 1); r = r && Parameter_1_0_2(b, l + 1); exit_section_(b, m, null, r); return r; } // (OP_TRIPLEDOT | OP_EQ DefaultInitializerExpression)? private static boolean Parameter_1_0_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Parameter_1_0_2")) return false; Parameter_1_0_2_0(b, l + 1); return true; } // OP_TRIPLEDOT | OP_EQ DefaultInitializerExpression private static boolean Parameter_1_0_2_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Parameter_1_0_2_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_TRIPLEDOT); if (!r) r = Parameter_1_0_2_0_1(b, l + 1); exit_section_(b, m, null, r); return r; } // OP_EQ DefaultInitializerExpression private static boolean Parameter_1_0_2_0_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Parameter_1_0_2_0_1")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_EQ); r = r && DefaultInitializerExpression(b, l + 1); exit_section_(b, m, null, r); return r; } // Type OP_TRIPLEDOT? private static boolean Parameter_1_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Parameter_1_1")) return false; boolean r; Marker m = enter_section_(b); r = Type(b, l + 1); r = r && Parameter_1_1_1(b, l + 1); exit_section_(b, m, null, r); return r; } // OP_TRIPLEDOT? private static boolean Parameter_1_1_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Parameter_1_1_1")) return false; consumeToken(b, OP_TRIPLEDOT); return true; } /* ********************************************************** */ // Parameters FunctionAttributes? static boolean ParameterAttributes(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ParameterAttributes")) return false; if (!nextTokenIs(b, OP_PAR_LEFT)) return false; boolean r; Marker m = enter_section_(b); r = Parameters(b, l + 1); r = r && ParameterAttributes_1(b, l + 1); exit_section_(b, m, null, r); return r; } // FunctionAttributes? private static boolean ParameterAttributes_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ParameterAttributes_1")) return false; FunctionAttributes(b, l + 1); return true; } /* ********************************************************** */ // OP_PAR_LEFT ( Parameter (OP_COMMA Parameter)* )? OP_PAR_RIGHT public static boolean Parameters(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Parameters")) return false; if (!nextTokenIs(b, OP_PAR_LEFT)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_PAR_LEFT); r = r && Parameters_1(b, l + 1); r = r && consumeToken(b, OP_PAR_RIGHT); exit_section_(b, m, PARAMETERS, r); return r; } // ( Parameter (OP_COMMA Parameter)* )? private static boolean Parameters_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Parameters_1")) return false; Parameters_1_0(b, l + 1); return true; } // Parameter (OP_COMMA Parameter)* private static boolean Parameters_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Parameters_1_0")) return false; boolean r; Marker m = enter_section_(b); r = Parameter(b, l + 1); r = r && Parameters_1_0_1(b, l + 1); exit_section_(b, m, null, r); return r; } // (OP_COMMA Parameter)* private static boolean Parameters_1_0_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Parameters_1_0_1")) return false; int c = current_position_(b); while (true) { if (!Parameters_1_0_1_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "Parameters_1_0_1", c)) break; c = current_position_(b); } return true; } // OP_COMMA Parameter private static boolean Parameters_1_0_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Parameters_1_0_1_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_COMMA); r = r && Parameter(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // KW_THIS OP_PAR_LEFT KW_THIS OP_PAR_RIGHT MemberFunctionAttributes? (OP_SCOLON | FunctionBody) public static boolean Postblit(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Postblit")) return false; if (!nextTokenIs(b, KW_THIS)) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, KW_THIS, OP_PAR_LEFT, KW_THIS, OP_PAR_RIGHT); r = r && Postblit_4(b, l + 1); r = r && Postblit_5(b, l + 1); exit_section_(b, m, POSTBLIT, r); return r; } // MemberFunctionAttributes? private static boolean Postblit_4(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Postblit_4")) return false; MemberFunctionAttributes(b, l + 1); return true; } // OP_SCOLON | FunctionBody private static boolean Postblit_5(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Postblit_5")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_SCOLON); if (!r) r = FunctionBody(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // (PrimaryExpression // | TypeCtors? BasicType OP_PAR_LEFT OP_PAR_RIGHT // | TypeCtors? BasicType OP_PAR_LEFT ArgumentList OP_PAR_RIGHT) // (OP_DOT TemplateInstance // | OP_DOT ID // | OP_DOT NewExpression // | OP_PLUS_PLUS | OP_MINUS_MINUS // | OP_PAR_LEFT OP_PAR_RIGHT // | OP_PAR_LEFT ArgumentList OP_PAR_RIGHT // | OP_BRACKET_LEFT ArgumentList OP_BRACKET_RIGHT // | OP_BRACKET_LEFT OP_BRACKET_RIGHT // | OP_BRACKET_LEFT Expression OP_DDOT Expression OP_BRACKET_RIGHT)* static boolean PostfixExpression(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "PostfixExpression")) return false; boolean r; Marker m = enter_section_(b); r = PostfixExpression_0(b, l + 1); r = r && PostfixExpression_1(b, l + 1); exit_section_(b, m, null, r); return r; } // PrimaryExpression // | TypeCtors? BasicType OP_PAR_LEFT OP_PAR_RIGHT // | TypeCtors? BasicType OP_PAR_LEFT ArgumentList OP_PAR_RIGHT private static boolean PostfixExpression_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "PostfixExpression_0")) return false; boolean r; Marker m = enter_section_(b); r = PrimaryExpression(b, l + 1); if (!r) r = PostfixExpression_0_1(b, l + 1); if (!r) r = PostfixExpression_0_2(b, l + 1); exit_section_(b, m, null, r); return r; } // TypeCtors? BasicType OP_PAR_LEFT OP_PAR_RIGHT private static boolean PostfixExpression_0_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "PostfixExpression_0_1")) return false; boolean r; Marker m = enter_section_(b); r = PostfixExpression_0_1_0(b, l + 1); r = r && BasicType(b, l + 1); r = r && consumeTokens(b, 0, OP_PAR_LEFT, OP_PAR_RIGHT); exit_section_(b, m, null, r); return r; } // TypeCtors? private static boolean PostfixExpression_0_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "PostfixExpression_0_1_0")) return false; TypeCtors(b, l + 1); return true; } // TypeCtors? BasicType OP_PAR_LEFT ArgumentList OP_PAR_RIGHT private static boolean PostfixExpression_0_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "PostfixExpression_0_2")) return false; boolean r; Marker m = enter_section_(b); r = PostfixExpression_0_2_0(b, l + 1); r = r && BasicType(b, l + 1); r = r && consumeToken(b, OP_PAR_LEFT); r = r && ArgumentList(b, l + 1); r = r && consumeToken(b, OP_PAR_RIGHT); exit_section_(b, m, null, r); return r; } // TypeCtors? private static boolean PostfixExpression_0_2_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "PostfixExpression_0_2_0")) return false; TypeCtors(b, l + 1); return true; } // (OP_DOT TemplateInstance // | OP_DOT ID // | OP_DOT NewExpression // | OP_PLUS_PLUS | OP_MINUS_MINUS // | OP_PAR_LEFT OP_PAR_RIGHT // | OP_PAR_LEFT ArgumentList OP_PAR_RIGHT // | OP_BRACKET_LEFT ArgumentList OP_BRACKET_RIGHT // | OP_BRACKET_LEFT OP_BRACKET_RIGHT // | OP_BRACKET_LEFT Expression OP_DDOT Expression OP_BRACKET_RIGHT)* private static boolean PostfixExpression_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "PostfixExpression_1")) return false; int c = current_position_(b); while (true) { if (!PostfixExpression_1_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "PostfixExpression_1", c)) break; c = current_position_(b); } return true; } // OP_DOT TemplateInstance // | OP_DOT ID // | OP_DOT NewExpression // | OP_PLUS_PLUS | OP_MINUS_MINUS // | OP_PAR_LEFT OP_PAR_RIGHT // | OP_PAR_LEFT ArgumentList OP_PAR_RIGHT // | OP_BRACKET_LEFT ArgumentList OP_BRACKET_RIGHT // | OP_BRACKET_LEFT OP_BRACKET_RIGHT // | OP_BRACKET_LEFT Expression OP_DDOT Expression OP_BRACKET_RIGHT private static boolean PostfixExpression_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "PostfixExpression_1_0")) return false; boolean r; Marker m = enter_section_(b); r = PostfixExpression_1_0_0(b, l + 1); if (!r) r = parseTokens(b, 0, OP_DOT, ID); if (!r) r = PostfixExpression_1_0_2(b, l + 1); if (!r) r = consumeToken(b, OP_PLUS_PLUS); if (!r) r = consumeToken(b, OP_MINUS_MINUS); if (!r) r = parseTokens(b, 0, OP_PAR_LEFT, OP_PAR_RIGHT); if (!r) r = PostfixExpression_1_0_6(b, l + 1); if (!r) r = PostfixExpression_1_0_7(b, l + 1); if (!r) r = parseTokens(b, 0, OP_BRACKET_LEFT, OP_BRACKET_RIGHT); if (!r) r = PostfixExpression_1_0_9(b, l + 1); exit_section_(b, m, null, r); return r; } // OP_DOT TemplateInstance private static boolean PostfixExpression_1_0_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "PostfixExpression_1_0_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_DOT); r = r && TemplateInstance(b, l + 1); exit_section_(b, m, null, r); return r; } // OP_DOT NewExpression private static boolean PostfixExpression_1_0_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "PostfixExpression_1_0_2")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_DOT); r = r && NewExpression(b, l + 1); exit_section_(b, m, null, r); return r; } // OP_PAR_LEFT ArgumentList OP_PAR_RIGHT private static boolean PostfixExpression_1_0_6(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "PostfixExpression_1_0_6")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_PAR_LEFT); r = r && ArgumentList(b, l + 1); r = r && consumeToken(b, OP_PAR_RIGHT); exit_section_(b, m, null, r); return r; } // OP_BRACKET_LEFT ArgumentList OP_BRACKET_RIGHT private static boolean PostfixExpression_1_0_7(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "PostfixExpression_1_0_7")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_BRACKET_LEFT); r = r && ArgumentList(b, l + 1); r = r && consumeToken(b, OP_BRACKET_RIGHT); exit_section_(b, m, null, r); return r; } // OP_BRACKET_LEFT Expression OP_DDOT Expression OP_BRACKET_RIGHT private static boolean PostfixExpression_1_0_9(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "PostfixExpression_1_0_9")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_BRACKET_LEFT); r = r && Expression(b, l + 1); r = r && consumeToken(b, OP_DDOT); r = r && Expression(b, l + 1); r = r && consumeToken(b, OP_BRACKET_RIGHT); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // KW_PRAGMA OP_PAR_LEFT ID (OP_COMMA ArgumentList)? OP_PAR_RIGHT public static boolean Pragma(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Pragma")) return false; if (!nextTokenIs(b, KW_PRAGMA)) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, KW_PRAGMA, OP_PAR_LEFT, ID); r = r && Pragma_3(b, l + 1); r = r && consumeToken(b, OP_PAR_RIGHT); exit_section_(b, m, PRAGMA, r); return r; } // (OP_COMMA ArgumentList)? private static boolean Pragma_3(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Pragma_3")) return false; Pragma_3_0(b, l + 1); return true; } // OP_COMMA ArgumentList private static boolean Pragma_3_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Pragma_3_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_COMMA); r = r && ArgumentList(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // Pragma (OP_SCOLON | NonEmptyStatement | BlockStatement) public static boolean PragmaStatement(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "PragmaStatement")) return false; if (!nextTokenIs(b, KW_PRAGMA)) return false; boolean r; Marker m = enter_section_(b); r = Pragma(b, l + 1); r = r && PragmaStatement_1(b, l + 1); exit_section_(b, m, PRAGMA_STATEMENT, r); return r; } // OP_SCOLON | NonEmptyStatement | BlockStatement private static boolean PragmaStatement_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "PragmaStatement_1")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_SCOLON); if (!r) r = NonEmptyStatement(b, l + 1); if (!r) r = BlockStatement(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // OP_DOT TemplateInstance | TemplateInstance | OP_DOT? ID | KW_THIS | KW_SUPER // | KW_NULL | KW_TRUE | KW_FALSE | OP_DOLLAR | KW___FILE__ | KW___MODULE__ | KW___FUNCTION__ // | KW___PRETTY_FUNCTION__ | INTEGER_LITERAL | FLOAT_LITERAL | CHARACTER_LITERAL // | STRING | ArrayLiteral | AssocArrayLiteral | FunctionLiteral | Lambda | AssertExpression // | MixinStatement | ImportExpression | NewExpression | NewExpressionWithArgs // | BasicType OP_DOT ID | Typeof | TypeidExpression | IsExpression | TraitsExpression // | OP_PAR_LEFT Expression OP_PAR_RIGHT static boolean PrimaryExpression(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "PrimaryExpression")) return false; boolean r; Marker m = enter_section_(b); r = PrimaryExpression_0(b, l + 1); if (!r) r = TemplateInstance(b, l + 1); if (!r) r = PrimaryExpression_2(b, l + 1); if (!r) r = consumeToken(b, KW_THIS); if (!r) r = consumeToken(b, KW_SUPER); if (!r) r = consumeToken(b, KW_NULL); if (!r) r = consumeToken(b, KW_TRUE); if (!r) r = consumeToken(b, KW_FALSE); if (!r) r = consumeToken(b, OP_DOLLAR); if (!r) r = consumeToken(b, KW___FILE__); if (!r) r = consumeToken(b, KW___MODULE__); if (!r) r = consumeToken(b, KW___FUNCTION__); if (!r) r = consumeToken(b, KW___PRETTY_FUNCTION__); if (!r) r = consumeToken(b, INTEGER_LITERAL); if (!r) r = consumeToken(b, FLOAT_LITERAL); if (!r) r = consumeToken(b, CHARACTER_LITERAL); if (!r) r = STRING(b, l + 1); if (!r) r = ArrayLiteral(b, l + 1); if (!r) r = AssocArrayLiteral(b, l + 1); if (!r) r = FunctionLiteral(b, l + 1); if (!r) r = Lambda(b, l + 1); if (!r) r = AssertExpression(b, l + 1); if (!r) r = MixinStatement(b, l + 1); if (!r) r = ImportExpression(b, l + 1); if (!r) r = NewExpression(b, l + 1); if (!r) r = NewExpressionWithArgs(b, l + 1); if (!r) r = PrimaryExpression_26(b, l + 1); if (!r) r = Typeof(b, l + 1); if (!r) r = TypeidExpression(b, l + 1); if (!r) r = IsExpression(b, l + 1); if (!r) r = TraitsExpression(b, l + 1); if (!r) r = PrimaryExpression_31(b, l + 1); exit_section_(b, m, null, r); return r; } // OP_DOT TemplateInstance private static boolean PrimaryExpression_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "PrimaryExpression_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_DOT); r = r && TemplateInstance(b, l + 1); exit_section_(b, m, null, r); return r; } // OP_DOT? ID private static boolean PrimaryExpression_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "PrimaryExpression_2")) return false; boolean r; Marker m = enter_section_(b); r = PrimaryExpression_2_0(b, l + 1); r = r && consumeToken(b, ID); exit_section_(b, m, null, r); return r; } // OP_DOT? private static boolean PrimaryExpression_2_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "PrimaryExpression_2_0")) return false; consumeToken(b, OP_DOT); return true; } // BasicType OP_DOT ID private static boolean PrimaryExpression_26(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "PrimaryExpression_26")) return false; boolean r; Marker m = enter_section_(b); r = BasicType(b, l + 1); r = r && consumeTokens(b, 0, OP_DOT, ID); exit_section_(b, m, null, r); return r; } // OP_PAR_LEFT Expression OP_PAR_RIGHT private static boolean PrimaryExpression_31(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "PrimaryExpression_31")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_PAR_LEFT); r = r && Expression(b, l + 1); r = r && consumeToken(b, OP_PAR_RIGHT); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // OP_AT (KW_PROPERTY | KW_SAFE | KW_TRUSTED | KW_SYSTEM | KW_DISABLE | KW_NOGC) // | UserDefinedAttribute public static boolean Property(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Property")) return false; if (!nextTokenIs(b, OP_AT)) return false; boolean r; Marker m = enter_section_(b); r = Property_0(b, l + 1); if (!r) r = UserDefinedAttribute(b, l + 1); exit_section_(b, m, PROPERTY, r); return r; } // OP_AT (KW_PROPERTY | KW_SAFE | KW_TRUSTED | KW_SYSTEM | KW_DISABLE | KW_NOGC) private static boolean Property_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Property_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_AT); r = r && Property_0_1(b, l + 1); exit_section_(b, m, null, r); return r; } // KW_PROPERTY | KW_SAFE | KW_TRUSTED | KW_SYSTEM | KW_DISABLE | KW_NOGC private static boolean Property_0_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Property_0_1")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KW_PROPERTY); if (!r) r = consumeToken(b, KW_SAFE); if (!r) r = consumeToken(b, KW_TRUSTED); if (!r) r = consumeToken(b, KW_SYSTEM); if (!r) r = consumeToken(b, KW_DISABLE); if (!r) r = consumeToken(b, KW_NOGC); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // KW_PRIVATE | KW_PACKAGE | KW_PROTECTED | KW_PUBLIC | KW_EXPORT public static boolean ProtectionAttribute(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ProtectionAttribute")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<protection attribute>"); r = consumeToken(b, KW_PRIVATE); if (!r) r = consumeToken(b, KW_PACKAGE); if (!r) r = consumeToken(b, KW_PROTECTED); if (!r) r = consumeToken(b, KW_PUBLIC); if (!r) r = consumeToken(b, KW_EXPORT); exit_section_(b, l, m, PROTECTION_ATTRIBUTE, r, false, null); return r; } /* ********************************************************** */ // ID | (ID | TemplateInstance) (OP_DOT (ID|TemplateInstance))+ public static boolean QualifiedIdentifierList(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "QualifiedIdentifierList")) return false; if (!nextTokenIs(b, ID)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, ID); if (!r) r = QualifiedIdentifierList_1(b, l + 1); exit_section_(b, m, QUALIFIED_IDENTIFIER_LIST, r); return r; } // (ID | TemplateInstance) (OP_DOT (ID|TemplateInstance))+ private static boolean QualifiedIdentifierList_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "QualifiedIdentifierList_1")) return false; boolean r; Marker m = enter_section_(b); r = QualifiedIdentifierList_1_0(b, l + 1); r = r && QualifiedIdentifierList_1_1(b, l + 1); exit_section_(b, m, null, r); return r; } // ID | TemplateInstance private static boolean QualifiedIdentifierList_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "QualifiedIdentifierList_1_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, ID); if (!r) r = TemplateInstance(b, l + 1); exit_section_(b, m, null, r); return r; } // (OP_DOT (ID|TemplateInstance))+ private static boolean QualifiedIdentifierList_1_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "QualifiedIdentifierList_1_1")) return false; boolean r; Marker m = enter_section_(b); r = QualifiedIdentifierList_1_1_0(b, l + 1); int c = current_position_(b); while (r) { if (!QualifiedIdentifierList_1_1_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "QualifiedIdentifierList_1_1", c)) break; c = current_position_(b); } exit_section_(b, m, null, r); return r; } // OP_DOT (ID|TemplateInstance) private static boolean QualifiedIdentifierList_1_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "QualifiedIdentifierList_1_1_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_DOT); r = r && QualifiedIdentifierList_1_1_0_1(b, l + 1); exit_section_(b, m, null, r); return r; } // ID|TemplateInstance private static boolean QualifiedIdentifierList_1_1_0_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "QualifiedIdentifierList_1_1_0_1")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, ID); if (!r) r = TemplateInstance(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // ID public static boolean ReferenceExpression(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ReferenceExpression")) return false; if (!nextTokenIs(b, ID)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, ID); exit_section_(b, m, REFERENCE_EXPRESSION, r); return r; } /* ********************************************************** */ // KW_RETURN Expression? OP_SCOLON public static boolean ReturnStatement(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ReturnStatement")) return false; if (!nextTokenIs(b, KW_RETURN)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KW_RETURN); r = r && ReturnStatement_1(b, l + 1); r = r && consumeToken(b, OP_SCOLON); exit_section_(b, m, RETURN_STATEMENT, r); return r; } // Expression? private static boolean ReturnStatement_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ReturnStatement_1")) return false; Expression(b, l + 1); return true; } /* ********************************************************** */ // WYSIWYG_STRING|ALTERNATE_WYSIWYG_STRING|DOUBLE_QUOTED_STRING|HEX_STRING|DELIMITED_STRING public static boolean STRING(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "STRING")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<string>"); r = consumeToken(b, WYSIWYG_STRING); if (!r) r = consumeToken(b, ALTERNATE_WYSIWYG_STRING); if (!r) r = consumeToken(b, DOUBLE_QUOTED_STRING); if (!r) r = consumeToken(b, HEX_STRING); if (!r) r = consumeToken(b, DELIMITED_STRING); exit_section_(b, l, m, STRING, r, false, null); return r; } /* ********************************************************** */ // KW_SCOPE OP_PAR_LEFT ("exit" | "success" | "failure") OP_PAR_RIGHT (NonEmptyStatement | BlockStatement) public static boolean ScopeGuardStatement(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ScopeGuardStatement")) return false; if (!nextTokenIs(b, KW_SCOPE)) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, KW_SCOPE, OP_PAR_LEFT); r = r && ScopeGuardStatement_2(b, l + 1); r = r && consumeToken(b, OP_PAR_RIGHT); r = r && ScopeGuardStatement_4(b, l + 1); exit_section_(b, m, SCOPE_GUARD_STATEMENT, r); return r; } // "exit" | "success" | "failure" private static boolean ScopeGuardStatement_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ScopeGuardStatement_2")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, "exit"); if (!r) r = consumeToken(b, "success"); if (!r) r = consumeToken(b, "failure"); exit_section_(b, m, null, r); return r; } // NonEmptyStatement | BlockStatement private static boolean ScopeGuardStatement_4(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ScopeGuardStatement_4")) return false; boolean r; Marker m = enter_section_(b); r = NonEmptyStatement(b, l + 1); if (!r) r = BlockStatement(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // NonEmptyStatement | BlockStatement public static boolean ScopeStatement(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ScopeStatement")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<scope statement>"); r = NonEmptyStatement(b, l + 1); if (!r) r = BlockStatement(b, l + 1); exit_section_(b, l, m, SCOPE_STATEMENT, r, false, null); return r; } /* ********************************************************** */ // KW_SHARED KW_STATIC KW_THIS OP_PAR_LEFT OP_PAR_RIGHT (OP_SCOLON | FunctionBody) public static boolean SharedStaticConstructor(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "SharedStaticConstructor")) return false; if (!nextTokenIs(b, KW_SHARED)) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, KW_SHARED, KW_STATIC, KW_THIS, OP_PAR_LEFT, OP_PAR_RIGHT); r = r && SharedStaticConstructor_5(b, l + 1); exit_section_(b, m, SHARED_STATIC_CONSTRUCTOR, r); return r; } // OP_SCOLON | FunctionBody private static boolean SharedStaticConstructor_5(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "SharedStaticConstructor_5")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_SCOLON); if (!r) r = FunctionBody(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // KW_SHARED KW_STATIC OP_TILDA KW_THIS OP_PAR_LEFT OP_PAR_RIGHT MemberFunctionAttributes? (OP_SCOLON | FunctionBody) public static boolean SharedStaticDestructor(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "SharedStaticDestructor")) return false; if (!nextTokenIs(b, KW_SHARED)) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, KW_SHARED, KW_STATIC, OP_TILDA, KW_THIS, OP_PAR_LEFT, OP_PAR_RIGHT); r = r && SharedStaticDestructor_6(b, l + 1); r = r && SharedStaticDestructor_7(b, l + 1); exit_section_(b, m, SHARED_STATIC_DESTRUCTOR, r); return r; } // MemberFunctionAttributes? private static boolean SharedStaticDestructor_6(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "SharedStaticDestructor_6")) return false; MemberFunctionAttributes(b, l + 1); return true; } // OP_SCOLON | FunctionBody private static boolean SharedStaticDestructor_7(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "SharedStaticDestructor_7")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_SCOLON); if (!r) r = FunctionBody(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // KW___FILE__ | KW___MODULE__ | KW___LINE__| KW___FUNCTION__ | KW___PRETTY_FUNCTION__ public static boolean SpecialKeyword(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "SpecialKeyword")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<special keyword>"); r = consumeToken(b, KW___FILE__); if (!r) r = consumeToken(b, KW___MODULE__); if (!r) r = consumeToken(b, KW___LINE__); if (!r) r = consumeToken(b, KW___FUNCTION__); if (!r) r = consumeToken(b, KW___PRETTY_FUNCTION__); exit_section_(b, l, m, SPECIAL_KEYWORD, r, false, null); return r; } /* ********************************************************** */ // OP_SCOLON | NonEmptyStatement | BlockStatement public static boolean Statement(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Statement")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<statement>"); r = consumeToken(b, OP_SCOLON); if (!r) r = NonEmptyStatement(b, l + 1); if (!r) r = BlockStatement(b, l + 1); exit_section_(b, l, m, STATEMENT, r, false, null); return r; } /* ********************************************************** */ // KW_STATIC KW_ASSERT OP_PAR_LEFT Expression (OP_COMMA Expression)? OP_PAR_RIGHT OP_SCOLON public static boolean StaticAssert(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "StaticAssert")) return false; if (!nextTokenIs(b, KW_STATIC)) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, KW_STATIC, KW_ASSERT, OP_PAR_LEFT); r = r && Expression(b, l + 1); r = r && StaticAssert_4(b, l + 1); r = r && consumeTokens(b, 0, OP_PAR_RIGHT, OP_SCOLON); exit_section_(b, m, STATIC_ASSERT, r); return r; } // (OP_COMMA Expression)? private static boolean StaticAssert_4(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "StaticAssert_4")) return false; StaticAssert_4_0(b, l + 1); return true; } // OP_COMMA Expression private static boolean StaticAssert_4_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "StaticAssert_4_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_COMMA); r = r && Expression(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // KW_STATIC KW_THIS OP_PAR_LEFT OP_PAR_RIGHT (OP_SCOLON | FunctionBody) public static boolean StaticConstructor(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "StaticConstructor")) return false; if (!nextTokenIs(b, KW_STATIC)) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, KW_STATIC, KW_THIS, OP_PAR_LEFT, OP_PAR_RIGHT); r = r && StaticConstructor_4(b, l + 1); exit_section_(b, m, STATIC_CONSTRUCTOR, r); return r; } // OP_SCOLON | FunctionBody private static boolean StaticConstructor_4(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "StaticConstructor_4")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_SCOLON); if (!r) r = FunctionBody(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // KW_STATIC OP_TILDA KW_THIS OP_PAR_LEFT OP_PAR_RIGHT MemberFunctionAttributes? (OP_SCOLON | FunctionBody) public static boolean StaticDestructor(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "StaticDestructor")) return false; if (!nextTokenIs(b, KW_STATIC)) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, KW_STATIC, OP_TILDA, KW_THIS, OP_PAR_LEFT, OP_PAR_RIGHT); r = r && StaticDestructor_5(b, l + 1); r = r && StaticDestructor_6(b, l + 1); exit_section_(b, m, STATIC_DESTRUCTOR, r); return r; } // MemberFunctionAttributes? private static boolean StaticDestructor_5(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "StaticDestructor_5")) return false; MemberFunctionAttributes(b, l + 1); return true; } // OP_SCOLON | FunctionBody private static boolean StaticDestructor_6(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "StaticDestructor_6")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_SCOLON); if (!r) r = FunctionBody(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // KW_STATIC KW_IF OP_PAR_LEFT Expression OP_PAR_RIGHT public static boolean StaticIfCondition(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "StaticIfCondition")) return false; if (!nextTokenIs(b, KW_STATIC)) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, KW_STATIC, KW_IF, OP_PAR_LEFT); r = r && Expression(b, l + 1); r = r && consumeToken(b, OP_PAR_RIGHT); exit_section_(b, m, STATIC_IF_CONDITION, r); return r; } /* ********************************************************** */ // KW_ABSTRACT | KW_AUTO | KW_CONST | KW_IMMUTABLE | KW_SHARED | KW_INOUT | KW_DEPRECATED // | KW_ENUM | LinkageAttribute | Property | KW_EXTERN | KW_FINAL | KW_NOTHROW // | KW_OVERRIDE | KW_PURE | KW___GSHARED | KW_SCOPE | KW_STATIC | KW_SYNCHRONIZED | KW_REF public static boolean StorageClass(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "StorageClass")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<storage class>"); r = consumeToken(b, KW_ABSTRACT); if (!r) r = consumeToken(b, KW_AUTO); if (!r) r = consumeToken(b, KW_CONST); if (!r) r = consumeToken(b, KW_IMMUTABLE); if (!r) r = consumeToken(b, KW_SHARED); if (!r) r = consumeToken(b, KW_INOUT); if (!r) r = consumeToken(b, KW_DEPRECATED); if (!r) r = consumeToken(b, KW_ENUM); if (!r) r = LinkageAttribute(b, l + 1); if (!r) r = Property(b, l + 1); if (!r) r = consumeToken(b, KW_EXTERN); if (!r) r = consumeToken(b, KW_FINAL); if (!r) r = consumeToken(b, KW_NOTHROW); if (!r) r = consumeToken(b, KW_OVERRIDE); if (!r) r = consumeToken(b, KW_PURE); if (!r) r = consumeToken(b, KW___GSHARED); if (!r) r = consumeToken(b, KW_SCOPE); if (!r) r = consumeToken(b, KW_STATIC); if (!r) r = consumeToken(b, KW_SYNCHRONIZED); if (!r) r = consumeToken(b, KW_REF); exit_section_(b, l, m, STORAGE_CLASS, r, false, null); return r; } /* ********************************************************** */ // KW_STRUCT (ID AggregateBody | ID OP_SCOLON | AggregateBody) // | StructTemplateDeclaration public static boolean StructDeclaration(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "StructDeclaration")) return false; if (!nextTokenIs(b, KW_STRUCT)) return false; boolean r; Marker m = enter_section_(b); r = StructDeclaration_0(b, l + 1); if (!r) r = StructTemplateDeclaration(b, l + 1); exit_section_(b, m, STRUCT_DECLARATION, r); return r; } // KW_STRUCT (ID AggregateBody | ID OP_SCOLON | AggregateBody) private static boolean StructDeclaration_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "StructDeclaration_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KW_STRUCT); r = r && StructDeclaration_0_1(b, l + 1); exit_section_(b, m, null, r); return r; } // ID AggregateBody | ID OP_SCOLON | AggregateBody private static boolean StructDeclaration_0_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "StructDeclaration_0_1")) return false; boolean r; Marker m = enter_section_(b); r = StructDeclaration_0_1_0(b, l + 1); if (!r) r = parseTokens(b, 0, ID, OP_SCOLON); if (!r) r = AggregateBody(b, l + 1); exit_section_(b, m, null, r); return r; } // ID AggregateBody private static boolean StructDeclaration_0_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "StructDeclaration_0_1_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, ID); r = r && AggregateBody(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // OP_BRACES_LEFT (StructMemberInitializer (OP_COMMA StructMemberInitializer)* )? OP_BRACES_RIGHT public static boolean StructInitializer(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "StructInitializer")) return false; if (!nextTokenIs(b, OP_BRACES_LEFT)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_BRACES_LEFT); r = r && StructInitializer_1(b, l + 1); r = r && consumeToken(b, OP_BRACES_RIGHT); exit_section_(b, m, STRUCT_INITIALIZER, r); return r; } // (StructMemberInitializer (OP_COMMA StructMemberInitializer)* )? private static boolean StructInitializer_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "StructInitializer_1")) return false; StructInitializer_1_0(b, l + 1); return true; } // StructMemberInitializer (OP_COMMA StructMemberInitializer)* private static boolean StructInitializer_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "StructInitializer_1_0")) return false; boolean r; Marker m = enter_section_(b); r = StructMemberInitializer(b, l + 1); r = r && StructInitializer_1_0_1(b, l + 1); exit_section_(b, m, null, r); return r; } // (OP_COMMA StructMemberInitializer)* private static boolean StructInitializer_1_0_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "StructInitializer_1_0_1")) return false; int c = current_position_(b); while (true) { if (!StructInitializer_1_0_1_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "StructInitializer_1_0_1", c)) break; c = current_position_(b); } return true; } // OP_COMMA StructMemberInitializer private static boolean StructInitializer_1_0_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "StructInitializer_1_0_1_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_COMMA); r = r && StructMemberInitializer(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // NonVoidInitializer | ID OP_COLON NonVoidInitializer public static boolean StructMemberInitializer(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "StructMemberInitializer")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<struct member initializer>"); r = NonVoidInitializer(b, l + 1); if (!r) r = StructMemberInitializer_1(b, l + 1); exit_section_(b, l, m, STRUCT_MEMBER_INITIALIZER, r, false, null); return r; } // ID OP_COLON NonVoidInitializer private static boolean StructMemberInitializer_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "StructMemberInitializer_1")) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, ID, OP_COLON); r = r && NonVoidInitializer(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // KW_STRUCT ID TemplateParameters Constraint? AggregateBody public static boolean StructTemplateDeclaration(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "StructTemplateDeclaration")) return false; if (!nextTokenIs(b, KW_STRUCT)) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, KW_STRUCT, ID); r = r && TemplateParameters(b, l + 1); r = r && StructTemplateDeclaration_3(b, l + 1); r = r && AggregateBody(b, l + 1); exit_section_(b, m, STRUCT_TEMPLATE_DECLARATION, r); return r; } // Constraint? private static boolean StructTemplateDeclaration_3(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "StructTemplateDeclaration_3")) return false; Constraint(b, l + 1); return true; } /* ********************************************************** */ // KW_FINAL? KW_SWITCH OP_PAR_LEFT Expression OP_PAR_RIGHT ScopeStatement public static boolean SwitchStatement(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "SwitchStatement")) return false; if (!nextTokenIs(b, "<switch statement>", KW_FINAL, KW_SWITCH)) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<switch statement>"); r = SwitchStatement_0(b, l + 1); r = r && consumeTokens(b, 0, KW_SWITCH, OP_PAR_LEFT); r = r && Expression(b, l + 1); r = r && consumeToken(b, OP_PAR_RIGHT); r = r && ScopeStatement(b, l + 1); exit_section_(b, l, m, SWITCH_STATEMENT, r, false, null); return r; } // KW_FINAL? private static boolean SwitchStatement_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "SwitchStatement_0")) return false; consumeToken(b, KW_FINAL); return true; } /* ********************************************************** */ // OP_DOT? (TemplateInstance|ID) (OP_DOT (TemplateInstance|ID))* public static boolean Symbol(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Symbol")) return false; if (!nextTokenIs(b, "<symbol>", ID, OP_DOT)) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<symbol>"); r = Symbol_0(b, l + 1); r = r && Symbol_1(b, l + 1); r = r && Symbol_2(b, l + 1); exit_section_(b, l, m, SYMBOL, r, false, null); return r; } // OP_DOT? private static boolean Symbol_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Symbol_0")) return false; consumeToken(b, OP_DOT); return true; } // TemplateInstance|ID private static boolean Symbol_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Symbol_1")) return false; boolean r; Marker m = enter_section_(b); r = TemplateInstance(b, l + 1); if (!r) r = consumeToken(b, ID); exit_section_(b, m, null, r); return r; } // (OP_DOT (TemplateInstance|ID))* private static boolean Symbol_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Symbol_2")) return false; int c = current_position_(b); while (true) { if (!Symbol_2_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "Symbol_2", c)) break; c = current_position_(b); } return true; } // OP_DOT (TemplateInstance|ID) private static boolean Symbol_2_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Symbol_2_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_DOT); r = r && Symbol_2_0_1(b, l + 1); exit_section_(b, m, null, r); return r; } // TemplateInstance|ID private static boolean Symbol_2_0_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Symbol_2_0_1")) return false; boolean r; Marker m = enter_section_(b); r = TemplateInstance(b, l + 1); if (!r) r = consumeToken(b, ID); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // KW_SYNCHRONIZED (OP_PAR_LEFT Expression OP_PAR_RIGHT)? ScopeStatement public static boolean SynchronizedStatement(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "SynchronizedStatement")) return false; if (!nextTokenIs(b, KW_SYNCHRONIZED)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KW_SYNCHRONIZED); r = r && SynchronizedStatement_1(b, l + 1); r = r && ScopeStatement(b, l + 1); exit_section_(b, m, SYNCHRONIZED_STATEMENT, r); return r; } // (OP_PAR_LEFT Expression OP_PAR_RIGHT)? private static boolean SynchronizedStatement_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "SynchronizedStatement_1")) return false; SynchronizedStatement_1_0(b, l + 1); return true; } // OP_PAR_LEFT Expression OP_PAR_RIGHT private static boolean SynchronizedStatement_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "SynchronizedStatement_1_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_PAR_LEFT); r = r && Expression(b, l + 1); r = r && consumeToken(b, OP_PAR_RIGHT); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // KW_ALIAS (ID | BasicType Declarator) (OP_COLON Type|Expression)? (OP_EQ Type|Expression)? public static boolean TemplateAliasParameter(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TemplateAliasParameter")) return false; if (!nextTokenIs(b, KW_ALIAS)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KW_ALIAS); r = r && TemplateAliasParameter_1(b, l + 1); r = r && TemplateAliasParameter_2(b, l + 1); r = r && TemplateAliasParameter_3(b, l + 1); exit_section_(b, m, TEMPLATE_ALIAS_PARAMETER, r); return r; } // ID | BasicType Declarator private static boolean TemplateAliasParameter_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TemplateAliasParameter_1")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, ID); if (!r) r = TemplateAliasParameter_1_1(b, l + 1); exit_section_(b, m, null, r); return r; } // BasicType Declarator private static boolean TemplateAliasParameter_1_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TemplateAliasParameter_1_1")) return false; boolean r; Marker m = enter_section_(b); r = BasicType(b, l + 1); r = r && Declarator(b, l + 1); exit_section_(b, m, null, r); return r; } // (OP_COLON Type|Expression)? private static boolean TemplateAliasParameter_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TemplateAliasParameter_2")) return false; TemplateAliasParameter_2_0(b, l + 1); return true; } // OP_COLON Type|Expression private static boolean TemplateAliasParameter_2_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TemplateAliasParameter_2_0")) return false; boolean r; Marker m = enter_section_(b); r = TemplateAliasParameter_2_0_0(b, l + 1); if (!r) r = Expression(b, l + 1); exit_section_(b, m, null, r); return r; } // OP_COLON Type private static boolean TemplateAliasParameter_2_0_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TemplateAliasParameter_2_0_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_COLON); r = r && Type(b, l + 1); exit_section_(b, m, null, r); return r; } // (OP_EQ Type|Expression)? private static boolean TemplateAliasParameter_3(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TemplateAliasParameter_3")) return false; TemplateAliasParameter_3_0(b, l + 1); return true; } // OP_EQ Type|Expression private static boolean TemplateAliasParameter_3_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TemplateAliasParameter_3_0")) return false; boolean r; Marker m = enter_section_(b); r = TemplateAliasParameter_3_0_0(b, l + 1); if (!r) r = Expression(b, l + 1); exit_section_(b, m, null, r); return r; } // OP_EQ Type private static boolean TemplateAliasParameter_3_0_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TemplateAliasParameter_3_0_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_EQ); r = r && Type(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // <<parseTemplateArgument>> public static boolean TemplateArgument(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TemplateArgument")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<template argument>"); r = parseTemplateArgument(b, l + 1); exit_section_(b, l, m, TEMPLATE_ARGUMENT, r, false, null); return r; } /* ********************************************************** */ // OP_NOT ( OP_PAR_LEFT (TemplateArgument (OP_COMMA TemplateArgument)* )? OP_PAR_RIGHT| TemplateSingleArgument) public static boolean TemplateArguments(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TemplateArguments")) return false; if (!nextTokenIs(b, OP_NOT)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_NOT); r = r && TemplateArguments_1(b, l + 1); exit_section_(b, m, TEMPLATE_ARGUMENTS, r); return r; } // OP_PAR_LEFT (TemplateArgument (OP_COMMA TemplateArgument)* )? OP_PAR_RIGHT| TemplateSingleArgument private static boolean TemplateArguments_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TemplateArguments_1")) return false; boolean r; Marker m = enter_section_(b); r = TemplateArguments_1_0(b, l + 1); if (!r) r = TemplateSingleArgument(b, l + 1); exit_section_(b, m, null, r); return r; } // OP_PAR_LEFT (TemplateArgument (OP_COMMA TemplateArgument)* )? OP_PAR_RIGHT private static boolean TemplateArguments_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TemplateArguments_1_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_PAR_LEFT); r = r && TemplateArguments_1_0_1(b, l + 1); r = r && consumeToken(b, OP_PAR_RIGHT); exit_section_(b, m, null, r); return r; } // (TemplateArgument (OP_COMMA TemplateArgument)* )? private static boolean TemplateArguments_1_0_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TemplateArguments_1_0_1")) return false; TemplateArguments_1_0_1_0(b, l + 1); return true; } // TemplateArgument (OP_COMMA TemplateArgument)* private static boolean TemplateArguments_1_0_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TemplateArguments_1_0_1_0")) return false; boolean r; Marker m = enter_section_(b); r = TemplateArgument(b, l + 1); r = r && TemplateArguments_1_0_1_0_1(b, l + 1); exit_section_(b, m, null, r); return r; } // (OP_COMMA TemplateArgument)* private static boolean TemplateArguments_1_0_1_0_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TemplateArguments_1_0_1_0_1")) return false; int c = current_position_(b); while (true) { if (!TemplateArguments_1_0_1_0_1_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "TemplateArguments_1_0_1_0_1", c)) break; c = current_position_(b); } return true; } // OP_COMMA TemplateArgument private static boolean TemplateArguments_1_0_1_0_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TemplateArguments_1_0_1_0_1_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_COMMA); r = r && TemplateArgument(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // KW_TEMPLATE ID TemplateParameters Constraint? OP_BRACES_LEFT DeclDef* OP_BRACES_RIGHT public static boolean TemplateDeclaration(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TemplateDeclaration")) return false; if (!nextTokenIs(b, KW_TEMPLATE)) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, KW_TEMPLATE, ID); r = r && TemplateParameters(b, l + 1); r = r && TemplateDeclaration_3(b, l + 1); r = r && consumeToken(b, OP_BRACES_LEFT); r = r && TemplateDeclaration_5(b, l + 1); r = r && consumeToken(b, OP_BRACES_RIGHT); exit_section_(b, m, TEMPLATE_DECLARATION, r); return r; } // Constraint? private static boolean TemplateDeclaration_3(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TemplateDeclaration_3")) return false; Constraint(b, l + 1); return true; } // DeclDef* private static boolean TemplateDeclaration_5(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TemplateDeclaration_5")) return false; int c = current_position_(b); while (true) { if (!DeclDef(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "TemplateDeclaration_5", c)) break; c = current_position_(b); } return true; } /* ********************************************************** */ // ID TemplateArguments public static boolean TemplateInstance(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TemplateInstance")) return false; if (!nextTokenIs(b, ID)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, ID); r = r && TemplateArguments(b, l + 1); exit_section_(b, m, TEMPLATE_INSTANCE, r); return r; } /* ********************************************************** */ // KW_MIXIN MixinTemplateName TemplateArguments? ID? OP_SCOLON public static boolean TemplateMixin(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TemplateMixin")) return false; if (!nextTokenIs(b, KW_MIXIN)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KW_MIXIN); r = r && MixinTemplateName(b, l + 1); r = r && TemplateMixin_2(b, l + 1); r = r && TemplateMixin_3(b, l + 1); r = r && consumeToken(b, OP_SCOLON); exit_section_(b, m, TEMPLATE_MIXIN, r); return r; } // TemplateArguments? private static boolean TemplateMixin_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TemplateMixin_2")) return false; TemplateArguments(b, l + 1); return true; } // ID? private static boolean TemplateMixin_3(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TemplateMixin_3")) return false; consumeToken(b, ID); return true; } /* ********************************************************** */ // KW_MIXIN KW_TEMPLATE ID TemplateParameters Constraint? OP_BRACES_LEFT DeclDef* OP_BRACES_RIGHT public static boolean TemplateMixinDeclaration(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TemplateMixinDeclaration")) return false; if (!nextTokenIs(b, KW_MIXIN)) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, KW_MIXIN, KW_TEMPLATE, ID); r = r && TemplateParameters(b, l + 1); r = r && TemplateMixinDeclaration_4(b, l + 1); r = r && consumeToken(b, OP_BRACES_LEFT); r = r && TemplateMixinDeclaration_6(b, l + 1); r = r && consumeToken(b, OP_BRACES_RIGHT); exit_section_(b, m, TEMPLATE_MIXIN_DECLARATION, r); return r; } // Constraint? private static boolean TemplateMixinDeclaration_4(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TemplateMixinDeclaration_4")) return false; Constraint(b, l + 1); return true; } // DeclDef* private static boolean TemplateMixinDeclaration_6(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TemplateMixinDeclaration_6")) return false; int c = current_position_(b); while (true) { if (!DeclDef(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "TemplateMixinDeclaration_6", c)) break; c = current_position_(b); } return true; } /* ********************************************************** */ // TemplateValueParameter | TemplateTupleParameter | TemplateTypeParameter // | TemplateAliasParameter | TemplateThisParameter public static boolean TemplateParameter(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TemplateParameter")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<template parameter>"); r = TemplateValueParameter(b, l + 1); if (!r) r = TemplateTupleParameter(b, l + 1); if (!r) r = TemplateTypeParameter(b, l + 1); if (!r) r = TemplateAliasParameter(b, l + 1); if (!r) r = TemplateThisParameter(b, l + 1); exit_section_(b, l, m, TEMPLATE_PARAMETER, r, false, null); return r; } /* ********************************************************** */ // TemplateParameter (OP_COMMA TemplateParameter)* public static boolean TemplateParameterList(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TemplateParameterList")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<template parameter list>"); r = TemplateParameter(b, l + 1); r = r && TemplateParameterList_1(b, l + 1); exit_section_(b, l, m, TEMPLATE_PARAMETER_LIST, r, false, null); return r; } // (OP_COMMA TemplateParameter)* private static boolean TemplateParameterList_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TemplateParameterList_1")) return false; int c = current_position_(b); while (true) { if (!TemplateParameterList_1_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "TemplateParameterList_1", c)) break; c = current_position_(b); } return true; } // OP_COMMA TemplateParameter private static boolean TemplateParameterList_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TemplateParameterList_1_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_COMMA); r = r && TemplateParameter(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // OP_PAR_LEFT TemplateParameterList? OP_PAR_RIGHT static boolean TemplateParameters(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TemplateParameters")) return false; if (!nextTokenIs(b, OP_PAR_LEFT)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_PAR_LEFT); r = r && TemplateParameters_1(b, l + 1); r = r && consumeToken(b, OP_PAR_RIGHT); exit_section_(b, m, null, r); return r; } // TemplateParameterList? private static boolean TemplateParameters_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TemplateParameters_1")) return false; TemplateParameterList(b, l + 1); return true; } /* ********************************************************** */ // ID | BasicTypeX | CHARACTER_LITERAL | STRING | INTEGER_LITERAL | FLOAT_LITERAL // | KW_TRUE | KW_FALSE | KW_NULL | KW_THIS | SpecialKeyword public static boolean TemplateSingleArgument(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TemplateSingleArgument")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<template single argument>"); r = consumeToken(b, ID); if (!r) r = BasicTypeX(b, l + 1); if (!r) r = consumeToken(b, CHARACTER_LITERAL); if (!r) r = STRING(b, l + 1); if (!r) r = consumeToken(b, INTEGER_LITERAL); if (!r) r = consumeToken(b, FLOAT_LITERAL); if (!r) r = consumeToken(b, KW_TRUE); if (!r) r = consumeToken(b, KW_FALSE); if (!r) r = consumeToken(b, KW_NULL); if (!r) r = consumeToken(b, KW_THIS); if (!r) r = SpecialKeyword(b, l + 1); exit_section_(b, l, m, TEMPLATE_SINGLE_ARGUMENT, r, false, null); return r; } /* ********************************************************** */ // KW_THIS TemplateTypeParameter public static boolean TemplateThisParameter(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TemplateThisParameter")) return false; if (!nextTokenIs(b, KW_THIS)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KW_THIS); r = r && TemplateTypeParameter(b, l + 1); exit_section_(b, m, TEMPLATE_THIS_PARAMETER, r); return r; } /* ********************************************************** */ // ID OP_TRIPLEDOT public static boolean TemplateTupleParameter(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TemplateTupleParameter")) return false; if (!nextTokenIs(b, ID)) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, ID, OP_TRIPLEDOT); exit_section_(b, m, TEMPLATE_TUPLE_PARAMETER, r); return r; } /* ********************************************************** */ // ID (OP_COLON Type)? (OP_EQ Type)? public static boolean TemplateTypeParameter(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TemplateTypeParameter")) return false; if (!nextTokenIs(b, ID)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, ID); r = r && TemplateTypeParameter_1(b, l + 1); r = r && TemplateTypeParameter_2(b, l + 1); exit_section_(b, m, TEMPLATE_TYPE_PARAMETER, r); return r; } // (OP_COLON Type)? private static boolean TemplateTypeParameter_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TemplateTypeParameter_1")) return false; TemplateTypeParameter_1_0(b, l + 1); return true; } // OP_COLON Type private static boolean TemplateTypeParameter_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TemplateTypeParameter_1_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_COLON); r = r && Type(b, l + 1); exit_section_(b, m, null, r); return r; } // (OP_EQ Type)? private static boolean TemplateTypeParameter_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TemplateTypeParameter_2")) return false; TemplateTypeParameter_2_0(b, l + 1); return true; } // OP_EQ Type private static boolean TemplateTypeParameter_2_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TemplateTypeParameter_2_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_EQ); r = r && Type(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // BasicType Declarator (OP_COLON Expression)? (OP_EQ Expression|SpecialKeyword)? public static boolean TemplateValueParameter(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TemplateValueParameter")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<template value parameter>"); r = BasicType(b, l + 1); r = r && Declarator(b, l + 1); r = r && TemplateValueParameter_2(b, l + 1); r = r && TemplateValueParameter_3(b, l + 1); exit_section_(b, l, m, TEMPLATE_VALUE_PARAMETER, r, false, null); return r; } // (OP_COLON Expression)? private static boolean TemplateValueParameter_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TemplateValueParameter_2")) return false; TemplateValueParameter_2_0(b, l + 1); return true; } // OP_COLON Expression private static boolean TemplateValueParameter_2_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TemplateValueParameter_2_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_COLON); r = r && Expression(b, l + 1); exit_section_(b, m, null, r); return r; } // (OP_EQ Expression|SpecialKeyword)? private static boolean TemplateValueParameter_3(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TemplateValueParameter_3")) return false; TemplateValueParameter_3_0(b, l + 1); return true; } // OP_EQ Expression|SpecialKeyword private static boolean TemplateValueParameter_3_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TemplateValueParameter_3_0")) return false; boolean r; Marker m = enter_section_(b); r = TemplateValueParameter_3_0_0(b, l + 1); if (!r) r = SpecialKeyword(b, l + 1); exit_section_(b, m, null, r); return r; } // OP_EQ Expression private static boolean TemplateValueParameter_3_0_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TemplateValueParameter_3_0_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_EQ); r = r && Expression(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // KW_THROW Expression OP_SCOLON public static boolean ThrowStatement(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ThrowStatement")) return false; if (!nextTokenIs(b, KW_THROW)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KW_THROW); r = r && Expression(b, l + 1); r = r && consumeToken(b, OP_SCOLON); exit_section_(b, m, THROW_STATEMENT, r); return r; } /* ********************************************************** */ // (Expression | Type) (OP_COMMA (Expression | Type))* public static boolean TraitsArguments(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TraitsArguments")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<traits arguments>"); r = TraitsArguments_0(b, l + 1); r = r && TraitsArguments_1(b, l + 1); exit_section_(b, l, m, TRAITS_ARGUMENTS, r, false, null); return r; } // Expression | Type private static boolean TraitsArguments_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TraitsArguments_0")) return false; boolean r; Marker m = enter_section_(b); r = Expression(b, l + 1); if (!r) r = Type(b, l + 1); exit_section_(b, m, null, r); return r; } // (OP_COMMA (Expression | Type))* private static boolean TraitsArguments_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TraitsArguments_1")) return false; int c = current_position_(b); while (true) { if (!TraitsArguments_1_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "TraitsArguments_1", c)) break; c = current_position_(b); } return true; } // OP_COMMA (Expression | Type) private static boolean TraitsArguments_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TraitsArguments_1_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_COMMA); r = r && TraitsArguments_1_0_1(b, l + 1); exit_section_(b, m, null, r); return r; } // Expression | Type private static boolean TraitsArguments_1_0_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TraitsArguments_1_0_1")) return false; boolean r; Marker m = enter_section_(b); r = Expression(b, l + 1); if (!r) r = Type(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // KW___TRAITS OP_PAR_LEFT TRAITS_KEYWORD (OP_COMMA TraitsArguments)? OP_PAR_RIGHT public static boolean TraitsExpression(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TraitsExpression")) return false; if (!nextTokenIs(b, KW___TRAITS)) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, KW___TRAITS, OP_PAR_LEFT, TRAITS_KEYWORD); r = r && TraitsExpression_3(b, l + 1); r = r && consumeToken(b, OP_PAR_RIGHT); exit_section_(b, m, TRAITS_EXPRESSION, r); return r; } // (OP_COMMA TraitsArguments)? private static boolean TraitsExpression_3(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TraitsExpression_3")) return false; TraitsExpression_3_0(b, l + 1); return true; } // OP_COMMA TraitsArguments private static boolean TraitsExpression_3_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TraitsExpression_3_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_COMMA); r = r && TraitsArguments(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // KW_TRY ScopeStatement (Catches FinallyStatement | Catches | FinallyStatement) public static boolean TryStatement(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TryStatement")) return false; if (!nextTokenIs(b, KW_TRY)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KW_TRY); r = r && ScopeStatement(b, l + 1); r = r && TryStatement_2(b, l + 1); exit_section_(b, m, TRY_STATEMENT, r); return r; } // Catches FinallyStatement | Catches | FinallyStatement private static boolean TryStatement_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TryStatement_2")) return false; boolean r; Marker m = enter_section_(b); r = TryStatement_2_0(b, l + 1); if (!r) r = Catches(b, l + 1); if (!r) r = FinallyStatement(b, l + 1); exit_section_(b, m, null, r); return r; } // Catches FinallyStatement private static boolean TryStatement_2_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TryStatement_2_0")) return false; boolean r; Marker m = enter_section_(b); r = Catches(b, l + 1); r = r && FinallyStatement(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // TypeCtors? BasicType Declarator2? public static boolean Type(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Type")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<type>"); r = Type_0(b, l + 1); r = r && BasicType(b, l + 1); r = r && Type_2(b, l + 1); exit_section_(b, l, m, TYPE, r, false, null); return r; } // TypeCtors? private static boolean Type_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Type_0")) return false; TypeCtors(b, l + 1); return true; } // Declarator2? private static boolean Type_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Type_2")) return false; Declarator2(b, l + 1); return true; } /* ********************************************************** */ // (KW_CONST | KW_IMMUTABLE | KW_SHARED | KW_INOUT) OP_PAR_LEFT Type OP_PAR_RIGHT public static boolean TypeCISI(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TypeCISI")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<type cisi>"); r = TypeCISI_0(b, l + 1); r = r && consumeToken(b, OP_PAR_LEFT); r = r && Type(b, l + 1); r = r && consumeToken(b, OP_PAR_RIGHT); exit_section_(b, l, m, TYPE_CISI, r, false, null); return r; } // KW_CONST | KW_IMMUTABLE | KW_SHARED | KW_INOUT private static boolean TypeCISI_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TypeCISI_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KW_CONST); if (!r) r = consumeToken(b, KW_IMMUTABLE); if (!r) r = consumeToken(b, KW_SHARED); if (!r) r = consumeToken(b, KW_INOUT); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // KW_CONST | KW_IMMUTABLE | KW_SHARED | KW_INOUT public static boolean TypeCtor(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TypeCtor")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<type ctor>"); r = consumeToken(b, KW_CONST); if (!r) r = consumeToken(b, KW_IMMUTABLE); if (!r) r = consumeToken(b, KW_SHARED); if (!r) r = consumeToken(b, KW_INOUT); exit_section_(b, l, m, TYPE_CTOR, r, false, null); return r; } /* ********************************************************** */ // (KW_CONST | KW_IMMUTABLE | KW_SHARED | KW_INOUT)+ public static boolean TypeCtors(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TypeCtors")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<type ctors>"); r = TypeCtors_0(b, l + 1); int c = current_position_(b); while (r) { if (!TypeCtors_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "TypeCtors", c)) break; c = current_position_(b); } exit_section_(b, l, m, TYPE_CTORS, r, false, null); return r; } // KW_CONST | KW_IMMUTABLE | KW_SHARED | KW_INOUT private static boolean TypeCtors_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TypeCtors_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KW_CONST); if (!r) r = consumeToken(b, KW_IMMUTABLE); if (!r) r = consumeToken(b, KW_SHARED); if (!r) r = consumeToken(b, KW_INOUT); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // Type | KW_STRUCT | KW_UNION | KW_CLASS | KW_INTERFACE | KW_EXTERN // | KW_FUNCTION | KW_DELEGATE | KW_SUPER | KW_CONST | KW_IMMUTABLE // | KW_INOUT | KW_SHARED | KW_RETURN | KW___PARAMETERS public static boolean TypeSpecialization(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TypeSpecialization")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<type specialization>"); r = Type(b, l + 1); if (!r) r = consumeToken(b, KW_STRUCT); if (!r) r = consumeToken(b, KW_UNION); if (!r) r = consumeToken(b, KW_CLASS); if (!r) r = consumeToken(b, KW_INTERFACE); if (!r) r = consumeToken(b, KW_EXTERN); if (!r) r = consumeToken(b, KW_FUNCTION); if (!r) r = consumeToken(b, KW_DELEGATE); if (!r) r = consumeToken(b, KW_SUPER); if (!r) r = consumeToken(b, KW_CONST); if (!r) r = consumeToken(b, KW_IMMUTABLE); if (!r) r = consumeToken(b, KW_INOUT); if (!r) r = consumeToken(b, KW_SHARED); if (!r) r = consumeToken(b, KW_RETURN); if (!r) r = consumeToken(b, KW___PARAMETERS); exit_section_(b, l, m, TYPE_SPECIALIZATION, r, false, null); return r; } /* ********************************************************** */ // KW_TYPEID OP_PAR_LEFT (Type | Expression) OP_PAR_RIGHT public static boolean TypeidExpression(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TypeidExpression")) return false; if (!nextTokenIs(b, KW_TYPEID)) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, KW_TYPEID, OP_PAR_LEFT); r = r && TypeidExpression_2(b, l + 1); r = r && consumeToken(b, OP_PAR_RIGHT); exit_section_(b, m, TYPEID_EXPRESSION, r); return r; } // Type | Expression private static boolean TypeidExpression_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "TypeidExpression_2")) return false; boolean r; Marker m = enter_section_(b); r = Type(b, l + 1); if (!r) r = Expression(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // KW_TYPEOF OP_PAR_LEFT ( Expression | KW_RETURN | KW_SUPER | KW_THIS) OP_PAR_RIGHT public static boolean Typeof(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Typeof")) return false; if (!nextTokenIs(b, KW_TYPEOF)) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, KW_TYPEOF, OP_PAR_LEFT); r = r && Typeof_2(b, l + 1); r = r && consumeToken(b, OP_PAR_RIGHT); exit_section_(b, m, TYPEOF, r); return r; } // Expression | KW_RETURN | KW_SUPER | KW_THIS private static boolean Typeof_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Typeof_2")) return false; boolean r; Marker m = enter_section_(b); r = Expression(b, l + 1); if (!r) r = consumeToken(b, KW_RETURN); if (!r) r = consumeToken(b, KW_SUPER); if (!r) r = consumeToken(b, KW_THIS); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // (OP_AND | OP_PLUS_PLUS | OP_MINUS_MINUS | OP_ASTERISK | OP_MINUS | OP_PLUS | OP_NOT | OP_TILDA // | KW_DELETE | CastPrefix) * // (OP_PAR_LEFT Type OP_PAR_RIGHT OP_DOT (TemplateInstance|ID) | PostfixExpression) // (OP_POW UnaryExpression)? public static boolean UnaryExpression(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "UnaryExpression")) return false; boolean r; Marker m = enter_section_(b, l, _COLLAPSE_, "<unary expression>"); r = UnaryExpression_0(b, l + 1); r = r && UnaryExpression_1(b, l + 1); r = r && UnaryExpression_2(b, l + 1); exit_section_(b, l, m, UNARY_EXPRESSION, r, false, null); return r; } // (OP_AND | OP_PLUS_PLUS | OP_MINUS_MINUS | OP_ASTERISK | OP_MINUS | OP_PLUS | OP_NOT | OP_TILDA // | KW_DELETE | CastPrefix) * private static boolean UnaryExpression_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "UnaryExpression_0")) return false; int c = current_position_(b); while (true) { if (!UnaryExpression_0_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "UnaryExpression_0", c)) break; c = current_position_(b); } return true; } // OP_AND | OP_PLUS_PLUS | OP_MINUS_MINUS | OP_ASTERISK | OP_MINUS | OP_PLUS | OP_NOT | OP_TILDA // | KW_DELETE | CastPrefix private static boolean UnaryExpression_0_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "UnaryExpression_0_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_AND); if (!r) r = consumeToken(b, OP_PLUS_PLUS); if (!r) r = consumeToken(b, OP_MINUS_MINUS); if (!r) r = consumeToken(b, OP_ASTERISK); if (!r) r = consumeToken(b, OP_MINUS); if (!r) r = consumeToken(b, OP_PLUS); if (!r) r = consumeToken(b, OP_NOT); if (!r) r = consumeToken(b, OP_TILDA); if (!r) r = consumeToken(b, KW_DELETE); if (!r) r = CastPrefix(b, l + 1); exit_section_(b, m, null, r); return r; } // OP_PAR_LEFT Type OP_PAR_RIGHT OP_DOT (TemplateInstance|ID) | PostfixExpression private static boolean UnaryExpression_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "UnaryExpression_1")) return false; boolean r; Marker m = enter_section_(b); r = UnaryExpression_1_0(b, l + 1); if (!r) r = PostfixExpression(b, l + 1); exit_section_(b, m, null, r); return r; } // OP_PAR_LEFT Type OP_PAR_RIGHT OP_DOT (TemplateInstance|ID) private static boolean UnaryExpression_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "UnaryExpression_1_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_PAR_LEFT); r = r && Type(b, l + 1); r = r && consumeTokens(b, 0, OP_PAR_RIGHT, OP_DOT); r = r && UnaryExpression_1_0_4(b, l + 1); exit_section_(b, m, null, r); return r; } // TemplateInstance|ID private static boolean UnaryExpression_1_0_4(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "UnaryExpression_1_0_4")) return false; boolean r; Marker m = enter_section_(b); r = TemplateInstance(b, l + 1); if (!r) r = consumeToken(b, ID); exit_section_(b, m, null, r); return r; } // (OP_POW UnaryExpression)? private static boolean UnaryExpression_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "UnaryExpression_2")) return false; UnaryExpression_2_0(b, l + 1); return true; } // OP_POW UnaryExpression private static boolean UnaryExpression_2_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "UnaryExpression_2_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_POW); r = r && UnaryExpression(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // KW_UNION (ID AggregateBody | ID OP_SCOLON | AggregateBody) // | UnionTemplateDeclaration public static boolean UnionDeclaration(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "UnionDeclaration")) return false; if (!nextTokenIs(b, KW_UNION)) return false; boolean r; Marker m = enter_section_(b); r = UnionDeclaration_0(b, l + 1); if (!r) r = UnionTemplateDeclaration(b, l + 1); exit_section_(b, m, UNION_DECLARATION, r); return r; } // KW_UNION (ID AggregateBody | ID OP_SCOLON | AggregateBody) private static boolean UnionDeclaration_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "UnionDeclaration_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KW_UNION); r = r && UnionDeclaration_0_1(b, l + 1); exit_section_(b, m, null, r); return r; } // ID AggregateBody | ID OP_SCOLON | AggregateBody private static boolean UnionDeclaration_0_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "UnionDeclaration_0_1")) return false; boolean r; Marker m = enter_section_(b); r = UnionDeclaration_0_1_0(b, l + 1); if (!r) r = parseTokens(b, 0, ID, OP_SCOLON); if (!r) r = AggregateBody(b, l + 1); exit_section_(b, m, null, r); return r; } // ID AggregateBody private static boolean UnionDeclaration_0_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "UnionDeclaration_0_1_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, ID); r = r && AggregateBody(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // KW_UNION ID TemplateParameters Constraint? AggregateBody public static boolean UnionTemplateDeclaration(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "UnionTemplateDeclaration")) return false; if (!nextTokenIs(b, KW_UNION)) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, KW_UNION, ID); r = r && TemplateParameters(b, l + 1); r = r && UnionTemplateDeclaration_3(b, l + 1); r = r && AggregateBody(b, l + 1); exit_section_(b, m, UNION_TEMPLATE_DECLARATION, r); return r; } // Constraint? private static boolean UnionTemplateDeclaration_3(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "UnionTemplateDeclaration_3")) return false; Constraint(b, l + 1); return true; } /* ********************************************************** */ // KW_UNITTEST FunctionBody public static boolean UnitTest(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "UnitTest")) return false; if (!nextTokenIs(b, KW_UNITTEST)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KW_UNITTEST); r = r && FunctionBody(b, l + 1); exit_section_(b, m, UNIT_TEST, r); return r; } /* ********************************************************** */ // OP_AT (ID (OP_PAR_LEFT ArgumentList? OP_PAR_RIGHT)? | (OP_PAR_LEFT ArgumentList OP_PAR_RIGHT) ) public static boolean UserDefinedAttribute(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "UserDefinedAttribute")) return false; if (!nextTokenIs(b, OP_AT)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_AT); r = r && UserDefinedAttribute_1(b, l + 1); exit_section_(b, m, USER_DEFINED_ATTRIBUTE, r); return r; } // ID (OP_PAR_LEFT ArgumentList? OP_PAR_RIGHT)? | (OP_PAR_LEFT ArgumentList OP_PAR_RIGHT) private static boolean UserDefinedAttribute_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "UserDefinedAttribute_1")) return false; boolean r; Marker m = enter_section_(b); r = UserDefinedAttribute_1_0(b, l + 1); if (!r) r = UserDefinedAttribute_1_1(b, l + 1); exit_section_(b, m, null, r); return r; } // ID (OP_PAR_LEFT ArgumentList? OP_PAR_RIGHT)? private static boolean UserDefinedAttribute_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "UserDefinedAttribute_1_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, ID); r = r && UserDefinedAttribute_1_0_1(b, l + 1); exit_section_(b, m, null, r); return r; } // (OP_PAR_LEFT ArgumentList? OP_PAR_RIGHT)? private static boolean UserDefinedAttribute_1_0_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "UserDefinedAttribute_1_0_1")) return false; UserDefinedAttribute_1_0_1_0(b, l + 1); return true; } // OP_PAR_LEFT ArgumentList? OP_PAR_RIGHT private static boolean UserDefinedAttribute_1_0_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "UserDefinedAttribute_1_0_1_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_PAR_LEFT); r = r && UserDefinedAttribute_1_0_1_0_1(b, l + 1); r = r && consumeToken(b, OP_PAR_RIGHT); exit_section_(b, m, null, r); return r; } // ArgumentList? private static boolean UserDefinedAttribute_1_0_1_0_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "UserDefinedAttribute_1_0_1_0_1")) return false; ArgumentList(b, l + 1); return true; } // OP_PAR_LEFT ArgumentList OP_PAR_RIGHT private static boolean UserDefinedAttribute_1_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "UserDefinedAttribute_1_1")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OP_PAR_LEFT); r = r && ArgumentList(b, l + 1); r = r && consumeToken(b, OP_PAR_RIGHT); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // KW_VERSION OP_PAR_LEFT (INTEGER_LITERAL | ID | KW_UNITTEST | KW_ASSERT) OP_PAR_RIGHT public static boolean VersionCondition(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "VersionCondition")) return false; if (!nextTokenIs(b, KW_VERSION)) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, KW_VERSION, OP_PAR_LEFT); r = r && VersionCondition_2(b, l + 1); r = r && consumeToken(b, OP_PAR_RIGHT); exit_section_(b, m, VERSION_CONDITION, r); return r; } // INTEGER_LITERAL | ID | KW_UNITTEST | KW_ASSERT private static boolean VersionCondition_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "VersionCondition_2")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, INTEGER_LITERAL); if (!r) r = consumeToken(b, ID); if (!r) r = consumeToken(b, KW_UNITTEST); if (!r) r = consumeToken(b, KW_ASSERT); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // KW_VERSION OP_EQ (ID | INTEGER_LITERAL) OP_SCOLON public static boolean VersionSpecification(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "VersionSpecification")) return false; if (!nextTokenIs(b, KW_VERSION)) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, KW_VERSION, OP_EQ); r = r && VersionSpecification_2(b, l + 1); r = r && consumeToken(b, OP_SCOLON); exit_section_(b, m, VERSION_SPECIFICATION, r); return r; } // ID | INTEGER_LITERAL private static boolean VersionSpecification_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "VersionSpecification_2")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, ID); if (!r) r = consumeToken(b, INTEGER_LITERAL); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // KW_WHILE OP_PAR_LEFT Expression OP_PAR_RIGHT ScopeStatement public static boolean WhileStatement(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "WhileStatement")) return false; if (!nextTokenIs(b, KW_WHILE)) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, KW_WHILE, OP_PAR_LEFT); r = r && Expression(b, l + 1); r = r && consumeToken(b, OP_PAR_RIGHT); r = r && ScopeStatement(b, l + 1); exit_section_(b, m, WHILE_STATEMENT, r); return r; } /* ********************************************************** */ // KW_WITH OP_PAR_LEFT (Expression | Symbol | TemplateInstance) OP_PAR_RIGHT ScopeStatement public static boolean WithStatement(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "WithStatement")) return false; if (!nextTokenIs(b, KW_WITH)) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, KW_WITH, OP_PAR_LEFT); r = r && WithStatement_2(b, l + 1); r = r && consumeToken(b, OP_PAR_RIGHT); r = r && ScopeStatement(b, l + 1); exit_section_(b, m, WITH_STATEMENT, r); return r; } // Expression | Symbol | TemplateInstance private static boolean WithStatement_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "WithStatement_2")) return false; boolean r; Marker m = enter_section_(b); r = Expression(b, l + 1); if (!r) r = Symbol(b, l + 1); if (!r) r = TemplateInstance(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // item_* static boolean dLangFile(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "dLangFile")) return false; int c = current_position_(b); while (true) { if (!item_(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "dLangFile", c)) break; c = current_position_(b); } return true; } /* ********************************************************** */ // ID public static boolean identifier(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "identifier")) return false; if (!nextTokenIs(b, ID)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, ID); exit_section_(b, m, IDENTIFIER, r); return r; } /* ********************************************************** */ // ModuleDeclaration | ImportDeclaration | Declaration | AttributeSpecifier | Statement | DeclDef // |COMMENT|WHITE_SPACE|KEYWORD static boolean item_(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "item_")) return false; boolean r; Marker m = enter_section_(b); r = ModuleDeclaration(b, l + 1); if (!r) r = ImportDeclaration(b, l + 1); if (!r) r = Declaration(b, l + 1); if (!r) r = AttributeSpecifier(b, l + 1); if (!r) r = Statement(b, l + 1); if (!r) r = DeclDef(b, l + 1); if (!r) r = COMMENT(b, l + 1); if (!r) r = consumeToken(b, WHITE_SPACE); if (!r) r = consumeToken(b, KEYWORD); exit_section_(b, m, null, r); return r; } final static Parser Declarators_recover_parser_ = new Parser() { public boolean parse(PsiBuilder b, int l) { return Declarators_recover(b, l + 1); } }; }