Annotation of 43BSD/contrib/icon/tran/sym.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Structures for symbol table entries.
                      3:  */
                      4: 
                      5: struct lentry {                        /* local table entry */
                      6:    struct lentry *l_blink;     /*   link for bucket chain */
                      7:    char *l_name;               /*   name of variable */
                      8:    int l_flag;                 /*   variable flags */
                      9:    };
                     10: 
                     11: struct gentry {                        /* global table entry */
                     12:    struct gentry *g_blink;     /*   link for bucket chain */
                     13:    char *g_name;               /*   name of variable */
                     14:    int g_flag;                 /*   variable flags */
                     15:    int g_nargs;                        /*   number of args (procedure) or */
                     16:    };                          /*     number of fields (record) */
                     17: 
                     18: struct centry {                        /* constant table entry */
                     19:    struct centry *c_blink;     /*   link for bucket chain */
                     20:    char *c_name;               /*   pointer to string */
                     21:    int c_length;               /*   length of string */
                     22:    int c_flag;                 /*   type of literal flag */
                     23:    };
                     24: 
                     25: struct ientry {                        /* identifier table entry */
                     26:    struct ientry *i_blink;     /*   link for bucket chain */
                     27:    char *i_name;               /*   pointer to string */
                     28:    int i_length;               /*   length of string */
                     29:    };
                     30: 
                     31: /*
                     32:  * Flag values.
                     33:  */
                     34: 
                     35: #define F_GLOBAL           01  /* variable declared global externally */
                     36: #define F_PROC             04  /* procedure */
                     37: #define F_RECORD          010  /* record */
                     38: #define F_DYNAMIC         020  /* variable declared local dynamic */
                     39: #define F_STATIC          040  /* variable declared local static */
                     40: #define F_BUILTIN        0100  /* identifier refers to built-in procedure */
                     41: #define F_IMPERROR       0400  /* procedure has default error */
                     42: #define F_ARGUMENT      01000  /* variable is a formal parameter */
                     43: #define F_INTLIT        02000  /* literal is an integer */
                     44: #define F_REALLIT       04000  /* literal is a real */
                     45: #define F_STRLIT       010000  /* literal is a string */
                     46: #define F_CSETLIT      020000  /* literal is a cset */
                     47: 
                     48: /*
                     49:  * Symbol table region pointers.
                     50:  */
                     51: 
                     52: extern struct lentry **lhash;  /* hash area for local table */
                     53: extern struct gentry **ghash;  /* hash area for global table */
                     54: extern struct centry **chash;  /* hash area for constant table */
                     55: extern struct ientry **ihash;  /* hash area for identifier table */
                     56: 
                     57: extern struct lentry *ltable;  /* local table */
                     58: extern struct gentry *gtable;  /* global table */
                     59: extern struct centry *ctable;  /* constant table */
                     60: extern struct ientry *itable;  /* identifier table */
                     61: 
                     62: extern struct lentry *lfree;   /* free pointer for local table */
                     63: extern struct gentry *gfree;   /* free pointer for global table */
                     64: extern struct centry *ctfree;  /* free pointer for constant table */
                     65: extern struct ientry *ifree;   /* free pointer for identifier table */
                     66: 
                     67: extern int lsize;              /* initial size of local table */
                     68: extern int gsize;              /* initial size of global table */
                     69: extern int csize;              /* initial size of constant table */
                     70: extern int isize;              /* initial size of identifier table */
                     71: extern int ihsize;             /* initial size of identifier hash table */
                     72: extern int lhsize;             /* initial size of local hash tables */
                     73: extern int ghsize;             /* initial size of global hash tables */
                     74: extern int chsize;             /* initial size of constant hash tables */
                     75: extern int lmask;              /* mask for local table hash */
                     76: extern int gmask;              /* mask for global table hash */
                     77: extern int cmask;              /* mask for constant table hash */
                     78: extern int imask;              /* mask for identifier table hash */
                     79: 
                     80: /*
                     81:  * Symbol table parameters.
                     82:  */
                     83: 
                     84: #define LSIZE    100           /* default size of local table */
                     85: #define GSIZE    100           /* default size of global table */
                     86: #define CSIZE    100           /* default size of constant table */
                     87: #define ISIZE    500           /* default size of identifier table */
                     88: #define LHSIZE   128           /* default size of local hash table */
                     89: #define GHSIZE   128           /* default size of global hash table */
                     90: #define CHSIZE   128           /* default size of constant hash table */
                     91: #define IHSIZE   128           /* default size of identifier hash table */
                     92: #ifdef PORT
                     93: #define TSIZE      x           /* default size of parse tree space */
                     94: #define SSIZE      x           /* default size of string space */
                     95: #endif PORT
                     96: #ifdef VAX
                     97: #define TSIZE  15000           /* default size of parse tree space */
                     98: #define SSIZE  15000           /* default size of string space */
                     99: #endif VAX
                    100: #ifdef PDP11
                    101: #define TSIZE   7500           /* default size of parse tree space */
                    102: #define SSIZE   5000           /* default size of string space */
                    103: #endif PDP11
                    104: 
                    105: /*
                    106:  * Structure for keyword table.
                    107:  */
                    108: 
                    109: struct keyent {
                    110:       char *keyname;
                    111:       int keyid;
                    112:       };
                    113: 
                    114: extern struct keyent keytab[]; /* keyword table */
                    115: 
                    116: /*
                    117:  * Hash functions for symbol tables.
                    118:  */
                    119: 
                    120: #define ghasher(x)     (((int)x)&gmask)        /* global symbol table */
                    121: #define lhasher(x)     (((int)x)&lmask)        /* local symbol table */
                    122: #define chasher(x)     (((int)x)&cmask)        /* constant symbol table */

unix.superglobalmegacorp.com

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