Updated json_entities
This commit is contained in:
parent
1e510411dc
commit
14ad503d4d
@ -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}
|
Loading…
Reference in New Issue
Block a user