From e785ccf715929f1571afc185717b661f5f37e5d4 Mon Sep 17 00:00:00 2001 From: "Joel E. Denny" Date: Sat, 10 Feb 2007 22:28:23 +0000 Subject: [PATCH] As in semantic actions, make @$ in %initial-action, %destructor, and %printer imply %locations. * src/scan-code.l (SC_SYMBOL_ACTION): Set locations_flag = true when scanning @$. * tests/actions.at (AT_CHECK_ACTION_LOCATIONS): New macro supporting... (@$ in %initial-action implies %locations, @$ in %destructor implies %locations, @$ in %printer implies %locations): ... these new test cases. --- ChangeLog | 11 +++++++++ src/scan-code.l | 5 +++- tests/actions.at | 59 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 74 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 1adcebcd..a4be8fdd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2007-02-10 Joel E. Denny + + As in semantic actions, make @$ in %initial-action, %destructor, and + %printer imply %locations. + * src/scan-code.l (SC_SYMBOL_ACTION): Set locations_flag = true when + scanning @$. + * tests/actions.at (AT_CHECK_ACTION_LOCATIONS): New macro supporting... + (@$ in %initial-action implies %locations, + @$ in %destructor implies %locations, + @$ in %printer implies %locations): ... these new test cases. + 2007-02-07 Paul Eggert Undo most of the 2007-02-03 change, switching to the strcase module diff --git a/src/scan-code.l b/src/scan-code.l index b54f4c9a..9e514013 100644 --- a/src/scan-code.l +++ b/src/scan-code.l @@ -202,7 +202,10 @@ splice (\\[ \f\t\v]*\n)* obstack_sgrow (&obstack_for_string, "]b4_dollar_dollar["); self->is_value_used = true; } - "@$" obstack_sgrow (&obstack_for_string, "]b4_at_dollar["); + "@$" { + obstack_sgrow (&obstack_for_string, "]b4_at_dollar["); + locations_flag = true; + } } diff --git a/tests/actions.at b/tests/actions.at index 43b6f7f6..0e833a39 100644 --- a/tests/actions.at +++ b/tests/actions.at @@ -1247,3 +1247,62 @@ Stack now 0 ]]) AT_CLEANUP + + +## ----------------------- ## +## @$ implies %locations. ## +## ----------------------- ## + +# Bison once forgot to check for @$ in actions other than semantic actions. + +# AT_CHECK_ACTION_LOCATIONS(ACTION-DIRECTIVE) +# ------------------------------------------------------- +m4_define([AT_CHECK_ACTION_LOCATIONS], +[AT_SETUP([[@$ in ]$1[ implies %locations]]) + +AT_DATA_GRAMMAR([[input.y]], +[[%code { + #include + static int yylex (void); + static void yyerror (char const *msg); +} + +%debug + +]$1[ { + printf ("%d\n", @$.first_line); +} ]m4_if($1, [%initial-action], [], [[start]])[ + +%% + +start: ; + +%% + +static int +yylex (void) +{ + return 0; +} + +static void +yyerror (char const *msg) +{ + fprintf (stderr, "%s\n", msg); +} + +int +main (void) +{ + return yyparse (); +} +]]) + +AT_CHECK([[bison -o input.c input.y]]) +AT_COMPILE([[input]]) + +AT_CLEANUP]) + +AT_CHECK_ACTION_LOCATIONS([[%initial-action]]) +AT_CHECK_ACTION_LOCATIONS([[%destructor]]) +AT_CHECK_ACTION_LOCATIONS([[%printer]]) -- 2.45.2