/* C code produced by gperf version 2.1 (K&R C version) */
/* Command-line: gperf -k1,4,$ -N ada_rsvd ada.prf  */



#define MIN_WORD_LENGTH 2
#define MAX_WORD_LENGTH 9
#define MIN_HASH_VALUE 3
#define MAX_HASH_VALUE 187
/*
   63 keywords
  185 is the maximum key range
*/

static int
hash (str, len)
     register char *str;
     register unsigned int  len;
{
  static unsigned char hash_table[] =
    {
     187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
     187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
     187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
     187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
     187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
     187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
     187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
     187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
     187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
     187, 187, 187, 187, 187, 187, 187,  30,  25,  25,
      32,   0,  15,  25,   0,  61, 187,  15,  60,  10,
      63,  60,   0, 187,   0,   5,  20,   0,   5,  10,
       5,  15, 187, 187, 187, 187, 187, 187,
    };
  register int hval = len;

  switch (hval)
    {
      default:
      case 4:
        hval += hash_table[str[3]];
      case 3:
      case 2:
      case 1:
        hval += hash_table[str[0]];
    }
  return hval + hash_table[str[len - 1]] ;
}

char *
ada_rsvd (str, len)
     register char *str;
     register unsigned int len;
{

  static char * wordlist[] =
    {
      "", "", "", 
      "use", 
      "else", 
      "", "", 
      "reverse", 
      "xor", 
      "", 
      "raise", 
      "", 
      "private", 
      "rem", 
      "with", 
      "", "", "", 
      "for", 
      "", 
      "entry", 
      "", 
      "package", 
      "", 
      "type", 
      "", "", "", "", 
      "case", 
      "range", 
      "select", 
      "subtype", 
      "", 
      "procedure", 
      "end", 
      "", "", 
      "abs", 
      "terminate", 
      "", 
      "access", 
      "renames", 
      "separate", 
      "exit", 
      "mod", 
      "", "", "", "", "", "", 
      "at", 
      "", 
      "task", 
      "abort", 
      "accept", 
      "generic", 
      "constant", 
      "body", 
      "", 
      "pragma", 
      "or", 
      "", 
      "loop", 
      "and", 
      "", "", 
      "is", 
      "return", 
      "", 
      "others", 
      "exception", 
      "", "", 
      "while", 
      "new", 
      "of", 
      "if", 
      "", 
      "array", 
      "elsif", 
      "delay", 
      "out", 
      "", "", 
      "not", 
      "delta", 
      "", "", "", "", "", 
      "all", 
      "do", 
      "", "", "", 
      "record", 
      "declare", 
      "", "", "", "", 
      "digits", 
      "", "", "", "", "", "", 
      "function", 
      "", "", "", "", "", "", "", "", "", 
      "", "", "", "", "", 
      "in", 
      "", "", "", "", "", "", "", "", "", 
      "", "", "", "", 
      "when", 
      "", "", "", "", "", "", "", "", 
      "goto", 
      "then", 
      "", "", "", 
      "begin", 
      "", "", "", "", "", 
      "limited", 
      "", "", "", "", "", "", "", "", "", 
      "", "", "", "", "", "", "", "", "", 
      "", "", "", "", "", "", "", "", 
      "null", 
    };

  if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
    {
      register int key = hash (str, len);

      if (key <= MAX_HASH_VALUE && key >= MIN_HASH_VALUE)
        {
          register char *s = wordlist[key];

          if (*s == *str && !strcmp (str + 1, s + 1))
            return s;
        }
    }
  return 0;
}


syntax highlighted by Code2HTML, v. 0.9.1