| // This is a generated file. Not intended for manual editing. | |
| package com.jetbrains.commandInterface.commandLine; | |
| import com.intellij.lang.PsiBuilder; | |
| import com.intellij.lang.PsiBuilder.Marker; | |
| import static com.jetbrains.commandInterface.commandLine.CommandLineElementTypes.*; | |
| import static com.jetbrains.commandInterface.commandLine.CommandLineParserUtil.*; | |
| 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 CommandLineParser implements PsiParser, LightPsiParser { | |
| public ASTNode parse(IElementType t, PsiBuilder b) { | |
| parseLight(t, b); | |
| return b.getTreeBuilt(); | |
| } | |
| public void parseLight(IElementType t, PsiBuilder b) { | |
| boolean r; | |
| b = adapt_builder_(t, b, this, null); | |
| Marker m = enter_section_(b, 0, _COLLAPSE_, null); | |
| if (t == ARGUMENT) { | |
| r = argument(b, 0); | |
| } | |
| else if (t == COMMAND) { | |
| r = command(b, 0); | |
| } | |
| else if (t == OPTION) { | |
| r = option(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 root(b, l + 1); | |
| } | |
| /* ********************************************************** */ | |
| // LITERAL_STARTS_FROM_LETTER | LITERAL_STARTS_FROM_DIGIT | LITERAL_STARTS_FROM_SYMBOL | | |
| // SPACED_LITERAL_STARTS_FROM_LETTER | SPACED_LITERAL_STARTS_FROM_DIGIT | SPACED_LITERAL_STARTS_FROM_SYMBOL | | |
| // SINGLE_Q_SPACED_LITERAL_STARTS_FROM_LETTER | SINGLE_Q_SPACED_LITERAL_STARTS_FROM_DIGIT | SINGLE_Q_SPACED_LITERAL_STARTS_FROM_SYMBOL | |
| public static boolean argument(PsiBuilder b, int l) { | |
| if (!recursion_guard_(b, l, "argument")) return false; | |
| boolean r; | |
| Marker m = enter_section_(b, l, _NONE_, ARGUMENT, "<argument>"); | |
| r = consumeToken(b, LITERAL_STARTS_FROM_LETTER); | |
| if (!r) r = consumeToken(b, LITERAL_STARTS_FROM_DIGIT); | |
| if (!r) r = consumeToken(b, LITERAL_STARTS_FROM_SYMBOL); | |
| if (!r) r = consumeToken(b, SPACED_LITERAL_STARTS_FROM_LETTER); | |
| if (!r) r = consumeToken(b, SPACED_LITERAL_STARTS_FROM_DIGIT); | |
| if (!r) r = consumeToken(b, SPACED_LITERAL_STARTS_FROM_SYMBOL); | |
| if (!r) r = consumeToken(b, SINGLE_Q_SPACED_LITERAL_STARTS_FROM_LETTER); | |
| if (!r) r = consumeToken(b, SINGLE_Q_SPACED_LITERAL_STARTS_FROM_DIGIT); | |
| if (!r) r = consumeToken(b, SINGLE_Q_SPACED_LITERAL_STARTS_FROM_SYMBOL); | |
| exit_section_(b, l, m, r, false, null); | |
| return r; | |
| } | |
| /* ********************************************************** */ | |
| // LITERAL_STARTS_FROM_LETTER | |
| public static boolean command(PsiBuilder b, int l) { | |
| if (!recursion_guard_(b, l, "command")) return false; | |
| if (!nextTokenIs(b, LITERAL_STARTS_FROM_LETTER)) return false; | |
| boolean r; | |
| Marker m = enter_section_(b); | |
| r = consumeToken(b, LITERAL_STARTS_FROM_LETTER); | |
| exit_section_(b, m, COMMAND, r); | |
| return r; | |
| } | |
| /* ********************************************************** */ | |
| // LONG_OPTION_NAME_TOKEN | |
| static boolean long_option_name(PsiBuilder b, int l) { | |
| return consumeToken(b, LONG_OPTION_NAME_TOKEN); | |
| } | |
| /* ********************************************************** */ | |
| // short_option_name <<bound_argument>> ? | long_option_name <<bound_argument>> ? | |
| public static boolean option(PsiBuilder b, int l) { | |
| if (!recursion_guard_(b, l, "option")) return false; | |
| if (!nextTokenIs(b, "<option>", LONG_OPTION_NAME_TOKEN, SHORT_OPTION_NAME_TOKEN)) return false; | |
| boolean r; | |
| Marker m = enter_section_(b, l, _NONE_, OPTION, "<option>"); | |
| r = option_0(b, l + 1); | |
| if (!r) r = option_1(b, l + 1); | |
| exit_section_(b, l, m, r, false, null); | |
| return r; | |
| } | |
| // short_option_name <<bound_argument>> ? | |
| private static boolean option_0(PsiBuilder b, int l) { | |
| if (!recursion_guard_(b, l, "option_0")) return false; | |
| boolean r; | |
| Marker m = enter_section_(b); | |
| r = short_option_name(b, l + 1); | |
| r = r && option_0_1(b, l + 1); | |
| exit_section_(b, m, null, r); | |
| return r; | |
| } | |
| // <<bound_argument>> ? | |
| private static boolean option_0_1(PsiBuilder b, int l) { | |
| if (!recursion_guard_(b, l, "option_0_1")) return false; | |
| bound_argument(b, l + 1); | |
| return true; | |
| } | |
| // long_option_name <<bound_argument>> ? | |
| private static boolean option_1(PsiBuilder b, int l) { | |
| if (!recursion_guard_(b, l, "option_1")) return false; | |
| boolean r; | |
| Marker m = enter_section_(b); | |
| r = long_option_name(b, l + 1); | |
| r = r && option_1_1(b, l + 1); | |
| exit_section_(b, m, null, r); | |
| return r; | |
| } | |
| // <<bound_argument>> ? | |
| private static boolean option_1_1(PsiBuilder b, int l) { | |
| if (!recursion_guard_(b, l, "option_1_1")) return false; | |
| bound_argument(b, l + 1); | |
| return true; | |
| } | |
| /* ********************************************************** */ | |
| // command (argument | option ) * <<eof>> | |
| static boolean root(PsiBuilder b, int l) { | |
| if (!recursion_guard_(b, l, "root")) return false; | |
| if (!nextTokenIs(b, LITERAL_STARTS_FROM_LETTER)) return false; | |
| boolean r; | |
| Marker m = enter_section_(b); | |
| r = command(b, l + 1); | |
| r = r && root_1(b, l + 1); | |
| r = r && eof(b, l + 1); | |
| exit_section_(b, m, null, r); | |
| return r; | |
| } | |
| // (argument | option ) * | |
| private static boolean root_1(PsiBuilder b, int l) { | |
| if (!recursion_guard_(b, l, "root_1")) return false; | |
| while (true) { | |
| int c = current_position_(b); | |
| if (!root_1_0(b, l + 1)) break; | |
| if (!empty_element_parsed_guard_(b, "root_1", c)) break; | |
| } | |
| return true; | |
| } | |
| // argument | option | |
| private static boolean root_1_0(PsiBuilder b, int l) { | |
| if (!recursion_guard_(b, l, "root_1_0")) return false; | |
| boolean r; | |
| r = argument(b, l + 1); | |
| if (!r) r = option(b, l + 1); | |
| return r; | |
| } | |
| /* ********************************************************** */ | |
| // SHORT_OPTION_NAME_TOKEN | |
| static boolean short_option_name(PsiBuilder b, int l) { | |
| return consumeToken(b, SHORT_OPTION_NAME_TOKEN); | |
| } | |
| } |