10 extern void cfatal
P((char*));
11 extern void cerror
P((char*));
12 extern void cwarn
P((char*));
13 extern FILE * open_include
P((char*, char*, int));
15 extern FILE * curfile
;
16 extern char curword
[];
17 extern char * c_fname
;
25 extern int gettok
P((void));
27 struct token_trans
{ char * name
; int token
; };
28 struct token_trans
* is_ctok
P((const char *str
, unsigned int len
));
29 struct token_trans
* is_ckey
P((const char *str
, unsigned int len
));
42 #define TKS_CTOK 0x200
43 #define TKS_CKEY 0x300
45 #define TK_NE_OP (TKS_CTOK+ 0)
46 #define TK_MOD_ASSIGN (TKS_CTOK+ 1)
47 #define TK_AND_OP (TKS_CTOK+ 2)
48 #define TK_AND_ASSIGN (TKS_CTOK+ 3)
49 #define TK_MUL_ASSIGN (TKS_CTOK+ 4)
50 #define TK_INC_OP (TKS_CTOK+ 5)
51 #define TK_ADD_ASSIGN (TKS_CTOK+ 6)
52 #define TK_DEC_OP (TKS_CTOK+ 7)
53 #define TK_SUB_ASSIGN (TKS_CTOK+ 8)
54 #define TK_PTR_OP (TKS_CTOK+ 9)
55 #define TK_ELLIPSIS (TKS_CTOK+10)
56 #define TK_DIV_ASSIGN (TKS_CTOK+11)
57 #define TK_LEFT_OP (TKS_CTOK+12)
58 #define TK_LEFT_ASSIGN (TKS_CTOK+13)
59 #define TK_LE_OP (TKS_CTOK+14)
60 #define TK_EQ_OP (TKS_CTOK+15)
61 #define TK_GE_OP (TKS_CTOK+16)
62 #define TK_RIGHT_OP (TKS_CTOK+17)
63 #define TK_RIGHT_ASSIGN (TKS_CTOK+18)
64 #define TK_XOR_ASSIGN (TKS_CTOK+19)
65 #define TK_OR_ASSIGN (TKS_CTOK+20)
66 #define TK_OR_OP (TKS_CTOK+21)
68 #define TK_AUTO (TKS_CKEY+ 0)
69 #define TK_BREAK (TKS_CKEY+ 1)
70 #define TK_CASE (TKS_CKEY+ 2)
71 #define TK_CHAR (TKS_CKEY+ 3)
72 #define TK_CONST (TKS_CKEY+ 4)
73 #define TK_CONTINUE (TKS_CKEY+ 5)
74 #define TK_DEFAULT (TKS_CKEY+ 6)
75 #define TK_DO (TKS_CKEY+ 7)
76 #define TK_DOUBLE (TKS_CKEY+ 8)
77 #define TK_ELSE (TKS_CKEY+ 9)
78 #define TK_ENUM (TKS_CKEY+10)
79 #define TK_EXTERN (TKS_CKEY+11)
80 #define TK_FLOAT (TKS_CKEY+12)
81 #define TK_FOR (TKS_CKEY+13)
82 #define TK_GOTO (TKS_CKEY+14)
83 #define TK_IF (TKS_CKEY+15)
84 #define TK_INT (TKS_CKEY+16)
85 #define TK_LONG (TKS_CKEY+17)
86 #define TK_REGISTER (TKS_CKEY+18)
87 #define TK_RETURN (TKS_CKEY+19)
88 #define TK_SHORT (TKS_CKEY+20)
89 #define TK_SIGNED (TKS_CKEY+21)
90 #define TK_SIZEOF (TKS_CKEY+22)
91 #define TK_STATIC (TKS_CKEY+23)
92 #define TK_STRUCT (TKS_CKEY+24)
93 #define TK_SWITCH (TKS_CKEY+25)
94 #define TK_TYPEDEF (TKS_CKEY+26)
95 #define TK_UNION (TKS_CKEY+27)
96 #define TK_UNSIGNED (TKS_CKEY+28)
97 #define TK_VOID (TKS_CKEY+29)
98 #define TK_VOLATILE (TKS_CKEY+30)
99 #define TK_WHILE (TKS_CKEY+31)
101 #define MAX_INCLUDE 64 /* Nested includes */
102 #define MAX_DEFINE 64 /* Nested defines */
104 extern char * set_entry
P((int,char*,void*));
105 extern void * read_entry
P((int,char*));
109 struct define_arg
* next
;
111 int arg_count
; /* -1 = none; >=0 = brackets with N args */
112 int in_use
; /* Skip this one for looking up #defines */
113 int varargs
; /* No warning if unexpected arguments. */
114 char value
[1]; /* [arg,]*value */