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