diff --git a/data/bison.m4 b/data/bison.m4 index cb777d07..f727a04d 100644 --- a/data/bison.m4 +++ b/data/bison.m4 @@ -613,13 +613,15 @@ m4_define([b4_user_code], b4_syncline([@oline@], [@ofile@])]) -# b4_define_user_code(MACRO) -# -------------------------- -# From b4_MACRO, build b4_user_MACRO that includes the synclines. +# b4_define_user_code(MACRO, COMMENT) +# ----------------------------------- +# From b4_MACRO, if defined, build b4_user_MACRO that includes the synclines. m4_define([b4_define_user_code], [m4_define([b4_user_$1], -[b4_user_code([b4_$1])])]) - + [m4_ifdef([b4_$1], + [m4_ifval([$2], + [b4_comment([$2]) +])b4_user_code([b4_$1])])])]) # b4_user_actions # b4_user_initial_action @@ -629,9 +631,9 @@ m4_define([b4_define_user_code], # ---------------------- # Macros that issue user code, ending with synclines. b4_define_user_code([actions]) -b4_define_user_code([initial_action]) -b4_define_user_code([post_prologue]) -b4_define_user_code([pre_prologue]) +b4_define_user_code([initial_action], [User initialization code.]) +b4_define_user_code([post_prologue], [Second part of user prologue.]) +b4_define_user_code([pre_prologue], [First part of user prologue.]) b4_define_user_code([union_members]) @@ -1056,8 +1058,6 @@ b4_check_user_names_wrap([[code]], [[qualifier]]) ## ---------------- ## # m4_define_default([b4_lex_param], []) dnl breaks other skeletons -m4_define_default([b4_pre_prologue], []) -m4_define_default([b4_post_prologue], []) m4_define_default([b4_epilogue], []) m4_define_default([b4_parse_param], []) diff --git a/data/glr.c b/data/glr.c index 8247af5b..6da6d45f 100644 --- a/data/glr.c +++ b/data/glr.c @@ -236,7 +236,6 @@ b4_copyright([Skeleton implementation for Bison GLR parsers in C], #define yynerrs ]b4_prefix[nerrs]b4_locations_if([[ #define yylloc ]b4_prefix[lloc]])]))[ -/* First part of user declarations. */ ]b4_user_pre_prologue[ ]b4_null_define[ @@ -259,9 +258,8 @@ b4_copyright([Skeleton implementation for Bison GLR parsers in C], static YYSTYPE yyval_default;]b4_locations_if([[ static YYLTYPE yyloc_default][]b4_yyloc_default;])[ -/* Copy the second part of user declarations. */ -]b4_user_post_prologue -b4_percent_code_get[]dnl +]b4_user_post_prologue[ +]b4_percent_code_get[]dnl [#include #include @@ -820,7 +818,7 @@ yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp, ]])[ switch (yyn) { - ]b4_user_actions[ +]b4_user_actions[ default: break; } @@ -2266,7 +2264,6 @@ yyrecoverSyntaxError (yyGLRStack* yystackp]b4_user_formals[) yylloc = yyloc_default;])[ ]m4_ifdef([b4_initial_action], [ b4_dollar_pushdef([yylval], [], [yylloc])dnl - /* User initialization code. */ b4_user_initial_action b4_dollar_popdef])[]dnl [ diff --git a/data/glr.cc b/data/glr.cc index f6632c9b..b6139da7 100644 --- a/data/glr.cc +++ b/data/glr.cc @@ -44,7 +44,7 @@ # filename member). # We require a pure interface. -m4_define([b4_pure_flag], [1]) +m4_define([b4_pure_flag], [1]) m4_include(b4_pkgdatadir/[c++.m4]) b4_bison_locations_if([m4_include(b4_pkgdatadir/[location.cc])]) diff --git a/data/lalr1.cc b/data/lalr1.cc index 6633cbd2..6b6d1584 100644 --- a/data/lalr1.cc +++ b/data/lalr1.cc @@ -418,13 +418,11 @@ m4_if(b4_prefix, [yy], [], // Take the name prefix into account. [#]define yylex b4_prefix[]lex])[ -// First part of user declarations. ]b4_user_pre_prologue[ ]b4_defines_if([[#include "@basename(]b4_spec_defines_file[@)"]], [b4_shared_declarations([cc])])[ -// User implementation prologue. ]b4_user_post_prologue[ ]b4_percent_code_get[ @@ -768,7 +766,6 @@ m4_if(b4_prefix, [yy], [], ]m4_ifdef([b4_initial_action], [ b4_dollar_pushdef([yyla.value], [], [yyla.location])dnl - // User initialization code. b4_user_initial_action b4_dollar_popdef])[]dnl diff --git a/data/lalr1.java b/data/lalr1.java index 86798dc0..d270850b 100644 --- a/data/lalr1.java +++ b/data/lalr1.java @@ -87,10 +87,10 @@ b4_copyright([Skeleton implementation for Bison LALR(1) parsers in Java], [2007-2015, 2018]) b4_percent_define_ifdef([package], [package b4_percent_define_get([package]); -])[/* First part of user declarations. */ -]b4_user_pre_prologue -b4_user_post_prologue -b4_percent_code_get([[imports]]) +])[ +]b4_user_pre_prologue[ +]b4_user_post_prologue[ +]b4_percent_code_get([[imports]]) [/** * A Bison parser, automatically generated from ]m4_bpatsubst(b4_file_name, [^"\(.*\)"$], [\1])[. * @@ -586,7 +586,6 @@ b4_define_state])[ yystack.push (yystate, yylval ]b4_locations_if([, yylloc])[); ]m4_ifdef([b4_initial_action], [ b4_dollar_pushdef([yylval], [], [yylloc])dnl - /* User initialization code. */ b4_user_initial_action b4_dollar_popdef[]dnl ])[ @@ -597,7 +596,6 @@ b4_dollar_popdef[]dnl push_parse_initialize (); ]m4_ifdef([b4_initial_action], [ b4_dollar_pushdef([yylval], [], [yylloc])dnl - /* User initialization code. */ b4_user_initial_action b4_dollar_popdef[]dnl ])[ diff --git a/data/yacc.c b/data/yacc.c index 34d719b0..880379ba 100644 --- a/data/yacc.c +++ b/data/yacc.c @@ -335,9 +335,7 @@ m4_if(b4_api_prefix, [yy], [], #define yychar ]b4_prefix[char]b4_locations_if([[ #define yylloc ]b4_prefix[lloc]])]))[ -/* Copy the first part of user declarations. */ ]b4_user_pre_prologue[ - ]b4_null_define[ /* Enabling verbose error messages. */ @@ -354,9 +352,8 @@ m4_if(b4_api_prefix, [yy], [], ]])dnl b4_shared_declarations[ -/* Copy the second part of user declarations. */ -]b4_user_post_prologue -b4_percent_code_get[]dnl +]b4_user_post_prologue[ +]b4_percent_code_get[]dnl [#ifdef short # undef short @@ -1433,7 +1430,6 @@ b4_function_define([[yyparse]], [[int]], b4_parse_param)[ ]m4_ifdef([b4_initial_action], [ b4_dollar_pushdef([m4_define([b4_dollar_dollar_used])yylval], [], [b4_push_if([b4_pure_if([*])yypushed_loc], [yylloc])])dnl -/* User initialization code. */ b4_user_initial_action b4_dollar_popdef[]dnl m4_ifdef([b4_dollar_dollar_used],[[ yyvsp[0] = yylval; @@ -1653,7 +1649,7 @@ yyreduce: int yychar_backup = yychar; switch (yyn) { - ]b4_user_actions[ +]b4_user_actions[ default: break; } if (yychar_backup != yychar)