|  |  |  | @ -4,6 +4,8 @@ namespace Bk::Json | 
			
		
	
		
			
				
					|  |  |  |  | { | 
			
		
	
		
			
				
					|  |  |  |  |     Parser::Parser(File& file) | 
			
		
	
		
			
				
					|  |  |  |  |     { | 
			
		
	
		
			
				
					|  |  |  |  |         root = Pointer(new Node()); | 
			
		
	
		
			
				
					|  |  |  |  |         root->set_null(); | 
			
		
	
		
			
				
					|  |  |  |  |         Type::DataStream data; | 
			
		
	
		
			
				
					|  |  |  |  |         if (file.exists()) | 
			
		
	
		
			
				
					|  |  |  |  |         { | 
			
		
	
	
		
			
				
					|  |  |  | @ -15,6 +17,8 @@ namespace Bk::Json | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     Parser::Parser(const char* str, int length) | 
			
		
	
		
			
				
					|  |  |  |  |     { | 
			
		
	
		
			
				
					|  |  |  |  |         root = Pointer(new Node()); | 
			
		
	
		
			
				
					|  |  |  |  |         root->set_null(); | 
			
		
	
		
			
				
					|  |  |  |  |         Type::DataStream data; | 
			
		
	
		
			
				
					|  |  |  |  |         data.push<char>(str, length); | 
			
		
	
		
			
				
					|  |  |  |  |         data.reverse(); | 
			
		
	
	
		
			
				
					|  |  |  | @ -23,8 +27,10 @@ namespace Bk::Json | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     Parser::Parser(const std::string& str) | 
			
		
	
		
			
				
					|  |  |  |  |     { | 
			
		
	
		
			
				
					|  |  |  |  |         root = Pointer(new Node()); | 
			
		
	
		
			
				
					|  |  |  |  |         root->set_null(); | 
			
		
	
		
			
				
					|  |  |  |  |         Type::DataStream data; | 
			
		
	
		
			
				
					|  |  |  |  |         data.payload = std::vector<char>(str.c_str(), str.c_str() + str.length()); | 
			
		
	
		
			
				
					|  |  |  |  |         data.payload = std::vector<char>(str.begin(), str.end()); | 
			
		
	
		
			
				
					|  |  |  |  |         data.reverse(); | 
			
		
	
		
			
				
					|  |  |  |  |         lexer = Lexer(data); | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
	
		
			
				
					|  |  |  | @ -32,9 +38,7 @@ namespace Bk::Json | 
			
		
	
		
			
				
					|  |  |  |  |     Pointer Parser::parse() 
 | 
			
		
	
		
			
				
					|  |  |  |  |     { | 
			
		
	
		
			
				
					|  |  |  |  |         Token token; | 
			
		
	
		
			
				
					|  |  |  |  |         BK_INFO("LALA"); | 
			
		
	
		
			
				
					|  |  |  |  |         while (lexer.has_more_tokens()) { | 
			
		
	
		
			
				
					|  |  |  |  |             BK_INFO("LALA"); | 
			
		
	
		
			
				
					|  |  |  |  |             try 
 | 
			
		
	
		
			
				
					|  |  |  |  |             { | 
			
		
	
		
			
				
					|  |  |  |  |                 token = lexer.get_token(); | 
			
		
	
	
		
			
				
					|  |  |  | @ -87,7 +91,7 @@ namespace Bk::Json | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     Pointer Parser::parse_list() 
 | 
			
		
	
		
			
				
					|  |  |  |  |     { | 
			
		
	
		
			
				
					|  |  |  |  |         Pointer node = Pointer(); | 
			
		
	
		
			
				
					|  |  |  |  |         Pointer node = Pointer(new Node()); | 
			
		
	
		
			
				
					|  |  |  |  |         Json::List* list = new Json::List(); | 
			
		
	
		
			
				
					|  |  |  |  |         bool has_completed = false; | 
			
		
	
		
			
				
					|  |  |  |  |         Token next_token; | 
			
		
	
	
		
			
				
					|  |  |  | @ -148,7 +152,7 @@ namespace Bk::Json | 
			
		
	
		
			
				
					|  |  |  |  |     Pointer Parser::parse_object() 
 | 
			
		
	
		
			
				
					|  |  |  |  |     { | 
			
		
	
		
			
				
					|  |  |  |  |         std::string key = ""; | 
			
		
	
		
			
				
					|  |  |  |  |         Pointer node = Pointer(); | 
			
		
	
		
			
				
					|  |  |  |  |         Pointer node = Pointer(new Node()); | 
			
		
	
		
			
				
					|  |  |  |  |         Json::Object *key_object_map = new Json::Object(); | 
			
		
	
		
			
				
					|  |  |  |  |         bool has_completed = false; | 
			
		
	
		
			
				
					|  |  |  |  |         bool no_key = true; | 
			
		
	
	
		
			
				
					|  |  |  | @ -160,6 +164,7 @@ namespace Bk::Json | 
			
		
	
		
			
				
					|  |  |  |  |                 if (no_key) | 
			
		
	
		
			
				
					|  |  |  |  |                 { | 
			
		
	
		
			
				
					|  |  |  |  |                     next_token = lexer.get_token(); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |                     if (next_token.type == TokenType::CURLY_CLOSE) 
 | 
			
		
	
		
			
				
					|  |  |  |  |                     { | 
			
		
	
		
			
				
					|  |  |  |  |                         has_completed = true; | 
			
		
	
	
		
			
				
					|  |  |  | @ -173,7 +178,6 @@ namespace Bk::Json | 
			
		
	
		
			
				
					|  |  |  |  |                 next_token = lexer.get_token(); | 
			
		
	
		
			
				
					|  |  |  |  |                 if (next_token.type == TokenType::COLON || next_token.type == TokenType::COMMA) | 
			
		
	
		
			
				
					|  |  |  |  |                     continue; | 
			
		
	
		
			
				
					|  |  |  |  |                 Pointer node; | 
			
		
	
		
			
				
					|  |  |  |  |                 switch (next_token.type) 
 | 
			
		
	
		
			
				
					|  |  |  |  |                 { | 
			
		
	
		
			
				
					|  |  |  |  |                     case TokenType::STRING: 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -227,7 +231,7 @@ namespace Bk::Json | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     Pointer Parser::parse_string() 
 | 
			
		
	
		
			
				
					|  |  |  |  |     { | 
			
		
	
		
			
				
					|  |  |  |  |         Pointer node = Pointer(); | 
			
		
	
		
			
				
					|  |  |  |  |         Pointer node = Pointer(new Node()); | 
			
		
	
		
			
				
					|  |  |  |  |         Token token = lexer.roll_back_token(); | 
			
		
	
		
			
				
					|  |  |  |  |         std::string *sValue = new std::string(token.value); | 
			
		
	
		
			
				
					|  |  |  |  |         node->set_string(sValue); | 
			
		
	
	
		
			
				
					|  |  |  | @ -236,7 +240,7 @@ namespace Bk::Json | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     Pointer Parser::parse_number() 
 | 
			
		
	
		
			
				
					|  |  |  |  |     { | 
			
		
	
		
			
				
					|  |  |  |  |         Pointer node = Pointer(); | 
			
		
	
		
			
				
					|  |  |  |  |         Pointer node = Pointer(new Node()); | 
			
		
	
		
			
				
					|  |  |  |  |         Token token = lexer.roll_back_token(); | 
			
		
	
		
			
				
					|  |  |  |  |         float fValue = std::stof(token.value); | 
			
		
	
		
			
				
					|  |  |  |  |         node->set_float(fValue); | 
			
		
	
	
		
			
				
					|  |  |  | @ -245,7 +249,7 @@ namespace Bk::Json | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     Pointer Parser::parse_boolean() 
 | 
			
		
	
		
			
				
					|  |  |  |  |     { | 
			
		
	
		
			
				
					|  |  |  |  |         Pointer node = Pointer(); | 
			
		
	
		
			
				
					|  |  |  |  |         Pointer node = Pointer(new Node()); | 
			
		
	
		
			
				
					|  |  |  |  |         Token token = lexer.roll_back_token(); | 
			
		
	
		
			
				
					|  |  |  |  |         bool bValue = token.value == "True" ? true : false; | 
			
		
	
		
			
				
					|  |  |  |  |         node->set_bool(bValue); | 
			
		
	
	
		
			
				
					|  |  |  | @ -254,7 +258,7 @@ namespace Bk::Json | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     Pointer Parser::parse_null() 
 | 
			
		
	
		
			
				
					|  |  |  |  |     { | 
			
		
	
		
			
				
					|  |  |  |  |         Pointer node = Pointer(); | 
			
		
	
		
			
				
					|  |  |  |  |         Pointer node = Pointer(new Node()); | 
			
		
	
		
			
				
					|  |  |  |  |         Token token = lexer.roll_back_token(); | 
			
		
	
		
			
				
					|  |  |  |  |         node->set_null(); | 
			
		
	
		
			
				
					|  |  |  |  |         return node; | 
			
		
	
	
		
			
				
					|  |  |  | 
 |