// This is a generated file. Not intended for manual editing. package com.intellij.json; import com.intellij.lang.PsiBuilder; import com.intellij.lang.PsiBuilder.Marker; import static com.intellij.json.JsonElementTypes.*; import static com.intellij.json.psi.JsonParserUtil.*; 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 JsonParser 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, EXTENDS_SETS_); Marker m = enter_section_(b, 0, _COLLAPSE_, null); if (t == ARRAY) { r = array(b, 0); } else if (t == BOOLEAN_LITERAL) { r = boolean_literal(b, 0); } else if (t == LITERAL) { r = literal(b, 0); } else if (t == NULL_LITERAL) { r = null_literal(b, 0); } else if (t == NUMBER_LITERAL) { r = number_literal(b, 0); } else if (t == OBJECT) { r = object(b, 0); } else if (t == PROPERTY) { r = property(b, 0); } else if (t == REFERENCE_EXPRESSION) { r = reference_expression(b, 0); } else if (t == STRING_LITERAL) { r = string_literal(b, 0); } else if (t == VALUE) { r = value(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 json(b, l + 1); } public static final TokenSet[] EXTENDS_SETS_ = new TokenSet[] { create_token_set_(ARRAY, BOOLEAN_LITERAL, LITERAL, NULL_LITERAL, NUMBER_LITERAL, OBJECT, REFERENCE_EXPRESSION, STRING_LITERAL, VALUE), }; /* ********************************************************** */ // '[' array_element* ']' public static boolean array(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "array")) return false; if (!nextTokenIs(b, L_BRACKET)) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, ARRAY, null); r = consumeToken(b, L_BRACKET); p = r; // pin = 1 r = r && report_error_(b, array_1(b, l + 1)); r = p && consumeToken(b, R_BRACKET) && r; exit_section_(b, l, m, r, p, null); return r || p; } // array_element* private static boolean array_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "array_1")) return false; int c = current_position_(b); while (true) { if (!array_element(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "array_1", c)) break; c = current_position_(b); } return true; } /* ********************************************************** */ // value (','|&']') static boolean array_element(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "array_element")) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_); r = value(b, l + 1); p = r; // pin = 1 r = r && array_element_1(b, l + 1); exit_section_(b, l, m, r, p, not_bracket_or_next_value_parser_); return r || p; } // ','|&']' private static boolean array_element_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "array_element_1")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, COMMA); if (!r) r = array_element_1_1(b, l + 1); exit_section_(b, m, null, r); return r; } // &']' private static boolean array_element_1_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "array_element_1_1")) return false; boolean r; Marker m = enter_section_(b, l, _AND_); r = consumeToken(b, R_BRACKET); exit_section_(b, l, m, r, false, null); return r; } /* ********************************************************** */ // TRUE | FALSE public static boolean boolean_literal(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "boolean_literal")) return false; if (!nextTokenIs(b, "<boolean literal>", FALSE, TRUE)) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, BOOLEAN_LITERAL, "<boolean literal>"); r = consumeToken(b, TRUE); if (!r) r = consumeToken(b, FALSE); exit_section_(b, l, m, r, false, null); return r; } /* ********************************************************** */ // value+ static boolean json(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "json")) return false; boolean r; Marker m = enter_section_(b); r = value(b, l + 1); int c = current_position_(b); while (r) { if (!value(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "json", c)) break; c = current_position_(b); } exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // string_literal | number_literal | boolean_literal | null_literal public static boolean literal(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "literal")) return false; boolean r; Marker m = enter_section_(b, l, _COLLAPSE_, LITERAL, "<literal>"); r = string_literal(b, l + 1); if (!r) r = number_literal(b, l + 1); if (!r) r = boolean_literal(b, l + 1); if (!r) r = null_literal(b, l + 1); exit_section_(b, l, m, r, false, null); return r; } /* ********************************************************** */ // !('}'|value) static boolean not_brace_or_next_value(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "not_brace_or_next_value")) return false; boolean r; Marker m = enter_section_(b, l, _NOT_); r = !not_brace_or_next_value_0(b, l + 1); exit_section_(b, l, m, r, false, null); return r; } // '}'|value private static boolean not_brace_or_next_value_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "not_brace_or_next_value_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, R_CURLY); if (!r) r = value(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // !(']'|value) static boolean not_bracket_or_next_value(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "not_bracket_or_next_value")) return false; boolean r; Marker m = enter_section_(b, l, _NOT_); r = !not_bracket_or_next_value_0(b, l + 1); exit_section_(b, l, m, r, false, null); return r; } // ']'|value private static boolean not_bracket_or_next_value_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "not_bracket_or_next_value_0")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, R_BRACKET); if (!r) r = value(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // NULL public static boolean null_literal(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "null_literal")) return false; if (!nextTokenIs(b, NULL)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, NULL); exit_section_(b, m, NULL_LITERAL, r); return r; } /* ********************************************************** */ // NUMBER public static boolean number_literal(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "number_literal")) return false; if (!nextTokenIs(b, NUMBER)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, NUMBER); exit_section_(b, m, NUMBER_LITERAL, r); return r; } /* ********************************************************** */ // '{' object_element* '}' public static boolean object(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "object")) return false; if (!nextTokenIs(b, L_CURLY)) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, OBJECT, null); r = consumeToken(b, L_CURLY); p = r; // pin = 1 r = r && report_error_(b, object_1(b, l + 1)); r = p && consumeToken(b, R_CURLY) && r; exit_section_(b, l, m, r, p, null); return r || p; } // object_element* private static boolean object_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "object_1")) return false; int c = current_position_(b); while (true) { if (!object_element(b, l + 1)) break; if (!empty_element_parsed_guard_(b, "object_1", c)) break; c = current_position_(b); } return true; } /* ********************************************************** */ // property (','|&'}') static boolean object_element(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "object_element")) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_); r = property(b, l + 1); p = r; // pin = 1 r = r && object_element_1(b, l + 1); exit_section_(b, l, m, r, p, not_brace_or_next_value_parser_); return r || p; } // ','|&'}' private static boolean object_element_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "object_element_1")) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, COMMA); if (!r) r = object_element_1_1(b, l + 1); exit_section_(b, m, null, r); return r; } // &'}' private static boolean object_element_1_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "object_element_1_1")) return false; boolean r; Marker m = enter_section_(b, l, _AND_); r = consumeToken(b, R_CURLY); exit_section_(b, l, m, r, false, null); return r; } /* ********************************************************** */ // property_name (':' value) public static boolean property(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "property")) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_, PROPERTY, "<property>"); r = property_name(b, l + 1); p = r; // pin = 1 r = r && property_1(b, l + 1); exit_section_(b, l, m, r, p, null); return r || p; } // ':' value private static boolean property_1(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "property_1")) return false; boolean r, p; Marker m = enter_section_(b, l, _NONE_); r = consumeToken(b, COLON); p = r; // pin = 1 r = r && value(b, l + 1); exit_section_(b, l, m, r, p, null); return r || p; } /* ********************************************************** */ // literal | reference_expression static boolean property_name(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "property_name")) return false; boolean r; Marker m = enter_section_(b); r = literal(b, l + 1); if (!r) r = reference_expression(b, l + 1); exit_section_(b, m, null, r); return r; } /* ********************************************************** */ // IDENTIFIER public static boolean reference_expression(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "reference_expression")) return false; if (!nextTokenIs(b, IDENTIFIER)) return false; boolean r; Marker m = enter_section_(b); r = consumeToken(b, IDENTIFIER); exit_section_(b, m, REFERENCE_EXPRESSION, r); return r; } /* ********************************************************** */ // SINGLE_QUOTED_STRING | DOUBLE_QUOTED_STRING public static boolean string_literal(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "string_literal")) return false; if (!nextTokenIs(b, "<string literal>", DOUBLE_QUOTED_STRING, SINGLE_QUOTED_STRING)) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, STRING_LITERAL, "<string literal>"); r = consumeToken(b, SINGLE_QUOTED_STRING); if (!r) r = consumeToken(b, DOUBLE_QUOTED_STRING); exit_section_(b, l, m, r, false, null); return r; } /* ********************************************************** */ // object | array | literal | reference_expression public static boolean value(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "value")) return false; boolean r; Marker m = enter_section_(b, l, _COLLAPSE_, VALUE, "<value>"); r = object(b, l + 1); if (!r) r = array(b, l + 1); if (!r) r = literal(b, l + 1); if (!r) r = reference_expression(b, l + 1); exit_section_(b, l, m, r, false, null); return r; } final static Parser not_brace_or_next_value_parser_ = new Parser() { public boolean parse(PsiBuilder b, int l) { return not_brace_or_next_value(b, l + 1); } }; final static Parser not_bracket_or_next_value_parser_ = new Parser() { public boolean parse(PsiBuilder b, int l) { return not_bracket_or_next_value(b, l + 1); } }; }