Annotation of coherent/b/bin/c/h/cc0.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  * h/cc0.h
                      3:  * Definitions for the C compiler parser (cc0)
                      4:  * and the C compiler preprocessor (cpp).
                      5:  * Includes the definitions of the reserved words,
                      6:  * the built-in types, and so forth.
                      7:  */
                      8: 
                      9: #define        CC0_H   CC0_H
                     10: 
                     11: #include <stdio.h>
                     12: #include <setjmp.h>
                     13: #ifdef vax
                     14: #include "INC$LIB:mch.h"
                     15: #include "INC$LIB:host.h"
                     16: #include "INC$LIB:ops.h"
                     17: #include "INC$LIB:var.h"
                     18: #include "INC$LIB:varmch.h"
                     19: #include "INC$LIB:cc0mch.h"
                     20: #include "INC$LIB:stream.h"
                     21: #include "INC$LIB:cppmch.h"
                     22: #else
                     23: #include "mch.h"
                     24: #include "host.h"
                     25: #include "ops.h"
                     26: #include "var.h"
                     27: #include "varmch.h"
                     28: #include "cc0mch.h"
                     29: #include "stream.h"
                     30: #include "cppmch.h"
                     31: #endif
                     32: 
                     33: /*
                     34:  * Define the sizes of the tables in the parser.
                     35:  * These can be changed to just about anything.
                     36:  */
                     37: #define NHASH  67              /* Hash buckets                         */
                     38: #define        NDIRS   32              /* Number of include directories        */
                     39: #define        NLEV    32              /* Nesting level of cpp constructs      */
                     40: #if    _I386
                     41: #define NDLEV  256             /* DSTACK size                          */
                     42: #define        NDBUF   4096            /* Size of the define buffer            */
                     43: #else
                     44: #define NDLEV  128             /* DSTACK size                          */
                     45: #define        NDBUF   1024            /* Size of the define buffer            */
                     46: #endif
                     47: #define ARG0   0200            /* Base of formals in define bodies     */
                     48: #define SET0   (ARG0+NARGS)    /* Base of hide set indices in text     */
                     49: /* High parity characters are accepted in strings, but otherwise forbidden */
                     50: /* because they conflict with this scheme for packing macro formals and hide */
                     51: /* sets into the least space and overhead I can manage */
                     52: 
                     53: /*
                     54:  * cpp keywords and macro classes.
                     55:  * these hide at a distinct level
                     56:  * in the symbol table.
                     57:  */
                     58: #define        XUSER   0       /* User macro                           */
                     59: #define        XUSERA  1       /* User macro with arguments            */
                     60: #define        XUFILE  2       /* Macro __FILE__                       */
                     61: #define        XULINE  3       /* Macro __LINE__                       */
                     62: #define XUDATE 4       /* Macro __DATE__                       */
                     63: #define XUTIME 5       /* Macro __TIME__                       */
                     64: #define XUSTDC 6       /* Macro __STDC__                       */
                     65: #define        XUBASE  7       /* Macro __BASE_FILE__                  */
                     66: #define XDEFINED 8     /* User macro defined()                 */
                     67: #define        XDEFINE 9       /* #define                              */
                     68: #define        XINCLUDE 10     /* #include                             */
                     69: #define        XUNDEF  11      /* #undef                               */
                     70: #define        XLINE   12      /* #line                                */
                     71: #define        XASSERT 13      /* #assert                              */
                     72: #define XERROR 14      /* #error                               */
                     73: #define XPRAGMA        15      /* #pragma                              */
                     74: #define        XIF     20      /* #if is the first conditional         */
                     75: #define        XIFDEF  21      /* #ifdef                               */
                     76: #define        XIFNDEF 22      /* #ifndef                              */
                     77: #define        XELSE   23      /* #else                                */
                     78: #define XELIF  24      /* #elif                                */
                     79: #define        XENDIF  25      /* #endif                               */
                     80: #define        XIDENT  26      /* #ident                               */
                     81: 
                     82: /*
                     83:  * Tokens.
                     84:  * Character classes.
                     85:  * Other things that are C compiler parser specific.
                     86:  * By convention, these begin at 100 decimal.
                     87:  */
                     88: #define DOT    100             /* .                            */
                     89: #define ARROW  101             /* ->                           */
                     90: #define SEMI   102             /* ;                            */
                     91: #define SHARP  103             /* #                            */
                     92: #define JUNK   104             /* Junk character               */
                     93: #define SKIP   105             /* Whitespace                   */
                     94: #define LBRACE 106             /* {                            */
                     95: #define RBRACE 107             /* }                            */
                     96: #define LBRACK 108             /* [                            */
                     97: #define RBRACK 109             /* ]                            */
                     98: #define LPAREN 110             /* (                            */
                     99: #define RPAREN 111             /* )                            */
                    100: #define ID     112             /* All identifiers              */
                    101: #define CON    113             /* Constants                    */
                    102: #define QUOTE  114             /* '                            */
                    103: #define STRING 115             /* "                            */
                    104: #define HIGH0  116             /* High parity junk, 0200..0237 */
                    105: #define HIGH1  117             /* High parity junk, 0240..0277 */
                    106: #define HIGH2  118             /* High parity junk, 0300..0337 */
                    107: #define HIGH3  119             /* High parity junk, 0340..0377 */
                    108: #define BACKDIV        120             /* Back slash                   */
                    109: 
                    110: /*
                    111:  * Types.
                    112:  * Classes.
                    113:  * Do not change these unless you update the tables in "gcandt.c".
                    114:  */
                    115: #define INT    150             /* int          */
                    116: #define CHAR   151             /* char         */
                    117: #define FLOAT  152             /* float        */
                    118: #define DOUBLE 153             /* double       */
                    119: #define        VOID    154             /* void         */
                    120: #define STRUCT 155             /* struct       */
                    121: #define UNION  156             /* union        */
                    122: #define ENUM   157             /* enum         */
                    123: #define LONG   158             /* long         */
                    124: #define SHORT  159             /* short        */
                    125: #define UNSIGNED 160           /* unsigned     */
                    126: #define EXTERN 161             /* extern       */
                    127: #define STATIC 162             /* static       */
                    128: #define REGISTER 163           /* register     */
                    129: #define TYPEDEF        164             /* typedef      */
                    130: #define AUTO   165             /* auto         */
                    131: #define CONST  166             /* const        */
                    132: #define VOLATILE 167           /* volatile     */
                    133: #define SIGNED 168             /* signed       */
                    134: 
                    135: /*
                    136:  * Other C reserved words.
                    137:  * These are in no particular order at all.
                    138:  */
                    139: #define DEFAULT        180             /* default      */
                    140: #define DO     181             /* do           */
                    141: #define ELSE   182             /* else         */
                    142: #define GOTO   183             /* goto         */
                    143: #define IF     184             /* if           */
                    144: #define RETURN 185             /* return       */
                    145: #define SWITCH 186             /* switch       */
                    146: #define CONTINUE 187           /* continue     */
                    147: #define FOR    188             /* for          */
                    148: #define WHILE  189             /* while        */
                    149: #define BREAK  190             /* break        */
                    150: #define        CASE    191             /* case         */
                    151: 
                    152: /* MWC proprietary keywords */
                    153: #define        READONLY 200            /* readonly                     */
                    154: #define ALIEN   201            /* Other language interface     */
                    155: 
                    156: /*
                    157:  * Types.
                    158:  */
                    159: #define T_NONE         0       /* No type (yet)                */
                    160: #define T_CHAR         1       /* Char                         */
                    161: #define T_UCHAR        2       /* Unsigned char                */
                    162: #define T_SHORT        3       /* Short                        */
                    163: #define T_USHORT       4       /* Unsigned short               */
                    164: #define T_INT          5       /* Int                          */
                    165: #define T_UINT         6       /* Unsigned int                 */
                    166: #define T_PTR          7       /* Pointer                      */
                    167: #define T_LONG         8       /* Long                         */
                    168: #define T_ULONG        9       /* Unsigned long                */
                    169: #define T_FLOAT        10      /* Float                        */
                    170: #define T_DOUBLE       11      /* Double                       */
                    171: #define        T_VOID          12      /* Void                         */
                    172: #define T_STRUCT       13      /* Struct                       */
                    173: #define T_FSTRUCT      14      /* Forward struct reference     */
                    174: #define T_UNION                15      /* Union                        */
                    175: #define T_FUNION       16      /* Forward union reference      */
                    176: #define T_ENUM         17      /* Enumeration                  */
                    177: #define T_FENUM                18      /* Forward enumeration reference        */
                    178: #define T_LDOUBLE      19      /* Long double, should follow double NB */
                    179: 
                    180: #define        sgn2uns(t)      ((t)+1) /* signed to unsigned           */
                    181: #define        uns2sgn(t)      ((t)-1) /* unsigned to signed           */
                    182: 
                    183: /*
                    184:  * Storage classes.
                    185:  */
                    186: #define C_NONE 0               /* No class                     */
                    187: #define C_AUTO 1               /* Auto                         */
                    188: #define C_SIN  2               /* Static internal              */
                    189: #define C_SEX  3               /* Static external              */
                    190: #define C_GDEF 4               /* Global def.                  */
                    191: #define C_GREF 5               /* Global ref.                  */
                    192: #define C_ARG  6               /* Argument                     */
                    193: #define C_CXT  7               /* Contextual                   */
                    194: #define C_LAB  8               /* Label                        */
                    195: #define C_FREF 9               /* Forward ref. label           */
                    196: #define C_KEY  10              /* Keyword                      */
                    197: #define C_TYPE 11              /* Typedef name                 */
                    198: #define C_REG  12              /* Register                     */
                    199: #define C_STAG 13              /* Structure tag                */
                    200: #define C_UTAG 14              /* Union tag                    */
                    201: #define C_ETAG 15              /* Enumeration tag              */
                    202: #define C_MOS  16              /* Member of structure          */
                    203: #define C_MOU  17              /* Member of union              */
                    204: #define C_MOE  18              /* Member of enumeration        */
                    205: #define C_PAUTO 19             /* Parametric auto              */
                    206: #define C_PREG 20              /* Parametric register          */
                    207: 
                    208: /*
                    209:  * Dimensions.
                    210:  * A list of these begins at the "s_dp" of a symbol
                    211:  * and at the "e_dp" of an expression tree node.
                    212:  */
                    213: typedef        struct  dim {
                    214:        struct  dim *d_dp;              /* Link                 */
                    215:        short   d_type;                 /* Type                 */
                    216:        sizeof_t d_bound;               /* Array bound          */
                    217: }      DIM;
                    218: 
                    219: #define D_PTR  0                       /* Pointer              */
                    220: #define D_FUNC 1                       /* Function returning   */
                    221: #define D_ARRAY 2                      /* Array                */
                    222: #define D_MOSAR 3                      /* MOS array            */
                    223: #define D_CONST        4                       /* const modifier       */
                    224: #define D_VOLATILE 5                   /* volatile modifier    */
                    225: 
                    226: /*
                    227:  * An INFO structure keeps track of structure elements,
                    228:  * union elements and enumeration constants.
                    229:  * It is pointed to by the INFO links of symbols and expressions.
                    230:  * The reference count only considers symbol usages.
                    231:  */
                    232: typedef        struct  {
                    233:        short   i_refc;                 /* Reference count      */
                    234:        short   i_nsp;                  /* Number of symbols    */
                    235:        union {
                    236:                sizeof_t i_data0;
                    237:                int      i_data1;
                    238:        } i_data;
                    239:        struct  sym *i_sp[];            /* The symbols          */
                    240: }      INFO;
                    241: 
                    242: #define        i_size  i_data.i_data0          /* Structure or union size      */
                    243: #define        i_type  i_data.i_data1          /* Base type of an enumeration  */
                    244: 
                    245: /*
                    246:  * Symbol.
                    247:  * Symbols are kept in a hash table.
                    248:  * Each bucket has the keywords on the front.
                    249:  */
                    250: 
                    251: typedef struct symbol SYM;
                    252: typedef struct token TOK;
                    253: struct symbol {
                    254:        SYM     *s_sp;                  /* Link                 */
                    255:        int     s_slevel;               /* Symbol table level   */
                    256:        ival_t  s_value;                /* Value                */
                    257:        int     s_dline;                /* Decl. line number    */
                    258:        char    s_level;                /* Block level          */
                    259:        char    s_flag;                 /* Flag                 */
                    260:        char    s_width;                /* Field width          */
                    261:        char    s_offset;               /* Bit offset           */
                    262:        char    s_seg;                  /* Segment              */
                    263:        char    s_class;                /* Class                */
                    264:        char    s_type;                 /* Type                 */
                    265:        DIM     *s_dp;                  /* Dimensions           */
                    266:        INFO    *s_ip;                  /* Info                 */
                    267:        char    *s_id;                  /* Name string          */
                    268: };
                    269: 
                    270: /* Keyword symbols occupy less space */
                    271: typedef struct {
                    272:        SYM     *s_sp;
                    273:        int     s_slevel;
                    274:        ival_t  s_value;
                    275: } KEYSYM;
                    276: 
                    277: /* Preprocessor symbols take a little more space */
                    278: typedef struct {
                    279:        SYM     *s_sp;
                    280:        int     s_slevel;
                    281:        ival_t  s_value;
                    282:        int     s_narg;
                    283: #if ANSI_STUPID
                    284:        TOK     *s_targs;
                    285: #endif
                    286:        char    s_body[];
                    287: } CPPSYM;
                    288: 
                    289: /* C symbol s_flag values */
                    290: #define        S_RONLY 01                      /* Readonly                     */
                    291: #define S_ALIEN        02                      /* Other language               */
                    292: #define S_USED 04                      /* Used                         */
                    293: #define        S_TAG   010                     /* Tag present                  */
                    294: #define        S_INIT  020                     /* Initialized                  */
                    295: #define S_SYMB 040                     /* Written to debug table       */
                    296: 
                    297: /* Disjunct symbol table levels */
                    298: #define SL_CPP -2                      /* Cpp tokens                   */
                    299: #define SL_KEY -1                      /* C keywords and ops           */
                    300: #define SL_VAR 0                       /* Normal symbols               */
                    301: #define SL_LAB 1                       /* Labels                       */
                    302: #define SL_TAG 2                       /* Tags                         */
                    303: #define SL_MOS 3                       /* Members of structures, and up */
                    304: 
                    305: /* Lexical scope levels */
                    306: #define LL_EXT 0                       /* Externals                    */
                    307: #define LL_ARG 1                       /* Parameters                   */
                    308: #define LL_AUTO        2                       /* Automatics, and up           */
                    309: 
                    310: /*
                    311:  * All tokens are hashed.
                    312:  * Each unique token is the head of a list of symbol buckets.
                    313:  */
                    314: struct token {
                    315:        TOK     *t_tp;
                    316:        SYM     *t_sym;
                    317:        char    t_id[];
                    318: };
                    319: 
                    320: /*
                    321:  * Macro expansion stack.
                    322:  */
                    323: typedef        struct {
                    324:        char    ds_type;                /* Type of stack item           */
                    325:        char    ds_char;                /* Ungotten char or temp        */
                    326:        char    *ds_ptr;                /* Pointer to string            */
                    327: } DSTACK;
                    328: 
                    329: #define DS_FILE                0       /* Dstack is at source file level       */
                    330: #define DS_UNGET       1       /* Dstack is ungotten character         */
                    331: #define DS_FUNGET      2       /* Dstack is ungotten file character    */
                    332: #define DS_STRNG       3       /* Dstack is normal string to read      */
                    333: #define DS_PARAM       4       /* Dstack is parameter to be expanded   */
                    334: #define DS_SHARP       5       /* Dstack is parameter to stringize     */
                    335: #define DS_SHARP2      6       /* Dstack is parameter to glue          */
                    336: #define DS_DPUTP       7       /* Dstack is pushed dputp pointer       */
                    337: #define DS_NAME                8       /* Dstack is pushed name of macro       */
                    338: #define DS_IEOF                9       /* Dstack is internal end of file       */
                    339: #define DS_UFILE       10      /* Dstack is __FILE__ to expand         */
                    340: 
                    341: /*
                    342:  * Macro hide set structure.
                    343:  */
                    344: typedef struct hideset HIDESET;
                    345: typedef struct hidemem HIDEMEM;
                    346: struct hideset {
                    347:        HIDESET *h_next_set;
                    348:        HIDEMEM *h_this_set;
                    349: };
                    350: struct hidemem {
                    351:        HIDEMEM *h_next_mem;
                    352:        TOK     *h_this_mem;
                    353: };
                    354: 
                    355: /*
                    356:  * Conditional stack.
                    357:  * One of these is allocated when a #if* line
                    358:  * is encountered to store the state of the
                    359:  * conditional block until the matching #endif
                    360:  * is found.
                    361:  */
                    362: typedef struct {
                    363:        int             c_op;           /* Last operator seen in block  */
                    364:        int             c_state;        /* Has any block been true      */
                    365: } CSTACK;
                    366: 
                    367: /*
                    368:  * Include pushdown stack entry.
                    369:  * One of these is allocated when a #include line
                    370:  * is encountered to hold the file name, the line number
                    371:  * and the FILE pointer of the old source file.
                    372:  */
                    373: typedef        struct {
                    374:        FILE            *i_fp;          /* Saved FILE pointer           */
                    375:        int             i_line;         /* Saved line                   */
                    376:        TOK             *i_file;        /* Saved file name              */
                    377:        CSTACK          *i_cstackp;     /* Saved conditional stack state */
                    378: } ISTACK;
                    379: 
                    380: /*
                    381:  * These structures keep track of the labels and constants for switches.
                    382:  * It is used by code in the statement reader "stat.c".
                    383:  */
                    384: typedef struct {
                    385:        int     sc_lab;                 /* Label number                 */
                    386:        ival_t  sc_val;                 /* Value                        */
                    387: } SCASE;
                    388: 
                    389: typedef struct {
                    390:        int     sb_ncase;               /* # of cases                   */
                    391:        int     sb_dlab;                /* Default label                */
                    392:        SCASE   sb_case[];              /* Adjustable array             */
                    393: }      SBLOCK;
                    394: 
                    395: /*
                    396:  * Tree nodes.
                    397:  * All tree nodes are the same size.
                    398:  * A node of any type may be changed into a node of any other type.
                    399:  * The madness with the defines and the dots is just niceness
                    400:  * in the wake of wishing to compile under both Bell and UCB structure rules.
                    401:  */
                    402: typedef        struct tree TREE;
                    403: struct tree
                    404: {
                    405:        short   t_op;                   /* Opcode                       */
                    406:        short   t_type;                 /* Internal type (T_)           */
                    407:        DIM     *t_dp;                  /* DIM list                     */
                    408:        INFO    *t_ip;                  /* INFO if aggregate            */
                    409:        union   {
                    410:                struct  {
                    411:                        TREE    *t_xlp;
                    412:                        union   {
                    413:                                TREE    *t_xrp;
                    414:                                struct  {
                    415:                                        char    t_xfw;
                    416:                                        char    t_xfb;
                    417:                                }       t_1;
                    418:                        }       t_2;
                    419:                }       t_3;
                    420:                ival_t  t_xival;
                    421:                lval_t  t_xlval;
                    422:                dval_t  t_xdval;
                    423:                sizeof_t t_xzval;
                    424:                struct  {
                    425:                        sizeof_t t_xoffs;
                    426:                        int     t_xseg;
                    427:                        union   {
                    428:                                int     t_xlab;
                    429:                                SYM     *t_xsp;
                    430:                        }       t_4;
                    431:                }       t_5;
                    432:                short   t_xreg;
                    433:        }       t_6;
                    434: };
                    435: 
                    436: #define        t_lp    t_6.t_3.t_xlp           /* Left link                    */
                    437: #define        t_rp    t_6.t_3.t_2.t_xrp       /* Right link                   */
                    438: #define        t_width t_6.t_3.t_2.t_1.t_xfw   /* Field width, bits            */
                    439: #define        t_base  t_6.t_3.t_2.t_1.t_xfb   /* Field base bit               */
                    440: #define        t_ival  t_6.t_xival             /* ICON value                   */
                    441: #define        t_lval  t_6.t_xlval             /* LCON value                   */
                    442: #define        t_dval  t_6.t_xdval             /* DCON value                   */
                    443: #define t_zval t_6.t_xzval             /* ZCON value                   */
                    444: #define        t_reg   t_6.t_xreg              /* Register code                */
                    445: #define t_offs t_6.t_5.t_xoffs         /* Label offset                 */
                    446: #define        t_seg   t_6.t_5.t_xseg          /* Segment                      */
                    447: #define        t_label t_6.t_5.t_4.t_xlab      /* Label #                      */
                    448: #define        t_sp    t_6.t_5.t_4.t_xsp       /* Global symbol link           */
                    449: 
                    450: /*
                    451:  * Opdope flag bits.
                    452:  */
                    453: #define PRIO   0x001F                  /* Priority                     */
                    454: #define NSTL   0x0020                  /* No structures on left        */
                    455: #define RAS    0x0040                  /* Right associative            */
                    456: #define RLVL   0x0080                  /* Require lvalue on left       */
                    457: #define NFLT   0x0100                  /* No floats                    */
                    458: #define NPTR   0x0200                  /* No pointers on right         */
                    459: #define NPTL   0x0400                  /* No pointers on left          */
                    460: #define RTOR   0x0800                  /* Require truth value on right */
                    461: #define RTOL   0x1000                  /* Require truth value on left  */
                    462: #define ASGN   0x2000                  /* Assignment op                */
                    463: #define NSTR   0x4000                  /* No structures on right       */
                    464: #define        FOLD    0x8000                  /* Constant folding allowed     */
                    465: 
                    466: /*
                    467:  * Conversion dope bits.
                    468:  */
                    469: #define GOAL   077                     /* Goal type                    */
                    470: #define CVRA   0100                    /* Convert right on assignment  */
                    471: #define CVR    0200                    /* Convert right                */
                    472: #define CVL    0400                    /* Convert left                 */
                    473: #define GTL    01000                   /* Goal type from left          */
                    474: #define GTR    02000                   /* Goal type from right         */
                    475: #define UREL   04000                   /* Unsigned relation check needed */
                    476: #define CARA   010000                  /* Cast right on assignment     */
                    477: 
                    478: /* Macros. */
                    479: #define        ideq(tp)        (strcmp((tp)->t_id, id) == 0)
                    480: 
                    481: /*
                    482:  * cpp variables.
                    483:  */
                    484: extern char    dbuf[NDBUF], *dputp, *dpshp;
                    485: extern DSTACK  dstack[], *dstackp, *dlistp;
                    486: extern ISTACK  istack[], *istackp;
                    487: extern CSTACK  cstack[], *cstackp;
                    488: extern HIDESET *hidefree, *hidesets;
                    489: extern int     cstate;
                    490: extern int     lastchar;
                    491: extern int     instring;
                    492: extern int     notskip;
                    493: extern int     ndirs;
                    494: extern char    *incdirs[];
                    495: extern char    deftrue[];
                    496: extern char    deffalse[];
                    497: extern long    curtime;
                    498: 
                    499: /*
                    500:  * Functions.
                    501:  */
                    502: extern TOK     *newtoken();
                    503: extern SYM     *newsym();
                    504: extern CPPSYM  *newcpp();
                    505: extern DIM     *dupldim();
                    506: extern DIM     *tackdim();
                    507: extern INFO    *newinfo();
                    508: extern char    *new();
                    509: extern TREE    *expr();
                    510: extern char    *talloc();
                    511: extern TREE    *pexpr();
                    512: extern DIM     *tdalloc();
                    513: extern TREE    *build();
                    514: extern TREE    *charray();
                    515: extern TREE    *chfun();
                    516: extern TREE    *bicon();
                    517: extern TREE    *bzcon();
                    518: extern TREE    *bid();
                    519: extern TREE    *bcvt();
                    520: extern TREE    *bconvert();
                    521: extern TREE    *term();
                    522: extern TREE    *tree();
                    523: extern TREE    *bstring();
                    524: extern TREE    *fold0();
                    525: extern SYM     *deflookup();
                    526: extern SYM     *reflookup();
                    527: extern SYM     *moslookup();
                    528: extern SYM     *fakedef();
                    529: extern SYM     *taglookup();
                    530: extern SYM     *fixlevel();
                    531: extern SYM     *declare();
                    532: extern long    fieldalign();
                    533: extern ival_t  iconexpr();
                    534: extern sizeof_t ssize();
                    535: extern sizeof_t tsize();
                    536: extern sizeof_t sdsize();
                    537: extern sizeof_t tidsize();
                    538: extern sizeof_t psize();
                    539: extern sizeof_t getbound();
                    540: extern TREE    *cast();        /* cast declarator reader       */
                    541: /* mch/bind.c */
                    542: extern TREE    *transform();
                    543: extern sizeof_t szcheck();
                    544: #if    FOLD_DOUBLES
                    545: extern double  dval_to_d();
                    546: extern void    d_to_dval();
                    547: #endif
                    548: 
                    549: /*
                    550:  * Variables.
                    551:  */
                    552: extern SYM     *cfsym;
                    553: extern int     cflab;
                    554: extern char    id[];
                    555: extern unsigned idhash;
                    556: extern unsigned idhide;
                    557: extern int     idsize;
                    558: extern TOK     *idp;
                    559: extern TOK     *hash0[];
                    560: extern int     llex;
                    561: extern int     lsym;
                    562: extern int     s;
                    563: extern ival_t  ival;
                    564: extern lval_t  lval;
                    565: extern dval_t  dval;
                    566: extern short   tval;
                    567: extern int     line;
                    568: extern char    file[];
                    569: extern char    basefile[];
                    570: extern TOK     *tfile;
                    571: extern unsigned char ct[];
                    572: extern int     nerr;
                    573: extern char    *passname;
                    574: extern int     nargs;
                    575: extern SYM     *args[];
                    576: extern int     incpp;
                    577: extern int     ininit;
                    578: extern int     incase;
                    579: extern short   opdope[];
                    580: extern short   cvdope[];
                    581: extern int     oldseg;
                    582: extern int     mnamef;
                    583: extern int     labgen;
                    584: extern int     cblab;
                    585: extern int     cclab;
                    586: extern SBLOCK  *sbp;
                    587: extern FILE    *ifp;
                    588: extern FILE    *ofp;           /* Output file                  */
                    589: 
                    590: #if OVERLAID
                    591: extern jmp_buf death;          /* Fatal errors                 */
                    592: #endif
                    593: /* mch/bind.c */
                    594: extern int     mysizes[];
                    595: extern char    mytypes[];
                    596: 
                    597: /* end of h/cc0.h */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.