Re: Should YYLTYPE represent the location or the position

Akim Demaille <[email protected]>
Newsgroups gmane.comp.parsers.bison.general
Message-ID <[email protected]>
Hi Arthur,

> Le 14 déc. 2013 à 00:47, Arthur Schwarz <[email protected]> a écrit :
> 
> The manual doesn't make clear whether YYLTYPE should represent the location_type or the position_type. It is inferred that YYLTYPE refers to the position_type, because the position of atoken should be returned by the scanner. The terminology and macros seem to indicate a location rather than a position. I wonder if in future versions of the manual it can be made clear that there is a distinction between the position_type and the location_type, and that the location_type is a calculated quantity within the parser and that location_type is used exclusively with the scanner. And in the same light, maybe change the terminology to reflect this understanding, such as using plocp instead of llocp, et alia. The alternative is to change the classes, structures, and manual so that location means position and position means location. As it stands now, oftentimes location seems to mean position.
> 
> This all leads up to the question of "who's on first". The flex manual always uses location to refer to position, and in consequence, all terminology and names reflect location. This terminology is carried over into Bison but here, location means position. The manual should at least describe what is going on if not make the terminology, classes, and macros consistent.

As far as Bison is concerned, YYLTYPE is definitely a location.  Of course the really question is what is a /location/.

Bison just doesn't care.  It can be a range, a point, a collection of ranges, etc, we just don't care.

The *default* definition in C is four integers (start/end line/column).  In C++ it is two "Positions", etc.

I'm installing this.

Thanks!


commit c0bc74ddfdf791b32f66443948add41294623136
Author: Akim Demaille <[email protected]>
Date:   Sun May 3 10:46:59 2020 +0200

    doc: clarify what a location is
    
    Reported by Arthur Schwarz <[email protected]>
    https://lists.gnu.org/r/help-bison/2013-12/msg00009.html
    
    * doc/bison.texi (Location Type): here.

diff --git a/THANKS b/THANKS
index 805c744f..48b31ea9 100644
--- a/THANKS
+++ b/THANKS
@@ -20,6 +20,7 @@ Anthony Heading           [email protected]
 Antonio Silva Correia     [email protected]
 Arnold Robbins            [email protected]
 Art Haas                  [email protected]
+Arthur Schwarz            [email protected]
 Askar Safin               [email protected]
 Balázs Scheidler          [email protected]
 Baron Schwartz            [email protected]
diff --git a/doc/bison.texi b/doc/bison.texi
index fe3f6d0f..60cf5dba 100644
--- a/doc/bison.texi
+++ b/doc/bison.texi
@@ -4505,12 +4505,18 @@ typedef struct YYLTYPE
 @} YYLTYPE;
 @end example
 
+While default locations represent a range in the source file(s), this is not
+a requirement.  It could be a single point or just a line number, or even
+more complex structures.
+
 When @code{YYLTYPE} is not defined, at the beginning of the parsing, Bison
 initializes all these fields to 1 for @code{yylloc}.  To initialize
 @code{yylloc} with a custom location type (or to chose a different
 initialization), use the @code{%initial-action} directive.  @xref{Initial
 Action Decl}.
 
+
 @node Actions and Locations
 @subsection Actions and Locations
 @cindex location actions
@@ -14736,8 +14742,8 @@ In semantic actions, it stores the location of the lookahead token.
 @end deffn
 
 @deffn {Type} YYLTYPE
-Data type of @code{yylloc}; by default, a structure with four members.
-@xref{Location Type}.
+Data type of @code{yylloc}.  By default in C, a structure with four members
+(start/end line/column).  @xref{Location Type}.
 @end deffn
 
 @deffn {Variable} yylval
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.