X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/9fafc4ddfd1d67c1b8b1b2c9ad2ecb7c7b69d4a1..e019c2477959aac474358ae74502fd96a60dfb89:/data/glr.c diff --git a/data/glr.c b/data/glr.c index 0f92dc4a..97c43bc7 100644 --- a/data/glr.c +++ b/data/glr.c @@ -103,7 +103,7 @@ m4_define([b4_lpure_formals], # -------------------- # Expansion of $$. m4_define([b4_lhs_value], -[(*yyvalp)[]m4_ifval([$1], [.$1])]) +[((*yyvalp)[]m4_ifval([$1], [.$1]))]) # b4_rhs_value(RULE-LENGTH, NUM, [TYPE]) @@ -111,7 +111,7 @@ m4_define([b4_lhs_value], # Expansion of $NUM, where the current rule has RULE-LENGTH # symbols on RHS. m4_define([b4_rhs_value], -[((yyGLRStackItem const *)yyvsp)@{YYFILL (m4_eval([$2 - $1]))@}.yystate.yysemantics.yysval[]m4_ifval([$3], [.$3])]) +[(((yyGLRStackItem const *)yyvsp)@{YYFILL (m4_eval([$2 - $1]))@}.yystate.yysemantics.yysval[]m4_ifval([$3], [.$3]))]) @@ -131,7 +131,7 @@ m4_define([b4_lhs_location], # Expansion of @NUM, where the current rule has RULE-LENGTH symbols # on RHS. m4_define([b4_rhs_location], -[((yyGLRStackItem const *)yyvsp)@{YYFILL (m4_eval([$2 - $1]))@}.yystate.yyloc]) +[(((yyGLRStackItem const *)yyvsp)@{YYFILL (m4_eval([$2 - $1]))@}.yystate.yyloc)]) # We do want M4 expansion after # for CPP macros. m4_changecom() @@ -149,8 +149,7 @@ b4_copyright([Skeleton parser for GLR parsing with Bison], [2002, 2003, 2004]) ]b4_identification m4_if(b4_prefix[], [yy], [], -[/* If NAME_PREFIX is specified substitute the variables and functions - names. */ +[/* Substitute the variable and function names. */ #define yyparse b4_prefix[]parse #define yylex b4_prefix[]lex #define yyerror b4_prefix[]error @@ -430,17 +429,17 @@ static const ]b4_int_type_for([b4_stos])[ yystos[] = do \ if (N) \ { \ - (Current).first_line = YYRHSLOC(Rhs, 1).first_line; \ - (Current).first_column = YYRHSLOC(Rhs, 1).first_column; \ - (Current).last_line = YYRHSLOC(Rhs, N).last_line; \ - (Current).last_column = YYRHSLOC(Rhs, N).last_column; \ + (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ + (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ + (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ + (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ } \ else \ { \ (Current).first_line = (Current).last_line = \ - YYRHSLOC(Rhs, 0).last_line; \ + YYRHSLOC (Rhs, 0).last_line; \ (Current).first_column = (Current).last_column = \ - YYRHSLOC(Rhs, 0).last_column; \ + YYRHSLOC (Rhs, 0).last_column; \ } \ while (0) @@ -612,8 +611,8 @@ union yyGLRStackItem { struct yyGLRStack { int yyerrflag; int yyerrState; -]b4_location_if([[ /* To compute the location of the error token, */ - yyGLRStackItem yyerror_range[2];]])[ +]b4_location_if([[ /* To compute the location of the error token. */ + yyGLRStackItem yyerror_range[3];]])[ ]b4_pure_if( [ int yyerrcnt; @@ -1722,7 +1721,7 @@ yyrecoverSyntaxError (yyGLRStack* yystack, while (yystack->yytops.yystates[0] != NULL) { yyGLRState *yys = yystack->yytops.yystates[0]; -]b4_location_if([[ yystack->yyerror_range[0].yystate.yyloc = yys->yyloc;]])[ +]b4_location_if([[ yystack->yyerror_range[1].yystate.yyloc = yys->yyloc;]])[ yydestruct ("Error: popping", yystos[yys->yylrState], &yys->yysemantics.yysval]b4_location_if([, &yys->yyloc])[); @@ -1737,8 +1736,10 @@ yyrecoverSyntaxError (yyGLRStack* yystack, /* We throw away the lookahead, but the error range of the shifted error token must take it into account. */ yyGLRState *yys = yystack->yytops.yystates[0]; - yys->yyloc.last_line = yyllocp->last_line; - yys->yyloc.last_column = yyllocp->last_column;]])[ + yyGLRStackItem yyerror_range[3]; + yyerror_range[1].yystate.yyloc = yys->yyloc; + yyerror_range[2].yystate.yyloc = *yyllocp; + YYLLOC_DEFAULT (yys->yyloc, yyerror_range, 2);]])[ yydestruct ("Error: discarding", *yytokenp, yylvalp]b4_location_if([, yyllocp])[); } @@ -1784,8 +1785,8 @@ yyrecoverSyntaxError (yyGLRStack* yystack, { /* Shift the error token having adjusted its location. */ YYLTYPE yyerrloc;]b4_location_if([[ - yystack->yyerror_range[1].yystate.yyloc = *yyllocp; - YYLLOC_DEFAULT (yyerrloc, yystack->yyerror_range - 1, 2);]])[ + yystack->yyerror_range[2].yystate.yyloc = *yyllocp; + YYLLOC_DEFAULT (yyerrloc, yystack->yyerror_range, 2);]])[ YY_SYMBOL_PRINT ("Shifting", yystos[yytable[yyj]], yylvalp, &yyerrloc); yyglrShift (yystack, 0, yytable[yyj], @@ -1794,7 +1795,7 @@ yyrecoverSyntaxError (yyGLRStack* yystack, break; } } -]b4_location_if([[ yystack->yyerror_range[0].yystate.yyloc = yys->yyloc;]])[ +]b4_location_if([[ yystack->yyerror_range[1].yystate.yyloc = yys->yyloc;]])[ yydestruct ("Error: popping", yystos[yys->yylrState], &yys->yysemantics.yysval]b4_location_if([, &yys->yyloc])[); @@ -1893,7 +1894,7 @@ b4_syncline([@oline@], [@ofile@])])dnl yyrule = yydefaultAction (yystate); if (yyrule == 0) { -]b4_location_if([[ yystack.yyerror_range[0].yystate.yyloc = *yyllocp;]])[ +]b4_location_if([[ yystack.yyerror_range[1].yystate.yyloc = *yyllocp;]])[ yyreportSyntaxError (&yystack, yylvalp, yyllocp]b4_user_args[); goto yyuser_error; } @@ -1924,7 +1925,7 @@ b4_syncline([@oline@], [@ofile@])])dnl } else if (yyisErrorAction (yyaction)) { -]b4_location_if([[ yystack.yyerror_range[0].yystate.yyloc = *yyllocp;]])[ +]b4_location_if([[ yystack.yyerror_range[1].yystate.yyloc = *yyllocp;]])[ yyreportSyntaxError (&yystack, yylvalp, yyllocp]b4_user_args[); goto yyuser_error; } @@ -1950,7 +1951,7 @@ b4_syncline([@oline@], [@ofile@])])dnl yyFail (&yystack][]b4_lpure_args[, "syntax error"); YYCHK1 (yyresolveStack (&yystack]b4_user_args[)); YYDPRINTF ((stderr, "Returning to deterministic operation.\n")); -]b4_location_if([[ yystack.yyerror_range[0].yystate.yyloc = *yyllocp;]])[ +]b4_location_if([[ yystack.yyerror_range[1].yystate.yyloc = *yyllocp;]])[ yyreportSyntaxError (&yystack, yylvalp, yyllocp]b4_user_args[); goto yyuser_error; }