On Wed, Dec 13, 2006 at 02:53:33PM -0500, Joel E. Denny wrote:
> On Wed, 13 Dec 2006, Bob Rossi wrote:
>
> > On Tue, Dec 12, 2006 at 05:11:39PM -0500, Joel E. Denny wrote:
>
> > > How about replacing yypstate_init with yypstate_new and yypstate_delete?
> > > Sorry, I forgot about this during the previous renaming, but this will
> > > probably be a nice self-contained patch anyway. Also, did you look into
> > > using b4_c_function_def for these definitions? If you agree with these
> > > ideas, you could proceed with them while we wait for Paul's response to
> > > the above.
> >
> > OK, do you want me to simply rename yypstateinit to yypstate_new and
> > then add yypstate_delete to just do a free of the data allocated?
>
> Yes, if that's agreeable to you. (And don't forget b4_c_function_def.)
>
> Also, Paul has responded about your previous patch, so you could revise
> that.
How does this look?
Thanks,
Bob Rossi
2006-12-13 Bob Rossi <[EMAIL PROTECTED]>
* data/push.c (yypstate_init #define): Deleted.
(yypsate_new, yypstate_delete #define): Added.
(yypstate_init function_decl): Deleted.
(yypsate_new, yypstate_delete function_decl): Added.
(yypush_parse): Changed parameters yynval and yynlloc to be const.
* tests/calc.at (_AT_DATA_CALC_Y): Use new yypstate_new
yypstate_delete functions.
Index: data/push.c
===================================================================
RCS file: /sources/bison/bison/data/push.c,v
retrieving revision 1.12
diff -u -r1.12 push.c
--- data/push.c 12 Dec 2006 06:47:39 -0000 1.12
+++ data/push.c 13 Dec 2006 23:11:37 -0000
@@ -153,7 +153,8 @@
[/* 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 @@
]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 @@
};
/* 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,13 @@
]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 +1092,8 @@
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 +1686,13 @@
#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;])
Index: tests/calc.at
===================================================================
RCS file: /sources/bison/bison/tests/calc.at,v
retrieving revision 1.96
diff -u -r1.96 calc.at
--- tests/calc.at 8 Dec 2006 22:36:33 -0000 1.96
+++ tests/calc.at 13 Dec 2006 23:11:37 -0000
@@ -338,13 +338,13 @@
[ 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);