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