// This is a generated file. Not intended for manual editing. package com.simpleplugin.parser; import org.jetbrains.annotations.*; import com.intellij.lang.LighterASTNode; import com.intellij.lang.PsiBuilder; import com.intellij.lang.PsiBuilder.Marker; import com.intellij.openapi.diagnostic.Logger; import static com.simpleplugin.psi.SimpleTypes.*; import static com.simpleplugin.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 SimpleParser implements PsiParser { public static Logger LOG_ = Logger.getInstance("com.simpleplugin.parser.SimpleParser"); @NotNull public ASTNode parse(IElementType root_, PsiBuilder builder_) { int level_ = 0; boolean result_; builder_ = adapt_builder_(root_, builder_, this); if (root_ == PROPERTY) { result_ = property(builder_, level_ + 1); } else { Marker marker_ = builder_.mark(); result_ = parse_root_(root_, builder_, level_); while (builder_.getTokenType() != null) { builder_.advanceLexer(); } marker_.done(root_); } return builder_.getTreeBuilt(); } protected boolean parse_root_(final IElementType root_, final PsiBuilder builder_, final int level_) { return simpleFile(builder_, level_ + 1); } /* ********************************************************** */ // (property|COMMENT|CRLF) static boolean item_(PsiBuilder builder_, int level_) { if (!recursion_guard_(builder_, level_, "item_")) return false; return item__0(builder_, level_ + 1); } // property|COMMENT|CRLF private static boolean item__0(PsiBuilder builder_, int level_) { if (!recursion_guard_(builder_, level_, "item__0")) return false; boolean result_ = false; Marker marker_ = builder_.mark(); result_ = property(builder_, level_ + 1); if (!result_) result_ = consumeToken(builder_, COMMENT); if (!result_) result_ = consumeToken(builder_, CRLF); if (!result_) { marker_.rollbackTo(); } else { marker_.drop(); } return result_; } /* ********************************************************** */ // (KEY? SEPARATOR VALUE?) | KEY public static boolean property(PsiBuilder builder_, int level_) { if (!recursion_guard_(builder_, level_, "property")) return false; if (!nextTokenIs(builder_, KEY) && !nextTokenIs(builder_, SEPARATOR) && replaceVariants(builder_, 2, "")) return false; boolean result_ = false; Marker marker_ = builder_.mark(); enterErrorRecordingSection(builder_, level_, _SECTION_GENERAL_, ""); result_ = property_0(builder_, level_ + 1); if (!result_) result_ = consumeToken(builder_, KEY); if (result_) { marker_.done(PROPERTY); } else { marker_.rollbackTo(); } result_ = exitErrorRecordingSection(builder_, level_, result_, false, _SECTION_GENERAL_, null); return result_; } // (KEY? SEPARATOR VALUE?) private static boolean property_0(PsiBuilder builder_, int level_) { if (!recursion_guard_(builder_, level_, "property_0")) return false; return property_0_0(builder_, level_ + 1); } // KEY? SEPARATOR VALUE? private static boolean property_0_0(PsiBuilder builder_, int level_) { if (!recursion_guard_(builder_, level_, "property_0_0")) return false; boolean result_ = false; Marker marker_ = builder_.mark(); result_ = property_0_0_0(builder_, level_ + 1); result_ = result_ && consumeToken(builder_, SEPARATOR); result_ = result_ && property_0_0_2(builder_, level_ + 1); if (!result_) { marker_.rollbackTo(); } else { marker_.drop(); } return result_; } // KEY? private static boolean property_0_0_0(PsiBuilder builder_, int level_) { if (!recursion_guard_(builder_, level_, "property_0_0_0")) return false; consumeToken(builder_, KEY); return true; } // VALUE? private static boolean property_0_0_2(PsiBuilder builder_, int level_) { if (!recursion_guard_(builder_, level_, "property_0_0_2")) return false; consumeToken(builder_, VALUE); return true; } /* ********************************************************** */ // item_* static boolean simpleFile(PsiBuilder builder_, int level_) { if (!recursion_guard_(builder_, level_, "simpleFile")) return false; int offset_ = builder_.getCurrentOffset(); while (true) { if (!item_(builder_, level_ + 1)) break; int next_offset_ = builder_.getCurrentOffset(); if (offset_ == next_offset_) { empty_element_parsed_guard_(builder_, offset_, "simpleFile"); break; } offset_ = next_offset_; } return true; } }