diff --git a/AK/JsonParser.cpp b/AK/JsonParser.cpp index fb29a4fab4d..611ad0d5c21 100644 --- a/AK/JsonParser.cpp +++ b/AK/JsonParser.cpp @@ -18,6 +18,12 @@ constexpr bool is_space(int ch) return ch == '\t' || ch == '\n' || ch == '\r' || ch == ' '; } +ErrorOr JsonParser::parse(StringView input) +{ + JsonParser parser(input); + return parser.parse_json(); +} + // ECMA-404 9 String // Boils down to // STRING = "\"" *("[^\"\\]" | "\\" ("[\"\\bfnrt]" | "u[0-9A-Za-z]{4}")) "\"" @@ -335,7 +341,7 @@ ErrorOr JsonParser::parse_helper() return Error::from_string_literal("JsonParser: Unexpected character"); } -ErrorOr JsonParser::parse() +ErrorOr JsonParser::parse_json() { auto result = TRY(parse_helper()); ignore_while(is_space); diff --git a/AK/JsonParser.h b/AK/JsonParser.h index ccea7447c50..6fae427f531 100644 --- a/AK/JsonParser.h +++ b/AK/JsonParser.h @@ -13,14 +13,15 @@ namespace AK { class JsonParser : private GenericLexer { public: + static ErrorOr parse(StringView); + +private: explicit JsonParser(StringView input) : GenericLexer(input) { } - ErrorOr parse(); - -private: + ErrorOr parse_json(); ErrorOr parse_helper(); ErrorOr consume_and_unescape_string(); diff --git a/AK/JsonValue.cpp b/AK/JsonValue.cpp index a816172f0e5..730872cd6cd 100644 --- a/AK/JsonValue.cpp +++ b/AK/JsonValue.cpp @@ -190,7 +190,7 @@ JsonValue::JsonValue(JsonArray&& value) ErrorOr JsonValue::from_string(StringView input) { - return JsonParser(input).parse(); + return JsonParser::parse(input); } String JsonValue::serialized() const diff --git a/Meta/Lagom/Fuzzers/FuzzJsonParser.cpp b/Meta/Lagom/Fuzzers/FuzzJsonParser.cpp index 87566e7928e..86feb73994e 100644 --- a/Meta/Lagom/Fuzzers/FuzzJsonParser.cpp +++ b/Meta/Lagom/Fuzzers/FuzzJsonParser.cpp @@ -9,7 +9,6 @@ extern "C" int LLVMFuzzerTestOneInput(uint8_t const* data, size_t size) { AK::set_debug_enabled(false); - JsonParser parser({ data, size }); - (void)parser.parse(); + (void)JsonParser::parse({ data, size }); return 0; }