Как я могу определить, какую хэш-функцию мне следует использовать?

Я недавно изучаю компиляторы и хочу реализовать лексер.

Когда я разрабатывал таблицу символов лексера, я думал о том, чтобы преобразовать хеш-значение идентификатора в индекс таблицы символов.

Однако я был смущен тем, какую хеш-функцию мне следует использовать, может ли кто-нибудь дать мне совет?

Я хочу реализовать лексер на C ++ и сказать, что идентификатор состоит из буквы, числа и подчеркивания и начинается только с буквы или подчеркивания.

Заранее спасибо!


person Jiahao Cai    schedule 06.04.2017    source источник
comment
если это для лексера, вы можете взглянуть на инструмент gperf (gnu.org/software/ gperf), он генерирует код, представляющий идеальную хеш-функцию (нулевые коллизии) именно для этой цели.   -  person Richard Hodges    schedule 06.04.2017
comment
Большое спасибо! @RichardHodges   -  person Jiahao Cai    schedule 06.04.2017