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