diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 1999-08-13 05:45:20 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 1999-08-13 05:45:20 +0000 |
commit | 65a5162550f58047974793cdc8067a970b2435c0 (patch) | |
tree | 082bb7d5568f3b2e36e3fe166e9f3039394fcf44 /lex.c | |
parent | fcd020c83028f5610d382e85a2df00223e12bd7e (diff) |
1.4.0
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@520 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lex.c')
-rw-r--r-- | lex.c | 149 |
1 files changed, 81 insertions, 68 deletions
@@ -1,5 +1,5 @@ -/* C code produced by gperf version 2.5 (GNU C++ version) */ -/* Command-line: gperf -p -j1 -i 1 -g -o -t -N rb_reserved_word -k1,3,$ keywords */ +/* C code produced by gperf version 2.7.1 (19981006 egcs) */ +/* Command-line: gperf -p -j1 -i 1 -g -o -t -N rb_reserved_word -k1,3,$ ./keywords */ struct kwtable {char *name; int id[2]; enum lex_state state;}; #define TOTAL_KEYWORDS 40 @@ -10,28 +10,41 @@ struct kwtable {char *name; int id[2]; enum lex_state state;}; /* maximum key range = 50, duplicates = 0 */ #ifdef __GNUC__ -inline +__inline #endif static unsigned int hash (str, len) - register char *str; - register int unsigned len; + register const char *str; + register unsigned int len; { static unsigned char asso_values[] = { - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 11, 56, 56, 36, 56, 1, 37, - 31, 1, 56, 56, 56, 56, 29, 56, 1, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 1, 56, 32, 1, 2, - 1, 1, 4, 23, 56, 17, 56, 20, 9, 2, - 9, 26, 14, 56, 5, 1, 1, 16, 56, 21, - 20, 9, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 11, 56, 56, 36, 56, 1, 37, + 31, 1, 56, 56, 56, 56, 29, 56, 1, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 1, 56, 32, 1, 2, + 1, 1, 4, 23, 56, 17, 56, 20, 9, 2, + 9, 26, 14, 56, 5, 1, 1, 16, 56, 21, + 20, 9, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56 }; register int hval = len; @@ -39,68 +52,68 @@ hash (str, len) { default: case 3: - hval += asso_values[str[2]]; + hval += asso_values[(unsigned char)str[2]]; case 2: case 1: - hval += asso_values[str[0]]; + hval += asso_values[(unsigned char)str[0]]; break; } - return hval + asso_values[str[len - 1]]; + return hval + asso_values[(unsigned char)str[len - 1]]; } #ifdef __GNUC__ -inline +__inline #endif struct kwtable * rb_reserved_word (str, len) - register char *str; + register const char *str; register unsigned int len; { static struct kwtable wordlist[] = { - {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, - {"end", kEND, kEND, EXPR_END}, - {"else", kELSE, kELSE, EXPR_BEG}, - {"case", kCASE, kCASE, EXPR_BEG}, - {"ensure", kENSURE, kENSURE, EXPR_BEG}, - {"module", kMODULE, kMODULE, EXPR_BEG}, - {"elsif", kELSIF, kELSIF, EXPR_BEG}, - {"def", kDEF, kDEF, EXPR_FNAME}, - {"rescue", kRESCUE, kRESCUE, EXPR_MID}, - {"not", kNOT, kNOT, EXPR_BEG}, - {"then", kTHEN, kTHEN, EXPR_BEG}, - {"yield", kYIELD, kYIELD, EXPR_END}, - {"for", kFOR, kFOR, EXPR_BEG}, - {"self", kSELF, kSELF, EXPR_END}, - {"false", kFALSE, kFALSE, EXPR_END}, - {"retry", kRETRY, kRETRY, EXPR_END}, - {"return", kRETURN, kRETURN, EXPR_MID}, - {"true", kTRUE, kTRUE, EXPR_END}, - {"if", kIF, kIF_MOD, EXPR_BEG}, - {"defined?", kDEFINED, kDEFINED, EXPR_END}, - {"super", kSUPER, kSUPER, EXPR_END}, - {"undef", kUNDEF, kUNDEF, EXPR_FNAME}, - {"break", kBREAK, kBREAK, EXPR_END}, - {"in", kIN, kIN, EXPR_BEG}, - {"do", kDO, kDO, EXPR_BEG}, - {"nil", kNIL, kNIL, EXPR_END}, - {"until", kUNTIL, kUNTIL_MOD, EXPR_BEG}, - {"unless", kUNLESS, kUNLESS_MOD, EXPR_BEG}, - {"or", kOR, kOR, EXPR_BEG}, - {"next", kNEXT, kNEXT, EXPR_END}, - {"when", kWHEN, kWHEN, EXPR_BEG}, - {"redo", kREDO, kREDO, EXPR_END}, - {"and", kAND, kAND, EXPR_BEG}, - {"begin", kBEGIN, kBEGIN, EXPR_BEG}, - {"__LINE__", k__LINE__, k__LINE__, EXPR_END}, - {"class", kCLASS, kCLASS, EXPR_CLASS}, - {"__FILE__", k__FILE__, k__FILE__, EXPR_END}, - {"END", klEND, klEND, EXPR_END}, - {"BEGIN", klBEGIN, klBEGIN, EXPR_END}, - {"while", kWHILE, kWHILE_MOD, EXPR_BEG}, - {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, - {"",}, - {"alias", kALIAS, kALIAS, EXPR_FNAME}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"end", kEND, kEND, EXPR_END}, + {"else", kELSE, kELSE, EXPR_BEG}, + {"case", kCASE, kCASE, EXPR_BEG}, + {"ensure", kENSURE, kENSURE, EXPR_BEG}, + {"module", kMODULE, kMODULE, EXPR_BEG}, + {"elsif", kELSIF, kELSIF, EXPR_BEG}, + {"def", kDEF, kDEF, EXPR_FNAME}, + {"rescue", kRESCUE, kRESCUE, EXPR_MID}, + {"not", kNOT, kNOT, EXPR_BEG}, + {"then", kTHEN, kTHEN, EXPR_BEG}, + {"yield", kYIELD, kYIELD, EXPR_END}, + {"for", kFOR, kFOR, EXPR_BEG}, + {"self", kSELF, kSELF, EXPR_END}, + {"false", kFALSE, kFALSE, EXPR_END}, + {"retry", kRETRY, kRETRY, EXPR_END}, + {"return", kRETURN, kRETURN, EXPR_MID}, + {"true", kTRUE, kTRUE, EXPR_END}, + {"if", kIF, kIF_MOD, EXPR_BEG}, + {"defined?", kDEFINED, kDEFINED, EXPR_END}, + {"super", kSUPER, kSUPER, EXPR_END}, + {"undef", kUNDEF, kUNDEF, EXPR_FNAME}, + {"break", kBREAK, kBREAK, EXPR_END}, + {"in", kIN, kIN, EXPR_BEG}, + {"do", kDO, kDO, EXPR_BEG}, + {"nil", kNIL, kNIL, EXPR_END}, + {"until", kUNTIL, kUNTIL_MOD, EXPR_BEG}, + {"unless", kUNLESS, kUNLESS_MOD, EXPR_BEG}, + {"or", kOR, kOR, EXPR_BEG}, + {"next", kNEXT, kNEXT, EXPR_END}, + {"when", kWHEN, kWHEN, EXPR_BEG}, + {"redo", kREDO, kREDO, EXPR_END}, + {"and", kAND, kAND, EXPR_BEG}, + {"begin", kBEGIN, kBEGIN, EXPR_BEG}, + {"__LINE__", k__LINE__, k__LINE__, EXPR_END}, + {"class", kCLASS, kCLASS, EXPR_CLASS}, + {"__FILE__", k__FILE__, k__FILE__, EXPR_END}, + {"END", klEND, klEND, EXPR_END}, + {"BEGIN", klBEGIN, klBEGIN, EXPR_END}, + {"while", kWHILE, kWHILE_MOD, EXPR_BEG}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"alias", kALIAS, kALIAS, EXPR_FNAME} }; if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) @@ -109,9 +122,9 @@ rb_reserved_word (str, len) if (key <= MAX_HASH_VALUE && key >= 0) { - register char *s = wordlist[key].name; + register const char *s = wordlist[key].name; - if (*s == *str && !strcmp (str + 1, s + 1)) + if (*str == *s && !strcmp (str + 1, s + 1)) return &wordlist[key]; } } |