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