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