/* * Copyright 2000-2013 JetBrains s.r.o. * Copyright 2014-2016 AS3Boyan * Copyright 2014-2014 Elias Ku * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // This is a generated file. Not intended for manual editing. package com.intellij.plugins.haxe.lang.parser; import com.intellij.lang.PsiBuilder; import com.intellij.lang.PsiBuilder.Marker; import static com.intellij.plugins.haxe.lang.lexer.HaxeTokenTypes.*; import static com.intellij.lang.parser.GeneratedParserUtilBase.*; 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 HaxeParser 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, EXTENDS_SETS_); Marker m = enter_section_(b, 0, _COLLAPSE_, null); if (t == ABSTRACT_CLASS_DECLARATION) { r = abstractClassDeclaration(b, 0); } else if (t == ACCESS) { r = access(b, 0); } else if (t == ADDITIVE_EXPRESSION) { r = additiveExpression(b, 0); } else if (t == ANONYMOUS_FUNCTION_DECLARATION) { r = anonymousFunctionDeclaration(b, 0); } else if (t == ANONYMOUS_TYPE) { r = anonymousType(b, 0); } else if (t == ANONYMOUS_TYPE_BODY) { r = anonymousTypeBody(b, 0); } else if (t == ANONYMOUS_TYPE_FIELD) { r = anonymousTypeField(b, 0); } else if (t == ANONYMOUS_TYPE_FIELD_LIST) { r = anonymousTypeFieldList(b, 0); } else if (t == ARRAY_ACCESS_EXPRESSION) { r = arrayAccessExpression(b, 0); } else if (t == ARRAY_LITERAL) { r = arrayLiteral(b, 0); } else if (t == ASSIGN_EXPRESSION) { r = assignExpression(b, 0); } else if (t == ASSIGN_OPERATION) { r = assignOperation(b, 0); } else if (t == AUTO_BUILD_MACRO) { r = autoBuildMacro(b, 0); } else if (t == BIND_META) { r = bindMeta(b, 0); } else if (t == BIT_OPERATION) { r = bitOperation(b, 0); } else if (t == BITMAP_META) { r = bitmapMeta(b, 0); } else if (t == BITWISE_EXPRESSION) { r = bitwiseExpression(b, 0); } else if (t == BLOCK_STATEMENT) { r = blockStatement(b, 0); } else if (t == BREAK_STATEMENT) { r = breakStatement(b, 0); } else if (t == BUILD_MACRO) { r = buildMacro(b, 0); } else if (t == CALL_EXPRESSION) { r = callExpression(b, 0); } else if (t == CAST_EXPRESSION) { r = castExpression(b, 0); } else if (t == CATCH_STATEMENT) { r = catchStatement(b, 0); } else if (t == CLASS_BODY) { r = classBody(b, 0); } else if (t == CLASS_DECLARATION) { r = classDeclaration(b, 0); } else if (t == COMPARE_EXPRESSION) { r = compareExpression(b, 0); } else if (t == COMPARE_OPERATION) { r = compareOperation(b, 0); } else if (t == COMPONENT_NAME) { r = componentName(b, 0); } else if (t == CONTINUE_STATEMENT) { r = continueStatement(b, 0); } else if (t == CORE_API_META) { r = coreApiMeta(b, 0); } else if (t == CUSTOM_META) { r = customMeta(b, 0); } else if (t == DEBUG_META) { r = debugMeta(b, 0); } else if (t == DECLARATION_ATTRIBUTE) { r = declarationAttribute(b, 0); } else if (t == DEFAULT_CASE) { r = defaultCase(b, 0); } else if (t == DO_WHILE_STATEMENT) { r = doWhileStatement(b, 0); } else if (t == ENUM_BODY) { r = enumBody(b, 0); } else if (t == ENUM_CONSTRUCTOR_PARAMETERS) { r = enumConstructorParameters(b, 0); } else if (t == ENUM_DECLARATION) { r = enumDeclaration(b, 0); } else if (t == ENUM_VALUE_DECLARATION) { r = enumValueDeclaration(b, 0); } else if (t == EXPRESSION) { r = expression(b, 0); } else if (t == EXPRESSION_LIST) { r = expressionList(b, 0); } else if (t == EXTENDS_DECLARATION) { r = extendsDeclaration(b, 0); } else if (t == EXTERN_CLASS_DECLARATION) { r = externClassDeclaration(b, 0); } else if (t == EXTERN_CLASS_DECLARATION_BODY) { r = externClassDeclarationBody(b, 0); } else if (t == EXTERN_FUNCTION_DECLARATION) { r = externFunctionDeclaration(b, 0); } else if (t == EXTERN_INTERFACE_DECLARATION) { r = externInterfaceDeclaration(b, 0); } else if (t == EXTERN_KEY_WORD) { r = externKeyWord(b, 0); } else if (t == FAKE_ENUM_META) { r = fakeEnumMeta(b, 0); } else if (t == FAT_ARROW_EXPRESSION) { r = fatArrowExpression(b, 0); } else if (t == FINAL_META) { r = finalMeta(b, 0); } else if (t == FOR_STATEMENT) { r = forStatement(b, 0); } else if (t == FUNCTION_DECLARATION_WITH_ATTRIBUTES) { r = functionDeclarationWithAttributes(b, 0); } else if (t == FUNCTION_LITERAL) { r = functionLiteral(b, 0); } else if (t == FUNCTION_PROTOTYPE_DECLARATION_WITH_ATTRIBUTES) { r = functionPrototypeDeclarationWithAttributes(b, 0); } else if (t == FUNCTION_TYPE) { r = functionType(b, 0); } else if (t == GENERIC_LIST_PART) { r = genericListPart(b, 0); } else if (t == GENERIC_PARAM) { r = genericParam(b, 0); } else if (t == GETTER_META) { r = getterMeta(b, 0); } else if (t == HACK_META) { r = hackMeta(b, 0); } else if (t == IDENTIFIER) { r = identifier(b, 0); } else if (t == IF_STATEMENT) { r = ifStatement(b, 0); } else if (t == IMPLEMENTS_DECLARATION) { r = implementsDeclaration(b, 0); } else if (t == IMPORT_STATEMENT_REGULAR) { r = importStatementRegular(b, 0); } else if (t == IMPORT_STATEMENT_WITH_IN_SUPPORT) { r = importStatementWithInSupport(b, 0); } else if (t == IMPORT_STATEMENT_WITH_WILDCARD) { r = importStatementWithWildcard(b, 0); } else if (t == INHERIT_LIST) { r = inheritList(b, 0); } else if (t == INTERFACE_BODY) { r = interfaceBody(b, 0); } else if (t == INTERFACE_DECLARATION) { r = interfaceDeclaration(b, 0); } else if (t == ITERABLE) { r = iterable(b, 0); } else if (t == ITERATOR_EXPRESSION) { r = iteratorExpression(b, 0); } else if (t == JS_REQUIRE_META) { r = jsRequireMeta(b, 0); } else if (t == KEEP_META) { r = keepMeta(b, 0); } else if (t == LITERAL_EXPRESSION) { r = literalExpression(b, 0); } else if (t == LOCAL_FUNCTION_DECLARATION) { r = localFunctionDeclaration(b, 0); } else if (t == LOCAL_VAR_DECLARATION) { r = localVarDeclaration(b, 0); } else if (t == LOCAL_VAR_DECLARATION_PART) { r = localVarDeclarationPart(b, 0); } else if (t == LOGIC_AND_EXPRESSION) { r = logicAndExpression(b, 0); } else if (t == LOGIC_OR_EXPRESSION) { r = logicOrExpression(b, 0); } else if (t == LONG_TEMPLATE_ENTRY) { r = longTemplateEntry(b, 0); } else if (t == MACRO_CLASS) { r = macroClass(b, 0); } else if (t == MACRO_CLASS_LIST) { r = macroClassList(b, 0); } else if (t == META_KEY_VALUE) { r = metaKeyValue(b, 0); } else if (t == META_META) { r = metaMeta(b, 0); } else if (t == MULTIPLICATIVE_EXPRESSION) { r = multiplicativeExpression(b, 0); } else if (t == NATIVE_META) { r = nativeMeta(b, 0); } else if (t == NEW_EXPRESSION) { r = newExpression(b, 0); } else if (t == NO_DEBUG_META) { r = noDebugMeta(b, 0); } else if (t == NS_META) { r = nsMeta(b, 0); } else if (t == OBJECT_LITERAL) { r = objectLiteral(b, 0); } else if (t == OBJECT_LITERAL_ELEMENT) { r = objectLiteralElement(b, 0); } else if (t == OVERLOAD_META) { r = overloadMeta(b, 0); } else if (t == PACKAGE_STATEMENT) { r = packageStatement(b, 0); } else if (t == PARAMETER) { r = parameter(b, 0); } else if (t == PARAMETER_LIST) { r = parameterList(b, 0); } else if (t == PARENTHESIZED_EXPRESSION) { r = parenthesizedExpression(b, 0); } else if (t == PREFIX_EXPRESSION) { r = prefixExpression(b, 0); } else if (t == PRIVATE_KEY_WORD) { r = privateKeyWord(b, 0); } else if (t == PROPERTY_ACCESSOR) { r = propertyAccessor(b, 0); } else if (t == PROPERTY_DECLARATION) { r = propertyDeclaration(b, 0); } else if (t == PROTECTED_META) { r = protectedMeta(b, 0); } else if (t == REFERENCE_EXPRESSION) { r = referenceExpression(b, 0); } else if (t == REGULAR_EXPRESSION_LITERAL) { r = regularExpressionLiteral(b, 0); } else if (t == REQUIRE_META) { r = requireMeta(b, 0); } else if (t == RETURN_STATEMENT) { r = returnStatement(b, 0); } else if (t == RETURN_STATEMENT_WITHOUT_SEMICOLON) { r = returnStatementWithoutSemicolon(b, 0); } else if (t == SETTER_META) { r = setterMeta(b, 0); } else if (t == SHIFT_EXPRESSION) { r = shiftExpression(b, 0); } else if (t == SHIFT_OPERATOR) { r = shiftOperator(b, 0); } else if (t == SHIFT_RIGHT_OPERATOR) { r = shiftRightOperator(b, 0); } else if (t == SHORT_TEMPLATE_ENTRY) { r = shortTemplateEntry(b, 0); } else if (t == SIMPLE_META) { r = simpleMeta(b, 0); } else if (t == STRING_LITERAL_EXPRESSION) { r = stringLiteralExpression(b, 0); } else if (t == SUFFIX_EXPRESSION) { r = suffixExpression(b, 0); } else if (t == SUPER_EXPRESSION) { r = superExpression(b, 0); } else if (t == SWITCH_BLOCK) { r = switchBlock(b, 0); } else if (t == SWITCH_CASE) { r = switchCase(b, 0); } else if (t == SWITCH_CASE_BLOCK) { r = switchCaseBlock(b, 0); } else if (t == SWITCH_CASE_EXPRESSION) { r = switchCaseExpression(b, 0); } else if (t == SWITCH_STATEMENT) { r = switchStatement(b, 0); } else if (t == TERNARY_EXPRESSION) { r = ternaryExpression(b, 0); } else if (t == THIS_EXPRESSION) { r = thisExpression(b, 0); } else if (t == THROW_STATEMENT) { r = throwStatement(b, 0); } else if (t == TRY_STATEMENT) { r = tryStatement(b, 0); } else if (t == TYPE) { r = type(b, 0); } else if (t == TYPE_EXTENDS) { r = typeExtends(b, 0); } else if (t == TYPE_LIST) { r = typeList(b, 0); } else if (t == TYPE_LIST_PART) { r = typeListPart(b, 0); } else if (t == TYPE_OR_ANONYMOUS) { r = typeOrAnonymous(b, 0); } else if (t == TYPE_PARAM) { r = typeParam(b, 0); } else if (t == TYPE_TAG) { r = typeTag(b, 0); } else if (t == TYPEDEF_DECLARATION) { r = typedefDeclaration(b, 0); } else if (t == UNREFLECTIVE_META) { r = unreflectiveMeta(b, 0); } else if (t == UNSIGNED_SHIFT_RIGHT_OPERATOR) { r = unsignedShiftRightOperator(b, 0); } else if (t == USING_STATEMENT) { r = usingStatement(b, 0); } else if (t == VAR_DECLARATION) { r = varDeclaration(b, 0); } else if (t == VAR_DECLARATION_PART) { r = varDeclarationPart(b, 0); } else if (t == VAR_INIT) { r = varInit(b, 0); } else if (t == WHILE_STATEMENT) { r = whileStatement(b, 0); } else if (t == WILDCARD) { r = wildcard(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 haxeFile(b, l + 1); } public static final TokenSet[] EXTENDS_SETS_ = new TokenSet[] { create_token_set_(LITERAL_EXPRESSION, REGULAR_EXPRESSION_LITERAL), create_token_set_(ADDITIVE_EXPRESSION, ARRAY_ACCESS_EXPRESSION, ARRAY_LITERAL, ASSIGN_EXPRESSION, BITWISE_EXPRESSION, CALL_EXPRESSION, CAST_EXPRESSION, COMPARE_EXPRESSION, EXPRESSION, FAT_ARROW_EXPRESSION, FUNCTION_LITERAL, ITERATOR_EXPRESSION, LITERAL_EXPRESSION, LOGIC_AND_EXPRESSION, LOGIC_OR_EXPRESSION, MULTIPLICATIVE_EXPRESSION, NEW_EXPRESSION, OBJECT_LITERAL, PARENTHESIZED_EXPRESSION, PREFIX_EXPRESSION, REFERENCE_EXPRESSION, REGULAR_EXPRESSION_LITERAL, SHIFT_EXPRESSION, STRING_LITERAL_EXPRESSION, SUFFIX_EXPRESSION, SUPER_EXPRESSION, SWITCH_CASE_EXPRESSION, TERNARY_EXPRESSION, THIS_EXPRESSION), }; /* ********************************************************** */ // macroClassList? privateKeyWord? 'abstract' componentName genericParam? ('(' functionTypeWrapper ')')? ((identifier) type)* '{' classBody '}' public static boolean abstractClassDeclaration(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "abstractClassDeclaration")) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, "<abstract class declaration>"); r = abstractClassDeclaration_0(b, l + 1); r = r && abstractClassDeclaration_1(b, l + 1); r = r && consumeToken(b, KABSTRACT); p = r; // pin = 3 r = r && report_error_(b, componentName(b, l + 1)); r = p && report_error_(b, abstractClassDeclaration_4(b, l + 1)) && r; r = p && report_error_(b, abstractClassDeclaration_5(b, l + 1)) && r; r = p && report_error_(b, abstractClassDeclaration_6(b, l + 1)) && r; r = p && report_error_(b, consumeToken(b, PLCURLY)) && r; r = p && report_error_(b, classBody(b, l + 1)) && r; r = p && consumeToken(b, PRCURLY) && r; exit_section_(b, l, m, ABSTRACT_CLASS_DECLARATION, r, p, null); return r || p; } // macroClassList? private static boolean abstractClassDeclaration_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "abstractClassDeclaration_0")) return false; macroClassList(b, l + 1); return true; } // privateKeyWord? private static boolean abstractClassDeclaration_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "abstractClassDeclaration_1")) return false; privateKeyWord(b, l + 1); return true; } // genericParam? private static boolean abstractClassDeclaration_4(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "abstractClassDeclaration_4")) return false; genericParam(b, l + 1); return true; } // ('(' functionTypeWrapper ')')? private static boolean abstractClassDeclaration_5(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "abstractClassDeclaration_5")) return false; abstractClassDeclaration_5_0(b, l + 1); return true; } // '(' functionTypeWrapper ')' private static boolean abstractClassDeclaration_5_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "abstractClassDeclaration_5_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, PLPAREN); r = r && functionTypeWrapper(b, l + 1); r = r && consumeToken(b, PRPAREN); exit_section_(b, m, null, r); return r; } // ((identifier) type)* private static boolean abstractClassDeclaration_6(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "abstractClassDeclaration_6")) return false; int c = current_position_(b); while (true) { if (!abstractClassDeclaration_6_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "abstractClassDeclaration_6", c)) break; c = current_position_(b); } return true; } // (identifier) type private static boolean abstractClassDeclaration_6_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "abstractClassDeclaration_6_0")) return false; boolean r; Marker m = enter_section_(b); r = abstractClassDeclaration_6_0_0(b, l + 1); r = r && type(b, l + 1); exit_section_(b, m, null, r); return r; } // (identifier) private static boolean abstractClassDeclaration_6_0_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "abstractClassDeclaration_6_0_0")) return false; boolean r; Marker m = enter_section_(b); r = identifier(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // 'public' | 'private' public static boolean access(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "access")) return false; if (!nextTokenIs(b, "<access>", KPRIVATE, KPUBLIC)) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<access>"); r = consumeToken(b, KPUBLIC); if (!r) r = consumeToken(b, KPRIVATE); exit_section_(b, l, m, ACCESS, r, false, null); return r; } /* ********************************************************** */ // ('+' | '-') multiplicativeExpressionWrapper public static boolean additiveExpression(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "additiveExpression")) return false; if (!nextTokenIs(b, "<additive expression>", OPLUS, OMINUS)) return false; boolean r, p; Marker m = enter_section_(b, l, _LEFT_, "<additive expression>"); r = additiveExpression_0(b, l + 1); p = r; // pin = 1 r = r && multiplicativeExpressionWrapper(b, l + 1); exit_section_(b, l, m, ADDITIVE_EXPRESSION, r, p, null); return r || p; } // '+' | '-' private static boolean additiveExpression_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "additiveExpression_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OPLUS); if (!r) r = consumeToken(b, OMINUS); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // multiplicativeExpressionWrapper additiveExpression* static boolean additiveExpressionWrapper(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "additiveExpressionWrapper")) return false; boolean r; Marker m = enter_section_(b); r = multiplicativeExpressionWrapper(b, l + 1); r = r && additiveExpressionWrapper_1(b, l + 1); exit_section_(b, m, null, r); return r; } // additiveExpression* private static boolean additiveExpressionWrapper_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "additiveExpressionWrapper_1")) return false; int c = current_position_(b); while (true) { if (!additiveExpression(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "additiveExpressionWrapper_1", c)) break; c = current_position_(b); } return true; } /* ********************************************************** */ // 'function' '(' parameterList ')' typeTag? 'untyped'? '{' '}' public static boolean anonymousFunctionDeclaration(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "anonymousFunctionDeclaration")) return false; if (!nextTokenIs(b, KFUNCTION)) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, null); r = consumeToken(b, KFUNCTION); r = r && consumeToken(b, PLPAREN); p = r; // pin = 2 r = r && report_error_(b, parameterList(b, l + 1)); r = p && report_error_(b, consumeToken(b, PRPAREN)) && r; r = p && report_error_(b, anonymousFunctionDeclaration_4(b, l + 1)) && r; r = p && report_error_(b, anonymousFunctionDeclaration_5(b, l + 1)) && r; r = p && report_error_(b, consumeToken(b, PLCURLY)) && r; r = p && consumeToken(b, PRCURLY) && r; exit_section_(b, l, m, ANONYMOUS_FUNCTION_DECLARATION, r, p, null); return r || p; } // typeTag? private static boolean anonymousFunctionDeclaration_4(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "anonymousFunctionDeclaration_4")) return false; typeTag(b, l + 1); return true; } // 'untyped'? private static boolean anonymousFunctionDeclaration_5(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "anonymousFunctionDeclaration_5")) return false; consumeToken(b, KUNTYPED); return true; } /* ********************************************************** */ // '{' anonymousTypeBody '}' public static boolean anonymousType(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "anonymousType")) return false; if (!nextTokenIs(b, PLCURLY)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, PLCURLY); r = r && anonymousTypeBody(b, l + 1); r = r && consumeToken(b, PRCURLY); exit_section_(b, m, ANONYMOUS_TYPE, r); return r; } /* ********************************************************** */ // extendedAnonymousTypeBody | simpleAnonymousTypeBody | interfaceBody public static boolean anonymousTypeBody(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "anonymousTypeBody")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<anonymous type body>"); r = extendedAnonymousTypeBody(b, l + 1); if (!r) r = simpleAnonymousTypeBody(b, l + 1); if (!r) r = interfaceBody(b, l + 1); exit_section_(b, l, m, ANONYMOUS_TYPE_BODY, r, false, null); return r; } /* ********************************************************** */ // "?"? componentName typeTag public static boolean anonymousTypeField(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "anonymousTypeField")) return false; if (!nextTokenIs(b, "<anonymous type field>", OQUEST, ID)) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<anonymous type field>"); r = anonymousTypeField_0(b, l + 1); r = r && componentName(b, l + 1); r = r && typeTag(b, l + 1); exit_section_(b, l, m, ANONYMOUS_TYPE_FIELD, r, false, null); return r; } // "?"? private static boolean anonymousTypeField_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "anonymousTypeField_0")) return false; consumeToken(b, OQUEST); return true; } /* ********************************************************** */ // anonymousTypeField (',' anonymousTypeField)* public static boolean anonymousTypeFieldList(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "anonymousTypeFieldList")) return false; if (!nextTokenIs(b, "<anonymous type field list>", OQUEST, ID)) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<anonymous type field list>"); r = anonymousTypeField(b, l + 1); r = r && anonymousTypeFieldList_1(b, l + 1); exit_section_(b, l, m, ANONYMOUS_TYPE_FIELD_LIST, r, false, null); return r; } // (',' anonymousTypeField)* private static boolean anonymousTypeFieldList_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "anonymousTypeFieldList_1")) return false; int c = current_position_(b); while (true) { if (!anonymousTypeFieldList_1_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "anonymousTypeFieldList_1", c)) break; c = current_position_(b); } return true; } // ',' anonymousTypeField private static boolean anonymousTypeFieldList_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "anonymousTypeFieldList_1_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OCOMMA); r = r && anonymousTypeField(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // '[' expression? ']' public static boolean arrayAccessExpression(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "arrayAccessExpression")) return false; if (!nextTokenIs(b, PLBRACK)) return false; boolean r, p; Marker m = enter_section_(b, l, _LEFT_, null); r = consumeToken(b, PLBRACK); p = r; // pin = 1 r = r && report_error_(b, arrayAccessExpression_1(b, l + 1)); r = p && consumeToken(b, PRBRACK) && r; exit_section_(b, l, m, ARRAY_ACCESS_EXPRESSION, r, p, null); return r || p; } // expression? private static boolean arrayAccessExpression_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "arrayAccessExpression_1")) return false; expression(b, l + 1); return true; } /* ********************************************************** */ // '[' (expressionList ','?)? ']' public static boolean arrayLiteral(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "arrayLiteral")) return false; if (!nextTokenIs(b, PLBRACK)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, PLBRACK); r = r && arrayLiteral_1(b, l + 1); r = r && consumeToken(b, PRBRACK); exit_section_(b, m, ARRAY_LITERAL, r); return r; } // (expressionList ','?)? private static boolean arrayLiteral_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "arrayLiteral_1")) return false; arrayLiteral_1_0(b, l + 1); return true; } // expressionList ','? private static boolean arrayLiteral_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "arrayLiteral_1_0")) return false; boolean r; Marker m = enter_section_(b); r = expressionList(b, l + 1); r = r && arrayLiteral_1_0_1(b, l + 1); exit_section_(b, m, null, r); return r; } // ','? private static boolean arrayLiteral_1_0_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "arrayLiteral_1_0_1")) return false; consumeToken(b, OCOMMA); return true; } /* ********************************************************** */ // assignOperation iteratorExpressionWrapper public static boolean assignExpression(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "assignExpression")) return false; if (!nextTokenIs(b, "<assign expression>", OREMAINDER_ASSIGN, OBIT_AND_ASSIGN, OMUL_ASSIGN, OPLUS_ASSIGN, OMINUS_ASSIGN, OQUOTIENT_ASSIGN, OSHIFT_LEFT_ASSIGN, OASSIGN, OGREATER, OBIT_XOR_ASSIGN, OBIT_OR_ASSIGN)) return false; boolean r, p; Marker m = enter_section_(b, l, _LEFT_, "<assign expression>"); r = assignOperation(b, l + 1); p = r; // pin = 1 r = r && iteratorExpressionWrapper(b, l + 1); exit_section_(b, l, m, ASSIGN_EXPRESSION, r, p, null); return r || p; } /* ********************************************************** */ // iteratorExpressionWrapper assignExpression* static boolean assignExpressionWrapper(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "assignExpressionWrapper")) return false; boolean r; Marker m = enter_section_(b); r = iteratorExpressionWrapper(b, l + 1); r = r && assignExpressionWrapper_1(b, l + 1); exit_section_(b, m, null, r); return r; } // assignExpression* private static boolean assignExpressionWrapper_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "assignExpressionWrapper_1")) return false; int c = current_position_(b); while (true) { if (!assignExpression(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "assignExpressionWrapper_1", c)) break; c = current_position_(b); } return true; } /* ********************************************************** */ // '=' | '+=' | '-=' | '*=' | '/=' | '%=' | '&=' | '|=' | '^=' | '<<=' | ('>' '>' '=') | ('>' '>' '>' '=') public static boolean assignOperation(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "assignOperation")) return false; if (!nextTokenIs(b, "<assign operation>", OREMAINDER_ASSIGN, OBIT_AND_ASSIGN, OMUL_ASSIGN, OPLUS_ASSIGN, OMINUS_ASSIGN, OQUOTIENT_ASSIGN, OSHIFT_LEFT_ASSIGN, OASSIGN, OGREATER, OBIT_XOR_ASSIGN, OBIT_OR_ASSIGN)) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<assign operation>"); r = consumeToken(b, OASSIGN); if (!r) r = consumeToken(b, OPLUS_ASSIGN); if (!r) r = consumeToken(b, OMINUS_ASSIGN); if (!r) r = consumeToken(b, OMUL_ASSIGN); if (!r) r = consumeToken(b, OQUOTIENT_ASSIGN); if (!r) r = consumeToken(b, OREMAINDER_ASSIGN); if (!r) r = consumeToken(b, OBIT_AND_ASSIGN); if (!r) r = consumeToken(b, OBIT_OR_ASSIGN); if (!r) r = consumeToken(b, OBIT_XOR_ASSIGN); if (!r) r = consumeToken(b, OSHIFT_LEFT_ASSIGN); if (!r) r = assignOperation_10(b, l + 1); if (!r) r = assignOperation_11(b, l + 1); exit_section_(b, l, m, ASSIGN_OPERATION, r, false, null); return r; } // '>' '>' '=' private static boolean assignOperation_10(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "assignOperation_10")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OGREATER); r = r && consumeToken(b, OGREATER); r = r && consumeToken(b, OASSIGN); exit_section_(b, m, null, r); return r; } // '>' '>' '>' '=' private static boolean assignOperation_11(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "assignOperation_11")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OGREATER); r = r && consumeToken(b, OGREATER); r = r && consumeToken(b, OGREATER); r = r && consumeToken(b, OASSIGN); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // '@:autoBuild' '(' referenceExpression (callExpression | arrayAccessExpression | qualifiedReferenceExpression)* ')' public static boolean autoBuildMacro(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "autoBuildMacro")) return false; if (!nextTokenIs(b, KAUTOBUILD)) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, null); r = consumeToken(b, KAUTOBUILD); r = r && consumeToken(b, PLPAREN); p = r; // pin = 2 r = r && report_error_(b, referenceExpression(b, l + 1)); r = p && report_error_(b, autoBuildMacro_3(b, l + 1)) && r; r = p && consumeToken(b, PRPAREN) && r; exit_section_(b, l, m, AUTO_BUILD_MACRO, r, p, null); return r || p; } // (callExpression | arrayAccessExpression | qualifiedReferenceExpression)* private static boolean autoBuildMacro_3(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "autoBuildMacro_3")) return false; int c = current_position_(b); while (true) { if (!autoBuildMacro_3_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "autoBuildMacro_3", c)) break; c = current_position_(b); } return true; } // callExpression | arrayAccessExpression | qualifiedReferenceExpression private static boolean autoBuildMacro_3_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "autoBuildMacro_3_0")) return false; boolean r; Marker m = enter_section_(b); r = callExpression(b, l + 1); if (!r) r = arrayAccessExpression(b, l + 1); if (!r) r = qualifiedReferenceExpression(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // '@:bind' public static boolean bindMeta(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "bindMeta")) return false; if (!nextTokenIs(b, KBIND)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KBIND); exit_section_(b, m, BIND_META, r); return r; } /* ********************************************************** */ // '|' | '&' | '^' public static boolean bitOperation(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "bitOperation")) return false; if (!nextTokenIs(b, "<bit operation>", OBIT_AND, OBIT_XOR, OBIT_OR)) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<bit operation>"); r = consumeToken(b, OBIT_OR); if (!r) r = consumeToken(b, OBIT_AND); if (!r) r = consumeToken(b, OBIT_XOR); exit_section_(b, l, m, BIT_OPERATION, r, false, null); return r; } /* ********************************************************** */ // '@:bitmap' '(' stringLiteralExpression ')' public static boolean bitmapMeta(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "bitmapMeta")) return false; if (!nextTokenIs(b, KBITMAP)) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, null); r = consumeToken(b, KBITMAP); p = r; // pin = 1 r = r && report_error_(b, consumeToken(b, PLPAREN)); r = p && report_error_(b, stringLiteralExpression(b, l + 1)) && r; r = p && consumeToken(b, PRPAREN) && r; exit_section_(b, l, m, BITMAP_META, r, p, null); return r || p; } /* ********************************************************** */ // bitOperation shiftExpressionWrapper public static boolean bitwiseExpression(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "bitwiseExpression")) return false; if (!nextTokenIs(b, "<bitwise expression>", OBIT_AND, OBIT_XOR, OBIT_OR)) return false; boolean r, p; Marker m = enter_section_(b, l, _LEFT_, "<bitwise expression>"); r = bitOperation(b, l + 1); p = r; // pin = 1 r = r && shiftExpressionWrapper(b, l + 1); exit_section_(b, l, m, BITWISE_EXPRESSION, r, p, null); return r || p; } /* ********************************************************** */ // shiftExpressionWrapper bitwiseExpression* static boolean bitwiseExpressionWrapper(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "bitwiseExpressionWrapper")) return false; boolean r; Marker m = enter_section_(b); r = shiftExpressionWrapper(b, l + 1); r = r && bitwiseExpressionWrapper_1(b, l + 1); exit_section_(b, m, null, r); return r; } // bitwiseExpression* private static boolean bitwiseExpressionWrapper_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "bitwiseExpressionWrapper_1")) return false; int c = current_position_(b); while (true) { if (!bitwiseExpression(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "bitwiseExpressionWrapper_1", c)) break; c = current_position_(b); } return true; } /* ********************************************************** */ // '{' statementList? '}' public static boolean blockStatement(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "blockStatement")) return false; if (!nextTokenIs(b, PLCURLY)) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, null); r = consumeToken(b, PLCURLY); p = r; // pin = 1 r = r && report_error_(b, blockStatement_1(b, l + 1)); r = p && consumeToken(b, PRCURLY) && r; exit_section_(b, l, m, BLOCK_STATEMENT, r, p, null); return r || p; } // statementList? private static boolean blockStatement_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "blockStatement_1")) return false; statementList(b, l + 1); return true; } /* ********************************************************** */ // 'break' ';' public static boolean breakStatement(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "breakStatement")) return false; if (!nextTokenIs(b, KBREAK)) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, null); r = consumeToken(b, KBREAK); p = r; // pin = 1 r = r && consumeToken(b, OSEMI); exit_section_(b, l, m, BREAK_STATEMENT, r, p, null); return r || p; } /* ********************************************************** */ // '@:build' '(' referenceExpression (callExpression | arrayAccessExpression | qualifiedReferenceExpression)* ')' public static boolean buildMacro(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "buildMacro")) return false; if (!nextTokenIs(b, KBUILD)) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, null); r = consumeToken(b, KBUILD); r = r && consumeToken(b, PLPAREN); p = r; // pin = 2 r = r && report_error_(b, referenceExpression(b, l + 1)); r = p && report_error_(b, buildMacro_3(b, l + 1)) && r; r = p && consumeToken(b, PRPAREN) && r; exit_section_(b, l, m, BUILD_MACRO, r, p, null); return r || p; } // (callExpression | arrayAccessExpression | qualifiedReferenceExpression)* private static boolean buildMacro_3(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "buildMacro_3")) return false; int c = current_position_(b); while (true) { if (!buildMacro_3_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "buildMacro_3", c)) break; c = current_position_(b); } return true; } // callExpression | arrayAccessExpression | qualifiedReferenceExpression private static boolean buildMacro_3_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "buildMacro_3_0")) return false; boolean r; Marker m = enter_section_(b); r = callExpression(b, l + 1); if (!r) r = arrayAccessExpression(b, l + 1); if (!r) r = qualifiedReferenceExpression(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // '(' expressionList? ')' public static boolean callExpression(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "callExpression")) return false; if (!nextTokenIs(b, PLPAREN)) return false; boolean r, p; Marker m = enter_section_(b, l, _LEFT_, null); r = consumeToken(b, PLPAREN); p = r; // pin = 1 r = r && report_error_(b, callExpression_1(b, l + 1)); r = p && consumeToken(b, PRPAREN) && r; exit_section_(b, l, m, CALL_EXPRESSION, r, p, null); return r || p; } // expressionList? private static boolean callExpression_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "callExpression_1")) return false; expressionList(b, l + 1); return true; } /* ********************************************************** */ // (referenceExpression | thisExpression | superExpression) (callExpression | arrayAccessExpression | qualifiedReferenceExpression)* static boolean callOrArrayAccess(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "callOrArrayAccess")) return false; if (!nextTokenIs(b, "", KSUPER, KTHIS, ID)) return false; boolean r; Marker m = enter_section_(b); r = callOrArrayAccess_0(b, l + 1); r = r && callOrArrayAccess_1(b, l + 1); exit_section_(b, m, null, r); return r; } // referenceExpression | thisExpression | superExpression private static boolean callOrArrayAccess_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "callOrArrayAccess_0")) return false; boolean r; Marker m = enter_section_(b); r = referenceExpression(b, l + 1); if (!r) r = thisExpression(b, l + 1); if (!r) r = superExpression(b, l + 1); exit_section_(b, m, null, r); return r; } // (callExpression | arrayAccessExpression | qualifiedReferenceExpression)* private static boolean callOrArrayAccess_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "callOrArrayAccess_1")) return false; int c = current_position_(b); while (true) { if (!callOrArrayAccess_1_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "callOrArrayAccess_1", c)) break; c = current_position_(b); } return true; } // callExpression | arrayAccessExpression | qualifiedReferenceExpression private static boolean callOrArrayAccess_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "callOrArrayAccess_1_0")) return false; boolean r; Marker m = enter_section_(b); r = callExpression(b, l + 1); if (!r) r = arrayAccessExpression(b, l + 1); if (!r) r = qualifiedReferenceExpression(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // 'cast' (('(' expression ',' functionTypeWrapper ')') | expression) public static boolean castExpression(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "castExpression")) return false; if (!nextTokenIs(b, KCAST)) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, null); r = consumeToken(b, KCAST); p = r; // pin = 1 r = r && castExpression_1(b, l + 1); exit_section_(b, l, m, CAST_EXPRESSION, r, p, null); return r || p; } // ('(' expression ',' functionTypeWrapper ')') | expression private static boolean castExpression_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "castExpression_1")) return false; boolean r; Marker m = enter_section_(b); r = castExpression_1_0(b, l + 1); if (!r) r = expression(b, l + 1); exit_section_(b, m, null, r); return r; } // '(' expression ',' functionTypeWrapper ')' private static boolean castExpression_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "castExpression_1_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, PLPAREN); r = r && expression(b, l + 1); r = r && consumeToken(b, OCOMMA); r = r && functionTypeWrapper(b, l + 1); r = r && consumeToken(b, PRPAREN); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // 'catch' '(' parameter ')' statement ';'? public static boolean catchStatement(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "catchStatement")) return false; if (!nextTokenIs(b, KCATCH)) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, null); r = consumeToken(b, KCATCH); p = r; // pin = 1 r = r && report_error_(b, consumeToken(b, PLPAREN)); r = p && report_error_(b, parameter(b, l + 1)) && r; r = p && report_error_(b, consumeToken(b, PRPAREN)) && r; r = p && report_error_(b, statement(b, l + 1)) && r; r = p && catchStatement_5(b, l + 1) && r; exit_section_(b, l, m, CATCH_STATEMENT, r, p, null); return r || p; } // ';'? private static boolean catchStatement_5(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "catchStatement_5")) return false; consumeToken(b, OSEMI); return true; } /* ********************************************************** */ // classBodyPart* public static boolean classBody(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "classBody")) return false; Marker m = enter_section_(b, l, _NONE_, "<class body>"); int c = current_position_(b); while (true) { if (!classBodyPart(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "classBody", c)) break; c = current_position_(b); } exit_section_(b, l, m, CLASS_BODY, true, false, null); return true; } /* ********************************************************** */ // varDeclaration | functionDeclarationWithAttributes static boolean classBodyPart(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "classBodyPart")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, null); r = varDeclaration(b, l + 1); if (!r) r = functionDeclarationWithAttributes(b, l + 1); exit_section_(b, l, m, null, r, false, class_body_part_recover_parser_); return r; } /* ********************************************************** */ // macroClassList? privateKeyWord? 'class' componentName genericParam? inheritList? '{' classBody '}' public static boolean classDeclaration(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "classDeclaration")) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, "<class declaration>"); r = classDeclaration_0(b, l + 1); r = r && classDeclaration_1(b, l + 1); r = r && consumeToken(b, KCLASS); p = r; // pin = 3 r = r && report_error_(b, componentName(b, l + 1)); r = p && report_error_(b, classDeclaration_4(b, l + 1)) && r; r = p && report_error_(b, classDeclaration_5(b, l + 1)) && r; r = p && report_error_(b, consumeToken(b, PLCURLY)) && r; r = p && report_error_(b, classBody(b, l + 1)) && r; r = p && consumeToken(b, PRCURLY) && r; exit_section_(b, l, m, CLASS_DECLARATION, r, p, null); return r || p; } // macroClassList? private static boolean classDeclaration_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "classDeclaration_0")) return false; macroClassList(b, l + 1); return true; } // privateKeyWord? private static boolean classDeclaration_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "classDeclaration_1")) return false; privateKeyWord(b, l + 1); return true; } // genericParam? private static boolean classDeclaration_4(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "classDeclaration_4")) return false; genericParam(b, l + 1); return true; } // inheritList? private static boolean classDeclaration_5(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "classDeclaration_5")) return false; inheritList(b, l + 1); return true; } /* ********************************************************** */ // !(ppToken | metaKeyWord | 'dynamic' | 'function' | 'inline' | 'override' | 'private' | 'public' | 'static' | 'var' | '}' | 'macro') static boolean class_body_part_recover(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "class_body_part_recover")) return false; boolean r; Marker m = enter_section_(b, l, _NOT_, null); r = !class_body_part_recover_0(b, l + 1); exit_section_(b, l, m, null, r, false, null); return r; } // ppToken | metaKeyWord | 'dynamic' | 'function' | 'inline' | 'override' | 'private' | 'public' | 'static' | 'var' | '}' | 'macro' private static boolean class_body_part_recover_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "class_body_part_recover_0")) return false; boolean r; Marker m = enter_section_(b); r = ppToken(b, l + 1); if (!r) r = metaKeyWord(b, l + 1); if (!r) r = consumeToken(b, KDYNAMIC); if (!r) r = consumeToken(b, KFUNCTION); if (!r) r = consumeToken(b, KINLINE); if (!r) r = consumeToken(b, KOVERRIDE); if (!r) r = consumeToken(b, KPRIVATE); if (!r) r = consumeToken(b, KPUBLIC); if (!r) r = consumeToken(b, KSTATIC); if (!r) r = consumeToken(b, KVAR); if (!r) r = consumeToken(b, PRCURLY); if (!r) r = consumeToken(b, KMACRO2); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // compareOperation bitwiseExpressionWrapper public static boolean compareExpression(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "compareExpression")) return false; if (!nextTokenIs(b, "<compare expression>", ONOT_EQ, OLESS, OLESS_OR_EQUAL, OEQ, OGREATER)) return false; boolean r, p; Marker m = enter_section_(b, l, _LEFT_, "<compare expression>"); r = compareOperation(b, l + 1); p = r; // pin = 1 r = r && bitwiseExpressionWrapper(b, l + 1); exit_section_(b, l, m, COMPARE_EXPRESSION, r, p, null); return r || p; } /* ********************************************************** */ // bitwiseExpressionWrapper compareExpression* static boolean compareExpressionWrapper(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "compareExpressionWrapper")) return false; boolean r; Marker m = enter_section_(b); r = bitwiseExpressionWrapper(b, l + 1); r = r && compareExpressionWrapper_1(b, l + 1); exit_section_(b, m, null, r); return r; } // compareExpression* private static boolean compareExpressionWrapper_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "compareExpressionWrapper_1")) return false; int c = current_position_(b); while (true) { if (!compareExpression(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "compareExpressionWrapper_1", c)) break; c = current_position_(b); } return true; } /* ********************************************************** */ // '==' | '!=' | '<=' | '<' | ('>' '=') | '>' public static boolean compareOperation(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "compareOperation")) return false; if (!nextTokenIs(b, "<compare operation>", ONOT_EQ, OLESS, OLESS_OR_EQUAL, OEQ, OGREATER)) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<compare operation>"); r = consumeToken(b, OEQ); if (!r) r = consumeToken(b, ONOT_EQ); if (!r) r = consumeToken(b, OLESS_OR_EQUAL); if (!r) r = consumeToken(b, OLESS); if (!r) r = compareOperation_4(b, l + 1); if (!r) r = consumeToken(b, OGREATER); exit_section_(b, l, m, COMPARE_OPERATION, r, false, null); return r; } // '>' '=' private static boolean compareOperation_4(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "compareOperation_4")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OGREATER); r = r && consumeToken(b, OASSIGN); 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; } /* ********************************************************** */ // 'new' static boolean constructorName(PsiBuilder b, int l) { return consumeToken(b, ONEW); } /* ********************************************************** */ // 'continue' ';' public static boolean continueStatement(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "continueStatement")) return false; if (!nextTokenIs(b, KCONTINUE)) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, null); r = consumeToken(b, KCONTINUE); p = r; // pin = 1 r = r && consumeToken(b, OSEMI); exit_section_(b, l, m, CONTINUE_STATEMENT, r, p, null); return r || p; } /* ********************************************************** */ // '@:coreApi' public static boolean coreApiMeta(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "coreApiMeta")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<core api meta>"); r = consumeToken(b, "@:coreApi"); exit_section_(b, l, m, CORE_API_META, r, false, null); return r; } /* ********************************************************** */ // MACRO_ID ('(' expressionList ')')? public static boolean customMeta(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "customMeta")) return false; if (!nextTokenIs(b, MACRO_ID)) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, null); r = consumeToken(b, MACRO_ID); p = r; // pin = 1 r = r && customMeta_1(b, l + 1); exit_section_(b, l, m, CUSTOM_META, r, p, null); return r || p; } // ('(' expressionList ')')? private static boolean customMeta_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "customMeta_1")) return false; customMeta_1_0(b, l + 1); return true; } // '(' expressionList ')' private static boolean customMeta_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "customMeta_1_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, PLPAREN); r = r && expressionList(b, l + 1); r = r && consumeToken(b, PRPAREN); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // '@:debug' public static boolean debugMeta(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "debugMeta")) return false; if (!nextTokenIs(b, KDEBUG)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KDEBUG); exit_section_(b, m, DEBUG_META, r); return r; } /* ********************************************************** */ // 'static' | 'inline' | 'dynamic' | 'override' | 'macro' | access public static boolean declarationAttribute(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "declarationAttribute")) return false; if (!nextTokenIs(b, "<declaration attribute>", KDYNAMIC, KINLINE, KMACRO2, KOVERRIDE, KPRIVATE, KPUBLIC, KSTATIC)) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<declaration attribute>"); r = consumeToken(b, KSTATIC); if (!r) r = consumeToken(b, KINLINE); if (!r) r = consumeToken(b, KDYNAMIC); if (!r) r = consumeToken(b, KOVERRIDE); if (!r) r = consumeToken(b, KMACRO2); if (!r) r = access(b, l + 1); exit_section_(b, l, m, DECLARATION_ATTRIBUTE, r, false, null); return r; } /* ********************************************************** */ // 'default' ':' switchCaseBlock? public static boolean defaultCase(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "defaultCase")) return false; if (!nextTokenIs(b, KDEFAULT)) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, null); r = consumeToken(b, KDEFAULT); p = r; // pin = 1 r = r && report_error_(b, consumeToken(b, OCOLON)); r = p && defaultCase_2(b, l + 1) && r; exit_section_(b, l, m, DEFAULT_CASE, r, p, null); return r || p; } // switchCaseBlock? private static boolean defaultCase_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "defaultCase_2")) return false; switchCaseBlock(b, l + 1); return true; } /* ********************************************************** */ // 'do' statement 'while' '(' expression ')' ';' public static boolean doWhileStatement(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "doWhileStatement")) return false; if (!nextTokenIs(b, KDO)) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, null); r = consumeToken(b, KDO); p = r; // pin = 1 r = r && report_error_(b, statement(b, l + 1)); r = p && report_error_(b, consumeToken(b, KWHILE)) && r; r = p && report_error_(b, consumeToken(b, PLPAREN)) && r; r = p && report_error_(b, expression(b, l + 1)) && r; r = p && report_error_(b, consumeToken(b, PRPAREN)) && r; r = p && consumeToken(b, OSEMI) && r; exit_section_(b, l, m, DO_WHILE_STATEMENT, r, p, null); return r || p; } /* ********************************************************** */ // '{' '}' static boolean emptyObjectLiteral(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "emptyObjectLiteral")) return false; if (!nextTokenIs(b, PLCURLY)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, PLCURLY); r = r && consumeToken(b, PRCURLY); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // enumValueDeclaration* public static boolean enumBody(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "enumBody")) return false; Marker m = enter_section_(b, l, _NONE_, "<enum body>"); int c = current_position_(b); while (true) { if (!enumValueDeclaration(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "enumBody", c)) break; c = current_position_(b); } exit_section_(b, l, m, ENUM_BODY, true, false, null); return true; } /* ********************************************************** */ // '(' parameterList ')' public static boolean enumConstructorParameters(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "enumConstructorParameters")) return false; if (!nextTokenIs(b, PLPAREN)) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, null); r = consumeToken(b, PLPAREN); p = r; // pin = 1 r = r && report_error_(b, parameterList(b, l + 1)); r = p && consumeToken(b, PRPAREN) && r; exit_section_(b, l, m, ENUM_CONSTRUCTOR_PARAMETERS, r, p, null); return r || p; } /* ********************************************************** */ // macroClassList? externOrPrivate? 'enum' componentName genericParam? '{' enumBody '}' public static boolean enumDeclaration(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "enumDeclaration")) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, "<enum declaration>"); r = enumDeclaration_0(b, l + 1); r = r && enumDeclaration_1(b, l + 1); r = r && consumeToken(b, KENUM); p = r; // pin = 3 r = r && report_error_(b, componentName(b, l + 1)); r = p && report_error_(b, enumDeclaration_4(b, l + 1)) && r; r = p && report_error_(b, consumeToken(b, PLCURLY)) && r; r = p && report_error_(b, enumBody(b, l + 1)) && r; r = p && consumeToken(b, PRCURLY) && r; exit_section_(b, l, m, ENUM_DECLARATION, r, p, null); return r || p; } // macroClassList? private static boolean enumDeclaration_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "enumDeclaration_0")) return false; macroClassList(b, l + 1); return true; } // externOrPrivate? private static boolean enumDeclaration_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "enumDeclaration_1")) return false; externOrPrivate(b, l + 1); return true; } // genericParam? private static boolean enumDeclaration_4(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "enumDeclaration_4")) return false; genericParam(b, l + 1); return true; } /* ********************************************************** */ // componentName enumConstructorParameters? ';' public static boolean enumValueDeclaration(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "enumValueDeclaration")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<enum value declaration>"); r = componentName(b, l + 1); r = r && enumValueDeclaration_1(b, l + 1); r = r && consumeToken(b, OSEMI); exit_section_(b, l, m, ENUM_VALUE_DECLARATION, r, false, enum_value_declaration_recovery_parser_); return r; } // enumConstructorParameters? private static boolean enumValueDeclaration_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "enumValueDeclaration_1")) return false; enumConstructorParameters(b, l + 1); return true; } /* ********************************************************** */ // !(ID | '}') static boolean enum_value_declaration_recovery(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "enum_value_declaration_recovery")) return false; boolean r; Marker m = enter_section_(b, l, _NOT_, null); r = !enum_value_declaration_recovery_0(b, l + 1); exit_section_(b, l, m, null, r, false, null); return r; } // ID | '}' private static boolean enum_value_declaration_recovery_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "enum_value_declaration_recovery_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, ID); if (!r) r = consumeToken(b, PRCURLY); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // fatArrowExpressionWrapper public static boolean expression(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "expression")) return false; boolean r; Marker m = enter_section_(b, l, _COLLAPSE_, "<expression>"); r = fatArrowExpressionWrapper(b, l + 1); exit_section_(b, l, m, EXPRESSION, r, false, expression_recover_parser_); return r; } /* ********************************************************** */ // forStatement | whileStatement | (expression (',' expression)*) public static boolean expressionList(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "expressionList")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<expression list>"); r = forStatement(b, l + 1); if (!r) r = whileStatement(b, l + 1); if (!r) r = expressionList_2(b, l + 1); exit_section_(b, l, m, EXPRESSION_LIST, r, false, expression_list_recover_parser_); return r; } // expression (',' expression)* private static boolean expressionList_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "expressionList_2")) return false; boolean r; Marker m = enter_section_(b); r = expression(b, l + 1); r = r && expressionList_2_1(b, l + 1); exit_section_(b, m, null, r); return r; } // (',' expression)* private static boolean expressionList_2_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "expressionList_2_1")) return false; int c = current_position_(b); while (true) { if (!expressionList_2_1_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "expressionList_2_1", c)) break; c = current_position_(b); } return true; } // ',' expression private static boolean expressionList_2_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "expressionList_2_1_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OCOMMA); r = r && expression(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // !(')' | ']') static boolean expression_list_recover(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "expression_list_recover")) return false; boolean r; Marker m = enter_section_(b, l, _NOT_, null); r = !expression_list_recover_0(b, l + 1); exit_section_(b, l, m, null, r, false, null); return r; } // ')' | ']' private static boolean expression_list_recover_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "expression_list_recover_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, PRPAREN); if (!r) r = consumeToken(b, PRBRACK); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // !('!' | '!=' | '%' | '%=' | '&&' | '&' | '&=' | '(' | ')' | '*' | '*=' | '+' | '++' | '+=' | ',' | '-' | '--' | '-=' | '.' | '...' | '/' | '/=' | ':' | ';' | '<' | '<<' | '<<=' | '<=' | '=' | '==' | '>' | '?' | metaKeyWord | '[' | ']' | '^' | '^=' | 'break' | 'case' | 'cast' | 'catch' | 'continue' | 'default' | 'do' | 'dynamic' | 'else' | 'false' | 'for' | 'function' | 'if' | 'inline' | 'new' | 'null' | 'override' | 'private' | 'public' | 'return' | 'static' | 'super' | 'switch' | 'this' | 'throw' | 'true' | 'try' | 'untyped' | 'var' | 'while' | '{' | '|' | '|=' | '||' | '}' | '~' | ID | LITFLOAT | LITHEX | LITINT | LITOCT | OPEN_QUOTE | CLOSING_QUOTE | MACRO_ID | REG_EXP | LONG_TEMPLATE_ENTRY_END | '=>') static boolean expression_recover(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "expression_recover")) return false; boolean r; Marker m = enter_section_(b, l, _NOT_, null); r = !expression_recover_0(b, l + 1); exit_section_(b, l, m, null, r, false, null); return r; } // '!' | '!=' | '%' | '%=' | '&&' | '&' | '&=' | '(' | ')' | '*' | '*=' | '+' | '++' | '+=' | ',' | '-' | '--' | '-=' | '.' | '...' | '/' | '/=' | ':' | ';' | '<' | '<<' | '<<=' | '<=' | '=' | '==' | '>' | '?' | metaKeyWord | '[' | ']' | '^' | '^=' | 'break' | 'case' | 'cast' | 'catch' | 'continue' | 'default' | 'do' | 'dynamic' | 'else' | 'false' | 'for' | 'function' | 'if' | 'inline' | 'new' | 'null' | 'override' | 'private' | 'public' | 'return' | 'static' | 'super' | 'switch' | 'this' | 'throw' | 'true' | 'try' | 'untyped' | 'var' | 'while' | '{' | '|' | '|=' | '||' | '}' | '~' | ID | LITFLOAT | LITHEX | LITINT | LITOCT | OPEN_QUOTE | CLOSING_QUOTE | MACRO_ID | REG_EXP | LONG_TEMPLATE_ENTRY_END | '=>' private static boolean expression_recover_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "expression_recover_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, ONOT); if (!r) r = consumeToken(b, ONOT_EQ); if (!r) r = consumeToken(b, OREMAINDER); if (!r) r = consumeToken(b, OREMAINDER_ASSIGN); if (!r) r = consumeToken(b, OCOND_AND); if (!r) r = consumeToken(b, OBIT_AND); if (!r) r = consumeToken(b, OBIT_AND_ASSIGN); if (!r) r = consumeToken(b, PLPAREN); if (!r) r = consumeToken(b, PRPAREN); if (!r) r = consumeToken(b, OMUL); if (!r) r = consumeToken(b, OMUL_ASSIGN); if (!r) r = consumeToken(b, OPLUS); if (!r) r = consumeToken(b, OPLUS_PLUS); if (!r) r = consumeToken(b, OPLUS_ASSIGN); if (!r) r = consumeToken(b, OCOMMA); if (!r) r = consumeToken(b, OMINUS); if (!r) r = consumeToken(b, OMINUS_MINUS); if (!r) r = consumeToken(b, OMINUS_ASSIGN); if (!r) r = consumeToken(b, ODOT); if (!r) r = consumeToken(b, OTRIPLE_DOT); if (!r) r = consumeToken(b, OQUOTIENT); if (!r) r = consumeToken(b, OQUOTIENT_ASSIGN); if (!r) r = consumeToken(b, OCOLON); if (!r) r = consumeToken(b, OSEMI); if (!r) r = consumeToken(b, OLESS); if (!r) r = consumeToken(b, OSHIFT_LEFT); if (!r) r = consumeToken(b, OSHIFT_LEFT_ASSIGN); if (!r) r = consumeToken(b, OLESS_OR_EQUAL); if (!r) r = consumeToken(b, OASSIGN); if (!r) r = consumeToken(b, OEQ); if (!r) r = consumeToken(b, OGREATER); if (!r) r = consumeToken(b, OQUEST); if (!r) r = metaKeyWord(b, l + 1); if (!r) r = consumeToken(b, PLBRACK); if (!r) r = consumeToken(b, PRBRACK); if (!r) r = consumeToken(b, OBIT_XOR); if (!r) r = consumeToken(b, OBIT_XOR_ASSIGN); if (!r) r = consumeToken(b, KBREAK); if (!r) r = consumeToken(b, KCASE); if (!r) r = consumeToken(b, KCAST); if (!r) r = consumeToken(b, KCATCH); if (!r) r = consumeToken(b, KCONTINUE); if (!r) r = consumeToken(b, KDEFAULT); if (!r) r = consumeToken(b, KDO); if (!r) r = consumeToken(b, KDYNAMIC); if (!r) r = consumeToken(b, KELSE); if (!r) r = consumeToken(b, KFALSE); if (!r) r = consumeToken(b, KFOR); if (!r) r = consumeToken(b, KFUNCTION); if (!r) r = consumeToken(b, KIF); if (!r) r = consumeToken(b, KINLINE); if (!r) r = consumeToken(b, ONEW); if (!r) r = consumeToken(b, KNULL); if (!r) r = consumeToken(b, KOVERRIDE); if (!r) r = consumeToken(b, KPRIVATE); if (!r) r = consumeToken(b, KPUBLIC); if (!r) r = consumeToken(b, KRETURN); if (!r) r = consumeToken(b, KSTATIC); if (!r) r = consumeToken(b, KSUPER); if (!r) r = consumeToken(b, KSWITCH); if (!r) r = consumeToken(b, KTHIS); if (!r) r = consumeToken(b, KTHROW); if (!r) r = consumeToken(b, KTRUE); if (!r) r = consumeToken(b, KTRY); if (!r) r = consumeToken(b, KUNTYPED); if (!r) r = consumeToken(b, KVAR); if (!r) r = consumeToken(b, KWHILE); if (!r) r = consumeToken(b, PLCURLY); if (!r) r = consumeToken(b, OBIT_OR); if (!r) r = consumeToken(b, OBIT_OR_ASSIGN); if (!r) r = consumeToken(b, OCOND_OR); if (!r) r = consumeToken(b, PRCURLY); if (!r) r = consumeToken(b, OCOMPLEMENT); if (!r) r = consumeToken(b, ID); if (!r) r = consumeToken(b, LITFLOAT); if (!r) r = consumeToken(b, LITHEX); if (!r) r = consumeToken(b, LITINT); if (!r) r = consumeToken(b, LITOCT); if (!r) r = consumeToken(b, OPEN_QUOTE); if (!r) r = consumeToken(b, CLOSING_QUOTE); if (!r) r = consumeToken(b, MACRO_ID); if (!r) r = consumeToken(b, REG_EXP); if (!r) r = consumeToken(b, LONG_TEMPLATE_ENTRY_END); if (!r) r = consumeToken(b, OFAT_ARROW); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // typeExtends (',' anonymousTypeFieldList)? (',' interfaceBody)? static boolean extendedAnonymousTypeBody(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "extendedAnonymousTypeBody")) return false; if (!nextTokenIs(b, OGREATER)) return false; boolean r; Marker m = enter_section_(b); r = typeExtends(b, l + 1); r = r && extendedAnonymousTypeBody_1(b, l + 1); r = r && extendedAnonymousTypeBody_2(b, l + 1); exit_section_(b, m, null, r); return r; } // (',' anonymousTypeFieldList)? private static boolean extendedAnonymousTypeBody_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "extendedAnonymousTypeBody_1")) return false; extendedAnonymousTypeBody_1_0(b, l + 1); return true; } // ',' anonymousTypeFieldList private static boolean extendedAnonymousTypeBody_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "extendedAnonymousTypeBody_1_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OCOMMA); r = r && anonymousTypeFieldList(b, l + 1); exit_section_(b, m, null, r); return r; } // (',' interfaceBody)? private static boolean extendedAnonymousTypeBody_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "extendedAnonymousTypeBody_2")) return false; extendedAnonymousTypeBody_2_0(b, l + 1); return true; } // ',' interfaceBody private static boolean extendedAnonymousTypeBody_2_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "extendedAnonymousTypeBody_2_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OCOMMA); r = r && interfaceBody(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // ('extends' type)+ public static boolean extendsDeclaration(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "extendsDeclaration")) return false; if (!nextTokenIs(b, KEXTENDS)) return false; boolean r; Marker m = enter_section_(b); r = extendsDeclaration_0(b, l + 1); int c = current_position_(b); while (r) { if (!extendsDeclaration_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "extendsDeclaration", c)) break; c = current_position_(b); } exit_section_(b, m, EXTENDS_DECLARATION, r); return r; } // 'extends' type private static boolean extendsDeclaration_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "extendsDeclaration_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KEXTENDS); r = r && type(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // externAndMaybePrivate2 | externAndMaybePrivate1 static boolean externAndMaybePrivate(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "externAndMaybePrivate")) return false; if (!nextTokenIs(b, "", KEXTERN, KPRIVATE)) return false; boolean r; Marker m = enter_section_(b); r = externAndMaybePrivate2(b, l + 1); if (!r) r = externAndMaybePrivate1(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // privateKeyWord? externKeyWord static boolean externAndMaybePrivate1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "externAndMaybePrivate1")) return false; if (!nextTokenIs(b, "", KEXTERN, KPRIVATE)) return false; boolean r; Marker m = enter_section_(b); r = externAndMaybePrivate1_0(b, l + 1); r = r && externKeyWord(b, l + 1); exit_section_(b, m, null, r); return r; } // privateKeyWord? private static boolean externAndMaybePrivate1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "externAndMaybePrivate1_0")) return false; privateKeyWord(b, l + 1); return true; } /* ********************************************************** */ // externKeyWord privateKeyWord? static boolean externAndMaybePrivate2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "externAndMaybePrivate2")) return false; if (!nextTokenIs(b, KEXTERN)) return false; boolean r; Marker m = enter_section_(b); r = externKeyWord(b, l + 1); r = r && externAndMaybePrivate2_1(b, l + 1); exit_section_(b, m, null, r); return r; } // privateKeyWord? private static boolean externAndMaybePrivate2_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "externAndMaybePrivate2_1")) return false; privateKeyWord(b, l + 1); return true; } /* ********************************************************** */ // macroClassList? externAndMaybePrivate 'class' componentName genericParam? inheritList? '{' externClassDeclarationBody '}' public static boolean externClassDeclaration(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "externClassDeclaration")) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, "<extern class declaration>"); r = externClassDeclaration_0(b, l + 1); r = r && externAndMaybePrivate(b, l + 1); r = r && consumeToken(b, KCLASS); p = r; // pin = 3 r = r && report_error_(b, componentName(b, l + 1)); r = p && report_error_(b, externClassDeclaration_4(b, l + 1)) && r; r = p && report_error_(b, externClassDeclaration_5(b, l + 1)) && r; r = p && report_error_(b, consumeToken(b, PLCURLY)) && r; r = p && report_error_(b, externClassDeclarationBody(b, l + 1)) && r; r = p && consumeToken(b, PRCURLY) && r; exit_section_(b, l, m, EXTERN_CLASS_DECLARATION, r, p, null); return r || p; } // macroClassList? private static boolean externClassDeclaration_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "externClassDeclaration_0")) return false; macroClassList(b, l + 1); return true; } // genericParam? private static boolean externClassDeclaration_4(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "externClassDeclaration_4")) return false; genericParam(b, l + 1); return true; } // inheritList? private static boolean externClassDeclaration_5(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "externClassDeclaration_5")) return false; inheritList(b, l + 1); return true; } /* ********************************************************** */ // externClassDeclarationBodyPart* public static boolean externClassDeclarationBody(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "externClassDeclarationBody")) return false; Marker m = enter_section_(b, l, _NONE_, "<extern class declaration body>"); int c = current_position_(b); while (true) { if (!externClassDeclarationBodyPart(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "externClassDeclarationBody", c)) break; c = current_position_(b); } exit_section_(b, l, m, EXTERN_CLASS_DECLARATION_BODY, true, false, null); return true; } /* ********************************************************** */ // varDeclaration | externFunctionDeclaration static boolean externClassDeclarationBodyPart(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "externClassDeclarationBodyPart")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, null); r = varDeclaration(b, l + 1); if (!r) r = externFunctionDeclaration(b, l + 1); exit_section_(b, l, m, null, r, false, extern_class_body_part_recover_parser_); return r; } /* ********************************************************** */ // (functionMacroMember| declarationAttribute)* 'function' (constructorName | componentName) genericParam? '(' parameterList ')' typeTag? 'untyped'? (functionCommonBody | ';') public static boolean externFunctionDeclaration(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "externFunctionDeclaration")) return false; if (!nextTokenIs(b, "<extern function declaration>", KAUTOBUILD, KBUILD, KDEBUG, KFINAL, KGETTER, KKEEP, KMACRO, KMETA, KNODEBUG, KNS, KOVERLOAD, KPROTECTED, KREQUIRE, KSETTER, KDYNAMIC, KFUNCTION, KINLINE, KMACRO2, KOVERRIDE, KPRIVATE, KPUBLIC, KSTATIC, MACRO_ID)) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, "<extern function declaration>"); r = externFunctionDeclaration_0(b, l + 1); r = r && consumeToken(b, KFUNCTION); r = r && externFunctionDeclaration_2(b, l + 1); p = r; // pin = 3 r = r && report_error_(b, externFunctionDeclaration_3(b, l + 1)); r = p && report_error_(b, consumeToken(b, PLPAREN)) && r; r = p && report_error_(b, parameterList(b, l + 1)) && r; r = p && report_error_(b, consumeToken(b, PRPAREN)) && r; r = p && report_error_(b, externFunctionDeclaration_7(b, l + 1)) && r; r = p && report_error_(b, externFunctionDeclaration_8(b, l + 1)) && r; r = p && externFunctionDeclaration_9(b, l + 1) && r; exit_section_(b, l, m, EXTERN_FUNCTION_DECLARATION, r, p, null); return r || p; } // (functionMacroMember| declarationAttribute)* private static boolean externFunctionDeclaration_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "externFunctionDeclaration_0")) return false; int c = current_position_(b); while (true) { if (!externFunctionDeclaration_0_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "externFunctionDeclaration_0", c)) break; c = current_position_(b); } return true; } // functionMacroMember| declarationAttribute private static boolean externFunctionDeclaration_0_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "externFunctionDeclaration_0_0")) return false; boolean r; Marker m = enter_section_(b); r = functionMacroMember(b, l + 1); if (!r) r = declarationAttribute(b, l + 1); exit_section_(b, m, null, r); return r; } // constructorName | componentName private static boolean externFunctionDeclaration_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "externFunctionDeclaration_2")) return false; boolean r; Marker m = enter_section_(b); r = constructorName(b, l + 1); if (!r) r = componentName(b, l + 1); exit_section_(b, m, null, r); return r; } // genericParam? private static boolean externFunctionDeclaration_3(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "externFunctionDeclaration_3")) return false; genericParam(b, l + 1); return true; } // typeTag? private static boolean externFunctionDeclaration_7(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "externFunctionDeclaration_7")) return false; typeTag(b, l + 1); return true; } // 'untyped'? private static boolean externFunctionDeclaration_8(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "externFunctionDeclaration_8")) return false; consumeToken(b, KUNTYPED); return true; } // functionCommonBody | ';' private static boolean externFunctionDeclaration_9(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "externFunctionDeclaration_9")) return false; boolean r; Marker m = enter_section_(b); r = functionCommonBody(b, l + 1); if (!r) r = consumeToken(b, OSEMI); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // macroClassList? externAndMaybePrivate? 'interface' componentName genericParam? inheritList? '{' interfaceBody '}' public static boolean externInterfaceDeclaration(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "externInterfaceDeclaration")) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, "<extern interface declaration>"); r = externInterfaceDeclaration_0(b, l + 1); r = r && externInterfaceDeclaration_1(b, l + 1); r = r && consumeToken(b, KINTERFACE); p = r; // pin = 3 r = r && report_error_(b, componentName(b, l + 1)); r = p && report_error_(b, externInterfaceDeclaration_4(b, l + 1)) && r; r = p && report_error_(b, externInterfaceDeclaration_5(b, l + 1)) && r; r = p && report_error_(b, consumeToken(b, PLCURLY)) && r; r = p && report_error_(b, interfaceBody(b, l + 1)) && r; r = p && consumeToken(b, PRCURLY) && r; exit_section_(b, l, m, EXTERN_INTERFACE_DECLARATION, r, p, null); return r || p; } // macroClassList? private static boolean externInterfaceDeclaration_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "externInterfaceDeclaration_0")) return false; macroClassList(b, l + 1); return true; } // externAndMaybePrivate? private static boolean externInterfaceDeclaration_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "externInterfaceDeclaration_1")) return false; externAndMaybePrivate(b, l + 1); return true; } // genericParam? private static boolean externInterfaceDeclaration_4(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "externInterfaceDeclaration_4")) return false; genericParam(b, l + 1); return true; } // inheritList? private static boolean externInterfaceDeclaration_5(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "externInterfaceDeclaration_5")) return false; inheritList(b, l + 1); return true; } /* ********************************************************** */ // 'extern' public static boolean externKeyWord(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "externKeyWord")) return false; if (!nextTokenIs(b, KEXTERN)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KEXTERN); exit_section_(b, m, EXTERN_KEY_WORD, r); return r; } /* ********************************************************** */ // externPrivate | privateExtern | privateKeyWord | externKeyWord static boolean externOrPrivate(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "externOrPrivate")) return false; if (!nextTokenIs(b, "", KEXTERN, KPRIVATE)) return false; boolean r; Marker m = enter_section_(b); r = externPrivate(b, l + 1); if (!r) r = privateExtern(b, l + 1); if (!r) r = privateKeyWord(b, l + 1); if (!r) r = externKeyWord(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // externKeyWord privateKeyWord static boolean externPrivate(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "externPrivate")) return false; if (!nextTokenIs(b, KEXTERN)) return false; boolean r; Marker m = enter_section_(b); r = externKeyWord(b, l + 1); r = r && privateKeyWord(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // !(pptoken | metaKeyWord | 'dynamic' | 'function' | 'inline' | 'override' | 'private' | 'public' | 'static' | 'var' | '}') static boolean extern_class_body_part_recover(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "extern_class_body_part_recover")) return false; boolean r; Marker m = enter_section_(b, l, _NOT_, null); r = !extern_class_body_part_recover_0(b, l + 1); exit_section_(b, l, m, null, r, false, null); return r; } // pptoken | metaKeyWord | 'dynamic' | 'function' | 'inline' | 'override' | 'private' | 'public' | 'static' | 'var' | '}' private static boolean extern_class_body_part_recover_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "extern_class_body_part_recover_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, PPTOKEN); if (!r) r = metaKeyWord(b, l + 1); if (!r) r = consumeToken(b, KDYNAMIC); if (!r) r = consumeToken(b, KFUNCTION); if (!r) r = consumeToken(b, KINLINE); if (!r) r = consumeToken(b, KOVERRIDE); if (!r) r = consumeToken(b, KPRIVATE); if (!r) r = consumeToken(b, KPUBLIC); if (!r) r = consumeToken(b, KSTATIC); if (!r) r = consumeToken(b, KVAR); if (!r) r = consumeToken(b, PRCURLY); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // '@:fakeEnum' '(' type ')' public static boolean fakeEnumMeta(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "fakeEnumMeta")) return false; if (!nextTokenIs(b, KFAKEENUM)) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, null); r = consumeToken(b, KFAKEENUM); p = r; // pin = 1 r = r && report_error_(b, consumeToken(b, PLPAREN)); r = p && report_error_(b, type(b, l + 1)) && r; r = p && consumeToken(b, PRPAREN) && r; exit_section_(b, l, m, FAKE_ENUM_META, r, p, null); return r || p; } /* ********************************************************** */ // '=>' assignExpressionWrapper public static boolean fatArrowExpression(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "fatArrowExpression")) return false; if (!nextTokenIs(b, OFAT_ARROW)) return false; boolean r, p; Marker m = enter_section_(b, l, _LEFT_, null); r = consumeToken(b, OFAT_ARROW); p = r; // pin = 1 r = r && assignExpressionWrapper(b, l + 1); exit_section_(b, l, m, FAT_ARROW_EXPRESSION, r, p, null); return r || p; } /* ********************************************************** */ // assignExpressionWrapper fatArrowExpression* static boolean fatArrowExpressionWrapper(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "fatArrowExpressionWrapper")) return false; boolean r; Marker m = enter_section_(b); r = assignExpressionWrapper(b, l + 1); r = r && fatArrowExpressionWrapper_1(b, l + 1); exit_section_(b, m, null, r); return r; } // fatArrowExpression* private static boolean fatArrowExpressionWrapper_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "fatArrowExpressionWrapper_1")) return false; int c = current_position_(b); while (true) { if (!fatArrowExpression(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "fatArrowExpressionWrapper_1", c)) break; c = current_position_(b); } return true; } /* ********************************************************** */ // '@:final' public static boolean finalMeta(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "finalMeta")) return false; if (!nextTokenIs(b, KFINAL)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KFINAL); exit_section_(b, m, FINAL_META, r); return r; } /* ********************************************************** */ // 'for' '(' componentName 'in' iterable')' statement ';'? public static boolean forStatement(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "forStatement")) return false; if (!nextTokenIs(b, KFOR)) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, null); r = consumeToken(b, KFOR); p = r; // pin = 1 r = r && report_error_(b, consumeToken(b, PLPAREN)); r = p && report_error_(b, componentName(b, l + 1)) && r; r = p && report_error_(b, consumeToken(b, OIN)) && r; r = p && report_error_(b, iterable(b, l + 1)) && r; r = p && report_error_(b, consumeToken(b, PRPAREN)) && r; r = p && report_error_(b, statement(b, l + 1)) && r; r = p && forStatement_7(b, l + 1) && r; exit_section_(b, l, m, FOR_STATEMENT, r, p, null); return r || p; } // ';'? private static boolean forStatement_7(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "forStatement_7")) return false; consumeToken(b, OSEMI); return true; } /* ********************************************************** */ // blockStatement | returnStatement | (expression ';'?) | throwStatement | ifStatement | forStatement | whileStatement | doWhileStatement static boolean functionCommonBody(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "functionCommonBody")) return false; boolean r; Marker m = enter_section_(b); r = blockStatement(b, l + 1); if (!r) r = returnStatement(b, l + 1); if (!r) r = functionCommonBody_2(b, l + 1); if (!r) r = throwStatement(b, l + 1); if (!r) r = ifStatement(b, l + 1); if (!r) r = forStatement(b, l + 1); if (!r) r = whileStatement(b, l + 1); if (!r) r = doWhileStatement(b, l + 1); exit_section_(b, m, null, r); return r; } // expression ';'? private static boolean functionCommonBody_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "functionCommonBody_2")) return false; boolean r; Marker m = enter_section_(b); r = expression(b, l + 1); r = r && functionCommonBody_2_1(b, l + 1); exit_section_(b, m, null, r); return r; } // ';'? private static boolean functionCommonBody_2_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "functionCommonBody_2_1")) return false; consumeToken(b, OSEMI); return true; } /* ********************************************************** */ // (functionMacroMember | declarationAttribute)* 'function' (constructorName | componentName) genericParam? '(' parameterList ')' typeTag? 'untyped'? functionCommonBody public static boolean functionDeclarationWithAttributes(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "functionDeclarationWithAttributes")) return false; if (!nextTokenIs(b, "<function declaration with attributes>", KAUTOBUILD, KBUILD, KDEBUG, KFINAL, KGETTER, KKEEP, KMACRO, KMETA, KNODEBUG, KNS, KOVERLOAD, KPROTECTED, KREQUIRE, KSETTER, KDYNAMIC, KFUNCTION, KINLINE, KMACRO2, KOVERRIDE, KPRIVATE, KPUBLIC, KSTATIC, MACRO_ID)) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, "<function declaration with attributes>"); r = functionDeclarationWithAttributes_0(b, l + 1); r = r && consumeToken(b, KFUNCTION); r = r && functionDeclarationWithAttributes_2(b, l + 1); p = r; // pin = 3 r = r && report_error_(b, functionDeclarationWithAttributes_3(b, l + 1)); r = p && report_error_(b, consumeToken(b, PLPAREN)) && r; r = p && report_error_(b, parameterList(b, l + 1)) && r; r = p && report_error_(b, consumeToken(b, PRPAREN)) && r; r = p && report_error_(b, functionDeclarationWithAttributes_7(b, l + 1)) && r; r = p && report_error_(b, functionDeclarationWithAttributes_8(b, l + 1)) && r; r = p && functionCommonBody(b, l + 1) && r; exit_section_(b, l, m, FUNCTION_DECLARATION_WITH_ATTRIBUTES, r, p, null); return r || p; } // (functionMacroMember | declarationAttribute)* private static boolean functionDeclarationWithAttributes_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "functionDeclarationWithAttributes_0")) return false; int c = current_position_(b); while (true) { if (!functionDeclarationWithAttributes_0_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "functionDeclarationWithAttributes_0", c)) break; c = current_position_(b); } return true; } // functionMacroMember | declarationAttribute private static boolean functionDeclarationWithAttributes_0_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "functionDeclarationWithAttributes_0_0")) return false; boolean r; Marker m = enter_section_(b); r = functionMacroMember(b, l + 1); if (!r) r = declarationAttribute(b, l + 1); exit_section_(b, m, null, r); return r; } // constructorName | componentName private static boolean functionDeclarationWithAttributes_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "functionDeclarationWithAttributes_2")) return false; boolean r; Marker m = enter_section_(b); r = constructorName(b, l + 1); if (!r) r = componentName(b, l + 1); exit_section_(b, m, null, r); return r; } // genericParam? private static boolean functionDeclarationWithAttributes_3(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "functionDeclarationWithAttributes_3")) return false; genericParam(b, l + 1); return true; } // typeTag? private static boolean functionDeclarationWithAttributes_7(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "functionDeclarationWithAttributes_7")) return false; typeTag(b, l + 1); return true; } // 'untyped'? private static boolean functionDeclarationWithAttributes_8(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "functionDeclarationWithAttributes_8")) return false; consumeToken(b, KUNTYPED); return true; } /* ********************************************************** */ // 'function' '(' parameterList ')' typeTag? 'untyped'? functionCommonBody public static boolean functionLiteral(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "functionLiteral")) return false; if (!nextTokenIs(b, KFUNCTION)) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, null); r = consumeToken(b, KFUNCTION); r = r && consumeToken(b, PLPAREN); p = r; // pin = 2 r = r && report_error_(b, parameterList(b, l + 1)); r = p && report_error_(b, consumeToken(b, PRPAREN)) && r; r = p && report_error_(b, functionLiteral_4(b, l + 1)) && r; r = p && report_error_(b, functionLiteral_5(b, l + 1)) && r; r = p && functionCommonBody(b, l + 1) && r; exit_section_(b, l, m, FUNCTION_LITERAL, r, p, null); return r || p; } // typeTag? private static boolean functionLiteral_4(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "functionLiteral_4")) return false; typeTag(b, l + 1); return true; } // 'untyped'? private static boolean functionLiteral_5(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "functionLiteral_5")) return false; consumeToken(b, KUNTYPED); return true; } /* ********************************************************** */ // finalMeta | macroMember | overloadMeta static boolean functionMacroMember(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "functionMacroMember")) return false; if (!nextTokenIs(b, "", KAUTOBUILD, KBUILD, KDEBUG, KFINAL, KGETTER, KKEEP, KMACRO, KMETA, KNODEBUG, KNS, KOVERLOAD, KPROTECTED, KREQUIRE, KSETTER, MACRO_ID)) return false; boolean r; Marker m = enter_section_(b); r = finalMeta(b, l + 1); if (!r) r = macroMember(b, l + 1); if (!r) r = overloadMeta(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // (functionMacroMember| declarationAttribute)* 'function' (constructorName | componentName) genericParam? '(' parameterList ')' typeTag? 'untyped'? ';' public static boolean functionPrototypeDeclarationWithAttributes(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "functionPrototypeDeclarationWithAttributes")) return false; if (!nextTokenIs(b, "<function prototype declaration with attributes>", KAUTOBUILD, KBUILD, KDEBUG, KFINAL, KGETTER, KKEEP, KMACRO, KMETA, KNODEBUG, KNS, KOVERLOAD, KPROTECTED, KREQUIRE, KSETTER, KDYNAMIC, KFUNCTION, KINLINE, KMACRO2, KOVERRIDE, KPRIVATE, KPUBLIC, KSTATIC, MACRO_ID)) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, "<function prototype declaration with attributes>"); r = functionPrototypeDeclarationWithAttributes_0(b, l + 1); r = r && consumeToken(b, KFUNCTION); r = r && functionPrototypeDeclarationWithAttributes_2(b, l + 1); p = r; // pin = 3 r = r && report_error_(b, functionPrototypeDeclarationWithAttributes_3(b, l + 1)); r = p && report_error_(b, consumeToken(b, PLPAREN)) && r; r = p && report_error_(b, parameterList(b, l + 1)) && r; r = p && report_error_(b, consumeToken(b, PRPAREN)) && r; r = p && report_error_(b, functionPrototypeDeclarationWithAttributes_7(b, l + 1)) && r; r = p && report_error_(b, functionPrototypeDeclarationWithAttributes_8(b, l + 1)) && r; r = p && consumeToken(b, OSEMI) && r; exit_section_(b, l, m, FUNCTION_PROTOTYPE_DECLARATION_WITH_ATTRIBUTES, r, p, null); return r || p; } // (functionMacroMember| declarationAttribute)* private static boolean functionPrototypeDeclarationWithAttributes_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "functionPrototypeDeclarationWithAttributes_0")) return false; int c = current_position_(b); while (true) { if (!functionPrototypeDeclarationWithAttributes_0_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "functionPrototypeDeclarationWithAttributes_0", c)) break; c = current_position_(b); } return true; } // functionMacroMember| declarationAttribute private static boolean functionPrototypeDeclarationWithAttributes_0_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "functionPrototypeDeclarationWithAttributes_0_0")) return false; boolean r; Marker m = enter_section_(b); r = functionMacroMember(b, l + 1); if (!r) r = declarationAttribute(b, l + 1); exit_section_(b, m, null, r); return r; } // constructorName | componentName private static boolean functionPrototypeDeclarationWithAttributes_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "functionPrototypeDeclarationWithAttributes_2")) return false; boolean r; Marker m = enter_section_(b); r = constructorName(b, l + 1); if (!r) r = componentName(b, l + 1); exit_section_(b, m, null, r); return r; } // genericParam? private static boolean functionPrototypeDeclarationWithAttributes_3(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "functionPrototypeDeclarationWithAttributes_3")) return false; genericParam(b, l + 1); return true; } // typeTag? private static boolean functionPrototypeDeclarationWithAttributes_7(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "functionPrototypeDeclarationWithAttributes_7")) return false; typeTag(b, l + 1); return true; } // 'untyped'? private static boolean functionPrototypeDeclarationWithAttributes_8(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "functionPrototypeDeclarationWithAttributes_8")) return false; consumeToken(b, KUNTYPED); return true; } /* ********************************************************** */ // '->' '?'? typeOrAnonymous public static boolean functionType(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "functionType")) return false; if (!nextTokenIs(b, OARROW)) return false; boolean r; Marker m = enter_section_(b, l, _LEFT_, null); r = consumeToken(b, OARROW); r = r && functionType_1(b, l + 1); r = r && typeOrAnonymous(b, l + 1); exit_section_(b, l, m, FUNCTION_TYPE, r, false, null); return r; } // '?'? private static boolean functionType_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "functionType_1")) return false; consumeToken(b, OQUEST); return true; } /* ********************************************************** */ // typeOrAnonymous | '(' functionTypeWrapper ')' static boolean functionTypeOrWrapper(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "functionTypeOrWrapper")) return false; if (!nextTokenIs(b, "", PLPAREN, PLCURLY, ID)) return false; boolean r; Marker m = enter_section_(b); r = typeOrAnonymous(b, l + 1); if (!r) r = functionTypeOrWrapper_1(b, l + 1); exit_section_(b, m, null, r); return r; } // '(' functionTypeWrapper ')' private static boolean functionTypeOrWrapper_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "functionTypeOrWrapper_1")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, PLPAREN); r = r && functionTypeWrapper(b, l + 1); r = r && consumeToken(b, PRPAREN); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // functionTypeOrWrapper functionType* static boolean functionTypeWrapper(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "functionTypeWrapper")) return false; if (!nextTokenIs(b, "", PLPAREN, PLCURLY, ID)) return false; boolean r; Marker m = enter_section_(b); r = functionTypeOrWrapper(b, l + 1); r = r && functionTypeWrapper_1(b, l + 1); exit_section_(b, m, null, r); return r; } // functionType* private static boolean functionTypeWrapper_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "functionTypeWrapper_1")) return false; int c = current_position_(b); while (true) { if (!functionType(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "functionTypeWrapper_1", c)) break; c = current_position_(b); } return true; } /* ********************************************************** */ // componentName (':' ('(' typeList ')' | typeListPart))? public static boolean genericListPart(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "genericListPart")) return false; if (!nextTokenIs(b, ID)) return false; boolean r; Marker m = enter_section_(b); r = componentName(b, l + 1); r = r && genericListPart_1(b, l + 1); exit_section_(b, m, GENERIC_LIST_PART, r); return r; } // (':' ('(' typeList ')' | typeListPart))? private static boolean genericListPart_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "genericListPart_1")) return false; genericListPart_1_0(b, l + 1); return true; } // ':' ('(' typeList ')' | typeListPart) private static boolean genericListPart_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "genericListPart_1_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OCOLON); r = r && genericListPart_1_0_1(b, l + 1); exit_section_(b, m, null, r); return r; } // '(' typeList ')' | typeListPart private static boolean genericListPart_1_0_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "genericListPart_1_0_1")) return false; boolean r; Marker m = enter_section_(b); r = genericListPart_1_0_1_0(b, l + 1); if (!r) r = typeListPart(b, l + 1); exit_section_(b, m, null, r); return r; } // '(' typeList ')' private static boolean genericListPart_1_0_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "genericListPart_1_0_1_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, PLPAREN); r = r && typeList(b, l + 1); r = r && consumeToken(b, PRPAREN); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // '<' genericListPart (',' genericListPart)* '>' public static boolean genericParam(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "genericParam")) return false; if (!nextTokenIs(b, OLESS)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OLESS); r = r && genericListPart(b, l + 1); r = r && genericParam_2(b, l + 1); r = r && consumeToken(b, OGREATER); exit_section_(b, m, GENERIC_PARAM, r); return r; } // (',' genericListPart)* private static boolean genericParam_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "genericParam_2")) return false; int c = current_position_(b); while (true) { if (!genericParam_2_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "genericParam_2", c)) break; c = current_position_(b); } return true; } // ',' genericListPart private static boolean genericParam_2_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "genericParam_2_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OCOMMA); r = r && genericListPart(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // '@:getter' '(' referenceExpression ')' public static boolean getterMeta(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "getterMeta")) return false; if (!nextTokenIs(b, KGETTER)) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, null); r = consumeToken(b, KGETTER); p = r; // pin = 1 r = r && report_error_(b, consumeToken(b, PLPAREN)); r = p && report_error_(b, referenceExpression(b, l + 1)) && r; r = p && consumeToken(b, PRPAREN) && r; exit_section_(b, l, m, GETTER_META, r, p, null); return r || p; } /* ********************************************************** */ // '@:hack' public static boolean hackMeta(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "hackMeta")) return false; if (!nextTokenIs(b, KHACK)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KHACK); exit_section_(b, m, HACK_META, r); return r; } /* ********************************************************** */ // packageStatement? topLevelList static boolean haxeFile(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "haxeFile")) return false; boolean r; Marker m = enter_section_(b); r = haxeFile_0(b, l + 1); r = r && topLevelList(b, l + 1); exit_section_(b, m, null, r); return r; } // packageStatement? private static boolean haxeFile_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "haxeFile_0")) return false; packageStatement(b, l + 1); 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; } /* ********************************************************** */ // 'if' '(' expression ')' statement ';'? ('else' statement ';'?)? public static boolean ifStatement(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ifStatement")) return false; if (!nextTokenIs(b, KIF)) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, null); r = consumeToken(b, KIF); p = r; // pin = 1 r = r && report_error_(b, consumeToken(b, PLPAREN)); r = p && report_error_(b, expression(b, l + 1)) && r; r = p && report_error_(b, consumeToken(b, PRPAREN)) && r; r = p && report_error_(b, statement(b, l + 1)) && r; r = p && report_error_(b, ifStatement_5(b, l + 1)) && r; r = p && ifStatement_6(b, l + 1) && r; exit_section_(b, l, m, IF_STATEMENT, r, p, null); return r || p; } // ';'? private static boolean ifStatement_5(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ifStatement_5")) return false; consumeToken(b, OSEMI); return true; } // ('else' statement ';'?)? private static boolean ifStatement_6(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ifStatement_6")) return false; ifStatement_6_0(b, l + 1); return true; } // 'else' statement ';'? private static boolean ifStatement_6_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ifStatement_6_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KELSE); r = r && statement(b, l + 1); r = r && ifStatement_6_0_2(b, l + 1); exit_section_(b, m, null, r); return r; } // ';'? private static boolean ifStatement_6_0_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ifStatement_6_0_2")) return false; consumeToken(b, OSEMI); return true; } /* ********************************************************** */ // ('implements' type)+ public static boolean implementsDeclaration(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "implementsDeclaration")) return false; if (!nextTokenIs(b, KIMPLEMENTS)) return false; boolean r; Marker m = enter_section_(b); r = implementsDeclaration_0(b, l + 1); int c = current_position_(b); while (r) { if (!implementsDeclaration_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "implementsDeclaration", c)) break; c = current_position_(b); } exit_section_(b, m, IMPLEMENTS_DECLARATION, r); return r; } // 'implements' type private static boolean implementsDeclaration_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "implementsDeclaration_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KIMPLEMENTS); r = r && type(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // importStatementWithWildcard | importStatementWithInSupport | importStatementRegular static boolean importStatementAll(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "importStatementAll")) return false; if (!nextTokenIs(b, KIMPORT)) return false; boolean r; Marker m = enter_section_(b); r = importStatementWithWildcard(b, l + 1); if (!r) r = importStatementWithInSupport(b, l + 1); if (!r) r = importStatementRegular(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // 'import' simpleQualifiedReferenceExpression ';' public static boolean importStatementRegular(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "importStatementRegular")) return false; if (!nextTokenIs(b, KIMPORT)) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, null); r = consumeToken(b, KIMPORT); p = r; // pin = 1 r = r && report_error_(b, simpleQualifiedReferenceExpression(b, l + 1)); r = p && consumeToken(b, OSEMI) && r; exit_section_(b, l, m, IMPORT_STATEMENT_REGULAR, r, p, null); return r || p; } /* ********************************************************** */ // 'import' simpleQualifiedReferenceExpression ('in' | 'as') identifier';' public static boolean importStatementWithInSupport(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "importStatementWithInSupport")) return false; if (!nextTokenIs(b, KIMPORT)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KIMPORT); r = r && simpleQualifiedReferenceExpression(b, l + 1); r = r && importStatementWithInSupport_2(b, l + 1); r = r && identifier(b, l + 1); r = r && consumeToken(b, OSEMI); exit_section_(b, m, IMPORT_STATEMENT_WITH_IN_SUPPORT, r); return r; } // 'in' | 'as' private static boolean importStatementWithInSupport_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "importStatementWithInSupport_2")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OIN); if (!r) r = consumeToken(b, "as"); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // 'import' simpleQualifiedReferenceExpressionWithWildcardSupport ';' public static boolean importStatementWithWildcard(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "importStatementWithWildcard")) return false; if (!nextTokenIs(b, KIMPORT)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KIMPORT); r = r && simpleQualifiedReferenceExpressionWithWildcardSupport(b, l + 1); r = r && consumeToken(b, OSEMI); exit_section_(b, m, IMPORT_STATEMENT_WITH_WILDCARD, r); return r; } /* ********************************************************** */ // extendsDeclaration | implementsDeclaration static boolean inherit(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "inherit")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, null); r = extendsDeclaration(b, l + 1); if (!r) r = implementsDeclaration(b, l + 1); exit_section_(b, l, m, null, r, false, inherit_recover_parser_); return r; } /* ********************************************************** */ // inherit (','? inherit)* public static boolean inheritList(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "inheritList")) return false; if (!nextTokenIs(b, "<inherit list>", KEXTENDS, KIMPLEMENTS)) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<inherit list>"); r = inherit(b, l + 1); r = r && inheritList_1(b, l + 1); exit_section_(b, l, m, INHERIT_LIST, r, false, null); return r; } // (','? inherit)* private static boolean inheritList_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "inheritList_1")) return false; int c = current_position_(b); while (true) { if (!inheritList_1_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "inheritList_1", c)) break; c = current_position_(b); } return true; } // ','? inherit private static boolean inheritList_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "inheritList_1_0")) return false; boolean r; Marker m = enter_section_(b); r = inheritList_1_0_0(b, l + 1); r = r && inherit(b, l + 1); exit_section_(b, m, null, r); return r; } // ','? private static boolean inheritList_1_0_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "inheritList_1_0_0")) return false; consumeToken(b, OCOMMA); return true; } /* ********************************************************** */ // !(',' | '{' | 'extends' | 'implements') static boolean inherit_recover(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "inherit_recover")) return false; boolean r; Marker m = enter_section_(b, l, _NOT_, null); r = !inherit_recover_0(b, l + 1); exit_section_(b, l, m, null, r, false, null); return r; } // ',' | '{' | 'extends' | 'implements' private static boolean inherit_recover_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "inherit_recover_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OCOMMA); if (!r) r = consumeToken(b, PLCURLY); if (!r) r = consumeToken(b, KEXTENDS); if (!r) r = consumeToken(b, KIMPLEMENTS); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // interfaceBodyPart* public static boolean interfaceBody(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "interfaceBody")) return false; Marker m = enter_section_(b, l, _NONE_, "<interface body>"); int c = current_position_(b); while (true) { if (!interfaceBodyPart(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "interfaceBody", c)) break; c = current_position_(b); } exit_section_(b, l, m, INTERFACE_BODY, true, false, null); return true; } /* ********************************************************** */ // varDeclaration | functionPrototypeDeclarationWithAttributes static boolean interfaceBodyPart(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "interfaceBodyPart")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, null); r = varDeclaration(b, l + 1); if (!r) r = functionPrototypeDeclarationWithAttributes(b, l + 1); exit_section_(b, l, m, null, r, false, interface_body_part_recover_parser_); return r; } /* ********************************************************** */ // macroClassList? privateKeyWord? 'interface' componentName genericParam? inheritList? '{' interfaceBody '}' public static boolean interfaceDeclaration(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "interfaceDeclaration")) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, "<interface declaration>"); r = interfaceDeclaration_0(b, l + 1); r = r && interfaceDeclaration_1(b, l + 1); r = r && consumeToken(b, KINTERFACE); p = r; // pin = 3 r = r && report_error_(b, componentName(b, l + 1)); r = p && report_error_(b, interfaceDeclaration_4(b, l + 1)) && r; r = p && report_error_(b, interfaceDeclaration_5(b, l + 1)) && r; r = p && report_error_(b, consumeToken(b, PLCURLY)) && r; r = p && report_error_(b, interfaceBody(b, l + 1)) && r; r = p && consumeToken(b, PRCURLY) && r; exit_section_(b, l, m, INTERFACE_DECLARATION, r, p, null); return r || p; } // macroClassList? private static boolean interfaceDeclaration_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "interfaceDeclaration_0")) return false; macroClassList(b, l + 1); return true; } // privateKeyWord? private static boolean interfaceDeclaration_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "interfaceDeclaration_1")) return false; privateKeyWord(b, l + 1); return true; } // genericParam? private static boolean interfaceDeclaration_4(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "interfaceDeclaration_4")) return false; genericParam(b, l + 1); return true; } // inheritList? private static boolean interfaceDeclaration_5(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "interfaceDeclaration_5")) return false; inheritList(b, l + 1); return true; } /* ********************************************************** */ // !(ppToken | metaKeyWord | 'dynamic' | 'function' | 'inline' | 'override' | 'private' | 'public' | 'static' | 'var' | '}') static boolean interface_body_part_recover(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "interface_body_part_recover")) return false; boolean r; Marker m = enter_section_(b, l, _NOT_, null); r = !interface_body_part_recover_0(b, l + 1); exit_section_(b, l, m, null, r, false, null); return r; } // ppToken | metaKeyWord | 'dynamic' | 'function' | 'inline' | 'override' | 'private' | 'public' | 'static' | 'var' | '}' private static boolean interface_body_part_recover_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "interface_body_part_recover_0")) return false; boolean r; Marker m = enter_section_(b); r = ppToken(b, l + 1); if (!r) r = metaKeyWord(b, l + 1); if (!r) r = consumeToken(b, KDYNAMIC); if (!r) r = consumeToken(b, KFUNCTION); if (!r) r = consumeToken(b, KINLINE); if (!r) r = consumeToken(b, KOVERRIDE); if (!r) r = consumeToken(b, KPRIVATE); if (!r) r = consumeToken(b, KPUBLIC); if (!r) r = consumeToken(b, KSTATIC); if (!r) r = consumeToken(b, KVAR); if (!r) r = consumeToken(b, PRCURLY); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // expression public static boolean iterable(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "iterable")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<iterable>"); r = expression(b, l + 1); exit_section_(b, l, m, ITERABLE, r, false, null); return r; } /* ********************************************************** */ // '...' ternaryExpressionWrapper public static boolean iteratorExpression(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "iteratorExpression")) return false; if (!nextTokenIs(b, OTRIPLE_DOT)) return false; boolean r, p; Marker m = enter_section_(b, l, _LEFT_, null); r = consumeToken(b, OTRIPLE_DOT); p = r; // pin = 1 r = r && ternaryExpressionWrapper(b, l + 1); exit_section_(b, l, m, ITERATOR_EXPRESSION, r, p, null); return r || p; } /* ********************************************************** */ // ternaryExpressionWrapper iteratorExpression? static boolean iteratorExpressionWrapper(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "iteratorExpressionWrapper")) return false; boolean r; Marker m = enter_section_(b); r = ternaryExpressionWrapper(b, l + 1); r = r && iteratorExpressionWrapper_1(b, l + 1); exit_section_(b, m, null, r); return r; } // iteratorExpression? private static boolean iteratorExpressionWrapper_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "iteratorExpressionWrapper_1")) return false; iteratorExpression(b, l + 1); return true; } /* ********************************************************** */ // "@:jsRequire" '(' stringLiteralExpression ')' public static boolean jsRequireMeta(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "jsRequireMeta")) return false; if (!nextTokenIs(b, KJSREQUIRE)) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, null); r = consumeToken(b, KJSREQUIRE); p = r; // pin = 1 r = r && report_error_(b, consumeToken(b, PLPAREN)); r = p && report_error_(b, stringLiteralExpression(b, l + 1)) && r; r = p && consumeToken(b, PRPAREN) && r; exit_section_(b, l, m, JS_REQUIRE_META, r, p, null); return r || p; } /* ********************************************************** */ // '@:keep' public static boolean keepMeta(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "keepMeta")) return false; if (!nextTokenIs(b, KKEEP)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KKEEP); exit_section_(b, m, KEEP_META, r); return r; } /* ********************************************************** */ // LITINT | LITHEX | LITOCT | LITFLOAT // | regularExpressionLiteral // | 'null' | 'true' | 'false' // | functionLiteral // | arrayLiteral // | objectLiteral // | stringLiteralExpression public static boolean literalExpression(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "literalExpression")) return false; if (!nextTokenIs(b, "<literal expression>", PLBRACK, KFALSE, KFUNCTION, KNULL, KTRUE, PLCURLY, LITFLOAT, LITHEX, LITINT, LITOCT, OPEN_QUOTE, REG_EXP)) return false; boolean r; Marker m = enter_section_(b, l, _COLLAPSE_, "<literal expression>"); r = consumeToken(b, LITINT); if (!r) r = consumeToken(b, LITHEX); if (!r) r = consumeToken(b, LITOCT); if (!r) r = consumeToken(b, LITFLOAT); if (!r) r = regularExpressionLiteral(b, l + 1); if (!r) r = consumeToken(b, KNULL); if (!r) r = consumeToken(b, KTRUE); if (!r) r = consumeToken(b, KFALSE); if (!r) r = functionLiteral(b, l + 1); if (!r) r = arrayLiteral(b, l + 1); if (!r) r = objectLiteral(b, l + 1); if (!r) r = stringLiteralExpression(b, l + 1); exit_section_(b, l, m, LITERAL_EXPRESSION, r, false, null); return r; } /* ********************************************************** */ // localFunctionDeclarationAttribute? 'function' componentName genericParam? '(' parameterList? ')' typeTag? 'untyped'? functionCommonBody public static boolean localFunctionDeclaration(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "localFunctionDeclaration")) return false; if (!nextTokenIs(b, "<local function declaration>", KFUNCTION, KINLINE)) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, "<local function declaration>"); r = localFunctionDeclaration_0(b, l + 1); r = r && consumeToken(b, KFUNCTION); p = r; // pin = 2 r = r && report_error_(b, componentName(b, l + 1)); r = p && report_error_(b, localFunctionDeclaration_3(b, l + 1)) && r; r = p && report_error_(b, consumeToken(b, PLPAREN)) && r; r = p && report_error_(b, localFunctionDeclaration_5(b, l + 1)) && r; r = p && report_error_(b, consumeToken(b, PRPAREN)) && r; r = p && report_error_(b, localFunctionDeclaration_7(b, l + 1)) && r; r = p && report_error_(b, localFunctionDeclaration_8(b, l + 1)) && r; r = p && functionCommonBody(b, l + 1) && r; exit_section_(b, l, m, LOCAL_FUNCTION_DECLARATION, r, p, null); return r || p; } // localFunctionDeclarationAttribute? private static boolean localFunctionDeclaration_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "localFunctionDeclaration_0")) return false; localFunctionDeclarationAttribute(b, l + 1); return true; } // genericParam? private static boolean localFunctionDeclaration_3(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "localFunctionDeclaration_3")) return false; genericParam(b, l + 1); return true; } // parameterList? private static boolean localFunctionDeclaration_5(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "localFunctionDeclaration_5")) return false; parameterList(b, l + 1); return true; } // typeTag? private static boolean localFunctionDeclaration_7(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "localFunctionDeclaration_7")) return false; typeTag(b, l + 1); return true; } // 'untyped'? private static boolean localFunctionDeclaration_8(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "localFunctionDeclaration_8")) return false; consumeToken(b, KUNTYPED); return true; } /* ********************************************************** */ // 'inline' static boolean localFunctionDeclarationAttribute(PsiBuilder b, int l) { return consumeToken(b, KINLINE); } /* ********************************************************** */ // 'var' localVarDeclarationPartList ';'? public static boolean localVarDeclaration(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "localVarDeclaration")) return false; if (!nextTokenIs(b, KVAR)) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, null); r = consumeToken(b, KVAR); r = r && localVarDeclarationPartList(b, l + 1); p = r; // pin = 2 r = r && localVarDeclaration_2(b, l + 1); exit_section_(b, l, m, LOCAL_VAR_DECLARATION, r, p, null); return r || p; } // ';'? private static boolean localVarDeclaration_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "localVarDeclaration_2")) return false; consumeToken(b, OSEMI); return true; } /* ********************************************************** */ // componentName propertyDeclaration? typeTag? varInit? public static boolean localVarDeclarationPart(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "localVarDeclarationPart")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<local var declaration part>"); r = componentName(b, l + 1); r = r && localVarDeclarationPart_1(b, l + 1); r = r && localVarDeclarationPart_2(b, l + 1); r = r && localVarDeclarationPart_3(b, l + 1); exit_section_(b, l, m, LOCAL_VAR_DECLARATION_PART, r, false, local_var_declaration_part_recover_parser_); return r; } // propertyDeclaration? private static boolean localVarDeclarationPart_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "localVarDeclarationPart_1")) return false; propertyDeclaration(b, l + 1); return true; } // typeTag? private static boolean localVarDeclarationPart_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "localVarDeclarationPart_2")) return false; typeTag(b, l + 1); return true; } // varInit? private static boolean localVarDeclarationPart_3(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "localVarDeclarationPart_3")) return false; varInit(b, l + 1); return true; } /* ********************************************************** */ // localVarDeclarationPart (',' localVarDeclarationPart)* static boolean localVarDeclarationPartList(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "localVarDeclarationPartList")) return false; if (!nextTokenIs(b, ID)) return false; boolean r; Marker m = enter_section_(b); r = localVarDeclarationPart(b, l + 1); r = r && localVarDeclarationPartList_1(b, l + 1); exit_section_(b, m, null, r); return r; } // (',' localVarDeclarationPart)* private static boolean localVarDeclarationPartList_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "localVarDeclarationPartList_1")) return false; int c = current_position_(b); while (true) { if (!localVarDeclarationPartList_1_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "localVarDeclarationPartList_1", c)) break; c = current_position_(b); } return true; } // ',' localVarDeclarationPart private static boolean localVarDeclarationPartList_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "localVarDeclarationPartList_1_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OCOMMA); r = r && localVarDeclarationPart(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // !('!' | ppToken | '(' | ')' | '++' | ',' | '-' | '--' | ';' | '[' | 'break' | 'case' | 'cast' | 'continue' | 'default' | 'do' | 'else' | 'false' | 'for' | 'function' | 'if' | 'new' | 'null' | 'return' | 'super' | 'switch' | 'this' | 'throw' | 'true' | 'try' | 'untyped' | 'var' | 'while' | '{' | '}' | '~' | ID | OPEN_QUOTE | LITFLOAT | LITHEX | LITINT | LITOCT | REG_EXP) static boolean local_var_declaration_part_recover(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "local_var_declaration_part_recover")) return false; boolean r; Marker m = enter_section_(b, l, _NOT_, null); r = !local_var_declaration_part_recover_0(b, l + 1); exit_section_(b, l, m, null, r, false, null); return r; } // '!' | ppToken | '(' | ')' | '++' | ',' | '-' | '--' | ';' | '[' | 'break' | 'case' | 'cast' | 'continue' | 'default' | 'do' | 'else' | 'false' | 'for' | 'function' | 'if' | 'new' | 'null' | 'return' | 'super' | 'switch' | 'this' | 'throw' | 'true' | 'try' | 'untyped' | 'var' | 'while' | '{' | '}' | '~' | ID | OPEN_QUOTE | LITFLOAT | LITHEX | LITINT | LITOCT | REG_EXP private static boolean local_var_declaration_part_recover_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "local_var_declaration_part_recover_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, ONOT); if (!r) r = ppToken(b, l + 1); if (!r) r = consumeToken(b, PLPAREN); if (!r) r = consumeToken(b, PRPAREN); if (!r) r = consumeToken(b, OPLUS_PLUS); if (!r) r = consumeToken(b, OCOMMA); if (!r) r = consumeToken(b, OMINUS); if (!r) r = consumeToken(b, OMINUS_MINUS); if (!r) r = consumeToken(b, OSEMI); if (!r) r = consumeToken(b, PLBRACK); if (!r) r = consumeToken(b, KBREAK); if (!r) r = consumeToken(b, KCASE); if (!r) r = consumeToken(b, KCAST); if (!r) r = consumeToken(b, KCONTINUE); if (!r) r = consumeToken(b, KDEFAULT); if (!r) r = consumeToken(b, KDO); if (!r) r = consumeToken(b, KELSE); if (!r) r = consumeToken(b, KFALSE); if (!r) r = consumeToken(b, KFOR); if (!r) r = consumeToken(b, KFUNCTION); if (!r) r = consumeToken(b, KIF); if (!r) r = consumeToken(b, ONEW); if (!r) r = consumeToken(b, KNULL); if (!r) r = consumeToken(b, KRETURN); if (!r) r = consumeToken(b, KSUPER); if (!r) r = consumeToken(b, KSWITCH); if (!r) r = consumeToken(b, KTHIS); if (!r) r = consumeToken(b, KTHROW); if (!r) r = consumeToken(b, KTRUE); if (!r) r = consumeToken(b, KTRY); if (!r) r = consumeToken(b, KUNTYPED); if (!r) r = consumeToken(b, KVAR); if (!r) r = consumeToken(b, KWHILE); if (!r) r = consumeToken(b, PLCURLY); if (!r) r = consumeToken(b, PRCURLY); if (!r) r = consumeToken(b, OCOMPLEMENT); if (!r) r = consumeToken(b, ID); if (!r) r = consumeToken(b, OPEN_QUOTE); if (!r) r = consumeToken(b, LITFLOAT); if (!r) r = consumeToken(b, LITHEX); if (!r) r = consumeToken(b, LITINT); if (!r) r = consumeToken(b, LITOCT); if (!r) r = consumeToken(b, REG_EXP); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // '&&' compareExpressionWrapper public static boolean logicAndExpression(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "logicAndExpression")) return false; if (!nextTokenIs(b, OCOND_AND)) return false; boolean r, p; Marker m = enter_section_(b, l, _LEFT_, null); r = consumeToken(b, OCOND_AND); p = r; // pin = 1 r = r && compareExpressionWrapper(b, l + 1); exit_section_(b, l, m, LOGIC_AND_EXPRESSION, r, p, null); return r || p; } /* ********************************************************** */ // compareExpressionWrapper logicAndExpression* static boolean logicAndExpressionWrapper(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "logicAndExpressionWrapper")) return false; boolean r; Marker m = enter_section_(b); r = compareExpressionWrapper(b, l + 1); r = r && logicAndExpressionWrapper_1(b, l + 1); exit_section_(b, m, null, r); return r; } // logicAndExpression* private static boolean logicAndExpressionWrapper_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "logicAndExpressionWrapper_1")) return false; int c = current_position_(b); while (true) { if (!logicAndExpression(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "logicAndExpressionWrapper_1", c)) break; c = current_position_(b); } return true; } /* ********************************************************** */ // '||' logicAndExpressionWrapper public static boolean logicOrExpression(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "logicOrExpression")) return false; if (!nextTokenIs(b, OCOND_OR)) return false; boolean r, p; Marker m = enter_section_(b, l, _LEFT_, null); r = consumeToken(b, OCOND_OR); p = r; // pin = 1 r = r && logicAndExpressionWrapper(b, l + 1); exit_section_(b, l, m, LOGIC_OR_EXPRESSION, r, p, null); return r || p; } /* ********************************************************** */ // logicAndExpressionWrapper logicOrExpression* static boolean logicOrExpressionWrapper(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "logicOrExpressionWrapper")) return false; boolean r; Marker m = enter_section_(b); r = logicAndExpressionWrapper(b, l + 1); r = r && logicOrExpressionWrapper_1(b, l + 1); exit_section_(b, m, null, r); return r; } // logicOrExpression* private static boolean logicOrExpressionWrapper_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "logicOrExpressionWrapper_1")) return false; int c = current_position_(b); while (true) { if (!logicOrExpression(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "logicOrExpressionWrapper_1", c)) break; c = current_position_(b); } return true; } /* ********************************************************** */ // LONG_TEMPLATE_ENTRY_START expression LONG_TEMPLATE_ENTRY_END public static boolean longTemplateEntry(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "longTemplateEntry")) return false; if (!nextTokenIs(b, LONG_TEMPLATE_ENTRY_START)) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, null); r = consumeToken(b, LONG_TEMPLATE_ENTRY_START); p = r; // pin = 1 r = r && report_error_(b, expression(b, l + 1)); r = p && consumeToken(b, LONG_TEMPLATE_ENTRY_END) && r; exit_section_(b, l, m, LONG_TEMPLATE_ENTRY, r, p, null); return r || p; } /* ********************************************************** */ // simpleMeta | requireMeta | fakeEnumMeta | nativeMeta | jsRequireMeta | bitmapMeta | nsMeta | customMeta | metaMeta | buildMacro | autoBuildMacro public static boolean macroClass(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "macroClass")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<macro class>"); r = simpleMeta(b, l + 1); if (!r) r = requireMeta(b, l + 1); if (!r) r = fakeEnumMeta(b, l + 1); if (!r) r = nativeMeta(b, l + 1); if (!r) r = jsRequireMeta(b, l + 1); if (!r) r = bitmapMeta(b, l + 1); if (!r) r = nsMeta(b, l + 1); if (!r) r = customMeta(b, l + 1); if (!r) r = metaMeta(b, l + 1); if (!r) r = buildMacro(b, l + 1); if (!r) r = autoBuildMacro(b, l + 1); exit_section_(b, l, m, MACRO_CLASS, r, false, null); return r; } /* ********************************************************** */ // macroClass (macroClass)* public static boolean macroClassList(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "macroClassList")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<macro class list>"); r = macroClass(b, l + 1); r = r && macroClassList_1(b, l + 1); exit_section_(b, l, m, MACRO_CLASS_LIST, r, false, null); return r; } // (macroClass)* private static boolean macroClassList_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "macroClassList_1")) return false; int c = current_position_(b); while (true) { if (!macroClassList_1_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "macroClassList_1", c)) break; c = current_position_(b); } return true; } // (macroClass) private static boolean macroClassList_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "macroClassList_1_0")) return false; boolean r; Marker m = enter_section_(b); r = macroClass(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // macroMeta | protectedMeta | debugMeta | noDebugMeta | keepMeta // | requireMeta | nsMeta | getterMeta | setterMeta | customMeta | metaMeta | buildMacro | autoBuildMacro static boolean macroMember(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "macroMember")) return false; if (!nextTokenIs(b, "", KAUTOBUILD, KBUILD, KDEBUG, KGETTER, KKEEP, KMACRO, KMETA, KNODEBUG, KNS, KPROTECTED, KREQUIRE, KSETTER, MACRO_ID)) return false; boolean r; Marker m = enter_section_(b); r = macroMeta(b, l + 1); if (!r) r = protectedMeta(b, l + 1); if (!r) r = debugMeta(b, l + 1); if (!r) r = noDebugMeta(b, l + 1); if (!r) r = keepMeta(b, l + 1); if (!r) r = requireMeta(b, l + 1); if (!r) r = nsMeta(b, l + 1); if (!r) r = getterMeta(b, l + 1); if (!r) r = setterMeta(b, l + 1); if (!r) r = customMeta(b, l + 1); if (!r) r = metaMeta(b, l + 1); if (!r) r = buildMacro(b, l + 1); if (!r) r = autoBuildMacro(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // '@:macro' static boolean macroMeta(PsiBuilder b, int l) { return consumeToken(b, KMACRO); } /* ********************************************************** */ // ID '=' stringLiteralExpression public static boolean metaKeyValue(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "metaKeyValue")) return false; if (!nextTokenIs(b, ID)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, ID); r = r && consumeToken(b, OASSIGN); r = r && stringLiteralExpression(b, l + 1); exit_section_(b, m, META_KEY_VALUE, r); return r; } /* ********************************************************** */ // MACRO_ID | '@:final' | '@:hack' | '@:native' | '@:macro' | '@:build' | '@:autoBuild' | '@:keep' | '@:require' | '@:fakeEnum' | '@:core_api' | '@:bind' | '@:bitmap' | '@:ns' | '@:protected' | '@:getter' | '@:setter' | '@:debug' | '@:nodebug' | '@:meta' | '@:overload' | '@:jsRequire' static boolean metaKeyWord(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "metaKeyWord")) return false; if (!nextTokenIs(b, "", KAUTOBUILD, KBIND, KBITMAP, KBUILD, KCOREAPI, KDEBUG, KFAKEENUM, KFINAL, KGETTER, KHACK, KJSREQUIRE, KKEEP, KMACRO, KMETA, KNATIVE, KNODEBUG, KNS, KOVERLOAD, KPROTECTED, KREQUIRE, KSETTER, MACRO_ID)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, MACRO_ID); if (!r) r = consumeToken(b, KFINAL); if (!r) r = consumeToken(b, KHACK); if (!r) r = consumeToken(b, KNATIVE); if (!r) r = consumeToken(b, KMACRO); if (!r) r = consumeToken(b, KBUILD); if (!r) r = consumeToken(b, KAUTOBUILD); if (!r) r = consumeToken(b, KKEEP); if (!r) r = consumeToken(b, KREQUIRE); if (!r) r = consumeToken(b, KFAKEENUM); if (!r) r = consumeToken(b, KCOREAPI); if (!r) r = consumeToken(b, KBIND); if (!r) r = consumeToken(b, KBITMAP); if (!r) r = consumeToken(b, KNS); if (!r) r = consumeToken(b, KPROTECTED); if (!r) r = consumeToken(b, KGETTER); if (!r) r = consumeToken(b, KSETTER); if (!r) r = consumeToken(b, KDEBUG); if (!r) r = consumeToken(b, KNODEBUG); if (!r) r = consumeToken(b, KMETA); if (!r) r = consumeToken(b, KOVERLOAD); if (!r) r = consumeToken(b, KJSREQUIRE); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // '@:meta' '(' ID '(' metaPartList? ')' ')' public static boolean metaMeta(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "metaMeta")) return false; if (!nextTokenIs(b, KMETA)) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, null); r = consumeToken(b, KMETA); p = r; // pin = 1 r = r && report_error_(b, consumeToken(b, PLPAREN)); r = p && report_error_(b, consumeToken(b, ID)) && r; r = p && report_error_(b, consumeToken(b, PLPAREN)) && r; r = p && report_error_(b, metaMeta_4(b, l + 1)) && r; r = p && report_error_(b, consumeToken(b, PRPAREN)) && r; r = p && consumeToken(b, PRPAREN) && r; exit_section_(b, l, m, META_META, r, p, null); return r || p; } // metaPartList? private static boolean metaMeta_4(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "metaMeta_4")) return false; metaPartList(b, l + 1); return true; } /* ********************************************************** */ // metaKeyValue (',' metaKeyValue)* static boolean metaPartList(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "metaPartList")) return false; if (!nextTokenIs(b, ID)) return false; boolean r; Marker m = enter_section_(b); r = metaKeyValue(b, l + 1); r = r && metaPartList_1(b, l + 1); exit_section_(b, m, null, r); return r; } // (',' metaKeyValue)* private static boolean metaPartList_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "metaPartList_1")) return false; int c = current_position_(b); while (true) { if (!metaPartList_1_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "metaPartList_1", c)) break; c = current_position_(b); } return true; } // ',' metaKeyValue private static boolean metaPartList_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "metaPartList_1_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OCOMMA); r = r && metaKeyValue(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // ('*' | '/' | '%') (prefixExpression | suffixExpressionWrapper) public static boolean multiplicativeExpression(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "multiplicativeExpression")) return false; if (!nextTokenIs(b, "<multiplicative expression>", OREMAINDER, OMUL, OQUOTIENT)) return false; boolean r, p; Marker m = enter_section_(b, l, _LEFT_, "<multiplicative expression>"); r = multiplicativeExpression_0(b, l + 1); p = r; // pin = 1 r = r && multiplicativeExpression_1(b, l + 1); exit_section_(b, l, m, MULTIPLICATIVE_EXPRESSION, r, p, null); return r || p; } // '*' | '/' | '%' private static boolean multiplicativeExpression_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "multiplicativeExpression_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OMUL); if (!r) r = consumeToken(b, OQUOTIENT); if (!r) r = consumeToken(b, OREMAINDER); exit_section_(b, m, null, r); return r; } // prefixExpression | suffixExpressionWrapper private static boolean multiplicativeExpression_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "multiplicativeExpression_1")) return false; boolean r; Marker m = enter_section_(b); r = prefixExpression(b, l + 1); if (!r) r = suffixExpressionWrapper(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // prefixExpression multiplicativeExpression* static boolean multiplicativeExpressionWrapper(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "multiplicativeExpressionWrapper")) return false; boolean r; Marker m = enter_section_(b); r = prefixExpression(b, l + 1); r = r && multiplicativeExpressionWrapper_1(b, l + 1); exit_section_(b, m, null, r); return r; } // multiplicativeExpression* private static boolean multiplicativeExpressionWrapper_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "multiplicativeExpressionWrapper_1")) return false; int c = current_position_(b); while (true) { if (!multiplicativeExpression(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "multiplicativeExpressionWrapper_1", c)) break; c = current_position_(b); } return true; } /* ********************************************************** */ // '@:native' '(' stringLiteralExpression ')' public static boolean nativeMeta(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "nativeMeta")) return false; if (!nextTokenIs(b, KNATIVE)) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, null); r = consumeToken(b, KNATIVE); p = r; // pin = 1 r = r && report_error_(b, consumeToken(b, PLPAREN)); r = p && report_error_(b, stringLiteralExpression(b, l + 1)) && r; r = p && consumeToken(b, PRPAREN) && r; exit_section_(b, l, m, NATIVE_META, r, p, null); return r || p; } /* ********************************************************** */ // 'new' type '(' (expression (',' expression)*)? ')' public static boolean newExpression(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "newExpression")) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, "<new expression>"); r = consumeToken(b, ONEW); r = r && type(b, l + 1); p = r; // pin = 2 r = r && report_error_(b, consumeToken(b, PLPAREN)); r = p && report_error_(b, newExpression_3(b, l + 1)) && r; r = p && consumeToken(b, PRPAREN) && r; exit_section_(b, l, m, NEW_EXPRESSION, r, p, expression_recover_parser_); return r || p; } // (expression (',' expression)*)? private static boolean newExpression_3(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "newExpression_3")) return false; newExpression_3_0(b, l + 1); return true; } // expression (',' expression)* private static boolean newExpression_3_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "newExpression_3_0")) return false; boolean r; Marker m = enter_section_(b); r = expression(b, l + 1); r = r && newExpression_3_0_1(b, l + 1); exit_section_(b, m, null, r); return r; } // (',' expression)* private static boolean newExpression_3_0_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "newExpression_3_0_1")) return false; int c = current_position_(b); while (true) { if (!newExpression_3_0_1_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "newExpression_3_0_1", c)) break; c = current_position_(b); } return true; } // ',' expression private static boolean newExpression_3_0_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "newExpression_3_0_1_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OCOMMA); r = r && expression(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // newExpression qualifiedReferenceTail? static boolean newExpressionOrCall(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "newExpressionOrCall")) return false; if (!nextTokenIs(b, ONEW)) return false; boolean r; Marker m = enter_section_(b); r = newExpression(b, l + 1); r = r && newExpressionOrCall_1(b, l + 1); exit_section_(b, m, null, r); return r; } // qualifiedReferenceTail? private static boolean newExpressionOrCall_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "newExpressionOrCall_1")) return false; qualifiedReferenceTail(b, l + 1); return true; } /* ********************************************************** */ // '@:nodebug' public static boolean noDebugMeta(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "noDebugMeta")) return false; if (!nextTokenIs(b, KNODEBUG)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KNODEBUG); exit_section_(b, m, NO_DEBUG_META, r); return r; } /* ********************************************************** */ // ('untyped' statement ';'?) // | ('macro' statement ';'?) // | localVarDeclaration // | localFunctionDeclaration // | ifStatement // | forStatement // | whileStatement // | doWhileStatement // | returnStatement // | breakStatement // | continueStatement // | switchStatement // | throwStatement // | tryStatement // | expression static boolean notBlockStatement(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "notBlockStatement")) return false; boolean r; Marker m = enter_section_(b); r = notBlockStatement_0(b, l + 1); if (!r) r = notBlockStatement_1(b, l + 1); if (!r) r = localVarDeclaration(b, l + 1); if (!r) r = localFunctionDeclaration(b, l + 1); if (!r) r = ifStatement(b, l + 1); if (!r) r = forStatement(b, l + 1); if (!r) r = whileStatement(b, l + 1); if (!r) r = doWhileStatement(b, l + 1); if (!r) r = returnStatement(b, l + 1); if (!r) r = breakStatement(b, l + 1); if (!r) r = continueStatement(b, l + 1); if (!r) r = switchStatement(b, l + 1); if (!r) r = throwStatement(b, l + 1); if (!r) r = tryStatement(b, l + 1); if (!r) r = expression(b, l + 1); exit_section_(b, m, null, r); return r; } // 'untyped' statement ';'? private static boolean notBlockStatement_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "notBlockStatement_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KUNTYPED); r = r && statement(b, l + 1); r = r && notBlockStatement_0_2(b, l + 1); exit_section_(b, m, null, r); return r; } // ';'? private static boolean notBlockStatement_0_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "notBlockStatement_0_2")) return false; consumeToken(b, OSEMI); return true; } // 'macro' statement ';'? private static boolean notBlockStatement_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "notBlockStatement_1")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KMACRO2); r = r && statement(b, l + 1); r = r && notBlockStatement_1_2(b, l + 1); exit_section_(b, m, null, r); return r; } // ';'? private static boolean notBlockStatement_1_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "notBlockStatement_1_2")) return false; consumeToken(b, OSEMI); return true; } /* ********************************************************** */ // '@:ns' '(' stringLiteralExpression ')' public static boolean nsMeta(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "nsMeta")) return false; if (!nextTokenIs(b, KNS)) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, null); r = consumeToken(b, KNS); p = r; // pin = 1 r = r && report_error_(b, consumeToken(b, PLPAREN)); r = p && report_error_(b, stringLiteralExpression(b, l + 1)) && r; r = p && consumeToken(b, PRPAREN) && r; exit_section_(b, l, m, NS_META, r, p, null); return r || p; } /* ********************************************************** */ // ('{' objectLiteralElementList+ '}') | emptyObjectLiteral public static boolean objectLiteral(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "objectLiteral")) return false; if (!nextTokenIs(b, PLCURLY)) return false; boolean r; Marker m = enter_section_(b); r = objectLiteral_0(b, l + 1); if (!r) r = emptyObjectLiteral(b, l + 1); exit_section_(b, m, OBJECT_LITERAL, r); return r; } // '{' objectLiteralElementList+ '}' private static boolean objectLiteral_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "objectLiteral_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, PLCURLY); r = r && objectLiteral_0_1(b, l + 1); r = r && consumeToken(b, PRCURLY); exit_section_(b, m, null, r); return r; } // objectLiteralElementList+ private static boolean objectLiteral_0_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "objectLiteral_0_1")) return false; boolean r; Marker m = enter_section_(b); r = objectLiteralElementList(b, l + 1); int c = current_position_(b); while (r) { if (!objectLiteralElementList(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "objectLiteral_0_1", c)) break; c = current_position_(b); } exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // identifier ':' expression public static boolean objectLiteralElement(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "objectLiteralElement")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<object literal element>"); r = identifier(b, l + 1); r = r && consumeToken(b, OCOLON); r = r && expression(b, l + 1); exit_section_(b, l, m, OBJECT_LITERAL_ELEMENT, r, false, object_literal_part_recover_parser_); return r; } /* ********************************************************** */ // objectLiteralElement (',' objectLiteralElement)* static boolean objectLiteralElementList(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "objectLiteralElementList")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, null); r = objectLiteralElement(b, l + 1); r = r && objectLiteralElementList_1(b, l + 1); exit_section_(b, l, m, null, r, false, object_literal_list_recover_parser_); return r; } // (',' objectLiteralElement)* private static boolean objectLiteralElementList_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "objectLiteralElementList_1")) return false; int c = current_position_(b); while (true) { if (!objectLiteralElementList_1_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "objectLiteralElementList_1", c)) break; c = current_position_(b); } return true; } // ',' objectLiteralElement private static boolean objectLiteralElementList_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "objectLiteralElementList_1_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OCOMMA); r = r && objectLiteralElement(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // !('}') static boolean object_literal_list_recover(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "object_literal_list_recover")) return false; boolean r; Marker m = enter_section_(b, l, _NOT_, null); r = !object_literal_list_recover_0(b, l + 1); exit_section_(b, l, m, null, r, false, null); return r; } // ('}') private static boolean object_literal_list_recover_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "object_literal_list_recover_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, PRCURLY); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // !(',' | '}') static boolean object_literal_part_recover(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "object_literal_part_recover")) return false; boolean r; Marker m = enter_section_(b, l, _NOT_, null); r = !object_literal_part_recover_0(b, l + 1); exit_section_(b, l, m, null, r, false, null); return r; } // ',' | '}' private static boolean object_literal_part_recover_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "object_literal_part_recover_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OCOMMA); if (!r) r = consumeToken(b, PRCURLY); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // '@:overload' '(' anonymousFunctionDeclaration ')' public static boolean overloadMeta(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "overloadMeta")) return false; if (!nextTokenIs(b, KOVERLOAD)) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, null); r = consumeToken(b, KOVERLOAD); p = r; // pin = 1 r = r && report_error_(b, consumeToken(b, PLPAREN)); r = p && report_error_(b, anonymousFunctionDeclaration(b, l + 1)) && r; r = p && consumeToken(b, PRPAREN) && r; exit_section_(b, l, m, OVERLOAD_META, r, p, null); return r || p; } /* ********************************************************** */ // 'package' simpleQualifiedReferenceExpression? ';' public static boolean packageStatement(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "packageStatement")) return false; if (!nextTokenIs(b, KPACKAGE)) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, null); r = consumeToken(b, KPACKAGE); p = r; // pin = 1 r = r && report_error_(b, packageStatement_1(b, l + 1)); r = p && consumeToken(b, OSEMI) && r; exit_section_(b, l, m, PACKAGE_STATEMENT, r, p, null); return r || p; } // simpleQualifiedReferenceExpression? private static boolean packageStatement_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "packageStatement_1")) return false; simpleQualifiedReferenceExpression(b, l + 1); return true; } /* ********************************************************** */ // '?'? componentName typeTag? varInit? public static boolean parameter(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "parameter")) return false; if (!nextTokenIs(b, "<parameter>", OQUEST, ID)) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<parameter>"); r = parameter_0(b, l + 1); r = r && componentName(b, l + 1); r = r && parameter_2(b, l + 1); r = r && parameter_3(b, l + 1); exit_section_(b, l, m, PARAMETER, r, false, null); return r; } // '?'? private static boolean parameter_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "parameter_0")) return false; consumeToken(b, OQUEST); return true; } // typeTag? private static boolean parameter_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "parameter_2")) return false; typeTag(b, l + 1); return true; } // varInit? private static boolean parameter_3(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "parameter_3")) return false; varInit(b, l + 1); return true; } /* ********************************************************** */ // parameter? (',' parameter)* public static boolean parameterList(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "parameterList")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<parameter list>"); r = parameterList_0(b, l + 1); r = r && parameterList_1(b, l + 1); exit_section_(b, l, m, PARAMETER_LIST, r, false, parameterListRecovery_parser_); return r; } // parameter? private static boolean parameterList_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "parameterList_0")) return false; parameter(b, l + 1); return true; } // (',' parameter)* private static boolean parameterList_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "parameterList_1")) return false; int c = current_position_(b); while (true) { if (!parameterList_1_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "parameterList_1", c)) break; c = current_position_(b); } return true; } // ',' parameter private static boolean parameterList_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "parameterList_1_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OCOMMA); r = r && parameter(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // !')' static boolean parameterListRecovery(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "parameterListRecovery")) return false; boolean r; Marker m = enter_section_(b, l, _NOT_, null); r = !consumeToken(b, PRPAREN); exit_section_(b, l, m, null, r, false, null); return r; } /* ********************************************************** */ // '(' (expression typeTag | expression | statement) ')' public static boolean parenthesizedExpression(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "parenthesizedExpression")) return false; if (!nextTokenIs(b, PLPAREN)) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, null); r = consumeToken(b, PLPAREN); p = r; // pin = 1 r = r && report_error_(b, parenthesizedExpression_1(b, l + 1)); r = p && consumeToken(b, PRPAREN) && r; exit_section_(b, l, m, PARENTHESIZED_EXPRESSION, r, p, null); return r || p; } // expression typeTag | expression | statement private static boolean parenthesizedExpression_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "parenthesizedExpression_1")) return false; boolean r; Marker m = enter_section_(b); r = parenthesizedExpression_1_0(b, l + 1); if (!r) r = expression(b, l + 1); if (!r) r = statement(b, l + 1); exit_section_(b, m, null, r); return r; } // expression typeTag private static boolean parenthesizedExpression_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "parenthesizedExpression_1_0")) return false; boolean r; Marker m = enter_section_(b); r = expression(b, l + 1); r = r && typeTag(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // parenthesizedExpression qualifiedReferenceTail? static boolean parenthesizedExpressionOrCall(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "parenthesizedExpressionOrCall")) return false; if (!nextTokenIs(b, PLPAREN)) return false; boolean r; Marker m = enter_section_(b); r = parenthesizedExpression(b, l + 1); r = r && parenthesizedExpressionOrCall_1(b, l + 1); exit_section_(b, m, null, r); return r; } // qualifiedReferenceTail? private static boolean parenthesizedExpressionOrCall_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "parenthesizedExpressionOrCall_1")) return false; qualifiedReferenceTail(b, l + 1); return true; } /* ********************************************************** */ // CONDITIONAL_STATEMENT_ID static boolean ppConditionalStatement(PsiBuilder b, int l) { return consumeToken(b, CONDITIONAL_STATEMENT_ID); } /* ********************************************************** */ // '#if' | "#else" | "#elseif" | "#end" | "#error" | ppConditionalStatement static boolean ppToken(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ppToken")) return false; if (!nextTokenIs(b, "", PPELSE, PPELSEIF, PPEND, PPERROR, PPIF, CONDITIONAL_STATEMENT_ID)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, PPIF); if (!r) r = consumeToken(b, PPELSE); if (!r) r = consumeToken(b, PPELSEIF); if (!r) r = consumeToken(b, PPEND); if (!r) r = consumeToken(b, PPERROR); if (!r) r = ppConditionalStatement(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // ('-' | '--' | '++' | '!' | '~') prefixExpression | suffixExpressionWrapper public static boolean prefixExpression(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "prefixExpression")) return false; boolean r; Marker m = enter_section_(b, l, _COLLAPSE_, "<prefix expression>"); r = prefixExpression_0(b, l + 1); if (!r) r = suffixExpressionWrapper(b, l + 1); exit_section_(b, l, m, PREFIX_EXPRESSION, r, false, null); return r; } // ('-' | '--' | '++' | '!' | '~') prefixExpression private static boolean prefixExpression_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "prefixExpression_0")) return false; boolean r; Marker m = enter_section_(b); r = prefixExpression_0_0(b, l + 1); r = r && prefixExpression(b, l + 1); exit_section_(b, m, null, r); return r; } // '-' | '--' | '++' | '!' | '~' private static boolean prefixExpression_0_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "prefixExpression_0_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OMINUS); if (!r) r = consumeToken(b, OMINUS_MINUS); if (!r) r = consumeToken(b, OPLUS_PLUS); if (!r) r = consumeToken(b, ONOT); if (!r) r = consumeToken(b, OCOMPLEMENT); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // privateKeyWord externKeyWord static boolean privateExtern(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "privateExtern")) return false; if (!nextTokenIs(b, KPRIVATE)) return false; boolean r; Marker m = enter_section_(b); r = privateKeyWord(b, l + 1); r = r && externKeyWord(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // 'private' public static boolean privateKeyWord(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "privateKeyWord")) return false; if (!nextTokenIs(b, KPRIVATE)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KPRIVATE); exit_section_(b, m, PRIVATE_KEY_WORD, r); return r; } /* ********************************************************** */ // 'null' | 'default' | 'dynamic' | 'never' | 'get' | 'set' | referenceExpression public static boolean propertyAccessor(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "propertyAccessor")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<property accessor>"); r = consumeToken(b, KNULL); if (!r) r = consumeToken(b, KDEFAULT); if (!r) r = consumeToken(b, KDYNAMIC); if (!r) r = consumeToken(b, KNEVER); if (!r) r = consumeToken(b, "get"); if (!r) r = consumeToken(b, "set"); if (!r) r = referenceExpression(b, l + 1); exit_section_(b, l, m, PROPERTY_ACCESSOR, r, false, null); return r; } /* ********************************************************** */ // '(' propertyAccessor ',' propertyAccessor ')' public static boolean propertyDeclaration(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "propertyDeclaration")) return false; if (!nextTokenIs(b, PLPAREN)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, PLPAREN); r = r && propertyAccessor(b, l + 1); r = r && consumeToken(b, OCOMMA); r = r && propertyAccessor(b, l + 1); r = r && consumeToken(b, PRPAREN); exit_section_(b, m, PROPERTY_DECLARATION, r); return r; } /* ********************************************************** */ // '@:protected' public static boolean protectedMeta(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "protectedMeta")) return false; if (!nextTokenIs(b, KPROTECTED)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KPROTECTED); exit_section_(b, m, PROTECTED_META, r); return r; } /* ********************************************************** */ // '.' referenceExpression public static boolean qualifiedReferenceExpression(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "qualifiedReferenceExpression")) return false; if (!nextTokenIs(b, ODOT)) return false; boolean r, p; Marker m = enter_section_(b, l, _LEFT_, null); r = consumeToken(b, ODOT); p = r; // pin = 1 r = r && referenceExpression(b, l + 1); exit_section_(b, l, m, REFERENCE_EXPRESSION, r, p, null); return r || p; } /* ********************************************************** */ // '.' referenceExpression public static boolean qualifiedReferenceExpressionOrWildcard(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "qualifiedReferenceExpressionOrWildcard")) return false; if (!nextTokenIs(b, ODOT)) return false; boolean r; Marker m = enter_section_(b, l, _LEFT_, null); r = consumeToken(b, ODOT); r = r && referenceExpression(b, l + 1); exit_section_(b, l, m, REFERENCE_EXPRESSION, r, false, null); return r; } /* ********************************************************** */ // qualifiedReferenceExpression (callExpression | arrayAccessExpression | qualifiedReferenceExpression)* static boolean qualifiedReferenceTail(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "qualifiedReferenceTail")) return false; if (!nextTokenIs(b, ODOT)) return false; boolean r; Marker m = enter_section_(b); r = qualifiedReferenceExpression(b, l + 1); r = r && qualifiedReferenceTail_1(b, l + 1); exit_section_(b, m, null, r); return r; } // (callExpression | arrayAccessExpression | qualifiedReferenceExpression)* private static boolean qualifiedReferenceTail_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "qualifiedReferenceTail_1")) return false; int c = current_position_(b); while (true) { if (!qualifiedReferenceTail_1_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "qualifiedReferenceTail_1", c)) break; c = current_position_(b); } return true; } // callExpression | arrayAccessExpression | qualifiedReferenceExpression private static boolean qualifiedReferenceTail_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "qualifiedReferenceTail_1_0")) return false; boolean r; Marker m = enter_section_(b); r = callExpression(b, l + 1); if (!r) r = arrayAccessExpression(b, l + 1); if (!r) r = qualifiedReferenceExpression(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // identifier 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 = identifier(b, l + 1); exit_section_(b, m, REFERENCE_EXPRESSION, r); return r; } /* ********************************************************** */ // REG_EXP public static boolean regularExpressionLiteral(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "regularExpressionLiteral")) return false; if (!nextTokenIs(b, REG_EXP)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, REG_EXP); exit_section_(b, m, REGULAR_EXPRESSION_LITERAL, r); return r; } /* ********************************************************** */ // '@:require' '(' identifier ')' public static boolean requireMeta(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "requireMeta")) return false; if (!nextTokenIs(b, KREQUIRE)) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, null); r = consumeToken(b, KREQUIRE); p = r; // pin = 1 r = r && report_error_(b, consumeToken(b, PLPAREN)); r = p && report_error_(b, identifier(b, l + 1)) && r; r = p && consumeToken(b, PRPAREN) && r; exit_section_(b, l, m, REQUIRE_META, r, p, null); return r || p; } /* ********************************************************** */ // 'return' (objectLiteral | ("macro"? blockStatement) | expression )? ';'? public static boolean returnStatement(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "returnStatement")) return false; if (!nextTokenIs(b, KRETURN)) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, null); r = consumeToken(b, KRETURN); p = r; // pin = 1 r = r && report_error_(b, returnStatement_1(b, l + 1)); r = p && returnStatement_2(b, l + 1) && r; exit_section_(b, l, m, RETURN_STATEMENT, r, p, null); return r || p; } // (objectLiteral | ("macro"? blockStatement) | expression )? private static boolean returnStatement_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "returnStatement_1")) return false; returnStatement_1_0(b, l + 1); return true; } // objectLiteral | ("macro"? blockStatement) | expression private static boolean returnStatement_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "returnStatement_1_0")) return false; boolean r; Marker m = enter_section_(b); r = objectLiteral(b, l + 1); if (!r) r = returnStatement_1_0_1(b, l + 1); if (!r) r = expression(b, l + 1); exit_section_(b, m, null, r); return r; } // "macro"? blockStatement private static boolean returnStatement_1_0_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "returnStatement_1_0_1")) return false; boolean r; Marker m = enter_section_(b); r = returnStatement_1_0_1_0(b, l + 1); r = r && blockStatement(b, l + 1); exit_section_(b, m, null, r); return r; } // "macro"? private static boolean returnStatement_1_0_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "returnStatement_1_0_1_0")) return false; consumeToken(b, KMACRO2); return true; } // ';'? private static boolean returnStatement_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "returnStatement_2")) return false; consumeToken(b, OSEMI); return true; } /* ********************************************************** */ // 'return' expression public static boolean returnStatementWithoutSemicolon(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "returnStatementWithoutSemicolon")) return false; if (!nextTokenIs(b, KRETURN)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KRETURN); r = r && expression(b, l + 1); exit_section_(b, m, RETURN_STATEMENT_WITHOUT_SEMICOLON, r); return r; } /* ********************************************************** */ // '@:setter' '(' referenceExpression ')' public static boolean setterMeta(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "setterMeta")) return false; if (!nextTokenIs(b, KSETTER)) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, null); r = consumeToken(b, KSETTER); p = r; // pin = 1 r = r && report_error_(b, consumeToken(b, PLPAREN)); r = p && report_error_(b, referenceExpression(b, l + 1)) && r; r = p && consumeToken(b, PRPAREN) && r; exit_section_(b, l, m, SETTER_META, r, p, null); return r || p; } /* ********************************************************** */ // shiftOperator additiveExpressionWrapper public static boolean shiftExpression(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "shiftExpression")) return false; if (!nextTokenIs(b, "<shift expression>", OSHIFT_LEFT, OGREATER)) return false; boolean r, p; Marker m = enter_section_(b, l, _LEFT_, "<shift expression>"); r = shiftOperator(b, l + 1); p = r; // pin = 1 r = r && additiveExpressionWrapper(b, l + 1); exit_section_(b, l, m, SHIFT_EXPRESSION, r, p, null); return r || p; } /* ********************************************************** */ // additiveExpressionWrapper shiftExpression* static boolean shiftExpressionWrapper(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "shiftExpressionWrapper")) return false; boolean r; Marker m = enter_section_(b); r = additiveExpressionWrapper(b, l + 1); r = r && shiftExpressionWrapper_1(b, l + 1); exit_section_(b, m, null, r); return r; } // shiftExpression* private static boolean shiftExpressionWrapper_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "shiftExpressionWrapper_1")) return false; int c = current_position_(b); while (true) { if (!shiftExpression(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "shiftExpressionWrapper_1", c)) break; c = current_position_(b); } return true; } /* ********************************************************** */ // unsignedShiftRightOperator | shiftRightOperator | '<<' public static boolean shiftOperator(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "shiftOperator")) return false; if (!nextTokenIs(b, "<shift operator>", OSHIFT_LEFT, OGREATER)) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<shift operator>"); r = unsignedShiftRightOperator(b, l + 1); if (!r) r = shiftRightOperator(b, l + 1); if (!r) r = consumeToken(b, OSHIFT_LEFT); exit_section_(b, l, m, SHIFT_OPERATOR, r, false, null); return r; } /* ********************************************************** */ // '>' '>' public static boolean shiftRightOperator(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "shiftRightOperator")) return false; if (!nextTokenIs(b, OGREATER)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OGREATER); r = r && consumeToken(b, OGREATER); exit_section_(b, m, SHIFT_RIGHT_OPERATOR, r); return r; } /* ********************************************************** */ // SHORT_TEMPLATE_ENTRY_START (thisExpression | referenceExpression) public static boolean shortTemplateEntry(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "shortTemplateEntry")) return false; if (!nextTokenIs(b, SHORT_TEMPLATE_ENTRY_START)) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, null); r = consumeToken(b, SHORT_TEMPLATE_ENTRY_START); p = r; // pin = 1 r = r && shortTemplateEntry_1(b, l + 1); exit_section_(b, l, m, SHORT_TEMPLATE_ENTRY, r, p, null); return r || p; } // thisExpression | referenceExpression private static boolean shortTemplateEntry_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "shortTemplateEntry_1")) return false; boolean r; Marker m = enter_section_(b); r = thisExpression(b, l + 1); if (!r) r = referenceExpression(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // anonymousTypeFieldList (',' interfaceBody)? static boolean simpleAnonymousTypeBody(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "simpleAnonymousTypeBody")) return false; if (!nextTokenIs(b, "", OQUEST, ID)) return false; boolean r; Marker m = enter_section_(b); r = anonymousTypeFieldList(b, l + 1); r = r && simpleAnonymousTypeBody_1(b, l + 1); exit_section_(b, m, null, r); return r; } // (',' interfaceBody)? private static boolean simpleAnonymousTypeBody_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "simpleAnonymousTypeBody_1")) return false; simpleAnonymousTypeBody_1_0(b, l + 1); return true; } // ',' interfaceBody private static boolean simpleAnonymousTypeBody_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "simpleAnonymousTypeBody_1_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OCOMMA); r = r && interfaceBody(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // unreflectiveMeta | finalMeta | keepMeta | coreApiMeta | bindMeta | macroMeta | hackMeta public static boolean simpleMeta(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "simpleMeta")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<simple meta>"); r = unreflectiveMeta(b, l + 1); if (!r) r = finalMeta(b, l + 1); if (!r) r = keepMeta(b, l + 1); if (!r) r = coreApiMeta(b, l + 1); if (!r) r = bindMeta(b, l + 1); if (!r) r = macroMeta(b, l + 1); if (!r) r = hackMeta(b, l + 1); exit_section_(b, l, m, SIMPLE_META, r, false, null); return r; } /* ********************************************************** */ // referenceExpression qualifiedReferenceExpression * public static boolean simpleQualifiedReferenceExpression(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "simpleQualifiedReferenceExpression")) return false; if (!nextTokenIs(b, ID)) return false; boolean r, p; Marker m = enter_section_(b, l, _COLLAPSE_, null); r = referenceExpression(b, l + 1); p = r; // pin = 1 r = r && simpleQualifiedReferenceExpression_1(b, l + 1); exit_section_(b, l, m, REFERENCE_EXPRESSION, r, p, null); return r || p; } // qualifiedReferenceExpression * private static boolean simpleQualifiedReferenceExpression_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "simpleQualifiedReferenceExpression_1")) return false; int c = current_position_(b); while (true) { if (!qualifiedReferenceExpression(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "simpleQualifiedReferenceExpression_1", c)) break; c = current_position_(b); } return true; } /* ********************************************************** */ // referenceExpression qualifiedReferenceExpressionOrWildcard * wildcard public static boolean simpleQualifiedReferenceExpressionWithWildcardSupport(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "simpleQualifiedReferenceExpressionWithWildcardSupport")) return false; if (!nextTokenIs(b, ID)) return false; boolean r; Marker m = enter_section_(b); r = referenceExpression(b, l + 1); r = r && simpleQualifiedReferenceExpressionWithWildcardSupport_1(b, l + 1); r = r && wildcard(b, l + 1); exit_section_(b, m, REFERENCE_EXPRESSION, r); return r; } // qualifiedReferenceExpressionOrWildcard * private static boolean simpleQualifiedReferenceExpressionWithWildcardSupport_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "simpleQualifiedReferenceExpressionWithWildcardSupport_1")) return false; int c = current_position_(b); while (true) { if (!qualifiedReferenceExpressionOrWildcard(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "simpleQualifiedReferenceExpressionWithWildcardSupport_1", c)) break; c = current_position_(b); } return true; } /* ********************************************************** */ // macroClassList? (blockStatement | notBlockStatement) static boolean statement(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "statement")) return false; boolean r; Marker m = enter_section_(b); r = statement_0(b, l + 1); r = r && statement_1(b, l + 1); exit_section_(b, m, null, r); return r; } // macroClassList? private static boolean statement_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "statement_0")) return false; macroClassList(b, l + 1); return true; } // blockStatement | notBlockStatement private static boolean statement_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "statement_1")) return false; boolean r; Marker m = enter_section_(b); r = blockStatement(b, l + 1); if (!r) r = notBlockStatement(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // (statement ';'?)+ static boolean statementList(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "statementList")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, null); r = statementList_0(b, l + 1); int c = current_position_(b); while (r) { if (!statementList_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "statementList", c)) break; c = current_position_(b); } exit_section_(b, l, m, null, r, false, statement_recovery_parser_); return r; } // statement ';'? private static boolean statementList_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "statementList_0")) return false; boolean r; Marker m = enter_section_(b); r = statement(b, l + 1); r = r && statementList_0_1(b, l + 1); exit_section_(b, m, null, r); return r; } // ';'? private static boolean statementList_0_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "statementList_0_1")) return false; consumeToken(b, OSEMI); return true; } /* ********************************************************** */ // !('case' | 'default' | '}') static boolean statement_recovery(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "statement_recovery")) return false; boolean r; Marker m = enter_section_(b, l, _NOT_, null); r = !statement_recovery_0(b, l + 1); exit_section_(b, l, m, null, r, false, null); return r; } // 'case' | 'default' | '}' private static boolean statement_recovery_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "statement_recovery_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KCASE); if (!r) r = consumeToken(b, KDEFAULT); if (!r) r = consumeToken(b, PRCURLY); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // OPEN_QUOTE (REGULAR_STRING_PART | shortTemplateEntry | longTemplateEntry)* CLOSING_QUOTE public static boolean stringLiteralExpression(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "stringLiteralExpression")) return false; if (!nextTokenIs(b, OPEN_QUOTE)) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, null); r = consumeToken(b, OPEN_QUOTE); p = r; // pin = 1 r = r && report_error_(b, stringLiteralExpression_1(b, l + 1)); r = p && consumeToken(b, CLOSING_QUOTE) && r; exit_section_(b, l, m, STRING_LITERAL_EXPRESSION, r, p, null); return r || p; } // (REGULAR_STRING_PART | shortTemplateEntry | longTemplateEntry)* private static boolean stringLiteralExpression_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "stringLiteralExpression_1")) return false; int c = current_position_(b); while (true) { if (!stringLiteralExpression_1_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "stringLiteralExpression_1", c)) break; c = current_position_(b); } return true; } // REGULAR_STRING_PART | shortTemplateEntry | longTemplateEntry private static boolean stringLiteralExpression_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "stringLiteralExpression_1_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, REGULAR_STRING_PART); if (!r) r = shortTemplateEntry(b, l + 1); if (!r) r = longTemplateEntry(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // '--' | '++' public static boolean suffixExpression(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "suffixExpression")) return false; if (!nextTokenIs(b, "<suffix expression>", OPLUS_PLUS, OMINUS_MINUS)) return false; boolean r; Marker m = enter_section_(b, l, _LEFT_, "<suffix expression>"); r = consumeToken(b, OMINUS_MINUS); if (!r) r = consumeToken(b, OPLUS_PLUS); exit_section_(b, l, m, SUFFIX_EXPRESSION, r, false, null); return r; } /* ********************************************************** */ // value suffixExpression* static boolean suffixExpressionWrapper(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "suffixExpressionWrapper")) return false; boolean r; Marker m = enter_section_(b); r = value(b, l + 1); r = r && suffixExpressionWrapper_1(b, l + 1); exit_section_(b, m, null, r); return r; } // suffixExpression* private static boolean suffixExpressionWrapper_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "suffixExpressionWrapper_1")) return false; int c = current_position_(b); while (true) { if (!suffixExpression(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "suffixExpressionWrapper_1", c)) break; c = current_position_(b); } return true; } /* ********************************************************** */ // 'super' public static boolean superExpression(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "superExpression")) return false; if (!nextTokenIs(b, KSUPER)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KSUPER); exit_section_(b, m, SUPER_EXPRESSION, r); return r; } /* ********************************************************** */ // '{' switchCase* defaultCase? '}' public static boolean switchBlock(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "switchBlock")) return false; if (!nextTokenIs(b, PLCURLY)) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, null); r = consumeToken(b, PLCURLY); p = r; // pin = 1 r = r && report_error_(b, switchBlock_1(b, l + 1)); r = p && report_error_(b, switchBlock_2(b, l + 1)) && r; r = p && consumeToken(b, PRCURLY) && r; exit_section_(b, l, m, SWITCH_BLOCK, r, p, null); return r || p; } // switchCase* private static boolean switchBlock_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "switchBlock_1")) return false; int c = current_position_(b); while (true) { if (!switchCase(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "switchBlock_1", c)) break; c = current_position_(b); } return true; } // defaultCase? private static boolean switchBlock_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "switchBlock_2")) return false; defaultCase(b, l + 1); return true; } /* ********************************************************** */ // ('case' switchCaseExpression (',' switchCaseExpression)* ':')+ switchCaseBlock? public static boolean switchCase(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "switchCase")) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, "<switch case>"); r = switchCase_0(b, l + 1); p = r; // pin = 1 r = r && switchCase_1(b, l + 1); exit_section_(b, l, m, SWITCH_CASE, r, p, switch_case_recover_parser_); return r || p; } // ('case' switchCaseExpression (',' switchCaseExpression)* ':')+ private static boolean switchCase_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "switchCase_0")) return false; boolean r; Marker m = enter_section_(b); r = switchCase_0_0(b, l + 1); int c = current_position_(b); while (r) { if (!switchCase_0_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "switchCase_0", c)) break; c = current_position_(b); } exit_section_(b, m, null, r); return r; } // 'case' switchCaseExpression (',' switchCaseExpression)* ':' private static boolean switchCase_0_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "switchCase_0_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KCASE); r = r && switchCaseExpression(b, l + 1); r = r && switchCase_0_0_2(b, l + 1); r = r && consumeToken(b, OCOLON); exit_section_(b, m, null, r); return r; } // (',' switchCaseExpression)* private static boolean switchCase_0_0_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "switchCase_0_0_2")) return false; int c = current_position_(b); while (true) { if (!switchCase_0_0_2_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "switchCase_0_0_2", c)) break; c = current_position_(b); } return true; } // ',' switchCaseExpression private static boolean switchCase_0_0_2_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "switchCase_0_0_2_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OCOMMA); r = r && switchCaseExpression(b, l + 1); exit_section_(b, m, null, r); return r; } // switchCaseBlock? private static boolean switchCase_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "switchCase_1")) return false; switchCaseBlock(b, l + 1); return true; } /* ********************************************************** */ // (literalExpression ";") | statementList public static boolean switchCaseBlock(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "switchCaseBlock")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<switch case block>"); r = switchCaseBlock_0(b, l + 1); if (!r) r = statementList(b, l + 1); exit_section_(b, l, m, SWITCH_CASE_BLOCK, r, false, null); return r; } // literalExpression ";" private static boolean switchCaseBlock_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "switchCaseBlock_0")) return false; boolean r; Marker m = enter_section_(b); r = literalExpression(b, l + 1); r = r && consumeToken(b, OSEMI); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // expression ('if' '(' expression ')')? public static boolean switchCaseExpression(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "switchCaseExpression")) return false; boolean r, p; Marker m = enter_section_(b, l, _COLLAPSE_, "<switch case expression>"); r = expression(b, l + 1); p = r; // pin = 1 r = r && switchCaseExpression_1(b, l + 1); exit_section_(b, l, m, SWITCH_CASE_EXPRESSION, r, p, null); return r || p; } // ('if' '(' expression ')')? private static boolean switchCaseExpression_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "switchCaseExpression_1")) return false; switchCaseExpression_1_0(b, l + 1); return true; } // 'if' '(' expression ')' private static boolean switchCaseExpression_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "switchCaseExpression_1_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KIF); r = r && consumeToken(b, PLPAREN); r = r && expression(b, l + 1); r = r && consumeToken(b, PRPAREN); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // 'switch' expression switchBlock public static boolean switchStatement(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "switchStatement")) return false; if (!nextTokenIs(b, KSWITCH)) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, null); r = consumeToken(b, KSWITCH); p = r; // pin = 1 r = r && report_error_(b, expression(b, l + 1)); r = p && switchBlock(b, l + 1) && r; exit_section_(b, l, m, SWITCH_STATEMENT, r, p, null); return r || p; } /* ********************************************************** */ // !('case' | 'default' | '}' | ID) static boolean switch_case_recover(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "switch_case_recover")) return false; boolean r; Marker m = enter_section_(b, l, _NOT_, null); r = !switch_case_recover_0(b, l + 1); exit_section_(b, l, m, null, r, false, null); return r; } // 'case' | 'default' | '}' | ID private static boolean switch_case_recover_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "switch_case_recover_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KCASE); if (!r) r = consumeToken(b, KDEFAULT); if (!r) r = consumeToken(b, PRCURLY); if (!r) r = consumeToken(b, ID); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // '?' expression ':' ternaryExpressionWrapper public static boolean ternaryExpression(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ternaryExpression")) return false; if (!nextTokenIs(b, OQUEST)) return false; boolean r, p; Marker m = enter_section_(b, l, _LEFT_, null); r = consumeToken(b, OQUEST); p = r; // pin = 1 r = r && report_error_(b, expression(b, l + 1)); r = p && report_error_(b, consumeToken(b, OCOLON)) && r; r = p && ternaryExpressionWrapper(b, l + 1) && r; exit_section_(b, l, m, TERNARY_EXPRESSION, r, p, null); return r || p; } /* ********************************************************** */ // logicOrExpressionWrapper ternaryExpression? static boolean ternaryExpressionWrapper(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ternaryExpressionWrapper")) return false; boolean r; Marker m = enter_section_(b); r = logicOrExpressionWrapper(b, l + 1); r = r && ternaryExpressionWrapper_1(b, l + 1); exit_section_(b, m, null, r); return r; } // ternaryExpression? private static boolean ternaryExpressionWrapper_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ternaryExpressionWrapper_1")) return false; ternaryExpression(b, l + 1); return true; } /* ********************************************************** */ // 'this' public static boolean thisExpression(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "thisExpression")) return false; if (!nextTokenIs(b, KTHIS)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KTHIS); exit_section_(b, m, THIS_EXPRESSION, r); return r; } /* ********************************************************** */ // 'throw' expression ';'? public static boolean throwStatement(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "throwStatement")) return false; if (!nextTokenIs(b, KTHROW)) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, null); r = consumeToken(b, KTHROW); p = r; // pin = 1 r = r && report_error_(b, expression(b, l + 1)); r = p && throwStatement_2(b, l + 1) && r; exit_section_(b, l, m, THROW_STATEMENT, r, p, null); return r || p; } // ';'? private static boolean throwStatement_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "throwStatement_2")) return false; consumeToken(b, OSEMI); return true; } /* ********************************************************** */ // importStatementAll | usingStatement | topLevelDeclaration static boolean topLevel(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "topLevel")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, null); r = importStatementAll(b, l + 1); if (!r) r = usingStatement(b, l + 1); if (!r) r = topLevelDeclaration(b, l + 1); exit_section_(b, l, m, null, r, false, top_level_recover_parser_); return r; } /* ********************************************************** */ // classDeclaration // | interfaceDeclaration // | externClassDeclaration // | externInterfaceDeclaration // | abstractClassDeclaration // | enumDeclaration // | typedefDeclaration static boolean topLevelDeclaration(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "topLevelDeclaration")) return false; boolean r; Marker m = enter_section_(b); r = classDeclaration(b, l + 1); if (!r) r = interfaceDeclaration(b, l + 1); if (!r) r = externClassDeclaration(b, l + 1); if (!r) r = externInterfaceDeclaration(b, l + 1); if (!r) r = abstractClassDeclaration(b, l + 1); if (!r) r = enumDeclaration(b, l + 1); if (!r) r = typedefDeclaration(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // topLevel* static boolean topLevelList(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "topLevelList")) return false; int c = current_position_(b); while (true) { if (!topLevel(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "topLevelList", c)) break; c = current_position_(b); } return true; } /* ********************************************************** */ // !(ppToken | metaKeyWord | 'abstract' | 'class' | 'enum' | 'extern' | 'import' | 'using' | 'interface' | 'private' | 'typedef') static boolean top_level_recover(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "top_level_recover")) return false; boolean r; Marker m = enter_section_(b, l, _NOT_, null); r = !top_level_recover_0(b, l + 1); exit_section_(b, l, m, null, r, false, null); return r; } // ppToken | metaKeyWord | 'abstract' | 'class' | 'enum' | 'extern' | 'import' | 'using' | 'interface' | 'private' | 'typedef' private static boolean top_level_recover_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "top_level_recover_0")) return false; boolean r; Marker m = enter_section_(b); r = ppToken(b, l + 1); if (!r) r = metaKeyWord(b, l + 1); if (!r) r = consumeToken(b, KABSTRACT); if (!r) r = consumeToken(b, KCLASS); if (!r) r = consumeToken(b, KENUM); if (!r) r = consumeToken(b, KEXTERN); if (!r) r = consumeToken(b, KIMPORT); if (!r) r = consumeToken(b, KUSING); if (!r) r = consumeToken(b, KINTERFACE); if (!r) r = consumeToken(b, KPRIVATE); if (!r) r = consumeToken(b, KTYPEDEF); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // 'try' statement ';'? catchStatement* public static boolean tryStatement(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "tryStatement")) return false; if (!nextTokenIs(b, KTRY)) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, null); r = consumeToken(b, KTRY); p = r; // pin = 1 r = r && report_error_(b, statement(b, l + 1)); r = p && report_error_(b, tryStatement_2(b, l + 1)) && r; r = p && tryStatement_3(b, l + 1) && r; exit_section_(b, l, m, TRY_STATEMENT, r, p, null); return r || p; } // ';'? private static boolean tryStatement_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "tryStatement_2")) return false; consumeToken(b, OSEMI); return true; } // catchStatement* private static boolean tryStatement_3(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "tryStatement_3")) return false; int c = current_position_(b); while (true) { if (!catchStatement(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "tryStatement_3", c)) break; c = current_position_(b); } return true; } /* ********************************************************** */ // referenceExpression qualifiedReferenceExpression* typeParam? public static boolean type(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "type")) return false; if (!nextTokenIs(b, ID)) return false; boolean r; Marker m = enter_section_(b); r = referenceExpression(b, l + 1); r = r && type_1(b, l + 1); r = r && type_2(b, l + 1); exit_section_(b, m, TYPE, r); return r; } // qualifiedReferenceExpression* private static boolean type_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "type_1")) return false; int c = current_position_(b); while (true) { if (!qualifiedReferenceExpression(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "type_1", c)) break; c = current_position_(b); } return true; } // typeParam? private static boolean type_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "type_2")) return false; typeParam(b, l + 1); return true; } /* ********************************************************** */ // '>' type public static boolean typeExtends(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "typeExtends")) return false; if (!nextTokenIs(b, OGREATER)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OGREATER); r = r && type(b, l + 1); exit_section_(b, m, TYPE_EXTENDS, r); return r; } /* ********************************************************** */ // typeListPart (',' typeListPart)* public static boolean typeList(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "typeList")) return false; if (!nextTokenIs(b, "<type list>", PLPAREN, PLCURLY, ID)) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<type list>"); r = typeListPart(b, l + 1); r = r && typeList_1(b, l + 1); exit_section_(b, l, m, TYPE_LIST, r, false, null); return r; } // (',' typeListPart)* private static boolean typeList_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "typeList_1")) return false; int c = current_position_(b); while (true) { if (!typeList_1_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "typeList_1", c)) break; c = current_position_(b); } return true; } // ',' typeListPart private static boolean typeList_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "typeList_1_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OCOMMA); r = r && typeListPart(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // functionTypeWrapper public static boolean typeListPart(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "typeListPart")) return false; if (!nextTokenIs(b, "<type list part>", PLPAREN, PLCURLY, ID)) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<type list part>"); r = functionTypeWrapper(b, l + 1); exit_section_(b, l, m, TYPE_LIST_PART, r, false, null); return r; } /* ********************************************************** */ // type | anonymousType public static boolean typeOrAnonymous(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "typeOrAnonymous")) return false; if (!nextTokenIs(b, "<type or anonymous>", PLCURLY, ID)) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<type or anonymous>"); r = type(b, l + 1); if (!r) r = anonymousType(b, l + 1); exit_section_(b, l, m, TYPE_OR_ANONYMOUS, r, false, null); return r; } /* ********************************************************** */ // '<' typeList '>' public static boolean typeParam(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "typeParam")) return false; if (!nextTokenIs(b, OLESS)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OLESS); r = r && typeList(b, l + 1); r = r && consumeToken(b, OGREATER); exit_section_(b, m, TYPE_PARAM, r); return r; } /* ********************************************************** */ // ':' functionTypeWrapper public static boolean typeTag(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "typeTag")) return false; if (!nextTokenIs(b, OCOLON)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OCOLON); r = r && functionTypeWrapper(b, l + 1); exit_section_(b, m, TYPE_TAG, r); return r; } /* ********************************************************** */ // macroClassList? externOrPrivate? 'typedef' componentName genericParam? '=' functionTypeWrapper ';'? public static boolean typedefDeclaration(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "typedefDeclaration")) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, "<typedef declaration>"); r = typedefDeclaration_0(b, l + 1); r = r && typedefDeclaration_1(b, l + 1); r = r && consumeToken(b, KTYPEDEF); r = r && componentName(b, l + 1); r = r && typedefDeclaration_4(b, l + 1); p = r; // pin = 5 r = r && report_error_(b, consumeToken(b, OASSIGN)); r = p && report_error_(b, functionTypeWrapper(b, l + 1)) && r; r = p && typedefDeclaration_7(b, l + 1) && r; exit_section_(b, l, m, TYPEDEF_DECLARATION, r, p, null); return r || p; } // macroClassList? private static boolean typedefDeclaration_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "typedefDeclaration_0")) return false; macroClassList(b, l + 1); return true; } // externOrPrivate? private static boolean typedefDeclaration_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "typedefDeclaration_1")) return false; externOrPrivate(b, l + 1); return true; } // genericParam? private static boolean typedefDeclaration_4(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "typedefDeclaration_4")) return false; genericParam(b, l + 1); return true; } // ';'? private static boolean typedefDeclaration_7(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "typedefDeclaration_7")) return false; consumeToken(b, OSEMI); return true; } /* ********************************************************** */ // '@:unreflective' public static boolean unreflectiveMeta(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "unreflectiveMeta")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<unreflective meta>"); r = consumeToken(b, "@:unreflective"); exit_section_(b, l, m, UNREFLECTIVE_META, r, false, null); return r; } /* ********************************************************** */ // '>' '>' '>' public static boolean unsignedShiftRightOperator(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "unsignedShiftRightOperator")) return false; if (!nextTokenIs(b, OGREATER)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OGREATER); r = r && consumeToken(b, OGREATER); r = r && consumeToken(b, OGREATER); exit_section_(b, m, UNSIGNED_SHIFT_RIGHT_OPERATOR, r); return r; } /* ********************************************************** */ // 'using' simpleQualifiedReferenceExpression ';' public static boolean usingStatement(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "usingStatement")) return false; if (!nextTokenIs(b, KUSING)) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, null); r = consumeToken(b, KUSING); p = r; // pin = 1 r = r && report_error_(b, simpleQualifiedReferenceExpression(b, l + 1)); r = p && consumeToken(b, OSEMI) && r; exit_section_(b, l, m, USING_STATEMENT, r, p, null); return r || p; } /* ********************************************************** */ // macroClassList? ('untyped' expression // | 'macro' expression // | (literalExpression qualifiedReferenceTail?) // | ifStatement // | castExpression qualifiedReferenceTail? // | newExpressionOrCall // | parenthesizedExpressionOrCall // | callOrArrayAccess // | tryStatement // | switchStatement) static boolean value(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "value")) return false; boolean r; Marker m = enter_section_(b); r = value_0(b, l + 1); r = r && value_1(b, l + 1); exit_section_(b, m, null, r); return r; } // macroClassList? private static boolean value_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "value_0")) return false; macroClassList(b, l + 1); return true; } // 'untyped' expression // | 'macro' expression // | (literalExpression qualifiedReferenceTail?) // | ifStatement // | castExpression qualifiedReferenceTail? // | newExpressionOrCall // | parenthesizedExpressionOrCall // | callOrArrayAccess // | tryStatement // | switchStatement private static boolean value_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "value_1")) return false; boolean r; Marker m = enter_section_(b); r = value_1_0(b, l + 1); if (!r) r = value_1_1(b, l + 1); if (!r) r = value_1_2(b, l + 1); if (!r) r = ifStatement(b, l + 1); if (!r) r = value_1_4(b, l + 1); if (!r) r = newExpressionOrCall(b, l + 1); if (!r) r = parenthesizedExpressionOrCall(b, l + 1); if (!r) r = callOrArrayAccess(b, l + 1); if (!r) r = tryStatement(b, l + 1); if (!r) r = switchStatement(b, l + 1); exit_section_(b, m, null, r); return r; } // 'untyped' expression private static boolean value_1_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "value_1_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KUNTYPED); r = r && expression(b, l + 1); exit_section_(b, m, null, r); return r; } // 'macro' expression private static boolean value_1_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "value_1_1")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, KMACRO2); r = r && expression(b, l + 1); exit_section_(b, m, null, r); return r; } // literalExpression qualifiedReferenceTail? private static boolean value_1_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "value_1_2")) return false; boolean r; Marker m = enter_section_(b); r = literalExpression(b, l + 1); r = r && value_1_2_1(b, l + 1); exit_section_(b, m, null, r); return r; } // qualifiedReferenceTail? private static boolean value_1_2_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "value_1_2_1")) return false; qualifiedReferenceTail(b, l + 1); return true; } // castExpression qualifiedReferenceTail? private static boolean value_1_4(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "value_1_4")) return false; boolean r; Marker m = enter_section_(b); r = castExpression(b, l + 1); r = r && value_1_4_1(b, l + 1); exit_section_(b, m, null, r); return r; } // qualifiedReferenceTail? private static boolean value_1_4_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "value_1_4_1")) return false; qualifiedReferenceTail(b, l + 1); return true; } /* ********************************************************** */ // (macroMember | declarationAttribute)* 'var' varDeclarationPartList ';' public static boolean varDeclaration(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "varDeclaration")) return false; if (!nextTokenIs(b, "<var declaration>", KAUTOBUILD, KBUILD, KDEBUG, KGETTER, KKEEP, KMACRO, KMETA, KNODEBUG, KNS, KPROTECTED, KREQUIRE, KSETTER, KDYNAMIC, KINLINE, KMACRO2, KOVERRIDE, KPRIVATE, KPUBLIC, KSTATIC, KVAR, MACRO_ID)) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, "<var declaration>"); r = varDeclaration_0(b, l + 1); r = r && consumeToken(b, KVAR); r = r && varDeclarationPartList(b, l + 1); p = r; // pin = 3 r = r && consumeToken(b, OSEMI); exit_section_(b, l, m, VAR_DECLARATION, r, p, null); return r || p; } // (macroMember | declarationAttribute)* private static boolean varDeclaration_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "varDeclaration_0")) return false; int c = current_position_(b); while (true) { if (!varDeclaration_0_0(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "varDeclaration_0", c)) break; c = current_position_(b); } return true; } // macroMember | declarationAttribute private static boolean varDeclaration_0_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "varDeclaration_0_0")) return false; boolean r; Marker m = enter_section_(b); r = macroMember(b, l + 1); if (!r) r = declarationAttribute(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // componentName propertyDeclaration? typeTag? varInit? public static boolean varDeclarationPart(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "varDeclarationPart")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, "<var declaration part>"); r = componentName(b, l + 1); r = r && varDeclarationPart_1(b, l + 1); r = r && varDeclarationPart_2(b, l + 1); r = r && varDeclarationPart_3(b, l + 1); exit_section_(b, l, m, VAR_DECLARATION_PART, r, false, var_declaration_part_recover_parser_); return r; } // propertyDeclaration? private static boolean varDeclarationPart_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "varDeclarationPart_1")) return false; propertyDeclaration(b, l + 1); return true; } // typeTag? private static boolean varDeclarationPart_2(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "varDeclarationPart_2")) return false; typeTag(b, l + 1); return true; } // varInit? private static boolean varDeclarationPart_3(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "varDeclarationPart_3")) return false; varInit(b, l + 1); return true; } /* ********************************************************** */ // varDeclarationPart static boolean varDeclarationPartList(PsiBuilder b, int l) { return varDeclarationPart(b, l + 1); } /* ********************************************************** */ // '=' expression public static boolean varInit(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "varInit")) return false; if (!nextTokenIs(b, OASSIGN)) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, null); r = consumeToken(b, OASSIGN); p = r; // pin = 1 r = r && expression(b, l + 1); exit_section_(b, l, m, VAR_INIT, r, p, null); return r || p; } /* ********************************************************** */ // !(';' | ',') static boolean var_declaration_part_recover(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "var_declaration_part_recover")) return false; boolean r; Marker m = enter_section_(b, l, _NOT_, null); r = !var_declaration_part_recover_0(b, l + 1); exit_section_(b, l, m, null, r, false, null); return r; } // ';' | ',' private static boolean var_declaration_part_recover_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "var_declaration_part_recover_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, OSEMI); if (!r) r = consumeToken(b, OCOMMA); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // 'while' '(' expression ')' statement ';'? public static boolean whileStatement(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "whileStatement")) return false; if (!nextTokenIs(b, KWHILE)) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, null); r = consumeToken(b, KWHILE); p = r; // pin = 1 r = r && report_error_(b, consumeToken(b, PLPAREN)); r = p && report_error_(b, expression(b, l + 1)) && r; r = p && report_error_(b, consumeToken(b, PRPAREN)) && r; r = p && report_error_(b, statement(b, l + 1)) && r; r = p && whileStatement_5(b, l + 1) && r; exit_section_(b, l, m, WHILE_STATEMENT, r, p, null); return r || p; } // ';'? private static boolean whileStatement_5(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "whileStatement_5")) return false; consumeToken(b, OSEMI); return true; } /* ********************************************************** */ // '.' '*' public static boolean wildcard(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "wildcard")) return false; if (!nextTokenIs(b, ODOT)) return false; boolean r; Marker m = enter_section_(b, l, _LEFT_, null); r = consumeToken(b, ODOT); r = r && consumeToken(b, OMUL); exit_section_(b, l, m, WILDCARD, r, false, null); return r; } final static Parser class_body_part_recover_parser_ = new Parser() { public boolean parse(PsiBuilder b, int l) { return class_body_part_recover(b, l + 1); } }; final static Parser enum_value_declaration_recovery_parser_ = new Parser() { public boolean parse(PsiBuilder b, int l) { return enum_value_declaration_recovery(b, l + 1); } }; final static Parser expression_list_recover_parser_ = new Parser() { public boolean parse(PsiBuilder b, int l) { return expression_list_recover(b, l + 1); } }; final static Parser expression_recover_parser_ = new Parser() { public boolean parse(PsiBuilder b, int l) { return expression_recover(b, l + 1); } }; final static Parser extern_class_body_part_recover_parser_ = new Parser() { public boolean parse(PsiBuilder b, int l) { return extern_class_body_part_recover(b, l + 1); } }; final static Parser inherit_recover_parser_ = new Parser() { public boolean parse(PsiBuilder b, int l) { return inherit_recover(b, l + 1); } }; final static Parser interface_body_part_recover_parser_ = new Parser() { public boolean parse(PsiBuilder b, int l) { return interface_body_part_recover(b, l + 1); } }; final static Parser local_var_declaration_part_recover_parser_ = new Parser() { public boolean parse(PsiBuilder b, int l) { return local_var_declaration_part_recover(b, l + 1); } }; final static Parser object_literal_list_recover_parser_ = new Parser() { public boolean parse(PsiBuilder b, int l) { return object_literal_list_recover(b, l + 1); } }; final static Parser object_literal_part_recover_parser_ = new Parser() { public boolean parse(PsiBuilder b, int l) { return object_literal_part_recover(b, l + 1); } }; final static Parser parameterListRecovery_parser_ = new Parser() { public boolean parse(PsiBuilder b, int l) { return parameterListRecovery(b, l + 1); } }; final static Parser statement_recovery_parser_ = new Parser() { public boolean parse(PsiBuilder b, int l) { return statement_recovery(b, l + 1); } }; final static Parser switch_case_recover_parser_ = new Parser() { public boolean parse(PsiBuilder b, int l) { return switch_case_recover(b, l + 1); } }; final static Parser top_level_recover_parser_ = new Parser() { public boolean parse(PsiBuilder b, int l) { return top_level_recover(b, l + 1); } }; final static Parser var_declaration_part_recover_parser_ = new Parser() { public boolean parse(PsiBuilder b, int l) { return var_declaration_part_recover(b, l + 1); } }; }