home *** CD-ROM | disk | FTP | other *** search
/ minnie.tuhs.org / unixen.tar / unixen / PDP-11 / Trees / V7 / usr / src / cmd / mip / xdefs.c < prev   
Encoding:
C/C++ Source or Header  |  1979-01-10  |  2.5 KB  |  100 lines

  1. # include "mfile1"
  2.  
  3. /*    communication between lexical routines    */
  4.  
  5. char    ftitle[100] = "";       /* title of the file */
  6. int    lineno;        /* line number of the input file */
  7.  
  8. CONSZ lastcon;  /* the last constant read by the lexical analyzer */
  9. double dcon;   /* the last double read by the lexical analyzer */
  10.  
  11.  
  12. /*    symbol table maintainence */
  13.  
  14. struct symtab stab[SYMTSZ+1];  /* one extra slot for scratch */
  15.  
  16. int    curftn;  /* "current" function */
  17. int    ftnno;  /* "current" function number */
  18.  
  19. int    curclass,      /* current storage class */
  20.     instruct,    /* "in structure" flag */
  21.     stwart,        /* for accessing names which are structure members or names */
  22.     blevel,        /* block level: 0 for extern, 1 for ftn args, >=2 inside function */
  23.     curdim;        /* current offset into the dimension table */
  24.     
  25. int    dimtab[ DIMTABSZ ];
  26.  
  27. int    paramstk[ PARAMSZ ];  /* used in the definition of function parameters */
  28. int    paramno;      /* the number of parameters */
  29. int    autooff,    /* the next unused automatic offset */
  30.     argoff,    /* the next unused argument offset */
  31.     strucoff;    /*  the next structure offset position */
  32. int    regvar;        /* the next free register for register variables */
  33. int    minrvar;    /* the smallest that regvar gets witing a function */
  34. OFFSZ    inoff;        /* offset of external element being initialized */
  35. int    brkflag = 0;    /* complain about break statements not reached */
  36.  
  37. struct sw swtab[SWITSZ];  /* table for cases within a switch */
  38. struct sw *swp;  /* pointer to next free entry in swtab */
  39. int swx;  /* index of beginning of cases for current switch */
  40.  
  41. /* debugging flag */
  42. int xdebug = 0;
  43.  
  44. int strflg;  /* if on, strings are to be treated as lists */
  45.  
  46. int reached;    /* true if statement can be reached... */
  47.  
  48. int idname;    /* tunnel to buildtree for name id's */
  49.  
  50.  
  51. NODE node[TREESZ];
  52.  
  53. int cflag = 0;  /* do we check for funny casts */
  54. int hflag = 0;  /* do we check for various heuristics which may indicate errors */
  55. int pflag = 0;  /* do we check for portable constructions */
  56.  
  57. int brklab;
  58. int contlab;
  59. int flostat;
  60. int retlab = NOLAB;
  61. int retstat;
  62.  
  63. /* save array for break, continue labels, and flostat */
  64.  
  65. int asavbc[BCSZ];
  66. int *psavbc = asavbc ;
  67.  
  68. static char *
  69. ccnames[] = { /* names of storage classes */
  70.     "SNULL",
  71.     "AUTO",
  72.     "EXTERN",
  73.     "STATIC",
  74.     "REGISTER",
  75.     "EXTDEF",
  76.     "LABEL",
  77.     "ULABEL",
  78.     "MOS",
  79.     "PARAM",
  80.     "STNAME",
  81.     "MOU",
  82.     "UNAME",
  83.     "TYPEDEF",
  84.     "FORTRAN",
  85.     "ENAME",
  86.     "MOE",
  87.     "UFORTRAN",
  88.     "USTATIC",
  89.     };
  90.  
  91. char * scnames( c ) register c; {
  92.     /* return the name for storage class c */
  93.     static char buf[12];
  94.     if( c&FIELD ){
  95.         sprintf( buf, "FIELD[%d]", c&FLDSIZ );
  96.         return( buf );
  97.         }
  98.     return( ccnames[c] );
  99.     }
  100.