[8833] | 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 | } |
---|