HI

>
>
> > My confusion is:  it seems the %destructor is called even for the normal
> parse!!
>
> It should not. But I rely on C++ cleanup, so somebody else will have to
> tune in here.
>
>
>
I checked the generated code again:


#line 1038 "filter_parser.cpp" // lalr1.cc:859
      YY_REDUCE_PRINT (yyn);

      try

        {

          switch (yyn)

            {
                 ....
            default:

              break;

            }

        }

      catch (const syntax_error& yyexc)

        {

          error (yyexc);

          YYERROR;

        }

      YY_SYMBOL_PRINT ("-> $$ =", yylhs);

      yypop_ (yylen);

      yylen = 0;

      YY_STACK_PRINT ();


the normal case will go to:

yypop_ (yylen)  which will call basic_symbol<Base>::clear () -> call
%destructor code


It seems a defect to me. should I forward to bug-bison?



min
_______________________________________________
help-bison@gnu.org https://lists.gnu.org/mailman/listinfo/help-bison

Reply via email to