Annotation of researchv10no/cmd/ccom/common/xdefs.c, revision 1.1

1.1     ! root        1: /* @(#) xdefs.c: 1.2 1/12/84                           */
        !             2: 
        !             3: # include "mfile1.h"
        !             4: 
        !             5: /*     communication between lexical routines  */
        !             6: 
        !             7: int    lineno;         /* line number of the input file */
        !             8: 
        !             9: CONSZ lastcon;  /* the last constant read by the lexical analyzer */
        !            10: double dcon;   /* the last double read by the lexical analyzer */
        !            11: 
        !            12: 
        !            13: /*     symbol table maintainence */
        !            14: 
        !            15: struct symtab stab[SYMTSZ+1];  /* one extra slot for scratch */
        !            16: 
        !            17: int    curftn;  /* "current" function */
        !            18: int    strftn;  /* 1 if current function returns struct or union */
        !            19: int    ftnno;  /* "current" function number */
        !            20: int    curloc;           /* current location counter value */
        !            21: 
        !            22: int    curclass,         /* current storage class */
        !            23: instruct,      /* "in structure" flag */
        !            24: stwart,                /* for accessing names which are structure members or names */
        !            25: blevel,                /* block level: 0 for extern, 1 for ftn args, >=2 inside function */
        !            26: curdim;                /* current offset into the dimension table */
        !            27: 
        !            28: int    *dimtab;
        !            29: 
        !            30: int    paramstk[ PARAMSZ ];  /* holds symtab indices of function parameters */
        !            31: int    paramno;          /* the number of parameters */
        !            32: int    argsoff[ ARGSZ ];  /* the offsets for the arguments */
        !            33: int    argno;          /* the number of arguments */
        !            34: int    argstk[ ARGSZ ];        /* the symtab indices  of arguments */
        !            35: TWORD  argty[ ARGSZ ];         /* the types of the arguments */
        !            36: int    autooff,        /* the next unused automatic offset */
        !            37: argoff,        /* the next unused argument offset */
        !            38: strucoff;      /*  the next structure offset position */
        !            39: int    regvar;         /* the next free register for register variables */
        !            40: int    nextrvar;       /* the next allocated reg (set by cisreg) */
        !            41: OFFSZ  inoff;          /* offset of external element being initialized */
        !            42: int    brkflag = 0;    /* complain about break statements not reached */
        !            43: 
        !            44: struct sw swtab[SWITSZ];  /* table for cases within a switch */
        !            45: struct sw *swp;  /* pointer to next free entry in swtab */
        !            46: int swx;  /* index of beginning of cases for current switch */
        !            47: 
        !            48: /* debugging flag */
        !            49: int xdebug = 0;
        !            50: int idebug = 0;
        !            51: 
        !            52: int strflg;  /* if on, strings are to be treated as lists */
        !            53: 
        !            54: int reached;   /* true if statement can be reached... */
        !            55: 
        !            56: int idname;    /* tunnel to buildtree for name id's */
        !            57: 
        !            58: 
        !            59: int cflag = 0;  /* do we check for funny casts */
        !            60: int hflag = 0;  /* do we check for various heuristics which may indicate errors */
        !            61: int pflag = 0;  /* do we check for portable constructions */
        !            62: int gdebug;    /* for pi/sdb */
        !            63: 
        !            64: int brklab;
        !            65: int contlab;
        !            66: #ifdef M32B
        !            67:        int swregno;
        !            68: #endif
        !            69: int flostat;
        !            70: int retlab = NOLAB;
        !            71: int retstat;
        !            72: 
        !            73: /* save array for break, continue labels, and flostat */
        !            74: 
        !            75: int asavbc[BCSZ];
        !            76: int *psavbc = asavbc ;
        !            77: 
        !            78: /* stack of scope chains */
        !            79: 
        !            80: struct symtab *scopestack[MAXNEST];
        !            81: 
        !            82: static char *ccnames[] = 
        !            83: {
        !            84:         /* names of storage classes */
        !            85:        "SNULL",
        !            86:        "AUTO",
        !            87:        "EXTERN",
        !            88:        "STATIC",
        !            89:        "REGISTER",
        !            90:        "EXTDEF",
        !            91:        "LABEL",
        !            92:        "ULABEL",
        !            93:        "MOS",
        !            94:        "PARAM",
        !            95:        "STNAME",
        !            96:        "MOU",
        !            97:        "UNAME",
        !            98:        "TYPEDEF",
        !            99:        "FORTRAN",
        !           100:        "ENAME",
        !           101:        "MOE",
        !           102:        "UFORTRAN",
        !           103:        "USTATIC",
        !           104: };
        !           105: 
        !           106: char *
        !           107: scnames( c )
        !           108: register c; 
        !           109: {
        !           110:        /* return the name for storage class c */
        !           111:        static char buf[12];
        !           112:        if( c&FIELD )
        !           113:        {
        !           114:                sprintf( buf, "FIELD[%d]", c&FLDSIZ );
        !           115:                return( buf );
        !           116:        }
        !           117:        return( ccnames[c] );
        !           118: }
        !           119: 
        !           120: #ifdef M32B
        !           121:        /* for register allocation optimizations */
        !           122: 
        !           123:        int fordepth;   /* nest depth of 'for' loops */
        !           124:        int whdepth;    /* nest depth of 'while' and 'do-while' loops */
        !           125:        int brdepth;    /* nest depth of 'if', 'if-else', and 'switch' */
        !           126: #endif

unix.superglobalmegacorp.com

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