From b2d52318fadef8d2bf04769ec2fffb33baf6d92a Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Thu, 2 May 2002 16:40:54 +0000 Subject: [PATCH] * data/bison.simple (yyparse): Do not implement @$ = @1. (YYLLOC_DEFAULT): Adjust to do it. * doc/bison.texinfo (Location Default Action): Fix. --- ChangeLog | 6 ++++++ NEWS | 8 +++++--- data/bison.simple | 18 +++++++----------- doc/bison.texinfo | 16 +++++++--------- 4 files changed, 25 insertions(+), 23 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4f0f2ca0..819c6d2d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2002-05-02 Akim Demaille + + * data/bison.simple (yyparse): Do not implement @$ = @1. + (YYLLOC_DEFAULT): Adjust to do it. + * doc/bison.texinfo (Location Default Action): Fix. + 2002-05-02 Akim Demaille * src/reader.c (parse_braces): Merge into... diff --git a/NEWS b/NEWS index 31587f08..ab991a80 100644 --- a/NEWS +++ b/NEWS @@ -43,9 +43,11 @@ Changes in version 1.49b: * Revert the C++ namespace changes introduced in 1.31, as they caused too many portability hassles. -* Items overflow - Bison no longer dumps core when there are too many items, it just - dies. +* Default locations + By an accident of design, the default computation of @$ was + performed after another default computation was performed: @$ = @1. + The latter is now removed: YYLLOC_DEFAULT is fully responsible of + the computation of @$. * Token end-of-file The token end of file may be specified by the user, in which case, diff --git a/data/bison.simple b/data/bison.simple index f7127a0c..0a7804dc 100644 --- a/data/bison.simple +++ b/data/bison.simple @@ -465,16 +465,14 @@ while (0) #define YYERRCODE 256 /* YYLLOC_DEFAULT -- Compute the default location (before the actions - are run). - - When YYLLOC_DEFAULT is run, CURRENT is set the location of the - first token. By default, to implement support for ranges, extend - its range to the last symbol. */ + are run). */ #ifndef YYLLOC_DEFAULT -# define YYLLOC_DEFAULT(Current, Rhs, N) \ - Current.last_line = Rhs[[N]].last_line; \ - Current.last_column = Rhs[[N]].last_column; +# define YYLLOC_DEFAULT(Current, Rhs, N) \ + Current.first_line = Rhs[[1]].first_line; \ + Current.first_column = Rhs[[1]].first_column; \ + Current.last_line = Rhs[[N]].last_line; \ + Current.last_column = Rhs[[N]].last_column; #endif /* YYLEX -- calling `yylex' with the right arguments. */ @@ -956,9 +954,7 @@ yyreduce: yyval = yyvsp[1-yylen]; #if YYLSP_NEEDED - /* Similarly for the default location. Let the user run additional - commands if for instance locations are ranges. */ - yyloc = yylsp[1-yylen]; + /* Default location. */ YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen); #endif diff --git a/doc/bison.texinfo b/doc/bison.texinfo index 275c95ec..b38cdb21 100644 --- a/doc/bison.texinfo +++ b/doc/bison.texinfo @@ -2886,9 +2886,11 @@ By default, it is defined this way: @example @group -#define YYLLOC_DEFAULT(Current, Rhs, N) \ - Current.last_line = Rhs[N].last_line; \ - Current.last_column = Rhs[N].last_column; +#define YYLLOC_DEFAULT(Current, Rhs, N) \ + Current.first_line = Rhs[1].first_line; \ + Current.first_column = Rhs[1].first_column; \ + Current.last_line = Rhs[N].last_line; \ + Current.last_column = Rhs[N].last_column; @end group @end example @@ -2900,12 +2902,8 @@ All arguments are free of side-effects. However, only the first one (the result) should be modified by @code{YYLLOC_DEFAULT}. @item -Before @code{YYLLOC_DEFAULT} is executed, the output parser sets @code{@@$} -to @code{@@1}. - -@item -For consistency with semantic actions, valid indexes for the location array -range from 1 to @var{n}. +For consistency with semantic actions, valid indexes for the location +array range from 1 to @var{n}. @end itemize @node Declarations -- 2.45.2