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