From c14e32204356e3d4b929c1ccaeabf394f05fec73 Mon Sep 17 00:00:00 2001 From: Boris Krylov Date: Fri, 7 Nov 2025 06:13:49 +0000 Subject: [PATCH] Json Parser Regeneration [json] change from field access to accessor call [json] regenerate parser files Merge-request: FLEET-MR-7014 Merged-by: Boris Krylov GitOrigin-RevId: ece460b732d324db447e12ae215e5c5f3aef2d1e --- .../com/intellij/json/JsonNamesValidator.java | 4 +- .../impl/JsonSchemaFileValuesIndex.java | 18 +- .../psi/JsonElementTypeConverterFactory.java | 52 +- .../com/intellij/json/JsonFileElementTypes.kt | 6 +- json/src/com/intellij/json/JsonTokenSets.java | 2 +- .../json/syntax/JsonSyntaxElementTypes.kt | 31 +- .../intellij/json/syntax/JsonSyntaxParser.kt | 654 +++++++++--------- 7 files changed, 367 insertions(+), 400 deletions(-) diff --git a/json/backend/src/com/intellij/json/JsonNamesValidator.java b/json/backend/src/com/intellij/json/JsonNamesValidator.java index 0a7c26599e03..47c7c7c564e5 100644 --- a/json/backend/src/com/intellij/json/JsonNamesValidator.java +++ b/json/backend/src/com/intellij/json/JsonNamesValidator.java @@ -39,8 +39,8 @@ public final class JsonNamesValidator implements NamesValidator { myLexer.start(name); SyntaxElementType type = myLexer.getTokenType(); - return myLexer.getTokenEnd() == name.length() && (type == JsonSyntaxElementTypes.DOUBLE_QUOTED_STRING || - type == JsonSyntaxElementTypes.SINGLE_QUOTED_STRING); + return myLexer.getTokenEnd() == name.length() && (type == JsonSyntaxElementTypes.INSTANCE.getDOUBLE_QUOTED_STRING() || + type == JsonSyntaxElementTypes.INSTANCE.getSINGLE_QUOTED_STRING()); } } diff --git a/json/backend/src/com/jetbrains/jsonSchema/impl/JsonSchemaFileValuesIndex.java b/json/backend/src/com/jetbrains/jsonSchema/impl/JsonSchemaFileValuesIndex.java index c42680b18a18..7116c6737f47 100644 --- a/json/backend/src/com/jetbrains/jsonSchema/impl/JsonSchemaFileValuesIndex.java +++ b/json/backend/src/com/jetbrains/jsonSchema/impl/JsonSchemaFileValuesIndex.java @@ -97,16 +97,16 @@ public final class JsonSchemaFileValuesIndex extends FileBasedIndexExtension idFound |= captureValueIfString(lexer, map, JsonCachedValues.ID_CACHE_KEY); @@ -126,10 +126,10 @@ public final class JsonSchemaFileValuesIndex extends FileBasedIndexExtension(JsonSyntaxElementTypes.ARRAY, JsonElementTypes.ARRAY), - new Pair(JsonSyntaxElementTypes.BOOLEAN_LITERAL, JsonElementTypes.BOOLEAN_LITERAL), - new Pair(JsonSyntaxElementTypes.LITERAL, JsonElementTypes.LITERAL), - new Pair(JsonSyntaxElementTypes.NULL_LITERAL, JsonElementTypes.NULL_LITERAL), - new Pair(JsonSyntaxElementTypes.NUMBER_LITERAL, JsonElementTypes.NUMBER_LITERAL), - new Pair(JsonSyntaxElementTypes.OBJECT, JsonElementTypes.OBJECT), - new Pair(JsonSyntaxElementTypes.PROPERTY, JsonElementTypes.PROPERTY), - new Pair(JsonSyntaxElementTypes.REFERENCE_EXPRESSION, JsonElementTypes.REFERENCE_EXPRESSION), - new Pair(JsonSyntaxElementTypes.STRING_LITERAL, JsonElementTypes.STRING_LITERAL), - new Pair(JsonSyntaxElementTypes.VALUE, JsonElementTypes.VALUE), + new Pair(JsonSyntaxElementTypes.INSTANCE.getARRAY(), JsonElementTypes.ARRAY), + new Pair(JsonSyntaxElementTypes.INSTANCE.getBOOLEAN_LITERAL(), JsonElementTypes.BOOLEAN_LITERAL), + new Pair(JsonSyntaxElementTypes.INSTANCE.getLITERAL(), JsonElementTypes.LITERAL), + new Pair(JsonSyntaxElementTypes.INSTANCE.getNULL_LITERAL(), JsonElementTypes.NULL_LITERAL), + new Pair(JsonSyntaxElementTypes.INSTANCE.getNUMBER_LITERAL(), JsonElementTypes.NUMBER_LITERAL), + new Pair(JsonSyntaxElementTypes.INSTANCE.getOBJECT(), JsonElementTypes.OBJECT), + new Pair(JsonSyntaxElementTypes.INSTANCE.getPROPERTY(), JsonElementTypes.PROPERTY), + new Pair(JsonSyntaxElementTypes.INSTANCE.getREFERENCE_EXPRESSION(), JsonElementTypes.REFERENCE_EXPRESSION), + new Pair(JsonSyntaxElementTypes.INSTANCE.getSTRING_LITERAL(), JsonElementTypes.STRING_LITERAL), + new Pair(JsonSyntaxElementTypes.INSTANCE.getVALUE(), JsonElementTypes.VALUE), - new Pair(JsonSyntaxElementTypes.L_CURLY, JsonElementTypes.L_CURLY), - new Pair(JsonSyntaxElementTypes.R_CURLY, JsonElementTypes.R_CURLY), - new Pair(JsonSyntaxElementTypes.L_BRACKET, JsonElementTypes.L_BRACKET), - new Pair(JsonSyntaxElementTypes.R_BRACKET, JsonElementTypes.R_BRACKET), - new Pair(JsonSyntaxElementTypes.COMMA, JsonElementTypes.COMMA), - new Pair(JsonSyntaxElementTypes.COLON, JsonElementTypes.COLON), - new Pair(JsonSyntaxElementTypes.LINE_COMMENT, JsonElementTypes.LINE_COMMENT), - new Pair(JsonSyntaxElementTypes.BLOCK_COMMENT, JsonElementTypes.BLOCK_COMMENT), - new Pair(JsonSyntaxElementTypes.DOUBLE_QUOTED_STRING, JsonElementTypes.DOUBLE_QUOTED_STRING), - new Pair(JsonSyntaxElementTypes.SINGLE_QUOTED_STRING, JsonElementTypes.SINGLE_QUOTED_STRING), - new Pair(JsonSyntaxElementTypes.NUMBER, JsonElementTypes.NUMBER), - new Pair(JsonSyntaxElementTypes.TRUE, JsonElementTypes.TRUE), - new Pair(JsonSyntaxElementTypes.FALSE, JsonElementTypes.FALSE), - new Pair(JsonSyntaxElementTypes.NULL, JsonElementTypes.NULL), - new Pair(JsonSyntaxElementTypes.IDENTIFIER, JsonElementTypes.IDENTIFIER) + new Pair(JsonSyntaxElementTypes.INSTANCE.getL_CURLY(), JsonElementTypes.L_CURLY), + new Pair(JsonSyntaxElementTypes.INSTANCE.getR_CURLY(), JsonElementTypes.R_CURLY), + new Pair(JsonSyntaxElementTypes.INSTANCE.getL_BRACKET(), JsonElementTypes.L_BRACKET), + new Pair(JsonSyntaxElementTypes.INSTANCE.getR_BRACKET(), JsonElementTypes.R_BRACKET), + new Pair(JsonSyntaxElementTypes.INSTANCE.getCOMMA(), JsonElementTypes.COMMA), + new Pair(JsonSyntaxElementTypes.INSTANCE.getCOLON(), JsonElementTypes.COLON), + new Pair(JsonSyntaxElementTypes.INSTANCE.getLINE_COMMENT(), JsonElementTypes.LINE_COMMENT), + new Pair(JsonSyntaxElementTypes.INSTANCE.getBLOCK_COMMENT(), JsonElementTypes.BLOCK_COMMENT), + new Pair(JsonSyntaxElementTypes.INSTANCE.getDOUBLE_QUOTED_STRING(), JsonElementTypes.DOUBLE_QUOTED_STRING), + new Pair(JsonSyntaxElementTypes.INSTANCE.getSINGLE_QUOTED_STRING(), JsonElementTypes.SINGLE_QUOTED_STRING), + new Pair(JsonSyntaxElementTypes.INSTANCE.getNUMBER(), JsonElementTypes.NUMBER), + new Pair(JsonSyntaxElementTypes.INSTANCE.getTRUE(), JsonElementTypes.TRUE), + new Pair(JsonSyntaxElementTypes.INSTANCE.getFALSE(), JsonElementTypes.FALSE), + new Pair(JsonSyntaxElementTypes.INSTANCE.getNULL(), JsonElementTypes.NULL), + new Pair(JsonSyntaxElementTypes.INSTANCE.getIDENTIFIER(), JsonElementTypes.IDENTIFIER) ); } } diff --git a/json/src/com/intellij/json/JsonFileElementTypes.kt b/json/src/com/intellij/json/JsonFileElementTypes.kt index 95c02479bfe3..f5b2852c3cd7 100644 --- a/json/src/com/intellij/json/JsonFileElementTypes.kt +++ b/json/src/com/intellij/json/JsonFileElementTypes.kt @@ -32,7 +32,7 @@ val JSON_FILE: IFileElementType = object : IFileElementType(JsonLanguage.INSTANC getSyntaxParserRuntimeFactory(language).buildParserRuntime(syntaxBuilder.getSyntaxTreeBuilder()) val convertedElement = getConverter(language).convert(elementType) assert(convertedElement != null) { "Failed convert element type: $elementType" } - JsonSyntaxParser().parse(convertedElement!!, runtimeParserRuntime) + JsonSyntaxParser.parse(convertedElement!!, runtimeParserRuntime) return syntaxBuilder.getTreeBuilt().getFirstChildNode() } } @@ -55,7 +55,7 @@ val JSON5_FILE: IFileElementType = object : IFileElementType(Json5Language.INSTA getSyntaxParserRuntimeFactory(Json5Language.INSTANCE).buildParserRuntime(syntaxBuilder.getSyntaxTreeBuilder()) val convertedElement = getConverter(language).convert(elementType) assert(convertedElement != null) { "Failed convert element type: $elementType" } - JsonSyntaxParser().parse(convertedElement!!, runtimeParserRuntime) + JsonSyntaxParser.parse(convertedElement!!, runtimeParserRuntime) return syntaxBuilder.getTreeBuilt().getFirstChildNode() } @@ -77,7 +77,7 @@ val JSON_LINES_FILE: IFileElementType = object : IFileElementType(JsonLinesLangu val runtimeParserRuntime = getSyntaxParserRuntimeFactory(Json5Language.INSTANCE).buildParserRuntime(syntaxBuilder.getSyntaxTreeBuilder()) - JsonSyntaxParser().parse(ElementTypeConverters.getConverter(language).convert(elementType)!!, runtimeParserRuntime) + JsonSyntaxParser.parse(ElementTypeConverters.getConverter(language).convert(elementType)!!, runtimeParserRuntime) return syntaxBuilder.getTreeBuilt().getFirstChildNode() } } \ No newline at end of file diff --git a/json/src/com/intellij/json/JsonTokenSets.java b/json/src/com/intellij/json/JsonTokenSets.java index 2d94507fad8f..d2a3f22b104a 100644 --- a/json/src/com/intellij/json/JsonTokenSets.java +++ b/json/src/com/intellij/json/JsonTokenSets.java @@ -12,7 +12,7 @@ public final class JsonTokenSets { public static final TokenSet STRING_LITERALS = TokenSet.create(SINGLE_QUOTED_STRING, DOUBLE_QUOTED_STRING); public static final TokenSet JSON_CONTAINERS = TokenSet.create(OBJECT, ARRAY); - public static final SyntaxElementTypeSet JSON_KEYWORDS = syntaxElementTypeSetOf(JsonSyntaxElementTypes.TRUE, JsonSyntaxElementTypes.FALSE, JsonSyntaxElementTypes.NULL); + public static final SyntaxElementTypeSet JSON_KEYWORDS = syntaxElementTypeSetOf(JsonSyntaxElementTypes.INSTANCE.getTRUE(), JsonSyntaxElementTypes.INSTANCE.getFALSE(), JsonSyntaxElementTypes.INSTANCE.getNULL()); public static final TokenSet JSON_LITERALS = TokenSet.create(STRING_LITERAL, NUMBER_LITERAL, NULL_LITERAL, TRUE, FALSE); public static final TokenSet JSON_COMMENTARIES = TokenSet.create(BLOCK_COMMENT, LINE_COMMENT); } \ No newline at end of file diff --git a/json/syntax/gen/com/intellij/json/syntax/JsonSyntaxElementTypes.kt b/json/syntax/gen/com/intellij/json/syntax/JsonSyntaxElementTypes.kt index 4d189a4bfcb9..fcba6773aa11 100644 --- a/json/syntax/gen/com/intellij/json/syntax/JsonSyntaxElementTypes.kt +++ b/json/syntax/gen/com/intellij/json/syntax/JsonSyntaxElementTypes.kt @@ -1,59 +1,36 @@ // Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +// This is a generated file. Not intended for manual editing. package com.intellij.json.syntax import com.intellij.platform.syntax.SyntaxElementType -import kotlin.jvm.JvmField +import com.intellij.platform.syntax.SyntaxElementTypeSet +import com.intellij.platform.syntax.syntaxElementTypeSetOf object JsonSyntaxElementTypes { - @JvmField val ARRAY = SyntaxElementType("ARRAY") - @JvmField val BOOLEAN_LITERAL = SyntaxElementType("BOOLEAN_LITERAL") - @JvmField val LITERAL = SyntaxElementType("LITERAL") - @JvmField val NULL_LITERAL = SyntaxElementType("NULL_LITERAL") - @JvmField val NUMBER_LITERAL = SyntaxElementType("NUMBER_LITERAL") - @JvmField val OBJECT = SyntaxElementType("OBJECT") - @JvmField val PROPERTY = SyntaxElementType("PROPERTY") - @JvmField val REFERENCE_EXPRESSION = SyntaxElementType("REFERENCE_EXPRESSION") - @JvmField val STRING_LITERAL = SyntaxElementType("STRING_LITERAL") - @JvmField val VALUE = SyntaxElementType("VALUE") - @JvmField val BLOCK_COMMENT = SyntaxElementType("BLOCK_COMMENT") - @JvmField val COLON = SyntaxElementType(":") - @JvmField val COMMA = SyntaxElementType(",") - @JvmField val DOUBLE_QUOTED_STRING = SyntaxElementType("DOUBLE_QUOTED_STRING") - @JvmField val FALSE = SyntaxElementType("false") - @JvmField val IDENTIFIER = SyntaxElementType("IDENTIFIER") - @JvmField val LINE_COMMENT = SyntaxElementType("LINE_COMMENT") - @JvmField val L_BRACKET = SyntaxElementType("[") - @JvmField val L_CURLY = SyntaxElementType("{") - @JvmField val NULL = SyntaxElementType("null") - @JvmField val NUMBER = SyntaxElementType("NUMBER") - @JvmField val R_BRACKET = SyntaxElementType("]") - @JvmField val R_CURLY = SyntaxElementType("}") - @JvmField val SINGLE_QUOTED_STRING = SyntaxElementType("SINGLE_QUOTED_STRING") - @JvmField val TRUE = SyntaxElementType("true") -} \ No newline at end of file +} diff --git a/json/syntax/gen/com/intellij/json/syntax/JsonSyntaxParser.kt b/json/syntax/gen/com/intellij/json/syntax/JsonSyntaxParser.kt index 5ee25a1af3fe..0d6f6fb6ff83 100644 --- a/json/syntax/gen/com/intellij/json/syntax/JsonSyntaxParser.kt +++ b/json/syntax/gen/com/intellij/json/syntax/JsonSyntaxParser.kt @@ -1,349 +1,341 @@ // Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +// This is a generated file. Not intended for manual editing. package com.intellij.json.syntax -import com.intellij.platform.syntax.SyntaxElementType -import com.intellij.platform.syntax.SyntaxElementTypeSet -import com.intellij.platform.syntax.parser.SyntaxTreeBuilder.Marker import com.intellij.platform.syntax.util.runtime.* -import com.intellij.platform.syntax.util.runtime.Modifiers.Companion._AND_ -import com.intellij.platform.syntax.util.runtime.Modifiers.Companion._COLLAPSE_ -import com.intellij.platform.syntax.util.runtime.Modifiers.Companion._NONE_ -import com.intellij.platform.syntax.util.runtime.Modifiers.Companion._NOT_ +import com.intellij.platform.syntax.parser.SyntaxTreeBuilder.Marker +import com.intellij.platform.syntax.SyntaxElementTypeSet +import com.intellij.platform.syntax.syntaxElementTypeSetOf +import com.intellij.platform.syntax.SyntaxElementType @Suppress("unused", "FunctionName", "JoinDeclarationAndAssignment") -class JsonSyntaxParser { +object JsonSyntaxParser { fun parse(t: SyntaxElementType, s: SyntaxGeneratedParserRuntime) { var r: Boolean s.init(::parse, EXTENDS_SETS_) - val m: Marker = s.enter_section_(0, _COLLAPSE_, null) - r = parse_root_(t, s) + val m: Marker = s.enter_section_(0, Modifiers._COLLAPSE_, null) + r = parse_root_(t, s, 0) s.exit_section_(0, m, t, r, true, TRUE_CONDITION) } - protected fun parse_root_(t: SyntaxElementType, s: SyntaxGeneratedParserRuntime): Boolean { - return parse_root_(t, s, 0) + internal fun parse_root_(t: SyntaxElementType, s: SyntaxGeneratedParserRuntime, l: Int): Boolean { + return json(s, l + 1) } - companion object { - internal fun parse_root_(t: SyntaxElementType, s: SyntaxGeneratedParserRuntime, l: Int): Boolean { - return json(s, l + 1) - } - - val EXTENDS_SETS_: Array = arrayOf( - create_token_set_(JsonSyntaxElementTypes.ARRAY, JsonSyntaxElementTypes.BOOLEAN_LITERAL, JsonSyntaxElementTypes.LITERAL, JsonSyntaxElementTypes.NULL_LITERAL, - JsonSyntaxElementTypes.NUMBER_LITERAL, JsonSyntaxElementTypes.OBJECT, JsonSyntaxElementTypes.REFERENCE_EXPRESSION, JsonSyntaxElementTypes.STRING_LITERAL, - JsonSyntaxElementTypes.VALUE), - ) - - /* ********************************************************** */ - // '[' array_element* ']' - fun array(s: SyntaxGeneratedParserRuntime, l: Int): Boolean { - if (!s.recursion_guard_(l, "array")) return false - if (!s.nextTokenIs(JsonSyntaxElementTypes.L_BRACKET)) return false - var r: Boolean - var p: Boolean - val m: Marker = s.enter_section_(l, _NONE_, JsonSyntaxElementTypes.ARRAY, null) - r = s.consumeToken(JsonSyntaxElementTypes.L_BRACKET) - p = r // pin = 1 - r = r && s.report_error_(array_1(s, l + 1)) - r = p && s.consumeToken(JsonSyntaxElementTypes.R_BRACKET) && r - s.exit_section_(l, m, r, p, null) - return r || p - } - - // array_element* - private fun array_1(s: SyntaxGeneratedParserRuntime, l: Int): Boolean { - if (!s.recursion_guard_(l, "array_1")) return false - while (true) { - val c: Int = s.current_position_() - if (!array_element(s, l + 1)) break - if (!s.empty_element_parsed_guard_("array_1", c)) break - } - return true - } - - /* ********************************************************** */ - // value (','|&']') - internal fun array_element(s: SyntaxGeneratedParserRuntime, l: Int): Boolean { - if (!s.recursion_guard_(l, "array_element")) return false - var r: Boolean - var p: Boolean - val m: Marker = s.enter_section_(l, _NONE_) - r = `value_$`(s, l + 1) - p = r // pin = 1 - r = r && array_element_1(s, l + 1) - s.exit_section_(l, m, r, p, JsonSyntaxParser::not_bracket_or_next_value) - return r || p - } - - // ','|&']' - private fun array_element_1(s: SyntaxGeneratedParserRuntime, l: Int): Boolean { - if (!s.recursion_guard_(l, "array_element_1")) return false - var r: Boolean - val m: Marker = s.enter_section_() - r = s.consumeToken(JsonSyntaxElementTypes.COMMA) - if (!r) r = array_element_1_1(s, l + 1) - s.exit_section_(m, null, r) - return r - } - - // &']' - private fun array_element_1_1(s: SyntaxGeneratedParserRuntime, l: Int): Boolean { - if (!s.recursion_guard_(l, "array_element_1_1")) return false - var r: Boolean - val m: Marker = s.enter_section_(l, _AND_) - r = s.consumeToken(JsonSyntaxElementTypes.R_BRACKET) - s.exit_section_(l, m, r, false, null) - return r - } - - /* ********************************************************** */ - // TRUE | FALSE - fun boolean_literal(s: SyntaxGeneratedParserRuntime, l: Int): Boolean { - if (!s.recursion_guard_(l, "boolean_literal")) return false - if (!s.nextTokenIs("", JsonSyntaxElementTypes.FALSE, JsonSyntaxElementTypes.TRUE)) return false - var r: Boolean - val m: Marker = s.enter_section_(l, _NONE_, JsonSyntaxElementTypes.BOOLEAN_LITERAL, "") - r = s.consumeToken(JsonSyntaxElementTypes.TRUE) - if (!r) r = s.consumeToken(JsonSyntaxElementTypes.FALSE) - s.exit_section_(l, m, r, false, null) - return r - } - - /* ********************************************************** */ - // value* - internal fun json(s: SyntaxGeneratedParserRuntime, l: Int): Boolean { - if (!s.recursion_guard_(l, "json")) return false - while (true) { - val c: Int = s.current_position_() - if (!`value_$`(s, l + 1)) break - if (!s.empty_element_parsed_guard_("json", c)) break - } - return true - } - - /* ********************************************************** */ - // string_literal | number_literal | boolean_literal | null_literal - fun literal(s: SyntaxGeneratedParserRuntime, l: Int): Boolean { - if (!s.recursion_guard_(l, "literal")) return false - var r: Boolean - val m: Marker = s.enter_section_(l, _COLLAPSE_, JsonSyntaxElementTypes.LITERAL, "") - r = string_literal(s, l + 1) - if (!r) r = number_literal(s, l + 1) - if (!r) r = boolean_literal(s, l + 1) - if (!r) r = null_literal(s, l + 1) - s.exit_section_(l, m, r, false, null) - return r - } - - /* ********************************************************** */ - // !('}'|value) - internal fun not_brace_or_next_value(s: SyntaxGeneratedParserRuntime, l: Int): Boolean { - if (!s.recursion_guard_(l, "not_brace_or_next_value")) return false - var r: Boolean - val m: Marker = s.enter_section_(l, _NOT_) - r = !not_brace_or_next_value_0(s, l + 1) - s.exit_section_(l, m, r, false, null) - return r - } - - // '}'|value - private fun not_brace_or_next_value_0(s: SyntaxGeneratedParserRuntime, l: Int): Boolean { - if (!s.recursion_guard_(l, "not_brace_or_next_value_0")) return false - var r: Boolean - r = s.consumeToken(JsonSyntaxElementTypes.R_CURLY) - if (!r) r = `value_$`(s, l + 1) - return r - } - - /* ********************************************************** */ - // !(']'|value) - internal fun not_bracket_or_next_value(s: SyntaxGeneratedParserRuntime, l: Int): Boolean { - if (!s.recursion_guard_(l, "not_bracket_or_next_value")) return false - var r: Boolean - val m: Marker = s.enter_section_(l, _NOT_) - r = !not_bracket_or_next_value_0(s, l + 1) - s.exit_section_(l, m, r, false, null) - return r - } - - // ']'|value - private fun not_bracket_or_next_value_0(s: SyntaxGeneratedParserRuntime, l: Int): Boolean { - if (!s.recursion_guard_(l, "not_bracket_or_next_value_0")) return false - var r: Boolean - r = s.consumeToken(JsonSyntaxElementTypes.R_BRACKET) - if (!r) r = `value_$`(s, l + 1) - return r - } - - /* ********************************************************** */ - // NULL - fun null_literal(s: SyntaxGeneratedParserRuntime, l: Int): Boolean { - if (!s.recursion_guard_(l, "null_literal")) return false - if (!s.nextTokenIs(JsonSyntaxElementTypes.NULL)) return false - var r: Boolean - val m: Marker = s.enter_section_() - r = s.consumeToken(JsonSyntaxElementTypes.NULL) - s.exit_section_(m, JsonSyntaxElementTypes.NULL_LITERAL, r) - return r - } - - /* ********************************************************** */ - // NUMBER - fun number_literal(s: SyntaxGeneratedParserRuntime, l: Int): Boolean { - if (!s.recursion_guard_(l, "number_literal")) return false - if (!s.nextTokenIs(JsonSyntaxElementTypes.NUMBER)) return false - var r: Boolean - val m: Marker = s.enter_section_() - r = s.consumeToken(JsonSyntaxElementTypes.NUMBER) - s.exit_section_(m, JsonSyntaxElementTypes.NUMBER_LITERAL, r) - return r - } - - /* ********************************************************** */ - // '{' object_element* '}' - fun `object_$`(s: SyntaxGeneratedParserRuntime, l: Int): Boolean { - if (!s.recursion_guard_(l, "`object_$`")) return false - if (!s.nextTokenIs(JsonSyntaxElementTypes.L_CURLY)) return false - var r: Boolean - var p: Boolean - val m: Marker = s.enter_section_(l, _NONE_, JsonSyntaxElementTypes.OBJECT, null) - r = s.consumeToken(JsonSyntaxElementTypes.L_CURLY) - p = r // pin = 1 - r = r && s.report_error_(object_1(s, l + 1)) - r = p && s.consumeToken(JsonSyntaxElementTypes.R_CURLY) && r - s.exit_section_(l, m, r, p, null) - return r || p - } - - // object_element* - private fun object_1(s: SyntaxGeneratedParserRuntime, l: Int): Boolean { - if (!s.recursion_guard_(l, "object_1")) return false - while (true) { - val c: Int = s.current_position_() - if (!object_element(s, l + 1)) break - if (!s.empty_element_parsed_guard_("object_1", c)) break - } - return true - } - - /* ********************************************************** */ - // property (','|&'}') - internal fun object_element(s: SyntaxGeneratedParserRuntime, l: Int): Boolean { - if (!s.recursion_guard_(l, "object_element")) return false - var r: Boolean - var p: Boolean - val m: Marker = s.enter_section_(l, _NONE_) - r = `property_$`(s, l + 1) - p = r // pin = 1 - r = r && object_element_1(s, l + 1) - s.exit_section_(l, m, r, p, JsonSyntaxParser::not_brace_or_next_value) - return r || p - } - - // ','|&'}' - private fun object_element_1(s: SyntaxGeneratedParserRuntime, l: Int): Boolean { - if (!s.recursion_guard_(l, "object_element_1")) return false - var r: Boolean - val m: Marker = s.enter_section_() - r = s.consumeToken(JsonSyntaxElementTypes.COMMA) - if (!r) r = object_element_1_1(s, l + 1) - s.exit_section_(m, null, r) - return r - } - - // &'}' - private fun object_element_1_1(s: SyntaxGeneratedParserRuntime, l: Int): Boolean { - if (!s.recursion_guard_(l, "object_element_1_1")) return false - var r: Boolean - val m: Marker = s.enter_section_(l, _AND_) - r = s.consumeToken(JsonSyntaxElementTypes.R_CURLY) - s.exit_section_(l, m, r, false, null) - return r - } - - /* ********************************************************** */ - // property_name (':' property_value) - fun `property_$`(s: SyntaxGeneratedParserRuntime, l: Int): Boolean { - if (!s.recursion_guard_(l, "`property_$`")) return false - var r: Boolean - var p: Boolean - val m: Marker = s.enter_section_(l, _NONE_, JsonSyntaxElementTypes.PROPERTY, "") - r = property_name(s, l + 1) - p = r // pin = 1 - r = r && property_1(s, l + 1) - s.exit_section_(l, m, r, p, null) - return r || p - } - - // ':' property_value - private fun property_1(s: SyntaxGeneratedParserRuntime, l: Int): Boolean { - if (!s.recursion_guard_(l, "property_1")) return false - var r: Boolean - var p: Boolean - val m: Marker = s.enter_section_(l, _NONE_) - r = s.consumeToken(JsonSyntaxElementTypes.COLON) - p = r // pin = 1 - r = r && property_value(s, l + 1) - s.exit_section_(l, m, r, p, null) - return r || p - } - - /* ********************************************************** */ - // literal | reference_expression - internal fun property_name(s: SyntaxGeneratedParserRuntime, l: Int): Boolean { - if (!s.recursion_guard_(l, "property_name")) return false - var r: Boolean - r = literal(s, l + 1) - if (!r) r = reference_expression(s, l + 1) - return r - } - - /* ********************************************************** */ - // value - internal fun property_value(s: SyntaxGeneratedParserRuntime, l: Int): Boolean { - return `value_$`(s, l + 1) - } - - /* ********************************************************** */ - // IDENTIFIER - fun reference_expression(s: SyntaxGeneratedParserRuntime, l: Int): Boolean { - if (!s.recursion_guard_(l, "reference_expression")) return false - if (!s.nextTokenIs(JsonSyntaxElementTypes.IDENTIFIER)) return false - var r: Boolean - val m: Marker = s.enter_section_() - r = s.consumeToken(JsonSyntaxElementTypes.IDENTIFIER) - s.exit_section_(m, JsonSyntaxElementTypes.REFERENCE_EXPRESSION, r) - return r - } - - /* ********************************************************** */ - // SINGLE_QUOTED_STRING | DOUBLE_QUOTED_STRING - fun string_literal(s: SyntaxGeneratedParserRuntime, l: Int): Boolean { - if (!s.recursion_guard_(l, "string_literal")) return false - if (!s.nextTokenIs("", JsonSyntaxElementTypes.DOUBLE_QUOTED_STRING, JsonSyntaxElementTypes.SINGLE_QUOTED_STRING)) return false - var r: Boolean - val m: Marker = s.enter_section_(l, _NONE_, JsonSyntaxElementTypes.STRING_LITERAL, "") - r = s.consumeToken(JsonSyntaxElementTypes.SINGLE_QUOTED_STRING) - if (!r) r = s.consumeToken(JsonSyntaxElementTypes.DOUBLE_QUOTED_STRING) - s.exit_section_(l, m, r, false, null) - return r - } - - /* ********************************************************** */ - // object | array | literal | reference_expression - fun `value_$`(s: SyntaxGeneratedParserRuntime, l: Int): Boolean { - if (!s.recursion_guard_(l, "`value_$`")) return false - var r: Boolean - val m: Marker = s.enter_section_(l, _COLLAPSE_, JsonSyntaxElementTypes.VALUE, "") - r = `object_$`(s, l + 1) - if (!r) r = array(s, l + 1) - if (!r) r = literal(s, l + 1) - if (!r) r = reference_expression(s, l + 1) - s.exit_section_(l, m, r, false, null) - return r - } + val EXTENDS_SETS_: Array = arrayOf( + create_token_set_(JsonSyntaxElementTypes.ARRAY, JsonSyntaxElementTypes.BOOLEAN_LITERAL, JsonSyntaxElementTypes.LITERAL, JsonSyntaxElementTypes.NULL_LITERAL, + JsonSyntaxElementTypes.NUMBER_LITERAL, JsonSyntaxElementTypes.OBJECT, JsonSyntaxElementTypes.REFERENCE_EXPRESSION, JsonSyntaxElementTypes.STRING_LITERAL, + JsonSyntaxElementTypes.VALUE), + ) + /* ********************************************************** */ + // '[' array_element* ']' + fun array(s: SyntaxGeneratedParserRuntime, l: Int): Boolean { + if (!s.recursion_guard_(l, "array")) return false + if (!s.nextTokenIs(JsonSyntaxElementTypes.L_BRACKET)) return false + var r: Boolean + var p: Boolean + val m: Marker = s.enter_section_(l, Modifiers._NONE_, JsonSyntaxElementTypes.ARRAY, null) + r = s.consumeToken(JsonSyntaxElementTypes.L_BRACKET) + p = r // pin = 1 + r = r && s.report_error_(array_1(s, l + 1)) + r = p && s.consumeToken(JsonSyntaxElementTypes.R_BRACKET) && r + s.exit_section_(l, m, r, p, null) + return r || p } + + // array_element* + private fun array_1(s: SyntaxGeneratedParserRuntime, l: Int): Boolean { + if (!s.recursion_guard_(l, "array_1")) return false + while (true) { + val c: Int = s.current_position_() + if (!array_element(s, l + 1)) break + if (!s.empty_element_parsed_guard_("array_1", c)) break + } + return true + } + + /* ********************************************************** */ + // value (','|&']') + internal fun array_element(s: SyntaxGeneratedParserRuntime, l: Int): Boolean { + if (!s.recursion_guard_(l, "array_element")) return false + var r: Boolean + var p: Boolean + val m: Marker = s.enter_section_(l, Modifiers._NONE_) + r = value__(s, l + 1) + p = r // pin = 1 + r = r && array_element_1(s, l + 1) + s.exit_section_(l, m, r, p, JsonSyntaxParser::not_bracket_or_next_value) + return r || p + } + + // ','|&']' + private fun array_element_1(s: SyntaxGeneratedParserRuntime, l: Int): Boolean { + if (!s.recursion_guard_(l, "array_element_1")) return false + var r: Boolean + val m: Marker = s.enter_section_() + r = s.consumeToken(JsonSyntaxElementTypes.COMMA) + if (!r) r = array_element_1_1(s, l + 1) + s.exit_section_(m, null, r) + return r + } + + // &']' + private fun array_element_1_1(s: SyntaxGeneratedParserRuntime, l: Int): Boolean { + if (!s.recursion_guard_(l, "array_element_1_1")) return false + var r: Boolean + val m: Marker = s.enter_section_(l, Modifiers._AND_) + r = s.consumeToken(JsonSyntaxElementTypes.R_BRACKET) + s.exit_section_(l, m, r, false, null) + return r + } + + /* ********************************************************** */ + // TRUE | FALSE + fun boolean_literal(s: SyntaxGeneratedParserRuntime, l: Int): Boolean { + if (!s.recursion_guard_(l, "boolean_literal")) return false + if (!s.nextTokenIs("", JsonSyntaxElementTypes.FALSE, JsonSyntaxElementTypes.TRUE)) return false + var r: Boolean + val m: Marker = s.enter_section_(l, Modifiers._NONE_, JsonSyntaxElementTypes.BOOLEAN_LITERAL, "") + r = s.consumeToken(JsonSyntaxElementTypes.TRUE) + if (!r) r = s.consumeToken(JsonSyntaxElementTypes.FALSE) + s.exit_section_(l, m, r, false, null) + return r + } + + /* ********************************************************** */ + // value* + internal fun json(s: SyntaxGeneratedParserRuntime, l: Int): Boolean { + if (!s.recursion_guard_(l, "json")) return false + while (true) { + val c: Int = s.current_position_() + if (!value__(s, l + 1)) break + if (!s.empty_element_parsed_guard_("json", c)) break + } + return true + } + + /* ********************************************************** */ + // string_literal | number_literal | boolean_literal | null_literal + fun literal(s: SyntaxGeneratedParserRuntime, l: Int): Boolean { + if (!s.recursion_guard_(l, "literal")) return false + var r: Boolean + val m: Marker = s.enter_section_(l, Modifiers._COLLAPSE_, JsonSyntaxElementTypes.LITERAL, "") + r = string_literal(s, l + 1) + if (!r) r = number_literal(s, l + 1) + if (!r) r = boolean_literal(s, l + 1) + if (!r) r = null_literal(s, l + 1) + s.exit_section_(l, m, r, false, null) + return r + } + + /* ********************************************************** */ + // !('}'|value) + internal fun not_brace_or_next_value(s: SyntaxGeneratedParserRuntime, l: Int): Boolean { + if (!s.recursion_guard_(l, "not_brace_or_next_value")) return false + var r: Boolean + val m: Marker = s.enter_section_(l, Modifiers._NOT_) + r = !not_brace_or_next_value_0(s, l + 1) + s.exit_section_(l, m, r, false, null) + return r + } + + // '}'|value + private fun not_brace_or_next_value_0(s: SyntaxGeneratedParserRuntime, l: Int): Boolean { + if (!s.recursion_guard_(l, "not_brace_or_next_value_0")) return false + var r: Boolean + r = s.consumeToken(JsonSyntaxElementTypes.R_CURLY) + if (!r) r = value__(s, l + 1) + return r + } + + /* ********************************************************** */ + // !(']'|value) + internal fun not_bracket_or_next_value(s: SyntaxGeneratedParserRuntime, l: Int): Boolean { + if (!s.recursion_guard_(l, "not_bracket_or_next_value")) return false + var r: Boolean + val m: Marker = s.enter_section_(l, Modifiers._NOT_) + r = !not_bracket_or_next_value_0(s, l + 1) + s.exit_section_(l, m, r, false, null) + return r + } + + // ']'|value + private fun not_bracket_or_next_value_0(s: SyntaxGeneratedParserRuntime, l: Int): Boolean { + if (!s.recursion_guard_(l, "not_bracket_or_next_value_0")) return false + var r: Boolean + r = s.consumeToken(JsonSyntaxElementTypes.R_BRACKET) + if (!r) r = value__(s, l + 1) + return r + } + + /* ********************************************************** */ + // NULL + fun null_literal(s: SyntaxGeneratedParserRuntime, l: Int): Boolean { + if (!s.recursion_guard_(l, "null_literal")) return false + if (!s.nextTokenIs(JsonSyntaxElementTypes.NULL)) return false + var r: Boolean + val m: Marker = s.enter_section_() + r = s.consumeToken(JsonSyntaxElementTypes.NULL) + s.exit_section_(m, JsonSyntaxElementTypes.NULL_LITERAL, r) + return r + } + + /* ********************************************************** */ + // NUMBER + fun number_literal(s: SyntaxGeneratedParserRuntime, l: Int): Boolean { + if (!s.recursion_guard_(l, "number_literal")) return false + if (!s.nextTokenIs(JsonSyntaxElementTypes.NUMBER)) return false + var r: Boolean + val m: Marker = s.enter_section_() + r = s.consumeToken(JsonSyntaxElementTypes.NUMBER) + s.exit_section_(m, JsonSyntaxElementTypes.NUMBER_LITERAL, r) + return r + } + + /* ********************************************************** */ + // '{' object_element* '}' + fun object__(s: SyntaxGeneratedParserRuntime, l: Int): Boolean { + if (!s.recursion_guard_(l, "object__")) return false + if (!s.nextTokenIs(JsonSyntaxElementTypes.L_CURLY)) return false + var r: Boolean + var p: Boolean + val m: Marker = s.enter_section_(l, Modifiers._NONE_, JsonSyntaxElementTypes.OBJECT, null) + r = s.consumeToken(JsonSyntaxElementTypes.L_CURLY) + p = r // pin = 1 + r = r && s.report_error_(object_1(s, l + 1)) + r = p && s.consumeToken(JsonSyntaxElementTypes.R_CURLY) && r + s.exit_section_(l, m, r, p, null) + return r || p + } + + // object_element* + private fun object_1(s: SyntaxGeneratedParserRuntime, l: Int): Boolean { + if (!s.recursion_guard_(l, "object_1")) return false + while (true) { + val c: Int = s.current_position_() + if (!object_element(s, l + 1)) break + if (!s.empty_element_parsed_guard_("object_1", c)) break + } + return true + } + + /* ********************************************************** */ + // property (','|&'}') + internal fun object_element(s: SyntaxGeneratedParserRuntime, l: Int): Boolean { + if (!s.recursion_guard_(l, "object_element")) return false + var r: Boolean + var p: Boolean + val m: Marker = s.enter_section_(l, Modifiers._NONE_) + r = property__(s, l + 1) + p = r // pin = 1 + r = r && object_element_1(s, l + 1) + s.exit_section_(l, m, r, p, JsonSyntaxParser::not_brace_or_next_value) + return r || p + } + + // ','|&'}' + private fun object_element_1(s: SyntaxGeneratedParserRuntime, l: Int): Boolean { + if (!s.recursion_guard_(l, "object_element_1")) return false + var r: Boolean + val m: Marker = s.enter_section_() + r = s.consumeToken(JsonSyntaxElementTypes.COMMA) + if (!r) r = object_element_1_1(s, l + 1) + s.exit_section_(m, null, r) + return r + } + + // &'}' + private fun object_element_1_1(s: SyntaxGeneratedParserRuntime, l: Int): Boolean { + if (!s.recursion_guard_(l, "object_element_1_1")) return false + var r: Boolean + val m: Marker = s.enter_section_(l, Modifiers._AND_) + r = s.consumeToken(JsonSyntaxElementTypes.R_CURLY) + s.exit_section_(l, m, r, false, null) + return r + } + + /* ********************************************************** */ + // property_name (':' property_value) + fun property__(s: SyntaxGeneratedParserRuntime, l: Int): Boolean { + if (!s.recursion_guard_(l, "property__")) return false + var r: Boolean + var p: Boolean + val m: Marker = s.enter_section_(l, Modifiers._NONE_, JsonSyntaxElementTypes.PROPERTY, "") + r = property_name(s, l + 1) + p = r // pin = 1 + r = r && property_1(s, l + 1) + s.exit_section_(l, m, r, p, null) + return r || p + } + + // ':' property_value + private fun property_1(s: SyntaxGeneratedParserRuntime, l: Int): Boolean { + if (!s.recursion_guard_(l, "property_1")) return false + var r: Boolean + var p: Boolean + val m: Marker = s.enter_section_(l, Modifiers._NONE_) + r = s.consumeToken(JsonSyntaxElementTypes.COLON) + p = r // pin = 1 + r = r && property_value(s, l + 1) + s.exit_section_(l, m, r, p, null) + return r || p + } + + /* ********************************************************** */ + // literal | reference_expression + internal fun property_name(s: SyntaxGeneratedParserRuntime, l: Int): Boolean { + if (!s.recursion_guard_(l, "property_name")) return false + var r: Boolean + r = literal(s, l + 1) + if (!r) r = reference_expression(s, l + 1) + return r + } + + /* ********************************************************** */ + // value + internal fun property_value(s: SyntaxGeneratedParserRuntime, l: Int): Boolean { + return value__(s, l + 1) + } + + /* ********************************************************** */ + // IDENTIFIER + fun reference_expression(s: SyntaxGeneratedParserRuntime, l: Int): Boolean { + if (!s.recursion_guard_(l, "reference_expression")) return false + if (!s.nextTokenIs(JsonSyntaxElementTypes.IDENTIFIER)) return false + var r: Boolean + val m: Marker = s.enter_section_() + r = s.consumeToken(JsonSyntaxElementTypes.IDENTIFIER) + s.exit_section_(m, JsonSyntaxElementTypes.REFERENCE_EXPRESSION, r) + return r + } + + /* ********************************************************** */ + // SINGLE_QUOTED_STRING | DOUBLE_QUOTED_STRING + fun string_literal(s: SyntaxGeneratedParserRuntime, l: Int): Boolean { + if (!s.recursion_guard_(l, "string_literal")) return false + if (!s.nextTokenIs("", JsonSyntaxElementTypes.DOUBLE_QUOTED_STRING, JsonSyntaxElementTypes.SINGLE_QUOTED_STRING)) return false + var r: Boolean + val m: Marker = s.enter_section_(l, Modifiers._NONE_, JsonSyntaxElementTypes.STRING_LITERAL, "") + r = s.consumeToken(JsonSyntaxElementTypes.SINGLE_QUOTED_STRING) + if (!r) r = s.consumeToken(JsonSyntaxElementTypes.DOUBLE_QUOTED_STRING) + s.exit_section_(l, m, r, false, null) + return r + } + + /* ********************************************************** */ + // object | array | literal | reference_expression + fun value__(s: SyntaxGeneratedParserRuntime, l: Int): Boolean { + if (!s.recursion_guard_(l, "value__")) return false + var r: Boolean + val m: Marker = s.enter_section_(l, Modifiers._COLLAPSE_, JsonSyntaxElementTypes.VALUE, "") + r = object__(s, l + 1) + if (!r) r = array(s, l + 1) + if (!r) r = literal(s, l + 1) + if (!r) r = reference_expression(s, l + 1) + s.exit_section_(l, m, r, false, null) + return r + } + }