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