// ---- BindersAndHooks.java ----------------- // This is a generated file. Not intended for manual editing. package ; import com.intellij.lang.PsiBuilder; import com.intellij.lang.PsiBuilder.Marker; import static generated.GeneratedTypes.*; import static org.intellij.grammar.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; import static com.intellij.lang.WhitespacesBinders.*; import static com.sample.MyHooks.*; @SuppressWarnings({"SimplifiableIfStatement", "UnusedAssignment"}) public class BindersAndHooks implements PsiParser, LightPsiParser { public ASTNode parse(IElementType root_, PsiBuilder builder_) { parseLight(root_, builder_); return builder_.getTreeBuilt(); } public void parseLight(IElementType root_, PsiBuilder builder_) { boolean result_; builder_ = adapt_builder_(root_, builder_, this, null); Marker marker_ = enter_section_(builder_, 0, _COLLAPSE_, null); if (root_ == BOTH_BINDERS) { result_ = both_binders(builder_, 0); } else if (root_ == GOT_HOOK) { result_ = got_hook(builder_, 0); } else if (root_ == LEFT_BINDER) { result_ = left_binder(builder_, 0); } else if (root_ == RIGHT_BINDER) { result_ = right_binder(builder_, 0); } else { result_ = parse_root_(root_, builder_, 0); } exit_section_(builder_, 0, marker_, root_, result_, true, TRUE_CONDITION); } protected boolean parse_root_(IElementType root_, PsiBuilder builder_, int level_) { return root(builder_, level_ + 1); } /* ********************************************************** */ // A item B public static boolean both_binders(PsiBuilder builder_, int level_) { if (!recursion_guard_(builder_, level_, "both_binders")) return false; if (!nextTokenIs(builder_, A)) return false; boolean result_, pinned_; Marker marker_ = enter_section_(builder_, level_, _NONE_, BOTH_BINDERS, null); result_ = consumeToken(builder_, A); pinned_ = result_; // pin = 1 result_ = result_ && report_error_(builder_, item(builder_, level_ + 1)); result_ = pinned_ && consumeToken(builder_, B) && result_; register_hook_(builder_, WS_BINDERS, GREEDY_LEFT_BINDER, GREEDY_RIGHT_BINDER); exit_section_(builder_, level_, marker_, result_, pinned_, null); return result_ || pinned_; } /* ********************************************************** */ // A public static boolean got_hook(PsiBuilder builder_, int level_) { if (!recursion_guard_(builder_, level_, "got_hook")) return false; if (!nextTokenIs(builder_, A)) return false; boolean result_; Marker marker_ = enter_section_(builder_); result_ = consumeToken(builder_, A); register_hook_(builder_, MY_HOOK, "my", "hook", "param", "array"); exit_section_(builder_, marker_, GOT_HOOK, result_); return result_; } /* ********************************************************** */ static boolean item(PsiBuilder builder_, int level_) { return true; } /* ********************************************************** */ // A B public static boolean left_binder(PsiBuilder builder_, int level_) { if (!recursion_guard_(builder_, level_, "left_binder")) return false; if (!nextTokenIs(builder_, A)) return false; boolean result_; Marker marker_ = enter_section_(builder_); result_ = consumeTokens(builder_, 0, A, B); register_hook_(builder_, LEFT_BINDER, GREEDY_LEFT_BINDER); exit_section_(builder_, marker_, LEFT_BINDER, result_); return result_; } /* ********************************************************** */ // item public static boolean right_binder(PsiBuilder builder_, int level_) { if (!recursion_guard_(builder_, level_, "right_binder")) return false; boolean result_; Marker marker_ = enter_section_(builder_, level_, _NONE_, RIGHT_BINDER, "<right binder>"); result_ = item(builder_, level_ + 1); register_hook_(builder_, RIGHT_BINDER, GREEDY_RIGHT_BINDER); exit_section_(builder_, level_, marker_, result_, false, null); return result_; } /* ********************************************************** */ // left_binder right_binder both_binders static boolean root(PsiBuilder builder_, int level_) { if (!recursion_guard_(builder_, level_, "root")) return false; if (!nextTokenIs(builder_, A)) return false; boolean result_; Marker marker_ = enter_section_(builder_); result_ = left_binder(builder_, level_ + 1); result_ = result_ && right_binder(builder_, level_ + 1); result_ = result_ && both_binders(builder_, level_ + 1); exit_section_(builder_, marker_, null, result_); return result_; } }