diff options
author | DongHun Kwak <dh0128.kwak@samsung.com> | 2021-10-01 14:47:44 +0900 |
---|---|---|
committer | DongHun Kwak <dh0128.kwak@samsung.com> | 2021-10-01 14:47:44 +0900 |
commit | baae776bdbbc9cb77023eaa92064fc5c237dd04f (patch) | |
tree | 604529ecca5ec94dc7fd258e753fb0c2abcf032f /test | |
parent | 0d711dfe38b7fc9148d9ac1fc12557c475b2dbf3 (diff) | |
download | byacc-baae776bdbbc9cb77023eaa92064fc5c237dd04f.tar.gz byacc-baae776bdbbc9cb77023eaa92064fc5c237dd04f.tar.bz2 byacc-baae776bdbbc9cb77023eaa92064fc5c237dd04f.zip |
Imported Upstream version 20160606upstream/20160606
Diffstat (limited to 'test')
106 files changed, 3275 insertions, 3196 deletions
diff --git a/test/btyacc/btyacc_calc1.tab.c b/test/btyacc/btyacc_calc1.tab.c index f7e6a30..17e7962 100644 --- a/test/btyacc/btyacc_calc1.tab.c +++ b/test/btyacc/btyacc_calc1.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 @@ -140,13 +140,13 @@ int dcheck(INTERVAL); double dreg[26]; INTERVAL vreg[26]; -#line 29 "btyacc_calc1.y" #ifdef YYSTYPE #undef YYSTYPE_IS_DECLARED #define YYSTYPE_IS_DECLARED 1 #endif #ifndef YYSTYPE_IS_DECLARED #define YYSTYPE_IS_DECLARED 1 +#line 29 "btyacc_calc1.y" typedef union { int ival; @@ -438,9 +438,9 @@ do \ typedef struct { unsigned stacksize; - short *s_base; - short *s_mark; - short *s_last; + YYINT *s_base; + YYINT *s_mark; + YYINT *s_last; YYSTYPE *l_base; YYSTYPE *l_mark; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -622,18 +622,18 @@ vdiv(double a, double b, INTERVAL v) #endif /* YYBTYACC */ #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif -#include <stdlib.h> /* needed for malloc, etc */ -#include <string.h> /* needed for memset */ +#include <stdlib.h> /* needed for malloc, etc */ +#include <string.h> /* needed for memset */ /* allocate initial stack or double stack size, up to YYMAXDEPTH */ static int yygrowstack(YYSTACKDATA *data) { int i; unsigned newsize; - short *newss; + YYINT *newss; YYSTYPE *newvs; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) YYLTYPE *newps; @@ -647,7 +647,7 @@ static int yygrowstack(YYSTACKDATA *data) newsize = YYMAXDEPTH; i = (int) (data->s_mark - data->s_base); - newss = (short *)realloc(data->s_base, newsize * sizeof(*newss)); + newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss)); if (newss == 0) return YYENOMEM; @@ -711,7 +711,7 @@ yyNewState(unsigned size) #endif return p; } - p->yystack.s_base = (short *) malloc(size * sizeof(short)); + p->yystack.s_base = (YYINT *) malloc(size * sizeof(YYINT)); if (p->yystack.s_base == NULL) return NULL; p->yystack.l_base = (YYSTYPE *) malloc(size * sizeof(YYSTYPE)); if (p->yystack.l_base == NULL) return NULL; @@ -821,6 +821,8 @@ YYPARSE_DECL() yyps = yyNewState(0); if (yyps == 0) goto yyenomem; yyps->save = 0; #endif /* YYBTYACC */ + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -894,11 +896,10 @@ yyloop: } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)", YYDEBUGSTR, yydepth, yystate, yychar, yys); #ifdef YYSTYPE_TOSTRING @@ -957,7 +958,7 @@ yyloop: save->state = yystate; save->errflag = yyerrflag; save->yystack.s_mark = save->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); save->yystack.l_mark = save->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -1038,7 +1039,7 @@ yyloop: if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yyctable[ctry]; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yylval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yylloc; @@ -1084,9 +1085,18 @@ yyloop: yynewerrflag = 1; goto yyerrhandler; - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: + /* explicit YYERROR from an action -- pop the rhs of the rule reduced + * before looking for error recovery */ + yystack.s_mark -= yym; + yystate = *yystack.s_mark; + yystack.l_mark -= yym; +#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) + yystack.p_mark -= yym; +#endif + yynewerrflag = 0; yyerrhandler: while (yyps->save) @@ -1111,7 +1121,7 @@ yyerrhandler: yyerrctx->state = yystate; yyerrctx->errflag = yyerrflag; yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -1127,7 +1137,7 @@ yyerrhandler: yylexp = yylexemes + save->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base); - memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base); memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -1162,7 +1172,7 @@ yyerrhandler: yylloc = yylpp[-1]; #endif yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base); - memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base); memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -1184,7 +1194,7 @@ yyerrhandler: #endif #if !YYBTYACC - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: #endif ++yynerrs; @@ -1253,7 +1263,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n", YYDEBUGSTR, yydepth, yystate, yychar, yys); } @@ -1513,7 +1523,7 @@ case 28: yyval.vval = yystack.l_mark[-1].vval; } break; -#line 1517 "btyacc_calc1.tab.c" +#line 1527 "btyacc_calc1.tab.c" default: break; } @@ -1601,12 +1611,11 @@ break; } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; - fprintf(stderr, "%s[%d]: state %d, reading %d (%s)\n", + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; + fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n", YYDEBUGSTR, yydepth, YYFINAL, yychar, yys); } #endif @@ -1633,7 +1642,7 @@ break; } #endif if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yyloc; @@ -1668,7 +1677,7 @@ yyvalid: yylexp = yylexemes + yypath->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base); - memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base); memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) diff --git a/test/btyacc/btyacc_demo.error b/test/btyacc/btyacc_demo.error index 4542fbf..c070d88 100644 --- a/test/btyacc/btyacc_demo.error +++ b/test/btyacc/btyacc_demo.error @@ -1 +1 @@ -YACC: 7 shift/reduce conflicts, 5 reduce/reduce conflicts. +YACC: 12 shift/reduce conflicts. diff --git a/test/btyacc/btyacc_demo.output b/test/btyacc/btyacc_demo.output index bc64d24..a281c24 100644 --- a/test/btyacc/btyacc_demo.output +++ b/test/btyacc/btyacc_demo.output @@ -16,86 +16,81 @@ 9 decl_list : decl_list $$2 decl - 10 $$3 : + 10 decl : decl_specs declarator_list ';' - 11 decl : decl_specs $$2 $$3 declarator_list ';' + 11 $$3 : - 12 $$4 : + 12 decl : decl_specs declarator $$3 block_statement - 13 decl : decl_specs $$2 $$3 declarator $$4 block_statement + 13 decl_specs : decl_spec + 14 | decl_specs $$2 decl_spec - 14 decl_specs : decl_spec - 15 | decl_specs $$2 decl_spec + 15 cv_quals : + 16 | cv_quals cv_qual - 16 cv_quals : - 17 | cv_quals cv_qual + 17 decl_spec : cv_qual + 18 | typename + 19 | EXTERN + 20 | REGISTER + 21 | STATIC - 18 decl_spec : cv_qual - 19 | typename - 20 | EXTERN - 21 | REGISTER - 22 | STATIC + 22 cv_qual : CONST + 23 | VOLATILE - 23 cv_qual : CONST - 24 | VOLATILE + 24 $$4 : 25 $$5 : - 26 $$6 : + 26 declarator_list : declarator_list ',' $$4 $$5 declarator + 27 | declarator - 27 declarator_list : declarator_list ',' $$5 $$6 declarator - 28 | declarator + 28 declarator : + 29 | ID - 29 declarator : - 30 | ID + 30 $$6 : 31 $$7 : - 32 $$8 : + 32 declarator : '(' $$6 $$7 declarator ')' + 33 | '*' cv_quals $$4 $$5 declarator + 34 | declarator '[' $$4 expr ']' + 35 | declarator '(' $$4 formal_arg_list ')' cv_quals - 33 declarator : '(' $$7 $$8 declarator ')' - 34 | '*' cv_quals $$5 $$6 declarator - 35 | declarator '[' $$5 expr ']' - 36 | declarator '(' $$5 formal_arg_list ')' cv_quals + 36 formal_arg_list : + 37 | nonempty_formal_arg_list - 37 formal_arg_list : - 38 | nonempty_formal_arg_list + 38 nonempty_formal_arg_list : nonempty_formal_arg_list ',' $$6 formal_arg + 39 | formal_arg - 39 nonempty_formal_arg_list : nonempty_formal_arg_list ',' $$7 formal_arg - 40 | formal_arg + 40 formal_arg : decl_specs declarator - 41 formal_arg : decl_specs $$2 $$3 declarator + 41 expr : expr '+' $$6 expr + 42 | expr '-' $$6 expr + 43 | expr '*' $$6 expr + 44 | expr '%' $$6 expr + 45 | expr '/' $$6 expr + 46 | '*' $$2 expr + 47 | ID + 48 | CONSTANT - 42 expr : expr '+' $$7 expr - 43 | expr '-' $$7 expr - 44 | expr '*' $$7 expr - 45 | expr '%' $$7 expr - 46 | expr '/' $$7 expr - 47 | '*' $$2 expr - 48 | ID - 49 | CONSTANT + 49 statement : decl + 50 | expr ';' - 50 statement : decl + 51 $$8 : - 51 $$9 : + 52 $$9 : - 52 statement : $$9 expr ';' + 53 statement : IF '(' $$6 expr ')' THEN $$8 statement ELSE $$9 statement + 54 | IF '(' $$6 expr ')' THEN $$8 statement - 53 $$10 : + 55 $$10 : - 54 $$11 : + 56 statement : $$10 block_statement - 55 statement : IF '(' $$7 expr ')' THEN $$10 statement ELSE $$11 statement - 56 | IF '(' $$7 expr ')' THEN $$10 statement + 57 statement_list : + 58 | statement_list $$2 statement - 57 $$12 : - - 58 statement : $$12 block_statement - - 59 statement_list : - 60 | statement_list $$2 statement - - 61 block_statement : '{' $$2 statement_list '}' + 59 block_statement : '{' $$2 statement_list '}' state 0 $accept : . input $end (0) @@ -160,33 +155,33 @@ state 4 state 5 - decl_spec : EXTERN . (20) + decl_spec : EXTERN . (19) - . reduce 20 + . reduce 19 state 6 - decl_spec : REGISTER . (21) + decl_spec : REGISTER . (20) - . reduce 21 + . reduce 20 state 7 - decl_spec : STATIC . (22) + decl_spec : STATIC . (21) - . reduce 22 + . reduce 21 state 8 - cv_qual : CONST . (23) + cv_qual : CONST . (22) - . reduce 23 + . reduce 22 state 9 - cv_qual : VOLATILE . (24) + cv_qual : VOLATILE . (23) - . reduce 24 + . reduce 23 state 10 @@ -201,50 +196,114 @@ state 11 . reduce 9 +12: shift/reduce conflict (shift 18, reduce 28) on '(' +12: shift/reduce conflict (shift 19, reduce 8) on ID state 12 - decl : decl_specs . $$2 $$3 declarator_list ';' (11) - decl : decl_specs . $$2 $$3 declarator $$4 block_statement (13) - decl_specs : decl_specs . $$2 decl_spec (15) + decl : decl_specs . declarator_list ';' (10) + decl : decl_specs . declarator $$3 block_statement (12) + decl_specs : decl_specs . $$2 decl_spec (14) $$2 : . (8) + declarator : . (28) + + '*' shift 17 + '(' [trial] shift 18 + ID [trial] shift 19 + '(' [trial] reduce 28 + '[' reduce 28 + ID [trial] reduce 8 + EXTERN reduce 8 + REGISTER reduce 8 + STATIC reduce 8 + CONST reduce 8 + VOLATILE reduce 8 + CLCL reduce 8 + ';' reduce 28 + ',' reduce 28 + '{' reduce 28 - . reduce 8 - - $$2 goto 17 + declarator_list goto 20 + declarator goto 21 + $$2 goto 22 state 13 - decl_specs : decl_spec . (14) + decl_specs : decl_spec . (13) - . reduce 14 + . reduce 13 state 14 - decl_spec : typename . (19) + decl_spec : typename . (18) - . reduce 19 + . reduce 18 state 15 - decl_spec : cv_qual . (18) + decl_spec : cv_qual . (17) - . reduce 18 + . reduce 17 state 16 opt_scope : opt_scope . ID CLCL (3) typename : opt_scope . ID (4) - ID shift 18 + ID shift 23 . error -17: reduce/reduce conflict (reduce 1, reduce 10) on ID state 17 - decl : decl_specs $$2 . $$3 declarator_list ';' (11) - decl : decl_specs $$2 . $$3 declarator $$4 block_statement (13) - decl_specs : decl_specs $$2 . decl_spec (15) + declarator : '*' . cv_quals $$4 $$5 declarator (33) + cv_quals : . (15) + + . reduce 15 + + cv_quals goto 24 + + +state 18 + declarator : '(' . $$6 $$7 declarator ')' (32) + $$6 : . (30) + + . reduce 30 + + $$6 goto 25 + + +state 19 + declarator : ID . (29) + + . reduce 29 + + +state 20 + decl : decl_specs declarator_list . ';' (10) + declarator_list : declarator_list . ',' $$4 $$5 declarator (26) + + ';' shift 26 + ',' shift 27 + . error + + +state 21 + decl : decl_specs declarator . $$3 block_statement (12) + declarator_list : declarator . (27) + declarator : declarator . '[' $$4 expr ']' (34) + declarator : declarator . '(' $$4 formal_arg_list ')' cv_quals (35) + $$3 : . (11) + + '(' shift 28 + '[' shift 29 + ';' reduce 27 + ',' reduce 27 + '{' reduce 11 + + $$3 goto 30 + + +state 22 + decl_specs : decl_specs $$2 . decl_spec (14) opt_scope : . (1) - $$3 : . (10) EXTERN shift 5 REGISTER shift 6 @@ -252,28 +311,20 @@ state 17 CONST shift 8 VOLATILE shift 9 CLCL shift 10 - '*' reduce 10 - '(' reduce 10 - '[' reduce 10 - ID [trial] reduce 1 - ID [trial] reduce 10 - ';' reduce 10 - ',' reduce 10 - '{' reduce 10 + ID reduce 1 - decl_spec goto 19 + decl_spec goto 31 typename goto 14 cv_qual goto 15 opt_scope goto 16 - $$3 goto 20 -18: shift/reduce conflict (shift 21, reduce 4) on CLCL -state 18 +23: shift/reduce conflict (shift 32, reduce 4) on CLCL +state 23 opt_scope : opt_scope ID . CLCL (3) typename : opt_scope ID . (4) - CLCL [trial] shift 21 + CLCL [trial] shift 32 '*' reduce 4 '(' reduce 4 '[' reduce 4 @@ -290,200 +341,132 @@ state 18 '{' reduce 4 -state 19 - decl_specs : decl_specs $$2 decl_spec . (15) - - . reduce 15 - - -20: shift/reduce conflict (shift 23, reduce 29) on '(' -state 20 - decl : decl_specs $$2 $$3 . declarator_list ';' (11) - decl : decl_specs $$2 $$3 . declarator $$4 block_statement (13) - declarator : . (29) - - '*' shift 22 - '(' [trial] shift 23 - ID shift 24 - '(' [trial] reduce 29 - '[' reduce 29 - ';' reduce 29 - ',' reduce 29 - '{' reduce 29 - - declarator_list goto 25 - declarator goto 26 - - -state 21 - opt_scope : opt_scope ID CLCL . (3) - - . reduce 3 - - -state 22 - declarator : '*' . cv_quals $$5 $$6 declarator (34) - cv_quals : . (16) +state 24 + cv_quals : cv_quals . cv_qual (16) + declarator : '*' cv_quals . $$4 $$5 declarator (33) + $$4 : . (24) - . reduce 16 + CONST shift 8 + VOLATILE shift 9 + '*' reduce 24 + '(' reduce 24 + '[' reduce 24 + ID reduce 24 + ';' reduce 24 + ',' reduce 24 + ')' reduce 24 + '{' reduce 24 - cv_quals goto 27 + cv_qual goto 33 + $$4 goto 34 -state 23 - declarator : '(' . $$7 $$8 declarator ')' (33) +state 25 + declarator : '(' $$6 . $$7 declarator ')' (32) $$7 : . (31) . reduce 31 - $$7 goto 28 - - -state 24 - declarator : ID . (30) - - . reduce 30 - - -state 25 - decl : decl_specs $$2 $$3 declarator_list . ';' (11) - declarator_list : declarator_list . ',' $$5 $$6 declarator (27) - - ';' shift 29 - ',' shift 30 - . error + $$7 goto 35 state 26 - decl : decl_specs $$2 $$3 declarator . $$4 block_statement (13) - declarator_list : declarator . (28) - declarator : declarator . '[' $$5 expr ']' (35) - declarator : declarator . '(' $$5 formal_arg_list ')' cv_quals (36) - $$4 : . (12) - - '(' shift 31 - '[' shift 32 - ';' reduce 28 - ',' reduce 28 - '{' reduce 12 + decl : decl_specs declarator_list ';' . (10) - $$4 goto 33 + . reduce 10 state 27 - cv_quals : cv_quals . cv_qual (17) - declarator : '*' cv_quals . $$5 $$6 declarator (34) - $$5 : . (25) + declarator_list : declarator_list ',' . $$4 $$5 declarator (26) + $$4 : . (24) - CONST shift 8 - VOLATILE shift 9 - '*' reduce 25 - '(' reduce 25 - '[' reduce 25 - ID reduce 25 - ';' reduce 25 - ',' reduce 25 - ')' reduce 25 - '{' reduce 25 + . reduce 24 - cv_qual goto 34 - $$5 goto 35 + $$4 goto 36 state 28 - declarator : '(' $$7 . $$8 declarator ')' (33) - $$8 : . (32) + declarator : declarator '(' . $$4 formal_arg_list ')' cv_quals (35) + $$4 : . (24) - . reduce 32 + . reduce 24 - $$8 goto 36 + $$4 goto 37 state 29 - decl : decl_specs $$2 $$3 declarator_list ';' . (11) + declarator : declarator '[' . $$4 expr ']' (34) + $$4 : . (24) + + . reduce 24 - . reduce 11 + $$4 goto 38 state 30 - declarator_list : declarator_list ',' . $$5 $$6 declarator (27) - $$5 : . (25) + decl : decl_specs declarator $$3 . block_statement (12) - . reduce 25 + '{' shift 39 + . error - $$5 goto 37 + block_statement goto 40 state 31 - declarator : declarator '(' . $$5 formal_arg_list ')' cv_quals (36) - $$5 : . (25) - - . reduce 25 + decl_specs : decl_specs $$2 decl_spec . (14) - $$5 goto 38 + . reduce 14 state 32 - declarator : declarator '[' . $$5 expr ']' (35) - $$5 : . (25) - - . reduce 25 + opt_scope : opt_scope ID CLCL . (3) - $$5 goto 39 + . reduce 3 state 33 - decl : decl_specs $$2 $$3 declarator $$4 . block_statement (13) + cv_quals : cv_quals cv_qual . (16) - '{' shift 40 - . error - - block_statement goto 41 + . reduce 16 state 34 - cv_quals : cv_quals cv_qual . (17) + declarator : '*' cv_quals $$4 . $$5 declarator (33) + $$5 : . (25) - . reduce 17 + . reduce 25 + $$5 goto 41 + +35: shift/reduce conflict (shift 18, reduce 28) on '(' state 35 - declarator : '*' cv_quals $$5 . $$6 declarator (34) - $$6 : . (26) + declarator : '(' $$6 $$7 . declarator ')' (32) + declarator : . (28) - . reduce 26 + '*' shift 17 + '(' [trial] shift 18 + ID shift 19 + '(' [trial] reduce 28 + '[' reduce 28 + ')' reduce 28 - $$6 goto 42 + declarator goto 42 -36: shift/reduce conflict (shift 23, reduce 29) on '(' state 36 - declarator : '(' $$7 $$8 . declarator ')' (33) - declarator : . (29) + declarator_list : declarator_list ',' $$4 . $$5 declarator (26) + $$5 : . (25) - '*' shift 22 - '(' [trial] shift 23 - ID shift 24 - '(' [trial] reduce 29 - '[' reduce 29 - ')' reduce 29 + . reduce 25 - declarator goto 43 + $$5 goto 43 state 37 - declarator_list : declarator_list ',' $$5 . $$6 declarator (27) - $$6 : . (26) - - . reduce 26 - - $$6 goto 44 - - -state 38 - declarator : declarator '(' $$5 . formal_arg_list ')' cv_quals (36) + declarator : declarator '(' $$4 . formal_arg_list ')' cv_quals (35) opt_scope : . (1) - formal_arg_list : . (37) + formal_arg_list : . (36) EXTERN shift 5 REGISTER shift 6 @@ -492,311 +475,311 @@ state 38 VOLATILE shift 9 CLCL shift 10 ID reduce 1 - ')' reduce 37 + ')' reduce 36 - formal_arg goto 45 - decl_specs goto 46 + formal_arg goto 44 + decl_specs goto 45 decl_spec goto 13 typename goto 14 cv_qual goto 15 opt_scope goto 16 - formal_arg_list goto 47 - nonempty_formal_arg_list goto 48 + formal_arg_list goto 46 + nonempty_formal_arg_list goto 47 -state 39 - declarator : declarator '[' $$5 . expr ']' (35) +state 38 + declarator : declarator '[' $$4 . expr ']' (34) - '*' shift 49 - ID shift 50 - CONSTANT shift 51 + '*' shift 48 + ID shift 49 + CONSTANT shift 50 . error - expr goto 52 + expr goto 51 -state 40 - block_statement : '{' . $$2 statement_list '}' (61) +state 39 + block_statement : '{' . $$2 statement_list '}' (59) $$2 : . (8) . reduce 8 - $$2 goto 53 + $$2 goto 52 +state 40 + decl : decl_specs declarator $$3 block_statement . (12) + + . reduce 12 + + +41: shift/reduce conflict (shift 18, reduce 28) on '(' state 41 - decl : decl_specs $$2 $$3 declarator $$4 block_statement . (13) + declarator : '*' cv_quals $$4 $$5 . declarator (33) + declarator : . (28) + + '*' shift 17 + '(' [trial] shift 18 + ID shift 19 + '(' [trial] reduce 28 + '[' reduce 28 + ';' reduce 28 + ',' reduce 28 + ')' reduce 28 + '{' reduce 28 - . reduce 13 + declarator goto 53 -42: shift/reduce conflict (shift 23, reduce 29) on '(' state 42 - declarator : '*' cv_quals $$5 $$6 . declarator (34) - declarator : . (29) + declarator : '(' $$6 $$7 declarator . ')' (32) + declarator : declarator . '[' $$4 expr ']' (34) + declarator : declarator . '(' $$4 formal_arg_list ')' cv_quals (35) - '*' shift 22 - '(' [trial] shift 23 - ID shift 24 - '(' [trial] reduce 29 - '[' reduce 29 - ';' reduce 29 - ',' reduce 29 - ')' reduce 29 - '{' reduce 29 - - declarator goto 54 + '(' shift 28 + '[' shift 29 + ')' shift 54 + . error +43: shift/reduce conflict (shift 18, reduce 28) on '(' state 43 - declarator : '(' $$7 $$8 declarator . ')' (33) - declarator : declarator . '[' $$5 expr ']' (35) - declarator : declarator . '(' $$5 formal_arg_list ')' cv_quals (36) + declarator_list : declarator_list ',' $$4 $$5 . declarator (26) + declarator : . (28) + + '*' shift 17 + '(' [trial] shift 18 + ID shift 19 + '(' [trial] reduce 28 + '[' reduce 28 + ';' reduce 28 + ',' reduce 28 - '(' shift 31 - '[' shift 32 - ')' shift 55 - . error + declarator goto 55 -44: shift/reduce conflict (shift 23, reduce 29) on '(' state 44 - declarator_list : declarator_list ',' $$5 $$6 . declarator (27) - declarator : . (29) + nonempty_formal_arg_list : formal_arg . (39) - '*' shift 22 - '(' [trial] shift 23 - ID shift 24 - '(' [trial] reduce 29 - '[' reduce 29 - ';' reduce 29 - ',' reduce 29 - - declarator goto 56 + . reduce 39 +45: shift/reduce conflict (shift 18, reduce 28) on '(' +45: shift/reduce conflict (shift 19, reduce 8) on ID state 45 - nonempty_formal_arg_list : formal_arg . (40) + decl_specs : decl_specs . $$2 decl_spec (14) + formal_arg : decl_specs . declarator (40) + $$2 : . (8) + declarator : . (28) + + '*' shift 17 + '(' [trial] shift 18 + ID [trial] shift 19 + '(' [trial] reduce 28 + '[' reduce 28 + ID [trial] reduce 8 + EXTERN reduce 8 + REGISTER reduce 8 + STATIC reduce 8 + CONST reduce 8 + VOLATILE reduce 8 + CLCL reduce 8 + ',' reduce 28 + ')' reduce 28 - . reduce 40 + declarator goto 56 + $$2 goto 22 state 46 - decl_specs : decl_specs . $$2 decl_spec (15) - formal_arg : decl_specs . $$2 $$3 declarator (41) - $$2 : . (8) - - . reduce 8 + declarator : declarator '(' $$4 formal_arg_list . ')' cv_quals (35) - $$2 goto 57 + ')' shift 57 + . error state 47 - declarator : declarator '(' $$5 formal_arg_list . ')' cv_quals (36) + formal_arg_list : nonempty_formal_arg_list . (37) + nonempty_formal_arg_list : nonempty_formal_arg_list . ',' $$6 formal_arg (38) - ')' shift 58 - . error + ',' shift 58 + ')' reduce 37 state 48 - formal_arg_list : nonempty_formal_arg_list . (38) - nonempty_formal_arg_list : nonempty_formal_arg_list . ',' $$7 formal_arg (39) + expr : '*' . $$2 expr (46) + $$2 : . (8) - ',' shift 59 - ')' reduce 38 + . reduce 8 + $$2 goto 59 -state 49 - expr : '*' . $$2 expr (47) - $$2 : . (8) - . reduce 8 +state 49 + expr : ID . (47) - $$2 goto 60 + . reduce 47 state 50 - expr : ID . (48) + expr : CONSTANT . (48) . reduce 48 state 51 - expr : CONSTANT . (49) - - . reduce 49 + declarator : declarator '[' $$4 expr . ']' (34) + expr : expr . '+' $$6 expr (41) + expr : expr . '-' $$6 expr (42) + expr : expr . '*' $$6 expr (43) + expr : expr . '%' $$6 expr (44) + expr : expr . '/' $$6 expr (45) + + '+' shift 60 + '-' shift 61 + '*' shift 62 + '/' shift 63 + '%' shift 64 + ']' shift 65 + . error state 52 - declarator : declarator '[' $$5 expr . ']' (35) - expr : expr . '+' $$7 expr (42) - expr : expr . '-' $$7 expr (43) - expr : expr . '*' $$7 expr (44) - expr : expr . '%' $$7 expr (45) - expr : expr . '/' $$7 expr (46) - - '+' shift 61 - '-' shift 62 - '*' shift 63 - '/' shift 64 - '%' shift 65 - ']' shift 66 - . error + block_statement : '{' $$2 . statement_list '}' (59) + statement_list : . (57) + . reduce 57 -state 53 - block_statement : '{' $$2 . statement_list '}' (61) - statement_list : . (59) + statement_list goto 66 - . reduce 59 - statement_list goto 67 +state 53 + declarator : '*' cv_quals $$4 $$5 declarator . (33) + declarator : declarator . '[' $$4 expr ']' (34) + declarator : declarator . '(' $$4 formal_arg_list ')' cv_quals (35) + + '(' shift 28 + '[' shift 29 + ';' reduce 33 + ',' reduce 33 + ')' reduce 33 + '{' reduce 33 state 54 - declarator : '*' cv_quals $$5 $$6 declarator . (34) - declarator : declarator . '[' $$5 expr ']' (35) - declarator : declarator . '(' $$5 formal_arg_list ')' cv_quals (36) + declarator : '(' $$6 $$7 declarator ')' . (32) - '(' shift 31 - '[' shift 32 - ';' reduce 34 - ',' reduce 34 - ')' reduce 34 - '{' reduce 34 + . reduce 32 state 55 - declarator : '(' $$7 $$8 declarator ')' . (33) + declarator_list : declarator_list ',' $$4 $$5 declarator . (26) + declarator : declarator . '[' $$4 expr ']' (34) + declarator : declarator . '(' $$4 formal_arg_list ')' cv_quals (35) - . reduce 33 + '(' shift 28 + '[' shift 29 + ';' reduce 26 + ',' reduce 26 state 56 - declarator_list : declarator_list ',' $$5 $$6 declarator . (27) - declarator : declarator . '[' $$5 expr ']' (35) - declarator : declarator . '(' $$5 formal_arg_list ')' cv_quals (36) + declarator : declarator . '[' $$4 expr ']' (34) + declarator : declarator . '(' $$4 formal_arg_list ')' cv_quals (35) + formal_arg : decl_specs declarator . (40) - '(' shift 31 - '[' shift 32 - ';' reduce 27 - ',' reduce 27 + '(' shift 28 + '[' shift 29 + ',' reduce 40 + ')' reduce 40 -57: reduce/reduce conflict (reduce 1, reduce 10) on ID state 57 - decl_specs : decl_specs $$2 . decl_spec (15) - formal_arg : decl_specs $$2 . $$3 declarator (41) - opt_scope : . (1) - $$3 : . (10) + declarator : declarator '(' $$4 formal_arg_list ')' . cv_quals (35) + cv_quals : . (15) - EXTERN shift 5 - REGISTER shift 6 - STATIC shift 7 - CONST shift 8 - VOLATILE shift 9 - CLCL shift 10 - '*' reduce 10 - '(' reduce 10 - '[' reduce 10 - ID [trial] reduce 1 - ID [trial] reduce 10 - ',' reduce 10 - ')' reduce 10 + . reduce 15 - decl_spec goto 19 - typename goto 14 - cv_qual goto 15 - opt_scope goto 16 - $$3 goto 68 + cv_quals goto 67 state 58 - declarator : declarator '(' $$5 formal_arg_list ')' . cv_quals (36) - cv_quals : . (16) + nonempty_formal_arg_list : nonempty_formal_arg_list ',' . $$6 formal_arg (38) + $$6 : . (30) - . reduce 16 + . reduce 30 - cv_quals goto 69 + $$6 goto 68 state 59 - nonempty_formal_arg_list : nonempty_formal_arg_list ',' . $$7 formal_arg (39) - $$7 : . (31) + expr : '*' $$2 . expr (46) - . reduce 31 + '*' shift 48 + ID shift 49 + CONSTANT shift 50 + . error - $$7 goto 70 + expr goto 69 state 60 - expr : '*' $$2 . expr (47) + expr : expr '+' . $$6 expr (41) + $$6 : . (30) - '*' shift 49 - ID shift 50 - CONSTANT shift 51 - . error + . reduce 30 - expr goto 71 + $$6 goto 70 state 61 - expr : expr '+' . $$7 expr (42) - $$7 : . (31) + expr : expr '-' . $$6 expr (42) + $$6 : . (30) - . reduce 31 + . reduce 30 - $$7 goto 72 + $$6 goto 71 state 62 - expr : expr '-' . $$7 expr (43) - $$7 : . (31) + expr : expr '*' . $$6 expr (43) + $$6 : . (30) - . reduce 31 + . reduce 30 - $$7 goto 73 + $$6 goto 72 state 63 - expr : expr '*' . $$7 expr (44) - $$7 : . (31) + expr : expr '/' . $$6 expr (45) + $$6 : . (30) - . reduce 31 + . reduce 30 - $$7 goto 74 + $$6 goto 73 state 64 - expr : expr '/' . $$7 expr (46) - $$7 : . (31) + expr : expr '%' . $$6 expr (44) + $$6 : . (30) - . reduce 31 + . reduce 30 - $$7 goto 75 + $$6 goto 74 state 65 - expr : expr '%' . $$7 expr (45) - $$7 : . (31) + declarator : declarator '[' $$4 expr ']' . (34) - . reduce 31 - - $$7 goto 76 + . reduce 34 state 66 - declarator : declarator '[' $$5 expr ']' . (35) - - . reduce 35 - - -state 67 - statement_list : statement_list . $$2 statement (60) - block_statement : '{' $$2 statement_list . '}' (61) + statement_list : statement_list . $$2 statement (58) + block_statement : '{' $$2 statement_list . '}' (59) $$2 : . (8) - '}' shift 77 + '}' shift 75 '*' reduce 8 ID reduce 8 CONSTANT reduce 8 @@ -809,43 +792,27 @@ state 67 CLCL reduce 8 '{' reduce 8 - $$2 goto 78 - - -68: shift/reduce conflict (shift 23, reduce 29) on '(' -state 68 - formal_arg : decl_specs $$2 $$3 . declarator (41) - declarator : . (29) - - '*' shift 22 - '(' [trial] shift 23 - ID shift 24 - '(' [trial] reduce 29 - '[' reduce 29 - ',' reduce 29 - ')' reduce 29 + $$2 goto 76 - declarator goto 79 - -state 69 - cv_quals : cv_quals . cv_qual (17) - declarator : declarator '(' $$5 formal_arg_list ')' cv_quals . (36) +state 67 + cv_quals : cv_quals . cv_qual (16) + declarator : declarator '(' $$4 formal_arg_list ')' cv_quals . (35) CONST shift 8 VOLATILE shift 9 - '(' reduce 36 - '[' reduce 36 - ';' reduce 36 - ',' reduce 36 - ')' reduce 36 - '{' reduce 36 + '(' reduce 35 + '[' reduce 35 + ';' reduce 35 + ',' reduce 35 + ')' reduce 35 + '{' reduce 35 - cv_qual goto 34 + cv_qual goto 33 -state 70 - nonempty_formal_arg_list : nonempty_formal_arg_list ',' $$7 . formal_arg (39) +state 68 + nonempty_formal_arg_list : nonempty_formal_arg_list ',' $$6 . formal_arg (38) opt_scope : . (1) EXTERN shift 5 @@ -856,145 +823,151 @@ state 70 CLCL shift 10 ID reduce 1 - formal_arg goto 80 - decl_specs goto 46 + formal_arg goto 77 + decl_specs goto 45 decl_spec goto 13 typename goto 14 cv_qual goto 15 opt_scope goto 16 -state 71 - expr : expr . '+' $$7 expr (42) - expr : expr . '-' $$7 expr (43) - expr : expr . '*' $$7 expr (44) - expr : expr . '%' $$7 expr (45) - expr : expr . '/' $$7 expr (46) - expr : '*' $$2 expr . (47) +state 69 + expr : expr . '+' $$6 expr (41) + expr : expr . '-' $$6 expr (42) + expr : expr . '*' $$6 expr (43) + expr : expr . '%' $$6 expr (44) + expr : expr . '/' $$6 expr (45) + expr : '*' $$2 expr . (46) - . reduce 47 + . reduce 46 -state 72 - expr : expr '+' $$7 . expr (42) +state 70 + expr : expr '+' $$6 . expr (41) - '*' shift 49 - ID shift 50 - CONSTANT shift 51 + '*' shift 48 + ID shift 49 + CONSTANT shift 50 . error - expr goto 81 + expr goto 78 -state 73 - expr : expr '-' $$7 . expr (43) +state 71 + expr : expr '-' $$6 . expr (42) - '*' shift 49 - ID shift 50 - CONSTANT shift 51 + '*' shift 48 + ID shift 49 + CONSTANT shift 50 . error - expr goto 82 + expr goto 79 -state 74 - expr : expr '*' $$7 . expr (44) +state 72 + expr : expr '*' $$6 . expr (43) - '*' shift 49 - ID shift 50 - CONSTANT shift 51 + '*' shift 48 + ID shift 49 + CONSTANT shift 50 . error - expr goto 83 + expr goto 80 -state 75 - expr : expr '/' $$7 . expr (46) +state 73 + expr : expr '/' $$6 . expr (45) - '*' shift 49 - ID shift 50 - CONSTANT shift 51 + '*' shift 48 + ID shift 49 + CONSTANT shift 50 . error - expr goto 84 + expr goto 81 -state 76 - expr : expr '%' $$7 . expr (45) +state 74 + expr : expr '%' $$6 . expr (44) - '*' shift 49 - ID shift 50 - CONSTANT shift 51 + '*' shift 48 + ID shift 49 + CONSTANT shift 50 . error - expr goto 85 + expr goto 82 -state 77 - block_statement : '{' $$2 statement_list '}' . (61) +state 75 + block_statement : '{' $$2 statement_list '}' . (59) - . reduce 61 + . reduce 59 -78: reduce/reduce conflict (reduce 1, reduce 51) on ID -state 78 - statement_list : statement_list $$2 . statement (60) +76: shift/reduce conflict (shift 49, reduce 1) on ID +state 76 + statement_list : statement_list $$2 . statement (58) opt_scope : . (1) - $$9 : . (51) - $$12 : . (57) + $$10 : . (55) + '*' shift 48 + ID [trial] shift 49 + CONSTANT shift 50 EXTERN shift 5 REGISTER shift 6 STATIC shift 7 CONST shift 8 VOLATILE shift 9 - IF shift 86 + IF shift 83 CLCL shift 10 - '*' reduce 51 ID [trial] reduce 1 - ID [trial] reduce 51 - CONSTANT reduce 51 - '{' reduce 57 + '{' reduce 55 - decl goto 87 - statement goto 88 + expr goto 84 + decl goto 85 + statement goto 86 decl_specs goto 12 decl_spec goto 13 typename goto 14 cv_qual goto 15 opt_scope goto 16 - $$9 goto 89 - $$12 goto 90 + $$10 goto 87 -state 79 - declarator : declarator . '[' $$5 expr ']' (35) - declarator : declarator . '(' $$5 formal_arg_list ')' cv_quals (36) - formal_arg : decl_specs $$2 $$3 declarator . (41) - - '(' shift 31 - '[' shift 32 - ',' reduce 41 - ')' reduce 41 +state 77 + nonempty_formal_arg_list : nonempty_formal_arg_list ',' $$6 formal_arg . (38) + . reduce 38 -state 80 - nonempty_formal_arg_list : nonempty_formal_arg_list ',' $$7 formal_arg . (39) - . reduce 39 +state 78 + expr : expr . '+' $$6 expr (41) + expr : expr '+' $$6 expr . (41) + expr : expr . '-' $$6 expr (42) + expr : expr . '*' $$6 expr (43) + expr : expr . '%' $$6 expr (44) + expr : expr . '/' $$6 expr (45) + + '*' shift 62 + '/' shift 63 + '%' shift 64 + '+' reduce 41 + '-' reduce 41 + ';' reduce 41 + ')' reduce 41 + ']' reduce 41 -state 81 - expr : expr . '+' $$7 expr (42) - expr : expr '+' $$7 expr . (42) - expr : expr . '-' $$7 expr (43) - expr : expr . '*' $$7 expr (44) - expr : expr . '%' $$7 expr (45) - expr : expr . '/' $$7 expr (46) - - '*' shift 63 - '/' shift 64 - '%' shift 65 +state 79 + expr : expr . '+' $$6 expr (41) + expr : expr . '-' $$6 expr (42) + expr : expr '-' $$6 expr . (42) + expr : expr . '*' $$6 expr (43) + expr : expr . '%' $$6 expr (44) + expr : expr . '/' $$6 expr (45) + + '*' shift 62 + '/' shift 63 + '%' shift 64 '+' reduce 42 '-' reduce 42 ';' reduce 42 @@ -1002,299 +975,266 @@ state 81 ']' reduce 42 +state 80 + expr : expr . '+' $$6 expr (41) + expr : expr . '-' $$6 expr (42) + expr : expr . '*' $$6 expr (43) + expr : expr '*' $$6 expr . (43) + expr : expr . '%' $$6 expr (44) + expr : expr . '/' $$6 expr (45) + + . reduce 43 + + +state 81 + expr : expr . '+' $$6 expr (41) + expr : expr . '-' $$6 expr (42) + expr : expr . '*' $$6 expr (43) + expr : expr . '%' $$6 expr (44) + expr : expr . '/' $$6 expr (45) + expr : expr '/' $$6 expr . (45) + + . reduce 45 + + state 82 - expr : expr . '+' $$7 expr (42) - expr : expr . '-' $$7 expr (43) - expr : expr '-' $$7 expr . (43) - expr : expr . '*' $$7 expr (44) - expr : expr . '%' $$7 expr (45) - expr : expr . '/' $$7 expr (46) - - '*' shift 63 - '/' shift 64 - '%' shift 65 - '+' reduce 43 - '-' reduce 43 - ';' reduce 43 - ')' reduce 43 - ']' reduce 43 + expr : expr . '+' $$6 expr (41) + expr : expr . '-' $$6 expr (42) + expr : expr . '*' $$6 expr (43) + expr : expr . '%' $$6 expr (44) + expr : expr '%' $$6 expr . (44) + expr : expr . '/' $$6 expr (45) + + . reduce 44 state 83 - expr : expr . '+' $$7 expr (42) - expr : expr . '-' $$7 expr (43) - expr : expr . '*' $$7 expr (44) - expr : expr '*' $$7 expr . (44) - expr : expr . '%' $$7 expr (45) - expr : expr . '/' $$7 expr (46) + statement : IF . '(' $$6 expr ')' THEN $$8 statement ELSE $$9 statement (53) + statement : IF . '(' $$6 expr ')' THEN $$8 statement (54) - . reduce 44 + '(' shift 88 + . error state 84 - expr : expr . '+' $$7 expr (42) - expr : expr . '-' $$7 expr (43) - expr : expr . '*' $$7 expr (44) - expr : expr . '%' $$7 expr (45) - expr : expr . '/' $$7 expr (46) - expr : expr '/' $$7 expr . (46) - - . reduce 46 + expr : expr . '+' $$6 expr (41) + expr : expr . '-' $$6 expr (42) + expr : expr . '*' $$6 expr (43) + expr : expr . '%' $$6 expr (44) + expr : expr . '/' $$6 expr (45) + statement : expr . ';' (50) + + '+' shift 60 + '-' shift 61 + '*' shift 62 + '/' shift 63 + '%' shift 64 + ';' shift 89 + . error state 85 - expr : expr . '+' $$7 expr (42) - expr : expr . '-' $$7 expr (43) - expr : expr . '*' $$7 expr (44) - expr : expr . '%' $$7 expr (45) - expr : expr '%' $$7 expr . (45) - expr : expr . '/' $$7 expr (46) + statement : decl . (49) - . reduce 45 + . reduce 49 state 86 - statement : IF . '(' $$7 expr ')' THEN $$10 statement ELSE $$11 statement (55) - statement : IF . '(' $$7 expr ')' THEN $$10 statement (56) + statement_list : statement_list $$2 statement . (58) - '(' shift 91 - . error + . reduce 58 state 87 - statement : decl . (50) + statement : $$10 . block_statement (56) - . reduce 50 + '{' shift 39 + . error + + block_statement goto 90 state 88 - statement_list : statement_list $$2 statement . (60) + statement : IF '(' . $$6 expr ')' THEN $$8 statement ELSE $$9 statement (53) + statement : IF '(' . $$6 expr ')' THEN $$8 statement (54) + $$6 : . (30) - . reduce 60 + . reduce 30 + $$6 goto 91 -state 89 - statement : $$9 . expr ';' (52) - '*' shift 49 - ID shift 50 - CONSTANT shift 51 - . error +state 89 + statement : expr ';' . (50) - expr goto 92 + . reduce 50 state 90 - statement : $$12 . block_statement (58) + statement : $$10 block_statement . (56) - '{' shift 40 - . error - - block_statement goto 93 + . reduce 56 state 91 - statement : IF '(' . $$7 expr ')' THEN $$10 statement ELSE $$11 statement (55) - statement : IF '(' . $$7 expr ')' THEN $$10 statement (56) - $$7 : . (31) + statement : IF '(' $$6 . expr ')' THEN $$8 statement ELSE $$9 statement (53) + statement : IF '(' $$6 . expr ')' THEN $$8 statement (54) - . reduce 31 + '*' shift 48 + ID shift 49 + CONSTANT shift 50 + . error - $$7 goto 94 + expr goto 92 state 92 - expr : expr . '+' $$7 expr (42) - expr : expr . '-' $$7 expr (43) - expr : expr . '*' $$7 expr (44) - expr : expr . '%' $$7 expr (45) - expr : expr . '/' $$7 expr (46) - statement : $$9 expr . ';' (52) - - '+' shift 61 - '-' shift 62 - '*' shift 63 - '/' shift 64 - '%' shift 65 - ';' shift 95 + expr : expr . '+' $$6 expr (41) + expr : expr . '-' $$6 expr (42) + expr : expr . '*' $$6 expr (43) + expr : expr . '%' $$6 expr (44) + expr : expr . '/' $$6 expr (45) + statement : IF '(' $$6 expr . ')' THEN $$8 statement ELSE $$9 statement (53) + statement : IF '(' $$6 expr . ')' THEN $$8 statement (54) + + '+' shift 60 + '-' shift 61 + '*' shift 62 + '/' shift 63 + '%' shift 64 + ')' shift 93 . error state 93 - statement : $$12 block_statement . (58) + statement : IF '(' $$6 expr ')' . THEN $$8 statement ELSE $$9 statement (53) + statement : IF '(' $$6 expr ')' . THEN $$8 statement (54) - . reduce 58 + THEN shift 94 + . error state 94 - statement : IF '(' $$7 . expr ')' THEN $$10 statement ELSE $$11 statement (55) - statement : IF '(' $$7 . expr ')' THEN $$10 statement (56) + statement : IF '(' $$6 expr ')' THEN . $$8 statement ELSE $$9 statement (53) + statement : IF '(' $$6 expr ')' THEN . $$8 statement (54) + $$8 : . (51) - '*' shift 49 - ID shift 50 - CONSTANT shift 51 - . error + . reduce 51 - expr goto 96 + $$8 goto 95 +95: shift/reduce conflict (shift 49, reduce 1) on ID state 95 - statement : $$9 expr ';' . (52) - - . reduce 52 - - -state 96 - expr : expr . '+' $$7 expr (42) - expr : expr . '-' $$7 expr (43) - expr : expr . '*' $$7 expr (44) - expr : expr . '%' $$7 expr (45) - expr : expr . '/' $$7 expr (46) - statement : IF '(' $$7 expr . ')' THEN $$10 statement ELSE $$11 statement (55) - statement : IF '(' $$7 expr . ')' THEN $$10 statement (56) - - '+' shift 61 - '-' shift 62 - '*' shift 63 - '/' shift 64 - '%' shift 65 - ')' shift 97 - . error - - -state 97 - statement : IF '(' $$7 expr ')' . THEN $$10 statement ELSE $$11 statement (55) - statement : IF '(' $$7 expr ')' . THEN $$10 statement (56) - - THEN shift 98 - . error - - -state 98 - statement : IF '(' $$7 expr ')' THEN . $$10 statement ELSE $$11 statement (55) - statement : IF '(' $$7 expr ')' THEN . $$10 statement (56) - $$10 : . (53) - - . reduce 53 - - $$10 goto 99 - - -99: reduce/reduce conflict (reduce 1, reduce 51) on ID -state 99 - statement : IF '(' $$7 expr ')' THEN $$10 . statement ELSE $$11 statement (55) - statement : IF '(' $$7 expr ')' THEN $$10 . statement (56) + statement : IF '(' $$6 expr ')' THEN $$8 . statement ELSE $$9 statement (53) + statement : IF '(' $$6 expr ')' THEN $$8 . statement (54) opt_scope : . (1) - $$9 : . (51) - $$12 : . (57) + $$10 : . (55) + '*' shift 48 + ID [trial] shift 49 + CONSTANT shift 50 EXTERN shift 5 REGISTER shift 6 STATIC shift 7 CONST shift 8 VOLATILE shift 9 - IF shift 86 + IF shift 83 CLCL shift 10 - '*' reduce 51 ID [trial] reduce 1 - ID [trial] reduce 51 - CONSTANT reduce 51 - '{' reduce 57 + '{' reduce 55 - decl goto 87 - statement goto 100 + expr goto 84 + decl goto 85 + statement goto 96 decl_specs goto 12 decl_spec goto 13 typename goto 14 cv_qual goto 15 opt_scope goto 16 - $$9 goto 89 - $$12 goto 90 - + $$10 goto 87 -100: shift/reduce conflict (shift 101, reduce 56) on ELSE -state 100 - statement : IF '(' $$7 expr ')' THEN $$10 statement . ELSE $$11 statement (55) - statement : IF '(' $$7 expr ')' THEN $$10 statement . (56) - ELSE [trial] shift 101 - '*' reduce 56 - ID reduce 56 - CONSTANT reduce 56 - EXTERN reduce 56 - REGISTER reduce 56 - STATIC reduce 56 - CONST reduce 56 - VOLATILE reduce 56 - IF reduce 56 - ELSE [trial] reduce 56 - CLCL reduce 56 - '{' reduce 56 - '}' reduce 56 +96: shift/reduce conflict (shift 97, reduce 54) on ELSE +state 96 + statement : IF '(' $$6 expr ')' THEN $$8 statement . ELSE $$9 statement (53) + statement : IF '(' $$6 expr ')' THEN $$8 statement . (54) + + ELSE [trial] shift 97 + '*' reduce 54 + ID reduce 54 + CONSTANT reduce 54 + EXTERN reduce 54 + REGISTER reduce 54 + STATIC reduce 54 + CONST reduce 54 + VOLATILE reduce 54 + IF reduce 54 + ELSE [trial] reduce 54 + CLCL reduce 54 + '{' reduce 54 + '}' reduce 54 -state 101 - statement : IF '(' $$7 expr ')' THEN $$10 statement ELSE . $$11 statement (55) - $$11 : . (54) +state 97 + statement : IF '(' $$6 expr ')' THEN $$8 statement ELSE . $$9 statement (53) + $$9 : . (52) - . reduce 54 + . reduce 52 - $$11 goto 102 + $$9 goto 98 -102: reduce/reduce conflict (reduce 1, reduce 51) on ID -state 102 - statement : IF '(' $$7 expr ')' THEN $$10 statement ELSE $$11 . statement (55) +98: shift/reduce conflict (shift 49, reduce 1) on ID +state 98 + statement : IF '(' $$6 expr ')' THEN $$8 statement ELSE $$9 . statement (53) opt_scope : . (1) - $$9 : . (51) - $$12 : . (57) + $$10 : . (55) + '*' shift 48 + ID [trial] shift 49 + CONSTANT shift 50 EXTERN shift 5 REGISTER shift 6 STATIC shift 7 CONST shift 8 VOLATILE shift 9 - IF shift 86 + IF shift 83 CLCL shift 10 - '*' reduce 51 ID [trial] reduce 1 - ID [trial] reduce 51 - CONSTANT reduce 51 - '{' reduce 57 + '{' reduce 55 - decl goto 87 - statement goto 103 + expr goto 84 + decl goto 85 + statement goto 99 decl_specs goto 12 decl_spec goto 13 typename goto 14 cv_qual goto 15 opt_scope goto 16 - $$9 goto 89 - $$12 goto 90 + $$10 goto 87 -state 103 - statement : IF '(' $$7 expr ')' THEN $$10 statement ELSE $$11 statement . (55) +state 99 + statement : IF '(' $$6 expr ')' THEN $$8 statement ELSE $$9 statement . (53) - . reduce 55 + . reduce 53 -State 17 contains 1 reduce/reduce conflict. -State 18 contains 1 shift/reduce conflict. -State 20 contains 1 shift/reduce conflict. -State 36 contains 1 shift/reduce conflict. -State 42 contains 1 shift/reduce conflict. -State 44 contains 1 shift/reduce conflict. -State 57 contains 1 reduce/reduce conflict. -State 68 contains 1 shift/reduce conflict. -State 78 contains 1 reduce/reduce conflict. -State 99 contains 1 reduce/reduce conflict. -State 100 contains 1 shift/reduce conflict. -State 102 contains 1 reduce/reduce conflict. +State 12 contains 2 shift/reduce conflicts. +State 23 contains 1 shift/reduce conflict. +State 35 contains 1 shift/reduce conflict. +State 41 contains 1 shift/reduce conflict. +State 43 contains 1 shift/reduce conflict. +State 45 contains 2 shift/reduce conflicts. +State 76 contains 1 shift/reduce conflict. +State 95 contains 1 shift/reduce conflict. +State 96 contains 1 shift/reduce conflict. +State 98 contains 1 shift/reduce conflict. -29 terminals, 31 nonterminals -62 grammar rules, 104 states +29 terminals, 29 nonterminals +60 grammar rules, 100 states grammar parser grammar symbol# value# symbol @@ -1356,5 +1296,3 @@ symbol# value# symbol 55 296 $$8 56 297 $$9 57 298 $$10 - 58 299 $$11 - 59 300 $$12 diff --git a/test/btyacc/btyacc_demo.tab.c b/test/btyacc/btyacc_demo.tab.c index cd7995b..0954a40 100644 --- a/test/btyacc/btyacc_demo.tab.c +++ b/test/btyacc/btyacc_demo.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 @@ -145,13 +145,13 @@ typedef struct Decl { #include "btyacc_demo.tab.h" #include <stdlib.h> #include <stdio.h> -#line 36 "btyacc_demo.y" #ifdef YYSTYPE #undef YYSTYPE_IS_DECLARED #define YYSTYPE_IS_DECLARED 1 #endif #ifndef YYSTYPE_IS_DECLARED #define YYSTYPE_IS_DECLARED 1 +#line 36 "btyacc_demo.y" typedef union { Scope *scope; Expr *expr; @@ -231,163 +231,161 @@ extern int YYPARSE_DECL(); #define YYERRCODE 256 typedef short YYINT; static const YYINT demo_lhs[] = { -1, - 15, 15, 15, 12, 18, 0, 4, 19, 4, 20, - 2, 21, 2, 10, 10, 13, 13, 11, 11, 11, - 11, 11, 14, 14, 22, 23, 3, 3, 8, 8, - 24, 25, 8, 8, 8, 8, 16, 16, 17, 17, - 9, 1, 1, 1, 1, 1, 1, 1, 1, 5, - 26, 5, 27, 28, 5, 5, 29, 5, 6, 6, - 7, + 15, 15, 15, 12, 18, 0, 4, 19, 4, 2, + 20, 2, 10, 10, 13, 13, 11, 11, 11, 11, + 11, 14, 14, 21, 22, 3, 3, 8, 8, 23, + 24, 8, 8, 8, 8, 16, 16, 17, 17, 9, + 1, 1, 1, 1, 1, 1, 1, 1, 5, 5, + 25, 26, 5, 5, 27, 5, 6, 6, 7, }; static const YYINT demo_len[] = { 2, - 0, 1, 3, 2, 0, 2, 0, 0, 3, 0, - 5, 0, 6, 1, 3, 0, 2, 1, 1, 1, - 1, 1, 1, 1, 0, 0, 5, 1, 0, 1, - 0, 0, 5, 5, 5, 6, 0, 1, 4, 1, - 4, 4, 4, 4, 4, 4, 3, 1, 1, 1, - 0, 3, 0, 0, 11, 8, 0, 2, 0, 3, - 4, + 0, 1, 3, 2, 0, 2, 0, 0, 3, 3, + 0, 4, 1, 3, 0, 2, 1, 1, 1, 1, + 1, 1, 1, 0, 0, 5, 1, 0, 1, 0, + 0, 5, 5, 5, 6, 0, 1, 4, 1, 2, + 4, 4, 4, 4, 4, 3, 1, 1, 1, 2, + 0, 0, 11, 8, 0, 2, 0, 3, 4, }; static const YYINT demo_defred[] = { 5, - 0, 7, 0, 0, 20, 21, 22, 23, 24, 2, - 9, 8, 14, 19, 18, 0, 0, 0, 15, 0, - 3, 16, 31, 30, 0, 0, 0, 32, 11, 25, - 25, 25, 0, 17, 26, 0, 26, 0, 0, 8, - 13, 0, 0, 0, 40, 8, 0, 0, 8, 48, - 49, 0, 59, 0, 33, 0, 0, 16, 31, 0, - 31, 31, 31, 31, 31, 35, 0, 0, 0, 0, - 47, 0, 0, 0, 0, 0, 61, 0, 0, 39, - 0, 0, 44, 46, 45, 0, 50, 60, 0, 0, - 31, 0, 58, 0, 52, 0, 0, 53, 0, 0, - 54, 0, 55, + 0, 7, 0, 0, 19, 20, 21, 22, 23, 2, + 9, 0, 13, 18, 17, 0, 15, 30, 29, 0, + 0, 0, 0, 0, 31, 10, 24, 24, 24, 0, + 14, 3, 16, 25, 0, 25, 0, 0, 8, 12, + 0, 0, 0, 39, 0, 0, 0, 8, 47, 48, + 0, 57, 0, 32, 0, 0, 15, 30, 0, 30, + 30, 30, 30, 30, 34, 0, 0, 0, 46, 0, + 0, 0, 0, 0, 59, 0, 38, 0, 0, 43, + 45, 44, 0, 0, 49, 58, 0, 30, 50, 56, + 0, 0, 0, 51, 0, 0, 52, 0, 53, }; static const YYINT demo_stos[] = { 0, 271, 289, 275, 290, 261, 262, 263, 264, 265, 269, - 273, 281, 282, 283, 285, 286, 290, 259, 282, 291, - 269, 42, 40, 259, 274, 279, 284, 295, 59, 44, - 40, 91, 292, 285, 293, 296, 293, 293, 293, 123, - 278, 294, 279, 294, 280, 281, 287, 288, 42, 259, - 260, 272, 290, 279, 41, 279, 290, 41, 44, 290, - 43, 45, 42, 47, 37, 93, 277, 291, 284, 295, - 272, 295, 295, 295, 295, 295, 125, 290, 279, 280, - 272, 272, 272, 272, 272, 266, 273, 276, 297, 300, - 40, 272, 278, 295, 59, 272, 41, 267, 298, 276, - 268, 299, 276, + 273, 281, 282, 283, 285, 286, 42, 40, 259, 274, + 279, 290, 259, 284, 294, 59, 44, 40, 91, 291, + 282, 269, 285, 292, 295, 292, 292, 292, 123, 278, + 293, 279, 293, 280, 281, 287, 288, 42, 259, 260, + 272, 290, 279, 41, 279, 279, 41, 44, 290, 43, + 45, 42, 47, 37, 93, 277, 284, 294, 272, 294, + 294, 294, 294, 294, 125, 290, 280, 272, 272, 272, + 272, 272, 266, 272, 273, 276, 298, 40, 59, 278, + 294, 272, 41, 267, 296, 276, 268, 297, 276, }; static const YYINT demo_dgoto[] = { 1, - 52, 87, 25, 3, 88, 67, 41, 26, 45, 12, - 13, 14, 27, 15, 16, 47, 48, 2, 4, 20, - 33, 35, 42, 28, 36, 89, 99, 102, 90, + 84, 85, 20, 3, 86, 66, 40, 21, 44, 12, + 13, 14, 24, 15, 16, 46, 47, 2, 22, 30, + 34, 41, 25, 35, 95, 98, 87, }; static const YYINT demo_sindex[] = { 0, - 0, 0, 0, -124, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -256, -124, 0, 0, -33, - 0, 0, 0, 0, 34, -4, -205, 0, 0, 0, - 0, 0, -110, 0, 0, -33, 0, -124, -15, 0, - 0, -33, -36, -33, 0, 0, 4, 7, 0, 0, - 0, 5, 0, -4, 0, -4, -124, 0, 0, -15, - 0, 0, 0, 0, 0, 0, -46, -33, -205, -124, - 0, -15, -15, -15, -15, -15, 0, -91, -4, 0, - 122, 122, 0, 0, 0, 40, 0, 0, -15, -110, - 0, 106, 0, -15, 0, 113, -183, 0, -91, 0, - 0, -91, 0, + 0, 0, 0, -103, 0, 0, 0, 0, 0, 0, + 0, -31, 0, 0, 0, -238, 0, 0, 0, 4, + -36, -103, 0, -133, 0, 0, 0, 0, 0, -94, + 0, 0, 0, 0, -40, 0, -103, -33, 0, 0, + -40, -25, -40, 0, -31, 8, 15, 0, 0, 0, + -2, 0, -36, 0, -36, -36, 0, 0, -33, 0, + 0, 0, 0, 0, 0, -92, -133, -103, 0, -33, + -33, -33, -33, -33, 0, -8, 0, 23, 23, 0, + 0, 0, 11, 75, 0, 0, -94, 0, 0, 0, + -33, 96, -194, 0, -8, 0, 0, -8, 0, }; static const YYINT demo_rindex[] = { 0, - 0, 0, 1, -157, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -28, -22, 0, -29, - 0, 0, 0, 0, 0, -27, -34, 0, 0, 0, - 0, 0, 0, 0, 0, 8, 0, -12, 0, 0, - 0, -20, 0, 32, 0, 0, 0, 69, 0, 0, - 0, 0, 0, -18, 0, 56, 33, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -31, -1, -6, -157, - 0, 0, 0, 0, 0, 0, 0, -14, 63, 0, - 13, 23, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -14, -42, - 0, -14, 0, + 0, 0, 1, -181, 0, 0, 0, 0, 0, 0, + 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, + -39, -181, 12, -34, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -5, 0, -11, 0, 0, 0, + -17, 0, 28, 0, -41, 0, 47, 0, 0, 0, + 0, 0, -13, 0, 18, 70, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -19, -27, -181, 0, 0, + 0, 0, 0, 0, 0, -29, 0, 56, 64, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -29, -30, 0, -29, 0, }; #if YYBTYACC static const YYINT demo_cindex[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -145, -150, 0, 81, + 0, -22, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -179, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, + 58, 0, 62, 0, -21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, - 0, 91, 0, 112, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -113, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 117, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -96, -92, - 0, -82, 0, + 0, 0, 0, 0, 0, -146, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -143, -147, 0, -134, 0, }; #endif static const YYINT demo_gindex[] = { 0, - 53, 175, 0, 0, 9, 0, 90, 76, 111, 27, - 29, 0, 124, -25, 0, 0, 0, 0, 21, 126, - 0, 136, 147, 71, 0, 0, 0, 0, 0, + 9, 143, 0, 0, 50, 0, 63, 101, 83, 7, + 130, 0, 98, 2, 0, 0, 0, 0, 19, 0, + 10, 117, 66, 0, 0, 0, 0, }; -#define YYTABLESIZE 270 -static const YYINT demo_table[] = { 56, - 6, 34, 18, 31, 55, 25, 25, 25, 22, 25, - 8, 10, 40, 10, 29, 10, 28, 4, 4, 4, - 29, 4, 34, 29, 25, 34, 49, 51, 37, 29, - 10, 28, 17, 36, 36, 31, 4, 36, 29, 29, - 34, 65, 29, 34, 58, 19, 63, 61, 29, 62, - 59, 64, 36, 42, 32, 42, 25, 42, 8, 9, - 53, 29, 10, 43, 46, 43, 57, 43, 4, 60, - 29, 42, 10, 10, 10, 29, 10, 30, 77, 91, - 56, 43, 56, 98, 36, 19, 32, 78, 25, 29, - 29, 8, 29, 29, 10, 12, 46, 66, 29, 27, - 4, 1, 29, 41, 34, 42, 41, 100, 57, 38, - 103, 43, 71, 0, 27, 43, 36, 54, 4, 56, - 7, 7, 29, 10, 81, 82, 83, 84, 85, 70, - 7, 72, 73, 74, 75, 76, 5, 6, 7, 8, - 9, 92, 65, 79, 10, 0, 96, 63, 61, 65, - 62, 7, 64, 97, 63, 61, 7, 62, 65, 64, - 9, 94, 9, 63, 95, 37, 38, 39, 64, 5, - 6, 7, 8, 9, 86, 13, 9, 10, 11, 93, - 80, 69, 68, 44, 0, 0, 0, 0, 0, 0, +#define YYTABLESIZE 286 +static const YYINT demo_table[] = { 28, + 6, 17, 28, 28, 27, 24, 24, 24, 48, 24, + 17, 54, 35, 35, 28, 54, 35, 0, 0, 27, + 23, 4, 8, 28, 24, 33, 28, 33, 39, 36, + 33, 35, 75, 48, 64, 28, 36, 37, 38, 62, + 60, 28, 61, 45, 63, 33, 51, 27, 57, 28, + 88, 4, 4, 4, 29, 4, 24, 52, 58, 64, + 28, 26, 26, 35, 62, 29, 59, 69, 33, 63, + 4, 28, 94, 28, 45, 28, 26, 1, 78, 79, + 80, 81, 82, 11, 76, 28, 28, 37, 24, 6, + 65, 0, 54, 55, 54, 35, 41, 0, 41, 92, + 41, 0, 4, 8, 42, 28, 42, 28, 42, 33, + 40, 64, 9, 40, 41, 9, 62, 60, 28, 61, + 12, 63, 42, 68, 9, 70, 71, 72, 73, 74, + 8, 9, 64, 89, 4, 42, 93, 62, 60, 28, + 61, 53, 63, 55, 96, 56, 11, 99, 41, 90, + 77, 31, 43, 91, 67, 0, 42, 5, 6, 7, + 8, 9, 0, 0, 0, 10, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 56, 56, 56, 56, - 56, 56, 56, 56, 25, 24, 56, 8, 8, 8, - 8, 8, 8, 8, 8, 0, 4, 8, 4, 4, - 4, 4, 4, 50, 51, 51, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, - 0, 8, 8, 8, 8, 8, 0, 0, 0, 8, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 19, 8, + 8, 8, 8, 8, 24, 49, 50, 8, 54, 54, + 54, 54, 54, 54, 54, 54, 3, 3, 54, 8, + 8, 8, 8, 8, 8, 8, 8, 1, 0, 8, + 0, 50, 5, 6, 7, 8, 9, 83, 0, 8, + 10, 8, 8, 8, 8, 8, 0, 0, 0, 8, + 4, 0, 4, 4, 4, 4, 4, 8, 8, 8, + 8, 8, 0, 0, 0, 8, }; -static const YYINT demo_check[] = { 42, - 0, 27, 259, 40, 41, 40, 41, 42, 42, 44, - 42, 40, 123, 42, 44, 44, 44, 40, 41, 42, - 41, 44, 41, 44, 59, 44, 42, 42, 41, 59, - 59, 59, 12, 40, 41, 40, 59, 44, 59, 41, - 59, 37, 44, 69, 41, 17, 42, 43, 41, 45, - 44, 47, 59, 41, 91, 43, 91, 45, 264, 265, - 40, 91, 91, 41, 38, 43, 46, 45, 91, 49, - 91, 59, 40, 41, 42, 44, 44, 44, 125, 40, - 123, 59, 125, 267, 91, 57, 91, 67, 123, 91, - 59, 123, 59, 123, 123, 123, 70, 93, 91, 44, - 123, 259, 123, 41, 123, 93, 44, 99, 123, 41, - 102, 36, 60, 259, 59, 93, 123, 42, 269, 44, - 40, 40, 91, 91, 72, 73, 74, 75, 76, 59, - 40, 61, 62, 63, 64, 65, 261, 262, 263, 264, - 265, 89, 37, 68, 269, 259, 94, 42, 43, 37, - 45, 40, 47, 41, 42, 43, 40, 45, 37, 47, - 259, 91, 259, 42, 59, 30, 31, 32, 47, 261, - 262, 263, 264, 265, 266, 268, 259, 269, 4, 90, - 70, 58, 57, 37, -1, -1, -1, -1, -1, -1, +static const YYINT demo_check[] = { 41, + 0, 42, 44, 40, 44, 40, 41, 42, 42, 44, + 42, 42, 40, 41, 40, 41, 44, 40, 40, 59, + 259, 3, 42, 41, 59, 24, 44, 41, 123, 41, + 44, 59, 125, 42, 37, 41, 27, 28, 29, 42, + 43, 59, 45, 37, 47, 59, 38, 44, 41, 91, + 40, 40, 41, 42, 91, 44, 91, 39, 44, 37, + 44, 44, 59, 91, 42, 91, 48, 59, 67, 47, + 59, 44, 267, 91, 68, 59, 59, 259, 70, 71, + 72, 73, 74, 123, 66, 91, 59, 41, 123, 269, + 93, 40, 123, 123, 125, 123, 41, 40, 43, 91, + 45, 40, 91, 123, 41, 123, 43, 91, 45, 123, + 41, 37, 259, 44, 59, 259, 42, 43, 91, 45, + 268, 47, 59, 58, 259, 60, 61, 62, 63, 64, + 264, 265, 37, 59, 123, 35, 41, 42, 43, 123, + 45, 41, 47, 43, 95, 45, 4, 98, 93, 87, + 68, 22, 36, 88, 57, -1, 93, 261, 262, 263, + 264, 265, -1, -1, -1, 269, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 259, 260, 261, 262, - 263, 264, 265, 266, 259, 259, 269, 259, 260, 261, - 262, 263, 264, 265, 266, -1, 259, 269, 261, 262, - 263, 264, 265, 259, 260, 260, 259, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 259, - -1, 261, 262, 263, 264, 265, -1, -1, -1, 269, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 259, 261, + 262, 263, 264, 265, 259, 259, 260, 269, 259, 260, + 261, 262, 263, 264, 265, 266, 259, 259, 269, 259, + 260, 261, 262, 263, 264, 265, 266, 259, -1, 269, + -1, 260, 261, 262, 263, 264, 265, 266, -1, 259, + 269, 261, 262, 263, 264, 265, -1, -1, -1, 269, + 259, -1, 261, 262, 263, 264, 265, 261, 262, 263, + 264, 265, -1, -1, -1, 269, }; #if YYBTYACC -static const YYINT demo_ctable[] = { -1, - 1, 10, -1, 21, 4, -1, 23, 29, -1, 1, - 51, -1, 101, 56, -1, -1, -1, -1, -1, -1, +static const YYINT demo_ctable[] = { 18, + 28, -1, 19, 8, -1, 32, 4, -1, 49, 1, + -1, 97, 54, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -412,7 +410,8 @@ static const YYINT demo_ctable[] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, }; #endif #define YYFINAL 1 @@ -420,7 +419,7 @@ static const YYINT demo_ctable[] = { -1, #define YYDEBUG 0 #endif #define YYMAXTOKEN 269 -#define YYUNDFTOKEN 301 +#define YYUNDFTOKEN 299 #define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a)) #if YYDEBUG static const char *const demo_name[] = { @@ -438,7 +437,7 @@ static const char *const demo_name[] = { "statement_list","block_statement","declarator","formal_arg","decl_specs", "decl_spec","typename","cv_quals","cv_qual","opt_scope","formal_arg_list", "nonempty_formal_arg_list","$$1","$$2","$$3","$$4","$$5","$$6","$$7","$$8", -"$$9","$$10","$$11","$$12","illegal-symbol", +"$$9","$$10","illegal-symbol", }; static const char *const demo_rule[] = { "$accept : input", @@ -451,10 +450,9 @@ static const char *const demo_rule[] = { "decl_list :", "$$2 :", "decl_list : decl_list $$2 decl", +"decl : decl_specs declarator_list ';'", "$$3 :", -"decl : decl_specs $$2 $$3 declarator_list ';'", -"$$4 :", -"decl : decl_specs $$2 $$3 declarator $$4 block_statement", +"decl : decl_specs declarator $$3 block_statement", "decl_specs : decl_spec", "decl_specs : decl_specs $$2 decl_spec", "cv_quals :", @@ -466,40 +464,39 @@ static const char *const demo_rule[] = { "decl_spec : STATIC", "cv_qual : CONST", "cv_qual : VOLATILE", +"$$4 :", "$$5 :", -"$$6 :", -"declarator_list : declarator_list ',' $$5 $$6 declarator", +"declarator_list : declarator_list ',' $$4 $$5 declarator", "declarator_list : declarator", "declarator :", "declarator : ID", +"$$6 :", "$$7 :", -"$$8 :", -"declarator : '(' $$7 $$8 declarator ')'", -"declarator : '*' cv_quals $$5 $$6 declarator", -"declarator : declarator '[' $$5 expr ']'", -"declarator : declarator '(' $$5 formal_arg_list ')' cv_quals", +"declarator : '(' $$6 $$7 declarator ')'", +"declarator : '*' cv_quals $$4 $$5 declarator", +"declarator : declarator '[' $$4 expr ']'", +"declarator : declarator '(' $$4 formal_arg_list ')' cv_quals", "formal_arg_list :", "formal_arg_list : nonempty_formal_arg_list", -"nonempty_formal_arg_list : nonempty_formal_arg_list ',' $$7 formal_arg", +"nonempty_formal_arg_list : nonempty_formal_arg_list ',' $$6 formal_arg", "nonempty_formal_arg_list : formal_arg", -"formal_arg : decl_specs $$2 $$3 declarator", -"expr : expr '+' $$7 expr", -"expr : expr '-' $$7 expr", -"expr : expr '*' $$7 expr", -"expr : expr '%' $$7 expr", -"expr : expr '/' $$7 expr", +"formal_arg : decl_specs declarator", +"expr : expr '+' $$6 expr", +"expr : expr '-' $$6 expr", +"expr : expr '*' $$6 expr", +"expr : expr '%' $$6 expr", +"expr : expr '/' $$6 expr", "expr : '*' $$2 expr", "expr : ID", "expr : CONSTANT", "statement : decl", +"statement : expr ';'", +"$$8 :", "$$9 :", -"statement : $$9 expr ';'", +"statement : IF '(' $$6 expr ')' THEN $$8 statement ELSE $$9 statement", +"statement : IF '(' $$6 expr ')' THEN $$8 statement", "$$10 :", -"$$11 :", -"statement : IF '(' $$7 expr ')' THEN $$10 statement ELSE $$11 statement", -"statement : IF '(' $$7 expr ')' THEN $$10 statement", -"$$12 :", -"statement : $$12 block_statement", +"statement : $$10 block_statement", "statement_list :", "statement_list : statement_list $$2 statement", "block_statement : '{' $$2 statement_list '}'", @@ -567,9 +564,9 @@ do \ typedef struct { unsigned stacksize; - short *s_base; - short *s_mark; - short *s_last; + YYINT *s_base; + YYINT *s_mark; + YYINT *s_last; YYSTYPE *l_base; YYSTYPE *l_mark; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -659,7 +656,7 @@ extern Expr * var_expr(Scope *scope, char *id); extern Code * build_expr_code(Expr *expr); extern Code * build_if(Expr *cond_expr, Code *then_stmt, Code *else_stmt); extern Code * code_append(Code *stmt_list, Code *stmt); -#line 663 "btyacc_demo.tab.c" +#line 660 "btyacc_demo.tab.c" /* Release memory associated with symbol. */ #if ! defined YYDESTRUCT_IS_DECLARED @@ -676,7 +673,7 @@ YYDESTRUCT_DECL() (*loc).last_line, (*loc).last_column); /* in this example, we don't know what to do here */ } break; -#line 680 "btyacc_demo.tab.c" +#line 677 "btyacc_demo.tab.c" case 45: #line 83 "btyacc_demo.y" { printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n", @@ -685,7 +682,7 @@ YYDESTRUCT_DECL() (*loc).last_line, (*loc).last_column); /* in this example, we don't know what to do here */ } break; -#line 689 "btyacc_demo.tab.c" +#line 686 "btyacc_demo.tab.c" case 42: #line 83 "btyacc_demo.y" { printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n", @@ -694,7 +691,7 @@ YYDESTRUCT_DECL() (*loc).last_line, (*loc).last_column); /* in this example, we don't know what to do here */ } break; -#line 698 "btyacc_demo.tab.c" +#line 695 "btyacc_demo.tab.c" case 47: #line 83 "btyacc_demo.y" { printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n", @@ -703,7 +700,7 @@ YYDESTRUCT_DECL() (*loc).last_line, (*loc).last_column); /* in this example, we don't know what to do here */ } break; -#line 707 "btyacc_demo.tab.c" +#line 704 "btyacc_demo.tab.c" case 37: #line 83 "btyacc_demo.y" { printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n", @@ -712,7 +709,7 @@ YYDESTRUCT_DECL() (*loc).last_line, (*loc).last_column); /* in this example, we don't know what to do here */ } break; -#line 716 "btyacc_demo.tab.c" +#line 713 "btyacc_demo.tab.c" case 257: #line 83 "btyacc_demo.y" { printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n", @@ -721,7 +718,7 @@ YYDESTRUCT_DECL() (*loc).last_line, (*loc).last_column); /* in this example, we don't know what to do here */ } break; -#line 725 "btyacc_demo.tab.c" +#line 722 "btyacc_demo.tab.c" case 258: #line 83 "btyacc_demo.y" { printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n", @@ -730,7 +727,7 @@ YYDESTRUCT_DECL() (*loc).last_line, (*loc).last_column); /* in this example, we don't know what to do here */ } break; -#line 734 "btyacc_demo.tab.c" +#line 731 "btyacc_demo.tab.c" case 40: #line 83 "btyacc_demo.y" { printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n", @@ -739,7 +736,7 @@ YYDESTRUCT_DECL() (*loc).last_line, (*loc).last_column); /* in this example, we don't know what to do here */ } break; -#line 743 "btyacc_demo.tab.c" +#line 740 "btyacc_demo.tab.c" case 91: #line 83 "btyacc_demo.y" { printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n", @@ -748,7 +745,7 @@ YYDESTRUCT_DECL() (*loc).last_line, (*loc).last_column); /* in this example, we don't know what to do here */ } break; -#line 752 "btyacc_demo.tab.c" +#line 749 "btyacc_demo.tab.c" case 46: #line 83 "btyacc_demo.y" { printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n", @@ -757,7 +754,7 @@ YYDESTRUCT_DECL() (*loc).last_line, (*loc).last_column); /* in this example, we don't know what to do here */ } break; -#line 761 "btyacc_demo.tab.c" +#line 758 "btyacc_demo.tab.c" case 259: #line 78 "btyacc_demo.y" { printf("%s accessed by symbol of any type other than <decl> @ position[%d,%d..%d,%d]\n", @@ -766,7 +763,7 @@ YYDESTRUCT_DECL() (*loc).last_line, (*loc).last_column); free((*val).id); } break; -#line 770 "btyacc_demo.tab.c" +#line 767 "btyacc_demo.tab.c" case 260: #line 78 "btyacc_demo.y" { printf("%s accessed by symbol of any type other than <decl> @ position[%d,%d..%d,%d]\n", @@ -775,7 +772,7 @@ YYDESTRUCT_DECL() (*loc).last_line, (*loc).last_column); free((*val).expr); } break; -#line 779 "btyacc_demo.tab.c" +#line 776 "btyacc_demo.tab.c" case 261: #line 83 "btyacc_demo.y" { printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n", @@ -784,7 +781,7 @@ YYDESTRUCT_DECL() (*loc).last_line, (*loc).last_column); /* in this example, we don't know what to do here */ } break; -#line 788 "btyacc_demo.tab.c" +#line 785 "btyacc_demo.tab.c" case 262: #line 83 "btyacc_demo.y" { printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n", @@ -793,7 +790,7 @@ YYDESTRUCT_DECL() (*loc).last_line, (*loc).last_column); /* in this example, we don't know what to do here */ } break; -#line 797 "btyacc_demo.tab.c" +#line 794 "btyacc_demo.tab.c" case 263: #line 83 "btyacc_demo.y" { printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n", @@ -802,7 +799,7 @@ YYDESTRUCT_DECL() (*loc).last_line, (*loc).last_column); /* in this example, we don't know what to do here */ } break; -#line 806 "btyacc_demo.tab.c" +#line 803 "btyacc_demo.tab.c" case 264: #line 83 "btyacc_demo.y" { printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n", @@ -811,7 +808,7 @@ YYDESTRUCT_DECL() (*loc).last_line, (*loc).last_column); /* in this example, we don't know what to do here */ } break; -#line 815 "btyacc_demo.tab.c" +#line 812 "btyacc_demo.tab.c" case 265: #line 83 "btyacc_demo.y" { printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n", @@ -820,7 +817,7 @@ YYDESTRUCT_DECL() (*loc).last_line, (*loc).last_column); /* in this example, we don't know what to do here */ } break; -#line 824 "btyacc_demo.tab.c" +#line 821 "btyacc_demo.tab.c" case 266: #line 83 "btyacc_demo.y" { printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n", @@ -829,7 +826,7 @@ YYDESTRUCT_DECL() (*loc).last_line, (*loc).last_column); /* in this example, we don't know what to do here */ } break; -#line 833 "btyacc_demo.tab.c" +#line 830 "btyacc_demo.tab.c" case 267: #line 83 "btyacc_demo.y" { printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n", @@ -838,7 +835,7 @@ YYDESTRUCT_DECL() (*loc).last_line, (*loc).last_column); /* in this example, we don't know what to do here */ } break; -#line 842 "btyacc_demo.tab.c" +#line 839 "btyacc_demo.tab.c" case 268: #line 83 "btyacc_demo.y" { printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n", @@ -847,7 +844,7 @@ YYDESTRUCT_DECL() (*loc).last_line, (*loc).last_column); /* in this example, we don't know what to do here */ } break; -#line 851 "btyacc_demo.tab.c" +#line 848 "btyacc_demo.tab.c" case 269: #line 83 "btyacc_demo.y" { printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n", @@ -856,7 +853,7 @@ YYDESTRUCT_DECL() (*loc).last_line, (*loc).last_column); /* in this example, we don't know what to do here */ } break; -#line 860 "btyacc_demo.tab.c" +#line 857 "btyacc_demo.tab.c" case 59: #line 83 "btyacc_demo.y" { printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n", @@ -865,7 +862,7 @@ YYDESTRUCT_DECL() (*loc).last_line, (*loc).last_column); /* in this example, we don't know what to do here */ } break; -#line 869 "btyacc_demo.tab.c" +#line 866 "btyacc_demo.tab.c" case 44: #line 83 "btyacc_demo.y" { printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n", @@ -874,7 +871,7 @@ YYDESTRUCT_DECL() (*loc).last_line, (*loc).last_column); /* in this example, we don't know what to do here */ } break; -#line 878 "btyacc_demo.tab.c" +#line 875 "btyacc_demo.tab.c" case 41: #line 83 "btyacc_demo.y" { printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n", @@ -883,7 +880,7 @@ YYDESTRUCT_DECL() (*loc).last_line, (*loc).last_column); /* in this example, we don't know what to do here */ } break; -#line 887 "btyacc_demo.tab.c" +#line 884 "btyacc_demo.tab.c" case 93: #line 83 "btyacc_demo.y" { printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n", @@ -892,7 +889,7 @@ YYDESTRUCT_DECL() (*loc).last_line, (*loc).last_column); /* in this example, we don't know what to do here */ } break; -#line 896 "btyacc_demo.tab.c" +#line 893 "btyacc_demo.tab.c" case 123: #line 83 "btyacc_demo.y" { printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n", @@ -901,7 +898,7 @@ YYDESTRUCT_DECL() (*loc).last_line, (*loc).last_column); /* in this example, we don't know what to do here */ } break; -#line 905 "btyacc_demo.tab.c" +#line 902 "btyacc_demo.tab.c" case 125: #line 83 "btyacc_demo.y" { printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n", @@ -910,7 +907,7 @@ YYDESTRUCT_DECL() (*loc).last_line, (*loc).last_column); /* in this example, we don't know what to do here */ } break; -#line 914 "btyacc_demo.tab.c" +#line 911 "btyacc_demo.tab.c" case 270: #line 83 "btyacc_demo.y" { printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n", @@ -919,7 +916,7 @@ YYDESTRUCT_DECL() (*loc).last_line, (*loc).last_column); /* in this example, we don't know what to do here */ } break; -#line 923 "btyacc_demo.tab.c" +#line 920 "btyacc_demo.tab.c" case 271: #line 83 "btyacc_demo.y" { printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n", @@ -928,7 +925,7 @@ YYDESTRUCT_DECL() (*loc).last_line, (*loc).last_column); /* in this example, we don't know what to do here */ } break; -#line 932 "btyacc_demo.tab.c" +#line 929 "btyacc_demo.tab.c" case 272: #line 78 "btyacc_demo.y" { printf("%s accessed by symbol of any type other than <decl> @ position[%d,%d..%d,%d]\n", @@ -937,7 +934,7 @@ YYDESTRUCT_DECL() (*loc).last_line, (*loc).last_column); free((*val).expr); } break; -#line 941 "btyacc_demo.tab.c" +#line 938 "btyacc_demo.tab.c" case 273: #line 67 "btyacc_demo.y" { /* 'msg' is a 'char *' indicating the context of destructor invocation*/ @@ -947,7 +944,7 @@ YYDESTRUCT_DECL() (*loc).last_line, (*loc).last_column); free((*val).decl->scope); free((*val).decl->type); } break; -#line 951 "btyacc_demo.tab.c" +#line 948 "btyacc_demo.tab.c" case 274: #line 83 "btyacc_demo.y" { printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n", @@ -956,7 +953,7 @@ YYDESTRUCT_DECL() (*loc).last_line, (*loc).last_column); /* in this example, we don't know what to do here */ } break; -#line 960 "btyacc_demo.tab.c" +#line 957 "btyacc_demo.tab.c" case 275: #line 83 "btyacc_demo.y" { printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n", @@ -965,7 +962,7 @@ YYDESTRUCT_DECL() (*loc).last_line, (*loc).last_column); /* in this example, we don't know what to do here */ } break; -#line 969 "btyacc_demo.tab.c" +#line 966 "btyacc_demo.tab.c" case 276: #line 78 "btyacc_demo.y" { printf("%s accessed by symbol of any type other than <decl> @ position[%d,%d..%d,%d]\n", @@ -974,7 +971,7 @@ YYDESTRUCT_DECL() (*loc).last_line, (*loc).last_column); free((*val).code); } break; -#line 978 "btyacc_demo.tab.c" +#line 975 "btyacc_demo.tab.c" case 277: #line 78 "btyacc_demo.y" { printf("%s accessed by symbol of any type other than <decl> @ position[%d,%d..%d,%d]\n", @@ -983,7 +980,7 @@ YYDESTRUCT_DECL() (*loc).last_line, (*loc).last_column); free((*val).code); } break; -#line 987 "btyacc_demo.tab.c" +#line 984 "btyacc_demo.tab.c" case 278: #line 78 "btyacc_demo.y" { printf("%s accessed by symbol of any type other than <decl> @ position[%d,%d..%d,%d]\n", @@ -992,7 +989,7 @@ YYDESTRUCT_DECL() (*loc).last_line, (*loc).last_column); free((*val).code); } break; -#line 996 "btyacc_demo.tab.c" +#line 993 "btyacc_demo.tab.c" case 279: #line 73 "btyacc_demo.y" { printf("%s accessed by symbol with type <decl> (case s.b. 279 & 280) @ position[%d,%d..%d,%d]\n", @@ -1001,7 +998,7 @@ YYDESTRUCT_DECL() (*loc).last_line, (*loc).last_column); free((*val).decl); } break; -#line 1005 "btyacc_demo.tab.c" +#line 1002 "btyacc_demo.tab.c" case 280: #line 73 "btyacc_demo.y" { printf("%s accessed by symbol with type <decl> (case s.b. 279 & 280) @ position[%d,%d..%d,%d]\n", @@ -1010,7 +1007,7 @@ YYDESTRUCT_DECL() (*loc).last_line, (*loc).last_column); free((*val).decl); } break; -#line 1014 "btyacc_demo.tab.c" +#line 1011 "btyacc_demo.tab.c" case 281: #line 78 "btyacc_demo.y" { printf("%s accessed by symbol of any type other than <decl> @ position[%d,%d..%d,%d]\n", @@ -1019,7 +1016,7 @@ YYDESTRUCT_DECL() (*loc).last_line, (*loc).last_column); free((*val).type); } break; -#line 1023 "btyacc_demo.tab.c" +#line 1020 "btyacc_demo.tab.c" case 282: #line 78 "btyacc_demo.y" { printf("%s accessed by symbol of any type other than <decl> @ position[%d,%d..%d,%d]\n", @@ -1028,7 +1025,7 @@ YYDESTRUCT_DECL() (*loc).last_line, (*loc).last_column); free((*val).type); } break; -#line 1032 "btyacc_demo.tab.c" +#line 1029 "btyacc_demo.tab.c" case 283: #line 78 "btyacc_demo.y" { printf("%s accessed by symbol of any type other than <decl> @ position[%d,%d..%d,%d]\n", @@ -1037,7 +1034,7 @@ YYDESTRUCT_DECL() (*loc).last_line, (*loc).last_column); free((*val).type); } break; -#line 1041 "btyacc_demo.tab.c" +#line 1038 "btyacc_demo.tab.c" case 284: #line 78 "btyacc_demo.y" { printf("%s accessed by symbol of any type other than <decl> @ position[%d,%d..%d,%d]\n", @@ -1046,7 +1043,7 @@ YYDESTRUCT_DECL() (*loc).last_line, (*loc).last_column); free((*val).type); } break; -#line 1050 "btyacc_demo.tab.c" +#line 1047 "btyacc_demo.tab.c" case 285: #line 78 "btyacc_demo.y" { printf("%s accessed by symbol of any type other than <decl> @ position[%d,%d..%d,%d]\n", @@ -1055,7 +1052,7 @@ YYDESTRUCT_DECL() (*loc).last_line, (*loc).last_column); free((*val).type); } break; -#line 1059 "btyacc_demo.tab.c" +#line 1056 "btyacc_demo.tab.c" case 286: #line 78 "btyacc_demo.y" { printf("%s accessed by symbol of any type other than <decl> @ position[%d,%d..%d,%d]\n", @@ -1064,7 +1061,7 @@ YYDESTRUCT_DECL() (*loc).last_line, (*loc).last_column); free((*val).scope); } break; -#line 1068 "btyacc_demo.tab.c" +#line 1065 "btyacc_demo.tab.c" case 287: #line 78 "btyacc_demo.y" { printf("%s accessed by symbol of any type other than <decl> @ position[%d,%d..%d,%d]\n", @@ -1073,7 +1070,7 @@ YYDESTRUCT_DECL() (*loc).last_line, (*loc).last_column); free((*val).dlist); } break; -#line 1077 "btyacc_demo.tab.c" +#line 1074 "btyacc_demo.tab.c" case 288: #line 78 "btyacc_demo.y" { printf("%s accessed by symbol of any type other than <decl> @ position[%d,%d..%d,%d]\n", @@ -1082,7 +1079,7 @@ YYDESTRUCT_DECL() (*loc).last_line, (*loc).last_column); free((*val).dlist); } break; -#line 1086 "btyacc_demo.tab.c" +#line 1083 "btyacc_demo.tab.c" case 289: #line 78 "btyacc_demo.y" { printf("%s accessed by symbol of any type other than <decl> @ position[%d,%d..%d,%d]\n", @@ -1091,7 +1088,7 @@ YYDESTRUCT_DECL() (*loc).last_line, (*loc).last_column); free((*val).scope); } break; -#line 1095 "btyacc_demo.tab.c" +#line 1092 "btyacc_demo.tab.c" case 290: #line 78 "btyacc_demo.y" { printf("%s accessed by symbol of any type other than <decl> @ position[%d,%d..%d,%d]\n", @@ -1100,16 +1097,16 @@ YYDESTRUCT_DECL() (*loc).last_line, (*loc).last_column); free((*val).scope); } break; -#line 1104 "btyacc_demo.tab.c" +#line 1101 "btyacc_demo.tab.c" case 291: #line 78 "btyacc_demo.y" { printf("%s accessed by symbol of any type other than <decl> @ position[%d,%d..%d,%d]\n", msg, (*loc).first_line, (*loc).first_column, (*loc).last_line, (*loc).last_column); - free((*val).type); } + free((*val).scope); } break; -#line 1113 "btyacc_demo.tab.c" +#line 1110 "btyacc_demo.tab.c" case 292: #line 78 "btyacc_demo.y" { printf("%s accessed by symbol of any type other than <decl> @ position[%d,%d..%d,%d]\n", @@ -1118,43 +1115,43 @@ YYDESTRUCT_DECL() (*loc).last_line, (*loc).last_column); free((*val).scope); } break; -#line 1122 "btyacc_demo.tab.c" +#line 1119 "btyacc_demo.tab.c" case 293: #line 78 "btyacc_demo.y" { printf("%s accessed by symbol of any type other than <decl> @ position[%d,%d..%d,%d]\n", msg, (*loc).first_line, (*loc).first_column, (*loc).last_line, (*loc).last_column); - free((*val).scope); } + free((*val).type); } break; -#line 1131 "btyacc_demo.tab.c" +#line 1128 "btyacc_demo.tab.c" case 294: #line 78 "btyacc_demo.y" { printf("%s accessed by symbol of any type other than <decl> @ position[%d,%d..%d,%d]\n", msg, (*loc).first_line, (*loc).first_column, (*loc).last_line, (*loc).last_column); - free((*val).type); } + free((*val).scope); } break; -#line 1140 "btyacc_demo.tab.c" +#line 1137 "btyacc_demo.tab.c" case 295: #line 78 "btyacc_demo.y" { printf("%s accessed by symbol of any type other than <decl> @ position[%d,%d..%d,%d]\n", msg, (*loc).first_line, (*loc).first_column, (*loc).last_line, (*loc).last_column); - free((*val).scope); } + free((*val).type); } break; -#line 1149 "btyacc_demo.tab.c" +#line 1146 "btyacc_demo.tab.c" case 296: #line 78 "btyacc_demo.y" { printf("%s accessed by symbol of any type other than <decl> @ position[%d,%d..%d,%d]\n", msg, (*loc).first_line, (*loc).first_column, (*loc).last_line, (*loc).last_column); - free((*val).type); } + free((*val).scope); } break; -#line 1158 "btyacc_demo.tab.c" +#line 1155 "btyacc_demo.tab.c" case 297: #line 78 "btyacc_demo.y" { printf("%s accessed by symbol of any type other than <decl> @ position[%d,%d..%d,%d]\n", @@ -1163,7 +1160,7 @@ YYDESTRUCT_DECL() (*loc).last_line, (*loc).last_column); free((*val).scope); } break; -#line 1167 "btyacc_demo.tab.c" +#line 1164 "btyacc_demo.tab.c" case 298: #line 78 "btyacc_demo.y" { printf("%s accessed by symbol of any type other than <decl> @ position[%d,%d..%d,%d]\n", @@ -1172,25 +1169,7 @@ YYDESTRUCT_DECL() (*loc).last_line, (*loc).last_column); free((*val).scope); } break; -#line 1176 "btyacc_demo.tab.c" - case 299: -#line 78 "btyacc_demo.y" - { printf("%s accessed by symbol of any type other than <decl> @ position[%d,%d..%d,%d]\n", - msg, - (*loc).first_line, (*loc).first_column, - (*loc).last_line, (*loc).last_column); - free((*val).scope); } - break; -#line 1185 "btyacc_demo.tab.c" - case 300: -#line 78 "btyacc_demo.y" - { printf("%s accessed by symbol of any type other than <decl> @ position[%d,%d..%d,%d]\n", - msg, - (*loc).first_line, (*loc).first_column, - (*loc).last_line, (*loc).last_column); - free((*val).scope); } - break; -#line 1194 "btyacc_demo.tab.c" +#line 1173 "btyacc_demo.tab.c" } } #define YYDESTRUCT_IS_DECLARED 1 @@ -1203,18 +1182,18 @@ YYDESTRUCT_DECL() #endif /* YYBTYACC */ #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif -#include <stdlib.h> /* needed for malloc, etc */ -#include <string.h> /* needed for memset */ +#include <stdlib.h> /* needed for malloc, etc */ +#include <string.h> /* needed for memset */ /* allocate initial stack or double stack size, up to YYMAXDEPTH */ static int yygrowstack(YYSTACKDATA *data) { int i; unsigned newsize; - short *newss; + YYINT *newss; YYSTYPE *newvs; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) YYLTYPE *newps; @@ -1228,7 +1207,7 @@ static int yygrowstack(YYSTACKDATA *data) newsize = YYMAXDEPTH; i = (int) (data->s_mark - data->s_base); - newss = (short *)realloc(data->s_base, newsize * sizeof(*newss)); + newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss)); if (newss == 0) return YYENOMEM; @@ -1292,7 +1271,7 @@ yyNewState(unsigned size) #endif return p; } - p->yystack.s_base = (short *) malloc(size * sizeof(short)); + p->yystack.s_base = (YYINT *) malloc(size * sizeof(YYINT)); if (p->yystack.s_base == NULL) return NULL; p->yystack.l_base = (YYSTYPE *) malloc(size * sizeof(YYSTYPE)); if (p->yystack.l_base == NULL) return NULL; @@ -1352,6 +1331,8 @@ YYPARSE_DECL() yyps = yyNewState(0); if (yyps == 0) goto yyenomem; yyps->save = 0; #endif /* YYBTYACC */ + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -1425,11 +1406,10 @@ yyloop: } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)", YYDEBUGSTR, yydepth, yystate, yychar, yys); #ifdef YYSTYPE_TOSTRING @@ -1488,7 +1468,7 @@ yyloop: save->state = yystate; save->errflag = yyerrflag; save->yystack.s_mark = save->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); save->yystack.l_mark = save->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -1569,7 +1549,7 @@ yyloop: if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yyctable[ctry]; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yylval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yylloc; @@ -1615,9 +1595,18 @@ yyloop: yynewerrflag = 1; goto yyerrhandler; - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: + /* explicit YYERROR from an action -- pop the rhs of the rule reduced + * before looking for error recovery */ + yystack.s_mark -= yym; + yystate = *yystack.s_mark; + yystack.l_mark -= yym; +#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) + yystack.p_mark -= yym; +#endif + yynewerrflag = 0; yyerrhandler: while (yyps->save) @@ -1642,7 +1631,7 @@ yyerrhandler: yyerrctx->state = yystate; yyerrctx->errflag = yyerrflag; yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -1658,7 +1647,7 @@ yyerrhandler: yylexp = yylexemes + save->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base); - memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base); memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -1693,7 +1682,7 @@ yyerrhandler: yylloc = yylpp[-1]; #endif yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base); - memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base); memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -1715,7 +1704,7 @@ yyerrhandler: #endif #if !YYBTYACC - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: #endif ++yynerrs; @@ -1784,7 +1773,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n", YYDEBUGSTR, yydepth, yystate, yychar, yys); } @@ -1881,244 +1870,236 @@ yyval.scope = yystack.l_mark[-1].scope; break; case 10: #line 109 "btyacc_demo.y" -yyval.type = yystack.l_mark[-1].type; -break; -case 11: -#line 109 "btyacc_demo.y" {YYVALID;} break; -case 12: +case 11: #line 110 "btyacc_demo.y" -yyval.scope = start_fn_def(yystack.l_mark[-4].scope, yystack.l_mark[0].decl); +yyval.scope = start_fn_def(yystack.l_mark[-2].scope, yystack.l_mark[0].decl); break; -case 13: +case 12: if (!yytrial) #line 111 "btyacc_demo.y" { /* demonstrate use of @$ & @N, although this is just the default computation and so is not necessary */ - yyloc.first_line = yystack.p_mark[-5].first_line; - yyloc.first_column = yystack.p_mark[-5].first_column; + yyloc.first_line = yystack.p_mark[-3].first_line; + yyloc.first_column = yystack.p_mark[-3].first_column; yyloc.last_line = yystack.p_mark[0].last_line; yyloc.last_column = yystack.p_mark[0].last_column; finish_fn_def(yystack.l_mark[-2].decl, yystack.l_mark[0].code); } break; -case 14: +case 13: #line 121 "btyacc_demo.y" { yyval.type = yystack.l_mark[0].type; } break; -case 15: +case 14: #line 122 "btyacc_demo.y" { yyval.type = type_combine(yystack.l_mark[-2].type, yystack.l_mark[0].type); } break; -case 16: +case 15: #line 125 "btyacc_demo.y" { yyval.type = 0; } break; -case 17: +case 16: #line 126 "btyacc_demo.y" { yyval.type = type_combine(yystack.l_mark[-1].type, yystack.l_mark[0].type); } break; -case 18: +case 17: #line 130 "btyacc_demo.y" { yyval.type = yystack.l_mark[0].type; } break; -case 19: +case 18: #line 131 "btyacc_demo.y" { yyval.type = yystack.l_mark[0].type; } break; -case 20: +case 19: #line 132 "btyacc_demo.y" { yyval.type = bare_extern(); } break; -case 21: +case 20: #line 133 "btyacc_demo.y" { yyval.type = bare_register(); } break; -case 22: +case 21: #line 134 "btyacc_demo.y" { yyval.type = bare_static(); } break; -case 23: +case 22: #line 138 "btyacc_demo.y" { yyval.type = bare_const(); } break; -case 24: +case 23: #line 139 "btyacc_demo.y" { yyval.type = bare_volatile(); } break; -case 25: +case 24: #line 143 "btyacc_demo.y" yyval.scope = yystack.l_mark[-3].scope; break; -case 26: +case 25: #line 143 "btyacc_demo.y" yyval.type = yystack.l_mark[-3].type; break; -case 29: +case 28: #line 148 "btyacc_demo.y" { if (!yystack.l_mark[0].type) YYERROR; } if (!yytrial) #line 149 "btyacc_demo.y" { yyval.decl = declare(yystack.l_mark[-1].scope, 0, yystack.l_mark[0].type); } break; -case 30: +case 29: if (!yytrial) #line 150 "btyacc_demo.y" { yyval.decl = declare(yystack.l_mark[-2].scope, yystack.l_mark[0].id, yystack.l_mark[-1].type); } break; -case 31: +case 30: #line 151 "btyacc_demo.y" yyval.scope = yystack.l_mark[-2].scope; break; -case 32: +case 31: #line 151 "btyacc_demo.y" yyval.type = yystack.l_mark[-2].type; break; -case 33: +case 32: if (!yytrial) #line 151 "btyacc_demo.y" { yyval.decl = yystack.l_mark[-1].decl; } break; -case 34: +case 33: if (!yytrial) #line 153 "btyacc_demo.y" { yyval.decl = make_pointer(yystack.l_mark[0].decl, yystack.l_mark[-3].type); } break; -case 35: +case 34: if (!yytrial) #line 155 "btyacc_demo.y" { yyval.decl = make_array(yystack.l_mark[-4].decl->type, yystack.l_mark[-1].expr); } break; -case 36: +case 35: if (!yytrial) #line 157 "btyacc_demo.y" { yyval.decl = build_function(yystack.l_mark[-5].decl, yystack.l_mark[-2].dlist, yystack.l_mark[0].type); } break; -case 37: +case 36: if (!yytrial) #line 160 "btyacc_demo.y" { yyval.dlist = 0; } break; -case 38: +case 37: if (!yytrial) #line 161 "btyacc_demo.y" { yyval.dlist = yystack.l_mark[0].dlist; } break; -case 39: +case 38: if (!yytrial) #line 164 "btyacc_demo.y" { yyval.dlist = append_dlist(yystack.l_mark[-3].dlist, yystack.l_mark[0].decl); } break; -case 40: +case 39: if (!yytrial) #line 165 "btyacc_demo.y" { yyval.dlist = build_dlist(yystack.l_mark[0].decl); } break; -case 41: +case 40: if (!yytrial) #line 168 "btyacc_demo.y" { yyval.decl = yystack.l_mark[0].decl; } break; -case 42: +case 41: if (!yytrial) #line 172 "btyacc_demo.y" { yyval.expr = build_expr(yystack.l_mark[-3].expr, ADD, yystack.l_mark[0].expr); } break; -case 43: +case 42: if (!yytrial) #line 173 "btyacc_demo.y" { yyval.expr = build_expr(yystack.l_mark[-3].expr, SUB, yystack.l_mark[0].expr); } break; -case 44: +case 43: if (!yytrial) #line 174 "btyacc_demo.y" { yyval.expr = build_expr(yystack.l_mark[-3].expr, MUL, yystack.l_mark[0].expr); } break; -case 45: +case 44: if (!yytrial) #line 175 "btyacc_demo.y" { yyval.expr = build_expr(yystack.l_mark[-3].expr, MOD, yystack.l_mark[0].expr); } break; -case 46: +case 45: if (!yytrial) #line 176 "btyacc_demo.y" { yyval.expr = build_expr(yystack.l_mark[-3].expr, DIV, yystack.l_mark[0].expr); } break; -case 47: +case 46: if (!yytrial) #line 177 "btyacc_demo.y" { yyval.expr = build_expr(0, DEREF, yystack.l_mark[0].expr); } break; -case 48: +case 47: if (!yytrial) #line 178 "btyacc_demo.y" { yyval.expr = var_expr(yystack.l_mark[-1].scope, yystack.l_mark[0].id); } break; -case 49: +case 48: if (!yytrial) #line 179 "btyacc_demo.y" { yyval.expr = yystack.l_mark[0].expr; } break; -case 50: +case 49: if (!yytrial) #line 183 "btyacc_demo.y" { yyval.code = 0; } break; -case 51: -#line 184 "btyacc_demo.y" -yyval.scope = yystack.l_mark[0].scope; -break; -case 52: +case 50: #line 184 "btyacc_demo.y" {YYVALID;} if (!yytrial) #line 184 "btyacc_demo.y" { yyval.code = build_expr_code(yystack.l_mark[-1].expr); } break; -case 53: +case 51: #line 185 "btyacc_demo.y" yyval.scope = yystack.l_mark[-6].scope; break; -case 54: +case 52: #line 185 "btyacc_demo.y" yyval.scope = yystack.l_mark[-9].scope; break; -case 55: +case 53: #line 185 "btyacc_demo.y" {YYVALID;} if (!yytrial) #line 186 "btyacc_demo.y" { yyval.code = build_if(yystack.l_mark[-7].expr, yystack.l_mark[-3].code, yystack.l_mark[0].code); } break; -case 56: +case 54: #line 187 "btyacc_demo.y" {YYVALID;} if (!yytrial) #line 188 "btyacc_demo.y" { yyval.code = build_if(yystack.l_mark[-4].expr, yystack.l_mark[0].code, 0); } break; -case 57: +case 55: #line 189 "btyacc_demo.y" yyval.scope = new_scope(yystack.l_mark[0].scope); break; -case 58: +case 56: #line 189 "btyacc_demo.y" {YYVALID;} if (!yytrial) #line 189 "btyacc_demo.y" { yyval.code = yystack.l_mark[0].code; } break; -case 59: +case 57: if (!yytrial) #line 192 "btyacc_demo.y" { yyval.code = 0; } break; -case 60: +case 58: if (!yytrial) #line 193 "btyacc_demo.y" { yyval.code = code_append(yystack.l_mark[-2].code, yystack.l_mark[0].code); } break; -case 61: +case 59: if (!yytrial) #line 197 "btyacc_demo.y" { yyval.code = yystack.l_mark[-1].code; } break; -#line 2122 "btyacc_demo.tab.c" +#line 2103 "btyacc_demo.tab.c" default: break; } @@ -2206,12 +2187,11 @@ break; } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; - fprintf(stderr, "%s[%d]: state %d, reading %d (%s)\n", + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; + fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n", YYDEBUGSTR, yydepth, YYFINAL, yychar, yys); } #endif @@ -2238,7 +2218,7 @@ break; } #endif if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yyloc; @@ -2273,7 +2253,7 @@ yyvalid: yylexp = yylexemes + yypath->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base); - memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base); memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) diff --git a/test/btyacc/btyacc_destroy1.tab.c b/test/btyacc/btyacc_destroy1.tab.c index 85738e9..c598913 100644 --- a/test/btyacc/btyacc_destroy1.tab.c +++ b/test/btyacc/btyacc_destroy1.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 @@ -141,13 +141,13 @@ extern symbol *mksymbol(type t, class c, name id); #define YYLEX_DECL() yylex(void) #define YYERROR_DECL() yyerror(const char *s) #endif -#line 50 "btyacc_destroy1.y" #ifdef YYSTYPE #undef YYSTYPE_IS_DECLARED #define YYSTYPE_IS_DECLARED 1 #endif #ifndef YYSTYPE_IS_DECLARED #define YYSTYPE_IS_DECLARED 1 +#line 50 "btyacc_destroy1.y" typedef union { class cval; @@ -415,9 +415,9 @@ do \ typedef struct { unsigned stacksize; - short *s_base; - short *s_mark; - short *s_last; + YYINT *s_base; + YYINT *s_mark; + YYINT *s_last; YYSTYPE *l_base; YYSTYPE *l_mark; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -516,18 +516,18 @@ YYDESTRUCT_DECL() #endif /* YYBTYACC */ #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif -#include <stdlib.h> /* needed for malloc, etc */ -#include <string.h> /* needed for memset */ +#include <stdlib.h> /* needed for malloc, etc */ +#include <string.h> /* needed for memset */ /* allocate initial stack or double stack size, up to YYMAXDEPTH */ static int yygrowstack(YYSTACKDATA *data) { int i; unsigned newsize; - short *newss; + YYINT *newss; YYSTYPE *newvs; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) YYLTYPE *newps; @@ -541,7 +541,7 @@ static int yygrowstack(YYSTACKDATA *data) newsize = YYMAXDEPTH; i = (int) (data->s_mark - data->s_base); - newss = (short *)realloc(data->s_base, newsize * sizeof(*newss)); + newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss)); if (newss == 0) return YYENOMEM; @@ -605,7 +605,7 @@ yyNewState(unsigned size) #endif return p; } - p->yystack.s_base = (short *) malloc(size * sizeof(short)); + p->yystack.s_base = (YYINT *) malloc(size * sizeof(YYINT)); if (p->yystack.s_base == NULL) return NULL; p->yystack.l_base = (YYSTYPE *) malloc(size * sizeof(YYSTYPE)); if (p->yystack.l_base == NULL) return NULL; @@ -665,6 +665,8 @@ YYPARSE_DECL() yyps = yyNewState(0); if (yyps == 0) goto yyenomem; yyps->save = 0; #endif /* YYBTYACC */ + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -738,11 +740,10 @@ yyloop: } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)", YYDEBUGSTR, yydepth, yystate, yychar, yys); #ifdef YYSTYPE_TOSTRING @@ -801,7 +802,7 @@ yyloop: save->state = yystate; save->errflag = yyerrflag; save->yystack.s_mark = save->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); save->yystack.l_mark = save->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -882,7 +883,7 @@ yyloop: if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yyctable[ctry]; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yylval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yylloc; @@ -928,9 +929,18 @@ yyloop: yynewerrflag = 1; goto yyerrhandler; - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: + /* explicit YYERROR from an action -- pop the rhs of the rule reduced + * before looking for error recovery */ + yystack.s_mark -= yym; + yystate = *yystack.s_mark; + yystack.l_mark -= yym; +#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) + yystack.p_mark -= yym; +#endif + yynewerrflag = 0; yyerrhandler: while (yyps->save) @@ -955,7 +965,7 @@ yyerrhandler: yyerrctx->state = yystate; yyerrctx->errflag = yyerrflag; yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -971,7 +981,7 @@ yyerrhandler: yylexp = yylexemes + save->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base); - memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base); memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -1006,7 +1016,7 @@ yyerrhandler: yylloc = yylpp[-1]; #endif yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base); - memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base); memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -1028,7 +1038,7 @@ yyerrhandler: #endif #if !YYBTYACC - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: #endif ++yynerrs; @@ -1097,7 +1107,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n", YYDEBUGSTR, yydepth, yystate, yychar, yys); } @@ -1213,7 +1223,7 @@ case 9: #line 86 "btyacc_destroy1.y" { yyval.nlist = yystack.l_mark[-5].nlist; } break; -#line 1217 "btyacc_destroy1.tab.c" +#line 1227 "btyacc_destroy1.tab.c" default: break; } @@ -1301,12 +1311,11 @@ break; } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; - fprintf(stderr, "%s[%d]: state %d, reading %d (%s)\n", + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; + fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n", YYDEBUGSTR, yydepth, YYFINAL, yychar, yys); } #endif @@ -1333,7 +1342,7 @@ break; } #endif if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yyloc; @@ -1368,7 +1377,7 @@ yyvalid: yylexp = yylexemes + yypath->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base); - memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base); memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) diff --git a/test/btyacc/btyacc_destroy2.tab.c b/test/btyacc/btyacc_destroy2.tab.c index 2441008..04d4d37 100644 --- a/test/btyacc/btyacc_destroy2.tab.c +++ b/test/btyacc/btyacc_destroy2.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 @@ -141,13 +141,13 @@ extern symbol *mksymbol(type t, class c, name id); #define YYLEX_DECL() yylex(void) #define YYERROR_DECL() yyerror(const char *s) #endif -#line 50 "btyacc_destroy2.y" #ifdef YYSTYPE #undef YYSTYPE_IS_DECLARED #define YYSTYPE_IS_DECLARED 1 #endif #ifndef YYSTYPE_IS_DECLARED #define YYSTYPE_IS_DECLARED 1 +#line 50 "btyacc_destroy2.y" typedef union { class cval; @@ -415,9 +415,9 @@ do \ typedef struct { unsigned stacksize; - short *s_base; - short *s_mark; - short *s_last; + YYINT *s_base; + YYINT *s_mark; + YYINT *s_last; YYSTYPE *l_base; YYSTYPE *l_mark; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -516,18 +516,18 @@ YYDESTRUCT_DECL() #endif /* YYBTYACC */ #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif -#include <stdlib.h> /* needed for malloc, etc */ -#include <string.h> /* needed for memset */ +#include <stdlib.h> /* needed for malloc, etc */ +#include <string.h> /* needed for memset */ /* allocate initial stack or double stack size, up to YYMAXDEPTH */ static int yygrowstack(YYSTACKDATA *data) { int i; unsigned newsize; - short *newss; + YYINT *newss; YYSTYPE *newvs; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) YYLTYPE *newps; @@ -541,7 +541,7 @@ static int yygrowstack(YYSTACKDATA *data) newsize = YYMAXDEPTH; i = (int) (data->s_mark - data->s_base); - newss = (short *)realloc(data->s_base, newsize * sizeof(*newss)); + newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss)); if (newss == 0) return YYENOMEM; @@ -605,7 +605,7 @@ yyNewState(unsigned size) #endif return p; } - p->yystack.s_base = (short *) malloc(size * sizeof(short)); + p->yystack.s_base = (YYINT *) malloc(size * sizeof(YYINT)); if (p->yystack.s_base == NULL) return NULL; p->yystack.l_base = (YYSTYPE *) malloc(size * sizeof(YYSTYPE)); if (p->yystack.l_base == NULL) return NULL; @@ -665,6 +665,8 @@ YYPARSE_DECL() yyps = yyNewState(0); if (yyps == 0) goto yyenomem; yyps->save = 0; #endif /* YYBTYACC */ + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -738,11 +740,10 @@ yyloop: } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)", YYDEBUGSTR, yydepth, yystate, yychar, yys); #ifdef YYSTYPE_TOSTRING @@ -801,7 +802,7 @@ yyloop: save->state = yystate; save->errflag = yyerrflag; save->yystack.s_mark = save->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); save->yystack.l_mark = save->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -882,7 +883,7 @@ yyloop: if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yyctable[ctry]; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yylval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yylloc; @@ -928,9 +929,18 @@ yyloop: yynewerrflag = 1; goto yyerrhandler; - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: + /* explicit YYERROR from an action -- pop the rhs of the rule reduced + * before looking for error recovery */ + yystack.s_mark -= yym; + yystate = *yystack.s_mark; + yystack.l_mark -= yym; +#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) + yystack.p_mark -= yym; +#endif + yynewerrflag = 0; yyerrhandler: while (yyps->save) @@ -955,7 +965,7 @@ yyerrhandler: yyerrctx->state = yystate; yyerrctx->errflag = yyerrflag; yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -971,7 +981,7 @@ yyerrhandler: yylexp = yylexemes + save->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base); - memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base); memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -1006,7 +1016,7 @@ yyerrhandler: yylloc = yylpp[-1]; #endif yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base); - memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base); memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -1028,7 +1038,7 @@ yyerrhandler: #endif #if !YYBTYACC - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: #endif ++yynerrs; @@ -1097,7 +1107,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n", YYDEBUGSTR, yydepth, yystate, yychar, yys); } @@ -1213,7 +1223,7 @@ case 9: #line 86 "btyacc_destroy2.y" { yyval.nlist = yystack.l_mark[-5].nlist; } break; -#line 1217 "btyacc_destroy2.tab.c" +#line 1227 "btyacc_destroy2.tab.c" default: break; } @@ -1301,12 +1311,11 @@ break; } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; - fprintf(stderr, "%s[%d]: state %d, reading %d (%s)\n", + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; + fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n", YYDEBUGSTR, yydepth, YYFINAL, yychar, yys); } #endif @@ -1333,7 +1342,7 @@ break; } #endif if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yyloc; @@ -1368,7 +1377,7 @@ yyvalid: yylexp = yylexemes + yypath->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base); - memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base); memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) diff --git a/test/btyacc/btyacc_destroy3.tab.c b/test/btyacc/btyacc_destroy3.tab.c index 9fec701..fca98b8 100644 --- a/test/btyacc/btyacc_destroy3.tab.c +++ b/test/btyacc/btyacc_destroy3.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 @@ -141,13 +141,13 @@ extern symbol *mksymbol(type t, class c, name id); #define YYLEX_DECL() yylex(void) #define YYERROR_DECL() yyerror(const char *s) #endif -#line 53 "btyacc_destroy3.y" #ifdef YYSTYPE #undef YYSTYPE_IS_DECLARED #define YYSTYPE_IS_DECLARED 1 #endif #ifndef YYSTYPE_IS_DECLARED #define YYSTYPE_IS_DECLARED 1 +#line 53 "btyacc_destroy3.y" typedef union { class cval; @@ -415,9 +415,9 @@ do \ typedef struct { unsigned stacksize; - short *s_base; - short *s_mark; - short *s_last; + YYINT *s_base; + YYINT *s_mark; + YYINT *s_last; YYSTYPE *l_base; YYSTYPE *l_mark; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -516,18 +516,18 @@ YYDESTRUCT_DECL() #endif /* YYBTYACC */ #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif -#include <stdlib.h> /* needed for malloc, etc */ -#include <string.h> /* needed for memset */ +#include <stdlib.h> /* needed for malloc, etc */ +#include <string.h> /* needed for memset */ /* allocate initial stack or double stack size, up to YYMAXDEPTH */ static int yygrowstack(YYSTACKDATA *data) { int i; unsigned newsize; - short *newss; + YYINT *newss; YYSTYPE *newvs; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) YYLTYPE *newps; @@ -541,7 +541,7 @@ static int yygrowstack(YYSTACKDATA *data) newsize = YYMAXDEPTH; i = (int) (data->s_mark - data->s_base); - newss = (short *)realloc(data->s_base, newsize * sizeof(*newss)); + newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss)); if (newss == 0) return YYENOMEM; @@ -605,7 +605,7 @@ yyNewState(unsigned size) #endif return p; } - p->yystack.s_base = (short *) malloc(size * sizeof(short)); + p->yystack.s_base = (YYINT *) malloc(size * sizeof(YYINT)); if (p->yystack.s_base == NULL) return NULL; p->yystack.l_base = (YYSTYPE *) malloc(size * sizeof(YYSTYPE)); if (p->yystack.l_base == NULL) return NULL; @@ -665,6 +665,8 @@ YYPARSE_DECL() yyps = yyNewState(0); if (yyps == 0) goto yyenomem; yyps->save = 0; #endif /* YYBTYACC */ + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -738,11 +740,10 @@ yyloop: } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)", YYDEBUGSTR, yydepth, yystate, yychar, yys); #ifdef YYSTYPE_TOSTRING @@ -801,7 +802,7 @@ yyloop: save->state = yystate; save->errflag = yyerrflag; save->yystack.s_mark = save->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); save->yystack.l_mark = save->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -882,7 +883,7 @@ yyloop: if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yyctable[ctry]; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yylval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yylloc; @@ -928,9 +929,18 @@ yyloop: yynewerrflag = 1; goto yyerrhandler; - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: + /* explicit YYERROR from an action -- pop the rhs of the rule reduced + * before looking for error recovery */ + yystack.s_mark -= yym; + yystate = *yystack.s_mark; + yystack.l_mark -= yym; +#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) + yystack.p_mark -= yym; +#endif + yynewerrflag = 0; yyerrhandler: while (yyps->save) @@ -955,7 +965,7 @@ yyerrhandler: yyerrctx->state = yystate; yyerrctx->errflag = yyerrflag; yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -971,7 +981,7 @@ yyerrhandler: yylexp = yylexemes + save->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base); - memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base); memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -1006,7 +1016,7 @@ yyerrhandler: yylloc = yylpp[-1]; #endif yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base); - memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base); memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -1028,7 +1038,7 @@ yyerrhandler: #endif #if !YYBTYACC - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: #endif ++yynerrs; @@ -1097,7 +1107,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n", YYDEBUGSTR, yydepth, yystate, yychar, yys); } @@ -1213,7 +1223,7 @@ case 9: #line 89 "btyacc_destroy3.y" { yyval.nlist = yystack.l_mark[-5].nlist; } break; -#line 1217 "btyacc_destroy3.tab.c" +#line 1227 "btyacc_destroy3.tab.c" default: break; } @@ -1301,12 +1311,11 @@ break; } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; - fprintf(stderr, "%s[%d]: state %d, reading %d (%s)\n", + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; + fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n", YYDEBUGSTR, yydepth, YYFINAL, yychar, yys); } #endif @@ -1333,7 +1342,7 @@ break; } #endif if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yyloc; @@ -1368,7 +1377,7 @@ yyvalid: yylexp = yylexemes + yypath->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base); - memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base); memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) diff --git a/test/btyacc/calc.tab.c b/test/btyacc/calc.tab.c index d0df560..03d5236 100644 --- a/test/btyacc/calc.tab.c +++ b/test/btyacc/calc.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 @@ -396,9 +396,9 @@ do \ typedef struct { unsigned stacksize; - short *s_base; - short *s_mark; - short *s_last; + YYINT *s_base; + YYINT *s_mark; + YYINT *s_last; YYSTYPE *l_base; YYSTYPE *l_mark; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -511,18 +511,18 @@ yylex(void) #endif /* YYBTYACC */ #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif -#include <stdlib.h> /* needed for malloc, etc */ -#include <string.h> /* needed for memset */ +#include <stdlib.h> /* needed for malloc, etc */ +#include <string.h> /* needed for memset */ /* allocate initial stack or double stack size, up to YYMAXDEPTH */ static int yygrowstack(YYSTACKDATA *data) { int i; unsigned newsize; - short *newss; + YYINT *newss; YYSTYPE *newvs; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) YYLTYPE *newps; @@ -536,7 +536,7 @@ static int yygrowstack(YYSTACKDATA *data) newsize = YYMAXDEPTH; i = (int) (data->s_mark - data->s_base); - newss = (short *)realloc(data->s_base, newsize * sizeof(*newss)); + newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss)); if (newss == 0) return YYENOMEM; @@ -600,7 +600,7 @@ yyNewState(unsigned size) #endif return p; } - p->yystack.s_base = (short *) malloc(size * sizeof(short)); + p->yystack.s_base = (YYINT *) malloc(size * sizeof(YYINT)); if (p->yystack.s_base == NULL) return NULL; p->yystack.l_base = (YYSTYPE *) malloc(size * sizeof(YYSTYPE)); if (p->yystack.l_base == NULL) return NULL; @@ -660,6 +660,8 @@ YYPARSE_DECL() yyps = yyNewState(0); if (yyps == 0) goto yyenomem; yyps->save = 0; #endif /* YYBTYACC */ + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -733,11 +735,10 @@ yyloop: } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)", YYDEBUGSTR, yydepth, yystate, yychar, yys); #ifdef YYSTYPE_TOSTRING @@ -796,7 +797,7 @@ yyloop: save->state = yystate; save->errflag = yyerrflag; save->yystack.s_mark = save->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); save->yystack.l_mark = save->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -877,7 +878,7 @@ yyloop: if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yyctable[ctry]; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yylval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yylloc; @@ -923,9 +924,18 @@ yyloop: yynewerrflag = 1; goto yyerrhandler; - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: + /* explicit YYERROR from an action -- pop the rhs of the rule reduced + * before looking for error recovery */ + yystack.s_mark -= yym; + yystate = *yystack.s_mark; + yystack.l_mark -= yym; +#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) + yystack.p_mark -= yym; +#endif + yynewerrflag = 0; yyerrhandler: while (yyps->save) @@ -950,7 +960,7 @@ yyerrhandler: yyerrctx->state = yystate; yyerrctx->errflag = yyerrflag; yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -966,7 +976,7 @@ yyerrhandler: yylexp = yylexemes + save->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base); - memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base); memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -1001,7 +1011,7 @@ yyerrhandler: yylloc = yylpp[-1]; #endif yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base); - memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base); memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -1023,7 +1033,7 @@ yyerrhandler: #endif #if !YYBTYACC - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: #endif ++yynerrs; @@ -1092,7 +1102,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n", YYDEBUGSTR, yydepth, yystate, yychar, yys); } @@ -1219,7 +1229,7 @@ case 18: #line 63 "calc.y" { yyval = base * yystack.l_mark[-1] + yystack.l_mark[0]; } break; -#line 1223 "calc.tab.c" +#line 1233 "calc.tab.c" default: break; } @@ -1307,12 +1317,11 @@ break; } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; - fprintf(stderr, "%s[%d]: state %d, reading %d (%s)\n", + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; + fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n", YYDEBUGSTR, yydepth, YYFINAL, yychar, yys); } #endif @@ -1339,7 +1348,7 @@ break; } #endif if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yyloc; @@ -1374,7 +1383,7 @@ yyvalid: yylexp = yylexemes + yypath->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base); - memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base); memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) diff --git a/test/btyacc/calc1.tab.c b/test/btyacc/calc1.tab.c index 78fb73f..4046fd3 100644 --- a/test/btyacc/calc1.tab.c +++ b/test/btyacc/calc1.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 @@ -143,13 +143,13 @@ int dcheck(INTERVAL); double dreg[26]; INTERVAL vreg[26]; -#line 31 "calc1.y" #ifdef YYSTYPE #undef YYSTYPE_IS_DECLARED #define YYSTYPE_IS_DECLARED 1 #endif #ifndef YYSTYPE_IS_DECLARED #define YYSTYPE_IS_DECLARED 1 +#line 31 "calc1.y" typedef union { int ival; @@ -451,9 +451,9 @@ do \ typedef struct { unsigned stacksize; - short *s_base; - short *s_mark; - short *s_last; + YYINT *s_base; + YYINT *s_mark; + YYINT *s_last; YYSTYPE *l_base; YYSTYPE *l_mark; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -655,18 +655,18 @@ vdiv(double a, double b, INTERVAL v) #endif /* YYBTYACC */ #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif -#include <stdlib.h> /* needed for malloc, etc */ -#include <string.h> /* needed for memset */ +#include <stdlib.h> /* needed for malloc, etc */ +#include <string.h> /* needed for memset */ /* allocate initial stack or double stack size, up to YYMAXDEPTH */ static int yygrowstack(YYSTACKDATA *data) { int i; unsigned newsize; - short *newss; + YYINT *newss; YYSTYPE *newvs; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) YYLTYPE *newps; @@ -680,7 +680,7 @@ static int yygrowstack(YYSTACKDATA *data) newsize = YYMAXDEPTH; i = (int) (data->s_mark - data->s_base); - newss = (short *)realloc(data->s_base, newsize * sizeof(*newss)); + newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss)); if (newss == 0) return YYENOMEM; @@ -744,7 +744,7 @@ yyNewState(unsigned size) #endif return p; } - p->yystack.s_base = (short *) malloc(size * sizeof(short)); + p->yystack.s_base = (YYINT *) malloc(size * sizeof(YYINT)); if (p->yystack.s_base == NULL) return NULL; p->yystack.l_base = (YYSTYPE *) malloc(size * sizeof(YYSTYPE)); if (p->yystack.l_base == NULL) return NULL; @@ -804,6 +804,8 @@ YYPARSE_DECL() yyps = yyNewState(0); if (yyps == 0) goto yyenomem; yyps->save = 0; #endif /* YYBTYACC */ + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -877,11 +879,10 @@ yyloop: } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)", YYDEBUGSTR, yydepth, yystate, yychar, yys); #ifdef YYSTYPE_TOSTRING @@ -940,7 +941,7 @@ yyloop: save->state = yystate; save->errflag = yyerrflag; save->yystack.s_mark = save->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); save->yystack.l_mark = save->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -1021,7 +1022,7 @@ yyloop: if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yyctable[ctry]; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yylval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yylloc; @@ -1067,9 +1068,18 @@ yyloop: yynewerrflag = 1; goto yyerrhandler; - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: + /* explicit YYERROR from an action -- pop the rhs of the rule reduced + * before looking for error recovery */ + yystack.s_mark -= yym; + yystate = *yystack.s_mark; + yystack.l_mark -= yym; +#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) + yystack.p_mark -= yym; +#endif + yynewerrflag = 0; yyerrhandler: while (yyps->save) @@ -1094,7 +1104,7 @@ yyerrhandler: yyerrctx->state = yystate; yyerrctx->errflag = yyerrflag; yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -1110,7 +1120,7 @@ yyerrhandler: yylexp = yylexemes + save->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base); - memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base); memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -1145,7 +1155,7 @@ yyerrhandler: yylloc = yylpp[-1]; #endif yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base); - memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base); memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -1167,7 +1177,7 @@ yyerrhandler: #endif #if !YYBTYACC - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: #endif ++yynerrs; @@ -1236,7 +1246,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n", YYDEBUGSTR, yydepth, yystate, yychar, yys); } @@ -1466,7 +1476,7 @@ case 28: yyval.vval = yystack.l_mark[-1].vval; } break; -#line 1470 "calc1.tab.c" +#line 1480 "calc1.tab.c" default: break; } @@ -1554,12 +1564,11 @@ break; } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; - fprintf(stderr, "%s[%d]: state %d, reading %d (%s)\n", + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; + fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n", YYDEBUGSTR, yydepth, YYFINAL, yychar, yys); } #endif @@ -1586,7 +1595,7 @@ break; } #endif if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yyloc; @@ -1621,7 +1630,7 @@ yyvalid: yylexp = yylexemes + yypath->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base); - memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base); memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) diff --git a/test/btyacc/calc2.tab.c b/test/btyacc/calc2.tab.c index 68ffc38..99c381e 100644 --- a/test/btyacc/calc2.tab.c +++ b/test/btyacc/calc2.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 @@ -398,9 +398,9 @@ do \ typedef struct { unsigned stacksize; - short *s_base; - short *s_mark; - short *s_last; + YYINT *s_base; + YYINT *s_mark; + YYINT *s_last; YYSTYPE *l_base; YYSTYPE *l_mark; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -524,18 +524,18 @@ YYLEX_DECL() #endif /* YYBTYACC */ #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif -#include <stdlib.h> /* needed for malloc, etc */ -#include <string.h> /* needed for memset */ +#include <stdlib.h> /* needed for malloc, etc */ +#include <string.h> /* needed for memset */ /* allocate initial stack or double stack size, up to YYMAXDEPTH */ static int yygrowstack(YYSTACKDATA *data) { int i; unsigned newsize; - short *newss; + YYINT *newss; YYSTYPE *newvs; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) YYLTYPE *newps; @@ -549,7 +549,7 @@ static int yygrowstack(YYSTACKDATA *data) newsize = YYMAXDEPTH; i = (int) (data->s_mark - data->s_base); - newss = (short *)realloc(data->s_base, newsize * sizeof(*newss)); + newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss)); if (newss == 0) return YYENOMEM; @@ -613,7 +613,7 @@ yyNewState(unsigned size) #endif return p; } - p->yystack.s_base = (short *) malloc(size * sizeof(short)); + p->yystack.s_base = (YYINT *) malloc(size * sizeof(YYINT)); if (p->yystack.s_base == NULL) return NULL; p->yystack.l_base = (YYSTYPE *) malloc(size * sizeof(YYSTYPE)); if (p->yystack.l_base == NULL) return NULL; @@ -673,6 +673,8 @@ YYPARSE_DECL() yyps = yyNewState(0); if (yyps == 0) goto yyenomem; yyps->save = 0; #endif /* YYBTYACC */ + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -746,11 +748,10 @@ yyloop: } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)", YYDEBUGSTR, yydepth, yystate, yychar, yys); #ifdef YYSTYPE_TOSTRING @@ -809,7 +810,7 @@ yyloop: save->state = yystate; save->errflag = yyerrflag; save->yystack.s_mark = save->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); save->yystack.l_mark = save->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -890,7 +891,7 @@ yyloop: if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yyctable[ctry]; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yylval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yylloc; @@ -936,9 +937,18 @@ yyloop: yynewerrflag = 1; goto yyerrhandler; - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: + /* explicit YYERROR from an action -- pop the rhs of the rule reduced + * before looking for error recovery */ + yystack.s_mark -= yym; + yystate = *yystack.s_mark; + yystack.l_mark -= yym; +#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) + yystack.p_mark -= yym; +#endif + yynewerrflag = 0; yyerrhandler: while (yyps->save) @@ -963,7 +973,7 @@ yyerrhandler: yyerrctx->state = yystate; yyerrctx->errflag = yyerrflag; yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -979,7 +989,7 @@ yyerrhandler: yylexp = yylexemes + save->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base); - memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base); memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -1014,7 +1024,7 @@ yyerrhandler: yylloc = yylpp[-1]; #endif yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base); - memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base); memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -1036,7 +1046,7 @@ yyerrhandler: #endif #if !YYBTYACC - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: #endif ++yynerrs; @@ -1105,7 +1115,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n", YYDEBUGSTR, yydepth, yystate, yychar, yys); } @@ -1232,7 +1242,7 @@ case 18: #line 70 "calc2.y" { yyval = (*base) * yystack.l_mark[-1] + yystack.l_mark[0]; } break; -#line 1236 "calc2.tab.c" +#line 1246 "calc2.tab.c" default: break; } @@ -1320,12 +1330,11 @@ break; } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; - fprintf(stderr, "%s[%d]: state %d, reading %d (%s)\n", + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; + fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n", YYDEBUGSTR, yydepth, YYFINAL, yychar, yys); } #endif @@ -1352,7 +1361,7 @@ break; } #endif if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yyloc; @@ -1387,7 +1396,7 @@ yyvalid: yylexp = yylexemes + yypath->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base); - memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base); memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) diff --git a/test/btyacc/calc3.tab.c b/test/btyacc/calc3.tab.c index c9ca77f..b3ba798 100644 --- a/test/btyacc/calc3.tab.c +++ b/test/btyacc/calc3.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 @@ -394,9 +394,9 @@ do \ typedef struct { unsigned stacksize; - short *s_base; - short *s_mark; - short *s_last; + YYINT *s_base; + YYINT *s_mark; + YYINT *s_last; YYSTYPE *l_base; YYSTYPE *l_mark; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -479,18 +479,18 @@ YYLEX_DECL() #endif /* YYBTYACC */ #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif -#include <stdlib.h> /* needed for malloc, etc */ -#include <string.h> /* needed for memset */ +#include <stdlib.h> /* needed for malloc, etc */ +#include <string.h> /* needed for memset */ /* allocate initial stack or double stack size, up to YYMAXDEPTH */ static int yygrowstack(YYSTACKDATA *data) { int i; unsigned newsize; - short *newss; + YYINT *newss; YYSTYPE *newvs; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) YYLTYPE *newps; @@ -504,7 +504,7 @@ static int yygrowstack(YYSTACKDATA *data) newsize = YYMAXDEPTH; i = (int) (data->s_mark - data->s_base); - newss = (short *)realloc(data->s_base, newsize * sizeof(*newss)); + newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss)); if (newss == 0) return YYENOMEM; @@ -568,7 +568,7 @@ yyNewState(unsigned size) #endif return p; } - p->yystack.s_base = (short *) malloc(size * sizeof(short)); + p->yystack.s_base = (YYINT *) malloc(size * sizeof(YYINT)); if (p->yystack.s_base == NULL) return NULL; p->yystack.l_base = (YYSTYPE *) malloc(size * sizeof(YYSTYPE)); if (p->yystack.l_base == NULL) return NULL; @@ -678,6 +678,8 @@ YYPARSE_DECL() yyps = yyNewState(0); if (yyps == 0) goto yyenomem; yyps->save = 0; #endif /* YYBTYACC */ + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -751,11 +753,10 @@ yyloop: } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)", YYDEBUGSTR, yydepth, yystate, yychar, yys); #ifdef YYSTYPE_TOSTRING @@ -814,7 +815,7 @@ yyloop: save->state = yystate; save->errflag = yyerrflag; save->yystack.s_mark = save->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); save->yystack.l_mark = save->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -895,7 +896,7 @@ yyloop: if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yyctable[ctry]; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yylval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yylloc; @@ -941,9 +942,18 @@ yyloop: yynewerrflag = 1; goto yyerrhandler; - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: + /* explicit YYERROR from an action -- pop the rhs of the rule reduced + * before looking for error recovery */ + yystack.s_mark -= yym; + yystate = *yystack.s_mark; + yystack.l_mark -= yym; +#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) + yystack.p_mark -= yym; +#endif + yynewerrflag = 0; yyerrhandler: while (yyps->save) @@ -968,7 +978,7 @@ yyerrhandler: yyerrctx->state = yystate; yyerrctx->errflag = yyerrflag; yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -984,7 +994,7 @@ yyerrhandler: yylexp = yylexemes + save->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base); - memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base); memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -1019,7 +1029,7 @@ yyerrhandler: yylloc = yylpp[-1]; #endif yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base); - memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base); memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -1041,7 +1051,7 @@ yyerrhandler: #endif #if !YYBTYACC - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: #endif ++yynerrs; @@ -1110,7 +1120,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n", YYDEBUGSTR, yydepth, yystate, yychar, yys); } @@ -1237,7 +1247,7 @@ case 18: #line 73 "calc3.y" { yyval = (*base) * yystack.l_mark[-1] + yystack.l_mark[0]; } break; -#line 1241 "calc3.tab.c" +#line 1251 "calc3.tab.c" default: break; } @@ -1325,12 +1335,11 @@ break; } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; - fprintf(stderr, "%s[%d]: state %d, reading %d (%s)\n", + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; + fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n", YYDEBUGSTR, yydepth, YYFINAL, yychar, yys); } #endif @@ -1357,7 +1366,7 @@ break; } #endif if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yyloc; @@ -1392,7 +1401,7 @@ yyvalid: yylexp = yylexemes + yypath->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base); - memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base); memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) diff --git a/test/btyacc/code_calc.code.c b/test/btyacc/code_calc.code.c index 1c08290..a7d322a 100644 --- a/test/btyacc/code_calc.code.c +++ b/test/btyacc/code_calc.code.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 @@ -117,7 +117,7 @@ #define YYPURE 0 -#line 2 "code_calc.y" +#line 4 "code_calc.y" # include <stdio.h> # include <ctype.h> @@ -170,6 +170,8 @@ typedef int YYSTYPE; #define LETTER 258 #define UMINUS 259 #define YYERRCODE 256 +#undef yytname +#define yytname yyname #define YYTABLESIZE 220 #define YYFINAL 1 #ifndef YYDEBUG @@ -198,8 +200,10 @@ extern const YYINT yycheck[]; extern const YYINT yyctable[]; #endif /* YYBTYACC */ -#if YYDEBUG +#if YYDEBUG || defined(yytname) extern const char *const yyname[]; +#endif +#if YYDEBUG extern const char *const yyrule[]; #endif @@ -263,9 +267,9 @@ do \ typedef struct { unsigned stacksize; - short *s_base; - short *s_mark; - short *s_last; + YYINT *s_base; + YYINT *s_mark; + YYINT *s_last; YYSTYPE *l_base; YYSTYPE *l_mark; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -327,7 +331,7 @@ static short *yylexp = 0; static short *yylexemes = 0; #endif /* YYBTYACC */ -#line 68 "code_calc.y" +#line 70 "code_calc.y" /* start of programs */ #ifdef YYBYACC @@ -373,7 +377,7 @@ yylex(void) } return( c ); } -#line 377 "code_calc.code.c" +#line 381 "code_calc.code.c" /* For use in generated program */ #define yydepth (int)(yystack.s_mark - yystack.s_base) @@ -382,18 +386,18 @@ yylex(void) #endif /* YYBTYACC */ #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif -#include <stdlib.h> /* needed for malloc, etc */ -#include <string.h> /* needed for memset */ +#include <stdlib.h> /* needed for malloc, etc */ +#include <string.h> /* needed for memset */ /* allocate initial stack or double stack size, up to YYMAXDEPTH */ static int yygrowstack(YYSTACKDATA *data) { int i; unsigned newsize; - short *newss; + YYINT *newss; YYSTYPE *newvs; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) YYLTYPE *newps; @@ -407,7 +411,7 @@ static int yygrowstack(YYSTACKDATA *data) newsize = YYMAXDEPTH; i = (int) (data->s_mark - data->s_base); - newss = (short *)realloc(data->s_base, newsize * sizeof(*newss)); + newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss)); if (newss == 0) return YYENOMEM; @@ -471,7 +475,7 @@ yyNewState(unsigned size) #endif return p; } - p->yystack.s_base = (short *) malloc(size * sizeof(short)); + p->yystack.s_base = (YYINT *) malloc(size * sizeof(YYINT)); if (p->yystack.s_base == NULL) return NULL; p->yystack.l_base = (YYSTYPE *) malloc(size * sizeof(YYSTYPE)); if (p->yystack.l_base == NULL) return NULL; @@ -531,6 +535,8 @@ YYPARSE_DECL() yyps = yyNewState(0); if (yyps == 0) goto yyenomem; yyps->save = 0; #endif /* YYBTYACC */ + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -604,11 +610,10 @@ yyloop: } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)", YYDEBUGSTR, yydepth, yystate, yychar, yys); #ifdef YYSTYPE_TOSTRING @@ -667,7 +672,7 @@ yyloop: save->state = yystate; save->errflag = yyerrflag; save->yystack.s_mark = save->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); save->yystack.l_mark = save->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -748,7 +753,7 @@ yyloop: if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yyctable[ctry]; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yylval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yylloc; @@ -794,9 +799,18 @@ yyloop: yynewerrflag = 1; goto yyerrhandler; - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: + /* explicit YYERROR from an action -- pop the rhs of the rule reduced + * before looking for error recovery */ + yystack.s_mark -= yym; + yystate = *yystack.s_mark; + yystack.l_mark -= yym; +#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) + yystack.p_mark -= yym; +#endif + yynewerrflag = 0; yyerrhandler: while (yyps->save) @@ -821,7 +835,7 @@ yyerrhandler: yyerrctx->state = yystate; yyerrctx->errflag = yyerrflag; yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -837,7 +851,7 @@ yyerrhandler: yylexp = yylexemes + save->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base); - memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base); memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -872,7 +886,7 @@ yyerrhandler: yylloc = yylpp[-1]; #endif yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base); - memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base); memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -894,7 +908,7 @@ yyerrhandler: #endif #if !YYBTYACC - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: #endif ++yynerrs; @@ -963,7 +977,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n", YYDEBUGSTR, yydepth, yystate, yychar, yys); } @@ -1031,66 +1045,66 @@ yyreduce: switch (yyn) { case 3: -#line 30 "code_calc.y" +#line 32 "code_calc.y" { yyerrok ; } break; case 4: -#line 34 "code_calc.y" +#line 36 "code_calc.y" { printf("%d\n",yystack.l_mark[0]);} break; case 5: -#line 36 "code_calc.y" +#line 38 "code_calc.y" { regs[yystack.l_mark[-2]] = yystack.l_mark[0]; } break; case 6: -#line 40 "code_calc.y" +#line 42 "code_calc.y" { yyval = yystack.l_mark[-1]; } break; case 7: -#line 42 "code_calc.y" +#line 44 "code_calc.y" { yyval = yystack.l_mark[-2] + yystack.l_mark[0]; } break; case 8: -#line 44 "code_calc.y" +#line 46 "code_calc.y" { yyval = yystack.l_mark[-2] - yystack.l_mark[0]; } break; case 9: -#line 46 "code_calc.y" +#line 48 "code_calc.y" { yyval = yystack.l_mark[-2] * yystack.l_mark[0]; } break; case 10: -#line 48 "code_calc.y" +#line 50 "code_calc.y" { yyval = yystack.l_mark[-2] / yystack.l_mark[0]; } break; case 11: -#line 50 "code_calc.y" +#line 52 "code_calc.y" { yyval = yystack.l_mark[-2] % yystack.l_mark[0]; } break; case 12: -#line 52 "code_calc.y" +#line 54 "code_calc.y" { yyval = yystack.l_mark[-2] & yystack.l_mark[0]; } break; case 13: -#line 54 "code_calc.y" +#line 56 "code_calc.y" { yyval = yystack.l_mark[-2] | yystack.l_mark[0]; } break; case 14: -#line 56 "code_calc.y" +#line 58 "code_calc.y" { yyval = - yystack.l_mark[0]; } break; case 15: -#line 58 "code_calc.y" +#line 60 "code_calc.y" { yyval = regs[yystack.l_mark[0]]; } break; case 17: -#line 63 "code_calc.y" +#line 65 "code_calc.y" { yyval = yystack.l_mark[0]; base = (yystack.l_mark[0]==0) ? 8 : 10; } break; case 18: -#line 65 "code_calc.y" +#line 67 "code_calc.y" { yyval = base * yystack.l_mark[-1] + yystack.l_mark[0]; } break; -#line 1094 "code_calc.code.c" +#line 1108 "code_calc.code.c" default: break; } @@ -1178,12 +1192,11 @@ break; } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; - fprintf(stderr, "%s[%d]: state %d, reading %d (%s)\n", + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; + fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n", YYDEBUGSTR, yydepth, YYFINAL, yychar, yys); } #endif @@ -1210,7 +1223,7 @@ break; } #endif if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yyloc; @@ -1245,7 +1258,7 @@ yyvalid: yylexp = yylexemes + yypath->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base); - memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base); memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) diff --git a/test/btyacc/code_calc.tab.c b/test/btyacc/code_calc.tab.c index 876b1dc..0de2897 100644 --- a/test/btyacc/code_calc.tab.c +++ b/test/btyacc/code_calc.tab.c @@ -125,7 +125,6 @@ const YYINT calc_ctable[] = { -1, #ifndef YYDEBUG #define YYDEBUG 0 #endif -#if YYDEBUG const char *const calc_name[] = { "$end",0,0,0,0,0,0,0,0,0,"'\\n'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, @@ -138,6 +137,7 @@ const char *const calc_name[] = { 0,0,"error","DIGIT","LETTER","UMINUS","$accept","list","stat","expr","number", "illegal-symbol", }; +#if YYDEBUG const char *const calc_rule[] = { "$accept : list", "list :", diff --git a/test/btyacc/code_calc.tab.h b/test/btyacc/code_calc.tab.h index 48f8993..0b129da 100644 --- a/test/btyacc/code_calc.tab.h +++ b/test/btyacc/code_calc.tab.h @@ -4,5 +4,7 @@ #define DIGIT 257 #define LETTER 258 #define UMINUS 259 +#undef yytname +#define yytname yyname #endif /* _calc__defines_h_ */ diff --git a/test/btyacc/code_error.code.c b/test/btyacc/code_error.code.c index 883e3ab..f9ccb5a 100644 --- a/test/btyacc/code_error.code.c +++ b/test/btyacc/code_error.code.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 @@ -190,8 +190,10 @@ extern const YYINT yycheck[]; extern const YYINT yyctable[]; #endif /* YYBTYACC */ -#if YYDEBUG +#if YYDEBUG || defined(yytname) extern const char *const yyname[]; +#endif +#if YYDEBUG extern const char *const yyrule[]; #endif @@ -255,9 +257,9 @@ do \ typedef struct { unsigned stacksize; - short *s_base; - short *s_mark; - short *s_last; + YYINT *s_base; + YYINT *s_mark; + YYINT *s_last; YYSTYPE *l_base; YYSTYPE *l_mark; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -345,7 +347,7 @@ yyerror(const char* s) { printf("%s\n", s); } -#line 349 "code_error.code.c" +#line 351 "code_error.code.c" /* For use in generated program */ #define yydepth (int)(yystack.s_mark - yystack.s_base) @@ -354,18 +356,18 @@ yyerror(const char* s) #endif /* YYBTYACC */ #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif -#include <stdlib.h> /* needed for malloc, etc */ -#include <string.h> /* needed for memset */ +#include <stdlib.h> /* needed for malloc, etc */ +#include <string.h> /* needed for memset */ /* allocate initial stack or double stack size, up to YYMAXDEPTH */ static int yygrowstack(YYSTACKDATA *data) { int i; unsigned newsize; - short *newss; + YYINT *newss; YYSTYPE *newvs; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) YYLTYPE *newps; @@ -379,7 +381,7 @@ static int yygrowstack(YYSTACKDATA *data) newsize = YYMAXDEPTH; i = (int) (data->s_mark - data->s_base); - newss = (short *)realloc(data->s_base, newsize * sizeof(*newss)); + newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss)); if (newss == 0) return YYENOMEM; @@ -443,7 +445,7 @@ yyNewState(unsigned size) #endif return p; } - p->yystack.s_base = (short *) malloc(size * sizeof(short)); + p->yystack.s_base = (YYINT *) malloc(size * sizeof(YYINT)); if (p->yystack.s_base == NULL) return NULL; p->yystack.l_base = (YYSTYPE *) malloc(size * sizeof(YYSTYPE)); if (p->yystack.l_base == NULL) return NULL; @@ -503,6 +505,8 @@ YYPARSE_DECL() yyps = yyNewState(0); if (yyps == 0) goto yyenomem; yyps->save = 0; #endif /* YYBTYACC */ + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -576,11 +580,10 @@ yyloop: } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)", YYDEBUGSTR, yydepth, yystate, yychar, yys); #ifdef YYSTYPE_TOSTRING @@ -639,7 +642,7 @@ yyloop: save->state = yystate; save->errflag = yyerrflag; save->yystack.s_mark = save->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); save->yystack.l_mark = save->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -720,7 +723,7 @@ yyloop: if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yyctable[ctry]; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yylval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yylloc; @@ -766,9 +769,18 @@ yyloop: yynewerrflag = 1; goto yyerrhandler; - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: + /* explicit YYERROR from an action -- pop the rhs of the rule reduced + * before looking for error recovery */ + yystack.s_mark -= yym; + yystate = *yystack.s_mark; + yystack.l_mark -= yym; +#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) + yystack.p_mark -= yym; +#endif + yynewerrflag = 0; yyerrhandler: while (yyps->save) @@ -793,7 +805,7 @@ yyerrhandler: yyerrctx->state = yystate; yyerrctx->errflag = yyerrflag; yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -809,7 +821,7 @@ yyerrhandler: yylexp = yylexemes + save->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base); - memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base); memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -844,7 +856,7 @@ yyerrhandler: yylloc = yylpp[-1]; #endif yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base); - memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base); memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -866,7 +878,7 @@ yyerrhandler: #endif #if !YYBTYACC - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: #endif ++yynerrs; @@ -935,7 +947,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n", YYDEBUGSTR, yydepth, yystate, yychar, yys); } @@ -1089,12 +1101,11 @@ yyreduce: } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; - fprintf(stderr, "%s[%d]: state %d, reading %d (%s)\n", + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; + fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n", YYDEBUGSTR, yydepth, YYFINAL, yychar, yys); } #endif @@ -1121,7 +1132,7 @@ yyreduce: } #endif if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yyloc; @@ -1156,7 +1167,7 @@ yyvalid: yylexp = yylexemes + yypath->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base); - memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base); memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) diff --git a/test/btyacc/empty.tab.c b/test/btyacc/empty.tab.c index 06ecdcc..da0fbf9 100644 --- a/test/btyacc/empty.tab.c +++ b/test/btyacc/empty.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 @@ -287,9 +287,9 @@ do \ typedef struct { unsigned stacksize; - short *s_base; - short *s_mark; - short *s_last; + YYINT *s_base; + YYINT *s_mark; + YYINT *s_last; YYSTYPE *l_base; YYSTYPE *l_mark; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -373,18 +373,18 @@ YYERROR_DECL() { #endif /* YYBTYACC */ #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif -#include <stdlib.h> /* needed for malloc, etc */ -#include <string.h> /* needed for memset */ +#include <stdlib.h> /* needed for malloc, etc */ +#include <string.h> /* needed for memset */ /* allocate initial stack or double stack size, up to YYMAXDEPTH */ static int yygrowstack(YYSTACKDATA *data) { int i; unsigned newsize; - short *newss; + YYINT *newss; YYSTYPE *newvs; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) YYLTYPE *newps; @@ -398,7 +398,7 @@ static int yygrowstack(YYSTACKDATA *data) newsize = YYMAXDEPTH; i = (int) (data->s_mark - data->s_base); - newss = (short *)realloc(data->s_base, newsize * sizeof(*newss)); + newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss)); if (newss == 0) return YYENOMEM; @@ -462,7 +462,7 @@ yyNewState(unsigned size) #endif return p; } - p->yystack.s_base = (short *) malloc(size * sizeof(short)); + p->yystack.s_base = (YYINT *) malloc(size * sizeof(YYINT)); if (p->yystack.s_base == NULL) return NULL; p->yystack.l_base = (YYSTYPE *) malloc(size * sizeof(YYSTYPE)); if (p->yystack.l_base == NULL) return NULL; @@ -522,6 +522,8 @@ YYPARSE_DECL() yyps = yyNewState(0); if (yyps == 0) goto yyenomem; yyps->save = 0; #endif /* YYBTYACC */ + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -595,11 +597,10 @@ yyloop: } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)", YYDEBUGSTR, yydepth, yystate, yychar, yys); #ifdef YYSTYPE_TOSTRING @@ -658,7 +659,7 @@ yyloop: save->state = yystate; save->errflag = yyerrflag; save->yystack.s_mark = save->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); save->yystack.l_mark = save->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -739,7 +740,7 @@ yyloop: if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yyctable[ctry]; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yylval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yylloc; @@ -785,9 +786,18 @@ yyloop: yynewerrflag = 1; goto yyerrhandler; - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: + /* explicit YYERROR from an action -- pop the rhs of the rule reduced + * before looking for error recovery */ + yystack.s_mark -= yym; + yystate = *yystack.s_mark; + yystack.l_mark -= yym; +#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) + yystack.p_mark -= yym; +#endif + yynewerrflag = 0; yyerrhandler: while (yyps->save) @@ -812,7 +822,7 @@ yyerrhandler: yyerrctx->state = yystate; yyerrctx->errflag = yyerrflag; yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -828,7 +838,7 @@ yyerrhandler: yylexp = yylexemes + save->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base); - memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base); memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -863,7 +873,7 @@ yyerrhandler: yylloc = yylpp[-1]; #endif yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base); - memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base); memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -885,7 +895,7 @@ yyerrhandler: #endif #if !YYBTYACC - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: #endif ++yynerrs; @@ -954,7 +964,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n", YYDEBUGSTR, yydepth, yystate, yychar, yys); } @@ -1108,12 +1118,11 @@ yyreduce: } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; - fprintf(stderr, "%s[%d]: state %d, reading %d (%s)\n", + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; + fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n", YYDEBUGSTR, yydepth, YYFINAL, yychar, yys); } #endif @@ -1140,7 +1149,7 @@ yyreduce: } #endif if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yyloc; @@ -1175,7 +1184,7 @@ yyvalid: yylexp = yylexemes + yypath->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base); - memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base); memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) diff --git a/test/btyacc/err_inherit1.tab.c b/test/btyacc/err_inherit1.tab.c index ac0ad3a..6c35f23 100644 --- a/test/btyacc/err_inherit1.tab.c +++ b/test/btyacc/err_inherit1.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 diff --git a/test/btyacc/err_inherit2.tab.c b/test/btyacc/err_inherit2.tab.c index ac0ad3a..6c35f23 100644 --- a/test/btyacc/err_inherit2.tab.c +++ b/test/btyacc/err_inherit2.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 diff --git a/test/btyacc/err_inherit3.output b/test/btyacc/err_inherit3.output index 16ea531..3a362a9 100644 --- a/test/btyacc/err_inherit3.output +++ b/test/btyacc/err_inherit3.output @@ -5,25 +5,22 @@ 2 $$2 : 3 declaration : class type $$1 $$2 namelist + 4 | type locnamelist - 4 $$3 : + 5 class : GLOBAL + 6 | LOCAL - 5 declaration : type $$3 locnamelist + 7 type : REAL + 8 | INTEGER - 6 class : GLOBAL - 7 | LOCAL + 9 $$3 : - 8 type : REAL - 9 | INTEGER + 10 namelist : $$3 namelist NAME + 11 | NAME - 10 $$4 : + 12 $$4 : - 11 namelist : $$4 namelist NAME - 12 | NAME - - 13 $$5 : - - 14 locnamelist : $$5 $$2 namelist + 13 locnamelist : $$4 $$2 namelist state 0 $accept : . declaration $end (0) @@ -40,27 +37,27 @@ state 0 state 1 - class : GLOBAL . (6) + class : GLOBAL . (5) - . reduce 6 + . reduce 5 state 2 - class : LOCAL . (7) + class : LOCAL . (6) - . reduce 7 + . reduce 6 state 3 - type : REAL . (8) + type : REAL . (7) - . reduce 8 + . reduce 7 state 4 - type : INTEGER . (9) + type : INTEGER . (8) - . reduce 9 + . reduce 8 state 5 @@ -80,12 +77,13 @@ state 6 state 7 - declaration : type . $$3 locnamelist (5) - $$3 : . (4) + declaration : type . locnamelist (4) + $$4 : . (12) - . reduce 4 + . reduce 12 - $$3 goto 9 + locnamelist goto 9 + $$4 goto 10 state 8 @@ -94,118 +92,108 @@ state 8 . reduce 1 - $$1 goto 10 + $$1 goto 11 state 9 - declaration : type $$3 . locnamelist (5) - $$5 : . (13) + declaration : type locnamelist . (4) - . reduce 13 - - locnamelist goto 11 - $$5 goto 12 + . reduce 4 state 10 - declaration : class type $$1 . $$2 namelist (3) + locnamelist : $$4 . $$2 namelist (13) $$2 : . (2) . reduce 2 - $$2 goto 13 + $$2 goto 12 state 11 - declaration : type $$3 locnamelist . (5) + declaration : class type $$1 . $$2 namelist (3) + $$2 : . (2) - . reduce 5 + . reduce 2 + + $$2 goto 13 +12: shift/reduce conflict (shift 14, reduce 9) on NAME state 12 - locnamelist : $$5 . $$2 namelist (14) - $$2 : . (2) + locnamelist : $$4 $$2 . namelist (13) + $$3 : . (9) - . reduce 2 + NAME shift 14 - $$2 goto 14 + namelist goto 15 + $$3 goto 16 -13: shift/reduce conflict (shift 15, reduce 10) on NAME +13: shift/reduce conflict (shift 14, reduce 9) on NAME state 13 declaration : class type $$1 $$2 . namelist (3) - $$4 : . (10) + $$3 : . (9) - NAME shift 15 + NAME shift 14 - namelist goto 16 - $$4 goto 17 + namelist goto 17 + $$3 goto 16 -14: shift/reduce conflict (shift 15, reduce 10) on NAME state 14 - locnamelist : $$5 $$2 . namelist (14) - $$4 : . (10) + namelist : NAME . (11) - NAME shift 15 - - namelist goto 18 - $$4 goto 17 + . reduce 11 state 15 - namelist : NAME . (12) + locnamelist : $$4 $$2 namelist . (13) - . reduce 12 + . reduce 13 +16: shift/reduce conflict (shift 14, reduce 9) on NAME state 16 - declaration : class type $$1 $$2 namelist . (3) + namelist : $$3 . namelist NAME (10) + $$3 : . (9) - . reduce 3 + NAME shift 14 + namelist goto 18 + $$3 goto 16 -17: shift/reduce conflict (shift 15, reduce 10) on NAME -state 17 - namelist : $$4 . namelist NAME (11) - $$4 : . (10) - NAME shift 15 +state 17 + declaration : class type $$1 $$2 namelist . (3) - namelist goto 19 - $$4 goto 17 + . reduce 3 state 18 - locnamelist : $$5 $$2 namelist . (14) - - . reduce 14 + namelist : $$3 namelist . NAME (10) - -state 19 - namelist : $$4 namelist . NAME (11) - - NAME shift 20 + NAME shift 19 . error -state 20 - namelist : $$4 namelist NAME . (11) +state 19 + namelist : $$3 namelist NAME . (10) - . reduce 11 + . reduce 10 Rules never reduced: - $$4 : (10) + $$3 : (9) +State 12 contains 1 shift/reduce conflict. State 13 contains 1 shift/reduce conflict. -State 14 contains 1 shift/reduce conflict. -State 17 contains 1 shift/reduce conflict. +State 16 contains 1 shift/reduce conflict. -7 terminals, 11 nonterminals -15 grammar rules, 21 states +7 terminals, 10 nonterminals +14 grammar rules, 20 states grammar parser grammar symbol# value# symbol @@ -226,4 +214,3 @@ symbol# value# symbol 14 269 $$2 15 270 $$3 16 271 $$4 - 17 272 $$5 diff --git a/test/btyacc/err_inherit3.tab.c b/test/btyacc/err_inherit3.tab.c index 93b2706..6cb563e 100644 --- a/test/btyacc/err_inherit3.tab.c +++ b/test/btyacc/err_inherit3.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 @@ -136,13 +136,13 @@ extern symbol *mksymbol(type t, class c, name id); #define YYLEX_DECL() yylex(void) #define YYERROR_DECL() yyerror(const char *s) #endif -#line 39 "err_inherit3.y" #ifdef YYSTYPE #undef YYSTYPE_IS_DECLARED #define YYSTYPE_IS_DECLARED 1 #endif #ifndef YYSTYPE_IS_DECLARED #define YYSTYPE_IS_DECLARED 1 +#line 39 "err_inherit3.y" typedef union { class cval; @@ -199,53 +199,54 @@ extern int YYPARSE_DECL(); #define YYERRCODE 256 typedef short YYINT; static const YYINT err_inherit3_lhs[] = { -1, - 5, 6, 0, 7, 0, 3, 3, 4, 4, 8, - 1, 1, 9, 2, + 5, 6, 0, 0, 3, 3, 4, 4, 7, 1, + 1, 8, 2, }; static const YYINT err_inherit3_len[] = { 2, - 0, 0, 5, 0, 3, 1, 1, 1, 1, 0, - 3, 1, 0, 3, + 0, 0, 5, 2, 1, 1, 1, 1, 0, 3, + 1, 0, 3, }; static const YYINT err_inherit3_defred[] = { 0, - 6, 7, 8, 9, 0, 0, 4, 1, 13, 2, - 5, 2, 0, 0, 12, 3, 0, 14, 0, 11, + 5, 6, 7, 8, 0, 0, 12, 1, 4, 2, + 2, 0, 0, 11, 13, 0, 3, 0, 10, }; static const YYINT err_inherit3_stos[] = { 0, - 257, 258, 259, 260, 263, 266, 267, 267, 270, 268, - 265, 272, 269, 269, 261, 264, 271, 264, 264, 261, + 257, 258, 259, 260, 263, 266, 267, 267, 265, 271, + 268, 269, 269, 261, 264, 270, 264, 264, 261, }; static const YYINT err_inherit3_dgoto[] = { 5, - 16, 11, 6, 7, 10, 13, 9, 17, 12, + 15, 9, 6, 7, 11, 12, 16, 10, }; static const YYINT err_inherit3_sindex[] = { -257, 0, 0, 0, 0, 0, -254, 0, 0, 0, 0, - 0, 0, -253, -253, 0, 0, -253, 0, -252, 0, + 0, -253, -253, 0, 0, -253, 0, -252, 0, }; static const YYINT err_inherit3_rindex[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, }; #if YYBTYACC static const YYINT err_inherit3_cindex[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, }; #endif static const YYINT err_inherit3_gindex[] = { 0, - -10, 0, 0, 4, 0, -1, 0, 0, 0, + -9, 0, 0, 4, 0, 1, 0, 0, }; -#define YYTABLESIZE 11 +#define YYTABLESIZE 12 static const YYINT err_inherit3_table[] = { 1, - 2, 3, 4, 18, 3, 4, 19, 15, 20, 8, - 14, + 2, 3, 4, 17, 3, 4, 18, 14, 19, 8, + 0, 13, }; static const YYINT err_inherit3_check[] = { 257, - 258, 259, 260, 14, 259, 260, 17, 261, 261, 6, - 12, + 258, 259, 260, 13, 259, 260, 16, 261, 261, 6, + -1, 11, }; #if YYBTYACC static const YYINT err_inherit3_ctable[] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, }; #endif #define YYFINAL 5 @@ -253,7 +254,7 @@ static const YYINT err_inherit3_ctable[] = { -1, #define YYDEBUG 0 #endif #define YYMAXTOKEN 261 -#define YYUNDFTOKEN 273 +#define YYUNDFTOKEN 272 #define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a)) #if YYDEBUG static const char *const err_inherit3_name[] = { @@ -266,24 +267,23 @@ static const char *const err_inherit3_name[] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"error","GLOBAL","LOCAL","REAL","INTEGER", "NAME","$accept","declaration","namelist","locnamelist","class","type","$$1", -"$$2","$$3","$$4","$$5","illegal-symbol", +"$$2","$$3","$$4","illegal-symbol", }; static const char *const err_inherit3_rule[] = { "$accept : declaration", "$$1 :", "$$2 :", "declaration : class type $$1 $$2 namelist", -"$$3 :", -"declaration : type $$3 locnamelist", +"declaration : type locnamelist", "class : GLOBAL", "class : LOCAL", "type : REAL", "type : INTEGER", -"$$4 :", -"namelist : $$4 namelist NAME", +"$$3 :", +"namelist : $$3 namelist NAME", "namelist : NAME", -"$$5 :", -"locnamelist : $$5 $$2 namelist", +"$$4 :", +"locnamelist : $$4 $$2 namelist", }; #endif @@ -348,9 +348,9 @@ do \ typedef struct { unsigned stacksize; - short *s_base; - short *s_mark; - short *s_last; + YYINT *s_base; + YYINT *s_mark; + YYINT *s_last; YYSTYPE *l_base; YYSTYPE *l_mark; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -473,18 +473,18 @@ YYDESTRUCT_DECL() #endif /* YYBTYACC */ #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif -#include <stdlib.h> /* needed for malloc, etc */ -#include <string.h> /* needed for memset */ +#include <stdlib.h> /* needed for malloc, etc */ +#include <string.h> /* needed for memset */ /* allocate initial stack or double stack size, up to YYMAXDEPTH */ static int yygrowstack(YYSTACKDATA *data) { int i; unsigned newsize; - short *newss; + YYINT *newss; YYSTYPE *newvs; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) YYLTYPE *newps; @@ -498,7 +498,7 @@ static int yygrowstack(YYSTACKDATA *data) newsize = YYMAXDEPTH; i = (int) (data->s_mark - data->s_base); - newss = (short *)realloc(data->s_base, newsize * sizeof(*newss)); + newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss)); if (newss == 0) return YYENOMEM; @@ -562,7 +562,7 @@ yyNewState(unsigned size) #endif return p; } - p->yystack.s_base = (short *) malloc(size * sizeof(short)); + p->yystack.s_base = (YYINT *) malloc(size * sizeof(YYINT)); if (p->yystack.s_base == NULL) return NULL; p->yystack.l_base = (YYSTYPE *) malloc(size * sizeof(YYSTYPE)); if (p->yystack.l_base == NULL) return NULL; @@ -622,6 +622,8 @@ YYPARSE_DECL() yyps = yyNewState(0); if (yyps == 0) goto yyenomem; yyps->save = 0; #endif /* YYBTYACC */ + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -695,11 +697,10 @@ yyloop: } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)", YYDEBUGSTR, yydepth, yystate, yychar, yys); #ifdef YYSTYPE_TOSTRING @@ -758,7 +759,7 @@ yyloop: save->state = yystate; save->errflag = yyerrflag; save->yystack.s_mark = save->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); save->yystack.l_mark = save->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -839,7 +840,7 @@ yyloop: if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yyctable[ctry]; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yylval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yylloc; @@ -885,9 +886,18 @@ yyloop: yynewerrflag = 1; goto yyerrhandler; - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: + /* explicit YYERROR from an action -- pop the rhs of the rule reduced + * before looking for error recovery */ + yystack.s_mark -= yym; + yystate = *yystack.s_mark; + yystack.l_mark -= yym; +#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) + yystack.p_mark -= yym; +#endif + yynewerrflag = 0; yyerrhandler: while (yyps->save) @@ -912,7 +922,7 @@ yyerrhandler: yyerrctx->state = yystate; yyerrctx->errflag = yyerrflag; yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -928,7 +938,7 @@ yyerrhandler: yylexp = yylexemes + save->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base); - memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base); memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -963,7 +973,7 @@ yyerrhandler: yylloc = yylpp[-1]; #endif yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base); - memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base); memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -985,7 +995,7 @@ yyerrhandler: #endif #if !YYBTYACC - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: #endif ++yynerrs; @@ -1054,7 +1064,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n", YYDEBUGSTR, yydepth, yystate, yychar, yys); } @@ -1134,54 +1144,50 @@ case 3: { yyval.nlist = yystack.l_mark[0].nlist; } break; case 4: -#line 52 "err_inherit3.y" -yyval.tval = yystack.l_mark[0].tval; -break; -case 5: #line 53 "err_inherit3.y" { yyval.nlist = yystack.l_mark[0].nlist; } break; -case 6: +case 5: #line 56 "err_inherit3.y" { yyval.cval = cGLOBAL; } break; -case 7: +case 6: #line 57 "err_inherit3.y" { yyval.cval = cLOCAL; } break; -case 8: +case 7: #line 60 "err_inherit3.y" { yyval.tval = tREAL; } break; -case 9: +case 8: #line 61 "err_inherit3.y" { yyval.tval = tINTEGER; } break; -case 10: +case 9: #line 64 "err_inherit3.y" yyval.cval = yystack.l_mark[-2]; break; -case 11: +case 10: #line 65 "err_inherit3.y" { yyval.nlist->s = mksymbol(yystack.l_mark[-5].tval, yystack.l_mark[-5].cval, yystack.l_mark[0].id); yyval.nlist->next = yystack.l_mark[-1].nlist; } break; -case 12: +case 11: #line 69 "err_inherit3.y" { yyval.nlist->s = mksymbol(yystack.l_mark[-3], yystack.l_mark[-3], yystack.l_mark[0].id); yyval.nlist->next = NULL; } break; -case 13: +case 12: #line 74 "err_inherit3.y" yyval.cval = cLOCAL; break; -case 14: +case 13: #line 75 "err_inherit3.y" { yyval.nlist = yystack.l_mark[0].nlist; } break; -#line 1185 "err_inherit3.tab.c" +#line 1191 "err_inherit3.tab.c" default: break; } @@ -1269,12 +1275,11 @@ break; } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; - fprintf(stderr, "%s[%d]: state %d, reading %d (%s)\n", + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; + fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n", YYDEBUGSTR, yydepth, YYFINAL, yychar, yys); } #endif @@ -1301,7 +1306,7 @@ break; } #endif if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yyloc; @@ -1336,7 +1341,7 @@ yyvalid: yylexp = yylexemes + yypath->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base); - memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base); memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) diff --git a/test/btyacc/err_inherit4.output b/test/btyacc/err_inherit4.output index f52c287..ef7ccb8 100644 --- a/test/btyacc/err_inherit4.output +++ b/test/btyacc/err_inherit4.output @@ -5,21 +5,18 @@ 2 $$2 : 3 declaration : class type $$1 $$2 namelist + 4 | type locnamelist - 4 $$3 : + 5 class : GLOBAL + 6 | LOCAL - 5 declaration : type $$3 locnamelist + 7 type : REAL + 8 | INTEGER - 6 class : GLOBAL - 7 | LOCAL + 9 namelist : namelist NAME + 10 | NAME - 8 type : REAL - 9 | INTEGER - - 10 namelist : namelist NAME - 11 | NAME - - 12 locnamelist : namelist + 11 locnamelist : namelist state 0 $accept : . declaration $end (0) @@ -36,27 +33,27 @@ state 0 state 1 - class : GLOBAL . (6) + class : GLOBAL . (5) - . reduce 6 + . reduce 5 state 2 - class : LOCAL . (7) + class : LOCAL . (6) - . reduce 7 + . reduce 6 state 3 - type : REAL . (8) + type : REAL . (7) - . reduce 8 + . reduce 7 state 4 - type : INTEGER . (9) + type : INTEGER . (8) - . reduce 9 + . reduce 8 state 5 @@ -76,12 +73,13 @@ state 6 state 7 - declaration : type . $$3 locnamelist (5) - $$3 : . (4) + declaration : type . locnamelist (4) - . reduce 4 + NAME shift 9 + . error - $$3 goto 9 + namelist goto 10 + locnamelist goto 11 state 8 @@ -90,73 +88,63 @@ state 8 . reduce 1 - $$1 goto 10 + $$1 goto 12 state 9 - declaration : type $$3 . locnamelist (5) + namelist : NAME . (10) - NAME shift 11 - . error - - namelist goto 12 - locnamelist goto 13 + . reduce 10 state 10 - declaration : class type $$1 . $$2 namelist (3) - $$2 : . (2) - - . reduce 2 + namelist : namelist . NAME (9) + locnamelist : namelist . (11) - $$2 goto 14 + NAME shift 13 + $end reduce 11 state 11 - namelist : NAME . (11) + declaration : type locnamelist . (4) - . reduce 11 + . reduce 4 state 12 - namelist : namelist . NAME (10) - locnamelist : namelist . (12) + declaration : class type $$1 . $$2 namelist (3) + $$2 : . (2) + + . reduce 2 - NAME shift 15 - $end reduce 12 + $$2 goto 14 state 13 - declaration : type $$3 locnamelist . (5) + namelist : namelist NAME . (9) - . reduce 5 + . reduce 9 state 14 declaration : class type $$1 $$2 . namelist (3) - NAME shift 11 + NAME shift 9 . error - namelist goto 16 + namelist goto 15 state 15 - namelist : namelist NAME . (10) - - . reduce 10 - - -state 16 declaration : class type $$1 $$2 namelist . (3) - namelist : namelist . NAME (10) + namelist : namelist . NAME (9) - NAME shift 15 + NAME shift 13 $end reduce 3 -7 terminals, 9 nonterminals -13 grammar rules, 17 states +7 terminals, 8 nonterminals +12 grammar rules, 16 states grammar parser grammar symbol# value# symbol @@ -175,4 +163,3 @@ symbol# value# symbol 12 267 type 13 268 $$1 14 269 $$2 - 15 270 $$3 diff --git a/test/btyacc/err_inherit4.tab.c b/test/btyacc/err_inherit4.tab.c index 7e8e042..daa6881 100644 --- a/test/btyacc/err_inherit4.tab.c +++ b/test/btyacc/err_inherit4.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 @@ -144,13 +144,13 @@ extern symbol *mksymbol(type t, class c, name id); #define YYLEX_DECL() yylex(void) #define YYERROR_DECL() yyerror(const char *s) #endif -#line 41 "err_inherit4.y" #ifdef YYSTYPE #undef YYSTYPE_IS_DECLARED #define YYSTYPE_IS_DECLARED 1 #endif #ifndef YYSTYPE_IS_DECLARED #define YYSTYPE_IS_DECLARED 1 +#line 41 "err_inherit4.y" typedef union { class cval; @@ -219,44 +219,44 @@ extern int YYPARSE_DECL(); #define YYERRCODE 256 typedef short YYINT; static const YYINT err_inherit4_lhs[] = { -1, - 5, 6, 0, 7, 0, 3, 3, 4, 4, 1, - 1, 2, + 5, 6, 0, 0, 3, 3, 4, 4, 1, 1, + 2, }; static const YYINT err_inherit4_len[] = { 2, - 0, 0, 5, 0, 3, 1, 1, 1, 1, 2, - 1, 1, + 0, 0, 5, 2, 1, 1, 1, 1, 2, 1, + 1, }; static const YYINT err_inherit4_defred[] = { 0, - 6, 7, 8, 9, 0, 0, 4, 1, 0, 2, - 11, 0, 5, 0, 10, 0, + 5, 6, 7, 8, 0, 0, 0, 1, 10, 0, + 4, 2, 9, 0, 0, }; static const YYINT err_inherit4_stos[] = { 0, - 257, 258, 259, 260, 263, 266, 267, 267, 270, 268, - 261, 264, 265, 269, 261, 264, + 257, 258, 259, 260, 263, 266, 267, 267, 261, 264, + 265, 268, 261, 269, 264, }; static const YYINT err_inherit4_dgoto[] = { 5, - 12, 13, 6, 7, 10, 14, 9, + 10, 11, 6, 7, 12, 14, }; static const YYINT err_inherit4_sindex[] = { -257, - 0, 0, 0, 0, 0, -255, 0, 0, -254, 0, - 0, -253, 0, -254, 0, -253, + 0, 0, 0, 0, 0, -255, -254, 0, 0, -253, + 0, 0, 0, -254, -253, }; static const YYINT err_inherit4_rindex[] = { 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 6, 0, 0, 0, 9, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, + 0, 0, 0, 0, 9, }; #if YYBTYACC static const YYINT err_inherit4_cindex[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, }; #endif static const YYINT err_inherit4_gindex[] = { 0, - -4, 0, 0, 5, 0, 0, 0, + -4, 0, 0, 5, 0, 0, }; #define YYTABLESIZE 11 static const YYINT err_inherit4_table[] = { 1, - 2, 3, 4, 3, 4, 12, 11, 15, 3, 16, + 2, 3, 4, 3, 4, 11, 9, 13, 3, 15, 8, }; static const YYINT err_inherit4_check[] = { 257, @@ -273,7 +273,7 @@ static const YYINT err_inherit4_ctable[] = { -1, #define YYDEBUG 0 #endif #define YYMAXTOKEN 261 -#define YYUNDFTOKEN 271 +#define YYUNDFTOKEN 270 #define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a)) #if YYDEBUG static const char *const err_inherit4_name[] = { @@ -286,15 +286,14 @@ static const char *const err_inherit4_name[] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"error","GLOBAL","LOCAL","REAL","INTEGER", "NAME","$accept","declaration","namelist","locnamelist","class","type","$$1", -"$$2","$$3","illegal-symbol", +"$$2","illegal-symbol", }; static const char *const err_inherit4_rule[] = { "$accept : declaration", "$$1 :", "$$2 :", "declaration : class type $$1 $$2 namelist", -"$$3 :", -"declaration : type $$3 locnamelist", +"declaration : type locnamelist", "class : GLOBAL", "class : LOCAL", "type : REAL", @@ -366,9 +365,9 @@ do \ typedef struct { unsigned stacksize; - short *s_base; - short *s_mark; - short *s_last; + YYINT *s_base; + YYINT *s_mark; + YYINT *s_last; YYSTYPE *l_base; YYSTYPE *l_mark; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -434,7 +433,7 @@ static short *yylexemes = 0; extern int YYLEX_DECL(); extern void YYERROR_DECL(); -#line 438 "err_inherit4.tab.c" +#line 437 "err_inherit4.tab.c" /* Release memory associated with symbol. */ #if ! defined YYDESTRUCT_IS_DECLARED @@ -447,17 +446,17 @@ YYDESTRUCT_DECL() #line 28 "err_inherit4.y" { } break; -#line 451 "err_inherit4.tab.c" +#line 450 "err_inherit4.tab.c" case 264: #line 28 "err_inherit4.y" { } break; -#line 456 "err_inherit4.tab.c" +#line 455 "err_inherit4.tab.c" case 265: #line 28 "err_inherit4.y" { } break; -#line 461 "err_inherit4.tab.c" +#line 460 "err_inherit4.tab.c" } } #define YYDESTRUCT_IS_DECLARED 1 @@ -470,18 +469,18 @@ YYDESTRUCT_DECL() #endif /* YYBTYACC */ #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif -#include <stdlib.h> /* needed for malloc, etc */ -#include <string.h> /* needed for memset */ +#include <stdlib.h> /* needed for malloc, etc */ +#include <string.h> /* needed for memset */ /* allocate initial stack or double stack size, up to YYMAXDEPTH */ static int yygrowstack(YYSTACKDATA *data) { int i; unsigned newsize; - short *newss; + YYINT *newss; YYSTYPE *newvs; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) YYLTYPE *newps; @@ -495,7 +494,7 @@ static int yygrowstack(YYSTACKDATA *data) newsize = YYMAXDEPTH; i = (int) (data->s_mark - data->s_base); - newss = (short *)realloc(data->s_base, newsize * sizeof(*newss)); + newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss)); if (newss == 0) return YYENOMEM; @@ -559,7 +558,7 @@ yyNewState(unsigned size) #endif return p; } - p->yystack.s_base = (short *) malloc(size * sizeof(short)); + p->yystack.s_base = (YYINT *) malloc(size * sizeof(YYINT)); if (p->yystack.s_base == NULL) return NULL; p->yystack.l_base = (YYSTYPE *) malloc(size * sizeof(YYSTYPE)); if (p->yystack.l_base == NULL) return NULL; @@ -619,6 +618,8 @@ YYPARSE_DECL() yyps = yyNewState(0); if (yyps == 0) goto yyenomem; yyps->save = 0; #endif /* YYBTYACC */ + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -692,11 +693,10 @@ yyloop: } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)", YYDEBUGSTR, yydepth, yystate, yychar, yys); #ifdef YYSTYPE_TOSTRING @@ -755,7 +755,7 @@ yyloop: save->state = yystate; save->errflag = yyerrflag; save->yystack.s_mark = save->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); save->yystack.l_mark = save->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -836,7 +836,7 @@ yyloop: if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yyctable[ctry]; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yylval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yylloc; @@ -882,9 +882,18 @@ yyloop: yynewerrflag = 1; goto yyerrhandler; - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: + /* explicit YYERROR from an action -- pop the rhs of the rule reduced + * before looking for error recovery */ + yystack.s_mark -= yym; + yystate = *yystack.s_mark; + yystack.l_mark -= yym; +#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) + yystack.p_mark -= yym; +#endif + yynewerrflag = 0; yyerrhandler: while (yyps->save) @@ -909,7 +918,7 @@ yyerrhandler: yyerrctx->state = yystate; yyerrctx->errflag = yyerrflag; yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -925,7 +934,7 @@ yyerrhandler: yylexp = yylexemes + save->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base); - memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base); memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -960,7 +969,7 @@ yyerrhandler: yylloc = yylpp[-1]; #endif yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base); - memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base); memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -982,7 +991,7 @@ yyerrhandler: #endif #if !YYBTYACC - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: #endif ++yynerrs; @@ -1051,7 +1060,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n", YYDEBUGSTR, yydepth, yystate, yychar, yys); } @@ -1128,49 +1137,45 @@ yyval.tval = yystack.l_mark[-1].tval; break; case 3: #line 53 "err_inherit4.y" - { yyval.nlist = yystack.l_mark[0].nlist; } + { yyval.nlist = yystack.l_mark[0].nlist; yyloc = yystack.p_mark[0]; } break; case 4: -#line 54 "err_inherit4.y" -yyval.tval = yystack.l_mark[0].tval; -break; -case 5: #line 55 "err_inherit4.y" - { yyval.nlist = yystack.l_mark[0].nlist; } + { yyval.nlist = yystack.l_mark[0].nlist; yyloc = yystack.p_mark[-3]; } break; -case 6: +case 5: #line 58 "err_inherit4.y" { yyval.cval = cGLOBAL; } break; -case 7: +case 6: #line 59 "err_inherit4.y" { yyval.cval = cLOCAL; } break; -case 8: +case 7: #line 62 "err_inherit4.y" { yyval.tval = tREAL; } break; -case 9: +case 8: #line 63 "err_inherit4.y" { yyval.tval = tINTEGER; } break; -case 10: +case 9: #line 67 "err_inherit4.y" { yyval.nlist->s = mksymbol(yystack.l_mark[-2].tval, yystack.l_mark[-3].cval, yystack.l_mark[0].id); yyval.nlist->next = yystack.l_mark[-1].nlist; } break; -case 11: +case 10: #line 71 "err_inherit4.y" { yyval.nlist->s = mksymbol(yystack.l_mark[-1].tval, yystack.l_mark[-2].cval, yystack.l_mark[0].id); yyval.nlist->next = NULL; } break; -case 12: +case 11: #line 77 "err_inherit4.y" { yyval.nlist = yystack.l_mark[0].nlist; yyloc = yystack.p_mark[1]; } break; -#line 1174 "err_inherit4.tab.c" +#line 1179 "err_inherit4.tab.c" default: break; } @@ -1258,12 +1263,11 @@ break; } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; - fprintf(stderr, "%s[%d]: state %d, reading %d (%s)\n", + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; + fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n", YYDEBUGSTR, yydepth, YYFINAL, yychar, yys); } #endif @@ -1290,7 +1294,7 @@ break; } #endif if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yyloc; @@ -1325,7 +1329,7 @@ yyvalid: yylexp = yylexemes + yypath->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base); - memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base); memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) diff --git a/test/btyacc/err_inherit5.tab.c b/test/btyacc/err_inherit5.tab.c index ac0ad3a..6c35f23 100644 --- a/test/btyacc/err_inherit5.tab.c +++ b/test/btyacc/err_inherit5.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 diff --git a/test/btyacc/err_syntax1.tab.c b/test/btyacc/err_syntax1.tab.c index ac0ad3a..6c35f23 100644 --- a/test/btyacc/err_syntax1.tab.c +++ b/test/btyacc/err_syntax1.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 diff --git a/test/btyacc/err_syntax10.tab.c b/test/btyacc/err_syntax10.tab.c index 4ec0d56..8d1d20f 100644 --- a/test/btyacc/err_syntax10.tab.c +++ b/test/btyacc/err_syntax10.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 @@ -277,9 +277,9 @@ do \ typedef struct { unsigned stacksize; - short *s_base; - short *s_mark; - short *s_last; + YYINT *s_base; + YYINT *s_mark; + YYINT *s_last; YYSTYPE *l_base; YYSTYPE *l_mark; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -372,18 +372,18 @@ yyerror(const char* s) #endif /* YYBTYACC */ #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif -#include <stdlib.h> /* needed for malloc, etc */ -#include <string.h> /* needed for memset */ +#include <stdlib.h> /* needed for malloc, etc */ +#include <string.h> /* needed for memset */ /* allocate initial stack or double stack size, up to YYMAXDEPTH */ static int yygrowstack(YYSTACKDATA *data) { int i; unsigned newsize; - short *newss; + YYINT *newss; YYSTYPE *newvs; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) YYLTYPE *newps; @@ -397,7 +397,7 @@ static int yygrowstack(YYSTACKDATA *data) newsize = YYMAXDEPTH; i = (int) (data->s_mark - data->s_base); - newss = (short *)realloc(data->s_base, newsize * sizeof(*newss)); + newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss)); if (newss == 0) return YYENOMEM; @@ -461,7 +461,7 @@ yyNewState(unsigned size) #endif return p; } - p->yystack.s_base = (short *) malloc(size * sizeof(short)); + p->yystack.s_base = (YYINT *) malloc(size * sizeof(YYINT)); if (p->yystack.s_base == NULL) return NULL; p->yystack.l_base = (YYSTYPE *) malloc(size * sizeof(YYSTYPE)); if (p->yystack.l_base == NULL) return NULL; @@ -521,6 +521,8 @@ YYPARSE_DECL() yyps = yyNewState(0); if (yyps == 0) goto yyenomem; yyps->save = 0; #endif /* YYBTYACC */ + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -594,11 +596,10 @@ yyloop: } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)", YYDEBUGSTR, yydepth, yystate, yychar, yys); #ifdef YYSTYPE_TOSTRING @@ -657,7 +658,7 @@ yyloop: save->state = yystate; save->errflag = yyerrflag; save->yystack.s_mark = save->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); save->yystack.l_mark = save->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -738,7 +739,7 @@ yyloop: if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yyctable[ctry]; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yylval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yylloc; @@ -784,9 +785,18 @@ yyloop: yynewerrflag = 1; goto yyerrhandler; - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: + /* explicit YYERROR from an action -- pop the rhs of the rule reduced + * before looking for error recovery */ + yystack.s_mark -= yym; + yystate = *yystack.s_mark; + yystack.l_mark -= yym; +#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) + yystack.p_mark -= yym; +#endif + yynewerrflag = 0; yyerrhandler: while (yyps->save) @@ -811,7 +821,7 @@ yyerrhandler: yyerrctx->state = yystate; yyerrctx->errflag = yyerrflag; yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -827,7 +837,7 @@ yyerrhandler: yylexp = yylexemes + save->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base); - memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base); memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -862,7 +872,7 @@ yyerrhandler: yylloc = yylpp[-1]; #endif yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base); - memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base); memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -884,7 +894,7 @@ yyerrhandler: #endif #if !YYBTYACC - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: #endif ++yynerrs; @@ -953,7 +963,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n", YYDEBUGSTR, yydepth, yystate, yychar, yys); } @@ -1107,12 +1117,11 @@ yyreduce: } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; - fprintf(stderr, "%s[%d]: state %d, reading %d (%s)\n", + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; + fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n", YYDEBUGSTR, yydepth, YYFINAL, yychar, yys); } #endif @@ -1139,7 +1148,7 @@ yyreduce: } #endif if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yyloc; @@ -1174,7 +1183,7 @@ yyvalid: yylexp = yylexemes + yypath->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base); - memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base); memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) diff --git a/test/btyacc/err_syntax11.tab.c b/test/btyacc/err_syntax11.tab.c index d1b51a1..d949102 100644 --- a/test/btyacc/err_syntax11.tab.c +++ b/test/btyacc/err_syntax11.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 @@ -283,9 +283,9 @@ do \ typedef struct { unsigned stacksize; - short *s_base; - short *s_mark; - short *s_last; + YYINT *s_base; + YYINT *s_mark; + YYINT *s_last; YYSTYPE *l_base; YYSTYPE *l_mark; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -378,18 +378,18 @@ yyerror(const char* s) #endif /* YYBTYACC */ #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif -#include <stdlib.h> /* needed for malloc, etc */ -#include <string.h> /* needed for memset */ +#include <stdlib.h> /* needed for malloc, etc */ +#include <string.h> /* needed for memset */ /* allocate initial stack or double stack size, up to YYMAXDEPTH */ static int yygrowstack(YYSTACKDATA *data) { int i; unsigned newsize; - short *newss; + YYINT *newss; YYSTYPE *newvs; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) YYLTYPE *newps; @@ -403,7 +403,7 @@ static int yygrowstack(YYSTACKDATA *data) newsize = YYMAXDEPTH; i = (int) (data->s_mark - data->s_base); - newss = (short *)realloc(data->s_base, newsize * sizeof(*newss)); + newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss)); if (newss == 0) return YYENOMEM; @@ -467,7 +467,7 @@ yyNewState(unsigned size) #endif return p; } - p->yystack.s_base = (short *) malloc(size * sizeof(short)); + p->yystack.s_base = (YYINT *) malloc(size * sizeof(YYINT)); if (p->yystack.s_base == NULL) return NULL; p->yystack.l_base = (YYSTYPE *) malloc(size * sizeof(YYSTYPE)); if (p->yystack.l_base == NULL) return NULL; @@ -527,6 +527,8 @@ YYPARSE_DECL() yyps = yyNewState(0); if (yyps == 0) goto yyenomem; yyps->save = 0; #endif /* YYBTYACC */ + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -600,11 +602,10 @@ yyloop: } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)", YYDEBUGSTR, yydepth, yystate, yychar, yys); #ifdef YYSTYPE_TOSTRING @@ -663,7 +664,7 @@ yyloop: save->state = yystate; save->errflag = yyerrflag; save->yystack.s_mark = save->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); save->yystack.l_mark = save->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -744,7 +745,7 @@ yyloop: if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yyctable[ctry]; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yylval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yylloc; @@ -790,9 +791,18 @@ yyloop: yynewerrflag = 1; goto yyerrhandler; - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: + /* explicit YYERROR from an action -- pop the rhs of the rule reduced + * before looking for error recovery */ + yystack.s_mark -= yym; + yystate = *yystack.s_mark; + yystack.l_mark -= yym; +#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) + yystack.p_mark -= yym; +#endif + yynewerrflag = 0; yyerrhandler: while (yyps->save) @@ -817,7 +827,7 @@ yyerrhandler: yyerrctx->state = yystate; yyerrctx->errflag = yyerrflag; yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -833,7 +843,7 @@ yyerrhandler: yylexp = yylexemes + save->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base); - memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base); memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -868,7 +878,7 @@ yyerrhandler: yylloc = yylpp[-1]; #endif yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base); - memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base); memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -890,7 +900,7 @@ yyerrhandler: #endif #if !YYBTYACC - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: #endif ++yynerrs; @@ -959,7 +969,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n", YYDEBUGSTR, yydepth, yystate, yychar, yys); } @@ -1113,12 +1123,11 @@ yyreduce: } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; - fprintf(stderr, "%s[%d]: state %d, reading %d (%s)\n", + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; + fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n", YYDEBUGSTR, yydepth, YYFINAL, yychar, yys); } #endif @@ -1145,7 +1154,7 @@ yyreduce: } #endif if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yyloc; @@ -1180,7 +1189,7 @@ yyvalid: yylexp = yylexemes + yypath->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base); - memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base); memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) diff --git a/test/btyacc/err_syntax12.tab.c b/test/btyacc/err_syntax12.tab.c index 6de4586..5a3105e 100644 --- a/test/btyacc/err_syntax12.tab.c +++ b/test/btyacc/err_syntax12.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 @@ -289,9 +289,9 @@ do \ typedef struct { unsigned stacksize; - short *s_base; - short *s_mark; - short *s_last; + YYINT *s_base; + YYINT *s_mark; + YYINT *s_last; YYSTYPE *l_base; YYSTYPE *l_mark; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -384,18 +384,18 @@ yyerror(const char* s) #endif /* YYBTYACC */ #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif -#include <stdlib.h> /* needed for malloc, etc */ -#include <string.h> /* needed for memset */ +#include <stdlib.h> /* needed for malloc, etc */ +#include <string.h> /* needed for memset */ /* allocate initial stack or double stack size, up to YYMAXDEPTH */ static int yygrowstack(YYSTACKDATA *data) { int i; unsigned newsize; - short *newss; + YYINT *newss; YYSTYPE *newvs; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) YYLTYPE *newps; @@ -409,7 +409,7 @@ static int yygrowstack(YYSTACKDATA *data) newsize = YYMAXDEPTH; i = (int) (data->s_mark - data->s_base); - newss = (short *)realloc(data->s_base, newsize * sizeof(*newss)); + newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss)); if (newss == 0) return YYENOMEM; @@ -473,7 +473,7 @@ yyNewState(unsigned size) #endif return p; } - p->yystack.s_base = (short *) malloc(size * sizeof(short)); + p->yystack.s_base = (YYINT *) malloc(size * sizeof(YYINT)); if (p->yystack.s_base == NULL) return NULL; p->yystack.l_base = (YYSTYPE *) malloc(size * sizeof(YYSTYPE)); if (p->yystack.l_base == NULL) return NULL; @@ -533,6 +533,8 @@ YYPARSE_DECL() yyps = yyNewState(0); if (yyps == 0) goto yyenomem; yyps->save = 0; #endif /* YYBTYACC */ + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -606,11 +608,10 @@ yyloop: } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)", YYDEBUGSTR, yydepth, yystate, yychar, yys); #ifdef YYSTYPE_TOSTRING @@ -669,7 +670,7 @@ yyloop: save->state = yystate; save->errflag = yyerrflag; save->yystack.s_mark = save->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); save->yystack.l_mark = save->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -750,7 +751,7 @@ yyloop: if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yyctable[ctry]; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yylval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yylloc; @@ -796,9 +797,18 @@ yyloop: yynewerrflag = 1; goto yyerrhandler; - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: + /* explicit YYERROR from an action -- pop the rhs of the rule reduced + * before looking for error recovery */ + yystack.s_mark -= yym; + yystate = *yystack.s_mark; + yystack.l_mark -= yym; +#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) + yystack.p_mark -= yym; +#endif + yynewerrflag = 0; yyerrhandler: while (yyps->save) @@ -823,7 +833,7 @@ yyerrhandler: yyerrctx->state = yystate; yyerrctx->errflag = yyerrflag; yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -839,7 +849,7 @@ yyerrhandler: yylexp = yylexemes + save->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base); - memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base); memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -874,7 +884,7 @@ yyerrhandler: yylloc = yylpp[-1]; #endif yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base); - memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base); memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -896,7 +906,7 @@ yyerrhandler: #endif #if !YYBTYACC - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: #endif ++yynerrs; @@ -965,7 +975,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n", YYDEBUGSTR, yydepth, yystate, yychar, yys); } @@ -1119,12 +1129,11 @@ yyreduce: } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; - fprintf(stderr, "%s[%d]: state %d, reading %d (%s)\n", + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; + fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n", YYDEBUGSTR, yydepth, YYFINAL, yychar, yys); } #endif @@ -1151,7 +1160,7 @@ yyreduce: } #endif if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yyloc; @@ -1186,7 +1195,7 @@ yyvalid: yylexp = yylexemes + yypath->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base); - memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base); memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) diff --git a/test/btyacc/err_syntax13.tab.c b/test/btyacc/err_syntax13.tab.c index ac0ad3a..6c35f23 100644 --- a/test/btyacc/err_syntax13.tab.c +++ b/test/btyacc/err_syntax13.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 diff --git a/test/btyacc/err_syntax14.tab.c b/test/btyacc/err_syntax14.tab.c index ac0ad3a..6c35f23 100644 --- a/test/btyacc/err_syntax14.tab.c +++ b/test/btyacc/err_syntax14.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 diff --git a/test/btyacc/err_syntax15.tab.c b/test/btyacc/err_syntax15.tab.c index ac0ad3a..6c35f23 100644 --- a/test/btyacc/err_syntax15.tab.c +++ b/test/btyacc/err_syntax15.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 diff --git a/test/btyacc/err_syntax16.tab.c b/test/btyacc/err_syntax16.tab.c index ac0ad3a..6c35f23 100644 --- a/test/btyacc/err_syntax16.tab.c +++ b/test/btyacc/err_syntax16.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 diff --git a/test/btyacc/err_syntax17.tab.c b/test/btyacc/err_syntax17.tab.c index ac0ad3a..6c35f23 100644 --- a/test/btyacc/err_syntax17.tab.c +++ b/test/btyacc/err_syntax17.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 diff --git a/test/btyacc/err_syntax18.tab.c b/test/btyacc/err_syntax18.tab.c index 45e8e71..1221906 100644 --- a/test/btyacc/err_syntax18.tab.c +++ b/test/btyacc/err_syntax18.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 @@ -286,9 +286,9 @@ do \ typedef struct { unsigned stacksize; - short *s_base; - short *s_mark; - short *s_last; + YYINT *s_base; + YYINT *s_mark; + YYINT *s_last; YYSTYPE *l_base; YYSTYPE *l_mark; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -381,18 +381,18 @@ yyerror(const char* s) #endif /* YYBTYACC */ #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif -#include <stdlib.h> /* needed for malloc, etc */ -#include <string.h> /* needed for memset */ +#include <stdlib.h> /* needed for malloc, etc */ +#include <string.h> /* needed for memset */ /* allocate initial stack or double stack size, up to YYMAXDEPTH */ static int yygrowstack(YYSTACKDATA *data) { int i; unsigned newsize; - short *newss; + YYINT *newss; YYSTYPE *newvs; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) YYLTYPE *newps; @@ -406,7 +406,7 @@ static int yygrowstack(YYSTACKDATA *data) newsize = YYMAXDEPTH; i = (int) (data->s_mark - data->s_base); - newss = (short *)realloc(data->s_base, newsize * sizeof(*newss)); + newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss)); if (newss == 0) return YYENOMEM; @@ -470,7 +470,7 @@ yyNewState(unsigned size) #endif return p; } - p->yystack.s_base = (short *) malloc(size * sizeof(short)); + p->yystack.s_base = (YYINT *) malloc(size * sizeof(YYINT)); if (p->yystack.s_base == NULL) return NULL; p->yystack.l_base = (YYSTYPE *) malloc(size * sizeof(YYSTYPE)); if (p->yystack.l_base == NULL) return NULL; @@ -530,6 +530,8 @@ YYPARSE_DECL() yyps = yyNewState(0); if (yyps == 0) goto yyenomem; yyps->save = 0; #endif /* YYBTYACC */ + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -603,11 +605,10 @@ yyloop: } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)", YYDEBUGSTR, yydepth, yystate, yychar, yys); #ifdef YYSTYPE_TOSTRING @@ -666,7 +667,7 @@ yyloop: save->state = yystate; save->errflag = yyerrflag; save->yystack.s_mark = save->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); save->yystack.l_mark = save->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -747,7 +748,7 @@ yyloop: if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yyctable[ctry]; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yylval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yylloc; @@ -793,9 +794,18 @@ yyloop: yynewerrflag = 1; goto yyerrhandler; - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: + /* explicit YYERROR from an action -- pop the rhs of the rule reduced + * before looking for error recovery */ + yystack.s_mark -= yym; + yystate = *yystack.s_mark; + yystack.l_mark -= yym; +#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) + yystack.p_mark -= yym; +#endif + yynewerrflag = 0; yyerrhandler: while (yyps->save) @@ -820,7 +830,7 @@ yyerrhandler: yyerrctx->state = yystate; yyerrctx->errflag = yyerrflag; yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -836,7 +846,7 @@ yyerrhandler: yylexp = yylexemes + save->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base); - memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base); memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -871,7 +881,7 @@ yyerrhandler: yylloc = yylpp[-1]; #endif yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base); - memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base); memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -893,7 +903,7 @@ yyerrhandler: #endif #if !YYBTYACC - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: #endif ++yynerrs; @@ -962,7 +972,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n", YYDEBUGSTR, yydepth, yystate, yychar, yys); } @@ -1033,7 +1043,7 @@ case 1: #line 9 "err_syntax18.y" { yyval = yystack.l_mark[1]; } break; -#line 1037 "err_syntax18.tab.c" +#line 1047 "err_syntax18.tab.c" default: break; } @@ -1121,12 +1131,11 @@ break; } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; - fprintf(stderr, "%s[%d]: state %d, reading %d (%s)\n", + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; + fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n", YYDEBUGSTR, yydepth, YYFINAL, yychar, yys); } #endif @@ -1153,7 +1162,7 @@ break; } #endif if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yyloc; @@ -1188,7 +1197,7 @@ yyvalid: yylexp = yylexemes + yypath->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base); - memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base); memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) diff --git a/test/btyacc/err_syntax19.tab.c b/test/btyacc/err_syntax19.tab.c index ac0ad3a..6c35f23 100644 --- a/test/btyacc/err_syntax19.tab.c +++ b/test/btyacc/err_syntax19.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 diff --git a/test/btyacc/err_syntax2.tab.c b/test/btyacc/err_syntax2.tab.c index ac0ad3a..6c35f23 100644 --- a/test/btyacc/err_syntax2.tab.c +++ b/test/btyacc/err_syntax2.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 diff --git a/test/btyacc/err_syntax20.tab.c b/test/btyacc/err_syntax20.tab.c index 6505438..73f2074 100644 --- a/test/btyacc/err_syntax20.tab.c +++ b/test/btyacc/err_syntax20.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 @@ -281,9 +281,9 @@ do \ typedef struct { unsigned stacksize; - short *s_base; - short *s_mark; - short *s_last; + YYINT *s_base; + YYINT *s_mark; + YYINT *s_last; YYSTYPE *l_base; YYSTYPE *l_mark; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -376,18 +376,18 @@ yyerror(const char* s) #endif /* YYBTYACC */ #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif -#include <stdlib.h> /* needed for malloc, etc */ -#include <string.h> /* needed for memset */ +#include <stdlib.h> /* needed for malloc, etc */ +#include <string.h> /* needed for memset */ /* allocate initial stack or double stack size, up to YYMAXDEPTH */ static int yygrowstack(YYSTACKDATA *data) { int i; unsigned newsize; - short *newss; + YYINT *newss; YYSTYPE *newvs; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) YYLTYPE *newps; @@ -401,7 +401,7 @@ static int yygrowstack(YYSTACKDATA *data) newsize = YYMAXDEPTH; i = (int) (data->s_mark - data->s_base); - newss = (short *)realloc(data->s_base, newsize * sizeof(*newss)); + newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss)); if (newss == 0) return YYENOMEM; @@ -465,7 +465,7 @@ yyNewState(unsigned size) #endif return p; } - p->yystack.s_base = (short *) malloc(size * sizeof(short)); + p->yystack.s_base = (YYINT *) malloc(size * sizeof(YYINT)); if (p->yystack.s_base == NULL) return NULL; p->yystack.l_base = (YYSTYPE *) malloc(size * sizeof(YYSTYPE)); if (p->yystack.l_base == NULL) return NULL; @@ -525,6 +525,8 @@ YYPARSE_DECL() yyps = yyNewState(0); if (yyps == 0) goto yyenomem; yyps->save = 0; #endif /* YYBTYACC */ + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -598,11 +600,10 @@ yyloop: } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)", YYDEBUGSTR, yydepth, yystate, yychar, yys); #ifdef YYSTYPE_TOSTRING @@ -661,7 +662,7 @@ yyloop: save->state = yystate; save->errflag = yyerrflag; save->yystack.s_mark = save->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); save->yystack.l_mark = save->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -742,7 +743,7 @@ yyloop: if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yyctable[ctry]; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yylval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yylloc; @@ -788,9 +789,18 @@ yyloop: yynewerrflag = 1; goto yyerrhandler; - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: + /* explicit YYERROR from an action -- pop the rhs of the rule reduced + * before looking for error recovery */ + yystack.s_mark -= yym; + yystate = *yystack.s_mark; + yystack.l_mark -= yym; +#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) + yystack.p_mark -= yym; +#endif + yynewerrflag = 0; yyerrhandler: while (yyps->save) @@ -815,7 +825,7 @@ yyerrhandler: yyerrctx->state = yystate; yyerrctx->errflag = yyerrflag; yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -831,7 +841,7 @@ yyerrhandler: yylexp = yylexemes + save->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base); - memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base); memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -866,7 +876,7 @@ yyerrhandler: yylloc = yylpp[-1]; #endif yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base); - memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base); memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -888,7 +898,7 @@ yyerrhandler: #endif #if !YYBTYACC - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: #endif ++yynerrs; @@ -957,7 +967,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n", YYDEBUGSTR, yydepth, yystate, yychar, yys); } @@ -1028,7 +1038,7 @@ case 1: #line 12 "err_syntax20.y" { yystack.l_mark[-1].rechk = 3; } break; -#line 1032 "err_syntax20.tab.c" +#line 1042 "err_syntax20.tab.c" default: break; } @@ -1116,12 +1126,11 @@ break; } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; - fprintf(stderr, "%s[%d]: state %d, reading %d (%s)\n", + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; + fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n", YYDEBUGSTR, yydepth, YYFINAL, yychar, yys); } #endif @@ -1148,7 +1157,7 @@ break; } #endif if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yyloc; @@ -1183,7 +1192,7 @@ yyvalid: yylexp = yylexemes + yypath->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base); - memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base); memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) diff --git a/test/btyacc/err_syntax21.tab.c b/test/btyacc/err_syntax21.tab.c index ac0ad3a..6c35f23 100644 --- a/test/btyacc/err_syntax21.tab.c +++ b/test/btyacc/err_syntax21.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 diff --git a/test/btyacc/err_syntax22.tab.c b/test/btyacc/err_syntax22.tab.c index ac0ad3a..6c35f23 100644 --- a/test/btyacc/err_syntax22.tab.c +++ b/test/btyacc/err_syntax22.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 diff --git a/test/btyacc/err_syntax23.tab.c b/test/btyacc/err_syntax23.tab.c index ac0ad3a..6c35f23 100644 --- a/test/btyacc/err_syntax23.tab.c +++ b/test/btyacc/err_syntax23.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 diff --git a/test/btyacc/err_syntax24.error b/test/btyacc/err_syntax24.error index c153889..e8bbfec 100644 --- a/test/btyacc/err_syntax24.error +++ b/test/btyacc/err_syntax24.error @@ -1,2 +1,2 @@ -YACC: w - line 21 of "./err_syntax24.y", the default action assigns an undefined value to $$ +YACC: w - line 21 of "./err_syntax24.y", the default action for expr assigns an undefined value to $$ YACC: e - line 22 of "./err_syntax24.y", $$ is untyped diff --git a/test/btyacc/err_syntax24.tab.c b/test/btyacc/err_syntax24.tab.c index ac0ad3a..6c35f23 100644 --- a/test/btyacc/err_syntax24.tab.c +++ b/test/btyacc/err_syntax24.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 diff --git a/test/btyacc/err_syntax25.tab.c b/test/btyacc/err_syntax25.tab.c index ac0ad3a..6c35f23 100644 --- a/test/btyacc/err_syntax25.tab.c +++ b/test/btyacc/err_syntax25.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 diff --git a/test/btyacc/err_syntax26.tab.c b/test/btyacc/err_syntax26.tab.c index ac0ad3a..6c35f23 100644 --- a/test/btyacc/err_syntax26.tab.c +++ b/test/btyacc/err_syntax26.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 diff --git a/test/btyacc/err_syntax27.tab.c b/test/btyacc/err_syntax27.tab.c index ac0ad3a..6c35f23 100644 --- a/test/btyacc/err_syntax27.tab.c +++ b/test/btyacc/err_syntax27.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 diff --git a/test/btyacc/err_syntax3.tab.c b/test/btyacc/err_syntax3.tab.c index ac0ad3a..6c35f23 100644 --- a/test/btyacc/err_syntax3.tab.c +++ b/test/btyacc/err_syntax3.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 diff --git a/test/btyacc/err_syntax4.tab.c b/test/btyacc/err_syntax4.tab.c index ac0ad3a..6c35f23 100644 --- a/test/btyacc/err_syntax4.tab.c +++ b/test/btyacc/err_syntax4.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 diff --git a/test/btyacc/err_syntax5.tab.c b/test/btyacc/err_syntax5.tab.c index ac0ad3a..6c35f23 100644 --- a/test/btyacc/err_syntax5.tab.c +++ b/test/btyacc/err_syntax5.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 diff --git a/test/btyacc/err_syntax6.tab.c b/test/btyacc/err_syntax6.tab.c index ac0ad3a..6c35f23 100644 --- a/test/btyacc/err_syntax6.tab.c +++ b/test/btyacc/err_syntax6.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 diff --git a/test/btyacc/err_syntax7.tab.c b/test/btyacc/err_syntax7.tab.c index ac0ad3a..6c35f23 100644 --- a/test/btyacc/err_syntax7.tab.c +++ b/test/btyacc/err_syntax7.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 diff --git a/test/btyacc/err_syntax7a.tab.c b/test/btyacc/err_syntax7a.tab.c index ac0ad3a..6c35f23 100644 --- a/test/btyacc/err_syntax7a.tab.c +++ b/test/btyacc/err_syntax7a.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 diff --git a/test/btyacc/err_syntax7b.tab.c b/test/btyacc/err_syntax7b.tab.c index ac0ad3a..6c35f23 100644 --- a/test/btyacc/err_syntax7b.tab.c +++ b/test/btyacc/err_syntax7b.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 diff --git a/test/btyacc/err_syntax8.tab.c b/test/btyacc/err_syntax8.tab.c index ac0ad3a..6c35f23 100644 --- a/test/btyacc/err_syntax8.tab.c +++ b/test/btyacc/err_syntax8.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 diff --git a/test/btyacc/err_syntax8a.tab.c b/test/btyacc/err_syntax8a.tab.c index ac0ad3a..6c35f23 100644 --- a/test/btyacc/err_syntax8a.tab.c +++ b/test/btyacc/err_syntax8a.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 diff --git a/test/btyacc/err_syntax9.tab.c b/test/btyacc/err_syntax9.tab.c index ac0ad3a..6c35f23 100644 --- a/test/btyacc/err_syntax9.tab.c +++ b/test/btyacc/err_syntax9.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 diff --git a/test/btyacc/error.tab.c b/test/btyacc/error.tab.c index d5c10eb..493690d 100644 --- a/test/btyacc/error.tab.c +++ b/test/btyacc/error.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 @@ -282,9 +282,9 @@ do \ typedef struct { unsigned stacksize; - short *s_base; - short *s_mark; - short *s_last; + YYINT *s_base; + YYINT *s_mark; + YYINT *s_last; YYSTYPE *l_base; YYSTYPE *l_mark; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -377,18 +377,18 @@ yyerror(const char* s) #endif /* YYBTYACC */ #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif -#include <stdlib.h> /* needed for malloc, etc */ -#include <string.h> /* needed for memset */ +#include <stdlib.h> /* needed for malloc, etc */ +#include <string.h> /* needed for memset */ /* allocate initial stack or double stack size, up to YYMAXDEPTH */ static int yygrowstack(YYSTACKDATA *data) { int i; unsigned newsize; - short *newss; + YYINT *newss; YYSTYPE *newvs; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) YYLTYPE *newps; @@ -402,7 +402,7 @@ static int yygrowstack(YYSTACKDATA *data) newsize = YYMAXDEPTH; i = (int) (data->s_mark - data->s_base); - newss = (short *)realloc(data->s_base, newsize * sizeof(*newss)); + newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss)); if (newss == 0) return YYENOMEM; @@ -466,7 +466,7 @@ yyNewState(unsigned size) #endif return p; } - p->yystack.s_base = (short *) malloc(size * sizeof(short)); + p->yystack.s_base = (YYINT *) malloc(size * sizeof(YYINT)); if (p->yystack.s_base == NULL) return NULL; p->yystack.l_base = (YYSTYPE *) malloc(size * sizeof(YYSTYPE)); if (p->yystack.l_base == NULL) return NULL; @@ -526,6 +526,8 @@ YYPARSE_DECL() yyps = yyNewState(0); if (yyps == 0) goto yyenomem; yyps->save = 0; #endif /* YYBTYACC */ + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -599,11 +601,10 @@ yyloop: } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)", YYDEBUGSTR, yydepth, yystate, yychar, yys); #ifdef YYSTYPE_TOSTRING @@ -662,7 +663,7 @@ yyloop: save->state = yystate; save->errflag = yyerrflag; save->yystack.s_mark = save->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); save->yystack.l_mark = save->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -743,7 +744,7 @@ yyloop: if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yyctable[ctry]; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yylval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yylloc; @@ -789,9 +790,18 @@ yyloop: yynewerrflag = 1; goto yyerrhandler; - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: + /* explicit YYERROR from an action -- pop the rhs of the rule reduced + * before looking for error recovery */ + yystack.s_mark -= yym; + yystate = *yystack.s_mark; + yystack.l_mark -= yym; +#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) + yystack.p_mark -= yym; +#endif + yynewerrflag = 0; yyerrhandler: while (yyps->save) @@ -816,7 +826,7 @@ yyerrhandler: yyerrctx->state = yystate; yyerrctx->errflag = yyerrflag; yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -832,7 +842,7 @@ yyerrhandler: yylexp = yylexemes + save->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base); - memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base); memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -867,7 +877,7 @@ yyerrhandler: yylloc = yylpp[-1]; #endif yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base); - memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base); memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -889,7 +899,7 @@ yyerrhandler: #endif #if !YYBTYACC - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: #endif ++yynerrs; @@ -958,7 +968,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n", YYDEBUGSTR, yydepth, yystate, yychar, yys); } @@ -1112,12 +1122,11 @@ yyreduce: } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; - fprintf(stderr, "%s[%d]: state %d, reading %d (%s)\n", + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; + fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n", YYDEBUGSTR, yydepth, YYFINAL, yychar, yys); } #endif @@ -1144,7 +1153,7 @@ yyreduce: } #endif if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yyloc; @@ -1179,7 +1188,7 @@ yyvalid: yylexp = yylexemes + yypath->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base); - memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base); memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) diff --git a/test/btyacc/grammar.tab.c b/test/btyacc/grammar.tab.c index 238bcaa..2d3e4ec 100644 --- a/test/btyacc/grammar.tab.c +++ b/test/btyacc/grammar.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 @@ -1106,9 +1106,9 @@ do \ typedef struct { unsigned stacksize; - short *s_base; - short *s_mark; - short *s_last; + YYINT *s_base; + YYINT *s_mark; + YYINT *s_last; YYSTYPE *l_base; YYSTYPE *l_mark; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -1350,18 +1350,18 @@ free_parser(void) #endif /* YYBTYACC */ #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif -#include <stdlib.h> /* needed for malloc, etc */ -#include <string.h> /* needed for memset */ +#include <stdlib.h> /* needed for malloc, etc */ +#include <string.h> /* needed for memset */ /* allocate initial stack or double stack size, up to YYMAXDEPTH */ static int yygrowstack(YYSTACKDATA *data) { int i; unsigned newsize; - short *newss; + YYINT *newss; YYSTYPE *newvs; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) YYLTYPE *newps; @@ -1375,7 +1375,7 @@ static int yygrowstack(YYSTACKDATA *data) newsize = YYMAXDEPTH; i = (int) (data->s_mark - data->s_base); - newss = (short *)realloc(data->s_base, newsize * sizeof(*newss)); + newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss)); if (newss == 0) return YYENOMEM; @@ -1439,7 +1439,7 @@ yyNewState(unsigned size) #endif return p; } - p->yystack.s_base = (short *) malloc(size * sizeof(short)); + p->yystack.s_base = (YYINT *) malloc(size * sizeof(YYINT)); if (p->yystack.s_base == NULL) return NULL; p->yystack.l_base = (YYSTYPE *) malloc(size * sizeof(YYSTYPE)); if (p->yystack.l_base == NULL) return NULL; @@ -1499,6 +1499,8 @@ YYPARSE_DECL() yyps = yyNewState(0); if (yyps == 0) goto yyenomem; yyps->save = 0; #endif /* YYBTYACC */ + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -1572,11 +1574,10 @@ yyloop: } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)", YYDEBUGSTR, yydepth, yystate, yychar, yys); #ifdef YYSTYPE_TOSTRING @@ -1635,7 +1636,7 @@ yyloop: save->state = yystate; save->errflag = yyerrflag; save->yystack.s_mark = save->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); save->yystack.l_mark = save->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -1716,7 +1717,7 @@ yyloop: if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yyctable[ctry]; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yylval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yylloc; @@ -1762,9 +1763,18 @@ yyloop: yynewerrflag = 1; goto yyerrhandler; - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: + /* explicit YYERROR from an action -- pop the rhs of the rule reduced + * before looking for error recovery */ + yystack.s_mark -= yym; + yystate = *yystack.s_mark; + yystack.l_mark -= yym; +#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) + yystack.p_mark -= yym; +#endif + yynewerrflag = 0; yyerrhandler: while (yyps->save) @@ -1789,7 +1799,7 @@ yyerrhandler: yyerrctx->state = yystate; yyerrctx->errflag = yyerrflag; yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -1805,7 +1815,7 @@ yyerrhandler: yylexp = yylexemes + save->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base); - memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base); memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -1840,7 +1850,7 @@ yyerrhandler: yylloc = yylpp[-1]; #endif yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base); - memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base); memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -1862,7 +1872,7 @@ yyerrhandler: #endif #if !YYBTYACC - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: #endif ++yynerrs; @@ -1931,7 +1941,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n", YYDEBUGSTR, yydepth, yystate, yychar, yys); } @@ -2672,7 +2682,7 @@ case 114: yyval.declarator->func_def = FUNC_ANSI; } break; -#line 2676 "grammar.tab.c" +#line 2686 "grammar.tab.c" default: break; } @@ -2760,12 +2770,11 @@ break; } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; - fprintf(stderr, "%s[%d]: state %d, reading %d (%s)\n", + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; + fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n", YYDEBUGSTR, yydepth, YYFINAL, yychar, yys); } #endif @@ -2792,7 +2801,7 @@ break; } #endif if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yyloc; @@ -2827,7 +2836,7 @@ yyvalid: yylexp = yylexemes + yypath->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base); - memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base); memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) diff --git a/test/btyacc/inherit0.tab.c b/test/btyacc/inherit0.tab.c index 7308584..1c75db5 100644 --- a/test/btyacc/inherit0.tab.c +++ b/test/btyacc/inherit0.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 @@ -319,9 +319,9 @@ do \ typedef struct { unsigned stacksize; - short *s_base; - short *s_mark; - short *s_last; + YYINT *s_base; + YYINT *s_mark; + YYINT *s_last; YYSTYPE *l_base; YYSTYPE *l_mark; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -396,18 +396,18 @@ extern void YYERROR_DECL(); #endif /* YYBTYACC */ #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif -#include <stdlib.h> /* needed for malloc, etc */ -#include <string.h> /* needed for memset */ +#include <stdlib.h> /* needed for malloc, etc */ +#include <string.h> /* needed for memset */ /* allocate initial stack or double stack size, up to YYMAXDEPTH */ static int yygrowstack(YYSTACKDATA *data) { int i; unsigned newsize; - short *newss; + YYINT *newss; YYSTYPE *newvs; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) YYLTYPE *newps; @@ -421,7 +421,7 @@ static int yygrowstack(YYSTACKDATA *data) newsize = YYMAXDEPTH; i = (int) (data->s_mark - data->s_base); - newss = (short *)realloc(data->s_base, newsize * sizeof(*newss)); + newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss)); if (newss == 0) return YYENOMEM; @@ -485,7 +485,7 @@ yyNewState(unsigned size) #endif return p; } - p->yystack.s_base = (short *) malloc(size * sizeof(short)); + p->yystack.s_base = (YYINT *) malloc(size * sizeof(YYINT)); if (p->yystack.s_base == NULL) return NULL; p->yystack.l_base = (YYSTYPE *) malloc(size * sizeof(YYSTYPE)); if (p->yystack.l_base == NULL) return NULL; @@ -545,6 +545,8 @@ YYPARSE_DECL() yyps = yyNewState(0); if (yyps == 0) goto yyenomem; yyps->save = 0; #endif /* YYBTYACC */ + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -618,11 +620,10 @@ yyloop: } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)", YYDEBUGSTR, yydepth, yystate, yychar, yys); #ifdef YYSTYPE_TOSTRING @@ -681,7 +682,7 @@ yyloop: save->state = yystate; save->errflag = yyerrflag; save->yystack.s_mark = save->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); save->yystack.l_mark = save->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -762,7 +763,7 @@ yyloop: if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yyctable[ctry]; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yylval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yylloc; @@ -808,9 +809,18 @@ yyloop: yynewerrflag = 1; goto yyerrhandler; - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: + /* explicit YYERROR from an action -- pop the rhs of the rule reduced + * before looking for error recovery */ + yystack.s_mark -= yym; + yystate = *yystack.s_mark; + yystack.l_mark -= yym; +#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) + yystack.p_mark -= yym; +#endif + yynewerrflag = 0; yyerrhandler: while (yyps->save) @@ -835,7 +845,7 @@ yyerrhandler: yyerrctx->state = yystate; yyerrctx->errflag = yyerrflag; yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -851,7 +861,7 @@ yyerrhandler: yylexp = yylexemes + save->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base); - memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base); memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -886,7 +896,7 @@ yyerrhandler: yylloc = yylpp[-1]; #endif yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base); - memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base); memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -908,7 +918,7 @@ yyerrhandler: #endif #if !YYBTYACC - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: #endif ++yynerrs; @@ -977,7 +987,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n", YYDEBUGSTR, yydepth, yystate, yychar, yys); } @@ -1088,7 +1098,7 @@ case 11: #line 43 "inherit0.y" { yyval = yystack.l_mark[0]; } break; -#line 1092 "inherit0.tab.c" +#line 1102 "inherit0.tab.c" default: break; } @@ -1176,12 +1186,11 @@ break; } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; - fprintf(stderr, "%s[%d]: state %d, reading %d (%s)\n", + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; + fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n", YYDEBUGSTR, yydepth, YYFINAL, yychar, yys); } #endif @@ -1208,7 +1217,7 @@ break; } #endif if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yyloc; @@ -1243,7 +1252,7 @@ yyvalid: yylexp = yylexemes + yypath->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base); - memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base); memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) diff --git a/test/btyacc/inherit1.tab.c b/test/btyacc/inherit1.tab.c index 2c0f958..99bbddb 100644 --- a/test/btyacc/inherit1.tab.c +++ b/test/btyacc/inherit1.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 @@ -138,13 +138,13 @@ extern symbol *mksymbol(type t, class c, name id); extern int YYLEX_DECL(); extern void YYERROR_DECL(); #endif -#line 32 "inherit1.y" #ifdef YYSTYPE #undef YYSTYPE_IS_DECLARED #define YYSTYPE_IS_DECLARED 1 #endif #ifndef YYSTYPE_IS_DECLARED #define YYSTYPE_IS_DECLARED 1 +#line 32 "inherit1.y" typedef union { class cval; @@ -340,9 +340,9 @@ do \ typedef struct { unsigned stacksize; - short *s_base; - short *s_mark; - short *s_last; + YYINT *s_base; + YYINT *s_mark; + YYINT *s_last; YYSTYPE *l_base; YYSTYPE *l_mark; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -417,18 +417,18 @@ extern void YYERROR_DECL(); #endif /* YYBTYACC */ #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif -#include <stdlib.h> /* needed for malloc, etc */ -#include <string.h> /* needed for memset */ +#include <stdlib.h> /* needed for malloc, etc */ +#include <string.h> /* needed for memset */ /* allocate initial stack or double stack size, up to YYMAXDEPTH */ static int yygrowstack(YYSTACKDATA *data) { int i; unsigned newsize; - short *newss; + YYINT *newss; YYSTYPE *newvs; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) YYLTYPE *newps; @@ -442,7 +442,7 @@ static int yygrowstack(YYSTACKDATA *data) newsize = YYMAXDEPTH; i = (int) (data->s_mark - data->s_base); - newss = (short *)realloc(data->s_base, newsize * sizeof(*newss)); + newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss)); if (newss == 0) return YYENOMEM; @@ -506,7 +506,7 @@ yyNewState(unsigned size) #endif return p; } - p->yystack.s_base = (short *) malloc(size * sizeof(short)); + p->yystack.s_base = (YYINT *) malloc(size * sizeof(YYINT)); if (p->yystack.s_base == NULL) return NULL; p->yystack.l_base = (YYSTYPE *) malloc(size * sizeof(YYSTYPE)); if (p->yystack.l_base == NULL) return NULL; @@ -566,6 +566,8 @@ YYPARSE_DECL() yyps = yyNewState(0); if (yyps == 0) goto yyenomem; yyps->save = 0; #endif /* YYBTYACC */ + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -639,11 +641,10 @@ yyloop: } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)", YYDEBUGSTR, yydepth, yystate, yychar, yys); #ifdef YYSTYPE_TOSTRING @@ -702,7 +703,7 @@ yyloop: save->state = yystate; save->errflag = yyerrflag; save->yystack.s_mark = save->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); save->yystack.l_mark = save->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -783,7 +784,7 @@ yyloop: if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yyctable[ctry]; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yylval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yylloc; @@ -829,9 +830,18 @@ yyloop: yynewerrflag = 1; goto yyerrhandler; - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: + /* explicit YYERROR from an action -- pop the rhs of the rule reduced + * before looking for error recovery */ + yystack.s_mark -= yym; + yystate = *yystack.s_mark; + yystack.l_mark -= yym; +#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) + yystack.p_mark -= yym; +#endif + yynewerrflag = 0; yyerrhandler: while (yyps->save) @@ -856,7 +866,7 @@ yyerrhandler: yyerrctx->state = yystate; yyerrctx->errflag = yyerrflag; yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -872,7 +882,7 @@ yyerrhandler: yylexp = yylexemes + save->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base); - memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base); memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -907,7 +917,7 @@ yyerrhandler: yylloc = yylpp[-1]; #endif yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base); - memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base); memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -929,7 +939,7 @@ yyerrhandler: #endif #if !YYBTYACC - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: #endif ++yynerrs; @@ -998,7 +1008,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n", YYDEBUGSTR, yydepth, yystate, yychar, yys); } @@ -1113,7 +1123,7 @@ case 11: #line 71 "inherit1.y" { yyval.nlist = yystack.l_mark[0].nlist; } break; -#line 1117 "inherit1.tab.c" +#line 1127 "inherit1.tab.c" default: break; } @@ -1201,12 +1211,11 @@ break; } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; - fprintf(stderr, "%s[%d]: state %d, reading %d (%s)\n", + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; + fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n", YYDEBUGSTR, yydepth, YYFINAL, yychar, yys); } #endif @@ -1233,7 +1242,7 @@ break; } #endif if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yyloc; @@ -1268,7 +1277,7 @@ yyvalid: yylexp = yylexemes + yypath->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base); - memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base); memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) diff --git a/test/btyacc/inherit2.output b/test/btyacc/inherit2.output index 70ffb05..b5df000 100644 --- a/test/btyacc/inherit2.output +++ b/test/btyacc/inherit2.output @@ -5,23 +5,20 @@ 2 $$2 : 3 declaration : class type $$1 $$2 namelist + 4 | type locnamelist - 4 $$3 : + 5 class : GLOBAL + 6 | LOCAL - 5 declaration : type $$3 locnamelist + 7 type : REAL + 8 | INTEGER - 6 class : GLOBAL - 7 | LOCAL + 9 namelist : namelist NAME + 10 | NAME - 8 type : REAL - 9 | INTEGER + 11 $$3 : - 10 namelist : namelist NAME - 11 | NAME - - 12 $$4 : - - 13 locnamelist : $$4 $$2 namelist + 12 locnamelist : $$3 $$2 namelist state 0 $accept : . declaration $end (0) @@ -38,27 +35,27 @@ state 0 state 1 - class : GLOBAL . (6) + class : GLOBAL . (5) - . reduce 6 + . reduce 5 state 2 - class : LOCAL . (7) + class : LOCAL . (6) - . reduce 7 + . reduce 6 state 3 - type : REAL . (8) + type : REAL . (7) - . reduce 8 + . reduce 7 state 4 - type : INTEGER . (9) + type : INTEGER . (8) - . reduce 9 + . reduce 8 state 5 @@ -78,12 +75,13 @@ state 6 state 7 - declaration : type . $$3 locnamelist (5) - $$3 : . (4) + declaration : type . locnamelist (4) + $$3 : . (11) - . reduce 4 + . reduce 11 - $$3 goto 9 + locnamelist goto 9 + $$3 goto 10 state 8 @@ -92,91 +90,81 @@ state 8 . reduce 1 - $$1 goto 10 + $$1 goto 11 state 9 - declaration : type $$3 . locnamelist (5) - $$4 : . (12) - - . reduce 12 + declaration : type locnamelist . (4) - locnamelist goto 11 - $$4 goto 12 + . reduce 4 state 10 - declaration : class type $$1 . $$2 namelist (3) + locnamelist : $$3 . $$2 namelist (12) $$2 : . (2) . reduce 2 - $$2 goto 13 + $$2 goto 12 state 11 - declaration : type $$3 locnamelist . (5) + declaration : class type $$1 . $$2 namelist (3) + $$2 : . (2) - . reduce 5 + . reduce 2 + + $$2 goto 13 state 12 - locnamelist : $$4 . $$2 namelist (13) - $$2 : . (2) + locnamelist : $$3 $$2 . namelist (12) - . reduce 2 + NAME shift 14 + . error - $$2 goto 14 + namelist goto 15 state 13 declaration : class type $$1 $$2 . namelist (3) - NAME shift 15 + NAME shift 14 . error namelist goto 16 state 14 - locnamelist : $$4 $$2 . namelist (13) + namelist : NAME . (10) - NAME shift 15 - . error - - namelist goto 17 + . reduce 10 state 15 - namelist : NAME . (11) + namelist : namelist . NAME (9) + locnamelist : $$3 $$2 namelist . (12) - . reduce 11 + NAME shift 17 + $end reduce 12 state 16 declaration : class type $$1 $$2 namelist . (3) - namelist : namelist . NAME (10) + namelist : namelist . NAME (9) - NAME shift 18 + NAME shift 17 $end reduce 3 state 17 - namelist : namelist . NAME (10) - locnamelist : $$4 $$2 namelist . (13) - - NAME shift 18 - $end reduce 13 + namelist : namelist NAME . (9) - -state 18 - namelist : namelist NAME . (10) - - . reduce 10 + . reduce 9 -7 terminals, 10 nonterminals -14 grammar rules, 19 states +7 terminals, 9 nonterminals +13 grammar rules, 18 states grammar parser grammar symbol# value# symbol @@ -196,4 +184,3 @@ symbol# value# symbol 13 268 $$1 14 269 $$2 15 270 $$3 - 16 271 $$4 diff --git a/test/btyacc/inherit2.tab.c b/test/btyacc/inherit2.tab.c index 67eb0bd..e14f601 100644 --- a/test/btyacc/inherit2.tab.c +++ b/test/btyacc/inherit2.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 @@ -136,13 +136,13 @@ extern symbol *mksymbol(type t, class c, name id); #define YYLEX_DECL() yylex(void) #define YYERROR_DECL() yyerror(const char *s) #endif -#line 39 "inherit2.y" #ifdef YYSTYPE #undef YYSTYPE_IS_DECLARED #define YYSTYPE_IS_DECLARED 1 #endif #ifndef YYSTYPE_IS_DECLARED #define YYSTYPE_IS_DECLARED 1 +#line 39 "inherit2.y" typedef union { class cval; @@ -199,54 +199,54 @@ extern int YYPARSE_DECL(); #define YYERRCODE 256 typedef short YYINT; static const YYINT inherit2_lhs[] = { -1, - 5, 6, 0, 7, 0, 3, 3, 4, 4, 1, - 1, 8, 2, + 5, 6, 0, 0, 3, 3, 4, 4, 1, 1, + 7, 2, }; static const YYINT inherit2_len[] = { 2, - 0, 0, 5, 0, 3, 1, 1, 1, 1, 2, - 1, 0, 3, + 0, 0, 5, 2, 1, 1, 1, 1, 2, 1, + 0, 3, }; static const YYINT inherit2_defred[] = { 0, - 6, 7, 8, 9, 0, 0, 4, 1, 12, 2, - 5, 2, 0, 0, 11, 0, 0, 10, + 5, 6, 7, 8, 0, 0, 11, 1, 4, 2, + 2, 0, 0, 10, 0, 0, 9, }; static const YYINT inherit2_stos[] = { 0, - 257, 258, 259, 260, 263, 266, 267, 267, 270, 268, - 265, 271, 269, 269, 261, 264, 264, 261, + 257, 258, 259, 260, 263, 266, 267, 267, 265, 270, + 268, 269, 269, 261, 264, 264, 261, }; static const YYINT inherit2_dgoto[] = { 5, - 16, 11, 6, 7, 10, 13, 9, 12, + 15, 9, 6, 7, 11, 12, 10, }; static const YYINT inherit2_sindex[] = { -257, 0, 0, 0, 0, 0, -255, 0, 0, 0, 0, - 0, 0, -254, -254, 0, -253, -253, 0, + 0, -254, -254, 0, -253, -253, 0, }; static const YYINT inherit2_rindex[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 6, 9, 0, + 0, 0, 0, 0, 6, 9, 0, }; #if YYBTYACC static const YYINT inherit2_cindex[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, }; #endif static const YYINT inherit2_gindex[] = { 0, - -4, 0, 0, 5, 0, 1, 0, 0, + -3, 0, 0, 5, 0, 1, 0, }; -#define YYTABLESIZE 13 +#define YYTABLESIZE 12 static const YYINT inherit2_table[] = { 1, - 2, 3, 4, 3, 4, 3, 15, 18, 13, 17, - 8, 0, 14, + 2, 3, 4, 3, 4, 12, 14, 17, 3, 16, + 8, 13, }; static const YYINT inherit2_check[] = { 257, - 258, 259, 260, 259, 260, 0, 261, 261, 0, 14, - 6, -1, 12, + 258, 259, 260, 259, 260, 0, 261, 261, 0, 13, + 6, 11, }; #if YYBTYACC static const YYINT inherit2_ctable[] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, + -1, }; #endif #define YYFINAL 5 @@ -254,7 +254,7 @@ static const YYINT inherit2_ctable[] = { -1, #define YYDEBUG 0 #endif #define YYMAXTOKEN 261 -#define YYUNDFTOKEN 272 +#define YYUNDFTOKEN 271 #define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a)) #if YYDEBUG static const char *const inherit2_name[] = { @@ -267,23 +267,22 @@ static const char *const inherit2_name[] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"error","GLOBAL","LOCAL","REAL","INTEGER", "NAME","$accept","declaration","namelist","locnamelist","class","type","$$1", -"$$2","$$3","$$4","illegal-symbol", +"$$2","$$3","illegal-symbol", }; static const char *const inherit2_rule[] = { "$accept : declaration", "$$1 :", "$$2 :", "declaration : class type $$1 $$2 namelist", -"$$3 :", -"declaration : type $$3 locnamelist", +"declaration : type locnamelist", "class : GLOBAL", "class : LOCAL", "type : REAL", "type : INTEGER", "namelist : namelist NAME", "namelist : NAME", -"$$4 :", -"locnamelist : $$4 $$2 namelist", +"$$3 :", +"locnamelist : $$3 $$2 namelist", }; #endif @@ -348,9 +347,9 @@ do \ typedef struct { unsigned stacksize; - short *s_base; - short *s_mark; - short *s_last; + YYINT *s_base; + YYINT *s_mark; + YYINT *s_last; YYSTYPE *l_base; YYSTYPE *l_mark; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -416,7 +415,7 @@ static short *yylexemes = 0; extern int YYLEX_DECL(); extern void YYERROR_DECL(); -#line 420 "inherit2.tab.c" +#line 419 "inherit2.tab.c" /* Release memory associated with symbol. */ #if ! defined YYDESTRUCT_IS_DECLARED @@ -436,7 +435,7 @@ YYDESTRUCT_DECL() } } break; -#line 440 "inherit2.tab.c" +#line 439 "inherit2.tab.c" case 264: #line 30 "inherit2.y" { @@ -448,7 +447,7 @@ YYDESTRUCT_DECL() } } break; -#line 452 "inherit2.tab.c" +#line 451 "inherit2.tab.c" case 265: #line 30 "inherit2.y" { @@ -460,7 +459,7 @@ YYDESTRUCT_DECL() } } break; -#line 464 "inherit2.tab.c" +#line 463 "inherit2.tab.c" } } #define YYDESTRUCT_IS_DECLARED 1 @@ -473,18 +472,18 @@ YYDESTRUCT_DECL() #endif /* YYBTYACC */ #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif -#include <stdlib.h> /* needed for malloc, etc */ -#include <string.h> /* needed for memset */ +#include <stdlib.h> /* needed for malloc, etc */ +#include <string.h> /* needed for memset */ /* allocate initial stack or double stack size, up to YYMAXDEPTH */ static int yygrowstack(YYSTACKDATA *data) { int i; unsigned newsize; - short *newss; + YYINT *newss; YYSTYPE *newvs; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) YYLTYPE *newps; @@ -498,7 +497,7 @@ static int yygrowstack(YYSTACKDATA *data) newsize = YYMAXDEPTH; i = (int) (data->s_mark - data->s_base); - newss = (short *)realloc(data->s_base, newsize * sizeof(*newss)); + newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss)); if (newss == 0) return YYENOMEM; @@ -562,7 +561,7 @@ yyNewState(unsigned size) #endif return p; } - p->yystack.s_base = (short *) malloc(size * sizeof(short)); + p->yystack.s_base = (YYINT *) malloc(size * sizeof(YYINT)); if (p->yystack.s_base == NULL) return NULL; p->yystack.l_base = (YYSTYPE *) malloc(size * sizeof(YYSTYPE)); if (p->yystack.l_base == NULL) return NULL; @@ -622,6 +621,8 @@ YYPARSE_DECL() yyps = yyNewState(0); if (yyps == 0) goto yyenomem; yyps->save = 0; #endif /* YYBTYACC */ + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -695,11 +696,10 @@ yyloop: } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)", YYDEBUGSTR, yydepth, yystate, yychar, yys); #ifdef YYSTYPE_TOSTRING @@ -758,7 +758,7 @@ yyloop: save->state = yystate; save->errflag = yyerrflag; save->yystack.s_mark = save->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); save->yystack.l_mark = save->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -839,7 +839,7 @@ yyloop: if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yyctable[ctry]; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yylval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yylloc; @@ -885,9 +885,18 @@ yyloop: yynewerrflag = 1; goto yyerrhandler; - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: + /* explicit YYERROR from an action -- pop the rhs of the rule reduced + * before looking for error recovery */ + yystack.s_mark -= yym; + yystate = *yystack.s_mark; + yystack.l_mark -= yym; +#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) + yystack.p_mark -= yym; +#endif + yynewerrflag = 0; yyerrhandler: while (yyps->save) @@ -912,7 +921,7 @@ yyerrhandler: yyerrctx->state = yystate; yyerrctx->errflag = yyerrflag; yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -928,7 +937,7 @@ yyerrhandler: yylexp = yylexemes + save->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base); - memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base); memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -963,7 +972,7 @@ yyerrhandler: yylloc = yylpp[-1]; #endif yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base); - memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base); memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -985,7 +994,7 @@ yyerrhandler: #endif #if !YYBTYACC - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: #endif ++yynerrs; @@ -1054,7 +1063,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n", YYDEBUGSTR, yydepth, yystate, yychar, yys); } @@ -1134,50 +1143,46 @@ case 3: { yyval.nlist = yystack.l_mark[0].nlist; } break; case 4: -#line 52 "inherit2.y" -yyval.tval = yystack.l_mark[0].tval; -break; -case 5: #line 53 "inherit2.y" { yyval.nlist = yystack.l_mark[0].nlist; } break; -case 6: +case 5: #line 56 "inherit2.y" { yyval.cval = cGLOBAL; } break; -case 7: +case 6: #line 57 "inherit2.y" { yyval.cval = cLOCAL; } break; -case 8: +case 7: #line 60 "inherit2.y" { yyval.tval = tREAL; } break; -case 9: +case 8: #line 61 "inherit2.y" { yyval.tval = tINTEGER; } break; -case 10: +case 9: #line 65 "inherit2.y" { yyval.nlist->s = mksymbol(yystack.l_mark[-2].tval, yystack.l_mark[-3].cval, yystack.l_mark[0].id); yyval.nlist->next = yystack.l_mark[-1].nlist; } break; -case 11: +case 10: #line 69 "inherit2.y" { yyval.nlist->s = mksymbol(yystack.l_mark[-1].tval, yystack.l_mark[-2].cval, yystack.l_mark[0].id); yyval.nlist->next = NULL; } break; -case 12: +case 11: #line 74 "inherit2.y" yyval.cval = cLOCAL; break; -case 13: +case 12: #line 75 "inherit2.y" { yyval.nlist = yystack.l_mark[0].nlist; } break; -#line 1181 "inherit2.tab.c" +#line 1186 "inherit2.tab.c" default: break; } @@ -1265,12 +1270,11 @@ break; } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; - fprintf(stderr, "%s[%d]: state %d, reading %d (%s)\n", + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; + fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n", YYDEBUGSTR, yydepth, YYFINAL, yychar, yys); } #endif @@ -1297,7 +1301,7 @@ break; } #endif if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yyloc; @@ -1332,7 +1336,7 @@ yyvalid: yylexp = yylexemes + yypath->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base); - memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base); memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) diff --git a/test/btyacc/ok_syntax1.tab.c b/test/btyacc/ok_syntax1.tab.c index 5ecb9f9..7177374 100644 --- a/test/btyacc/ok_syntax1.tab.c +++ b/test/btyacc/ok_syntax1.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 @@ -130,13 +130,13 @@ int YYLEX_DECL(); static void YYERROR_DECL(); #endif -#line 43 "ok_syntax1.y" #ifdef YYSTYPE #undef YYSTYPE_IS_DECLARED #define YYSTYPE_IS_DECLARED 1 #endif #ifndef YYSTYPE_IS_DECLARED #define YYSTYPE_IS_DECLARED 1 +#line 43 "ok_syntax1.y" typedef union { char * cval; @@ -417,9 +417,9 @@ do \ typedef struct { unsigned stacksize; - short *s_base; - short *s_mark; - short *s_last; + YYINT *s_base; + YYINT *s_mark; + YYINT *s_last; YYSTYPE *l_base; YYSTYPE *l_mark; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -502,18 +502,18 @@ YYLEX_DECL() #endif /* YYBTYACC */ #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif -#include <stdlib.h> /* needed for malloc, etc */ -#include <string.h> /* needed for memset */ +#include <stdlib.h> /* needed for malloc, etc */ +#include <string.h> /* needed for memset */ /* allocate initial stack or double stack size, up to YYMAXDEPTH */ static int yygrowstack(YYSTACKDATA *data) { int i; unsigned newsize; - short *newss; + YYINT *newss; YYSTYPE *newvs; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) YYLTYPE *newps; @@ -527,7 +527,7 @@ static int yygrowstack(YYSTACKDATA *data) newsize = YYMAXDEPTH; i = (int) (data->s_mark - data->s_base); - newss = (short *)realloc(data->s_base, newsize * sizeof(*newss)); + newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss)); if (newss == 0) return YYENOMEM; @@ -591,7 +591,7 @@ yyNewState(unsigned size) #endif return p; } - p->yystack.s_base = (short *) malloc(size * sizeof(short)); + p->yystack.s_base = (YYINT *) malloc(size * sizeof(YYINT)); if (p->yystack.s_base == NULL) return NULL; p->yystack.l_base = (YYSTYPE *) malloc(size * sizeof(YYSTYPE)); if (p->yystack.l_base == NULL) return NULL; @@ -701,6 +701,8 @@ YYPARSE_DECL() yyps = yyNewState(0); if (yyps == 0) goto yyenomem; yyps->save = 0; #endif /* YYBTYACC */ + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -774,11 +776,10 @@ yyloop: } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)", YYDEBUGSTR, yydepth, yystate, yychar, yys); #ifdef YYSTYPE_TOSTRING @@ -837,7 +838,7 @@ yyloop: save->state = yystate; save->errflag = yyerrflag; save->yystack.s_mark = save->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); save->yystack.l_mark = save->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -918,7 +919,7 @@ yyloop: if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yyctable[ctry]; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yylval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yylloc; @@ -964,9 +965,18 @@ yyloop: yynewerrflag = 1; goto yyerrhandler; - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: + /* explicit YYERROR from an action -- pop the rhs of the rule reduced + * before looking for error recovery */ + yystack.s_mark -= yym; + yystate = *yystack.s_mark; + yystack.l_mark -= yym; +#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) + yystack.p_mark -= yym; +#endif + yynewerrflag = 0; yyerrhandler: while (yyps->save) @@ -991,7 +1001,7 @@ yyerrhandler: yyerrctx->state = yystate; yyerrctx->errflag = yyerrflag; yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -1007,7 +1017,7 @@ yyerrhandler: yylexp = yylexemes + save->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base); - memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base); memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -1042,7 +1052,7 @@ yyerrhandler: yylloc = yylpp[-1]; #endif yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base); - memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base); memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -1064,7 +1074,7 @@ yyerrhandler: #endif #if !YYBTYACC - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: #endif ++yynerrs; @@ -1133,7 +1143,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n", YYDEBUGSTR, yydepth, yystate, yychar, yys); } @@ -1260,7 +1270,7 @@ case 18: #line 101 "ok_syntax1.y" { yyval.ival = (*base) * yystack.l_mark[-1].ival + yystack.l_mark[0].ival; } break; -#line 1264 "ok_syntax1.tab.c" +#line 1274 "ok_syntax1.tab.c" default: break; } @@ -1348,12 +1358,11 @@ break; } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; - fprintf(stderr, "%s[%d]: state %d, reading %d (%s)\n", + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; + fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n", YYDEBUGSTR, yydepth, YYFINAL, yychar, yys); } #endif @@ -1380,7 +1389,7 @@ break; } #endif if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yyloc; @@ -1415,7 +1424,7 @@ yyvalid: yylexp = yylexemes + yypath->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base); - memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base); memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) diff --git a/test/btyacc/pure_calc.tab.c b/test/btyacc/pure_calc.tab.c index 00dbd72..380bccf 100644 --- a/test/btyacc/pure_calc.tab.c +++ b/test/btyacc/pure_calc.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 @@ -397,9 +397,9 @@ do \ typedef struct { unsigned stacksize; - short *s_base; - short *s_mark; - short *s_last; + YYINT *s_base; + YYINT *s_mark; + YYINT *s_last; YYSTYPE *l_base; YYSTYPE *l_mark; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -475,18 +475,18 @@ YYLEX_DECL() #endif /* YYBTYACC */ #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif -#include <stdlib.h> /* needed for malloc, etc */ -#include <string.h> /* needed for memset */ +#include <stdlib.h> /* needed for malloc, etc */ +#include <string.h> /* needed for memset */ /* allocate initial stack or double stack size, up to YYMAXDEPTH */ static int yygrowstack(YYSTACKDATA *data) { int i; unsigned newsize; - short *newss; + YYINT *newss; YYSTYPE *newvs; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) YYLTYPE *newps; @@ -500,7 +500,7 @@ static int yygrowstack(YYSTACKDATA *data) newsize = YYMAXDEPTH; i = (int) (data->s_mark - data->s_base); - newss = (short *)realloc(data->s_base, newsize * sizeof(*newss)); + newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss)); if (newss == 0) return YYENOMEM; @@ -564,7 +564,7 @@ yyNewState(unsigned size) #endif return p; } - p->yystack.s_base = (short *) malloc(size * sizeof(short)); + p->yystack.s_base = (YYINT *) malloc(size * sizeof(YYINT)); if (p->yystack.s_base == NULL) return NULL; p->yystack.l_base = (YYSTYPE *) malloc(size * sizeof(YYSTYPE)); if (p->yystack.l_base == NULL) return NULL; @@ -674,6 +674,8 @@ YYPARSE_DECL() yyps = yyNewState(0); if (yyps == 0) goto yyenomem; yyps->save = 0; #endif /* YYBTYACC */ + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -747,11 +749,10 @@ yyloop: } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)", YYDEBUGSTR, yydepth, yystate, yychar, yys); #ifdef YYSTYPE_TOSTRING @@ -810,7 +811,7 @@ yyloop: save->state = yystate; save->errflag = yyerrflag; save->yystack.s_mark = save->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); save->yystack.l_mark = save->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -891,7 +892,7 @@ yyloop: if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yyctable[ctry]; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yylval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yylloc; @@ -937,9 +938,18 @@ yyloop: yynewerrflag = 1; goto yyerrhandler; - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: + /* explicit YYERROR from an action -- pop the rhs of the rule reduced + * before looking for error recovery */ + yystack.s_mark -= yym; + yystate = *yystack.s_mark; + yystack.l_mark -= yym; +#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) + yystack.p_mark -= yym; +#endif + yynewerrflag = 0; yyerrhandler: while (yyps->save) @@ -964,7 +974,7 @@ yyerrhandler: yyerrctx->state = yystate; yyerrctx->errflag = yyerrflag; yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -980,7 +990,7 @@ yyerrhandler: yylexp = yylexemes + save->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base); - memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base); memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -1015,7 +1025,7 @@ yyerrhandler: yylloc = yylpp[-1]; #endif yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base); - memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base); memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -1037,7 +1047,7 @@ yyerrhandler: #endif #if !YYBTYACC - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: #endif ++yynerrs; @@ -1106,7 +1116,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n", YYDEBUGSTR, yydepth, yystate, yychar, yys); } @@ -1233,7 +1243,7 @@ case 18: #line 69 "pure_calc.y" { yyval = base * yystack.l_mark[-1] + yystack.l_mark[0]; } break; -#line 1237 "pure_calc.tab.c" +#line 1247 "pure_calc.tab.c" default: break; } @@ -1321,12 +1331,11 @@ break; } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; - fprintf(stderr, "%s[%d]: state %d, reading %d (%s)\n", + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; + fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n", YYDEBUGSTR, yydepth, YYFINAL, yychar, yys); } #endif @@ -1353,7 +1362,7 @@ break; } #endif if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yyloc; @@ -1388,7 +1397,7 @@ yyvalid: yylexp = yylexemes + yypath->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base); - memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base); memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) diff --git a/test/btyacc/pure_error.tab.c b/test/btyacc/pure_error.tab.c index 9fcd309..c895348 100644 --- a/test/btyacc/pure_error.tab.c +++ b/test/btyacc/pure_error.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 @@ -285,9 +285,9 @@ do \ typedef struct { unsigned stacksize; - short *s_base; - short *s_mark; - short *s_last; + YYINT *s_base; + YYINT *s_mark; + YYINT *s_last; YYSTYPE *l_base; YYSTYPE *l_mark; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -343,18 +343,18 @@ yyerror(const char* s) #endif /* YYBTYACC */ #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif -#include <stdlib.h> /* needed for malloc, etc */ -#include <string.h> /* needed for memset */ +#include <stdlib.h> /* needed for malloc, etc */ +#include <string.h> /* needed for memset */ /* allocate initial stack or double stack size, up to YYMAXDEPTH */ static int yygrowstack(YYSTACKDATA *data) { int i; unsigned newsize; - short *newss; + YYINT *newss; YYSTYPE *newvs; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) YYLTYPE *newps; @@ -368,7 +368,7 @@ static int yygrowstack(YYSTACKDATA *data) newsize = YYMAXDEPTH; i = (int) (data->s_mark - data->s_base); - newss = (short *)realloc(data->s_base, newsize * sizeof(*newss)); + newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss)); if (newss == 0) return YYENOMEM; @@ -432,7 +432,7 @@ yyNewState(unsigned size) #endif return p; } - p->yystack.s_base = (short *) malloc(size * sizeof(short)); + p->yystack.s_base = (YYINT *) malloc(size * sizeof(YYINT)); if (p->yystack.s_base == NULL) return NULL; p->yystack.l_base = (YYSTYPE *) malloc(size * sizeof(YYSTYPE)); if (p->yystack.l_base == NULL) return NULL; @@ -542,6 +542,8 @@ YYPARSE_DECL() yyps = yyNewState(0); if (yyps == 0) goto yyenomem; yyps->save = 0; #endif /* YYBTYACC */ + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -615,11 +617,10 @@ yyloop: } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)", YYDEBUGSTR, yydepth, yystate, yychar, yys); #ifdef YYSTYPE_TOSTRING @@ -678,7 +679,7 @@ yyloop: save->state = yystate; save->errflag = yyerrflag; save->yystack.s_mark = save->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); save->yystack.l_mark = save->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -759,7 +760,7 @@ yyloop: if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yyctable[ctry]; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yylval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yylloc; @@ -805,9 +806,18 @@ yyloop: yynewerrflag = 1; goto yyerrhandler; - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: + /* explicit YYERROR from an action -- pop the rhs of the rule reduced + * before looking for error recovery */ + yystack.s_mark -= yym; + yystate = *yystack.s_mark; + yystack.l_mark -= yym; +#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) + yystack.p_mark -= yym; +#endif + yynewerrflag = 0; yyerrhandler: while (yyps->save) @@ -832,7 +842,7 @@ yyerrhandler: yyerrctx->state = yystate; yyerrctx->errflag = yyerrflag; yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -848,7 +858,7 @@ yyerrhandler: yylexp = yylexemes + save->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base); - memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base); memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -883,7 +893,7 @@ yyerrhandler: yylloc = yylpp[-1]; #endif yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base); - memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base); memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -905,7 +915,7 @@ yyerrhandler: #endif #if !YYBTYACC - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: #endif ++yynerrs; @@ -974,7 +984,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n", YYDEBUGSTR, yydepth, yystate, yychar, yys); } @@ -1128,12 +1138,11 @@ yyreduce: } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; - fprintf(stderr, "%s[%d]: state %d, reading %d (%s)\n", + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; + fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n", YYDEBUGSTR, yydepth, YYFINAL, yychar, yys); } #endif @@ -1160,7 +1169,7 @@ yyreduce: } #endif if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yyloc; @@ -1195,7 +1204,7 @@ yyvalid: yylexp = yylexemes + yypath->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base); - memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base); memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) diff --git a/test/btyacc/quote_calc-s.tab.c b/test/btyacc/quote_calc-s.tab.c index 3462a45..5860296 100644 --- a/test/btyacc/quote_calc-s.tab.c +++ b/test/btyacc/quote_calc-s.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 @@ -415,9 +415,9 @@ do \ typedef struct { unsigned stacksize; - short *s_base; - short *s_mark; - short *s_last; + YYINT *s_base; + YYINT *s_mark; + YYINT *s_last; YYSTYPE *l_base; YYSTYPE *l_mark; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -529,18 +529,18 @@ yylex(void) { #endif /* YYBTYACC */ #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif -#include <stdlib.h> /* needed for malloc, etc */ -#include <string.h> /* needed for memset */ +#include <stdlib.h> /* needed for malloc, etc */ +#include <string.h> /* needed for memset */ /* allocate initial stack or double stack size, up to YYMAXDEPTH */ static int yygrowstack(YYSTACKDATA *data) { int i; unsigned newsize; - short *newss; + YYINT *newss; YYSTYPE *newvs; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) YYLTYPE *newps; @@ -554,7 +554,7 @@ static int yygrowstack(YYSTACKDATA *data) newsize = YYMAXDEPTH; i = (int) (data->s_mark - data->s_base); - newss = (short *)realloc(data->s_base, newsize * sizeof(*newss)); + newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss)); if (newss == 0) return YYENOMEM; @@ -618,7 +618,7 @@ yyNewState(unsigned size) #endif return p; } - p->yystack.s_base = (short *) malloc(size * sizeof(short)); + p->yystack.s_base = (YYINT *) malloc(size * sizeof(YYINT)); if (p->yystack.s_base == NULL) return NULL; p->yystack.l_base = (YYSTYPE *) malloc(size * sizeof(YYSTYPE)); if (p->yystack.l_base == NULL) return NULL; @@ -678,6 +678,8 @@ YYPARSE_DECL() yyps = yyNewState(0); if (yyps == 0) goto yyenomem; yyps->save = 0; #endif /* YYBTYACC */ + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -751,11 +753,10 @@ yyloop: } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)", YYDEBUGSTR, yydepth, yystate, yychar, yys); #ifdef YYSTYPE_TOSTRING @@ -814,7 +815,7 @@ yyloop: save->state = yystate; save->errflag = yyerrflag; save->yystack.s_mark = save->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); save->yystack.l_mark = save->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -895,7 +896,7 @@ yyloop: if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yyctable[ctry]; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yylval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yylloc; @@ -941,9 +942,18 @@ yyloop: yynewerrflag = 1; goto yyerrhandler; - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: + /* explicit YYERROR from an action -- pop the rhs of the rule reduced + * before looking for error recovery */ + yystack.s_mark -= yym; + yystate = *yystack.s_mark; + yystack.l_mark -= yym; +#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) + yystack.p_mark -= yym; +#endif + yynewerrflag = 0; yyerrhandler: while (yyps->save) @@ -968,7 +978,7 @@ yyerrhandler: yyerrctx->state = yystate; yyerrctx->errflag = yyerrflag; yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -984,7 +994,7 @@ yyerrhandler: yylexp = yylexemes + save->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base); - memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base); memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -1019,7 +1029,7 @@ yyerrhandler: yylloc = yylpp[-1]; #endif yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base); - memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base); memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -1041,7 +1051,7 @@ yyerrhandler: #endif #if !YYBTYACC - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: #endif ++yynerrs; @@ -1110,7 +1120,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n", YYDEBUGSTR, yydepth, yystate, yychar, yys); } @@ -1237,7 +1247,7 @@ case 18: #line 70 "quote_calc.y" { yyval = base * yystack.l_mark[-1] + yystack.l_mark[0]; } break; -#line 1241 "quote_calc-s.tab.c" +#line 1251 "quote_calc-s.tab.c" default: break; } @@ -1325,12 +1335,11 @@ break; } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; - fprintf(stderr, "%s[%d]: state %d, reading %d (%s)\n", + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; + fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n", YYDEBUGSTR, yydepth, YYFINAL, yychar, yys); } #endif @@ -1357,7 +1366,7 @@ break; } #endif if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yyloc; @@ -1392,7 +1401,7 @@ yyvalid: yylexp = yylexemes + yypath->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base); - memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base); memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) diff --git a/test/btyacc/quote_calc.tab.c b/test/btyacc/quote_calc.tab.c index 350252e..0fa5e60 100644 --- a/test/btyacc/quote_calc.tab.c +++ b/test/btyacc/quote_calc.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 @@ -421,9 +421,9 @@ do \ typedef struct { unsigned stacksize; - short *s_base; - short *s_mark; - short *s_last; + YYINT *s_base; + YYINT *s_mark; + YYINT *s_last; YYSTYPE *l_base; YYSTYPE *l_mark; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -535,18 +535,18 @@ yylex(void) { #endif /* YYBTYACC */ #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif -#include <stdlib.h> /* needed for malloc, etc */ -#include <string.h> /* needed for memset */ +#include <stdlib.h> /* needed for malloc, etc */ +#include <string.h> /* needed for memset */ /* allocate initial stack or double stack size, up to YYMAXDEPTH */ static int yygrowstack(YYSTACKDATA *data) { int i; unsigned newsize; - short *newss; + YYINT *newss; YYSTYPE *newvs; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) YYLTYPE *newps; @@ -560,7 +560,7 @@ static int yygrowstack(YYSTACKDATA *data) newsize = YYMAXDEPTH; i = (int) (data->s_mark - data->s_base); - newss = (short *)realloc(data->s_base, newsize * sizeof(*newss)); + newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss)); if (newss == 0) return YYENOMEM; @@ -624,7 +624,7 @@ yyNewState(unsigned size) #endif return p; } - p->yystack.s_base = (short *) malloc(size * sizeof(short)); + p->yystack.s_base = (YYINT *) malloc(size * sizeof(YYINT)); if (p->yystack.s_base == NULL) return NULL; p->yystack.l_base = (YYSTYPE *) malloc(size * sizeof(YYSTYPE)); if (p->yystack.l_base == NULL) return NULL; @@ -684,6 +684,8 @@ YYPARSE_DECL() yyps = yyNewState(0); if (yyps == 0) goto yyenomem; yyps->save = 0; #endif /* YYBTYACC */ + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -757,11 +759,10 @@ yyloop: } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)", YYDEBUGSTR, yydepth, yystate, yychar, yys); #ifdef YYSTYPE_TOSTRING @@ -820,7 +821,7 @@ yyloop: save->state = yystate; save->errflag = yyerrflag; save->yystack.s_mark = save->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); save->yystack.l_mark = save->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -901,7 +902,7 @@ yyloop: if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yyctable[ctry]; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yylval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yylloc; @@ -947,9 +948,18 @@ yyloop: yynewerrflag = 1; goto yyerrhandler; - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: + /* explicit YYERROR from an action -- pop the rhs of the rule reduced + * before looking for error recovery */ + yystack.s_mark -= yym; + yystate = *yystack.s_mark; + yystack.l_mark -= yym; +#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) + yystack.p_mark -= yym; +#endif + yynewerrflag = 0; yyerrhandler: while (yyps->save) @@ -974,7 +984,7 @@ yyerrhandler: yyerrctx->state = yystate; yyerrctx->errflag = yyerrflag; yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -990,7 +1000,7 @@ yyerrhandler: yylexp = yylexemes + save->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base); - memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base); memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -1025,7 +1035,7 @@ yyerrhandler: yylloc = yylpp[-1]; #endif yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base); - memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base); memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -1047,7 +1057,7 @@ yyerrhandler: #endif #if !YYBTYACC - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: #endif ++yynerrs; @@ -1116,7 +1126,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n", YYDEBUGSTR, yydepth, yystate, yychar, yys); } @@ -1243,7 +1253,7 @@ case 18: #line 70 "quote_calc.y" { yyval = base * yystack.l_mark[-1] + yystack.l_mark[0]; } break; -#line 1247 "quote_calc.tab.c" +#line 1257 "quote_calc.tab.c" default: break; } @@ -1331,12 +1341,11 @@ break; } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; - fprintf(stderr, "%s[%d]: state %d, reading %d (%s)\n", + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; + fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n", YYDEBUGSTR, yydepth, YYFINAL, yychar, yys); } #endif @@ -1363,7 +1372,7 @@ break; } #endif if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yyloc; @@ -1398,7 +1407,7 @@ yyvalid: yylexp = yylexemes + yypath->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base); - memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base); memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) diff --git a/test/btyacc/quote_calc2-s.tab.c b/test/btyacc/quote_calc2-s.tab.c index c5b4cf9..72ea6ec 100644 --- a/test/btyacc/quote_calc2-s.tab.c +++ b/test/btyacc/quote_calc2-s.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 @@ -415,9 +415,9 @@ do \ typedef struct { unsigned stacksize; - short *s_base; - short *s_mark; - short *s_last; + YYINT *s_base; + YYINT *s_mark; + YYINT *s_last; YYSTYPE *l_base; YYSTYPE *l_mark; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -529,18 +529,18 @@ yylex(void) { #endif /* YYBTYACC */ #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif -#include <stdlib.h> /* needed for malloc, etc */ -#include <string.h> /* needed for memset */ +#include <stdlib.h> /* needed for malloc, etc */ +#include <string.h> /* needed for memset */ /* allocate initial stack or double stack size, up to YYMAXDEPTH */ static int yygrowstack(YYSTACKDATA *data) { int i; unsigned newsize; - short *newss; + YYINT *newss; YYSTYPE *newvs; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) YYLTYPE *newps; @@ -554,7 +554,7 @@ static int yygrowstack(YYSTACKDATA *data) newsize = YYMAXDEPTH; i = (int) (data->s_mark - data->s_base); - newss = (short *)realloc(data->s_base, newsize * sizeof(*newss)); + newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss)); if (newss == 0) return YYENOMEM; @@ -618,7 +618,7 @@ yyNewState(unsigned size) #endif return p; } - p->yystack.s_base = (short *) malloc(size * sizeof(short)); + p->yystack.s_base = (YYINT *) malloc(size * sizeof(YYINT)); if (p->yystack.s_base == NULL) return NULL; p->yystack.l_base = (YYSTYPE *) malloc(size * sizeof(YYSTYPE)); if (p->yystack.l_base == NULL) return NULL; @@ -678,6 +678,8 @@ YYPARSE_DECL() yyps = yyNewState(0); if (yyps == 0) goto yyenomem; yyps->save = 0; #endif /* YYBTYACC */ + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -751,11 +753,10 @@ yyloop: } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)", YYDEBUGSTR, yydepth, yystate, yychar, yys); #ifdef YYSTYPE_TOSTRING @@ -814,7 +815,7 @@ yyloop: save->state = yystate; save->errflag = yyerrflag; save->yystack.s_mark = save->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); save->yystack.l_mark = save->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -895,7 +896,7 @@ yyloop: if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yyctable[ctry]; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yylval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yylloc; @@ -941,9 +942,18 @@ yyloop: yynewerrflag = 1; goto yyerrhandler; - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: + /* explicit YYERROR from an action -- pop the rhs of the rule reduced + * before looking for error recovery */ + yystack.s_mark -= yym; + yystate = *yystack.s_mark; + yystack.l_mark -= yym; +#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) + yystack.p_mark -= yym; +#endif + yynewerrflag = 0; yyerrhandler: while (yyps->save) @@ -968,7 +978,7 @@ yyerrhandler: yyerrctx->state = yystate; yyerrctx->errflag = yyerrflag; yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -984,7 +994,7 @@ yyerrhandler: yylexp = yylexemes + save->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base); - memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base); memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -1019,7 +1029,7 @@ yyerrhandler: yylloc = yylpp[-1]; #endif yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base); - memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base); memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -1041,7 +1051,7 @@ yyerrhandler: #endif #if !YYBTYACC - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: #endif ++yynerrs; @@ -1110,7 +1120,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n", YYDEBUGSTR, yydepth, yystate, yychar, yys); } @@ -1237,7 +1247,7 @@ case 18: #line 70 "quote_calc2.y" { yyval = base * yystack.l_mark[-1] + yystack.l_mark[0]; } break; -#line 1241 "quote_calc2-s.tab.c" +#line 1251 "quote_calc2-s.tab.c" default: break; } @@ -1325,12 +1335,11 @@ break; } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; - fprintf(stderr, "%s[%d]: state %d, reading %d (%s)\n", + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; + fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n", YYDEBUGSTR, yydepth, YYFINAL, yychar, yys); } #endif @@ -1357,7 +1366,7 @@ break; } #endif if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yyloc; @@ -1392,7 +1401,7 @@ yyvalid: yylexp = yylexemes + yypath->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base); - memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base); memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) diff --git a/test/btyacc/quote_calc2.tab.c b/test/btyacc/quote_calc2.tab.c index 703e60f..c5e2430 100644 --- a/test/btyacc/quote_calc2.tab.c +++ b/test/btyacc/quote_calc2.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 @@ -421,9 +421,9 @@ do \ typedef struct { unsigned stacksize; - short *s_base; - short *s_mark; - short *s_last; + YYINT *s_base; + YYINT *s_mark; + YYINT *s_last; YYSTYPE *l_base; YYSTYPE *l_mark; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -535,18 +535,18 @@ yylex(void) { #endif /* YYBTYACC */ #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif -#include <stdlib.h> /* needed for malloc, etc */ -#include <string.h> /* needed for memset */ +#include <stdlib.h> /* needed for malloc, etc */ +#include <string.h> /* needed for memset */ /* allocate initial stack or double stack size, up to YYMAXDEPTH */ static int yygrowstack(YYSTACKDATA *data) { int i; unsigned newsize; - short *newss; + YYINT *newss; YYSTYPE *newvs; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) YYLTYPE *newps; @@ -560,7 +560,7 @@ static int yygrowstack(YYSTACKDATA *data) newsize = YYMAXDEPTH; i = (int) (data->s_mark - data->s_base); - newss = (short *)realloc(data->s_base, newsize * sizeof(*newss)); + newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss)); if (newss == 0) return YYENOMEM; @@ -624,7 +624,7 @@ yyNewState(unsigned size) #endif return p; } - p->yystack.s_base = (short *) malloc(size * sizeof(short)); + p->yystack.s_base = (YYINT *) malloc(size * sizeof(YYINT)); if (p->yystack.s_base == NULL) return NULL; p->yystack.l_base = (YYSTYPE *) malloc(size * sizeof(YYSTYPE)); if (p->yystack.l_base == NULL) return NULL; @@ -684,6 +684,8 @@ YYPARSE_DECL() yyps = yyNewState(0); if (yyps == 0) goto yyenomem; yyps->save = 0; #endif /* YYBTYACC */ + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -757,11 +759,10 @@ yyloop: } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)", YYDEBUGSTR, yydepth, yystate, yychar, yys); #ifdef YYSTYPE_TOSTRING @@ -820,7 +821,7 @@ yyloop: save->state = yystate; save->errflag = yyerrflag; save->yystack.s_mark = save->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); save->yystack.l_mark = save->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -901,7 +902,7 @@ yyloop: if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yyctable[ctry]; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yylval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yylloc; @@ -947,9 +948,18 @@ yyloop: yynewerrflag = 1; goto yyerrhandler; - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: + /* explicit YYERROR from an action -- pop the rhs of the rule reduced + * before looking for error recovery */ + yystack.s_mark -= yym; + yystate = *yystack.s_mark; + yystack.l_mark -= yym; +#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) + yystack.p_mark -= yym; +#endif + yynewerrflag = 0; yyerrhandler: while (yyps->save) @@ -974,7 +984,7 @@ yyerrhandler: yyerrctx->state = yystate; yyerrctx->errflag = yyerrflag; yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -990,7 +1000,7 @@ yyerrhandler: yylexp = yylexemes + save->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base); - memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base); memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -1025,7 +1035,7 @@ yyerrhandler: yylloc = yylpp[-1]; #endif yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base); - memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base); memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -1047,7 +1057,7 @@ yyerrhandler: #endif #if !YYBTYACC - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: #endif ++yynerrs; @@ -1116,7 +1126,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n", YYDEBUGSTR, yydepth, yystate, yychar, yys); } @@ -1243,7 +1253,7 @@ case 18: #line 70 "quote_calc2.y" { yyval = base * yystack.l_mark[-1] + yystack.l_mark[0]; } break; -#line 1247 "quote_calc2.tab.c" +#line 1257 "quote_calc2.tab.c" default: break; } @@ -1331,12 +1341,11 @@ break; } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; - fprintf(stderr, "%s[%d]: state %d, reading %d (%s)\n", + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; + fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n", YYDEBUGSTR, yydepth, YYFINAL, yychar, yys); } #endif @@ -1363,7 +1372,7 @@ break; } #endif if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yyloc; @@ -1398,7 +1407,7 @@ yyvalid: yylexp = yylexemes + yypath->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base); - memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base); memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) diff --git a/test/btyacc/quote_calc3-s.tab.c b/test/btyacc/quote_calc3-s.tab.c index 080d917..93af811 100644 --- a/test/btyacc/quote_calc3-s.tab.c +++ b/test/btyacc/quote_calc3-s.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 @@ -416,9 +416,9 @@ do \ typedef struct { unsigned stacksize; - short *s_base; - short *s_mark; - short *s_last; + YYINT *s_base; + YYINT *s_mark; + YYINT *s_last; YYSTYPE *l_base; YYSTYPE *l_mark; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -530,18 +530,18 @@ yylex(void) { #endif /* YYBTYACC */ #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif -#include <stdlib.h> /* needed for malloc, etc */ -#include <string.h> /* needed for memset */ +#include <stdlib.h> /* needed for malloc, etc */ +#include <string.h> /* needed for memset */ /* allocate initial stack or double stack size, up to YYMAXDEPTH */ static int yygrowstack(YYSTACKDATA *data) { int i; unsigned newsize; - short *newss; + YYINT *newss; YYSTYPE *newvs; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) YYLTYPE *newps; @@ -555,7 +555,7 @@ static int yygrowstack(YYSTACKDATA *data) newsize = YYMAXDEPTH; i = (int) (data->s_mark - data->s_base); - newss = (short *)realloc(data->s_base, newsize * sizeof(*newss)); + newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss)); if (newss == 0) return YYENOMEM; @@ -619,7 +619,7 @@ yyNewState(unsigned size) #endif return p; } - p->yystack.s_base = (short *) malloc(size * sizeof(short)); + p->yystack.s_base = (YYINT *) malloc(size * sizeof(YYINT)); if (p->yystack.s_base == NULL) return NULL; p->yystack.l_base = (YYSTYPE *) malloc(size * sizeof(YYSTYPE)); if (p->yystack.l_base == NULL) return NULL; @@ -679,6 +679,8 @@ YYPARSE_DECL() yyps = yyNewState(0); if (yyps == 0) goto yyenomem; yyps->save = 0; #endif /* YYBTYACC */ + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -752,11 +754,10 @@ yyloop: } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)", YYDEBUGSTR, yydepth, yystate, yychar, yys); #ifdef YYSTYPE_TOSTRING @@ -815,7 +816,7 @@ yyloop: save->state = yystate; save->errflag = yyerrflag; save->yystack.s_mark = save->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); save->yystack.l_mark = save->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -896,7 +897,7 @@ yyloop: if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yyctable[ctry]; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yylval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yylloc; @@ -942,9 +943,18 @@ yyloop: yynewerrflag = 1; goto yyerrhandler; - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: + /* explicit YYERROR from an action -- pop the rhs of the rule reduced + * before looking for error recovery */ + yystack.s_mark -= yym; + yystate = *yystack.s_mark; + yystack.l_mark -= yym; +#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) + yystack.p_mark -= yym; +#endif + yynewerrflag = 0; yyerrhandler: while (yyps->save) @@ -969,7 +979,7 @@ yyerrhandler: yyerrctx->state = yystate; yyerrctx->errflag = yyerrflag; yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -985,7 +995,7 @@ yyerrhandler: yylexp = yylexemes + save->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base); - memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base); memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -1020,7 +1030,7 @@ yyerrhandler: yylloc = yylpp[-1]; #endif yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base); - memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base); memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -1042,7 +1052,7 @@ yyerrhandler: #endif #if !YYBTYACC - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: #endif ++yynerrs; @@ -1111,7 +1121,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n", YYDEBUGSTR, yydepth, yystate, yychar, yys); } @@ -1238,7 +1248,7 @@ case 18: #line 70 "quote_calc3.y" { yyval = base * yystack.l_mark[-1] + yystack.l_mark[0]; } break; -#line 1242 "quote_calc3-s.tab.c" +#line 1252 "quote_calc3-s.tab.c" default: break; } @@ -1326,12 +1336,11 @@ break; } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; - fprintf(stderr, "%s[%d]: state %d, reading %d (%s)\n", + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; + fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n", YYDEBUGSTR, yydepth, YYFINAL, yychar, yys); } #endif @@ -1358,7 +1367,7 @@ break; } #endif if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yyloc; @@ -1393,7 +1402,7 @@ yyvalid: yylexp = yylexemes + yypath->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base); - memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base); memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) diff --git a/test/btyacc/quote_calc3.tab.c b/test/btyacc/quote_calc3.tab.c index 12bfcba..2e929c5 100644 --- a/test/btyacc/quote_calc3.tab.c +++ b/test/btyacc/quote_calc3.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 @@ -416,9 +416,9 @@ do \ typedef struct { unsigned stacksize; - short *s_base; - short *s_mark; - short *s_last; + YYINT *s_base; + YYINT *s_mark; + YYINT *s_last; YYSTYPE *l_base; YYSTYPE *l_mark; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -530,18 +530,18 @@ yylex(void) { #endif /* YYBTYACC */ #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif -#include <stdlib.h> /* needed for malloc, etc */ -#include <string.h> /* needed for memset */ +#include <stdlib.h> /* needed for malloc, etc */ +#include <string.h> /* needed for memset */ /* allocate initial stack or double stack size, up to YYMAXDEPTH */ static int yygrowstack(YYSTACKDATA *data) { int i; unsigned newsize; - short *newss; + YYINT *newss; YYSTYPE *newvs; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) YYLTYPE *newps; @@ -555,7 +555,7 @@ static int yygrowstack(YYSTACKDATA *data) newsize = YYMAXDEPTH; i = (int) (data->s_mark - data->s_base); - newss = (short *)realloc(data->s_base, newsize * sizeof(*newss)); + newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss)); if (newss == 0) return YYENOMEM; @@ -619,7 +619,7 @@ yyNewState(unsigned size) #endif return p; } - p->yystack.s_base = (short *) malloc(size * sizeof(short)); + p->yystack.s_base = (YYINT *) malloc(size * sizeof(YYINT)); if (p->yystack.s_base == NULL) return NULL; p->yystack.l_base = (YYSTYPE *) malloc(size * sizeof(YYSTYPE)); if (p->yystack.l_base == NULL) return NULL; @@ -679,6 +679,8 @@ YYPARSE_DECL() yyps = yyNewState(0); if (yyps == 0) goto yyenomem; yyps->save = 0; #endif /* YYBTYACC */ + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -752,11 +754,10 @@ yyloop: } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)", YYDEBUGSTR, yydepth, yystate, yychar, yys); #ifdef YYSTYPE_TOSTRING @@ -815,7 +816,7 @@ yyloop: save->state = yystate; save->errflag = yyerrflag; save->yystack.s_mark = save->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); save->yystack.l_mark = save->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -896,7 +897,7 @@ yyloop: if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yyctable[ctry]; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yylval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yylloc; @@ -942,9 +943,18 @@ yyloop: yynewerrflag = 1; goto yyerrhandler; - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: + /* explicit YYERROR from an action -- pop the rhs of the rule reduced + * before looking for error recovery */ + yystack.s_mark -= yym; + yystate = *yystack.s_mark; + yystack.l_mark -= yym; +#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) + yystack.p_mark -= yym; +#endif + yynewerrflag = 0; yyerrhandler: while (yyps->save) @@ -969,7 +979,7 @@ yyerrhandler: yyerrctx->state = yystate; yyerrctx->errflag = yyerrflag; yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -985,7 +995,7 @@ yyerrhandler: yylexp = yylexemes + save->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base); - memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base); memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -1020,7 +1030,7 @@ yyerrhandler: yylloc = yylpp[-1]; #endif yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base); - memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base); memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -1042,7 +1052,7 @@ yyerrhandler: #endif #if !YYBTYACC - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: #endif ++yynerrs; @@ -1111,7 +1121,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n", YYDEBUGSTR, yydepth, yystate, yychar, yys); } @@ -1238,7 +1248,7 @@ case 18: #line 70 "quote_calc3.y" { yyval = base * yystack.l_mark[-1] + yystack.l_mark[0]; } break; -#line 1242 "quote_calc3.tab.c" +#line 1252 "quote_calc3.tab.c" default: break; } @@ -1326,12 +1336,11 @@ break; } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; - fprintf(stderr, "%s[%d]: state %d, reading %d (%s)\n", + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; + fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n", YYDEBUGSTR, yydepth, YYFINAL, yychar, yys); } #endif @@ -1358,7 +1367,7 @@ break; } #endif if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yyloc; @@ -1393,7 +1402,7 @@ yyvalid: yylexp = yylexemes + yypath->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base); - memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base); memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) diff --git a/test/btyacc/quote_calc4-s.tab.c b/test/btyacc/quote_calc4-s.tab.c index c7c41f6..e95a599 100644 --- a/test/btyacc/quote_calc4-s.tab.c +++ b/test/btyacc/quote_calc4-s.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 @@ -416,9 +416,9 @@ do \ typedef struct { unsigned stacksize; - short *s_base; - short *s_mark; - short *s_last; + YYINT *s_base; + YYINT *s_mark; + YYINT *s_last; YYSTYPE *l_base; YYSTYPE *l_mark; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -530,18 +530,18 @@ yylex(void) { #endif /* YYBTYACC */ #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif -#include <stdlib.h> /* needed for malloc, etc */ -#include <string.h> /* needed for memset */ +#include <stdlib.h> /* needed for malloc, etc */ +#include <string.h> /* needed for memset */ /* allocate initial stack or double stack size, up to YYMAXDEPTH */ static int yygrowstack(YYSTACKDATA *data) { int i; unsigned newsize; - short *newss; + YYINT *newss; YYSTYPE *newvs; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) YYLTYPE *newps; @@ -555,7 +555,7 @@ static int yygrowstack(YYSTACKDATA *data) newsize = YYMAXDEPTH; i = (int) (data->s_mark - data->s_base); - newss = (short *)realloc(data->s_base, newsize * sizeof(*newss)); + newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss)); if (newss == 0) return YYENOMEM; @@ -619,7 +619,7 @@ yyNewState(unsigned size) #endif return p; } - p->yystack.s_base = (short *) malloc(size * sizeof(short)); + p->yystack.s_base = (YYINT *) malloc(size * sizeof(YYINT)); if (p->yystack.s_base == NULL) return NULL; p->yystack.l_base = (YYSTYPE *) malloc(size * sizeof(YYSTYPE)); if (p->yystack.l_base == NULL) return NULL; @@ -679,6 +679,8 @@ YYPARSE_DECL() yyps = yyNewState(0); if (yyps == 0) goto yyenomem; yyps->save = 0; #endif /* YYBTYACC */ + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -752,11 +754,10 @@ yyloop: } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)", YYDEBUGSTR, yydepth, yystate, yychar, yys); #ifdef YYSTYPE_TOSTRING @@ -815,7 +816,7 @@ yyloop: save->state = yystate; save->errflag = yyerrflag; save->yystack.s_mark = save->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); save->yystack.l_mark = save->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -896,7 +897,7 @@ yyloop: if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yyctable[ctry]; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yylval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yylloc; @@ -942,9 +943,18 @@ yyloop: yynewerrflag = 1; goto yyerrhandler; - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: + /* explicit YYERROR from an action -- pop the rhs of the rule reduced + * before looking for error recovery */ + yystack.s_mark -= yym; + yystate = *yystack.s_mark; + yystack.l_mark -= yym; +#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) + yystack.p_mark -= yym; +#endif + yynewerrflag = 0; yyerrhandler: while (yyps->save) @@ -969,7 +979,7 @@ yyerrhandler: yyerrctx->state = yystate; yyerrctx->errflag = yyerrflag; yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -985,7 +995,7 @@ yyerrhandler: yylexp = yylexemes + save->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base); - memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base); memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -1020,7 +1030,7 @@ yyerrhandler: yylloc = yylpp[-1]; #endif yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base); - memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base); memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -1042,7 +1052,7 @@ yyerrhandler: #endif #if !YYBTYACC - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: #endif ++yynerrs; @@ -1111,7 +1121,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n", YYDEBUGSTR, yydepth, yystate, yychar, yys); } @@ -1238,7 +1248,7 @@ case 18: #line 70 "quote_calc4.y" { yyval = base * yystack.l_mark[-1] + yystack.l_mark[0]; } break; -#line 1242 "quote_calc4-s.tab.c" +#line 1252 "quote_calc4-s.tab.c" default: break; } @@ -1326,12 +1336,11 @@ break; } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; - fprintf(stderr, "%s[%d]: state %d, reading %d (%s)\n", + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; + fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n", YYDEBUGSTR, yydepth, YYFINAL, yychar, yys); } #endif @@ -1358,7 +1367,7 @@ break; } #endif if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yyloc; @@ -1393,7 +1402,7 @@ yyvalid: yylexp = yylexemes + yypath->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base); - memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base); memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) diff --git a/test/btyacc/quote_calc4.tab.c b/test/btyacc/quote_calc4.tab.c index b28a561..fd5fc8e 100644 --- a/test/btyacc/quote_calc4.tab.c +++ b/test/btyacc/quote_calc4.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 @@ -416,9 +416,9 @@ do \ typedef struct { unsigned stacksize; - short *s_base; - short *s_mark; - short *s_last; + YYINT *s_base; + YYINT *s_mark; + YYINT *s_last; YYSTYPE *l_base; YYSTYPE *l_mark; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -530,18 +530,18 @@ yylex(void) { #endif /* YYBTYACC */ #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif -#include <stdlib.h> /* needed for malloc, etc */ -#include <string.h> /* needed for memset */ +#include <stdlib.h> /* needed for malloc, etc */ +#include <string.h> /* needed for memset */ /* allocate initial stack or double stack size, up to YYMAXDEPTH */ static int yygrowstack(YYSTACKDATA *data) { int i; unsigned newsize; - short *newss; + YYINT *newss; YYSTYPE *newvs; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) YYLTYPE *newps; @@ -555,7 +555,7 @@ static int yygrowstack(YYSTACKDATA *data) newsize = YYMAXDEPTH; i = (int) (data->s_mark - data->s_base); - newss = (short *)realloc(data->s_base, newsize * sizeof(*newss)); + newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss)); if (newss == 0) return YYENOMEM; @@ -619,7 +619,7 @@ yyNewState(unsigned size) #endif return p; } - p->yystack.s_base = (short *) malloc(size * sizeof(short)); + p->yystack.s_base = (YYINT *) malloc(size * sizeof(YYINT)); if (p->yystack.s_base == NULL) return NULL; p->yystack.l_base = (YYSTYPE *) malloc(size * sizeof(YYSTYPE)); if (p->yystack.l_base == NULL) return NULL; @@ -679,6 +679,8 @@ YYPARSE_DECL() yyps = yyNewState(0); if (yyps == 0) goto yyenomem; yyps->save = 0; #endif /* YYBTYACC */ + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -752,11 +754,10 @@ yyloop: } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)", YYDEBUGSTR, yydepth, yystate, yychar, yys); #ifdef YYSTYPE_TOSTRING @@ -815,7 +816,7 @@ yyloop: save->state = yystate; save->errflag = yyerrflag; save->yystack.s_mark = save->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); save->yystack.l_mark = save->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -896,7 +897,7 @@ yyloop: if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yyctable[ctry]; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yylval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yylloc; @@ -942,9 +943,18 @@ yyloop: yynewerrflag = 1; goto yyerrhandler; - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: + /* explicit YYERROR from an action -- pop the rhs of the rule reduced + * before looking for error recovery */ + yystack.s_mark -= yym; + yystate = *yystack.s_mark; + yystack.l_mark -= yym; +#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) + yystack.p_mark -= yym; +#endif + yynewerrflag = 0; yyerrhandler: while (yyps->save) @@ -969,7 +979,7 @@ yyerrhandler: yyerrctx->state = yystate; yyerrctx->errflag = yyerrflag; yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -985,7 +995,7 @@ yyerrhandler: yylexp = yylexemes + save->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base); - memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base); memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -1020,7 +1030,7 @@ yyerrhandler: yylloc = yylpp[-1]; #endif yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base); - memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base); memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -1042,7 +1052,7 @@ yyerrhandler: #endif #if !YYBTYACC - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: #endif ++yynerrs; @@ -1111,7 +1121,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n", YYDEBUGSTR, yydepth, yystate, yychar, yys); } @@ -1238,7 +1248,7 @@ case 18: #line 70 "quote_calc4.y" { yyval = base * yystack.l_mark[-1] + yystack.l_mark[0]; } break; -#line 1242 "quote_calc4.tab.c" +#line 1252 "quote_calc4.tab.c" default: break; } @@ -1326,12 +1336,11 @@ break; } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; - fprintf(stderr, "%s[%d]: state %d, reading %d (%s)\n", + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; + fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n", YYDEBUGSTR, yydepth, YYFINAL, yychar, yys); } #endif @@ -1358,7 +1367,7 @@ break; } #endif if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yyloc; @@ -1393,7 +1402,7 @@ yyvalid: yylexp = yylexemes + yypath->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base); - memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base); memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) diff --git a/test/btyacc/rename_debug.c b/test/btyacc/rename_debug.c index 3964bf1..ecb1221 100644 --- a/test/btyacc/rename_debug.c +++ b/test/btyacc/rename_debug.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 @@ -141,9 +141,9 @@ do \ typedef struct { unsigned stacksize; - short *s_base; - short *s_mark; - short *s_last; + YYINT *s_base; + YYINT *s_mark; + YYINT *s_last; YYSTYPE *l_base; YYSTYPE *l_mark; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -240,18 +240,18 @@ yyerror(const char* s) #endif /* YYBTYACC */ #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif -#include <stdlib.h> /* needed for malloc, etc */ -#include <string.h> /* needed for memset */ +#include <stdlib.h> /* needed for malloc, etc */ +#include <string.h> /* needed for memset */ /* allocate initial stack or double stack size, up to YYMAXDEPTH */ static int yygrowstack(YYSTACKDATA *data) { int i; unsigned newsize; - short *newss; + YYINT *newss; YYSTYPE *newvs; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) YYLTYPE *newps; @@ -265,7 +265,7 @@ static int yygrowstack(YYSTACKDATA *data) newsize = YYMAXDEPTH; i = (int) (data->s_mark - data->s_base); - newss = (short *)realloc(data->s_base, newsize * sizeof(*newss)); + newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss)); if (newss == 0) return YYENOMEM; @@ -329,7 +329,7 @@ yyNewState(unsigned size) #endif return p; } - p->yystack.s_base = (short *) malloc(size * sizeof(short)); + p->yystack.s_base = (YYINT *) malloc(size * sizeof(YYINT)); if (p->yystack.s_base == NULL) return NULL; p->yystack.l_base = (YYSTYPE *) malloc(size * sizeof(YYSTYPE)); if (p->yystack.l_base == NULL) return NULL; @@ -389,6 +389,8 @@ YYPARSE_DECL() yyps = yyNewState(0); if (yyps == 0) goto yyenomem; yyps->save = 0; #endif /* YYBTYACC */ + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -462,11 +464,10 @@ yyloop: } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)", YYDEBUGSTR, yydepth, yystate, yychar, yys); #ifdef YYSTYPE_TOSTRING @@ -525,7 +526,7 @@ yyloop: save->state = yystate; save->errflag = yyerrflag; save->yystack.s_mark = save->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); save->yystack.l_mark = save->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -606,7 +607,7 @@ yyloop: if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yyctable[ctry]; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yylval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yylloc; @@ -652,9 +653,18 @@ yyloop: yynewerrflag = 1; goto yyerrhandler; - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: + /* explicit YYERROR from an action -- pop the rhs of the rule reduced + * before looking for error recovery */ + yystack.s_mark -= yym; + yystate = *yystack.s_mark; + yystack.l_mark -= yym; +#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) + yystack.p_mark -= yym; +#endif + yynewerrflag = 0; yyerrhandler: while (yyps->save) @@ -679,7 +689,7 @@ yyerrhandler: yyerrctx->state = yystate; yyerrctx->errflag = yyerrflag; yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -695,7 +705,7 @@ yyerrhandler: yylexp = yylexemes + save->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base); - memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base); memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -730,7 +740,7 @@ yyerrhandler: yylloc = yylpp[-1]; #endif yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base); - memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base); memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -752,7 +762,7 @@ yyerrhandler: #endif #if !YYBTYACC - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: #endif ++yynerrs; @@ -821,7 +831,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n", YYDEBUGSTR, yydepth, yystate, yychar, yys); } @@ -975,12 +985,11 @@ yyreduce: } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; - fprintf(stderr, "%s[%d]: state %d, reading %d (%s)\n", + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; + fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n", YYDEBUGSTR, yydepth, YYFINAL, yychar, yys); } #endif @@ -1007,7 +1016,7 @@ yyreduce: } #endif if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yyloc; @@ -1042,7 +1051,7 @@ yyvalid: yylexp = yylexemes + yypath->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base); - memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base); memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) diff --git a/test/btyacc/varsyntax_calc1.tab.c b/test/btyacc/varsyntax_calc1.tab.c index 4a35a06..16422a9 100644 --- a/test/btyacc/varsyntax_calc1.tab.c +++ b/test/btyacc/varsyntax_calc1.tab.c @@ -1,6 +1,6 @@ /* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ -/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 @@ -144,13 +144,13 @@ int dcheck(INTERVAL); double dreg[26]; INTERVAL vreg[26]; -#line 32 "varsyntax_calc1.y" #ifdef YYSTYPE #undef YYSTYPE_IS_DECLARED #define YYSTYPE_IS_DECLARED 1 #endif #ifndef YYSTYPE_IS_DECLARED #define YYSTYPE_IS_DECLARED 1 +#line 32 "varsyntax_calc1.y" typedef union { int ival; /* dreg & vreg array index values*/ @@ -452,9 +452,9 @@ do \ typedef struct { unsigned stacksize; - short *s_base; - short *s_mark; - short *s_last; + YYINT *s_base; + YYINT *s_mark; + YYINT *s_last; YYSTYPE *l_base; YYSTYPE *l_mark; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -656,18 +656,18 @@ vdiv(double a, double b, INTERVAL v) #endif /* YYBTYACC */ #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif -#include <stdlib.h> /* needed for malloc, etc */ -#include <string.h> /* needed for memset */ +#include <stdlib.h> /* needed for malloc, etc */ +#include <string.h> /* needed for memset */ /* allocate initial stack or double stack size, up to YYMAXDEPTH */ static int yygrowstack(YYSTACKDATA *data) { int i; unsigned newsize; - short *newss; + YYINT *newss; YYSTYPE *newvs; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) YYLTYPE *newps; @@ -681,7 +681,7 @@ static int yygrowstack(YYSTACKDATA *data) newsize = YYMAXDEPTH; i = (int) (data->s_mark - data->s_base); - newss = (short *)realloc(data->s_base, newsize * sizeof(*newss)); + newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss)); if (newss == 0) return YYENOMEM; @@ -745,7 +745,7 @@ yyNewState(unsigned size) #endif return p; } - p->yystack.s_base = (short *) malloc(size * sizeof(short)); + p->yystack.s_base = (YYINT *) malloc(size * sizeof(YYINT)); if (p->yystack.s_base == NULL) return NULL; p->yystack.l_base = (YYSTYPE *) malloc(size * sizeof(YYSTYPE)); if (p->yystack.l_base == NULL) return NULL; @@ -805,6 +805,8 @@ YYPARSE_DECL() yyps = yyNewState(0); if (yyps == 0) goto yyenomem; yyps->save = 0; #endif /* YYBTYACC */ + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -878,11 +880,10 @@ yyloop: } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)", YYDEBUGSTR, yydepth, yystate, yychar, yys); #ifdef YYSTYPE_TOSTRING @@ -941,7 +942,7 @@ yyloop: save->state = yystate; save->errflag = yyerrflag; save->yystack.s_mark = save->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); save->yystack.l_mark = save->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -1022,7 +1023,7 @@ yyloop: if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yyctable[ctry]; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yylval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yylloc; @@ -1068,9 +1069,18 @@ yyloop: yynewerrflag = 1; goto yyerrhandler; - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: + /* explicit YYERROR from an action -- pop the rhs of the rule reduced + * before looking for error recovery */ + yystack.s_mark -= yym; + yystate = *yystack.s_mark; + yystack.l_mark -= yym; +#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) + yystack.p_mark -= yym; +#endif + yynewerrflag = 0; yyerrhandler: while (yyps->save) @@ -1095,7 +1105,7 @@ yyerrhandler: yyerrctx->state = yystate; yyerrctx->errflag = yyerrflag; yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base); - memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base); memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -1111,7 +1121,7 @@ yyerrhandler: yylexp = yylexemes + save->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base); - memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base); memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -1146,7 +1156,7 @@ yyerrhandler: yylloc = yylpp[-1]; #endif yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base); - memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base); memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) @@ -1168,7 +1178,7 @@ yyerrhandler: #endif #if !YYBTYACC - goto yyerrlab; + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: #endif ++yynerrs; @@ -1237,7 +1247,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n", YYDEBUGSTR, yydepth, yystate, yychar, yys); } @@ -1467,7 +1477,7 @@ case 28: yyval.vval = yystack.l_mark[-1].vval; } break; -#line 1471 "varsyntax_calc1.tab.c" +#line 1481 "varsyntax_calc1.tab.c" default: break; } @@ -1555,12 +1565,11 @@ break; } while (0); #endif /* YYBTYACC */ if (yychar < 0) yychar = YYEOF; - /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; - fprintf(stderr, "%s[%d]: state %d, reading %d (%s)\n", + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; + fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n", YYDEBUGSTR, yydepth, YYFINAL, yychar, yys); } #endif @@ -1587,7 +1596,7 @@ break; } #endif if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; - *++yystack.s_mark = (short) yystate; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yyloc; @@ -1622,7 +1631,7 @@ yyvalid: yylexp = yylexemes + yypath->lexeme; yychar = YYEMPTY; yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base); - memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); + memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base); memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) diff --git a/test/code_calc.y b/test/code_calc.y index 0a99456..6947b74 100644 --- a/test/code_calc.y +++ b/test/code_calc.y @@ -1,3 +1,5 @@ +%token-table + %{ # include <stdio.h> # include <ctype.h> diff --git a/test/err_inherit4.y b/test/err_inherit4.y index ed788d1..8e9aeb9 100644 --- a/test/err_inherit4.y +++ b/test/err_inherit4.y @@ -50,9 +50,9 @@ extern symbol *mksymbol(type t, class c, name id); %% declaration: class type namelist($1, $2) - { $$ = $3; } + { $$ = $3; @$ = @3; } | type locnamelist($1) - { $$ = $2; } + { $$ = $2; @$ = @-1; } ; class : GLOBAL { $$ = cGLOBAL; } diff --git a/test/run_make.sh b/test/run_make.sh index 218a7c5..3035eb4 100755 --- a/test/run_make.sh +++ b/test/run_make.sh @@ -1,5 +1,5 @@ #!/bin/sh -# $Id: run_make.sh,v 1.14 2014/04/06 17:50:57 tom Exp $ +# $Id: run_make.sh,v 1.15 2016/06/01 22:56:37 Tom.Shields Exp $ # vi:ts=4 sw=4: # do a test-compile on each of the ".c" files in the test-directory @@ -43,7 +43,8 @@ echo "** test-files in $REF_DIR" for input in ${REF_DIR}/*.c do case $input in #(vi - ${REF_DIR}/err_*) + ${REF_DIR}/err_*|\ + ${REF_DIR}/test-err_*) continue ;; esac @@ -72,11 +73,17 @@ then do test -f "$input" || continue case $input in - ${TEST_DIR}/err_*) + ${TEST_DIR}/err_*|\ + ${TEST_DIR}/test-err_*) + continue + ;; + ${TEST_DIR}/ok_syntax*|\ + ${TEST_DIR}/varsyntax*) + # Bison does not support all byacc legacy syntax continue ;; ${TEST_DIR}/btyacc_*) - # Bison does not support the btyacc []-action extension. + # Bison does not support the btyacc []-action & inherited attribute extensions. continue ;; esac @@ -99,7 +106,7 @@ then sed -e '/^%expect/s,%expect.*,,' $input >>run_make.y - bison -y run_make.y + bison -Wno-other -Wno-conflicts-sr -Wconflicts-rr -y run_make.y if test -f "y.tab.c" then sed -e '/^#line/s,"run_make.y","'$input'",' y.tab.c >run_make.c diff --git a/test/yacc/calc.tab.c b/test/yacc/calc.tab.c index 762dfa1..6ce2cd4 100644 --- a/test/yacc/calc.tab.c +++ b/test/yacc/calc.tab.c @@ -353,7 +353,7 @@ yylex(void) #line 354 "calc.tab.c" #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif #include <stdlib.h> /* needed for malloc, etc */ @@ -425,6 +425,8 @@ YYPARSE_DECL() } #endif + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -444,28 +446,26 @@ yyloop: if ((yyn = yydefred[yystate]) != 0) goto yyreduce; if (yychar < 0) { - if ((yychar = YYLEX) < 0) yychar = YYEOF; + yychar = YYLEX; + if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, yystate, yychar, yys); } #endif } - if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, shifting to state %d\n", YYPREFIX, yystate, yytable[yyn]); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; @@ -473,18 +473,17 @@ yyloop: if (yyerrflag > 0) --yyerrflag; goto yyloop; } - if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { yyn = yytable[yyn]; goto yyreduce; } - if (yyerrflag) goto yyinrecovery; + if (yyerrflag != 0) goto yyinrecovery; YYERROR_CALL("syntax error"); - goto yyerrlab; - + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: ++yynerrs; @@ -494,18 +493,15 @@ yyinrecovery: yyerrflag = 3; for (;;) { - if ((yyn = yysindex[*yystack.s_mark]) && (yyn += YYERRCODE) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) + if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, error recovery shifting\ to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; @@ -530,7 +526,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, error recovery discards token %d (%s)\n", YYPREFIX, yystate, yychar, yys); } @@ -546,10 +542,11 @@ yyreduce: YYPREFIX, yystate, yyn, yyrule[yyn]); #endif yym = yylen[yyn]; - if (yym) + if (yym > 0) yyval = yystack.l_mark[1-yym]; else memset(&yyval, 0, sizeof yyval); + switch (yyn) { case 3: @@ -612,7 +609,7 @@ case 18: #line 63 "calc.y" { yyval = base * yystack.l_mark[-1] + yystack.l_mark[0]; } break; -#line 616 "calc.tab.c" +#line 613 "calc.tab.c" } yystack.s_mark -= yym; yystate = *yystack.s_mark; @@ -630,11 +627,12 @@ break; *++yystack.l_mark = yyval; if (yychar < 0) { - if ((yychar = YYLEX) < 0) yychar = YYEOF; + yychar = YYLEX; + if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, YYFINAL, yychar, yys); } @@ -643,8 +641,8 @@ break; if (yychar == YYEOF) goto yyaccept; goto yyloop; } - if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yystate) + if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate) yystate = yytable[yyn]; else yystate = yydgoto[yym]; @@ -653,10 +651,7 @@ break; printf("%sdebug: after reduction, shifting from state %d \ to state %d\n", YYPREFIX, *yystack.s_mark, yystate); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; goto yyloop; diff --git a/test/yacc/calc1.tab.c b/test/yacc/calc1.tab.c index 7a5f925..0da4fde 100644 --- a/test/yacc/calc1.tab.c +++ b/test/yacc/calc1.tab.c @@ -123,13 +123,13 @@ int dcheck(INTERVAL); double dreg[26]; INTERVAL vreg[26]; -#line 31 "calc1.y" #ifdef YYSTYPE #undef YYSTYPE_IS_DECLARED #define YYSTYPE_IS_DECLARED 1 #endif #ifndef YYSTYPE_IS_DECLARED #define YYSTYPE_IS_DECLARED 1 +#line 31 "calc1.y" typedef union { int ival; @@ -490,7 +490,7 @@ vdiv(double a, double b, INTERVAL v) #line 491 "calc1.tab.c" #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif #include <stdlib.h> /* needed for malloc, etc */ @@ -562,6 +562,8 @@ YYPARSE_DECL() } #endif + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -581,28 +583,26 @@ yyloop: if ((yyn = yydefred[yystate]) != 0) goto yyreduce; if (yychar < 0) { - if ((yychar = YYLEX) < 0) yychar = YYEOF; + yychar = YYLEX; + if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, yystate, yychar, yys); } #endif } - if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, shifting to state %d\n", YYPREFIX, yystate, yytable[yyn]); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; @@ -610,18 +610,17 @@ yyloop: if (yyerrflag > 0) --yyerrflag; goto yyloop; } - if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { yyn = yytable[yyn]; goto yyreduce; } - if (yyerrflag) goto yyinrecovery; + if (yyerrflag != 0) goto yyinrecovery; YYERROR_CALL("syntax error"); - goto yyerrlab; - + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: ++yynerrs; @@ -631,18 +630,15 @@ yyinrecovery: yyerrflag = 3; for (;;) { - if ((yyn = yysindex[*yystack.s_mark]) && (yyn += YYERRCODE) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) + if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, error recovery shifting\ to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; @@ -667,7 +663,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, error recovery discards token %d (%s)\n", YYPREFIX, yystate, yychar, yys); } @@ -683,10 +679,11 @@ yyreduce: YYPREFIX, yystate, yyn, yyrule[yyn]); #endif yym = yylen[yyn]; - if (yym) + if (yym > 0) yyval = yystack.l_mark[1-yym]; else memset(&yyval, 0, sizeof yyval); + switch (yyn) { case 3: @@ -852,7 +849,7 @@ case 28: yyval.vval = yystack.l_mark[-1].vval; } break; -#line 856 "calc1.tab.c" +#line 853 "calc1.tab.c" } yystack.s_mark -= yym; yystate = *yystack.s_mark; @@ -870,11 +867,12 @@ break; *++yystack.l_mark = yyval; if (yychar < 0) { - if ((yychar = YYLEX) < 0) yychar = YYEOF; + yychar = YYLEX; + if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, YYFINAL, yychar, yys); } @@ -883,8 +881,8 @@ break; if (yychar == YYEOF) goto yyaccept; goto yyloop; } - if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yystate) + if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate) yystate = yytable[yyn]; else yystate = yydgoto[yym]; @@ -893,10 +891,7 @@ break; printf("%sdebug: after reduction, shifting from state %d \ to state %d\n", YYPREFIX, *yystack.s_mark, yystate); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; goto yyloop; diff --git a/test/yacc/calc2.tab.c b/test/yacc/calc2.tab.c index dc82b8e..8c82aa8 100644 --- a/test/yacc/calc2.tab.c +++ b/test/yacc/calc2.tab.c @@ -366,7 +366,7 @@ YYLEX_DECL() #line 367 "calc2.tab.c" #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif #include <stdlib.h> /* needed for malloc, etc */ @@ -438,6 +438,8 @@ YYPARSE_DECL() } #endif + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -457,28 +459,26 @@ yyloop: if ((yyn = yydefred[yystate]) != 0) goto yyreduce; if (yychar < 0) { - if ((yychar = YYLEX) < 0) yychar = YYEOF; + yychar = YYLEX; + if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, yystate, yychar, yys); } #endif } - if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, shifting to state %d\n", YYPREFIX, yystate, yytable[yyn]); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; @@ -486,18 +486,17 @@ yyloop: if (yyerrflag > 0) --yyerrflag; goto yyloop; } - if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { yyn = yytable[yyn]; goto yyreduce; } - if (yyerrflag) goto yyinrecovery; + if (yyerrflag != 0) goto yyinrecovery; YYERROR_CALL("syntax error"); - goto yyerrlab; - + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: ++yynerrs; @@ -507,18 +506,15 @@ yyinrecovery: yyerrflag = 3; for (;;) { - if ((yyn = yysindex[*yystack.s_mark]) && (yyn += YYERRCODE) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) + if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, error recovery shifting\ to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; @@ -543,7 +539,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, error recovery discards token %d (%s)\n", YYPREFIX, yystate, yychar, yys); } @@ -559,10 +555,11 @@ yyreduce: YYPREFIX, yystate, yyn, yyrule[yyn]); #endif yym = yylen[yyn]; - if (yym) + if (yym > 0) yyval = yystack.l_mark[1-yym]; else memset(&yyval, 0, sizeof yyval); + switch (yyn) { case 3: @@ -625,7 +622,7 @@ case 18: #line 70 "calc2.y" { yyval = (*base) * yystack.l_mark[-1] + yystack.l_mark[0]; } break; -#line 629 "calc2.tab.c" +#line 626 "calc2.tab.c" } yystack.s_mark -= yym; yystate = *yystack.s_mark; @@ -643,11 +640,12 @@ break; *++yystack.l_mark = yyval; if (yychar < 0) { - if ((yychar = YYLEX) < 0) yychar = YYEOF; + yychar = YYLEX; + if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, YYFINAL, yychar, yys); } @@ -656,8 +654,8 @@ break; if (yychar == YYEOF) goto yyaccept; goto yyloop; } - if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yystate) + if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate) yystate = yytable[yyn]; else yystate = yydgoto[yym]; @@ -666,10 +664,7 @@ break; printf("%sdebug: after reduction, shifting from state %d \ to state %d\n", YYPREFIX, *yystack.s_mark, yystate); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; goto yyloop; diff --git a/test/yacc/calc3.tab.c b/test/yacc/calc3.tab.c index d13bc1a..839f570 100644 --- a/test/yacc/calc3.tab.c +++ b/test/yacc/calc3.tab.c @@ -364,7 +364,7 @@ YYLEX_DECL() #line 365 "calc3.tab.c" #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif #include <stdlib.h> /* needed for malloc, etc */ @@ -443,6 +443,8 @@ YYPARSE_DECL() } #endif + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -462,28 +464,26 @@ yyloop: if ((yyn = yydefred[yystate]) != 0) goto yyreduce; if (yychar < 0) { - if ((yychar = YYLEX) < 0) yychar = YYEOF; + yychar = YYLEX; + if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, yystate, yychar, yys); } #endif } - if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, shifting to state %d\n", YYPREFIX, yystate, yytable[yyn]); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; @@ -491,18 +491,17 @@ yyloop: if (yyerrflag > 0) --yyerrflag; goto yyloop; } - if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { yyn = yytable[yyn]; goto yyreduce; } - if (yyerrflag) goto yyinrecovery; + if (yyerrflag != 0) goto yyinrecovery; YYERROR_CALL("syntax error"); - goto yyerrlab; - + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: ++yynerrs; @@ -512,18 +511,15 @@ yyinrecovery: yyerrflag = 3; for (;;) { - if ((yyn = yysindex[*yystack.s_mark]) && (yyn += YYERRCODE) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) + if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, error recovery shifting\ to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; @@ -548,7 +544,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, error recovery discards token %d (%s)\n", YYPREFIX, yystate, yychar, yys); } @@ -564,10 +560,11 @@ yyreduce: YYPREFIX, yystate, yyn, yyrule[yyn]); #endif yym = yylen[yyn]; - if (yym) + if (yym > 0) yyval = yystack.l_mark[1-yym]; else memset(&yyval, 0, sizeof yyval); + switch (yyn) { case 3: @@ -630,7 +627,7 @@ case 18: #line 73 "calc3.y" { yyval = (*base) * yystack.l_mark[-1] + yystack.l_mark[0]; } break; -#line 634 "calc3.tab.c" +#line 631 "calc3.tab.c" } yystack.s_mark -= yym; yystate = *yystack.s_mark; @@ -648,11 +645,12 @@ break; *++yystack.l_mark = yyval; if (yychar < 0) { - if ((yychar = YYLEX) < 0) yychar = YYEOF; + yychar = YYLEX; + if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, YYFINAL, yychar, yys); } @@ -661,8 +659,8 @@ break; if (yychar == YYEOF) goto yyaccept; goto yyloop; } - if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yystate) + if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate) yystate = yytable[yyn]; else yystate = yydgoto[yym]; @@ -671,10 +669,7 @@ break; printf("%sdebug: after reduction, shifting from state %d \ to state %d\n", YYPREFIX, *yystack.s_mark, yystate); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; goto yyloop; diff --git a/test/yacc/code_calc.code.c b/test/yacc/code_calc.code.c index 43291db..2c04715 100644 --- a/test/yacc/code_calc.code.c +++ b/test/yacc/code_calc.code.c @@ -97,7 +97,7 @@ #define YYPURE 0 -#line 2 "code_calc.y" +#line 4 "code_calc.y" # include <stdio.h> # include <ctype.h> @@ -150,6 +150,8 @@ typedef int YYSTYPE; #define LETTER 258 #define UMINUS 259 #define YYERRCODE 256 +#undef yytname +#define yytname yyname #define YYTABLESIZE 220 #define YYFINAL 1 #ifndef YYDEBUG @@ -171,8 +173,10 @@ extern YYINT yygindex[]; extern YYINT yytable[]; extern YYINT yycheck[]; -#if YYDEBUG +#if YYDEBUG || defined(yytname) extern char *yyname[]; +#endif +#if YYDEBUG extern char *yyrule[]; #endif @@ -209,7 +213,7 @@ typedef struct { } YYSTACKDATA; /* variables for the parser stack */ static YYSTACKDATA yystack; -#line 68 "code_calc.y" +#line 70 "code_calc.y" /* start of programs */ #ifdef YYBYACC @@ -255,10 +259,10 @@ yylex(void) } return( c ); } -#line 259 "code_calc.code.c" +#line 263 "code_calc.code.c" #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif #include <stdlib.h> /* needed for malloc, etc */ @@ -330,6 +334,8 @@ YYPARSE_DECL() } #endif + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -349,28 +355,26 @@ yyloop: if ((yyn = yydefred[yystate]) != 0) goto yyreduce; if (yychar < 0) { - if ((yychar = YYLEX) < 0) yychar = YYEOF; + yychar = YYLEX; + if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, yystate, yychar, yys); } #endif } - if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, shifting to state %d\n", YYPREFIX, yystate, yytable[yyn]); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; @@ -378,18 +382,17 @@ yyloop: if (yyerrflag > 0) --yyerrflag; goto yyloop; } - if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { yyn = yytable[yyn]; goto yyreduce; } - if (yyerrflag) goto yyinrecovery; + if (yyerrflag != 0) goto yyinrecovery; YYERROR_CALL("syntax error"); - goto yyerrlab; - + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: ++yynerrs; @@ -399,18 +402,15 @@ yyinrecovery: yyerrflag = 3; for (;;) { - if ((yyn = yysindex[*yystack.s_mark]) && (yyn += YYERRCODE) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) + if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, error recovery shifting\ to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; @@ -435,7 +435,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, error recovery discards token %d (%s)\n", YYPREFIX, yystate, yychar, yys); } @@ -451,73 +451,74 @@ yyreduce: YYPREFIX, yystate, yyn, yyrule[yyn]); #endif yym = yylen[yyn]; - if (yym) + if (yym > 0) yyval = yystack.l_mark[1-yym]; else memset(&yyval, 0, sizeof yyval); + switch (yyn) { case 3: -#line 30 "code_calc.y" +#line 32 "code_calc.y" { yyerrok ; } break; case 4: -#line 34 "code_calc.y" +#line 36 "code_calc.y" { printf("%d\n",yystack.l_mark[0]);} break; case 5: -#line 36 "code_calc.y" +#line 38 "code_calc.y" { regs[yystack.l_mark[-2]] = yystack.l_mark[0]; } break; case 6: -#line 40 "code_calc.y" +#line 42 "code_calc.y" { yyval = yystack.l_mark[-1]; } break; case 7: -#line 42 "code_calc.y" +#line 44 "code_calc.y" { yyval = yystack.l_mark[-2] + yystack.l_mark[0]; } break; case 8: -#line 44 "code_calc.y" +#line 46 "code_calc.y" { yyval = yystack.l_mark[-2] - yystack.l_mark[0]; } break; case 9: -#line 46 "code_calc.y" +#line 48 "code_calc.y" { yyval = yystack.l_mark[-2] * yystack.l_mark[0]; } break; case 10: -#line 48 "code_calc.y" +#line 50 "code_calc.y" { yyval = yystack.l_mark[-2] / yystack.l_mark[0]; } break; case 11: -#line 50 "code_calc.y" +#line 52 "code_calc.y" { yyval = yystack.l_mark[-2] % yystack.l_mark[0]; } break; case 12: -#line 52 "code_calc.y" +#line 54 "code_calc.y" { yyval = yystack.l_mark[-2] & yystack.l_mark[0]; } break; case 13: -#line 54 "code_calc.y" +#line 56 "code_calc.y" { yyval = yystack.l_mark[-2] | yystack.l_mark[0]; } break; case 14: -#line 56 "code_calc.y" +#line 58 "code_calc.y" { yyval = - yystack.l_mark[0]; } break; case 15: -#line 58 "code_calc.y" +#line 60 "code_calc.y" { yyval = regs[yystack.l_mark[0]]; } break; case 17: -#line 63 "code_calc.y" +#line 65 "code_calc.y" { yyval = yystack.l_mark[0]; base = (yystack.l_mark[0]==0) ? 8 : 10; } break; case 18: -#line 65 "code_calc.y" +#line 67 "code_calc.y" { yyval = base * yystack.l_mark[-1] + yystack.l_mark[0]; } break; -#line 521 "code_calc.code.c" +#line 522 "code_calc.code.c" } yystack.s_mark -= yym; yystate = *yystack.s_mark; @@ -535,11 +536,12 @@ break; *++yystack.l_mark = yyval; if (yychar < 0) { - if ((yychar = YYLEX) < 0) yychar = YYEOF; + yychar = YYLEX; + if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, YYFINAL, yychar, yys); } @@ -548,8 +550,8 @@ break; if (yychar == YYEOF) goto yyaccept; goto yyloop; } - if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yystate) + if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate) yystate = yytable[yyn]; else yystate = yydgoto[yym]; @@ -558,10 +560,7 @@ break; printf("%sdebug: after reduction, shifting from state %d \ to state %d\n", YYPREFIX, *yystack.s_mark, yystate); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; goto yyloop; diff --git a/test/yacc/code_calc.tab.c b/test/yacc/code_calc.tab.c index e72fa84..df3b452 100644 --- a/test/yacc/code_calc.tab.c +++ b/test/yacc/code_calc.tab.c @@ -82,7 +82,6 @@ const YYINT calc_check[] = { 40, #ifndef YYDEBUG #define YYDEBUG 0 #endif -#if YYDEBUG const char *const calc_name[] = { "end-of-file",0,0,0,0,0,0,0,0,0,"'\\n'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, @@ -94,6 +93,7 @@ const char *const calc_name[] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,"DIGIT","LETTER","UMINUS",0,0,0,0,0,"illegal-symbol", }; +#if YYDEBUG const char *const calc_rule[] = { "$accept : list", "list :", diff --git a/test/yacc/code_calc.tab.h b/test/yacc/code_calc.tab.h index 1921118..b0bcb16 100644 --- a/test/yacc/code_calc.tab.h +++ b/test/yacc/code_calc.tab.h @@ -1,3 +1,5 @@ #define DIGIT 257 #define LETTER 258 #define UMINUS 259 +#undef yytname +#define yytname yyname diff --git a/test/yacc/code_error.code.c b/test/yacc/code_error.code.c index 38d3e58..a22464c 100644 --- a/test/yacc/code_error.code.c +++ b/test/yacc/code_error.code.c @@ -163,8 +163,10 @@ extern YYINT yygindex[]; extern YYINT yytable[]; extern YYINT yycheck[]; -#if YYDEBUG +#if YYDEBUG || defined(yytname) extern char *yyname[]; +#endif +#if YYDEBUG extern char *yyrule[]; #endif @@ -227,10 +229,10 @@ yyerror(const char* s) { printf("%s\n", s); } -#line 231 "code_error.code.c" +#line 233 "code_error.code.c" #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif #include <stdlib.h> /* needed for malloc, etc */ @@ -302,6 +304,8 @@ YYPARSE_DECL() } #endif + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -321,28 +325,26 @@ yyloop: if ((yyn = yydefred[yystate]) != 0) goto yyreduce; if (yychar < 0) { - if ((yychar = YYLEX) < 0) yychar = YYEOF; + yychar = YYLEX; + if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, yystate, yychar, yys); } #endif } - if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, shifting to state %d\n", YYPREFIX, yystate, yytable[yyn]); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; @@ -350,18 +352,17 @@ yyloop: if (yyerrflag > 0) --yyerrflag; goto yyloop; } - if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { yyn = yytable[yyn]; goto yyreduce; } - if (yyerrflag) goto yyinrecovery; + if (yyerrflag != 0) goto yyinrecovery; YYERROR_CALL("syntax error"); - goto yyerrlab; - + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: ++yynerrs; @@ -371,18 +372,15 @@ yyinrecovery: yyerrflag = 3; for (;;) { - if ((yyn = yysindex[*yystack.s_mark]) && (yyn += YYERRCODE) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) + if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, error recovery shifting\ to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; @@ -407,7 +405,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, error recovery discards token %d (%s)\n", YYPREFIX, yystate, yychar, yys); } @@ -423,10 +421,11 @@ yyreduce: YYPREFIX, yystate, yyn, yyrule[yyn]); #endif yym = yylen[yyn]; - if (yym) + if (yym > 0) yyval = yystack.l_mark[1-yym]; else memset(&yyval, 0, sizeof yyval); + switch (yyn) { } @@ -446,11 +445,12 @@ yyreduce: *++yystack.l_mark = yyval; if (yychar < 0) { - if ((yychar = YYLEX) < 0) yychar = YYEOF; + yychar = YYLEX; + if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, YYFINAL, yychar, yys); } @@ -459,8 +459,8 @@ yyreduce: if (yychar == YYEOF) goto yyaccept; goto yyloop; } - if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yystate) + if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate) yystate = yytable[yyn]; else yystate = yydgoto[yym]; @@ -469,10 +469,7 @@ yyreduce: printf("%sdebug: after reduction, shifting from state %d \ to state %d\n", YYPREFIX, *yystack.s_mark, yystate); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; goto yyloop; diff --git a/test/yacc/empty.tab.c b/test/yacc/empty.tab.c index da0c4be..465a0a3 100644 --- a/test/yacc/empty.tab.c +++ b/test/yacc/empty.tab.c @@ -243,7 +243,7 @@ YYERROR_DECL() { #line 244 "empty.tab.c" #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif #include <stdlib.h> /* needed for malloc, etc */ @@ -315,6 +315,8 @@ YYPARSE_DECL() } #endif + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -334,28 +336,26 @@ yyloop: if ((yyn = yydefred[yystate]) != 0) goto yyreduce; if (yychar < 0) { - if ((yychar = YYLEX) < 0) yychar = YYEOF; + yychar = YYLEX; + if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, yystate, yychar, yys); } #endif } - if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, shifting to state %d\n", YYPREFIX, yystate, yytable[yyn]); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; @@ -363,18 +363,17 @@ yyloop: if (yyerrflag > 0) --yyerrflag; goto yyloop; } - if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { yyn = yytable[yyn]; goto yyreduce; } - if (yyerrflag) goto yyinrecovery; + if (yyerrflag != 0) goto yyinrecovery; YYERROR_CALL("syntax error"); - goto yyerrlab; - + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: ++yynerrs; @@ -384,18 +383,15 @@ yyinrecovery: yyerrflag = 3; for (;;) { - if ((yyn = yysindex[*yystack.s_mark]) && (yyn += YYERRCODE) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) + if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, error recovery shifting\ to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; @@ -420,7 +416,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, error recovery discards token %d (%s)\n", YYPREFIX, yystate, yychar, yys); } @@ -436,10 +432,11 @@ yyreduce: YYPREFIX, yystate, yyn, yyrule[yyn]); #endif yym = yylen[yyn]; - if (yym) + if (yym > 0) yyval = yystack.l_mark[1-yym]; else memset(&yyval, 0, sizeof yyval); + switch (yyn) { } @@ -459,11 +456,12 @@ yyreduce: *++yystack.l_mark = yyval; if (yychar < 0) { - if ((yychar = YYLEX) < 0) yychar = YYEOF; + yychar = YYLEX; + if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, YYFINAL, yychar, yys); } @@ -472,8 +470,8 @@ yyreduce: if (yychar == YYEOF) goto yyaccept; goto yyloop; } - if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yystate) + if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate) yystate = yytable[yyn]; else yystate = yydgoto[yym]; @@ -482,10 +480,7 @@ yyreduce: printf("%sdebug: after reduction, shifting from state %d \ to state %d\n", YYPREFIX, *yystack.s_mark, yystate); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; goto yyloop; diff --git a/test/yacc/err_syntax10.tab.c b/test/yacc/err_syntax10.tab.c index a3b4509..bbfe2e6 100644 --- a/test/yacc/err_syntax10.tab.c +++ b/test/yacc/err_syntax10.tab.c @@ -242,7 +242,7 @@ yyerror(const char* s) #line 243 "err_syntax10.tab.c" #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif #include <stdlib.h> /* needed for malloc, etc */ @@ -314,6 +314,8 @@ YYPARSE_DECL() } #endif + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -333,28 +335,26 @@ yyloop: if ((yyn = yydefred[yystate]) != 0) goto yyreduce; if (yychar < 0) { - if ((yychar = YYLEX) < 0) yychar = YYEOF; + yychar = YYLEX; + if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, yystate, yychar, yys); } #endif } - if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, shifting to state %d\n", YYPREFIX, yystate, yytable[yyn]); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; @@ -362,18 +362,17 @@ yyloop: if (yyerrflag > 0) --yyerrflag; goto yyloop; } - if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { yyn = yytable[yyn]; goto yyreduce; } - if (yyerrflag) goto yyinrecovery; + if (yyerrflag != 0) goto yyinrecovery; YYERROR_CALL("syntax error"); - goto yyerrlab; - + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: ++yynerrs; @@ -383,18 +382,15 @@ yyinrecovery: yyerrflag = 3; for (;;) { - if ((yyn = yysindex[*yystack.s_mark]) && (yyn += YYERRCODE) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) + if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, error recovery shifting\ to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; @@ -419,7 +415,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, error recovery discards token %d (%s)\n", YYPREFIX, yystate, yychar, yys); } @@ -435,10 +431,11 @@ yyreduce: YYPREFIX, yystate, yyn, yyrule[yyn]); #endif yym = yylen[yyn]; - if (yym) + if (yym > 0) yyval = yystack.l_mark[1-yym]; else memset(&yyval, 0, sizeof yyval); + switch (yyn) { } @@ -458,11 +455,12 @@ yyreduce: *++yystack.l_mark = yyval; if (yychar < 0) { - if ((yychar = YYLEX) < 0) yychar = YYEOF; + yychar = YYLEX; + if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, YYFINAL, yychar, yys); } @@ -471,8 +469,8 @@ yyreduce: if (yychar == YYEOF) goto yyaccept; goto yyloop; } - if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yystate) + if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate) yystate = yytable[yyn]; else yystate = yydgoto[yym]; @@ -481,10 +479,7 @@ yyreduce: printf("%sdebug: after reduction, shifting from state %d \ to state %d\n", YYPREFIX, *yystack.s_mark, yystate); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; goto yyloop; diff --git a/test/yacc/err_syntax11.tab.c b/test/yacc/err_syntax11.tab.c index ebb065f..4da7c62 100644 --- a/test/yacc/err_syntax11.tab.c +++ b/test/yacc/err_syntax11.tab.c @@ -248,7 +248,7 @@ yyerror(const char* s) #line 249 "err_syntax11.tab.c" #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif #include <stdlib.h> /* needed for malloc, etc */ @@ -320,6 +320,8 @@ YYPARSE_DECL() } #endif + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -339,28 +341,26 @@ yyloop: if ((yyn = yydefred[yystate]) != 0) goto yyreduce; if (yychar < 0) { - if ((yychar = YYLEX) < 0) yychar = YYEOF; + yychar = YYLEX; + if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, yystate, yychar, yys); } #endif } - if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, shifting to state %d\n", YYPREFIX, yystate, yytable[yyn]); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; @@ -368,18 +368,17 @@ yyloop: if (yyerrflag > 0) --yyerrflag; goto yyloop; } - if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { yyn = yytable[yyn]; goto yyreduce; } - if (yyerrflag) goto yyinrecovery; + if (yyerrflag != 0) goto yyinrecovery; YYERROR_CALL("syntax error"); - goto yyerrlab; - + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: ++yynerrs; @@ -389,18 +388,15 @@ yyinrecovery: yyerrflag = 3; for (;;) { - if ((yyn = yysindex[*yystack.s_mark]) && (yyn += YYERRCODE) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) + if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, error recovery shifting\ to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; @@ -425,7 +421,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, error recovery discards token %d (%s)\n", YYPREFIX, yystate, yychar, yys); } @@ -441,10 +437,11 @@ yyreduce: YYPREFIX, yystate, yyn, yyrule[yyn]); #endif yym = yylen[yyn]; - if (yym) + if (yym > 0) yyval = yystack.l_mark[1-yym]; else memset(&yyval, 0, sizeof yyval); + switch (yyn) { } @@ -464,11 +461,12 @@ yyreduce: *++yystack.l_mark = yyval; if (yychar < 0) { - if ((yychar = YYLEX) < 0) yychar = YYEOF; + yychar = YYLEX; + if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, YYFINAL, yychar, yys); } @@ -477,8 +475,8 @@ yyreduce: if (yychar == YYEOF) goto yyaccept; goto yyloop; } - if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yystate) + if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate) yystate = yytable[yyn]; else yystate = yydgoto[yym]; @@ -487,10 +485,7 @@ yyreduce: printf("%sdebug: after reduction, shifting from state %d \ to state %d\n", YYPREFIX, *yystack.s_mark, yystate); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; goto yyloop; diff --git a/test/yacc/err_syntax12.tab.c b/test/yacc/err_syntax12.tab.c index 784a45f..af33ee2 100644 --- a/test/yacc/err_syntax12.tab.c +++ b/test/yacc/err_syntax12.tab.c @@ -254,7 +254,7 @@ yyerror(const char* s) #line 255 "err_syntax12.tab.c" #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif #include <stdlib.h> /* needed for malloc, etc */ @@ -326,6 +326,8 @@ YYPARSE_DECL() } #endif + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -345,28 +347,26 @@ yyloop: if ((yyn = yydefred[yystate]) != 0) goto yyreduce; if (yychar < 0) { - if ((yychar = YYLEX) < 0) yychar = YYEOF; + yychar = YYLEX; + if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, yystate, yychar, yys); } #endif } - if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, shifting to state %d\n", YYPREFIX, yystate, yytable[yyn]); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; @@ -374,18 +374,17 @@ yyloop: if (yyerrflag > 0) --yyerrflag; goto yyloop; } - if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { yyn = yytable[yyn]; goto yyreduce; } - if (yyerrflag) goto yyinrecovery; + if (yyerrflag != 0) goto yyinrecovery; YYERROR_CALL("syntax error"); - goto yyerrlab; - + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: ++yynerrs; @@ -395,18 +394,15 @@ yyinrecovery: yyerrflag = 3; for (;;) { - if ((yyn = yysindex[*yystack.s_mark]) && (yyn += YYERRCODE) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) + if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, error recovery shifting\ to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; @@ -431,7 +427,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, error recovery discards token %d (%s)\n", YYPREFIX, yystate, yychar, yys); } @@ -447,10 +443,11 @@ yyreduce: YYPREFIX, yystate, yyn, yyrule[yyn]); #endif yym = yylen[yyn]; - if (yym) + if (yym > 0) yyval = yystack.l_mark[1-yym]; else memset(&yyval, 0, sizeof yyval); + switch (yyn) { } @@ -470,11 +467,12 @@ yyreduce: *++yystack.l_mark = yyval; if (yychar < 0) { - if ((yychar = YYLEX) < 0) yychar = YYEOF; + yychar = YYLEX; + if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, YYFINAL, yychar, yys); } @@ -483,8 +481,8 @@ yyreduce: if (yychar == YYEOF) goto yyaccept; goto yyloop; } - if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yystate) + if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate) yystate = yytable[yyn]; else yystate = yydgoto[yym]; @@ -493,10 +491,7 @@ yyreduce: printf("%sdebug: after reduction, shifting from state %d \ to state %d\n", YYPREFIX, *yystack.s_mark, yystate); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; goto yyloop; diff --git a/test/yacc/err_syntax18.tab.c b/test/yacc/err_syntax18.tab.c index fb7b06c..15f7a7a 100644 --- a/test/yacc/err_syntax18.tab.c +++ b/test/yacc/err_syntax18.tab.c @@ -250,7 +250,7 @@ yyerror(const char* s) #line 251 "err_syntax18.tab.c" #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif #include <stdlib.h> /* needed for malloc, etc */ @@ -322,6 +322,8 @@ YYPARSE_DECL() } #endif + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -341,28 +343,26 @@ yyloop: if ((yyn = yydefred[yystate]) != 0) goto yyreduce; if (yychar < 0) { - if ((yychar = YYLEX) < 0) yychar = YYEOF; + yychar = YYLEX; + if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, yystate, yychar, yys); } #endif } - if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, shifting to state %d\n", YYPREFIX, yystate, yytable[yyn]); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; @@ -370,18 +370,17 @@ yyloop: if (yyerrflag > 0) --yyerrflag; goto yyloop; } - if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { yyn = yytable[yyn]; goto yyreduce; } - if (yyerrflag) goto yyinrecovery; + if (yyerrflag != 0) goto yyinrecovery; YYERROR_CALL("syntax error"); - goto yyerrlab; - + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: ++yynerrs; @@ -391,18 +390,15 @@ yyinrecovery: yyerrflag = 3; for (;;) { - if ((yyn = yysindex[*yystack.s_mark]) && (yyn += YYERRCODE) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) + if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, error recovery shifting\ to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; @@ -427,7 +423,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, error recovery discards token %d (%s)\n", YYPREFIX, yystate, yychar, yys); } @@ -443,17 +439,18 @@ yyreduce: YYPREFIX, yystate, yyn, yyrule[yyn]); #endif yym = yylen[yyn]; - if (yym) + if (yym > 0) yyval = yystack.l_mark[1-yym]; else memset(&yyval, 0, sizeof yyval); + switch (yyn) { case 1: #line 9 "err_syntax18.y" { yyval = yystack.l_mark[1]; } break; -#line 457 "err_syntax18.tab.c" +#line 454 "err_syntax18.tab.c" } yystack.s_mark -= yym; yystate = *yystack.s_mark; @@ -471,11 +468,12 @@ break; *++yystack.l_mark = yyval; if (yychar < 0) { - if ((yychar = YYLEX) < 0) yychar = YYEOF; + yychar = YYLEX; + if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, YYFINAL, yychar, yys); } @@ -484,8 +482,8 @@ break; if (yychar == YYEOF) goto yyaccept; goto yyloop; } - if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yystate) + if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate) yystate = yytable[yyn]; else yystate = yydgoto[yym]; @@ -494,10 +492,7 @@ break; printf("%sdebug: after reduction, shifting from state %d \ to state %d\n", YYPREFIX, *yystack.s_mark, yystate); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; goto yyloop; diff --git a/test/yacc/err_syntax20.tab.c b/test/yacc/err_syntax20.tab.c index 85ea1ba..526adde 100644 --- a/test/yacc/err_syntax20.tab.c +++ b/test/yacc/err_syntax20.tab.c @@ -246,7 +246,7 @@ yyerror(const char* s) #line 247 "err_syntax20.tab.c" #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif #include <stdlib.h> /* needed for malloc, etc */ @@ -318,6 +318,8 @@ YYPARSE_DECL() } #endif + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -337,28 +339,26 @@ yyloop: if ((yyn = yydefred[yystate]) != 0) goto yyreduce; if (yychar < 0) { - if ((yychar = YYLEX) < 0) yychar = YYEOF; + yychar = YYLEX; + if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, yystate, yychar, yys); } #endif } - if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, shifting to state %d\n", YYPREFIX, yystate, yytable[yyn]); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; @@ -366,18 +366,17 @@ yyloop: if (yyerrflag > 0) --yyerrflag; goto yyloop; } - if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { yyn = yytable[yyn]; goto yyreduce; } - if (yyerrflag) goto yyinrecovery; + if (yyerrflag != 0) goto yyinrecovery; YYERROR_CALL("syntax error"); - goto yyerrlab; - + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: ++yynerrs; @@ -387,18 +386,15 @@ yyinrecovery: yyerrflag = 3; for (;;) { - if ((yyn = yysindex[*yystack.s_mark]) && (yyn += YYERRCODE) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) + if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, error recovery shifting\ to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; @@ -423,7 +419,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, error recovery discards token %d (%s)\n", YYPREFIX, yystate, yychar, yys); } @@ -439,17 +435,18 @@ yyreduce: YYPREFIX, yystate, yyn, yyrule[yyn]); #endif yym = yylen[yyn]; - if (yym) + if (yym > 0) yyval = yystack.l_mark[1-yym]; else memset(&yyval, 0, sizeof yyval); + switch (yyn) { case 1: #line 12 "err_syntax20.y" { yystack.l_mark[-1].rechk = 3; } break; -#line 453 "err_syntax20.tab.c" +#line 450 "err_syntax20.tab.c" } yystack.s_mark -= yym; yystate = *yystack.s_mark; @@ -467,11 +464,12 @@ break; *++yystack.l_mark = yyval; if (yychar < 0) { - if ((yychar = YYLEX) < 0) yychar = YYEOF; + yychar = YYLEX; + if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, YYFINAL, yychar, yys); } @@ -480,8 +478,8 @@ break; if (yychar == YYEOF) goto yyaccept; goto yyloop; } - if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yystate) + if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate) yystate = yytable[yyn]; else yystate = yydgoto[yym]; @@ -490,10 +488,7 @@ break; printf("%sdebug: after reduction, shifting from state %d \ to state %d\n", YYPREFIX, *yystack.s_mark, yystate); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; goto yyloop; diff --git a/test/yacc/err_syntax24.error b/test/yacc/err_syntax24.error index c153889..e8bbfec 100644 --- a/test/yacc/err_syntax24.error +++ b/test/yacc/err_syntax24.error @@ -1,2 +1,2 @@ -YACC: w - line 21 of "./err_syntax24.y", the default action assigns an undefined value to $$ +YACC: w - line 21 of "./err_syntax24.y", the default action for expr assigns an undefined value to $$ YACC: e - line 22 of "./err_syntax24.y", $$ is untyped diff --git a/test/yacc/error.tab.c b/test/yacc/error.tab.c index e7aa395..47a39d8 100644 --- a/test/yacc/error.tab.c +++ b/test/yacc/error.tab.c @@ -248,7 +248,7 @@ yyerror(const char* s) #line 249 "error.tab.c" #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif #include <stdlib.h> /* needed for malloc, etc */ @@ -320,6 +320,8 @@ YYPARSE_DECL() } #endif + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -339,28 +341,26 @@ yyloop: if ((yyn = yydefred[yystate]) != 0) goto yyreduce; if (yychar < 0) { - if ((yychar = YYLEX) < 0) yychar = YYEOF; + yychar = YYLEX; + if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, yystate, yychar, yys); } #endif } - if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, shifting to state %d\n", YYPREFIX, yystate, yytable[yyn]); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; @@ -368,18 +368,17 @@ yyloop: if (yyerrflag > 0) --yyerrflag; goto yyloop; } - if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { yyn = yytable[yyn]; goto yyreduce; } - if (yyerrflag) goto yyinrecovery; + if (yyerrflag != 0) goto yyinrecovery; YYERROR_CALL("syntax error"); - goto yyerrlab; - + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: ++yynerrs; @@ -389,18 +388,15 @@ yyinrecovery: yyerrflag = 3; for (;;) { - if ((yyn = yysindex[*yystack.s_mark]) && (yyn += YYERRCODE) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) + if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, error recovery shifting\ to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; @@ -425,7 +421,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, error recovery discards token %d (%s)\n", YYPREFIX, yystate, yychar, yys); } @@ -441,10 +437,11 @@ yyreduce: YYPREFIX, yystate, yyn, yyrule[yyn]); #endif yym = yylen[yyn]; - if (yym) + if (yym > 0) yyval = yystack.l_mark[1-yym]; else memset(&yyval, 0, sizeof yyval); + switch (yyn) { } @@ -464,11 +461,12 @@ yyreduce: *++yystack.l_mark = yyval; if (yychar < 0) { - if ((yychar = YYLEX) < 0) yychar = YYEOF; + yychar = YYLEX; + if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, YYFINAL, yychar, yys); } @@ -477,8 +475,8 @@ yyreduce: if (yychar == YYEOF) goto yyaccept; goto yyloop; } - if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yystate) + if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate) yystate = yytable[yyn]; else yystate = yydgoto[yym]; @@ -487,10 +485,7 @@ yyreduce: printf("%sdebug: after reduction, shifting from state %d \ to state %d\n", YYPREFIX, *yystack.s_mark, yystate); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; goto yyloop; diff --git a/test/yacc/grammar.tab.c b/test/yacc/grammar.tab.c index e78f188..c4aee12 100644 --- a/test/yacc/grammar.tab.c +++ b/test/yacc/grammar.tab.c @@ -1091,7 +1091,7 @@ free_parser(void) #line 1092 "grammar.tab.c" #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif #include <stdlib.h> /* needed for malloc, etc */ @@ -1163,6 +1163,8 @@ YYPARSE_DECL() } #endif + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -1182,28 +1184,26 @@ yyloop: if ((yyn = yydefred[yystate]) != 0) goto yyreduce; if (yychar < 0) { - if ((yychar = YYLEX) < 0) yychar = YYEOF; + yychar = YYLEX; + if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, yystate, yychar, yys); } #endif } - if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, shifting to state %d\n", YYPREFIX, yystate, yytable[yyn]); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; @@ -1211,18 +1211,17 @@ yyloop: if (yyerrflag > 0) --yyerrflag; goto yyloop; } - if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { yyn = yytable[yyn]; goto yyreduce; } - if (yyerrflag) goto yyinrecovery; + if (yyerrflag != 0) goto yyinrecovery; YYERROR_CALL("syntax error"); - goto yyerrlab; - + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: ++yynerrs; @@ -1232,18 +1231,15 @@ yyinrecovery: yyerrflag = 3; for (;;) { - if ((yyn = yysindex[*yystack.s_mark]) && (yyn += YYERRCODE) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) + if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, error recovery shifting\ to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; @@ -1268,7 +1264,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, error recovery discards token %d (%s)\n", YYPREFIX, yystate, yychar, yys); } @@ -1284,10 +1280,11 @@ yyreduce: YYPREFIX, yystate, yyn, yyrule[yyn]); #endif yym = yylen[yyn]; - if (yym) + if (yym > 0) yyval = yystack.l_mark[1-yym]; else memset(&yyval, 0, sizeof yyval); + switch (yyn) { case 10: @@ -1964,7 +1961,7 @@ case 114: yyval.declarator->func_def = FUNC_ANSI; } break; -#line 1968 "grammar.tab.c" +#line 1965 "grammar.tab.c" } yystack.s_mark -= yym; yystate = *yystack.s_mark; @@ -1982,11 +1979,12 @@ break; *++yystack.l_mark = yyval; if (yychar < 0) { - if ((yychar = YYLEX) < 0) yychar = YYEOF; + yychar = YYLEX; + if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, YYFINAL, yychar, yys); } @@ -1995,8 +1993,8 @@ break; if (yychar == YYEOF) goto yyaccept; goto yyloop; } - if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yystate) + if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate) yystate = yytable[yyn]; else yystate = yydgoto[yym]; @@ -2005,10 +2003,7 @@ break; printf("%sdebug: after reduction, shifting from state %d \ to state %d\n", YYPREFIX, *yystack.s_mark, yystate); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; goto yyloop; diff --git a/test/yacc/ok_syntax1.tab.c b/test/yacc/ok_syntax1.tab.c index 94d67d9..d338dc1 100644 --- a/test/yacc/ok_syntax1.tab.c +++ b/test/yacc/ok_syntax1.tab.c @@ -110,13 +110,13 @@ int YYLEX_DECL(); static void YYERROR_DECL(); #endif -#line 43 "ok_syntax1.y" #ifdef YYSTYPE #undef YYSTYPE_IS_DECLARED #define YYSTYPE_IS_DECLARED 1 #endif #ifndef YYSTYPE_IS_DECLARED #define YYSTYPE_IS_DECLARED 1 +#line 43 "ok_syntax1.y" typedef union { char * cval; @@ -388,7 +388,7 @@ YYLEX_DECL() #line 389 "ok_syntax1.tab.c" #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif #include <stdlib.h> /* needed for malloc, etc */ @@ -467,6 +467,8 @@ YYPARSE_DECL() } #endif + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -486,28 +488,26 @@ yyloop: if ((yyn = yydefred[yystate]) != 0) goto yyreduce; if (yychar < 0) { - if ((yychar = YYLEX) < 0) yychar = YYEOF; + yychar = YYLEX; + if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, yystate, yychar, yys); } #endif } - if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, shifting to state %d\n", YYPREFIX, yystate, yytable[yyn]); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; @@ -515,18 +515,17 @@ yyloop: if (yyerrflag > 0) --yyerrflag; goto yyloop; } - if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { yyn = yytable[yyn]; goto yyreduce; } - if (yyerrflag) goto yyinrecovery; + if (yyerrflag != 0) goto yyinrecovery; YYERROR_CALL("syntax error"); - goto yyerrlab; - + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: ++yynerrs; @@ -536,18 +535,15 @@ yyinrecovery: yyerrflag = 3; for (;;) { - if ((yyn = yysindex[*yystack.s_mark]) && (yyn += YYERRCODE) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) + if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, error recovery shifting\ to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; @@ -572,7 +568,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, error recovery discards token %d (%s)\n", YYPREFIX, yystate, yychar, yys); } @@ -588,10 +584,11 @@ yyreduce: YYPREFIX, yystate, yyn, yyrule[yyn]); #endif yym = yylen[yyn]; - if (yym) + if (yym > 0) yyval = yystack.l_mark[1-yym]; else memset(&yyval, 0, sizeof yyval); + switch (yyn) { case 3: @@ -654,7 +651,7 @@ case 18: #line 101 "ok_syntax1.y" { yyval.ival = (*base) * yystack.l_mark[-1].ival + yystack.l_mark[0].ival; } break; -#line 658 "ok_syntax1.tab.c" +#line 655 "ok_syntax1.tab.c" } yystack.s_mark -= yym; yystate = *yystack.s_mark; @@ -672,11 +669,12 @@ break; *++yystack.l_mark = yyval; if (yychar < 0) { - if ((yychar = YYLEX) < 0) yychar = YYEOF; + yychar = YYLEX; + if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, YYFINAL, yychar, yys); } @@ -685,8 +683,8 @@ break; if (yychar == YYEOF) goto yyaccept; goto yyloop; } - if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yystate) + if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate) yystate = yytable[yyn]; else yystate = yydgoto[yym]; @@ -695,10 +693,7 @@ break; printf("%sdebug: after reduction, shifting from state %d \ to state %d\n", YYPREFIX, *yystack.s_mark, yystate); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; goto yyloop; diff --git a/test/yacc/pure_calc.tab.c b/test/yacc/pure_calc.tab.c index 911db40..7a5356d 100644 --- a/test/yacc/pure_calc.tab.c +++ b/test/yacc/pure_calc.tab.c @@ -360,7 +360,7 @@ YYLEX_DECL() #line 361 "pure_calc.tab.c" #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif #include <stdlib.h> /* needed for malloc, etc */ @@ -439,6 +439,8 @@ YYPARSE_DECL() } #endif + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -458,28 +460,26 @@ yyloop: if ((yyn = yydefred[yystate]) != 0) goto yyreduce; if (yychar < 0) { - if ((yychar = YYLEX) < 0) yychar = YYEOF; + yychar = YYLEX; + if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, yystate, yychar, yys); } #endif } - if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, shifting to state %d\n", YYPREFIX, yystate, yytable[yyn]); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; @@ -487,18 +487,17 @@ yyloop: if (yyerrflag > 0) --yyerrflag; goto yyloop; } - if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { yyn = yytable[yyn]; goto yyreduce; } - if (yyerrflag) goto yyinrecovery; + if (yyerrflag != 0) goto yyinrecovery; YYERROR_CALL("syntax error"); - goto yyerrlab; - + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: ++yynerrs; @@ -508,18 +507,15 @@ yyinrecovery: yyerrflag = 3; for (;;) { - if ((yyn = yysindex[*yystack.s_mark]) && (yyn += YYERRCODE) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) + if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, error recovery shifting\ to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; @@ -544,7 +540,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, error recovery discards token %d (%s)\n", YYPREFIX, yystate, yychar, yys); } @@ -560,10 +556,11 @@ yyreduce: YYPREFIX, yystate, yyn, yyrule[yyn]); #endif yym = yylen[yyn]; - if (yym) + if (yym > 0) yyval = yystack.l_mark[1-yym]; else memset(&yyval, 0, sizeof yyval); + switch (yyn) { case 3: @@ -626,7 +623,7 @@ case 18: #line 69 "pure_calc.y" { yyval = base * yystack.l_mark[-1] + yystack.l_mark[0]; } break; -#line 630 "pure_calc.tab.c" +#line 627 "pure_calc.tab.c" } yystack.s_mark -= yym; yystate = *yystack.s_mark; @@ -644,11 +641,12 @@ break; *++yystack.l_mark = yyval; if (yychar < 0) { - if ((yychar = YYLEX) < 0) yychar = YYEOF; + yychar = YYLEX; + if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, YYFINAL, yychar, yys); } @@ -657,8 +655,8 @@ break; if (yychar == YYEOF) goto yyaccept; goto yyloop; } - if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yystate) + if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate) yystate = yytable[yyn]; else yystate = yydgoto[yym]; @@ -667,10 +665,7 @@ break; printf("%sdebug: after reduction, shifting from state %d \ to state %d\n", YYPREFIX, *yystack.s_mark, yystate); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; goto yyloop; diff --git a/test/yacc/pure_error.tab.c b/test/yacc/pure_error.tab.c index 0184e92..6c6ed42 100644 --- a/test/yacc/pure_error.tab.c +++ b/test/yacc/pure_error.tab.c @@ -257,7 +257,7 @@ yyerror(const char* s) #line 258 "pure_error.tab.c" #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif #include <stdlib.h> /* needed for malloc, etc */ @@ -336,6 +336,8 @@ YYPARSE_DECL() } #endif + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -355,28 +357,26 @@ yyloop: if ((yyn = yydefred[yystate]) != 0) goto yyreduce; if (yychar < 0) { - if ((yychar = YYLEX) < 0) yychar = YYEOF; + yychar = YYLEX; + if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, yystate, yychar, yys); } #endif } - if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, shifting to state %d\n", YYPREFIX, yystate, yytable[yyn]); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; @@ -384,18 +384,17 @@ yyloop: if (yyerrflag > 0) --yyerrflag; goto yyloop; } - if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { yyn = yytable[yyn]; goto yyreduce; } - if (yyerrflag) goto yyinrecovery; + if (yyerrflag != 0) goto yyinrecovery; YYERROR_CALL("syntax error"); - goto yyerrlab; - + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: ++yynerrs; @@ -405,18 +404,15 @@ yyinrecovery: yyerrflag = 3; for (;;) { - if ((yyn = yysindex[*yystack.s_mark]) && (yyn += YYERRCODE) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) + if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, error recovery shifting\ to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; @@ -441,7 +437,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, error recovery discards token %d (%s)\n", YYPREFIX, yystate, yychar, yys); } @@ -457,10 +453,11 @@ yyreduce: YYPREFIX, yystate, yyn, yyrule[yyn]); #endif yym = yylen[yyn]; - if (yym) + if (yym > 0) yyval = yystack.l_mark[1-yym]; else memset(&yyval, 0, sizeof yyval); + switch (yyn) { } @@ -480,11 +477,12 @@ yyreduce: *++yystack.l_mark = yyval; if (yychar < 0) { - if ((yychar = YYLEX) < 0) yychar = YYEOF; + yychar = YYLEX; + if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, YYFINAL, yychar, yys); } @@ -493,8 +491,8 @@ yyreduce: if (yychar == YYEOF) goto yyaccept; goto yyloop; } - if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yystate) + if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate) yystate = yytable[yyn]; else yystate = yydgoto[yym]; @@ -503,10 +501,7 @@ yyreduce: printf("%sdebug: after reduction, shifting from state %d \ to state %d\n", YYPREFIX, *yystack.s_mark, yystate); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; goto yyloop; diff --git a/test/yacc/quote_calc-s.tab.c b/test/yacc/quote_calc-s.tab.c index 9d4d7bd..fa8fd00 100644 --- a/test/yacc/quote_calc-s.tab.c +++ b/test/yacc/quote_calc-s.tab.c @@ -368,7 +368,7 @@ yylex(void) { #line 369 "quote_calc-s.tab.c" #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif #include <stdlib.h> /* needed for malloc, etc */ @@ -440,6 +440,8 @@ YYPARSE_DECL() } #endif + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -459,28 +461,26 @@ yyloop: if ((yyn = yydefred[yystate]) != 0) goto yyreduce; if (yychar < 0) { - if ((yychar = YYLEX) < 0) yychar = YYEOF; + yychar = YYLEX; + if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, yystate, yychar, yys); } #endif } - if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, shifting to state %d\n", YYPREFIX, yystate, yytable[yyn]); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; @@ -488,18 +488,17 @@ yyloop: if (yyerrflag > 0) --yyerrflag; goto yyloop; } - if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { yyn = yytable[yyn]; goto yyreduce; } - if (yyerrflag) goto yyinrecovery; + if (yyerrflag != 0) goto yyinrecovery; YYERROR_CALL("syntax error"); - goto yyerrlab; - + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: ++yynerrs; @@ -509,18 +508,15 @@ yyinrecovery: yyerrflag = 3; for (;;) { - if ((yyn = yysindex[*yystack.s_mark]) && (yyn += YYERRCODE) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) + if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, error recovery shifting\ to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; @@ -545,7 +541,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, error recovery discards token %d (%s)\n", YYPREFIX, yystate, yychar, yys); } @@ -561,10 +557,11 @@ yyreduce: YYPREFIX, yystate, yyn, yyrule[yyn]); #endif yym = yylen[yyn]; - if (yym) + if (yym > 0) yyval = yystack.l_mark[1-yym]; else memset(&yyval, 0, sizeof yyval); + switch (yyn) { case 3: @@ -627,7 +624,7 @@ case 18: #line 70 "quote_calc.y" { yyval = base * yystack.l_mark[-1] + yystack.l_mark[0]; } break; -#line 631 "quote_calc-s.tab.c" +#line 628 "quote_calc-s.tab.c" } yystack.s_mark -= yym; yystate = *yystack.s_mark; @@ -645,11 +642,12 @@ break; *++yystack.l_mark = yyval; if (yychar < 0) { - if ((yychar = YYLEX) < 0) yychar = YYEOF; + yychar = YYLEX; + if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, YYFINAL, yychar, yys); } @@ -658,8 +656,8 @@ break; if (yychar == YYEOF) goto yyaccept; goto yyloop; } - if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yystate) + if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate) yystate = yytable[yyn]; else yystate = yydgoto[yym]; @@ -668,10 +666,7 @@ break; printf("%sdebug: after reduction, shifting from state %d \ to state %d\n", YYPREFIX, *yystack.s_mark, yystate); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; goto yyloop; diff --git a/test/yacc/quote_calc.tab.c b/test/yacc/quote_calc.tab.c index affdbe5..c6a1220 100644 --- a/test/yacc/quote_calc.tab.c +++ b/test/yacc/quote_calc.tab.c @@ -374,7 +374,7 @@ yylex(void) { #line 375 "quote_calc.tab.c" #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif #include <stdlib.h> /* needed for malloc, etc */ @@ -446,6 +446,8 @@ YYPARSE_DECL() } #endif + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -465,28 +467,26 @@ yyloop: if ((yyn = yydefred[yystate]) != 0) goto yyreduce; if (yychar < 0) { - if ((yychar = YYLEX) < 0) yychar = YYEOF; + yychar = YYLEX; + if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, yystate, yychar, yys); } #endif } - if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, shifting to state %d\n", YYPREFIX, yystate, yytable[yyn]); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; @@ -494,18 +494,17 @@ yyloop: if (yyerrflag > 0) --yyerrflag; goto yyloop; } - if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { yyn = yytable[yyn]; goto yyreduce; } - if (yyerrflag) goto yyinrecovery; + if (yyerrflag != 0) goto yyinrecovery; YYERROR_CALL("syntax error"); - goto yyerrlab; - + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: ++yynerrs; @@ -515,18 +514,15 @@ yyinrecovery: yyerrflag = 3; for (;;) { - if ((yyn = yysindex[*yystack.s_mark]) && (yyn += YYERRCODE) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) + if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, error recovery shifting\ to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; @@ -551,7 +547,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, error recovery discards token %d (%s)\n", YYPREFIX, yystate, yychar, yys); } @@ -567,10 +563,11 @@ yyreduce: YYPREFIX, yystate, yyn, yyrule[yyn]); #endif yym = yylen[yyn]; - if (yym) + if (yym > 0) yyval = yystack.l_mark[1-yym]; else memset(&yyval, 0, sizeof yyval); + switch (yyn) { case 3: @@ -633,7 +630,7 @@ case 18: #line 70 "quote_calc.y" { yyval = base * yystack.l_mark[-1] + yystack.l_mark[0]; } break; -#line 637 "quote_calc.tab.c" +#line 634 "quote_calc.tab.c" } yystack.s_mark -= yym; yystate = *yystack.s_mark; @@ -651,11 +648,12 @@ break; *++yystack.l_mark = yyval; if (yychar < 0) { - if ((yychar = YYLEX) < 0) yychar = YYEOF; + yychar = YYLEX; + if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, YYFINAL, yychar, yys); } @@ -664,8 +662,8 @@ break; if (yychar == YYEOF) goto yyaccept; goto yyloop; } - if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yystate) + if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate) yystate = yytable[yyn]; else yystate = yydgoto[yym]; @@ -674,10 +672,7 @@ break; printf("%sdebug: after reduction, shifting from state %d \ to state %d\n", YYPREFIX, *yystack.s_mark, yystate); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; goto yyloop; diff --git a/test/yacc/quote_calc2-s.tab.c b/test/yacc/quote_calc2-s.tab.c index 47b8fd0..505200e 100644 --- a/test/yacc/quote_calc2-s.tab.c +++ b/test/yacc/quote_calc2-s.tab.c @@ -368,7 +368,7 @@ yylex(void) { #line 369 "quote_calc2-s.tab.c" #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif #include <stdlib.h> /* needed for malloc, etc */ @@ -440,6 +440,8 @@ YYPARSE_DECL() } #endif + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -459,28 +461,26 @@ yyloop: if ((yyn = yydefred[yystate]) != 0) goto yyreduce; if (yychar < 0) { - if ((yychar = YYLEX) < 0) yychar = YYEOF; + yychar = YYLEX; + if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, yystate, yychar, yys); } #endif } - if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, shifting to state %d\n", YYPREFIX, yystate, yytable[yyn]); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; @@ -488,18 +488,17 @@ yyloop: if (yyerrflag > 0) --yyerrflag; goto yyloop; } - if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { yyn = yytable[yyn]; goto yyreduce; } - if (yyerrflag) goto yyinrecovery; + if (yyerrflag != 0) goto yyinrecovery; YYERROR_CALL("syntax error"); - goto yyerrlab; - + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: ++yynerrs; @@ -509,18 +508,15 @@ yyinrecovery: yyerrflag = 3; for (;;) { - if ((yyn = yysindex[*yystack.s_mark]) && (yyn += YYERRCODE) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) + if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, error recovery shifting\ to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; @@ -545,7 +541,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, error recovery discards token %d (%s)\n", YYPREFIX, yystate, yychar, yys); } @@ -561,10 +557,11 @@ yyreduce: YYPREFIX, yystate, yyn, yyrule[yyn]); #endif yym = yylen[yyn]; - if (yym) + if (yym > 0) yyval = yystack.l_mark[1-yym]; else memset(&yyval, 0, sizeof yyval); + switch (yyn) { case 3: @@ -627,7 +624,7 @@ case 18: #line 70 "quote_calc2.y" { yyval = base * yystack.l_mark[-1] + yystack.l_mark[0]; } break; -#line 631 "quote_calc2-s.tab.c" +#line 628 "quote_calc2-s.tab.c" } yystack.s_mark -= yym; yystate = *yystack.s_mark; @@ -645,11 +642,12 @@ break; *++yystack.l_mark = yyval; if (yychar < 0) { - if ((yychar = YYLEX) < 0) yychar = YYEOF; + yychar = YYLEX; + if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, YYFINAL, yychar, yys); } @@ -658,8 +656,8 @@ break; if (yychar == YYEOF) goto yyaccept; goto yyloop; } - if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yystate) + if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate) yystate = yytable[yyn]; else yystate = yydgoto[yym]; @@ -668,10 +666,7 @@ break; printf("%sdebug: after reduction, shifting from state %d \ to state %d\n", YYPREFIX, *yystack.s_mark, yystate); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; goto yyloop; diff --git a/test/yacc/quote_calc2.tab.c b/test/yacc/quote_calc2.tab.c index cdf8171..3ff3dd1 100644 --- a/test/yacc/quote_calc2.tab.c +++ b/test/yacc/quote_calc2.tab.c @@ -374,7 +374,7 @@ yylex(void) { #line 375 "quote_calc2.tab.c" #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif #include <stdlib.h> /* needed for malloc, etc */ @@ -446,6 +446,8 @@ YYPARSE_DECL() } #endif + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -465,28 +467,26 @@ yyloop: if ((yyn = yydefred[yystate]) != 0) goto yyreduce; if (yychar < 0) { - if ((yychar = YYLEX) < 0) yychar = YYEOF; + yychar = YYLEX; + if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, yystate, yychar, yys); } #endif } - if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, shifting to state %d\n", YYPREFIX, yystate, yytable[yyn]); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; @@ -494,18 +494,17 @@ yyloop: if (yyerrflag > 0) --yyerrflag; goto yyloop; } - if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { yyn = yytable[yyn]; goto yyreduce; } - if (yyerrflag) goto yyinrecovery; + if (yyerrflag != 0) goto yyinrecovery; YYERROR_CALL("syntax error"); - goto yyerrlab; - + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: ++yynerrs; @@ -515,18 +514,15 @@ yyinrecovery: yyerrflag = 3; for (;;) { - if ((yyn = yysindex[*yystack.s_mark]) && (yyn += YYERRCODE) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) + if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, error recovery shifting\ to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; @@ -551,7 +547,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, error recovery discards token %d (%s)\n", YYPREFIX, yystate, yychar, yys); } @@ -567,10 +563,11 @@ yyreduce: YYPREFIX, yystate, yyn, yyrule[yyn]); #endif yym = yylen[yyn]; - if (yym) + if (yym > 0) yyval = yystack.l_mark[1-yym]; else memset(&yyval, 0, sizeof yyval); + switch (yyn) { case 3: @@ -633,7 +630,7 @@ case 18: #line 70 "quote_calc2.y" { yyval = base * yystack.l_mark[-1] + yystack.l_mark[0]; } break; -#line 637 "quote_calc2.tab.c" +#line 634 "quote_calc2.tab.c" } yystack.s_mark -= yym; yystate = *yystack.s_mark; @@ -651,11 +648,12 @@ break; *++yystack.l_mark = yyval; if (yychar < 0) { - if ((yychar = YYLEX) < 0) yychar = YYEOF; + yychar = YYLEX; + if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, YYFINAL, yychar, yys); } @@ -664,8 +662,8 @@ break; if (yychar == YYEOF) goto yyaccept; goto yyloop; } - if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yystate) + if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate) yystate = yytable[yyn]; else yystate = yydgoto[yym]; @@ -674,10 +672,7 @@ break; printf("%sdebug: after reduction, shifting from state %d \ to state %d\n", YYPREFIX, *yystack.s_mark, yystate); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; goto yyloop; diff --git a/test/yacc/quote_calc3-s.tab.c b/test/yacc/quote_calc3-s.tab.c index b91c1a1..1132ea3 100644 --- a/test/yacc/quote_calc3-s.tab.c +++ b/test/yacc/quote_calc3-s.tab.c @@ -369,7 +369,7 @@ yylex(void) { #line 370 "quote_calc3-s.tab.c" #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif #include <stdlib.h> /* needed for malloc, etc */ @@ -441,6 +441,8 @@ YYPARSE_DECL() } #endif + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -460,28 +462,26 @@ yyloop: if ((yyn = yydefred[yystate]) != 0) goto yyreduce; if (yychar < 0) { - if ((yychar = YYLEX) < 0) yychar = YYEOF; + yychar = YYLEX; + if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, yystate, yychar, yys); } #endif } - if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, shifting to state %d\n", YYPREFIX, yystate, yytable[yyn]); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; @@ -489,18 +489,17 @@ yyloop: if (yyerrflag > 0) --yyerrflag; goto yyloop; } - if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { yyn = yytable[yyn]; goto yyreduce; } - if (yyerrflag) goto yyinrecovery; + if (yyerrflag != 0) goto yyinrecovery; YYERROR_CALL("syntax error"); - goto yyerrlab; - + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: ++yynerrs; @@ -510,18 +509,15 @@ yyinrecovery: yyerrflag = 3; for (;;) { - if ((yyn = yysindex[*yystack.s_mark]) && (yyn += YYERRCODE) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) + if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, error recovery shifting\ to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; @@ -546,7 +542,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, error recovery discards token %d (%s)\n", YYPREFIX, yystate, yychar, yys); } @@ -562,10 +558,11 @@ yyreduce: YYPREFIX, yystate, yyn, yyrule[yyn]); #endif yym = yylen[yyn]; - if (yym) + if (yym > 0) yyval = yystack.l_mark[1-yym]; else memset(&yyval, 0, sizeof yyval); + switch (yyn) { case 3: @@ -628,7 +625,7 @@ case 18: #line 70 "quote_calc3.y" { yyval = base * yystack.l_mark[-1] + yystack.l_mark[0]; } break; -#line 632 "quote_calc3-s.tab.c" +#line 629 "quote_calc3-s.tab.c" } yystack.s_mark -= yym; yystate = *yystack.s_mark; @@ -646,11 +643,12 @@ break; *++yystack.l_mark = yyval; if (yychar < 0) { - if ((yychar = YYLEX) < 0) yychar = YYEOF; + yychar = YYLEX; + if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, YYFINAL, yychar, yys); } @@ -659,8 +657,8 @@ break; if (yychar == YYEOF) goto yyaccept; goto yyloop; } - if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yystate) + if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate) yystate = yytable[yyn]; else yystate = yydgoto[yym]; @@ -669,10 +667,7 @@ break; printf("%sdebug: after reduction, shifting from state %d \ to state %d\n", YYPREFIX, *yystack.s_mark, yystate); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; goto yyloop; diff --git a/test/yacc/quote_calc3.tab.c b/test/yacc/quote_calc3.tab.c index ad4fe1a..aff287b 100644 --- a/test/yacc/quote_calc3.tab.c +++ b/test/yacc/quote_calc3.tab.c @@ -369,7 +369,7 @@ yylex(void) { #line 370 "quote_calc3.tab.c" #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif #include <stdlib.h> /* needed for malloc, etc */ @@ -441,6 +441,8 @@ YYPARSE_DECL() } #endif + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -460,28 +462,26 @@ yyloop: if ((yyn = yydefred[yystate]) != 0) goto yyreduce; if (yychar < 0) { - if ((yychar = YYLEX) < 0) yychar = YYEOF; + yychar = YYLEX; + if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, yystate, yychar, yys); } #endif } - if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, shifting to state %d\n", YYPREFIX, yystate, yytable[yyn]); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; @@ -489,18 +489,17 @@ yyloop: if (yyerrflag > 0) --yyerrflag; goto yyloop; } - if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { yyn = yytable[yyn]; goto yyreduce; } - if (yyerrflag) goto yyinrecovery; + if (yyerrflag != 0) goto yyinrecovery; YYERROR_CALL("syntax error"); - goto yyerrlab; - + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: ++yynerrs; @@ -510,18 +509,15 @@ yyinrecovery: yyerrflag = 3; for (;;) { - if ((yyn = yysindex[*yystack.s_mark]) && (yyn += YYERRCODE) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) + if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, error recovery shifting\ to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; @@ -546,7 +542,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, error recovery discards token %d (%s)\n", YYPREFIX, yystate, yychar, yys); } @@ -562,10 +558,11 @@ yyreduce: YYPREFIX, yystate, yyn, yyrule[yyn]); #endif yym = yylen[yyn]; - if (yym) + if (yym > 0) yyval = yystack.l_mark[1-yym]; else memset(&yyval, 0, sizeof yyval); + switch (yyn) { case 3: @@ -628,7 +625,7 @@ case 18: #line 70 "quote_calc3.y" { yyval = base * yystack.l_mark[-1] + yystack.l_mark[0]; } break; -#line 632 "quote_calc3.tab.c" +#line 629 "quote_calc3.tab.c" } yystack.s_mark -= yym; yystate = *yystack.s_mark; @@ -646,11 +643,12 @@ break; *++yystack.l_mark = yyval; if (yychar < 0) { - if ((yychar = YYLEX) < 0) yychar = YYEOF; + yychar = YYLEX; + if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, YYFINAL, yychar, yys); } @@ -659,8 +657,8 @@ break; if (yychar == YYEOF) goto yyaccept; goto yyloop; } - if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yystate) + if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate) yystate = yytable[yyn]; else yystate = yydgoto[yym]; @@ -669,10 +667,7 @@ break; printf("%sdebug: after reduction, shifting from state %d \ to state %d\n", YYPREFIX, *yystack.s_mark, yystate); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; goto yyloop; diff --git a/test/yacc/quote_calc4-s.tab.c b/test/yacc/quote_calc4-s.tab.c index 4d1e3d4..16a0ebe 100644 --- a/test/yacc/quote_calc4-s.tab.c +++ b/test/yacc/quote_calc4-s.tab.c @@ -369,7 +369,7 @@ yylex(void) { #line 370 "quote_calc4-s.tab.c" #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif #include <stdlib.h> /* needed for malloc, etc */ @@ -441,6 +441,8 @@ YYPARSE_DECL() } #endif + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -460,28 +462,26 @@ yyloop: if ((yyn = yydefred[yystate]) != 0) goto yyreduce; if (yychar < 0) { - if ((yychar = YYLEX) < 0) yychar = YYEOF; + yychar = YYLEX; + if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, yystate, yychar, yys); } #endif } - if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, shifting to state %d\n", YYPREFIX, yystate, yytable[yyn]); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; @@ -489,18 +489,17 @@ yyloop: if (yyerrflag > 0) --yyerrflag; goto yyloop; } - if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { yyn = yytable[yyn]; goto yyreduce; } - if (yyerrflag) goto yyinrecovery; + if (yyerrflag != 0) goto yyinrecovery; YYERROR_CALL("syntax error"); - goto yyerrlab; - + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: ++yynerrs; @@ -510,18 +509,15 @@ yyinrecovery: yyerrflag = 3; for (;;) { - if ((yyn = yysindex[*yystack.s_mark]) && (yyn += YYERRCODE) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) + if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, error recovery shifting\ to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; @@ -546,7 +542,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, error recovery discards token %d (%s)\n", YYPREFIX, yystate, yychar, yys); } @@ -562,10 +558,11 @@ yyreduce: YYPREFIX, yystate, yyn, yyrule[yyn]); #endif yym = yylen[yyn]; - if (yym) + if (yym > 0) yyval = yystack.l_mark[1-yym]; else memset(&yyval, 0, sizeof yyval); + switch (yyn) { case 3: @@ -628,7 +625,7 @@ case 18: #line 70 "quote_calc4.y" { yyval = base * yystack.l_mark[-1] + yystack.l_mark[0]; } break; -#line 632 "quote_calc4-s.tab.c" +#line 629 "quote_calc4-s.tab.c" } yystack.s_mark -= yym; yystate = *yystack.s_mark; @@ -646,11 +643,12 @@ break; *++yystack.l_mark = yyval; if (yychar < 0) { - if ((yychar = YYLEX) < 0) yychar = YYEOF; + yychar = YYLEX; + if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, YYFINAL, yychar, yys); } @@ -659,8 +657,8 @@ break; if (yychar == YYEOF) goto yyaccept; goto yyloop; } - if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yystate) + if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate) yystate = yytable[yyn]; else yystate = yydgoto[yym]; @@ -669,10 +667,7 @@ break; printf("%sdebug: after reduction, shifting from state %d \ to state %d\n", YYPREFIX, *yystack.s_mark, yystate); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; goto yyloop; diff --git a/test/yacc/quote_calc4.tab.c b/test/yacc/quote_calc4.tab.c index a5f047e..e442e1b 100644 --- a/test/yacc/quote_calc4.tab.c +++ b/test/yacc/quote_calc4.tab.c @@ -369,7 +369,7 @@ yylex(void) { #line 370 "quote_calc4.tab.c" #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif #include <stdlib.h> /* needed for malloc, etc */ @@ -441,6 +441,8 @@ YYPARSE_DECL() } #endif + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -460,28 +462,26 @@ yyloop: if ((yyn = yydefred[yystate]) != 0) goto yyreduce; if (yychar < 0) { - if ((yychar = YYLEX) < 0) yychar = YYEOF; + yychar = YYLEX; + if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, yystate, yychar, yys); } #endif } - if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, shifting to state %d\n", YYPREFIX, yystate, yytable[yyn]); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; @@ -489,18 +489,17 @@ yyloop: if (yyerrflag > 0) --yyerrflag; goto yyloop; } - if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { yyn = yytable[yyn]; goto yyreduce; } - if (yyerrflag) goto yyinrecovery; + if (yyerrflag != 0) goto yyinrecovery; YYERROR_CALL("syntax error"); - goto yyerrlab; - + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: ++yynerrs; @@ -510,18 +509,15 @@ yyinrecovery: yyerrflag = 3; for (;;) { - if ((yyn = yysindex[*yystack.s_mark]) && (yyn += YYERRCODE) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) + if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, error recovery shifting\ to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; @@ -546,7 +542,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, error recovery discards token %d (%s)\n", YYPREFIX, yystate, yychar, yys); } @@ -562,10 +558,11 @@ yyreduce: YYPREFIX, yystate, yyn, yyrule[yyn]); #endif yym = yylen[yyn]; - if (yym) + if (yym > 0) yyval = yystack.l_mark[1-yym]; else memset(&yyval, 0, sizeof yyval); + switch (yyn) { case 3: @@ -628,7 +625,7 @@ case 18: #line 70 "quote_calc4.y" { yyval = base * yystack.l_mark[-1] + yystack.l_mark[0]; } break; -#line 632 "quote_calc4.tab.c" +#line 629 "quote_calc4.tab.c" } yystack.s_mark -= yym; yystate = *yystack.s_mark; @@ -646,11 +643,12 @@ break; *++yystack.l_mark = yyval; if (yychar < 0) { - if ((yychar = YYLEX) < 0) yychar = YYEOF; + yychar = YYLEX; + if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, YYFINAL, yychar, yys); } @@ -659,8 +657,8 @@ break; if (yychar == YYEOF) goto yyaccept; goto yyloop; } - if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yystate) + if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate) yystate = yytable[yyn]; else yystate = yydgoto[yym]; @@ -669,10 +667,7 @@ break; printf("%sdebug: after reduction, shifting from state %d \ to state %d\n", YYPREFIX, *yystack.s_mark, yystate); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; goto yyloop; diff --git a/test/yacc/rename_debug.c b/test/yacc/rename_debug.c index 5202074..e94d216 100644 --- a/test/yacc/rename_debug.c +++ b/test/yacc/rename_debug.c @@ -128,7 +128,7 @@ yyerror(const char* s) #line 130 "rename_debug.c" #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif #include <stdlib.h> /* needed for malloc, etc */ @@ -200,6 +200,8 @@ YYPARSE_DECL() } #endif + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -219,28 +221,26 @@ yyloop: if ((yyn = yydefred[yystate]) != 0) goto yyreduce; if (yychar < 0) { - if ((yychar = YYLEX) < 0) yychar = YYEOF; + yychar = YYLEX; + if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, yystate, yychar, yys); } #endif } - if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, shifting to state %d\n", YYPREFIX, yystate, yytable[yyn]); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; @@ -248,18 +248,17 @@ yyloop: if (yyerrflag > 0) --yyerrflag; goto yyloop; } - if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { yyn = yytable[yyn]; goto yyreduce; } - if (yyerrflag) goto yyinrecovery; + if (yyerrflag != 0) goto yyinrecovery; YYERROR_CALL("syntax error"); - goto yyerrlab; - + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: ++yynerrs; @@ -269,18 +268,15 @@ yyinrecovery: yyerrflag = 3; for (;;) { - if ((yyn = yysindex[*yystack.s_mark]) && (yyn += YYERRCODE) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) + if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, error recovery shifting\ to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; @@ -305,7 +301,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, error recovery discards token %d (%s)\n", YYPREFIX, yystate, yychar, yys); } @@ -321,10 +317,11 @@ yyreduce: YYPREFIX, yystate, yyn, yyrule[yyn]); #endif yym = yylen[yyn]; - if (yym) + if (yym > 0) yyval = yystack.l_mark[1-yym]; else memset(&yyval, 0, sizeof yyval); + switch (yyn) { } @@ -344,11 +341,12 @@ yyreduce: *++yystack.l_mark = yyval; if (yychar < 0) { - if ((yychar = YYLEX) < 0) yychar = YYEOF; + yychar = YYLEX; + if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, YYFINAL, yychar, yys); } @@ -357,8 +355,8 @@ yyreduce: if (yychar == YYEOF) goto yyaccept; goto yyloop; } - if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yystate) + if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate) yystate = yytable[yyn]; else yystate = yydgoto[yym]; @@ -367,10 +365,7 @@ yyreduce: printf("%sdebug: after reduction, shifting from state %d \ to state %d\n", YYPREFIX, *yystack.s_mark, yystate); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; goto yyloop; diff --git a/test/yacc/varsyntax_calc1.tab.c b/test/yacc/varsyntax_calc1.tab.c index 49a1527..fe78c83 100644 --- a/test/yacc/varsyntax_calc1.tab.c +++ b/test/yacc/varsyntax_calc1.tab.c @@ -124,13 +124,13 @@ int dcheck(INTERVAL); double dreg[26]; INTERVAL vreg[26]; -#line 32 "varsyntax_calc1.y" #ifdef YYSTYPE #undef YYSTYPE_IS_DECLARED #define YYSTYPE_IS_DECLARED 1 #endif #ifndef YYSTYPE_IS_DECLARED #define YYSTYPE_IS_DECLARED 1 +#line 32 "varsyntax_calc1.y" typedef union { int ival; /* dreg & vreg array index values*/ @@ -491,7 +491,7 @@ vdiv(double a, double b, INTERVAL v) #line 492 "varsyntax_calc1.tab.c" #if YYDEBUG -#include <stdio.h> /* needed for printf */ +#include <stdio.h> /* needed for printf */ #endif #include <stdlib.h> /* needed for malloc, etc */ @@ -563,6 +563,8 @@ YYPARSE_DECL() } #endif + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -582,28 +584,26 @@ yyloop: if ((yyn = yydefred[yystate]) != 0) goto yyreduce; if (yychar < 0) { - if ((yychar = YYLEX) < 0) yychar = YYEOF; + yychar = YYLEX; + if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, yystate, yychar, yys); } #endif } - if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, shifting to state %d\n", YYPREFIX, yystate, yytable[yyn]); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; @@ -611,18 +611,17 @@ yyloop: if (yyerrflag > 0) --yyerrflag; goto yyloop; } - if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { yyn = yytable[yyn]; goto yyreduce; } - if (yyerrflag) goto yyinrecovery; + if (yyerrflag != 0) goto yyinrecovery; YYERROR_CALL("syntax error"); - goto yyerrlab; - + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: ++yynerrs; @@ -632,18 +631,15 @@ yyinrecovery: yyerrflag = 3; for (;;) { - if ((yyn = yysindex[*yystack.s_mark]) && (yyn += YYERRCODE) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) + if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, error recovery shifting\ to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; @@ -668,7 +664,7 @@ yyinrecovery: #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, error recovery discards token %d (%s)\n", YYPREFIX, yystate, yychar, yys); } @@ -684,10 +680,11 @@ yyreduce: YYPREFIX, yystate, yyn, yyrule[yyn]); #endif yym = yylen[yyn]; - if (yym) + if (yym > 0) yyval = yystack.l_mark[1-yym]; else memset(&yyval, 0, sizeof yyval); + switch (yyn) { case 3: @@ -853,7 +850,7 @@ case 28: yyval.vval = yystack.l_mark[-1].vval; } break; -#line 857 "varsyntax_calc1.tab.c" +#line 854 "varsyntax_calc1.tab.c" } yystack.s_mark -= yym; yystate = *yystack.s_mark; @@ -871,11 +868,12 @@ break; *++yystack.l_mark = yyval; if (yychar < 0) { - if ((yychar = YYLEX) < 0) yychar = YYEOF; + yychar = YYLEX; + if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { - yys = yyname[YYTRANSLATE(yychar)]; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, YYFINAL, yychar, yys); } @@ -884,8 +882,8 @@ break; if (yychar == YYEOF) goto yyaccept; goto yyloop; } - if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yystate) + if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate) yystate = yytable[yyn]; else yystate = yydgoto[yym]; @@ -894,10 +892,7 @@ break; printf("%sdebug: after reduction, shifting from state %d \ to state %d\n", YYPREFIX, *yystack.s_mark, yystate); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; goto yyloop; |