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