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

  1. /* starting time is 23:41:15 */
  2. /* C code produced by gperf version 2.5 (GNU C++ version) */
  3. /* Command-line: ../gperf -g -o -j1 -t -p -N is_reserved_word gpc.gpf  */
  4. /* ISO Pascal 7185 reserved words.
  5.  *
  6.  * For GNU Pascal compiler (GPC) by jtv@hut.fi
  7.  *
  8.  * run this through the Doug Schmidt's gperf program
  9.  * with command
  10.  * gperf  -g -o -j1 -t -p -N is_reserved_word
  11.  *
  12.  */
  13. struct resword { char *name; short token; short iclass;};
  14.  
  15. #define TOTAL_KEYWORDS 35
  16. #define MIN_WORD_LENGTH 2
  17. #define MAX_WORD_LENGTH 9
  18. #define MIN_HASH_VALUE 2
  19. #define MAX_HASH_VALUE 43
  20. /* maximum key range = 42, duplicates = 0 */
  21.  
  22. #ifdef __GNUC__
  23. inline
  24. #endif
  25. static unsigned int
  26. hash (str, len)
  27.      register char *str;
  28.      register int unsigned len;
  29. {
  30.   static unsigned char asso_values[] =
  31.     {
  32.      44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
  33.      44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
  34.      44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
  35.      44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
  36.      44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
  37.      44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
  38.      44, 44, 44, 44, 44, 18, 29, 14,  6,  7,
  39.      10, 20, 44, 28, 44, 44, 28, 19, 22, 15,
  40.       0, 44,  9, 23,  0, 23, 26,  2, 44, 44,
  41.      44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
  42.       0,  0, 13, 44, 30, 44, 44, 44,  0, 25,
  43.       1,  0, 44, 44,  0, 44,  1, 44, 25, 44,
  44.      44,  0, 44, 44, 44, 44, 44, 44,
  45.     };
  46.   return len + asso_values[str[len - 1]] + asso_values[str[0]];
  47. }
  48.  
  49. #ifdef __GNUC__
  50. inline
  51. #endif
  52. struct resword *
  53. is_reserved_word (str, len)
  54.      register char *str;
  55.      register unsigned int len;
  56. {
  57.   static struct resword wordlist[] =
  58.     {
  59.       {"",}, {"",}, 
  60.       {"To",  TO, PASCAL_ISO},
  61.       {"",}, 
  62.       {"Type",  TYPE, PASCAL_ISO},
  63.       {"Then",  THEN, PASCAL_ISO},
  64.       {"Packed",  PACKED, PASCAL_ISO},
  65.       {"While",   WHILE,  PASCAL_ISO},
  66.       {"Do",  DO, PASCAL_ISO},
  67.       {"Procedure",  PROCEDURE, PASCAL_ISO},
  68.       {"End",   END,  PASCAL_ISO},
  69.       {"Else",  ELSE, PASCAL_ISO},
  70.       {"Downto",  DOWNTO, PASCAL_ISO},
  71.       {"For",   FOR,  PASCAL_ISO},
  72.       {"File",  FILE_,  PASCAL_ISO},
  73.       {"Record",  RECORD, PASCAL_ISO},
  74.       {"Repeat",  REPEAT, PASCAL_ISO},
  75.       {"Or",  OR, PASCAL_ISO},
  76.       {"Case",  CASE, PASCAL_ISO},
  77.       {"Function",  FUNCTION, PASCAL_ISO},
  78.       {"Const",   CONST,  PASCAL_ISO},
  79.       {"And",   AND,  PASCAL_ISO},
  80.       {"Mod",   MOD,  PASCAL_ISO},
  81.       {"Array",   ARRAY,  PASCAL_ISO},
  82.       {"Goto",  GOTO, PASCAL_ISO},
  83.       {"Nil",   NIL,  PASCAL_ISO},
  84.       {"Not",   NOT,  PASCAL_ISO},
  85.       {"Set",   SET,  PASCAL_ISO},
  86.       {"Until",   UNTIL,  PASCAL_ISO},
  87.       {"Var",   VAR,  PASCAL_ISO},
  88.       {"Of",  OF, PASCAL_ISO},
  89.       {"In",  IN, PASCAL_ISO},
  90.       {"Program", PROGRAM,PASCAL_ISO},
  91.       {"Label",   LABEL,  PASCAL_ISO},
  92.       {"Div",   DIV,  PASCAL_ISO},
  93.       {"Begin",   BEGIN_, PASCAL_ISO},
  94.       {"With",  WITH, PASCAL_ISO},
  95.       {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, 
  96.       {"If",  IF, PASCAL_ISO},
  97.     };
  98.  
  99.   if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
  100.     {
  101.       register int key = hash (str, len);
  102.  
  103.       if (key <= MAX_HASH_VALUE && key >= 0)
  104.         {
  105.           register char *s = wordlist[key].name;
  106.  
  107.           if (*s == *str && !strcmp (str + 1, s + 1))
  108.             return &wordlist[key];
  109.         }
  110.     }
  111.   return 0;
  112. }
  113. /* ending time is 23:41:15 */
  114.