Home | History | Annotate | Line # | Download | only in btyacc
btyacc_demo.tab.c revision 1.1.1.3
      1 /*	$NetBSD: btyacc_demo.tab.c,v 1.1.1.3 2016/01/09 21:59:46 christos Exp $	*/
      2 
      3 /* original parser id follows */
      4 /* yysccsid[] = "@(#)yaccpar	1.9 (Berkeley) 02/21/93" */
      5 /* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */
      6 
      7 #define YYBYACC 1
      8 #define YYMAJOR 1
      9 #define YYMINOR 9
     10 #define YYCHECK "yyyymmdd"
     11 
     12 #define YYEMPTY        (-1)
     13 #define yyclearin      (yychar = YYEMPTY)
     14 #define yyerrok        (yyerrflag = 0)
     15 #define YYRECOVERING() (yyerrflag != 0)
     16 #define YYENOMEM       (-2)
     17 #define YYEOF          0
     18 #undef YYBTYACC
     19 #define YYBTYACC 1
     20 #define YYDEBUGSTR (yytrial ? YYPREFIX "debug(trial)" : YYPREFIX "debug")
     21 
     22 #ifndef yyparse
     23 #define yyparse    demo_parse
     24 #endif /* yyparse */
     25 
     26 #ifndef yylex
     27 #define yylex      demo_lex
     28 #endif /* yylex */
     29 
     30 #ifndef yyerror
     31 #define yyerror    demo_error
     32 #endif /* yyerror */
     33 
     34 #ifndef yychar
     35 #define yychar     demo_char
     36 #endif /* yychar */
     37 
     38 #ifndef yyval
     39 #define yyval      demo_val
     40 #endif /* yyval */
     41 
     42 #ifndef yylval
     43 #define yylval     demo_lval
     44 #endif /* yylval */
     45 
     46 #ifndef yydebug
     47 #define yydebug    demo_debug
     48 #endif /* yydebug */
     49 
     50 #ifndef yynerrs
     51 #define yynerrs    demo_nerrs
     52 #endif /* yynerrs */
     53 
     54 #ifndef yyerrflag
     55 #define yyerrflag  demo_errflag
     56 #endif /* yyerrflag */
     57 
     58 #ifndef yylhs
     59 #define yylhs      demo_lhs
     60 #endif /* yylhs */
     61 
     62 #ifndef yylen
     63 #define yylen      demo_len
     64 #endif /* yylen */
     65 
     66 #ifndef yydefred
     67 #define yydefred   demo_defred
     68 #endif /* yydefred */
     69 
     70 #ifndef yystos
     71 #define yystos     demo_stos
     72 #endif /* yystos */
     73 
     74 #ifndef yydgoto
     75 #define yydgoto    demo_dgoto
     76 #endif /* yydgoto */
     77 
     78 #ifndef yysindex
     79 #define yysindex   demo_sindex
     80 #endif /* yysindex */
     81 
     82 #ifndef yyrindex
     83 #define yyrindex   demo_rindex
     84 #endif /* yyrindex */
     85 
     86 #ifndef yygindex
     87 #define yygindex   demo_gindex
     88 #endif /* yygindex */
     89 
     90 #ifndef yytable
     91 #define yytable    demo_table
     92 #endif /* yytable */
     93 
     94 #ifndef yycheck
     95 #define yycheck    demo_check
     96 #endif /* yycheck */
     97 
     98 #ifndef yyname
     99 #define yyname     demo_name
    100 #endif /* yyname */
    101 
    102 #ifndef yyrule
    103 #define yyrule     demo_rule
    104 #endif /* yyrule */
    105 
    106 #ifndef yyloc
    107 #define yyloc      demo_loc
    108 #endif /* yyloc */
    109 
    110 #ifndef yylloc
    111 #define yylloc     demo_lloc
    112 #endif /* yylloc */
    113 
    114 #if YYBTYACC
    115 
    116 #ifndef yycindex
    117 #define yycindex   demo_cindex
    118 #endif /* yycindex */
    119 
    120 #ifndef yyctable
    121 #define yyctable   demo_ctable
    122 #endif /* yyctable */
    123 
    124 #endif /* YYBTYACC */
    125 
    126 #define YYPREFIX "demo_"
    127 
    128 #define YYPURE 0
    129 
    130 #line 15 "btyacc_demo.y"
    131 /* dummy types just for compile check */
    132 typedef int Code;
    133 typedef int Decl_List;
    134 typedef int Expr;
    135 typedef int Expr_List;
    136 typedef int Scope;
    137 typedef int Type;
    138 enum Operator { ADD, SUB, MUL, MOD, DIV, DEREF };
    139 
    140 typedef unsigned char bool;
    141 typedef struct Decl {
    142     Scope *scope;
    143     Type  *type;
    144     bool (*istype)(void);
    145 } Decl;
    146 
    147 #include "btyacc_demo.tab.h"
    148 #include <stdlib.h>
    149 #include <stdio.h>
    150 #line 36 "btyacc_demo.y"
    151 #ifdef YYSTYPE
    152 #undef  YYSTYPE_IS_DECLARED
    153 #define YYSTYPE_IS_DECLARED 1
    154 #endif
    155 #ifndef YYSTYPE_IS_DECLARED
    156 #define YYSTYPE_IS_DECLARED 1
    157 typedef union {
    158     Scope	*scope;
    159     Expr	*expr;
    160     Expr_List	*elist;
    161     Type	*type;
    162     Decl	*decl;
    163     Decl_List	*dlist;
    164     Code	*code;
    165     char	*id;
    166     } YYSTYPE;
    167 #endif /* !YYSTYPE_IS_DECLARED */
    168 #line 167 "btyacc_demo.tab.c"
    169 
    170 #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
    171 /* Default: YYLTYPE is the text position type. */
    172 typedef struct YYLTYPE
    173 {
    174     int first_line;
    175     int first_column;
    176     int last_line;
    177     int last_column;
    178 } YYLTYPE;
    179 #define YYLTYPE_IS_DECLARED 1
    180 #endif
    181 
    182 /* compatibility with bison */
    183 #ifdef YYPARSE_PARAM
    184 /* compatibility with FreeBSD */
    185 # ifdef YYPARSE_PARAM_TYPE
    186 #  define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
    187 # else
    188 #  define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
    189 # endif
    190 #else
    191 # define YYPARSE_DECL() yyparse(void)
    192 #endif
    193 
    194 /* Parameters sent to lex. */
    195 #ifdef YYLEX_PARAM
    196 # define YYLEX_DECL() yylex(void *YYLEX_PARAM)
    197 # define YYLEX yylex(YYLEX_PARAM)
    198 #else
    199 # define YYLEX_DECL() yylex(void)
    200 # define YYLEX yylex()
    201 #endif
    202 
    203 /* Parameters sent to yyerror. */
    204 #ifndef YYERROR_DECL
    205 #define YYERROR_DECL() yyerror(YYLTYPE loc, const char *s)
    206 #endif
    207 #ifndef YYERROR_CALL
    208 #define YYERROR_CALL(msg) yyerror(yylloc, msg)
    209 #endif
    210 
    211 #ifndef YYDESTRUCT_DECL
    212 #define YYDESTRUCT_DECL() yydestruct(const char *msg, int psymb, YYSTYPE *val, YYLTYPE *loc)
    213 #endif
    214 #ifndef YYDESTRUCT_CALL
    215 #define YYDESTRUCT_CALL(msg, psymb, val, loc) yydestruct(msg, psymb, val, loc)
    216 #endif
    217 
    218 extern int YYPARSE_DECL();
    219 
    220 #define PREFIX 257
    221 #define POSTFIX 258
    222 #define ID 259
    223 #define CONSTANT 260
    224 #define EXTERN 261
    225 #define REGISTER 262
    226 #define STATIC 263
    227 #define CONST 264
    228 #define VOLATILE 265
    229 #define IF 266
    230 #define THEN 267
    231 #define ELSE 268
    232 #define CLCL 269
    233 #define YYERRCODE 256
    234 typedef short YYINT;
    235 static const YYINT demo_lhs[] = {                        -1,
    236    15,   15,   15,   12,   18,    0,    4,   19,    4,   20,
    237     2,   21,    2,   10,   10,   13,   13,   11,   11,   11,
    238    11,   11,   14,   14,   22,   23,    3,    3,    8,    8,
    239    24,   25,    8,    8,    8,    8,   16,   16,   17,   17,
    240     9,    1,    1,    1,    1,    1,    1,    1,    1,    5,
    241    26,    5,   27,   28,    5,    5,   29,    5,    6,    6,
    242     7,
    243 };
    244 static const YYINT demo_len[] = {                         2,
    245     0,    1,    3,    2,    0,    2,    0,    0,    3,    0,
    246     5,    0,    6,    1,    3,    0,    2,    1,    1,    1,
    247     1,    1,    1,    1,    0,    0,    5,    1,    0,    1,
    248     0,    0,    5,    5,    5,    6,    0,    1,    4,    1,
    249     4,    4,    4,    4,    4,    4,    3,    1,    1,    1,
    250     0,    3,    0,    0,   11,    8,    0,    2,    0,    3,
    251     4,
    252 };
    253 static const YYINT demo_defred[] = {                      5,
    254     0,    7,    0,    0,   20,   21,   22,   23,   24,    2,
    255     9,    8,   14,   19,   18,    0,    0,    0,   15,    0,
    256     3,   16,   31,   30,    0,    0,    0,   32,   11,   25,
    257    25,   25,    0,   17,   26,    0,   26,    0,    0,    8,
    258    13,    0,    0,    0,   40,    8,    0,    0,    8,   48,
    259    49,    0,   59,    0,   33,    0,    0,   16,   31,    0,
    260    31,   31,   31,   31,   31,   35,    0,    0,    0,    0,
    261    47,    0,    0,    0,    0,    0,   61,    0,    0,   39,
    262     0,    0,   44,   46,   45,    0,   50,   60,    0,    0,
    263    31,    0,   58,    0,   52,    0,    0,   53,    0,    0,
    264    54,    0,   55,
    265 };
    266 static const YYINT demo_stos[] = {                        0,
    267   271,  289,  275,  290,  261,  262,  263,  264,  265,  269,
    268   273,  281,  282,  283,  285,  286,  290,  259,  282,  291,
    269   269,   42,   40,  259,  274,  279,  284,  295,   59,   44,
    270    40,   91,  292,  285,  293,  296,  293,  293,  293,  123,
    271   278,  294,  279,  294,  280,  281,  287,  288,   42,  259,
    272   260,  272,  290,  279,   41,  279,  290,   41,   44,  290,
    273    43,   45,   42,   47,   37,   93,  277,  291,  284,  295,
    274   272,  295,  295,  295,  295,  295,  125,  290,  279,  280,
    275   272,  272,  272,  272,  272,  266,  273,  276,  297,  300,
    276    40,  272,  278,  295,   59,  272,   41,  267,  298,  276,
    277   268,  299,  276,
    278 };
    279 static const YYINT demo_dgoto[] = {                       1,
    280    52,   87,   25,    3,   88,   67,   41,   26,   45,   12,
    281    13,   14,   27,   15,   16,   47,   48,    2,    4,   20,
    282    33,   35,   42,   28,   36,   89,   99,  102,   90,
    283 };
    284 static const YYINT demo_sindex[] = {                      0,
    285     0,    0,    0, -124,    0,    0,    0,    0,    0,    0,
    286     0,    0,    0,    0,    0, -256, -124,    0,    0,  -33,
    287     0,    0,    0,    0,   34,   -4, -205,    0,    0,    0,
    288     0,    0, -110,    0,    0,  -33,    0, -124,  -15,    0,
    289     0,  -33,  -36,  -33,    0,    0,    4,    7,    0,    0,
    290     0,    5,    0,   -4,    0,   -4, -124,    0,    0,  -15,
    291     0,    0,    0,    0,    0,    0,  -46,  -33, -205, -124,
    292     0,  -15,  -15,  -15,  -15,  -15,    0,  -91,   -4,    0,
    293   122,  122,    0,    0,    0,   40,    0,    0,  -15, -110,
    294     0,  106,    0,  -15,    0,  113, -183,    0,  -91,    0,
    295     0,  -91,    0,
    296 };
    297 static const YYINT demo_rindex[] = {                      0,
    298     0,    0,    1, -157,    0,    0,    0,    0,    0,    0,
    299     0,    0,    0,    0,    0,    0,  -28,  -22,    0,  -29,
    300     0,    0,    0,    0,    0,  -27,  -34,    0,    0,    0,
    301     0,    0,    0,    0,    0,    8,    0,  -12,    0,    0,
    302     0,  -20,    0,   32,    0,    0,    0,   69,    0,    0,
    303     0,    0,    0,  -18,    0,   56,   33,    0,    0,    0,
    304     0,    0,    0,    0,    0,    0,  -31,   -1,   -6, -157,
    305     0,    0,    0,    0,    0,    0,    0,  -14,   63,    0,
    306    13,   23,    0,    0,    0,    0,    0,    0,    0,    0,
    307     0,    0,    0,    0,    0,    0,    0,    0,  -14,  -42,
    308     0,  -14,    0,
    309 };
    310 #if YYBTYACC
    311 static const YYINT demo_cindex[] = {                      0,
    312     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    313     0,    0,    0,    0,    0,    0, -145, -150,    0,   81,
    314     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    315     0,    0,    0,    0,    0,   82,    0,    0,    0,    0,
    316     0,   91,    0,  112,    0,    0,    0,    0,    0,    0,
    317     0,    0,    0,    0,    0,    0, -113,    0,    0,    0,
    318     0,    0,    0,    0,    0,    0,    0,  117,    0,    0,
    319     0,    0,    0,    0,    0,    0,    0,  -98,    0,    0,
    320     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    321     0,    0,    0,    0,    0,    0,    0,    0,  -96,  -92,
    322     0,  -82,    0,
    323 };
    324 #endif
    325 static const YYINT demo_gindex[] = {                      0,
    326    53,  175,    0,    0,    9,    0,   90,   76,  111,   27,
    327    29,    0,  124,  -25,    0,    0,    0,    0,   21,  126,
    328     0,  136,  147,   71,    0,    0,    0,    0,    0,
    329 };
    330 #define YYTABLESIZE 270
    331 static const YYINT demo_table[] = {                      56,
    332     6,   34,   18,   31,   55,   25,   25,   25,   22,   25,
    333     8,   10,   40,   10,   29,   10,   28,    4,    4,    4,
    334    29,    4,   34,   29,   25,   34,   49,   51,   37,   29,
    335    10,   28,   17,   36,   36,   31,    4,   36,   29,   29,
    336    34,   65,   29,   34,   58,   19,   63,   61,   29,   62,
    337    59,   64,   36,   42,   32,   42,   25,   42,    8,    9,
    338    53,   29,   10,   43,   46,   43,   57,   43,    4,   60,
    339    29,   42,   10,   10,   10,   29,   10,   30,   77,   91,
    340    56,   43,   56,   98,   36,   19,   32,   78,   25,   29,
    341    29,    8,   29,   29,   10,   12,   46,   66,   29,   27,
    342     4,    1,   29,   41,   34,   42,   41,  100,   57,   38,
    343   103,   43,   71,    0,   27,   43,   36,   54,    4,   56,
    344     7,    7,   29,   10,   81,   82,   83,   84,   85,   70,
    345     7,   72,   73,   74,   75,   76,    5,    6,    7,    8,
    346     9,   92,   65,   79,   10,    0,   96,   63,   61,   65,
    347    62,    7,   64,   97,   63,   61,    7,   62,   65,   64,
    348     9,   94,    9,   63,   95,   37,   38,   39,   64,    5,
    349     6,    7,    8,    9,   86,   13,    9,   10,   11,   93,
    350    80,   69,   68,   44,    0,    0,    0,    0,    0,    0,
    351     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    352     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    353     0,    0,    0,    0,    0,    0,   56,   56,   56,   56,
    354    56,   56,   56,   56,   25,   24,   56,    8,    8,    8,
    355     8,    8,    8,    8,    8,    0,    4,    8,    4,    4,
    356     4,    4,    4,   50,   51,   51,    1,    0,    0,    0,
    357     0,    0,    0,    0,    0,    0,    0,    0,    0,    8,
    358     0,    8,    8,    8,    8,    8,    0,    0,    0,    8,
    359 };
    360 static const YYINT demo_check[] = {                      42,
    361     0,   27,  259,   40,   41,   40,   41,   42,   42,   44,
    362    42,   40,  123,   42,   44,   44,   44,   40,   41,   42,
    363    41,   44,   41,   44,   59,   44,   42,   42,   41,   59,
    364    59,   59,   12,   40,   41,   40,   59,   44,   59,   41,
    365    59,   37,   44,   69,   41,   17,   42,   43,   41,   45,
    366    44,   47,   59,   41,   91,   43,   91,   45,  264,  265,
    367    40,   91,   91,   41,   38,   43,   46,   45,   91,   49,
    368    91,   59,   40,   41,   42,   44,   44,   44,  125,   40,
    369   123,   59,  125,  267,   91,   57,   91,   67,  123,   91,
    370    59,  123,   59,  123,  123,  123,   70,   93,   91,   44,
    371   123,  259,  123,   41,  123,   93,   44,   99,  123,   41,
    372   102,   36,   60,  259,   59,   93,  123,   42,  269,   44,
    373    40,   40,   91,   91,   72,   73,   74,   75,   76,   59,
    374    40,   61,   62,   63,   64,   65,  261,  262,  263,  264,
    375   265,   89,   37,   68,  269,  259,   94,   42,   43,   37,
    376    45,   40,   47,   41,   42,   43,   40,   45,   37,   47,
    377   259,   91,  259,   42,   59,   30,   31,   32,   47,  261,
    378   262,  263,  264,  265,  266,  268,  259,  269,    4,   90,
    379    70,   58,   57,   37,   -1,   -1,   -1,   -1,   -1,   -1,
    380    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    381    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    382    -1,   -1,   -1,   -1,   -1,   -1,  259,  260,  261,  262,
    383   263,  264,  265,  266,  259,  259,  269,  259,  260,  261,
    384   262,  263,  264,  265,  266,   -1,  259,  269,  261,  262,
    385   263,  264,  265,  259,  260,  260,  259,   -1,   -1,   -1,
    386    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  259,
    387    -1,  261,  262,  263,  264,  265,   -1,   -1,   -1,  269,
    388 };
    389 #if YYBTYACC
    390 static const YYINT demo_ctable[] = {                     -1,
    391     1,   10,   -1,   21,    4,   -1,   23,   29,   -1,    1,
    392    51,   -1,  101,   56,   -1,   -1,   -1,   -1,   -1,   -1,
    393    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    394    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    395    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    396    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    397    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    398    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    399    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    400    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    401    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    402    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    403    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    404    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    405    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    406    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    407    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    408    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    409    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    410    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    411    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    412    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    413    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    414    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    415    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    416    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    417    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    418 };
    419 #endif
    420 #define YYFINAL 1
    421 #ifndef YYDEBUG
    422 #define YYDEBUG 0
    423 #endif
    424 #define YYMAXTOKEN 269
    425 #define YYUNDFTOKEN 301
    426 #define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a))
    427 #if YYDEBUG
    428 static const char *const demo_name[] = {
    429 
    430 "$end",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    431 "'%'",0,0,"'('","')'","'*'","'+'","','","'-'","'.'","'/'",0,0,0,0,0,0,0,0,0,0,0,
    432 "';'",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,
    433 "']'",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,
    434 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,
    435 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,
    436 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,
    437 0,0,0,0,0,0,0,0,0,"error","PREFIX","POSTFIX","ID","CONSTANT","EXTERN",
    438 "REGISTER","STATIC","CONST","VOLATILE","IF","THEN","ELSE","CLCL","$accept",
    439 "input","expr","decl","declarator_list","decl_list","statement",
    440 "statement_list","block_statement","declarator","formal_arg","decl_specs",
    441 "decl_spec","typename","cv_quals","cv_qual","opt_scope","formal_arg_list",
    442 "nonempty_formal_arg_list","$$1","$$2","$$3","$$4","$$5","$$6","$$7","$$8",
    443 "$$9","$$10","$$11","$$12","illegal-symbol",
    444 };
    445 static const char *const demo_rule[] = {
    446 "$accept : input",
    447 "opt_scope :",
    448 "opt_scope : CLCL",
    449 "opt_scope : opt_scope ID CLCL",
    450 "typename : opt_scope ID",
    451 "$$1 :",
    452 "input : $$1 decl_list",
    453 "decl_list :",
    454 "$$2 :",
    455 "decl_list : decl_list $$2 decl",
    456 "$$3 :",
    457 "decl : decl_specs $$2 $$3 declarator_list ';'",
    458 "$$4 :",
    459 "decl : decl_specs $$2 $$3 declarator $$4 block_statement",
    460 "decl_specs : decl_spec",
    461 "decl_specs : decl_specs $$2 decl_spec",
    462 "cv_quals :",
    463 "cv_quals : cv_quals cv_qual",
    464 "decl_spec : cv_qual",
    465 "decl_spec : typename",
    466 "decl_spec : EXTERN",
    467 "decl_spec : REGISTER",
    468 "decl_spec : STATIC",
    469 "cv_qual : CONST",
    470 "cv_qual : VOLATILE",
    471 "$$5 :",
    472 "$$6 :",
    473 "declarator_list : declarator_list ',' $$5 $$6 declarator",
    474 "declarator_list : declarator",
    475 "declarator :",
    476 "declarator : ID",
    477 "$$7 :",
    478 "$$8 :",
    479 "declarator : '(' $$7 $$8 declarator ')'",
    480 "declarator : '*' cv_quals $$5 $$6 declarator",
    481 "declarator : declarator '[' $$5 expr ']'",
    482 "declarator : declarator '(' $$5 formal_arg_list ')' cv_quals",
    483 "formal_arg_list :",
    484 "formal_arg_list : nonempty_formal_arg_list",
    485 "nonempty_formal_arg_list : nonempty_formal_arg_list ',' $$7 formal_arg",
    486 "nonempty_formal_arg_list : formal_arg",
    487 "formal_arg : decl_specs $$2 $$3 declarator",
    488 "expr : expr '+' $$7 expr",
    489 "expr : expr '-' $$7 expr",
    490 "expr : expr '*' $$7 expr",
    491 "expr : expr '%' $$7 expr",
    492 "expr : expr '/' $$7 expr",
    493 "expr : '*' $$2 expr",
    494 "expr : ID",
    495 "expr : CONSTANT",
    496 "statement : decl",
    497 "$$9 :",
    498 "statement : $$9 expr ';'",
    499 "$$10 :",
    500 "$$11 :",
    501 "statement : IF '(' $$7 expr ')' THEN $$10 statement ELSE $$11 statement",
    502 "statement : IF '(' $$7 expr ')' THEN $$10 statement",
    503 "$$12 :",
    504 "statement : $$12 block_statement",
    505 "statement_list :",
    506 "statement_list : statement_list $$2 statement",
    507 "block_statement : '{' $$2 statement_list '}'",
    508 
    509 };
    510 #endif
    511 
    512 int      yydebug;
    513 int      yynerrs;
    514 
    515 int      yyerrflag;
    516 int      yychar;
    517 YYSTYPE  yyval;
    518 YYSTYPE  yylval;
    519 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    520 YYLTYPE  yyloc; /* position returned by actions */
    521 YYLTYPE  yylloc; /* position from the lexer */
    522 #endif
    523 
    524 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    525 #ifndef YYLLOC_DEFAULT
    526 #define YYLLOC_DEFAULT(loc, rhs, n) \
    527 do \
    528 { \
    529     if (n == 0) \
    530     { \
    531         (loc).first_line   = ((rhs)[-1]).last_line; \
    532         (loc).first_column = ((rhs)[-1]).last_column; \
    533         (loc).last_line    = ((rhs)[-1]).last_line; \
    534         (loc).last_column  = ((rhs)[-1]).last_column; \
    535     } \
    536     else \
    537     { \
    538         (loc).first_line   = ((rhs)[ 0 ]).first_line; \
    539         (loc).first_column = ((rhs)[ 0 ]).first_column; \
    540         (loc).last_line    = ((rhs)[n-1]).last_line; \
    541         (loc).last_column  = ((rhs)[n-1]).last_column; \
    542     } \
    543 } while (0)
    544 #endif /* YYLLOC_DEFAULT */
    545 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
    546 #if YYBTYACC
    547 
    548 #ifndef YYLVQUEUEGROWTH
    549 #define YYLVQUEUEGROWTH 32
    550 #endif
    551 #endif /* YYBTYACC */
    552 
    553 /* define the initial stack-sizes */
    554 #ifdef YYSTACKSIZE
    555 #undef YYMAXDEPTH
    556 #define YYMAXDEPTH  YYSTACKSIZE
    557 #else
    558 #ifdef YYMAXDEPTH
    559 #define YYSTACKSIZE YYMAXDEPTH
    560 #else
    561 #define YYSTACKSIZE 10000
    562 #define YYMAXDEPTH  10000
    563 #endif
    564 #endif
    565 
    566 #ifndef YYINITSTACKSIZE
    567 #define YYINITSTACKSIZE 200
    568 #endif
    569 
    570 typedef struct {
    571     unsigned stacksize;
    572     short    *s_base;
    573     short    *s_mark;
    574     short    *s_last;
    575     YYSTYPE  *l_base;
    576     YYSTYPE  *l_mark;
    577 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    578     YYLTYPE  *p_base;
    579     YYLTYPE  *p_mark;
    580 #endif
    581 } YYSTACKDATA;
    582 #if YYBTYACC
    583 
    584 struct YYParseState_s
    585 {
    586     struct YYParseState_s *save;    /* Previously saved parser state */
    587     YYSTACKDATA            yystack; /* saved parser stack */
    588     int                    state;   /* saved parser state */
    589     int                    errflag; /* saved error recovery status */
    590     int                    lexeme;  /* saved index of the conflict lexeme in the lexical queue */
    591     YYINT                  ctry;    /* saved index in yyctable[] for this conflict */
    592 };
    593 typedef struct YYParseState_s YYParseState;
    594 #endif /* YYBTYACC */
    595 /* variables for the parser stack */
    596 static YYSTACKDATA yystack;
    597 #if YYBTYACC
    598 
    599 /* Current parser state */
    600 static YYParseState *yyps = 0;
    601 
    602 /* yypath != NULL: do the full parse, starting at *yypath parser state. */
    603 static YYParseState *yypath = 0;
    604 
    605 /* Base of the lexical value queue */
    606 static YYSTYPE *yylvals = 0;
    607 
    608 /* Current position at lexical value queue */
    609 static YYSTYPE *yylvp = 0;
    610 
    611 /* End position of lexical value queue */
    612 static YYSTYPE *yylve = 0;
    613 
    614 /* The last allocated position at the lexical value queue */
    615 static YYSTYPE *yylvlim = 0;
    616 
    617 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    618 /* Base of the lexical position queue */
    619 static YYLTYPE *yylpsns = 0;
    620 
    621 /* Current position at lexical position queue */
    622 static YYLTYPE *yylpp = 0;
    623 
    624 /* End position of lexical position queue */
    625 static YYLTYPE *yylpe = 0;
    626 
    627 /* The last allocated position at the lexical position queue */
    628 static YYLTYPE *yylplim = 0;
    629 #endif
    630 
    631 /* Current position at lexical token queue */
    632 static short  *yylexp = 0;
    633 
    634 static short  *yylexemes = 0;
    635 #endif /* YYBTYACC */
    636 #line 200 "btyacc_demo.y"
    637 
    638 extern int YYLEX_DECL();
    639 extern void YYERROR_DECL();
    640 
    641 extern Scope *global_scope;
    642 
    643 extern Decl * lookup(Scope *scope, char *id);
    644 extern Scope * new_scope(Scope *outer_scope);
    645 extern Scope * start_fn_def(Scope *scope, Decl *fn_decl);
    646 extern void finish_fn_def(Decl *fn_decl, Code *block);
    647 extern Type * type_combine(Type *specs, Type *spec);
    648 extern Type * bare_extern(void);
    649 extern Type * bare_register(void);
    650 extern Type * bare_static(void);
    651 extern Type * bare_const(void);
    652 extern Type * bare_volatile(void);
    653 extern Decl * declare(Scope *scope, char *id, Type *type);
    654 extern Decl * make_pointer(Decl *decl, Type *type);
    655 extern Decl * make_array(Type *type, Expr *expr);
    656 extern Decl * build_function(Decl *decl, Decl_List *dlist, Type *type);
    657 extern Decl_List * append_dlist(Decl_List *dlist, Decl *decl);
    658 extern Decl_List * build_dlist(Decl *decl);
    659 extern Expr * build_expr(Expr *left, enum Operator op, Expr *right);
    660 extern Expr * var_expr(Scope *scope, char *id);
    661 extern Code * build_expr_code(Expr *expr);
    662 extern Code * build_if(Expr *cond_expr, Code *then_stmt, Code *else_stmt);
    663 extern Code * code_append(Code *stmt_list, Code *stmt);
    664 #line 663 "btyacc_demo.tab.c"
    665 
    666 /* Release memory associated with symbol. */
    667 #if ! defined YYDESTRUCT_IS_DECLARED
    668 static void
    669 YYDESTRUCT_DECL()
    670 {
    671     switch (psymb)
    672     {
    673 	case 43:
    674 #line 83 "btyacc_demo.y"
    675 	{ printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
    676 			 msg,
    677 			 (*loc).first_line, (*loc).first_column,
    678 			 (*loc).last_line, (*loc).last_column);
    679 		  /* in this example, we don't know what to do here */ }
    680 	break;
    681 #line 680 "btyacc_demo.tab.c"
    682 	case 45:
    683 #line 83 "btyacc_demo.y"
    684 	{ printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
    685 			 msg,
    686 			 (*loc).first_line, (*loc).first_column,
    687 			 (*loc).last_line, (*loc).last_column);
    688 		  /* in this example, we don't know what to do here */ }
    689 	break;
    690 #line 689 "btyacc_demo.tab.c"
    691 	case 42:
    692 #line 83 "btyacc_demo.y"
    693 	{ printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
    694 			 msg,
    695 			 (*loc).first_line, (*loc).first_column,
    696 			 (*loc).last_line, (*loc).last_column);
    697 		  /* in this example, we don't know what to do here */ }
    698 	break;
    699 #line 698 "btyacc_demo.tab.c"
    700 	case 47:
    701 #line 83 "btyacc_demo.y"
    702 	{ printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
    703 			 msg,
    704 			 (*loc).first_line, (*loc).first_column,
    705 			 (*loc).last_line, (*loc).last_column);
    706 		  /* in this example, we don't know what to do here */ }
    707 	break;
    708 #line 707 "btyacc_demo.tab.c"
    709 	case 37:
    710 #line 83 "btyacc_demo.y"
    711 	{ printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
    712 			 msg,
    713 			 (*loc).first_line, (*loc).first_column,
    714 			 (*loc).last_line, (*loc).last_column);
    715 		  /* in this example, we don't know what to do here */ }
    716 	break;
    717 #line 716 "btyacc_demo.tab.c"
    718 	case 257:
    719 #line 83 "btyacc_demo.y"
    720 	{ printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
    721 			 msg,
    722 			 (*loc).first_line, (*loc).first_column,
    723 			 (*loc).last_line, (*loc).last_column);
    724 		  /* in this example, we don't know what to do here */ }
    725 	break;
    726 #line 725 "btyacc_demo.tab.c"
    727 	case 258:
    728 #line 83 "btyacc_demo.y"
    729 	{ printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
    730 			 msg,
    731 			 (*loc).first_line, (*loc).first_column,
    732 			 (*loc).last_line, (*loc).last_column);
    733 		  /* in this example, we don't know what to do here */ }
    734 	break;
    735 #line 734 "btyacc_demo.tab.c"
    736 	case 40:
    737 #line 83 "btyacc_demo.y"
    738 	{ printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
    739 			 msg,
    740 			 (*loc).first_line, (*loc).first_column,
    741 			 (*loc).last_line, (*loc).last_column);
    742 		  /* in this example, we don't know what to do here */ }
    743 	break;
    744 #line 743 "btyacc_demo.tab.c"
    745 	case 91:
    746 #line 83 "btyacc_demo.y"
    747 	{ printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
    748 			 msg,
    749 			 (*loc).first_line, (*loc).first_column,
    750 			 (*loc).last_line, (*loc).last_column);
    751 		  /* in this example, we don't know what to do here */ }
    752 	break;
    753 #line 752 "btyacc_demo.tab.c"
    754 	case 46:
    755 #line 83 "btyacc_demo.y"
    756 	{ printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
    757 			 msg,
    758 			 (*loc).first_line, (*loc).first_column,
    759 			 (*loc).last_line, (*loc).last_column);
    760 		  /* in this example, we don't know what to do here */ }
    761 	break;
    762 #line 761 "btyacc_demo.tab.c"
    763 	case 259:
    764 #line 78 "btyacc_demo.y"
    765 	{ printf("%s accessed by symbol of any type other than <decl>  @ position[%d,%d..%d,%d]\n",
    766 			 msg,
    767 			 (*loc).first_line, (*loc).first_column,
    768 			 (*loc).last_line, (*loc).last_column);
    769 		  free((*val).id); }
    770 	break;
    771 #line 770 "btyacc_demo.tab.c"
    772 	case 260:
    773 #line 78 "btyacc_demo.y"
    774 	{ printf("%s accessed by symbol of any type other than <decl>  @ position[%d,%d..%d,%d]\n",
    775 			 msg,
    776 			 (*loc).first_line, (*loc).first_column,
    777 			 (*loc).last_line, (*loc).last_column);
    778 		  free((*val).expr); }
    779 	break;
    780 #line 779 "btyacc_demo.tab.c"
    781 	case 261:
    782 #line 83 "btyacc_demo.y"
    783 	{ printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
    784 			 msg,
    785 			 (*loc).first_line, (*loc).first_column,
    786 			 (*loc).last_line, (*loc).last_column);
    787 		  /* in this example, we don't know what to do here */ }
    788 	break;
    789 #line 788 "btyacc_demo.tab.c"
    790 	case 262:
    791 #line 83 "btyacc_demo.y"
    792 	{ printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
    793 			 msg,
    794 			 (*loc).first_line, (*loc).first_column,
    795 			 (*loc).last_line, (*loc).last_column);
    796 		  /* in this example, we don't know what to do here */ }
    797 	break;
    798 #line 797 "btyacc_demo.tab.c"
    799 	case 263:
    800 #line 83 "btyacc_demo.y"
    801 	{ printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
    802 			 msg,
    803 			 (*loc).first_line, (*loc).first_column,
    804 			 (*loc).last_line, (*loc).last_column);
    805 		  /* in this example, we don't know what to do here */ }
    806 	break;
    807 #line 806 "btyacc_demo.tab.c"
    808 	case 264:
    809 #line 83 "btyacc_demo.y"
    810 	{ printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
    811 			 msg,
    812 			 (*loc).first_line, (*loc).first_column,
    813 			 (*loc).last_line, (*loc).last_column);
    814 		  /* in this example, we don't know what to do here */ }
    815 	break;
    816 #line 815 "btyacc_demo.tab.c"
    817 	case 265:
    818 #line 83 "btyacc_demo.y"
    819 	{ printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
    820 			 msg,
    821 			 (*loc).first_line, (*loc).first_column,
    822 			 (*loc).last_line, (*loc).last_column);
    823 		  /* in this example, we don't know what to do here */ }
    824 	break;
    825 #line 824 "btyacc_demo.tab.c"
    826 	case 266:
    827 #line 83 "btyacc_demo.y"
    828 	{ printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
    829 			 msg,
    830 			 (*loc).first_line, (*loc).first_column,
    831 			 (*loc).last_line, (*loc).last_column);
    832 		  /* in this example, we don't know what to do here */ }
    833 	break;
    834 #line 833 "btyacc_demo.tab.c"
    835 	case 267:
    836 #line 83 "btyacc_demo.y"
    837 	{ printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
    838 			 msg,
    839 			 (*loc).first_line, (*loc).first_column,
    840 			 (*loc).last_line, (*loc).last_column);
    841 		  /* in this example, we don't know what to do here */ }
    842 	break;
    843 #line 842 "btyacc_demo.tab.c"
    844 	case 268:
    845 #line 83 "btyacc_demo.y"
    846 	{ printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
    847 			 msg,
    848 			 (*loc).first_line, (*loc).first_column,
    849 			 (*loc).last_line, (*loc).last_column);
    850 		  /* in this example, we don't know what to do here */ }
    851 	break;
    852 #line 851 "btyacc_demo.tab.c"
    853 	case 269:
    854 #line 83 "btyacc_demo.y"
    855 	{ printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
    856 			 msg,
    857 			 (*loc).first_line, (*loc).first_column,
    858 			 (*loc).last_line, (*loc).last_column);
    859 		  /* in this example, we don't know what to do here */ }
    860 	break;
    861 #line 860 "btyacc_demo.tab.c"
    862 	case 59:
    863 #line 83 "btyacc_demo.y"
    864 	{ printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
    865 			 msg,
    866 			 (*loc).first_line, (*loc).first_column,
    867 			 (*loc).last_line, (*loc).last_column);
    868 		  /* in this example, we don't know what to do here */ }
    869 	break;
    870 #line 869 "btyacc_demo.tab.c"
    871 	case 44:
    872 #line 83 "btyacc_demo.y"
    873 	{ printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
    874 			 msg,
    875 			 (*loc).first_line, (*loc).first_column,
    876 			 (*loc).last_line, (*loc).last_column);
    877 		  /* in this example, we don't know what to do here */ }
    878 	break;
    879 #line 878 "btyacc_demo.tab.c"
    880 	case 41:
    881 #line 83 "btyacc_demo.y"
    882 	{ printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
    883 			 msg,
    884 			 (*loc).first_line, (*loc).first_column,
    885 			 (*loc).last_line, (*loc).last_column);
    886 		  /* in this example, we don't know what to do here */ }
    887 	break;
    888 #line 887 "btyacc_demo.tab.c"
    889 	case 93:
    890 #line 83 "btyacc_demo.y"
    891 	{ printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
    892 			 msg,
    893 			 (*loc).first_line, (*loc).first_column,
    894 			 (*loc).last_line, (*loc).last_column);
    895 		  /* in this example, we don't know what to do here */ }
    896 	break;
    897 #line 896 "btyacc_demo.tab.c"
    898 	case 123:
    899 #line 83 "btyacc_demo.y"
    900 	{ printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
    901 			 msg,
    902 			 (*loc).first_line, (*loc).first_column,
    903 			 (*loc).last_line, (*loc).last_column);
    904 		  /* in this example, we don't know what to do here */ }
    905 	break;
    906 #line 905 "btyacc_demo.tab.c"
    907 	case 125:
    908 #line 83 "btyacc_demo.y"
    909 	{ printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
    910 			 msg,
    911 			 (*loc).first_line, (*loc).first_column,
    912 			 (*loc).last_line, (*loc).last_column);
    913 		  /* in this example, we don't know what to do here */ }
    914 	break;
    915 #line 914 "btyacc_demo.tab.c"
    916 	case 270:
    917 #line 83 "btyacc_demo.y"
    918 	{ printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
    919 			 msg,
    920 			 (*loc).first_line, (*loc).first_column,
    921 			 (*loc).last_line, (*loc).last_column);
    922 		  /* in this example, we don't know what to do here */ }
    923 	break;
    924 #line 923 "btyacc_demo.tab.c"
    925 	case 271:
    926 #line 83 "btyacc_demo.y"
    927 	{ printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
    928 			 msg,
    929 			 (*loc).first_line, (*loc).first_column,
    930 			 (*loc).last_line, (*loc).last_column);
    931 		  /* in this example, we don't know what to do here */ }
    932 	break;
    933 #line 932 "btyacc_demo.tab.c"
    934 	case 272:
    935 #line 78 "btyacc_demo.y"
    936 	{ printf("%s accessed by symbol of any type other than <decl>  @ position[%d,%d..%d,%d]\n",
    937 			 msg,
    938 			 (*loc).first_line, (*loc).first_column,
    939 			 (*loc).last_line, (*loc).last_column);
    940 		  free((*val).expr); }
    941 	break;
    942 #line 941 "btyacc_demo.tab.c"
    943 	case 273:
    944 #line 67 "btyacc_demo.y"
    945 	{ /* 'msg' is a 'char *' indicating the context of destructor invocation*/
    946 		  printf("%s accessed by symbol \"decl\" (case s.b. 273) @ position[%d,%d..%d,%d]\n",
    947 			 msg,
    948 			 (*loc).first_line, (*loc).first_column,
    949 			 (*loc).last_line, (*loc).last_column);
    950 		  free((*val).decl->scope); free((*val).decl->type); }
    951 	break;
    952 #line 951 "btyacc_demo.tab.c"
    953 	case 274:
    954 #line 83 "btyacc_demo.y"
    955 	{ printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
    956 			 msg,
    957 			 (*loc).first_line, (*loc).first_column,
    958 			 (*loc).last_line, (*loc).last_column);
    959 		  /* in this example, we don't know what to do here */ }
    960 	break;
    961 #line 960 "btyacc_demo.tab.c"
    962 	case 275:
    963 #line 83 "btyacc_demo.y"
    964 	{ printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
    965 			 msg,
    966 			 (*loc).first_line, (*loc).first_column,
    967 			 (*loc).last_line, (*loc).last_column);
    968 		  /* in this example, we don't know what to do here */ }
    969 	break;
    970 #line 969 "btyacc_demo.tab.c"
    971 	case 276:
    972 #line 78 "btyacc_demo.y"
    973 	{ printf("%s accessed by symbol of any type other than <decl>  @ position[%d,%d..%d,%d]\n",
    974 			 msg,
    975 			 (*loc).first_line, (*loc).first_column,
    976 			 (*loc).last_line, (*loc).last_column);
    977 		  free((*val).code); }
    978 	break;
    979 #line 978 "btyacc_demo.tab.c"
    980 	case 277:
    981 #line 78 "btyacc_demo.y"
    982 	{ printf("%s accessed by symbol of any type other than <decl>  @ position[%d,%d..%d,%d]\n",
    983 			 msg,
    984 			 (*loc).first_line, (*loc).first_column,
    985 			 (*loc).last_line, (*loc).last_column);
    986 		  free((*val).code); }
    987 	break;
    988 #line 987 "btyacc_demo.tab.c"
    989 	case 278:
    990 #line 78 "btyacc_demo.y"
    991 	{ printf("%s accessed by symbol of any type other than <decl>  @ position[%d,%d..%d,%d]\n",
    992 			 msg,
    993 			 (*loc).first_line, (*loc).first_column,
    994 			 (*loc).last_line, (*loc).last_column);
    995 		  free((*val).code); }
    996 	break;
    997 #line 996 "btyacc_demo.tab.c"
    998 	case 279:
    999 #line 73 "btyacc_demo.y"
   1000 	{ printf("%s accessed by symbol with type <decl> (case s.b. 279 & 280) @ position[%d,%d..%d,%d]\n",
   1001 			 msg,
   1002 			 (*loc).first_line, (*loc).first_column,
   1003 			 (*loc).last_line, (*loc).last_column);
   1004 		  free((*val).decl); }
   1005 	break;
   1006 #line 1005 "btyacc_demo.tab.c"
   1007 	case 280:
   1008 #line 73 "btyacc_demo.y"
   1009 	{ printf("%s accessed by symbol with type <decl> (case s.b. 279 & 280) @ position[%d,%d..%d,%d]\n",
   1010 			 msg,
   1011 			 (*loc).first_line, (*loc).first_column,
   1012 			 (*loc).last_line, (*loc).last_column);
   1013 		  free((*val).decl); }
   1014 	break;
   1015 #line 1014 "btyacc_demo.tab.c"
   1016 	case 281:
   1017 #line 78 "btyacc_demo.y"
   1018 	{ printf("%s accessed by symbol of any type other than <decl>  @ position[%d,%d..%d,%d]\n",
   1019 			 msg,
   1020 			 (*loc).first_line, (*loc).first_column,
   1021 			 (*loc).last_line, (*loc).last_column);
   1022 		  free((*val).type); }
   1023 	break;
   1024 #line 1023 "btyacc_demo.tab.c"
   1025 	case 282:
   1026 #line 78 "btyacc_demo.y"
   1027 	{ printf("%s accessed by symbol of any type other than <decl>  @ position[%d,%d..%d,%d]\n",
   1028 			 msg,
   1029 			 (*loc).first_line, (*loc).first_column,
   1030 			 (*loc).last_line, (*loc).last_column);
   1031 		  free((*val).type); }
   1032 	break;
   1033 #line 1032 "btyacc_demo.tab.c"
   1034 	case 283:
   1035 #line 78 "btyacc_demo.y"
   1036 	{ printf("%s accessed by symbol of any type other than <decl>  @ position[%d,%d..%d,%d]\n",
   1037 			 msg,
   1038 			 (*loc).first_line, (*loc).first_column,
   1039 			 (*loc).last_line, (*loc).last_column);
   1040 		  free((*val).type); }
   1041 	break;
   1042 #line 1041 "btyacc_demo.tab.c"
   1043 	case 284:
   1044 #line 78 "btyacc_demo.y"
   1045 	{ printf("%s accessed by symbol of any type other than <decl>  @ position[%d,%d..%d,%d]\n",
   1046 			 msg,
   1047 			 (*loc).first_line, (*loc).first_column,
   1048 			 (*loc).last_line, (*loc).last_column);
   1049 		  free((*val).type); }
   1050 	break;
   1051 #line 1050 "btyacc_demo.tab.c"
   1052 	case 285:
   1053 #line 78 "btyacc_demo.y"
   1054 	{ printf("%s accessed by symbol of any type other than <decl>  @ position[%d,%d..%d,%d]\n",
   1055 			 msg,
   1056 			 (*loc).first_line, (*loc).first_column,
   1057 			 (*loc).last_line, (*loc).last_column);
   1058 		  free((*val).type); }
   1059 	break;
   1060 #line 1059 "btyacc_demo.tab.c"
   1061 	case 286:
   1062 #line 78 "btyacc_demo.y"
   1063 	{ printf("%s accessed by symbol of any type other than <decl>  @ position[%d,%d..%d,%d]\n",
   1064 			 msg,
   1065 			 (*loc).first_line, (*loc).first_column,
   1066 			 (*loc).last_line, (*loc).last_column);
   1067 		  free((*val).scope); }
   1068 	break;
   1069 #line 1068 "btyacc_demo.tab.c"
   1070 	case 287:
   1071 #line 78 "btyacc_demo.y"
   1072 	{ printf("%s accessed by symbol of any type other than <decl>  @ position[%d,%d..%d,%d]\n",
   1073 			 msg,
   1074 			 (*loc).first_line, (*loc).first_column,
   1075 			 (*loc).last_line, (*loc).last_column);
   1076 		  free((*val).dlist); }
   1077 	break;
   1078 #line 1077 "btyacc_demo.tab.c"
   1079 	case 288:
   1080 #line 78 "btyacc_demo.y"
   1081 	{ printf("%s accessed by symbol of any type other than <decl>  @ position[%d,%d..%d,%d]\n",
   1082 			 msg,
   1083 			 (*loc).first_line, (*loc).first_column,
   1084 			 (*loc).last_line, (*loc).last_column);
   1085 		  free((*val).dlist); }
   1086 	break;
   1087 #line 1086 "btyacc_demo.tab.c"
   1088 	case 289:
   1089 #line 78 "btyacc_demo.y"
   1090 	{ printf("%s accessed by symbol of any type other than <decl>  @ position[%d,%d..%d,%d]\n",
   1091 			 msg,
   1092 			 (*loc).first_line, (*loc).first_column,
   1093 			 (*loc).last_line, (*loc).last_column);
   1094 		  free((*val).scope); }
   1095 	break;
   1096 #line 1095 "btyacc_demo.tab.c"
   1097 	case 290:
   1098 #line 78 "btyacc_demo.y"
   1099 	{ printf("%s accessed by symbol of any type other than <decl>  @ position[%d,%d..%d,%d]\n",
   1100 			 msg,
   1101 			 (*loc).first_line, (*loc).first_column,
   1102 			 (*loc).last_line, (*loc).last_column);
   1103 		  free((*val).scope); }
   1104 	break;
   1105 #line 1104 "btyacc_demo.tab.c"
   1106 	case 291:
   1107 #line 78 "btyacc_demo.y"
   1108 	{ printf("%s accessed by symbol of any type other than <decl>  @ position[%d,%d..%d,%d]\n",
   1109 			 msg,
   1110 			 (*loc).first_line, (*loc).first_column,
   1111 			 (*loc).last_line, (*loc).last_column);
   1112 		  free((*val).type); }
   1113 	break;
   1114 #line 1113 "btyacc_demo.tab.c"
   1115 	case 292:
   1116 #line 78 "btyacc_demo.y"
   1117 	{ printf("%s accessed by symbol of any type other than <decl>  @ position[%d,%d..%d,%d]\n",
   1118 			 msg,
   1119 			 (*loc).first_line, (*loc).first_column,
   1120 			 (*loc).last_line, (*loc).last_column);
   1121 		  free((*val).scope); }
   1122 	break;
   1123 #line 1122 "btyacc_demo.tab.c"
   1124 	case 293:
   1125 #line 78 "btyacc_demo.y"
   1126 	{ printf("%s accessed by symbol of any type other than <decl>  @ position[%d,%d..%d,%d]\n",
   1127 			 msg,
   1128 			 (*loc).first_line, (*loc).first_column,
   1129 			 (*loc).last_line, (*loc).last_column);
   1130 		  free((*val).scope); }
   1131 	break;
   1132 #line 1131 "btyacc_demo.tab.c"
   1133 	case 294:
   1134 #line 78 "btyacc_demo.y"
   1135 	{ printf("%s accessed by symbol of any type other than <decl>  @ position[%d,%d..%d,%d]\n",
   1136 			 msg,
   1137 			 (*loc).first_line, (*loc).first_column,
   1138 			 (*loc).last_line, (*loc).last_column);
   1139 		  free((*val).type); }
   1140 	break;
   1141 #line 1140 "btyacc_demo.tab.c"
   1142 	case 295:
   1143 #line 78 "btyacc_demo.y"
   1144 	{ printf("%s accessed by symbol of any type other than <decl>  @ position[%d,%d..%d,%d]\n",
   1145 			 msg,
   1146 			 (*loc).first_line, (*loc).first_column,
   1147 			 (*loc).last_line, (*loc).last_column);
   1148 		  free((*val).scope); }
   1149 	break;
   1150 #line 1149 "btyacc_demo.tab.c"
   1151 	case 296:
   1152 #line 78 "btyacc_demo.y"
   1153 	{ printf("%s accessed by symbol of any type other than <decl>  @ position[%d,%d..%d,%d]\n",
   1154 			 msg,
   1155 			 (*loc).first_line, (*loc).first_column,
   1156 			 (*loc).last_line, (*loc).last_column);
   1157 		  free((*val).type); }
   1158 	break;
   1159 #line 1158 "btyacc_demo.tab.c"
   1160 	case 297:
   1161 #line 78 "btyacc_demo.y"
   1162 	{ printf("%s accessed by symbol of any type other than <decl>  @ position[%d,%d..%d,%d]\n",
   1163 			 msg,
   1164 			 (*loc).first_line, (*loc).first_column,
   1165 			 (*loc).last_line, (*loc).last_column);
   1166 		  free((*val).scope); }
   1167 	break;
   1168 #line 1167 "btyacc_demo.tab.c"
   1169 	case 298:
   1170 #line 78 "btyacc_demo.y"
   1171 	{ printf("%s accessed by symbol of any type other than <decl>  @ position[%d,%d..%d,%d]\n",
   1172 			 msg,
   1173 			 (*loc).first_line, (*loc).first_column,
   1174 			 (*loc).last_line, (*loc).last_column);
   1175 		  free((*val).scope); }
   1176 	break;
   1177 #line 1176 "btyacc_demo.tab.c"
   1178 	case 299:
   1179 #line 78 "btyacc_demo.y"
   1180 	{ printf("%s accessed by symbol of any type other than <decl>  @ position[%d,%d..%d,%d]\n",
   1181 			 msg,
   1182 			 (*loc).first_line, (*loc).first_column,
   1183 			 (*loc).last_line, (*loc).last_column);
   1184 		  free((*val).scope); }
   1185 	break;
   1186 #line 1185 "btyacc_demo.tab.c"
   1187 	case 300:
   1188 #line 78 "btyacc_demo.y"
   1189 	{ printf("%s accessed by symbol of any type other than <decl>  @ position[%d,%d..%d,%d]\n",
   1190 			 msg,
   1191 			 (*loc).first_line, (*loc).first_column,
   1192 			 (*loc).last_line, (*loc).last_column);
   1193 		  free((*val).scope); }
   1194 	break;
   1195 #line 1194 "btyacc_demo.tab.c"
   1196     }
   1197 }
   1198 #define YYDESTRUCT_IS_DECLARED 1
   1199 #endif
   1200 
   1201 /* For use in generated program */
   1202 #define yydepth (int)(yystack.s_mark - yystack.s_base)
   1203 #if YYBTYACC
   1204 #define yytrial (yyps->save)
   1205 #endif /* YYBTYACC */
   1206 
   1207 #if YYDEBUG
   1208 #include <stdio.h>         /* needed for printf */
   1209 #endif
   1210 
   1211 #include <stdlib.h>        /* needed for malloc, etc */
   1212 #include <string.h>        /* needed for memset */
   1213 
   1214 /* allocate initial stack or double stack size, up to YYMAXDEPTH */
   1215 static int yygrowstack(YYSTACKDATA *data)
   1216 {
   1217     int i;
   1218     unsigned newsize;
   1219     short *newss;
   1220     YYSTYPE *newvs;
   1221 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1222     YYLTYPE *newps;
   1223 #endif
   1224 
   1225     if ((newsize = data->stacksize) == 0)
   1226         newsize = YYINITSTACKSIZE;
   1227     else if (newsize >= YYMAXDEPTH)
   1228         return YYENOMEM;
   1229     else if ((newsize *= 2) > YYMAXDEPTH)
   1230         newsize = YYMAXDEPTH;
   1231 
   1232     i = (int) (data->s_mark - data->s_base);
   1233     newss = (short *)realloc(data->s_base, newsize * sizeof(*newss));
   1234     if (newss == 0)
   1235         return YYENOMEM;
   1236 
   1237     data->s_base = newss;
   1238     data->s_mark = newss + i;
   1239 
   1240     newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
   1241     if (newvs == 0)
   1242         return YYENOMEM;
   1243 
   1244     data->l_base = newvs;
   1245     data->l_mark = newvs + i;
   1246 
   1247 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1248     newps = (YYLTYPE *)realloc(data->p_base, newsize * sizeof(*newps));
   1249     if (newps == 0)
   1250         return YYENOMEM;
   1251 
   1252     data->p_base = newps;
   1253     data->p_mark = newps + i;
   1254 #endif
   1255 
   1256     data->stacksize = newsize;
   1257     data->s_last = data->s_base + newsize - 1;
   1258 
   1259 #if YYDEBUG
   1260     if (yydebug)
   1261         fprintf(stderr, "%sdebug: stack size increased to %d\n", YYPREFIX, newsize);
   1262 #endif
   1263     return 0;
   1264 }
   1265 
   1266 #if YYPURE || defined(YY_NO_LEAKS)
   1267 static void yyfreestack(YYSTACKDATA *data)
   1268 {
   1269     free(data->s_base);
   1270     free(data->l_base);
   1271 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1272     free(data->p_base);
   1273 #endif
   1274     memset(data, 0, sizeof(*data));
   1275 }
   1276 #else
   1277 #define yyfreestack(data) /* nothing */
   1278 #endif /* YYPURE || defined(YY_NO_LEAKS) */
   1279 #if YYBTYACC
   1280 
   1281 static YYParseState *
   1282 yyNewState(unsigned size)
   1283 {
   1284     YYParseState *p = (YYParseState *) malloc(sizeof(YYParseState));
   1285     if (p == NULL) return NULL;
   1286 
   1287     p->yystack.stacksize = size;
   1288     if (size == 0)
   1289     {
   1290         p->yystack.s_base = NULL;
   1291         p->yystack.l_base = NULL;
   1292 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1293         p->yystack.p_base = NULL;
   1294 #endif
   1295         return p;
   1296     }
   1297     p->yystack.s_base    = (short *) malloc(size * sizeof(short));
   1298     if (p->yystack.s_base == NULL) return NULL;
   1299     p->yystack.l_base    = (YYSTYPE *) malloc(size * sizeof(YYSTYPE));
   1300     if (p->yystack.l_base == NULL) return NULL;
   1301     memset(p->yystack.l_base, 0, size * sizeof(YYSTYPE));
   1302 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1303     p->yystack.p_base    = (YYLTYPE *) malloc(size * sizeof(YYLTYPE));
   1304     if (p->yystack.p_base == NULL) return NULL;
   1305     memset(p->yystack.p_base, 0, size * sizeof(YYLTYPE));
   1306 #endif
   1307 
   1308     return p;
   1309 }
   1310 
   1311 static void
   1312 yyFreeState(YYParseState *p)
   1313 {
   1314     yyfreestack(&p->yystack);
   1315     free(p);
   1316 }
   1317 #endif /* YYBTYACC */
   1318 
   1319 #define YYABORT  goto yyabort
   1320 #define YYREJECT goto yyabort
   1321 #define YYACCEPT goto yyaccept
   1322 #define YYERROR  goto yyerrlab
   1323 #if YYBTYACC
   1324 #define YYVALID        do { if (yyps->save)            goto yyvalid; } while(0)
   1325 #define YYVALID_NESTED do { if (yyps->save && \
   1326                                 yyps->save->save == 0) goto yyvalid; } while(0)
   1327 #endif /* YYBTYACC */
   1328 
   1329 int
   1330 YYPARSE_DECL()
   1331 {
   1332     int yym, yyn, yystate, yyresult;
   1333 #if YYBTYACC
   1334     int yynewerrflag;
   1335     YYParseState *yyerrctx = NULL;
   1336 #endif /* YYBTYACC */
   1337 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1338     YYLTYPE  yyerror_loc_range[2]; /* position of error start & end */
   1339 #endif
   1340 #if YYDEBUG
   1341     const char *yys;
   1342 
   1343     if ((yys = getenv("YYDEBUG")) != 0)
   1344     {
   1345         yyn = *yys;
   1346         if (yyn >= '0' && yyn <= '9')
   1347             yydebug = yyn - '0';
   1348     }
   1349     if (yydebug)
   1350         fprintf(stderr, "%sdebug[<# of symbols on state stack>]\n", YYPREFIX);
   1351 #endif
   1352 
   1353 #if YYBTYACC
   1354     yyps = yyNewState(0); if (yyps == 0) goto yyenomem;
   1355     yyps->save = 0;
   1356 #endif /* YYBTYACC */
   1357     yynerrs = 0;
   1358     yyerrflag = 0;
   1359     yychar = YYEMPTY;
   1360     yystate = 0;
   1361 
   1362 #if YYPURE
   1363     memset(&yystack, 0, sizeof(yystack));
   1364 #endif
   1365 
   1366     if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
   1367     yystack.s_mark = yystack.s_base;
   1368     yystack.l_mark = yystack.l_base;
   1369 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1370     yystack.p_mark = yystack.p_base;
   1371 #endif
   1372     yystate = 0;
   1373     *yystack.s_mark = 0;
   1374 
   1375 yyloop:
   1376     if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
   1377     if (yychar < 0)
   1378     {
   1379 #if YYBTYACC
   1380         do {
   1381         if (yylvp < yylve)
   1382         {
   1383             /* we're currently re-reading tokens */
   1384             yylval = *yylvp++;
   1385 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1386             yylloc = *yylpp++;
   1387 #endif
   1388             yychar = *yylexp++;
   1389             break;
   1390         }
   1391         if (yyps->save)
   1392         {
   1393             /* in trial mode; save scanner results for future parse attempts */
   1394             if (yylvp == yylvlim)
   1395             {   /* Enlarge lexical value queue */
   1396                 size_t p = (size_t) (yylvp - yylvals);
   1397                 size_t s = (size_t) (yylvlim - yylvals);
   1398 
   1399                 s += YYLVQUEUEGROWTH;
   1400                 if ((yylexemes = (short *)   realloc(yylexemes, s * sizeof(short))) == NULL) goto yyenomem;
   1401                 if ((yylvals   = (YYSTYPE *) realloc(yylvals, s * sizeof(YYSTYPE))) == NULL) goto yyenomem;
   1402 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1403                 if ((yylpsns   = (YYLTYPE *) realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL) goto yyenomem;
   1404 #endif
   1405                 yylvp   = yylve = yylvals + p;
   1406                 yylvlim = yylvals + s;
   1407 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1408                 yylpp   = yylpe = yylpsns + p;
   1409                 yylplim = yylpsns + s;
   1410 #endif
   1411                 yylexp  = yylexemes + p;
   1412             }
   1413             *yylexp = (short) YYLEX;
   1414             *yylvp++ = yylval;
   1415             yylve++;
   1416 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1417             *yylpp++ = yylloc;
   1418             yylpe++;
   1419 #endif
   1420             yychar = *yylexp++;
   1421             break;
   1422         }
   1423         /* normal operation, no conflict encountered */
   1424 #endif /* YYBTYACC */
   1425         yychar = YYLEX;
   1426 #if YYBTYACC
   1427         } while (0);
   1428 #endif /* YYBTYACC */
   1429         if (yychar < 0) yychar = YYEOF;
   1430         /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */
   1431 #if YYDEBUG
   1432         if (yydebug)
   1433         {
   1434             yys = yyname[YYTRANSLATE(yychar)];
   1435             fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)",
   1436                             YYDEBUGSTR, yydepth, yystate, yychar, yys);
   1437 #ifdef YYSTYPE_TOSTRING
   1438 #if YYBTYACC
   1439             if (!yytrial)
   1440 #endif /* YYBTYACC */
   1441                 fprintf(stderr, " <%s>", YYSTYPE_TOSTRING(yychar, yylval));
   1442 #endif
   1443             fputc('\n', stderr);
   1444         }
   1445 #endif
   1446     }
   1447 #if YYBTYACC
   1448 
   1449     /* Do we have a conflict? */
   1450     if (((yyn = yycindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
   1451         yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
   1452     {
   1453         YYINT ctry;
   1454 
   1455         if (yypath)
   1456         {
   1457             YYParseState *save;
   1458 #if YYDEBUG
   1459             if (yydebug)
   1460                 fprintf(stderr, "%s[%d]: CONFLICT in state %d: following successful trial parse\n",
   1461                                 YYDEBUGSTR, yydepth, yystate);
   1462 #endif
   1463             /* Switch to the next conflict context */
   1464             save = yypath;
   1465             yypath = save->save;
   1466             save->save = NULL;
   1467             ctry = save->ctry;
   1468             if (save->state != yystate) YYABORT;
   1469             yyFreeState(save);
   1470 
   1471         }
   1472         else
   1473         {
   1474 
   1475             /* Unresolved conflict - start/continue trial parse */
   1476             YYParseState *save;
   1477 #if YYDEBUG
   1478             if (yydebug)
   1479             {
   1480                 fprintf(stderr, "%s[%d]: CONFLICT in state %d. ", YYDEBUGSTR, yydepth, yystate);
   1481                 if (yyps->save)
   1482                     fputs("ALREADY in conflict, continuing trial parse.\n", stderr);
   1483                 else
   1484                     fputs("Starting trial parse.\n", stderr);
   1485             }
   1486 #endif
   1487             save                  = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));
   1488             if (save == NULL) goto yyenomem;
   1489             save->save            = yyps->save;
   1490             save->state           = yystate;
   1491             save->errflag         = yyerrflag;
   1492             save->yystack.s_mark  = save->yystack.s_base + (yystack.s_mark - yystack.s_base);
   1493             memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short));
   1494             save->yystack.l_mark  = save->yystack.l_base + (yystack.l_mark - yystack.l_base);
   1495             memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
   1496 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1497             save->yystack.p_mark  = save->yystack.p_base + (yystack.p_mark - yystack.p_base);
   1498             memcpy (save->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
   1499 #endif
   1500             ctry                  = yytable[yyn];
   1501             if (yyctable[ctry] == -1)
   1502             {
   1503 #if YYDEBUG
   1504                 if (yydebug && yychar >= YYEOF)
   1505                     fprintf(stderr, "%s[%d]: backtracking 1 token\n", YYDEBUGSTR, yydepth);
   1506 #endif
   1507                 ctry++;
   1508             }
   1509             save->ctry = ctry;
   1510             if (yyps->save == NULL)
   1511             {
   1512                 /* If this is a first conflict in the stack, start saving lexemes */
   1513                 if (!yylexemes)
   1514                 {
   1515                     yylexemes = (short *) malloc((YYLVQUEUEGROWTH) * sizeof(short));
   1516                     if (yylexemes == NULL) goto yyenomem;
   1517                     yylvals   = (YYSTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYSTYPE));
   1518                     if (yylvals == NULL) goto yyenomem;
   1519                     yylvlim   = yylvals + YYLVQUEUEGROWTH;
   1520 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1521                     yylpsns   = (YYLTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYLTYPE));
   1522                     if (yylpsns == NULL) goto yyenomem;
   1523                     yylplim   = yylpsns + YYLVQUEUEGROWTH;
   1524 #endif
   1525                 }
   1526                 if (yylvp == yylve)
   1527                 {
   1528                     yylvp  = yylve = yylvals;
   1529 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1530                     yylpp  = yylpe = yylpsns;
   1531 #endif
   1532                     yylexp = yylexemes;
   1533                     if (yychar >= YYEOF)
   1534                     {
   1535                         *yylve++ = yylval;
   1536 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1537                         *yylpe++ = yylloc;
   1538 #endif
   1539                         *yylexp  = (short) yychar;
   1540                         yychar   = YYEMPTY;
   1541                     }
   1542                 }
   1543             }
   1544             if (yychar >= YYEOF)
   1545             {
   1546                 yylvp--;
   1547 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1548                 yylpp--;
   1549 #endif
   1550                 yylexp--;
   1551                 yychar = YYEMPTY;
   1552             }
   1553             save->lexeme = (int) (yylvp - yylvals);
   1554             yyps->save   = save;
   1555         }
   1556         if (yytable[yyn] == ctry)
   1557         {
   1558 #if YYDEBUG
   1559             if (yydebug)
   1560                 fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n",
   1561                                 YYDEBUGSTR, yydepth, yystate, yyctable[ctry]);
   1562 #endif
   1563             if (yychar < 0)
   1564             {
   1565                 yylvp++;
   1566 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1567                 yylpp++;
   1568 #endif
   1569                 yylexp++;
   1570             }
   1571             if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)
   1572                 goto yyoverflow;
   1573             yystate = yyctable[ctry];
   1574             *++yystack.s_mark = (short) yystate;
   1575             *++yystack.l_mark = yylval;
   1576 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1577             *++yystack.p_mark = yylloc;
   1578 #endif
   1579             yychar  = YYEMPTY;
   1580             if (yyerrflag > 0) --yyerrflag;
   1581             goto yyloop;
   1582         }
   1583         else
   1584         {
   1585             yyn = yyctable[ctry];
   1586             goto yyreduce;
   1587         }
   1588     } /* End of code dealing with conflicts */
   1589 #endif /* YYBTYACC */
   1590     if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
   1591             yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
   1592     {
   1593 #if YYDEBUG
   1594         if (yydebug)
   1595             fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n",
   1596                             YYDEBUGSTR, yydepth, yystate, yytable[yyn]);
   1597 #endif
   1598         if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
   1599         yystate = yytable[yyn];
   1600         *++yystack.s_mark = yytable[yyn];
   1601         *++yystack.l_mark = yylval;
   1602 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1603         *++yystack.p_mark = yylloc;
   1604 #endif
   1605         yychar = YYEMPTY;
   1606         if (yyerrflag > 0)  --yyerrflag;
   1607         goto yyloop;
   1608     }
   1609     if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
   1610             yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
   1611     {
   1612         yyn = yytable[yyn];
   1613         goto yyreduce;
   1614     }
   1615     if (yyerrflag != 0) goto yyinrecovery;
   1616 #if YYBTYACC
   1617 
   1618     yynewerrflag = 1;
   1619     goto yyerrhandler;
   1620     goto yyerrlab;
   1621 
   1622 yyerrlab:
   1623     yynewerrflag = 0;
   1624 yyerrhandler:
   1625     while (yyps->save)
   1626     {
   1627         int ctry;
   1628         YYParseState *save = yyps->save;
   1629 #if YYDEBUG
   1630         if (yydebug)
   1631             fprintf(stderr, "%s[%d]: ERROR in state %d, CONFLICT BACKTRACKING to state %d, %d tokens\n",
   1632                             YYDEBUGSTR, yydepth, yystate, yyps->save->state,
   1633                     (int)(yylvp - yylvals - yyps->save->lexeme));
   1634 #endif
   1635         /* Memorize most forward-looking error state in case it's really an error. */
   1636         if (yyerrctx == NULL || yyerrctx->lexeme < yylvp - yylvals)
   1637         {
   1638             /* Free old saved error context state */
   1639             if (yyerrctx) yyFreeState(yyerrctx);
   1640             /* Create and fill out new saved error context state */
   1641             yyerrctx                 = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));
   1642             if (yyerrctx == NULL) goto yyenomem;
   1643             yyerrctx->save           = yyps->save;
   1644             yyerrctx->state          = yystate;
   1645             yyerrctx->errflag        = yyerrflag;
   1646             yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base);
   1647             memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short));
   1648             yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base);
   1649             memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
   1650 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1651             yyerrctx->yystack.p_mark = yyerrctx->yystack.p_base + (yystack.p_mark - yystack.p_base);
   1652             memcpy (yyerrctx->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
   1653 #endif
   1654             yyerrctx->lexeme         = (int) (yylvp - yylvals);
   1655         }
   1656         yylvp          = yylvals   + save->lexeme;
   1657 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1658         yylpp          = yylpsns   + save->lexeme;
   1659 #endif
   1660         yylexp         = yylexemes + save->lexeme;
   1661         yychar         = YYEMPTY;
   1662         yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base);
   1663         memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short));
   1664         yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base);
   1665         memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
   1666 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1667         yystack.p_mark = yystack.p_base + (save->yystack.p_mark - save->yystack.p_base);
   1668         memcpy (yystack.p_base, save->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
   1669 #endif
   1670         ctry           = ++save->ctry;
   1671         yystate        = save->state;
   1672         /* We tried shift, try reduce now */
   1673         if ((yyn = yyctable[ctry]) >= 0) goto yyreduce;
   1674         yyps->save     = save->save;
   1675         save->save     = NULL;
   1676         yyFreeState(save);
   1677 
   1678         /* Nothing left on the stack -- error */
   1679         if (!yyps->save)
   1680         {
   1681 #if YYDEBUG
   1682             if (yydebug)
   1683                 fprintf(stderr, "%sdebug[%d,trial]: trial parse FAILED, entering ERROR mode\n",
   1684                                 YYPREFIX, yydepth);
   1685 #endif
   1686             /* Restore state as it was in the most forward-advanced error */
   1687             yylvp          = yylvals   + yyerrctx->lexeme;
   1688 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1689             yylpp          = yylpsns   + yyerrctx->lexeme;
   1690 #endif
   1691             yylexp         = yylexemes + yyerrctx->lexeme;
   1692             yychar         = yylexp[-1];
   1693             yylval         = yylvp[-1];
   1694 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1695             yylloc         = yylpp[-1];
   1696 #endif
   1697             yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base);
   1698             memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short));
   1699             yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base);
   1700             memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
   1701 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1702             yystack.p_mark = yystack.p_base + (yyerrctx->yystack.p_mark - yyerrctx->yystack.p_base);
   1703             memcpy (yystack.p_base, yyerrctx->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
   1704 #endif
   1705             yystate        = yyerrctx->state;
   1706             yyFreeState(yyerrctx);
   1707             yyerrctx       = NULL;
   1708         }
   1709         yynewerrflag = 1;
   1710     }
   1711     if (yynewerrflag == 0) goto yyinrecovery;
   1712 #endif /* YYBTYACC */
   1713 
   1714     YYERROR_CALL("syntax error");
   1715 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1716     yyerror_loc_range[0] = yylloc; /* lookahead position is error start position */
   1717 #endif
   1718 
   1719 #if !YYBTYACC
   1720     goto yyerrlab;
   1721 yyerrlab:
   1722 #endif
   1723     ++yynerrs;
   1724 
   1725 yyinrecovery:
   1726     if (yyerrflag < 3)
   1727     {
   1728         yyerrflag = 3;
   1729         for (;;)
   1730         {
   1731             if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 &&
   1732                     yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE)
   1733             {
   1734 #if YYDEBUG
   1735                 if (yydebug)
   1736                     fprintf(stderr, "%s[%d]: state %d, error recovery shifting to state %d\n",
   1737                                     YYDEBUGSTR, yydepth, *yystack.s_mark, yytable[yyn]);
   1738 #endif
   1739                 if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
   1740                 yystate = yytable[yyn];
   1741                 *++yystack.s_mark = yytable[yyn];
   1742                 *++yystack.l_mark = yylval;
   1743 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1744                 /* lookahead position is error end position */
   1745                 yyerror_loc_range[1] = yylloc;
   1746                 YYLLOC_DEFAULT(yyloc, yyerror_loc_range, 2); /* position of error span */
   1747                 *++yystack.p_mark = yyloc;
   1748 #endif
   1749                 goto yyloop;
   1750             }
   1751             else
   1752             {
   1753 #if YYDEBUG
   1754                 if (yydebug)
   1755                     fprintf(stderr, "%s[%d]: error recovery discarding state %d\n",
   1756                                     YYDEBUGSTR, yydepth, *yystack.s_mark);
   1757 #endif
   1758                 if (yystack.s_mark <= yystack.s_base) goto yyabort;
   1759 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1760                 /* the current TOS position is the error start position */
   1761                 yyerror_loc_range[0] = *yystack.p_mark;
   1762 #endif
   1763 #if defined(YYDESTRUCT_CALL)
   1764 #if YYBTYACC
   1765                 if (!yytrial)
   1766 #endif /* YYBTYACC */
   1767 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1768                     YYDESTRUCT_CALL("error: discarding state",
   1769                                     yystos[*yystack.s_mark], yystack.l_mark, yystack.p_mark);
   1770 #else
   1771                     YYDESTRUCT_CALL("error: discarding state",
   1772                                     yystos[*yystack.s_mark], yystack.l_mark);
   1773 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
   1774 #endif /* defined(YYDESTRUCT_CALL) */
   1775                 --yystack.s_mark;
   1776                 --yystack.l_mark;
   1777 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1778                 --yystack.p_mark;
   1779 #endif
   1780             }
   1781         }
   1782     }
   1783     else
   1784     {
   1785         if (yychar == YYEOF) goto yyabort;
   1786 #if YYDEBUG
   1787         if (yydebug)
   1788         {
   1789             yys = yyname[YYTRANSLATE(yychar)];
   1790             fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n",
   1791                             YYDEBUGSTR, yydepth, yystate, yychar, yys);
   1792         }
   1793 #endif
   1794 #if defined(YYDESTRUCT_CALL)
   1795 #if YYBTYACC
   1796         if (!yytrial)
   1797 #endif /* YYBTYACC */
   1798 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1799             YYDESTRUCT_CALL("error: discarding token", yychar, &yylval, &yylloc);
   1800 #else
   1801             YYDESTRUCT_CALL("error: discarding token", yychar, &yylval);
   1802 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
   1803 #endif /* defined(YYDESTRUCT_CALL) */
   1804         yychar = YYEMPTY;
   1805         goto yyloop;
   1806     }
   1807 
   1808 yyreduce:
   1809     yym = yylen[yyn];
   1810 #if YYDEBUG
   1811     if (yydebug)
   1812     {
   1813         fprintf(stderr, "%s[%d]: state %d, reducing by rule %d (%s)",
   1814                         YYDEBUGSTR, yydepth, yystate, yyn, yyrule[yyn]);
   1815 #ifdef YYSTYPE_TOSTRING
   1816 #if YYBTYACC
   1817         if (!yytrial)
   1818 #endif /* YYBTYACC */
   1819             if (yym > 0)
   1820             {
   1821                 int i;
   1822                 fputc('<', stderr);
   1823                 for (i = yym; i > 0; i--)
   1824                 {
   1825                     if (i != yym) fputs(", ", stderr);
   1826                     fputs(YYSTYPE_TOSTRING(yystos[yystack.s_mark[1-i]],
   1827                                            yystack.l_mark[1-i]), stderr);
   1828                 }
   1829                 fputc('>', stderr);
   1830             }
   1831 #endif
   1832         fputc('\n', stderr);
   1833     }
   1834 #endif
   1835     if (yym > 0)
   1836         yyval = yystack.l_mark[1-yym];
   1837     else
   1838         memset(&yyval, 0, sizeof yyval);
   1839 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1840 
   1841     /* Perform position reduction */
   1842     memset(&yyloc, 0, sizeof(yyloc));
   1843 #if YYBTYACC
   1844     if (!yytrial)
   1845 #endif /* YYBTYACC */
   1846     {
   1847         YYLLOC_DEFAULT(yyloc, &yystack.p_mark[1-yym], yym);
   1848         /* just in case YYERROR is invoked within the action, save
   1849            the start of the rhs as the error start position */
   1850         yyerror_loc_range[0] = yystack.p_mark[1-yym];
   1851     }
   1852 #endif
   1853 
   1854     switch (yyn)
   1855     {
   1856 case 1:
   1857 #line 93 "btyacc_demo.y"
   1858 { yyval.scope = yystack.l_mark[0].scope; }
   1859 break;
   1860 case 2:
   1861 #line 94 "btyacc_demo.y"
   1862 { yyval.scope = global_scope; }
   1863 break;
   1864 case 3:
   1865 #line 95 "btyacc_demo.y"
   1866 { Decl *d = lookup(yystack.l_mark[-2].scope, yystack.l_mark[-1].id);
   1867 			  if (!d || !d->scope) YYERROR;
   1868 			  yyval.scope = d->scope; }
   1869 break;
   1870 case 4:
   1871 #line 101 "btyacc_demo.y"
   1872 { Decl *d = lookup(yystack.l_mark[-1].scope, yystack.l_mark[0].id);
   1873 	if (d == NULL || d->istype() == 0) YYERROR;
   1874 	yyval.type = d->type; }
   1875 break;
   1876 case 5:
   1877 #line 106 "btyacc_demo.y"
   1878 yyval.scope = global_scope = new_scope(0);
   1879 break;
   1880 case 8:
   1881 #line 107 "btyacc_demo.y"
   1882 yyval.scope = yystack.l_mark[-1].scope;
   1883 break;
   1884 case 10:
   1885 #line 109 "btyacc_demo.y"
   1886 yyval.type = yystack.l_mark[-1].type;
   1887 break;
   1888 case 11:
   1889 #line 109 "btyacc_demo.y"
   1890 {YYVALID;}
   1891 break;
   1892 case 12:
   1893 #line 110 "btyacc_demo.y"
   1894 yyval.scope = start_fn_def(yystack.l_mark[-4].scope, yystack.l_mark[0].decl);
   1895 break;
   1896 case 13:
   1897   if (!yytrial)
   1898 #line 111 "btyacc_demo.y"
   1899 	{ /* demonstrate use of @$ & @N, although this is just the
   1900 	   default computation and so is not necessary */
   1901 	yyloc.first_line   = yystack.p_mark[-5].first_line;
   1902 	yyloc.first_column = yystack.p_mark[-5].first_column;
   1903 	yyloc.last_line    = yystack.p_mark[0].last_line;
   1904 	yyloc.last_column  = yystack.p_mark[0].last_column;
   1905 	finish_fn_def(yystack.l_mark[-2].decl, yystack.l_mark[0].code); }
   1906 break;
   1907 case 14:
   1908 #line 121 "btyacc_demo.y"
   1909 { yyval.type = yystack.l_mark[0].type; }
   1910 break;
   1911 case 15:
   1912 #line 122 "btyacc_demo.y"
   1913 { yyval.type = type_combine(yystack.l_mark[-2].type, yystack.l_mark[0].type); }
   1914 break;
   1915 case 16:
   1916 #line 125 "btyacc_demo.y"
   1917 { yyval.type = 0; }
   1918 break;
   1919 case 17:
   1920 #line 126 "btyacc_demo.y"
   1921 { yyval.type = type_combine(yystack.l_mark[-1].type, yystack.l_mark[0].type); }
   1922 break;
   1923 case 18:
   1924 #line 130 "btyacc_demo.y"
   1925 { yyval.type = yystack.l_mark[0].type; }
   1926 break;
   1927 case 19:
   1928 #line 131 "btyacc_demo.y"
   1929 { yyval.type = yystack.l_mark[0].type; }
   1930 break;
   1931 case 20:
   1932 #line 132 "btyacc_demo.y"
   1933 { yyval.type = bare_extern(); }
   1934 break;
   1935 case 21:
   1936 #line 133 "btyacc_demo.y"
   1937 { yyval.type = bare_register(); }
   1938 break;
   1939 case 22:
   1940 #line 134 "btyacc_demo.y"
   1941 { yyval.type = bare_static(); }
   1942 break;
   1943 case 23:
   1944 #line 138 "btyacc_demo.y"
   1945 { yyval.type = bare_const(); }
   1946 break;
   1947 case 24:
   1948 #line 139 "btyacc_demo.y"
   1949 { yyval.type = bare_volatile(); }
   1950 break;
   1951 case 25:
   1952 #line 143 "btyacc_demo.y"
   1953 yyval.scope = yystack.l_mark[-3].scope;
   1954 break;
   1955 case 26:
   1956 #line 143 "btyacc_demo.y"
   1957 yyval.type =  yystack.l_mark[-3].type;
   1958 break;
   1959 case 29:
   1960 #line 148 "btyacc_demo.y"
   1961 { if (!yystack.l_mark[0].type) YYERROR; }  if (!yytrial)
   1962 #line 149 "btyacc_demo.y"
   1963 { yyval.decl = declare(yystack.l_mark[-1].scope, 0, yystack.l_mark[0].type); }
   1964 break;
   1965 case 30:
   1966   if (!yytrial)
   1967 #line 150 "btyacc_demo.y"
   1968 	{ yyval.decl = declare(yystack.l_mark[-2].scope, yystack.l_mark[0].id, yystack.l_mark[-1].type); }
   1969 break;
   1970 case 31:
   1971 #line 151 "btyacc_demo.y"
   1972 yyval.scope = yystack.l_mark[-2].scope;
   1973 break;
   1974 case 32:
   1975 #line 151 "btyacc_demo.y"
   1976 yyval.type =  yystack.l_mark[-2].type;
   1977 break;
   1978 case 33:
   1979   if (!yytrial)
   1980 #line 151 "btyacc_demo.y"
   1981 	{ yyval.decl = yystack.l_mark[-1].decl; }
   1982 break;
   1983 case 34:
   1984   if (!yytrial)
   1985 #line 153 "btyacc_demo.y"
   1986 	{ yyval.decl = make_pointer(yystack.l_mark[0].decl, yystack.l_mark[-3].type); }
   1987 break;
   1988 case 35:
   1989   if (!yytrial)
   1990 #line 155 "btyacc_demo.y"
   1991 	{ yyval.decl = make_array(yystack.l_mark[-4].decl->type, yystack.l_mark[-1].expr); }
   1992 break;
   1993 case 36:
   1994   if (!yytrial)
   1995 #line 157 "btyacc_demo.y"
   1996 	{ yyval.decl = build_function(yystack.l_mark[-5].decl, yystack.l_mark[-2].dlist, yystack.l_mark[0].type); }
   1997 break;
   1998 case 37:
   1999   if (!yytrial)
   2000 #line 160 "btyacc_demo.y"
   2001 	{ yyval.dlist = 0; }
   2002 break;
   2003 case 38:
   2004   if (!yytrial)
   2005 #line 161 "btyacc_demo.y"
   2006 	{ yyval.dlist = yystack.l_mark[0].dlist; }
   2007 break;
   2008 case 39:
   2009   if (!yytrial)
   2010 #line 164 "btyacc_demo.y"
   2011 	{ yyval.dlist = append_dlist(yystack.l_mark[-3].dlist, yystack.l_mark[0].decl); }
   2012 break;
   2013 case 40:
   2014   if (!yytrial)
   2015 #line 165 "btyacc_demo.y"
   2016 	{ yyval.dlist = build_dlist(yystack.l_mark[0].decl); }
   2017 break;
   2018 case 41:
   2019   if (!yytrial)
   2020 #line 168 "btyacc_demo.y"
   2021 	{ yyval.decl = yystack.l_mark[0].decl; }
   2022 break;
   2023 case 42:
   2024   if (!yytrial)
   2025 #line 172 "btyacc_demo.y"
   2026 	{ yyval.expr = build_expr(yystack.l_mark[-3].expr, ADD, yystack.l_mark[0].expr); }
   2027 break;
   2028 case 43:
   2029   if (!yytrial)
   2030 #line 173 "btyacc_demo.y"
   2031 	{ yyval.expr = build_expr(yystack.l_mark[-3].expr, SUB, yystack.l_mark[0].expr); }
   2032 break;
   2033 case 44:
   2034   if (!yytrial)
   2035 #line 174 "btyacc_demo.y"
   2036 	{ yyval.expr = build_expr(yystack.l_mark[-3].expr, MUL, yystack.l_mark[0].expr); }
   2037 break;
   2038 case 45:
   2039   if (!yytrial)
   2040 #line 175 "btyacc_demo.y"
   2041 	{ yyval.expr = build_expr(yystack.l_mark[-3].expr, MOD, yystack.l_mark[0].expr); }
   2042 break;
   2043 case 46:
   2044   if (!yytrial)
   2045 #line 176 "btyacc_demo.y"
   2046 	{ yyval.expr = build_expr(yystack.l_mark[-3].expr, DIV, yystack.l_mark[0].expr); }
   2047 break;
   2048 case 47:
   2049   if (!yytrial)
   2050 #line 177 "btyacc_demo.y"
   2051 	{ yyval.expr = build_expr(0, DEREF, yystack.l_mark[0].expr); }
   2052 break;
   2053 case 48:
   2054   if (!yytrial)
   2055 #line 178 "btyacc_demo.y"
   2056 	{ yyval.expr = var_expr(yystack.l_mark[-1].scope, yystack.l_mark[0].id); }
   2057 break;
   2058 case 49:
   2059   if (!yytrial)
   2060 #line 179 "btyacc_demo.y"
   2061 	{ yyval.expr = yystack.l_mark[0].expr; }
   2062 break;
   2063 case 50:
   2064   if (!yytrial)
   2065 #line 183 "btyacc_demo.y"
   2066 	{ yyval.code = 0; }
   2067 break;
   2068 case 51:
   2069 #line 184 "btyacc_demo.y"
   2070 yyval.scope = yystack.l_mark[0].scope;
   2071 break;
   2072 case 52:
   2073 #line 184 "btyacc_demo.y"
   2074 {YYVALID;}  if (!yytrial)
   2075 #line 184 "btyacc_demo.y"
   2076 { yyval.code = build_expr_code(yystack.l_mark[-1].expr); }
   2077 break;
   2078 case 53:
   2079 #line 185 "btyacc_demo.y"
   2080 yyval.scope = yystack.l_mark[-6].scope;
   2081 break;
   2082 case 54:
   2083 #line 185 "btyacc_demo.y"
   2084 yyval.scope = yystack.l_mark[-9].scope;
   2085 break;
   2086 case 55:
   2087 #line 185 "btyacc_demo.y"
   2088 {YYVALID;}  if (!yytrial)
   2089 #line 186 "btyacc_demo.y"
   2090 { yyval.code = build_if(yystack.l_mark[-7].expr, yystack.l_mark[-3].code, yystack.l_mark[0].code); }
   2091 break;
   2092 case 56:
   2093 #line 187 "btyacc_demo.y"
   2094 {YYVALID;}  if (!yytrial)
   2095 #line 188 "btyacc_demo.y"
   2096 { yyval.code = build_if(yystack.l_mark[-4].expr, yystack.l_mark[0].code, 0); }
   2097 break;
   2098 case 57:
   2099 #line 189 "btyacc_demo.y"
   2100 yyval.scope = new_scope(yystack.l_mark[0].scope);
   2101 break;
   2102 case 58:
   2103 #line 189 "btyacc_demo.y"
   2104 {YYVALID;}  if (!yytrial)
   2105 #line 189 "btyacc_demo.y"
   2106 { yyval.code = yystack.l_mark[0].code; }
   2107 break;
   2108 case 59:
   2109   if (!yytrial)
   2110 #line 192 "btyacc_demo.y"
   2111 	{ yyval.code = 0; }
   2112 break;
   2113 case 60:
   2114   if (!yytrial)
   2115 #line 193 "btyacc_demo.y"
   2116 	{ yyval.code = code_append(yystack.l_mark[-2].code, yystack.l_mark[0].code); }
   2117 break;
   2118 case 61:
   2119   if (!yytrial)
   2120 #line 197 "btyacc_demo.y"
   2121 	{ yyval.code = yystack.l_mark[-1].code; }
   2122 break;
   2123 #line 2122 "btyacc_demo.tab.c"
   2124     default:
   2125         break;
   2126     }
   2127     yystack.s_mark -= yym;
   2128     yystate = *yystack.s_mark;
   2129     yystack.l_mark -= yym;
   2130 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2131     yystack.p_mark -= yym;
   2132 #endif
   2133     yym = yylhs[yyn];
   2134     if (yystate == 0 && yym == 0)
   2135     {
   2136 #if YYDEBUG
   2137         if (yydebug)
   2138         {
   2139             fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);
   2140 #ifdef YYSTYPE_TOSTRING
   2141 #if YYBTYACC
   2142             if (!yytrial)
   2143 #endif /* YYBTYACC */
   2144                 fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[YYFINAL], yyval));
   2145 #endif
   2146             fprintf(stderr, "shifting from state 0 to final state %d\n", YYFINAL);
   2147         }
   2148 #endif
   2149         yystate = YYFINAL;
   2150         *++yystack.s_mark = YYFINAL;
   2151         *++yystack.l_mark = yyval;
   2152 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2153         *++yystack.p_mark = yyloc;
   2154 #endif
   2155         if (yychar < 0)
   2156         {
   2157 #if YYBTYACC
   2158             do {
   2159             if (yylvp < yylve)
   2160             {
   2161                 /* we're currently re-reading tokens */
   2162                 yylval = *yylvp++;
   2163 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2164                 yylloc = *yylpp++;
   2165 #endif
   2166                 yychar = *yylexp++;
   2167                 break;
   2168             }
   2169             if (yyps->save)
   2170             {
   2171                 /* in trial mode; save scanner results for future parse attempts */
   2172                 if (yylvp == yylvlim)
   2173                 {   /* Enlarge lexical value queue */
   2174                     size_t p = (size_t) (yylvp - yylvals);
   2175                     size_t s = (size_t) (yylvlim - yylvals);
   2176 
   2177                     s += YYLVQUEUEGROWTH;
   2178                     if ((yylexemes = (short *)   realloc(yylexemes, s * sizeof(short))) == NULL)
   2179                         goto yyenomem;
   2180                     if ((yylvals   = (YYSTYPE *) realloc(yylvals, s * sizeof(YYSTYPE))) == NULL)
   2181                         goto yyenomem;
   2182 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2183                     if ((yylpsns   = (YYLTYPE *) realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL)
   2184                         goto yyenomem;
   2185 #endif
   2186                     yylvp   = yylve = yylvals + p;
   2187                     yylvlim = yylvals + s;
   2188 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2189                     yylpp   = yylpe = yylpsns + p;
   2190                     yylplim = yylpsns + s;
   2191 #endif
   2192                     yylexp  = yylexemes + p;
   2193                 }
   2194                 *yylexp = (short) YYLEX;
   2195                 *yylvp++ = yylval;
   2196                 yylve++;
   2197 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2198                 *yylpp++ = yylloc;
   2199                 yylpe++;
   2200 #endif
   2201                 yychar = *yylexp++;
   2202                 break;
   2203             }
   2204             /* normal operation, no conflict encountered */
   2205 #endif /* YYBTYACC */
   2206             yychar = YYLEX;
   2207 #if YYBTYACC
   2208             } while (0);
   2209 #endif /* YYBTYACC */
   2210             if (yychar < 0) yychar = YYEOF;
   2211             /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */
   2212 #if YYDEBUG
   2213             if (yydebug)
   2214             {
   2215                 yys = yyname[YYTRANSLATE(yychar)];
   2216                 fprintf(stderr, "%s[%d]: state %d, reading %d (%s)\n",
   2217                                 YYDEBUGSTR, yydepth, YYFINAL, yychar, yys);
   2218             }
   2219 #endif
   2220         }
   2221         if (yychar == YYEOF) goto yyaccept;
   2222         goto yyloop;
   2223     }
   2224     if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 &&
   2225             yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate)
   2226         yystate = yytable[yyn];
   2227     else
   2228         yystate = yydgoto[yym];
   2229 #if YYDEBUG
   2230     if (yydebug)
   2231     {
   2232         fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);
   2233 #ifdef YYSTYPE_TOSTRING
   2234 #if YYBTYACC
   2235         if (!yytrial)
   2236 #endif /* YYBTYACC */
   2237             fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[yystate], yyval));
   2238 #endif
   2239         fprintf(stderr, "shifting from state %d to state %d\n", *yystack.s_mark, yystate);
   2240     }
   2241 #endif
   2242     if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
   2243     *++yystack.s_mark = (short) yystate;
   2244     *++yystack.l_mark = yyval;
   2245 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2246     *++yystack.p_mark = yyloc;
   2247 #endif
   2248     goto yyloop;
   2249 #if YYBTYACC
   2250 
   2251     /* Reduction declares that this path is valid. Set yypath and do a full parse */
   2252 yyvalid:
   2253     if (yypath) YYABORT;
   2254     while (yyps->save)
   2255     {
   2256         YYParseState *save = yyps->save;
   2257         yyps->save = save->save;
   2258         save->save = yypath;
   2259         yypath = save;
   2260     }
   2261 #if YYDEBUG
   2262     if (yydebug)
   2263         fprintf(stderr, "%s[%d]: state %d, CONFLICT trial successful, backtracking to state %d, %d tokens\n",
   2264                         YYDEBUGSTR, yydepth, yystate, yypath->state, (int)(yylvp - yylvals - yypath->lexeme));
   2265 #endif
   2266     if (yyerrctx)
   2267     {
   2268         yyFreeState(yyerrctx);
   2269         yyerrctx = NULL;
   2270     }
   2271     yylvp          = yylvals + yypath->lexeme;
   2272 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2273     yylpp          = yylpsns + yypath->lexeme;
   2274 #endif
   2275     yylexp         = yylexemes + yypath->lexeme;
   2276     yychar         = YYEMPTY;
   2277     yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base);
   2278     memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short));
   2279     yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base);
   2280     memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
   2281 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2282     yystack.p_mark = yystack.p_base + (yypath->yystack.p_mark - yypath->yystack.p_base);
   2283     memcpy (yystack.p_base, yypath->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
   2284 #endif
   2285     yystate        = yypath->state;
   2286     goto yyloop;
   2287 #endif /* YYBTYACC */
   2288 
   2289 yyoverflow:
   2290     YYERROR_CALL("yacc stack overflow");
   2291 #if YYBTYACC
   2292     goto yyabort_nomem;
   2293 yyenomem:
   2294     YYERROR_CALL("memory exhausted");
   2295 yyabort_nomem:
   2296 #endif /* YYBTYACC */
   2297     yyresult = 2;
   2298     goto yyreturn;
   2299 
   2300 yyabort:
   2301     yyresult = 1;
   2302     goto yyreturn;
   2303 
   2304 yyaccept:
   2305 #if YYBTYACC
   2306     if (yyps->save) goto yyvalid;
   2307 #endif /* YYBTYACC */
   2308     yyresult = 0;
   2309 
   2310 yyreturn:
   2311 #if defined(YYDESTRUCT_CALL)
   2312     if (yychar != YYEOF && yychar != YYEMPTY)
   2313 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2314         YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval, &yylloc);
   2315 #else
   2316         YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval);
   2317 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
   2318 
   2319     {
   2320         YYSTYPE *pv;
   2321 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2322         YYLTYPE *pp;
   2323 
   2324         for (pv = yystack.l_base, pp = yystack.p_base; pv <= yystack.l_mark; ++pv, ++pp)
   2325              YYDESTRUCT_CALL("cleanup: discarding state",
   2326                              yystos[*(yystack.s_base + (pv - yystack.l_base))], pv, pp);
   2327 #else
   2328         for (pv = yystack.l_base; pv <= yystack.l_mark; ++pv)
   2329              YYDESTRUCT_CALL("cleanup: discarding state",
   2330                              yystos[*(yystack.s_base + (pv - yystack.l_base))], pv);
   2331 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
   2332     }
   2333 #endif /* defined(YYDESTRUCT_CALL) */
   2334 
   2335 #if YYBTYACC
   2336     if (yyerrctx)
   2337     {
   2338         yyFreeState(yyerrctx);
   2339         yyerrctx = NULL;
   2340     }
   2341     while (yyps)
   2342     {
   2343         YYParseState *save = yyps;
   2344         yyps = save->save;
   2345         save->save = NULL;
   2346         yyFreeState(save);
   2347     }
   2348     while (yypath)
   2349     {
   2350         YYParseState *save = yypath;
   2351         yypath = save->save;
   2352         save->save = NULL;
   2353         yyFreeState(save);
   2354     }
   2355 #endif /* YYBTYACC */
   2356     yyfreestack(&yystack);
   2357     return (yyresult);
   2358 }
   2359