cc.h 3.0 KB

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