13e794565SJung-uk Kim /* original parser id follows */
23e794565SJung-uk Kim /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */
33e794565SJung-uk Kim /* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */
43e794565SJung-uk Kim
53e794565SJung-uk Kim #define YYBYACC 1
68e022d3cSDag-Erling Smørgrav #define YYMAJOR 2
78e022d3cSDag-Erling Smørgrav #define YYMINOR 0
83e794565SJung-uk Kim #define YYCHECK "yyyymmdd"
93e794565SJung-uk Kim
103e794565SJung-uk Kim #define YYEMPTY (-1)
113e794565SJung-uk Kim #define yyclearin (yychar = YYEMPTY)
123e794565SJung-uk Kim #define yyerrok (yyerrflag = 0)
133e794565SJung-uk Kim #define YYRECOVERING() (yyerrflag != 0)
143e794565SJung-uk Kim #define YYENOMEM (-2)
153e794565SJung-uk Kim #define YYEOF 0
163e794565SJung-uk Kim
173e794565SJung-uk Kim #ifndef yyparse
188e022d3cSDag-Erling Smørgrav #define yyparse expr_oxout_parse
193e794565SJung-uk Kim #endif /* yyparse */
203e794565SJung-uk Kim
213e794565SJung-uk Kim #ifndef yylex
228e022d3cSDag-Erling Smørgrav #define yylex expr_oxout_lex
233e794565SJung-uk Kim #endif /* yylex */
243e794565SJung-uk Kim
253e794565SJung-uk Kim #ifndef yyerror
268e022d3cSDag-Erling Smørgrav #define yyerror expr_oxout_error
273e794565SJung-uk Kim #endif /* yyerror */
283e794565SJung-uk Kim
293e794565SJung-uk Kim #ifndef yychar
308e022d3cSDag-Erling Smørgrav #define yychar expr_oxout_char
313e794565SJung-uk Kim #endif /* yychar */
323e794565SJung-uk Kim
333e794565SJung-uk Kim #ifndef yyval
348e022d3cSDag-Erling Smørgrav #define yyval expr_oxout_val
353e794565SJung-uk Kim #endif /* yyval */
363e794565SJung-uk Kim
373e794565SJung-uk Kim #ifndef yylval
388e022d3cSDag-Erling Smørgrav #define yylval expr_oxout_lval
393e794565SJung-uk Kim #endif /* yylval */
403e794565SJung-uk Kim
413e794565SJung-uk Kim #ifndef yydebug
428e022d3cSDag-Erling Smørgrav #define yydebug expr_oxout_debug
433e794565SJung-uk Kim #endif /* yydebug */
443e794565SJung-uk Kim
453e794565SJung-uk Kim #ifndef yynerrs
468e022d3cSDag-Erling Smørgrav #define yynerrs expr_oxout_nerrs
473e794565SJung-uk Kim #endif /* yynerrs */
483e794565SJung-uk Kim
493e794565SJung-uk Kim #ifndef yyerrflag
508e022d3cSDag-Erling Smørgrav #define yyerrflag expr_oxout_errflag
513e794565SJung-uk Kim #endif /* yyerrflag */
523e794565SJung-uk Kim
533e794565SJung-uk Kim #ifndef yylhs
548e022d3cSDag-Erling Smørgrav #define yylhs expr_oxout_lhs
553e794565SJung-uk Kim #endif /* yylhs */
563e794565SJung-uk Kim
573e794565SJung-uk Kim #ifndef yylen
588e022d3cSDag-Erling Smørgrav #define yylen expr_oxout_len
593e794565SJung-uk Kim #endif /* yylen */
603e794565SJung-uk Kim
613e794565SJung-uk Kim #ifndef yydefred
628e022d3cSDag-Erling Smørgrav #define yydefred expr_oxout_defred
633e794565SJung-uk Kim #endif /* yydefred */
643e794565SJung-uk Kim
653e794565SJung-uk Kim #ifndef yydgoto
668e022d3cSDag-Erling Smørgrav #define yydgoto expr_oxout_dgoto
673e794565SJung-uk Kim #endif /* yydgoto */
683e794565SJung-uk Kim
693e794565SJung-uk Kim #ifndef yysindex
708e022d3cSDag-Erling Smørgrav #define yysindex expr_oxout_sindex
713e794565SJung-uk Kim #endif /* yysindex */
723e794565SJung-uk Kim
733e794565SJung-uk Kim #ifndef yyrindex
748e022d3cSDag-Erling Smørgrav #define yyrindex expr_oxout_rindex
753e794565SJung-uk Kim #endif /* yyrindex */
763e794565SJung-uk Kim
773e794565SJung-uk Kim #ifndef yygindex
788e022d3cSDag-Erling Smørgrav #define yygindex expr_oxout_gindex
793e794565SJung-uk Kim #endif /* yygindex */
803e794565SJung-uk Kim
813e794565SJung-uk Kim #ifndef yytable
828e022d3cSDag-Erling Smørgrav #define yytable expr_oxout_table
833e794565SJung-uk Kim #endif /* yytable */
843e794565SJung-uk Kim
853e794565SJung-uk Kim #ifndef yycheck
868e022d3cSDag-Erling Smørgrav #define yycheck expr_oxout_check
873e794565SJung-uk Kim #endif /* yycheck */
883e794565SJung-uk Kim
893e794565SJung-uk Kim #ifndef yyname
908e022d3cSDag-Erling Smørgrav #define yyname expr_oxout_name
913e794565SJung-uk Kim #endif /* yyname */
923e794565SJung-uk Kim
933e794565SJung-uk Kim #ifndef yyrule
948e022d3cSDag-Erling Smørgrav #define yyrule expr_oxout_rule
953e794565SJung-uk Kim #endif /* yyrule */
968e022d3cSDag-Erling Smørgrav #define YYPREFIX "expr_oxout_"
973e794565SJung-uk Kim
983e794565SJung-uk Kim #define YYPURE 0
993e794565SJung-uk Kim
1003e794565SJung-uk Kim #line 5 "expr.oxout.y"
1013e794565SJung-uk Kim #include <stdlib.h>
1023e794565SJung-uk Kim #include <string.h>
1033e794565SJung-uk Kim #line 8 "expr.Y"
1043e794565SJung-uk Kim
1053e794565SJung-uk Kim #include "expr.oxout.h"
1063e794565SJung-uk Kim #include <stdio.h>
1073e794565SJung-uk Kim
1083e794565SJung-uk Kim extern int yylex(void);
1093e794565SJung-uk Kim extern void yyerror(const char *);
1103e794565SJung-uk Kim #line 27 "expr.oxout.y"
1113e794565SJung-uk Kim #include <limits.h>
1123e794565SJung-uk Kim #define yyyR USHRT_MAX
1133e794565SJung-uk Kim #ifdef YYSTYPE
1143e794565SJung-uk Kim #undef YYSTYPE_IS_DECLARED
1153e794565SJung-uk Kim #define YYSTYPE_IS_DECLARED 1
1163e794565SJung-uk Kim #endif
1173e794565SJung-uk Kim #ifndef YYSTYPE_IS_DECLARED
1183e794565SJung-uk Kim #define YYSTYPE_IS_DECLARED 1
1193e794565SJung-uk Kim #line 31 "expr.oxout.y"
120*822ca327SBaptiste Daroussin typedef union YYSTYPE {
1213e794565SJung-uk Kim struct yyyOxAttrbs {
1223e794565SJung-uk Kim struct yyyStackItem *yyyOxStackItem;
1233e794565SJung-uk Kim } yyyOxAttrbs;
1243e794565SJung-uk Kim } YYSTYPE;
1253e794565SJung-uk Kim #endif /* !YYSTYPE_IS_DECLARED */
1263e794565SJung-uk Kim #line 38 "expr.oxout.y"
1273e794565SJung-uk Kim #include <stdio.h>
1283e794565SJung-uk Kim #include <stdarg.h>
1293e794565SJung-uk Kim
1303e794565SJung-uk Kim static int yyyYok = 1;
1313e794565SJung-uk Kim
1323e794565SJung-uk Kim extern yyyFT yyyRCIL[];
1333e794565SJung-uk Kim
1343e794565SJung-uk Kim void yyyExecuteRRsection(yyyGNT *rootNode);
1353e794565SJung-uk Kim void yyyYoxInit(void);
1363e794565SJung-uk Kim void yyyDecorate(void);
1373e794565SJung-uk Kim struct yyyOxAttrbs; /* hack required to compensate for 'msta' behavior */
1383e794565SJung-uk Kim void yyyGenIntNode(long yyyProdNum, int yyyRHSlength, int yyyNattrbs, struct yyyOxAttrbs *yyval_OxAttrbs, ...);
1393e794565SJung-uk Kim void yyyAdjustINRC(long yyyProdNum, int yyyRHSlength, long startP, long stopP, struct yyyOxAttrbs *yyval_OxAttrbs, ...);
1403e794565SJung-uk Kim void yyyCheckUnsolvedInstTrav(yyyGNT *rootNode,long *nNZrc,long *cycleSum);
1413e794565SJung-uk Kim void yyyUnsolvedInstSearchTrav(yyyGNT *pNode);
1423e794565SJung-uk Kim void yyyUnsolvedInstSearchTravAux(yyyGNT *pNode);
1433e794565SJung-uk Kim void yyyabort(void);
1443e794565SJung-uk Kim
1453e794565SJung-uk Kim #line 146 "expr.oxout.tab.c"
1463e794565SJung-uk Kim
1473e794565SJung-uk Kim /* compatibility with bison */
1483e794565SJung-uk Kim #ifdef YYPARSE_PARAM
1493e794565SJung-uk Kim /* compatibility with FreeBSD */
1503e794565SJung-uk Kim # ifdef YYPARSE_PARAM_TYPE
1513e794565SJung-uk Kim # define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
1523e794565SJung-uk Kim # else
1533e794565SJung-uk Kim # define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
1543e794565SJung-uk Kim # endif
1553e794565SJung-uk Kim #else
1563e794565SJung-uk Kim # define YYPARSE_DECL() yyparse(void)
1573e794565SJung-uk Kim #endif
1583e794565SJung-uk Kim
1593e794565SJung-uk Kim /* Parameters sent to lex. */
1603e794565SJung-uk Kim #ifdef YYLEX_PARAM
1613e794565SJung-uk Kim # define YYLEX_DECL() yylex(void *YYLEX_PARAM)
1623e794565SJung-uk Kim # define YYLEX yylex(YYLEX_PARAM)
1633e794565SJung-uk Kim #else
1643e794565SJung-uk Kim # define YYLEX_DECL() yylex(void)
1653e794565SJung-uk Kim # define YYLEX yylex()
1663e794565SJung-uk Kim #endif
1673e794565SJung-uk Kim
1683e794565SJung-uk Kim /* Parameters sent to yyerror. */
1693e794565SJung-uk Kim #ifndef YYERROR_DECL
1703e794565SJung-uk Kim #define YYERROR_DECL() yyerror(const char *s)
1713e794565SJung-uk Kim #endif
1723e794565SJung-uk Kim #ifndef YYERROR_CALL
1733e794565SJung-uk Kim #define YYERROR_CALL(msg) yyerror(msg)
1743e794565SJung-uk Kim #endif
1753e794565SJung-uk Kim
1763e794565SJung-uk Kim extern int YYPARSE_DECL();
1773e794565SJung-uk Kim
1783e794565SJung-uk Kim #define ID 257
1793e794565SJung-uk Kim #define CONST 258
1803e794565SJung-uk Kim #define YYERRCODE 256
181fa841eb6SEnji Cooper typedef int YYINT;
1828e022d3cSDag-Erling Smørgrav static const YYINT expr_oxout_lhs[] = { -1,
1833e794565SJung-uk Kim 2, 0, 1, 3, 3, 3, 3, 3, 3, 3,
1843e794565SJung-uk Kim };
1858e022d3cSDag-Erling Smørgrav static const YYINT expr_oxout_len[] = { 2,
1863e794565SJung-uk Kim 0, 2, 1, 3, 3, 3, 3, 3, 1, 1,
1873e794565SJung-uk Kim };
1888e022d3cSDag-Erling Smørgrav static const YYINT expr_oxout_defred[] = { 1,
1893e794565SJung-uk Kim 0, 0, 9, 10, 0, 2, 0, 0, 0, 0,
1903e794565SJung-uk Kim 0, 0, 8, 0, 0, 4, 0,
1913e794565SJung-uk Kim };
1928e022d3cSDag-Erling Smørgrav static const YYINT expr_oxout_dgoto[] = { 1,
1933e794565SJung-uk Kim 6, 2, 7,
1943e794565SJung-uk Kim };
1958e022d3cSDag-Erling Smørgrav static const YYINT expr_oxout_sindex[] = { 0,
1963e794565SJung-uk Kim 0, -40, 0, 0, -40, 0, -18, -24, -40, -40,
1973e794565SJung-uk Kim -40, -40, 0, -37, -37, 0, -39,
1983e794565SJung-uk Kim };
1998e022d3cSDag-Erling Smørgrav static const YYINT expr_oxout_rindex[] = { 0,
2003e794565SJung-uk Kim 0, 0, 0, 0, 0, 0, 6, 0, 0, 0,
2013e794565SJung-uk Kim 0, 0, 0, 2, 8, 0, 1,
2023e794565SJung-uk Kim };
2038e022d3cSDag-Erling Smørgrav static const YYINT expr_oxout_gindex[] = { 0,
2043e794565SJung-uk Kim 0, 0, 4,
2053e794565SJung-uk Kim };
2063e794565SJung-uk Kim #define YYTABLESIZE 218
2078e022d3cSDag-Erling Smørgrav static const YYINT expr_oxout_table[] = { 5,
2083e794565SJung-uk Kim 6, 5, 11, 0, 11, 3, 0, 7, 8, 12,
2093e794565SJung-uk Kim 0, 0, 14, 15, 16, 17, 13, 11, 9, 0,
2103e794565SJung-uk Kim 10, 0, 12, 11, 9, 0, 10, 0, 12, 0,
2113e794565SJung-uk Kim 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2123e794565SJung-uk Kim 0, 6, 5, 6, 5, 6, 5, 6, 7, 0,
2133e794565SJung-uk Kim 7, 0, 7, 0, 0, 0, 0, 0, 0, 0,
2143e794565SJung-uk Kim 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2153e794565SJung-uk Kim 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2163e794565SJung-uk Kim 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2173e794565SJung-uk Kim 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2183e794565SJung-uk Kim 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2193e794565SJung-uk Kim 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2203e794565SJung-uk Kim 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2213e794565SJung-uk Kim 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2223e794565SJung-uk Kim 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2233e794565SJung-uk Kim 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2243e794565SJung-uk Kim 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2253e794565SJung-uk Kim 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2263e794565SJung-uk Kim 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2273e794565SJung-uk Kim 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2283e794565SJung-uk Kim 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2293e794565SJung-uk Kim 0, 0, 0, 0, 0, 0, 3, 4,
2303e794565SJung-uk Kim };
2318e022d3cSDag-Erling Smørgrav static const YYINT expr_oxout_check[] = { 40,
2323e794565SJung-uk Kim 0, 0, 42, -1, 42, 0, -1, 0, 5, 47,
2333e794565SJung-uk Kim -1, -1, 9, 10, 11, 12, 41, 42, 43, -1,
2343e794565SJung-uk Kim 45, -1, 47, 42, 43, -1, 45, -1, 47, -1,
2353e794565SJung-uk Kim -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2363e794565SJung-uk Kim -1, 41, 41, 43, 43, 45, 45, 47, 41, -1,
2373e794565SJung-uk Kim 43, -1, 45, -1, -1, -1, -1, -1, -1, -1,
2383e794565SJung-uk Kim -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2393e794565SJung-uk Kim -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2403e794565SJung-uk Kim -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2413e794565SJung-uk Kim -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2423e794565SJung-uk Kim -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2433e794565SJung-uk Kim -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2443e794565SJung-uk Kim -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2453e794565SJung-uk Kim -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2463e794565SJung-uk Kim -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2473e794565SJung-uk Kim -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2483e794565SJung-uk Kim -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2493e794565SJung-uk Kim -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2503e794565SJung-uk Kim -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2513e794565SJung-uk Kim -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2523e794565SJung-uk Kim -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2533e794565SJung-uk Kim -1, -1, -1, -1, -1, -1, 257, 258,
2543e794565SJung-uk Kim };
2553e794565SJung-uk Kim #define YYFINAL 1
2563e794565SJung-uk Kim #ifndef YYDEBUG
2573e794565SJung-uk Kim #define YYDEBUG 0
2583e794565SJung-uk Kim #endif
2593e794565SJung-uk Kim #define YYMAXTOKEN 258
2603e794565SJung-uk Kim #define YYUNDFTOKEN 264
2613e794565SJung-uk Kim #define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a))
2623e794565SJung-uk Kim #if YYDEBUG
2638e022d3cSDag-Erling Smørgrav static const char *const expr_oxout_name[] = {
2643e794565SJung-uk Kim
2653e794565SJung-uk Kim "end-of-file",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,
2663e794565SJung-uk Kim 0,0,0,0,0,0,"'('","')'","'*'","'+'",0,"'-'",0,"'/'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,
2673e794565SJung-uk Kim 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,
2683e794565SJung-uk Kim 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,
2693e794565SJung-uk Kim 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,
2703e794565SJung-uk Kim 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,
2713e794565SJung-uk Kim 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,"ID",
2723e794565SJung-uk Kim "CONST",0,0,0,0,0,"illegal-symbol",
2733e794565SJung-uk Kim };
2748e022d3cSDag-Erling Smørgrav static const char *const expr_oxout_rule[] = {
2753e794565SJung-uk Kim "$accept : yyyAugNonterm",
2763e794565SJung-uk Kim "$$1 :",
2773e794565SJung-uk Kim "yyyAugNonterm : $$1 s",
2783e794565SJung-uk Kim "s : expr",
2793e794565SJung-uk Kim "expr : expr '*' expr",
2803e794565SJung-uk Kim "expr : expr '+' expr",
2813e794565SJung-uk Kim "expr : expr '/' expr",
2823e794565SJung-uk Kim "expr : expr '-' expr",
2833e794565SJung-uk Kim "expr : '(' expr ')'",
2843e794565SJung-uk Kim "expr : ID",
2853e794565SJung-uk Kim "expr : CONST",
2863e794565SJung-uk Kim
2873e794565SJung-uk Kim };
2883e794565SJung-uk Kim #endif
2893e794565SJung-uk Kim
290b53bb29fSJung-uk Kim #if YYDEBUG
2913e794565SJung-uk Kim int yydebug;
292b53bb29fSJung-uk Kim #endif
2933e794565SJung-uk Kim
2943e794565SJung-uk Kim int yyerrflag;
2953e794565SJung-uk Kim int yychar;
2963e794565SJung-uk Kim YYSTYPE yyval;
2973e794565SJung-uk Kim YYSTYPE yylval;
298b53bb29fSJung-uk Kim int yynerrs;
2993e794565SJung-uk Kim
3003e794565SJung-uk Kim /* define the initial stack-sizes */
3013e794565SJung-uk Kim #ifdef YYSTACKSIZE
3023e794565SJung-uk Kim #undef YYMAXDEPTH
3033e794565SJung-uk Kim #define YYMAXDEPTH YYSTACKSIZE
3043e794565SJung-uk Kim #else
3053e794565SJung-uk Kim #ifdef YYMAXDEPTH
3063e794565SJung-uk Kim #define YYSTACKSIZE YYMAXDEPTH
3073e794565SJung-uk Kim #else
3083e794565SJung-uk Kim #define YYSTACKSIZE 10000
3093e794565SJung-uk Kim #define YYMAXDEPTH 10000
3103e794565SJung-uk Kim #endif
3113e794565SJung-uk Kim #endif
3123e794565SJung-uk Kim
3133e794565SJung-uk Kim #define YYINITSTACKSIZE 200
3143e794565SJung-uk Kim
3153e794565SJung-uk Kim typedef struct {
3163e794565SJung-uk Kim unsigned stacksize;
3173e794565SJung-uk Kim YYINT *s_base;
3183e794565SJung-uk Kim YYINT *s_mark;
3193e794565SJung-uk Kim YYINT *s_last;
3203e794565SJung-uk Kim YYSTYPE *l_base;
3213e794565SJung-uk Kim YYSTYPE *l_mark;
3223e794565SJung-uk Kim } YYSTACKDATA;
3233e794565SJung-uk Kim /* variables for the parser stack */
3243e794565SJung-uk Kim static YYSTACKDATA yystack;
3253e794565SJung-uk Kim #line 53 "expr.Y"
3263e794565SJung-uk Kim
3273e794565SJung-uk Kim
3283e794565SJung-uk Kim int yyparse(void);
3293e794565SJung-uk Kim
main()3303e794565SJung-uk Kim int main()
3313e794565SJung-uk Kim {yyparse();
3323e794565SJung-uk Kim }
3333e794565SJung-uk Kim
3343e794565SJung-uk Kim
3353e794565SJung-uk Kim
3363e794565SJung-uk Kim #line 138 "expr.oxout.y"
3373e794565SJung-uk Kim long yyySSALspaceSize = 20000;
3383e794565SJung-uk Kim long yyyRSmaxSize = 1000;
3393e794565SJung-uk Kim long yyyTravStackMaxSize = 2000;
3403e794565SJung-uk Kim
3413e794565SJung-uk Kim struct yyySolvedSAlistCell {yyyWAT attrbNum;
3423e794565SJung-uk Kim long next;
3433e794565SJung-uk Kim };
3443e794565SJung-uk Kim
3453e794565SJung-uk Kim #define yyyLambdaSSAL 0
3463e794565SJung-uk Kim long yyySSALCfreeList = yyyLambdaSSAL;
3473e794565SJung-uk Kim long yyyNewSSALC = 1;
3483e794565SJung-uk Kim
3493e794565SJung-uk Kim struct yyySolvedSAlistCell *yyySSALspace;
3503e794565SJung-uk Kim
3513e794565SJung-uk Kim long yyyNbytesStackStg;
3523e794565SJung-uk Kim
3533e794565SJung-uk Kim
3543e794565SJung-uk Kim
3553e794565SJung-uk Kim yyyFT yyyRCIL[1];
3563e794565SJung-uk Kim
3573e794565SJung-uk Kim short yyyIIIEL[] = {0,
3583e794565SJung-uk Kim 0,2,6,10,14,18,22,24,
3593e794565SJung-uk Kim };
3603e794565SJung-uk Kim
3613e794565SJung-uk Kim long yyyIIEL[] = {
3623e794565SJung-uk Kim 0,0,0,0,0,0,0,0,0,0,0,0,
3633e794565SJung-uk Kim 0,0,0,0,0,0,0,0,0,0,0,0,
3643e794565SJung-uk Kim 1,1,
3653e794565SJung-uk Kim };
3663e794565SJung-uk Kim
3673e794565SJung-uk Kim long yyyIEL[] = {
3683e794565SJung-uk Kim 0,0,0,
3693e794565SJung-uk Kim };
3703e794565SJung-uk Kim
3713e794565SJung-uk Kim yyyFT yyyEntL[1];
3723e794565SJung-uk Kim
yyyfatal(char * msg)3733e794565SJung-uk Kim void yyyfatal(char *msg)
3743e794565SJung-uk Kim {fputs(msg,stderr);exit(-1);}
3753e794565SJung-uk Kim
3763e794565SJung-uk Kim
3773e794565SJung-uk Kim
3783e794565SJung-uk Kim #define yyySSALof 'S'
3793e794565SJung-uk Kim #define yyyRSof 'q'
3803e794565SJung-uk Kim #define yyyTSof 't'
3813e794565SJung-uk Kim
3823e794565SJung-uk Kim
3833e794565SJung-uk Kim
yyyHandleOverflow(char which)3843e794565SJung-uk Kim void yyyHandleOverflow(char which)
3858e022d3cSDag-Erling Smørgrav {char *msg1 = "?", *msg2;
3868e022d3cSDag-Erling Smørgrav long oldSize = 0, newSize;
3873e794565SJung-uk Kim switch(which)
3883e794565SJung-uk Kim {
3893e794565SJung-uk Kim case yyySSALof :
3903e794565SJung-uk Kim msg1 = "SSAL overflow: ";
3913e794565SJung-uk Kim oldSize = yyySSALspaceSize;
3923e794565SJung-uk Kim break;
3933e794565SJung-uk Kim case yyyRSof :
3943e794565SJung-uk Kim msg1 = "ready set overflow: ";
3953e794565SJung-uk Kim oldSize = yyyRSmaxSize;
3963e794565SJung-uk Kim break;
3973e794565SJung-uk Kim case yyyTSof :
3983e794565SJung-uk Kim msg1 = "traversal stack overflow: ";
3993e794565SJung-uk Kim oldSize = yyyTravStackMaxSize;
4003e794565SJung-uk Kim break;
4013e794565SJung-uk Kim default :;
4023e794565SJung-uk Kim }
4033e794565SJung-uk Kim newSize = (3*oldSize)/2;
4043e794565SJung-uk Kim if (newSize < 100) newSize = 100;
4053e794565SJung-uk Kim fputs(msg1,stderr);
4063e794565SJung-uk Kim fprintf(stderr,"size was %ld.\n",oldSize);
4073e794565SJung-uk Kim msg2 = " Have to modify evaluator: -Y%c%ld.\n";
4083e794565SJung-uk Kim fprintf(stderr,msg2,which,newSize);
4093e794565SJung-uk Kim exit(-1);
4103e794565SJung-uk Kim }
4113e794565SJung-uk Kim
4123e794565SJung-uk Kim
4133e794565SJung-uk Kim
yyySignalEnts(yyyGNT * node,long startP,long stopP)4143e794565SJung-uk Kim void yyySignalEnts(yyyGNT *node,long startP,long stopP)
4153e794565SJung-uk Kim {yyyGNT *dumNode;
4163e794565SJung-uk Kim
4173e794565SJung-uk Kim while (startP < stopP)
4183e794565SJung-uk Kim {
4193e794565SJung-uk Kim if (!yyyEntL[startP]) dumNode = node;
4203e794565SJung-uk Kim else dumNode = (node->cL)[yyyEntL[startP]-1];
4213e794565SJung-uk Kim if (!(--((dumNode->refCountList)[yyyEntL[startP+1]]
4223e794565SJung-uk Kim )
4233e794565SJung-uk Kim )
4243e794565SJung-uk Kim )
4253e794565SJung-uk Kim {
4263e794565SJung-uk Kim if (++yyyRSTop == yyyAfterRS)
4273e794565SJung-uk Kim {yyyHandleOverflow(yyyRSof);
4283e794565SJung-uk Kim break;
4293e794565SJung-uk Kim }
4303e794565SJung-uk Kim yyyRSTop->node = dumNode;
4313e794565SJung-uk Kim yyyRSTop->whichSym = yyyEntL[startP];
4323e794565SJung-uk Kim yyyRSTop->wa = yyyEntL[startP+1];
4333e794565SJung-uk Kim }
4343e794565SJung-uk Kim startP += 2;
4353e794565SJung-uk Kim }
4363e794565SJung-uk Kim }
4373e794565SJung-uk Kim
4383e794565SJung-uk Kim
4393e794565SJung-uk Kim
4403e794565SJung-uk Kim
4413e794565SJung-uk Kim
4423e794565SJung-uk Kim
yyySolveAndSignal()4433e794565SJung-uk Kim void yyySolveAndSignal() {
4443e794565SJung-uk Kim long yyyiDum,*yyypL;
4453e794565SJung-uk Kim int yyyws,yyywa;
4463e794565SJung-uk Kim yyyGNT *yyyRSTopN,*yyyRefN;
4473e794565SJung-uk Kim yyyParent yyyRSTopNp;
4483e794565SJung-uk Kim
4493e794565SJung-uk Kim
4503e794565SJung-uk Kim yyyRSTopNp = (yyyRSTopN = yyyRSTop->node)->parent;
4513e794565SJung-uk Kim yyyRefN= (yyyws = (yyyRSTop->whichSym))?yyyRSTopNp.noderef:yyyRSTopN;
4523e794565SJung-uk Kim yyywa = yyyRSTop->wa;
4533e794565SJung-uk Kim yyyRSTop--;
4543e794565SJung-uk Kim switch(yyyRefN->prodNum) {
4553e794565SJung-uk Kim case 1: /***yacc rule 1***/
4563e794565SJung-uk Kim switch (yyyws) {
4573e794565SJung-uk Kim }
4583e794565SJung-uk Kim break;
4593e794565SJung-uk Kim case 2: /***yacc rule 2***/
4603e794565SJung-uk Kim switch (yyyws) {
4613e794565SJung-uk Kim }
4623e794565SJung-uk Kim break;
4633e794565SJung-uk Kim case 3: /***yacc rule 3***/
4643e794565SJung-uk Kim switch (yyyws) {
4653e794565SJung-uk Kim }
4663e794565SJung-uk Kim break;
4673e794565SJung-uk Kim case 4: /***yacc rule 4***/
4683e794565SJung-uk Kim switch (yyyws) {
4693e794565SJung-uk Kim }
4703e794565SJung-uk Kim break;
4713e794565SJung-uk Kim case 5: /***yacc rule 5***/
4723e794565SJung-uk Kim switch (yyyws) {
4733e794565SJung-uk Kim }
4743e794565SJung-uk Kim break;
4753e794565SJung-uk Kim case 6: /***yacc rule 6***/
4763e794565SJung-uk Kim switch (yyyws) {
4773e794565SJung-uk Kim }
4783e794565SJung-uk Kim break;
4793e794565SJung-uk Kim case 7: /***yacc rule 7***/
4803e794565SJung-uk Kim switch (yyyws) {
4813e794565SJung-uk Kim case 1: /**/
4823e794565SJung-uk Kim switch (yyywa) {
4833e794565SJung-uk Kim }
4843e794565SJung-uk Kim break;
4853e794565SJung-uk Kim }
4863e794565SJung-uk Kim break;
4873e794565SJung-uk Kim case 8: /***yacc rule 8***/
4883e794565SJung-uk Kim switch (yyyws) {
4893e794565SJung-uk Kim case 1: /**/
4903e794565SJung-uk Kim switch (yyywa) {
4913e794565SJung-uk Kim }
4923e794565SJung-uk Kim break;
4933e794565SJung-uk Kim }
4943e794565SJung-uk Kim break;
4953e794565SJung-uk Kim } /* switch */
4963e794565SJung-uk Kim
4973e794565SJung-uk Kim if (yyyws) /* the just-solved instance was inherited. */
4983e794565SJung-uk Kim {if (yyyRSTopN->prodNum)
4993e794565SJung-uk Kim {yyyiDum = yyyIIEL[yyyIIIEL[yyyRSTopN->prodNum]] + yyywa;
5003e794565SJung-uk Kim yyySignalEnts(yyyRSTopN,yyyIEL[yyyiDum],
5013e794565SJung-uk Kim yyyIEL[yyyiDum+1]
5023e794565SJung-uk Kim );
5033e794565SJung-uk Kim }
5043e794565SJung-uk Kim }
5053e794565SJung-uk Kim else /* the just-solved instance was synthesized. */
5063e794565SJung-uk Kim {if (!(yyyRSTopN->parentIsStack)) /* node has a parent. */
5073e794565SJung-uk Kim {yyyiDum = yyyIIEL[yyyIIIEL[yyyRSTopNp.noderef->prodNum] +
5083e794565SJung-uk Kim yyyRSTopN->whichSym
5093e794565SJung-uk Kim ] +
5103e794565SJung-uk Kim yyywa;
5113e794565SJung-uk Kim yyySignalEnts(yyyRSTopNp.noderef,
5123e794565SJung-uk Kim yyyIEL[yyyiDum],
5133e794565SJung-uk Kim yyyIEL[yyyiDum+1]
5143e794565SJung-uk Kim );
5153e794565SJung-uk Kim }
5163e794565SJung-uk Kim else /* node is still on the stack--it has no parent yet. */
5173e794565SJung-uk Kim {yyypL = &(yyyRSTopNp.stackref->solvedSAlist);
5183e794565SJung-uk Kim if (yyySSALCfreeList == yyyLambdaSSAL)
5193e794565SJung-uk Kim {yyySSALspace[yyyNewSSALC].next = *yyypL;
5203e794565SJung-uk Kim if ((*yyypL = yyyNewSSALC++) == yyySSALspaceSize)
5213e794565SJung-uk Kim yyyHandleOverflow(yyySSALof);
5223e794565SJung-uk Kim }
5233e794565SJung-uk Kim else
5243e794565SJung-uk Kim {yyyiDum = yyySSALCfreeList;
5253e794565SJung-uk Kim yyySSALCfreeList = yyySSALspace[yyySSALCfreeList].next;
5263e794565SJung-uk Kim yyySSALspace[yyyiDum].next = *yyypL;
5273e794565SJung-uk Kim *yyypL = yyyiDum;
5283e794565SJung-uk Kim }
5293e794565SJung-uk Kim yyySSALspace[*yyypL].attrbNum = yyywa;
5303e794565SJung-uk Kim }
5313e794565SJung-uk Kim }
5323e794565SJung-uk Kim
5333e794565SJung-uk Kim } /* yyySolveAndSignal */
5343e794565SJung-uk Kim
5353e794565SJung-uk Kim
5363e794565SJung-uk Kim
5373e794565SJung-uk Kim
5383e794565SJung-uk Kim
5393e794565SJung-uk Kim
5403e794565SJung-uk Kim #define condStg unsigned int conds;
5413e794565SJung-uk Kim #define yyyClearConds {yyyTST->conds = 0;}
5423e794565SJung-uk Kim #define yyySetCond(n) {yyyTST->conds += (1<<(n));}
5433e794565SJung-uk Kim #define yyyCond(n) ((yyyTST->conds & (1<<(n)))?1:0)
5443e794565SJung-uk Kim
5453e794565SJung-uk Kim
5463e794565SJung-uk Kim
5473e794565SJung-uk Kim struct yyyTravStackItem {yyyGNT *node;
5483e794565SJung-uk Kim char isReady;
5493e794565SJung-uk Kim condStg
5503e794565SJung-uk Kim };
5513e794565SJung-uk Kim
5523e794565SJung-uk Kim
5533e794565SJung-uk Kim
yyyDoTraversals(yyyGNT * rootNode)5543e794565SJung-uk Kim void yyyDoTraversals(yyyGNT *rootNode)
5553e794565SJung-uk Kim {struct yyyTravStackItem *yyyTravStack,*yyyTST,*yyyAfterTravStack;
5563e794565SJung-uk Kim yyyGNT *yyyTSTn,**yyyCLptr2;
5573e794565SJung-uk Kim int yyyi,yyyRL,yyyPass;
5583e794565SJung-uk Kim int i;
5593e794565SJung-uk Kim
5603e794565SJung-uk Kim if (!yyyYok) return;
5613e794565SJung-uk Kim if ((yyyTravStack =
5623e794565SJung-uk Kim ((struct yyyTravStackItem *)
5633e794565SJung-uk Kim calloc((size_t)yyyTravStackMaxSize,
5643e794565SJung-uk Kim (size_t)sizeof(struct yyyTravStackItem)
5653e794565SJung-uk Kim )
5663e794565SJung-uk Kim )
5673e794565SJung-uk Kim )
5683e794565SJung-uk Kim ==
5693e794565SJung-uk Kim (struct yyyTravStackItem *)NULL
5703e794565SJung-uk Kim )
5713e794565SJung-uk Kim {fputs("malloc error in traversal stack allocation\n",stderr);
5723e794565SJung-uk Kim exit(-1);
5733e794565SJung-uk Kim }
5743e794565SJung-uk Kim
5753e794565SJung-uk Kim yyyAfterTravStack = yyyTravStack + yyyTravStackMaxSize;
5763e794565SJung-uk Kim yyyTravStack++;
5773e794565SJung-uk Kim
5783e794565SJung-uk Kim
5793e794565SJung-uk Kim for (yyyi=0; yyyi<2; yyyi++) {
5803e794565SJung-uk Kim yyyTST = yyyTravStack;
5813e794565SJung-uk Kim yyyTST->node = rootNode;
5823e794565SJung-uk Kim yyyTST->isReady = 0;
5833e794565SJung-uk Kim yyyClearConds
5843e794565SJung-uk Kim
5853e794565SJung-uk Kim while(yyyTST >= yyyTravStack)
5863e794565SJung-uk Kim {yyyTSTn = yyyTST->node;
5873e794565SJung-uk Kim if (yyyTST->isReady)
5883e794565SJung-uk Kim {yyyPass = 1;
5893e794565SJung-uk Kim goto yyyTravSwitch;
5903e794565SJung-uk Kim yyyTpop:
5913e794565SJung-uk Kim yyyTST--;
5923e794565SJung-uk Kim }
5933e794565SJung-uk Kim else
5943e794565SJung-uk Kim {yyyPass = 0;
5953e794565SJung-uk Kim goto yyyTravSwitch;
5963e794565SJung-uk Kim yyyTpush:
5973e794565SJung-uk Kim yyyTST->isReady = 1;
5983e794565SJung-uk Kim if (yyyTSTn->prodNum)
5993e794565SJung-uk Kim {if (yyyRL)
6003e794565SJung-uk Kim {yyyCLptr2 = yyyTSTn->cL;
6013e794565SJung-uk Kim i = yyyTSTn->cLlen;
6023e794565SJung-uk Kim while (i--)
6033e794565SJung-uk Kim {if (++yyyTST == yyyAfterTravStack)
6043e794565SJung-uk Kim yyyHandleOverflow(yyyTSof);
6053e794565SJung-uk Kim else
6063e794565SJung-uk Kim {yyyTST->node = *yyyCLptr2;
6073e794565SJung-uk Kim yyyTST->isReady = 0;
6083e794565SJung-uk Kim yyyClearConds
6093e794565SJung-uk Kim }
6103e794565SJung-uk Kim yyyCLptr2++;
6113e794565SJung-uk Kim }
6123e794565SJung-uk Kim } /* right to left */
6133e794565SJung-uk Kim else /* left to right */
6143e794565SJung-uk Kim {i = yyyTSTn->cLlen;
6153e794565SJung-uk Kim yyyCLptr2 = yyyTSTn->cL + i;
6163e794565SJung-uk Kim while (i--)
6173e794565SJung-uk Kim {yyyCLptr2--;
6183e794565SJung-uk Kim if (++yyyTST == yyyAfterTravStack)
6193e794565SJung-uk Kim yyyHandleOverflow(yyyTSof);
6203e794565SJung-uk Kim else
6213e794565SJung-uk Kim {yyyTST->node = *yyyCLptr2;
6223e794565SJung-uk Kim yyyTST->isReady = 0;
6233e794565SJung-uk Kim yyyClearConds
6243e794565SJung-uk Kim }
6253e794565SJung-uk Kim }
6263e794565SJung-uk Kim } /* left to right */
6273e794565SJung-uk Kim }
6283e794565SJung-uk Kim } /* else */
6293e794565SJung-uk Kim continue;
6303e794565SJung-uk Kim yyyTravSwitch:
6313e794565SJung-uk Kim switch(yyyTSTn->prodNum) {
6323e794565SJung-uk Kim case 1:
6333e794565SJung-uk Kim switch(yyyi) {
6343e794565SJung-uk Kim case 0:
6353e794565SJung-uk Kim switch(yyyPass) {
6363e794565SJung-uk Kim case 0:
6373e794565SJung-uk Kim yyyRL = 0;yyySetCond(0)
6383e794565SJung-uk Kim
6393e794565SJung-uk Kim if (!
6403e794565SJung-uk Kim #line 24 "expr.Y"
6413e794565SJung-uk Kim (1)
6423e794565SJung-uk Kim #line 444 "expr.oxout.y"
6433e794565SJung-uk Kim ) yyySetCond(1)
6443e794565SJung-uk Kim yyySetCond(2)
6453e794565SJung-uk Kim
6463e794565SJung-uk Kim case 1:
6473e794565SJung-uk Kim
6483e794565SJung-uk Kim if (yyyCond(0) != yyyPass) {
6493e794565SJung-uk Kim #line 24 "expr.Y"
6503e794565SJung-uk Kim
6513e794565SJung-uk Kim #line 453 "expr.oxout.y"
6523e794565SJung-uk Kim }
6533e794565SJung-uk Kim if (yyyCond(1) != yyyPass) {
6543e794565SJung-uk Kim #line 24 "expr.Y"
6553e794565SJung-uk Kim printf("\n");
6563e794565SJung-uk Kim
6573e794565SJung-uk Kim #line 459 "expr.oxout.y"
6583e794565SJung-uk Kim }
6593e794565SJung-uk Kim if (yyyCond(2) != yyyPass) {
6603e794565SJung-uk Kim #line 25 "expr.Y"
6613e794565SJung-uk Kim printf("prefix: ");
6623e794565SJung-uk Kim
6633e794565SJung-uk Kim #line 465 "expr.oxout.y"
6643e794565SJung-uk Kim }
6653e794565SJung-uk Kim break;
6663e794565SJung-uk Kim }
6673e794565SJung-uk Kim break;
6683e794565SJung-uk Kim case 1:
6693e794565SJung-uk Kim switch(yyyPass) {
6703e794565SJung-uk Kim case 0:
6713e794565SJung-uk Kim yyyRL = 0;
6723e794565SJung-uk Kim if (
6733e794565SJung-uk Kim #line 23 "expr.Y"
6743e794565SJung-uk Kim (1)
6753e794565SJung-uk Kim #line 477 "expr.oxout.y"
6763e794565SJung-uk Kim ) yyySetCond(2)
6773e794565SJung-uk Kim
6783e794565SJung-uk Kim case 1:
6793e794565SJung-uk Kim
6803e794565SJung-uk Kim if (yyyCond(0) != yyyPass) {
6813e794565SJung-uk Kim #line 22 "expr.Y"
6823e794565SJung-uk Kim printf("\n");
6833e794565SJung-uk Kim
6843e794565SJung-uk Kim #line 486 "expr.oxout.y"
6853e794565SJung-uk Kim }
6863e794565SJung-uk Kim if (yyyCond(1) != yyyPass) {
6873e794565SJung-uk Kim #line 23 "expr.Y"
6883e794565SJung-uk Kim
6893e794565SJung-uk Kim #line 491 "expr.oxout.y"
6903e794565SJung-uk Kim }
6913e794565SJung-uk Kim if (yyyCond(2) != yyyPass) {
6923e794565SJung-uk Kim #line 23 "expr.Y"
6938e022d3cSDag-Erling Smørgrav printf("postfix: ");
6943e794565SJung-uk Kim
6953e794565SJung-uk Kim #line 497 "expr.oxout.y"
6963e794565SJung-uk Kim }
6973e794565SJung-uk Kim break;
6983e794565SJung-uk Kim }
6993e794565SJung-uk Kim break;
7003e794565SJung-uk Kim }
7013e794565SJung-uk Kim
7023e794565SJung-uk Kim break;
7033e794565SJung-uk Kim case 2:
7043e794565SJung-uk Kim switch(yyyi) {
7053e794565SJung-uk Kim case 0:
7063e794565SJung-uk Kim switch(yyyPass) {
7073e794565SJung-uk Kim case 0:
7083e794565SJung-uk Kim yyyRL = 0;yyySetCond(0)
7093e794565SJung-uk Kim
7103e794565SJung-uk Kim case 1:
7113e794565SJung-uk Kim
7123e794565SJung-uk Kim if (yyyCond(0) != yyyPass) {
7133e794565SJung-uk Kim #line 29 "expr.Y"
7143e794565SJung-uk Kim printf(" * ");
7153e794565SJung-uk Kim
7163e794565SJung-uk Kim #line 518 "expr.oxout.y"
7173e794565SJung-uk Kim }
7183e794565SJung-uk Kim break;
7193e794565SJung-uk Kim }
7203e794565SJung-uk Kim break;
7213e794565SJung-uk Kim case 1:
7223e794565SJung-uk Kim switch(yyyPass) {
7233e794565SJung-uk Kim case 0:
7243e794565SJung-uk Kim yyyRL = 0;
7253e794565SJung-uk Kim case 1:
7263e794565SJung-uk Kim
7273e794565SJung-uk Kim if (yyyCond(0) != yyyPass) {
7283e794565SJung-uk Kim #line 28 "expr.Y"
7293e794565SJung-uk Kim printf(" * ");
7303e794565SJung-uk Kim
7313e794565SJung-uk Kim #line 533 "expr.oxout.y"
7323e794565SJung-uk Kim }
7333e794565SJung-uk Kim break;
7343e794565SJung-uk Kim }
7353e794565SJung-uk Kim break;
7363e794565SJung-uk Kim }
7373e794565SJung-uk Kim
7383e794565SJung-uk Kim break;
7393e794565SJung-uk Kim case 3:
7403e794565SJung-uk Kim switch(yyyi) {
7413e794565SJung-uk Kim case 0:
7423e794565SJung-uk Kim switch(yyyPass) {
7433e794565SJung-uk Kim case 0:
7443e794565SJung-uk Kim yyyRL = 0;yyySetCond(0)
7453e794565SJung-uk Kim
7463e794565SJung-uk Kim case 1:
7473e794565SJung-uk Kim
7483e794565SJung-uk Kim if (yyyCond(0) != yyyPass) {
7493e794565SJung-uk Kim #line 32 "expr.Y"
7503e794565SJung-uk Kim printf(" + ");
7513e794565SJung-uk Kim
7523e794565SJung-uk Kim #line 554 "expr.oxout.y"
7533e794565SJung-uk Kim }
7543e794565SJung-uk Kim break;
7553e794565SJung-uk Kim }
7563e794565SJung-uk Kim break;
7573e794565SJung-uk Kim case 1:
7583e794565SJung-uk Kim switch(yyyPass) {
7593e794565SJung-uk Kim case 0:
7603e794565SJung-uk Kim yyyRL = 0;
7613e794565SJung-uk Kim case 1:
7623e794565SJung-uk Kim
7633e794565SJung-uk Kim if (yyyCond(0) != yyyPass) {
7643e794565SJung-uk Kim #line 33 "expr.Y"
7653e794565SJung-uk Kim printf(" + ");
7663e794565SJung-uk Kim
7673e794565SJung-uk Kim #line 569 "expr.oxout.y"
7683e794565SJung-uk Kim }
7693e794565SJung-uk Kim break;
7703e794565SJung-uk Kim }
7713e794565SJung-uk Kim break;
7723e794565SJung-uk Kim }
7733e794565SJung-uk Kim
7743e794565SJung-uk Kim break;
7753e794565SJung-uk Kim case 4:
7763e794565SJung-uk Kim switch(yyyi) {
7773e794565SJung-uk Kim case 0:
7783e794565SJung-uk Kim switch(yyyPass) {
7793e794565SJung-uk Kim case 0:
7803e794565SJung-uk Kim yyyRL = 0;yyySetCond(0)
7813e794565SJung-uk Kim
7823e794565SJung-uk Kim case 1:
7833e794565SJung-uk Kim
7843e794565SJung-uk Kim if (yyyCond(0) != yyyPass) {
7853e794565SJung-uk Kim #line 37 "expr.Y"
7863e794565SJung-uk Kim printf(" / ");
7873e794565SJung-uk Kim
7883e794565SJung-uk Kim #line 590 "expr.oxout.y"
7893e794565SJung-uk Kim }
7903e794565SJung-uk Kim break;
7913e794565SJung-uk Kim }
7923e794565SJung-uk Kim break;
7933e794565SJung-uk Kim case 1:
7943e794565SJung-uk Kim switch(yyyPass) {
7953e794565SJung-uk Kim case 0:
7963e794565SJung-uk Kim yyyRL = 0;
7973e794565SJung-uk Kim case 1:
7983e794565SJung-uk Kim
7993e794565SJung-uk Kim if (yyyCond(0) != yyyPass) {
8003e794565SJung-uk Kim #line 36 "expr.Y"
8013e794565SJung-uk Kim printf(" / ");
8023e794565SJung-uk Kim
8033e794565SJung-uk Kim #line 605 "expr.oxout.y"
8043e794565SJung-uk Kim }
8053e794565SJung-uk Kim break;
8063e794565SJung-uk Kim }
8073e794565SJung-uk Kim break;
8083e794565SJung-uk Kim }
8093e794565SJung-uk Kim
8103e794565SJung-uk Kim break;
8113e794565SJung-uk Kim case 5:
8123e794565SJung-uk Kim switch(yyyi) {
8133e794565SJung-uk Kim case 0:
8143e794565SJung-uk Kim switch(yyyPass) {
8153e794565SJung-uk Kim case 0:
8163e794565SJung-uk Kim yyyRL = 0;yyySetCond(0)
8173e794565SJung-uk Kim
8183e794565SJung-uk Kim case 1:
8193e794565SJung-uk Kim
8203e794565SJung-uk Kim if (yyyCond(0) != yyyPass) {
8213e794565SJung-uk Kim #line 41 "expr.Y"
8223e794565SJung-uk Kim printf(" - ");
8233e794565SJung-uk Kim
8243e794565SJung-uk Kim #line 626 "expr.oxout.y"
8253e794565SJung-uk Kim }
8263e794565SJung-uk Kim break;
8273e794565SJung-uk Kim }
8283e794565SJung-uk Kim break;
8293e794565SJung-uk Kim case 1:
8303e794565SJung-uk Kim switch(yyyPass) {
8313e794565SJung-uk Kim case 0:
8323e794565SJung-uk Kim yyyRL = 0;
8333e794565SJung-uk Kim case 1:
8343e794565SJung-uk Kim
8353e794565SJung-uk Kim if (yyyCond(0) != yyyPass) {
8363e794565SJung-uk Kim #line 40 "expr.Y"
8373e794565SJung-uk Kim printf(" - ");
8383e794565SJung-uk Kim
8393e794565SJung-uk Kim #line 641 "expr.oxout.y"
8403e794565SJung-uk Kim }
8413e794565SJung-uk Kim break;
8423e794565SJung-uk Kim }
8433e794565SJung-uk Kim break;
8443e794565SJung-uk Kim }
8453e794565SJung-uk Kim
8463e794565SJung-uk Kim break;
8473e794565SJung-uk Kim case 6:
8483e794565SJung-uk Kim switch(yyyi) {
8493e794565SJung-uk Kim case 0:
8503e794565SJung-uk Kim switch(yyyPass) {
8513e794565SJung-uk Kim case 0:
8523e794565SJung-uk Kim yyyRL = 0;
8533e794565SJung-uk Kim case 1:
8543e794565SJung-uk Kim
8553e794565SJung-uk Kim break;
8563e794565SJung-uk Kim }
8573e794565SJung-uk Kim break;
8583e794565SJung-uk Kim case 1:
8593e794565SJung-uk Kim switch(yyyPass) {
8603e794565SJung-uk Kim case 0:
8613e794565SJung-uk Kim yyyRL = 0;
8623e794565SJung-uk Kim case 1:
8633e794565SJung-uk Kim
8643e794565SJung-uk Kim break;
8653e794565SJung-uk Kim }
8663e794565SJung-uk Kim break;
8673e794565SJung-uk Kim }
8683e794565SJung-uk Kim
8693e794565SJung-uk Kim break;
8703e794565SJung-uk Kim case 7:
8713e794565SJung-uk Kim switch(yyyi) {
8723e794565SJung-uk Kim case 0:
8733e794565SJung-uk Kim switch(yyyPass) {
8743e794565SJung-uk Kim case 0:
8753e794565SJung-uk Kim yyyRL = 0;yyySetCond(0)
8763e794565SJung-uk Kim
8773e794565SJung-uk Kim case 1:
8783e794565SJung-uk Kim
8793e794565SJung-uk Kim if (yyyCond(0) != yyyPass) {
8803e794565SJung-uk Kim #line 46 "expr.Y"
8813e794565SJung-uk Kim printf(" %s ",yyyTSTn->cL[0]->yyyAttrbs.yyyAttrb1.lexeme);
8823e794565SJung-uk Kim
8833e794565SJung-uk Kim #line 685 "expr.oxout.y"
8843e794565SJung-uk Kim }
8853e794565SJung-uk Kim break;
8863e794565SJung-uk Kim }
8873e794565SJung-uk Kim break;
8883e794565SJung-uk Kim case 1:
8893e794565SJung-uk Kim switch(yyyPass) {
8903e794565SJung-uk Kim case 0:
8913e794565SJung-uk Kim yyyRL = 0;
8923e794565SJung-uk Kim case 1:
8933e794565SJung-uk Kim
8943e794565SJung-uk Kim if (yyyCond(0) != yyyPass) {
8953e794565SJung-uk Kim #line 45 "expr.Y"
8963e794565SJung-uk Kim printf(" %s ",yyyTSTn->cL[0]->yyyAttrbs.yyyAttrb1.lexeme);
8973e794565SJung-uk Kim
8983e794565SJung-uk Kim #line 700 "expr.oxout.y"
8993e794565SJung-uk Kim }
9003e794565SJung-uk Kim break;
9013e794565SJung-uk Kim }
9023e794565SJung-uk Kim break;
9033e794565SJung-uk Kim }
9043e794565SJung-uk Kim
9053e794565SJung-uk Kim break;
9063e794565SJung-uk Kim case 8:
9073e794565SJung-uk Kim switch(yyyi) {
9083e794565SJung-uk Kim case 0:
9093e794565SJung-uk Kim switch(yyyPass) {
9103e794565SJung-uk Kim case 0:
9113e794565SJung-uk Kim yyyRL = 0;yyySetCond(0)
9123e794565SJung-uk Kim
9133e794565SJung-uk Kim case 1:
9143e794565SJung-uk Kim
9153e794565SJung-uk Kim if (yyyCond(0) != yyyPass) {
9163e794565SJung-uk Kim #line 50 "expr.Y"
9173e794565SJung-uk Kim printf(" %s ",yyyTSTn->cL[0]->yyyAttrbs.yyyAttrb1.lexeme);
9183e794565SJung-uk Kim
9193e794565SJung-uk Kim #line 721 "expr.oxout.y"
9203e794565SJung-uk Kim }
9213e794565SJung-uk Kim break;
9223e794565SJung-uk Kim }
9233e794565SJung-uk Kim break;
9243e794565SJung-uk Kim case 1:
9253e794565SJung-uk Kim switch(yyyPass) {
9263e794565SJung-uk Kim case 0:
9273e794565SJung-uk Kim yyyRL = 0;
9283e794565SJung-uk Kim case 1:
9293e794565SJung-uk Kim
9303e794565SJung-uk Kim if (yyyCond(0) != yyyPass) {
9313e794565SJung-uk Kim #line 49 "expr.Y"
9323e794565SJung-uk Kim printf(" %s ",yyyTSTn->cL[0]->yyyAttrbs.yyyAttrb1.lexeme);
9333e794565SJung-uk Kim
9343e794565SJung-uk Kim #line 736 "expr.oxout.y"
9353e794565SJung-uk Kim }
9363e794565SJung-uk Kim break;
9373e794565SJung-uk Kim }
9383e794565SJung-uk Kim break;
9393e794565SJung-uk Kim }
9403e794565SJung-uk Kim
9413e794565SJung-uk Kim break;
9423e794565SJung-uk Kim } /* switch */
9433e794565SJung-uk Kim if (yyyPass) goto yyyTpop; else goto yyyTpush;
9443e794565SJung-uk Kim } /* while */
9453e794565SJung-uk Kim } /* for */
9463e794565SJung-uk Kim } /* yyyDoTraversals */
9473e794565SJung-uk Kim
yyyExecuteRRsection(yyyGNT * rootNode)9483e794565SJung-uk Kim void yyyExecuteRRsection(yyyGNT *rootNode) {
9493e794565SJung-uk Kim int yyyi;
9503e794565SJung-uk Kim long cycleSum = 0;
9513e794565SJung-uk Kim long nNZrc = 0;
9523e794565SJung-uk Kim
9533e794565SJung-uk Kim if (!yyyYok) return;
9543e794565SJung-uk Kim yyyCheckUnsolvedInstTrav(rootNode,&nNZrc,&cycleSum);
9553e794565SJung-uk Kim if (nNZrc)
9563e794565SJung-uk Kim {
9573e794565SJung-uk Kim fputs("\n\n\n**********\n",stderr);
9583e794565SJung-uk Kim fputs("cycle detected in completed parse tree",stderr);
9593e794565SJung-uk Kim fputs(" after decoration.\n",stderr);
9603e794565SJung-uk Kim #if CYCLE_VERBOSE
9613e794565SJung-uk Kim fprintf(stderr,
9623e794565SJung-uk Kim "number of unsolved attribute instances == %ld.\n",
9633e794565SJung-uk Kim nNZrc
9643e794565SJung-uk Kim );
9653e794565SJung-uk Kim fprintf(stderr,
9663e794565SJung-uk Kim "total number of remaining dependencies == %ld.\n",
9673e794565SJung-uk Kim cycleSum
9683e794565SJung-uk Kim );
9693e794565SJung-uk Kim fputs("average number of remaining dependencies\n",stderr);
9703e794565SJung-uk Kim fprintf(stderr," per unsolved instance == %f.\n",
9713e794565SJung-uk Kim ((float)(cycleSum)/(float)(nNZrc))
9723e794565SJung-uk Kim );
9733e794565SJung-uk Kim #endif
9743e794565SJung-uk Kim fprintf(stderr,
9753e794565SJung-uk Kim "searching parse tree for %ld unsolved instances:\n",
9763e794565SJung-uk Kim nNZrc
9773e794565SJung-uk Kim );
9783e794565SJung-uk Kim yyyUnsolvedInstSearchTravAux(rootNode);
9793e794565SJung-uk Kim }
9803e794565SJung-uk Kim yyyDoTraversals(rootNode);
9813e794565SJung-uk Kim } /* yyyExecuteRRsection */
9823e794565SJung-uk Kim
9833e794565SJung-uk Kim
9843e794565SJung-uk Kim
9853e794565SJung-uk Kim yyyWAT yyyLRCIL[2] = {0,0,
9863e794565SJung-uk Kim };
9873e794565SJung-uk Kim
9883e794565SJung-uk Kim
9893e794565SJung-uk Kim
yyyYoxInit(void)9903e794565SJung-uk Kim void yyyYoxInit(void)
9913e794565SJung-uk Kim {
9923e794565SJung-uk Kim static int yyyInitDone = 0;
9933e794565SJung-uk Kim if (yyyInitDone) return;
9943e794565SJung-uk Kim
9958e022d3cSDag-Erling Smørgrav if ((yyyRS = (yyyRSitem *)
9968e022d3cSDag-Erling Smørgrav calloc((size_t)(yyyRSmaxSize+1), (size_t)sizeof(yyyRSitem))
9973e794565SJung-uk Kim )
9983e794565SJung-uk Kim ==
9998e022d3cSDag-Erling Smørgrav ((yyyRSitem *) NULL)
10003e794565SJung-uk Kim )
10013e794565SJung-uk Kim yyyfatal("malloc error in ox ready set space allocation\n");
10023e794565SJung-uk Kim yyyRS++;
10033e794565SJung-uk Kim yyyAfterRS = yyyRS + yyyRSmaxSize;
10043e794565SJung-uk Kim
10053e794565SJung-uk Kim
10063e794565SJung-uk Kim if ((yyySSALspace = (struct yyySolvedSAlistCell *)
10073e794565SJung-uk Kim calloc((size_t)(yyySSALspaceSize+1), (size_t)sizeof(struct yyySolvedSAlistCell))
10083e794565SJung-uk Kim )
10093e794565SJung-uk Kim ==
10103e794565SJung-uk Kim ((struct yyySolvedSAlistCell *) NULL)
10113e794565SJung-uk Kim )
10123e794565SJung-uk Kim yyyfatal("malloc error in stack solved list space allocation\n");
10133e794565SJung-uk Kim yyyInitDone = 1;
10143e794565SJung-uk Kim
10153e794565SJung-uk Kim yyyRSTop = yyyRS - 1;
10163e794565SJung-uk Kim } /* yyyYoxInit */
10173e794565SJung-uk Kim
10183e794565SJung-uk Kim
10193e794565SJung-uk Kim
yyyDecorate(void)10203e794565SJung-uk Kim void yyyDecorate(void)
10213e794565SJung-uk Kim {
10223e794565SJung-uk Kim while (yyyRSTop >= yyyRS)
10233e794565SJung-uk Kim yyySolveAndSignal();
10243e794565SJung-uk Kim }
10253e794565SJung-uk Kim
10263e794565SJung-uk Kim
10273e794565SJung-uk Kim
yyyGenIntNode(long yyyProdNum,int yyyRHSlength,int yyyNattrbs,struct yyyOxAttrbs * yyval_OxAttrbs,...)10283e794565SJung-uk Kim void yyyGenIntNode(long yyyProdNum, int yyyRHSlength, int yyyNattrbs, struct yyyOxAttrbs *yyval_OxAttrbs, ...)
10293e794565SJung-uk Kim {yyyWST i;
10303e794565SJung-uk Kim yyySIT **yyyOxStackItem = &yyval_OxAttrbs->yyyOxStackItem;
10313e794565SJung-uk Kim yyyGNT *gnpDum;
10323e794565SJung-uk Kim va_list ap;
10333e794565SJung-uk Kim
10343e794565SJung-uk Kim *yyyOxStackItem = (yyySIT *) malloc((size_t)sizeof(yyySIT));
10353e794565SJung-uk Kim if (*yyyOxStackItem == (yyySIT *) NULL)
10363e794565SJung-uk Kim yyyfatal("malloc error in ox yacc semantic stack space allocation\n");
10373e794565SJung-uk Kim (*yyyOxStackItem)->node =
10383e794565SJung-uk Kim (yyyGNT *) malloc((size_t)sizeof(yyyGNT));
10393e794565SJung-uk Kim if ((*yyyOxStackItem)->node == (yyyGNT *) NULL)
10403e794565SJung-uk Kim yyyfatal("malloc error in ox node space allocation\n");
10413e794565SJung-uk Kim (*yyyOxStackItem)->solvedSAlist = yyyLambdaSSAL;
10423e794565SJung-uk Kim (*yyyOxStackItem)->node->parent.stackref = *yyyOxStackItem;
10433e794565SJung-uk Kim (*yyyOxStackItem)->node->parentIsStack = 1;
10443e794565SJung-uk Kim (*yyyOxStackItem)->node->cLlen = yyyRHSlength;
10453e794565SJung-uk Kim (*yyyOxStackItem)->node->cL =
10463e794565SJung-uk Kim (yyyGNT **) calloc((size_t)yyyRHSlength, (size_t)sizeof(yyyGNT *));
10473e794565SJung-uk Kim if ((*yyyOxStackItem)->node->cL == (yyyGNT **) NULL)
10483e794565SJung-uk Kim yyyfatal("malloc error in ox child list space allocation\n");
10493e794565SJung-uk Kim (*yyyOxStackItem)->node->refCountListLen = yyyNattrbs;
10503e794565SJung-uk Kim (*yyyOxStackItem)->node->refCountList =
10513e794565SJung-uk Kim (yyyRCT *) calloc((size_t)yyyNattrbs, (size_t)sizeof(yyyRCT));
10523e794565SJung-uk Kim if ((*yyyOxStackItem)->node->refCountList == (yyyRCT *) NULL)
10533e794565SJung-uk Kim yyyfatal("malloc error in ox reference count list space allocation\n");
10548e022d3cSDag-Erling Smørgrav (*yyyOxStackItem)->node->prodNum = (int) yyyProdNum;
10553e794565SJung-uk Kim va_start(ap, yyval_OxAttrbs);
10563e794565SJung-uk Kim for (i=1;i<=yyyRHSlength;i++)
10573e794565SJung-uk Kim {yyySIT *yaccStDum = va_arg(ap,struct yyyOxAttrbs *)->yyyOxStackItem;
10583e794565SJung-uk Kim gnpDum = (*yyyOxStackItem)->node->cL[i-1] = yaccStDum->node;
10593e794565SJung-uk Kim gnpDum->whichSym = i;
10603e794565SJung-uk Kim gnpDum->parent.noderef = (*yyyOxStackItem)->node;
10613e794565SJung-uk Kim gnpDum->parentIsStack = 0;
10623e794565SJung-uk Kim }
10633e794565SJung-uk Kim va_end(ap);
10643e794565SJung-uk Kim }
10653e794565SJung-uk Kim
10663e794565SJung-uk Kim
10673e794565SJung-uk Kim
10683e794565SJung-uk Kim #define yyyDECORfREQ 50
10693e794565SJung-uk Kim
10703e794565SJung-uk Kim
10713e794565SJung-uk Kim
yyyAdjustINRC(long yyyProdNum,int yyyRHSlength,long startP,long stopP,struct yyyOxAttrbs * yyval_OxAttrbs,...)10723e794565SJung-uk Kim void yyyAdjustINRC(long yyyProdNum, int yyyRHSlength, long startP, long stopP, struct yyyOxAttrbs *yyval_OxAttrbs, ...)
10733e794565SJung-uk Kim {yyyWST i;
10743e794565SJung-uk Kim yyySIT *yyyOxStackItem = yyval_OxAttrbs->yyyOxStackItem;
10753e794565SJung-uk Kim long SSALptr,SSALptrHead,*cPtrPtr;
10763e794565SJung-uk Kim long *pL;
10773e794565SJung-uk Kim yyyGNT *gnpDum;
10783e794565SJung-uk Kim long iTemp;
10793e794565SJung-uk Kim long nextP;
10803e794565SJung-uk Kim static unsigned short intNodeCount = yyyDECORfREQ;
10813e794565SJung-uk Kim va_list ap;
10823e794565SJung-uk Kim
10833e794565SJung-uk Kim nextP = startP;
10843e794565SJung-uk Kim while (nextP < stopP)
10853e794565SJung-uk Kim {if (yyyRCIL[nextP] == yyyR)
10863e794565SJung-uk Kim {(yyyOxStackItem->node->refCountList)[yyyRCIL[nextP+1]] = yyyRCIL[nextP+2];
10873e794565SJung-uk Kim }
10883e794565SJung-uk Kim else
10893e794565SJung-uk Kim {(((yyyOxStackItem->node->cL)[yyyRCIL[nextP]])->refCountList)[yyyRCIL[nextP+1]] = yyyRCIL[nextP+2];
10903e794565SJung-uk Kim }
10913e794565SJung-uk Kim nextP += 3;
10923e794565SJung-uk Kim }
10933e794565SJung-uk Kim pL = yyyIIEL + yyyIIIEL[yyyProdNum];
10943e794565SJung-uk Kim va_start(ap, yyval_OxAttrbs);
10953e794565SJung-uk Kim for (i=1;i<=yyyRHSlength;i++)
10963e794565SJung-uk Kim {yyySIT *yaccStDum = va_arg(ap,struct yyyOxAttrbs *)->yyyOxStackItem;
10973e794565SJung-uk Kim pL++;
10983e794565SJung-uk Kim SSALptrHead = SSALptr = *(cPtrPtr = &(yaccStDum->solvedSAlist));
10993e794565SJung-uk Kim if (SSALptr != yyyLambdaSSAL)
11003e794565SJung-uk Kim {*cPtrPtr = yyyLambdaSSAL;
11013e794565SJung-uk Kim do
11023e794565SJung-uk Kim {
11033e794565SJung-uk Kim iTemp = (*pL+yyySSALspace[SSALptr].attrbNum);
11043e794565SJung-uk Kim yyySignalEnts(yyyOxStackItem->node,
11053e794565SJung-uk Kim yyyIEL[iTemp],
11063e794565SJung-uk Kim yyyIEL[iTemp+1]
11073e794565SJung-uk Kim );
11083e794565SJung-uk Kim SSALptr = *(cPtrPtr = &(yyySSALspace[SSALptr].next));
11093e794565SJung-uk Kim }
11103e794565SJung-uk Kim while (SSALptr != yyyLambdaSSAL);
11113e794565SJung-uk Kim *cPtrPtr = yyySSALCfreeList;
11123e794565SJung-uk Kim yyySSALCfreeList = SSALptrHead;
11133e794565SJung-uk Kim }
11143e794565SJung-uk Kim }
11153e794565SJung-uk Kim va_end(ap);
11163e794565SJung-uk Kim nextP = startP + 2;
11173e794565SJung-uk Kim while (nextP < stopP)
11183e794565SJung-uk Kim {if (!yyyRCIL[nextP])
11193e794565SJung-uk Kim {if (yyyRCIL[nextP-2] == yyyR)
11203e794565SJung-uk Kim {pL = &(yyyOxStackItem->solvedSAlist);
11213e794565SJung-uk Kim if (yyySSALCfreeList == yyyLambdaSSAL)
11223e794565SJung-uk Kim {yyySSALspace[yyyNewSSALC].next = *pL;
11233e794565SJung-uk Kim if ((*pL = yyyNewSSALC++) == yyySSALspaceSize)
11243e794565SJung-uk Kim yyyHandleOverflow(yyySSALof);
11253e794565SJung-uk Kim }
11263e794565SJung-uk Kim else
11273e794565SJung-uk Kim {iTemp = yyySSALCfreeList;
11283e794565SJung-uk Kim yyySSALCfreeList = yyySSALspace[yyySSALCfreeList].next;
11293e794565SJung-uk Kim yyySSALspace[iTemp].next = *pL;
11303e794565SJung-uk Kim *pL = iTemp;
11313e794565SJung-uk Kim }
11323e794565SJung-uk Kim yyySSALspace[*pL].attrbNum = yyyRCIL[nextP-1];
11333e794565SJung-uk Kim }
11343e794565SJung-uk Kim else
11353e794565SJung-uk Kim {if ((gnpDum = (yyyOxStackItem->node->cL)[yyyRCIL[nextP-2]])->prodNum != 0)
11363e794565SJung-uk Kim {
11373e794565SJung-uk Kim iTemp = yyyIIEL[yyyIIIEL[gnpDum->prodNum]] + yyyRCIL[nextP-1];
11383e794565SJung-uk Kim yyySignalEnts(gnpDum,
11393e794565SJung-uk Kim yyyIEL[iTemp],
11403e794565SJung-uk Kim yyyIEL[iTemp+1]
11413e794565SJung-uk Kim );
11423e794565SJung-uk Kim }
11433e794565SJung-uk Kim }
11443e794565SJung-uk Kim }
11453e794565SJung-uk Kim nextP += 3;
11463e794565SJung-uk Kim }
11473e794565SJung-uk Kim if (!--intNodeCount)
11483e794565SJung-uk Kim {intNodeCount = yyyDECORfREQ;
11493e794565SJung-uk Kim yyyDecorate();
11503e794565SJung-uk Kim }
11513e794565SJung-uk Kim }
11523e794565SJung-uk Kim
11533e794565SJung-uk Kim
11543e794565SJung-uk Kim
yyyGenLeaf(int nAttrbs,int typeNum,long startP,long stopP,YYSTYPE * mylval)11558e022d3cSDag-Erling Smørgrav void yyyGenLeaf(int nAttrbs,int typeNum,long startP,long stopP,YYSTYPE *mylval)
11563e794565SJung-uk Kim {yyyRCT *rcPdum;
11578e022d3cSDag-Erling Smørgrav yyySIT **yyyOxStackItem = &mylval->yyyOxAttrbs.yyyOxStackItem;
11583e794565SJung-uk Kim (*yyyOxStackItem) = (yyySIT *) malloc((size_t)sizeof(yyySIT));
11593e794565SJung-uk Kim if ((*yyyOxStackItem) == (yyySIT *) NULL)
11603e794565SJung-uk Kim yyyfatal("malloc error in ox yacc semantic stack space allocation\n");
11613e794565SJung-uk Kim (*yyyOxStackItem)->node =
11623e794565SJung-uk Kim (yyyGNT *) malloc((size_t)sizeof(yyyGNT))
11633e794565SJung-uk Kim ;
11643e794565SJung-uk Kim if ((*yyyOxStackItem)->node == (yyyGNT *) NULL)
11653e794565SJung-uk Kim yyyfatal("malloc error in ox node space allocation\n");
11663e794565SJung-uk Kim (*yyyOxStackItem)->solvedSAlist = yyyLambdaSSAL;
11673e794565SJung-uk Kim (*yyyOxStackItem)->node->parent.stackref = *yyyOxStackItem;
11683e794565SJung-uk Kim (*yyyOxStackItem)->node->parentIsStack = 1;
11693e794565SJung-uk Kim (*yyyOxStackItem)->node->cLlen = 0;
11703e794565SJung-uk Kim (*yyyOxStackItem)->node->cL = (yyyGNT **)NULL;
11713e794565SJung-uk Kim (*yyyOxStackItem)->node->refCountListLen = nAttrbs;
11723e794565SJung-uk Kim rcPdum = (*yyyOxStackItem)->node->refCountList =
11733e794565SJung-uk Kim (yyyRCT *) calloc((size_t)nAttrbs, (size_t)sizeof(yyyRCT));
11743e794565SJung-uk Kim if (rcPdum == (yyyRCT *) NULL)
11753e794565SJung-uk Kim yyyfatal("malloc error in ox reference count list space allocation\n");
11763e794565SJung-uk Kim while (startP < stopP) rcPdum[yyyLRCIL[startP++]] = 0;
11773e794565SJung-uk Kim (*yyyOxStackItem)->node->prodNum = 0;
11783e794565SJung-uk Kim (*yyyOxStackItem)->node->whichSym = 0;
11793e794565SJung-uk Kim }
11803e794565SJung-uk Kim
11813e794565SJung-uk Kim
11823e794565SJung-uk Kim
yyyabort(void)11833e794565SJung-uk Kim void yyyabort(void)
11843e794565SJung-uk Kim {yyyYok = 0;
11853e794565SJung-uk Kim }
11863e794565SJung-uk Kim
11873e794565SJung-uk Kim
11883e794565SJung-uk Kim
11893e794565SJung-uk Kim
11903e794565SJung-uk Kim
11913e794565SJung-uk Kim #define yyyLastProdNum 8
11923e794565SJung-uk Kim
11933e794565SJung-uk Kim
11943e794565SJung-uk Kim #define yyyNsorts 1
11953e794565SJung-uk Kim
11963e794565SJung-uk Kim
11973e794565SJung-uk Kim int yyyProdsInd[] = {
11983e794565SJung-uk Kim 0,
11993e794565SJung-uk Kim 0, 2, 6, 10, 14, 18, 22, 24,
12003e794565SJung-uk Kim 26,
12013e794565SJung-uk Kim };
12023e794565SJung-uk Kim
12033e794565SJung-uk Kim
12043e794565SJung-uk Kim int yyyProds[][2] = {
12053e794565SJung-uk Kim { 116, 0},{ 462, 0},{ 462, 0},{ 462, 0},{ 412, 0},
12063e794565SJung-uk Kim { 462, 0},{ 462, 0},{ 462, 0},{ 420, 0},{ 462, 0},
12073e794565SJung-uk Kim { 462, 0},{ 462, 0},{ 452, 0},{ 462, 0},{ 462, 0},
12083e794565SJung-uk Kim { 462, 0},{ 436, 0},{ 462, 0},{ 462, 0},{ 396, 0},
12093e794565SJung-uk Kim { 462, 0},{ 404, 0},{ 462, 0},{ 619, 1},{ 462, 0},
12103e794565SJung-uk Kim { 567, 1},
12113e794565SJung-uk Kim };
12123e794565SJung-uk Kim
12133e794565SJung-uk Kim
12143e794565SJung-uk Kim int yyySortsInd[] = {
12153e794565SJung-uk Kim 0,
12163e794565SJung-uk Kim 0,
12173e794565SJung-uk Kim 1,
12183e794565SJung-uk Kim };
12193e794565SJung-uk Kim
12203e794565SJung-uk Kim
12213e794565SJung-uk Kim int yyySorts[] = {
12223e794565SJung-uk Kim 413,
12233e794565SJung-uk Kim };
12243e794565SJung-uk Kim
12253e794565SJung-uk Kim
12263e794565SJung-uk Kim
12273e794565SJung-uk Kim char *yyyStringTab[] = {
12283e794565SJung-uk Kim 0,0,0,0,0,
12293e794565SJung-uk Kim 0,0,0,0,0,
12303e794565SJung-uk Kim 0,0,0,0,0,
12313e794565SJung-uk Kim 0,0,0,0,0,
12323e794565SJung-uk Kim 0,0,0,0,0,
12333e794565SJung-uk Kim 0,0,0,0,0,
12343e794565SJung-uk Kim 0,0,0,0,0,
12353e794565SJung-uk Kim 0,0,0,0,0,
12363e794565SJung-uk Kim 0,0,0,0,0,
12373e794565SJung-uk Kim 0,0,0,0,0,
12383e794565SJung-uk Kim 0,0,0,0,0,
12393e794565SJung-uk Kim 0,0,0,0,0,
12403e794565SJung-uk Kim 0,0,0,0,0,
12413e794565SJung-uk Kim 0,0,0,0,0,
12423e794565SJung-uk Kim 0,0,0,0,0,
12433e794565SJung-uk Kim 0,0,0,0,0,
12443e794565SJung-uk Kim 0,0,0,0,0,
12453e794565SJung-uk Kim 0,0,0,0,0,
12463e794565SJung-uk Kim 0,0,0,0,0,
12473e794565SJung-uk Kim 0,0,0,0,0,
12483e794565SJung-uk Kim 0,0,0,0,0,
12493e794565SJung-uk Kim 0,0,0,0,0,
12503e794565SJung-uk Kim 0,0,0,0,0,
12513e794565SJung-uk Kim 0,"s",0,0,0,
12523e794565SJung-uk Kim 0,0,"y",0,0,
12533e794565SJung-uk Kim 0,0,0,0,0,
12543e794565SJung-uk Kim 0,0,0,0,0,
12553e794565SJung-uk Kim 0,0,0,0,0,
12563e794565SJung-uk Kim 0,0,0,0,0,
12573e794565SJung-uk Kim 0,0,0,0,0,
12583e794565SJung-uk Kim 0,0,0,0,0,
12593e794565SJung-uk Kim 0,0,0,0,0,
12603e794565SJung-uk Kim 0,0,0,0,0,
12613e794565SJung-uk Kim 0,0,0,0,0,
12623e794565SJung-uk Kim 0,0,0,0,0,
12633e794565SJung-uk Kim 0,0,0,0,0,
12643e794565SJung-uk Kim 0,0,0,0,0,
12653e794565SJung-uk Kim 0,0,0,0,0,
12663e794565SJung-uk Kim 0,0,0,0,0,
12673e794565SJung-uk Kim 0,0,0,0,0,
12683e794565SJung-uk Kim 0,0,0,0,0,
12693e794565SJung-uk Kim 0,0,0,0,0,
12703e794565SJung-uk Kim 0,0,0,0,0,
12713e794565SJung-uk Kim 0,0,0,0,0,
12723e794565SJung-uk Kim 0,0,0,0,0,
12733e794565SJung-uk Kim 0,0,0,0,0,
12743e794565SJung-uk Kim 0,0,0,0,0,
12753e794565SJung-uk Kim 0,0,0,0,0,
12763e794565SJung-uk Kim 0,0,0,0,0,
12773e794565SJung-uk Kim 0,0,0,0,0,
12783e794565SJung-uk Kim 0,0,0,0,0,
12793e794565SJung-uk Kim 0,0,0,0,0,
12803e794565SJung-uk Kim 0,0,0,0,0,
12813e794565SJung-uk Kim 0,0,0,0,0,
12823e794565SJung-uk Kim 0,0,0,0,0,
12833e794565SJung-uk Kim 0,0,0,0,0,
12843e794565SJung-uk Kim 0,0,0,0,0,
12853e794565SJung-uk Kim 0,0,0,0,0,
12863e794565SJung-uk Kim 0,0,0,0,0,
12873e794565SJung-uk Kim 0,0,0,0,0,
12883e794565SJung-uk Kim 0,0,0,0,0,
12893e794565SJung-uk Kim 0,0,0,0,0,
12903e794565SJung-uk Kim 0,0,0,0,0,
12913e794565SJung-uk Kim 0,0,0,0,0,
12923e794565SJung-uk Kim 0,0,0,0,0,
12933e794565SJung-uk Kim 0,"LRpre",0,0,0,
12943e794565SJung-uk Kim 0,0,0,0,0,
12953e794565SJung-uk Kim 0,0,0,0,0,
12963e794565SJung-uk Kim 0,0,0,0,0,
12973e794565SJung-uk Kim 0,0,0,0,0,
12983e794565SJung-uk Kim 0,0,0,0,0,
12993e794565SJung-uk Kim 0,0,0,0,0,
13003e794565SJung-uk Kim 0,0,0,0,0,
13013e794565SJung-uk Kim 0,0,0,0,0,
13023e794565SJung-uk Kim 0,0,0,0,0,
13033e794565SJung-uk Kim 0,0,0,0,0,
13043e794565SJung-uk Kim 0,0,0,0,0,
13053e794565SJung-uk Kim 0,0,0,0,0,
13063e794565SJung-uk Kim 0,0,0,0,0,
13073e794565SJung-uk Kim 0,"'('",0,0,0,
13083e794565SJung-uk Kim 0,0,0,0,"')'",
13093e794565SJung-uk Kim 0,0,0,0,0,
13103e794565SJung-uk Kim 0,0,"'*'","lexeme",0,
13113e794565SJung-uk Kim 0,0,0,0,0,
13123e794565SJung-uk Kim "'+'",0,0,0,0,
13133e794565SJung-uk Kim 0,0,0,0,0,
13143e794565SJung-uk Kim 0,0,0,0,0,
13153e794565SJung-uk Kim 0,"'-'",0,0,0,
13163e794565SJung-uk Kim 0,0,0,0,0,
13173e794565SJung-uk Kim 0,0,0,0,0,
13183e794565SJung-uk Kim 0,0,"'/'",0,0,
13193e794565SJung-uk Kim 0,0,0,0,0,
13203e794565SJung-uk Kim 0,0,"expr",0,0,
13213e794565SJung-uk Kim 0,0,0,0,0,
13223e794565SJung-uk Kim 0,0,0,0,0,
13233e794565SJung-uk Kim 0,"printf",0,0,0,
13243e794565SJung-uk Kim 0,0,0,0,0,
13253e794565SJung-uk Kim 0,0,0,0,0,
13263e794565SJung-uk Kim 0,0,0,0,0,
13273e794565SJung-uk Kim 0,0,0,0,0,
13283e794565SJung-uk Kim 0,0,0,0,0,
13293e794565SJung-uk Kim 0,0,0,0,0,
13303e794565SJung-uk Kim 0,0,0,0,0,
13313e794565SJung-uk Kim 0,0,0,0,0,
13323e794565SJung-uk Kim 0,0,0,0,0,
13333e794565SJung-uk Kim 0,0,0,0,0,
13343e794565SJung-uk Kim 0,0,0,0,0,
13353e794565SJung-uk Kim 0,0,0,0,0,
13363e794565SJung-uk Kim 0,0,0,0,0,
13373e794565SJung-uk Kim 0,0,0,0,0,
13383e794565SJung-uk Kim 0,0,0,0,0,
13393e794565SJung-uk Kim 0,0,0,0,0,
13403e794565SJung-uk Kim 0,0,0,0,0,
13413e794565SJung-uk Kim 0,0,"CONST","LRpost",0,
13423e794565SJung-uk Kim 0,0,0,0,0,
13433e794565SJung-uk Kim 0,0,0,0,0,
13443e794565SJung-uk Kim 0,0,0,0,0,
13453e794565SJung-uk Kim 0,0,0,0,0,
13463e794565SJung-uk Kim 0,0,0,0,0,
13473e794565SJung-uk Kim 0,0,0,0,0,
13483e794565SJung-uk Kim 0,0,0,0,0,
13493e794565SJung-uk Kim 0,0,0,0,0,
13503e794565SJung-uk Kim 0,0,0,0,0,
13513e794565SJung-uk Kim 0,0,0,0,"ID",
13523e794565SJung-uk Kim 0,0,0,0,0,
13533e794565SJung-uk Kim 0,0,0,0,0,
13543e794565SJung-uk Kim 0,0,0,0,0,
13553e794565SJung-uk Kim 0,0,0,0,0,
13563e794565SJung-uk Kim 0,0,0,0,0,
13573e794565SJung-uk Kim 0,0,0,0,0,
13583e794565SJung-uk Kim 0,0,0,0,0,
13593e794565SJung-uk Kim 0,0,0,0,0,
13603e794565SJung-uk Kim 0,0,0,0,0,
13613e794565SJung-uk Kim 0,0,0,0,0,
13623e794565SJung-uk Kim 0,0,0,0,0,
13633e794565SJung-uk Kim 0,0,0,0,0,
13643e794565SJung-uk Kim 0,0,0,0,0,
13653e794565SJung-uk Kim 0,0,0,0,0,
13663e794565SJung-uk Kim 0,0,0,0,0,
13673e794565SJung-uk Kim 0,0,0,0,0,
13683e794565SJung-uk Kim 0,0,0,0,0,
13693e794565SJung-uk Kim 0,0,0,0,0,
13703e794565SJung-uk Kim 0,0,0,0,0,
13713e794565SJung-uk Kim 0,0,0,0,0,
13723e794565SJung-uk Kim 0,0,0,0,0,
13733e794565SJung-uk Kim 0,0,0,0,0,
13743e794565SJung-uk Kim 0,0,0,0,0,
13753e794565SJung-uk Kim 0,0,0,0,0,
13763e794565SJung-uk Kim 0,0,0,0,0,
13773e794565SJung-uk Kim 0,0,0,0,0,
13783e794565SJung-uk Kim 0,0,0,0,0,
13793e794565SJung-uk Kim 0,0,0,0,0,
13803e794565SJung-uk Kim 0,0,0,0,0,
13813e794565SJung-uk Kim 0,0,0,0,0,
13823e794565SJung-uk Kim 0,0,0,0,0,
13833e794565SJung-uk Kim 0,0,0,0,0,
13843e794565SJung-uk Kim 0,0,0,0,0,
13853e794565SJung-uk Kim 0,0,0,0,0,
13863e794565SJung-uk Kim 0,0,0,0,0,
13873e794565SJung-uk Kim 0,0,0,0,0,
13883e794565SJung-uk Kim 0,0,0,0,0,
13893e794565SJung-uk Kim 0,0,0,0,0,
13903e794565SJung-uk Kim 0,0,0,0,0,
13913e794565SJung-uk Kim 0,0,0,0,0,
13923e794565SJung-uk Kim 0,0,0,0,0,
13933e794565SJung-uk Kim 0,0,0,0,0,
13943e794565SJung-uk Kim 0,0,0,0,0,
13953e794565SJung-uk Kim 0,0,0,0,0,
13963e794565SJung-uk Kim 0,0,0,0,0,
13973e794565SJung-uk Kim 0,0,0,0,0,
13983e794565SJung-uk Kim 0,0,0,0,0,
13993e794565SJung-uk Kim 0,0,0,0,0,
14003e794565SJung-uk Kim 0,0,0,0,0,
14013e794565SJung-uk Kim 0,0,0,0,0,
14023e794565SJung-uk Kim 0,0,0,0,0,
14033e794565SJung-uk Kim 0,0,0,0,0,
14043e794565SJung-uk Kim 0,0,0,0,0,
14053e794565SJung-uk Kim 0,0,0,0,0,
14063e794565SJung-uk Kim 0,0,0,0,0,
14073e794565SJung-uk Kim 0,0,0,0,0,
14083e794565SJung-uk Kim 0,0,0,0,0,
14093e794565SJung-uk Kim 0,0,0,0,0,
14103e794565SJung-uk Kim 0,0,0,0,0,
14113e794565SJung-uk Kim 0,0,0,0,0,
14123e794565SJung-uk Kim 0,0,0,0,0,
14133e794565SJung-uk Kim 0,0,0,0,0,
14143e794565SJung-uk Kim 0,0,0,0,0,
14153e794565SJung-uk Kim 0,0,0,0,0,
14163e794565SJung-uk Kim 0,0,0,0,0,
14173e794565SJung-uk Kim 0,0,0,0,0,
14183e794565SJung-uk Kim 0,0,0,0,0,
14193e794565SJung-uk Kim 0,0,0,0,0,
14203e794565SJung-uk Kim 0,0,0,0,0,
14213e794565SJung-uk Kim 0,0,0,0,0,
14223e794565SJung-uk Kim 0,0,0,0,0,
14233e794565SJung-uk Kim 0,0,0,0,0,
14243e794565SJung-uk Kim 0,0,0,0,0,
14253e794565SJung-uk Kim 0,0,0,0,0,
14263e794565SJung-uk Kim 0,0,0,0,0,
14273e794565SJung-uk Kim 0,0,0,0,0,
14283e794565SJung-uk Kim 0,0,0,0,0,
14293e794565SJung-uk Kim 0,0,0,0,0,
14303e794565SJung-uk Kim 0,0,0,0,0,
14313e794565SJung-uk Kim 0,0,0,0,0,
14323e794565SJung-uk Kim 0,0,0,0,0,
14333e794565SJung-uk Kim 0,0,0,0,0,
14343e794565SJung-uk Kim 0,0,0,0,0,
14353e794565SJung-uk Kim 0,0,0,0,0,
14363e794565SJung-uk Kim 0,0,0,0,0,
14373e794565SJung-uk Kim 0,0,0,0,0,
14383e794565SJung-uk Kim 0,0,0,0,0,
14393e794565SJung-uk Kim 0,0,0,0,0,
14403e794565SJung-uk Kim 0,0,0,0,0,
14413e794565SJung-uk Kim 0,0,0,0,0,
14423e794565SJung-uk Kim 0,0,0,0,0,
14433e794565SJung-uk Kim 0,0,0,0,0,
14443e794565SJung-uk Kim 0,0,0,0,0,
14453e794565SJung-uk Kim 0,0,0,0,0,
14463e794565SJung-uk Kim 0,0,0,0,0,
14473e794565SJung-uk Kim 0,0,0,0,0,
14483e794565SJung-uk Kim 0,0,0,0,0,
14493e794565SJung-uk Kim 0,0,0,0,0,
14503e794565SJung-uk Kim 0,0,0,0,0,
14513e794565SJung-uk Kim 0,0,0,0,0,
14523e794565SJung-uk Kim 0,0,0,0,0,
14533e794565SJung-uk Kim 0,0,0,0,0,
14543e794565SJung-uk Kim 0,0,0,0,0,
14553e794565SJung-uk Kim 0,0,0,0,0,
14563e794565SJung-uk Kim 0,0,0,0,0,
14573e794565SJung-uk Kim 0,0,0,0,0,
14583e794565SJung-uk Kim 0,0,0,0,0,
14593e794565SJung-uk Kim 0,0,0,0,0,
14603e794565SJung-uk Kim 0,0,0,0,0,
14613e794565SJung-uk Kim 0,0,0,0,0,
14623e794565SJung-uk Kim 0,0,0,0,0,
14633e794565SJung-uk Kim 0,0,0,0,0,
14643e794565SJung-uk Kim 0,0,0,0,0,
14653e794565SJung-uk Kim 0,0,0,0,0,
14663e794565SJung-uk Kim 0,0,0,0,0,
14673e794565SJung-uk Kim 0,0,0,0,0,
14683e794565SJung-uk Kim 0,0,0,0,0,
14693e794565SJung-uk Kim 0,0,0,0,0,
14703e794565SJung-uk Kim 0,0,0,0,0,
14713e794565SJung-uk Kim 0,0,0,0,0,
14723e794565SJung-uk Kim 0,0,0,0,0,
14733e794565SJung-uk Kim 0,0,0,0,0,
14743e794565SJung-uk Kim 0,
14753e794565SJung-uk Kim };
14763e794565SJung-uk Kim
14773e794565SJung-uk Kim
14783e794565SJung-uk Kim
14793e794565SJung-uk Kim #define yyySizeofProd(num) (yyyProdsInd[(num)+1] - yyyProdsInd[(num)])
14803e794565SJung-uk Kim
14813e794565SJung-uk Kim #define yyyGSoccurStr(prodNum,symPos) \
14823e794565SJung-uk Kim (yyyStringTab[yyyProds[yyyProdsInd[(prodNum)] + (symPos)][0]])
14833e794565SJung-uk Kim
14843e794565SJung-uk Kim #define yyySizeofSort(num) (yyySortsInd[(num)+1] - yyySortsInd[(num)])
14853e794565SJung-uk Kim
14863e794565SJung-uk Kim #define yyySortOf(prodNum,symPos) \
14873e794565SJung-uk Kim (yyyProds[yyyProdsInd[(prodNum)] + (symPos)][1])
14883e794565SJung-uk Kim
14893e794565SJung-uk Kim #define yyyAttrbStr(prodNum,symPos,attrbNum) \
14903e794565SJung-uk Kim (yyyStringTab[yyySorts[yyySortsInd[yyySortOf(prodNum,symPos)] + \
14913e794565SJung-uk Kim (attrbNum) \
14923e794565SJung-uk Kim ] \
14933e794565SJung-uk Kim ] \
14943e794565SJung-uk Kim )
14953e794565SJung-uk Kim
14963e794565SJung-uk Kim
14973e794565SJung-uk Kim
yyyShowProd(int i)14983e794565SJung-uk Kim void yyyShowProd(int i)
14993e794565SJung-uk Kim {int j,nSyms;
15003e794565SJung-uk Kim
15013e794565SJung-uk Kim nSyms = yyySizeofProd(i);
15023e794565SJung-uk Kim for (j=0; j<nSyms; j++)
15033e794565SJung-uk Kim {
15043e794565SJung-uk Kim fprintf(stderr,"%s",yyyGSoccurStr(i,j));
15053e794565SJung-uk Kim if (j == 0) fputs(" : ",stderr); else putc(' ',stderr);
15063e794565SJung-uk Kim }
15073e794565SJung-uk Kim fputs(";\n",stderr);
15083e794565SJung-uk Kim }
15093e794565SJung-uk Kim
15103e794565SJung-uk Kim
15113e794565SJung-uk Kim
yyyShowProds()15123e794565SJung-uk Kim void yyyShowProds()
15133e794565SJung-uk Kim {int i; for (i=1; i<=yyyLastProdNum; i++) yyyShowProd(i);}
15143e794565SJung-uk Kim
15153e794565SJung-uk Kim
15163e794565SJung-uk Kim
yyyShowSymsAndSorts()15173e794565SJung-uk Kim void yyyShowSymsAndSorts()
15183e794565SJung-uk Kim {int i;
15193e794565SJung-uk Kim
15203e794565SJung-uk Kim for (i=1; i<=yyyLastProdNum; i++)
15213e794565SJung-uk Kim {int j, nSyms;
15223e794565SJung-uk Kim
15233e794565SJung-uk Kim fprintf(stderr,
15243e794565SJung-uk Kim "\n\n\n---------------------------------- %3.1d\n",i);
15253e794565SJung-uk Kim /* yyyShowProd(i); */
15263e794565SJung-uk Kim nSyms = yyySizeofProd(i);
15273e794565SJung-uk Kim for (j=0; j<nSyms; j++)
15283e794565SJung-uk Kim {int k, sortSize;
15293e794565SJung-uk Kim
15303e794565SJung-uk Kim fprintf(stderr,"%s\n",yyyGSoccurStr(i,j));
15313e794565SJung-uk Kim sortSize = yyySizeofSort(yyySortOf(i,j));
15323e794565SJung-uk Kim for (k=0; k<sortSize; k++)
15333e794565SJung-uk Kim fprintf(stderr," %s\n",yyyAttrbStr(i,j,k));
15343e794565SJung-uk Kim if (j == 0) fputs("->\n",stderr);
15353e794565SJung-uk Kim else
15363e794565SJung-uk Kim putc('\n',stderr);
15373e794565SJung-uk Kim }
15383e794565SJung-uk Kim }
15393e794565SJung-uk Kim }
15403e794565SJung-uk Kim
15413e794565SJung-uk Kim
15423e794565SJung-uk Kim
yyyCheckNodeInstancesSolved(yyyGNT * np)15433e794565SJung-uk Kim void yyyCheckNodeInstancesSolved(yyyGNT *np)
15443e794565SJung-uk Kim {int mysort,sortSize,i,prodNum,symPos,inTerminalNode;
15453e794565SJung-uk Kim int nUnsolvedInsts = 0;
15463e794565SJung-uk Kim
15473e794565SJung-uk Kim if (np->prodNum != 0)
15483e794565SJung-uk Kim {inTerminalNode = 0;
15493e794565SJung-uk Kim prodNum = np->prodNum;
15503e794565SJung-uk Kim symPos = 0;
15513e794565SJung-uk Kim }
15523e794565SJung-uk Kim else
15533e794565SJung-uk Kim {inTerminalNode = 1;
15543e794565SJung-uk Kim prodNum = np->parent.noderef->prodNum;
15553e794565SJung-uk Kim symPos = np->whichSym;
15563e794565SJung-uk Kim }
15573e794565SJung-uk Kim mysort = yyySortOf(prodNum,symPos);
15583e794565SJung-uk Kim sortSize = yyySizeofSort(mysort);
15593e794565SJung-uk Kim for (i=0; i<sortSize; i++)
15603e794565SJung-uk Kim if ((np->refCountList)[i] != 0) nUnsolvedInsts += 1;
15613e794565SJung-uk Kim if (nUnsolvedInsts)
15623e794565SJung-uk Kim {fprintf(stderr,
15633e794565SJung-uk Kim "\nFound node that has %d unsolved attribute instance(s).\n",
15643e794565SJung-uk Kim nUnsolvedInsts
15653e794565SJung-uk Kim );
15663e794565SJung-uk Kim fprintf(stderr,"Node is labeled \"%s\".\n",
15673e794565SJung-uk Kim yyyGSoccurStr(prodNum,symPos));
15683e794565SJung-uk Kim if (inTerminalNode)
15693e794565SJung-uk Kim {fputs("Node is terminal. Its parent production is:\n ",stderr);
15703e794565SJung-uk Kim yyyShowProd(prodNum);
15713e794565SJung-uk Kim }
15723e794565SJung-uk Kim else
15733e794565SJung-uk Kim {fputs("Node is nonterminal. ",stderr);
15743e794565SJung-uk Kim if (!(np->parentIsStack))
15753e794565SJung-uk Kim {fprintf(stderr,
15763e794565SJung-uk Kim "Node is %dth child in its parent production:\n ",
15773e794565SJung-uk Kim np->whichSym
15783e794565SJung-uk Kim );
15793e794565SJung-uk Kim yyyShowProd(np->parent.noderef->prodNum);
15803e794565SJung-uk Kim }
15813e794565SJung-uk Kim fputs("Node is on left hand side of this production:\n ",stderr);
15823e794565SJung-uk Kim yyyShowProd(np->prodNum);
15833e794565SJung-uk Kim }
15843e794565SJung-uk Kim fputs("The following instances are unsolved:\n",stderr);
15853e794565SJung-uk Kim for (i=0; i<sortSize; i++)
15863e794565SJung-uk Kim if ((np->refCountList)[i] != 0)
15873e794565SJung-uk Kim fprintf(stderr," %-16s still has %1d dependencies.\n",
15883e794565SJung-uk Kim yyyAttrbStr(prodNum,symPos,i),(np->refCountList)[i]);
15893e794565SJung-uk Kim }
15903e794565SJung-uk Kim }
15913e794565SJung-uk Kim
15923e794565SJung-uk Kim
15933e794565SJung-uk Kim
yyyCheckUnsolvedInstTrav(yyyGNT * pNode,long * nNZrc,long * cycleSum)15943e794565SJung-uk Kim void yyyCheckUnsolvedInstTrav(yyyGNT *pNode,long *nNZrc,long *cycleSum)
15953e794565SJung-uk Kim {yyyGNT **yyyCLpdum;
15963e794565SJung-uk Kim yyyRCT *rcp;
15973e794565SJung-uk Kim int i;
15983e794565SJung-uk Kim
15993e794565SJung-uk Kim /* visit the refCountList of each node in the tree, and sum the non-zero refCounts */
16003e794565SJung-uk Kim rcp = pNode->refCountList;
16013e794565SJung-uk Kim i = pNode->refCountListLen;
16023e794565SJung-uk Kim while (i--)
16033e794565SJung-uk Kim if (*rcp++) {*cycleSum += *(rcp - 1); (*nNZrc)++;}
16043e794565SJung-uk Kim yyyCLpdum = pNode->cL;
16053e794565SJung-uk Kim i = pNode->cLlen;
16063e794565SJung-uk Kim while (i--)
16073e794565SJung-uk Kim {
16083e794565SJung-uk Kim yyyCheckUnsolvedInstTrav(*yyyCLpdum,nNZrc,cycleSum);
16093e794565SJung-uk Kim yyyCLpdum++;
16103e794565SJung-uk Kim }
16113e794565SJung-uk Kim }
16123e794565SJung-uk Kim
16133e794565SJung-uk Kim
16143e794565SJung-uk Kim
yyyUnsolvedInstSearchTravAux(yyyGNT * pNode)16153e794565SJung-uk Kim void yyyUnsolvedInstSearchTravAux(yyyGNT *pNode)
16163e794565SJung-uk Kim {yyyGNT **yyyCLpdum;
16173e794565SJung-uk Kim int i;
16183e794565SJung-uk Kim
16193e794565SJung-uk Kim yyyCheckNodeInstancesSolved(pNode);
16203e794565SJung-uk Kim yyyCLpdum = pNode->cL;
16213e794565SJung-uk Kim i = pNode->cLlen;
16223e794565SJung-uk Kim while (i--)
16233e794565SJung-uk Kim {
16243e794565SJung-uk Kim yyyUnsolvedInstSearchTravAux(*yyyCLpdum);
16253e794565SJung-uk Kim yyyCLpdum++;
16263e794565SJung-uk Kim }
16273e794565SJung-uk Kim }
16283e794565SJung-uk Kim
16293e794565SJung-uk Kim
16303e794565SJung-uk Kim
yyyUnsolvedInstSearchTrav(yyyGNT * pNode)16313e794565SJung-uk Kim void yyyUnsolvedInstSearchTrav(yyyGNT *pNode)
16323e794565SJung-uk Kim {yyyGNT **yyyCLpdum;
16333e794565SJung-uk Kim int i;
16343e794565SJung-uk Kim
16353e794565SJung-uk Kim yyyCLpdum = pNode->cL;
16363e794565SJung-uk Kim i = pNode->cLlen;
16373e794565SJung-uk Kim while (i--)
16383e794565SJung-uk Kim {
16393e794565SJung-uk Kim yyyUnsolvedInstSearchTravAux(*yyyCLpdum);
16403e794565SJung-uk Kim yyyCLpdum++;
16413e794565SJung-uk Kim }
16423e794565SJung-uk Kim }
16433e794565SJung-uk Kim
16443e794565SJung-uk Kim
16453e794565SJung-uk Kim
1646b53bb29fSJung-uk Kim #line 1647 "expr.oxout.tab.c"
16473e794565SJung-uk Kim
16483e794565SJung-uk Kim #if YYDEBUG
16493e794565SJung-uk Kim #include <stdio.h> /* needed for printf */
16503e794565SJung-uk Kim #endif
16513e794565SJung-uk Kim
16523e794565SJung-uk Kim #include <stdlib.h> /* needed for malloc, etc */
16533e794565SJung-uk Kim #include <string.h> /* needed for memset */
16543e794565SJung-uk Kim
16553e794565SJung-uk Kim /* allocate initial stack or double stack size, up to YYMAXDEPTH */
yygrowstack(YYSTACKDATA * data)16563e794565SJung-uk Kim static int yygrowstack(YYSTACKDATA *data)
16573e794565SJung-uk Kim {
16583e794565SJung-uk Kim int i;
16593e794565SJung-uk Kim unsigned newsize;
16603e794565SJung-uk Kim YYINT *newss;
16613e794565SJung-uk Kim YYSTYPE *newvs;
16623e794565SJung-uk Kim
16633e794565SJung-uk Kim if ((newsize = data->stacksize) == 0)
16643e794565SJung-uk Kim newsize = YYINITSTACKSIZE;
16653e794565SJung-uk Kim else if (newsize >= YYMAXDEPTH)
16663e794565SJung-uk Kim return YYENOMEM;
16673e794565SJung-uk Kim else if ((newsize *= 2) > YYMAXDEPTH)
16683e794565SJung-uk Kim newsize = YYMAXDEPTH;
16693e794565SJung-uk Kim
16703e794565SJung-uk Kim i = (int) (data->s_mark - data->s_base);
16713e794565SJung-uk Kim newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss));
1672bf80e08eSJung-uk Kim if (newss == NULL)
16733e794565SJung-uk Kim return YYENOMEM;
16743e794565SJung-uk Kim
16753e794565SJung-uk Kim data->s_base = newss;
16763e794565SJung-uk Kim data->s_mark = newss + i;
16773e794565SJung-uk Kim
16783e794565SJung-uk Kim newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
1679bf80e08eSJung-uk Kim if (newvs == NULL)
16803e794565SJung-uk Kim return YYENOMEM;
16813e794565SJung-uk Kim
16823e794565SJung-uk Kim data->l_base = newvs;
16833e794565SJung-uk Kim data->l_mark = newvs + i;
16843e794565SJung-uk Kim
16853e794565SJung-uk Kim data->stacksize = newsize;
16863e794565SJung-uk Kim data->s_last = data->s_base + newsize - 1;
16873e794565SJung-uk Kim return 0;
16883e794565SJung-uk Kim }
16893e794565SJung-uk Kim
16903e794565SJung-uk Kim #if YYPURE || defined(YY_NO_LEAKS)
yyfreestack(YYSTACKDATA * data)16913e794565SJung-uk Kim static void yyfreestack(YYSTACKDATA *data)
16923e794565SJung-uk Kim {
16933e794565SJung-uk Kim free(data->s_base);
16943e794565SJung-uk Kim free(data->l_base);
16953e794565SJung-uk Kim memset(data, 0, sizeof(*data));
16963e794565SJung-uk Kim }
16973e794565SJung-uk Kim #else
16983e794565SJung-uk Kim #define yyfreestack(data) /* nothing */
16993e794565SJung-uk Kim #endif
17003e794565SJung-uk Kim
17013e794565SJung-uk Kim #define YYABORT goto yyabort
17023e794565SJung-uk Kim #define YYREJECT goto yyabort
17033e794565SJung-uk Kim #define YYACCEPT goto yyaccept
17043e794565SJung-uk Kim #define YYERROR goto yyerrlab
17053e794565SJung-uk Kim
17063e794565SJung-uk Kim int
YYPARSE_DECL()17073e794565SJung-uk Kim YYPARSE_DECL()
17083e794565SJung-uk Kim {
17093e794565SJung-uk Kim int yym, yyn, yystate;
17103e794565SJung-uk Kim #if YYDEBUG
17113e794565SJung-uk Kim const char *yys;
17123e794565SJung-uk Kim
1713bf80e08eSJung-uk Kim if ((yys = getenv("YYDEBUG")) != NULL)
17143e794565SJung-uk Kim {
17153e794565SJung-uk Kim yyn = *yys;
17163e794565SJung-uk Kim if (yyn >= '0' && yyn <= '9')
17173e794565SJung-uk Kim yydebug = yyn - '0';
17183e794565SJung-uk Kim }
17193e794565SJung-uk Kim #endif
17203e794565SJung-uk Kim
17218e022d3cSDag-Erling Smørgrav /* yym is set below */
17228e022d3cSDag-Erling Smørgrav /* yyn is set below */
17233e794565SJung-uk Kim yynerrs = 0;
17243e794565SJung-uk Kim yyerrflag = 0;
17253e794565SJung-uk Kim yychar = YYEMPTY;
17263e794565SJung-uk Kim yystate = 0;
17273e794565SJung-uk Kim
17283e794565SJung-uk Kim #if YYPURE
17293e794565SJung-uk Kim memset(&yystack, 0, sizeof(yystack));
17303e794565SJung-uk Kim #endif
17313e794565SJung-uk Kim
17323e794565SJung-uk Kim if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
17333e794565SJung-uk Kim yystack.s_mark = yystack.s_base;
17343e794565SJung-uk Kim yystack.l_mark = yystack.l_base;
17353e794565SJung-uk Kim yystate = 0;
17363e794565SJung-uk Kim *yystack.s_mark = 0;
17373e794565SJung-uk Kim
17383e794565SJung-uk Kim yyloop:
17393e794565SJung-uk Kim if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
17403e794565SJung-uk Kim if (yychar < 0)
17413e794565SJung-uk Kim {
17423e794565SJung-uk Kim yychar = YYLEX;
17433e794565SJung-uk Kim if (yychar < 0) yychar = YYEOF;
17443e794565SJung-uk Kim #if YYDEBUG
17453e794565SJung-uk Kim if (yydebug)
17463e794565SJung-uk Kim {
17473e794565SJung-uk Kim if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
17483e794565SJung-uk Kim printf("%sdebug: state %d, reading %d (%s)\n",
17493e794565SJung-uk Kim YYPREFIX, yystate, yychar, yys);
17503e794565SJung-uk Kim }
17513e794565SJung-uk Kim #endif
17523e794565SJung-uk Kim }
17533e794565SJung-uk Kim if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
17543e794565SJung-uk Kim yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
17553e794565SJung-uk Kim {
17563e794565SJung-uk Kim #if YYDEBUG
17573e794565SJung-uk Kim if (yydebug)
17583e794565SJung-uk Kim printf("%sdebug: state %d, shifting to state %d\n",
17593e794565SJung-uk Kim YYPREFIX, yystate, yytable[yyn]);
17603e794565SJung-uk Kim #endif
17613e794565SJung-uk Kim if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
17623e794565SJung-uk Kim yystate = yytable[yyn];
17633e794565SJung-uk Kim *++yystack.s_mark = yytable[yyn];
17643e794565SJung-uk Kim *++yystack.l_mark = yylval;
17653e794565SJung-uk Kim yychar = YYEMPTY;
17663e794565SJung-uk Kim if (yyerrflag > 0) --yyerrflag;
17673e794565SJung-uk Kim goto yyloop;
17683e794565SJung-uk Kim }
17693e794565SJung-uk Kim if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
17703e794565SJung-uk Kim yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
17713e794565SJung-uk Kim {
17723e794565SJung-uk Kim yyn = yytable[yyn];
17733e794565SJung-uk Kim goto yyreduce;
17743e794565SJung-uk Kim }
17753e794565SJung-uk Kim if (yyerrflag != 0) goto yyinrecovery;
17763e794565SJung-uk Kim
17773e794565SJung-uk Kim YYERROR_CALL("syntax error");
17783e794565SJung-uk Kim
17793e794565SJung-uk Kim goto yyerrlab; /* redundant goto avoids 'unused label' warning */
17803e794565SJung-uk Kim yyerrlab:
17813e794565SJung-uk Kim ++yynerrs;
17823e794565SJung-uk Kim
17833e794565SJung-uk Kim yyinrecovery:
17843e794565SJung-uk Kim if (yyerrflag < 3)
17853e794565SJung-uk Kim {
17863e794565SJung-uk Kim yyerrflag = 3;
17873e794565SJung-uk Kim for (;;)
17883e794565SJung-uk Kim {
17893e794565SJung-uk Kim if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 &&
17903e794565SJung-uk Kim yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE)
17913e794565SJung-uk Kim {
17923e794565SJung-uk Kim #if YYDEBUG
17933e794565SJung-uk Kim if (yydebug)
17943e794565SJung-uk Kim printf("%sdebug: state %d, error recovery shifting\
17953e794565SJung-uk Kim to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]);
17963e794565SJung-uk Kim #endif
17973e794565SJung-uk Kim if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
17983e794565SJung-uk Kim yystate = yytable[yyn];
17993e794565SJung-uk Kim *++yystack.s_mark = yytable[yyn];
18003e794565SJung-uk Kim *++yystack.l_mark = yylval;
18013e794565SJung-uk Kim goto yyloop;
18023e794565SJung-uk Kim }
18033e794565SJung-uk Kim else
18043e794565SJung-uk Kim {
18053e794565SJung-uk Kim #if YYDEBUG
18063e794565SJung-uk Kim if (yydebug)
18073e794565SJung-uk Kim printf("%sdebug: error recovery discarding state %d\n",
18083e794565SJung-uk Kim YYPREFIX, *yystack.s_mark);
18093e794565SJung-uk Kim #endif
18103e794565SJung-uk Kim if (yystack.s_mark <= yystack.s_base) goto yyabort;
18113e794565SJung-uk Kim --yystack.s_mark;
18123e794565SJung-uk Kim --yystack.l_mark;
18133e794565SJung-uk Kim }
18143e794565SJung-uk Kim }
18153e794565SJung-uk Kim }
18163e794565SJung-uk Kim else
18173e794565SJung-uk Kim {
18183e794565SJung-uk Kim if (yychar == YYEOF) goto yyabort;
18193e794565SJung-uk Kim #if YYDEBUG
18203e794565SJung-uk Kim if (yydebug)
18213e794565SJung-uk Kim {
18223e794565SJung-uk Kim if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
18233e794565SJung-uk Kim printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
18243e794565SJung-uk Kim YYPREFIX, yystate, yychar, yys);
18253e794565SJung-uk Kim }
18263e794565SJung-uk Kim #endif
18273e794565SJung-uk Kim yychar = YYEMPTY;
18283e794565SJung-uk Kim goto yyloop;
18293e794565SJung-uk Kim }
18303e794565SJung-uk Kim
18313e794565SJung-uk Kim yyreduce:
18323e794565SJung-uk Kim #if YYDEBUG
18333e794565SJung-uk Kim if (yydebug)
18343e794565SJung-uk Kim printf("%sdebug: state %d, reducing by rule %d (%s)\n",
18353e794565SJung-uk Kim YYPREFIX, yystate, yyn, yyrule[yyn]);
18363e794565SJung-uk Kim #endif
18373e794565SJung-uk Kim yym = yylen[yyn];
18383e794565SJung-uk Kim if (yym > 0)
18393e794565SJung-uk Kim yyval = yystack.l_mark[1-yym];
18403e794565SJung-uk Kim else
18413e794565SJung-uk Kim memset(&yyval, 0, sizeof yyval);
18423e794565SJung-uk Kim
18433e794565SJung-uk Kim switch (yyn)
18443e794565SJung-uk Kim {
18453e794565SJung-uk Kim case 1:
18463e794565SJung-uk Kim #line 64 "expr.oxout.y"
18473e794565SJung-uk Kim {yyyYoxInit();}
18488e022d3cSDag-Erling Smørgrav #line 1849 "expr.oxout.tab.c"
18493e794565SJung-uk Kim break;
18503e794565SJung-uk Kim case 2:
18513e794565SJung-uk Kim #line 66 "expr.oxout.y"
18523e794565SJung-uk Kim {
18533e794565SJung-uk Kim yyyDecorate(); yyyExecuteRRsection(yystack.l_mark[0].yyyOxAttrbs.yyyOxStackItem->node);
18543e794565SJung-uk Kim }
18558e022d3cSDag-Erling Smørgrav #line 1856 "expr.oxout.tab.c"
18563e794565SJung-uk Kim break;
18573e794565SJung-uk Kim case 3:
18583e794565SJung-uk Kim #line 73 "expr.oxout.y"
18593e794565SJung-uk Kim {if(yyyYok){
18603e794565SJung-uk Kim yyyGenIntNode(1,1,0,&yyval.yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);
18613e794565SJung-uk Kim yyyAdjustINRC(1,1,0,0,&yyval.yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);}}
18628e022d3cSDag-Erling Smørgrav #line 1863 "expr.oxout.tab.c"
18633e794565SJung-uk Kim break;
18643e794565SJung-uk Kim case 4:
18653e794565SJung-uk Kim #line 80 "expr.oxout.y"
18663e794565SJung-uk Kim {if(yyyYok){
18673e794565SJung-uk Kim yyyGenIntNode(2,3,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);
18683e794565SJung-uk Kim yyyAdjustINRC(2,3,0,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);}}
18698e022d3cSDag-Erling Smørgrav #line 1870 "expr.oxout.tab.c"
18703e794565SJung-uk Kim break;
18713e794565SJung-uk Kim case 5:
18723e794565SJung-uk Kim #line 87 "expr.oxout.y"
18733e794565SJung-uk Kim {if(yyyYok){
18743e794565SJung-uk Kim yyyGenIntNode(3,3,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);
18753e794565SJung-uk Kim yyyAdjustINRC(3,3,0,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);}}
18768e022d3cSDag-Erling Smørgrav #line 1877 "expr.oxout.tab.c"
18773e794565SJung-uk Kim break;
18783e794565SJung-uk Kim case 6:
18793e794565SJung-uk Kim #line 94 "expr.oxout.y"
18803e794565SJung-uk Kim {if(yyyYok){
18813e794565SJung-uk Kim yyyGenIntNode(4,3,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);
18823e794565SJung-uk Kim yyyAdjustINRC(4,3,0,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);}}
18838e022d3cSDag-Erling Smørgrav #line 1884 "expr.oxout.tab.c"
18843e794565SJung-uk Kim break;
18853e794565SJung-uk Kim case 7:
18863e794565SJung-uk Kim #line 101 "expr.oxout.y"
18873e794565SJung-uk Kim {if(yyyYok){
18883e794565SJung-uk Kim yyyGenIntNode(5,3,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);
18893e794565SJung-uk Kim yyyAdjustINRC(5,3,0,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);}}
18908e022d3cSDag-Erling Smørgrav #line 1891 "expr.oxout.tab.c"
18913e794565SJung-uk Kim break;
18923e794565SJung-uk Kim case 8:
18933e794565SJung-uk Kim #line 108 "expr.oxout.y"
18943e794565SJung-uk Kim {if(yyyYok){
18953e794565SJung-uk Kim yyyGenIntNode(6,3,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);
18963e794565SJung-uk Kim yyyAdjustINRC(6,3,0,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);}}
18978e022d3cSDag-Erling Smørgrav #line 1898 "expr.oxout.tab.c"
18983e794565SJung-uk Kim break;
18993e794565SJung-uk Kim case 9:
19003e794565SJung-uk Kim #line 114 "expr.oxout.y"
19013e794565SJung-uk Kim {if(yyyYok){
19023e794565SJung-uk Kim yyyGenIntNode(7,1,0,&yyval.yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);
19033e794565SJung-uk Kim yyyAdjustINRC(7,1,0,0,&yyval.yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);}}
19048e022d3cSDag-Erling Smørgrav #line 1905 "expr.oxout.tab.c"
19053e794565SJung-uk Kim break;
19063e794565SJung-uk Kim case 10:
19073e794565SJung-uk Kim #line 121 "expr.oxout.y"
19083e794565SJung-uk Kim {if(yyyYok){
19093e794565SJung-uk Kim yyyGenIntNode(8,1,0,&yyval.yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);
19103e794565SJung-uk Kim yyyAdjustINRC(8,1,0,0,&yyval.yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);}}
19118e022d3cSDag-Erling Smørgrav #line 1912 "expr.oxout.tab.c"
19123e794565SJung-uk Kim break;
19138e022d3cSDag-Erling Smørgrav #line 1914 "expr.oxout.tab.c"
19143e794565SJung-uk Kim }
19153e794565SJung-uk Kim yystack.s_mark -= yym;
19163e794565SJung-uk Kim yystate = *yystack.s_mark;
19173e794565SJung-uk Kim yystack.l_mark -= yym;
19183e794565SJung-uk Kim yym = yylhs[yyn];
19193e794565SJung-uk Kim if (yystate == 0 && yym == 0)
19203e794565SJung-uk Kim {
19213e794565SJung-uk Kim #if YYDEBUG
19223e794565SJung-uk Kim if (yydebug)
19233e794565SJung-uk Kim printf("%sdebug: after reduction, shifting from state 0 to\
19243e794565SJung-uk Kim state %d\n", YYPREFIX, YYFINAL);
19253e794565SJung-uk Kim #endif
19263e794565SJung-uk Kim yystate = YYFINAL;
19273e794565SJung-uk Kim *++yystack.s_mark = YYFINAL;
19283e794565SJung-uk Kim *++yystack.l_mark = yyval;
19293e794565SJung-uk Kim if (yychar < 0)
19303e794565SJung-uk Kim {
19313e794565SJung-uk Kim yychar = YYLEX;
19323e794565SJung-uk Kim if (yychar < 0) yychar = YYEOF;
19333e794565SJung-uk Kim #if YYDEBUG
19343e794565SJung-uk Kim if (yydebug)
19353e794565SJung-uk Kim {
19363e794565SJung-uk Kim if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
19373e794565SJung-uk Kim printf("%sdebug: state %d, reading %d (%s)\n",
19383e794565SJung-uk Kim YYPREFIX, YYFINAL, yychar, yys);
19393e794565SJung-uk Kim }
19403e794565SJung-uk Kim #endif
19413e794565SJung-uk Kim }
19423e794565SJung-uk Kim if (yychar == YYEOF) goto yyaccept;
19433e794565SJung-uk Kim goto yyloop;
19443e794565SJung-uk Kim }
19453e794565SJung-uk Kim if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 &&
19463e794565SJung-uk Kim yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate)
19473e794565SJung-uk Kim yystate = yytable[yyn];
19483e794565SJung-uk Kim else
19493e794565SJung-uk Kim yystate = yydgoto[yym];
19503e794565SJung-uk Kim #if YYDEBUG
19513e794565SJung-uk Kim if (yydebug)
19523e794565SJung-uk Kim printf("%sdebug: after reduction, shifting from state %d \
19533e794565SJung-uk Kim to state %d\n", YYPREFIX, *yystack.s_mark, yystate);
19543e794565SJung-uk Kim #endif
19553e794565SJung-uk Kim if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
19563e794565SJung-uk Kim *++yystack.s_mark = (YYINT) yystate;
19573e794565SJung-uk Kim *++yystack.l_mark = yyval;
19583e794565SJung-uk Kim goto yyloop;
19593e794565SJung-uk Kim
19603e794565SJung-uk Kim yyoverflow:
19613e794565SJung-uk Kim YYERROR_CALL("yacc stack overflow");
19623e794565SJung-uk Kim
19633e794565SJung-uk Kim yyabort:
19643e794565SJung-uk Kim yyfreestack(&yystack);
19653e794565SJung-uk Kim return (1);
19663e794565SJung-uk Kim
19673e794565SJung-uk Kim yyaccept:
19683e794565SJung-uk Kim yyfreestack(&yystack);
19693e794565SJung-uk Kim return (0);
19703e794565SJung-uk Kim }
1971