Annotation of coherent/d/bin/cc/c/n0/cc0key.c, revision 1.1

1.1     ! root        1: /*
        !             2:  * C compiler.
        !             3:  * Symbol table initialization.
        !             4:  */
        !             5: #ifdef   vax
        !             6: #include "INC$LIB:cc0.h"
        !             7: #else
        !             8: #include "cc0.h"
        !             9: #endif
        !            10: 
        !            11: /*
        !            12:  * Initialized tokens.
        !            13:  * Each of these gets linked in place
        !            14:  * into the hash table.
        !            15:  */
        !            16: static TOK txfile={0,0}; static char cxfile[]="__FILE__";
        !            17: static TOK txuline={0,0}; static char cxuline[]="__LINE__";
        !            18: static TOK txdate={0,0}; static char cxdate[]="__DATE__";
        !            19: static TOK txtime={0,0}; static char cxtime[]="__TIME__";
        !            20: static TOK txstdc={0,0}; static char cxstdc[]="__STDC__";
        !            21: static TOK txudefined={0,0}; static char cxudefined[]="defined";
        !            22: static TOK txdefine={0,0}; static char cxdefine[]="#define";
        !            23: static TOK txinclude={0,0}; static char cxinclude[]="#include";
        !            24: static TOK txundef={0,0}; static char cxundef[]="#undef";
        !            25: static TOK txline={0,0}; static char cxline[]="#line";
        !            26: static TOK txassert={0,0}; static char cxassert[]="#assert";
        !            27: static TOK txerror={0,0}; static char cxerror[]="#error";
        !            28: static TOK txif={0,0}; static char cxif[]="#if";
        !            29: static TOK txifdef={0,0}; static char cxifdef[]="#ifdef";
        !            30: static TOK txifndef={0,0}; static char cxifndef[]="#ifndef";
        !            31: static TOK txelse={0,0}; static char cxelse[]="#else";
        !            32: static TOK txelif={0,0}; static char cxelif[]="#elif";
        !            33: static TOK txendif={0,0}; static char cxendif[]="#endif";
        !            34: static TOK tint={0,0}; static char cint[]="int";
        !            35: static TOK tchar={0,0}; static char cchar[]="char";
        !            36: static TOK tfloat={0,0}; static char cfloat[]="float";
        !            37: static TOK tdouble={0,0}; static char cdouble[]="double";
        !            38: static TOK tunsigned={0,0}; static char cunsigned[]="unsigned";
        !            39: static TOK tsigned={0,0}; static char csigned[]="signed";
        !            40: static TOK tregister={0,0}; static char cregister[]="register";
        !            41: static TOK tlong={0,0}; static char clong[]="long";
        !            42: static TOK tstruct={0,0}; static char cstruct[]="struct";
        !            43: static TOK tunion={0,0}; static char cunion[]="union";
        !            44: static TOK tenum={0,0}; static char cenum[]="enum";
        !            45: static TOK tauto={0,0}; static char cauto[]="auto";
        !            46: static TOK tvoid={0,0}; static char cvoid[]="void";
        !            47: static TOK tstatic={0,0}; static char cstatic[]="static";
        !            48: static TOK textern={0,0}; static char cextern[]="extern";
        !            49: static TOK tgoto={0,0}; static char cgoto[]="goto";
        !            50: static TOK treturn={0,0}; static char creturn[]="return";
        !            51: static TOK tif={0,0}; static char cif[]="if";
        !            52: static TOK twhile={0,0}; static char cwhile[]="while";
        !            53: static TOK tfor={0,0}; static char cfor[]="for";
        !            54: static TOK tdo={0,0}; static char cdo[]="do";
        !            55: static TOK telse={0,0}; static char celse[]="else";
        !            56: static TOK tswitch={0,0}; static char cswitch[]="switch";
        !            57: static TOK tcase={0,0}; static char ccase[]="case";
        !            58: static TOK tdefault={0,0}; static char cdefault[]="default";
        !            59: static TOK tbreak={0,0}; static char cbreak[]="break";
        !            60: static TOK tcontinue={0,0}; static char ccontinue[]="continue";
        !            61: static TOK ttypedef={0,0}; static char ctypedef[]="typedef";
        !            62: static TOK tsizeof={0,0}; static char csizeof[]="sizeof";
        !            63: static TOK tshort={0,0}; static char cshort[]="short";
        !            64: static TOK tconst={0,0}; static char cconst[]="const";
        !            65: static TOK tvolatile={0,0}; static char cvolatile[]="volatile";
        !            66: #ifdef READONLY
        !            67: static TOK treadonly={0,0}; static char creadonly[]="readonly";
        !            68: #endif
        !            69: #ifdef ALIEN
        !            70: static TOK talien={0,0}; static char calien[]="alien";
        !            71: #endif
        !            72: 
        !            73: /*
        !            74:  * Initialized symbols.
        !            75:  * Each of these gets linked in place
        !            76:  * into the symbol table,
        !            77:  * and the token each symbol specifies
        !            78:  * is entered into the token hash.
        !            79:  */
        !            80: static KEYSYM ktab[] = {
        !            81:        &txfile,        SL_CPP,         XUFILE,
        !            82:        &txuline,       SL_CPP,         XULINE,
        !            83:        &txdate,        SL_CPP,         XUDATE,
        !            84:        &txtime,        SL_CPP,         XUTIME,
        !            85:        &txstdc,        SL_CPP,         XUSTDC,
        !            86:        &txudefined,    SL_CPP,         XDEFINED,
        !            87:        &txdefine,      SL_CPP,         XDEFINE,
        !            88:        &txinclude,     SL_CPP,         XINCLUDE,
        !            89:        &txundef,       SL_CPP,         XUNDEF,
        !            90:        &txline,        SL_CPP,         XLINE,
        !            91:        &txassert,      SL_CPP,         XASSERT,
        !            92:        &txerror,       SL_CPP,         XERROR,
        !            93:        &txif,          SL_CPP,         XIF,
        !            94:        &txifdef,       SL_CPP,         XIFDEF,
        !            95:        &txifndef,      SL_CPP,         XIFNDEF,
        !            96:        &txelse,        SL_CPP,         XELSE,
        !            97:        &txelif,        SL_CPP,         XELIF,
        !            98:        &txendif,       SL_CPP,         XENDIF,
        !            99:        &tint,          SL_KEY,         INT,
        !           100:        &tchar,         SL_KEY,         CHAR,
        !           101:        &tfloat,        SL_KEY,         FLOAT,
        !           102:        &tdouble,       SL_KEY,         DOUBLE,
        !           103:        &tunsigned,     SL_KEY,         UNSIGNED,
        !           104:        &tsigned,       SL_KEY,         SIGNED,
        !           105:        &tregister,     SL_KEY,         REGISTER,
        !           106:        &tlong,         SL_KEY,         LONG,
        !           107:        &tstruct,       SL_KEY,         STRUCT,
        !           108:        &tunion,        SL_KEY,         UNION,
        !           109:        &tenum,         SL_KEY,         ENUM,
        !           110:        &tauto,         SL_KEY,         AUTO,
        !           111:        &tvoid,         SL_KEY,         VOID,
        !           112:        &tstatic,       SL_KEY,         STATIC,
        !           113:        &textern,       SL_KEY,         EXTERN,
        !           114:        &tgoto,         SL_KEY,         GOTO,
        !           115:        &treturn,       SL_KEY,         RETURN,
        !           116:        &tif,           SL_KEY,         IF,
        !           117:        &twhile,        SL_KEY,         WHILE,
        !           118:        &tfor,          SL_KEY,         FOR,
        !           119:        &tdo,           SL_KEY,         DO,
        !           120:        &telse,         SL_KEY,         ELSE,
        !           121:        &tswitch,       SL_KEY,         SWITCH,
        !           122:        &tcase,         SL_KEY,         CASE,
        !           123:        &tdefault,      SL_KEY,         DEFAULT,
        !           124:        &tbreak,        SL_KEY,         BREAK,
        !           125:        &tcontinue,     SL_KEY,         CONTINUE,
        !           126:        &ttypedef,      SL_KEY,         TYPEDEF,
        !           127:        &tsizeof,       SL_KEY,         SIZEOF,
        !           128:        &tshort,        SL_KEY,         SHORT,
        !           129:        &tconst,        SL_KEY,         CONST,
        !           130:        &tvolatile,     SL_KEY,         VOLATILE,
        !           131: #ifdef READONLY
        !           132:        &treadonly,     SL_KEY,         READONLY,
        !           133: #endif
        !           134: #ifdef ALIEN
        !           135:        &talien,        SL_KEY,         ALIEN,
        !           136: #endif
        !           137:        NULL
        !           138: };
        !           139: 
        !           140: /*
        !           141:  * Enter reserved words into the hash table.
        !           142:  */
        !           143: kinit()
        !           144: {
        !           145:        register char   *p;
        !           146:        register int    c;
        !           147:        register TOK    *tp;
        !           148:        register KEYSYM *sp;
        !           149: 
        !           150:        sp = ktab;
        !           151:        while ((tp = sp->s_sp) != NULL) {
        !           152: #ifdef VALIEN
        !           153:                if (sp->s_value==ALIEN && notvariant(VALIEN)) {
        !           154:                        ++sp;
        !           155:                        continue;
        !           156:                }
        !           157: #endif
        !           158: #ifdef VREADONLY
        !           159:                if (sp->s_value==READONLY && notvariant(VREADONLY)) {
        !           160:                        ++sp;
        !           161:                        continue;
        !           162:                }
        !           163: #endif
        !           164:                p = tp->t_id;
        !           165:                idhash = 0;
        !           166:                while (c = *p++)
        !           167:                        idhash += c;
        !           168:                idhash %= NHASH;
        !           169:                tp->t_tp = hash0[idhash];
        !           170:                hash0[idhash] = tp;
        !           171:                tp->t_sym = sp;
        !           172:                sp->s_sp = NULL;
        !           173:                ++sp;
        !           174:        }
        !           175: }
        !           176: 

unix.superglobalmegacorp.com

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