Hello Akim, It's ok! And thank you for all your help in the past year! I agree to not using %union.
Thank you, Adela Vais În dum., 25 iul. 2021 la 17:05, Akim Demaille <[email protected]> a scris: > Hi Adela, > > I apologize for not being very responsive currently :( > > Let's prepare 3.8 with the D skeleton as foremost feature. > > I'm not too fond of using %union, so I suggest to not use it in the > "advanced" D example. Would you agree with that? > > Cheers! > > commit d19cde6f1828afed55a3add126e4eed41bfebc04 > Author: Akim Demaille <[email protected]> > Date: Wed Jun 23 07:19:20 2021 +0200 > > d: minor clean up > > * doc/bison.texi: Use @samp, not "...", around pieces of code. > * examples/d/calc/calc.y: Don't promote %union. > > diff --git a/doc/bison.texi b/doc/bison.texi > index bfa8687bf..0b585739b 100644 > --- a/doc/bison.texi > +++ b/doc/bison.texi > @@ -6485,7 +6485,7 @@ with other members of the @code{SymbolKind} class. > > @item Default Value: > @code{YYSYMBOL_} in C. @code{S_} in C++ and Java. The default prefix is > -removed from D. > +empty from D. > @item History: > introduced in Bison 3.6. > @end itemize > @@ -6503,9 +6503,9 @@ C++, D > @item Purpose: > Request that symbols be handled as a whole (type, value, and possibly > location) in the scanner. In the case of C++, it works only when > -variant-based semantic values are enabled > -(@pxref{C++ Variants}), @xref{Complete Symbols}, for details. In D, > -token constructor works with both "%union" and "%define api.value.type > union". > +variant-based semantic values are enabled (@pxref{C++ Variants}), see > +@ref{Complete Symbols}, for details. In D, token constructors work with > both > +@samp{%union} and @samp{%define api.value.type union}. > > @item Accepted Values: > Boolean. > diff --git a/examples/d/calc/calc.y b/examples/d/calc/calc.y > index 7273d16c6..f2b0e8b2d 100644 > --- a/examples/d/calc/calc.y > +++ b/examples/d/calc/calc.y > @@ -20,17 +20,14 @@ > %language "D" > > %define api.parser.class {Calc} > -%define parse.error detailed > -%define parse.trace > %define api.push-pull push > %define api.token.constructor > +%define api.value.type union > +%define parse.error detailed > +%define parse.trace > > %locations > > -%union { > - int ival; > -} > - > /* Bison Declarations */ > %token PLUS "+" > MINUS "-" > @@ -39,9 +36,9 @@ > LPAR "(" > RPAR ")" > EOL "end of line" > -%token <ival> NUM "number" > -%type <ival> exp > -%printer { yyo.write($$); } <ival> > +%token <int> NUM "number" > +%type <int> exp > +%printer { yyo.write($$); } <int> > > %left "-" "+" > %left "*" "/" > >
