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 63e794565SJung-uk Kim #define YYMAJOR 1 73e794565SJung-uk Kim #define YYMINOR 9 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 183e794565SJung-uk Kim #define yyparse expr.oxout_parse 193e794565SJung-uk Kim #endif /* yyparse */ 203e794565SJung-uk Kim 213e794565SJung-uk Kim #ifndef yylex 223e794565SJung-uk Kim #define yylex expr.oxout_lex 233e794565SJung-uk Kim #endif /* yylex */ 243e794565SJung-uk Kim 253e794565SJung-uk Kim #ifndef yyerror 263e794565SJung-uk Kim #define yyerror expr.oxout_error 273e794565SJung-uk Kim #endif /* yyerror */ 283e794565SJung-uk Kim 293e794565SJung-uk Kim #ifndef yychar 303e794565SJung-uk Kim #define yychar expr.oxout_char 313e794565SJung-uk Kim #endif /* yychar */ 323e794565SJung-uk Kim 333e794565SJung-uk Kim #ifndef yyval 343e794565SJung-uk Kim #define yyval expr.oxout_val 353e794565SJung-uk Kim #endif /* yyval */ 363e794565SJung-uk Kim 373e794565SJung-uk Kim #ifndef yylval 383e794565SJung-uk Kim #define yylval expr.oxout_lval 393e794565SJung-uk Kim #endif /* yylval */ 403e794565SJung-uk Kim 413e794565SJung-uk Kim #ifndef yydebug 423e794565SJung-uk Kim #define yydebug expr.oxout_debug 433e794565SJung-uk Kim #endif /* yydebug */ 443e794565SJung-uk Kim 453e794565SJung-uk Kim #ifndef yynerrs 463e794565SJung-uk Kim #define yynerrs expr.oxout_nerrs 473e794565SJung-uk Kim #endif /* yynerrs */ 483e794565SJung-uk Kim 493e794565SJung-uk Kim #ifndef yyerrflag 503e794565SJung-uk Kim #define yyerrflag expr.oxout_errflag 513e794565SJung-uk Kim #endif /* yyerrflag */ 523e794565SJung-uk Kim 533e794565SJung-uk Kim #ifndef yylhs 543e794565SJung-uk Kim #define yylhs expr.oxout_lhs 553e794565SJung-uk Kim #endif /* yylhs */ 563e794565SJung-uk Kim 573e794565SJung-uk Kim #ifndef yylen 583e794565SJung-uk Kim #define yylen expr.oxout_len 593e794565SJung-uk Kim #endif /* yylen */ 603e794565SJung-uk Kim 613e794565SJung-uk Kim #ifndef yydefred 623e794565SJung-uk Kim #define yydefred expr.oxout_defred 633e794565SJung-uk Kim #endif /* yydefred */ 643e794565SJung-uk Kim 653e794565SJung-uk Kim #ifndef yydgoto 663e794565SJung-uk Kim #define yydgoto expr.oxout_dgoto 673e794565SJung-uk Kim #endif /* yydgoto */ 683e794565SJung-uk Kim 693e794565SJung-uk Kim #ifndef yysindex 703e794565SJung-uk Kim #define yysindex expr.oxout_sindex 713e794565SJung-uk Kim #endif /* yysindex */ 723e794565SJung-uk Kim 733e794565SJung-uk Kim #ifndef yyrindex 743e794565SJung-uk Kim #define yyrindex expr.oxout_rindex 753e794565SJung-uk Kim #endif /* yyrindex */ 763e794565SJung-uk Kim 773e794565SJung-uk Kim #ifndef yygindex 783e794565SJung-uk Kim #define yygindex expr.oxout_gindex 793e794565SJung-uk Kim #endif /* yygindex */ 803e794565SJung-uk Kim 813e794565SJung-uk Kim #ifndef yytable 823e794565SJung-uk Kim #define yytable expr.oxout_table 833e794565SJung-uk Kim #endif /* yytable */ 843e794565SJung-uk Kim 853e794565SJung-uk Kim #ifndef yycheck 863e794565SJung-uk Kim #define yycheck expr.oxout_check 873e794565SJung-uk Kim #endif /* yycheck */ 883e794565SJung-uk Kim 893e794565SJung-uk Kim #ifndef yyname 903e794565SJung-uk Kim #define yyname expr.oxout_name 913e794565SJung-uk Kim #endif /* yyname */ 923e794565SJung-uk Kim 933e794565SJung-uk Kim #ifndef yyrule 943e794565SJung-uk Kim #define yyrule expr.oxout_rule 953e794565SJung-uk Kim #endif /* yyrule */ 963e794565SJung-uk Kim #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" 1203e794565SJung-uk Kim typedef union { 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; 1823e794565SJung-uk Kim static const YYINT expr.oxout_lhs[] = { -1, 1833e794565SJung-uk Kim 2, 0, 1, 3, 3, 3, 3, 3, 3, 3, 1843e794565SJung-uk Kim }; 1853e794565SJung-uk Kim static const YYINT expr.oxout_len[] = { 2, 1863e794565SJung-uk Kim 0, 2, 1, 3, 3, 3, 3, 3, 1, 1, 1873e794565SJung-uk Kim }; 1883e794565SJung-uk Kim 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 }; 1923e794565SJung-uk Kim static const YYINT expr.oxout_dgoto[] = { 1, 1933e794565SJung-uk Kim 6, 2, 7, 1943e794565SJung-uk Kim }; 1953e794565SJung-uk Kim 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 }; 1993e794565SJung-uk Kim 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 }; 2033e794565SJung-uk Kim static const YYINT expr.oxout_gindex[] = { 0, 2043e794565SJung-uk Kim 0, 0, 4, 2053e794565SJung-uk Kim }; 2063e794565SJung-uk Kim #define YYTABLESIZE 218 2073e794565SJung-uk Kim 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 }; 2313e794565SJung-uk Kim 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 2633e794565SJung-uk Kim 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 }; 2743e794565SJung-uk Kim 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 290*b53bb29fSJung-uk Kim #if YYDEBUG 2913e794565SJung-uk Kim int yydebug; 292*b53bb29fSJung-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; 298*b53bb29fSJung-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 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 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 3843e794565SJung-uk Kim void yyyHandleOverflow(char which) 3853e794565SJung-uk Kim {char *msg1,*msg2; 3863e794565SJung-uk Kim long oldSize,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 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 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 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" 6933e794565SJung-uk Kim printf("postfix: ")/* missing ; */ 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 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 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 9953e794565SJung-uk Kim if ((yyyRS = (struct yyyRSitem *) 9963e794565SJung-uk Kim calloc((size_t)(yyyRSmaxSize+1), (size_t)sizeof(struct yyyRSitem)) 9973e794565SJung-uk Kim ) 9983e794565SJung-uk Kim == 9993e794565SJung-uk Kim ((struct 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 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 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"); 10543e794565SJung-uk Kim (*yyyOxStackItem)->node->prodNum = 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 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 11553e794565SJung-uk Kim void yyyGenLeaf(int nAttrbs,int typeNum,long startP,long stopP,YYSTYPE *yylval) 11563e794565SJung-uk Kim {yyyRCT *rcPdum; 11573e794565SJung-uk Kim yyySIT **yyyOxStackItem = &yylval->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 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 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 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 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 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 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 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 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 1646*b53bb29fSJung-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 */ 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)); 16723e794565SJung-uk Kim if (newss == 0) 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)); 16793e794565SJung-uk Kim if (newvs == 0) 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) 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 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 17133e794565SJung-uk Kim if ((yys = getenv("YYDEBUG")) != 0) 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 17213e794565SJung-uk Kim yym = 0; 17223e794565SJung-uk Kim yyn = 0; 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();} 18483e794565SJung-uk Kim break; 18493e794565SJung-uk Kim case 2: 18503e794565SJung-uk Kim #line 66 "expr.oxout.y" 18513e794565SJung-uk Kim { 18523e794565SJung-uk Kim yyyDecorate(); yyyExecuteRRsection(yystack.l_mark[0].yyyOxAttrbs.yyyOxStackItem->node); 18533e794565SJung-uk Kim } 18543e794565SJung-uk Kim break; 18553e794565SJung-uk Kim case 3: 18563e794565SJung-uk Kim #line 73 "expr.oxout.y" 18573e794565SJung-uk Kim {if(yyyYok){ 18583e794565SJung-uk Kim yyyGenIntNode(1,1,0,&yyval.yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs); 18593e794565SJung-uk Kim yyyAdjustINRC(1,1,0,0,&yyval.yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);}} 18603e794565SJung-uk Kim break; 18613e794565SJung-uk Kim case 4: 18623e794565SJung-uk Kim #line 80 "expr.oxout.y" 18633e794565SJung-uk Kim {if(yyyYok){ 18643e794565SJung-uk Kim yyyGenIntNode(2,3,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs); 18653e794565SJung-uk Kim yyyAdjustINRC(2,3,0,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);}} 18663e794565SJung-uk Kim break; 18673e794565SJung-uk Kim case 5: 18683e794565SJung-uk Kim #line 87 "expr.oxout.y" 18693e794565SJung-uk Kim {if(yyyYok){ 18703e794565SJung-uk Kim yyyGenIntNode(3,3,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs); 18713e794565SJung-uk Kim yyyAdjustINRC(3,3,0,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);}} 18723e794565SJung-uk Kim break; 18733e794565SJung-uk Kim case 6: 18743e794565SJung-uk Kim #line 94 "expr.oxout.y" 18753e794565SJung-uk Kim {if(yyyYok){ 18763e794565SJung-uk Kim yyyGenIntNode(4,3,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs); 18773e794565SJung-uk Kim yyyAdjustINRC(4,3,0,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);}} 18783e794565SJung-uk Kim break; 18793e794565SJung-uk Kim case 7: 18803e794565SJung-uk Kim #line 101 "expr.oxout.y" 18813e794565SJung-uk Kim {if(yyyYok){ 18823e794565SJung-uk Kim yyyGenIntNode(5,3,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs); 18833e794565SJung-uk Kim yyyAdjustINRC(5,3,0,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);}} 18843e794565SJung-uk Kim break; 18853e794565SJung-uk Kim case 8: 18863e794565SJung-uk Kim #line 108 "expr.oxout.y" 18873e794565SJung-uk Kim {if(yyyYok){ 18883e794565SJung-uk Kim yyyGenIntNode(6,3,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs); 18893e794565SJung-uk Kim yyyAdjustINRC(6,3,0,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);}} 18903e794565SJung-uk Kim break; 18913e794565SJung-uk Kim case 9: 18923e794565SJung-uk Kim #line 114 "expr.oxout.y" 18933e794565SJung-uk Kim {if(yyyYok){ 18943e794565SJung-uk Kim yyyGenIntNode(7,1,0,&yyval.yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs); 18953e794565SJung-uk Kim yyyAdjustINRC(7,1,0,0,&yyval.yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);}} 18963e794565SJung-uk Kim break; 18973e794565SJung-uk Kim case 10: 18983e794565SJung-uk Kim #line 121 "expr.oxout.y" 18993e794565SJung-uk Kim {if(yyyYok){ 19003e794565SJung-uk Kim yyyGenIntNode(8,1,0,&yyval.yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs); 19013e794565SJung-uk Kim yyyAdjustINRC(8,1,0,0,&yyval.yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);}} 19023e794565SJung-uk Kim break; 1903*b53bb29fSJung-uk Kim #line 1904 "expr.oxout.tab.c" 19043e794565SJung-uk Kim } 19053e794565SJung-uk Kim yystack.s_mark -= yym; 19063e794565SJung-uk Kim yystate = *yystack.s_mark; 19073e794565SJung-uk Kim yystack.l_mark -= yym; 19083e794565SJung-uk Kim yym = yylhs[yyn]; 19093e794565SJung-uk Kim if (yystate == 0 && yym == 0) 19103e794565SJung-uk Kim { 19113e794565SJung-uk Kim #if YYDEBUG 19123e794565SJung-uk Kim if (yydebug) 19133e794565SJung-uk Kim printf("%sdebug: after reduction, shifting from state 0 to\ 19143e794565SJung-uk Kim state %d\n", YYPREFIX, YYFINAL); 19153e794565SJung-uk Kim #endif 19163e794565SJung-uk Kim yystate = YYFINAL; 19173e794565SJung-uk Kim *++yystack.s_mark = YYFINAL; 19183e794565SJung-uk Kim *++yystack.l_mark = yyval; 19193e794565SJung-uk Kim if (yychar < 0) 19203e794565SJung-uk Kim { 19213e794565SJung-uk Kim yychar = YYLEX; 19223e794565SJung-uk Kim if (yychar < 0) yychar = YYEOF; 19233e794565SJung-uk Kim #if YYDEBUG 19243e794565SJung-uk Kim if (yydebug) 19253e794565SJung-uk Kim { 19263e794565SJung-uk Kim if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; 19273e794565SJung-uk Kim printf("%sdebug: state %d, reading %d (%s)\n", 19283e794565SJung-uk Kim YYPREFIX, YYFINAL, yychar, yys); 19293e794565SJung-uk Kim } 19303e794565SJung-uk Kim #endif 19313e794565SJung-uk Kim } 19323e794565SJung-uk Kim if (yychar == YYEOF) goto yyaccept; 19333e794565SJung-uk Kim goto yyloop; 19343e794565SJung-uk Kim } 19353e794565SJung-uk Kim if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 && 19363e794565SJung-uk Kim yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate) 19373e794565SJung-uk Kim yystate = yytable[yyn]; 19383e794565SJung-uk Kim else 19393e794565SJung-uk Kim yystate = yydgoto[yym]; 19403e794565SJung-uk Kim #if YYDEBUG 19413e794565SJung-uk Kim if (yydebug) 19423e794565SJung-uk Kim printf("%sdebug: after reduction, shifting from state %d \ 19433e794565SJung-uk Kim to state %d\n", YYPREFIX, *yystack.s_mark, yystate); 19443e794565SJung-uk Kim #endif 19453e794565SJung-uk Kim if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; 19463e794565SJung-uk Kim *++yystack.s_mark = (YYINT) yystate; 19473e794565SJung-uk Kim *++yystack.l_mark = yyval; 19483e794565SJung-uk Kim goto yyloop; 19493e794565SJung-uk Kim 19503e794565SJung-uk Kim yyoverflow: 19513e794565SJung-uk Kim YYERROR_CALL("yacc stack overflow"); 19523e794565SJung-uk Kim 19533e794565SJung-uk Kim yyabort: 19543e794565SJung-uk Kim yyfreestack(&yystack); 19553e794565SJung-uk Kim return (1); 19563e794565SJung-uk Kim 19573e794565SJung-uk Kim yyaccept: 19583e794565SJung-uk Kim yyfreestack(&yystack); 19593e794565SJung-uk Kim return (0); 19603e794565SJung-uk Kim } 1961