Home | History | Annotate | Line # | Download | only in btyacc
expr.oxout.tab.c revision 1.3.6.1
      1 /*	$NetBSD: expr.oxout.tab.c,v 1.3.6.1 2019/06/10 21:44:42 christos Exp $	*/
      2 
      3 /* original parser id follows */
      4 /* yysccsid[] = "@(#)yaccpar	1.9 (Berkeley) 02/21/93" */
      5 /* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */
      6 
      7 #define YYBYACC 1
      8 #define YYMAJOR 1
      9 #define YYMINOR 9
     10 #define YYCHECK "yyyymmdd"
     11 
     12 #define YYEMPTY        (-1)
     13 #define yyclearin      (yychar = YYEMPTY)
     14 #define yyerrok        (yyerrflag = 0)
     15 #define YYRECOVERING() (yyerrflag != 0)
     16 #define YYENOMEM       (-2)
     17 #define YYEOF          0
     18 #undef YYBTYACC
     19 #define YYBTYACC 0
     20 #define YYDEBUGSTR YYPREFIX "debug"
     21 
     22 #ifndef yyparse
     23 #define yyparse    expr.oxout_parse
     24 #endif /* yyparse */
     25 
     26 #ifndef yylex
     27 #define yylex      expr.oxout_lex
     28 #endif /* yylex */
     29 
     30 #ifndef yyerror
     31 #define yyerror    expr.oxout_error
     32 #endif /* yyerror */
     33 
     34 #ifndef yychar
     35 #define yychar     expr.oxout_char
     36 #endif /* yychar */
     37 
     38 #ifndef yyval
     39 #define yyval      expr.oxout_val
     40 #endif /* yyval */
     41 
     42 #ifndef yylval
     43 #define yylval     expr.oxout_lval
     44 #endif /* yylval */
     45 
     46 #ifndef yydebug
     47 #define yydebug    expr.oxout_debug
     48 #endif /* yydebug */
     49 
     50 #ifndef yynerrs
     51 #define yynerrs    expr.oxout_nerrs
     52 #endif /* yynerrs */
     53 
     54 #ifndef yyerrflag
     55 #define yyerrflag  expr.oxout_errflag
     56 #endif /* yyerrflag */
     57 
     58 #ifndef yylhs
     59 #define yylhs      expr.oxout_lhs
     60 #endif /* yylhs */
     61 
     62 #ifndef yylen
     63 #define yylen      expr.oxout_len
     64 #endif /* yylen */
     65 
     66 #ifndef yydefred
     67 #define yydefred   expr.oxout_defred
     68 #endif /* yydefred */
     69 
     70 #ifndef yystos
     71 #define yystos     expr.oxout_stos
     72 #endif /* yystos */
     73 
     74 #ifndef yydgoto
     75 #define yydgoto    expr.oxout_dgoto
     76 #endif /* yydgoto */
     77 
     78 #ifndef yysindex
     79 #define yysindex   expr.oxout_sindex
     80 #endif /* yysindex */
     81 
     82 #ifndef yyrindex
     83 #define yyrindex   expr.oxout_rindex
     84 #endif /* yyrindex */
     85 
     86 #ifndef yygindex
     87 #define yygindex   expr.oxout_gindex
     88 #endif /* yygindex */
     89 
     90 #ifndef yytable
     91 #define yytable    expr.oxout_table
     92 #endif /* yytable */
     93 
     94 #ifndef yycheck
     95 #define yycheck    expr.oxout_check
     96 #endif /* yycheck */
     97 
     98 #ifndef yyname
     99 #define yyname     expr.oxout_name
    100 #endif /* yyname */
    101 
    102 #ifndef yyrule
    103 #define yyrule     expr.oxout_rule
    104 #endif /* yyrule */
    105 
    106 #if YYBTYACC
    107 
    108 #ifndef yycindex
    109 #define yycindex   expr.oxout_cindex
    110 #endif /* yycindex */
    111 
    112 #ifndef yyctable
    113 #define yyctable   expr.oxout_ctable
    114 #endif /* yyctable */
    115 
    116 #endif /* YYBTYACC */
    117 
    118 #define YYPREFIX "expr.oxout_"
    119 
    120 #define YYPURE 0
    121 
    122 #line 5 "expr.oxout.y"
    123 #include <stdlib.h>
    124 #include <string.h>
    125 #line 8 "expr.Y"
    126 
    127 #include "expr.oxout.h"
    128 #include <stdio.h>
    129 
    130 extern int yylex(void);
    131 extern void yyerror(const char *);
    132 #line 27 "expr.oxout.y"
    133 #include <limits.h>
    134 #define yyyR USHRT_MAX
    135 #ifdef YYSTYPE
    136 #undef  YYSTYPE_IS_DECLARED
    137 #define YYSTYPE_IS_DECLARED 1
    138 #endif
    139 #ifndef YYSTYPE_IS_DECLARED
    140 #define YYSTYPE_IS_DECLARED 1
    141 #line 31 "expr.oxout.y"
    142 typedef union {
    143 struct yyyOxAttrbs {
    144 struct yyyStackItem *yyyOxStackItem;
    145 } yyyOxAttrbs;
    146 } YYSTYPE;
    147 #endif /* !YYSTYPE_IS_DECLARED */
    148 #line 38 "expr.oxout.y"
    149 #include <stdio.h>
    150 #include <stdarg.h>
    151 
    152 static int yyyYok = 1;
    153 
    154 extern yyyFT yyyRCIL[];
    155 
    156 void yyyExecuteRRsection(yyyGNT *rootNode);
    157 void yyyYoxInit(void);
    158 void yyyDecorate(void);
    159 struct yyyOxAttrbs; /* hack required to compensate for 'msta' behavior */
    160 void yyyGenIntNode(long yyyProdNum, int yyyRHSlength, int yyyNattrbs, struct yyyOxAttrbs *yyval_OxAttrbs, ...);
    161 void yyyAdjustINRC(long yyyProdNum, int yyyRHSlength, long startP, long stopP, struct yyyOxAttrbs *yyval_OxAttrbs, ...);
    162 void yyyCheckUnsolvedInstTrav(yyyGNT *rootNode,long *nNZrc,long *cycleSum);
    163 void yyyUnsolvedInstSearchTrav(yyyGNT *pNode);
    164 void yyyUnsolvedInstSearchTravAux(yyyGNT *pNode);
    165 void yyyabort(void);
    166 
    167 #line 166 "expr.oxout.tab.c"
    168 
    169 /* compatibility with bison */
    170 #ifdef YYPARSE_PARAM
    171 /* compatibility with FreeBSD */
    172 # ifdef YYPARSE_PARAM_TYPE
    173 #  define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
    174 # else
    175 #  define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
    176 # endif
    177 #else
    178 # define YYPARSE_DECL() yyparse(void)
    179 #endif
    180 
    181 /* Parameters sent to lex. */
    182 #ifdef YYLEX_PARAM
    183 # define YYLEX_DECL() yylex(void *YYLEX_PARAM)
    184 # define YYLEX yylex(YYLEX_PARAM)
    185 #else
    186 # define YYLEX_DECL() yylex(void)
    187 # define YYLEX yylex()
    188 #endif
    189 
    190 /* Parameters sent to yyerror. */
    191 #ifndef YYERROR_DECL
    192 #define YYERROR_DECL() yyerror(const char *s)
    193 #endif
    194 #ifndef YYERROR_CALL
    195 #define YYERROR_CALL(msg) yyerror(msg)
    196 #endif
    197 
    198 extern int YYPARSE_DECL();
    199 
    200 #define ID 257
    201 #define CONST 258
    202 #define YYERRCODE 256
    203 typedef short YYINT;
    204 static const YYINT expr.oxout_lhs[] = {                  -1,
    205     2,    0,    1,    3,    3,    3,    3,    3,    3,    3,
    206 };
    207 static const YYINT expr.oxout_len[] = {                   2,
    208     0,    2,    1,    3,    3,    3,    3,    3,    1,    1,
    209 };
    210 static const YYINT expr.oxout_defred[] = {                1,
    211     0,    0,    9,   10,    0,    2,    0,    0,    0,    0,
    212     0,    0,    8,    0,    0,    4,    0,
    213 };
    214 #if defined(YYDESTRUCT_CALL) || defined(YYSTYPE_TOSTRING)
    215 static const YYINT expr.oxout_stos[] = {                  0,
    216   260,  262,  257,  258,   40,  261,  263,  263,   43,   45,
    217    42,   47,   41,  263,  263,  263,  263,
    218 };
    219 #endif /* YYDESTRUCT_CALL || YYSTYPE_TOSTRING */
    220 static const YYINT expr.oxout_dgoto[] = {                 1,
    221     6,    2,    7,
    222 };
    223 static const YYINT expr.oxout_sindex[] = {                0,
    224     0,  -40,    0,    0,  -40,    0,  -18,  -24,  -40,  -40,
    225   -40,  -40,    0,  -37,  -37,    0,  -39,
    226 };
    227 static const YYINT expr.oxout_rindex[] = {                0,
    228     0,    0,    0,    0,    0,    0,    6,    0,    0,    0,
    229     0,    0,    0,    2,    8,    0,    1,
    230 };
    231 #if YYBTYACC
    232 static const YYINT expr.oxout_cindex[] = {                0,
    233     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    234     0,    0,    0,    0,    0,    0,    0,
    235 };
    236 #endif
    237 static const YYINT expr.oxout_gindex[] = {                0,
    238     0,    0,    4,
    239 };
    240 #define YYTABLESIZE 218
    241 static const YYINT expr.oxout_table[] = {                 5,
    242     6,    5,   11,    0,   11,    3,    0,    7,    8,   12,
    243     0,    0,   14,   15,   16,   17,   13,   11,    9,    0,
    244    10,    0,   12,   11,    9,    0,   10,    0,   12,    0,
    245     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    246     0,    6,    5,    6,    5,    6,    5,    6,    7,    0,
    247     7,    0,    7,    0,    0,    0,    0,    0,    0,    0,
    248     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    249     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    250     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    251     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    252     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    253     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    254     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    255     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    256     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    257     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    258     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    259     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    260     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    261     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    262     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    263     0,    0,    0,    0,    0,    0,    3,    4,
    264 };
    265 static const YYINT expr.oxout_check[] = {                40,
    266     0,    0,   42,   -1,   42,    0,   -1,    0,    5,   47,
    267    -1,   -1,    9,   10,   11,   12,   41,   42,   43,   -1,
    268    45,   -1,   47,   42,   43,   -1,   45,   -1,   47,   -1,
    269    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    270    -1,   41,   41,   43,   43,   45,   45,   47,   41,   -1,
    271    43,   -1,   45,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    272    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    273    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    274    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    275    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    276    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    277    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    278    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    279    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    280    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    281    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    282    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    283    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    284    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    285    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    286    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    287    -1,   -1,   -1,   -1,   -1,   -1,  257,  258,
    288 };
    289 #if YYBTYACC
    290 static const YYINT expr.oxout_ctable[] = {               -1,
    291    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    292    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    293    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    294    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    295    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    296    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    297    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    298    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    299    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    300    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    301    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    302    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    303    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    304    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    305    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    306    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    307    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    308    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    309    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    310    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    311    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    312    -1,   -1,   -1,   -1,   -1,   -1,   -1,
    313 };
    314 #endif
    315 #define YYFINAL 1
    316 #ifndef YYDEBUG
    317 #define YYDEBUG 0
    318 #endif
    319 #define YYMAXTOKEN 258
    320 #define YYUNDFTOKEN 264
    321 #define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a))
    322 #if YYDEBUG
    323 static const char *const expr.oxout_name[] = {
    324 
    325 "$end",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    326 0,0,0,"'('","')'","'*'","'+'",0,"'-'",0,"'/'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    327 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    328 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    329 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    330 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    331 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"error","ID",
    332 "CONST","$accept","yyyAugNonterm","s","$$1","expr","illegal-symbol",
    333 };
    334 static const char *const expr.oxout_rule[] = {
    335 "$accept : yyyAugNonterm",
    336 "$$1 :",
    337 "yyyAugNonterm : $$1 s",
    338 "s : expr",
    339 "expr : expr '*' expr",
    340 "expr : expr '+' expr",
    341 "expr : expr '/' expr",
    342 "expr : expr '-' expr",
    343 "expr : '(' expr ')'",
    344 "expr : ID",
    345 "expr : CONST",
    346 
    347 };
    348 #endif
    349 
    350 #if YYDEBUG
    351 int      yydebug;
    352 #endif
    353 
    354 int      yyerrflag;
    355 int      yychar;
    356 YYSTYPE  yyval;
    357 YYSTYPE  yylval;
    358 int      yynerrs;
    359 
    360 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    361 YYLTYPE  yyloc; /* position returned by actions */
    362 YYLTYPE  yylloc; /* position from the lexer */
    363 #endif
    364 
    365 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    366 #ifndef YYLLOC_DEFAULT
    367 #define YYLLOC_DEFAULT(loc, rhs, n) \
    368 do \
    369 { \
    370     if (n == 0) \
    371     { \
    372         (loc).first_line   = YYRHSLOC(rhs, 0).last_line; \
    373         (loc).first_column = YYRHSLOC(rhs, 0).last_column; \
    374         (loc).last_line    = YYRHSLOC(rhs, 0).last_line; \
    375         (loc).last_column  = YYRHSLOC(rhs, 0).last_column; \
    376     } \
    377     else \
    378     { \
    379         (loc).first_line   = YYRHSLOC(rhs, 1).first_line; \
    380         (loc).first_column = YYRHSLOC(rhs, 1).first_column; \
    381         (loc).last_line    = YYRHSLOC(rhs, n).last_line; \
    382         (loc).last_column  = YYRHSLOC(rhs, n).last_column; \
    383     } \
    384 } while (0)
    385 #endif /* YYLLOC_DEFAULT */
    386 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
    387 #if YYBTYACC
    388 
    389 #ifndef YYLVQUEUEGROWTH
    390 #define YYLVQUEUEGROWTH 32
    391 #endif
    392 #endif /* YYBTYACC */
    393 
    394 /* define the initial stack-sizes */
    395 #ifdef YYSTACKSIZE
    396 #undef YYMAXDEPTH
    397 #define YYMAXDEPTH  YYSTACKSIZE
    398 #else
    399 #ifdef YYMAXDEPTH
    400 #define YYSTACKSIZE YYMAXDEPTH
    401 #else
    402 #define YYSTACKSIZE 10000
    403 #define YYMAXDEPTH  10000
    404 #endif
    405 #endif
    406 
    407 #ifndef YYINITSTACKSIZE
    408 #define YYINITSTACKSIZE 200
    409 #endif
    410 
    411 typedef struct {
    412     unsigned stacksize;
    413     YYINT    *s_base;
    414     YYINT    *s_mark;
    415     YYINT    *s_last;
    416     YYSTYPE  *l_base;
    417     YYSTYPE  *l_mark;
    418 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    419     YYLTYPE  *p_base;
    420     YYLTYPE  *p_mark;
    421 #endif
    422 } YYSTACKDATA;
    423 #if YYBTYACC
    424 
    425 struct YYParseState_s
    426 {
    427     struct YYParseState_s *save;    /* Previously saved parser state */
    428     YYSTACKDATA            yystack; /* saved parser stack */
    429     int                    state;   /* saved parser state */
    430     int                    errflag; /* saved error recovery status */
    431     int                    lexeme;  /* saved index of the conflict lexeme in the lexical queue */
    432     YYINT                  ctry;    /* saved index in yyctable[] for this conflict */
    433 };
    434 typedef struct YYParseState_s YYParseState;
    435 #endif /* YYBTYACC */
    436 /* variables for the parser stack */
    437 static YYSTACKDATA yystack;
    438 #if YYBTYACC
    439 
    440 /* Current parser state */
    441 static YYParseState *yyps = 0;
    442 
    443 /* yypath != NULL: do the full parse, starting at *yypath parser state. */
    444 static YYParseState *yypath = 0;
    445 
    446 /* Base of the lexical value queue */
    447 static YYSTYPE *yylvals = 0;
    448 
    449 /* Current position at lexical value queue */
    450 static YYSTYPE *yylvp = 0;
    451 
    452 /* End position of lexical value queue */
    453 static YYSTYPE *yylve = 0;
    454 
    455 /* The last allocated position at the lexical value queue */
    456 static YYSTYPE *yylvlim = 0;
    457 
    458 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    459 /* Base of the lexical position queue */
    460 static YYLTYPE *yylpsns = 0;
    461 
    462 /* Current position at lexical position queue */
    463 static YYLTYPE *yylpp = 0;
    464 
    465 /* End position of lexical position queue */
    466 static YYLTYPE *yylpe = 0;
    467 
    468 /* The last allocated position at the lexical position queue */
    469 static YYLTYPE *yylplim = 0;
    470 #endif
    471 
    472 /* Current position at lexical token queue */
    473 static YYINT  *yylexp = 0;
    474 
    475 static YYINT  *yylexemes = 0;
    476 #endif /* YYBTYACC */
    477 #line 53 "expr.Y"
    478 
    479 
    480 int yyparse(void);
    481 
    482 int main()
    483   {yyparse();
    484   }
    485 
    486 
    487 
    488 #line 138 "expr.oxout.y"
    489 long yyySSALspaceSize =    20000;
    490 long yyyRSmaxSize =        1000;
    491 long yyyTravStackMaxSize = 2000;
    492 
    493 struct yyySolvedSAlistCell {yyyWAT attrbNum;
    494                             long next;
    495                            };
    496 
    497 #define yyyLambdaSSAL 0
    498 long yyySSALCfreeList = yyyLambdaSSAL;
    499 long yyyNewSSALC = 1;
    500 
    501 struct yyySolvedSAlistCell *yyySSALspace;
    502 
    503 long yyyNbytesStackStg;
    504 
    505 
    506 
    507 yyyFT yyyRCIL[1];
    508 
    509 short yyyIIIEL[] = {0,
    510 0,2,6,10,14,18,22,24,
    511 };
    512 
    513 long yyyIIEL[] = {
    514 0,0,0,0,0,0,0,0,0,0,0,0,
    515 0,0,0,0,0,0,0,0,0,0,0,0,
    516 1,1,
    517 };
    518 
    519 long yyyIEL[] = {
    520 0,0,0,
    521 };
    522 
    523 yyyFT yyyEntL[1];
    524 
    525 void yyyfatal(char *msg)
    526 {fputs(msg,stderr);exit(-1);}
    527 
    528 
    529 
    530 #define yyySSALof 'S'
    531 #define yyyRSof   'q'
    532 #define yyyTSof   't'
    533 
    534 
    535 
    536 void yyyHandleOverflow(char which)
    537   {char *msg1,*msg2;
    538    long  oldSize,newSize;
    539    switch(which)
    540      {
    541       case yyySSALof :
    542            msg1 = "SSAL overflow: ";
    543            oldSize = yyySSALspaceSize;
    544            break;
    545       case yyyRSof   :
    546            msg1 = "ready set overflow: ";
    547            oldSize = yyyRSmaxSize;
    548            break;
    549       case yyyTSof   :
    550            msg1 = "traversal stack overflow: ";
    551            oldSize = yyyTravStackMaxSize;
    552            break;
    553       default        :;
    554      }
    555    newSize = (3*oldSize)/2;
    556    if (newSize < 100) newSize = 100;
    557    fputs(msg1,stderr);
    558    fprintf(stderr,"size was %ld.\n",oldSize);
    559    msg2 = "     Have to modify evaluator:  -Y%c%ld.\n";
    560    fprintf(stderr,msg2,which,newSize);
    561    exit(-1);
    562   }
    563 
    564 
    565 
    566 void yyySignalEnts(yyyGNT *node,long startP,long stopP)
    567   {yyyGNT *dumNode;
    568 
    569    while (startP < stopP)
    570      {
    571       if (!yyyEntL[startP]) dumNode = node;
    572          else dumNode = (node->cL)[yyyEntL[startP]-1];
    573       if (!(--((dumNode->refCountList)[yyyEntL[startP+1]]
    574               )
    575            )
    576          )
    577          {
    578           if (++yyyRSTop == yyyAfterRS)
    579              {yyyHandleOverflow(yyyRSof);
    580               break;
    581              }
    582           yyyRSTop->node = dumNode;
    583           yyyRSTop->whichSym = yyyEntL[startP];
    584           yyyRSTop->wa = yyyEntL[startP+1];
    585          }
    586       startP += 2;
    587      }
    588   }
    589 
    590 
    591 
    592 
    593 
    594 
    595 void yyySolveAndSignal() {
    596 long yyyiDum,*yyypL;
    597 int yyyws,yyywa;
    598 yyyGNT *yyyRSTopN,*yyyRefN;
    599 yyyParent yyyRSTopNp;
    600 
    601 
    602 yyyRSTopNp = (yyyRSTopN = yyyRSTop->node)->parent;
    603 yyyRefN= (yyyws = (yyyRSTop->whichSym))?yyyRSTopNp.noderef:yyyRSTopN;
    604 yyywa = yyyRSTop->wa;
    605 yyyRSTop--;
    606 switch(yyyRefN->prodNum) {
    607 case 1:  /***yacc rule 1***/
    608   switch (yyyws) {
    609   }
    610 break;
    611 case 2:  /***yacc rule 2***/
    612   switch (yyyws) {
    613   }
    614 break;
    615 case 3:  /***yacc rule 3***/
    616   switch (yyyws) {
    617   }
    618 break;
    619 case 4:  /***yacc rule 4***/
    620   switch (yyyws) {
    621   }
    622 break;
    623 case 5:  /***yacc rule 5***/
    624   switch (yyyws) {
    625   }
    626 break;
    627 case 6:  /***yacc rule 6***/
    628   switch (yyyws) {
    629   }
    630 break;
    631 case 7:  /***yacc rule 7***/
    632   switch (yyyws) {
    633   case 1:  /**/
    634     switch (yyywa) {
    635     }
    636   break;
    637   }
    638 break;
    639 case 8:  /***yacc rule 8***/
    640   switch (yyyws) {
    641   case 1:  /**/
    642     switch (yyywa) {
    643     }
    644   break;
    645   }
    646 break;
    647 } /* switch */
    648 
    649 if (yyyws)  /* the just-solved instance was inherited. */
    650    {if (yyyRSTopN->prodNum)
    651        {yyyiDum = yyyIIEL[yyyIIIEL[yyyRSTopN->prodNum]] + yyywa;
    652         yyySignalEnts(yyyRSTopN,yyyIEL[yyyiDum],
    653                                 yyyIEL[yyyiDum+1]
    654                      );
    655        }
    656    }
    657    else     /* the just-solved instance was synthesized. */
    658    {if (!(yyyRSTopN->parentIsStack)) /* node has a parent. */
    659        {yyyiDum = yyyIIEL[yyyIIIEL[yyyRSTopNp.noderef->prodNum] +
    660                           yyyRSTopN->whichSym
    661                          ] +
    662                   yyywa;
    663         yyySignalEnts(yyyRSTopNp.noderef,
    664                       yyyIEL[yyyiDum],
    665                       yyyIEL[yyyiDum+1]
    666                      );
    667        }
    668        else   /* node is still on the stack--it has no parent yet. */
    669        {yyypL = &(yyyRSTopNp.stackref->solvedSAlist);
    670         if (yyySSALCfreeList == yyyLambdaSSAL)
    671            {yyySSALspace[yyyNewSSALC].next = *yyypL;
    672             if ((*yyypL = yyyNewSSALC++) == yyySSALspaceSize)
    673                yyyHandleOverflow(yyySSALof);
    674            }
    675            else
    676            {yyyiDum = yyySSALCfreeList;
    677             yyySSALCfreeList = yyySSALspace[yyySSALCfreeList].next;
    678             yyySSALspace[yyyiDum].next = *yyypL;
    679             *yyypL = yyyiDum;
    680            }
    681         yyySSALspace[*yyypL].attrbNum = yyywa;
    682        }
    683    }
    684 
    685 } /* yyySolveAndSignal */
    686 
    687 
    688 
    689 
    690 
    691 
    692 #define condStg unsigned int conds;
    693 #define yyyClearConds {yyyTST->conds = 0;}
    694 #define yyySetCond(n) {yyyTST->conds += (1<<(n));}
    695 #define yyyCond(n) ((yyyTST->conds & (1<<(n)))?1:0)
    696 
    697 
    698 
    699 struct yyyTravStackItem {yyyGNT *node;
    700                          char isReady;
    701                          condStg
    702                         };
    703 
    704 
    705 
    706 void yyyDoTraversals(yyyGNT *rootNode)
    707 {struct yyyTravStackItem *yyyTravStack,*yyyTST,*yyyAfterTravStack;
    708  yyyGNT *yyyTSTn,**yyyCLptr2;
    709  int yyyi,yyyRL,yyyPass;
    710  int i;
    711 
    712  if (!yyyYok) return;
    713  if ((yyyTravStack =
    714                  ((struct yyyTravStackItem *)
    715                   calloc((size_t)yyyTravStackMaxSize,
    716                          (size_t)sizeof(struct yyyTravStackItem)
    717                         )
    718                  )
    719      )
    720      ==
    721      (struct yyyTravStackItem *)NULL
    722     )
    723     {fputs("malloc error in traversal stack allocation\n",stderr);
    724      exit(-1);
    725     }
    726 
    727 yyyAfterTravStack = yyyTravStack + yyyTravStackMaxSize;
    728 yyyTravStack++;
    729 
    730 
    731 for (yyyi=0; yyyi<2; yyyi++) {
    732 yyyTST = yyyTravStack;
    733 yyyTST->node = rootNode;
    734 yyyTST->isReady = 0;
    735 yyyClearConds
    736 
    737 while(yyyTST >= yyyTravStack)
    738   {yyyTSTn = yyyTST->node;
    739    if (yyyTST->isReady)
    740       {yyyPass = 1;
    741        goto yyyTravSwitch;
    742 yyyTpop:
    743        yyyTST--;
    744       }
    745       else
    746       {yyyPass = 0;
    747        goto yyyTravSwitch;
    748 yyyTpush:
    749        yyyTST->isReady = 1;
    750        if (yyyTSTn->prodNum)
    751           {if (yyyRL)
    752              {yyyCLptr2 = yyyTSTn->cL;
    753               i = yyyTSTn->cLlen;
    754               while (i--)
    755                 {if (++yyyTST == yyyAfterTravStack)
    756                     yyyHandleOverflow(yyyTSof);
    757                     else
    758                     {yyyTST->node = *yyyCLptr2;
    759                      yyyTST->isReady = 0;
    760                      yyyClearConds
    761                     }
    762                  yyyCLptr2++;
    763                 }
    764              } /* right to left */
    765              else  /* left to right */
    766              {i = yyyTSTn->cLlen;
    767               yyyCLptr2 = yyyTSTn->cL + i;
    768               while (i--)
    769                 {yyyCLptr2--;
    770                  if (++yyyTST == yyyAfterTravStack)
    771                     yyyHandleOverflow(yyyTSof);
    772                     else
    773                     {yyyTST->node = *yyyCLptr2;
    774                      yyyTST->isReady = 0;
    775                      yyyClearConds
    776                     }
    777                 }
    778              } /* left to right */
    779           }
    780       } /* else */
    781    continue;
    782 yyyTravSwitch:
    783 				switch(yyyTSTn->prodNum)	{
    784 case 1:
    785 	switch(yyyi)	{
    786 		case 0:
    787 			switch(yyyPass)	{
    788 				case 0:
    789 yyyRL = 0;yyySetCond(0)
    790 
    791 if (!
    792 #line 24 "expr.Y"
    793   (1)
    794 #line 444 "expr.oxout.y"
    795 ) yyySetCond(1)
    796 yyySetCond(2)
    797 
    798 				case 1:
    799 
    800 if (yyyCond(0) != yyyPass) {
    801 #line 24 "expr.Y"
    802 
    803 #line 453 "expr.oxout.y"
    804 }
    805 if (yyyCond(1) != yyyPass) {
    806 #line 24 "expr.Y"
    807  printf("\n");
    808 
    809 #line 459 "expr.oxout.y"
    810 }
    811 if (yyyCond(2) != yyyPass) {
    812 #line 25 "expr.Y"
    813   printf("prefix:   ");
    814 
    815 #line 465 "expr.oxout.y"
    816 }
    817 				break;
    818 					}
    819 		break;
    820 		case 1:
    821 			switch(yyyPass)	{
    822 				case 0:
    823 yyyRL = 0;
    824 if (
    825 #line 23 "expr.Y"
    826   (1)
    827 #line 477 "expr.oxout.y"
    828 ) yyySetCond(2)
    829 
    830 				case 1:
    831 
    832 if (yyyCond(0) != yyyPass) {
    833 #line 22 "expr.Y"
    834  printf("\n");
    835 
    836 #line 486 "expr.oxout.y"
    837 }
    838 if (yyyCond(1) != yyyPass) {
    839 #line 23 "expr.Y"
    840 
    841 #line 491 "expr.oxout.y"
    842 }
    843 if (yyyCond(2) != yyyPass) {
    844 #line 23 "expr.Y"
    845  printf("postfix:  ")/* missing ; */
    846 
    847 #line 497 "expr.oxout.y"
    848 }
    849 				break;
    850 					}
    851 		break;
    852 			}
    853 
    854 break;
    855 case 2:
    856 	switch(yyyi)	{
    857 		case 0:
    858 			switch(yyyPass)	{
    859 				case 0:
    860 yyyRL = 0;yyySetCond(0)
    861 
    862 				case 1:
    863 
    864 if (yyyCond(0) != yyyPass) {
    865 #line 29 "expr.Y"
    866   printf(" * ");
    867 
    868 #line 518 "expr.oxout.y"
    869 }
    870 				break;
    871 					}
    872 		break;
    873 		case 1:
    874 			switch(yyyPass)	{
    875 				case 0:
    876 yyyRL = 0;
    877 				case 1:
    878 
    879 if (yyyCond(0) != yyyPass) {
    880 #line 28 "expr.Y"
    881  printf(" * ");
    882 
    883 #line 533 "expr.oxout.y"
    884 }
    885 				break;
    886 					}
    887 		break;
    888 			}
    889 
    890 break;
    891 case 3:
    892 	switch(yyyi)	{
    893 		case 0:
    894 			switch(yyyPass)	{
    895 				case 0:
    896 yyyRL = 0;yyySetCond(0)
    897 
    898 				case 1:
    899 
    900 if (yyyCond(0) != yyyPass) {
    901 #line 32 "expr.Y"
    902   printf(" + ");
    903 
    904 #line 554 "expr.oxout.y"
    905 }
    906 				break;
    907 					}
    908 		break;
    909 		case 1:
    910 			switch(yyyPass)	{
    911 				case 0:
    912 yyyRL = 0;
    913 				case 1:
    914 
    915 if (yyyCond(0) != yyyPass) {
    916 #line 33 "expr.Y"
    917  printf(" + ");
    918 
    919 #line 569 "expr.oxout.y"
    920 }
    921 				break;
    922 					}
    923 		break;
    924 			}
    925 
    926 break;
    927 case 4:
    928 	switch(yyyi)	{
    929 		case 0:
    930 			switch(yyyPass)	{
    931 				case 0:
    932 yyyRL = 0;yyySetCond(0)
    933 
    934 				case 1:
    935 
    936 if (yyyCond(0) != yyyPass) {
    937 #line 37 "expr.Y"
    938   printf(" / ");
    939 
    940 #line 590 "expr.oxout.y"
    941 }
    942 				break;
    943 					}
    944 		break;
    945 		case 1:
    946 			switch(yyyPass)	{
    947 				case 0:
    948 yyyRL = 0;
    949 				case 1:
    950 
    951 if (yyyCond(0) != yyyPass) {
    952 #line 36 "expr.Y"
    953  printf(" / ");
    954 
    955 #line 605 "expr.oxout.y"
    956 }
    957 				break;
    958 					}
    959 		break;
    960 			}
    961 
    962 break;
    963 case 5:
    964 	switch(yyyi)	{
    965 		case 0:
    966 			switch(yyyPass)	{
    967 				case 0:
    968 yyyRL = 0;yyySetCond(0)
    969 
    970 				case 1:
    971 
    972 if (yyyCond(0) != yyyPass) {
    973 #line 41 "expr.Y"
    974   printf(" - ");
    975 
    976 #line 626 "expr.oxout.y"
    977 }
    978 				break;
    979 					}
    980 		break;
    981 		case 1:
    982 			switch(yyyPass)	{
    983 				case 0:
    984 yyyRL = 0;
    985 				case 1:
    986 
    987 if (yyyCond(0) != yyyPass) {
    988 #line 40 "expr.Y"
    989  printf(" - ");
    990 
    991 #line 641 "expr.oxout.y"
    992 }
    993 				break;
    994 					}
    995 		break;
    996 			}
    997 
    998 break;
    999 case 6:
   1000 	switch(yyyi)	{
   1001 		case 0:
   1002 			switch(yyyPass)	{
   1003 				case 0:
   1004 yyyRL = 0;
   1005 				case 1:
   1006 
   1007 				break;
   1008 					}
   1009 		break;
   1010 		case 1:
   1011 			switch(yyyPass)	{
   1012 				case 0:
   1013 yyyRL = 0;
   1014 				case 1:
   1015 
   1016 				break;
   1017 					}
   1018 		break;
   1019 			}
   1020 
   1021 break;
   1022 case 7:
   1023 	switch(yyyi)	{
   1024 		case 0:
   1025 			switch(yyyPass)	{
   1026 				case 0:
   1027 yyyRL = 0;yyySetCond(0)
   1028 
   1029 				case 1:
   1030 
   1031 if (yyyCond(0) != yyyPass) {
   1032 #line 46 "expr.Y"
   1033   printf(" %s ",yyyTSTn->cL[0]->yyyAttrbs.yyyAttrb1.lexeme);
   1034 
   1035 #line 685 "expr.oxout.y"
   1036 }
   1037 				break;
   1038 					}
   1039 		break;
   1040 		case 1:
   1041 			switch(yyyPass)	{
   1042 				case 0:
   1043 yyyRL = 0;
   1044 				case 1:
   1045 
   1046 if (yyyCond(0) != yyyPass) {
   1047 #line 45 "expr.Y"
   1048  printf(" %s ",yyyTSTn->cL[0]->yyyAttrbs.yyyAttrb1.lexeme);
   1049 
   1050 #line 700 "expr.oxout.y"
   1051 }
   1052 				break;
   1053 					}
   1054 		break;
   1055 			}
   1056 
   1057 break;
   1058 case 8:
   1059 	switch(yyyi)	{
   1060 		case 0:
   1061 			switch(yyyPass)	{
   1062 				case 0:
   1063 yyyRL = 0;yyySetCond(0)
   1064 
   1065 				case 1:
   1066 
   1067 if (yyyCond(0) != yyyPass) {
   1068 #line 50 "expr.Y"
   1069   printf(" %s ",yyyTSTn->cL[0]->yyyAttrbs.yyyAttrb1.lexeme);
   1070 
   1071 #line 721 "expr.oxout.y"
   1072 }
   1073 				break;
   1074 					}
   1075 		break;
   1076 		case 1:
   1077 			switch(yyyPass)	{
   1078 				case 0:
   1079 yyyRL = 0;
   1080 				case 1:
   1081 
   1082 if (yyyCond(0) != yyyPass) {
   1083 #line 49 "expr.Y"
   1084  printf(" %s ",yyyTSTn->cL[0]->yyyAttrbs.yyyAttrb1.lexeme);
   1085 
   1086 #line 736 "expr.oxout.y"
   1087 }
   1088 				break;
   1089 					}
   1090 		break;
   1091 			}
   1092 
   1093 break;
   1094 								} /* switch */
   1095    if (yyyPass) goto yyyTpop; else goto yyyTpush;
   1096   } /* while */
   1097  } /* for */
   1098 } /* yyyDoTraversals */
   1099 
   1100 void yyyExecuteRRsection(yyyGNT *rootNode)  {
   1101    int yyyi;
   1102    long cycleSum = 0;
   1103    long nNZrc = 0;
   1104 
   1105    if (!yyyYok) return;
   1106    yyyCheckUnsolvedInstTrav(rootNode,&nNZrc,&cycleSum);
   1107    if (nNZrc)
   1108       {
   1109        fputs("\n\n\n**********\n",stderr);
   1110        fputs("cycle detected in completed parse tree",stderr);
   1111        fputs(" after decoration.\n",stderr);
   1112 #if CYCLE_VERBOSE
   1113        fprintf(stderr,
   1114                "number of unsolved attribute instances == %ld.\n",
   1115                nNZrc
   1116               );
   1117        fprintf(stderr,
   1118                "total number of remaining dependencies == %ld.\n",
   1119                cycleSum
   1120               );
   1121        fputs("average number of remaining dependencies\n",stderr);
   1122        fprintf(stderr,"  per unsolved instance == %f.\n",
   1123                ((float)(cycleSum)/(float)(nNZrc))
   1124               );
   1125 #endif
   1126        fprintf(stderr,
   1127          "searching parse tree for %ld unsolved instances:\n",
   1128                nNZrc
   1129               );
   1130        yyyUnsolvedInstSearchTravAux(rootNode);
   1131       }
   1132    yyyDoTraversals(rootNode);
   1133 } /* yyyExecuteRRsection */
   1134 
   1135 
   1136 
   1137 yyyWAT yyyLRCIL[2] = {0,0,
   1138 };
   1139 
   1140 
   1141 
   1142 void yyyYoxInit(void)
   1143   {
   1144    static int yyyInitDone = 0;
   1145    if (yyyInitDone) return;
   1146 
   1147    if ((yyyRS = (struct yyyRSitem *)
   1148          calloc((size_t)(yyyRSmaxSize+1), (size_t)sizeof(struct yyyRSitem))
   1149        )
   1150        ==
   1151        ((struct yyyRSitem *) NULL)
   1152       )
   1153       yyyfatal("malloc error in ox ready set space allocation\n");
   1154    yyyRS++;
   1155    yyyAfterRS = yyyRS + yyyRSmaxSize;
   1156 
   1157 
   1158    if ((yyySSALspace = (struct yyySolvedSAlistCell *)
   1159           calloc((size_t)(yyySSALspaceSize+1), (size_t)sizeof(struct yyySolvedSAlistCell))
   1160        )
   1161        ==
   1162        ((struct yyySolvedSAlistCell *) NULL)
   1163       )
   1164       yyyfatal("malloc error in stack solved list space allocation\n");
   1165    yyyInitDone = 1;
   1166 
   1167    yyyRSTop = yyyRS - 1;
   1168   } /* yyyYoxInit */
   1169 
   1170 
   1171 
   1172 void yyyDecorate(void)
   1173   {
   1174    while (yyyRSTop >= yyyRS)
   1175       yyySolveAndSignal();
   1176   }
   1177 
   1178 
   1179 
   1180 void yyyGenIntNode(long yyyProdNum, int yyyRHSlength, int yyyNattrbs, struct yyyOxAttrbs *yyval_OxAttrbs, ...)
   1181   {yyyWST i;
   1182    yyySIT **yyyOxStackItem = &yyval_OxAttrbs->yyyOxStackItem;
   1183    yyyGNT *gnpDum;
   1184    va_list ap;
   1185 
   1186    *yyyOxStackItem = (yyySIT *) malloc((size_t)sizeof(yyySIT));
   1187    if (*yyyOxStackItem == (yyySIT *) NULL)
   1188       yyyfatal("malloc error in ox yacc semantic stack space allocation\n");
   1189    (*yyyOxStackItem)->node =
   1190                                 (yyyGNT *) malloc((size_t)sizeof(yyyGNT));
   1191    if ((*yyyOxStackItem)->node == (yyyGNT *) NULL)
   1192       yyyfatal("malloc error in ox node space allocation\n");
   1193    (*yyyOxStackItem)->solvedSAlist = yyyLambdaSSAL;
   1194    (*yyyOxStackItem)->node->parent.stackref = *yyyOxStackItem;
   1195    (*yyyOxStackItem)->node->parentIsStack = 1;
   1196    (*yyyOxStackItem)->node->cLlen  = yyyRHSlength;
   1197    (*yyyOxStackItem)->node->cL =
   1198             (yyyGNT **) calloc((size_t)yyyRHSlength, (size_t)sizeof(yyyGNT *));
   1199    if ((*yyyOxStackItem)->node->cL == (yyyGNT **) NULL)
   1200       yyyfatal("malloc error in ox child list space allocation\n");
   1201    (*yyyOxStackItem)->node->refCountListLen = yyyNattrbs;
   1202    (*yyyOxStackItem)->node->refCountList =
   1203             (yyyRCT *) calloc((size_t)yyyNattrbs, (size_t)sizeof(yyyRCT));
   1204    if ((*yyyOxStackItem)->node->refCountList == (yyyRCT *) NULL)
   1205       yyyfatal("malloc error in ox reference count list space allocation\n");
   1206    (*yyyOxStackItem)->node->prodNum = yyyProdNum;
   1207    va_start(ap, yyval_OxAttrbs);
   1208    for (i=1;i<=yyyRHSlength;i++)
   1209      {yyySIT *yaccStDum = va_arg(ap,struct yyyOxAttrbs *)->yyyOxStackItem;
   1210       gnpDum = (*yyyOxStackItem)->node->cL[i-1] = yaccStDum->node;
   1211       gnpDum->whichSym = i;
   1212       gnpDum->parent.noderef = (*yyyOxStackItem)->node;
   1213       gnpDum->parentIsStack = 0;
   1214      }
   1215    va_end(ap);
   1216   }
   1217 
   1218 
   1219 
   1220 #define yyyDECORfREQ 50
   1221 
   1222 
   1223 
   1224 void yyyAdjustINRC(long yyyProdNum, int yyyRHSlength, long startP, long stopP, struct yyyOxAttrbs *yyval_OxAttrbs, ...)
   1225   {yyyWST i;
   1226    yyySIT *yyyOxStackItem = yyval_OxAttrbs->yyyOxStackItem;
   1227    long SSALptr,SSALptrHead,*cPtrPtr;
   1228    long *pL;
   1229    yyyGNT *gnpDum;
   1230    long iTemp;
   1231    long nextP;
   1232    static unsigned short intNodeCount = yyyDECORfREQ;
   1233    va_list ap;
   1234 
   1235    nextP = startP;
   1236    while (nextP < stopP)
   1237      {if (yyyRCIL[nextP] == yyyR)
   1238          {(yyyOxStackItem->node->refCountList)[yyyRCIL[nextP+1]] = yyyRCIL[nextP+2];
   1239          }
   1240          else
   1241          {(((yyyOxStackItem->node->cL)[yyyRCIL[nextP]])->refCountList)[yyyRCIL[nextP+1]] = yyyRCIL[nextP+2];
   1242          }
   1243       nextP += 3;
   1244      }
   1245    pL = yyyIIEL + yyyIIIEL[yyyProdNum];
   1246    va_start(ap, yyval_OxAttrbs);
   1247    for (i=1;i<=yyyRHSlength;i++)
   1248      {yyySIT *yaccStDum = va_arg(ap,struct yyyOxAttrbs *)->yyyOxStackItem;
   1249       pL++;
   1250       SSALptrHead = SSALptr = *(cPtrPtr = &(yaccStDum->solvedSAlist));
   1251       if (SSALptr != yyyLambdaSSAL)
   1252          {*cPtrPtr = yyyLambdaSSAL;
   1253           do
   1254             {
   1255              iTemp = (*pL+yyySSALspace[SSALptr].attrbNum);
   1256              yyySignalEnts(yyyOxStackItem->node,
   1257                            yyyIEL[iTemp],
   1258                            yyyIEL[iTemp+1]
   1259                           );
   1260              SSALptr = *(cPtrPtr = &(yyySSALspace[SSALptr].next));
   1261             }
   1262             while (SSALptr != yyyLambdaSSAL);
   1263           *cPtrPtr = yyySSALCfreeList;
   1264           yyySSALCfreeList = SSALptrHead;
   1265          }
   1266      }
   1267    va_end(ap);
   1268    nextP = startP + 2;
   1269    while (nextP < stopP)
   1270      {if (!yyyRCIL[nextP])
   1271          {if (yyyRCIL[nextP-2] == yyyR)
   1272              {pL = &(yyyOxStackItem->solvedSAlist);
   1273               if (yyySSALCfreeList == yyyLambdaSSAL)
   1274                  {yyySSALspace[yyyNewSSALC].next = *pL;
   1275                   if ((*pL = yyyNewSSALC++) == yyySSALspaceSize)
   1276                      yyyHandleOverflow(yyySSALof);
   1277                  }
   1278                  else
   1279                  {iTemp = yyySSALCfreeList;
   1280                   yyySSALCfreeList = yyySSALspace[yyySSALCfreeList].next;
   1281                   yyySSALspace[iTemp].next = *pL;
   1282                   *pL = iTemp;
   1283                  }
   1284               yyySSALspace[*pL].attrbNum = yyyRCIL[nextP-1];
   1285              }
   1286              else
   1287              {if ((gnpDum = (yyyOxStackItem->node->cL)[yyyRCIL[nextP-2]])->prodNum != 0)
   1288                  {
   1289                   iTemp = yyyIIEL[yyyIIIEL[gnpDum->prodNum]] + yyyRCIL[nextP-1];
   1290                   yyySignalEnts(gnpDum,
   1291                                 yyyIEL[iTemp],
   1292                                 yyyIEL[iTemp+1]
   1293                                );
   1294                  }
   1295              }
   1296          }
   1297       nextP += 3;
   1298      }
   1299    if (!--intNodeCount)
   1300       {intNodeCount = yyyDECORfREQ;
   1301        yyyDecorate();
   1302       }
   1303   }
   1304 
   1305 
   1306 
   1307 void yyyGenLeaf(int nAttrbs,int typeNum,long startP,long stopP,YYSTYPE *yylval)
   1308   {yyyRCT *rcPdum;
   1309    yyySIT **yyyOxStackItem = &yylval->yyyOxAttrbs.yyyOxStackItem;
   1310    (*yyyOxStackItem) = (yyySIT *) malloc((size_t)sizeof(yyySIT));
   1311    if ((*yyyOxStackItem) == (yyySIT *) NULL)
   1312       yyyfatal("malloc error in ox yacc semantic stack space allocation\n");
   1313    (*yyyOxStackItem)->node =
   1314                           (yyyGNT *) malloc((size_t)sizeof(yyyGNT))
   1315                          ;
   1316    if ((*yyyOxStackItem)->node == (yyyGNT *) NULL)
   1317       yyyfatal("malloc error in ox node space allocation\n");
   1318    (*yyyOxStackItem)->solvedSAlist = yyyLambdaSSAL;
   1319    (*yyyOxStackItem)->node->parent.stackref = *yyyOxStackItem;
   1320    (*yyyOxStackItem)->node->parentIsStack = 1;
   1321    (*yyyOxStackItem)->node->cLlen = 0;
   1322    (*yyyOxStackItem)->node->cL = (yyyGNT **)NULL;
   1323    (*yyyOxStackItem)->node->refCountListLen = nAttrbs;
   1324    rcPdum = (*yyyOxStackItem)->node->refCountList =
   1325             (yyyRCT *) calloc((size_t)nAttrbs, (size_t)sizeof(yyyRCT));
   1326    if (rcPdum == (yyyRCT *) NULL)
   1327       yyyfatal("malloc error in ox reference count list space allocation\n");
   1328    while (startP < stopP) rcPdum[yyyLRCIL[startP++]] = 0;
   1329    (*yyyOxStackItem)->node->prodNum = 0;
   1330    (*yyyOxStackItem)->node->whichSym = 0;
   1331   }
   1332 
   1333 
   1334 
   1335 void yyyabort(void)
   1336   {yyyYok = 0;
   1337   }
   1338 
   1339 
   1340 
   1341 
   1342 
   1343 #define yyyLastProdNum 8
   1344 
   1345 
   1346 #define yyyNsorts 1
   1347 
   1348 
   1349 int yyyProdsInd[] = {
   1350    0,
   1351    0,   2,   6,  10,  14,  18,  22,  24,
   1352   26,
   1353 };
   1354 
   1355 
   1356 int yyyProds[][2] = {
   1357 { 116,   0},{ 462,   0},{ 462,   0},{ 462,   0},{ 412,   0},
   1358 { 462,   0},{ 462,   0},{ 462,   0},{ 420,   0},{ 462,   0},
   1359 { 462,   0},{ 462,   0},{ 452,   0},{ 462,   0},{ 462,   0},
   1360 { 462,   0},{ 436,   0},{ 462,   0},{ 462,   0},{ 396,   0},
   1361 { 462,   0},{ 404,   0},{ 462,   0},{ 619,   1},{ 462,   0},
   1362 { 567,   1},
   1363 };
   1364 
   1365 
   1366 int yyySortsInd[] = {
   1367   0,
   1368   0,
   1369   1,
   1370 };
   1371 
   1372 
   1373 int yyySorts[] = {
   1374   413,
   1375 };
   1376 
   1377 
   1378 
   1379 char *yyyStringTab[] = {
   1380 0,0,0,0,0,
   1381 0,0,0,0,0,
   1382 0,0,0,0,0,
   1383 0,0,0,0,0,
   1384 0,0,0,0,0,
   1385 0,0,0,0,0,
   1386 0,0,0,0,0,
   1387 0,0,0,0,0,
   1388 0,0,0,0,0,
   1389 0,0,0,0,0,
   1390 0,0,0,0,0,
   1391 0,0,0,0,0,
   1392 0,0,0,0,0,
   1393 0,0,0,0,0,
   1394 0,0,0,0,0,
   1395 0,0,0,0,0,
   1396 0,0,0,0,0,
   1397 0,0,0,0,0,
   1398 0,0,0,0,0,
   1399 0,0,0,0,0,
   1400 0,0,0,0,0,
   1401 0,0,0,0,0,
   1402 0,0,0,0,0,
   1403 0,"s",0,0,0,
   1404 0,0,"y",0,0,
   1405 0,0,0,0,0,
   1406 0,0,0,0,0,
   1407 0,0,0,0,0,
   1408 0,0,0,0,0,
   1409 0,0,0,0,0,
   1410 0,0,0,0,0,
   1411 0,0,0,0,0,
   1412 0,0,0,0,0,
   1413 0,0,0,0,0,
   1414 0,0,0,0,0,
   1415 0,0,0,0,0,
   1416 0,0,0,0,0,
   1417 0,0,0,0,0,
   1418 0,0,0,0,0,
   1419 0,0,0,0,0,
   1420 0,0,0,0,0,
   1421 0,0,0,0,0,
   1422 0,0,0,0,0,
   1423 0,0,0,0,0,
   1424 0,0,0,0,0,
   1425 0,0,0,0,0,
   1426 0,0,0,0,0,
   1427 0,0,0,0,0,
   1428 0,0,0,0,0,
   1429 0,0,0,0,0,
   1430 0,0,0,0,0,
   1431 0,0,0,0,0,
   1432 0,0,0,0,0,
   1433 0,0,0,0,0,
   1434 0,0,0,0,0,
   1435 0,0,0,0,0,
   1436 0,0,0,0,0,
   1437 0,0,0,0,0,
   1438 0,0,0,0,0,
   1439 0,0,0,0,0,
   1440 0,0,0,0,0,
   1441 0,0,0,0,0,
   1442 0,0,0,0,0,
   1443 0,0,0,0,0,
   1444 0,0,0,0,0,
   1445 0,"LRpre",0,0,0,
   1446 0,0,0,0,0,
   1447 0,0,0,0,0,
   1448 0,0,0,0,0,
   1449 0,0,0,0,0,
   1450 0,0,0,0,0,
   1451 0,0,0,0,0,
   1452 0,0,0,0,0,
   1453 0,0,0,0,0,
   1454 0,0,0,0,0,
   1455 0,0,0,0,0,
   1456 0,0,0,0,0,
   1457 0,0,0,0,0,
   1458 0,0,0,0,0,
   1459 0,"'('",0,0,0,
   1460 0,0,0,0,"')'",
   1461 0,0,0,0,0,
   1462 0,0,"'*'","lexeme",0,
   1463 0,0,0,0,0,
   1464 "'+'",0,0,0,0,
   1465 0,0,0,0,0,
   1466 0,0,0,0,0,
   1467 0,"'-'",0,0,0,
   1468 0,0,0,0,0,
   1469 0,0,0,0,0,
   1470 0,0,"'/'",0,0,
   1471 0,0,0,0,0,
   1472 0,0,"expr",0,0,
   1473 0,0,0,0,0,
   1474 0,0,0,0,0,
   1475 0,"printf",0,0,0,
   1476 0,0,0,0,0,
   1477 0,0,0,0,0,
   1478 0,0,0,0,0,
   1479 0,0,0,0,0,
   1480 0,0,0,0,0,
   1481 0,0,0,0,0,
   1482 0,0,0,0,0,
   1483 0,0,0,0,0,
   1484 0,0,0,0,0,
   1485 0,0,0,0,0,
   1486 0,0,0,0,0,
   1487 0,0,0,0,0,
   1488 0,0,0,0,0,
   1489 0,0,0,0,0,
   1490 0,0,0,0,0,
   1491 0,0,0,0,0,
   1492 0,0,0,0,0,
   1493 0,0,"CONST","LRpost",0,
   1494 0,0,0,0,0,
   1495 0,0,0,0,0,
   1496 0,0,0,0,0,
   1497 0,0,0,0,0,
   1498 0,0,0,0,0,
   1499 0,0,0,0,0,
   1500 0,0,0,0,0,
   1501 0,0,0,0,0,
   1502 0,0,0,0,0,
   1503 0,0,0,0,"ID",
   1504 0,0,0,0,0,
   1505 0,0,0,0,0,
   1506 0,0,0,0,0,
   1507 0,0,0,0,0,
   1508 0,0,0,0,0,
   1509 0,0,0,0,0,
   1510 0,0,0,0,0,
   1511 0,0,0,0,0,
   1512 0,0,0,0,0,
   1513 0,0,0,0,0,
   1514 0,0,0,0,0,
   1515 0,0,0,0,0,
   1516 0,0,0,0,0,
   1517 0,0,0,0,0,
   1518 0,0,0,0,0,
   1519 0,0,0,0,0,
   1520 0,0,0,0,0,
   1521 0,0,0,0,0,
   1522 0,0,0,0,0,
   1523 0,0,0,0,0,
   1524 0,0,0,0,0,
   1525 0,0,0,0,0,
   1526 0,0,0,0,0,
   1527 0,0,0,0,0,
   1528 0,0,0,0,0,
   1529 0,0,0,0,0,
   1530 0,0,0,0,0,
   1531 0,0,0,0,0,
   1532 0,0,0,0,0,
   1533 0,0,0,0,0,
   1534 0,0,0,0,0,
   1535 0,0,0,0,0,
   1536 0,0,0,0,0,
   1537 0,0,0,0,0,
   1538 0,0,0,0,0,
   1539 0,0,0,0,0,
   1540 0,0,0,0,0,
   1541 0,0,0,0,0,
   1542 0,0,0,0,0,
   1543 0,0,0,0,0,
   1544 0,0,0,0,0,
   1545 0,0,0,0,0,
   1546 0,0,0,0,0,
   1547 0,0,0,0,0,
   1548 0,0,0,0,0,
   1549 0,0,0,0,0,
   1550 0,0,0,0,0,
   1551 0,0,0,0,0,
   1552 0,0,0,0,0,
   1553 0,0,0,0,0,
   1554 0,0,0,0,0,
   1555 0,0,0,0,0,
   1556 0,0,0,0,0,
   1557 0,0,0,0,0,
   1558 0,0,0,0,0,
   1559 0,0,0,0,0,
   1560 0,0,0,0,0,
   1561 0,0,0,0,0,
   1562 0,0,0,0,0,
   1563 0,0,0,0,0,
   1564 0,0,0,0,0,
   1565 0,0,0,0,0,
   1566 0,0,0,0,0,
   1567 0,0,0,0,0,
   1568 0,0,0,0,0,
   1569 0,0,0,0,0,
   1570 0,0,0,0,0,
   1571 0,0,0,0,0,
   1572 0,0,0,0,0,
   1573 0,0,0,0,0,
   1574 0,0,0,0,0,
   1575 0,0,0,0,0,
   1576 0,0,0,0,0,
   1577 0,0,0,0,0,
   1578 0,0,0,0,0,
   1579 0,0,0,0,0,
   1580 0,0,0,0,0,
   1581 0,0,0,0,0,
   1582 0,0,0,0,0,
   1583 0,0,0,0,0,
   1584 0,0,0,0,0,
   1585 0,0,0,0,0,
   1586 0,0,0,0,0,
   1587 0,0,0,0,0,
   1588 0,0,0,0,0,
   1589 0,0,0,0,0,
   1590 0,0,0,0,0,
   1591 0,0,0,0,0,
   1592 0,0,0,0,0,
   1593 0,0,0,0,0,
   1594 0,0,0,0,0,
   1595 0,0,0,0,0,
   1596 0,0,0,0,0,
   1597 0,0,0,0,0,
   1598 0,0,0,0,0,
   1599 0,0,0,0,0,
   1600 0,0,0,0,0,
   1601 0,0,0,0,0,
   1602 0,0,0,0,0,
   1603 0,0,0,0,0,
   1604 0,0,0,0,0,
   1605 0,0,0,0,0,
   1606 0,0,0,0,0,
   1607 0,0,0,0,0,
   1608 0,0,0,0,0,
   1609 0,0,0,0,0,
   1610 0,0,0,0,0,
   1611 0,0,0,0,0,
   1612 0,0,0,0,0,
   1613 0,0,0,0,0,
   1614 0,0,0,0,0,
   1615 0,0,0,0,0,
   1616 0,0,0,0,0,
   1617 0,0,0,0,0,
   1618 0,0,0,0,0,
   1619 0,0,0,0,0,
   1620 0,0,0,0,0,
   1621 0,0,0,0,0,
   1622 0,0,0,0,0,
   1623 0,0,0,0,0,
   1624 0,0,0,0,0,
   1625 0,0,0,0,0,
   1626 0,
   1627 };
   1628 
   1629 
   1630 
   1631 #define yyySizeofProd(num) (yyyProdsInd[(num)+1] - yyyProdsInd[(num)])
   1632 
   1633 #define yyyGSoccurStr(prodNum,symPos) \
   1634    (yyyStringTab[yyyProds[yyyProdsInd[(prodNum)] + (symPos)][0]])
   1635 
   1636 #define yyySizeofSort(num) (yyySortsInd[(num)+1] - yyySortsInd[(num)])
   1637 
   1638 #define yyySortOf(prodNum,symPos) \
   1639   (yyyProds[yyyProdsInd[(prodNum)] + (symPos)][1])
   1640 
   1641 #define yyyAttrbStr(prodNum,symPos,attrbNum)                      \
   1642   (yyyStringTab[yyySorts[yyySortsInd[yyySortOf(prodNum,symPos)] + \
   1643                          (attrbNum)                               \
   1644                         ]                                         \
   1645                ]                                                  \
   1646   )
   1647 
   1648 
   1649 
   1650 void yyyShowProd(int i)
   1651   {int j,nSyms;
   1652 
   1653    nSyms = yyySizeofProd(i);
   1654    for (j=0; j<nSyms; j++)
   1655      {
   1656       fprintf(stderr,"%s",yyyGSoccurStr(i,j));
   1657       if (j == 0) fputs(" : ",stderr); else putc(' ',stderr);
   1658      }
   1659    fputs(";\n",stderr);
   1660   }
   1661 
   1662 
   1663 
   1664 void yyyShowProds()
   1665   {int i; for (i=1; i<=yyyLastProdNum; i++) yyyShowProd(i);}
   1666 
   1667 
   1668 
   1669 void yyyShowSymsAndSorts()
   1670   {int i;
   1671 
   1672    for (i=1; i<=yyyLastProdNum; i++)
   1673      {int j, nSyms;
   1674 
   1675       fprintf(stderr,
   1676               "\n\n\n---------------------------------- %3.1d\n",i);
   1677       /* yyyShowProd(i); */
   1678       nSyms = yyySizeofProd(i);
   1679       for (j=0; j<nSyms; j++)
   1680         {int k, sortSize;
   1681 
   1682          fprintf(stderr,"%s\n",yyyGSoccurStr(i,j));
   1683          sortSize = yyySizeofSort(yyySortOf(i,j));
   1684          for (k=0; k<sortSize; k++)
   1685             fprintf(stderr,"  %s\n",yyyAttrbStr(i,j,k));
   1686          if (j == 0) fputs("->\n",stderr);
   1687               else
   1688               putc('\n',stderr);
   1689         }
   1690      }
   1691   }
   1692 
   1693 
   1694 
   1695 void yyyCheckNodeInstancesSolved(yyyGNT *np)
   1696   {int mysort,sortSize,i,prodNum,symPos,inTerminalNode;
   1697    int nUnsolvedInsts = 0;
   1698 
   1699    if (np->prodNum != 0)
   1700      {inTerminalNode = 0;
   1701       prodNum = np->prodNum;
   1702       symPos = 0;
   1703      }
   1704    else
   1705      {inTerminalNode = 1;
   1706       prodNum = np->parent.noderef->prodNum;
   1707       symPos = np->whichSym;
   1708      }
   1709    mysort = yyySortOf(prodNum,symPos);
   1710    sortSize = yyySizeofSort(mysort);
   1711    for (i=0; i<sortSize; i++)
   1712      if ((np->refCountList)[i] != 0) nUnsolvedInsts += 1;
   1713    if (nUnsolvedInsts)
   1714      {fprintf(stderr,
   1715       "\nFound node that has %d unsolved attribute instance(s).\n",
   1716               nUnsolvedInsts
   1717              );
   1718       fprintf(stderr,"Node is labeled \"%s\".\n",
   1719              yyyGSoccurStr(prodNum,symPos));
   1720       if (inTerminalNode)
   1721         {fputs("Node is terminal.  Its parent production is:\n  ",stderr);
   1722          yyyShowProd(prodNum);
   1723         }
   1724       else
   1725         {fputs("Node is nonterminal.  ",stderr);
   1726          if (!(np->parentIsStack))
   1727            {fprintf(stderr,
   1728                     "Node is %dth child in its parent production:\n  ",
   1729                    np->whichSym
   1730                   );
   1731             yyyShowProd(np->parent.noderef->prodNum);
   1732            }
   1733          fputs("Node is on left hand side of this production:\n  ",stderr);
   1734          yyyShowProd(np->prodNum);
   1735         }
   1736       fputs("The following instances are unsolved:\n",stderr);
   1737       for (i=0; i<sortSize; i++)
   1738         if ((np->refCountList)[i] != 0)
   1739           fprintf(stderr,"     %-16s still has %1d dependencies.\n",
   1740                   yyyAttrbStr(prodNum,symPos,i),(np->refCountList)[i]);
   1741      }
   1742   }
   1743 
   1744 
   1745 
   1746 void yyyCheckUnsolvedInstTrav(yyyGNT *pNode,long *nNZrc,long *cycleSum)
   1747   {yyyGNT **yyyCLpdum;
   1748    yyyRCT *rcp;
   1749    int i;
   1750 
   1751    /* visit the refCountList of each node in the tree, and sum the non-zero refCounts */
   1752    rcp = pNode->refCountList;
   1753    i = pNode->refCountListLen;
   1754    while (i--)
   1755       if (*rcp++) {*cycleSum += *(rcp - 1); (*nNZrc)++;}
   1756    yyyCLpdum = pNode->cL;
   1757    i = pNode->cLlen;
   1758    while (i--)
   1759      {
   1760       yyyCheckUnsolvedInstTrav(*yyyCLpdum,nNZrc,cycleSum);
   1761       yyyCLpdum++;
   1762      }
   1763   }
   1764 
   1765 
   1766 
   1767 void yyyUnsolvedInstSearchTravAux(yyyGNT *pNode)
   1768   {yyyGNT **yyyCLpdum;
   1769    int i;
   1770 
   1771    yyyCheckNodeInstancesSolved(pNode);
   1772    yyyCLpdum = pNode->cL;
   1773    i = pNode->cLlen;
   1774    while (i--)
   1775      {
   1776       yyyUnsolvedInstSearchTravAux(*yyyCLpdum);
   1777       yyyCLpdum++;
   1778      }
   1779   }
   1780 
   1781 
   1782 
   1783 void yyyUnsolvedInstSearchTrav(yyyGNT *pNode)
   1784   {yyyGNT **yyyCLpdum;
   1785    int i;
   1786 
   1787    yyyCLpdum = pNode->cL;
   1788    i = pNode->cLlen;
   1789    while (i--)
   1790      {
   1791       yyyUnsolvedInstSearchTravAux(*yyyCLpdum);
   1792       yyyCLpdum++;
   1793      }
   1794   }
   1795 
   1796 
   1797 
   1798 #line 1797 "expr.oxout.tab.c"
   1799 
   1800 /* For use in generated program */
   1801 #define yydepth (int)(yystack.s_mark - yystack.s_base)
   1802 #if YYBTYACC
   1803 #define yytrial (yyps->save)
   1804 #endif /* YYBTYACC */
   1805 
   1806 #if YYDEBUG
   1807 #include <stdio.h>	/* needed for printf */
   1808 #endif
   1809 
   1810 #include <stdlib.h>	/* needed for malloc, etc */
   1811 #include <string.h>	/* needed for memset */
   1812 
   1813 /* allocate initial stack or double stack size, up to YYMAXDEPTH */
   1814 static int yygrowstack(YYSTACKDATA *data)
   1815 {
   1816     int i;
   1817     unsigned newsize;
   1818     YYINT *newss;
   1819     YYSTYPE *newvs;
   1820 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1821     YYLTYPE *newps;
   1822 #endif
   1823 
   1824     if ((newsize = data->stacksize) == 0)
   1825         newsize = YYINITSTACKSIZE;
   1826     else if (newsize >= YYMAXDEPTH)
   1827         return YYENOMEM;
   1828     else if ((newsize *= 2) > YYMAXDEPTH)
   1829         newsize = YYMAXDEPTH;
   1830 
   1831     i = (int) (data->s_mark - data->s_base);
   1832     newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss));
   1833     if (newss == 0)
   1834         return YYENOMEM;
   1835 
   1836     data->s_base = newss;
   1837     data->s_mark = newss + i;
   1838 
   1839     newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
   1840     if (newvs == 0)
   1841         return YYENOMEM;
   1842 
   1843     data->l_base = newvs;
   1844     data->l_mark = newvs + i;
   1845 
   1846 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1847     newps = (YYLTYPE *)realloc(data->p_base, newsize * sizeof(*newps));
   1848     if (newps == 0)
   1849         return YYENOMEM;
   1850 
   1851     data->p_base = newps;
   1852     data->p_mark = newps + i;
   1853 #endif
   1854 
   1855     data->stacksize = newsize;
   1856     data->s_last = data->s_base + newsize - 1;
   1857 
   1858 #if YYDEBUG
   1859     if (yydebug)
   1860         fprintf(stderr, "%sdebug: stack size increased to %d\n", YYPREFIX, newsize);
   1861 #endif
   1862     return 0;
   1863 }
   1864 
   1865 #if YYPURE || defined(YY_NO_LEAKS)
   1866 static void yyfreestack(YYSTACKDATA *data)
   1867 {
   1868     free(data->s_base);
   1869     free(data->l_base);
   1870 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1871     free(data->p_base);
   1872 #endif
   1873     memset(data, 0, sizeof(*data));
   1874 }
   1875 #else
   1876 #define yyfreestack(data) /* nothing */
   1877 #endif /* YYPURE || defined(YY_NO_LEAKS) */
   1878 #if YYBTYACC
   1879 
   1880 static YYParseState *
   1881 yyNewState(unsigned size)
   1882 {
   1883     YYParseState *p = (YYParseState *) malloc(sizeof(YYParseState));
   1884     if (p == NULL) return NULL;
   1885 
   1886     p->yystack.stacksize = size;
   1887     if (size == 0)
   1888     {
   1889         p->yystack.s_base = NULL;
   1890         p->yystack.l_base = NULL;
   1891 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1892         p->yystack.p_base = NULL;
   1893 #endif
   1894         return p;
   1895     }
   1896     p->yystack.s_base    = (YYINT *) malloc(size * sizeof(YYINT));
   1897     if (p->yystack.s_base == NULL) return NULL;
   1898     p->yystack.l_base    = (YYSTYPE *) malloc(size * sizeof(YYSTYPE));
   1899     if (p->yystack.l_base == NULL) return NULL;
   1900     memset(p->yystack.l_base, 0, size * sizeof(YYSTYPE));
   1901 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1902     p->yystack.p_base    = (YYLTYPE *) malloc(size * sizeof(YYLTYPE));
   1903     if (p->yystack.p_base == NULL) return NULL;
   1904     memset(p->yystack.p_base, 0, size * sizeof(YYLTYPE));
   1905 #endif
   1906 
   1907     return p;
   1908 }
   1909 
   1910 static void
   1911 yyFreeState(YYParseState *p)
   1912 {
   1913     yyfreestack(&p->yystack);
   1914     free(p);
   1915 }
   1916 #endif /* YYBTYACC */
   1917 
   1918 #define YYABORT  goto yyabort
   1919 #define YYREJECT goto yyabort
   1920 #define YYACCEPT goto yyaccept
   1921 #define YYERROR  goto yyerrlab
   1922 #if YYBTYACC
   1923 #define YYVALID        do { if (yyps->save)            goto yyvalid; } while(0)
   1924 #define YYVALID_NESTED do { if (yyps->save && \
   1925                                 yyps->save->save == 0) goto yyvalid; } while(0)
   1926 #endif /* YYBTYACC */
   1927 
   1928 int
   1929 YYPARSE_DECL()
   1930 {
   1931     int yym, yyn, yystate, yyresult;
   1932 #if YYBTYACC
   1933     int yynewerrflag;
   1934     YYParseState *yyerrctx = NULL;
   1935 #endif /* YYBTYACC */
   1936 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1937     YYLTYPE  yyerror_loc_range[3]; /* position of error start/end (0 unused) */
   1938 #endif
   1939 #if YYDEBUG
   1940     const char *yys;
   1941 
   1942     if ((yys = getenv("YYDEBUG")) != 0)
   1943     {
   1944         yyn = *yys;
   1945         if (yyn >= '0' && yyn <= '9')
   1946             yydebug = yyn - '0';
   1947     }
   1948     if (yydebug)
   1949         fprintf(stderr, "%sdebug[<# of symbols on state stack>]\n", YYPREFIX);
   1950 #endif
   1951 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1952     memset(yyerror_loc_range, 0, sizeof(yyerror_loc_range));
   1953 #endif
   1954 
   1955 #if YYBTYACC
   1956     yyps = yyNewState(0); if (yyps == 0) goto yyenomem;
   1957     yyps->save = 0;
   1958 #endif /* YYBTYACC */
   1959     yym = 0;
   1960     yyn = 0;
   1961     yynerrs = 0;
   1962     yyerrflag = 0;
   1963     yychar = YYEMPTY;
   1964     yystate = 0;
   1965 
   1966 #if YYPURE
   1967     memset(&yystack, 0, sizeof(yystack));
   1968 #endif
   1969 
   1970     if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
   1971     yystack.s_mark = yystack.s_base;
   1972     yystack.l_mark = yystack.l_base;
   1973 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1974     yystack.p_mark = yystack.p_base;
   1975 #endif
   1976     yystate = 0;
   1977     *yystack.s_mark = 0;
   1978 
   1979 yyloop:
   1980     if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
   1981     if (yychar < 0)
   1982     {
   1983 #if YYBTYACC
   1984         do {
   1985         if (yylvp < yylve)
   1986         {
   1987             /* we're currently re-reading tokens */
   1988             yylval = *yylvp++;
   1989 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1990             yylloc = *yylpp++;
   1991 #endif
   1992             yychar = *yylexp++;
   1993             break;
   1994         }
   1995         if (yyps->save)
   1996         {
   1997             /* in trial mode; save scanner results for future parse attempts */
   1998             if (yylvp == yylvlim)
   1999             {   /* Enlarge lexical value queue */
   2000                 size_t p = (size_t) (yylvp - yylvals);
   2001                 size_t s = (size_t) (yylvlim - yylvals);
   2002 
   2003                 s += YYLVQUEUEGROWTH;
   2004                 if ((yylexemes = (YYINT *)realloc(yylexemes, s * sizeof(YYINT))) == NULL) goto yyenomem;
   2005                 if ((yylvals   = (YYSTYPE *)realloc(yylvals, s * sizeof(YYSTYPE))) == NULL) goto yyenomem;
   2006 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2007                 if ((yylpsns   = (YYLTYPE *)realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL) goto yyenomem;
   2008 #endif
   2009                 yylvp   = yylve = yylvals + p;
   2010                 yylvlim = yylvals + s;
   2011 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2012                 yylpp   = yylpe = yylpsns + p;
   2013                 yylplim = yylpsns + s;
   2014 #endif
   2015                 yylexp  = yylexemes + p;
   2016             }
   2017             *yylexp = (YYINT) YYLEX;
   2018             *yylvp++ = yylval;
   2019             yylve++;
   2020 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2021             *yylpp++ = yylloc;
   2022             yylpe++;
   2023 #endif
   2024             yychar = *yylexp++;
   2025             break;
   2026         }
   2027         /* normal operation, no conflict encountered */
   2028 #endif /* YYBTYACC */
   2029         yychar = YYLEX;
   2030 #if YYBTYACC
   2031         } while (0);
   2032 #endif /* YYBTYACC */
   2033         if (yychar < 0) yychar = YYEOF;
   2034 #if YYDEBUG
   2035         if (yydebug)
   2036         {
   2037             if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
   2038             fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)",
   2039                             YYDEBUGSTR, yydepth, yystate, yychar, yys);
   2040 #ifdef YYSTYPE_TOSTRING
   2041 #if YYBTYACC
   2042             if (!yytrial)
   2043 #endif /* YYBTYACC */
   2044                 fprintf(stderr, " <%s>", YYSTYPE_TOSTRING(yychar, yylval));
   2045 #endif
   2046             fputc('\n', stderr);
   2047         }
   2048 #endif
   2049     }
   2050 #if YYBTYACC
   2051 
   2052     /* Do we have a conflict? */
   2053     if (((yyn = yycindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
   2054         yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
   2055     {
   2056         YYINT ctry;
   2057 
   2058         if (yypath)
   2059         {
   2060             YYParseState *save;
   2061 #if YYDEBUG
   2062             if (yydebug)
   2063                 fprintf(stderr, "%s[%d]: CONFLICT in state %d: following successful trial parse\n",
   2064                                 YYDEBUGSTR, yydepth, yystate);
   2065 #endif
   2066             /* Switch to the next conflict context */
   2067             save = yypath;
   2068             yypath = save->save;
   2069             save->save = NULL;
   2070             ctry = save->ctry;
   2071             if (save->state != yystate) YYABORT;
   2072             yyFreeState(save);
   2073 
   2074         }
   2075         else
   2076         {
   2077 
   2078             /* Unresolved conflict - start/continue trial parse */
   2079             YYParseState *save;
   2080 #if YYDEBUG
   2081             if (yydebug)
   2082             {
   2083                 fprintf(stderr, "%s[%d]: CONFLICT in state %d. ", YYDEBUGSTR, yydepth, yystate);
   2084                 if (yyps->save)
   2085                     fputs("ALREADY in conflict, continuing trial parse.\n", stderr);
   2086                 else
   2087                     fputs("Starting trial parse.\n", stderr);
   2088             }
   2089 #endif
   2090             save                  = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));
   2091             if (save == NULL) goto yyenomem;
   2092             save->save            = yyps->save;
   2093             save->state           = yystate;
   2094             save->errflag         = yyerrflag;
   2095             save->yystack.s_mark  = save->yystack.s_base + (yystack.s_mark - yystack.s_base);
   2096             memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
   2097             save->yystack.l_mark  = save->yystack.l_base + (yystack.l_mark - yystack.l_base);
   2098             memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
   2099 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2100             save->yystack.p_mark  = save->yystack.p_base + (yystack.p_mark - yystack.p_base);
   2101             memcpy (save->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
   2102 #endif
   2103             ctry                  = yytable[yyn];
   2104             if (yyctable[ctry] == -1)
   2105             {
   2106 #if YYDEBUG
   2107                 if (yydebug && yychar >= YYEOF)
   2108                     fprintf(stderr, "%s[%d]: backtracking 1 token\n", YYDEBUGSTR, yydepth);
   2109 #endif
   2110                 ctry++;
   2111             }
   2112             save->ctry = ctry;
   2113             if (yyps->save == NULL)
   2114             {
   2115                 /* If this is a first conflict in the stack, start saving lexemes */
   2116                 if (!yylexemes)
   2117                 {
   2118                     yylexemes = (YYINT *) malloc((YYLVQUEUEGROWTH) * sizeof(YYINT));
   2119                     if (yylexemes == NULL) goto yyenomem;
   2120                     yylvals   = (YYSTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYSTYPE));
   2121                     if (yylvals == NULL) goto yyenomem;
   2122                     yylvlim   = yylvals + YYLVQUEUEGROWTH;
   2123 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2124                     yylpsns   = (YYLTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYLTYPE));
   2125                     if (yylpsns == NULL) goto yyenomem;
   2126                     yylplim   = yylpsns + YYLVQUEUEGROWTH;
   2127 #endif
   2128                 }
   2129                 if (yylvp == yylve)
   2130                 {
   2131                     yylvp  = yylve = yylvals;
   2132 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2133                     yylpp  = yylpe = yylpsns;
   2134 #endif
   2135                     yylexp = yylexemes;
   2136                     if (yychar >= YYEOF)
   2137                     {
   2138                         *yylve++ = yylval;
   2139 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2140                         *yylpe++ = yylloc;
   2141 #endif
   2142                         *yylexp  = (YYINT) yychar;
   2143                         yychar   = YYEMPTY;
   2144                     }
   2145                 }
   2146             }
   2147             if (yychar >= YYEOF)
   2148             {
   2149                 yylvp--;
   2150 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2151                 yylpp--;
   2152 #endif
   2153                 yylexp--;
   2154                 yychar = YYEMPTY;
   2155             }
   2156             save->lexeme = (int) (yylvp - yylvals);
   2157             yyps->save   = save;
   2158         }
   2159         if (yytable[yyn] == ctry)
   2160         {
   2161 #if YYDEBUG
   2162             if (yydebug)
   2163                 fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n",
   2164                                 YYDEBUGSTR, yydepth, yystate, yyctable[ctry]);
   2165 #endif
   2166             if (yychar < 0)
   2167             {
   2168                 yylvp++;
   2169 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2170                 yylpp++;
   2171 #endif
   2172                 yylexp++;
   2173             }
   2174             if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)
   2175                 goto yyoverflow;
   2176             yystate = yyctable[ctry];
   2177             *++yystack.s_mark = (YYINT) yystate;
   2178             *++yystack.l_mark = yylval;
   2179 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2180             *++yystack.p_mark = yylloc;
   2181 #endif
   2182             yychar  = YYEMPTY;
   2183             if (yyerrflag > 0) --yyerrflag;
   2184             goto yyloop;
   2185         }
   2186         else
   2187         {
   2188             yyn = yyctable[ctry];
   2189             goto yyreduce;
   2190         }
   2191     } /* End of code dealing with conflicts */
   2192 #endif /* YYBTYACC */
   2193     if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
   2194             yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
   2195     {
   2196 #if YYDEBUG
   2197         if (yydebug)
   2198             fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n",
   2199                             YYDEBUGSTR, yydepth, yystate, yytable[yyn]);
   2200 #endif
   2201         if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
   2202         yystate = yytable[yyn];
   2203         *++yystack.s_mark = yytable[yyn];
   2204         *++yystack.l_mark = yylval;
   2205 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2206         *++yystack.p_mark = yylloc;
   2207 #endif
   2208         yychar = YYEMPTY;
   2209         if (yyerrflag > 0)  --yyerrflag;
   2210         goto yyloop;
   2211     }
   2212     if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
   2213             yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
   2214     {
   2215         yyn = yytable[yyn];
   2216         goto yyreduce;
   2217     }
   2218     if (yyerrflag != 0) goto yyinrecovery;
   2219 #if YYBTYACC
   2220 
   2221     yynewerrflag = 1;
   2222     goto yyerrhandler;
   2223     goto yyerrlab; /* redundant goto avoids 'unused label' warning */
   2224 
   2225 yyerrlab:
   2226     /* explicit YYERROR from an action -- pop the rhs of the rule reduced
   2227      * before looking for error recovery */
   2228     yystack.s_mark -= yym;
   2229     yystate = *yystack.s_mark;
   2230     yystack.l_mark -= yym;
   2231 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2232     yystack.p_mark -= yym;
   2233 #endif
   2234 
   2235     yynewerrflag = 0;
   2236 yyerrhandler:
   2237     while (yyps->save)
   2238     {
   2239         int ctry;
   2240         YYParseState *save = yyps->save;
   2241 #if YYDEBUG
   2242         if (yydebug)
   2243             fprintf(stderr, "%s[%d]: ERROR in state %d, CONFLICT BACKTRACKING to state %d, %d tokens\n",
   2244                             YYDEBUGSTR, yydepth, yystate, yyps->save->state,
   2245                     (int)(yylvp - yylvals - yyps->save->lexeme));
   2246 #endif
   2247         /* Memorize most forward-looking error state in case it's really an error. */
   2248         if (yyerrctx == NULL || yyerrctx->lexeme < yylvp - yylvals)
   2249         {
   2250             /* Free old saved error context state */
   2251             if (yyerrctx) yyFreeState(yyerrctx);
   2252             /* Create and fill out new saved error context state */
   2253             yyerrctx                 = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));
   2254             if (yyerrctx == NULL) goto yyenomem;
   2255             yyerrctx->save           = yyps->save;
   2256             yyerrctx->state          = yystate;
   2257             yyerrctx->errflag        = yyerrflag;
   2258             yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base);
   2259             memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
   2260             yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base);
   2261             memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
   2262 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2263             yyerrctx->yystack.p_mark = yyerrctx->yystack.p_base + (yystack.p_mark - yystack.p_base);
   2264             memcpy (yyerrctx->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
   2265 #endif
   2266             yyerrctx->lexeme         = (int) (yylvp - yylvals);
   2267         }
   2268         yylvp          = yylvals   + save->lexeme;
   2269 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2270         yylpp          = yylpsns   + save->lexeme;
   2271 #endif
   2272         yylexp         = yylexemes + save->lexeme;
   2273         yychar         = YYEMPTY;
   2274         yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base);
   2275         memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
   2276         yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base);
   2277         memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
   2278 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2279         yystack.p_mark = yystack.p_base + (save->yystack.p_mark - save->yystack.p_base);
   2280         memcpy (yystack.p_base, save->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
   2281 #endif
   2282         ctry           = ++save->ctry;
   2283         yystate        = save->state;
   2284         /* We tried shift, try reduce now */
   2285         if ((yyn = yyctable[ctry]) >= 0) goto yyreduce;
   2286         yyps->save     = save->save;
   2287         save->save     = NULL;
   2288         yyFreeState(save);
   2289 
   2290         /* Nothing left on the stack -- error */
   2291         if (!yyps->save)
   2292         {
   2293 #if YYDEBUG
   2294             if (yydebug)
   2295                 fprintf(stderr, "%sdebug[%d,trial]: trial parse FAILED, entering ERROR mode\n",
   2296                                 YYPREFIX, yydepth);
   2297 #endif
   2298             /* Restore state as it was in the most forward-advanced error */
   2299             yylvp          = yylvals   + yyerrctx->lexeme;
   2300 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2301             yylpp          = yylpsns   + yyerrctx->lexeme;
   2302 #endif
   2303             yylexp         = yylexemes + yyerrctx->lexeme;
   2304             yychar         = yylexp[-1];
   2305             yylval         = yylvp[-1];
   2306 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2307             yylloc         = yylpp[-1];
   2308 #endif
   2309             yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base);
   2310             memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
   2311             yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base);
   2312             memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
   2313 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2314             yystack.p_mark = yystack.p_base + (yyerrctx->yystack.p_mark - yyerrctx->yystack.p_base);
   2315             memcpy (yystack.p_base, yyerrctx->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
   2316 #endif
   2317             yystate        = yyerrctx->state;
   2318             yyFreeState(yyerrctx);
   2319             yyerrctx       = NULL;
   2320         }
   2321         yynewerrflag = 1;
   2322     }
   2323     if (yynewerrflag == 0) goto yyinrecovery;
   2324 #endif /* YYBTYACC */
   2325 
   2326     YYERROR_CALL("syntax error");
   2327 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2328     yyerror_loc_range[1] = yylloc; /* lookahead position is error start position */
   2329 #endif
   2330 
   2331 #if !YYBTYACC
   2332     goto yyerrlab; /* redundant goto avoids 'unused label' warning */
   2333 yyerrlab:
   2334 #endif
   2335     ++yynerrs;
   2336 
   2337 yyinrecovery:
   2338     if (yyerrflag < 3)
   2339     {
   2340         yyerrflag = 3;
   2341         for (;;)
   2342         {
   2343             if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 &&
   2344                     yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE)
   2345             {
   2346 #if YYDEBUG
   2347                 if (yydebug)
   2348                     fprintf(stderr, "%s[%d]: state %d, error recovery shifting to state %d\n",
   2349                                     YYDEBUGSTR, yydepth, *yystack.s_mark, yytable[yyn]);
   2350 #endif
   2351                 if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
   2352                 yystate = yytable[yyn];
   2353                 *++yystack.s_mark = yytable[yyn];
   2354                 *++yystack.l_mark = yylval;
   2355 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2356                 /* lookahead position is error end position */
   2357                 yyerror_loc_range[2] = yylloc;
   2358                 YYLLOC_DEFAULT(yyloc, yyerror_loc_range, 2); /* position of error span */
   2359                 *++yystack.p_mark = yyloc;
   2360 #endif
   2361                 goto yyloop;
   2362             }
   2363             else
   2364             {
   2365 #if YYDEBUG
   2366                 if (yydebug)
   2367                     fprintf(stderr, "%s[%d]: error recovery discarding state %d\n",
   2368                                     YYDEBUGSTR, yydepth, *yystack.s_mark);
   2369 #endif
   2370                 if (yystack.s_mark <= yystack.s_base) goto yyabort;
   2371 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2372                 /* the current TOS position is the error start position */
   2373                 yyerror_loc_range[1] = *yystack.p_mark;
   2374 #endif
   2375 #if defined(YYDESTRUCT_CALL)
   2376 #if YYBTYACC
   2377                 if (!yytrial)
   2378 #endif /* YYBTYACC */
   2379 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2380                     YYDESTRUCT_CALL("error: discarding state",
   2381                                     yystos[*yystack.s_mark], yystack.l_mark, yystack.p_mark);
   2382 #else
   2383                     YYDESTRUCT_CALL("error: discarding state",
   2384                                     yystos[*yystack.s_mark], yystack.l_mark);
   2385 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
   2386 #endif /* defined(YYDESTRUCT_CALL) */
   2387                 --yystack.s_mark;
   2388                 --yystack.l_mark;
   2389 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2390                 --yystack.p_mark;
   2391 #endif
   2392             }
   2393         }
   2394     }
   2395     else
   2396     {
   2397         if (yychar == YYEOF) goto yyabort;
   2398 #if YYDEBUG
   2399         if (yydebug)
   2400         {
   2401             if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
   2402             fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n",
   2403                             YYDEBUGSTR, yydepth, yystate, yychar, yys);
   2404         }
   2405 #endif
   2406 #if defined(YYDESTRUCT_CALL)
   2407 #if YYBTYACC
   2408         if (!yytrial)
   2409 #endif /* YYBTYACC */
   2410 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2411             YYDESTRUCT_CALL("error: discarding token", yychar, &yylval, &yylloc);
   2412 #else
   2413             YYDESTRUCT_CALL("error: discarding token", yychar, &yylval);
   2414 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
   2415 #endif /* defined(YYDESTRUCT_CALL) */
   2416         yychar = YYEMPTY;
   2417         goto yyloop;
   2418     }
   2419 
   2420 yyreduce:
   2421     yym = yylen[yyn];
   2422 #if YYDEBUG
   2423     if (yydebug)
   2424     {
   2425         fprintf(stderr, "%s[%d]: state %d, reducing by rule %d (%s)",
   2426                         YYDEBUGSTR, yydepth, yystate, yyn, yyrule[yyn]);
   2427 #ifdef YYSTYPE_TOSTRING
   2428 #if YYBTYACC
   2429         if (!yytrial)
   2430 #endif /* YYBTYACC */
   2431             if (yym > 0)
   2432             {
   2433                 int i;
   2434                 fputc('<', stderr);
   2435                 for (i = yym; i > 0; i--)
   2436                 {
   2437                     if (i != yym) fputs(", ", stderr);
   2438                     fputs(YYSTYPE_TOSTRING(yystos[yystack.s_mark[1-i]],
   2439                                            yystack.l_mark[1-i]), stderr);
   2440                 }
   2441                 fputc('>', stderr);
   2442             }
   2443 #endif
   2444         fputc('\n', stderr);
   2445     }
   2446 #endif
   2447     if (yym > 0)
   2448         yyval = yystack.l_mark[1-yym];
   2449     else
   2450         memset(&yyval, 0, sizeof yyval);
   2451 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2452 
   2453     /* Perform position reduction */
   2454     memset(&yyloc, 0, sizeof(yyloc));
   2455 #if YYBTYACC
   2456     if (!yytrial)
   2457 #endif /* YYBTYACC */
   2458     {
   2459         YYLLOC_DEFAULT(yyloc, &yystack.p_mark[-yym], yym);
   2460         /* just in case YYERROR is invoked within the action, save
   2461            the start of the rhs as the error start position */
   2462         yyerror_loc_range[1] = yystack.p_mark[1-yym];
   2463     }
   2464 #endif
   2465 
   2466     switch (yyn)
   2467     {
   2468 case 1:
   2469 #line 64 "expr.oxout.y"
   2470 	{yyyYoxInit();}
   2471 break;
   2472 case 2:
   2473 #line 66 "expr.oxout.y"
   2474 	{
   2475 		 yyyDecorate(); yyyExecuteRRsection(yystack.l_mark[0].yyyOxAttrbs.yyyOxStackItem->node);
   2476 		}
   2477 break;
   2478 case 3:
   2479 #line 73 "expr.oxout.y"
   2480 	{if(yyyYok){
   2481 yyyGenIntNode(1,1,0,&yyval.yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);
   2482 yyyAdjustINRC(1,1,0,0,&yyval.yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);}}
   2483 break;
   2484 case 4:
   2485 #line 80 "expr.oxout.y"
   2486 	{if(yyyYok){
   2487 yyyGenIntNode(2,3,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);
   2488 yyyAdjustINRC(2,3,0,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);}}
   2489 break;
   2490 case 5:
   2491 #line 87 "expr.oxout.y"
   2492 	{if(yyyYok){
   2493 yyyGenIntNode(3,3,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);
   2494 yyyAdjustINRC(3,3,0,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);}}
   2495 break;
   2496 case 6:
   2497 #line 94 "expr.oxout.y"
   2498 	{if(yyyYok){
   2499 yyyGenIntNode(4,3,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);
   2500 yyyAdjustINRC(4,3,0,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);}}
   2501 break;
   2502 case 7:
   2503 #line 101 "expr.oxout.y"
   2504 	{if(yyyYok){
   2505 yyyGenIntNode(5,3,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);
   2506 yyyAdjustINRC(5,3,0,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);}}
   2507 break;
   2508 case 8:
   2509 #line 108 "expr.oxout.y"
   2510 	{if(yyyYok){
   2511 yyyGenIntNode(6,3,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);
   2512 yyyAdjustINRC(6,3,0,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);}}
   2513 break;
   2514 case 9:
   2515 #line 114 "expr.oxout.y"
   2516 	{if(yyyYok){
   2517 yyyGenIntNode(7,1,0,&yyval.yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);
   2518 yyyAdjustINRC(7,1,0,0,&yyval.yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);}}
   2519 break;
   2520 case 10:
   2521 #line 121 "expr.oxout.y"
   2522 	{if(yyyYok){
   2523 yyyGenIntNode(8,1,0,&yyval.yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);
   2524 yyyAdjustINRC(8,1,0,0,&yyval.yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);}}
   2525 break;
   2526 #line 2525 "expr.oxout.tab.c"
   2527     default:
   2528         break;
   2529     }
   2530     yystack.s_mark -= yym;
   2531     yystate = *yystack.s_mark;
   2532     yystack.l_mark -= yym;
   2533 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2534     yystack.p_mark -= yym;
   2535 #endif
   2536     yym = yylhs[yyn];
   2537     if (yystate == 0 && yym == 0)
   2538     {
   2539 #if YYDEBUG
   2540         if (yydebug)
   2541         {
   2542             fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);
   2543 #ifdef YYSTYPE_TOSTRING
   2544 #if YYBTYACC
   2545             if (!yytrial)
   2546 #endif /* YYBTYACC */
   2547                 fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[YYFINAL], yyval));
   2548 #endif
   2549             fprintf(stderr, "shifting from state 0 to final state %d\n", YYFINAL);
   2550         }
   2551 #endif
   2552         yystate = YYFINAL;
   2553         *++yystack.s_mark = YYFINAL;
   2554         *++yystack.l_mark = yyval;
   2555 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2556         *++yystack.p_mark = yyloc;
   2557 #endif
   2558         if (yychar < 0)
   2559         {
   2560 #if YYBTYACC
   2561             do {
   2562             if (yylvp < yylve)
   2563             {
   2564                 /* we're currently re-reading tokens */
   2565                 yylval = *yylvp++;
   2566 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2567                 yylloc = *yylpp++;
   2568 #endif
   2569                 yychar = *yylexp++;
   2570                 break;
   2571             }
   2572             if (yyps->save)
   2573             {
   2574                 /* in trial mode; save scanner results for future parse attempts */
   2575                 if (yylvp == yylvlim)
   2576                 {   /* Enlarge lexical value queue */
   2577                     size_t p = (size_t) (yylvp - yylvals);
   2578                     size_t s = (size_t) (yylvlim - yylvals);
   2579 
   2580                     s += YYLVQUEUEGROWTH;
   2581                     if ((yylexemes = (YYINT *)realloc(yylexemes, s * sizeof(YYINT))) == NULL)
   2582                         goto yyenomem;
   2583                     if ((yylvals   = (YYSTYPE *)realloc(yylvals, s * sizeof(YYSTYPE))) == NULL)
   2584                         goto yyenomem;
   2585 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2586                     if ((yylpsns   = (YYLTYPE *)realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL)
   2587                         goto yyenomem;
   2588 #endif
   2589                     yylvp   = yylve = yylvals + p;
   2590                     yylvlim = yylvals + s;
   2591 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2592                     yylpp   = yylpe = yylpsns + p;
   2593                     yylplim = yylpsns + s;
   2594 #endif
   2595                     yylexp  = yylexemes + p;
   2596                 }
   2597                 *yylexp = (YYINT) YYLEX;
   2598                 *yylvp++ = yylval;
   2599                 yylve++;
   2600 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2601                 *yylpp++ = yylloc;
   2602                 yylpe++;
   2603 #endif
   2604                 yychar = *yylexp++;
   2605                 break;
   2606             }
   2607             /* normal operation, no conflict encountered */
   2608 #endif /* YYBTYACC */
   2609             yychar = YYLEX;
   2610 #if YYBTYACC
   2611             } while (0);
   2612 #endif /* YYBTYACC */
   2613             if (yychar < 0) yychar = YYEOF;
   2614 #if YYDEBUG
   2615             if (yydebug)
   2616             {
   2617                 if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
   2618                 fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n",
   2619                                 YYDEBUGSTR, yydepth, YYFINAL, yychar, yys);
   2620             }
   2621 #endif
   2622         }
   2623         if (yychar == YYEOF) goto yyaccept;
   2624         goto yyloop;
   2625     }
   2626     if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 &&
   2627             yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate)
   2628         yystate = yytable[yyn];
   2629     else
   2630         yystate = yydgoto[yym];
   2631 #if YYDEBUG
   2632     if (yydebug)
   2633     {
   2634         fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);
   2635 #ifdef YYSTYPE_TOSTRING
   2636 #if YYBTYACC
   2637         if (!yytrial)
   2638 #endif /* YYBTYACC */
   2639             fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[yystate], yyval));
   2640 #endif
   2641         fprintf(stderr, "shifting from state %d to state %d\n", *yystack.s_mark, yystate);
   2642     }
   2643 #endif
   2644     if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
   2645     *++yystack.s_mark = (YYINT) yystate;
   2646     *++yystack.l_mark = yyval;
   2647 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2648     *++yystack.p_mark = yyloc;
   2649 #endif
   2650     goto yyloop;
   2651 #if YYBTYACC
   2652 
   2653     /* Reduction declares that this path is valid. Set yypath and do a full parse */
   2654 yyvalid:
   2655     if (yypath) YYABORT;
   2656     while (yyps->save)
   2657     {
   2658         YYParseState *save = yyps->save;
   2659         yyps->save = save->save;
   2660         save->save = yypath;
   2661         yypath = save;
   2662     }
   2663 #if YYDEBUG
   2664     if (yydebug)
   2665         fprintf(stderr, "%s[%d]: state %d, CONFLICT trial successful, backtracking to state %d, %d tokens\n",
   2666                         YYDEBUGSTR, yydepth, yystate, yypath->state, (int)(yylvp - yylvals - yypath->lexeme));
   2667 #endif
   2668     if (yyerrctx)
   2669     {
   2670         yyFreeState(yyerrctx);
   2671         yyerrctx = NULL;
   2672     }
   2673     yylvp          = yylvals + yypath->lexeme;
   2674 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2675     yylpp          = yylpsns + yypath->lexeme;
   2676 #endif
   2677     yylexp         = yylexemes + yypath->lexeme;
   2678     yychar         = YYEMPTY;
   2679     yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base);
   2680     memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
   2681     yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base);
   2682     memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
   2683 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2684     yystack.p_mark = yystack.p_base + (yypath->yystack.p_mark - yypath->yystack.p_base);
   2685     memcpy (yystack.p_base, yypath->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
   2686 #endif
   2687     yystate        = yypath->state;
   2688     goto yyloop;
   2689 #endif /* YYBTYACC */
   2690 
   2691 yyoverflow:
   2692     YYERROR_CALL("yacc stack overflow");
   2693 #if YYBTYACC
   2694     goto yyabort_nomem;
   2695 yyenomem:
   2696     YYERROR_CALL("memory exhausted");
   2697 yyabort_nomem:
   2698 #endif /* YYBTYACC */
   2699     yyresult = 2;
   2700     goto yyreturn;
   2701 
   2702 yyabort:
   2703     yyresult = 1;
   2704     goto yyreturn;
   2705 
   2706 yyaccept:
   2707 #if YYBTYACC
   2708     if (yyps->save) goto yyvalid;
   2709 #endif /* YYBTYACC */
   2710     yyresult = 0;
   2711 
   2712 yyreturn:
   2713 #if defined(YYDESTRUCT_CALL)
   2714     if (yychar != YYEOF && yychar != YYEMPTY)
   2715 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2716         YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval, &yylloc);
   2717 #else
   2718         YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval);
   2719 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
   2720 
   2721     {
   2722         YYSTYPE *pv;
   2723 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2724         YYLTYPE *pp;
   2725 
   2726         for (pv = yystack.l_base, pp = yystack.p_base; pv <= yystack.l_mark; ++pv, ++pp)
   2727              YYDESTRUCT_CALL("cleanup: discarding state",
   2728                              yystos[*(yystack.s_base + (pv - yystack.l_base))], pv, pp);
   2729 #else
   2730         for (pv = yystack.l_base; pv <= yystack.l_mark; ++pv)
   2731              YYDESTRUCT_CALL("cleanup: discarding state",
   2732                              yystos[*(yystack.s_base + (pv - yystack.l_base))], pv);
   2733 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
   2734     }
   2735 #endif /* defined(YYDESTRUCT_CALL) */
   2736 
   2737 #if YYBTYACC
   2738     if (yyerrctx)
   2739     {
   2740         yyFreeState(yyerrctx);
   2741         yyerrctx = NULL;
   2742     }
   2743     while (yyps)
   2744     {
   2745         YYParseState *save = yyps;
   2746         yyps = save->save;
   2747         save->save = NULL;
   2748         yyFreeState(save);
   2749     }
   2750     while (yypath)
   2751     {
   2752         YYParseState *save = yypath;
   2753         yypath = save->save;
   2754         save->save = NULL;
   2755         yyFreeState(save);
   2756     }
   2757 #endif /* YYBTYACC */
   2758     yyfreestack(&yystack);
   2759     return (yyresult);
   2760 }
   2761