|
|
|
|
@@ -92,7 +92,7 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
"minimum": 0
|
|
|
|
|
})""",
|
|
|
|
|
R"""(
|
|
|
|
|
root ::= ([0] | [1-9] [0-9]{0,15}) space
|
|
|
|
|
root ::= ([0] | [1-9] [0-9]{0,15})
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
@@ -105,7 +105,7 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
"minimum": 1
|
|
|
|
|
})""",
|
|
|
|
|
R"""(
|
|
|
|
|
root ::= ([1-9] [0-9]{0,15}) space
|
|
|
|
|
root ::= ([1-9] [0-9]{0,15})
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
@@ -118,7 +118,7 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
"minimum": 3
|
|
|
|
|
})""",
|
|
|
|
|
R"""(
|
|
|
|
|
root ::= ([1-2] [0-9]{1,15} | [3-9] [0-9]{0,15}) space
|
|
|
|
|
root ::= ([1-2] [0-9]{1,15} | [3-9] [0-9]{0,15})
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
@@ -131,7 +131,7 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
"minimum": 9
|
|
|
|
|
})""",
|
|
|
|
|
R"""(
|
|
|
|
|
root ::= ([1-8] [0-9]{1,15} | [9] [0-9]{0,15}) space
|
|
|
|
|
root ::= ([1-8] [0-9]{1,15} | [9] [0-9]{0,15})
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
@@ -144,7 +144,7 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
"minimum": 10
|
|
|
|
|
})""",
|
|
|
|
|
R"""(
|
|
|
|
|
root ::= ([1] ([0-9]{1,15}) | [2-9] [0-9]{1,15}) space
|
|
|
|
|
root ::= ([1] ([0-9]{1,15}) | [2-9] [0-9]{1,15})
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
@@ -157,7 +157,7 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
"minimum": 25
|
|
|
|
|
})""",
|
|
|
|
|
R"""(
|
|
|
|
|
root ::= ([1] [0-9]{2,15} | [2] ([0-4] [0-9]{1,14} | [5-9] [0-9]{0,14}) | [3-9] [0-9]{1,15}) space
|
|
|
|
|
root ::= ([1] [0-9]{2,15} | [2] ([0-4] [0-9]{1,14} | [5-9] [0-9]{0,14}) | [3-9] [0-9]{1,15})
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
@@ -170,7 +170,7 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
"maximum": 30
|
|
|
|
|
})""",
|
|
|
|
|
R"""(
|
|
|
|
|
root ::= ("-" [1-9] [0-9]{0,15} | [0-9] | ([1-2] [0-9] | [3] "0")) space
|
|
|
|
|
root ::= ("-" [1-9] [0-9]{0,15} | [0-9] | ([1-2] [0-9] | [3] "0"))
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
@@ -183,7 +183,7 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
"minimum": -5
|
|
|
|
|
})""",
|
|
|
|
|
R"""(
|
|
|
|
|
root ::= ("-" ([0-5]) | [0] | [1-9] [0-9]{0,15}) space
|
|
|
|
|
root ::= ("-" ([0-5]) | [0] | [1-9] [0-9]{0,15})
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
@@ -196,7 +196,7 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
"minimum": -123
|
|
|
|
|
})""",
|
|
|
|
|
R"""(
|
|
|
|
|
root ::= ("-" ([0-9] | ([1-8] [0-9] | [9] [0-9]) | "1" ([0-1] [0-9] | [2] [0-3])) | [0] | [1-9] [0-9]{0,15}) space
|
|
|
|
|
root ::= ("-" ([0-9] | ([1-8] [0-9] | [9] [0-9]) | "1" ([0-1] [0-9] | [2] [0-3])) | [0] | [1-9] [0-9]{0,15})
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
@@ -209,7 +209,7 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
"maximum": -5
|
|
|
|
|
})""",
|
|
|
|
|
R"""(
|
|
|
|
|
root ::= ("-" ([0-4] [0-9]{1,15} | [5-9] [0-9]{0,15})) space
|
|
|
|
|
root ::= ("-" ([0-4] [0-9]{1,15} | [5-9] [0-9]{0,15}))
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
@@ -222,7 +222,7 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
"maximum": 1
|
|
|
|
|
})""",
|
|
|
|
|
R"""(
|
|
|
|
|
root ::= ("-" [1-9] [0-9]{0,15} | [0-1]) space
|
|
|
|
|
root ::= ("-" [1-9] [0-9]{0,15} | [0-1])
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
@@ -235,7 +235,7 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
"maximum": 100
|
|
|
|
|
})""",
|
|
|
|
|
R"""(
|
|
|
|
|
root ::= ("-" [1-9] [0-9]{0,15} | [0-9] | ([1-8] [0-9] | [9] [0-9]) | "100") space
|
|
|
|
|
root ::= ("-" [1-9] [0-9]{0,15} | [0-9] | ([1-8] [0-9] | [9] [0-9]) | "100")
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
@@ -249,7 +249,7 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
"maximum": 23
|
|
|
|
|
})""",
|
|
|
|
|
R"""(
|
|
|
|
|
root ::= ([0-9] | ([1] [0-9] | [2] [0-3])) space
|
|
|
|
|
root ::= ([0-9] | ([1] [0-9] | [2] [0-3]))
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
@@ -263,7 +263,7 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
"maximum": 300
|
|
|
|
|
})""",
|
|
|
|
|
R"""(
|
|
|
|
|
root ::= (([1] ([5-9]) | [2-9] [0-9]) | ([1-2] [0-9]{2} | [3] "00")) space
|
|
|
|
|
root ::= (([1] ([5-9]) | [2-9] [0-9]) | ([1-2] [0-9]{2} | [3] "00"))
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
@@ -277,7 +277,7 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
"maximum": 30
|
|
|
|
|
})""",
|
|
|
|
|
R"""(
|
|
|
|
|
root ::= ([5-9] | ([1-2] [0-9] | [3] "0")) space
|
|
|
|
|
root ::= ([5-9] | ([1-2] [0-9] | [3] "0"))
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
@@ -291,7 +291,7 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
"maximum": 42
|
|
|
|
|
})""",
|
|
|
|
|
R"""(
|
|
|
|
|
root ::= ("-" ([0-9] | ([1-8] [0-9] | [9] [0-9]) | "1" ([0-1] [0-9] | [2] [0-3])) | [0-9] | ([1-3] [0-9] | [4] [0-2])) space
|
|
|
|
|
root ::= ("-" ([0-9] | ([1-8] [0-9] | [9] [0-9]) | "1" ([0-1] [0-9] | [2] [0-3])) | [0-9] | ([1-3] [0-9] | [4] [0-2]))
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
@@ -305,7 +305,7 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
"maximum": 10
|
|
|
|
|
})""",
|
|
|
|
|
R"""(
|
|
|
|
|
root ::= ("-" ([0-9] | "10") | [0-9] | "10") space
|
|
|
|
|
root ::= ("-" ([0-9] | "10") | [0-9] | "10")
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
@@ -333,17 +333,17 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
"empty schema (object)",
|
|
|
|
|
"{}",
|
|
|
|
|
R"""(
|
|
|
|
|
array ::= "[" space ( value ("," space value)* )? "]" space
|
|
|
|
|
boolean ::= ("true" | "false") space
|
|
|
|
|
array ::= "[" space ( value ("," space value)* )? space "]"
|
|
|
|
|
boolean ::= ("true" | "false")
|
|
|
|
|
char ::= [^"\\\x7F\x00-\x1F] | [\\] (["\\bfnrt] | "u" [0-9a-fA-F]{4})
|
|
|
|
|
decimal-part ::= [0-9]{1,16}
|
|
|
|
|
integral-part ::= [0] | [1-9] [0-9]{0,15}
|
|
|
|
|
null ::= "null" space
|
|
|
|
|
number ::= ("-"? integral-part) ("." decimal-part)? ([eE] [-+]? integral-part)? space
|
|
|
|
|
object ::= "{" space ( string ":" space value ("," space string ":" space value)* )? "}" space
|
|
|
|
|
null ::= "null"
|
|
|
|
|
number ::= ("-"? integral-part) ("." decimal-part)? ([eE] [-+]? integral-part)?
|
|
|
|
|
object ::= "{" space ( string ":" space value ("," space string ":" space value)* )? space "}"
|
|
|
|
|
root ::= object
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
string ::= "\"" char* "\"" space
|
|
|
|
|
string ::= "\"" char* "\""
|
|
|
|
|
value ::= object | array | string | number | boolean | null
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
@@ -361,17 +361,17 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
})""",
|
|
|
|
|
R"""(
|
|
|
|
|
date ::= [0-9]{4} "-" ( "0" [1-9] | "1" [0-2] ) "-" ( "0" [1-9] | [1-2] [0-9] | "3" [0-1] )
|
|
|
|
|
date-string ::= "\"" date "\"" space
|
|
|
|
|
date-string ::= "\"" date "\""
|
|
|
|
|
date-time ::= date "T" time
|
|
|
|
|
date-time-string ::= "\"" date-time "\"" space
|
|
|
|
|
root ::= "[" space tuple-0 "," space uuid "," space tuple-2 "," space tuple-3 "]" space
|
|
|
|
|
date-time-string ::= "\"" date-time "\""
|
|
|
|
|
root ::= "[" space tuple-0 "," space uuid "," space tuple-2 "," space tuple-3 space "]"
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
time ::= ([01] [0-9] | "2" [0-3]) ":" [0-5] [0-9] ":" [0-5] [0-9] ( "." [0-9]{3} )? ( "Z" | ( "+" | "-" ) ( [01] [0-9] | "2" [0-3] ) ":" [0-5] [0-9] )
|
|
|
|
|
time-string ::= "\"" time "\"" space
|
|
|
|
|
time-string ::= "\"" time "\""
|
|
|
|
|
tuple-0 ::= date-string
|
|
|
|
|
tuple-2 ::= time-string
|
|
|
|
|
tuple-3 ::= date-time-string
|
|
|
|
|
uuid ::= "\"" [0-9a-fA-F]{8} "-" [0-9a-fA-F]{4} "-" [0-9a-fA-F]{4} "-" [0-9a-fA-F]{4} "-" [0-9a-fA-F]{12} "\"" space
|
|
|
|
|
uuid ::= "\"" [0-9a-fA-F]{8} "-" [0-9a-fA-F]{4} "-" [0-9a-fA-F]{4} "-" [0-9a-fA-F]{4} "-" [0-9a-fA-F]{12} "\""
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
@@ -383,7 +383,7 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
})""",
|
|
|
|
|
R"""(
|
|
|
|
|
char ::= [^"\\\x7F\x00-\x1F] | [\\] (["\\bfnrt] | "u" [0-9a-fA-F]{4})
|
|
|
|
|
root ::= "\"" char* "\"" space
|
|
|
|
|
root ::= "\"" char* "\""
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
@@ -397,7 +397,7 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
})""",
|
|
|
|
|
R"""(
|
|
|
|
|
char ::= [^"\\\x7F\x00-\x1F] | [\\] (["\\bfnrt] | "u" [0-9a-fA-F]{4})
|
|
|
|
|
root ::= "\"" char+ "\"" space
|
|
|
|
|
root ::= "\"" char+ "\""
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
@@ -411,7 +411,7 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
})""",
|
|
|
|
|
R"""(
|
|
|
|
|
char ::= [^"\\\x7F\x00-\x1F] | [\\] (["\\bfnrt] | "u" [0-9a-fA-F]{4})
|
|
|
|
|
root ::= "\"" char{3,} "\"" space
|
|
|
|
|
root ::= "\"" char{3,} "\""
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
@@ -425,7 +425,7 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
})""",
|
|
|
|
|
R"""(
|
|
|
|
|
char ::= [^"\\\x7F\x00-\x1F] | [\\] (["\\bfnrt] | "u" [0-9a-fA-F]{4})
|
|
|
|
|
root ::= "\"" char{0,3} "\"" space
|
|
|
|
|
root ::= "\"" char{0,3} "\""
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
@@ -440,7 +440,7 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
})""",
|
|
|
|
|
R"""(
|
|
|
|
|
char ::= [^"\\\x7F\x00-\x1F] | [\\] (["\\bfnrt] | "u" [0-9a-fA-F]{4})
|
|
|
|
|
root ::= "\"" char{1,4} "\"" space
|
|
|
|
|
root ::= "\"" char{1,4} "\""
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
@@ -452,7 +452,7 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
"type": "boolean"
|
|
|
|
|
})""",
|
|
|
|
|
R"""(
|
|
|
|
|
root ::= ("true" | "false") space
|
|
|
|
|
root ::= ("true" | "false")
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
@@ -465,7 +465,7 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
})""",
|
|
|
|
|
R"""(
|
|
|
|
|
integral-part ::= [0] | [1-9] [0-9]{0,15}
|
|
|
|
|
root ::= ("-"? integral-part) space
|
|
|
|
|
root ::= ("-"? integral-part)
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
@@ -477,7 +477,7 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
"const": "foo"
|
|
|
|
|
})""",
|
|
|
|
|
R"""(
|
|
|
|
|
root ::= "\"foo\"" space
|
|
|
|
|
root ::= "\"foo\""
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
@@ -489,7 +489,7 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
"const": 123
|
|
|
|
|
})""",
|
|
|
|
|
R"""(
|
|
|
|
|
root ::= "123" space
|
|
|
|
|
root ::= "123"
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
@@ -501,7 +501,7 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
"enum": ["red", "amber", "green", null, 42, ["foo"]]
|
|
|
|
|
})""",
|
|
|
|
|
R"""(
|
|
|
|
|
root ::= ("\"red\"" | "\"amber\"" | "\"green\"" | "null" | "42" | "[\"foo\"]") space
|
|
|
|
|
root ::= ("\"red\"" | "\"amber\"" | "\"green\"" | "null" | "42" | "[\"foo\"]")
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
@@ -515,9 +515,9 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
})""",
|
|
|
|
|
R"""(
|
|
|
|
|
char ::= [^"\\\x7F\x00-\x1F] | [\\] (["\\bfnrt] | "u" [0-9a-fA-F]{4})
|
|
|
|
|
root ::= "[" space (string ("," space string)*)? "]" space
|
|
|
|
|
root ::= "[" space (string ("," space string)*)? space "]"
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
string ::= "\"" char* "\"" space
|
|
|
|
|
string ::= "\"" char* "\""
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
@@ -529,12 +529,12 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
"prefixItems": { "type": "string" }
|
|
|
|
|
})""",
|
|
|
|
|
R"""(
|
|
|
|
|
alternative-0 ::= "[" space (string ("," space string)*)? "]" space
|
|
|
|
|
alternative-0 ::= "[" space (string ("," space string)*)? space "]"
|
|
|
|
|
char ::= [^"\\\x7F\x00-\x1F] | [\\] (["\\bfnrt] | "u" [0-9a-fA-F]{4})
|
|
|
|
|
null ::= "null" space
|
|
|
|
|
null ::= "null"
|
|
|
|
|
root ::= alternative-0 | null
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
string ::= "\"" char* "\"" space
|
|
|
|
|
string ::= "\"" char* "\""
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
@@ -546,9 +546,9 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
})""",
|
|
|
|
|
R"""(
|
|
|
|
|
char ::= [^"\\\x7F\x00-\x1F] | [\\] (["\\bfnrt] | "u" [0-9a-fA-F]{4})
|
|
|
|
|
root ::= "[" space string "]" space
|
|
|
|
|
root ::= "[" space string space "]"
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
string ::= "\"" char* "\"" space
|
|
|
|
|
string ::= "\"" char* "\""
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
@@ -562,10 +562,10 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
char ::= [^"\\\x7F\x00-\x1F] | [\\] (["\\bfnrt] | "u" [0-9a-fA-F]{4})
|
|
|
|
|
decimal-part ::= [0-9]{1,16}
|
|
|
|
|
integral-part ::= [0] | [1-9] [0-9]{0,15}
|
|
|
|
|
number ::= ("-"? integral-part) ("." decimal-part)? ([eE] [-+]? integral-part)? space
|
|
|
|
|
root ::= "[" space string "," space number "]" space
|
|
|
|
|
number ::= ("-"? integral-part) ("." decimal-part)? ([eE] [-+]? integral-part)?
|
|
|
|
|
root ::= "[" space string "," space number space "]"
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
string ::= "\"" char* "\"" space
|
|
|
|
|
string ::= "\"" char* "\""
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
@@ -577,18 +577,18 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
"items": {}
|
|
|
|
|
})""",
|
|
|
|
|
R"""(
|
|
|
|
|
array ::= "[" space ( value ("," space value)* )? "]" space
|
|
|
|
|
boolean ::= ("true" | "false") space
|
|
|
|
|
array ::= "[" space ( value ("," space value)* )? space "]"
|
|
|
|
|
boolean ::= ("true" | "false")
|
|
|
|
|
char ::= [^"\\\x7F\x00-\x1F] | [\\] (["\\bfnrt] | "u" [0-9a-fA-F]{4})
|
|
|
|
|
decimal-part ::= [0-9]{1,16}
|
|
|
|
|
integral-part ::= [0] | [1-9] [0-9]{0,15}
|
|
|
|
|
item ::= object
|
|
|
|
|
null ::= "null" space
|
|
|
|
|
number ::= ("-"? integral-part) ("." decimal-part)? ([eE] [-+]? integral-part)? space
|
|
|
|
|
object ::= "{" space ( string ":" space value ("," space string ":" space value)* )? "}" space
|
|
|
|
|
root ::= "[" space (item ("," space item)*)? "]" space
|
|
|
|
|
null ::= "null"
|
|
|
|
|
number ::= ("-"? integral-part) ("." decimal-part)? ([eE] [-+]? integral-part)?
|
|
|
|
|
object ::= "{" space ( string ":" space value ("," space string ":" space value)* )? space "}"
|
|
|
|
|
root ::= "[" space (item ("," space item)*)? space "]"
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
string ::= "\"" char* "\"" space
|
|
|
|
|
string ::= "\"" char* "\""
|
|
|
|
|
value ::= object | array | string | number | boolean | null
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
@@ -602,18 +602,18 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
"prefixItems": { "type": "string" }
|
|
|
|
|
})""",
|
|
|
|
|
R"""(
|
|
|
|
|
array ::= "[" space ( value ("," space value)* )? "]" space
|
|
|
|
|
boolean ::= ("true" | "false") space
|
|
|
|
|
array ::= "[" space ( value ("," space value)* )? space "]"
|
|
|
|
|
boolean ::= ("true" | "false")
|
|
|
|
|
char ::= [^"\\\x7F\x00-\x1F] | [\\] (["\\bfnrt] | "u" [0-9a-fA-F]{4})
|
|
|
|
|
decimal-part ::= [0-9]{1,16}
|
|
|
|
|
integral-part ::= [0] | [1-9] [0-9]{0,15}
|
|
|
|
|
item ::= object
|
|
|
|
|
null ::= "null" space
|
|
|
|
|
number ::= ("-"? integral-part) ("." decimal-part)? ([eE] [-+]? integral-part)? space
|
|
|
|
|
object ::= "{" space ( string ":" space value ("," space string ":" space value)* )? "}" space
|
|
|
|
|
root ::= "[" space (item ("," space item)*)? "]" space
|
|
|
|
|
null ::= "null"
|
|
|
|
|
number ::= ("-"? integral-part) ("." decimal-part)? ([eE] [-+]? integral-part)?
|
|
|
|
|
object ::= "{" space ( string ":" space value ("," space string ":" space value)* )? space "}"
|
|
|
|
|
root ::= "[" space (item ("," space item)*)? space "]"
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
string ::= "\"" char* "\"" space
|
|
|
|
|
string ::= "\"" char* "\""
|
|
|
|
|
value ::= object | array | string | number | boolean | null
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
@@ -627,7 +627,7 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
R"""(
|
|
|
|
|
decimal-part ::= [0-9]{1,16}
|
|
|
|
|
integral-part ::= [0] | [1-9] [0-9]{0,15}
|
|
|
|
|
root ::= ("-"? integral-part) ("." decimal-part)? ([eE] [-+]? integral-part)? space
|
|
|
|
|
root ::= ("-"? integral-part) ("." decimal-part)? ([eE] [-+]? integral-part)?
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
@@ -642,8 +642,8 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
"minItems": 2
|
|
|
|
|
})""",
|
|
|
|
|
R"""(
|
|
|
|
|
boolean ::= ("true" | "false") space
|
|
|
|
|
root ::= "[" space boolean ("," space boolean)+ "]" space
|
|
|
|
|
boolean ::= ("true" | "false")
|
|
|
|
|
root ::= "[" space boolean ("," space boolean)+ space "]"
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
@@ -658,8 +658,8 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
"maxItems": 0
|
|
|
|
|
})""",
|
|
|
|
|
R"""(
|
|
|
|
|
boolean ::= ("true" | "false") space
|
|
|
|
|
root ::= "[" space "]" space
|
|
|
|
|
boolean ::= ("true" | "false")
|
|
|
|
|
root ::= "[" space space "]"
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
@@ -674,8 +674,8 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
"maxItems": 1
|
|
|
|
|
})""",
|
|
|
|
|
R"""(
|
|
|
|
|
boolean ::= ("true" | "false") space
|
|
|
|
|
root ::= "[" space boolean? "]" space
|
|
|
|
|
boolean ::= ("true" | "false")
|
|
|
|
|
root ::= "[" space boolean? space "]"
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
@@ -690,8 +690,8 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
"maxItems": 2
|
|
|
|
|
})""",
|
|
|
|
|
R"""(
|
|
|
|
|
boolean ::= ("true" | "false") space
|
|
|
|
|
root ::= "[" space (boolean ("," space boolean)?)? "]" space
|
|
|
|
|
boolean ::= ("true" | "false")
|
|
|
|
|
root ::= "[" space (boolean ("," space boolean)?)? space "]"
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
@@ -708,11 +708,11 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
})""",
|
|
|
|
|
R"""(
|
|
|
|
|
decimal-part ::= [0-9]{1,16}
|
|
|
|
|
integer ::= ("-"? integral-part) space
|
|
|
|
|
integer ::= ("-"? integral-part)
|
|
|
|
|
integral-part ::= [0] | [1-9] [0-9]{0,15}
|
|
|
|
|
item ::= number | integer
|
|
|
|
|
number ::= ("-"? integral-part) ("." decimal-part)? ([eE] [-+]? integral-part)? space
|
|
|
|
|
root ::= "[" space item ("," space item){2,4} "]" space
|
|
|
|
|
number ::= ("-"? integral-part) ("." decimal-part)? ([eE] [-+]? integral-part)?
|
|
|
|
|
root ::= "[" space item ("," space item){2,4} space "]"
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
@@ -730,8 +730,8 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
"maxItems": 5
|
|
|
|
|
})""",
|
|
|
|
|
R"""(
|
|
|
|
|
item ::= ("-" ([0-9] | "1" [0-2]) | [0-9] | ([1-8] [0-9] | [9] [0-9]) | ([1] [0-9]{2} | [2] "0" [0-7])) space
|
|
|
|
|
root ::= "[" space item ("," space item){2,4} "]" space
|
|
|
|
|
item ::= ("-" ([0-9] | "1" [0-2]) | [0-9] | ([1-8] [0-9] | [9] [0-9]) | ([1] [0-9]{2} | [2] "0" [0-7]))
|
|
|
|
|
root ::= "[" space item ("," space item){2,4} space "]"
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
@@ -749,8 +749,8 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
"maxItems": 5
|
|
|
|
|
})""",
|
|
|
|
|
R"""(
|
|
|
|
|
item ::= (([1] ([2-9]) | [2-9] [0-9]) | ([1] [0-9]{2} | [2] "0" [0-7])) space
|
|
|
|
|
root ::= "[" space item ("," space item){2,4} "]" space
|
|
|
|
|
item ::= (([1] ([2-9]) | [2-9] [0-9]) | ([1] [0-9]{2} | [2] "0" [0-7]))
|
|
|
|
|
root ::= "[" space item ("," space item){2,4} space "]"
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
@@ -763,7 +763,7 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
"pattern": "^abc?d*efg+(hij)?kl$"
|
|
|
|
|
})""",
|
|
|
|
|
R"""(
|
|
|
|
|
root ::= "\"" ("ab" "c"? "d"* "ef" "g"+ ("hij")? "kl") "\"" space
|
|
|
|
|
root ::= "\"" ("ab" "c"? "d"* "ef" "g"+ ("hij")? "kl") "\""
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
@@ -776,7 +776,7 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
"pattern": "^\\[\\]\\{\\}\\(\\)\\|\\+\\*\\?$"
|
|
|
|
|
})""",
|
|
|
|
|
R"""(
|
|
|
|
|
root ::= "\"" ("[]{}()|+*?") "\"" space
|
|
|
|
|
root ::= "\"" ("[]{}()|+*?") "\""
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
@@ -789,7 +789,7 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
"pattern": "^\"$"
|
|
|
|
|
})""",
|
|
|
|
|
R"""(
|
|
|
|
|
root ::= "\"" ("\"") "\"" space
|
|
|
|
|
root ::= "\"" ("\"") "\""
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
@@ -802,7 +802,7 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
"pattern": "^A|B|C|D$"
|
|
|
|
|
})""",
|
|
|
|
|
R"""(
|
|
|
|
|
root ::= "\"" ("A" | "B" | "C" | "D") "\"" space
|
|
|
|
|
root ::= "\"" ("A" | "B" | "C" | "D") "\""
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
@@ -816,7 +816,7 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
})""",
|
|
|
|
|
R"""(
|
|
|
|
|
dot ::= [^\x0A\x0D]
|
|
|
|
|
root ::= "\"" (("(" root-1{1,3} ")")? root-1{3,3} "-" root-1{4,4} " " "a"{3,5} "nd" dot dot dot) "\"" space
|
|
|
|
|
root ::= "\"" (("(" root-1{1,3} ")")? root-1{3,3} "-" root-1{4,4} " " "a"{3,5} "nd" dot dot dot) "\""
|
|
|
|
|
root-1 ::= [0-9]
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
)"""
|
|
|
|
|
@@ -845,9 +845,9 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
b-kv ::= "\"b\"" space ":" space string
|
|
|
|
|
c-kv ::= "\"c\"" space ":" space string
|
|
|
|
|
char ::= [^"\\\x7F\x00-\x1F] | [\\] (["\\bfnrt] | "u" [0-9a-fA-F]{4})
|
|
|
|
|
root ::= "{" space b-kv "," space c-kv "," space a-kv "}" space
|
|
|
|
|
root ::= "{" space b-kv "," space c-kv "," space a-kv space "}"
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
string ::= "\"" char* "\"" space
|
|
|
|
|
string ::= "\"" char* "\""
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
@@ -865,9 +865,9 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
R"""(
|
|
|
|
|
a-kv ::= "\"a\"" space ":" space string
|
|
|
|
|
char ::= [^"\\\x7F\x00-\x1F] | [\\] (["\\bfnrt] | "u" [0-9a-fA-F]{4})
|
|
|
|
|
root ::= "{" space (a-kv )? "}" space
|
|
|
|
|
root ::= "{" space (a-kv )? space "}"
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
string ::= "\"" char* "\"" space
|
|
|
|
|
string ::= "\"" char* "\""
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
@@ -889,9 +889,9 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
b-rest ::= ( "," space c-kv )?
|
|
|
|
|
c-kv ::= "\"c\"" space ":" space string
|
|
|
|
|
char ::= [^"\\\x7F\x00-\x1F] | [\\] (["\\bfnrt] | "u" [0-9a-fA-F]{4})
|
|
|
|
|
root ::= "{" space (a-kv a-rest | b-kv b-rest | c-kv )? "}" space
|
|
|
|
|
root ::= "{" space (a-kv a-rest | b-kv b-rest | c-kv )? space "}"
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
string ::= "\"" char* "\"" space
|
|
|
|
|
string ::= "\"" char* "\""
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
@@ -915,9 +915,9 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
char ::= [^"\\\x7F\x00-\x1F] | [\\] (["\\bfnrt] | "u" [0-9a-fA-F]{4})
|
|
|
|
|
d-kv ::= "\"d\"" space ":" space string
|
|
|
|
|
d-rest ::= ( "," space c-kv )?
|
|
|
|
|
root ::= "{" space b-kv "," space a-kv ( "," space ( d-kv d-rest | c-kv ) )? "}" space
|
|
|
|
|
root ::= "{" space b-kv "," space a-kv ( "," space ( d-kv d-rest | c-kv ) )? space "}"
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
string ::= "\"" char* "\"" space
|
|
|
|
|
string ::= "\"" char* "\""
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
@@ -930,14 +930,14 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
})""",
|
|
|
|
|
R"""(
|
|
|
|
|
additional-kv ::= string ":" space additional-value
|
|
|
|
|
additional-value ::= "[" space (number ("," space number)*)? "]" space
|
|
|
|
|
additional-value ::= "[" space (number ("," space number)*)? space "]"
|
|
|
|
|
char ::= [^"\\\x7F\x00-\x1F] | [\\] (["\\bfnrt] | "u" [0-9a-fA-F]{4})
|
|
|
|
|
decimal-part ::= [0-9]{1,16}
|
|
|
|
|
integral-part ::= [0] | [1-9] [0-9]{0,15}
|
|
|
|
|
number ::= ("-"? integral-part) ("." decimal-part)? ([eE] [-+]? integral-part)? space
|
|
|
|
|
root ::= "{" space (additional-kv ( "," space additional-kv )* )? "}" space
|
|
|
|
|
number ::= ("-"? integral-part) ("." decimal-part)? ([eE] [-+]? integral-part)?
|
|
|
|
|
root ::= "{" space (additional-kv ( "," space additional-kv )* )? space "}"
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
string ::= "\"" char* "\"" space
|
|
|
|
|
string ::= "\"" char* "\""
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
@@ -949,17 +949,17 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
"additionalProperties": true
|
|
|
|
|
})""",
|
|
|
|
|
R"""(
|
|
|
|
|
array ::= "[" space ( value ("," space value)* )? "]" space
|
|
|
|
|
boolean ::= ("true" | "false") space
|
|
|
|
|
array ::= "[" space ( value ("," space value)* )? space "]"
|
|
|
|
|
boolean ::= ("true" | "false")
|
|
|
|
|
char ::= [^"\\\x7F\x00-\x1F] | [\\] (["\\bfnrt] | "u" [0-9a-fA-F]{4})
|
|
|
|
|
decimal-part ::= [0-9]{1,16}
|
|
|
|
|
integral-part ::= [0] | [1-9] [0-9]{0,15}
|
|
|
|
|
null ::= "null" space
|
|
|
|
|
number ::= ("-"? integral-part) ("." decimal-part)? ([eE] [-+]? integral-part)? space
|
|
|
|
|
object ::= "{" space ( string ":" space value ("," space string ":" space value)* )? "}" space
|
|
|
|
|
null ::= "null"
|
|
|
|
|
number ::= ("-"? integral-part) ("." decimal-part)? ([eE] [-+]? integral-part)?
|
|
|
|
|
object ::= "{" space ( string ":" space value ("," space string ":" space value)* )? space "}"
|
|
|
|
|
root ::= object
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
string ::= "\"" char* "\"" space
|
|
|
|
|
string ::= "\"" char* "\""
|
|
|
|
|
value ::= object | array | string | number | boolean | null
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
@@ -971,17 +971,17 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
"type": "object"
|
|
|
|
|
})""",
|
|
|
|
|
R"""(
|
|
|
|
|
array ::= "[" space ( value ("," space value)* )? "]" space
|
|
|
|
|
boolean ::= ("true" | "false") space
|
|
|
|
|
array ::= "[" space ( value ("," space value)* )? space "]"
|
|
|
|
|
boolean ::= ("true" | "false")
|
|
|
|
|
char ::= [^"\\\x7F\x00-\x1F] | [\\] (["\\bfnrt] | "u" [0-9a-fA-F]{4})
|
|
|
|
|
decimal-part ::= [0-9]{1,16}
|
|
|
|
|
integral-part ::= [0] | [1-9] [0-9]{0,15}
|
|
|
|
|
null ::= "null" space
|
|
|
|
|
number ::= ("-"? integral-part) ("." decimal-part)? ([eE] [-+]? integral-part)? space
|
|
|
|
|
object ::= "{" space ( string ":" space value ("," space string ":" space value)* )? "}" space
|
|
|
|
|
null ::= "null"
|
|
|
|
|
number ::= ("-"? integral-part) ("." decimal-part)? ([eE] [-+]? integral-part)?
|
|
|
|
|
object ::= "{" space ( string ":" space value ("," space string ":" space value)* )? space "}"
|
|
|
|
|
root ::= object
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
string ::= "\"" char* "\"" space
|
|
|
|
|
string ::= "\"" char* "\""
|
|
|
|
|
value ::= object | array | string | number | boolean | null
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
@@ -994,7 +994,7 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
"additionalProperties": false
|
|
|
|
|
})""",
|
|
|
|
|
R"""(
|
|
|
|
|
root ::= "{" space "}" space
|
|
|
|
|
root ::= "{" space space "}"
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
@@ -1012,15 +1012,15 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
})""",
|
|
|
|
|
R"""(
|
|
|
|
|
a-kv ::= "\"a\"" space ":" space number
|
|
|
|
|
additional-k ::= ["] ( [a] char+ | [^"a] char* )? ["] space
|
|
|
|
|
additional-k ::= ["] ( [a] char+ | [^"a] char* )? ["]
|
|
|
|
|
additional-kv ::= additional-k ":" space string
|
|
|
|
|
char ::= [^"\\\x7F\x00-\x1F] | [\\] (["\\bfnrt] | "u" [0-9a-fA-F]{4})
|
|
|
|
|
decimal-part ::= [0-9]{1,16}
|
|
|
|
|
integral-part ::= [0] | [1-9] [0-9]{0,15}
|
|
|
|
|
number ::= ("-"? integral-part) ("." decimal-part)? ([eE] [-+]? integral-part)? space
|
|
|
|
|
root ::= "{" space a-kv ( "," space ( additional-kv ( "," space additional-kv )* ) )? "}" space
|
|
|
|
|
number ::= ("-"? integral-part) ("." decimal-part)? ([eE] [-+]? integral-part)?
|
|
|
|
|
root ::= "{" space a-kv ( "," space ( additional-kv ( "," space additional-kv )* ) )? space "}"
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
string ::= "\"" char* "\"" space
|
|
|
|
|
string ::= "\"" char* "\""
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
@@ -1037,13 +1037,13 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
R"""(
|
|
|
|
|
a-kv ::= "\"a\"" space ":" space number
|
|
|
|
|
a-rest ::= ( "," space additional-kv )*
|
|
|
|
|
additional-k ::= ["] ( [a] char+ | [^"a] char* )? ["] space
|
|
|
|
|
additional-k ::= ["] ( [a] char+ | [^"a] char* )? ["]
|
|
|
|
|
additional-kv ::= additional-k ":" space number
|
|
|
|
|
char ::= [^"\\\x7F\x00-\x1F] | [\\] (["\\bfnrt] | "u" [0-9a-fA-F]{4})
|
|
|
|
|
decimal-part ::= [0-9]{1,16}
|
|
|
|
|
integral-part ::= [0] | [1-9] [0-9]{0,15}
|
|
|
|
|
number ::= ("-"? integral-part) ("." decimal-part)? ([eE] [-+]? integral-part)? space
|
|
|
|
|
root ::= "{" space (a-kv a-rest | additional-kv ( "," space additional-kv )* )? "}" space
|
|
|
|
|
number ::= ("-"? integral-part) ("." decimal-part)? ([eE] [-+]? integral-part)?
|
|
|
|
|
root ::= "{" space (a-kv a-rest | additional-kv ( "," space additional-kv )* )? space "}"
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
@@ -1061,7 +1061,7 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
"additionalProperties": {"type": "number"}
|
|
|
|
|
})""",
|
|
|
|
|
R"""(
|
|
|
|
|
additional-k ::= ["] ( [a] ([l] ([s] ([o] char+ | [^"o] char*) | [^"s] char*) | [n] ([d] char+ | [^"d] char*) | [^"ln] char*) | [^"a] char* )? ["] space
|
|
|
|
|
additional-k ::= ["] ( [a] ([l] ([s] ([o] char+ | [^"o] char*) | [^"s] char*) | [n] ([d] char+ | [^"d] char*) | [^"ln] char*) | [^"a] char* )? ["]
|
|
|
|
|
additional-kv ::= additional-k ":" space number
|
|
|
|
|
also-kv ::= "\"also\"" space ":" space number
|
|
|
|
|
also-rest ::= ( "," space additional-kv )*
|
|
|
|
|
@@ -1069,8 +1069,8 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
char ::= [^"\\\x7F\x00-\x1F] | [\\] (["\\bfnrt] | "u" [0-9a-fA-F]{4})
|
|
|
|
|
decimal-part ::= [0-9]{1,16}
|
|
|
|
|
integral-part ::= [0] | [1-9] [0-9]{0,15}
|
|
|
|
|
number ::= ("-"? integral-part) ("." decimal-part)? ([eE] [-+]? integral-part)? space
|
|
|
|
|
root ::= "{" space and-kv ( "," space ( also-kv also-rest | additional-kv ( "," space additional-kv )* ) )? "}" space
|
|
|
|
|
number ::= ("-"? integral-part) ("." decimal-part)? ([eE] [-+]? integral-part)?
|
|
|
|
|
root ::= "{" space and-kv ( "," space ( also-kv also-rest | additional-kv ( "," space additional-kv )* ) )? space "}"
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
@@ -1090,13 +1090,13 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
-rest ::= ( "," space a-kv )? a-rest
|
|
|
|
|
a-kv ::= "\"a\"" space ":" space integer
|
|
|
|
|
a-rest ::= ( "," space additional-kv )*
|
|
|
|
|
additional-k ::= ["] ( [a] char+ | [^"a] char* ) ["] space
|
|
|
|
|
additional-k ::= ["] ( [a] char+ | [^"a] char* ) ["]
|
|
|
|
|
additional-kv ::= additional-k ":" space integer
|
|
|
|
|
char ::= [^"\\\x7F\x00-\x1F] | [\\] (["\\bfnrt] | "u" [0-9a-fA-F]{4})
|
|
|
|
|
integer ::= ("-"? integral-part) space
|
|
|
|
|
integer ::= ("-"? integral-part)
|
|
|
|
|
integral-part ::= [0] | [1-9] [0-9]{0,15}
|
|
|
|
|
root ::= ("-"? integral-part) space
|
|
|
|
|
root0 ::= "{" space (-kv -rest | a-kv a-rest | additional-kv ( "," space additional-kv )* )? "}" space
|
|
|
|
|
root ::= ("-"? integral-part)
|
|
|
|
|
root0 ::= "{" space (-kv -rest | a-kv a-rest | additional-kv ( "," space additional-kv )* )? space "}"
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
@@ -1116,12 +1116,12 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
a-rest ::= ( "," space aa-kv )? aa-rest
|
|
|
|
|
aa-kv ::= "\"aa\"" space ":" space integer
|
|
|
|
|
aa-rest ::= ( "," space additional-kv )*
|
|
|
|
|
additional-k ::= ["] ( [a] ([a] char+ | [^"a] char*) | [^"a] char* )? ["] space
|
|
|
|
|
additional-k ::= ["] ( [a] ([a] char+ | [^"a] char*) | [^"a] char* )? ["]
|
|
|
|
|
additional-kv ::= additional-k ":" space integer
|
|
|
|
|
char ::= [^"\\\x7F\x00-\x1F] | [\\] (["\\bfnrt] | "u" [0-9a-fA-F]{4})
|
|
|
|
|
integer ::= ("-"? integral-part) space
|
|
|
|
|
integer ::= ("-"? integral-part)
|
|
|
|
|
integral-part ::= [0] | [1-9] [0-9]{0,15}
|
|
|
|
|
root ::= "{" space (a-kv a-rest | aa-kv aa-rest | additional-kv ( "," space additional-kv )* )? "}" space
|
|
|
|
|
root ::= "{" space (a-kv a-rest | aa-kv aa-rest | additional-kv ( "," space additional-kv )* )? space "}"
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
@@ -1141,12 +1141,12 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
ab-rest ::= ( "," space ac-kv )? ac-rest
|
|
|
|
|
ac-kv ::= "\"ac\"" space ":" space integer
|
|
|
|
|
ac-rest ::= ( "," space additional-kv )*
|
|
|
|
|
additional-k ::= ["] ( [a] ([b] char+ | [c] char+ | [^"bc] char*) | [^"a] char* )? ["] space
|
|
|
|
|
additional-k ::= ["] ( [a] ([b] char+ | [c] char+ | [^"bc] char*) | [^"a] char* )? ["]
|
|
|
|
|
additional-kv ::= additional-k ":" space integer
|
|
|
|
|
char ::= [^"\\\x7F\x00-\x1F] | [\\] (["\\bfnrt] | "u" [0-9a-fA-F]{4})
|
|
|
|
|
integer ::= ("-"? integral-part) space
|
|
|
|
|
integer ::= ("-"? integral-part)
|
|
|
|
|
integral-part ::= [0] | [1-9] [0-9]{0,15}
|
|
|
|
|
root ::= "{" space (ab-kv ab-rest | ac-kv ac-rest | additional-kv ( "," space additional-kv )* )? "}" space
|
|
|
|
|
root ::= "{" space (ab-kv ab-rest | ac-kv ac-rest | additional-kv ( "," space additional-kv )* )? space "}"
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
@@ -1173,11 +1173,11 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
})""",
|
|
|
|
|
R"""(
|
|
|
|
|
char ::= [^"\\\x7F\x00-\x1F] | [\\] (["\\bfnrt] | "u" [0-9a-fA-F]{4})
|
|
|
|
|
ref-definitions-foo ::= "{" space ref-definitions-foo-a-kv "}" space
|
|
|
|
|
ref-definitions-foo ::= "{" space ref-definitions-foo-a-kv space "}"
|
|
|
|
|
ref-definitions-foo-a-kv ::= "\"a\"" space ":" space string
|
|
|
|
|
root ::= ref-definitions-foo
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
string ::= "\"" char* "\"" space
|
|
|
|
|
string ::= "\"" char* "\""
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
@@ -1204,10 +1204,10 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
alternative-1 ::= ref-definitions-bar
|
|
|
|
|
decimal-part ::= [0-9]{1,16}
|
|
|
|
|
integral-part ::= [0] | [1-9] [0-9]{0,15}
|
|
|
|
|
number ::= ("-"? integral-part) ("." decimal-part)? ([eE] [-+]? integral-part)? space
|
|
|
|
|
ref-definitions-bar ::= "{" space (ref-definitions-bar-b-kv )? "}" space
|
|
|
|
|
number ::= ("-"? integral-part) ("." decimal-part)? ([eE] [-+]? integral-part)?
|
|
|
|
|
ref-definitions-bar ::= "{" space (ref-definitions-bar-b-kv )? space "}"
|
|
|
|
|
ref-definitions-bar-b-kv ::= "\"b\"" space ":" space number
|
|
|
|
|
ref-definitions-foo ::= "{" space (ref-definitions-foo-a-kv )? "}" space
|
|
|
|
|
ref-definitions-foo ::= "{" space (ref-definitions-foo-a-kv )? space "}"
|
|
|
|
|
ref-definitions-foo-a-kv ::= "\"a\"" space ":" space number
|
|
|
|
|
root ::= alternative-0 | alternative-1
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
@@ -1241,14 +1241,14 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
b ::= b-0 | boolean
|
|
|
|
|
b-0 ::= string
|
|
|
|
|
b-kv ::= "\"b\"" space ":" space b
|
|
|
|
|
boolean ::= ("true" | "false") space
|
|
|
|
|
boolean ::= ("true" | "false")
|
|
|
|
|
char ::= [^"\\\x7F\x00-\x1F] | [\\] (["\\bfnrt] | "u" [0-9a-fA-F]{4})
|
|
|
|
|
decimal-part ::= [0-9]{1,16}
|
|
|
|
|
integral-part ::= [0] | [1-9] [0-9]{0,15}
|
|
|
|
|
number ::= ("-"? integral-part) ("." decimal-part)? ([eE] [-+]? integral-part)? space
|
|
|
|
|
root ::= "{" space (a-kv a-rest | b-kv )? "}" space
|
|
|
|
|
number ::= ("-"? integral-part) ("." decimal-part)? ([eE] [-+]? integral-part)?
|
|
|
|
|
root ::= "{" space (a-kv a-rest | b-kv )? space "}"
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
string ::= "\"" char* "\"" space
|
|
|
|
|
string ::= "\"" char* "\""
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
@@ -1290,8 +1290,8 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
d-rest ::= ( "," space c-kv )?
|
|
|
|
|
decimal-part ::= [0-9]{1,16}
|
|
|
|
|
integral-part ::= [0] | [1-9] [0-9]{0,15}
|
|
|
|
|
number ::= ("-"? integral-part) ("." decimal-part)? ([eE] [-+]? integral-part)? space
|
|
|
|
|
root ::= "{" space a-kv "," space b-kv ( "," space ( d-kv d-rest | c-kv ) )? "}" space
|
|
|
|
|
number ::= ("-"? integral-part) ("." decimal-part)? ([eE] [-+]? integral-part)?
|
|
|
|
|
root ::= "{" space a-kv "," space b-kv ( "," space ( d-kv d-rest | c-kv ) )? space "}"
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
@@ -1311,7 +1311,7 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
}
|
|
|
|
|
})""",
|
|
|
|
|
R"""(
|
|
|
|
|
root ::= ("\"a\"" | "\"b\"") space
|
|
|
|
|
root ::= ("\"a\"" | "\"b\"")
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
@@ -1336,7 +1336,7 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
}
|
|
|
|
|
})""",
|
|
|
|
|
R"""(
|
|
|
|
|
root ::= ("\"b\"" | "\"c\"") space
|
|
|
|
|
root ::= ("\"b\"" | "\"c\"")
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
@@ -1378,13 +1378,13 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
R"""(
|
|
|
|
|
decimal-part ::= [0-9]{1,16}
|
|
|
|
|
integral-part ::= [0] | [1-9] [0-9]{0,15}
|
|
|
|
|
number ::= ("-"? integral-part) ("." decimal-part)? ([eE] [-+]? integral-part)? space
|
|
|
|
|
number- ::= "{" space number-number-kv "}" space
|
|
|
|
|
number ::= ("-"? integral-part) ("." decimal-part)? ([eE] [-+]? integral-part)?
|
|
|
|
|
number- ::= "{" space number-number-kv space "}"
|
|
|
|
|
number-kv ::= "\"number\"" space ":" space number-
|
|
|
|
|
number-number ::= "{" space number-number-root-kv "}" space
|
|
|
|
|
number-number ::= "{" space number-number-root-kv space "}"
|
|
|
|
|
number-number-kv ::= "\"number\"" space ":" space number-number
|
|
|
|
|
number-number-root-kv ::= "\"root\"" space ":" space number
|
|
|
|
|
root ::= "{" space number-kv "}" space
|
|
|
|
|
root ::= "{" space number-kv space "}"
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
@@ -1394,17 +1394,17 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
"description only (no type) treated as unconstrained",
|
|
|
|
|
R"""({"description": "The 0-based index of the last line to be retrieved (inclusive). If None, read until the end of the file."})""",
|
|
|
|
|
R"""(
|
|
|
|
|
array ::= "[" space ( value ("," space value)* )? "]" space
|
|
|
|
|
boolean ::= ("true" | "false") space
|
|
|
|
|
array ::= "[" space ( value ("," space value)* )? space "]"
|
|
|
|
|
boolean ::= ("true" | "false")
|
|
|
|
|
char ::= [^"\\\x7F\x00-\x1F] | [\\] (["\\bfnrt] | "u" [0-9a-fA-F]{4})
|
|
|
|
|
decimal-part ::= [0-9]{1,16}
|
|
|
|
|
integral-part ::= [0] | [1-9] [0-9]{0,15}
|
|
|
|
|
null ::= "null" space
|
|
|
|
|
number ::= ("-"? integral-part) ("." decimal-part)? ([eE] [-+]? integral-part)? space
|
|
|
|
|
object ::= "{" space ( string ":" space value ("," space string ":" space value)* )? "}" space
|
|
|
|
|
null ::= "null"
|
|
|
|
|
number ::= ("-"? integral-part) ("." decimal-part)? ([eE] [-+]? integral-part)?
|
|
|
|
|
object ::= "{" space ( string ":" space value ("," space string ":" space value)* )? space "}"
|
|
|
|
|
root ::= value
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
string ::= "\"" char* "\"" space
|
|
|
|
|
string ::= "\"" char* "\""
|
|
|
|
|
value ::= object | array | string | number | boolean | null
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
@@ -1428,9 +1428,9 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
|
|
|
|
|
"type": "object"
|
|
|
|
|
})""",
|
|
|
|
|
R"""(
|
|
|
|
|
code ::= "\" \\r \\n \\\" \\\\ \"" space
|
|
|
|
|
code ::= "\" \\r \\n \\\" \\\\ \""
|
|
|
|
|
code-kv ::= "\"code\"" space ":" space code
|
|
|
|
|
root ::= "{" space code-kv "}" space
|
|
|
|
|
root ::= "{" space code-kv space "}"
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
)"""
|
|
|
|
|
});
|
|
|
|
|
@@ -1547,7 +1547,7 @@ int main() {
|
|
|
|
|
"pattern": "^(?:foo|bar)baz$"
|
|
|
|
|
})""",
|
|
|
|
|
R"""(
|
|
|
|
|
root ::= "\"" (("foo" | "bar") "baz") "\"" space
|
|
|
|
|
root ::= "\"" (("foo" | "bar") "baz") "\""
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
)""",
|
|
|
|
|
});
|
|
|
|
|
@@ -1560,7 +1560,7 @@ int main() {
|
|
|
|
|
"pattern": "^(?:(?:ab)+c)?d$"
|
|
|
|
|
})""",
|
|
|
|
|
R"""(
|
|
|
|
|
root ::= "\"" ((("ab")+ "c")? "d") "\"" space
|
|
|
|
|
root ::= "\"" ((("ab")+ "c")? "d") "\""
|
|
|
|
|
space ::= | " " | "\n"{1,2} [ \t]{0,20}
|
|
|
|
|
)""",
|
|
|
|
|
});
|
|
|
|
|
|