diff options
-rw-r--r-- | data/lalr1.cc | 12 | ||||
-rw-r--r-- | tests/c++.at | 3 |
2 files changed, 5 insertions, 10 deletions
diff --git a/data/lalr1.cc b/data/lalr1.cc index d3d063ab..61dc6663 100644 --- a/data/lalr1.cc +++ b/data/lalr1.cc @@ -700,6 +700,7 @@ m4_if(b4_prefix, [yy], [], // State. int yyn; + /// Length of the RHS of the rule being reduced. int yylen = 0; // Error handling. @@ -712,9 +713,6 @@ m4_if(b4_prefix, [yy], [], /// The locations where the error started and ended. stack_symbol_type yyerror_range[3];]])[ - /// $$ and @@$. - stack_symbol_type yylhs; - /// The return value of parse (). int yyresult; @@ -815,6 +813,8 @@ b4_dollar_popdef])[]dnl `-----------------------------*/ yyreduce: yylen = yyr2_[yyn]; + { + stack_symbol_type yylhs; yylhs.state = yy_lr_goto_state_(yystack_[yylen].state, yyr1_[yyn]);]b4_variant_if([ /* Variants are always initialized to an empty instance of the correct type. The default $$=$1 action is NOT applied when using @@ -861,6 +861,7 @@ b4_dollar_popdef])[]dnl // Shift the result of the reduction. yypush_ (YY_NULLPTR, yylhs); + } goto yynewstate; /*--------------------------------------. @@ -907,10 +908,7 @@ b4_dollar_popdef])[]dnl code. */ if (false) goto yyerrorlab;]b4_locations_if([[ - yyerror_range[1].location = yystack_[yylen - 1].location;]])b4_variant_if([[ - /* $$ was initialized before running the user action. */ - YY_SYMBOL_PRINT ("Error: discarding", yylhs); - yylhs.~stack_symbol_type();]])[ + yyerror_range[1].location = yystack_[yylen - 1].location;]])[ /* Do not reclaim the symbols of the rule whose action triggered this YYERROR. */ yypop_ (yylen); diff --git a/tests/c++.at b/tests/c++.at index 355e6247..5b3df02b 100644 --- a/tests/c++.at +++ b/tests/c++.at @@ -658,9 +658,6 @@ m4_pushdef([AT_TEST], AT_SKIP_IF_EXCEPTION_SUPPORT_IS_POOR -m4_if([$1], [], [], - [m4_if([$2], [without], [AT_XFAIL_IF([true])])]) - AT_BISON_OPTION_PUSHDEFS([%skeleton "lalr1.cc" $1]) AT_DATA_GRAMMAR([[input.yy]], |