X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/e141f4d4bb6584bfbf13003047a2e48e9a6eab6a..c826013fb38c98861ef0fc5d4dc3fb3fb4f555be:/data/lalr1.cc diff --git a/data/lalr1.cc b/data/lalr1.cc index b89a6df8..7cb7db62 100644 --- a/data/lalr1.cc +++ b/data/lalr1.cc @@ -124,10 +124,10 @@ m4_define([b4_parser_class_name], b4_defines_if([], [b4_fatal([b4_skeleton[: using %%defines is mandatory]])]) -b4_locations_if( -[# Backward compatibility. -m4_define([b4_location_constructors]) -m4_include(b4_pkgdatadir/[location.cc])]) +b4_locations_if([b4_percent_define_ifdef([[location_type]], [], + [# Backward compatibility. + m4_define([b4_location_constructors]) + m4_include(b4_pkgdatadir/[location.cc])])]) m4_include(b4_pkgdatadir/[stack.hh]) b4_variant_if([m4_include(b4_pkgdatadir/[variant.hh])]) @@ -150,14 +150,12 @@ dnl FIXME: This is wrong, we want computed header guards. #include #include #include "stack.hh" +]b4_locations_if([b4_percent_define_ifdef([[location_type]], [], + [[#include "location.hh"]])])[ -]b4_namespace_open[ -]b4_locations_if([ class position; - class location;])[ -]b4_variant_if([b4_variant_define])[ -]b4_namespace_close[ - -]b4_locations_if([#include "location.hh"])[ +]b4_variant_if([b4_namespace_open +b4_variant_define +b4_namespace_close])[ /* Enabling traces. */ #ifndef YYDEBUG @@ -689,7 +687,7 @@ b4_percent_code_get[]dnl symbol_type yyla;]b4_locations_if([[ /// The locations where the error started and ended. - stack_symbol_type yyerror_range[2];]])[ + stack_symbol_type yyerror_range[3];]])[ /// $$ and @@$. stack_symbol_type yylhs; @@ -866,7 +864,7 @@ m4_ifdef([b4_lex_param], [, ]b4_lex_param)));])[ } ]b4_locations_if([[ - yyerror_range[0].location = yyla.location;]])[ + yyerror_range[1].location = yyla.location;]])[ if (yyerrstatus_ == 3) { /* If just tried and failed to reuse lookahead token after an @@ -897,7 +895,7 @@ m4_ifdef([b4_lex_param], [, ]b4_lex_param)));])[ code. */ if (false) goto yyerrorlab;]b4_locations_if([[ - yyerror_range[0].location = yystack_[yylen - 1].location;]])b4_variant_if([[ + yyerror_range[1].location = yystack_[yylen - 1].location;]])b4_variant_if([[ /* $$ was initialized before running the user action. */ yy_destroy_ ("Error: discarding", yylhs);]])[ /* Do not reclaim the symbols of the rule which action triggered @@ -931,14 +929,14 @@ m4_ifdef([b4_lex_param], [, ]b4_lex_param)));])[ if (yystack_.size () == 1) YYABORT; ]b4_locations_if([[ - yyerror_range[0].location = yystack_[0].location;]])[ + yyerror_range[1].location = yystack_[0].location;]])[ yy_destroy_ ("Error: popping", yystack_[0]); yypop_ (); YY_STACK_PRINT (); } ]b4_locations_if([[ - yyerror_range[1].location = yyla.location; - YYLLOC_DEFAULT (error_token.location, (yyerror_range - 1), 2);]])[ + yyerror_range[2].location = yyla.location; + YYLLOC_DEFAULT (error_token.location, yyerror_range, 2);]])[ /* Shift the error token. */ error_token.state = yyn;