diff options
author | Ulrich Drepper <drepper@redhat.com> | 2007-10-11 02:36:04 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2007-10-11 02:36:04 +0000 |
commit | 3a054d7ab0f7c413d65ec51899d622f8e7008fe9 (patch) | |
tree | da1a0f232b050ea2ec8759d9c728d68cf534b32c /locale | |
parent | 069293a7e7b6b22401e0b13345fa555c7d5a878c (diff) | |
download | glibc-3a054d7ab0f7c413d65ec51899d622f8e7008fe9.tar.gz |
* locale/programs/locfile-token.h: Remove tok_elif, add tok_elifdef
and tok_elifndef.
* locale/programs/locfile-kw.gperf: Likewise.
* locale/programs/ld-collate.c: Implement primitive preprocessor.
Diffstat (limited to 'locale')
-rw-r--r-- | locale/programs/ld-collate.c | 265 | ||||
-rw-r--r-- | locale/programs/locfile-kw.h | 604 |
2 files changed, 568 insertions, 301 deletions
diff --git a/locale/programs/ld-collate.c b/locale/programs/ld-collate.c index d6c3de0147..6d8f3fb2f0 100644 --- a/locale/programs/ld-collate.c +++ b/locale/programs/ld-collate.c @@ -181,6 +181,14 @@ struct symbol_t #include "3level.h" +/* Simple name list for the preprocessor. */ +struct name_list +{ + struct name_list *next; + char str[0]; +}; + + /* The real definition of the struct for the LC_COLLATE locale. */ struct locale_collate_t { @@ -240,6 +248,15 @@ struct locale_collate_t /* The arrays with the collation sequence order. */ unsigned char mbseqorder[256]; struct collseq_table wcseqorder; + + /* State of the preprocessor. */ + enum + { + else_none = 0, + else_ignore, + else_seen + } + else_action; }; @@ -247,6 +264,9 @@ struct locale_collate_t LC_COLLATE category descriptions in all files. */ static uint32_t nrules; +/* List of defined preprocessor symbols. */ +static struct name_list *defined; + /* We need UTF-8 encoding of numbers. */ static inline int @@ -2622,6 +2642,43 @@ collate_output (struct localedef_t *locale, const struct charmap_t *charmap, } +static enum token_t +skip_to (struct linereader *ldfile, struct locale_collate_t *collate, + const struct charmap_t *charmap, int to_endif) +{ + while (1) + { + struct token *now = lr_token (ldfile, charmap, NULL, NULL, 0); + enum token_t nowtok = now->tok; + + if (nowtok == tok_eof || nowtok == tok_end) + return nowtok; + + if (nowtok == tok_ifdef || nowtok == tok_ifndef) + { + lr_error (ldfile, _("%s: nested conditionals not supported"), + "LC_COLLATE"); + nowtok = skip_to (ldfile, collate, charmap, tok_endif); + if (nowtok == tok_eof || nowtok == tok_end) + return nowtok; + } + else if ((!to_endif && (nowtok == tok_else || nowtok == tok_elifdef + || nowtok == tok_elifndef)) + || nowtok == tok_endif) + { + lr_ignore_rest (ldfile, 1); + return nowtok; + } + else if (nowtok == tok_else) + { + lr_error (ldfile, _("%s: more then one 'else'"), "LC_COLLATE"); + } + + lr_ignore_rest (ldfile, 0); + } +} + + void collate_read (struct linereader *ldfile, struct localedef_t *result, const struct charmap_t *charmap, const char *repertoire_name, @@ -2659,6 +2716,38 @@ collate_read (struct linereader *ldfile, struct localedef_t *result, } while (nowtok == tok_eol); + while (nowtok == tok_define) + { + if (ignore_content) + { + lr_ignore_rest (ldfile, 0); + continue; + } + + arg = lr_token (ldfile, charmap, result, NULL, verbose); + if (arg->tok != tok_ident) + SYNTAX_ERROR (_("%s: syntax error"), "LC_COLLATE"); + else + { + /* Simply add the new symbol. */ + struct name_list *newsym = xmalloc (sizeof (*newsym) + + arg->val.str.lenmb + 1); + memcpy (newsym->str, arg->val.str.startmb, arg->val.str.lenmb); + newsym->str[arg->val.str.lenmb] = '\0'; + newsym->next = defined; + defined = newsym; + + lr_ignore_rest (ldfile, 1); + } + + do + { + now = lr_token (ldfile, charmap, result, NULL, verbose); + nowtok = now->tok; + } + while (nowtok == tok_eol); + } + if (nowtok == tok_copy) { now = lr_token (ldfile, charmap, result, NULL, verbose); @@ -3798,6 +3887,7 @@ error while adding equivalent collating symbol")); break; case tok_end: + seen_end: /* Next we assume `LC_COLLATE'. */ if (!ignore_content) { @@ -3838,6 +3928,180 @@ error while adding equivalent collating symbol")); lr_ignore_rest (ldfile, arg->tok == tok_lc_collate); return; + case tok_define: + if (ignore_content) + { + lr_ignore_rest (ldfile, 0); + break; + } + + arg = lr_token (ldfile, charmap, result, NULL, verbose); + if (arg->tok != tok_ident) + goto err_label; + + /* Simply add the new symbol. */ + struct name_list *newsym = xmalloc (sizeof (*newsym) + + arg->val.str.lenmb + 1); + memcpy (newsym->str, arg->val.str.startmb, arg->val.str.lenmb); + newsym->str[arg->val.str.lenmb] = '\0'; + newsym->next = defined; + defined = newsym; + + lr_ignore_rest (ldfile, 1); + break; + + case tok_undef: + if (ignore_content) + { + lr_ignore_rest (ldfile, 0); + break; + } + + arg = lr_token (ldfile, charmap, result, NULL, verbose); + if (arg->tok != tok_ident) + goto err_label; + + /* Remove _all_ occurrences of the symbol from the list. */ + struct name_list *prevdef = NULL; + struct name_list *curdef = defined; + while (curdef != NULL) + if (strncmp (arg->val.str.startmb, curdef->str, + arg->val.str.lenmb) == 0 + && curdef->str[arg->val.str.lenmb] == '\0') + { + if (prevdef == NULL) + defined = curdef->next; + else + prevdef->next = curdef->next; + + struct name_list *olddef = curdef; + curdef = curdef->next; + + free (olddef); + } + else + { + prevdef = curdef; + curdef = curdef->next; + } + + lr_ignore_rest (ldfile, 1); + break; + + case tok_ifdef: + case tok_ifndef: + if (ignore_content) + { + lr_ignore_rest (ldfile, 0); + break; + } + + found_ifdef: + arg = lr_token (ldfile, charmap, result, NULL, verbose); + if (arg->tok != tok_ident) + goto err_label; + lr_ignore_rest (ldfile, 1); + + if (collate->else_action == else_none) + { + curdef = defined; + while (curdef != NULL) + if (strncmp (arg->val.str.startmb, curdef->str, + arg->val.str.lenmb) == 0 + && curdef->str[arg->val.str.lenmb] == '\0') + break; + + if ((nowtok == tok_ifdef && curdef != NULL) + || (nowtok == tok_ifndef && curdef == NULL)) + { + /* We have to use the if-branch. */ + collate->else_action = else_ignore; + } + else + { + /* We have to use the else-branch, if there is one. */ + nowtok = skip_to (ldfile, collate, charmap, 0); + if (nowtok == tok_else) + collate->else_action = else_seen; + else if (nowtok == tok_elifdef) + { + nowtok = tok_ifdef; + goto found_ifdef; + } + else if (nowtok == tok_elifndef) + { + nowtok = tok_ifndef; + goto found_ifdef; + } + else if (nowtok == tok_eof) + goto seen_eof; + else if (nowtok == tok_end) + goto seen_end; + } + } + else + { + /* XXX Should it really become necessary to support nested + preprocessor handling we will push the state here. */ + lr_error (ldfile, _("%s: nested conditionals not supported"), + "LC_COLLATE"); + nowtok = skip_to (ldfile, collate, charmap, 1); + if (nowtok == tok_eof) + goto seen_eof; + else if (nowtok == tok_end) + goto seen_end; + } + break; + + case tok_elifdef: + case tok_elifndef: + case tok_else: + if (ignore_content) + { + lr_ignore_rest (ldfile, 0); + break; + } + + lr_ignore_rest (ldfile, 1); + + if (collate->else_action == else_ignore) + { + /* Ignore everything until the endif. */ + nowtok = skip_to (ldfile, collate, charmap, 1); + if (nowtok == tok_eof) + goto seen_eof; + else if (nowtok == tok_end) + goto seen_end; + } + else + { + assert (collate->else_action == else_none); + lr_error (ldfile, _("\ +%s: '%s' without matching 'ifdef' or 'ifndef'"), "LC_COLLATE", + nowtok == tok_else ? "else" + : nowtok == tok_elifdef ? "elifdef" : "elifndef"); + } + break; + + case tok_endif: + if (ignore_content) + { + lr_ignore_rest (ldfile, 0); + break; + } + + lr_ignore_rest (ldfile, 1); + + if (collate->else_action != else_ignore + && collate->else_action != else_seen) + lr_error (ldfile, _("\ +%s: 'endif' without matching 'ifdef' or 'ifndef'"), "LC_COLLATE"); + + /* XXX If we support nested preprocessor directives we pop + the state here. */ + collate->else_action = else_none; + break; + default: err_label: SYNTAX_ERROR (_("%s: syntax error"), "LC_COLLATE"); @@ -3848,6 +4112,7 @@ error while adding equivalent collating symbol")); nowtok = now->tok; } + seen_eof: /* When we come here we reached the end of the file. */ lr_error (ldfile, _("%s: premature end of file"), "LC_COLLATE"); } diff --git a/locale/programs/locfile-kw.h b/locale/programs/locfile-kw.h index c883842b3c..c0f9ce7810 100644 --- a/locale/programs/locfile-kw.h +++ b/locale/programs/locfile-kw.h @@ -1,4 +1,4 @@ -/* ANSI-C code produced by gperf version 3.0.1 */ +/* ANSI-C code produced by gperf version 3.0.2 */ /* Command-line: gperf -acCgopt -k'1,2,5,9,$' -L ANSI-C -N locfile_hash locfile-kw.gperf */ #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ @@ -30,7 +30,7 @@ #line 1 "locfile-kw.gperf" -/* Copyright (C) 1996,1997,1998,1999,2000,2005 Free Software Foundation, Inc. +/* Copyright (C) 1996-2000,2005,2007 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@gnu.org>, 1996. @@ -51,15 +51,15 @@ #include <string.h> #include "locfile-token.h" -#line 23 "locfile-kw.gperf" +#line 24 "locfile-kw.gperf" struct keyword_t ; -#define TOTAL_KEYWORDS 175 +#define TOTAL_KEYWORDS 176 #define MIN_WORD_LENGTH 3 #define MAX_WORD_LENGTH 22 #define MIN_HASH_VALUE 3 -#define MAX_HASH_VALUE 610 -/* maximum key range = 608, duplicates = 0 */ +#define MAX_HASH_VALUE 630 +/* maximum key range = 628, duplicates = 0 */ #ifdef __GNUC__ __inline @@ -73,32 +73,32 @@ hash (register const char *str, register unsigned int len) { static const unsigned short asso_values[] = { - 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, - 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, - 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, - 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, - 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, - 5, 0, 611, 611, 611, 611, 611, 611, 611, 611, - 611, 611, 611, 611, 611, 5, 611, 0, 0, 0, - 0, 0, 10, 0, 611, 611, 0, 611, 0, 5, - 611, 611, 0, 0, 0, 10, 611, 611, 611, 0, - 611, 611, 611, 611, 611, 0, 611, 145, 105, 25, - 15, 0, 190, 110, 10, 35, 611, 0, 80, 65, - 5, 130, 40, 50, 5, 0, 10, 35, 50, 20, - 5, 10, 0, 611, 611, 611, 611, 611, 611, 611, - 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, - 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, - 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, - 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, - 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, - 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, - 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, - 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, - 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, - 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, - 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, - 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, - 611, 611, 611, 611, 611, 611 + 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, + 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, + 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, + 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, + 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, + 5, 0, 631, 631, 631, 631, 631, 631, 631, 631, + 631, 631, 631, 631, 631, 5, 631, 0, 0, 0, + 0, 0, 10, 0, 631, 631, 0, 631, 0, 5, + 631, 631, 0, 0, 0, 10, 631, 631, 631, 0, + 631, 631, 631, 631, 631, 0, 631, 145, 80, 25, + 15, 0, 180, 105, 10, 35, 631, 50, 80, 160, + 5, 130, 40, 45, 5, 0, 10, 35, 40, 35, + 5, 10, 0, 631, 631, 631, 631, 631, 631, 631, + 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, + 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, + 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, + 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, + 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, + 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, + 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, + 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, + 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, + 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, + 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, + 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, + 631, 631, 631, 631, 631, 631 }; register int hval = len; @@ -134,470 +134,472 @@ locfile_hash (register const char *str, register unsigned int len) static const struct keyword_t wordlist[] = { {""}, {""}, {""}, -#line 30 "locfile-kw.gperf" +#line 31 "locfile-kw.gperf" {"END", tok_end, 0}, {""}, {""}, -#line 69 "locfile-kw.gperf" +#line 70 "locfile-kw.gperf" {"IGNORE", tok_ignore, 0}, -#line 127 "locfile-kw.gperf" +#line 129 "locfile-kw.gperf" {"LC_TIME", tok_lc_time, 0}, -#line 29 "locfile-kw.gperf" +#line 30 "locfile-kw.gperf" {"LC_CTYPE", tok_lc_ctype, 0}, {""}, -#line 164 "locfile-kw.gperf" +#line 166 "locfile-kw.gperf" {"LC_ADDRESS", tok_lc_address, 0}, -#line 149 "locfile-kw.gperf" +#line 151 "locfile-kw.gperf" {"LC_MESSAGES", tok_lc_messages, 0}, -#line 157 "locfile-kw.gperf" +#line 159 "locfile-kw.gperf" {"LC_NAME", tok_lc_name, 0}, -#line 154 "locfile-kw.gperf" +#line 156 "locfile-kw.gperf" {"LC_PAPER", tok_lc_paper, 0}, -#line 182 "locfile-kw.gperf" +#line 184 "locfile-kw.gperf" {"LC_MEASUREMENT", tok_lc_measurement, 0}, -#line 55 "locfile-kw.gperf" +#line 56 "locfile-kw.gperf" {"LC_COLLATE", tok_lc_collate, 0}, {""}, -#line 184 "locfile-kw.gperf" +#line 186 "locfile-kw.gperf" {"LC_IDENTIFICATION", tok_lc_identification, 0}, -#line 197 "locfile-kw.gperf" +#line 199 "locfile-kw.gperf" {"revision", tok_revision, 0}, -#line 68 "locfile-kw.gperf" +#line 69 "locfile-kw.gperf" {"UNDEFINED", tok_undefined, 0}, -#line 123 "locfile-kw.gperf" +#line 125 "locfile-kw.gperf" {"LC_NUMERIC", tok_lc_numeric, 0}, -#line 80 "locfile-kw.gperf" +#line 82 "locfile-kw.gperf" {"LC_MONETARY", tok_lc_monetary, 0}, -#line 177 "locfile-kw.gperf" +#line 179 "locfile-kw.gperf" {"LC_TELEPHONE", tok_lc_telephone, 0}, - {""}, -#line 130 "locfile-kw.gperf" - {"week", tok_week, 0}, - {""}, -#line 74 "locfile-kw.gperf" + {""}, {""}, {""}, +#line 75 "locfile-kw.gperf" {"define", tok_define, 0}, -#line 150 "locfile-kw.gperf" +#line 152 "locfile-kw.gperf" {"yesexpr", tok_yesexpr, 0}, -#line 139 "locfile-kw.gperf" +#line 141 "locfile-kw.gperf" {"era_year", tok_era_year, 0}, {""}, -#line 53 "locfile-kw.gperf" +#line 54 "locfile-kw.gperf" {"translit_ignore", tok_translit_ignore, 0}, -#line 152 "locfile-kw.gperf" +#line 154 "locfile-kw.gperf" {"yesstr", tok_yesstr, 0}, {""}, -#line 87 "locfile-kw.gperf" +#line 89 "locfile-kw.gperf" {"negative_sign", tok_negative_sign, 0}, {""}, -#line 135 "locfile-kw.gperf" +#line 137 "locfile-kw.gperf" {"t_fmt", tok_t_fmt, 0}, -#line 155 "locfile-kw.gperf" +#line 157 "locfile-kw.gperf" {"height", tok_height, 0}, {""}, {""}, -#line 51 "locfile-kw.gperf" +#line 52 "locfile-kw.gperf" {"translit_start", tok_translit_start, 0}, -#line 134 "locfile-kw.gperf" +#line 136 "locfile-kw.gperf" {"d_fmt", tok_d_fmt, 0}, {""}, -#line 52 "locfile-kw.gperf" +#line 53 "locfile-kw.gperf" {"translit_end", tok_translit_end, 0}, -#line 92 "locfile-kw.gperf" +#line 94 "locfile-kw.gperf" {"n_cs_precedes", tok_n_cs_precedes, 0}, -#line 142 "locfile-kw.gperf" +#line 144 "locfile-kw.gperf" {"era_t_fmt", tok_era_t_fmt, 0}, -#line 38 "locfile-kw.gperf" +#line 39 "locfile-kw.gperf" {"space", tok_space, 0}, -#line 71 "locfile-kw.gperf" - {"reorder-end", tok_reorder_end, 0}, #line 72 "locfile-kw.gperf" + {"reorder-end", tok_reorder_end, 0}, +#line 73 "locfile-kw.gperf" {"reorder-sections-after", tok_reorder_sections_after, 0}, {""}, -#line 140 "locfile-kw.gperf" +#line 142 "locfile-kw.gperf" {"era_d_fmt", tok_era_d_fmt, 0}, -#line 185 "locfile-kw.gperf" +#line 187 "locfile-kw.gperf" {"title", tok_title, 0}, {""}, {""}, -#line 147 "locfile-kw.gperf" +#line 149 "locfile-kw.gperf" {"timezone", tok_timezone, 0}, {""}, -#line 73 "locfile-kw.gperf" +#line 74 "locfile-kw.gperf" {"reorder-sections-end", tok_reorder_sections_end, 0}, {""}, {""}, {""}, -#line 93 "locfile-kw.gperf" +#line 95 "locfile-kw.gperf" {"n_sep_by_space", tok_n_sep_by_space, 0}, {""}, {""}, -#line 98 "locfile-kw.gperf" +#line 100 "locfile-kw.gperf" {"int_n_cs_precedes", tok_int_n_cs_precedes, 0}, {""}, {""}, {""}, -#line 25 "locfile-kw.gperf" +#line 26 "locfile-kw.gperf" {"escape_char", tok_escape_char, 0}, {""}, -#line 27 "locfile-kw.gperf" +#line 28 "locfile-kw.gperf" {"repertoiremap", tok_repertoiremap, 0}, -#line 45 "locfile-kw.gperf" +#line 46 "locfile-kw.gperf" {"charclass", tok_charclass, 0}, -#line 42 "locfile-kw.gperf" - {"print", tok_print, 0}, #line 43 "locfile-kw.gperf" + {"print", tok_print, 0}, +#line 44 "locfile-kw.gperf" {"xdigit", tok_xdigit, 0}, -#line 108 "locfile-kw.gperf" +#line 110 "locfile-kw.gperf" {"duo_n_cs_precedes", tok_duo_n_cs_precedes, 0}, -#line 125 "locfile-kw.gperf" +#line 127 "locfile-kw.gperf" {"thousands_sep", tok_thousands_sep, 0}, -#line 193 "locfile-kw.gperf" +#line 195 "locfile-kw.gperf" {"territory", tok_territory, 0}, -#line 35 "locfile-kw.gperf" +#line 36 "locfile-kw.gperf" {"digit", tok_digit, 0}, {""}, {""}, -#line 90 "locfile-kw.gperf" +#line 92 "locfile-kw.gperf" {"p_cs_precedes", tok_p_cs_precedes, 0}, - {""}, -#line 156 "locfile-kw.gperf" - {"width", tok_width, 0}, -#line 61 "locfile-kw.gperf" + {""}, {""}, +#line 62 "locfile-kw.gperf" {"script", tok_script, 0}, -#line 28 "locfile-kw.gperf" +#line 29 "locfile-kw.gperf" {"include", tok_include, 0}, {""}, -#line 77 "locfile-kw.gperf" +#line 78 "locfile-kw.gperf" {"else", tok_else, 0}, -#line 180 "locfile-kw.gperf" +#line 182 "locfile-kw.gperf" {"int_select", tok_int_select, 0}, - {""}, {""}, {""}, {""}, -#line 32 "locfile-kw.gperf" + {""}, {""}, {""}, +#line 132 "locfile-kw.gperf" + {"week", tok_week, 0}, +#line 33 "locfile-kw.gperf" {"upper", tok_upper, 0}, {""}, {""}, -#line 190 "locfile-kw.gperf" +#line 192 "locfile-kw.gperf" {"tel", tok_tel, 0}, -#line 91 "locfile-kw.gperf" +#line 93 "locfile-kw.gperf" {"p_sep_by_space", tok_p_sep_by_space, 0}, - {""}, {""}, -#line 96 "locfile-kw.gperf" +#line 158 "locfile-kw.gperf" + {"width", tok_width, 0}, + {""}, +#line 98 "locfile-kw.gperf" {"int_p_cs_precedes", tok_int_p_cs_precedes, 0}, {""}, {""}, -#line 40 "locfile-kw.gperf" +#line 41 "locfile-kw.gperf" {"punct", tok_punct, 0}, {""}, {""}, -#line 99 "locfile-kw.gperf" +#line 101 "locfile-kw.gperf" {"int_n_sep_by_space", tok_int_n_sep_by_space, 0}, {""}, {""}, {""}, -#line 106 "locfile-kw.gperf" +#line 108 "locfile-kw.gperf" {"duo_p_cs_precedes", tok_duo_p_cs_precedes, 0}, - {""}, {""}, -#line 46 "locfile-kw.gperf" +#line 48 "locfile-kw.gperf" + {"charconv", tok_charconv, 0}, + {""}, +#line 47 "locfile-kw.gperf" {"class", tok_class, 0}, -#line 112 "locfile-kw.gperf" +#line 114 "locfile-kw.gperf" {"duo_int_n_cs_precedes", tok_duo_int_n_cs_precedes, 0}, -#line 113 "locfile-kw.gperf" +#line 115 "locfile-kw.gperf" {"duo_int_n_sep_by_space", tok_duo_int_n_sep_by_space, 0}, -#line 109 "locfile-kw.gperf" +#line 111 "locfile-kw.gperf" {"duo_n_sep_by_space", tok_duo_n_sep_by_space, 0}, -#line 117 "locfile-kw.gperf" +#line 119 "locfile-kw.gperf" {"duo_int_n_sign_posn", tok_duo_int_n_sign_posn, 0}, - {""}, {""}, {""}, -#line 47 "locfile-kw.gperf" - {"charconv", tok_charconv, 0}, - {""}, {""}, -#line 183 "locfile-kw.gperf" - {"measurement", tok_measurement, 0}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 57 "locfile-kw.gperf" + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, +#line 58 "locfile-kw.gperf" {"section-symbol", tok_section_symbol, 0}, -#line 181 "locfile-kw.gperf" +#line 183 "locfile-kw.gperf" {"int_prefix", tok_int_prefix, 0}, {""}, {""}, {""}, {""}, -#line 137 "locfile-kw.gperf" - {"t_fmt_ampm", tok_t_fmt_ampm, 0}, - {""}, {""}, -#line 97 "locfile-kw.gperf" - {"int_p_sep_by_space", tok_int_p_sep_by_space, 0}, - {""}, -#line 41 "locfile-kw.gperf" +#line 42 "locfile-kw.gperf" {"graph", tok_graph, 0}, {""}, {""}, -#line 124 "locfile-kw.gperf" - {"decimal_point", tok_decimal_point, 0}, - {""}, {""}, -#line 110 "locfile-kw.gperf" +#line 99 "locfile-kw.gperf" + {"int_p_sep_by_space", tok_int_p_sep_by_space, 0}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 112 "locfile-kw.gperf" {"duo_int_p_cs_precedes", tok_duo_int_p_cs_precedes, 0}, -#line 111 "locfile-kw.gperf" +#line 113 "locfile-kw.gperf" {"duo_int_p_sep_by_space", tok_duo_int_p_sep_by_space, 0}, -#line 107 "locfile-kw.gperf" +#line 109 "locfile-kw.gperf" {"duo_p_sep_by_space", tok_duo_p_sep_by_space, 0}, -#line 116 "locfile-kw.gperf" +#line 118 "locfile-kw.gperf" {"duo_int_p_sign_posn", tok_duo_int_p_sign_posn, 0}, -#line 153 "locfile-kw.gperf" +#line 155 "locfile-kw.gperf" {"nostr", tok_nostr, 0}, {""}, {""}, -#line 138 "locfile-kw.gperf" +#line 140 "locfile-kw.gperf" {"era", tok_era, 0}, {""}, -#line 82 "locfile-kw.gperf" +#line 84 "locfile-kw.gperf" {"currency_symbol", tok_currency_symbol, 0}, {""}, -#line 163 "locfile-kw.gperf" +#line 165 "locfile-kw.gperf" {"name_ms", tok_name_ms, 0}, -#line 161 "locfile-kw.gperf" +#line 163 "locfile-kw.gperf" {"name_mrs", tok_name_mrs, 0}, -#line 162 "locfile-kw.gperf" +#line 164 "locfile-kw.gperf" {"name_miss", tok_name_miss, 0}, -#line 81 "locfile-kw.gperf" +#line 83 "locfile-kw.gperf" {"int_curr_symbol", tok_int_curr_symbol, 0}, -#line 186 "locfile-kw.gperf" +#line 188 "locfile-kw.gperf" {"source", tok_source, 0}, -#line 160 "locfile-kw.gperf" +#line 162 "locfile-kw.gperf" {"name_mr", tok_name_mr, 0}, -#line 159 "locfile-kw.gperf" +#line 161 "locfile-kw.gperf" {"name_gen", tok_name_gen, 0}, -#line 198 "locfile-kw.gperf" +#line 200 "locfile-kw.gperf" {"date", tok_date, 0}, {""}, {""}, -#line 187 "locfile-kw.gperf" +#line 189 "locfile-kw.gperf" {"address", tok_address, 0}, -#line 158 "locfile-kw.gperf" +#line 160 "locfile-kw.gperf" {"name_fmt", tok_name_fmt, 0}, -#line 31 "locfile-kw.gperf" +#line 32 "locfile-kw.gperf" {"copy", tok_copy, 0}, - {""}, {""}, -#line 49 "locfile-kw.gperf" - {"tolower", tok_tolower, 0}, -#line 129 "locfile-kw.gperf" - {"day", tok_day, 0}, #line 103 "locfile-kw.gperf" - {"duo_currency_symbol", tok_duo_currency_symbol, 0}, -#line 101 "locfile-kw.gperf" {"int_n_sign_posn", tok_int_n_sign_posn, 0}, {""}, {""}, -#line 148 "locfile-kw.gperf" +#line 131 "locfile-kw.gperf" + {"day", tok_day, 0}, +#line 105 "locfile-kw.gperf" + {"duo_currency_symbol", tok_duo_currency_symbol, 0}, + {""}, {""}, {""}, +#line 150 "locfile-kw.gperf" {"date_fmt", tok_date_fmt, 0}, -#line 63 "locfile-kw.gperf" +#line 64 "locfile-kw.gperf" {"order_end", tok_order_end, 0}, - {""}, {""}, -#line 166 "locfile-kw.gperf" +#line 117 "locfile-kw.gperf" + {"duo_n_sign_posn", tok_duo_n_sign_posn, 0}, + {""}, +#line 168 "locfile-kw.gperf" {"country_name", tok_country_name, 0}, -#line 70 "locfile-kw.gperf" +#line 71 "locfile-kw.gperf" {"reorder-after", tok_reorder_after, 0}, -#line 118 "locfile-kw.gperf" - {"uno_valid_from", tok_uno_valid_from, 0}, -#line 115 "locfile-kw.gperf" - {"duo_n_sign_posn", tok_duo_n_sign_posn, 0}, -#line 151 "locfile-kw.gperf" + {""}, {""}, +#line 153 "locfile-kw.gperf" {"noexpr", tok_noexpr, 0}, - {""}, -#line 194 "locfile-kw.gperf" +#line 50 "locfile-kw.gperf" + {"tolower", tok_tolower, 0}, +#line 196 "locfile-kw.gperf" {"audience", tok_audience, 0}, - {""}, -#line 44 "locfile-kw.gperf" - {"blank", tok_blank, 0}, - {""}, -#line 48 "locfile-kw.gperf" + {""}, {""}, {""}, +#line 49 "locfile-kw.gperf" {"toupper", tok_toupper, 0}, -#line 67 "locfile-kw.gperf" +#line 68 "locfile-kw.gperf" {"position", tok_position, 0}, -#line 120 "locfile-kw.gperf" - {"duo_valid_from", tok_duo_valid_from, 0}, -#line 39 "locfile-kw.gperf" + {""}, +#line 40 "locfile-kw.gperf" {"cntrl", tok_cntrl, 0}, {""}, -#line 26 "locfile-kw.gperf" +#line 27 "locfile-kw.gperf" {"comment_char", tok_comment_char, 0}, -#line 86 "locfile-kw.gperf" +#line 88 "locfile-kw.gperf" {"positive_sign", tok_positive_sign, 0}, {""}, {""}, {""}, {""}, -#line 132 "locfile-kw.gperf" - {"mon", tok_mon, 0}, - {""}, {""}, -#line 171 "locfile-kw.gperf" - {"country_car", tok_country_car, 0}, - {""}, -#line 60 "locfile-kw.gperf" +#line 61 "locfile-kw.gperf" {"symbol-equivalence", tok_symbol_equivalence, 0}, + {""}, #line 102 "locfile-kw.gperf" - {"duo_int_curr_symbol", tok_duo_int_curr_symbol, 0}, -#line 100 "locfile-kw.gperf" {"int_p_sign_posn", tok_int_p_sign_posn, 0}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 172 "locfile-kw.gperf" +#line 173 "locfile-kw.gperf" + {"country_car", tok_country_car, 0}, + {""}, {""}, +#line 104 "locfile-kw.gperf" + {"duo_int_curr_symbol", tok_duo_int_curr_symbol, 0}, + {""}, {""}, +#line 135 "locfile-kw.gperf" + {"d_t_fmt", tok_d_t_fmt, 0}, + {""}, {""}, +#line 116 "locfile-kw.gperf" + {"duo_p_sign_posn", tok_duo_p_sign_posn, 0}, +#line 185 "locfile-kw.gperf" + {"measurement", tok_measurement, 0}, +#line 174 "locfile-kw.gperf" {"country_isbn", tok_country_isbn, 0}, -#line 36 "locfile-kw.gperf" +#line 37 "locfile-kw.gperf" {"outdigit", tok_outdigit, 0}, - {""}, -#line 114 "locfile-kw.gperf" - {"duo_p_sign_posn", tok_duo_p_sign_posn, 0}, - {""}, -#line 133 "locfile-kw.gperf" - {"d_t_fmt", tok_d_t_fmt, 0}, {""}, {""}, -#line 33 "locfile-kw.gperf" +#line 143 "locfile-kw.gperf" + {"era_d_t_fmt", tok_era_d_t_fmt, 0}, + {""}, {""}, {""}, +#line 34 "locfile-kw.gperf" {"lower", tok_lower, 0}, - {""}, -#line 167 "locfile-kw.gperf" +#line 181 "locfile-kw.gperf" + {"tel_dom_fmt", tok_tel_dom_fmt, 0}, +#line 169 "locfile-kw.gperf" {"country_post", tok_country_post, 0}, -#line 146 "locfile-kw.gperf" +#line 148 "locfile-kw.gperf" {"cal_direction", tok_cal_direction, 0}, {""}, -#line 189 "locfile-kw.gperf" - {"email", tok_email, 0}, -#line 141 "locfile-kw.gperf" - {"era_d_t_fmt", tok_era_d_t_fmt, 0}, +#line 139 "locfile-kw.gperf" + {"t_fmt_ampm", tok_t_fmt_ampm, 0}, +#line 91 "locfile-kw.gperf" + {"frac_digits", tok_frac_digits, 0}, {""}, {""}, -#line 173 "locfile-kw.gperf" +#line 175 "locfile-kw.gperf" {"lang_name", tok_lang_name, 0}, - {""}, -#line 179 "locfile-kw.gperf" - {"tel_dom_fmt", tok_tel_dom_fmt, 0}, - {""}, {""}, {""}, -#line 54 "locfile-kw.gperf" - {"default_missing", tok_default_missing, 0}, -#line 89 "locfile-kw.gperf" - {"frac_digits", tok_frac_digits, 0}, - {""}, {""}, {""}, -#line 88 "locfile-kw.gperf" +#line 90 "locfile-kw.gperf" {"int_frac_digits", tok_int_frac_digits, 0}, -#line 170 "locfile-kw.gperf" - {"country_num", tok_country_num, 0}, -#line 119 "locfile-kw.gperf" + {""}, +#line 121 "locfile-kw.gperf" {"uno_valid_to", tok_uno_valid_to, 0}, - {""}, {""}, {""}, {""}, {""}, -#line 50 "locfile-kw.gperf" - {"map", tok_map, 0}, +#line 126 "locfile-kw.gperf" + {"decimal_point", tok_decimal_point, 0}, {""}, -#line 105 "locfile-kw.gperf" +#line 133 "locfile-kw.gperf" + {"abmon", tok_abmon, 0}, + {""}, {""}, {""}, {""}, +#line 107 "locfile-kw.gperf" {"duo_frac_digits", tok_duo_frac_digits, 0}, -#line 178 "locfile-kw.gperf" +#line 180 "locfile-kw.gperf" {"tel_int_fmt", tok_tel_int_fmt, 0}, -#line 121 "locfile-kw.gperf" +#line 123 "locfile-kw.gperf" {"duo_valid_to", tok_duo_valid_to, 0}, -#line 144 "locfile-kw.gperf" +#line 146 "locfile-kw.gperf" {"first_weekday", tok_first_weekday, 0}, {""}, -#line 143 "locfile-kw.gperf" - {"alt_digits", tok_alt_digits, 0}, -#line 95 "locfile-kw.gperf" +#line 130 "locfile-kw.gperf" + {"abday", tok_abday, 0}, + {""}, +#line 198 "locfile-kw.gperf" + {"abbreviation", tok_abbreviation, 0}, +#line 147 "locfile-kw.gperf" + {"first_workday", tok_first_workday, 0}, + {""}, {""}, +#line 97 "locfile-kw.gperf" {"n_sign_posn", tok_n_sign_posn, 0}, -#line 84 "locfile-kw.gperf" - {"mon_thousands_sep", tok_mon_thousands_sep, 0}, + {""}, {""}, {""}, #line 145 "locfile-kw.gperf" - {"first_workday", tok_first_workday, 0}, -#line 64 "locfile-kw.gperf" - {"from", tok_from, 0}, -#line 131 "locfile-kw.gperf" - {"abmon", tok_abmon, 0}, + {"alt_digits", tok_alt_digits, 0}, {""}, {""}, -#line 192 "locfile-kw.gperf" - {"language", tok_language, 0}, +#line 128 "locfile-kw.gperf" + {"grouping", tok_grouping, 0}, + {""}, +#line 45 "locfile-kw.gperf" + {"blank", tok_blank, 0}, {""}, {""}, -#line 195 "locfile-kw.gperf" - {"application", tok_application, 0}, +#line 194 "locfile-kw.gperf" + {"language", tok_language, 0}, +#line 120 "locfile-kw.gperf" + {"uno_valid_from", tok_uno_valid_from, 0}, {""}, -#line 126 "locfile-kw.gperf" - {"grouping", tok_grouping, 0}, -#line 78 "locfile-kw.gperf" - {"elif", tok_elif, 0}, -#line 128 "locfile-kw.gperf" - {"abday", tok_abday, 0}, +#line 197 "locfile-kw.gperf" + {"application", tok_application, 0}, {""}, -#line 196 "locfile-kw.gperf" - {"abbreviation", tok_abbreviation, 0}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 56 "locfile-kw.gperf" +#line 80 "locfile-kw.gperf" + {"elifndef", tok_elifndef, 0}, + {""}, {""}, {""}, {""}, {""}, +#line 122 "locfile-kw.gperf" + {"duo_valid_from", tok_duo_valid_from, 0}, +#line 57 "locfile-kw.gperf" {"coll_weight_max", tok_coll_weight_max, 0}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 66 "locfile-kw.gperf" + {""}, +#line 79 "locfile-kw.gperf" + {"elifdef", tok_elifdef, 0}, +#line 67 "locfile-kw.gperf" {"backward", tok_backward, 0}, -#line 104 "locfile-kw.gperf" +#line 106 "locfile-kw.gperf" {"duo_int_frac_digits", tok_duo_int_frac_digits, 0}, - {""}, -#line 94 "locfile-kw.gperf" + {""}, {""}, {""}, {""}, {""}, {""}, +#line 96 "locfile-kw.gperf" {"p_sign_posn", tok_p_sign_posn, 0}, {""}, -#line 199 "locfile-kw.gperf" +#line 201 "locfile-kw.gperf" {"category", tok_category, 0}, + {""}, {""}, {""}, {""}, +#line 134 "locfile-kw.gperf" + {"mon", tok_mon, 0}, {""}, -#line 122 "locfile-kw.gperf" +#line 124 "locfile-kw.gperf" {"conversion_rate", tok_conversion_rate, 0}, - {""}, -#line 83 "locfile-kw.gperf" - {"mon_decimal_point", tok_mon_decimal_point, 0}, - {""}, {""}, {""}, -#line 62 "locfile-kw.gperf" + {""}, {""}, {""}, {""}, {""}, +#line 63 "locfile-kw.gperf" {"order_start", tok_order_start, 0}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 188 "locfile-kw.gperf" + {""}, {""}, {""}, {""}, {""}, +#line 176 "locfile-kw.gperf" + {"lang_ab", tok_lang_ab, 0}, +#line 178 "locfile-kw.gperf" + {"lang_lib", tok_lang_lib, 0}, + {""}, {""}, {""}, +#line 190 "locfile-kw.gperf" {"contact", tok_contact, 0}, {""}, {""}, {""}, -#line 169 "locfile-kw.gperf" +#line 171 "locfile-kw.gperf" {"country_ab3", tok_country_ab3, 0}, - {""}, {""}, {""}, {""}, -#line 168 "locfile-kw.gperf" - {"country_ab2", tok_country_ab2, 0}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 174 "locfile-kw.gperf" - {"lang_ab", tok_lang_ab, 0}, -#line 176 "locfile-kw.gperf" - {"lang_lib", tok_lang_lib, 0}, - {""}, {""}, {""}, {""}, + {""}, {""}, {""}, #line 191 "locfile-kw.gperf" + {"email", tok_email, 0}, +#line 170 "locfile-kw.gperf" + {"country_ab2", tok_country_ab2, 0}, + {""}, {""}, {""}, +#line 55 "locfile-kw.gperf" + {"default_missing", tok_default_missing, 0}, + {""}, {""}, +#line 193 "locfile-kw.gperf" {"fax", tok_fax, 0}, - {""}, -#line 136 "locfile-kw.gperf" - {"am_pm", tok_am_pm, 0}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 172 "locfile-kw.gperf" + {"country_num", tok_country_num, 0}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 51 "locfile-kw.gperf" + {"map", tok_map, 0}, +#line 65 "locfile-kw.gperf" + {"from", tok_from, 0}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 86 "locfile-kw.gperf" + {"mon_thousands_sep", tok_mon_thousands_sep, 0}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 37 "locfile-kw.gperf" - {"alnum", tok_alnum, 0}, {""}, {""}, {""}, -#line 175 "locfile-kw.gperf" - {"lang_term", tok_lang_term, 0}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 79 "locfile-kw.gperf" +#line 81 "locfile-kw.gperf" {"endif", tok_endif, 0}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 165 "locfile-kw.gperf" - {"postal_fmt", tok_postal_fmt, 0}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 75 "locfile-kw.gperf" + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 76 "locfile-kw.gperf" {"undef", tok_undef, 0}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 58 "locfile-kw.gperf" - {"collating-element", tok_collating_element, 0}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 59 "locfile-kw.gperf" + {"collating-element", tok_collating_element, 0}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 85 "locfile-kw.gperf" - {"mon_grouping", tok_mon_grouping, 0}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 65 "locfile-kw.gperf" + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 66 "locfile-kw.gperf" {"forward", tok_forward, 0}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 59 "locfile-kw.gperf" + {""}, {""}, {""}, {""}, {""}, +#line 85 "locfile-kw.gperf" + {"mon_decimal_point", tok_mon_decimal_point, 0}, + {""}, {""}, +#line 167 "locfile-kw.gperf" + {"postal_fmt", tok_postal_fmt, 0}, + {""}, {""}, {""}, {""}, {""}, +#line 60 "locfile-kw.gperf" {"collating-symbol", tok_collating_symbol, 0}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 34 "locfile-kw.gperf" + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 35 "locfile-kw.gperf" {"alpha", tok_alpha, 0}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, +#line 38 "locfile-kw.gperf" + {"alnum", tok_alnum, 0}, + {""}, +#line 87 "locfile-kw.gperf" + {"mon_grouping", tok_mon_grouping, 0}, + {""}, +#line 177 "locfile-kw.gperf" + {"lang_term", tok_lang_term, 0}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 77 "locfile-kw.gperf" + {"ifdef", tok_ifdef, 0}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 76 "locfile-kw.gperf" - {"ifdef", tok_ifdef, 0} + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 138 "locfile-kw.gperf" + {"am_pm", tok_am_pm, 0} }; if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) |