From 9bf32be3a065900ecb103ce1b5fbbd210f7ca5ea Mon Sep 17 00:00:00 2001 From: "Joel E. Denny" Date: Thu, 14 Dec 2006 02:58:11 +0000 Subject: [PATCH] * data/push.c (yypstate_init): Rename to... (yypstate_new): ... this and use b4_c_function_def. (yypstate_delete): New. (yypush_parse): Change parameters yynval and yynlloc to be const. * tests/calc.at (_AT_DATA_CALC_Y): Use new yypstate_new and yypstate_delete functions. --- ChangeLog | 9 +++++++++ data/push.c | 36 ++++++++++++++++++++++++------------ tests/calc.at | 4 ++-- 3 files changed, 35 insertions(+), 14 deletions(-) diff --git a/ChangeLog b/ChangeLog index d0c2e9f4..a08ef746 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2006-12-13 Bob Rossi + + * data/push.c (yypstate_init): Rename to... + (yypstate_new): ... this and use b4_c_function_def. + (yypstate_delete): New. + (yypush_parse): Change parameters yynval and yynlloc to be const. + * tests/calc.at (_AT_DATA_CALC_Y): Use new yypstate_new and + yypstate_delete functions. + 2006-12-13 Joel E. Denny * configure.ac (AC_PREREQ): Require Autoconf 2.61 because of our diff --git a/data/push.c b/data/push.c index 87a02e78..c2e39637 100644 --- a/data/push.c +++ b/data/push.c @@ -153,7 +153,8 @@ m4_if(b4_prefix, [yy], [], [/* Substitute the variable and function names. */ #define yyparse b4_prefix[]parse ]b4_push_if([#define yypush_parse b4_prefix[]push_parse -#define yypstate_init b4_prefix[]pstate_init +#define yypstate_new b4_prefix[]pstate_new +#define yypstate_delete b4_prefix[]pstate_delete #define yypstate b4_prefix[]pstate])[ #define yylex b4_prefix[]lex #define yyerror b4_prefix[]error @@ -970,12 +971,13 @@ yysyntax_error (char *yyresult, int yystate, int yychar) ]b4_push_if([ struct yypstate; enum { YYPUSH_MORE = 4 }; -]b4_c_function_decl([yypstate_init], [struct yypstate *], [[void], []])[ +]b4_c_function_decl([yypstate_new], [struct yypstate *], [[void], []])[ +]b4_c_function_decl([yypstate_delete], [void], [[struct yypstate *yyps], [yyps]])[ ]b4_c_function_decl([yypush_parse], [int], [[struct yypstate *yyps], [yyps]], [[int yynchar], [yynchar]], - [[YYSTYPE *yynlval], [yynlval]] - b4_locations_if([,[[YYLTYPE *yynlloc], [yynlloc]]]))[ + [[YYSTYPE const *yynlval], [yynlval]] + b4_locations_if([,[[YYLTYPE const *yynlloc], [yynlloc]]]))[ ])[ ]m4_divert_push([KILL])# ======================== M4 code. @@ -1047,8 +1049,7 @@ m4_define([b4_declare_yyparse_variables], }; /* Initialize the parser data structure. */ -struct yypstate* -yypstate_init (void) +]b4_c_function_def([yypstate_new], [struct yypstate *])[ { struct yypstate *yyps = (struct yypstate *) malloc (sizeof *yyps); yyps->yystate = 0; @@ -1071,7 +1072,14 @@ yypstate_init (void) ]b4_locations_if([ yyps->yylsp = yyps->yyls;])[ return yyps; -}]) +} + +]b4_c_function_def([yypstate_delete], [void], + [[struct yypstate *yyps], [yyps]])[ +{ + free (yyps); +} +]) m4_divert_pop([KILL])dnl# ====================== End of M4 code. b4_push_if([],[b4_pure_if([], @@ -1085,8 +1093,9 @@ b4_push_if([b4_declare_yyparse_variables]) b4_push_if([ b4_c_function_def([yypush_parse], [int], [[struct yypstate *yyps], [yyps]], - [[int yynchar], [yynchar]], [[YYSTYPE *yynlval], [yynlval]] - b4_locations_if([,[[YYLTYPE *yynlloc], [yynlloc]]]))],[ + [[int yynchar], [yynchar]], + [[YYSTYPE const *yynlval], [yynlval]] + b4_locations_if([,[[YYLTYPE const *yynlloc], [yynlloc]]]))],[ #ifdef YYPARSE_PARAM b4_c_function_def([yyparse], [int], [[void *YYPARSE_PARAM], [YYPARSE_PARAM]]) #else /* ! YYPARSE_PARAM */ @@ -1679,12 +1688,15 @@ typedef struct YYLTYPE #endif ]b4_push_if([struct ]b4_prefix[pstate; -]b4_c_function_decl([]b4_prefix[pstate_init], [struct ]b4_prefix[pstate *], [[void], []])[ +]b4_c_function_decl([]b4_prefix[pstate_new], [struct ]b4_prefix[pstate *], + [[void], []])[ +]b4_c_function_decl([]b4_prefix[pstate_delete], [void], + [[struct ]b4_prefix[pstate *yyps],[yyps]])[ ]b4_c_function_decl([]b4_prefix[push_parse], [int], [[struct ]b4_prefix[pstate *]b4_prefix[pstate], []b4_prefix[pstate]], [[int yynchar], [yynchar]], - [[YYSTYPE *yynlval], [yynlval]] - b4_locations_if([,[[YYLTYPE *yynlloc], [yynlloc]]]))[ + [[YYSTYPE const *yynlval], [yynlval]] + b4_locations_if([,[[YYLTYPE const *yynlloc], [yynlloc]]]))[ enum { YYPUSH_MORE = 4 };])[ ]b4_pure_if([], [extern YYLTYPE b4_prefix[]lloc;]) diff --git a/tests/calc.at b/tests/calc.at index 3b32194c..d245dd18 100644 --- a/tests/calc.at +++ b/tests/calc.at @@ -338,13 +338,13 @@ main (int argc, const char **argv) [ yydebug = 1;])])[ ]AT_PUSH_IF([ { - struct yypstate *pstate = yypstate_init (); + struct yypstate *pstate = yypstate_new (); YYSTYPE my_lval; ]AT_LOCATION_IF([YYLTYPE my_lloc;])[ do { status = yypush_parse (pstate, yylex (&my_lval]AT_LOCATION_IF([[, &my_lloc]])[), &my_lval]AT_LOCATION_IF([[, &my_lloc]])[); } while (status == YYPUSH_MORE); - free (pstate); + yypstate_delete (pstate); }],[ status = yyparse (]AT_PARAM_IF([[&result, &count]])[);])[ fclose (input); -- 2.47.2