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