Re: Minor documentation and message issues

Akim Demaille <[email protected]> Sat, 10 Sep 2022 14:52:24 +0200
Newsgroups gmane.comp.parsers.bison.bugs
Message-ID <[email protected]>
Hi Frank,

> Le 25 juil. 2022 =C3=A0 18:18, Frank Heckenbach =
<[email protected]> a =C3=A9crit :
>=20
> I wrote:
>=20
>> The manual states:
>>=20
>>  The syntax of the various directives to declare symbols is as =
follows.
>>=20
>>  @example
>>  %token @var{tag}? ( @var{id} @var{number}? @var{string}? )+ ( =
@var{tag} ( @var{id} @var{number}? @var{string}? )+ )*
>>  %left  @var{tag}? ( @var{id} @var{number}?)+ ( @var{tag} ( @var{id} =
@var{number}? )+ )*
>>  %type  @var{tag}? ( @var{id} | @var{char} | @var{string} )+ ( =
@var{tag} ( @var{id} | @var{char} | @var{string} )+ )*
>>  %nterm @var{tag}? @var{id}+ ( @var{tag} @var{id}+ )*
>>  @end example
>>=20
>> I think the "@var{char}" option is missing in the "%token" and
>> "%left" cases.
>=20
> Also "@var{string}" in "%left".

Thanks!  I had never realized we could write `%token '+'`.  I also =
didn't know we could give a string alias to a char-token.  But I'll =
leave it as is.

I think this is right now, do you agree?

commit 374cf8bbafea10914b15df8110fb527383095d2f
Author: Akim Demaille <[email protected]>
Date:   Sat Sep 10 14:48:24 2022 +0200

    doc: fix the description of the syntax of %token and %left
   =20
    Reported by Frank Heckenbach.
    https://lists.gnu.org/r/bug-bison/2022-07/msg00007.html
   =20
    * doc/bison.texi (Symbol Decls): here.

diff --git a/doc/bison.texi b/doc/bison.texi
index f4ee13e1..a4bc037e 100644
--- a/doc/bison.texi
+++ b/doc/bison.texi
@@ -5318,15 +5318,27 @@ @node Symbol Decls
 The syntax of the various directives to declare symbols is as follows.
=20
 @example
-%token @var{tag}? ( @var{id} @var{number}? @var{string}? )+ ( @var{tag} =
( @var{id} @var{number}? @var{string}? )+ )*
-%left  @var{tag}? ( @var{id} @var{number}?)+ ( @var{tag} ( @var{id} =
@var{number}? )+ )*
-%type  @var{tag}? ( @var{id} | @var{char} | @var{string} )+ ( @var{tag} =
( @var{id} | @var{char} | @var{string} )+ )*
-%nterm @var{tag}? @var{id}+ ( @var{tag} @var{id}+ )*
+@group
+%token @var{tag}? ( (@var{id}|@var{char}) @var{number}? @var{string}? =
)+ \
+     ( @var{tag}  ( (@var{id}|@var{char}) @var{number}? @var{string}? =
)+ )*
+@end group
+@group
+%left  @var{tag}? ( (@var{id}|@var{char}|@var{string}) @var{number}? )+ =
\
+     ( @var{tag}  ( (@var{id}|@var{char}|@var{string}) @var{number}? )+ =
)*
+@end group
+@group
+%type  @var{tag}? (@var{id}|@var{char}|@var{string})+ \
+     ( @var{tag}  (@var{id}|@var{char}|@var{string})+ )*
+@end group
+@group
+%nterm @var{tag}? @var{id}+ \
+     ( @var{tag}  @var{id}+ )*
+@end group
 @end example
=20
 @noindent
 where @var{tag} denotes a type tag such as @samp{<ival>}, @var{id} =
denotes
-an identifier such as @samp{NUM}, @var{number} a decimal or hexadecimal
+an identifier such as @samp{NUM} or @samp{exp}, @var{number} a decimal =
or hexadecimal
 integer such as @samp{300} or @samp{0x12d}, @var{char} a character =
literal
 such as @samp{'+'}, and @var{string} a string literal such as
 @samp{"number"}.  The postfix quantifiers are @samp{?} (zero or one),