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

CA认证

开发平台:

WINDOWS

  1. /*
  2.  * The contents of this file are subject to the Mozilla Public
  3.  * License Version 1.1 (the "License"); you may not use this file
  4.  * except in compliance with the License. You may obtain a copy of
  5.  * the License at http://www.mozilla.org/MPL/
  6.  * 
  7.  * Software distributed under the License is distributed on an "AS
  8.  * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
  9.  * implied. See the License for the specific language governing
  10.  * rights and limitations under the License.
  11.  * 
  12.  * The Original Code is the Netscape security libraries.
  13.  * 
  14.  * The Initial Developer of the Original Code is Netscape
  15.  * Communications Corporation.  Portions created by Netscape are 
  16.  * Copyright (C) 1994-2000 Netscape Communications Corporation.  All
  17.  * Rights Reserved.
  18.  * 
  19.  * Contributor(s):
  20.  * 
  21.  * Alternatively, the contents of this file may be used under the
  22.  * terms of the GNU General Public License Version 2 or later (the
  23.  * "GPL"), in which case the provisions of the GPL are applicable 
  24.  * instead of those above.  If you wish to allow use of your 
  25.  * version of this file only under the terms of the GPL and not to
  26.  * allow others to use your version of this file under the MPL,
  27.  * indicate your decision by deleting the provisions above and
  28.  * replace them with the notice and other provisions required by
  29.  * the GPL.  If you do not delete the provisions above, a recipient
  30.  * may use your version of this file under either the MPL or the
  31.  * GPL.
  32.  */
  33. /* yacc file for parsing PKCS #11 module installation instructions */
  34. /*------------------------ Definition Section ---------------------------*/
  35. %{ 
  36. #define yyparse Pk11Install_yyparse
  37. #define yylex Pk11Install_yylex
  38. #define yyerror Pk11Install_yyerror
  39. #define yychar Pk11Install_yychar
  40. #define yyval Pk11Install_yyval
  41. #define yylval Pk11Install_yylval
  42. #define yydebug Pk11Install_yydebug
  43. #define yynerrs Pk11Install_yynerrs
  44. #define yyerrflag Pk11Install_yyerrflag
  45. #define yyss Pk11Install_yyss
  46. #define yyssp Pk11Install_yyssp
  47. #define yyvs Pk11Install_yyvs
  48. #define yyvsp Pk11Install_yyvsp
  49. #define yylhs Pk11Install_yylhs
  50. #define yylen Pk11Install_yylen
  51. #define yydefred Pk11Install_yydefred
  52. #define yydgoto Pk11Install_yydgoto
  53. #define yysindex Pk11Install_yysindex
  54. #define yyrindex Pk11Install_yyrindex
  55. #define yygindex Pk11Install_yygindex
  56. #define yytable Pk11Install_yytable
  57. #define yycheck Pk11Install_yycheck
  58. #define yyname Pk11Install_yyname
  59. #define yyrule Pk11Install_yyrule
  60. /* C Stuff */
  61. #include "install-ds.h"
  62. #include <prprf.h>
  63. #define YYSTYPE Pk11Install_Pointer
  64. extern char *Pk11Install_yytext;
  65. char *Pk11Install_yyerrstr=NULL;
  66. %}
  67. /* Tokens */
  68. %token OPENBRACE
  69. %token CLOSEBRACE
  70. %token STRING
  71. %start toplist
  72. %%
  73. /*--------------------------- Productions -------------------------------*/
  74. toplist : valuelist
  75. {
  76. Pk11Install_valueList = $1.list;
  77. }
  78. valuelist : value valuelist
  79. Pk11Install_ValueList_AddItem($2.list,$1.value);
  80. $$.list = $2.list; 
  81. }
  82. |
  83. $$.list = Pk11Install_ValueList_new(); 
  84. };
  85. value : key_value_pair
  86. {
  87. $$.value= Pk11Install_Value_new(PAIR_VALUE,$1);
  88. }
  89. | STRING
  90. {
  91. $$.value= Pk11Install_Value_new(STRING_VALUE, $1);
  92. };
  93. key_value_pair : key OPENBRACE valuelist CLOSEBRACE 
  94. {
  95. $$.pair = Pk11Install_Pair_new($1.string,$3.list);
  96. };
  97. key : STRING
  98. {
  99. $$.string = $1.string;
  100. };
  101. %%
  102. /*----------------------- Program Section --------------------------------*/
  103. /*************************************************************************/
  104. void
  105. Pk11Install_yyerror(char *message)
  106. {
  107. char *tmp;
  108. if(Pk11Install_yyerrstr) {
  109. tmp=PR_smprintf("%sline %d: %sn", Pk11Install_yyerrstr,
  110. Pk11Install_yylinenum, message);
  111. PR_smprintf_free(Pk11Install_yyerrstr);
  112. } else {
  113. tmp = PR_smprintf("line %d: %sn", Pk11Install_yylinenum, message);
  114. }
  115. Pk11Install_yyerrstr=tmp;
  116. }