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, 1, 1, 2, 2, 3, 4,
52 };
53 short yylen[] = {
54 2,
55 1, 2, 0, 1, 1, 4, 1,
56 };
57 short yydefred[] = {
58 0,
59 0, 0, 1, 0, 4, 0, 2, 0, 0, 6,
60 };
61 short yydgoto[] = {
62 2,
63 3, 4, 5, 6,
64 };
65 short yysindex[] = {
66 -257,
67 0, 0, 0, -257, 0, -252, 0, -257, -251, 0,
68 };
69 short yyrindex[] = {
70 6,
71 1, 0, 0, 3, 0, 0, 0, -250, 0, 0,
72 };
73 short yygindex[] = {
74 0,
75 -4, 0, 0, 0,
76 };
77 #define YYTABLESIZE 261
78 short yytable[] = {
79 7,
80 5, 1, 3, 9, 8, 3, 10, 3, 0, 0,
81 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
82 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
83 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
84 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
85 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
86 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
87 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
88 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
89 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
90 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
91 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
92 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
93 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
94 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
95 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
96 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
97 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
98 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
99 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
100 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
101 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
102 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
103 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
104 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
105 0, 0, 0, 0, 0, 0, 0, 7, 5, 5,
106 3,
107 };
108 short yycheck[] = {
109 4,
110 0, 259, 0, 8, 257, 0, 258, 258, -1, -1,
111 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
112 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
113 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
114 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
115 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
116 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
117 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
118 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
119 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
120 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
121 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
122 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
123 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
124 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
125 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
126 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
127 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
128 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
129 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
130 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
131 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
132 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
133 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
134 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
135 -1, -1, -1, -1, -1, -1, -1, 257, 258, 259,
136 258,
137 };
138 /* clang-format on */
139 #define YYFINAL 2
140 #ifndef YYDEBUG
141 #define YYDEBUG 0
142 #endif
143 #define YYMAXTOKEN 259
144 #if YYDEBUG
145 char *yyname[] = {
146 "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,
147 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,
148 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,
149 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,
150 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,
151 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,
152 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",
153 };
154 char *yyrule[] = {
155 "$accept : toplist",
156 "toplist : valuelist",
157 "valuelist : value valuelist",
158 "valuelist :",
159 "value : key_value_pair",
160 "value : STRING",
161 "key_value_pair : key OPENBRACE valuelist CLOSEBRACE",
162 "key : STRING",
163 };
164 #endif
165 #ifndef YYSTYPE
166 typedef int YYSTYPE;
167 #endif
168 #define yyclearin (yychar = (-1))
169 #define yyerrok (yyerrflag = 0)
170 #ifndef YYSTACKSIZE
171 #ifdef YYMAXDEPTH
172 #define YYSTACKSIZE YYMAXDEPTH
173 #else
174 #define YYSTACKSIZE 300
175 #endif
176 #endif
177 int yydebug;
178 int yynerrs;
179 int yyerrflag;
180 int yychar;
181 short *yyssp;
182 YYSTYPE *yyvsp;
183 YYSTYPE yyval;
184 YYSTYPE yylval;
185 #define yystacksize YYSTACKSIZE
186 short yyss[YYSTACKSIZE];
187 YYSTYPE yyvs[YYSTACKSIZE];
188 #line 118 "installparse.y"
189 /*----------------------- Program Section --------------------------------*/
190
191 /*************************************************************************/
192 void
Pk11Install_yyerror(char * message)193 Pk11Install_yyerror(char *message)
194 {
195 char *tmp;
196 if (Pk11Install_yyerrstr) {
197 tmp = PR_smprintf("%sline %d: %s\n", Pk11Install_yyerrstr,
198 Pk11Install_yylinenum, message);
199 PR_smprintf_free(Pk11Install_yyerrstr);
200 } else {
201 tmp = PR_smprintf("line %d: %s\n", Pk11Install_yylinenum, message);
202 }
203 Pk11Install_yyerrstr = tmp;
204 }
205 #line 191 "ytab.c"
206 #define YYABORT goto yyabort
207 #define YYACCEPT goto yyaccept
208 #define YYERROR goto yyerrlab
209 int
yyparse()210 yyparse()
211 {
212 register int yym, yyn, yystate;
213 #if YYDEBUG
214 register char *yys;
215 extern char *PR_GetEnvSecure();
216
217 if ((yys = PR_GetEnvSecure("YYDEBUG")) != NULL) {
218 yyn = *yys;
219 if (yyn >= '0' && yyn <= '9')
220 yydebug = yyn - '0';
221 }
222 #endif
223
224 yynerrs = 0;
225 yyerrflag = 0;
226 yychar = (-1);
227
228 yyssp = yyss;
229 yyvsp = yyvs;
230 *yyssp = yystate = 0;
231
232 yyloop:
233 if ((yyn = yydefred[yystate]) != 0)
234 goto yyreduce;
235 if (yychar < 0) {
236 if ((yychar = yylex()) < 0)
237 yychar = 0;
238 #if YYDEBUG
239 if (yydebug) {
240 yys = 0;
241 if (yychar <= YYMAXTOKEN)
242 yys = yyname[yychar];
243 if (!yys)
244 yys = "illegal-symbol";
245 printf("yydebug: state %d, reading %d (%s)\n", yystate,
246 yychar, yys);
247 }
248 #endif
249 }
250 if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&
251 yyn <= YYTABLESIZE && yycheck[yyn] == yychar) {
252 #if YYDEBUG
253 if (yydebug)
254 printf("yydebug: state %d, shifting to state %d\n",
255 yystate, yytable[yyn]);
256 #endif
257 if (yyssp >= yyss + yystacksize - 1) {
258 goto yyoverflow;
259 }
260 *++yyssp = yystate = yytable[yyn];
261 *++yyvsp = yylval;
262 yychar = (-1);
263 if (yyerrflag > 0)
264 --yyerrflag;
265 goto yyloop;
266 }
267 if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&
268 yyn <= YYTABLESIZE && yycheck[yyn] == yychar) {
269 yyn = yytable[yyn];
270 goto yyreduce;
271 }
272 if (yyerrflag)
273 goto yyinrecovery;
274 #ifdef lint
275 goto yynewerror;
276 yynewerror:
277 #endif
278 yyerror("syntax error");
279 #ifdef lint
280 goto yyerrlab;
281 yyerrlab:
282 #endif
283 ++yynerrs;
284 yyinrecovery:
285 if (yyerrflag < 3) {
286 yyerrflag = 3;
287 for (;;) {
288 if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 &&
289 yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) {
290 #if YYDEBUG
291 if (yydebug)
292 printf("yydebug: state %d, error recovery shifting\
293 to state %d\n",
294 *yyssp, yytable[yyn]);
295 #endif
296 if (yyssp >= yyss + yystacksize - 1) {
297 goto yyoverflow;
298 }
299 *++yyssp = yystate = yytable[yyn];
300 *++yyvsp = yylval;
301 goto yyloop;
302 } else {
303 #if YYDEBUG
304 if (yydebug)
305 printf("yydebug: error recovery discarding state %d\n",
306 *yyssp);
307 #endif
308 if (yyssp <= yyss)
309 goto yyabort;
310 --yyssp;
311 --yyvsp;
312 }
313 }
314 } else {
315 if (yychar == 0)
316 goto yyabort;
317 #if YYDEBUG
318 if (yydebug) {
319 yys = 0;
320 if (yychar <= YYMAXTOKEN)
321 yys = yyname[yychar];
322 if (!yys)
323 yys = "illegal-symbol";
324 printf("yydebug: state %d, error recovery discards token %d (%s)\n",
325 yystate, yychar, yys);
326 }
327 #endif
328 yychar = (-1);
329 goto yyloop;
330 }
331 yyreduce:
332 #if YYDEBUG
333 if (yydebug)
334 printf("yydebug: state %d, reducing by rule %d (%s)\n",
335 yystate, yyn, yyrule[yyn]);
336 #endif
337 yym = yylen[yyn];
338 yyval = yyvsp[1 - yym];
339 switch (yyn) {
340 case 1:
341 #line 84 "installparse.y"
342 {
343 Pk11Install_valueList = yyvsp[0].list;
344 } break;
345 case 2:
346 #line 89 "installparse.y"
347 {
348 Pk11Install_ValueList_AddItem(yyvsp[0].list, yyvsp[-1].value);
349 yyval.list = yyvsp[0].list;
350 } break;
351 case 3:
352 #line 94 "installparse.y"
353 {
354 yyval.list = Pk11Install_ValueList_new();
355 } break;
356 case 4:
357 #line 99 "installparse.y"
358 {
359 yyval.value = Pk11Install_Value_new(PAIR_VALUE, yyvsp[0]);
360 } break;
361 case 5:
362 #line 103 "installparse.y"
363 {
364 yyval.value = Pk11Install_Value_new(STRING_VALUE, yyvsp[0]);
365 } break;
366 case 6:
367 #line 108 "installparse.y"
368 {
369 yyval.pair = Pk11Install_Pair_new(yyvsp[-3].string, yyvsp[-1].list);
370 } break;
371 case 7:
372 #line 113 "installparse.y"
373 {
374 yyval.string = yyvsp[0].string;
375 } break;
376 #line 374 "ytab.c"
377 }
378 yyssp -= yym;
379 yystate = *yyssp;
380 yyvsp -= yym;
381 yym = yylhs[yyn];
382 if (yystate == 0 && yym == 0) {
383 #ifdef YYDEBUG
384 if (yydebug)
385 printf("yydebug: after reduction, shifting from state 0 to\
386 state %d\n",
387 YYFINAL);
388 #endif
389 yystate = YYFINAL;
390 *++yyssp = YYFINAL;
391 *++yyvsp = yyval;
392 if (yychar < 0) {
393 if ((yychar = yylex()) < 0)
394 yychar = 0;
395 #if YYDEBUG
396 if (yydebug) {
397 yys = 0;
398 if (yychar <= YYMAXTOKEN)
399 yys = yyname[yychar];
400 if (!yys)
401 yys = "illegal-symbol";
402 printf("yydebug: state %d, reading %d (%s)\n",
403 YYFINAL, yychar, yys);
404 }
405 #endif
406 }
407 if (yychar == 0)
408 goto yyaccept;
409 goto yyloop;
410 }
411 if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&
412 yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
413 yystate = yytable[yyn];
414 else
415 yystate = yydgoto[yym];
416 #ifdef YYDEBUG
417 if (yydebug)
418 printf("yydebug: after reduction, shifting from state %d \
419 to state %d\n",
420 *yyssp, yystate);
421 #endif
422 if (yyssp >= yyss + yystacksize - 1) {
423 goto yyoverflow;
424 }
425 *++yyssp = yystate;
426 *++yyvsp = yyval;
427 goto yyloop;
428 yyoverflow:
429 yyerror("yacc stack overflow");
430 yyabort:
431 return (1);
432 yyaccept:
433 return (0);
434 }
435