#include "trace.hpp" #include "parser.hpp" int main() { for ( auto s : { "1.0", "1e1", "{0}", "{x}", "[x: 1]", "x", "[x]", "{x:}", "{0:0}", "{0: 0}", "[00]", "[{x}]", ",", "[,]", "[0,]", "[1,]", "[{]", "{[}", "{]}", "[}]", "[}", "{]", "[ {}, x ]", "[{},]", "[,0]", "[100,-0]", "-0.0", "0.0", "{{}}", "{[]}", "{ x9: 0 }", "9a", "9 []", "[] 9", "{a 9}", "{a: 9 b: 7}", "{ \"x\": 0 }", "{ \"x\": 1 }", "{ \"1\": 1 }", "\"\"", "\"0\"", "\"x\"", "-x", "{ -x: 0 }", "{ x: 0, }", "{ x:: 0 }", "{ : 0 }", "{ x: 0, : 1 }", "- 1", "0x0", "01", "0x1", "+0", "+1", "{1: 1}", "{1:1}", "1;", "0.", "[],", ", []", ",,", "[,,]", "{,}", "{x:x}", "{x:y}", "{:,}", "{ x y: 0 }", "{ x1y: 1 }", "{ x: 1 1 }", "-a", "[ 01 ]", "[ -01 ]", "[ [] [] ]", "[ 2 3 ]", "[ 0 1 ]" } ) EXCEPT( json_error, json_parse( s ), "s =", s ); for ( int l = 3; l < 100; ++l ) { std::string s = "{"; for ( int i = 0; i < l; ++i ) s += " x: {"; for ( int i = 0; i < l; ++i ) s += "} "; EXCEPT( json_error, json_parse( s ), "s =", s ); } for ( int l = 3; l < 100; ++l ) { std::string s = "[ "; for ( int i = 0; i < l; ++i ) s += " { x: ["; for ( int i = 0; i < l; ++i ) s += "] } "; EXCEPT( json_error, json_parse( s ), "s =", s ); } for ( auto s : { "null", "true", "false" } ) EXCEPT( json_error, json_parse( s ), "s =", s ); }