From e5cfd9d8affb6d56c631fbb10d8dc8bbca1520ad Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Mon, 14 Oct 2002 06:54:41 +0000 Subject: [PATCH] (yyparse): Rewrite to avoid "comparison is always true due to limited range of data type" warning from GCC in synclines.at test. --- data/yacc.c | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/data/yacc.c b/data/yacc.c index f3dcfab4..cb690bb7 100644 --- a/data/yacc.c +++ b/data/yacc.c @@ -918,27 +918,19 @@ yybackup: YYDPRINTF ((stderr, "\n")); } - /* Set YYN to the action to take in STATE on seeing token YYCHAR1. - Result YYN means - - YYN < 0: Reduce on rule -YYN. - - YYN = 0: Error. - - YYN > 0: Shift to state YYN. */ + /* If the proper action on seeing token YYCHAR1 is to reduce or to + detect an error, take that action. */ yyn += yychar1; if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yychar1) - /* Defaulted action (reduction). */ - yyn = -yydefact[yystate]; - else if (yytable[yyn] != YYTABLE_NINF) - yyn = yytable[yyn]; - else - yyn = 0; - - if (yyn < 0) + goto yydefault; + yyn = yytable[yyn]; + if (yyn <= 0) { + if (yyn == 0 || yyn == YYTABLE_NINF) + goto yyerrlab; yyn = -yyn; goto yyreduce; } - else if (yyn == 0) - goto yyerrlab; if (yyn == YYFINAL) YYACCEPT; -- 2.47.2