schmidt@zola.ics.uci.edu (Doug Schmidt) (02/16/90)
The latest C++ version of GNU GPERF (a perfect hash function generator) is now available via anonymous ftp from ics.uci.edu (128.195.1.1) in the ~ftp/pub directory in the file gperf-2.3.tar.Z. Aside from miscellaneous bug fixes, the main change from previous versions is support for generating C++ code as well as the original C code. Below is a short description of GPERF, taken from the paper soon to appear in the upcoming USENIX C++ Conference in San Francisco. Doug ---------------------------------------- \begin{abstract} {\bf gperf} is a perfect hash function generator written in C++. It translates 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 - 1$, where $k \ge n$. If $k = n$ then $F$ is a {\em minimal} perfect hash function. {\bf gperf} generates a $k$ element static lookup table and either a pair of C functions or a C++ class. The generated code determines whether a given string $s$ occurs in $W$, using at most one probe into the lookup table. {\bf 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. This paper provides an overview of perfect hashing and discusses the impact of C++ on the overall program design and maintenance effort. It also describes the interface, features, and implementation strategies incorporated in {\bf gperf} and presents the results of an empirical comparison between {\bf gperf}-generated recognizers and several other popular reserved word lookup techniques. C++ source code for {\bf gperf} is available via anonymous ftp from {\bf ics.uci.edu} (128.195.1.1). {\bf gperf} is also distributed along with the GNU libg++ library. A highly portable, functionally equivalent K\&R C version of {\bf gperf} is also archived in comp.sources.unix, volume 20. \end{abstract} -- A monk asked Kegon, ``How does an enlightened | schmidt@ics.uci.edu (ARPA) one return to the ordinary world?'' Kegon replied, | office: (714) 856-4043 ``A broken mirror never reflects again; fallen flowers never go back to the old branches.''