Updated json_entities
This commit is contained in:
		| @@ -143,12 +143,12 @@ | ||||
|       "-x", | ||||
|       "c", | ||||
|       "-o", | ||||
|       "/tmp/main-8f77b1.o", | ||||
|       "/tmp/main-a21b7e.o", | ||||
|       "src/main.c" | ||||
|     ], | ||||
|     "directory": "/mnt/3A5CDF785CDF2CFF/Users/abdoo/dev/say_it_in_json", | ||||
|     "file": "/mnt/3A5CDF785CDF2CFF/Users/abdoo/dev/say_it_in_json/src/main.c", | ||||
|     "output": "/tmp/main-8f77b1.o" | ||||
|     "output": "/tmp/main-a21b7e.o" | ||||
|   }, | ||||
|   { | ||||
|     "arguments": [ | ||||
| @@ -214,12 +214,12 @@ | ||||
|       "-x", | ||||
|       "c", | ||||
|       "-o", | ||||
|       "/tmp/dstring-e11abe.o", | ||||
|       "/tmp/dstring-17d81f.o", | ||||
|       "src/dstring/dstring.c" | ||||
|     ], | ||||
|     "directory": "/mnt/3A5CDF785CDF2CFF/Users/abdoo/dev/say_it_in_json", | ||||
|     "file": "/mnt/3A5CDF785CDF2CFF/Users/abdoo/dev/say_it_in_json/src/dstring/dstring.c", | ||||
|     "output": "/tmp/dstring-e11abe.o" | ||||
|     "output": "/tmp/dstring-17d81f.o" | ||||
|   }, | ||||
|   { | ||||
|     "arguments": [ | ||||
| @@ -285,12 +285,12 @@ | ||||
|       "-x", | ||||
|       "c", | ||||
|       "-o", | ||||
|       "/tmp/json_entities-caa676.o", | ||||
|       "/tmp/json_entities-66f73b.o", | ||||
|       "src/json_entities/json_entities.c" | ||||
|     ], | ||||
|     "directory": "/mnt/3A5CDF785CDF2CFF/Users/abdoo/dev/say_it_in_json", | ||||
|     "file": "/mnt/3A5CDF785CDF2CFF/Users/abdoo/dev/say_it_in_json/src/json_entities/json_entities.c", | ||||
|     "output": "/tmp/json_entities-caa676.o" | ||||
|     "output": "/tmp/json_entities-66f73b.o" | ||||
|   }, | ||||
|   { | ||||
|     "arguments": [ | ||||
| @@ -356,11 +356,11 @@ | ||||
|       "-x", | ||||
|       "c", | ||||
|       "-o", | ||||
|       "/tmp/lexer-7fcb6e.o", | ||||
|       "/tmp/lexer-66d0ff.o", | ||||
|       "src/lexer/lexer.c" | ||||
|     ], | ||||
|     "directory": "/mnt/3A5CDF785CDF2CFF/Users/abdoo/dev/say_it_in_json", | ||||
|     "file": "/mnt/3A5CDF785CDF2CFF/Users/abdoo/dev/say_it_in_json/src/lexer/lexer.c", | ||||
|     "output": "/tmp/lexer-7fcb6e.o" | ||||
|     "output": "/tmp/lexer-66d0ff.o" | ||||
|   } | ||||
| ] | ||||
|   | ||||
| @@ -5,26 +5,60 @@ | ||||
| #include "dstring.h" | ||||
| #include <stdbool.h> | ||||
|  | ||||
| typedef struct json_value jval_t; | ||||
| typedef struct jentity jentity_t; | ||||
| typedef struct jcoll jcoll_t; | ||||
| typedef struct jval jval_t; | ||||
| typedef struct jpair jpair_t; | ||||
|  | ||||
| typedef enum { | ||||
| 	JVAL_OBJECT, | ||||
| 	JVAL_ARRAY, | ||||
| 	JVAL_STRING, | ||||
| 	JVAL_INTEGER, | ||||
| 	JVAL_DOUBLE, | ||||
| 	JVAL_BOOLEAN, | ||||
| 	JVAL_NULL, | ||||
| } jval_type_t; | ||||
|   JSON_VALUE_COLLECTION, | ||||
|   JSON_VALUE_STRING, | ||||
|   JSON_VALUE_INTEGER, | ||||
|   JSON_VALUE_DOUBLE, | ||||
|   JSON_VALUE_BOOLEAN, | ||||
|   JSON_VALUE_NULL, | ||||
| } jval_type; | ||||
|  | ||||
| struct json_value { | ||||
| 	jval_type_t type; | ||||
| 	union { | ||||
| 		dstr_t *string; | ||||
| 		i64 num_int; | ||||
| 		f64 num_dbl; | ||||
| 		bool boolean; | ||||
| 	}; | ||||
| struct jval { | ||||
|   jval_type type; | ||||
|   union { | ||||
|     jcoll_t *collection; | ||||
|     dstr_t *string; | ||||
|     i64 num_int; | ||||
|     f64 num_dbl; | ||||
|     bool boolean; | ||||
|   }; | ||||
| }; | ||||
|  | ||||
| struct jpair { | ||||
|   dstr_t *key; | ||||
|   jval_t value; | ||||
| }; | ||||
|  | ||||
| typedef enum { | ||||
|   JVAL_SINGLE, | ||||
|   JVAL_PAIR, | ||||
| } jentity_type; | ||||
|  | ||||
| struct jentity { | ||||
|   jentity_type type; | ||||
|   union { | ||||
|     jval_t value; | ||||
|     jpair_t pair; | ||||
|   }; | ||||
|   jentity_t *parent; | ||||
|   jentity_t *next; | ||||
| }; | ||||
|  | ||||
| typedef enum { | ||||
|   JCOLL_OBJECT, | ||||
|   JCOLL_ARRAY, | ||||
| } jcoll_type; | ||||
|  | ||||
| struct jcoll { | ||||
|   u64 size; | ||||
|   jcoll_type type; | ||||
|   jentity_t *first_child; | ||||
| }; | ||||
|  | ||||
| #endif // !JSON_ENTITIES_H | ||||
|   | ||||
| @@ -23,10 +23,10 @@ typedef enum { | ||||
|   JSON_TRUE, | ||||
|   JSON_FALSE, | ||||
|   JSON_NULL, | ||||
| } jval_type_t; | ||||
| } jval_type; | ||||
|  | ||||
| struct json_val { | ||||
|   jval_type_t type; | ||||
|   jval_type type; | ||||
|   union { | ||||
|     jcoll_t *collection; | ||||
|     const char *string; | ||||
|   | ||||
							
								
								
									
										33
									
								
								token_stream_example
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								token_stream_example
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,33 @@ | ||||
| {LINE:    1, COLUMN:    0, TYPE:      TK_L_BRACE, VALUE: N/A} | ||||
| {LINE:    2, COLUMN:    2, TYPE:      TK_STR_KEY, VALUE: menu} | ||||
| {LINE:    2, COLUMN:    9, TYPE:      TK_L_BRACE, VALUE: N/A} | ||||
| {LINE:    3, COLUMN:    3, TYPE:      TK_STR_KEY, VALUE: id} | ||||
| {LINE:    3, COLUMN:    9, TYPE:      TK_STR_VAL, VALUE: file} | ||||
| {LINE:    4, COLUMN:    3, TYPE:      TK_STR_KEY, VALUE: value} | ||||
| {LINE:    4, COLUMN:   12, TYPE:      TK_STR_VAL, VALUE: File} | ||||
| {LINE:    5, COLUMN:    3, TYPE:      TK_STR_KEY, VALUE: popup} | ||||
| {LINE:    5, COLUMN:   11, TYPE:      TK_L_BRACE, VALUE: N/A} | ||||
| {LINE:    6, COLUMN:    4, TYPE:      TK_STR_KEY, VALUE: menuitem} | ||||
| {LINE:    6, COLUMN:   15, TYPE:    TK_L_BRACKET, VALUE: N/A} | ||||
| {LINE:    7, COLUMN:    4, TYPE:      TK_L_BRACE, VALUE: N/A} | ||||
| {LINE:    8, COLUMN:    6, TYPE:      TK_STR_KEY, VALUE: value} | ||||
| {LINE:    8, COLUMN:   15, TYPE:      TK_STR_VAL, VALUE: New} | ||||
| {LINE:    9, COLUMN:    6, TYPE:      TK_STR_KEY, VALUE: onclick} | ||||
| {LINE:    9, COLUMN:   17, TYPE:      TK_STR_VAL, VALUE: CreateNewDoc()} | ||||
| {LINE:   10, COLUMN:    4, TYPE:      TK_R_BRACE, VALUE: N/A} | ||||
| {LINE:   11, COLUMN:    4, TYPE:      TK_L_BRACE, VALUE: N/A} | ||||
| {LINE:   12, COLUMN:    6, TYPE:      TK_STR_KEY, VALUE: value} | ||||
| {LINE:   12, COLUMN:   15, TYPE:      TK_STR_VAL, VALUE: Open} | ||||
| {LINE:   13, COLUMN:    6, TYPE:      TK_STR_KEY, VALUE: onclick} | ||||
| {LINE:   13, COLUMN:   17, TYPE:      TK_STR_VAL, VALUE: OpenDoc()} | ||||
| {LINE:   14, COLUMN:    4, TYPE:      TK_R_BRACE, VALUE: N/A} | ||||
| {LINE:   15, COLUMN:    4, TYPE:      TK_L_BRACE, VALUE: N/A} | ||||
| {LINE:   16, COLUMN:    6, TYPE:      TK_STR_KEY, VALUE: value} | ||||
| {LINE:   16, COLUMN:   15, TYPE:      TK_STR_VAL, VALUE: Close} | ||||
| {LINE:   17, COLUMN:    6, TYPE:      TK_STR_KEY, VALUE: onclick} | ||||
| {LINE:   17, COLUMN:   17, TYPE:      TK_STR_VAL, VALUE: CloseDoc()} | ||||
| {LINE:   18, COLUMN:    4, TYPE:      TK_R_BRACE, VALUE: N/A} | ||||
| {LINE:   19, COLUMN:    3, TYPE:    TK_R_BRACKET, VALUE: N/A} | ||||
| {LINE:   20, COLUMN:    2, TYPE:      TK_R_BRACE, VALUE: N/A} | ||||
| {LINE:   21, COLUMN:    1, TYPE:      TK_R_BRACE, VALUE: N/A} | ||||
| {LINE:   22, COLUMN:    0, TYPE:      TK_R_BRACE, VALUE: N/A} | ||||
		Reference in New Issue
	
	Block a user