android-lang/gen/com/android/tools/idea/lang/proguardR8/parser/ProguardR8Parser.java (1,302 lines of code) (raw):

/* * Copyright (C) 2019 The Android Open Source Project * * 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. */ // ATTENTION: This file has been automatically generated from proguardR8.bnf. Do not edit it manually. package com.android.tools.idea.lang.proguardR8.parser; import com.intellij.lang.PsiBuilder; import com.intellij.lang.PsiBuilder.Marker; import static com.android.tools.idea.lang.proguardR8.psi.ProguardR8PsiTypes.*; 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; import com.intellij.lang.LightPsiParser; @SuppressWarnings({"SimplifiableIfStatement", "UnusedAssignment"}) public class ProguardR8Parser implements PsiParser, LightPsiParser { public ASTNode parse(IElementType type, PsiBuilder builder) { parseLight(type, builder); return builder.getTreeBuilt(); } public void parseLight(IElementType type, PsiBuilder builder) { boolean result; builder = adapt_builder_(type, builder, this, EXTENDS_SETS_); Marker marker = enter_section_(builder, 0, _COLLAPSE_, null); result = parse_root_(type, builder); exit_section_(builder, 0, marker, type, result, true, TRUE_CONDITION); } protected boolean parse_root_(IElementType type, PsiBuilder builder) { return parse_root_(type, builder, 0); } static boolean parse_root_(IElementType type, PsiBuilder builder, int level) { boolean result; if (type == QUALIFIED_NAME) { result = qualifiedName(builder, level + 1); } else { result = root(builder, level + 1); } return result; } public static final TokenSet[] EXTENDS_SETS_ = new TokenSet[] { create_token_set_(CLASS_MEMBER_NAME, CONSTRUCTOR_NAME), }; /* ********************************************************** */ // public|private|protected static boolean access_modifier(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "access_modifier")) return false; boolean result; result = consumeToken(builder, PUBLIC); if (!result) result = consumeToken(builder, PRIVATE); if (!result) result = consumeToken(builder, PROTECTED); return result; } /* ********************************************************** */ // AT qualifiedName public static boolean annotation_name(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "annotation_name")) return false; if (!nextTokenIs(builder, AT)) return false; boolean result; Marker marker = enter_section_(builder); result = consumeToken(builder, AT); result = result && qualifiedName(builder, level + 1); exit_section_(builder, marker, ANNOTATION_NAME, result); return result; } /* ********************************************************** */ // ASTERISK public static boolean any_field_or_method(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "any_field_or_method")) return false; if (!nextTokenIs(builder, ASTERISK)) return false; boolean result; Marker marker = enter_section_(builder); result = consumeToken(builder, ASTERISK); exit_section_(builder, marker, ANY_FIELD_OR_METHOD, result); return result; } /* ********************************************************** */ // DOUBLE_ASTERISK public static boolean any_not_primitive_type(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "any_not_primitive_type")) return false; if (!nextTokenIs(builder, DOUBLE_ASTERISK)) return false; boolean result; Marker marker = enter_section_(builder); result = consumeToken(builder, DOUBLE_ASTERISK); exit_section_(builder, marker, ANY_NOT_PRIMITIVE_TYPE, result); return result; } /* ********************************************************** */ // ANY_PRIMITIVE_TYPE_ public static boolean any_primitive_type(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "any_primitive_type")) return false; if (!nextTokenIs(builder, ANY_PRIMITIVE_TYPE_)) return false; boolean result; Marker marker = enter_section_(builder); result = consumeToken(builder, ANY_PRIMITIVE_TYPE_); exit_section_(builder, marker, ANY_PRIMITIVE_TYPE, result); return result; } /* ********************************************************** */ // ANY_TYPE_ public static boolean any_type(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "any_type")) return false; if (!nextTokenIs(builder, ANY_TYPE_)) return false; boolean result; Marker marker = enter_section_(builder); result = consumeToken(builder, ANY_TYPE_); exit_section_(builder, marker, ANY_TYPE, result); return result; } /* ********************************************************** */ // ("[" "]")+ public static boolean array_type(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "array_type")) return false; if (!nextTokenIs(builder, OPEN_BRACKET)) return false; boolean result; Marker marker = enter_section_(builder); result = array_type_0(builder, level + 1); while (result) { int pos = current_position_(builder); if (!array_type_0(builder, level + 1)) break; if (!empty_element_parsed_guard_(builder, "array_type", pos)) break; } exit_section_(builder, marker, ARRAY_TYPE, result); return result; } // "[" "]" private static boolean array_type_0(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "array_type_0")) return false; boolean result; Marker marker = enter_section_(builder); result = consumeTokens(builder, 0, OPEN_BRACKET, CLOSE_BRACKET); exit_section_(builder, marker, null, result); return result; } /* ********************************************************** */ // class_name (',' class_name)* static boolean class_filter(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "class_filter")) return false; boolean result; Marker marker = enter_section_(builder); result = class_name(builder, level + 1); result = result && class_filter_1(builder, level + 1); exit_section_(builder, marker, null, result); return result; } // (',' class_name)* private static boolean class_filter_1(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "class_filter_1")) return false; while (true) { int pos = current_position_(builder); if (!class_filter_1_0(builder, level + 1)) break; if (!empty_element_parsed_guard_(builder, "class_filter_1", pos)) break; } return true; } // ',' class_name private static boolean class_filter_1_0(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "class_filter_1_0")) return false; boolean result; Marker marker = enter_section_(builder); result = consumeToken(builder, COMMA); result = result && class_name(builder, level + 1); exit_section_(builder, marker, null, result); return result; } /* ********************************************************** */ // ((type class_member_name) | class_member_name !(java_identifier_|<fields>|<methods>)) !'.' static boolean class_member_core(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "class_member_core")) return false; boolean result; Marker marker = enter_section_(builder); result = class_member_core_0(builder, level + 1); result = result && class_member_core_1(builder, level + 1); exit_section_(builder, marker, null, result); return result; } // (type class_member_name) | class_member_name !(java_identifier_|<fields>|<methods>) private static boolean class_member_core_0(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "class_member_core_0")) return false; boolean result; Marker marker = enter_section_(builder); result = class_member_core_0_0(builder, level + 1); if (!result) result = class_member_core_0_1(builder, level + 1); exit_section_(builder, marker, null, result); return result; } // type class_member_name private static boolean class_member_core_0_0(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "class_member_core_0_0")) return false; boolean result; Marker marker = enter_section_(builder); result = type(builder, level + 1); result = result && class_member_name(builder, level + 1); exit_section_(builder, marker, null, result); return result; } // class_member_name !(java_identifier_|<fields>|<methods>) private static boolean class_member_core_0_1(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "class_member_core_0_1")) return false; boolean result; Marker marker = enter_section_(builder); result = class_member_name(builder, level + 1); result = result && class_member_core_0_1_1(builder, level + 1); exit_section_(builder, marker, null, result); return result; } // !(java_identifier_|<fields>|<methods>) private static boolean class_member_core_0_1_1(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "class_member_core_0_1_1")) return false; boolean result; Marker marker = enter_section_(builder, level, _NOT_); result = !class_member_core_0_1_1_0(builder, level + 1); exit_section_(builder, level, marker, result, false, null); return result; } // java_identifier_|<fields>|<methods> private static boolean class_member_core_0_1_1_0(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "class_member_core_0_1_1_0")) return false; boolean result; result = java_identifier_(builder, level + 1); if (!result) result = consumeToken(builder, _FIELDS_); if (!result) result = consumeToken(builder, _METHODS_); return result; } // !'.' private static boolean class_member_core_1(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "class_member_core_1")) return false; boolean result; Marker marker = enter_section_(builder, level, _NOT_); result = !consumeToken(builder, DOT); exit_section_(builder, level, marker, result, false, null); return result; } /* ********************************************************** */ // java_identifier_ public static boolean class_member_name(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "class_member_name")) return false; boolean result; Marker marker = enter_section_(builder, level, _NONE_, CLASS_MEMBER_NAME, "<class member name>"); result = java_identifier_(builder, level + 1); exit_section_(builder, level, marker, result, false, null); return result; } /* ********************************************************** */ // "!"?(public|final|abstract) public static boolean class_modifier(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "class_modifier")) return false; boolean result; Marker marker = enter_section_(builder, level, _NONE_, CLASS_MODIFIER, "<class modifier>"); result = class_modifier_0(builder, level + 1); result = result && class_modifier_1(builder, level + 1); exit_section_(builder, level, marker, result, false, null); return result; } // "!"? private static boolean class_modifier_0(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "class_modifier_0")) return false; consumeToken(builder, EM); return true; } // public|final|abstract private static boolean class_modifier_1(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "class_modifier_1")) return false; boolean result; result = consumeToken(builder, PUBLIC); if (!result) result = consumeToken(builder, FINAL); if (!result) result = consumeToken(builder, ABSTRACT); return result; } /* ********************************************************** */ // "!"? qualifiedName public static boolean class_name(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "class_name")) return false; boolean result; Marker marker = enter_section_(builder, level, _NONE_, CLASS_NAME, "<class name>"); result = class_name_0(builder, level + 1); result = result && qualifiedName(builder, level + 1); exit_section_(builder, level, marker, result, false, null); return result; } // "!"? private static boolean class_name_0(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "class_name_0")) return false; consumeToken(builder, EM); return true; } /* ********************************************************** */ // OPEN_BRACE java CLOSE_BRACE public static boolean class_specification_body(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "class_specification_body")) return false; if (!nextTokenIs(builder, OPEN_BRACE)) return false; boolean result, pinned; Marker marker = enter_section_(builder, level, _NONE_, CLASS_SPECIFICATION_BODY, null); result = consumeToken(builder, OPEN_BRACE); pinned = result; // pin = 1 result = result && report_error_(builder, java(builder, level + 1)); result = pinned && consumeToken(builder, CLOSE_BRACE) && result; exit_section_(builder, level, marker, result, pinned, null); return result || pinned; } /* ********************************************************** */ // annotation_name? class_modifier* class_type class_name (',' class_name)* ((extends|implements) annotation_name? super_class_name (',' super_class_name)*)? public static boolean class_specification_header(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "class_specification_header")) return false; boolean result, pinned; Marker marker = enter_section_(builder, level, _NONE_, CLASS_SPECIFICATION_HEADER, "<class specification header>"); result = class_specification_header_0(builder, level + 1); result = result && class_specification_header_1(builder, level + 1); result = result && class_type(builder, level + 1); pinned = result; // pin = class_type result = result && report_error_(builder, class_name(builder, level + 1)); result = pinned && report_error_(builder, class_specification_header_4(builder, level + 1)) && result; result = pinned && class_specification_header_5(builder, level + 1) && result; exit_section_(builder, level, marker, result, pinned, ProguardR8Parser::not_open_brace_or_new_flag); return result || pinned; } // annotation_name? private static boolean class_specification_header_0(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "class_specification_header_0")) return false; annotation_name(builder, level + 1); return true; } // class_modifier* private static boolean class_specification_header_1(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "class_specification_header_1")) return false; while (true) { int pos = current_position_(builder); if (!class_modifier(builder, level + 1)) break; if (!empty_element_parsed_guard_(builder, "class_specification_header_1", pos)) break; } return true; } // (',' class_name)* private static boolean class_specification_header_4(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "class_specification_header_4")) return false; while (true) { int pos = current_position_(builder); if (!class_specification_header_4_0(builder, level + 1)) break; if (!empty_element_parsed_guard_(builder, "class_specification_header_4", pos)) break; } return true; } // ',' class_name private static boolean class_specification_header_4_0(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "class_specification_header_4_0")) return false; boolean result; Marker marker = enter_section_(builder); result = consumeToken(builder, COMMA); result = result && class_name(builder, level + 1); exit_section_(builder, marker, null, result); return result; } // ((extends|implements) annotation_name? super_class_name (',' super_class_name)*)? private static boolean class_specification_header_5(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "class_specification_header_5")) return false; class_specification_header_5_0(builder, level + 1); return true; } // (extends|implements) annotation_name? super_class_name (',' super_class_name)* private static boolean class_specification_header_5_0(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "class_specification_header_5_0")) return false; boolean result; Marker marker = enter_section_(builder); result = class_specification_header_5_0_0(builder, level + 1); result = result && class_specification_header_5_0_1(builder, level + 1); result = result && super_class_name(builder, level + 1); result = result && class_specification_header_5_0_3(builder, level + 1); exit_section_(builder, marker, null, result); return result; } // extends|implements private static boolean class_specification_header_5_0_0(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "class_specification_header_5_0_0")) return false; boolean result; result = consumeToken(builder, EXTENDS); if (!result) result = consumeToken(builder, IMPLEMENTS); return result; } // annotation_name? private static boolean class_specification_header_5_0_1(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "class_specification_header_5_0_1")) return false; annotation_name(builder, level + 1); return true; } // (',' super_class_name)* private static boolean class_specification_header_5_0_3(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "class_specification_header_5_0_3")) return false; while (true) { int pos = current_position_(builder); if (!class_specification_header_5_0_3_0(builder, level + 1)) break; if (!empty_element_parsed_guard_(builder, "class_specification_header_5_0_3", pos)) break; } return true; } // ',' super_class_name private static boolean class_specification_header_5_0_3_0(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "class_specification_header_5_0_3_0")) return false; boolean result; Marker marker = enter_section_(builder); result = consumeToken(builder, COMMA); result = result && super_class_name(builder, level + 1); exit_section_(builder, marker, null, result); return result; } /* ********************************************************** */ // "!"?(interface|class|enum|AT_INTERFACE) public static boolean class_type(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "class_type")) return false; boolean result; Marker marker = enter_section_(builder, level, _NONE_, CLASS_TYPE, "<class type>"); result = class_type_0(builder, level + 1); result = result && class_type_1(builder, level + 1); exit_section_(builder, level, marker, result, false, null); return result; } // "!"? private static boolean class_type_0(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "class_type_0")) return false; consumeToken(builder, EM); return true; } // interface|class|enum|AT_INTERFACE private static boolean class_type_1(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "class_type_1")) return false; boolean result; result = consumeToken(builder, INTERFACE); if (!result) result = consumeToken(builder, CLASS); if (!result) result = consumeToken(builder, ENUM); if (!result) result = consumeToken(builder, AT_INTERFACE); return result; } /* ********************************************************** */ // qualifiedName public static boolean constructor_name(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "constructor_name")) return false; boolean result; Marker marker = enter_section_(builder, level, _NONE_, CONSTRUCTOR_NAME, "<constructor name>"); result = qualifiedName(builder, level + 1); exit_section_(builder, level, marker, result, false, null); return result; } /* ********************************************************** */ // annotation_name? !method_only_modifiers fields_modifier* class_member_core public static boolean field(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "field")) return false; boolean result; Marker marker = enter_section_(builder, level, _NONE_, FIELD, "<field>"); result = field_0(builder, level + 1); result = result && field_1(builder, level + 1); result = result && field_2(builder, level + 1); result = result && class_member_core(builder, level + 1); exit_section_(builder, level, marker, result, false, null); return result; } // annotation_name? private static boolean field_0(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "field_0")) return false; annotation_name(builder, level + 1); return true; } // !method_only_modifiers private static boolean field_1(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "field_1")) return false; boolean result; Marker marker = enter_section_(builder, level, _NOT_); result = !method_only_modifiers(builder, level + 1); exit_section_(builder, level, marker, result, false, null); return result; } // fields_modifier* private static boolean field_2(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "field_2")) return false; while (true) { int pos = current_position_(builder); if (!fields_modifier(builder, level + 1)) break; if (!empty_element_parsed_guard_(builder, "field_2", pos)) break; } return true; } /* ********************************************************** */ // "!"?(static|volatile|transient|final|access_modifier) !'.' public static boolean fields_modifier(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "fields_modifier")) return false; boolean result; Marker marker = enter_section_(builder, level, _NONE_, MODIFIER, "<fields modifier>"); result = fields_modifier_0(builder, level + 1); result = result && fields_modifier_1(builder, level + 1); result = result && fields_modifier_2(builder, level + 1); exit_section_(builder, level, marker, result, false, null); return result; } // "!"? private static boolean fields_modifier_0(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "fields_modifier_0")) return false; consumeToken(builder, EM); return true; } // static|volatile|transient|final|access_modifier private static boolean fields_modifier_1(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "fields_modifier_1")) return false; boolean result; result = consumeToken(builder, STATIC); if (!result) result = consumeToken(builder, VOLATILE); if (!result) result = consumeToken(builder, TRANSIENT); if (!result) result = consumeToken(builder, FINAL); if (!result) result = access_modifier(builder, level + 1); return result; } // !'.' private static boolean fields_modifier_2(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "fields_modifier_2")) return false; boolean result; Marker marker = enter_section_(builder, level, _NOT_); result = !consumeToken(builder, DOT); exit_section_(builder, level, marker, result, false, null); return result; } /* ********************************************************** */ // (field | (annotation_name? !method_only_modifiers fields_modifier* (<fields>|any_field_or_method))) !parameters public static boolean fields_specification(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "fields_specification")) return false; boolean result; Marker marker = enter_section_(builder, level, _NONE_, FIELDS_SPECIFICATION, "<fields specification>"); result = fields_specification_0(builder, level + 1); result = result && fields_specification_1(builder, level + 1); exit_section_(builder, level, marker, result, false, null); return result; } // field | (annotation_name? !method_only_modifiers fields_modifier* (<fields>|any_field_or_method)) private static boolean fields_specification_0(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "fields_specification_0")) return false; boolean result; Marker marker = enter_section_(builder); result = field(builder, level + 1); if (!result) result = fields_specification_0_1(builder, level + 1); exit_section_(builder, marker, null, result); return result; } // annotation_name? !method_only_modifiers fields_modifier* (<fields>|any_field_or_method) private static boolean fields_specification_0_1(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "fields_specification_0_1")) return false; boolean result; Marker marker = enter_section_(builder); result = fields_specification_0_1_0(builder, level + 1); result = result && fields_specification_0_1_1(builder, level + 1); result = result && fields_specification_0_1_2(builder, level + 1); result = result && fields_specification_0_1_3(builder, level + 1); exit_section_(builder, marker, null, result); return result; } // annotation_name? private static boolean fields_specification_0_1_0(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "fields_specification_0_1_0")) return false; annotation_name(builder, level + 1); return true; } // !method_only_modifiers private static boolean fields_specification_0_1_1(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "fields_specification_0_1_1")) return false; boolean result; Marker marker = enter_section_(builder, level, _NOT_); result = !method_only_modifiers(builder, level + 1); exit_section_(builder, level, marker, result, false, null); return result; } // fields_modifier* private static boolean fields_specification_0_1_2(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "fields_specification_0_1_2")) return false; while (true) { int pos = current_position_(builder); if (!fields_modifier(builder, level + 1)) break; if (!empty_element_parsed_guard_(builder, "fields_specification_0_1_2", pos)) break; } return true; } // <fields>|any_field_or_method private static boolean fields_specification_0_1_3(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "fields_specification_0_1_3")) return false; boolean result; result = consumeToken(builder, _FIELDS_); if (!result) result = any_field_or_method(builder, level + 1); return result; } // !parameters private static boolean fields_specification_1(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "fields_specification_1")) return false; boolean result; Marker marker = enter_section_(builder, level, _NOT_); result = !parameters(builder, level + 1); exit_section_(builder, level, marker, result, false, null); return result; } /* ********************************************************** */ // "!"?(FILE_NAME|SINGLE_QUOTED_STRING|DOUBLE_QUOTED_STRING|UNTERMINATED_SINGLE_QUOTED_STRING|UNTERMINATED_DOUBLE_QUOTED_STRING|ASTERISK) public static boolean file(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "file")) return false; boolean result; Marker marker = enter_section_(builder, level, _NONE_, FILE, "<file>"); result = file_0(builder, level + 1); result = result && file_1(builder, level + 1); exit_section_(builder, level, marker, result, false, null); return result; } // "!"? private static boolean file_0(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "file_0")) return false; consumeToken(builder, EM); return true; } // FILE_NAME|SINGLE_QUOTED_STRING|DOUBLE_QUOTED_STRING|UNTERMINATED_SINGLE_QUOTED_STRING|UNTERMINATED_DOUBLE_QUOTED_STRING|ASTERISK private static boolean file_1(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "file_1")) return false; boolean result; result = consumeToken(builder, FILE_NAME); if (!result) result = consumeToken(builder, SINGLE_QUOTED_STRING); if (!result) result = consumeToken(builder, DOUBLE_QUOTED_STRING); if (!result) result = consumeToken(builder, UNTERMINATED_SINGLE_QUOTED_STRING); if (!result) result = consumeToken(builder, UNTERMINATED_DOUBLE_QUOTED_STRING); if (!result) result = consumeToken(builder, ASTERISK); return result; } /* ********************************************************** */ // file_list (',' file_list)* public static boolean file_filter(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "file_filter")) return false; boolean result; Marker marker = enter_section_(builder, level, _NONE_, FILE_FILTER, "<file filter>"); result = file_list(builder, level + 1); result = result && file_filter_1(builder, level + 1); exit_section_(builder, level, marker, result, false, null); return result; } // (',' file_list)* private static boolean file_filter_1(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "file_filter_1")) return false; while (true) { int pos = current_position_(builder); if (!file_filter_1_0(builder, level + 1)) break; if (!empty_element_parsed_guard_(builder, "file_filter_1", pos)) break; } return true; } // ',' file_list private static boolean file_filter_1_0(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "file_filter_1_0")) return false; boolean result; Marker marker = enter_section_(builder); result = consumeToken(builder, COMMA); result = result && file_list(builder, level + 1); exit_section_(builder, marker, null, result); return result; } /* ********************************************************** */ // file ((':'|';') file)* static boolean file_list(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "file_list")) return false; boolean result; Marker marker = enter_section_(builder); result = file(builder, level + 1); result = result && file_list_1(builder, level + 1); exit_section_(builder, marker, null, result); return result; } // ((':'|';') file)* private static boolean file_list_1(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "file_list_1")) return false; while (true) { int pos = current_position_(builder); if (!file_list_1_0(builder, level + 1)) break; if (!empty_element_parsed_guard_(builder, "file_list_1", pos)) break; } return true; } // (':'|';') file private static boolean file_list_1_0(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "file_list_1_0")) return false; boolean result; Marker marker = enter_section_(builder); result = file_list_1_0_0(builder, level + 1); result = result && file(builder, level + 1); exit_section_(builder, marker, null, result); return result; } // ':'|';' private static boolean file_list_1_0_0(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "file_list_1_0_0")) return false; boolean result; result = consumeToken(builder, COLON); if (!result) result = consumeToken(builder, SEMICOLON); return result; } /* ********************************************************** */ // FLAG_TOKEN public static boolean flag(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "flag")) return false; if (!nextTokenIs(builder, FLAG_TOKEN)) return false; boolean result; Marker marker = enter_section_(builder); result = consumeToken(builder, FLAG_TOKEN); exit_section_(builder, marker, FLAG, result); return result; } /* ********************************************************** */ // file_list ('(' file_filter ')')? public static boolean flag_argument(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "flag_argument")) return false; boolean result; Marker marker = enter_section_(builder, level, _NONE_, FLAG_ARGUMENT, "<flag argument>"); result = file_list(builder, level + 1); result = result && flag_argument_1(builder, level + 1); exit_section_(builder, level, marker, result, false, null); return result; } // ('(' file_filter ')')? private static boolean flag_argument_1(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "flag_argument_1")) return false; flag_argument_1_0(builder, level + 1); return true; } // '(' file_filter ')' private static boolean flag_argument_1_0(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "flag_argument_1_0")) return false; boolean result; Marker marker = enter_section_(builder); result = consumeToken(builder, LPAREN); result = result && file_filter(builder, level + 1); result = result && consumeToken(builder, RPAREN); exit_section_(builder, marker, null, result); return result; } /* ********************************************************** */ // "-dontnote"|"-dontwarn" public static boolean flag_with_class_filter(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "flag_with_class_filter")) return false; boolean result; Marker marker = enter_section_(builder, level, _NONE_, FLAG, "<flag with class filter>"); result = consumeToken(builder, "-dontnote"); if (!result) result = consumeToken(builder, "-dontwarn"); exit_section_(builder, level, marker, result, false, null); return result; } /* ********************************************************** */ // method_modifier* constructor_name parameters public static boolean fully_qualified_name_constructor(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "fully_qualified_name_constructor")) return false; boolean result, pinned; Marker marker = enter_section_(builder, level, _NONE_, FULLY_QUALIFIED_NAME_CONSTRUCTOR, "<fully qualified name constructor>"); result = fully_qualified_name_constructor_0(builder, level + 1); result = result && constructor_name(builder, level + 1); pinned = result; // pin = 2 result = result && parameters(builder, level + 1); exit_section_(builder, level, marker, result, pinned, null); return result || pinned; } // method_modifier* private static boolean fully_qualified_name_constructor_0(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "fully_qualified_name_constructor_0")) return false; while (true) { int pos = current_position_(builder); if (!method_modifier(builder, level + 1)) break; if (!empty_element_parsed_guard_(builder, "fully_qualified_name_constructor_0", pos)) break; } return true; } /* ********************************************************** */ // '@' file public static boolean include_file(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "include_file")) return false; boolean result, pinned; Marker marker = enter_section_(builder, level, _NONE_, INCLUDE_FILE, "<include file>"); result = consumeToken(builder, AT); pinned = result; // pin = 1 result = result && file(builder, level + 1); exit_section_(builder, level, marker, result, pinned, ProguardR8Parser::not_flag); return result || pinned; } /* ********************************************************** */ // (<init>|<clinit>) parameters static boolean init_description(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "init_description")) return false; if (!nextTokenIs(builder, "", _CLINIT_, _INIT_)) return false; boolean result; Marker marker = enter_section_(builder); result = init_description_0(builder, level + 1); result = result && parameters(builder, level + 1); exit_section_(builder, marker, null, result); return result; } // <init>|<clinit> private static boolean init_description_0(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "init_description_0")) return false; boolean result; result = consumeToken(builder, _INIT_); if (!result) result = consumeToken(builder, _CLINIT_); return result; } /* ********************************************************** */ // (java_rule ';')* static boolean java(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "java")) return false; while (true) { int pos = current_position_(builder); if (!java_0(builder, level + 1)) break; if (!empty_element_parsed_guard_(builder, "java", pos)) break; } return true; } // java_rule ';' private static boolean java_0(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "java_0")) return false; boolean result, pinned; Marker marker = enter_section_(builder, level, _NONE_); result = java_rule(builder, level + 1); pinned = result; // pin = 1 result = result && consumeToken(builder, SEMICOLON); exit_section_(builder, level, marker, result, pinned, null); return result || pinned; } /* ********************************************************** */ // JAVA_IDENTIFIER|JAVA_IDENTIFIER_WITH_WILDCARDS|ASTERISK|DOUBLE_ASTERISK|java_keywords_ static boolean java_identifier_(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "java_identifier_")) return false; boolean result; result = consumeToken(builder, JAVA_IDENTIFIER); if (!result) result = consumeToken(builder, JAVA_IDENTIFIER_WITH_WILDCARDS); if (!result) result = consumeToken(builder, ASTERISK); if (!result) result = consumeToken(builder, DOUBLE_ASTERISK); if (!result) result = java_keywords_(builder, level + 1); return result; } /* ********************************************************** */ // interface|class|enum|public|final|abstract|static|volatile|transient|synchronized|native|strictfp|boolean|byte| // char|short|int|long|float|double|void|extends|implements|private|protected static boolean java_keywords_(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "java_keywords_")) return false; boolean result; result = consumeToken(builder, INTERFACE); if (!result) result = consumeToken(builder, CLASS); if (!result) result = consumeToken(builder, ENUM); if (!result) result = consumeToken(builder, PUBLIC); if (!result) result = consumeToken(builder, FINAL); if (!result) result = consumeToken(builder, ABSTRACT); if (!result) result = consumeToken(builder, STATIC); if (!result) result = consumeToken(builder, VOLATILE); if (!result) result = consumeToken(builder, TRANSIENT); if (!result) result = consumeToken(builder, SYNCHRONIZED); if (!result) result = consumeToken(builder, NATIVE); if (!result) result = consumeToken(builder, STRICTFP); if (!result) result = consumeToken(builder, BOOLEAN); if (!result) result = consumeToken(builder, BYTE); if (!result) result = consumeToken(builder, CHAR); if (!result) result = consumeToken(builder, SHORT); if (!result) result = consumeToken(builder, INT); if (!result) result = consumeToken(builder, LONG); if (!result) result = consumeToken(builder, FLOAT); if (!result) result = consumeToken(builder, DOUBLE); if (!result) result = consumeToken(builder, VOID); if (!result) result = consumeToken(builder, EXTENDS); if (!result) result = consumeToken(builder, IMPLEMENTS); if (!result) result = consumeToken(builder, PRIVATE); if (!result) result = consumeToken(builder, PROTECTED); return result; } /* ********************************************************** */ // boolean|byte|char|short|int|long|float|double|void public static boolean java_primitive(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "java_primitive")) return false; boolean result; Marker marker = enter_section_(builder, level, _NONE_, JAVA_PRIMITIVE, "<java primitive>"); result = consumeToken(builder, BOOLEAN); if (!result) result = consumeToken(builder, BYTE); if (!result) result = consumeToken(builder, CHAR); if (!result) result = consumeToken(builder, SHORT); if (!result) result = consumeToken(builder, INT); if (!result) result = consumeToken(builder, LONG); if (!result) result = consumeToken(builder, FLOAT); if (!result) result = consumeToken(builder, DOUBLE); if (!result) result = consumeToken(builder, VOID); exit_section_(builder, level, marker, result, false, null); return result; } /* ********************************************************** */ // !(<<eof>>|CLOSE_BRACE|WHITE_SPACE) (fields_specification|method_specification) &';' public static boolean java_rule(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "java_rule")) return false; boolean result, pinned; Marker marker = enter_section_(builder, level, _NONE_, JAVA_RULE, "<java rule>"); result = java_rule_0(builder, level + 1); pinned = result; // pin = 1 result = result && report_error_(builder, java_rule_1(builder, level + 1)); result = pinned && java_rule_2(builder, level + 1) && result; exit_section_(builder, level, marker, result, pinned, ProguardR8Parser::not_semicolon_or_brace); return result || pinned; } // !(<<eof>>|CLOSE_BRACE|WHITE_SPACE) private static boolean java_rule_0(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "java_rule_0")) return false; boolean result; Marker marker = enter_section_(builder, level, _NOT_); result = !java_rule_0_0(builder, level + 1); exit_section_(builder, level, marker, result, false, null); return result; } // <<eof>>|CLOSE_BRACE|WHITE_SPACE private static boolean java_rule_0_0(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "java_rule_0_0")) return false; boolean result; Marker marker = enter_section_(builder); result = eof(builder, level + 1); if (!result) result = consumeToken(builder, CLOSE_BRACE); if (!result) result = consumeToken(builder, WHITE_SPACE); exit_section_(builder, marker, null, result); return result; } // fields_specification|method_specification private static boolean java_rule_1(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "java_rule_1")) return false; boolean result; result = fields_specification(builder, level + 1); if (!result) result = method_specification(builder, level + 1); return result; } // &';' private static boolean java_rule_2(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "java_rule_2")) return false; boolean result; Marker marker = enter_section_(builder, level, _AND_); result = consumeToken(builder, SEMICOLON); exit_section_(builder, level, marker, result, false, null); return result; } /* ********************************************************** */ // includedescriptorclasses|includecode|allowshrinking|allowoptimization|allowobfuscation public static boolean keep_option_modifier(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "keep_option_modifier")) return false; boolean result; Marker marker = enter_section_(builder, level, _NONE_, KEEP_OPTION_MODIFIER, "<keep option modifier>"); result = consumeToken(builder, INCLUDEDESCRIPTORCLASSES); if (!result) result = consumeToken(builder, INCLUDECODE); if (!result) result = consumeToken(builder, ALLOWSHRINKING); if (!result) result = consumeToken(builder, ALLOWOPTIMIZATION); if (!result) result = consumeToken(builder, ALLOWOBFUSCATION); exit_section_(builder, level, marker, result, false, null); return result; } /* ********************************************************** */ // annotation_name? method_modifier* class_member_core parameters (return values)? public static boolean method(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "method")) return false; boolean result; Marker marker = enter_section_(builder, level, _NONE_, METHOD, "<method>"); result = method_0(builder, level + 1); result = result && method_1(builder, level + 1); result = result && class_member_core(builder, level + 1); result = result && parameters(builder, level + 1); result = result && method_4(builder, level + 1); exit_section_(builder, level, marker, result, false, null); return result; } // annotation_name? private static boolean method_0(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "method_0")) return false; annotation_name(builder, level + 1); return true; } // method_modifier* private static boolean method_1(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "method_1")) return false; while (true) { int pos = current_position_(builder); if (!method_modifier(builder, level + 1)) break; if (!empty_element_parsed_guard_(builder, "method_1", pos)) break; } return true; } // (return values)? private static boolean method_4(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "method_4")) return false; method_4_0(builder, level + 1); return true; } // return values private static boolean method_4_0(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "method_4_0")) return false; boolean result; Marker marker = enter_section_(builder); result = consumeTokens(builder, 0, RETURN, VALUES); exit_section_(builder, marker, null, result); return result; } /* ********************************************************** */ // ("!"?(static|final|synthetic|access_modifier)|method_only_modifiers) !'.' public static boolean method_modifier(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "method_modifier")) return false; boolean result; Marker marker = enter_section_(builder, level, _NONE_, MODIFIER, "<method modifier>"); result = method_modifier_0(builder, level + 1); result = result && method_modifier_1(builder, level + 1); exit_section_(builder, level, marker, result, false, null); return result; } // "!"?(static|final|synthetic|access_modifier)|method_only_modifiers private static boolean method_modifier_0(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "method_modifier_0")) return false; boolean result; Marker marker = enter_section_(builder); result = method_modifier_0_0(builder, level + 1); if (!result) result = method_only_modifiers(builder, level + 1); exit_section_(builder, marker, null, result); return result; } // "!"?(static|final|synthetic|access_modifier) private static boolean method_modifier_0_0(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "method_modifier_0_0")) return false; boolean result; Marker marker = enter_section_(builder); result = method_modifier_0_0_0(builder, level + 1); result = result && method_modifier_0_0_1(builder, level + 1); exit_section_(builder, marker, null, result); return result; } // "!"? private static boolean method_modifier_0_0_0(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "method_modifier_0_0_0")) return false; consumeToken(builder, EM); return true; } // static|final|synthetic|access_modifier private static boolean method_modifier_0_0_1(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "method_modifier_0_0_1")) return false; boolean result; result = consumeToken(builder, STATIC); if (!result) result = consumeToken(builder, FINAL); if (!result) result = consumeToken(builder, SYNTHETIC); if (!result) result = access_modifier(builder, level + 1); return result; } // !'.' private static boolean method_modifier_1(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "method_modifier_1")) return false; boolean result; Marker marker = enter_section_(builder, level, _NOT_); result = !consumeToken(builder, DOT); exit_section_(builder, level, marker, result, false, null); return result; } /* ********************************************************** */ // "!"?(synchronized|native|abstract|strictfp) static boolean method_only_modifiers(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "method_only_modifiers")) return false; boolean result; Marker marker = enter_section_(builder); result = method_only_modifiers_0(builder, level + 1); result = result && method_only_modifiers_1(builder, level + 1); exit_section_(builder, marker, null, result); return result; } // "!"? private static boolean method_only_modifiers_0(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "method_only_modifiers_0")) return false; consumeToken(builder, EM); return true; } // synchronized|native|abstract|strictfp private static boolean method_only_modifiers_1(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "method_only_modifiers_1")) return false; boolean result; result = consumeToken(builder, SYNCHRONIZED); if (!result) result = consumeToken(builder, NATIVE); if (!result) result = consumeToken(builder, ABSTRACT); if (!result) result = consumeToken(builder, STRICTFP); return result; } /* ********************************************************** */ // method | fully_qualified_name_constructor | (annotation_name? method_modifier* (<methods> | init_description | any_field_or_method)) public static boolean method_specification(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "method_specification")) return false; boolean result; Marker marker = enter_section_(builder, level, _NONE_, METHOD_SPECIFICATION, "<method specification>"); result = method(builder, level + 1); if (!result) result = fully_qualified_name_constructor(builder, level + 1); if (!result) result = method_specification_2(builder, level + 1); exit_section_(builder, level, marker, result, false, null); return result; } // annotation_name? method_modifier* (<methods> | init_description | any_field_or_method) private static boolean method_specification_2(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "method_specification_2")) return false; boolean result; Marker marker = enter_section_(builder); result = method_specification_2_0(builder, level + 1); result = result && method_specification_2_1(builder, level + 1); result = result && method_specification_2_2(builder, level + 1); exit_section_(builder, marker, null, result); return result; } // annotation_name? private static boolean method_specification_2_0(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "method_specification_2_0")) return false; annotation_name(builder, level + 1); return true; } // method_modifier* private static boolean method_specification_2_1(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "method_specification_2_1")) return false; while (true) { int pos = current_position_(builder); if (!method_modifier(builder, level + 1)) break; if (!empty_element_parsed_guard_(builder, "method_specification_2_1", pos)) break; } return true; } // <methods> | init_description | any_field_or_method private static boolean method_specification_2_2(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "method_specification_2_2")) return false; boolean result; result = consumeToken(builder, _METHODS_); if (!result) result = init_description(builder, level + 1); if (!result) result = any_field_or_method(builder, level + 1); return result; } /* ********************************************************** */ // !CLOSE_BRACE static boolean not_close_brace(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "not_close_brace")) return false; boolean result; Marker marker = enter_section_(builder, level, _NOT_); result = !consumeToken(builder, CLOSE_BRACE); exit_section_(builder, level, marker, result, false, null); return result; } /* ********************************************************** */ // !FLAG_TOKEN static boolean not_flag(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "not_flag")) return false; boolean result; Marker marker = enter_section_(builder, level, _NOT_); result = !consumeToken(builder, FLAG_TOKEN); exit_section_(builder, level, marker, result, false, null); return result; } /* ********************************************************** */ // !(OPEN_BRACE|FLAG_TOKEN) static boolean not_open_brace_or_new_flag(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "not_open_brace_or_new_flag")) return false; boolean result; Marker marker = enter_section_(builder, level, _NOT_); result = !not_open_brace_or_new_flag_0(builder, level + 1); exit_section_(builder, level, marker, result, false, null); return result; } // OPEN_BRACE|FLAG_TOKEN private static boolean not_open_brace_or_new_flag_0(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "not_open_brace_or_new_flag_0")) return false; boolean result; result = consumeToken(builder, OPEN_BRACE); if (!result) result = consumeToken(builder, FLAG_TOKEN); return result; } /* ********************************************************** */ // !RPAREN static boolean not_right_paren(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "not_right_paren")) return false; boolean result; Marker marker = enter_section_(builder, level, _NOT_); result = !consumeToken(builder, RPAREN); exit_section_(builder, level, marker, result, false, null); return result; } /* ********************************************************** */ // !(SEMICOLON|CLOSE_BRACE) static boolean not_semicolon_or_brace(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "not_semicolon_or_brace")) return false; boolean result; Marker marker = enter_section_(builder, level, _NOT_); result = !not_semicolon_or_brace_0(builder, level + 1); exit_section_(builder, level, marker, result, false, null); return result; } // SEMICOLON|CLOSE_BRACE private static boolean not_semicolon_or_brace_0(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "not_semicolon_or_brace_0")) return false; boolean result; result = consumeToken(builder, SEMICOLON); if (!result) result = consumeToken(builder, CLOSE_BRACE); return result; } /* ********************************************************** */ // LPAREN (ANY_TYPE_AND_NUM_OF_ARGS|type_list) RPAREN public static boolean parameters(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "parameters")) return false; if (!nextTokenIs(builder, LPAREN)) return false; boolean result, pinned; Marker marker = enter_section_(builder, level, _NONE_, PARAMETERS, null); result = consumeToken(builder, LPAREN); pinned = result; // pin = 1 result = result && report_error_(builder, parameters_1(builder, level + 1)); result = pinned && consumeToken(builder, RPAREN) && result; exit_section_(builder, level, marker, result, pinned, null); return result || pinned; } // ANY_TYPE_AND_NUM_OF_ARGS|type_list private static boolean parameters_1(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "parameters_1")) return false; boolean result; Marker marker = enter_section_(builder); result = consumeToken(builder, ANY_TYPE_AND_NUM_OF_ARGS); if (!result) result = type_list(builder, level + 1); exit_section_(builder, marker, null, result); return result; } /* ********************************************************** */ // (java_identifier_ ("." java_identifier_)*)|quoted_identifier public static boolean qualifiedName(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "qualifiedName")) return false; boolean result; Marker marker = enter_section_(builder, level, _NONE_, QUALIFIED_NAME, "<qualified name>"); result = qualifiedName_0(builder, level + 1); if (!result) result = quoted_identifier(builder, level + 1); exit_section_(builder, level, marker, result, false, null); return result; } // java_identifier_ ("." java_identifier_)* private static boolean qualifiedName_0(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "qualifiedName_0")) return false; boolean result; Marker marker = enter_section_(builder); result = java_identifier_(builder, level + 1); result = result && qualifiedName_0_1(builder, level + 1); exit_section_(builder, marker, null, result); return result; } // ("." java_identifier_)* private static boolean qualifiedName_0_1(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "qualifiedName_0_1")) return false; while (true) { int pos = current_position_(builder); if (!qualifiedName_0_1_0(builder, level + 1)) break; if (!empty_element_parsed_guard_(builder, "qualifiedName_0_1", pos)) break; } return true; } // "." java_identifier_ private static boolean qualifiedName_0_1_0(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "qualifiedName_0_1_0")) return false; boolean result; Marker marker = enter_section_(builder); result = consumeToken(builder, DOT); result = result && java_identifier_(builder, level + 1); exit_section_(builder, marker, null, result); return result; } /* ********************************************************** */ // SINGLE_QUOTED_CLASS|DOUBLE_QUOTED_CLASS|UNTERMINATED_SINGLE_QUOTED_CLASS|UNTERMINATED_DOUBLE_QUOTED_CLASS static boolean quoted_identifier(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "quoted_identifier")) return false; boolean result; result = consumeToken(builder, SINGLE_QUOTED_CLASS); if (!result) result = consumeToken(builder, DOUBLE_QUOTED_CLASS); if (!result) result = consumeToken(builder, UNTERMINATED_SINGLE_QUOTED_CLASS); if (!result) result = consumeToken(builder, UNTERMINATED_DOUBLE_QUOTED_CLASS); return result; } /* ********************************************************** */ // (include_file|rule_)* static boolean root(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "root")) return false; while (true) { int pos = current_position_(builder); if (!root_0(builder, level + 1)) break; if (!empty_element_parsed_guard_(builder, "root", pos)) break; } return true; } // include_file|rule_ private static boolean root_0(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "root_0")) return false; boolean result; Marker marker = enter_section_(builder); result = include_file(builder, level + 1); if (!result) result = rule_(builder, level + 1); exit_section_(builder, marker, null, result); return result; } /* ********************************************************** */ // flag (flag_argument ("," flag_argument)*)? public static boolean rule(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "rule")) return false; if (!nextTokenIs(builder, FLAG_TOKEN)) return false; boolean result; Marker marker = enter_section_(builder); result = flag(builder, level + 1); result = result && rule_1(builder, level + 1); exit_section_(builder, marker, RULE, result); return result; } // (flag_argument ("," flag_argument)*)? private static boolean rule_1(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "rule_1")) return false; rule_1_0(builder, level + 1); return true; } // flag_argument ("," flag_argument)* private static boolean rule_1_0(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "rule_1_0")) return false; boolean result; Marker marker = enter_section_(builder); result = flag_argument(builder, level + 1); result = result && rule_1_0_1(builder, level + 1); exit_section_(builder, marker, null, result); return result; } // ("," flag_argument)* private static boolean rule_1_0_1(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "rule_1_0_1")) return false; while (true) { int pos = current_position_(builder); if (!rule_1_0_1_0(builder, level + 1)) break; if (!empty_element_parsed_guard_(builder, "rule_1_0_1", pos)) break; } return true; } // "," flag_argument private static boolean rule_1_0_1_0(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "rule_1_0_1_0")) return false; boolean result; Marker marker = enter_section_(builder); result = consumeToken(builder, COMMA); result = result && flag_argument(builder, level + 1); exit_section_(builder, marker, null, result); return result; } /* ********************************************************** */ // rule_with_class_specification | rule_with_class_filter | rule static boolean rule_(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "rule_")) return false; boolean result; Marker marker = enter_section_(builder, level, _NONE_); result = rule_with_class_specification(builder, level + 1); if (!result) result = rule_with_class_filter(builder, level + 1); if (!result) result = rule(builder, level + 1); exit_section_(builder, level, marker, result, false, ProguardR8Parser::not_flag); return result; } /* ********************************************************** */ // flag_with_class_filter class_filter public static boolean rule_with_class_filter(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "rule_with_class_filter")) return false; boolean result, pinned; Marker marker = enter_section_(builder, level, _NONE_, RULE_WITH_CLASS_FILTER, "<rule with class filter>"); result = flag_with_class_filter(builder, level + 1); pinned = result; // pin = 1 result = result && class_filter(builder, level + 1); exit_section_(builder, level, marker, result, pinned, null); return result || pinned; } /* ********************************************************** */ // flag ("," keep_option_modifier)* class_specification_header class_specification_body? public static boolean rule_with_class_specification(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "rule_with_class_specification")) return false; if (!nextTokenIs(builder, FLAG_TOKEN)) return false; boolean result; Marker marker = enter_section_(builder); result = flag(builder, level + 1); result = result && rule_with_class_specification_1(builder, level + 1); result = result && class_specification_header(builder, level + 1); result = result && rule_with_class_specification_3(builder, level + 1); exit_section_(builder, marker, RULE_WITH_CLASS_SPECIFICATION, result); return result; } // ("," keep_option_modifier)* private static boolean rule_with_class_specification_1(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "rule_with_class_specification_1")) return false; while (true) { int pos = current_position_(builder); if (!rule_with_class_specification_1_0(builder, level + 1)) break; if (!empty_element_parsed_guard_(builder, "rule_with_class_specification_1", pos)) break; } return true; } // "," keep_option_modifier private static boolean rule_with_class_specification_1_0(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "rule_with_class_specification_1_0")) return false; boolean result; Marker marker = enter_section_(builder); result = consumeToken(builder, COMMA); result = result && keep_option_modifier(builder, level + 1); exit_section_(builder, marker, null, result); return result; } // class_specification_body? private static boolean rule_with_class_specification_3(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "rule_with_class_specification_3")) return false; class_specification_body(builder, level + 1); return true; } /* ********************************************************** */ // "!"? qualifiedName public static boolean super_class_name(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "super_class_name")) return false; boolean result; Marker marker = enter_section_(builder, level, _NONE_, SUPER_CLASS_NAME, "<super class name>"); result = super_class_name_0(builder, level + 1); result = result && qualifiedName(builder, level + 1); exit_section_(builder, level, marker, result, false, null); return result; } // "!"? private static boolean super_class_name_0(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "super_class_name_0")) return false; consumeToken(builder, EM); return true; } /* ********************************************************** */ // any_type|(any_primitive_type|any_not_primitive_type|java_primitive|qualifiedName)array_type? public static boolean type(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "type")) return false; boolean result; Marker marker = enter_section_(builder, level, _NONE_, TYPE, "<type>"); result = any_type(builder, level + 1); if (!result) result = type_1(builder, level + 1); exit_section_(builder, level, marker, result, false, null); return result; } // (any_primitive_type|any_not_primitive_type|java_primitive|qualifiedName)array_type? private static boolean type_1(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "type_1")) return false; boolean result; Marker marker = enter_section_(builder); result = type_1_0(builder, level + 1); result = result && type_1_1(builder, level + 1); exit_section_(builder, marker, null, result); return result; } // any_primitive_type|any_not_primitive_type|java_primitive|qualifiedName private static boolean type_1_0(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "type_1_0")) return false; boolean result; result = any_primitive_type(builder, level + 1); if (!result) result = any_not_primitive_type(builder, level + 1); if (!result) result = java_primitive(builder, level + 1); if (!result) result = qualifiedName(builder, level + 1); return result; } // array_type? private static boolean type_1_1(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "type_1_1")) return false; array_type(builder, level + 1); return true; } /* ********************************************************** */ // (type ("," type)* ("," ANY_TYPE_AND_NUM_OF_ARGS)?)? public static boolean type_list(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "type_list")) return false; Marker marker = enter_section_(builder, level, _NONE_, TYPE_LIST, "<type list>"); type_list_0(builder, level + 1); exit_section_(builder, level, marker, true, false, ProguardR8Parser::not_right_paren); return true; } // type ("," type)* ("," ANY_TYPE_AND_NUM_OF_ARGS)? private static boolean type_list_0(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "type_list_0")) return false; boolean result; Marker marker = enter_section_(builder); result = type(builder, level + 1); result = result && type_list_0_1(builder, level + 1); result = result && type_list_0_2(builder, level + 1); exit_section_(builder, marker, null, result); return result; } // ("," type)* private static boolean type_list_0_1(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "type_list_0_1")) return false; while (true) { int pos = current_position_(builder); if (!type_list_0_1_0(builder, level + 1)) break; if (!empty_element_parsed_guard_(builder, "type_list_0_1", pos)) break; } return true; } // "," type private static boolean type_list_0_1_0(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "type_list_0_1_0")) return false; boolean result; Marker marker = enter_section_(builder); result = consumeToken(builder, COMMA); result = result && type(builder, level + 1); exit_section_(builder, marker, null, result); return result; } // ("," ANY_TYPE_AND_NUM_OF_ARGS)? private static boolean type_list_0_2(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "type_list_0_2")) return false; type_list_0_2_0(builder, level + 1); return true; } // "," ANY_TYPE_AND_NUM_OF_ARGS private static boolean type_list_0_2_0(PsiBuilder builder, int level) { if (!recursion_guard_(builder, level, "type_list_0_2_0")) return false; boolean result; Marker marker = enter_section_(builder); result = consumeTokens(builder, 0, COMMA, ANY_TYPE_AND_NUM_OF_ARGS); exit_section_(builder, marker, null, result); return result; } }