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