4 /* TABLE_SIZE is the number of entries in the symbol table. */
5 /* TABLE_SIZE must be a power of two. */
7 #define TABLE_SIZE 1024
10 bucket **symbol_table;
22 assert(name && *name);
26 k = (31*k + c) & (TABLE_SIZE - 1);
39 bp = (bucket *) MALLOC(sizeof(bucket));
40 if (bp == 0) no_space();
43 bp->name = MALLOC(strlen(name) + 1);
44 if (bp->name == 0) no_space();
46 bp->value = UNDEFINED;
52 if (bp->name == 0) no_space();
53 strcpy(bp->name, name);
63 register bucket *bp, **bpp;
65 bpp = symbol_table + hash(name);
70 if (strcmp(name, bp->name) == 0) return (bp);
75 *bpp = bp = make_bucket(name);
76 last_symbol->next = bp;
88 symbol_table = (bucket **) MALLOC(TABLE_SIZE*sizeof(bucket *));
89 if (symbol_table == 0) no_space();
90 for (i = 0; i < TABLE_SIZE; i++)
93 bp = make_bucket("error");
99 symbol_table[hash("error")] = bp;
112 register bucket *p, *q;
114 for (p = first_symbol; p; p = q)