// Copyright 2022 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. #ifndef FUZZTEST_GRAMMARS_JSON_GRAMMAR_H_ #define FUZZTEST_GRAMMARS_JSON_GRAMMAR_H_ #include "./fuzztest/internal/domains/in_grammar_impl.h" namespace fuzztest::internal::grammar::json { enum JsonTypes { kJsonNode, kValueNode, kObjectNode, kMembersNode, kMemberNode, kArrayNode, kElementsNode, kElementNode, kSTRINGNode, kCHARACTERNode, kNUMBERNode, kINTEGERNode, kDIGITSNode, kDIGITNode, kONETONINENode, kFRACTIONNode, kEXPONENTNode, kSIGNNode, kWSPACENode, kObjectSubNode0, kObjectSubNode1, kMembersSubNode2, kArraySubNode3, kArraySubNode4, kElementsSubNode5, kElementsSubNode6, kSTRINGSubNode7, kNUMBERSubNode8, kNUMBERSubNode9, kINTEGERSubNode10, kINTEGERSubNode11, kINTEGERSubNode12, kDIGITSSubNode13, kEXPONENTSubNode14, kEXPONENTSubNode15, kWSPACESubNode16, kLiteral7, kLiteral11, kLiteral8, kLiteral6, kLiteral5, kLiteral3, kLiteral12, kLiteral4, kLiteral13, kLiteral1, kLiteral2, kLiteral0, kLiteral9, kLiteral10, kCharSet3, kCharSet1, kCharSet2, kCharSet0, }; class JsonNode; class ValueNode; class ObjectNode; class MembersNode; class MemberNode; class ArrayNode; class ElementsNode; class ElementNode; class STRINGNode; class CHARACTERNode; class NUMBERNode; class INTEGERNode; class DIGITSNode; class DIGITNode; class ONETONINENode; class FRACTIONNode; class EXPONENTNode; class SIGNNode; class WSPACENode; class ObjectSubNode0; class ObjectSubNode1; class MembersSubNode2; class ArraySubNode3; class ArraySubNode4; class ElementsSubNode5; class ElementsSubNode6; class STRINGSubNode7; class NUMBERSubNode8; class NUMBERSubNode9; class INTEGERSubNode10; class INTEGERSubNode11; class INTEGERSubNode12; class DIGITSSubNode13; class EXPONENTSubNode14; class EXPONENTSubNode15; class WSPACESubNode16; class Literal7; class Literal11; class Literal8; class Literal6; class Literal5; class Literal3; class Literal12; class Literal4; class Literal13; class Literal1; class Literal2; class Literal0; class Literal9; class Literal10; class CharSet3; class CharSet1; class CharSet2; class CharSet0; inline constexpr absl::string_view kStrLiteral7 = "+"; inline constexpr absl::string_view kStrLiteral11 = ","; inline constexpr absl::string_view kStrLiteral8 = "-"; inline constexpr absl::string_view kStrLiteral6 = "."; inline constexpr absl::string_view kStrLiteral5 = "0"; inline constexpr absl::string_view kStrLiteral3 = ":"; inline constexpr absl::string_view kStrLiteral12 = "["; inline constexpr absl::string_view kStrLiteral4 = "\""; inline constexpr absl::string_view kStrLiteral13 = "]"; inline constexpr absl::string_view kStrLiteral1 = "false"; inline constexpr absl::string_view kStrLiteral2 = "null"; inline constexpr absl::string_view kStrLiteral0 = "true"; inline constexpr absl::string_view kStrLiteral9 = "{"; inline constexpr absl::string_view kStrLiteral10 = "}"; inline constexpr absl::string_view kStrCharSet3 = R"grammar([ \t\n\r])grammar"; inline constexpr absl::string_view kStrCharSet1 = R"grammar([1-9])grammar"; inline constexpr absl::string_view kStrCharSet2 = R"grammar([Ee])grammar"; inline constexpr absl::string_view kStrCharSet0 = R"grammar([a-zA-Z0-9_])grammar"; class JsonNode final : public TupleDomain {}; class ValueNode final : public VariantDomain {}; class ObjectNode final : public VariantDomain {}; class MembersNode final : public VariantDomain {}; class MemberNode final : public TupleDomain {}; class ArrayNode final : public VariantDomain {}; class ElementsNode final : public TupleDomain {}; class ElementNode final : public TupleDomain {}; class STRINGNode final : public TupleDomain {}; class CHARACTERNode final : public TupleDomain {}; class NUMBERNode final : public TupleDomain {}; class INTEGERNode final : public VariantDomain {}; class DIGITSNode final : public TupleDomain {}; class DIGITNode final : public VariantDomain {}; class ONETONINENode final : public TupleDomain {}; class FRACTIONNode final : public TupleDomain {}; class EXPONENTNode final : public TupleDomain {}; class SIGNNode final : public VariantDomain { }; class WSPACENode final : public TupleDomain {}; class ObjectSubNode0 final : public TupleDomain {}; class ObjectSubNode1 final : public TupleDomain {}; class MembersSubNode2 final : public TupleDomain { }; class ArraySubNode3 final : public TupleDomain {}; class ArraySubNode4 final : public TupleDomain {}; class ElementsSubNode5 final : public Vector {}; class ElementsSubNode6 final : public TupleDomain {}; class STRINGSubNode7 final : public Vector {}; class NUMBERSubNode8 final : public Optional {}; class NUMBERSubNode9 final : public Optional {}; class INTEGERSubNode10 final : public TupleDomain {}; class INTEGERSubNode11 final : public TupleDomain {}; class INTEGERSubNode12 final : public TupleDomain {}; class DIGITSSubNode13 final : public NonEmptyVector {}; class EXPONENTSubNode14 final : public Optional { }; class EXPONENTSubNode15 final : public Optional { }; class WSPACESubNode16 final : public NonEmptyVector {}; class Literal7 final : public StringLiteralDomain {}; class Literal11 final : public StringLiteralDomain { }; class Literal8 final : public StringLiteralDomain {}; class Literal6 final : public StringLiteralDomain {}; class Literal5 final : public StringLiteralDomain {}; class Literal3 final : public StringLiteralDomain {}; class Literal12 final : public StringLiteralDomain { }; class Literal4 final : public StringLiteralDomain {}; class Literal13 final : public StringLiteralDomain { }; class Literal1 final : public StringLiteralDomain {}; class Literal2 final : public StringLiteralDomain {}; class Literal0 final : public StringLiteralDomain {}; class Literal9 final : public StringLiteralDomain {}; class Literal10 final : public StringLiteralDomain { }; class CharSet3 final : public RegexLiteralDomain {}; class CharSet1 final : public RegexLiteralDomain {}; class CharSet2 final : public RegexLiteralDomain {}; class CharSet0 final : public RegexLiteralDomain {}; } // namespace fuzztest::internal::grammar::json namespace fuzztest::internal_no_adl { inline auto InJsonGrammar() { return internal::grammar::InGrammarImpl(); } } // namespace fuzztest::internal_no_adl #endif // FUZZTEST_GRAMMARS_JSON_GRAMMAR_H_