181 lines
5.7 KiB
C
181 lines
5.7 KiB
C
|
/* C code produced by gperf version 2.5 (GNU C++ version) */
|
||
|
/* Command-line: gperf -acCgopt -k1,2,5, keyword.gperf */
|
||
|
/* `strncmp' is used for comparison. */
|
||
|
#include <string.h>
|
||
|
|
||
|
/* This file defines `enum token'. */
|
||
|
#include "token.h"
|
||
|
struct locale_keyword { char *name; enum token token_id; };
|
||
|
|
||
|
#define TOTAL_KEYWORDS 68
|
||
|
#define MIN_WORD_LENGTH 3
|
||
|
#define MAX_WORD_LENGTH 17
|
||
|
#define MIN_HASH_VALUE 4
|
||
|
#define MAX_HASH_VALUE 140
|
||
|
/* maximum key range = 137, duplicates = 0 */
|
||
|
|
||
|
#ifdef __GNUC__
|
||
|
inline
|
||
|
#endif
|
||
|
static unsigned int
|
||
|
hash (register const char *str, register int len)
|
||
|
{
|
||
|
static const unsigned char asso_values[] =
|
||
|
{
|
||
|
141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
|
||
|
141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
|
||
|
141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
|
||
|
141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
|
||
|
141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
|
||
|
141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
|
||
|
141, 141, 141, 141, 141, 141, 141, 0, 141, 65,
|
||
|
5, 0, 141, 30, 141, 141, 0, 141, 0, 95,
|
||
|
141, 141, 0, 141, 45, 10, 141, 141, 141, 141,
|
||
|
141, 141, 141, 141, 141, 5, 141, 10, 85, 0,
|
||
|
20, 0, 40, 35, 30, 10, 141, 0, 30, 15,
|
||
|
15, 0, 0, 141, 55, 0, 0, 80, 141, 15,
|
||
|
10, 0, 141, 141, 141, 141, 141, 141,
|
||
|
};
|
||
|
register int hval = len;
|
||
|
|
||
|
switch (hval)
|
||
|
{
|
||
|
default:
|
||
|
case 5:
|
||
|
hval += asso_values[str[4]];
|
||
|
case 4:
|
||
|
case 3:
|
||
|
case 2:
|
||
|
hval += asso_values[str[1]];
|
||
|
case 1:
|
||
|
hval += asso_values[str[0]];
|
||
|
}
|
||
|
return hval;
|
||
|
}
|
||
|
|
||
|
#ifdef __GNUC__
|
||
|
inline
|
||
|
#endif
|
||
|
const struct locale_keyword *
|
||
|
in_word_set (register const char *str, register int len)
|
||
|
{
|
||
|
static const struct locale_keyword wordlist[] =
|
||
|
{
|
||
|
{"",}, {"",}, {"",}, {"",},
|
||
|
{"copy", TOK_COPY},
|
||
|
{"space", TOK_SPACE},
|
||
|
{"yesstr", YESSTR},
|
||
|
{"toupper", TOK_TOUPPER},
|
||
|
{"position", TOK_POSITION},
|
||
|
{"",},
|
||
|
{"t_fmt", T_FMT},
|
||
|
{"escape_char", TOK_ESCAPE_CHAR},
|
||
|
{"comment_char", TOK_COMMENT_CHAR},
|
||
|
{"positive_sign", POSITIVE_SIGN},
|
||
|
{"",},
|
||
|
{"t_fmt_ampm", T_FMT_AMPM},
|
||
|
{"",},
|
||
|
{"yesexpr", YESEXPR},
|
||
|
{"mon", MON_1},
|
||
|
{"p_sep_by_space", P_SEP_BY_SPACE},
|
||
|
{"LC_NUMERIC", _NL_NUM_LC_NUMERIC},
|
||
|
{"noexpr", NOEXPR},
|
||
|
{"tolower", TOK_TOLOWER},
|
||
|
{"p_cs_precedes", P_CS_PRECEDES},
|
||
|
{"UNDEFINED", TOK_UNDEFINED},
|
||
|
{"",},
|
||
|
{"collating_symbol", TOK_COLLATING_SYMBOL},
|
||
|
{"collating_element", TOK_COLLATING_ELEMENT},
|
||
|
{"negative_sign", NEGATIVE_SIGN},
|
||
|
{"",},
|
||
|
{"d_fmt", D_FMT},
|
||
|
{"",},
|
||
|
{"mon_thousands_sep", MON_THOUSANDS_SEP},
|
||
|
{"day", DAY_1},
|
||
|
{"n_sep_by_space", N_SEP_BY_SPACE},
|
||
|
{"digit", TOK_DIGIT},
|
||
|
{"IGNORE", TOK_IGNORE},
|
||
|
{"LC_TIME", _NL_NUM_LC_TIME},
|
||
|
{"n_cs_precedes", N_CS_PRECEDES},
|
||
|
{"",},
|
||
|
{"int_curr_symbol", INT_CURR_SYMBOL},
|
||
|
{"",}, {"",},
|
||
|
{"thousands_sep", THOUSANDS_SEP},
|
||
|
{"",},
|
||
|
{"am_pm", AM_STR},
|
||
|
{"xdigit", TOK_XDIGIT},
|
||
|
{"",},
|
||
|
{"decimal_point", DECIMAL_POINT},
|
||
|
{"",},
|
||
|
{"cntrl", TOK_CNTRL},
|
||
|
{"p_sign_posn", P_SIGN_POSN},
|
||
|
{"mon_decimal_point", MON_DECIMAL_POINT},
|
||
|
{"LC_CTYPE", _NL_NUM_LC_CTYPE},
|
||
|
{"",},
|
||
|
{"alpha", TOK_ALPHA},
|
||
|
{"",},
|
||
|
{"forward", TOK_FORWARD},
|
||
|
{"era", ERA},
|
||
|
{"",},
|
||
|
{"print", TOK_PRINT},
|
||
|
{"",},
|
||
|
{"mon_grouping", MON_GROUPING},
|
||
|
{"era_year", ERA_YEAR},
|
||
|
{"",}, {"",},
|
||
|
{"n_sign_posn", N_SIGN_POSN},
|
||
|
{"",},
|
||
|
{"END", TOK_END},
|
||
|
{"",},
|
||
|
{"alt_digits", ALT_DIGITS},
|
||
|
{"",},
|
||
|
{"d_t_fmt", D_T_FMT},
|
||
|
{"",}, {"",},
|
||
|
{"nostr", NOSTR},
|
||
|
{"LC_MESSAGES", _NL_NUM_LC_MESSAGES},
|
||
|
{"",}, {"",}, {"",},
|
||
|
{"int_frac_digits", INT_FRAC_DIGITS},
|
||
|
{"",}, {"",}, {"",},
|
||
|
{"era_d_fmt", ERA_D_FMT},
|
||
|
{"punct", TOK_PUNCT},
|
||
|
{"",}, {"",}, {"",}, {"",},
|
||
|
{"lower", TOK_LOWER},
|
||
|
{"",}, {"",}, {"",}, {"",},
|
||
|
{"currency_symbol", CURRENCY_SYMBOL},
|
||
|
{"",}, {"",},
|
||
|
{"grouping", GROUPING},
|
||
|
{"from", TOK_FROM},
|
||
|
{"abday", ABDAY_1},
|
||
|
{"",}, {"",}, {"",}, {"",},
|
||
|
{"LC_COLLATE", _NL_NUM_LC_COLLATE},
|
||
|
{"LC_MONETARY", _NL_NUM_LC_MONETARY},
|
||
|
{"",}, {"",}, {"",}, {"",},
|
||
|
{"frac_digits", FRAC_DIGITS},
|
||
|
{"",}, {"",}, {"",},
|
||
|
{"abmon", ABMON_1},
|
||
|
{"",}, {"",},
|
||
|
{"backward", TOK_BACKWARD},
|
||
|
{"order_end", TOK_ORDER_END},
|
||
|
{"blank", TOK_BLANK},
|
||
|
{"order_start", TOK_ORDER_START},
|
||
|
{"",}, {"",}, {"",},
|
||
|
{"graph", TOK_GRAPH},
|
||
|
{"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",},
|
||
|
{"",}, {"",}, {"",}, {"",}, {"",},
|
||
|
{"upper", TOK_UPPER},
|
||
|
};
|
||
|
|
||
|
if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
|
||
|
{
|
||
|
register int key = hash (str, len);
|
||
|
|
||
|
if (key <= MAX_HASH_VALUE && key >= 0)
|
||
|
{
|
||
|
register const char *s = wordlist[key].name;
|
||
|
|
||
|
if (*s == *str && !strncmp (str + 1, s + 1, len - 1))
|
||
|
return &wordlist[key];
|
||
|
}
|
||
|
}
|
||
|
return 0;
|
||
|
}
|