Blame nss/cmd/modutil/installparse.y

Packit 40b132
/* This Source Code Form is subject to the terms of the Mozilla Public
Packit 40b132
 * License, v. 2.0. If a copy of the MPL was not distributed with this
Packit 40b132
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
Packit 40b132
Packit 40b132
/* yacc file for parsing PKCS #11 module installation instructions */
Packit 40b132
/*------------------------ Definition Section ---------------------------*/
Packit 40b132
Packit 40b132
%{ 
Packit 40b132
#define yyparse Pk11Install_yyparse
Packit 40b132
#define yylex Pk11Install_yylex
Packit 40b132
#define yyerror Pk11Install_yyerror
Packit 40b132
#define yychar Pk11Install_yychar
Packit 40b132
#define yyval Pk11Install_yyval
Packit 40b132
#define yylval Pk11Install_yylval
Packit 40b132
#define yydebug Pk11Install_yydebug
Packit 40b132
#define yynerrs Pk11Install_yynerrs
Packit 40b132
#define yyerrflag Pk11Install_yyerrflag
Packit 40b132
#define yyss Pk11Install_yyss
Packit 40b132
#define yyssp Pk11Install_yyssp
Packit 40b132
#define yyvs Pk11Install_yyvs
Packit 40b132
#define yyvsp Pk11Install_yyvsp
Packit 40b132
#define yylhs Pk11Install_yylhs
Packit 40b132
#define yylen Pk11Install_yylen
Packit 40b132
#define yydefred Pk11Install_yydefred
Packit 40b132
#define yydgoto Pk11Install_yydgoto
Packit 40b132
#define yysindex Pk11Install_yysindex
Packit 40b132
#define yyrindex Pk11Install_yyrindex
Packit 40b132
#define yygindex Pk11Install_yygindex
Packit 40b132
#define yytable Pk11Install_yytable
Packit 40b132
#define yycheck Pk11Install_yycheck
Packit 40b132
#define yyname Pk11Install_yyname
Packit 40b132
#define yyrule Pk11Install_yyrule
Packit 40b132
Packit 40b132
/* C Stuff */
Packit 40b132
#include "install-ds.h"
Packit 40b132
#include <prprf.h>
Packit 40b132
Packit 40b132
#define YYSTYPE Pk11Install_Pointer
Packit 40b132
extern char *Pk11Install_yytext;
Packit 40b132
char *Pk11Install_yyerrstr=NULL;
Packit 40b132
Packit 40b132
%}
Packit 40b132
Packit 40b132
/* Tokens */
Packit 40b132
%token OPENBRACE
Packit 40b132
%token CLOSEBRACE
Packit 40b132
%token STRING
Packit 40b132
%start toplist
Packit 40b132
Packit 40b132
%%
Packit 40b132
Packit 40b132
/*--------------------------- Productions -------------------------------*/
Packit 40b132
Packit 40b132
toplist		: valuelist	
Packit 40b132
{
Packit 40b132
	Pk11Install_valueList = $1.list;
Packit 40b132
}
Packit 40b132
Packit 40b132
valuelist	: value valuelist
Packit 40b132
{ 
Packit 40b132
	Pk11Install_ValueList_AddItem($2.list,$1.value);
Packit 40b132
	$$.list = $2.list; 
Packit 40b132
}
Packit 40b132
|
Packit 40b132
{ 
Packit 40b132
	$$.list = Pk11Install_ValueList_new(); 
Packit 40b132
};
Packit 40b132
Packit 40b132
value		: key_value_pair
Packit 40b132
{
Packit 40b132
	$$.value= Pk11Install_Value_new(PAIR_VALUE,$1);
Packit 40b132
}
Packit 40b132
| STRING
Packit 40b132
{
Packit 40b132
	$$.value= Pk11Install_Value_new(STRING_VALUE, $1);
Packit 40b132
};
Packit 40b132
Packit 40b132
key_value_pair	: key OPENBRACE valuelist CLOSEBRACE 
Packit 40b132
{
Packit 40b132
	$$.pair = Pk11Install_Pair_new($1.string,$3.list);
Packit 40b132
};
Packit 40b132
Packit 40b132
key			: STRING
Packit 40b132
{
Packit 40b132
	$$.string = $1.string;
Packit 40b132
};
Packit 40b132
Packit 40b132
%%
Packit 40b132
/*----------------------- Program Section --------------------------------*/
Packit 40b132
Packit 40b132
/*************************************************************************/
Packit 40b132
void
Packit 40b132
Pk11Install_yyerror(char *message)
Packit 40b132
{
Packit 40b132
	char *tmp;
Packit 40b132
	if(Pk11Install_yyerrstr) {
Packit 40b132
		tmp=PR_smprintf("%sline %d: %s\n", Pk11Install_yyerrstr,
Packit 40b132
			Pk11Install_yylinenum, message);
Packit 40b132
		PR_smprintf_free(Pk11Install_yyerrstr);
Packit 40b132
	} else {
Packit 40b132
		tmp = PR_smprintf("line %d: %s\n", Pk11Install_yylinenum, message);
Packit 40b132
	}
Packit 40b132
	Pk11Install_yyerrstr=tmp;
Packit 40b132
}