479 lines
12 KiB
C
479 lines
12 KiB
C
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#ifndef lint
|
|
char yysccsid[] = "@(#)yaccpar 1.4 (Berkeley) 02/25/90";
|
|
#endif
|
|
#line 37 "installparse.y"
|
|
|
|
#define yyparse Pk11Install_yyparse
|
|
#define yylex Pk11Install_yylex
|
|
#define yyerror Pk11Install_yyerror
|
|
#define yychar Pk11Install_yychar
|
|
#define yyval Pk11Install_yyval
|
|
#define yylval Pk11Install_yylval
|
|
#define yydebug Pk11Install_yydebug
|
|
#define yynerrs Pk11Install_yynerrs
|
|
#define yyerrflag Pk11Install_yyerrflag
|
|
#define yyss Pk11Install_yyss
|
|
#define yyssp Pk11Install_yyssp
|
|
#define yyvs Pk11Install_yyvs
|
|
#define yyvsp Pk11Install_yyvsp
|
|
#define yylhs Pk11Install_yylhs
|
|
#define yylen Pk11Install_yylen
|
|
#define yydefred Pk11Install_yydefred
|
|
#define yydgoto Pk11Install_yydgoto
|
|
#define yysindex Pk11Install_yysindex
|
|
#define yyrindex Pk11Install_yyrindex
|
|
#define yygindex Pk11Install_yygindex
|
|
#define yytable Pk11Install_yytable
|
|
#define yycheck Pk11Install_yycheck
|
|
#define yyname Pk11Install_yyname
|
|
#define yyrule Pk11Install_yyrule
|
|
|
|
/* C Stuff */
|
|
#include "install-ds.h"
|
|
#include <prprf.h>
|
|
|
|
#define YYSTYPE Pk11Install_Pointer
|
|
extern char *Pk11Install_yytext;
|
|
char *Pk11Install_yyerrstr = NULL;
|
|
|
|
#line 40 "ytab.c"
|
|
#define OPENBRACE 257
|
|
#define CLOSEBRACE 258
|
|
#define STRING 259
|
|
#define YYERRCODE 256
|
|
/* clang-format on */
|
|
short yylhs[] = {
|
|
-1,
|
|
0,
|
|
1,
|
|
1,
|
|
2,
|
|
2,
|
|
3,
|
|
4
|
|
};
|
|
short yylen[] = {
|
|
2,
|
|
1,
|
|
2,
|
|
0,
|
|
1,
|
|
1,
|
|
4,
|
|
1
|
|
};
|
|
short yydefred[] = {
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
4,
|
|
0,
|
|
2,
|
|
0,
|
|
0,
|
|
6
|
|
};
|
|
short yydgoto[] = {
|
|
2,
|
|
3,
|
|
4,
|
|
5,
|
|
6
|
|
};
|
|
short yysindex[] = {
|
|
-257,
|
|
0,
|
|
0,
|
|
0,
|
|
-257,
|
|
0,
|
|
-252,
|
|
0,
|
|
-257,
|
|
-251,
|
|
0
|
|
};
|
|
short yyrindex[] = {
|
|
6,
|
|
1,
|
|
0,
|
|
0,
|
|
3,
|
|
0,
|
|
0,
|
|
0,
|
|
-250,
|
|
0,
|
|
0
|
|
};
|
|
short yygindex[] = {
|
|
0,
|
|
-4,
|
|
0,
|
|
0,
|
|
0
|
|
};
|
|
#define YYTABLESIZE 261
|
|
short yytable[] = {
|
|
7,
|
|
5, 1, 3, 9, 8, 3, 10, 3, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 7, 5, 5,
|
|
3
|
|
};
|
|
short yycheck[] = {
|
|
4,
|
|
0, 259, 0, 8, 257, 0, 258, 258, -1, -1,
|
|
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
|
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
|
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
|
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
|
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
|
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
|
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
|
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
|
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
|
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
|
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
|
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
|
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
|
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
|
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
|
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
|
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
|
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
|
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
|
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
|
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
|
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
|
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
|
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
|
-1, -1, -1, -1, -1, -1, -1, 257, 258, 259,
|
|
258
|
|
};
|
|
/* clang-format on */
|
|
#define YYFINAL 2
|
|
#ifndef YYDEBUG
|
|
#define YYDEBUG 0
|
|
#endif
|
|
#define YYMAXTOKEN 259
|
|
#if YYDEBUG
|
|
char *yyname[] = {
|
|
"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,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
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"
|
|
};
|
|
char *yyrule[] = {
|
|
"$accept : toplist",
|
|
"toplist : valuelist",
|
|
"valuelist : value valuelist",
|
|
"valuelist :",
|
|
"value : key_value_pair",
|
|
"value : STRING",
|
|
"key_value_pair : key OPENBRACE valuelist CLOSEBRACE",
|
|
"key : STRING",
|
|
};
|
|
#endif
|
|
#ifndef YYSTYPE
|
|
typedef int YYSTYPE;
|
|
#endif
|
|
#define yyclearin (yychar = (-1))
|
|
#define yyerrok (yyerrflag = 0)
|
|
#ifndef YYSTACKSIZE
|
|
#ifdef YYMAXDEPTH
|
|
#define YYSTACKSIZE YYMAXDEPTH
|
|
#else
|
|
#define YYSTACKSIZE 300
|
|
#endif
|
|
#endif
|
|
int yydebug;
|
|
int yynerrs;
|
|
int yyerrflag;
|
|
int yychar;
|
|
short *yyssp;
|
|
YYSTYPE *yyvsp;
|
|
YYSTYPE yyval;
|
|
YYSTYPE yylval;
|
|
#define yystacksize YYSTACKSIZE
|
|
short yyss[YYSTACKSIZE];
|
|
YYSTYPE yyvs[YYSTACKSIZE];
|
|
#line 118 "installparse.y"
|
|
/*----------------------- Program Section --------------------------------*/
|
|
|
|
/*************************************************************************/
|
|
void
|
|
Pk11Install_yyerror(char *message)
|
|
{
|
|
char *tmp;
|
|
if (Pk11Install_yyerrstr) {
|
|
tmp = PR_smprintf("%sline %d: %s\n", Pk11Install_yyerrstr,
|
|
Pk11Install_yylinenum, message);
|
|
PR_smprintf_free(Pk11Install_yyerrstr);
|
|
} else {
|
|
tmp = PR_smprintf("line %d: %s\n", Pk11Install_yylinenum, message);
|
|
}
|
|
Pk11Install_yyerrstr = tmp;
|
|
}
|
|
#line 191 "ytab.c"
|
|
#define YYABORT goto yyabort
|
|
#define YYACCEPT goto yyaccept
|
|
#define YYERROR goto yyerrlab
|
|
int
|
|
yyparse()
|
|
{
|
|
register int yym, yyn, yystate;
|
|
#if YYDEBUG
|
|
register char *yys;
|
|
extern char *PR_GetEnvSecure();
|
|
|
|
if ((yys = PR_GetEnvSecure("YYDEBUG")) != NULL) {
|
|
yyn = *yys;
|
|
if (yyn >= '0' && yyn <= '9')
|
|
yydebug = yyn - '0';
|
|
}
|
|
#endif
|
|
|
|
yynerrs = 0;
|
|
yyerrflag = 0;
|
|
yychar = (-1);
|
|
|
|
yyssp = yyss;
|
|
yyvsp = yyvs;
|
|
*yyssp = yystate = 0;
|
|
|
|
yyloop:
|
|
if ((yyn = yydefred[yystate]) != 0)
|
|
goto yyreduce;
|
|
if (yychar < 0) {
|
|
if ((yychar = yylex()) < 0)
|
|
yychar = 0;
|
|
#if YYDEBUG
|
|
if (yydebug) {
|
|
yys = 0;
|
|
if (yychar <= YYMAXTOKEN)
|
|
yys = yyname[yychar];
|
|
if (!yys)
|
|
yys = "illegal-symbol";
|
|
printf("yydebug: state %d, reading %d (%s)\n", yystate,
|
|
yychar, yys);
|
|
}
|
|
#endif
|
|
}
|
|
if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&
|
|
yyn <= YYTABLESIZE && yycheck[yyn] == yychar) {
|
|
#if YYDEBUG
|
|
if (yydebug)
|
|
printf("yydebug: state %d, shifting to state %d\n",
|
|
yystate, yytable[yyn]);
|
|
#endif
|
|
if (yyssp >= yyss + yystacksize - 1) {
|
|
goto yyoverflow;
|
|
}
|
|
*++yyssp = yystate = yytable[yyn];
|
|
*++yyvsp = yylval;
|
|
yychar = (-1);
|
|
if (yyerrflag > 0)
|
|
--yyerrflag;
|
|
goto yyloop;
|
|
}
|
|
if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&
|
|
yyn <= YYTABLESIZE && yycheck[yyn] == yychar) {
|
|
yyn = yytable[yyn];
|
|
goto yyreduce;
|
|
}
|
|
if (yyerrflag)
|
|
goto yyinrecovery;
|
|
#ifdef lint
|
|
goto yynewerror;
|
|
yynewerror:
|
|
#endif
|
|
yyerror("syntax error");
|
|
#ifdef lint
|
|
goto yyerrlab;
|
|
yyerrlab:
|
|
#endif
|
|
++yynerrs;
|
|
yyinrecovery:
|
|
if (yyerrflag < 3) {
|
|
yyerrflag = 3;
|
|
for (;;) {
|
|
if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 &&
|
|
yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) {
|
|
#if YYDEBUG
|
|
if (yydebug)
|
|
printf("yydebug: state %d, error recovery shifting\
|
|
to state %d\n",
|
|
*yyssp, yytable[yyn]);
|
|
#endif
|
|
if (yyssp >= yyss + yystacksize - 1) {
|
|
goto yyoverflow;
|
|
}
|
|
*++yyssp = yystate = yytable[yyn];
|
|
*++yyvsp = yylval;
|
|
goto yyloop;
|
|
} else {
|
|
#if YYDEBUG
|
|
if (yydebug)
|
|
printf("yydebug: error recovery discarding state %d\n",
|
|
*yyssp);
|
|
#endif
|
|
if (yyssp <= yyss)
|
|
goto yyabort;
|
|
--yyssp;
|
|
--yyvsp;
|
|
}
|
|
}
|
|
} else {
|
|
if (yychar == 0)
|
|
goto yyabort;
|
|
#if YYDEBUG
|
|
if (yydebug) {
|
|
yys = 0;
|
|
if (yychar <= YYMAXTOKEN)
|
|
yys = yyname[yychar];
|
|
if (!yys)
|
|
yys = "illegal-symbol";
|
|
printf("yydebug: state %d, error recovery discards token %d (%s)\n",
|
|
yystate, yychar, yys);
|
|
}
|
|
#endif
|
|
yychar = (-1);
|
|
goto yyloop;
|
|
}
|
|
yyreduce:
|
|
#if YYDEBUG
|
|
if (yydebug)
|
|
printf("yydebug: state %d, reducing by rule %d (%s)\n",
|
|
yystate, yyn, yyrule[yyn]);
|
|
#endif
|
|
yym = yylen[yyn];
|
|
yyval = yyvsp[1 - yym];
|
|
switch (yyn) {
|
|
case 1:
|
|
#line 84 "installparse.y"
|
|
{
|
|
Pk11Install_valueList = yyvsp[0].list;
|
|
} break;
|
|
case 2:
|
|
#line 89 "installparse.y"
|
|
{
|
|
Pk11Install_ValueList_AddItem(yyvsp[0].list, yyvsp[-1].value);
|
|
yyval.list = yyvsp[0].list;
|
|
} break;
|
|
case 3:
|
|
#line 94 "installparse.y"
|
|
{
|
|
yyval.list = Pk11Install_ValueList_new();
|
|
} break;
|
|
case 4:
|
|
#line 99 "installparse.y"
|
|
{
|
|
yyval.value = Pk11Install_Value_new(PAIR_VALUE, yyvsp[0]);
|
|
} break;
|
|
case 5:
|
|
#line 103 "installparse.y"
|
|
{
|
|
yyval.value = Pk11Install_Value_new(STRING_VALUE, yyvsp[0]);
|
|
} break;
|
|
case 6:
|
|
#line 108 "installparse.y"
|
|
{
|
|
yyval.pair = Pk11Install_Pair_new(yyvsp[-3].string, yyvsp[-1].list);
|
|
} break;
|
|
case 7:
|
|
#line 113 "installparse.y"
|
|
{
|
|
yyval.string = yyvsp[0].string;
|
|
} break;
|
|
#line 374 "ytab.c"
|
|
}
|
|
yyssp -= yym;
|
|
yystate = *yyssp;
|
|
yyvsp -= yym;
|
|
yym = yylhs[yyn];
|
|
if (yystate == 0 && yym == 0) {
|
|
#ifdef YYDEBUG
|
|
if (yydebug)
|
|
printf("yydebug: after reduction, shifting from state 0 to\
|
|
state %d\n",
|
|
YYFINAL);
|
|
#endif
|
|
yystate = YYFINAL;
|
|
*++yyssp = YYFINAL;
|
|
*++yyvsp = yyval;
|
|
if (yychar < 0) {
|
|
if ((yychar = yylex()) < 0)
|
|
yychar = 0;
|
|
#if YYDEBUG
|
|
if (yydebug) {
|
|
yys = 0;
|
|
if (yychar <= YYMAXTOKEN)
|
|
yys = yyname[yychar];
|
|
if (!yys)
|
|
yys = "illegal-symbol";
|
|
printf("yydebug: state %d, reading %d (%s)\n",
|
|
YYFINAL, yychar, yys);
|
|
}
|
|
#endif
|
|
}
|
|
if (yychar == 0)
|
|
goto yyaccept;
|
|
goto yyloop;
|
|
}
|
|
if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&
|
|
yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
|
|
yystate = yytable[yyn];
|
|
else
|
|
yystate = yydgoto[yym];
|
|
#ifdef YYDEBUG
|
|
if (yydebug)
|
|
printf("yydebug: after reduction, shifting from state %d \
|
|
to state %d\n",
|
|
*yyssp, yystate);
|
|
#endif
|
|
if (yyssp >= yyss + yystacksize - 1) {
|
|
goto yyoverflow;
|
|
}
|
|
*++yyssp = yystate;
|
|
*++yyvsp = yyval;
|
|
goto yyloop;
|
|
yyoverflow:
|
|
yyerror("yacc stack overflow");
|
|
yyabort:
|
|
return (1);
|
|
yyaccept:
|
|
return (0);
|
|
}
|