Listing 5

#include <stdlib.h>
#include <string.h>

typedef enum {FLOAT, INTEGER} Code;
typedef struct {
   char *s;
   Code code;
   } Entry;
Entry symtab[] = {
   {"float", FLOAT},
   {"integer", INTEGER}}

static int cmp(const void *ck, const void *ce)
   {  /* compare key to table element */
   return (strcmp((const char *)ck, ((Entry *)ce)->s));
   }

Entry *lookup(char *key)
   {  /* lookup key in table */
   return (bsearch(key, symtab,
      sizeof symtab / sizeof symtab[0],
      sizeof symtab[0], &cmp));
   }
/* End of File */