installparse.c
上传用户:lyxiangda
上传日期:2007-01-12
资源大小:3042k
文件大小:12k
源码类别:

CA认证

开发平台:

WINDOWS

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