home *** CD-ROM | disk | FTP | other *** search
/ GEMini Atari / GEMini_Atari_CD-ROM_Walnut_Creek_December_1993.iso / zip / gnu / gperf.lzh / GPERF / EXPOUT.4 < prev    next >
Text File  |  1993-07-30  |  5KB  |  141 lines

  1. /* starting time is 23:41:14 */
  2. /* C code produced by gperf version 2.5 (GNU C++ version) */
  3. /* Command-line: ../gperf -D -p -t  */
  4. /* Command-line: gperf -p -j1 -i 1 -g -o -t -N is_reserved_word -k1,3,$ c-parse.gperf  */ 
  5. struct resword { char *name; short token; enum rid rid; };
  6.  
  7. #define TOTAL_KEYWORDS 51
  8. #define MIN_WORD_LENGTH 2
  9. #define MAX_WORD_LENGTH 13
  10. #define MIN_HASH_VALUE 4
  11. #define MAX_HASH_VALUE 82
  12. /* maximum key range = 79, duplicates = 2 */
  13.  
  14. static unsigned int
  15. hash (str, len)
  16.      register char *str;
  17.      register int unsigned len;
  18. {
  19.   static unsigned char asso_values[] =
  20.     {
  21.      83, 83, 83, 83, 83, 83, 83, 83, 83, 83,
  22.      83, 83, 83, 83, 83, 83, 83, 83, 83, 83,
  23.      83, 83, 83, 83, 83, 83, 83, 83, 83, 83,
  24.      83, 83, 83, 83, 83, 83, 83, 83, 83, 83,
  25.      83, 83, 83, 83, 83, 83, 83, 83, 83, 83,
  26.      83, 83, 83, 83, 83, 83, 83, 83, 83, 83,
  27.      83, 83, 83, 83, 83, 83, 83, 83, 83, 83,
  28.      83, 83, 83, 83, 83, 83, 83, 83, 83, 83,
  29.      83, 83, 83, 83, 83, 83, 83, 83, 83, 83,
  30.      83, 83, 83, 83, 83,  0, 83, 40, 20, 50,
  31.      25, 10, 30,  0,  0, 50, 83,  0, 15,  0,
  32.      35,  0, 83, 83, 20,  0, 10, 40,  5, 15,
  33.      83, 83, 83, 83, 83, 83, 83, 83,
  34.     };
  35.   return len + asso_values[str[len - 1]] + asso_values[str[0]];
  36. }
  37.  
  38. struct resword *
  39. in_word_set (str, len)
  40.      register char *str;
  41.      register unsigned int len;
  42. {
  43.   static struct resword wordlist[] =
  44.     {
  45.       {"",}, {"",}, {"",}, {"",}, 
  46.       {"goto",  GOTO, NORID},
  47.       {"__asm",  ASM, NORID},
  48.       {"switch",  SWITCH, NORID},
  49.       {"__asm__",  ASM, NORID},
  50.       {"__const__",  TYPE_QUAL, RID_CONST},
  51.       {"__inline__",  SCSPEC, RID_INLINE},
  52.       {"__typeof__",  TYPEOF, NORID},
  53.       {"__signed__",  TYPESPEC, RID_SIGNED},
  54.       {"__alignof__",  ALIGNOF, NORID},
  55.       {"__volatile__",  TYPE_QUAL, RID_VOLATILE},
  56.       {"__attribute__",  ATTRIBUTE, NORID},
  57.       {"enum",  ENUM, NORID},
  58.       {"short",  TYPESPEC, RID_SHORT},
  59.       {"struct",  STRUCT, NORID},
  60.       {"__const",  TYPE_QUAL, RID_CONST},
  61.       {"__inline",  SCSPEC, RID_INLINE},
  62.       {"long",  TYPESPEC, RID_LONG},
  63.       {"__volatile",  TYPE_QUAL, RID_VOLATILE},
  64.       {"__attribute",  ATTRIBUTE, NORID},
  65.       {"volatile",  TYPE_QUAL, RID_VOLATILE},
  66.       {"else",  ELSE, NORID},
  67.       {"break",  BREAK, NORID},
  68.       {"do",  DO, NORID},
  69.       {"while",  WHILE, NORID},
  70.       {"signed",  TYPESPEC, RID_SIGNED},
  71.       {"__signed",  TYPESPEC, RID_SIGNED},
  72.       {"void",  TYPESPEC, RID_VOID},
  73.       {"sizeof",  SIZEOF, NORID},
  74.       {"__typeof",  TYPEOF, NORID},
  75.       {"__alignof",  ALIGNOF, NORID},
  76.       {"double",  TYPESPEC, RID_DOUBLE},
  77.       {"default",  DEFAULT, NORID},
  78.       {"asm",  ASM, NORID},
  79.       {"auto",  SCSPEC, RID_AUTO},
  80.       {"float",  TYPESPEC, RID_FLOAT},
  81.       {"typeof",  TYPEOF, NORID},
  82.       {"typedef",  SCSPEC, RID_TYPEDEF},
  83.       {"register",  SCSPEC, RID_REGISTER},
  84.       {"extern",  SCSPEC, RID_EXTERN},
  85.       {"for",  FOR, NORID},
  86.       {"static",  SCSPEC, RID_STATIC},
  87.       {"return",  RETURN, NORID},
  88.       {"int",  TYPESPEC, RID_INT},
  89.       {"case",  CASE, NORID},
  90.       {"const",  TYPE_QUAL, RID_CONST},
  91.       {"inline",  SCSPEC, RID_INLINE},
  92.       {"continue",  CONTINUE, NORID},
  93.       {"unsigned",  TYPESPEC, RID_UNSIGNED},
  94.       {"char",  TYPESPEC, RID_CHAR},
  95.       {"union",  UNION, NORID},
  96.       {"if",  IF, NORID},
  97.     };
  98.  
  99.   static char lookup[] =
  100.     {
  101.         -1,  -1,  -1,  -1,   4,   5,   6,   7,  -1,   8, 100,  12,  13,  14,
  102.         15,  16,  17,  18,  19,  20,  21,  22,  -1,  23,  24,  25,  -1,  26,
  103.         -9,  -3,  27,  28,  -1,  29,  30,  -1,  31,  -1,  32,  33,  -1,  34,
  104.         35,  36,  37,  38,  39,  40,  41,  -1,  -1,  42,  -1,  43,  -1,  -1,
  105.         44,  -1,  -1,  -1,  -1,  45,  -1,  46,  47,  48,  49,  -1,  50,  -1,
  106.         -1,  -1,  -1,  51,  52,  -1,  -1,  -1,  -1,  -1,  53,  -1,  54,
  107.     };
  108.  
  109.   if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
  110.     {
  111.       register int key = hash (str, len);
  112.  
  113.       if (key <= MAX_HASH_VALUE && key >= 0)
  114.         {
  115.           register int index = lookup[key];
  116.  
  117.           if (index >= 0 && index < MAX_HASH_VALUE)
  118.             {
  119.               register char *s = wordlist[index].name;
  120.  
  121.               if (*s == *str && !strcmp (str + 1, s + 1))
  122.                 return &wordlist[index];
  123.             }
  124.           else if (index < 0 && index >= -MAX_HASH_VALUE)
  125.             return 0;
  126.           else
  127.             {
  128.               register int offset = key + index + (index > 0 ? -MAX_HASH_VALUE : MAX_HASH_VALUE);
  129.               register struct resword *base = &wordlist[-lookup[offset]];
  130.               register struct resword *ptr = base + -lookup[offset + 1];
  131.  
  132.               while (--ptr >= base)
  133.                 if (*str == *ptr->name && !strcmp (str + 1, ptr->name + 1))
  134.                   return ptr;
  135.             }
  136.         }
  137.     }
  138.   return 0;
  139. }
  140. /* ending time is 23:41:14 */
  141.