// ---- GeneratedParser.java -----------------
// This is a generated file. Not intended for manual editing.
package generated;
import com.intellij.lang.PsiBuilder;
import com.intellij.lang.PsiBuilder.Marker;
import static generated.GeneratedTypes.*;
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 GeneratedParser 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_ == ELEMENT) {
result_ = element(builder_, 0);
}
else if (root_ == ENTRY) {
result_ = entry(builder_, 0);
}
else if (root_ == LIST) {
result_ = list(builder_, 0);
}
else if (root_ == MAP) {
result_ = map(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 grammar(builder_, level_ + 1);
}
/* ********************************************************** */
// 'id'
public static boolean element(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "element")) return false;
boolean result_;
Marker marker_ = enter_section_(builder_, level_, _NONE_, ELEMENT, "<element>");
result_ = consumeToken(builder_, "id");
exit_section_(builder_, level_, marker_, result_, false, null);
return result_;
}
/* ********************************************************** */
// 'name' '->' element
public static boolean entry(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "entry")) return false;
boolean result_;
Marker marker_ = enter_section_(builder_, level_, _NONE_, ENTRY, "<entry>");
result_ = consumeToken(builder_, "name");
result_ = result_ && consumeToken(builder_, "->");
result_ = result_ && element(builder_, level_ + 1);
exit_section_(builder_, level_, marker_, result_, false, null);
return result_;
}
/* ********************************************************** */
// list | map
static boolean grammar(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "grammar")) return false;
boolean result_;
Marker marker_ = enter_section_(builder_);
result_ = list(builder_, level_ + 1);
if (!result_) result_ = map(builder_, level_ + 1);
exit_section_(builder_, marker_, null, result_);
return result_;
}
/* ********************************************************** */
// '(' element (',' element) * ')'
public static boolean list(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "list")) return false;
boolean result_;
Marker marker_ = enter_section_(builder_, level_, _NONE_, LIST, "<list>");
result_ = consumeToken(builder_, "(");
result_ = result_ && element(builder_, level_ + 1);
result_ = result_ && list_2(builder_, level_ + 1);
result_ = result_ && consumeToken(builder_, ")");
exit_section_(builder_, level_, marker_, result_, false, null);
return result_;
}
// (',' element) *
private static boolean list_2(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "list_2")) return false;
int pos_ = current_position_(builder_);
while (true) {
if (!list_2_0(builder_, level_ + 1)) break;
if (!empty_element_parsed_guard_(builder_, "list_2", pos_)) break;
pos_ = current_position_(builder_);
}
return true;
}
// ',' element
private static boolean list_2_0(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "list_2_0")) return false;
boolean result_;
Marker marker_ = enter_section_(builder_);
result_ = consumeToken(builder_, ",");
result_ = result_ && element(builder_, level_ + 1);
exit_section_(builder_, marker_, null, result_);
return result_;
}
/* ********************************************************** */
// '(' entry (',' entry) * ')'
public static boolean map(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "map")) return false;
boolean result_;
Marker marker_ = enter_section_(builder_, level_, _NONE_, MAP, "<map>");
result_ = consumeToken(builder_, "(");
result_ = result_ && entry(builder_, level_ + 1);
result_ = result_ && map_2(builder_, level_ + 1);
result_ = result_ && consumeToken(builder_, ")");
exit_section_(builder_, level_, marker_, result_, false, null);
return result_;
}
// (',' entry) *
private static boolean map_2(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "map_2")) return false;
int pos_ = current_position_(builder_);
while (true) {
if (!map_2_0(builder_, level_ + 1)) break;
if (!empty_element_parsed_guard_(builder_, "map_2", pos_)) break;
pos_ = current_position_(builder_);
}
return true;
}
// ',' entry
private static boolean map_2_0(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "map_2_0")) return false;
boolean result_;
Marker marker_ = enter_section_(builder_);
result_ = consumeToken(builder_, ",");
result_ = result_ && entry(builder_, level_ + 1);
exit_section_(builder_, marker_, null, result_);
return result_;
}
}