Xref: utzoo comp.lang.c++:6512 gnu.g++:663 Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!umich!yale!think!zaphod.mps.ohio-state.edu!usc!orion.oac.uci.edu!uci-ics!gateway From: schmidt@zola.ics.uci.edu (Doug Schmidt) Newsgroups: comp.lang.c++,gnu.g++ Subject: gperf 2.3 available Message-ID: <25DBAEBD.14073@paris.ics.uci.edu> Date: 16 Feb 90 07:41:50 GMT Reply-To: schmidt@zola.ics.uci.edu (Doug Schmidt) Followup-To: gnu.g++ Organization: University of California, Irvine - Dept of ICS Lines: 46 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.''