`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-1`. If `k`
= `n-1` 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 Java, GNU Pascal,
GNU Modula 3, and GNU indent. Complete C++ source code for `gperf`

is
available from `http://ftp.gnu.org/pub/gnu/gperf/`

.
A paper describing `gperf`

's design and implementation in greater
detail is available in the Second USENIX C++ Conference proceedings
or from `http://www.cs.wustl.edu/~schmidt/resume.html`

.