1 | /* C code produced by gperf version 2.5 (GNU C++ version) */ |
---|
2 | /* Command-line: gperf -p -j1 -i 1 -g -o -t -G -N is_reserved_word -k1,3,$ c-parse.gperf */ |
---|
3 | struct resword { char *name; short token; enum rid rid; }; |
---|
4 | |
---|
5 | #define TOTAL_KEYWORDS 79 |
---|
6 | #define MIN_WORD_LENGTH 2 |
---|
7 | #define MAX_WORD_LENGTH 20 |
---|
8 | #define MIN_HASH_VALUE 10 |
---|
9 | #define MAX_HASH_VALUE 144 |
---|
10 | /* maximum key range = 135, duplicates = 0 */ |
---|
11 | |
---|
12 | #ifdef __GNUC__ |
---|
13 | __inline |
---|
14 | #endif |
---|
15 | static unsigned int |
---|
16 | hash (str, len) |
---|
17 | register char *str; |
---|
18 | register int unsigned len; |
---|
19 | { |
---|
20 | static unsigned char asso_values[] = |
---|
21 | { |
---|
22 | 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, |
---|
23 | 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, |
---|
24 | 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, |
---|
25 | 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, |
---|
26 | 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, |
---|
27 | 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, |
---|
28 | 145, 145, 145, 145, 25, 145, 145, 145, 145, 145, |
---|
29 | 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, |
---|
30 | 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, |
---|
31 | 145, 145, 145, 145, 145, 1, 145, 46, 8, 15, |
---|
32 | 61, 6, 36, 48, 3, 5, 145, 18, 63, 25, |
---|
33 | 29, 76, 1, 145, 13, 2, 1, 51, 37, 9, |
---|
34 | 9, 1, 3, 145, 145, 145, 145, 145, |
---|
35 | }; |
---|
36 | register int hval = len; |
---|
37 | |
---|
38 | switch (hval) |
---|
39 | { |
---|
40 | default: |
---|
41 | case 3: |
---|
42 | hval += asso_values[str[2]]; |
---|
43 | case 2: |
---|
44 | case 1: |
---|
45 | hval += asso_values[str[0]]; |
---|
46 | } |
---|
47 | return hval + asso_values[str[len - 1]]; |
---|
48 | } |
---|
49 | |
---|
50 | static struct resword wordlist[] = |
---|
51 | { |
---|
52 | {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, |
---|
53 | {"",}, |
---|
54 | {"int", TYPESPEC, RID_INT}, |
---|
55 | {"",}, {"",}, |
---|
56 | {"__typeof__", TYPEOF, NORID}, |
---|
57 | {"__signed__", TYPESPEC, RID_SIGNED}, |
---|
58 | {"__imag__", IMAGPART, NORID}, |
---|
59 | {"switch", SWITCH, NORID}, |
---|
60 | {"__inline__", SCSPEC, RID_INLINE}, |
---|
61 | {"else", ELSE, NORID}, |
---|
62 | {"__iterator__", SCSPEC, RID_ITERATOR}, |
---|
63 | {"__inline", SCSPEC, RID_INLINE}, |
---|
64 | {"__extension__", EXTENSION, NORID}, |
---|
65 | {"struct", STRUCT, NORID}, |
---|
66 | {"__real__", REALPART, NORID}, |
---|
67 | {"__const", TYPE_QUAL, RID_CONST}, |
---|
68 | {"while", WHILE, NORID}, |
---|
69 | {"__const__", TYPE_QUAL, RID_CONST}, |
---|
70 | {"case", CASE, NORID}, |
---|
71 | {"__complex__", TYPESPEC, RID_COMPLEX}, |
---|
72 | {"__iterator", SCSPEC, RID_ITERATOR}, |
---|
73 | {"bycopy", TYPE_QUAL, RID_BYCOPY}, |
---|
74 | {"",}, {"",}, {"",}, |
---|
75 | {"__complex", TYPESPEC, RID_COMPLEX}, |
---|
76 | {"",}, |
---|
77 | {"in", TYPE_QUAL, RID_IN}, |
---|
78 | {"break", BREAK, NORID}, |
---|
79 | {"@defs", DEFS, NORID}, |
---|
80 | {"",}, {"",}, {"",}, |
---|
81 | {"extern", SCSPEC, RID_EXTERN}, |
---|
82 | {"if", IF, NORID}, |
---|
83 | {"typeof", TYPEOF, NORID}, |
---|
84 | {"typedef", SCSPEC, RID_TYPEDEF}, |
---|
85 | {"__typeof", TYPEOF, NORID}, |
---|
86 | {"sizeof", SIZEOF, NORID}, |
---|
87 | {"",}, |
---|
88 | {"return", RETURN, NORID}, |
---|
89 | {"const", TYPE_QUAL, RID_CONST}, |
---|
90 | {"__volatile__", TYPE_QUAL, RID_VOLATILE}, |
---|
91 | {"@private", PRIVATE, NORID}, |
---|
92 | {"@selector", SELECTOR, NORID}, |
---|
93 | {"__volatile", TYPE_QUAL, RID_VOLATILE}, |
---|
94 | {"__asm__", ASM_KEYWORD, NORID}, |
---|
95 | {"",}, {"",}, |
---|
96 | {"continue", CONTINUE, NORID}, |
---|
97 | {"__alignof__", ALIGNOF, NORID}, |
---|
98 | {"__imag", IMAGPART, NORID}, |
---|
99 | {"__attribute__", ATTRIBUTE, NORID}, |
---|
100 | {"",}, {"",}, |
---|
101 | {"__attribute", ATTRIBUTE, NORID}, |
---|
102 | {"for", FOR, NORID}, |
---|
103 | {"",}, |
---|
104 | {"@encode", ENCODE, NORID}, |
---|
105 | {"id", OBJECTNAME, RID_ID}, |
---|
106 | {"static", SCSPEC, RID_STATIC}, |
---|
107 | {"@interface", INTERFACE, NORID}, |
---|
108 | {"",}, |
---|
109 | {"__signed", TYPESPEC, RID_SIGNED}, |
---|
110 | {"",}, |
---|
111 | {"__label__", LABEL, NORID}, |
---|
112 | {"",}, {"",}, |
---|
113 | {"__asm", ASM_KEYWORD, NORID}, |
---|
114 | {"char", TYPESPEC, RID_CHAR}, |
---|
115 | {"",}, |
---|
116 | {"inline", SCSPEC, RID_INLINE}, |
---|
117 | {"out", TYPE_QUAL, RID_OUT}, |
---|
118 | {"register", SCSPEC, RID_REGISTER}, |
---|
119 | {"__real", REALPART, NORID}, |
---|
120 | {"short", TYPESPEC, RID_SHORT}, |
---|
121 | {"",}, |
---|
122 | {"enum", ENUM, NORID}, |
---|
123 | {"inout", TYPE_QUAL, RID_INOUT}, |
---|
124 | {"",}, |
---|
125 | {"oneway", TYPE_QUAL, RID_ONEWAY}, |
---|
126 | {"union", UNION, NORID}, |
---|
127 | {"",}, |
---|
128 | {"__alignof", ALIGNOF, NORID}, |
---|
129 | {"",}, |
---|
130 | {"@implementation", IMPLEMENTATION, NORID}, |
---|
131 | {"",}, |
---|
132 | {"@class", CLASS, NORID}, |
---|
133 | {"",}, |
---|
134 | {"@public", PUBLIC, NORID}, |
---|
135 | {"asm", ASM_KEYWORD, NORID}, |
---|
136 | {"",}, {"",}, {"",}, {"",}, {"",}, |
---|
137 | {"default", DEFAULT, NORID}, |
---|
138 | {"",}, |
---|
139 | {"void", TYPESPEC, RID_VOID}, |
---|
140 | {"",}, |
---|
141 | {"@protected", PROTECTED, NORID}, |
---|
142 | {"@protocol", PROTOCOL, NORID}, |
---|
143 | {"",}, {"",}, {"",}, |
---|
144 | {"volatile", TYPE_QUAL, RID_VOLATILE}, |
---|
145 | {"",}, {"",}, |
---|
146 | {"signed", TYPESPEC, RID_SIGNED}, |
---|
147 | {"float", TYPESPEC, RID_FLOAT}, |
---|
148 | {"@end", END, NORID}, |
---|
149 | {"",}, {"",}, |
---|
150 | {"unsigned", TYPESPEC, RID_UNSIGNED}, |
---|
151 | {"@compatibility_alias", ALIAS, NORID}, |
---|
152 | {"double", TYPESPEC, RID_DOUBLE}, |
---|
153 | {"",}, {"",}, |
---|
154 | {"auto", SCSPEC, RID_AUTO}, |
---|
155 | {"",}, |
---|
156 | {"goto", GOTO, NORID}, |
---|
157 | {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, |
---|
158 | {"do", DO, NORID}, |
---|
159 | {"",}, {"",}, {"",}, {"",}, |
---|
160 | {"long", TYPESPEC, RID_LONG}, |
---|
161 | }; |
---|
162 | |
---|
163 | #ifdef __GNUC__ |
---|
164 | __inline |
---|
165 | #endif |
---|
166 | struct resword * |
---|
167 | is_reserved_word (str, len) |
---|
168 | register char *str; |
---|
169 | register unsigned int len; |
---|
170 | { |
---|
171 | if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) |
---|
172 | { |
---|
173 | register int key = hash (str, len); |
---|
174 | |
---|
175 | if (key <= MAX_HASH_VALUE && key >= 0) |
---|
176 | { |
---|
177 | register char *s = wordlist[key].name; |
---|
178 | |
---|
179 | if (*s == *str && !strcmp (str + 1, s + 1)) |
---|
180 | return &wordlist[key]; |
---|
181 | } |
---|
182 | } |
---|
183 | return 0; |
---|
184 | } |
---|