| // This is a generated file. Not intended for manual editing. |
| package com.android.tools.idea.lang.proguard.parser; |
| |
| import com.intellij.lang.PsiBuilder; |
| import com.intellij.lang.PsiBuilder.Marker; |
| import com.intellij.openapi.diagnostic.Logger; |
| import static com.android.tools.idea.lang.proguard.psi.ProguardTypes.*; |
| 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 ProguardParser implements PsiParser { |
| |
| public static final Logger LOG_ = Logger.getInstance("com.android.tools.idea.lang.proguard.parser.ProguardParser"); |
| |
| public ASTNode parse(IElementType root_, PsiBuilder builder_) { |
| boolean result_; |
| builder_ = adapt_builder_(root_, builder_, this, null); |
| Marker marker_ = enter_section_(builder_, 0, _COLLAPSE_, null); |
| if (root_ == COMMENT) { |
| result_ = comment(builder_, 0); |
| } |
| else if (root_ == FLAG) { |
| result_ = flag(builder_, 0); |
| } |
| else if (root_ == JAVA_SECTION) { |
| result_ = javaSection(builder_, 0); |
| } |
| else if (root_ == MULTI_LINE_FLAG) { |
| result_ = multiLineFlag(builder_, 0); |
| } |
| else if (root_ == SINGLE_LINE_FLAG) { |
| result_ = singleLineFlag(builder_, 0); |
| } |
| else { |
| result_ = parse_root_(root_, builder_, 0); |
| } |
| exit_section_(builder_, 0, marker_, root_, result_, true, TRUE_CONDITION); |
| return builder_.getTreeBuilt(); |
| } |
| |
| protected boolean parse_root_(final IElementType root_, final PsiBuilder builder_, final int level_) { |
| return proguardFile(builder_, level_ + 1); |
| } |
| |
| /* ********************************************************** */ |
| // LINE_CMT |
| public static boolean comment(PsiBuilder builder_, int level_) { |
| if (!recursion_guard_(builder_, level_, "comment")) return false; |
| if (!nextTokenIs(builder_, LINE_CMT)) return false; |
| boolean result_ = false; |
| Marker marker_ = enter_section_(builder_); |
| result_ = consumeToken(builder_, LINE_CMT); |
| exit_section_(builder_, marker_, COMMENT, result_); |
| return result_; |
| } |
| |
| /* ********************************************************** */ |
| // multiLineFlag | singleLineFlag comment? |
| public static boolean flag(PsiBuilder builder_, int level_) { |
| if (!recursion_guard_(builder_, level_, "flag")) return false; |
| if (!nextTokenIs(builder_, FLAG_NAME)) return false; |
| boolean result_ = false; |
| Marker marker_ = enter_section_(builder_); |
| result_ = multiLineFlag(builder_, level_ + 1); |
| if (!result_) result_ = flag_1(builder_, level_ + 1); |
| exit_section_(builder_, marker_, FLAG, result_); |
| return result_; |
| } |
| |
| // singleLineFlag comment? |
| private static boolean flag_1(PsiBuilder builder_, int level_) { |
| if (!recursion_guard_(builder_, level_, "flag_1")) return false; |
| boolean result_ = false; |
| Marker marker_ = enter_section_(builder_); |
| result_ = singleLineFlag(builder_, level_ + 1); |
| result_ = result_ && flag_1_1(builder_, level_ + 1); |
| exit_section_(builder_, marker_, null, result_); |
| return result_; |
| } |
| |
| // comment? |
| private static boolean flag_1_1(PsiBuilder builder_, int level_) { |
| if (!recursion_guard_(builder_, level_, "flag_1_1")) return false; |
| comment(builder_, level_ + 1); |
| return true; |
| } |
| |
| /* ********************************************************** */ |
| // OPEN_BRACE CRLF? (JAVA_DECL CRLF?)* CLOSE_BRACE |
| public static boolean javaSection(PsiBuilder builder_, int level_) { |
| if (!recursion_guard_(builder_, level_, "javaSection")) return false; |
| if (!nextTokenIs(builder_, OPEN_BRACE)) return false; |
| boolean result_ = false; |
| Marker marker_ = enter_section_(builder_); |
| result_ = consumeToken(builder_, OPEN_BRACE); |
| result_ = result_ && javaSection_1(builder_, level_ + 1); |
| result_ = result_ && javaSection_2(builder_, level_ + 1); |
| result_ = result_ && consumeToken(builder_, CLOSE_BRACE); |
| exit_section_(builder_, marker_, JAVA_SECTION, result_); |
| return result_; |
| } |
| |
| // CRLF? |
| private static boolean javaSection_1(PsiBuilder builder_, int level_) { |
| if (!recursion_guard_(builder_, level_, "javaSection_1")) return false; |
| consumeToken(builder_, CRLF); |
| return true; |
| } |
| |
| // (JAVA_DECL CRLF?)* |
| private static boolean javaSection_2(PsiBuilder builder_, int level_) { |
| if (!recursion_guard_(builder_, level_, "javaSection_2")) return false; |
| int pos_ = current_position_(builder_); |
| while (true) { |
| if (!javaSection_2_0(builder_, level_ + 1)) break; |
| if (!empty_element_parsed_guard_(builder_, "javaSection_2", pos_)) break; |
| pos_ = current_position_(builder_); |
| } |
| return true; |
| } |
| |
| // JAVA_DECL CRLF? |
| private static boolean javaSection_2_0(PsiBuilder builder_, int level_) { |
| if (!recursion_guard_(builder_, level_, "javaSection_2_0")) return false; |
| boolean result_ = false; |
| Marker marker_ = enter_section_(builder_); |
| result_ = consumeToken(builder_, JAVA_DECL); |
| result_ = result_ && javaSection_2_0_1(builder_, level_ + 1); |
| exit_section_(builder_, marker_, null, result_); |
| return result_; |
| } |
| |
| // CRLF? |
| private static boolean javaSection_2_0_1(PsiBuilder builder_, int level_) { |
| if (!recursion_guard_(builder_, level_, "javaSection_2_0_1")) return false; |
| consumeToken(builder_, CRLF); |
| return true; |
| } |
| |
| /* ********************************************************** */ |
| // FLAG_NAME FLAG_ARG* javaSection |
| public static boolean multiLineFlag(PsiBuilder builder_, int level_) { |
| if (!recursion_guard_(builder_, level_, "multiLineFlag")) return false; |
| if (!nextTokenIs(builder_, FLAG_NAME)) return false; |
| boolean result_ = false; |
| Marker marker_ = enter_section_(builder_); |
| result_ = consumeToken(builder_, FLAG_NAME); |
| result_ = result_ && multiLineFlag_1(builder_, level_ + 1); |
| result_ = result_ && javaSection(builder_, level_ + 1); |
| exit_section_(builder_, marker_, MULTI_LINE_FLAG, result_); |
| return result_; |
| } |
| |
| // FLAG_ARG* |
| private static boolean multiLineFlag_1(PsiBuilder builder_, int level_) { |
| if (!recursion_guard_(builder_, level_, "multiLineFlag_1")) return false; |
| int pos_ = current_position_(builder_); |
| while (true) { |
| if (!consumeToken(builder_, FLAG_ARG)) break; |
| if (!empty_element_parsed_guard_(builder_, "multiLineFlag_1", pos_)) break; |
| pos_ = current_position_(builder_); |
| } |
| return true; |
| } |
| |
| /* ********************************************************** */ |
| // (comment CRLF | flag CRLF | WS? CRLF)* |
| // (comment | flag | WS? )? |
| static boolean proguardFile(PsiBuilder builder_, int level_) { |
| if (!recursion_guard_(builder_, level_, "proguardFile")) return false; |
| boolean result_ = false; |
| Marker marker_ = enter_section_(builder_); |
| result_ = proguardFile_0(builder_, level_ + 1); |
| result_ = result_ && proguardFile_1(builder_, level_ + 1); |
| exit_section_(builder_, marker_, null, result_); |
| return result_; |
| } |
| |
| // (comment CRLF | flag CRLF | WS? CRLF)* |
| private static boolean proguardFile_0(PsiBuilder builder_, int level_) { |
| if (!recursion_guard_(builder_, level_, "proguardFile_0")) return false; |
| int pos_ = current_position_(builder_); |
| while (true) { |
| if (!proguardFile_0_0(builder_, level_ + 1)) break; |
| if (!empty_element_parsed_guard_(builder_, "proguardFile_0", pos_)) break; |
| pos_ = current_position_(builder_); |
| } |
| return true; |
| } |
| |
| // comment CRLF | flag CRLF | WS? CRLF |
| private static boolean proguardFile_0_0(PsiBuilder builder_, int level_) { |
| if (!recursion_guard_(builder_, level_, "proguardFile_0_0")) return false; |
| boolean result_ = false; |
| Marker marker_ = enter_section_(builder_); |
| result_ = proguardFile_0_0_0(builder_, level_ + 1); |
| if (!result_) result_ = proguardFile_0_0_1(builder_, level_ + 1); |
| if (!result_) result_ = proguardFile_0_0_2(builder_, level_ + 1); |
| exit_section_(builder_, marker_, null, result_); |
| return result_; |
| } |
| |
| // comment CRLF |
| private static boolean proguardFile_0_0_0(PsiBuilder builder_, int level_) { |
| if (!recursion_guard_(builder_, level_, "proguardFile_0_0_0")) return false; |
| boolean result_ = false; |
| Marker marker_ = enter_section_(builder_); |
| result_ = comment(builder_, level_ + 1); |
| result_ = result_ && consumeToken(builder_, CRLF); |
| exit_section_(builder_, marker_, null, result_); |
| return result_; |
| } |
| |
| // flag CRLF |
| private static boolean proguardFile_0_0_1(PsiBuilder builder_, int level_) { |
| if (!recursion_guard_(builder_, level_, "proguardFile_0_0_1")) return false; |
| boolean result_ = false; |
| Marker marker_ = enter_section_(builder_); |
| result_ = flag(builder_, level_ + 1); |
| result_ = result_ && consumeToken(builder_, CRLF); |
| exit_section_(builder_, marker_, null, result_); |
| return result_; |
| } |
| |
| // WS? CRLF |
| private static boolean proguardFile_0_0_2(PsiBuilder builder_, int level_) { |
| if (!recursion_guard_(builder_, level_, "proguardFile_0_0_2")) return false; |
| boolean result_ = false; |
| Marker marker_ = enter_section_(builder_); |
| result_ = proguardFile_0_0_2_0(builder_, level_ + 1); |
| result_ = result_ && consumeToken(builder_, CRLF); |
| exit_section_(builder_, marker_, null, result_); |
| return result_; |
| } |
| |
| // WS? |
| private static boolean proguardFile_0_0_2_0(PsiBuilder builder_, int level_) { |
| if (!recursion_guard_(builder_, level_, "proguardFile_0_0_2_0")) return false; |
| consumeToken(builder_, WS); |
| return true; |
| } |
| |
| // (comment | flag | WS? )? |
| private static boolean proguardFile_1(PsiBuilder builder_, int level_) { |
| if (!recursion_guard_(builder_, level_, "proguardFile_1")) return false; |
| proguardFile_1_0(builder_, level_ + 1); |
| return true; |
| } |
| |
| // comment | flag | WS? |
| private static boolean proguardFile_1_0(PsiBuilder builder_, int level_) { |
| if (!recursion_guard_(builder_, level_, "proguardFile_1_0")) return false; |
| boolean result_ = false; |
| Marker marker_ = enter_section_(builder_); |
| result_ = comment(builder_, level_ + 1); |
| if (!result_) result_ = flag(builder_, level_ + 1); |
| if (!result_) result_ = proguardFile_1_0_2(builder_, level_ + 1); |
| exit_section_(builder_, marker_, null, result_); |
| return result_; |
| } |
| |
| // WS? |
| private static boolean proguardFile_1_0_2(PsiBuilder builder_, int level_) { |
| if (!recursion_guard_(builder_, level_, "proguardFile_1_0_2")) return false; |
| consumeToken(builder_, WS); |
| return true; |
| } |
| |
| /* ********************************************************** */ |
| // FLAG_NAME FLAG_ARG* |
| public static boolean singleLineFlag(PsiBuilder builder_, int level_) { |
| if (!recursion_guard_(builder_, level_, "singleLineFlag")) return false; |
| if (!nextTokenIs(builder_, FLAG_NAME)) return false; |
| boolean result_ = false; |
| Marker marker_ = enter_section_(builder_); |
| result_ = consumeToken(builder_, FLAG_NAME); |
| result_ = result_ && singleLineFlag_1(builder_, level_ + 1); |
| exit_section_(builder_, marker_, SINGLE_LINE_FLAG, result_); |
| return result_; |
| } |
| |
| // FLAG_ARG* |
| private static boolean singleLineFlag_1(PsiBuilder builder_, int level_) { |
| if (!recursion_guard_(builder_, level_, "singleLineFlag_1")) return false; |
| int pos_ = current_position_(builder_); |
| while (true) { |
| if (!consumeToken(builder_, FLAG_ARG)) break; |
| if (!empty_element_parsed_guard_(builder_, "singleLineFlag_1", pos_)) break; |
| pos_ = current_position_(builder_); |
| } |
| return true; |
| } |
| |
| } |