gperf is a perfect hash function generator written in C++. It
transforms an n element user-specified keyword set W into
a perfect hash function F. F uniquely maps keywords in
W onto the range 0..k, where k >= n. If
k = n then F is a minimal perfect hash function.
gperf generates a 0..k element static lookup table and a
pair of C functions. These functions determine whether a given
character string s occurs in W, using at most one probe
into the lookup table.
gperf currently generates the reserved keyword recognizer for
lexical analyzers in several production and research compilers and
language processing tools, including GNU C, GNU C++, GNU Pascal, GNU
Modula 3, and GNU indent. Complete C++ source code for
available via anonymous ftp from
gperf was also distributed along with
the GNU libg++ library for several years. A highly portable,
functionally equivalent K&R C version of
gperf is archived in
comp.sources.unix, volume 20. Finally, a paper describing
gperf's design and implementation in greater detail is available
in the Second USENIX C++ Conference proceedings.