/* * Dragon book hash function * */ int Symbol_table :: hash(char *s) { //cout << "Symbol_table :: hashing for " << s ; char* ss = s; unsigned int h = 0, g; for (; *ss != '\0"; ss++) { h = (h << 4) + *ss; if (g = h & 0xf0000000) { h ^= g >> 24; h ^= g; } } return h % table_size; }