Updated json_entities
This commit is contained in:
parent
1e510411dc
commit
14ad503d4d
@ -143,12 +143,12 @@
|
|||||||
"-x",
|
"-x",
|
||||||
"c",
|
"c",
|
||||||
"-o",
|
"-o",
|
||||||
"/tmp/main-8f77b1.o",
|
"/tmp/main-a21b7e.o",
|
||||||
"src/main.c"
|
"src/main.c"
|
||||||
],
|
],
|
||||||
"directory": "/mnt/3A5CDF785CDF2CFF/Users/abdoo/dev/say_it_in_json",
|
"directory": "/mnt/3A5CDF785CDF2CFF/Users/abdoo/dev/say_it_in_json",
|
||||||
"file": "/mnt/3A5CDF785CDF2CFF/Users/abdoo/dev/say_it_in_json/src/main.c",
|
"file": "/mnt/3A5CDF785CDF2CFF/Users/abdoo/dev/say_it_in_json/src/main.c",
|
||||||
"output": "/tmp/main-8f77b1.o"
|
"output": "/tmp/main-a21b7e.o"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"arguments": [
|
"arguments": [
|
||||||
@ -214,12 +214,12 @@
|
|||||||
"-x",
|
"-x",
|
||||||
"c",
|
"c",
|
||||||
"-o",
|
"-o",
|
||||||
"/tmp/dstring-e11abe.o",
|
"/tmp/dstring-17d81f.o",
|
||||||
"src/dstring/dstring.c"
|
"src/dstring/dstring.c"
|
||||||
],
|
],
|
||||||
"directory": "/mnt/3A5CDF785CDF2CFF/Users/abdoo/dev/say_it_in_json",
|
"directory": "/mnt/3A5CDF785CDF2CFF/Users/abdoo/dev/say_it_in_json",
|
||||||
"file": "/mnt/3A5CDF785CDF2CFF/Users/abdoo/dev/say_it_in_json/src/dstring/dstring.c",
|
"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": [
|
"arguments": [
|
||||||
@ -285,12 +285,12 @@
|
|||||||
"-x",
|
"-x",
|
||||||
"c",
|
"c",
|
||||||
"-o",
|
"-o",
|
||||||
"/tmp/json_entities-caa676.o",
|
"/tmp/json_entities-66f73b.o",
|
||||||
"src/json_entities/json_entities.c"
|
"src/json_entities/json_entities.c"
|
||||||
],
|
],
|
||||||
"directory": "/mnt/3A5CDF785CDF2CFF/Users/abdoo/dev/say_it_in_json",
|
"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",
|
"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": [
|
"arguments": [
|
||||||
@ -356,11 +356,11 @@
|
|||||||
"-x",
|
"-x",
|
||||||
"c",
|
"c",
|
||||||
"-o",
|
"-o",
|
||||||
"/tmp/lexer-7fcb6e.o",
|
"/tmp/lexer-66d0ff.o",
|
||||||
"src/lexer/lexer.c"
|
"src/lexer/lexer.c"
|
||||||
],
|
],
|
||||||
"directory": "/mnt/3A5CDF785CDF2CFF/Users/abdoo/dev/say_it_in_json",
|
"directory": "/mnt/3A5CDF785CDF2CFF/Users/abdoo/dev/say_it_in_json",
|
||||||
"file": "/mnt/3A5CDF785CDF2CFF/Users/abdoo/dev/say_it_in_json/src/lexer/lexer.c",
|
"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,21 +5,24 @@
|
|||||||
#include "dstring.h"
|
#include "dstring.h"
|
||||||
#include <stdbool.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 {
|
typedef enum {
|
||||||
JVAL_OBJECT,
|
JSON_VALUE_COLLECTION,
|
||||||
JVAL_ARRAY,
|
JSON_VALUE_STRING,
|
||||||
JVAL_STRING,
|
JSON_VALUE_INTEGER,
|
||||||
JVAL_INTEGER,
|
JSON_VALUE_DOUBLE,
|
||||||
JVAL_DOUBLE,
|
JSON_VALUE_BOOLEAN,
|
||||||
JVAL_BOOLEAN,
|
JSON_VALUE_NULL,
|
||||||
JVAL_NULL,
|
} jval_type;
|
||||||
} jval_type_t;
|
|
||||||
|
|
||||||
struct json_value {
|
struct jval {
|
||||||
jval_type_t type;
|
jval_type type;
|
||||||
union {
|
union {
|
||||||
|
jcoll_t *collection;
|
||||||
dstr_t *string;
|
dstr_t *string;
|
||||||
i64 num_int;
|
i64 num_int;
|
||||||
f64 num_dbl;
|
f64 num_dbl;
|
||||||
@ -27,4 +30,35 @@ struct json_value {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
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
|
#endif // !JSON_ENTITIES_H
|
||||||
|
@ -23,10 +23,10 @@ typedef enum {
|
|||||||
JSON_TRUE,
|
JSON_TRUE,
|
||||||
JSON_FALSE,
|
JSON_FALSE,
|
||||||
JSON_NULL,
|
JSON_NULL,
|
||||||
} jval_type_t;
|
} jval_type;
|
||||||
|
|
||||||
struct json_val {
|
struct json_val {
|
||||||
jval_type_t type;
|
jval_type type;
|
||||||
union {
|
union {
|
||||||
jcoll_t *collection;
|
jcoll_t *collection;
|
||||||
const char *string;
|
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