cpp: use a simple hash table instead of tab struct
[neatcc.git] / tok.h
blob37cb41449f28b0e691aea1673d3d62e77ec749f1
1 #define TOK2(a) ((a)[0] << 16 | (a)[1] << 8)
2 #define TOK3(a) ((a)[0] << 16 | (a)[1] << 8 | (a)[2])
4 enum tok {
5 TOK_EOF,
6 TOK_NAME = 256,
7 TOK_NUM,
8 TOK_VOID,
9 TOK_STATIC,
10 TOK_EXTERN,
11 TOK_RETURN,
12 TOK_UNSIGNED,
13 TOK_SIGNED,
14 TOK_SHORT,
15 TOK_LONG,
16 TOK_INT,
17 TOK_CHAR,
18 TOK_STRUCT,
19 TOK_UNION,
20 TOK_ENUM,
21 TOK_TYPEDEF,
22 TOK_IF,
23 TOK_ELSE,
24 TOK_FOR,
25 TOK_WHILE,
26 TOK_DO,
27 TOK_SWITCH,
28 TOK_CASE,
29 TOK_SIZEOF,
30 TOK_STR,
31 TOK_BREAK,
32 TOK_CONTINUE,
33 TOK_DEFAULT,
34 TOK_GOTO,
37 void tok_init(char *path);
38 int tok_see(void);
39 int tok_get(void);
40 char *tok_id(void);
41 int tok_num(long *n);
42 void tok_str(char **buf, int *len);
43 long tok_addr(void);
44 void tok_jump(long addr);
46 int cpp_init(char *path);
47 void cpp_addpath(char *s);
48 void cpp_define(char *name, char *def);
49 char *cpp_loc(long addr);
50 int cpp_read(char **buf, int *len);
52 void die(char *msg, ...);
53 void err(char *fmt, ...);