bug-bison
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bison 3.0.4 %destructor is c++ mode seems to be called even in the norma


From: Min Wang
Subject: bison 3.0.4 %destructor is c++ mode seems to be called even in the normal parse
Date: Thu, 18 Aug 2016 11:36:59 -0400

HI

In bison 3.0.4, the  %destructor seems to be called even in the normal parse

we have discussion at help-bison mailing list.

The thread started at:

http://lists.gnu.org/archive/html/help-bison/2016-08/msg00014.html

more verbose ouput details is at:

http://lists.gnu.org/archive/html/help-bison/2016-08/msg00016.html


but briefly,


in the generated parser.cpp:

#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 ();

in the generated : filter_parser.hh

    /// Stack type.

    typedef stack<stack_symbol_type> stack_type;

    /// The stack.
    stack_type yystack_;

filter_parser::basic_symbol<Base>::clear ()  {
    ...
        basic_symbol<Base>& yysym = *this;
    (void) yysym;
    switch (yytype)
    {
      case 25: // PROG
#line 159 "filter_parser.yy" // lalr1.cc:377

        { std::cout << " **** I am PROG " << yysym.value.template as<
PROG*>* () ;*
              delete $$;
              std::cout << " delete done" << std::endl;
        }



even in  the normal case ( no error recovery ), the call flow will go to:

yypop_ (yylen)  -> yystack_.pop (n) -> basic_symbol<Base>::clear () ->
call %destructor code



Could someone check it?


thanks.




min


reply via email to

[Prev in Thread] Current Thread [Next in Thread]