aboutsummaryrefslogtreecommitdiff
path: root/json.h
blob: 215f71643f8e67dcc1cccdb5a109118779e1ea5d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#pragma src "/usr/doc/src/json"
#pragma	lib	"json.a"

enum{
	JStksz= 32,
};

typedef enum{
	JBool,
	JNum,
	JNil,
	JObj,
	JArr,
	JStr,
} Jtype;

typedef struct{
	Jtype type;
	char *start;
	char *end;
	uint nsub;
} Jtok;

typedef struct{
	uint ntok, mtok;
	Jtok *tokens;
	uint stktop;
	uint tokstk[JStksz];
} Jparser;

void Jinit(Jparser *);
void Jterm(Jparser *);

int Jtokenise(Jparser *, char *);
char *Jtokstr(Jtok *);

int Jfind(Jparser *, uint, char *);
uint Jnext(Jparser *, uint);