Json Parser Regeneration

[json] change from field access to accessor call

[json] regenerate parser files


Merge-request: FLEET-MR-7014
Merged-by: Boris Krylov <Boris.Krylov@jetbrains.com>

GitOrigin-RevId: ece460b732d324db447e12ae215e5c5f3aef2d1e
This commit is contained in:
Boris Krylov
2025-11-07 06:13:49 +00:00
committed by intellij-monorepo-bot
parent 65121180ff
commit c14e322043
7 changed files with 367 additions and 400 deletions
@@ -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());
}
}
@@ -97,16 +97,16 @@ public final class JsonSchemaFileValuesIndex extends FileBasedIndexExtension<Str
while (!(idFound && schemaFound && obsoleteIdFound) && lexer.getTokenStart() < lexer.getBufferEnd()) {
SyntaxElementType token = lexer.getTokenType();
// Nesting level can only change at curly braces.
if (token == JsonSyntaxElementTypes.L_CURLY) {
if (token == JsonSyntaxElementTypes.INSTANCE.getL_CURLY()) {
nesting++;
}
else if (token == JsonSyntaxElementTypes.R_CURLY) {
else if (token == JsonSyntaxElementTypes.INSTANCE.getR_CURLY()) {
nesting--;
}
else if (nesting == 1 &&
(token == JsonSyntaxElementTypes.DOUBLE_QUOTED_STRING
|| token == JsonSyntaxElementTypes.SINGLE_QUOTED_STRING
|| token == JsonSyntaxElementTypes.IDENTIFIER)) {
(token == JsonSyntaxElementTypes.INSTANCE.getDOUBLE_QUOTED_STRING()
|| token == JsonSyntaxElementTypes.INSTANCE.getSINGLE_QUOTED_STRING()
|| token == JsonSyntaxElementTypes.INSTANCE.getIDENTIFIER())) {
// We are looking for two special properties at the root level.
switch (lexer.getTokenText()) {
case "$id", "\"$id\"", "'$id'" -> idFound |= captureValueIfString(lexer, map, JsonCachedValues.ID_CACHE_KEY);
@@ -126,10 +126,10 @@ public final class JsonSchemaFileValuesIndex extends FileBasedIndexExtension<Str
SyntaxElementType token;
lexer.advance();
token = skipWhitespacesAndGetTokenType(lexer);
if (token == JsonSyntaxElementTypes.COLON) {
if (token == JsonSyntaxElementTypes.INSTANCE.getCOLON()) {
lexer.advance();
token = skipWhitespacesAndGetTokenType(lexer);
if (token == JsonSyntaxElementTypes.DOUBLE_QUOTED_STRING || token == JsonSyntaxElementTypes.SINGLE_QUOTED_STRING) {
if (token == JsonSyntaxElementTypes.INSTANCE.getDOUBLE_QUOTED_STRING() || token == JsonSyntaxElementTypes.INSTANCE.getSINGLE_QUOTED_STRING()) {
String text = lexer.getTokenText();
destMap.put(key, text.length() <= 1 ? "" : text.substring(1, text.length() - 1));
return true;
@@ -140,8 +140,8 @@ public final class JsonSchemaFileValuesIndex extends FileBasedIndexExtension<Str
private static @Nullable SyntaxElementType skipWhitespacesAndGetTokenType(@NotNull Lexer lexer) {
while ( lexer.getTokenType() == SyntaxTokenTypes.getWHITE_SPACE() ||
lexer.getTokenType() == JsonSyntaxElementTypes.LINE_COMMENT ||
lexer.getTokenType() == JsonSyntaxElementTypes.BLOCK_COMMENT) {
lexer.getTokenType() == JsonSyntaxElementTypes.INSTANCE.getLINE_COMMENT() ||
lexer.getTokenType() == JsonSyntaxElementTypes.INSTANCE.getBLOCK_COMMENT()) {
lexer.advance();
}
return lexer.getTokenType();
@@ -1,5 +1,3 @@
// 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.psi;
@@ -18,32 +16,32 @@ public class JsonElementTypeConverterFactory implements ElementTypeConverterFact
@Override
public @NotNull ElementTypeConverter getElementTypeConverter() {
return ElementTypeConverterKt.elementTypeConverterOf(
new Pair<SyntaxElementType, IElementType>(JsonSyntaxElementTypes.ARRAY, JsonElementTypes.ARRAY),
new Pair<SyntaxElementType, IElementType>(JsonSyntaxElementTypes.BOOLEAN_LITERAL, JsonElementTypes.BOOLEAN_LITERAL),
new Pair<SyntaxElementType, IElementType>(JsonSyntaxElementTypes.LITERAL, JsonElementTypes.LITERAL),
new Pair<SyntaxElementType, IElementType>(JsonSyntaxElementTypes.NULL_LITERAL, JsonElementTypes.NULL_LITERAL),
new Pair<SyntaxElementType, IElementType>(JsonSyntaxElementTypes.NUMBER_LITERAL, JsonElementTypes.NUMBER_LITERAL),
new Pair<SyntaxElementType, IElementType>(JsonSyntaxElementTypes.OBJECT, JsonElementTypes.OBJECT),
new Pair<SyntaxElementType, IElementType>(JsonSyntaxElementTypes.PROPERTY, JsonElementTypes.PROPERTY),
new Pair<SyntaxElementType, IElementType>(JsonSyntaxElementTypes.REFERENCE_EXPRESSION, JsonElementTypes.REFERENCE_EXPRESSION),
new Pair<SyntaxElementType, IElementType>(JsonSyntaxElementTypes.STRING_LITERAL, JsonElementTypes.STRING_LITERAL),
new Pair<SyntaxElementType, IElementType>(JsonSyntaxElementTypes.VALUE, JsonElementTypes.VALUE),
new Pair<SyntaxElementType, IElementType>(JsonSyntaxElementTypes.INSTANCE.getARRAY(), JsonElementTypes.ARRAY),
new Pair<SyntaxElementType, IElementType>(JsonSyntaxElementTypes.INSTANCE.getBOOLEAN_LITERAL(), JsonElementTypes.BOOLEAN_LITERAL),
new Pair<SyntaxElementType, IElementType>(JsonSyntaxElementTypes.INSTANCE.getLITERAL(), JsonElementTypes.LITERAL),
new Pair<SyntaxElementType, IElementType>(JsonSyntaxElementTypes.INSTANCE.getNULL_LITERAL(), JsonElementTypes.NULL_LITERAL),
new Pair<SyntaxElementType, IElementType>(JsonSyntaxElementTypes.INSTANCE.getNUMBER_LITERAL(), JsonElementTypes.NUMBER_LITERAL),
new Pair<SyntaxElementType, IElementType>(JsonSyntaxElementTypes.INSTANCE.getOBJECT(), JsonElementTypes.OBJECT),
new Pair<SyntaxElementType, IElementType>(JsonSyntaxElementTypes.INSTANCE.getPROPERTY(), JsonElementTypes.PROPERTY),
new Pair<SyntaxElementType, IElementType>(JsonSyntaxElementTypes.INSTANCE.getREFERENCE_EXPRESSION(), JsonElementTypes.REFERENCE_EXPRESSION),
new Pair<SyntaxElementType, IElementType>(JsonSyntaxElementTypes.INSTANCE.getSTRING_LITERAL(), JsonElementTypes.STRING_LITERAL),
new Pair<SyntaxElementType, IElementType>(JsonSyntaxElementTypes.INSTANCE.getVALUE(), JsonElementTypes.VALUE),
new Pair<SyntaxElementType, IElementType>(JsonSyntaxElementTypes.L_CURLY, JsonElementTypes.L_CURLY),
new Pair<SyntaxElementType, IElementType>(JsonSyntaxElementTypes.R_CURLY, JsonElementTypes.R_CURLY),
new Pair<SyntaxElementType, IElementType>(JsonSyntaxElementTypes.L_BRACKET, JsonElementTypes.L_BRACKET),
new Pair<SyntaxElementType, IElementType>(JsonSyntaxElementTypes.R_BRACKET, JsonElementTypes.R_BRACKET),
new Pair<SyntaxElementType, IElementType>(JsonSyntaxElementTypes.COMMA, JsonElementTypes.COMMA),
new Pair<SyntaxElementType, IElementType>(JsonSyntaxElementTypes.COLON, JsonElementTypes.COLON),
new Pair<SyntaxElementType, IElementType>(JsonSyntaxElementTypes.LINE_COMMENT, JsonElementTypes.LINE_COMMENT),
new Pair<SyntaxElementType, IElementType>(JsonSyntaxElementTypes.BLOCK_COMMENT, JsonElementTypes.BLOCK_COMMENT),
new Pair<SyntaxElementType, IElementType>(JsonSyntaxElementTypes.DOUBLE_QUOTED_STRING, JsonElementTypes.DOUBLE_QUOTED_STRING),
new Pair<SyntaxElementType, IElementType>(JsonSyntaxElementTypes.SINGLE_QUOTED_STRING, JsonElementTypes.SINGLE_QUOTED_STRING),
new Pair<SyntaxElementType, IElementType>(JsonSyntaxElementTypes.NUMBER, JsonElementTypes.NUMBER),
new Pair<SyntaxElementType, IElementType>(JsonSyntaxElementTypes.TRUE, JsonElementTypes.TRUE),
new Pair<SyntaxElementType, IElementType>(JsonSyntaxElementTypes.FALSE, JsonElementTypes.FALSE),
new Pair<SyntaxElementType, IElementType>(JsonSyntaxElementTypes.NULL, JsonElementTypes.NULL),
new Pair<SyntaxElementType, IElementType>(JsonSyntaxElementTypes.IDENTIFIER, JsonElementTypes.IDENTIFIER)
new Pair<SyntaxElementType, IElementType>(JsonSyntaxElementTypes.INSTANCE.getL_CURLY(), JsonElementTypes.L_CURLY),
new Pair<SyntaxElementType, IElementType>(JsonSyntaxElementTypes.INSTANCE.getR_CURLY(), JsonElementTypes.R_CURLY),
new Pair<SyntaxElementType, IElementType>(JsonSyntaxElementTypes.INSTANCE.getL_BRACKET(), JsonElementTypes.L_BRACKET),
new Pair<SyntaxElementType, IElementType>(JsonSyntaxElementTypes.INSTANCE.getR_BRACKET(), JsonElementTypes.R_BRACKET),
new Pair<SyntaxElementType, IElementType>(JsonSyntaxElementTypes.INSTANCE.getCOMMA(), JsonElementTypes.COMMA),
new Pair<SyntaxElementType, IElementType>(JsonSyntaxElementTypes.INSTANCE.getCOLON(), JsonElementTypes.COLON),
new Pair<SyntaxElementType, IElementType>(JsonSyntaxElementTypes.INSTANCE.getLINE_COMMENT(), JsonElementTypes.LINE_COMMENT),
new Pair<SyntaxElementType, IElementType>(JsonSyntaxElementTypes.INSTANCE.getBLOCK_COMMENT(), JsonElementTypes.BLOCK_COMMENT),
new Pair<SyntaxElementType, IElementType>(JsonSyntaxElementTypes.INSTANCE.getDOUBLE_QUOTED_STRING(), JsonElementTypes.DOUBLE_QUOTED_STRING),
new Pair<SyntaxElementType, IElementType>(JsonSyntaxElementTypes.INSTANCE.getSINGLE_QUOTED_STRING(), JsonElementTypes.SINGLE_QUOTED_STRING),
new Pair<SyntaxElementType, IElementType>(JsonSyntaxElementTypes.INSTANCE.getNUMBER(), JsonElementTypes.NUMBER),
new Pair<SyntaxElementType, IElementType>(JsonSyntaxElementTypes.INSTANCE.getTRUE(), JsonElementTypes.TRUE),
new Pair<SyntaxElementType, IElementType>(JsonSyntaxElementTypes.INSTANCE.getFALSE(), JsonElementTypes.FALSE),
new Pair<SyntaxElementType, IElementType>(JsonSyntaxElementTypes.INSTANCE.getNULL(), JsonElementTypes.NULL),
new Pair<SyntaxElementType, IElementType>(JsonSyntaxElementTypes.INSTANCE.getIDENTIFIER(), JsonElementTypes.IDENTIFIER)
);
}
}
@@ -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()
}
}
@@ -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);
}
@@ -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")
}
}
@@ -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<SyntaxElementTypeSet> = 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("<boolean literal>", JsonSyntaxElementTypes.FALSE, JsonSyntaxElementTypes.TRUE)) return false
var r: Boolean
val m: Marker = s.enter_section_(l, _NONE_, JsonSyntaxElementTypes.BOOLEAN_LITERAL, "<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, "<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, "<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("<string literal>", JsonSyntaxElementTypes.DOUBLE_QUOTED_STRING, JsonSyntaxElementTypes.SINGLE_QUOTED_STRING)) return false
var r: Boolean
val m: Marker = s.enter_section_(l, _NONE_, JsonSyntaxElementTypes.STRING_LITERAL, "<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, "<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<SyntaxElementTypeSet> = 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("<boolean literal>", JsonSyntaxElementTypes.FALSE, JsonSyntaxElementTypes.TRUE)) return false
var r: Boolean
val m: Marker = s.enter_section_(l, Modifiers._NONE_, JsonSyntaxElementTypes.BOOLEAN_LITERAL, "<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, "<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, "<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("<string literal>", 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, "<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, "<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
}
}