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
)