1 2 #ifndef P 3 #if __STDC__ 4 #define P(x) x 5 #else 6 #define P(x) () 7 #endif 8 #endif 9 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)); 14 15 extern FILE * curfile; 16 extern char curword[]; 17 extern char * c_fname; 18 extern int c_lineno; 19 extern int alltok; 20 extern int dialect; 21 22 #define DI_KNR 1 23 #define DI_ANSI 2 24 25 extern int gettok P((void)); 26 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)); 30 31 #define WORDSIZE 128 32 #define TK_WSPACE 256 33 #define TK_WORD 257 34 #define TK_NUM 258 35 #define TK_FLT 259 36 #define TK_QUOT 260 37 #define TK_STR 261 38 #define TK_FILE 262 39 #define TK_LINE 263 40 #define TK_COPY 264 41 42 #define TKS_CTOK 0x200 43 #define TKS_CKEY 0x300 44 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) 67 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) 100 101 #define MAX_INCLUDE 64 /* Nested includes */ 102 #define MAX_DEFINE 64 /* Nested defines */ 103 104 extern char * set_entry P((int,char*,void*)); 105 extern void * read_entry P((int,char*)); 106 107 struct define_item 108 { 109 struct define_arg * next; 110 char * name; 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 */ 115 }; 116