installparse.c (12353B)
1 /* This Source Code Form is subject to the terms of the Mozilla Public 2 * License, v. 2.0. If a copy of the MPL was not distributed with this 3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 4 5 #ifndef lint 6 char yysccsid[] = "@(#)yaccpar 1.4 (Berkeley) 02/25/90"; 7 #endif 8 #line 37 "installparse.y" 9 10 #define yyparse Pk11Install_yyparse 11 #define yylex Pk11Install_yylex 12 #define yyerror Pk11Install_yyerror 13 #define yychar Pk11Install_yychar 14 #define yyval Pk11Install_yyval 15 #define yylval Pk11Install_yylval 16 #define yydebug Pk11Install_yydebug 17 #define yynerrs Pk11Install_yynerrs 18 #define yyerrflag Pk11Install_yyerrflag 19 #define yyss Pk11Install_yyss 20 #define yyssp Pk11Install_yyssp 21 #define yyvs Pk11Install_yyvs 22 #define yyvsp Pk11Install_yyvsp 23 #define yylhs Pk11Install_yylhs 24 #define yylen Pk11Install_yylen 25 #define yydefred Pk11Install_yydefred 26 #define yydgoto Pk11Install_yydgoto 27 #define yysindex Pk11Install_yysindex 28 #define yyrindex Pk11Install_yyrindex 29 #define yygindex Pk11Install_yygindex 30 #define yytable Pk11Install_yytable 31 #define yycheck Pk11Install_yycheck 32 #define yyname Pk11Install_yyname 33 #define yyrule Pk11Install_yyrule 34 35 /* C Stuff */ 36 #include "install-ds.h" 37 #include <prprf.h> 38 39 #define YYSTYPE Pk11Install_Pointer 40 extern char *Pk11Install_yytext; 41 char *Pk11Install_yyerrstr = NULL; 42 43 #line 40 "ytab.c" 44 #define OPENBRACE 257 45 #define CLOSEBRACE 258 46 #define STRING 259 47 #define YYERRCODE 256 48 /* clang-format on */ 49 short yylhs[] = { 50 -1, 51 0, 52 1, 53 1, 54 2, 55 2, 56 3, 57 4 58 }; 59 short yylen[] = { 60 2, 61 1, 62 2, 63 0, 64 1, 65 1, 66 4, 67 1 68 }; 69 short yydefred[] = { 70 0, 71 0, 72 0, 73 1, 74 0, 75 4, 76 0, 77 2, 78 0, 79 0, 80 6 81 }; 82 short yydgoto[] = { 83 2, 84 3, 85 4, 86 5, 87 6 88 }; 89 short yysindex[] = { 90 -257, 91 0, 92 0, 93 0, 94 -257, 95 0, 96 -252, 97 0, 98 -257, 99 -251, 100 0 101 }; 102 short yyrindex[] = { 103 6, 104 1, 105 0, 106 0, 107 3, 108 0, 109 0, 110 0, 111 -250, 112 0, 113 0 114 }; 115 short yygindex[] = { 116 0, 117 -4, 118 0, 119 0, 120 0 121 }; 122 #define YYTABLESIZE 261 123 short yytable[] = { 124 7, 125 5, 1, 3, 9, 8, 3, 10, 3, 0, 0, 126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 129 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 130 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 131 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 132 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 133 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 134 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 135 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 136 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 137 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 138 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 141 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 142 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 143 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 144 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 145 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 146 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 147 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 148 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 149 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150 0, 0, 0, 0, 0, 0, 0, 7, 5, 5, 151 3 152 }; 153 short yycheck[] = { 154 4, 155 0, 259, 0, 8, 257, 0, 258, 258, -1, -1, 156 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 157 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 158 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 159 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 160 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 161 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 162 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 165 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 166 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 167 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 168 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 169 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 170 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 171 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 172 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 173 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 174 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 175 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 176 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 177 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 178 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 180 -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, 181 258 182 }; 183 /* clang-format on */ 184 #define YYFINAL 2 185 #ifndef YYDEBUG 186 #define YYDEBUG 0 187 #endif 188 #define YYMAXTOKEN 259 189 #if YYDEBUG 190 char *yyname[] = { 191 "end-of-file", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 193 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 194 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 195 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 196 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 197 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "OPENBRACE", "CLOSEBRACE", "STRING" 198 }; 199 char *yyrule[] = { 200 "$accept : toplist", 201 "toplist : valuelist", 202 "valuelist : value valuelist", 203 "valuelist :", 204 "value : key_value_pair", 205 "value : STRING", 206 "key_value_pair : key OPENBRACE valuelist CLOSEBRACE", 207 "key : STRING", 208 }; 209 #endif 210 #ifndef YYSTYPE 211 typedef int YYSTYPE; 212 #endif 213 #define yyclearin (yychar = (-1)) 214 #define yyerrok (yyerrflag = 0) 215 #ifndef YYSTACKSIZE 216 #ifdef YYMAXDEPTH 217 #define YYSTACKSIZE YYMAXDEPTH 218 #else 219 #define YYSTACKSIZE 300 220 #endif 221 #endif 222 int yydebug; 223 int yynerrs; 224 int yyerrflag; 225 int yychar; 226 short *yyssp; 227 YYSTYPE *yyvsp; 228 YYSTYPE yyval; 229 YYSTYPE yylval; 230 #define yystacksize YYSTACKSIZE 231 short yyss[YYSTACKSIZE]; 232 YYSTYPE yyvs[YYSTACKSIZE]; 233 #line 118 "installparse.y" 234 /*----------------------- Program Section --------------------------------*/ 235 236 /*************************************************************************/ 237 void 238 Pk11Install_yyerror(char *message) 239 { 240 char *tmp; 241 if (Pk11Install_yyerrstr) { 242 tmp = PR_smprintf("%sline %d: %s\n", Pk11Install_yyerrstr, 243 Pk11Install_yylinenum, message); 244 PR_smprintf_free(Pk11Install_yyerrstr); 245 } else { 246 tmp = PR_smprintf("line %d: %s\n", Pk11Install_yylinenum, message); 247 } 248 Pk11Install_yyerrstr = tmp; 249 } 250 #line 191 "ytab.c" 251 #define YYABORT goto yyabort 252 #define YYACCEPT goto yyaccept 253 #define YYERROR goto yyerrlab 254 int 255 yyparse() 256 { 257 register int yym, yyn, yystate; 258 #if YYDEBUG 259 register char *yys; 260 extern char *PR_GetEnvSecure(); 261 262 if ((yys = PR_GetEnvSecure("YYDEBUG")) != NULL) { 263 yyn = *yys; 264 if (yyn >= '0' && yyn <= '9') 265 yydebug = yyn - '0'; 266 } 267 #endif 268 269 yynerrs = 0; 270 yyerrflag = 0; 271 yychar = (-1); 272 273 yyssp = yyss; 274 yyvsp = yyvs; 275 *yyssp = yystate = 0; 276 277 yyloop: 278 if ((yyn = yydefred[yystate]) != 0) 279 goto yyreduce; 280 if (yychar < 0) { 281 if ((yychar = yylex()) < 0) 282 yychar = 0; 283 #if YYDEBUG 284 if (yydebug) { 285 yys = 0; 286 if (yychar <= YYMAXTOKEN) 287 yys = yyname[yychar]; 288 if (!yys) 289 yys = "illegal-symbol"; 290 printf("yydebug: state %d, reading %d (%s)\n", yystate, 291 yychar, yys); 292 } 293 #endif 294 } 295 if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && 296 yyn <= YYTABLESIZE && yycheck[yyn] == yychar) { 297 #if YYDEBUG 298 if (yydebug) 299 printf("yydebug: state %d, shifting to state %d\n", 300 yystate, yytable[yyn]); 301 #endif 302 if (yyssp >= yyss + yystacksize - 1) { 303 goto yyoverflow; 304 } 305 *++yyssp = yystate = yytable[yyn]; 306 *++yyvsp = yylval; 307 yychar = (-1); 308 if (yyerrflag > 0) 309 --yyerrflag; 310 goto yyloop; 311 } 312 if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && 313 yyn <= YYTABLESIZE && yycheck[yyn] == yychar) { 314 yyn = yytable[yyn]; 315 goto yyreduce; 316 } 317 if (yyerrflag) 318 goto yyinrecovery; 319 #ifdef lint 320 goto yynewerror; 321 yynewerror: 322 #endif 323 yyerror("syntax error"); 324 #ifdef lint 325 goto yyerrlab; 326 yyerrlab: 327 #endif 328 ++yynerrs; 329 yyinrecovery: 330 if (yyerrflag < 3) { 331 yyerrflag = 3; 332 for (;;) { 333 if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 && 334 yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) { 335 #if YYDEBUG 336 if (yydebug) 337 printf("yydebug: state %d, error recovery shifting\ 338 to state %d\n", 339 *yyssp, yytable[yyn]); 340 #endif 341 if (yyssp >= yyss + yystacksize - 1) { 342 goto yyoverflow; 343 } 344 *++yyssp = yystate = yytable[yyn]; 345 *++yyvsp = yylval; 346 goto yyloop; 347 } else { 348 #if YYDEBUG 349 if (yydebug) 350 printf("yydebug: error recovery discarding state %d\n", 351 *yyssp); 352 #endif 353 if (yyssp <= yyss) 354 goto yyabort; 355 --yyssp; 356 --yyvsp; 357 } 358 } 359 } else { 360 if (yychar == 0) 361 goto yyabort; 362 #if YYDEBUG 363 if (yydebug) { 364 yys = 0; 365 if (yychar <= YYMAXTOKEN) 366 yys = yyname[yychar]; 367 if (!yys) 368 yys = "illegal-symbol"; 369 printf("yydebug: state %d, error recovery discards token %d (%s)\n", 370 yystate, yychar, yys); 371 } 372 #endif 373 yychar = (-1); 374 goto yyloop; 375 } 376 yyreduce: 377 #if YYDEBUG 378 if (yydebug) 379 printf("yydebug: state %d, reducing by rule %d (%s)\n", 380 yystate, yyn, yyrule[yyn]); 381 #endif 382 yym = yylen[yyn]; 383 yyval = yyvsp[1 - yym]; 384 switch (yyn) { 385 case 1: 386 #line 84 "installparse.y" 387 { 388 Pk11Install_valueList = yyvsp[0].list; 389 } break; 390 case 2: 391 #line 89 "installparse.y" 392 { 393 Pk11Install_ValueList_AddItem(yyvsp[0].list, yyvsp[-1].value); 394 yyval.list = yyvsp[0].list; 395 } break; 396 case 3: 397 #line 94 "installparse.y" 398 { 399 yyval.list = Pk11Install_ValueList_new(); 400 } break; 401 case 4: 402 #line 99 "installparse.y" 403 { 404 yyval.value = Pk11Install_Value_new(PAIR_VALUE, yyvsp[0]); 405 } break; 406 case 5: 407 #line 103 "installparse.y" 408 { 409 yyval.value = Pk11Install_Value_new(STRING_VALUE, yyvsp[0]); 410 } break; 411 case 6: 412 #line 108 "installparse.y" 413 { 414 yyval.pair = Pk11Install_Pair_new(yyvsp[-3].string, yyvsp[-1].list); 415 } break; 416 case 7: 417 #line 113 "installparse.y" 418 { 419 yyval.string = yyvsp[0].string; 420 } break; 421 #line 374 "ytab.c" 422 } 423 yyssp -= yym; 424 yystate = *yyssp; 425 yyvsp -= yym; 426 yym = yylhs[yyn]; 427 if (yystate == 0 && yym == 0) { 428 #ifdef YYDEBUG 429 if (yydebug) 430 printf("yydebug: after reduction, shifting from state 0 to\ 431 state %d\n", 432 YYFINAL); 433 #endif 434 yystate = YYFINAL; 435 *++yyssp = YYFINAL; 436 *++yyvsp = yyval; 437 if (yychar < 0) { 438 if ((yychar = yylex()) < 0) 439 yychar = 0; 440 #if YYDEBUG 441 if (yydebug) { 442 yys = 0; 443 if (yychar <= YYMAXTOKEN) 444 yys = yyname[yychar]; 445 if (!yys) 446 yys = "illegal-symbol"; 447 printf("yydebug: state %d, reading %d (%s)\n", 448 YYFINAL, yychar, yys); 449 } 450 #endif 451 } 452 if (yychar == 0) 453 goto yyaccept; 454 goto yyloop; 455 } 456 if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && 457 yyn <= YYTABLESIZE && yycheck[yyn] == yystate) 458 yystate = yytable[yyn]; 459 else 460 yystate = yydgoto[yym]; 461 #ifdef YYDEBUG 462 if (yydebug) 463 printf("yydebug: after reduction, shifting from state %d \ 464 to state %d\n", 465 *yyssp, yystate); 466 #endif 467 if (yyssp >= yyss + yystacksize - 1) { 468 goto yyoverflow; 469 } 470 *++yyssp = yystate; 471 *++yyvsp = yyval; 472 goto yyloop; 473 yyoverflow: 474 yyerror("yacc stack overflow"); 475 yyabort: 476 return (1); 477 yyaccept: 478 return (0); 479 }