1 
2 # line 2 "parser.y"
3 /*
4  * This file and its contents are supplied under the terms of the
5  * Common Development and Distribution License ("CDDL"), version 1.0.
6  * You may only use this file in accordance with the terms of version
7  * 1.0 of the CDDL.
8  *
9  * A full copy of the text of the CDDL should have accompanied this
10  * source.  A copy of the CDDL is also available via the Internet at
11  * http://www.illumos.org/license/CDDL.
12  */
13 
14 /*
15  * Copyright 2010 Nexenta Systems, Inc.  All rights reserved.
16  * Copyright 2013 DEY Storage Systems, Inc.
17  */
18 
19 /*
20  * POSIX localedef grammar.
21  */
22 
23 #include <wchar.h>
24 #include <stdio.h>
25 #include <limits.h>
26 #include "localedef.h"
27 
28 
29 # line 28 "parser.y"
30 typedef union
31 #ifdef __cplusplus
32 	YYSTYPE
33 #endif
34  {
35 	int		num;
36 	wchar_t		wc;
37 	char		*token;
38 	collsym_t	*collsym;
39 	collelem_t	*collelem;
40 } YYSTYPE;
41 # define T_CODE_SET 257
42 # define T_MB_CUR_MAX 258
43 # define T_MB_CUR_MIN 259
44 # define T_COM_CHAR 260
45 # define T_ESC_CHAR 261
46 # define T_LT 262
47 # define T_GT 263
48 # define T_NL 264
49 # define T_SEMI 265
50 # define T_COMMA 266
51 # define T_ELLIPSIS 267
52 # define T_RPAREN 268
53 # define T_LPAREN 269
54 # define T_QUOTE 270
55 # define T_NULL 271
56 # define T_WS 272
57 # define T_END 273
58 # define T_COPY 274
59 # define T_CHARMAP 275
60 # define T_WIDTH 276
61 # define T_CTYPE 277
62 # define T_ISUPPER 278
63 # define T_ISLOWER 279
64 # define T_ISALPHA 280
65 # define T_ISDIGIT 281
66 # define T_ISPUNCT 282
67 # define T_ISXDIGIT 283
68 # define T_ISSPACE 284
69 # define T_ISPRINT 285
70 # define T_ISGRAPH 286
71 # define T_ISBLANK 287
72 # define T_ISCNTRL 288
73 # define T_ISALNUM 289
74 # define T_ISSPECIAL 290
75 # define T_ISPHONOGRAM 291
76 # define T_ISIDEOGRAM 292
77 # define T_ISENGLISH 293
78 # define T_ISNUMBER 294
79 # define T_TOUPPER 295
80 # define T_TOLOWER 296
81 # define T_COLLATE 297
82 # define T_COLLATING_SYMBOL 298
83 # define T_COLLATING_ELEMENT 299
84 # define T_ORDER_START 300
85 # define T_ORDER_END 301
86 # define T_FORWARD 302
87 # define T_BACKWARD 303
88 # define T_POSITION 304
89 # define T_FROM 305
90 # define T_UNDEFINED 306
91 # define T_IGNORE 307
92 # define T_MESSAGES 308
93 # define T_YESSTR 309
94 # define T_NOSTR 310
95 # define T_YESEXPR 311
96 # define T_NOEXPR 312
97 # define T_MONETARY 313
98 # define T_INT_CURR_SYMBOL 314
99 # define T_CURRENCY_SYMBOL 315
100 # define T_MON_DECIMAL_POINT 316
101 # define T_MON_THOUSANDS_SEP 317
102 # define T_POSITIVE_SIGN 318
103 # define T_NEGATIVE_SIGN 319
104 # define T_MON_GROUPING 320
105 # define T_INT_FRAC_DIGITS 321
106 # define T_FRAC_DIGITS 322
107 # define T_P_CS_PRECEDES 323
108 # define T_P_SEP_BY_SPACE 324
109 # define T_N_CS_PRECEDES 325
110 # define T_N_SEP_BY_SPACE 326
111 # define T_P_SIGN_POSN 327
112 # define T_N_SIGN_POSN 328
113 # define T_INT_P_CS_PRECEDES 329
114 # define T_INT_N_CS_PRECEDES 330
115 # define T_INT_P_SEP_BY_SPACE 331
116 # define T_INT_N_SEP_BY_SPACE 332
117 # define T_INT_P_SIGN_POSN 333
118 # define T_INT_N_SIGN_POSN 334
119 # define T_NUMERIC 335
120 # define T_DECIMAL_POINT 336
121 # define T_THOUSANDS_SEP 337
122 # define T_GROUPING 338
123 # define T_TIME 339
124 # define T_ABDAY 340
125 # define T_DAY 341
126 # define T_ABMON 342
127 # define T_MON 343
128 # define T_ERA 344
129 # define T_ERA_D_FMT 345
130 # define T_ERA_T_FMT 346
131 # define T_ERA_D_T_FMT 347
132 # define T_ALT_DIGITS 348
133 # define T_D_T_FMT 349
134 # define T_D_FMT 350
135 # define T_T_FMT 351
136 # define T_AM_PM 352
137 # define T_T_FMT_AMPM 353
138 # define T_DATE_FMT 354
139 # define T_CHAR 355
140 # define T_NAME 356
141 # define T_NUMBER 357
142 # define T_SYMBOL 358
143 # define T_COLLSYM 359
144 # define T_COLLELEM 360
145 
146 #include <inttypes.h>
147 
148 #ifdef __STDC__
149 #include <stdlib.h>
150 #include <string.h>
151 #define	YYCONST	const
152 #else
153 #include <malloc.h>
154 #include <memory.h>
155 #define	YYCONST
156 #endif
157 
158 #include <values.h>
159 
160 #if defined(__cplusplus) || defined(__STDC__)
161 
162 #if defined(__cplusplus) && defined(__EXTERN_C__)
163 extern "C" {
164 #endif
165 #ifndef yyerror
166 #if defined(__cplusplus)
167 	void yyerror(YYCONST char *);
168 #endif
169 #endif
170 #ifndef yylex
171 	int yylex(void);
172 #endif
173 	int yyparse(void);
174 #if defined(__cplusplus) && defined(__EXTERN_C__)
175 }
176 #endif
177 
178 #endif
179 
180 #define yyclearin yychar = -1
181 #define yyerrok yyerrflag = 0
182 extern int yychar;
183 extern int yyerrflag;
184 YYSTYPE yylval;
185 YYSTYPE yyval;
186 typedef int yytabelem;
187 #ifndef YYMAXDEPTH
188 #define YYMAXDEPTH 150
189 #endif
190 #if YYMAXDEPTH > 0
191 int yy_yys[YYMAXDEPTH], *yys = yy_yys;
192 YYSTYPE yy_yyv[YYMAXDEPTH], *yyv = yy_yyv;
193 #else	/* user does initial allocation */
194 int *yys;
195 YYSTYPE *yyv;
196 #endif
197 static int yymaxdepth = YYMAXDEPTH;
198 # define YYERRCODE 256
199 static YYCONST yytabelem yyexca[] ={
200 -1, 1,
201 	0, -1,
202 	-2, 0,
203 	};
204 # define YYNPROD 191
205 # define YYLAST 556
206 static YYCONST yytabelem yyact[]={
207 
208    225,   364,   363,   232,   367,   365,   366,   329,   331,   218,
209    335,   356,    56,   338,   357,   354,    65,   335,   355,   273,
210    338,   156,   274,   319,   284,   239,   235,   183,   238,   236,
211    184,   217,   345,   376,    61,    61,    56,   314,   309,   308,
212    307,   165,   163,   160,   306,   224,   178,   176,    35,    35,
213    336,    32,    31,   159,   154,    51,   370,   336,   368,   304,
214     30,    29,   280,   286,   298,   284,   299,   147,   148,   149,
215    150,   151,   141,   140,   139,   152,   142,   143,   144,   153,
216    145,   146,   147,   148,   149,   150,   151,   141,   140,   139,
217    152,   142,   143,   144,   153,   145,   146,   284,   334,   326,
218    294,   337,   333,   332,   286,   334,    55,   166,   337,   333,
219    332,   317,   283,   246,   318,   287,   281,   285,   364,   172,
220    245,   367,   365,   366,   293,    59,    59,   241,    60,    60,
221     55,   164,   162,   240,   169,    34,   286,   292,   324,   155,
222     52,   158,   213,    67,    68,    69,    70,   214,   215,   216,
223    278,    65,   276,   283,   212,   252,   287,   281,   285,   219,
224     77,    78,    79,    80,    81,    82,    76,    83,    84,    85,
225     86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
226     96,    65,   125,   126,   122,   283,   279,   210,   287,   281,
227    285,    77,    78,    79,    80,    81,    82,    76,    83,    84,
228     85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
229     95,    96,    10,     8,     9,     6,     7,    18,    19,    22,
230     33,    65,   132,   133,   131,   214,   215,   216,   251,   233,
231     18,    19,    22,   231,   277,   202,    65,   227,   221,    23,
232    209,   205,   181,   132,   133,   131,   174,   168,    35,   203,
233     20,   374,    23,   373,   372,    21,    67,    68,    69,    70,
234    125,   126,   122,    20,   371,   290,   360,   361,    21,   322,
235    321,   301,   302,   296,   297,   288,   289,    24,   275,   272,
236    353,    25,   229,   271,   272,   378,   170,   171,   270,   254,
237     24,   179,   269,   254,    25,   175,   100,   101,   102,   103,
238    104,   105,   106,   107,   108,   109,   110,   111,   112,   116,
239    115,   113,   114,   117,   118,    65,   268,   254,   369,   100,
240    101,   102,   103,   104,   105,   106,   107,   108,   109,   110,
241    111,   112,   116,   115,   113,   114,   117,   118,   267,   254,
242    266,   254,   327,   265,   254,   264,   254,   263,   254,   262,
243    254,   222,   261,   254,   260,   254,   259,   254,   228,   230,
244    258,   254,   257,   254,   359,   377,   256,   254,   255,   254,
245    375,   253,   254,   249,   250,   358,   352,   351,   350,   349,
246    347,   346,   344,   343,   328,   325,   323,   316,   315,   313,
247    312,   311,   310,   305,   303,   300,   295,   291,   248,   247,
248    244,   243,   327,   242,   237,   234,    49,    48,    47,    46,
249     45,    44,    43,    42,    41,    40,    39,    38,    37,    36,
250    136,   129,   182,   124,   123,   119,    73,    64,   201,    58,
251     54,     5,   138,   341,     4,    28,    63,    27,     3,   137,
252    134,    26,    99,   223,   340,   130,   127,   177,    75,    74,
253     71,    66,    62,   362,   330,   282,   211,   120,    28,    97,
254     57,    53,    17,    16,    15,    14,    13,    12,    11,    50,
255      2,     1,     0,     0,     0,   339,    72,    98,   121,   128,
256    135,     0,     0,     0,   157,     0,     0,   161,     0,     0,
257    167,     0,     0,     0,     0,     0,     0,     0,   173,     0,
258      0,     0,     0,     0,     0,     0,     0,     0,   320,     0,
259      0,     0,     0,   342,     0,     0,     0,     0,     0,     0,
260      0,     0,     0,   348,   185,   186,   187,   188,   189,   190,
261    191,   192,   193,   194,   195,   196,   197,   198,   199,   200,
262    180,     0,     0,     0,   208,   207,   206,   204,     0,   220,
263      0,     0,     0,     0,     0,   226 };
264 static YYCONST yytabelem yypact[]={
265 
266    -45,-10000000,   -45,   -58,-10000000,-10000000,  -294,  -295,  -305,  -306,
267   -221,-10000000,-10000000,-10000000,-10000000,-10000000,-10000000,-10000000,   155,   154,
268    153,   152,   151,   150,   149,   148,   -58,-10000000,-10000000,   147,
269    146,   145,   144,   143,   142,  -215,  -228,  -229,   -53,  -123,
270     41,   -38,   -93,  -258,-10000000,-10000000,-10000000,-10000000,-10000000,-10000000,
271   -216,-10000000,-10000000,  -252,-10000000,  -214,-10000000,  -230,-10000000,  -225,
272   -226,-10000000,  -166,   -26,-10000000,  -222,   -22,-10000000,-10000000,-10000000,
273 -10000000,  -154,   -27,-10000000,   -22,  -310,  -311,-10000000,-10000000,-10000000,
274 -10000000,-10000000,-10000000,-10000000,-10000000,-10000000,-10000000,-10000000,-10000000,-10000000,
275 -10000000,-10000000,-10000000,-10000000,-10000000,-10000000,-10000000,    18,   -31,-10000000,
276   -328,  -328,  -328,  -328,  -328,  -328,  -328,  -328,  -328,  -328,
277   -328,  -328,  -328,  -328,  -328,  -328,  -328,   -20,   -20,   -32,
278   -116,   -33,   -77,-10000000,-10000000,  -327,  -349,  -114,   -35,-10000000,
279    -22,  -312,-10000000,-10000000,  -273,   -36,-10000000,   -22,   -22,-10000000,
280 -10000000,-10000000,-10000000,-10000000,-10000000,-10000000,-10000000,-10000000,-10000000,-10000000,
281 -10000000,-10000000,-10000000,-10000000,-10000000,-10000000,   -42,-10000000,-10000000,  -355,
282    -47,-10000000,   141,  -329,   140,  -330,  -175,-10000000,  -181,   139,
283    137,   136,  -193,-10000000,  -200,   135,   134,   109,-10000000,   -49,
284 -10000000,  -122,   107,-10000000,-10000000,   104,   102,    98,    96,    92,
285     90,    88,    85,    83,    81,    79,    76,    74,    52,    28,
286     24,    19,-10000000,  -336,    14,  -145,   -39,-10000000,-10000000,  -147,
287   -170,    11,    -1,-10000000,-10000000,-10000000,-10000000,   133,  -168,  -211,
288 -10000000,  -235,   132,     9,-10000000,  -275,-10000000,  -269,   131,     7,
289 -10000000,   130,  -296,   129,-10000000,  -313,  -317,-10000000,  -318,  -319,
290    128,   127,-10000000,-10000000,-10000000,   126,   125,-10000000,-10000000,-10000000,
291   -320,   124,   123,-10000000,  -244,-10000000,-10000000,-10000000,-10000000,-10000000,
292 -10000000,-10000000,-10000000,-10000000,-10000000,-10000000,-10000000,-10000000,-10000000,-10000000,
293 -10000000,-10000000,   -20,     4,     3,-10000000,   122,  -159,   121,  -202,
294 -10000000,   120,  -257,-10000000,-10000000,-10000000,-10000000,-10000000,  -170,  -155,
295   -155,-10000000,   -22,   119,   118,-10000000,-10000000,  -325,   117,   116,
296 -10000000,-10000000,   -22,-10000000,-10000000,-10000000,   115,   114,   113,   112,
297 -10000000,-10000000,-10000000,-10000000,-10000000,-10000000,-10000000,-10000000,-10000000,    15,
298 -10000000,  -340,  -344,-10000000,   111,-10000000,   100,-10000000,-10000000,-10000000,
299      2,-10000000,-10000000,-10000000,-10000000,-10000000,-10000000,-10000000,  -354,  -243,
300     -1,-10000000,    54,-10000000,-10000000,-10000000,-10000000,-10000000,-10000000,-10000000,
301 -10000000,-10000000,-10000000,  -299,    -4,   -14,   -15,   -17,-10000000,-10000000,
302 -10000000,  -250,  -237,-10000000,-10000000,-10000000,-10000000,-10000000,    21,-10000000,
303 -10000000,-10000000,-10000000,-10000000,-10000000,-10000000,-10000000,-10000000,-10000000 };
304 static YYCONST yytabelem yypgo[]={
305 
306      0,   471,   470,   438,   220,   469,   434,   436,   431,   468,
307    467,   466,   465,   464,   463,   462,   461,   460,   430,   429,
308    459,   442,   422,   428,   235,   425,   457,   424,   423,   186,
309    456,   154,   142,    62,   455,   454,     8,   453,     2,   452,
310    427,   451,   450,   426,   449,   448,   447,   446,   421,   445,
311    443,   440,   420,   439,   432,   282 };
312 static YYCONST yytabelem yyr1[]={
313 
314      0,     1,     1,     4,     4,     5,     5,     2,     2,     6,
315      6,     6,     6,     6,     6,     7,     7,     3,     3,     8,
316      8,     8,     8,     8,     8,     8,     9,     9,    16,    16,
317     18,    18,    18,    17,    17,    19,    19,    19,    19,    19,
318     19,    19,    12,    12,    20,    20,    21,    21,    21,    21,
319     21,    21,    21,    21,    21,    21,    21,    21,    21,    21,
320     21,    21,    21,    21,    21,    22,    22,    22,    22,    22,
321     23,    23,    24,    24,    24,    24,    13,    13,    13,    26,
322     26,    26,    26,    27,    28,    25,    25,    30,    30,    31,
323     31,    32,    32,    32,    29,    29,    33,    33,    33,    34,
324     34,    34,    34,    34,    35,    35,    35,    36,    36,    36,
325     36,    36,    36,    36,    37,    37,    38,    38,    38,    38,
326     10,    10,    39,    39,    41,    41,    41,    41,    40,    11,
327     11,    42,    42,    44,    44,    44,    44,    44,    44,    45,
328     45,    45,    45,    45,    45,    45,    45,    45,    45,    45,
329     45,    45,    45,    43,    43,    43,    46,    46,    14,    14,
330     47,    47,    48,    48,    49,    49,    50,    50,    15,    15,
331     51,    51,    52,    52,    54,    54,    54,    54,    54,    54,
332     54,    53,    53,    53,    53,    53,    53,    53,    53,    55,
333     55 };
334 static YYCONST yytabelem yyr2[]={
335 
336      0,     4,     2,     6,     4,     5,     3,     4,     2,     7,
337      7,     7,     7,     7,     7,     7,     7,     4,     2,     2,
338      2,     2,     2,     2,     2,     2,    12,    12,     4,     2,
339      5,     9,     2,     4,     2,     7,     7,    11,    11,    11,
340     11,     2,    13,    12,     4,     2,     6,     6,     6,     6,
341      6,     6,     6,     6,     6,     6,     6,     6,     6,     6,
342      6,     6,     6,     6,     6,     7,     7,    11,     3,     3,
343      6,     2,    11,    11,    11,    11,    13,    15,    12,     4,
344      4,     2,     2,     7,    11,    11,    12,     7,     3,     6,
345      2,     3,     3,     3,     4,     2,     5,     5,     7,     3,
346      3,     3,     3,     3,     6,     4,     2,     3,     3,     3,
347      3,     3,     3,     7,     4,     2,     3,     3,     3,     3,
348     13,    12,     4,     2,     2,     2,     2,     2,     7,    13,
349     12,     4,     2,     2,     2,     2,     2,     2,     2,     2,
350      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
351      2,     2,     2,     7,     7,     6,     3,     7,    13,    12,
352      4,     2,     7,     6,     2,     2,     3,     7,    13,    12,
353      4,     2,     7,     7,     2,     2,     2,     2,     2,     2,
354      2,     2,     2,     2,     2,     2,     2,     2,     2,     7,
355      3 };
356 static YYCONST yytabelem yychk[]={
357 
358 -10000000,    -1,    -2,    -3,    -6,    -8,   260,   261,   258,   259,
359    257,    -9,   -10,   -11,   -12,   -13,   -14,   -15,   275,   276,
360    308,   313,   277,   297,   335,   339,    -3,    -6,    -8,   355,
361    355,   357,   357,    -4,   356,   270,   264,   264,   264,   264,
362    264,   264,   264,   264,   264,   264,   264,   264,   264,   264,
363     -5,   270,   355,   -16,   -18,   358,   264,   -17,   -19,   355,
364    358,   264,   -39,    -7,   -40,   274,   -41,   309,   310,   311,
365    312,   -42,    -7,   -43,   -44,   -45,   320,   314,   315,   316,
366    317,   318,   319,   321,   322,   323,   324,   325,   326,   327,
367    328,   329,   330,   331,   332,   333,   334,   -20,    -7,   -21,
368    278,   279,   280,   281,   282,   283,   284,   285,   286,   287,
369    288,   289,   290,   293,   294,   292,   291,   295,   296,   -25,
370    -26,    -7,   300,   -27,   -28,   298,   299,   -47,    -7,   -48,
371    -49,   338,   336,   337,   -51,    -7,   -52,   -53,   -54,   347,
372    346,   345,   349,   350,   351,   353,   354,   340,   341,   342,
373    343,   344,   348,   352,   270,   355,   273,   -18,   355,   267,
374    273,   -19,   357,   267,   357,   267,   273,   -40,   273,   356,
375     -4,    -4,   273,   -43,   273,    -4,   357,   -46,   357,   273,
376    -21,   273,   -22,   355,   358,   -22,   -22,   -22,   -22,   -22,
377    -22,   -22,   -22,   -22,   -22,   -22,   -22,   -22,   -22,   -22,
378    -22,   -23,   -24,   269,   -23,   273,   -25,   -27,   -28,   273,
379    264,   -30,   -31,   -32,   302,   303,   304,   358,   358,   273,
380    -48,   273,    -4,   -50,   357,   273,   -52,   273,    -4,   -55,
381     -4,   275,   358,   276,   264,   355,   358,   264,   358,   355,
382    308,   308,   264,   264,   264,   313,   313,   264,   264,   264,
383    265,   277,   277,   264,   265,   264,   264,   264,   264,   264,
384    264,   264,   264,   264,   264,   264,   264,   264,   264,   264,
385    264,   264,   265,   355,   358,   264,   297,   273,   297,   -29,
386    -33,   359,   -34,   355,   267,   360,   306,   358,   264,   265,
387    266,   264,   305,   335,   335,   264,   264,   265,   339,   335,
388    264,   264,   265,   264,   355,   264,   357,   357,   357,   357,
389    264,   264,   264,   264,   357,   264,   264,   355,   358,   267,
390    -24,   266,   266,   264,   297,   264,   301,   -33,   264,   264,
391    -35,   -36,   360,   359,   355,   267,   307,   358,   270,   -29,
392    -31,   -32,    -4,   264,   264,   357,   264,   264,    -4,   264,
393    264,   264,   264,   265,   355,   358,   355,   358,   264,   264,
394    264,   265,   -37,   -38,   355,   359,   360,   358,   301,   264,
395    355,   268,   268,   268,   268,   -36,   270,   -38,   264 };
396 static YYCONST yytabelem yydef[]={
397 
398      0,    -2,     0,     2,     8,    18,     0,     0,     0,     0,
399      0,    19,    20,    21,    22,    23,    24,    25,     0,     0,
400      0,     0,     0,     0,     0,     0,     1,     7,    17,     0,
401      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
402      0,     0,     0,     0,     9,    10,    11,    12,    13,    14,
403      0,     4,     6,     0,    29,     0,    32,     0,    34,     0,
404      0,    41,     0,     0,   123,     0,     0,   124,   125,   126,
405    127,     0,     0,   132,     0,     0,     0,   133,   134,   135,
406    136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
407    146,   147,   148,   149,   150,   151,   152,     0,     0,    45,
408      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
409      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
410      0,     0,     0,    81,    82,     0,     0,     0,     0,   161,
411      0,     0,   164,   165,     0,     0,   171,     0,     0,   181,
412    182,   183,   184,   185,   186,   187,   188,   174,   175,   176,
413    177,   178,   179,   180,     3,     5,     0,    28,    30,     0,
414      0,    33,     0,     0,     0,     0,     0,   122,     0,     0,
415      0,     0,     0,   131,     0,     0,     0,     0,   156,     0,
416     44,     0,     0,    68,    69,     0,     0,     0,     0,     0,
417      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
418      0,     0,    71,     0,     0,     0,     0,    79,    80,     0,
419      0,     0,    88,    90,    91,    92,    93,     0,     0,     0,
420    160,     0,     0,     0,   166,     0,   170,     0,     0,     0,
421    190,     0,     0,     0,    35,     0,     0,    36,     0,     0,
422      0,     0,    15,    16,   128,     0,     0,   153,   154,   155,
423      0,     0,     0,    46,     0,    47,    48,    49,    50,    51,
424     52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
425     62,    63,     0,     0,     0,    64,     0,     0,     0,     0,
426     95,     0,     0,    99,   100,   101,   102,   103,     0,     0,
427      0,    83,     0,     0,     0,   162,   163,     0,     0,     0,
428    172,   173,     0,    26,    31,    27,     0,     0,     0,     0,
429    120,   121,   129,   130,   157,    42,    43,    65,    66,     0,
430     70,     0,     0,    76,     0,    78,     0,    94,    96,    97,
431      0,   106,   107,   108,   109,   110,   111,   112,     0,     0,
432     87,    89,     0,   158,   159,   167,   168,   169,   189,    37,
433     39,    38,    40,     0,     0,     0,     0,     0,    77,    85,
434     98,   105,     0,   115,   116,   117,   118,   119,     0,    84,
435     67,    72,    75,    73,    74,   104,   113,   114,    86 };
436 typedef struct
437 #ifdef __cplusplus
438 	yytoktype
439 #endif
440 {
441 #ifdef __cplusplus
442 const
443 #endif
444 char *t_name; int t_val; } yytoktype;
445 #ifndef YYDEBUG
446 #	define YYDEBUG	0	/* don't allow debugging */
447 #endif
448 
449 #if YYDEBUG
450 
451 yytoktype yytoks[] =
452 {
453 	"T_CODE_SET",	257,
454 	"T_MB_CUR_MAX",	258,
455 	"T_MB_CUR_MIN",	259,
456 	"T_COM_CHAR",	260,
457 	"T_ESC_CHAR",	261,
458 	"T_LT",	262,
459 	"T_GT",	263,
460 	"T_NL",	264,
461 	"T_SEMI",	265,
462 	"T_COMMA",	266,
463 	"T_ELLIPSIS",	267,
464 	"T_RPAREN",	268,
465 	"T_LPAREN",	269,
466 	"T_QUOTE",	270,
467 	"T_NULL",	271,
468 	"T_WS",	272,
469 	"T_END",	273,
470 	"T_COPY",	274,
471 	"T_CHARMAP",	275,
472 	"T_WIDTH",	276,
473 	"T_CTYPE",	277,
474 	"T_ISUPPER",	278,
475 	"T_ISLOWER",	279,
476 	"T_ISALPHA",	280,
477 	"T_ISDIGIT",	281,
478 	"T_ISPUNCT",	282,
479 	"T_ISXDIGIT",	283,
480 	"T_ISSPACE",	284,
481 	"T_ISPRINT",	285,
482 	"T_ISGRAPH",	286,
483 	"T_ISBLANK",	287,
484 	"T_ISCNTRL",	288,
485 	"T_ISALNUM",	289,
486 	"T_ISSPECIAL",	290,
487 	"T_ISPHONOGRAM",	291,
488 	"T_ISIDEOGRAM",	292,
489 	"T_ISENGLISH",	293,
490 	"T_ISNUMBER",	294,
491 	"T_TOUPPER",	295,
492 	"T_TOLOWER",	296,
493 	"T_COLLATE",	297,
494 	"T_COLLATING_SYMBOL",	298,
495 	"T_COLLATING_ELEMENT",	299,
496 	"T_ORDER_START",	300,
497 	"T_ORDER_END",	301,
498 	"T_FORWARD",	302,
499 	"T_BACKWARD",	303,
500 	"T_POSITION",	304,
501 	"T_FROM",	305,
502 	"T_UNDEFINED",	306,
503 	"T_IGNORE",	307,
504 	"T_MESSAGES",	308,
505 	"T_YESSTR",	309,
506 	"T_NOSTR",	310,
507 	"T_YESEXPR",	311,
508 	"T_NOEXPR",	312,
509 	"T_MONETARY",	313,
510 	"T_INT_CURR_SYMBOL",	314,
511 	"T_CURRENCY_SYMBOL",	315,
512 	"T_MON_DECIMAL_POINT",	316,
513 	"T_MON_THOUSANDS_SEP",	317,
514 	"T_POSITIVE_SIGN",	318,
515 	"T_NEGATIVE_SIGN",	319,
516 	"T_MON_GROUPING",	320,
517 	"T_INT_FRAC_DIGITS",	321,
518 	"T_FRAC_DIGITS",	322,
519 	"T_P_CS_PRECEDES",	323,
520 	"T_P_SEP_BY_SPACE",	324,
521 	"T_N_CS_PRECEDES",	325,
522 	"T_N_SEP_BY_SPACE",	326,
523 	"T_P_SIGN_POSN",	327,
524 	"T_N_SIGN_POSN",	328,
525 	"T_INT_P_CS_PRECEDES",	329,
526 	"T_INT_N_CS_PRECEDES",	330,
527 	"T_INT_P_SEP_BY_SPACE",	331,
528 	"T_INT_N_SEP_BY_SPACE",	332,
529 	"T_INT_P_SIGN_POSN",	333,
530 	"T_INT_N_SIGN_POSN",	334,
531 	"T_NUMERIC",	335,
532 	"T_DECIMAL_POINT",	336,
533 	"T_THOUSANDS_SEP",	337,
534 	"T_GROUPING",	338,
535 	"T_TIME",	339,
536 	"T_ABDAY",	340,
537 	"T_DAY",	341,
538 	"T_ABMON",	342,
539 	"T_MON",	343,
540 	"T_ERA",	344,
541 	"T_ERA_D_FMT",	345,
542 	"T_ERA_T_FMT",	346,
543 	"T_ERA_D_T_FMT",	347,
544 	"T_ALT_DIGITS",	348,
545 	"T_D_T_FMT",	349,
546 	"T_D_FMT",	350,
547 	"T_T_FMT",	351,
548 	"T_AM_PM",	352,
549 	"T_T_FMT_AMPM",	353,
550 	"T_DATE_FMT",	354,
551 	"T_CHAR",	355,
552 	"T_NAME",	356,
553 	"T_NUMBER",	357,
554 	"T_SYMBOL",	358,
555 	"T_COLLSYM",	359,
556 	"T_COLLELEM",	360,
557 	"-unknown-",	-1	/* ends search */
558 };
559 
560 #ifdef __cplusplus
561 const
562 #endif
563 char * yyreds[] =
564 {
565 	"-no such reduction-",
566 	"localedef : setting_list categories",
567 	"localedef : categories",
568 	"string : T_QUOTE charlist T_QUOTE",
569 	"string : T_QUOTE T_QUOTE",
570 	"charlist : charlist T_CHAR",
571 	"charlist : T_CHAR",
572 	"setting_list : setting_list setting",
573 	"setting_list : setting",
574 	"setting : T_COM_CHAR T_CHAR T_NL",
575 	"setting : T_ESC_CHAR T_CHAR T_NL",
576 	"setting : T_MB_CUR_MAX T_NUMBER T_NL",
577 	"setting : T_MB_CUR_MIN T_NUMBER T_NL",
578 	"setting : T_CODE_SET string T_NL",
579 	"setting : T_CODE_SET T_NAME T_NL",
580 	"copycat : T_COPY T_NAME T_NL",
581 	"copycat : T_COPY string T_NL",
582 	"categories : categories category",
583 	"categories : category",
584 	"category : charmap",
585 	"category : messages",
586 	"category : monetary",
587 	"category : ctype",
588 	"category : collate",
589 	"category : numeric",
590 	"category : time",
591 	"charmap : T_CHARMAP T_NL charmap_list T_END T_CHARMAP T_NL",
592 	"charmap : T_WIDTH T_NL width_list T_END T_WIDTH T_NL",
593 	"charmap_list : charmap_list charmap_entry",
594 	"charmap_list : charmap_entry",
595 	"charmap_entry : T_SYMBOL T_CHAR",
596 	"charmap_entry : T_SYMBOL T_ELLIPSIS T_SYMBOL T_CHAR",
597 	"charmap_entry : T_NL",
598 	"width_list : width_list width_entry",
599 	"width_list : width_entry",
600 	"width_entry : T_CHAR T_NUMBER T_NL",
601 	"width_entry : T_SYMBOL T_NUMBER T_NL",
602 	"width_entry : T_CHAR T_ELLIPSIS T_CHAR T_NUMBER T_NL",
603 	"width_entry : T_SYMBOL T_ELLIPSIS T_SYMBOL T_NUMBER T_NL",
604 	"width_entry : T_CHAR T_ELLIPSIS T_SYMBOL T_NUMBER T_NL",
605 	"width_entry : T_SYMBOL T_ELLIPSIS T_CHAR T_NUMBER T_NL",
606 	"width_entry : T_NL",
607 	"ctype : T_CTYPE T_NL ctype_list T_END T_CTYPE T_NL",
608 	"ctype : T_CTYPE T_NL copycat T_END T_CTYPE T_NL",
609 	"ctype_list : ctype_list ctype_kw",
610 	"ctype_list : ctype_kw",
611 	"ctype_kw : T_ISUPPER cc_list T_NL",
612 	"ctype_kw : T_ISLOWER cc_list T_NL",
613 	"ctype_kw : T_ISALPHA cc_list T_NL",
614 	"ctype_kw : T_ISDIGIT cc_list T_NL",
615 	"ctype_kw : T_ISPUNCT cc_list T_NL",
616 	"ctype_kw : T_ISXDIGIT cc_list T_NL",
617 	"ctype_kw : T_ISSPACE cc_list T_NL",
618 	"ctype_kw : T_ISPRINT cc_list T_NL",
619 	"ctype_kw : T_ISGRAPH cc_list T_NL",
620 	"ctype_kw : T_ISBLANK cc_list T_NL",
621 	"ctype_kw : T_ISCNTRL cc_list T_NL",
622 	"ctype_kw : T_ISALNUM cc_list T_NL",
623 	"ctype_kw : T_ISSPECIAL cc_list T_NL",
624 	"ctype_kw : T_ISENGLISH cc_list T_NL",
625 	"ctype_kw : T_ISNUMBER cc_list T_NL",
626 	"ctype_kw : T_ISIDEOGRAM cc_list T_NL",
627 	"ctype_kw : T_ISPHONOGRAM cc_list T_NL",
628 	"ctype_kw : T_TOUPPER conv_list T_NL",
629 	"ctype_kw : T_TOLOWER conv_list T_NL",
630 	"cc_list : cc_list T_SEMI T_CHAR",
631 	"cc_list : cc_list T_SEMI T_SYMBOL",
632 	"cc_list : cc_list T_SEMI T_ELLIPSIS T_SEMI T_CHAR",
633 	"cc_list : T_CHAR",
634 	"cc_list : T_SYMBOL",
635 	"conv_list : conv_list T_SEMI conv_pair",
636 	"conv_list : conv_pair",
637 	"conv_pair : T_LPAREN T_CHAR T_COMMA T_CHAR T_RPAREN",
638 	"conv_pair : T_LPAREN T_SYMBOL T_COMMA T_CHAR T_RPAREN",
639 	"conv_pair : T_LPAREN T_SYMBOL T_COMMA T_SYMBOL T_RPAREN",
640 	"conv_pair : T_LPAREN T_CHAR T_COMMA T_SYMBOL T_RPAREN",
641 	"collate : T_COLLATE T_NL coll_order T_END T_COLLATE T_NL",
642 	"collate : T_COLLATE T_NL coll_optional coll_order T_END T_COLLATE T_NL",
643 	"collate : T_COLLATE T_NL copycat T_END T_COLLATE T_NL",
644 	"coll_optional : coll_optional coll_symbols",
645 	"coll_optional : coll_optional coll_elements",
646 	"coll_optional : coll_symbols",
647 	"coll_optional : coll_elements",
648 	"coll_symbols : T_COLLATING_SYMBOL T_SYMBOL T_NL",
649 	"coll_elements : T_COLLATING_ELEMENT T_SYMBOL T_FROM string T_NL",
650 	"coll_order : T_ORDER_START T_NL order_list T_ORDER_END T_NL",
651 	"coll_order : T_ORDER_START order_args T_NL order_list T_ORDER_END T_NL",
652 	"order_args : order_args T_SEMI order_arg",
653 	"order_args : order_arg",
654 	"order_arg : order_arg T_COMMA order_dir",
655 	"order_arg : order_dir",
656 	"order_dir : T_FORWARD",
657 	"order_dir : T_BACKWARD",
658 	"order_dir : T_POSITION",
659 	"order_list : order_list order_item",
660 	"order_list : order_item",
661 	"order_item : T_COLLSYM T_NL",
662 	"order_item : order_itemkw T_NL",
663 	"order_item : order_itemkw order_weights T_NL",
664 	"order_itemkw : T_CHAR",
665 	"order_itemkw : T_ELLIPSIS",
666 	"order_itemkw : T_COLLELEM",
667 	"order_itemkw : T_UNDEFINED",
668 	"order_itemkw : T_SYMBOL",
669 	"order_weights : order_weights T_SEMI order_weight",
670 	"order_weights : order_weights T_SEMI",
671 	"order_weights : order_weight",
672 	"order_weight : T_COLLELEM",
673 	"order_weight : T_COLLSYM",
674 	"order_weight : T_CHAR",
675 	"order_weight : T_ELLIPSIS",
676 	"order_weight : T_IGNORE",
677 	"order_weight : T_SYMBOL",
678 	"order_weight : T_QUOTE order_str T_QUOTE",
679 	"order_str : order_str order_stritem",
680 	"order_str : order_stritem",
681 	"order_stritem : T_CHAR",
682 	"order_stritem : T_COLLSYM",
683 	"order_stritem : T_COLLELEM",
684 	"order_stritem : T_SYMBOL",
685 	"messages : T_MESSAGES T_NL messages_list T_END T_MESSAGES T_NL",
686 	"messages : T_MESSAGES T_NL copycat T_END T_MESSAGES T_NL",
687 	"messages_list : messages_list messages_item",
688 	"messages_list : messages_item",
689 	"messages_kw : T_YESSTR",
690 	"messages_kw : T_NOSTR",
691 	"messages_kw : T_YESEXPR",
692 	"messages_kw : T_NOEXPR",
693 	"messages_item : messages_kw string T_NL",
694 	"monetary : T_MONETARY T_NL monetary_list T_END T_MONETARY T_NL",
695 	"monetary : T_MONETARY T_NL copycat T_END T_MONETARY T_NL",
696 	"monetary_list : monetary_list monetary_kw",
697 	"monetary_list : monetary_kw",
698 	"monetary_strkw : T_INT_CURR_SYMBOL",
699 	"monetary_strkw : T_CURRENCY_SYMBOL",
700 	"monetary_strkw : T_MON_DECIMAL_POINT",
701 	"monetary_strkw : T_MON_THOUSANDS_SEP",
702 	"monetary_strkw : T_POSITIVE_SIGN",
703 	"monetary_strkw : T_NEGATIVE_SIGN",
704 	"monetary_numkw : T_INT_FRAC_DIGITS",
705 	"monetary_numkw : T_FRAC_DIGITS",
706 	"monetary_numkw : T_P_CS_PRECEDES",
707 	"monetary_numkw : T_P_SEP_BY_SPACE",
708 	"monetary_numkw : T_N_CS_PRECEDES",
709 	"monetary_numkw : T_N_SEP_BY_SPACE",
710 	"monetary_numkw : T_P_SIGN_POSN",
711 	"monetary_numkw : T_N_SIGN_POSN",
712 	"monetary_numkw : T_INT_P_CS_PRECEDES",
713 	"monetary_numkw : T_INT_N_CS_PRECEDES",
714 	"monetary_numkw : T_INT_P_SEP_BY_SPACE",
715 	"monetary_numkw : T_INT_N_SEP_BY_SPACE",
716 	"monetary_numkw : T_INT_P_SIGN_POSN",
717 	"monetary_numkw : T_INT_N_SIGN_POSN",
718 	"monetary_kw : monetary_strkw string T_NL",
719 	"monetary_kw : monetary_numkw T_NUMBER T_NL",
720 	"monetary_kw : T_MON_GROUPING mon_group_list T_NL",
721 	"mon_group_list : T_NUMBER",
722 	"mon_group_list : mon_group_list T_SEMI T_NUMBER",
723 	"numeric : T_NUMERIC T_NL numeric_list T_END T_NUMERIC T_NL",
724 	"numeric : T_NUMERIC T_NL copycat T_END T_NUMERIC T_NL",
725 	"numeric_list : numeric_list numeric_item",
726 	"numeric_list : numeric_item",
727 	"numeric_item : numeric_strkw string T_NL",
728 	"numeric_item : T_GROUPING group_list T_NL",
729 	"numeric_strkw : T_DECIMAL_POINT",
730 	"numeric_strkw : T_THOUSANDS_SEP",
731 	"group_list : T_NUMBER",
732 	"group_list : group_list T_SEMI T_NUMBER",
733 	"time : T_TIME T_NL time_kwlist T_END T_TIME T_NL",
734 	"time : T_TIME T_NL copycat T_END T_NUMERIC T_NL",
735 	"time_kwlist : time_kwlist time_kw",
736 	"time_kwlist : time_kw",
737 	"time_kw : time_strkw string T_NL",
738 	"time_kw : time_listkw time_list T_NL",
739 	"time_listkw : T_ABDAY",
740 	"time_listkw : T_DAY",
741 	"time_listkw : T_ABMON",
742 	"time_listkw : T_MON",
743 	"time_listkw : T_ERA",
744 	"time_listkw : T_ALT_DIGITS",
745 	"time_listkw : T_AM_PM",
746 	"time_strkw : T_ERA_D_T_FMT",
747 	"time_strkw : T_ERA_T_FMT",
748 	"time_strkw : T_ERA_D_FMT",
749 	"time_strkw : T_D_T_FMT",
750 	"time_strkw : T_D_FMT",
751 	"time_strkw : T_T_FMT",
752 	"time_strkw : T_T_FMT_AMPM",
753 	"time_strkw : T_DATE_FMT",
754 	"time_list : time_list T_SEMI string",
755 	"time_list : string",
756 };
757 #endif /* YYDEBUG */
758 # line	1 "/usr/share/lib/ccs/yaccpar"
759 /*
760  * CDDL HEADER START
761  *
762  * The contents of this file are subject to the terms of the
763  * Common Development and Distribution License, Version 1.0 only
764  * (the "License").  You may not use this file except in compliance
765  * with the License.
766  *
767  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
768  * or http://www.opensolaris.org/os/licensing.
769  * See the License for the specific language governing permissions
770  * and limitations under the License.
771  *
772  * When distributing Covered Code, include this CDDL HEADER in each
773  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
774  * If applicable, add the following below this CDDL HEADER, with the
775  * fields enclosed by brackets "[]" replaced with your own identifying
776  * information: Portions Copyright [yyyy] [name of copyright owner]
777  *
778  * CDDL HEADER END
779  */
780 /*
781  * Copyright 1993 Sun Microsystems, Inc.  All rights reserved.
782  * Use is subject to license terms.
783  */
784 
785 /* Copyright (c) 1988 AT&T */
786 /* All Rights Reserved */
787 
788 #pragma ident	"%Z%%M%	%I%	%E% SMI"
789 
790 /*
791 ** Skeleton parser driver for yacc output
792 */
793 
794 /*
795 ** yacc user known macros and defines
796 */
797 #define YYERROR		goto yyerrlab
798 #define YYACCEPT	return(0)
799 #define YYABORT		return(1)
800 #define YYBACKUP( newtoken, newvalue )\
801 {\
802 	if ( yychar >= 0 || ( yyr2[ yytmp ] >> 1 ) != 1 )\
803 	{\
804 		yyerror( "syntax error - cannot backup" );\
805 		goto yyerrlab;\
806 	}\
807 	yychar = newtoken;\
808 	yystate = *yyps;\
809 	yylval = newvalue;\
810 	goto yynewstate;\
811 }
812 #define YYRECOVERING()	(!!yyerrflag)
813 #define YYNEW(type)	malloc(sizeof(type) * yynewmax)
814 #define YYCOPY(to, from, type) \
815 	(type *) memcpy(to, (char *) from, yymaxdepth * sizeof (type))
816 #define YYENLARGE( from, type) \
817 	(type *) realloc((char *) from, yynewmax * sizeof(type))
818 #ifndef YYDEBUG
819 #	define YYDEBUG	1	/* make debugging available */
820 #endif
821 
822 /*
823 ** user known globals
824 */
825 int yydebug;			/* set to 1 to get debugging */
826 
827 /*
828 ** driver internal defines
829 */
830 #define YYFLAG		(-10000000)
831 
832 /*
833 ** global variables used by the parser
834 */
835 YYSTYPE *yypv;			/* top of value stack */
836 int *yyps;			/* top of state stack */
837 
838 int yystate;			/* current state */
839 int yytmp;			/* extra var (lasts between blocks) */
840 
841 int yynerrs;			/* number of errors */
842 int yyerrflag;			/* error recovery flag */
843 int yychar;			/* current input token number */
844 
845 
846 
847 #ifdef YYNMBCHARS
848 #define YYLEX()		yycvtok(yylex())
849 /*
850 ** yycvtok - return a token if i is a wchar_t value that exceeds 255.
851 **	If i<255, i itself is the token.  If i>255 but the neither
852 **	of the 30th or 31st bit is on, i is already a token.
853 */
854 #if defined(__STDC__) || defined(__cplusplus)
855 int yycvtok(int i)
856 #else
857 int yycvtok(i) int i;
858 #endif
859 {
860 	int first = 0;
861 	int last = YYNMBCHARS - 1;
862 	int mid;
863 	wchar_t j;
864 
865 	if(i&0x60000000){/*Must convert to a token. */
866 		if( yymbchars[last].character < i ){
867 			return i;/*Giving up*/
868 		}
869 		while ((last>=first)&&(first>=0)) {/*Binary search loop*/
870 			mid = (first+last)/2;
871 			j = yymbchars[mid].character;
872 			if( j==i ){/*Found*/
873 				return yymbchars[mid].tvalue;
874 			}else if( j<i ){
875 				first = mid + 1;
876 			}else{
877 				last = mid -1;
878 			}
879 		}
880 		/*No entry in the table.*/
881 		return i;/* Giving up.*/
882 	}else{/* i is already a token. */
883 		return i;
884 	}
885 }
886 #else/*!YYNMBCHARS*/
887 #define YYLEX()		yylex()
888 #endif/*!YYNMBCHARS*/
889 
890 /*
891 ** yyparse - return 0 if worked, 1 if syntax error not recovered from
892 */
893 #if defined(__STDC__) || defined(__cplusplus)
894 int yyparse(void)
895 #else
896 int yyparse()
897 #endif
898 {
899 	register YYSTYPE *yypvt = 0;	/* top of value stack for $vars */
900 
901 #if defined(__cplusplus) || defined(lint)
902 /*
903 	hacks to please C++ and lint - goto's inside
904 	switch should never be executed
905 */
906 	static int __yaccpar_lint_hack__ = 0;
907 	switch (__yaccpar_lint_hack__)
908 	{
909 		case 1: goto yyerrlab;
910 		case 2: goto yynewstate;
911 	}
912 #endif
913 
914 	/*
915 	** Initialize externals - yyparse may be called more than once
916 	*/
917 	yypv = &yyv[-1];
918 	yyps = &yys[-1];
919 	yystate = 0;
920 	yytmp = 0;
921 	yynerrs = 0;
922 	yyerrflag = 0;
923 	yychar = -1;
924 
925 #if YYMAXDEPTH <= 0
926 	if (yymaxdepth <= 0)
927 	{
928 		if ((yymaxdepth = YYEXPAND(0)) <= 0)
929 		{
930 			yyerror("yacc initialization error");
931 			YYABORT;
932 		}
933 	}
934 #endif
935 
936 	{
937 		register YYSTYPE *yy_pv;	/* top of value stack */
938 		register int *yy_ps;		/* top of state stack */
939 		register int yy_state;		/* current state */
940 		register int  yy_n;		/* internal state number info */
941 	goto yystack;	/* moved from 6 lines above to here to please C++ */
942 
943 		/*
944 		** get globals into registers.
945 		** branch to here only if YYBACKUP was called.
946 		*/
947 	yynewstate:
948 		yy_pv = yypv;
949 		yy_ps = yyps;
950 		yy_state = yystate;
951 		goto yy_newstate;
952 
953 		/*
954 		** get globals into registers.
955 		** either we just started, or we just finished a reduction
956 		*/
957 	yystack:
958 		yy_pv = yypv;
959 		yy_ps = yyps;
960 		yy_state = yystate;
961 
962 		/*
963 		** top of for (;;) loop while no reductions done
964 		*/
965 	yy_stack:
966 		/*
967 		** put a state and value onto the stacks
968 		*/
969 #if YYDEBUG
970 		/*
971 		** if debugging, look up token value in list of value vs.
972 		** name pairs.  0 and negative (-1) are special values.
973 		** Note: linear search is used since time is not a real
974 		** consideration while debugging.
975 		*/
976 		if ( yydebug )
977 		{
978 			register int yy_i;
979 
980 			printf( "State %d, token ", yy_state );
981 			if ( yychar == 0 )
982 				printf( "end-of-file\n" );
983 			else if ( yychar < 0 )
984 				printf( "-none-\n" );
985 			else
986 			{
987 				for ( yy_i = 0; yytoks[yy_i].t_val >= 0;
988 					yy_i++ )
989 				{
990 					if ( yytoks[yy_i].t_val == yychar )
991 						break;
992 				}
993 				printf( "%s\n", yytoks[yy_i].t_name );
994 			}
995 		}
996 #endif /* YYDEBUG */
997 		if ( ++yy_ps >= &yys[ yymaxdepth ] )	/* room on stack? */
998 		{
999 			/*
1000 			** reallocate and recover.  Note that pointers
1001 			** have to be reset, or bad things will happen
1002 			*/
1003 			long yyps_index = (yy_ps - yys);
1004 			long yypv_index = (yy_pv - yyv);
1005 			long yypvt_index = (yypvt - yyv);
1006 			int yynewmax;
1007 #ifdef YYEXPAND
1008 			yynewmax = YYEXPAND(yymaxdepth);
1009 #else
1010 			yynewmax = 2 * yymaxdepth;	/* double table size */
1011 			if (yymaxdepth == YYMAXDEPTH)	/* first time growth */
1012 			{
1013 				char *newyys = (char *)YYNEW(int);
1014 				char *newyyv = (char *)YYNEW(YYSTYPE);
1015 				if (newyys != 0 && newyyv != 0)
1016 				{
1017 					yys = YYCOPY(newyys, yys, int);
1018 					yyv = YYCOPY(newyyv, yyv, YYSTYPE);
1019 				}
1020 				else
1021 					yynewmax = 0;	/* failed */
1022 			}
1023 			else				/* not first time */
1024 			{
1025 				yys = YYENLARGE(yys, int);
1026 				yyv = YYENLARGE(yyv, YYSTYPE);
1027 				if (yys == 0 || yyv == 0)
1028 					yynewmax = 0;	/* failed */
1029 			}
1030 #endif
1031 			if (yynewmax <= yymaxdepth)	/* tables not expanded */
1032 			{
1033 				yyerror( "yacc stack overflow" );
1034 				YYABORT;
1035 			}
1036 			yymaxdepth = yynewmax;
1037 
1038 			yy_ps = yys + yyps_index;
1039 			yy_pv = yyv + yypv_index;
1040 			yypvt = yyv + yypvt_index;
1041 		}
1042 		*yy_ps = yy_state;
1043 		*++yy_pv = yyval;
1044 
1045 		/*
1046 		** we have a new state - find out what to do
1047 		*/
1048 	yy_newstate:
1049 		if ( ( yy_n = yypact[ yy_state ] ) <= YYFLAG )
1050 			goto yydefault;		/* simple state */
1051 #if YYDEBUG
1052 		/*
1053 		** if debugging, need to mark whether new token grabbed
1054 		*/
1055 		yytmp = yychar < 0;
1056 #endif
1057 		if ( ( yychar < 0 ) && ( ( yychar = YYLEX() ) < 0 ) )
1058 			yychar = 0;		/* reached EOF */
1059 #if YYDEBUG
1060 		if ( yydebug && yytmp )
1061 		{
1062 			register int yy_i;
1063 
1064 			printf( "Received token " );
1065 			if ( yychar == 0 )
1066 				printf( "end-of-file\n" );
1067 			else if ( yychar < 0 )
1068 				printf( "-none-\n" );
1069 			else
1070 			{
1071 				for ( yy_i = 0; yytoks[yy_i].t_val >= 0;
1072 					yy_i++ )
1073 				{
1074 					if ( yytoks[yy_i].t_val == yychar )
1075 						break;
1076 				}
1077 				printf( "%s\n", yytoks[yy_i].t_name );
1078 			}
1079 		}
1080 #endif /* YYDEBUG */
1081 		if ( ( ( yy_n += yychar ) < 0 ) || ( yy_n >= YYLAST ) )
1082 			goto yydefault;
1083 		if ( yychk[ yy_n = yyact[ yy_n ] ] == yychar )	/*valid shift*/
1084 		{
1085 			yychar = -1;
1086 			yyval = yylval;
1087 			yy_state = yy_n;
1088 			if ( yyerrflag > 0 )
1089 				yyerrflag--;
1090 			goto yy_stack;
1091 		}
1092 
1093 	yydefault:
1094 		if ( ( yy_n = yydef[ yy_state ] ) == -2 )
1095 		{
1096 #if YYDEBUG
1097 			yytmp = yychar < 0;
1098 #endif
1099 			if ( ( yychar < 0 ) && ( ( yychar = YYLEX() ) < 0 ) )
1100 				yychar = 0;		/* reached EOF */
1101 #if YYDEBUG
1102 			if ( yydebug && yytmp )
1103 			{
1104 				register int yy_i;
1105 
1106 				printf( "Received token " );
1107 				if ( yychar == 0 )
1108 					printf( "end-of-file\n" );
1109 				else if ( yychar < 0 )
1110 					printf( "-none-\n" );
1111 				else
1112 				{
1113 					for ( yy_i = 0;
1114 						yytoks[yy_i].t_val >= 0;
1115 						yy_i++ )
1116 					{
1117 						if ( yytoks[yy_i].t_val
1118 							== yychar )
1119 						{
1120 							break;
1121 						}
1122 					}
1123 					printf( "%s\n", yytoks[yy_i].t_name );
1124 				}
1125 			}
1126 #endif /* YYDEBUG */
1127 			/*
1128 			** look through exception table
1129 			*/
1130 			{
1131 				register YYCONST int *yyxi = yyexca;
1132 
1133 				while ( ( *yyxi != -1 ) ||
1134 					( yyxi[1] != yy_state ) )
1135 				{
1136 					yyxi += 2;
1137 				}
1138 				while ( ( *(yyxi += 2) >= 0 ) &&
1139 					( *yyxi != yychar ) )
1140 					;
1141 				if ( ( yy_n = yyxi[1] ) < 0 )
1142 					YYACCEPT;
1143 			}
1144 		}
1145 
1146 		/*
1147 		** check for syntax error
1148 		*/
1149 		if ( yy_n == 0 )	/* have an error */
1150 		{
1151 			/* no worry about speed here! */
1152 			switch ( yyerrflag )
1153 			{
1154 			case 0:		/* new error */
1155 				yyerror( "syntax error" );
1156 				goto skip_init;
1157 			yyerrlab:
1158 				/*
1159 				** get globals into registers.
1160 				** we have a user generated syntax type error
1161 				*/
1162 				yy_pv = yypv;
1163 				yy_ps = yyps;
1164 				yy_state = yystate;
1165 			skip_init:
1166 				yynerrs++;
1167 				/* FALLTHRU */
1168 			case 1:
1169 			case 2:		/* incompletely recovered error */
1170 					/* try again... */
1171 				yyerrflag = 3;
1172 				/*
1173 				** find state where "error" is a legal
1174 				** shift action
1175 				*/
1176 				while ( yy_ps >= yys )
1177 				{
1178 					yy_n = yypact[ *yy_ps ] + YYERRCODE;
1179 					if ( yy_n >= 0 && yy_n < YYLAST &&
1180 						yychk[yyact[yy_n]] == YYERRCODE)					{
1181 						/*
1182 						** simulate shift of "error"
1183 						*/
1184 						yy_state = yyact[ yy_n ];
1185 						goto yy_stack;
1186 					}
1187 					/*
1188 					** current state has no shift on
1189 					** "error", pop stack
1190 					*/
1191 #if YYDEBUG
1192 #	define _POP_ "Error recovery pops state %d, uncovers state %d\n"
1193 					if ( yydebug )
1194 						printf( _POP_, *yy_ps,
1195 							yy_ps[-1] );
1196 #	undef _POP_
1197 #endif
1198 					yy_ps--;
1199 					yy_pv--;
1200 				}
1201 				/*
1202 				** there is no state on stack with "error" as
1203 				** a valid shift.  give up.
1204 				*/
1205 				YYABORT;
1206 			case 3:		/* no shift yet; eat a token */
1207 #if YYDEBUG
1208 				/*
1209 				** if debugging, look up token in list of
1210 				** pairs.  0 and negative shouldn't occur,
1211 				** but since timing doesn't matter when
1212 				** debugging, it doesn't hurt to leave the
1213 				** tests here.
1214 				*/
1215 				if ( yydebug )
1216 				{
1217 					register int yy_i;
1218 
1219 					printf( "Error recovery discards " );
1220 					if ( yychar == 0 )
1221 						printf( "token end-of-file\n" );
1222 					else if ( yychar < 0 )
1223 						printf( "token -none-\n" );
1224 					else
1225 					{
1226 						for ( yy_i = 0;
1227 							yytoks[yy_i].t_val >= 0;
1228 							yy_i++ )
1229 						{
1230 							if ( yytoks[yy_i].t_val
1231 								== yychar )
1232 							{
1233 								break;
1234 							}
1235 						}
1236 						printf( "token %s\n",
1237 							yytoks[yy_i].t_name );
1238 					}
1239 				}
1240 #endif /* YYDEBUG */
1241 				if ( yychar == 0 )	/* reached EOF. quit */
1242 					YYABORT;
1243 				yychar = -1;
1244 				goto yy_newstate;
1245 			}
1246 		}/* end if ( yy_n == 0 ) */
1247 		/*
1248 		** reduction by production yy_n
1249 		** put stack tops, etc. so things right after switch
1250 		*/
1251 #if YYDEBUG
1252 		/*
1253 		** if debugging, print the string that is the user's
1254 		** specification of the reduction which is just about
1255 		** to be done.
1256 		*/
1257 		if ( yydebug )
1258 			printf( "Reduce by (%d) \"%s\"\n",
1259 				yy_n, yyreds[ yy_n ] );
1260 #endif
1261 		yytmp = yy_n;			/* value to switch over */
1262 		yypvt = yy_pv;			/* $vars top of value stack */
1263 		/*
1264 		** Look in goto table for next state
1265 		** Sorry about using yy_state here as temporary
1266 		** register variable, but why not, if it works...
1267 		** If yyr2[ yy_n ] doesn't have the low order bit
1268 		** set, then there is no action to be done for
1269 		** this reduction.  So, no saving & unsaving of
1270 		** registers done.  The only difference between the
1271 		** code just after the if and the body of the if is
1272 		** the goto yy_stack in the body.  This way the test
1273 		** can be made before the choice of what to do is needed.
1274 		*/
1275 		{
1276 			/* length of production doubled with extra bit */
1277 			register int yy_len = yyr2[ yy_n ];
1278 
1279 			if ( !( yy_len & 01 ) )
1280 			{
1281 				yy_len >>= 1;
1282 				yyval = ( yy_pv -= yy_len )[1];	/* $$ = $1 */
1283 				yy_state = yypgo[ yy_n = yyr1[ yy_n ] ] +
1284 					*( yy_ps -= yy_len ) + 1;
1285 				if ( yy_state >= YYLAST ||
1286 					yychk[ yy_state =
1287 					yyact[ yy_state ] ] != -yy_n )
1288 				{
1289 					yy_state = yyact[ yypgo[ yy_n ] ];
1290 				}
1291 				goto yy_stack;
1292 			}
1293 			yy_len >>= 1;
1294 			yyval = ( yy_pv -= yy_len )[1];	/* $$ = $1 */
1295 			yy_state = yypgo[ yy_n = yyr1[ yy_n ] ] +
1296 				*( yy_ps -= yy_len ) + 1;
1297 			if ( yy_state >= YYLAST ||
1298 				yychk[ yy_state = yyact[ yy_state ] ] != -yy_n )
1299 			{
1300 				yy_state = yyact[ yypgo[ yy_n ] ];
1301 			}
1302 		}
1303 					/* save until reenter driver code */
1304 		yystate = yy_state;
1305 		yyps = yy_ps;
1306 		yypv = yy_pv;
1307 	}
1308 	/*
1309 	** code supplied by user is placed in this switch
1310 	*/
1311 	switch( yytmp )
1312 	{
1313 
1314 case 5:
1315 # line 152 "parser.y"
1316 {
1317 			add_wcs(yypvt[-0].wc);
1318 		} break;
1319 case 6:
1320 # line 156 "parser.y"
1321 {
1322 			add_wcs(yypvt[-0].wc);
1323 		} break;
1324 case 9:
1325 # line 167 "parser.y"
1326 {
1327 			com_char = yypvt[-1].wc;
1328 		} break;
1329 case 10:
1330 # line 171 "parser.y"
1331 {
1332 			esc_char = yypvt[-1].wc;
1333 		} break;
1334 case 11:
1335 # line 175 "parser.y"
1336 {
1337 			mb_cur_max = yypvt[-1].num;
1338 		} break;
1339 case 12:
1340 # line 179 "parser.y"
1341 {
1342 			mb_cur_min = yypvt[-1].num;
1343 		} break;
1344 case 13:
1345 # line 183 "parser.y"
1346 {
1347 			wchar_t *w = get_wcs();
1348 			set_wide_encoding(to_mb_string(w));
1349 			free(w);
1350 		} break;
1351 case 14:
1352 # line 189 "parser.y"
1353 {
1354 			set_wide_encoding(yypvt[-1].token);
1355 		} break;
1356 case 15:
1357 # line 195 "parser.y"
1358 {
1359 			copy_category(yypvt[-1].token);
1360 		} break;
1361 case 16:
1362 # line 199 "parser.y"
1363 {
1364 			wchar_t *w = get_wcs();
1365 			copy_category(to_mb_string(w));
1366 			free(w);
1367 		} break;
1368 case 30:
1369 # line 232 "parser.y"
1370 {
1371 			add_charmap(yypvt[-1].token, yypvt[-0].wc);
1372 			scan_to_eol();
1373 		} break;
1374 case 31:
1375 # line 237 "parser.y"
1376 {
1377 			add_charmap_range(yypvt[-3].token, yypvt[-1].token, yypvt[-0].wc);
1378 			scan_to_eol();
1379 		} break;
1380 case 35:
1381 # line 249 "parser.y"
1382 {
1383 			add_width(yypvt[-2].wc, yypvt[-1].num);
1384 		} break;
1385 case 36:
1386 # line 253 "parser.y"
1387 {
1388 			add_charmap_undefined(yypvt[-2].token);
1389 		} break;
1390 case 37:
1391 # line 257 "parser.y"
1392 {
1393 			add_width_range(yypvt[-4].wc, yypvt[-2].wc, yypvt[-1].num);
1394 		} break;
1395 case 38:
1396 # line 261 "parser.y"
1397 {
1398 			add_charmap_undefined(yypvt[-4].token);
1399 			add_charmap_undefined(yypvt[-2].token);
1400 		} break;
1401 case 39:
1402 # line 266 "parser.y"
1403 {
1404 			add_width(yypvt[-4].wc, yypvt[-1].num);
1405 			add_charmap_undefined(yypvt[-2].token);
1406 		} break;
1407 case 40:
1408 # line 271 "parser.y"
1409 {
1410 			add_width(yypvt[-2].wc, yypvt[-1].num);
1411 			add_charmap_undefined(yypvt[-4].token);
1412 		} break;
1413 case 42:
1414 # line 279 "parser.y"
1415 {
1416 			dump_ctype();
1417 		} break;
1418 case 65:
1419 # line 312 "parser.y"
1420 {
1421 			add_ctype(yypvt[-0].wc);
1422 		} break;
1423 case 66:
1424 # line 316 "parser.y"
1425 {
1426 			add_charmap_undefined(yypvt[-0].token);
1427 		} break;
1428 case 67:
1429 # line 320 "parser.y"
1430 {
1431 			/* note that the endpoints *must* be characters */
1432 			add_ctype_range(yypvt[-0].wc);
1433 		} break;
1434 case 68:
1435 # line 325 "parser.y"
1436 {
1437 			add_ctype(yypvt[-0].wc);
1438 		} break;
1439 case 69:
1440 # line 329 "parser.y"
1441 {
1442 			add_charmap_undefined(yypvt[-0].token);
1443 		} break;
1444 case 72:
1445 # line 340 "parser.y"
1446 {
1447 			add_caseconv(yypvt[-3].wc, yypvt[-1].wc);
1448 		} break;
1449 case 73:
1450 # line 344 "parser.y"
1451 {
1452 			add_charmap_undefined(yypvt[-3].token);
1453 		} break;
1454 case 74:
1455 # line 348 "parser.y"
1456 {
1457 			add_charmap_undefined(yypvt[-3].token);
1458 			add_charmap_undefined(yypvt[-1].token);
1459 		} break;
1460 case 75:
1461 # line 353 "parser.y"
1462 {
1463 			add_charmap_undefined(yypvt[-1].token);
1464 		} break;
1465 case 76:
1466 # line 359 "parser.y"
1467 {
1468 			dump_collate();
1469 		} break;
1470 case 77:
1471 # line 363 "parser.y"
1472 {
1473 			dump_collate();
1474 		} break;
1475 case 83:
1476 # line 378 "parser.y"
1477 {
1478 			define_collsym(yypvt[-1].token);
1479 		} break;
1480 case 84:
1481 # line 385 "parser.y"
1482 {
1483 			define_collelem(yypvt[-3].token, get_wcs());
1484 		} break;
1485 case 85:
1486 # line 391 "parser.y"
1487 {
1488 			/* If no order list supplied default to one forward */
1489 			add_order_bit(T_FORWARD);
1490 			add_order_directive();
1491 		} break;
1492 case 87:
1493 # line 401 "parser.y"
1494 {
1495 			add_order_directive();
1496 		} break;
1497 case 88:
1498 # line 405 "parser.y"
1499 {
1500 			add_order_directive();
1501 		} break;
1502 case 91:
1503 # line 415 "parser.y"
1504 {
1505 			add_order_bit(T_FORWARD);
1506 		} break;
1507 case 92:
1508 # line 419 "parser.y"
1509 {
1510 			add_order_bit(T_BACKWARD);
1511 		} break;
1512 case 93:
1513 # line 423 "parser.y"
1514 {
1515 			add_order_bit(T_POSITION);
1516 		} break;
1517 case 96:
1518 # line 433 "parser.y"
1519 {
1520 			end_order_collsym(yypvt[-1].collsym);
1521 		} break;
1522 case 97:
1523 # line 437 "parser.y"
1524 {
1525 			end_order();
1526 		} break;
1527 case 98:
1528 # line 441 "parser.y"
1529 {
1530 			end_order();
1531 		} break;
1532 case 99:
1533 # line 447 "parser.y"
1534 {
1535 			start_order_char(yypvt[-0].wc);
1536 		} break;
1537 case 100:
1538 # line 451 "parser.y"
1539 {
1540 			start_order_ellipsis();
1541 		} break;
1542 case 101:
1543 # line 455 "parser.y"
1544 {
1545 			start_order_collelem(yypvt[-0].collelem);
1546 		} break;
1547 case 102:
1548 # line 459 "parser.y"
1549 {
1550 			start_order_undefined();
1551 		} break;
1552 case 103:
1553 # line 463 "parser.y"
1554 {
1555 			start_order_symbol(yypvt[-0].token);
1556 		} break;
1557 case 107:
1558 # line 474 "parser.y"
1559 {
1560 			add_order_collelem(yypvt[-0].collelem);
1561 		} break;
1562 case 108:
1563 # line 478 "parser.y"
1564 {
1565 			add_order_collsym(yypvt[-0].collsym);
1566 		} break;
1567 case 109:
1568 # line 482 "parser.y"
1569 {
1570 			add_order_char(yypvt[-0].wc);
1571 		} break;
1572 case 110:
1573 # line 486 "parser.y"
1574 {
1575 			add_order_ellipsis();
1576 		} break;
1577 case 111:
1578 # line 490 "parser.y"
1579 {
1580 			add_order_ignore();
1581 		} break;
1582 case 112:
1583 # line 494 "parser.y"
1584 {
1585 			add_order_symbol(yypvt[-0].token);
1586 		} break;
1587 case 113:
1588 # line 498 "parser.y"
1589 {
1590 			add_order_subst();
1591 		} break;
1592 case 116:
1593 # line 508 "parser.y"
1594 {
1595 			add_subst_char(yypvt[-0].wc);
1596 		} break;
1597 case 117:
1598 # line 512 "parser.y"
1599 {
1600 			add_subst_collsym(yypvt[-0].collsym);
1601 		} break;
1602 case 118:
1603 # line 516 "parser.y"
1604 {
1605 			add_subst_collelem(yypvt[-0].collelem);
1606 		} break;
1607 case 119:
1608 # line 520 "parser.y"
1609 {
1610 			add_subst_symbol(yypvt[-0].token);
1611 		} break;
1612 case 120:
1613 # line 526 "parser.y"
1614 {
1615 			dump_messages();
1616 		} break;
1617 case 128:
1618 # line 543 "parser.y"
1619 {
1620 			add_message(get_wcs());
1621 		} break;
1622 case 129:
1623 # line 549 "parser.y"
1624 {
1625 			dump_monetary();
1626 		} break;
1627 case 153:
1628 # line 584 "parser.y"
1629 {
1630 			add_monetary_str(get_wcs());
1631 		} break;
1632 case 154:
1633 # line 588 "parser.y"
1634 {
1635 			add_monetary_num(yypvt[-1].num);
1636 		} break;
1637 case 156:
1638 # line 595 "parser.y"
1639 {
1640 			reset_monetary_group();
1641 			add_monetary_group(yypvt[-0].num);
1642 		} break;
1643 case 157:
1644 # line 600 "parser.y"
1645 {
1646 			add_monetary_group(yypvt[-0].num);
1647 		} break;
1648 case 158:
1649 # line 607 "parser.y"
1650 {
1651 			dump_numeric();
1652 		} break;
1653 case 162:
1654 # line 620 "parser.y"
1655 {
1656 			add_numeric_str(get_wcs());
1657 		} break;
1658 case 166:
1659 # line 632 "parser.y"
1660 {
1661 			reset_numeric_group();
1662 			add_numeric_group(yypvt[-0].num);
1663 		} break;
1664 case 167:
1665 # line 637 "parser.y"
1666 {
1667 			add_numeric_group(yypvt[-0].num);
1668 		} break;
1669 case 168:
1670 # line 644 "parser.y"
1671 {
1672 			dump_time();
1673 		} break;
1674 case 172:
1675 # line 655 "parser.y"
1676 {
1677 			add_time_str(get_wcs());
1678 		} break;
1679 case 173:
1680 # line 659 "parser.y"
1681 {
1682 			check_time_list();
1683 		} break;
1684 case 189:
1685 # line 684 "parser.y"
1686 {
1687 			add_time_list(get_wcs());
1688 		} break;
1689 case 190:
1690 # line 688 "parser.y"
1691 {
1692 			reset_time_list();
1693 			add_time_list(get_wcs());
1694 		} break;
1695 # line	556 "/usr/share/lib/ccs/yaccpar"
1696 	}
1697 	goto yystack;		/* reset registers in driver code */
1698 }
1699 
1700