Home | History | Annotate | Line # | Download | only in btyacc
ok_syntax1.tab.c revision 1.2.4.1
      1 /*	$NetBSD: ok_syntax1.tab.c,v 1.2.4.1 2017/07/18 18:09:43 snj 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    ok_syntax1_parse
     24 #endif /* yyparse */
     25 
     26 #ifndef yylex
     27 #define yylex      ok_syntax1_lex
     28 #endif /* yylex */
     29 
     30 #ifndef yyerror
     31 #define yyerror    ok_syntax1_error
     32 #endif /* yyerror */
     33 
     34 #ifndef yychar
     35 #define yychar     ok_syntax1_char
     36 #endif /* yychar */
     37 
     38 #ifndef yyval
     39 #define yyval      ok_syntax1_val
     40 #endif /* yyval */
     41 
     42 #ifndef yylval
     43 #define yylval     ok_syntax1_lval
     44 #endif /* yylval */
     45 
     46 #ifndef yydebug
     47 #define yydebug    ok_syntax1_debug
     48 #endif /* yydebug */
     49 
     50 #ifndef yynerrs
     51 #define yynerrs    ok_syntax1_nerrs
     52 #endif /* yynerrs */
     53 
     54 #ifndef yyerrflag
     55 #define yyerrflag  ok_syntax1_errflag
     56 #endif /* yyerrflag */
     57 
     58 #ifndef yylhs
     59 #define yylhs      ok_syntax1_lhs
     60 #endif /* yylhs */
     61 
     62 #ifndef yylen
     63 #define yylen      ok_syntax1_len
     64 #endif /* yylen */
     65 
     66 #ifndef yydefred
     67 #define yydefred   ok_syntax1_defred
     68 #endif /* yydefred */
     69 
     70 #ifndef yystos
     71 #define yystos     ok_syntax1_stos
     72 #endif /* yystos */
     73 
     74 #ifndef yydgoto
     75 #define yydgoto    ok_syntax1_dgoto
     76 #endif /* yydgoto */
     77 
     78 #ifndef yysindex
     79 #define yysindex   ok_syntax1_sindex
     80 #endif /* yysindex */
     81 
     82 #ifndef yyrindex
     83 #define yyrindex   ok_syntax1_rindex
     84 #endif /* yyrindex */
     85 
     86 #ifndef yygindex
     87 #define yygindex   ok_syntax1_gindex
     88 #endif /* yygindex */
     89 
     90 #ifndef yytable
     91 #define yytable    ok_syntax1_table
     92 #endif /* yytable */
     93 
     94 #ifndef yycheck
     95 #define yycheck    ok_syntax1_check
     96 #endif /* yycheck */
     97 
     98 #ifndef yyname
     99 #define yyname     ok_syntax1_name
    100 #endif /* yyname */
    101 
    102 #ifndef yyrule
    103 #define yyrule     ok_syntax1_rule
    104 #endif /* yyrule */
    105 
    106 #if YYBTYACC
    107 
    108 #ifndef yycindex
    109 #define yycindex   ok_syntax1_cindex
    110 #endif /* yycindex */
    111 
    112 #ifndef yyctable
    113 #define yyctable   ok_syntax1_ctable
    114 #endif /* yyctable */
    115 
    116 #endif /* YYBTYACC */
    117 
    118 #define YYPREFIX "ok_syntax1_"
    119 
    120 #define YYPURE 1
    121 
    122 #line 9 "ok_syntax1.y"
    123 # include <stdio.h>
    124 # include <ctype.h>
    125 
    126 #ifdef YYBISON
    127 #define YYSTYPE int
    128 #define YYLEX_PARAM base
    129 #define YYLEX_DECL() yylex(YYSTYPE *yylval, int *YYLEX_PARAM)
    130 #define YYERROR_DECL() yyerror(int regs[26], int *base, const char *s)
    131 int YYLEX_DECL();
    132 static void YYERROR_DECL();
    133 #endif
    134 
    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 43 "ok_syntax1.y"
    142 typedef union
    143 {
    144     char *	cval;
    145     int		ival;
    146     double	dval;
    147 } YYSTYPE;
    148 #endif /* !YYSTYPE_IS_DECLARED */
    149 #line 148 "ok_syntax1.tab.c"
    150 
    151 /* compatibility with bison */
    152 #ifdef YYPARSE_PARAM
    153 /* compatibility with FreeBSD */
    154 # ifdef YYPARSE_PARAM_TYPE
    155 #  define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
    156 # else
    157 #  define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
    158 # endif
    159 #else
    160 # define YYPARSE_DECL() yyparse(int regs[26], int *base)
    161 #endif
    162 
    163 /* Parameters sent to lex. */
    164 #ifdef YYLEX_PARAM
    165 # ifdef YYLEX_PARAM_TYPE
    166 #  define YYLEX_DECL() yylex(YYSTYPE *yylval, YYLEX_PARAM_TYPE YYLEX_PARAM)
    167 # else
    168 #  define YYLEX_DECL() yylex(YYSTYPE *yylval, void * YYLEX_PARAM)
    169 # endif
    170 # define YYLEX yylex(&yylval, YYLEX_PARAM)
    171 #else
    172 # define YYLEX_DECL() yylex(YYSTYPE *yylval, int *base)
    173 # define YYLEX yylex(&yylval, base)
    174 #endif
    175 
    176 /* Parameters sent to yyerror. */
    177 #ifndef YYERROR_DECL
    178 #define YYERROR_DECL() yyerror(int regs[26], int *base, const char *s)
    179 #endif
    180 #ifndef YYERROR_CALL
    181 #define YYERROR_CALL(msg) yyerror(regs, base, msg)
    182 #endif
    183 
    184 extern int YYPARSE_DECL();
    185 
    186 #define DIGIT 257
    187 #define LETTER 258
    188 #define OCT1 259
    189 #define HEX1 260
    190 #define HEX2 261
    191 #define HEX3 262
    192 #define STR1 263
    193 #define STR2 265
    194 #define BELL 266
    195 #define BS 267
    196 #define NL 268
    197 #define LF 269
    198 #define CR 270
    199 #define TAB 271
    200 #define VT 272
    201 #define UMINUS 273
    202 #define YYERRCODE 256
    203 typedef short YYINT;
    204 static const YYINT ok_syntax1_lhs[] = {                  -1,
    205     0,    0,    0,    1,    1,    2,    2,    2,    2,    2,
    206     2,    2,    2,    2,    2,    2,    3,    3,
    207 };
    208 static const YYINT ok_syntax1_len[] = {                   2,
    209     0,    3,    3,    1,    3,    3,    3,    3,    3,    3,
    210     3,    3,    3,    2,    1,    1,    1,    2,
    211 };
    212 static const YYINT ok_syntax1_defred[] = {                1,
    213     0,    0,   17,    0,    0,    0,    0,    0,    0,    3,
    214     0,   15,   14,    0,    2,    0,    0,    0,    0,    0,
    215     0,    0,   18,    0,    6,    0,    0,    0,    0,    9,
    216    10,   11,
    217 };
    218 #if defined(YYDESTRUCT_CALL) || defined(YYSTYPE_TOSTRING)
    219 static const YYINT ok_syntax1_stos[] = {                  0,
    220   275,  256,  257,  258,   45,   40,  276,  277,  278,   10,
    221    61,  258,  277,  277,   10,  124,   38,   43,   45,   42,
    222    47,   37,  257,  277,   41,  277,  277,  277,  277,  277,
    223   277,  277,
    224 };
    225 #endif /* YYDESTRUCT_CALL || YYSTYPE_TOSTRING */
    226 static const YYINT ok_syntax1_dgoto[] = {                 1,
    227     7,    8,    9,
    228 };
    229 static const YYINT ok_syntax1_sindex[] = {                0,
    230   -40,   -7,    0,  -55,  -38,  -38,    1,  -29, -247,    0,
    231   -38,    0,    0,   22,    0,  -38,  -38,  -38,  -38,  -38,
    232   -38,  -38,    0,  -29,    0,   51,   60,  -20,  -20,    0,
    233     0,    0,
    234 };
    235 static const YYINT ok_syntax1_rindex[] = {                0,
    236     0,    0,    0,    2,    0,    0,    0,    9,   -9,    0,
    237     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    238     0,    0,    0,   10,    0,   -6,   14,    5,   13,    0,
    239     0,    0,
    240 };
    241 #if YYBTYACC
    242 static const YYINT ok_syntax1_cindex[] = {                0,
    243     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    244     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    245     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    246     0,    0,
    247 };
    248 #endif
    249 static const YYINT ok_syntax1_gindex[] = {                0,
    250     0,   65,    0,
    251 };
    252 #define YYTABLESIZE 220
    253 static const YYINT ok_syntax1_table[] = {                 6,
    254    16,    6,   10,   13,    5,   11,    5,   22,   17,   23,
    255    15,   15,   20,   18,    7,   19,   22,   21,    4,    5,
    256     0,   20,    8,   12,    0,    0,   21,   16,   16,    0,
    257     0,   16,   16,   16,   13,   16,    0,   16,   15,   15,
    258     0,    0,    7,   15,   15,    7,   15,    7,   15,    7,
    259     8,   12,    0,    8,   12,    8,    0,    8,   22,   17,
    260     0,    0,   25,   20,   18,    0,   19,    0,   21,   13,
    261    14,    0,    0,    0,    0,   24,    0,    0,    0,    0,
    262    26,   27,   28,   29,   30,   31,   32,   22,   17,    0,
    263     0,    0,   20,   18,   16,   19,   22,   21,    0,    0,
    264     0,   20,   18,    0,   19,    0,   21,    0,    0,    0,
    265     0,    0,    0,    0,   16,    0,    0,   13,    0,    0,
    266     0,    0,    0,    0,    0,   15,    0,    0,    7,    0,
    267     0,    0,    0,    0,    0,    0,    8,   12,    0,    0,
    268     0,    0,    0,    0,    0,   16,    0,    0,    0,    0,
    269     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    270     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    271     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    272     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    273     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    274     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    275     0,    0,    0,    0,    0,    2,    3,    4,    3,   12,
    276 };
    277 static const YYINT ok_syntax1_check[] = {                40,
    278    10,   40,   10,   10,   45,   61,   45,   37,   38,  257,
    279    10,   10,   42,   43,   10,   45,   37,   47,   10,   10,
    280    -1,   42,   10,   10,   -1,   -1,   47,   37,   38,   -1,
    281    -1,   41,   42,   43,   41,   45,   -1,   47,   37,   38,
    282    -1,   -1,   38,   42,   43,   41,   45,   43,   47,   45,
    283    38,   38,   -1,   41,   41,   43,   -1,   45,   37,   38,
    284    -1,   -1,   41,   42,   43,   -1,   45,   -1,   47,    5,
    285     6,   -1,   -1,   -1,   -1,   11,   -1,   -1,   -1,   -1,
    286    16,   17,   18,   19,   20,   21,   22,   37,   38,   -1,
    287    -1,   -1,   42,   43,  124,   45,   37,   47,   -1,   -1,
    288    -1,   42,   43,   -1,   45,   -1,   47,   -1,   -1,   -1,
    289    -1,   -1,   -1,   -1,  124,   -1,   -1,  124,   -1,   -1,
    290    -1,   -1,   -1,   -1,   -1,  124,   -1,   -1,  124,   -1,
    291    -1,   -1,   -1,   -1,   -1,   -1,  124,  124,   -1,   -1,
    292    -1,   -1,   -1,   -1,   -1,  124,   -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,  256,  257,  258,  257,  258,
    300 };
    301 #if YYBTYACC
    302 static const YYINT ok_syntax1_ctable[] = {               -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,   -1,   -1,   -1,
    313    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    314    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    315    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    316    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    317    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    318    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    319    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    320    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    321    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    322    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    323    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    324    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    325 };
    326 #endif
    327 #define YYFINAL 1
    328 #ifndef YYDEBUG
    329 #define YYDEBUG 0
    330 #endif
    331 #define YYMAXTOKEN 273
    332 #define YYUNDFTOKEN 279
    333 #define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a))
    334 #if YYDEBUG
    335 static const char *const ok_syntax1_name[] = {
    336 
    337 "$end",0,0,0,0,0,0,"'\\a'","'\\b'","'\\t'","'\\n'","'\\v'","'\\f'","'\\r'",0,0,
    338 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'#'",0,"'%'","'&'",0,"'('","')'","'*'",
    339 "'+'",0,"'-'",0,"'/'",0,0,0,0,0,0,0,0,0,0,0,0,0,"'='",0,0,"'@'",0,0,0,0,0,0,0,0,
    340 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'^'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    341 0,0,0,0,0,0,0,0,0,0,0,0,0,"'|'",0,"'~'","'\\177'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    342 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    343 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    344 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'\\377'",
    345 "error","DIGIT","LETTER","OCT1","HEX1","HEX2","HEX3","STR1",
    346 "\"\\177\\177\\\\\\n\"","STR2","BELL","BS","NL","LF","CR","TAB","VT","UMINUS",
    347 "$accept","list","stat","expr","number","illegal-symbol",
    348 };
    349 static const char *const ok_syntax1_rule[] = {
    350 "$accept : list",
    351 "list :",
    352 "list : list stat '\\n'",
    353 "list : list error '\\n'",
    354 "stat : expr",
    355 "stat : LETTER '=' expr",
    356 "expr : '(' expr ')'",
    357 "expr : expr '+' expr",
    358 "expr : expr '-' expr",
    359 "expr : expr '*' expr",
    360 "expr : expr '/' expr",
    361 "expr : expr '%' expr",
    362 "expr : expr '&' expr",
    363 "expr : expr '|' expr",
    364 "expr : '-' expr",
    365 "expr : LETTER",
    366 "expr : number",
    367 "number : DIGIT",
    368 "number : number DIGIT",
    369 
    370 };
    371 #endif
    372 
    373 int      yydebug;
    374 int      yynerrs;
    375 
    376 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    377 #ifndef YYLLOC_DEFAULT
    378 #define YYLLOC_DEFAULT(loc, rhs, n) \
    379 do \
    380 { \
    381     if (n == 0) \
    382     { \
    383         (loc).first_line   = ((rhs)[-1]).last_line; \
    384         (loc).first_column = ((rhs)[-1]).last_column; \
    385         (loc).last_line    = ((rhs)[-1]).last_line; \
    386         (loc).last_column  = ((rhs)[-1]).last_column; \
    387     } \
    388     else \
    389     { \
    390         (loc).first_line   = ((rhs)[ 0 ]).first_line; \
    391         (loc).first_column = ((rhs)[ 0 ]).first_column; \
    392         (loc).last_line    = ((rhs)[n-1]).last_line; \
    393         (loc).last_column  = ((rhs)[n-1]).last_column; \
    394     } \
    395 } while (0)
    396 #endif /* YYLLOC_DEFAULT */
    397 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
    398 #if YYBTYACC
    399 
    400 #ifndef YYLVQUEUEGROWTH
    401 #define YYLVQUEUEGROWTH 32
    402 #endif
    403 #endif /* YYBTYACC */
    404 
    405 /* define the initial stack-sizes */
    406 #ifdef YYSTACKSIZE
    407 #undef YYMAXDEPTH
    408 #define YYMAXDEPTH  YYSTACKSIZE
    409 #else
    410 #ifdef YYMAXDEPTH
    411 #define YYSTACKSIZE YYMAXDEPTH
    412 #else
    413 #define YYSTACKSIZE 10000
    414 #define YYMAXDEPTH  10000
    415 #endif
    416 #endif
    417 
    418 #ifndef YYINITSTACKSIZE
    419 #define YYINITSTACKSIZE 200
    420 #endif
    421 
    422 typedef struct {
    423     unsigned stacksize;
    424     YYINT    *s_base;
    425     YYINT    *s_mark;
    426     YYINT    *s_last;
    427     YYSTYPE  *l_base;
    428     YYSTYPE  *l_mark;
    429 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    430     YYLTYPE  *p_base;
    431     YYLTYPE  *p_mark;
    432 #endif
    433 } YYSTACKDATA;
    434 #if YYBTYACC
    435 
    436 struct YYParseState_s
    437 {
    438     struct YYParseState_s *save;    /* Previously saved parser state */
    439     YYSTACKDATA            yystack; /* saved parser stack */
    440     int                    state;   /* saved parser state */
    441     int                    errflag; /* saved error recovery status */
    442     int                    lexeme;  /* saved index of the conflict lexeme in the lexical queue */
    443     YYINT                  ctry;    /* saved index in yyctable[] for this conflict */
    444 };
    445 typedef struct YYParseState_s YYParseState;
    446 #endif /* YYBTYACC */
    447 #line 104 "ok_syntax1.y"
    448  /* start of programs */
    449 
    450 #ifdef YYBYACC
    451 extern int YYLEX_DECL();
    452 #endif
    453 
    454 int
    455 main (void)
    456 {
    457     int regs[26];
    458     int base = 10;
    459 
    460     while(!feof(stdin)) {
    461 	yyparse(regs, &base);
    462     }
    463     return 0;
    464 }
    465 
    466 #define UNUSED(x) ((void)(x))
    467 
    468 static void
    469 YYERROR_DECL()
    470 {
    471     UNUSED(regs); /* %parse-param regs is not actually used here */
    472     UNUSED(base); /* %parse-param base is not actually used here */
    473     fprintf(stderr, "%s\n", s);
    474 }
    475 
    476 int
    477 YYLEX_DECL()
    478 {
    479 	/* lexical analysis routine */
    480 	/* returns LETTER for a lower case letter, yylval = 0 through 25 */
    481 	/* return DIGIT for a digit, yylval = 0 through 9 */
    482 	/* all other characters are returned immediately */
    483 
    484     int c;
    485 
    486     while( (c=getchar()) == ' ' )   { /* skip blanks */ }
    487 
    488     /* c is now nonblank */
    489 
    490     if( islower( c )) {
    491 	yylval->ival = (c - 'a');
    492 	return ( LETTER );
    493     }
    494     if( isdigit( c )) {
    495 	yylval->ival = (c - '0') % (*base);
    496 	return ( DIGIT );
    497     }
    498     return( c );
    499 }
    500 #line 499 "ok_syntax1.tab.c"
    501 
    502 /* For use in generated program */
    503 #define yydepth (int)(yystack.s_mark - yystack.s_base)
    504 #if YYBTYACC
    505 #define yytrial (yyps->save)
    506 #endif /* YYBTYACC */
    507 
    508 #if YYDEBUG
    509 #include <stdio.h>	/* needed for printf */
    510 #endif
    511 
    512 #include <stdlib.h>	/* needed for malloc, etc */
    513 #include <string.h>	/* needed for memset */
    514 
    515 /* allocate initial stack or double stack size, up to YYMAXDEPTH */
    516 static int yygrowstack(YYSTACKDATA *data)
    517 {
    518     int i;
    519     unsigned newsize;
    520     YYINT *newss;
    521     YYSTYPE *newvs;
    522 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    523     YYLTYPE *newps;
    524 #endif
    525 
    526     if ((newsize = data->stacksize) == 0)
    527         newsize = YYINITSTACKSIZE;
    528     else if (newsize >= YYMAXDEPTH)
    529         return YYENOMEM;
    530     else if ((newsize *= 2) > YYMAXDEPTH)
    531         newsize = YYMAXDEPTH;
    532 
    533     i = (int) (data->s_mark - data->s_base);
    534     newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss));
    535     if (newss == 0)
    536         return YYENOMEM;
    537 
    538     data->s_base = newss;
    539     data->s_mark = newss + i;
    540 
    541     newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
    542     if (newvs == 0)
    543         return YYENOMEM;
    544 
    545     data->l_base = newvs;
    546     data->l_mark = newvs + i;
    547 
    548 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    549     newps = (YYLTYPE *)realloc(data->p_base, newsize * sizeof(*newps));
    550     if (newps == 0)
    551         return YYENOMEM;
    552 
    553     data->p_base = newps;
    554     data->p_mark = newps + i;
    555 #endif
    556 
    557     data->stacksize = newsize;
    558     data->s_last = data->s_base + newsize - 1;
    559 
    560 #if YYDEBUG
    561     if (yydebug)
    562         fprintf(stderr, "%sdebug: stack size increased to %d\n", YYPREFIX, newsize);
    563 #endif
    564     return 0;
    565 }
    566 
    567 #if YYPURE || defined(YY_NO_LEAKS)
    568 static void yyfreestack(YYSTACKDATA *data)
    569 {
    570     free(data->s_base);
    571     free(data->l_base);
    572 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    573     free(data->p_base);
    574 #endif
    575     memset(data, 0, sizeof(*data));
    576 }
    577 #else
    578 #define yyfreestack(data) /* nothing */
    579 #endif /* YYPURE || defined(YY_NO_LEAKS) */
    580 #if YYBTYACC
    581 
    582 static YYParseState *
    583 yyNewState(unsigned size)
    584 {
    585     YYParseState *p = (YYParseState *) malloc(sizeof(YYParseState));
    586     if (p == NULL) return NULL;
    587 
    588     p->yystack.stacksize = size;
    589     if (size == 0)
    590     {
    591         p->yystack.s_base = NULL;
    592         p->yystack.l_base = NULL;
    593 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    594         p->yystack.p_base = NULL;
    595 #endif
    596         return p;
    597     }
    598     p->yystack.s_base    = (YYINT *) malloc(size * sizeof(YYINT));
    599     if (p->yystack.s_base == NULL) return NULL;
    600     p->yystack.l_base    = (YYSTYPE *) malloc(size * sizeof(YYSTYPE));
    601     if (p->yystack.l_base == NULL) return NULL;
    602     memset(p->yystack.l_base, 0, size * sizeof(YYSTYPE));
    603 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    604     p->yystack.p_base    = (YYLTYPE *) malloc(size * sizeof(YYLTYPE));
    605     if (p->yystack.p_base == NULL) return NULL;
    606     memset(p->yystack.p_base, 0, size * sizeof(YYLTYPE));
    607 #endif
    608 
    609     return p;
    610 }
    611 
    612 static void
    613 yyFreeState(YYParseState *p)
    614 {
    615     yyfreestack(&p->yystack);
    616     free(p);
    617 }
    618 #endif /* YYBTYACC */
    619 
    620 #define YYABORT  goto yyabort
    621 #define YYREJECT goto yyabort
    622 #define YYACCEPT goto yyaccept
    623 #define YYERROR  goto yyerrlab
    624 #if YYBTYACC
    625 #define YYVALID        do { if (yyps->save)            goto yyvalid; } while(0)
    626 #define YYVALID_NESTED do { if (yyps->save && \
    627                                 yyps->save->save == 0) goto yyvalid; } while(0)
    628 #endif /* YYBTYACC */
    629 
    630 int
    631 YYPARSE_DECL()
    632 {
    633     int      yyerrflag;
    634     int      yychar;
    635     YYSTYPE  yyval;
    636     YYSTYPE  yylval;
    637 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    638     YYLTYPE  yyloc; /* position returned by actions */
    639     YYLTYPE  yylloc; /* position from the lexer */
    640 #endif
    641 
    642     /* variables for the parser stack */
    643     YYSTACKDATA yystack;
    644 #if YYBTYACC
    645 
    646     /* Current parser state */
    647     static YYParseState *yyps = 0;
    648 
    649     /* yypath != NULL: do the full parse, starting at *yypath parser state. */
    650     static YYParseState *yypath = 0;
    651 
    652     /* Base of the lexical value queue */
    653     static YYSTYPE *yylvals = 0;
    654 
    655     /* Current position at lexical value queue */
    656     static YYSTYPE *yylvp = 0;
    657 
    658     /* End position of lexical value queue */
    659     static YYSTYPE *yylve = 0;
    660 
    661     /* The last allocated position at the lexical value queue */
    662     static YYSTYPE *yylvlim = 0;
    663 
    664 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    665     /* Base of the lexical position queue */
    666     static YYLTYPE *yylpsns = 0;
    667 
    668     /* Current position at lexical position queue */
    669     static YYLTYPE *yylpp = 0;
    670 
    671     /* End position of lexical position queue */
    672     static YYLTYPE *yylpe = 0;
    673 
    674     /* The last allocated position at the lexical position queue */
    675     static YYLTYPE *yylplim = 0;
    676 #endif
    677 
    678     /* Current position at lexical token queue */
    679     static YYINT  *yylexp = 0;
    680 
    681     static YYINT  *yylexemes = 0;
    682 #endif /* YYBTYACC */
    683     int yym, yyn, yystate, yyresult;
    684 #if YYBTYACC
    685     int yynewerrflag;
    686     YYParseState *yyerrctx = NULL;
    687 #endif /* YYBTYACC */
    688 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    689     YYLTYPE  yyerror_loc_range[2]; /* position of error start & end */
    690 #endif
    691 #if YYDEBUG
    692     const char *yys;
    693 
    694     if ((yys = getenv("YYDEBUG")) != 0)
    695     {
    696         yyn = *yys;
    697         if (yyn >= '0' && yyn <= '9')
    698             yydebug = yyn - '0';
    699     }
    700     if (yydebug)
    701         fprintf(stderr, "%sdebug[<# of symbols on state stack>]\n", YYPREFIX);
    702 #endif
    703 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    704     memset(yyerror_loc_range, 0, sizeof(yyerror_loc_range));
    705 #endif
    706 
    707     yyerrflag = 0;
    708     yychar = 0;
    709     memset(&yyval,  0, sizeof(yyval));
    710     memset(&yylval, 0, sizeof(yylval));
    711 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    712     memset(&yyloc,  0, sizeof(yyloc));
    713     memset(&yylloc, 0, sizeof(yylloc));
    714 #endif
    715 
    716 #if YYBTYACC
    717     yyps = yyNewState(0); if (yyps == 0) goto yyenomem;
    718     yyps->save = 0;
    719 #endif /* YYBTYACC */
    720     yym = 0;
    721     yyn = 0;
    722     yynerrs = 0;
    723     yyerrflag = 0;
    724     yychar = YYEMPTY;
    725     yystate = 0;
    726 
    727 #if YYPURE
    728     memset(&yystack, 0, sizeof(yystack));
    729 #endif
    730 
    731     if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
    732     yystack.s_mark = yystack.s_base;
    733     yystack.l_mark = yystack.l_base;
    734 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    735     yystack.p_mark = yystack.p_base;
    736 #endif
    737     yystate = 0;
    738     *yystack.s_mark = 0;
    739 
    740 yyloop:
    741     if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
    742     if (yychar < 0)
    743     {
    744 #if YYBTYACC
    745         do {
    746         if (yylvp < yylve)
    747         {
    748             /* we're currently re-reading tokens */
    749             yylval = *yylvp++;
    750 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    751             yylloc = *yylpp++;
    752 #endif
    753             yychar = *yylexp++;
    754             break;
    755         }
    756         if (yyps->save)
    757         {
    758             /* in trial mode; save scanner results for future parse attempts */
    759             if (yylvp == yylvlim)
    760             {   /* Enlarge lexical value queue */
    761                 size_t p = (size_t) (yylvp - yylvals);
    762                 size_t s = (size_t) (yylvlim - yylvals);
    763 
    764                 s += YYLVQUEUEGROWTH;
    765                 if ((yylexemes = realloc(yylexemes, s * sizeof(YYINT))) == NULL) goto yyenomem;
    766                 if ((yylvals   = realloc(yylvals, s * sizeof(YYSTYPE))) == NULL) goto yyenomem;
    767 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    768                 if ((yylpsns   = realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL) goto yyenomem;
    769 #endif
    770                 yylvp   = yylve = yylvals + p;
    771                 yylvlim = yylvals + s;
    772 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    773                 yylpp   = yylpe = yylpsns + p;
    774                 yylplim = yylpsns + s;
    775 #endif
    776                 yylexp  = yylexemes + p;
    777             }
    778             *yylexp = (YYINT) YYLEX;
    779             *yylvp++ = yylval;
    780             yylve++;
    781 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    782             *yylpp++ = yylloc;
    783             yylpe++;
    784 #endif
    785             yychar = *yylexp++;
    786             break;
    787         }
    788         /* normal operation, no conflict encountered */
    789 #endif /* YYBTYACC */
    790         yychar = YYLEX;
    791 #if YYBTYACC
    792         } while (0);
    793 #endif /* YYBTYACC */
    794         if (yychar < 0) yychar = YYEOF;
    795 #if YYDEBUG
    796         if (yydebug)
    797         {
    798             if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
    799             fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)",
    800                             YYDEBUGSTR, yydepth, yystate, yychar, yys);
    801 #ifdef YYSTYPE_TOSTRING
    802 #if YYBTYACC
    803             if (!yytrial)
    804 #endif /* YYBTYACC */
    805                 fprintf(stderr, " <%s>", YYSTYPE_TOSTRING(yychar, yylval));
    806 #endif
    807             fputc('\n', stderr);
    808         }
    809 #endif
    810     }
    811 #if YYBTYACC
    812 
    813     /* Do we have a conflict? */
    814     if (((yyn = yycindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
    815         yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
    816     {
    817         YYINT ctry;
    818 
    819         if (yypath)
    820         {
    821             YYParseState *save;
    822 #if YYDEBUG
    823             if (yydebug)
    824                 fprintf(stderr, "%s[%d]: CONFLICT in state %d: following successful trial parse\n",
    825                                 YYDEBUGSTR, yydepth, yystate);
    826 #endif
    827             /* Switch to the next conflict context */
    828             save = yypath;
    829             yypath = save->save;
    830             save->save = NULL;
    831             ctry = save->ctry;
    832             if (save->state != yystate) YYABORT;
    833             yyFreeState(save);
    834 
    835         }
    836         else
    837         {
    838 
    839             /* Unresolved conflict - start/continue trial parse */
    840             YYParseState *save;
    841 #if YYDEBUG
    842             if (yydebug)
    843             {
    844                 fprintf(stderr, "%s[%d]: CONFLICT in state %d. ", YYDEBUGSTR, yydepth, yystate);
    845                 if (yyps->save)
    846                     fputs("ALREADY in conflict, continuing trial parse.\n", stderr);
    847                 else
    848                     fputs("Starting trial parse.\n", stderr);
    849             }
    850 #endif
    851             save                  = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));
    852             if (save == NULL) goto yyenomem;
    853             save->save            = yyps->save;
    854             save->state           = yystate;
    855             save->errflag         = yyerrflag;
    856             save->yystack.s_mark  = save->yystack.s_base + (yystack.s_mark - yystack.s_base);
    857             memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
    858             save->yystack.l_mark  = save->yystack.l_base + (yystack.l_mark - yystack.l_base);
    859             memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
    860 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    861             save->yystack.p_mark  = save->yystack.p_base + (yystack.p_mark - yystack.p_base);
    862             memcpy (save->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
    863 #endif
    864             ctry                  = yytable[yyn];
    865             if (yyctable[ctry] == -1)
    866             {
    867 #if YYDEBUG
    868                 if (yydebug && yychar >= YYEOF)
    869                     fprintf(stderr, "%s[%d]: backtracking 1 token\n", YYDEBUGSTR, yydepth);
    870 #endif
    871                 ctry++;
    872             }
    873             save->ctry = ctry;
    874             if (yyps->save == NULL)
    875             {
    876                 /* If this is a first conflict in the stack, start saving lexemes */
    877                 if (!yylexemes)
    878                 {
    879                     yylexemes = malloc((YYLVQUEUEGROWTH) * sizeof(YYINT));
    880                     if (yylexemes == NULL) goto yyenomem;
    881                     yylvals   = (YYSTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYSTYPE));
    882                     if (yylvals == NULL) goto yyenomem;
    883                     yylvlim   = yylvals + YYLVQUEUEGROWTH;
    884 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    885                     yylpsns   = (YYLTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYLTYPE));
    886                     if (yylpsns == NULL) goto yyenomem;
    887                     yylplim   = yylpsns + YYLVQUEUEGROWTH;
    888 #endif
    889                 }
    890                 if (yylvp == yylve)
    891                 {
    892                     yylvp  = yylve = yylvals;
    893 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    894                     yylpp  = yylpe = yylpsns;
    895 #endif
    896                     yylexp = yylexemes;
    897                     if (yychar >= YYEOF)
    898                     {
    899                         *yylve++ = yylval;
    900 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    901                         *yylpe++ = yylloc;
    902 #endif
    903                         *yylexp  = (YYINT) yychar;
    904                         yychar   = YYEMPTY;
    905                     }
    906                 }
    907             }
    908             if (yychar >= YYEOF)
    909             {
    910                 yylvp--;
    911 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    912                 yylpp--;
    913 #endif
    914                 yylexp--;
    915                 yychar = YYEMPTY;
    916             }
    917             save->lexeme = (int) (yylvp - yylvals);
    918             yyps->save   = save;
    919         }
    920         if (yytable[yyn] == ctry)
    921         {
    922 #if YYDEBUG
    923             if (yydebug)
    924                 fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n",
    925                                 YYDEBUGSTR, yydepth, yystate, yyctable[ctry]);
    926 #endif
    927             if (yychar < 0)
    928             {
    929                 yylvp++;
    930 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    931                 yylpp++;
    932 #endif
    933                 yylexp++;
    934             }
    935             if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)
    936                 goto yyoverflow;
    937             yystate = yyctable[ctry];
    938             *++yystack.s_mark = (YYINT) yystate;
    939             *++yystack.l_mark = yylval;
    940 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    941             *++yystack.p_mark = yylloc;
    942 #endif
    943             yychar  = YYEMPTY;
    944             if (yyerrflag > 0) --yyerrflag;
    945             goto yyloop;
    946         }
    947         else
    948         {
    949             yyn = yyctable[ctry];
    950             goto yyreduce;
    951         }
    952     } /* End of code dealing with conflicts */
    953 #endif /* YYBTYACC */
    954     if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
    955             yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
    956     {
    957 #if YYDEBUG
    958         if (yydebug)
    959             fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n",
    960                             YYDEBUGSTR, yydepth, yystate, yytable[yyn]);
    961 #endif
    962         if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
    963         yystate = yytable[yyn];
    964         *++yystack.s_mark = yytable[yyn];
    965         *++yystack.l_mark = yylval;
    966 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    967         *++yystack.p_mark = yylloc;
    968 #endif
    969         yychar = YYEMPTY;
    970         if (yyerrflag > 0)  --yyerrflag;
    971         goto yyloop;
    972     }
    973     if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
    974             yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
    975     {
    976         yyn = yytable[yyn];
    977         goto yyreduce;
    978     }
    979     if (yyerrflag != 0) goto yyinrecovery;
    980 #if YYBTYACC
    981 
    982     yynewerrflag = 1;
    983     goto yyerrhandler;
    984     goto yyerrlab; /* redundant goto avoids 'unused label' warning */
    985 
    986 yyerrlab:
    987     /* explicit YYERROR from an action -- pop the rhs of the rule reduced
    988      * before looking for error recovery */
    989     yystack.s_mark -= yym;
    990     yystate = *yystack.s_mark;
    991     yystack.l_mark -= yym;
    992 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    993     yystack.p_mark -= yym;
    994 #endif
    995 
    996     yynewerrflag = 0;
    997 yyerrhandler:
    998     while (yyps->save)
    999     {
   1000         int ctry;
   1001         YYParseState *save = yyps->save;
   1002 #if YYDEBUG
   1003         if (yydebug)
   1004             fprintf(stderr, "%s[%d]: ERROR in state %d, CONFLICT BACKTRACKING to state %d, %d tokens\n",
   1005                             YYDEBUGSTR, yydepth, yystate, yyps->save->state,
   1006                     (int)(yylvp - yylvals - yyps->save->lexeme));
   1007 #endif
   1008         /* Memorize most forward-looking error state in case it's really an error. */
   1009         if (yyerrctx == NULL || yyerrctx->lexeme < yylvp - yylvals)
   1010         {
   1011             /* Free old saved error context state */
   1012             if (yyerrctx) yyFreeState(yyerrctx);
   1013             /* Create and fill out new saved error context state */
   1014             yyerrctx                 = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));
   1015             if (yyerrctx == NULL) goto yyenomem;
   1016             yyerrctx->save           = yyps->save;
   1017             yyerrctx->state          = yystate;
   1018             yyerrctx->errflag        = yyerrflag;
   1019             yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base);
   1020             memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
   1021             yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base);
   1022             memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
   1023 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1024             yyerrctx->yystack.p_mark = yyerrctx->yystack.p_base + (yystack.p_mark - yystack.p_base);
   1025             memcpy (yyerrctx->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
   1026 #endif
   1027             yyerrctx->lexeme         = (int) (yylvp - yylvals);
   1028         }
   1029         yylvp          = yylvals   + save->lexeme;
   1030 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1031         yylpp          = yylpsns   + save->lexeme;
   1032 #endif
   1033         yylexp         = yylexemes + save->lexeme;
   1034         yychar         = YYEMPTY;
   1035         yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base);
   1036         memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
   1037         yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base);
   1038         memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
   1039 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1040         yystack.p_mark = yystack.p_base + (save->yystack.p_mark - save->yystack.p_base);
   1041         memcpy (yystack.p_base, save->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
   1042 #endif
   1043         ctry           = ++save->ctry;
   1044         yystate        = save->state;
   1045         /* We tried shift, try reduce now */
   1046         if ((yyn = yyctable[ctry]) >= 0) goto yyreduce;
   1047         yyps->save     = save->save;
   1048         save->save     = NULL;
   1049         yyFreeState(save);
   1050 
   1051         /* Nothing left on the stack -- error */
   1052         if (!yyps->save)
   1053         {
   1054 #if YYDEBUG
   1055             if (yydebug)
   1056                 fprintf(stderr, "%sdebug[%d,trial]: trial parse FAILED, entering ERROR mode\n",
   1057                                 YYPREFIX, yydepth);
   1058 #endif
   1059             /* Restore state as it was in the most forward-advanced error */
   1060             yylvp          = yylvals   + yyerrctx->lexeme;
   1061 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1062             yylpp          = yylpsns   + yyerrctx->lexeme;
   1063 #endif
   1064             yylexp         = yylexemes + yyerrctx->lexeme;
   1065             yychar         = yylexp[-1];
   1066             yylval         = yylvp[-1];
   1067 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1068             yylloc         = yylpp[-1];
   1069 #endif
   1070             yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base);
   1071             memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
   1072             yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base);
   1073             memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
   1074 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1075             yystack.p_mark = yystack.p_base + (yyerrctx->yystack.p_mark - yyerrctx->yystack.p_base);
   1076             memcpy (yystack.p_base, yyerrctx->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
   1077 #endif
   1078             yystate        = yyerrctx->state;
   1079             yyFreeState(yyerrctx);
   1080             yyerrctx       = NULL;
   1081         }
   1082         yynewerrflag = 1;
   1083     }
   1084     if (yynewerrflag == 0) goto yyinrecovery;
   1085 #endif /* YYBTYACC */
   1086 
   1087     YYERROR_CALL("syntax error");
   1088 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1089     yyerror_loc_range[0] = yylloc; /* lookahead position is error start position */
   1090 #endif
   1091 
   1092 #if !YYBTYACC
   1093     goto yyerrlab; /* redundant goto avoids 'unused label' warning */
   1094 yyerrlab:
   1095 #endif
   1096     ++yynerrs;
   1097 
   1098 yyinrecovery:
   1099     if (yyerrflag < 3)
   1100     {
   1101         yyerrflag = 3;
   1102         for (;;)
   1103         {
   1104             if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 &&
   1105                     yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE)
   1106             {
   1107 #if YYDEBUG
   1108                 if (yydebug)
   1109                     fprintf(stderr, "%s[%d]: state %d, error recovery shifting to state %d\n",
   1110                                     YYDEBUGSTR, yydepth, *yystack.s_mark, yytable[yyn]);
   1111 #endif
   1112                 if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
   1113                 yystate = yytable[yyn];
   1114                 *++yystack.s_mark = yytable[yyn];
   1115                 *++yystack.l_mark = yylval;
   1116 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1117                 /* lookahead position is error end position */
   1118                 yyerror_loc_range[1] = yylloc;
   1119                 YYLLOC_DEFAULT(yyloc, yyerror_loc_range, 2); /* position of error span */
   1120                 *++yystack.p_mark = yyloc;
   1121 #endif
   1122                 goto yyloop;
   1123             }
   1124             else
   1125             {
   1126 #if YYDEBUG
   1127                 if (yydebug)
   1128                     fprintf(stderr, "%s[%d]: error recovery discarding state %d\n",
   1129                                     YYDEBUGSTR, yydepth, *yystack.s_mark);
   1130 #endif
   1131                 if (yystack.s_mark <= yystack.s_base) goto yyabort;
   1132 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1133                 /* the current TOS position is the error start position */
   1134                 yyerror_loc_range[0] = *yystack.p_mark;
   1135 #endif
   1136 #if defined(YYDESTRUCT_CALL)
   1137 #if YYBTYACC
   1138                 if (!yytrial)
   1139 #endif /* YYBTYACC */
   1140 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1141                     YYDESTRUCT_CALL("error: discarding state",
   1142                                     yystos[*yystack.s_mark], yystack.l_mark, yystack.p_mark);
   1143 #else
   1144                     YYDESTRUCT_CALL("error: discarding state",
   1145                                     yystos[*yystack.s_mark], yystack.l_mark);
   1146 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
   1147 #endif /* defined(YYDESTRUCT_CALL) */
   1148                 --yystack.s_mark;
   1149                 --yystack.l_mark;
   1150 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1151                 --yystack.p_mark;
   1152 #endif
   1153             }
   1154         }
   1155     }
   1156     else
   1157     {
   1158         if (yychar == YYEOF) goto yyabort;
   1159 #if YYDEBUG
   1160         if (yydebug)
   1161         {
   1162             if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
   1163             fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n",
   1164                             YYDEBUGSTR, yydepth, yystate, yychar, yys);
   1165         }
   1166 #endif
   1167 #if defined(YYDESTRUCT_CALL)
   1168 #if YYBTYACC
   1169         if (!yytrial)
   1170 #endif /* YYBTYACC */
   1171 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1172             YYDESTRUCT_CALL("error: discarding token", yychar, &yylval, &yylloc);
   1173 #else
   1174             YYDESTRUCT_CALL("error: discarding token", yychar, &yylval);
   1175 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
   1176 #endif /* defined(YYDESTRUCT_CALL) */
   1177         yychar = YYEMPTY;
   1178         goto yyloop;
   1179     }
   1180 
   1181 yyreduce:
   1182     yym = yylen[yyn];
   1183 #if YYDEBUG
   1184     if (yydebug)
   1185     {
   1186         fprintf(stderr, "%s[%d]: state %d, reducing by rule %d (%s)",
   1187                         YYDEBUGSTR, yydepth, yystate, yyn, yyrule[yyn]);
   1188 #ifdef YYSTYPE_TOSTRING
   1189 #if YYBTYACC
   1190         if (!yytrial)
   1191 #endif /* YYBTYACC */
   1192             if (yym > 0)
   1193             {
   1194                 int i;
   1195                 fputc('<', stderr);
   1196                 for (i = yym; i > 0; i--)
   1197                 {
   1198                     if (i != yym) fputs(", ", stderr);
   1199                     fputs(YYSTYPE_TOSTRING(yystos[yystack.s_mark[1-i]],
   1200                                            yystack.l_mark[1-i]), stderr);
   1201                 }
   1202                 fputc('>', stderr);
   1203             }
   1204 #endif
   1205         fputc('\n', stderr);
   1206     }
   1207 #endif
   1208     if (yym > 0)
   1209         yyval = yystack.l_mark[1-yym];
   1210     else
   1211         memset(&yyval, 0, sizeof yyval);
   1212 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1213 
   1214     /* Perform position reduction */
   1215     memset(&yyloc, 0, sizeof(yyloc));
   1216 #if YYBTYACC
   1217     if (!yytrial)
   1218 #endif /* YYBTYACC */
   1219     {
   1220         YYLLOC_DEFAULT(yyloc, &yystack.p_mark[1-yym], yym);
   1221         /* just in case YYERROR is invoked within the action, save
   1222            the start of the rhs as the error start position */
   1223         yyerror_loc_range[0] = yystack.p_mark[1-yym];
   1224     }
   1225 #endif
   1226 
   1227     switch (yyn)
   1228     {
   1229 case 3:
   1230 #line 66 "ok_syntax1.y"
   1231 	{  yyerrok ; }
   1232 break;
   1233 case 4:
   1234 #line 70 "ok_syntax1.y"
   1235 	{  printf("%d\n",yystack.l_mark[0].ival);}
   1236 break;
   1237 case 5:
   1238 #line 72 "ok_syntax1.y"
   1239 	{  regs[yystack.l_mark[-2].ival] = yystack.l_mark[0].ival; }
   1240 break;
   1241 case 6:
   1242 #line 76 "ok_syntax1.y"
   1243 	{  yyval.ival = yystack.l_mark[-1].ival; }
   1244 break;
   1245 case 7:
   1246 #line 78 "ok_syntax1.y"
   1247 	{  yyval.ival = yystack.l_mark[-2].ival + yystack.l_mark[0].ival; }
   1248 break;
   1249 case 8:
   1250 #line 80 "ok_syntax1.y"
   1251 	{  yyval.ival = yystack.l_mark[-2].ival - yystack.l_mark[0].ival; }
   1252 break;
   1253 case 9:
   1254 #line 82 "ok_syntax1.y"
   1255 	{  yyval.ival = yystack.l_mark[-2].ival * yystack.l_mark[0].ival; }
   1256 break;
   1257 case 10:
   1258 #line 84 "ok_syntax1.y"
   1259 	{  yyval.ival = yystack.l_mark[-2].ival / yystack.l_mark[0].ival; }
   1260 break;
   1261 case 11:
   1262 #line 86 "ok_syntax1.y"
   1263 	{  yyval.ival = yystack.l_mark[-2].ival % yystack.l_mark[0].ival; }
   1264 break;
   1265 case 12:
   1266 #line 88 "ok_syntax1.y"
   1267 	{  yyval.ival = yystack.l_mark[-2].ival & yystack.l_mark[0].ival; }
   1268 break;
   1269 case 13:
   1270 #line 90 "ok_syntax1.y"
   1271 	{  yyval.ival = yystack.l_mark[-2].ival | yystack.l_mark[0].ival; }
   1272 break;
   1273 case 14:
   1274 #line 92 "ok_syntax1.y"
   1275 	{  yyval.ival = - yystack.l_mark[0].ival; }
   1276 break;
   1277 case 15:
   1278 #line 94 "ok_syntax1.y"
   1279 	{  yyval.ival = regs[yystack.l_mark[0].ival]; }
   1280 break;
   1281 case 17:
   1282 #line 99 "ok_syntax1.y"
   1283 	{  yyval.ival = yystack.l_mark[0].ival; (*base) = (yystack.l_mark[0].ival==0) ? 8 : 10; }
   1284 break;
   1285 case 18:
   1286 #line 101 "ok_syntax1.y"
   1287 	{  yyval.ival = (*base) * yystack.l_mark[-1].ival + yystack.l_mark[0].ival; }
   1288 break;
   1289 #line 1288 "ok_syntax1.tab.c"
   1290     default:
   1291         break;
   1292     }
   1293     yystack.s_mark -= yym;
   1294     yystate = *yystack.s_mark;
   1295     yystack.l_mark -= yym;
   1296 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1297     yystack.p_mark -= yym;
   1298 #endif
   1299     yym = yylhs[yyn];
   1300     if (yystate == 0 && yym == 0)
   1301     {
   1302 #if YYDEBUG
   1303         if (yydebug)
   1304         {
   1305             fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);
   1306 #ifdef YYSTYPE_TOSTRING
   1307 #if YYBTYACC
   1308             if (!yytrial)
   1309 #endif /* YYBTYACC */
   1310                 fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[YYFINAL], yyval));
   1311 #endif
   1312             fprintf(stderr, "shifting from state 0 to final state %d\n", YYFINAL);
   1313         }
   1314 #endif
   1315         yystate = YYFINAL;
   1316         *++yystack.s_mark = YYFINAL;
   1317         *++yystack.l_mark = yyval;
   1318 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1319         *++yystack.p_mark = yyloc;
   1320 #endif
   1321         if (yychar < 0)
   1322         {
   1323 #if YYBTYACC
   1324             do {
   1325             if (yylvp < yylve)
   1326             {
   1327                 /* we're currently re-reading tokens */
   1328                 yylval = *yylvp++;
   1329 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1330                 yylloc = *yylpp++;
   1331 #endif
   1332                 yychar = *yylexp++;
   1333                 break;
   1334             }
   1335             if (yyps->save)
   1336             {
   1337                 /* in trial mode; save scanner results for future parse attempts */
   1338                 if (yylvp == yylvlim)
   1339                 {   /* Enlarge lexical value queue */
   1340                     size_t p = (size_t) (yylvp - yylvals);
   1341                     size_t s = (size_t) (yylvlim - yylvals);
   1342 
   1343                     s += YYLVQUEUEGROWTH;
   1344                     if ((yylexemes = realloc(yylexemes, s * sizeof(YYINT))) == NULL)
   1345                         goto yyenomem;
   1346                     if ((yylvals   = realloc(yylvals, s * sizeof(YYSTYPE))) == NULL)
   1347                         goto yyenomem;
   1348 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1349                     if ((yylpsns   = realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL)
   1350                         goto yyenomem;
   1351 #endif
   1352                     yylvp   = yylve = yylvals + p;
   1353                     yylvlim = yylvals + s;
   1354 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1355                     yylpp   = yylpe = yylpsns + p;
   1356                     yylplim = yylpsns + s;
   1357 #endif
   1358                     yylexp  = yylexemes + p;
   1359                 }
   1360                 *yylexp = (YYINT) YYLEX;
   1361                 *yylvp++ = yylval;
   1362                 yylve++;
   1363 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1364                 *yylpp++ = yylloc;
   1365                 yylpe++;
   1366 #endif
   1367                 yychar = *yylexp++;
   1368                 break;
   1369             }
   1370             /* normal operation, no conflict encountered */
   1371 #endif /* YYBTYACC */
   1372             yychar = YYLEX;
   1373 #if YYBTYACC
   1374             } while (0);
   1375 #endif /* YYBTYACC */
   1376             if (yychar < 0) yychar = YYEOF;
   1377 #if YYDEBUG
   1378             if (yydebug)
   1379             {
   1380                 if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
   1381                 fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n",
   1382                                 YYDEBUGSTR, yydepth, YYFINAL, yychar, yys);
   1383             }
   1384 #endif
   1385         }
   1386         if (yychar == YYEOF) goto yyaccept;
   1387         goto yyloop;
   1388     }
   1389     if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 &&
   1390             yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate)
   1391         yystate = yytable[yyn];
   1392     else
   1393         yystate = yydgoto[yym];
   1394 #if YYDEBUG
   1395     if (yydebug)
   1396     {
   1397         fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);
   1398 #ifdef YYSTYPE_TOSTRING
   1399 #if YYBTYACC
   1400         if (!yytrial)
   1401 #endif /* YYBTYACC */
   1402             fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[yystate], yyval));
   1403 #endif
   1404         fprintf(stderr, "shifting from state %d to state %d\n", *yystack.s_mark, yystate);
   1405     }
   1406 #endif
   1407     if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
   1408     *++yystack.s_mark = (YYINT) yystate;
   1409     *++yystack.l_mark = yyval;
   1410 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1411     *++yystack.p_mark = yyloc;
   1412 #endif
   1413     goto yyloop;
   1414 #if YYBTYACC
   1415 
   1416     /* Reduction declares that this path is valid. Set yypath and do a full parse */
   1417 yyvalid:
   1418     if (yypath) YYABORT;
   1419     while (yyps->save)
   1420     {
   1421         YYParseState *save = yyps->save;
   1422         yyps->save = save->save;
   1423         save->save = yypath;
   1424         yypath = save;
   1425     }
   1426 #if YYDEBUG
   1427     if (yydebug)
   1428         fprintf(stderr, "%s[%d]: state %d, CONFLICT trial successful, backtracking to state %d, %d tokens\n",
   1429                         YYDEBUGSTR, yydepth, yystate, yypath->state, (int)(yylvp - yylvals - yypath->lexeme));
   1430 #endif
   1431     if (yyerrctx)
   1432     {
   1433         yyFreeState(yyerrctx);
   1434         yyerrctx = NULL;
   1435     }
   1436     yylvp          = yylvals + yypath->lexeme;
   1437 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1438     yylpp          = yylpsns + yypath->lexeme;
   1439 #endif
   1440     yylexp         = yylexemes + yypath->lexeme;
   1441     yychar         = YYEMPTY;
   1442     yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base);
   1443     memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
   1444     yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base);
   1445     memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
   1446 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1447     yystack.p_mark = yystack.p_base + (yypath->yystack.p_mark - yypath->yystack.p_base);
   1448     memcpy (yystack.p_base, yypath->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
   1449 #endif
   1450     yystate        = yypath->state;
   1451     goto yyloop;
   1452 #endif /* YYBTYACC */
   1453 
   1454 yyoverflow:
   1455     YYERROR_CALL("yacc stack overflow");
   1456 #if YYBTYACC
   1457     goto yyabort_nomem;
   1458 yyenomem:
   1459     YYERROR_CALL("memory exhausted");
   1460 yyabort_nomem:
   1461 #endif /* YYBTYACC */
   1462     yyresult = 2;
   1463     goto yyreturn;
   1464 
   1465 yyabort:
   1466     yyresult = 1;
   1467     goto yyreturn;
   1468 
   1469 yyaccept:
   1470 #if YYBTYACC
   1471     if (yyps->save) goto yyvalid;
   1472 #endif /* YYBTYACC */
   1473     yyresult = 0;
   1474 
   1475 yyreturn:
   1476 #if defined(YYDESTRUCT_CALL)
   1477     if (yychar != YYEOF && yychar != YYEMPTY)
   1478 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1479         YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval, &yylloc);
   1480 #else
   1481         YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval);
   1482 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
   1483 
   1484     {
   1485         YYSTYPE *pv;
   1486 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1487         YYLTYPE *pp;
   1488 
   1489         for (pv = yystack.l_base, pp = yystack.p_base; pv <= yystack.l_mark; ++pv, ++pp)
   1490              YYDESTRUCT_CALL("cleanup: discarding state",
   1491                              yystos[*(yystack.s_base + (pv - yystack.l_base))], pv, pp);
   1492 #else
   1493         for (pv = yystack.l_base; pv <= yystack.l_mark; ++pv)
   1494              YYDESTRUCT_CALL("cleanup: discarding state",
   1495                              yystos[*(yystack.s_base + (pv - yystack.l_base))], pv);
   1496 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
   1497     }
   1498 #endif /* defined(YYDESTRUCT_CALL) */
   1499 
   1500 #if YYBTYACC
   1501     if (yyerrctx)
   1502     {
   1503         yyFreeState(yyerrctx);
   1504         yyerrctx = NULL;
   1505     }
   1506     while (yyps)
   1507     {
   1508         YYParseState *save = yyps;
   1509         yyps = save->save;
   1510         save->save = NULL;
   1511         yyFreeState(save);
   1512     }
   1513     while (yypath)
   1514     {
   1515         YYParseState *save = yypath;
   1516         yypath = save->save;
   1517         save->save = NULL;
   1518         yyFreeState(save);
   1519     }
   1520 #endif /* YYBTYACC */
   1521     yyfreestack(&yystack);
   1522     return (yyresult);
   1523 }
   1524