github.com/tcnksm/go@v0.0.0-20141208075154-439b32936367/src/cmd/5a/y.tab.c (about) 1 /* A Bison parser, made by GNU Bison 2.3. */ 2 3 /* Skeleton implementation for Bison's Yacc-like parsers in C 4 5 Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 6 Free Software Foundation, Inc. 7 8 This program is free software; you can redistribute it and/or modify 9 it under the terms of the GNU General Public License as published by 10 the Free Software Foundation; either version 2, or (at your option) 11 any later version. 12 13 This program is distributed in the hope that it will be useful, 14 but WITHOUT ANY WARRANTY; without even the implied warranty of 15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 GNU General Public License for more details. 17 18 You should have received a copy of the GNU General Public License 19 along with this program; if not, write to the Free Software 20 Foundation, Inc., 51 Franklin Street, Fifth Floor, 21 Boston, MA 02110-1301, USA. */ 22 23 /* As a special exception, you may create a larger work that contains 24 part or all of the Bison parser skeleton and distribute that work 25 under terms of your choice, so long as that work isn't itself a 26 parser generator using the skeleton or a modified version thereof 27 as a parser skeleton. Alternatively, if you modify or redistribute 28 the parser skeleton itself, you may (at your option) remove this 29 special exception, which will cause the skeleton and the resulting 30 Bison output files to be licensed under the GNU General Public 31 License without this special exception. 32 33 This special exception was added by the Free Software Foundation in 34 version 2.2 of Bison. */ 35 36 /* C LALR(1) parser skeleton written by Richard Stallman, by 37 simplifying the original so-called "semantic" parser. */ 38 39 /* All symbols defined below should begin with yy or YY, to avoid 40 infringing on user name space. This should be done even for local 41 variables, as they might otherwise be expanded by user macros. 42 There are some unavoidable exceptions within include files to 43 define necessary library symbols; they are noted "INFRINGES ON 44 USER NAME SPACE" below. */ 45 46 /* Identify Bison output. */ 47 #define YYBISON 1 48 49 /* Bison version. */ 50 #define YYBISON_VERSION "2.3" 51 52 /* Skeleton name. */ 53 #define YYSKELETON_NAME "yacc.c" 54 55 /* Pure parsers. */ 56 #define YYPURE 0 57 58 /* Using locations. */ 59 #define YYLSP_NEEDED 0 60 61 62 63 /* Tokens. */ 64 #ifndef YYTOKENTYPE 65 # define YYTOKENTYPE 66 /* Put the tokens into the symbol table, so that GDB and other debuggers 67 know about them. */ 68 enum yytokentype { 69 LTYPE1 = 258, 70 LTYPE2 = 259, 71 LTYPE3 = 260, 72 LTYPE4 = 261, 73 LTYPE5 = 262, 74 LTYPE6 = 263, 75 LTYPE7 = 264, 76 LTYPE8 = 265, 77 LTYPE9 = 266, 78 LTYPEA = 267, 79 LTYPEB = 268, 80 LTYPEC = 269, 81 LTYPED = 270, 82 LTYPEE = 271, 83 LTYPEG = 272, 84 LTYPEH = 273, 85 LTYPEI = 274, 86 LTYPEJ = 275, 87 LTYPEK = 276, 88 LTYPEL = 277, 89 LTYPEM = 278, 90 LTYPEN = 279, 91 LTYPEBX = 280, 92 LTYPEPLD = 281, 93 LCONST = 282, 94 LSP = 283, 95 LSB = 284, 96 LFP = 285, 97 LPC = 286, 98 LTYPEX = 287, 99 LTYPEPC = 288, 100 LTYPEF = 289, 101 LR = 290, 102 LREG = 291, 103 LF = 292, 104 LFREG = 293, 105 LC = 294, 106 LCREG = 295, 107 LPSR = 296, 108 LFCR = 297, 109 LCOND = 298, 110 LS = 299, 111 LAT = 300, 112 LFCONST = 301, 113 LSCONST = 302, 114 LNAME = 303, 115 LLAB = 304, 116 LVAR = 305 117 }; 118 #endif 119 /* Tokens. */ 120 #define LTYPE1 258 121 #define LTYPE2 259 122 #define LTYPE3 260 123 #define LTYPE4 261 124 #define LTYPE5 262 125 #define LTYPE6 263 126 #define LTYPE7 264 127 #define LTYPE8 265 128 #define LTYPE9 266 129 #define LTYPEA 267 130 #define LTYPEB 268 131 #define LTYPEC 269 132 #define LTYPED 270 133 #define LTYPEE 271 134 #define LTYPEG 272 135 #define LTYPEH 273 136 #define LTYPEI 274 137 #define LTYPEJ 275 138 #define LTYPEK 276 139 #define LTYPEL 277 140 #define LTYPEM 278 141 #define LTYPEN 279 142 #define LTYPEBX 280 143 #define LTYPEPLD 281 144 #define LCONST 282 145 #define LSP 283 146 #define LSB 284 147 #define LFP 285 148 #define LPC 286 149 #define LTYPEX 287 150 #define LTYPEPC 288 151 #define LTYPEF 289 152 #define LR 290 153 #define LREG 291 154 #define LF 292 155 #define LFREG 293 156 #define LC 294 157 #define LCREG 295 158 #define LPSR 296 159 #define LFCR 297 160 #define LCOND 298 161 #define LS 299 162 #define LAT 300 163 #define LFCONST 301 164 #define LSCONST 302 165 #define LNAME 303 166 #define LLAB 304 167 #define LVAR 305 168 169 170 171 172 /* Copy the first part of user declarations. */ 173 #line 31 "a.y" 174 175 #include <u.h> 176 #include <stdio.h> /* if we don't, bison will, and a.h re-#defines getc */ 177 #include <libc.h> 178 #include "a.h" 179 #include "../../runtime/funcdata.h" 180 181 182 /* Enabling traces. */ 183 #ifndef YYDEBUG 184 # define YYDEBUG 0 185 #endif 186 187 /* Enabling verbose error messages. */ 188 #ifdef YYERROR_VERBOSE 189 # undef YYERROR_VERBOSE 190 # define YYERROR_VERBOSE 1 191 #else 192 # define YYERROR_VERBOSE 0 193 #endif 194 195 /* Enabling the token table. */ 196 #ifndef YYTOKEN_TABLE 197 # define YYTOKEN_TABLE 0 198 #endif 199 200 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED 201 typedef union YYSTYPE 202 #line 39 "a.y" 203 { 204 Sym *sym; 205 int32 lval; 206 double dval; 207 char sval[8]; 208 Addr addr; 209 } 210 /* Line 193 of yacc.c. */ 211 #line 212 "y.tab.c" 212 YYSTYPE; 213 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ 214 # define YYSTYPE_IS_DECLARED 1 215 # define YYSTYPE_IS_TRIVIAL 1 216 #endif 217 218 219 220 /* Copy the second part of user declarations. */ 221 222 223 /* Line 216 of yacc.c. */ 224 #line 225 "y.tab.c" 225 226 #ifdef short 227 # undef short 228 #endif 229 230 #ifdef YYTYPE_UINT8 231 typedef YYTYPE_UINT8 yytype_uint8; 232 #else 233 typedef unsigned char yytype_uint8; 234 #endif 235 236 #ifdef YYTYPE_INT8 237 typedef YYTYPE_INT8 yytype_int8; 238 #elif (defined __STDC__ || defined __C99__FUNC__ \ 239 || defined __cplusplus || defined _MSC_VER) 240 typedef signed char yytype_int8; 241 #else 242 typedef short int yytype_int8; 243 #endif 244 245 #ifdef YYTYPE_UINT16 246 typedef YYTYPE_UINT16 yytype_uint16; 247 #else 248 typedef unsigned short int yytype_uint16; 249 #endif 250 251 #ifdef YYTYPE_INT16 252 typedef YYTYPE_INT16 yytype_int16; 253 #else 254 typedef short int yytype_int16; 255 #endif 256 257 #ifndef YYSIZE_T 258 # ifdef __SIZE_TYPE__ 259 # define YYSIZE_T __SIZE_TYPE__ 260 # elif defined size_t 261 # define YYSIZE_T size_t 262 # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ 263 || defined __cplusplus || defined _MSC_VER) 264 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */ 265 # define YYSIZE_T size_t 266 # else 267 # define YYSIZE_T unsigned int 268 # endif 269 #endif 270 271 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1) 272 273 #ifndef YY_ 274 # if defined YYENABLE_NLS && YYENABLE_NLS 275 # if ENABLE_NLS 276 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */ 277 # define YY_(msgid) dgettext ("bison-runtime", msgid) 278 # endif 279 # endif 280 # ifndef YY_ 281 # define YY_(msgid) msgid 282 # endif 283 #endif 284 285 /* Suppress unused-variable warnings by "using" E. */ 286 #if ! defined lint || defined __GNUC__ 287 # define YYUSE(e) ((void) (e)) 288 #else 289 # define YYUSE(e) /* empty */ 290 #endif 291 292 /* Identity function, used to suppress warnings about constant conditions. */ 293 #ifndef lint 294 # define YYID(n) (n) 295 #else 296 #if (defined __STDC__ || defined __C99__FUNC__ \ 297 || defined __cplusplus || defined _MSC_VER) 298 static int 299 YYID (int i) 300 #else 301 static int 302 YYID (i) 303 int i; 304 #endif 305 { 306 return i; 307 } 308 #endif 309 310 #if ! defined yyoverflow || YYERROR_VERBOSE 311 312 /* The parser invokes alloca or malloc; define the necessary symbols. */ 313 314 # ifdef YYSTACK_USE_ALLOCA 315 # if YYSTACK_USE_ALLOCA 316 # ifdef __GNUC__ 317 # define YYSTACK_ALLOC __builtin_alloca 318 # elif defined __BUILTIN_VA_ARG_INCR 319 # include <alloca.h> /* INFRINGES ON USER NAME SPACE */ 320 # elif defined _AIX 321 # define YYSTACK_ALLOC __alloca 322 # elif defined _MSC_VER 323 # include <malloc.h> /* INFRINGES ON USER NAME SPACE */ 324 # define alloca _alloca 325 # else 326 # define YYSTACK_ALLOC alloca 327 # if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ 328 || defined __cplusplus || defined _MSC_VER) 329 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ 330 # ifndef _STDLIB_H 331 # define _STDLIB_H 1 332 # endif 333 # endif 334 # endif 335 # endif 336 # endif 337 338 # ifdef YYSTACK_ALLOC 339 /* Pacify GCC's `empty if-body' warning. */ 340 # define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) 341 # ifndef YYSTACK_ALLOC_MAXIMUM 342 /* The OS might guarantee only one guard page at the bottom of the stack, 343 and a page size can be as small as 4096 bytes. So we cannot safely 344 invoke alloca (N) if N exceeds 4096. Use a slightly smaller number 345 to allow for a few compiler-allocated temporary stack slots. */ 346 # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ 347 # endif 348 # else 349 # define YYSTACK_ALLOC YYMALLOC 350 # define YYSTACK_FREE YYFREE 351 # ifndef YYSTACK_ALLOC_MAXIMUM 352 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM 353 # endif 354 # if (defined __cplusplus && ! defined _STDLIB_H \ 355 && ! ((defined YYMALLOC || defined malloc) \ 356 && (defined YYFREE || defined free))) 357 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ 358 # ifndef _STDLIB_H 359 # define _STDLIB_H 1 360 # endif 361 # endif 362 # ifndef YYMALLOC 363 # define YYMALLOC malloc 364 # if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ 365 || defined __cplusplus || defined _MSC_VER) 366 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ 367 # endif 368 # endif 369 # ifndef YYFREE 370 # define YYFREE free 371 # if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ 372 || defined __cplusplus || defined _MSC_VER) 373 void free (void *); /* INFRINGES ON USER NAME SPACE */ 374 # endif 375 # endif 376 # endif 377 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */ 378 379 380 #if (! defined yyoverflow \ 381 && (! defined __cplusplus \ 382 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) 383 384 /* A type that is properly aligned for any stack member. */ 385 union yyalloc 386 { 387 yytype_int16 yyss; 388 YYSTYPE yyvs; 389 }; 390 391 /* The size of the maximum gap between one aligned stack and the next. */ 392 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) 393 394 /* The size of an array large to enough to hold all stacks, each with 395 N elements. */ 396 # define YYSTACK_BYTES(N) \ 397 ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ 398 + YYSTACK_GAP_MAXIMUM) 399 400 /* Copy COUNT objects from FROM to TO. The source and destination do 401 not overlap. */ 402 # ifndef YYCOPY 403 # if defined __GNUC__ && 1 < __GNUC__ 404 # define YYCOPY(To, From, Count) \ 405 __builtin_memcpy (To, From, (Count) * sizeof (*(From))) 406 # else 407 # define YYCOPY(To, From, Count) \ 408 do \ 409 { \ 410 YYSIZE_T yyi; \ 411 for (yyi = 0; yyi < (Count); yyi++) \ 412 (To)[yyi] = (From)[yyi]; \ 413 } \ 414 while (YYID (0)) 415 # endif 416 # endif 417 418 /* Relocate STACK from its old location to the new one. The 419 local variables YYSIZE and YYSTACKSIZE give the old and new number of 420 elements in the stack, and YYPTR gives the new location of the 421 stack. Advance YYPTR to a properly aligned location for the next 422 stack. */ 423 # define YYSTACK_RELOCATE(Stack) \ 424 do \ 425 { \ 426 YYSIZE_T yynewbytes; \ 427 YYCOPY (&yyptr->Stack, Stack, yysize); \ 428 Stack = &yyptr->Stack; \ 429 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ 430 yyptr += yynewbytes / sizeof (*yyptr); \ 431 } \ 432 while (YYID (0)) 433 434 #endif 435 436 /* YYFINAL -- State number of the termination state. */ 437 #define YYFINAL 2 438 /* YYLAST -- Last index in YYTABLE. */ 439 #define YYLAST 640 440 441 /* YYNTOKENS -- Number of terminals. */ 442 #define YYNTOKENS 71 443 /* YYNNTS -- Number of nonterminals. */ 444 #define YYNNTS 34 445 /* YYNRULES -- Number of rules. */ 446 #define YYNRULES 130 447 /* YYNRULES -- Number of states. */ 448 #define YYNSTATES 333 449 450 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ 451 #define YYUNDEFTOK 2 452 #define YYMAXUTOK 305 453 454 #define YYTRANSLATE(YYX) \ 455 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) 456 457 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ 458 static const yytype_uint8 yytranslate[] = 459 { 460 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 461 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 462 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 463 2, 2, 2, 2, 2, 2, 69, 12, 5, 2, 464 67, 68, 10, 8, 64, 9, 2, 11, 2, 2, 465 2, 2, 2, 2, 2, 2, 2, 2, 61, 63, 466 6, 62, 7, 2, 2, 2, 2, 2, 2, 2, 467 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 468 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 469 2, 65, 2, 66, 4, 2, 2, 2, 2, 2, 470 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 471 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 472 2, 2, 2, 2, 3, 2, 70, 2, 2, 2, 473 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 474 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 475 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 476 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 477 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 478 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 479 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 480 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 481 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 482 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 483 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 484 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 485 2, 2, 2, 2, 2, 2, 1, 2, 13, 14, 486 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 487 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 488 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 489 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 490 55, 56, 57, 58, 59, 60 491 }; 492 493 #if YYDEBUG 494 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in 495 YYRHS. */ 496 static const yytype_uint16 yyprhs[] = 497 { 498 0, 0, 3, 4, 5, 9, 10, 15, 20, 25, 499 27, 30, 33, 41, 48, 54, 60, 66, 71, 76, 500 80, 84, 89, 96, 104, 112, 120, 127, 134, 138, 501 143, 150, 159, 166, 171, 175, 181, 187, 195, 202, 502 215, 223, 233, 236, 241, 246, 249, 250, 253, 256, 503 257, 260, 265, 268, 271, 274, 279, 282, 284, 287, 504 291, 293, 297, 301, 303, 305, 307, 312, 314, 316, 505 318, 320, 322, 324, 326, 330, 332, 337, 339, 344, 506 346, 348, 350, 352, 355, 357, 363, 368, 373, 378, 507 383, 385, 387, 389, 391, 396, 398, 400, 402, 407, 508 409, 411, 413, 418, 423, 429, 437, 438, 441, 444, 509 446, 448, 450, 452, 454, 457, 460, 463, 467, 468, 510 471, 473, 477, 481, 485, 489, 493, 498, 503, 507, 511 511 512 }; 513 514 /* YYRHS -- A `-1'-separated list of the rules' RHS. */ 515 static const yytype_int8 yyrhs[] = 516 { 517 72, 0, -1, -1, -1, 72, 73, 74, -1, -1, 518 58, 61, 75, 74, -1, 58, 62, 104, 63, -1, 519 60, 62, 104, 63, -1, 63, -1, 76, 63, -1, 520 1, 63, -1, 13, 77, 88, 64, 95, 64, 90, 521 -1, 13, 77, 88, 64, 95, 64, -1, 13, 77, 522 88, 64, 90, -1, 14, 77, 88, 64, 90, -1, 523 15, 77, 83, 64, 83, -1, 16, 77, 78, 79, 524 -1, 16, 77, 78, 84, -1, 35, 78, 85, -1, 525 17, 78, 79, -1, 18, 77, 78, 83, -1, 19, 526 77, 88, 64, 95, 78, -1, 20, 77, 86, 64, 527 65, 82, 66, -1, 20, 77, 65, 82, 66, 64, 528 86, -1, 21, 77, 90, 64, 85, 64, 90, -1, 529 21, 77, 90, 64, 85, 78, -1, 21, 77, 78, 530 85, 64, 90, -1, 22, 77, 78, -1, 23, 99, 531 64, 89, -1, 23, 99, 64, 102, 64, 89, -1, 532 23, 99, 64, 102, 64, 89, 9, 102, -1, 24, 533 99, 11, 102, 64, 80, -1, 25, 77, 90, 78, 534 -1, 28, 78, 80, -1, 29, 77, 98, 64, 98, 535 -1, 31, 77, 97, 64, 98, -1, 31, 77, 97, 536 64, 48, 64, 98, -1, 32, 77, 98, 64, 98, 537 78, -1, 30, 77, 102, 64, 104, 64, 95, 64, 538 96, 64, 96, 103, -1, 33, 77, 90, 64, 90, 539 64, 91, -1, 34, 77, 90, 64, 90, 64, 90, 540 64, 95, -1, 36, 87, -1, 43, 83, 64, 83, 541 -1, 44, 83, 64, 83, -1, 26, 78, -1, -1, 542 77, 53, -1, 77, 54, -1, -1, 64, 78, -1, 543 102, 67, 41, 68, -1, 58, 100, -1, 69, 102, 544 -1, 69, 87, -1, 69, 10, 69, 87, -1, 69, 545 57, -1, 81, -1, 69, 56, -1, 69, 9, 56, 546 -1, 95, -1, 95, 9, 95, -1, 95, 78, 82, 547 -1, 90, -1, 80, -1, 92, -1, 92, 67, 95, 548 68, -1, 51, -1, 52, -1, 102, -1, 87, -1, 549 98, -1, 85, -1, 99, -1, 67, 95, 68, -1, 550 85, -1, 102, 67, 94, 68, -1, 99, -1, 99, 551 67, 94, 68, -1, 86, -1, 90, -1, 89, -1, 552 92, -1, 69, 102, -1, 95, -1, 67, 95, 64, 553 95, 68, -1, 95, 6, 6, 93, -1, 95, 7, 554 7, 93, -1, 95, 9, 7, 93, -1, 95, 55, 555 7, 93, -1, 95, -1, 102, -1, 46, -1, 41, 556 -1, 45, 67, 104, 68, -1, 94, -1, 38, -1, 557 50, -1, 49, 67, 104, 68, -1, 98, -1, 81, 558 -1, 48, -1, 47, 67, 102, 68, -1, 102, 67, 559 101, 68, -1, 58, 100, 67, 101, 68, -1, 58, 560 6, 7, 100, 67, 39, 68, -1, -1, 8, 102, 561 -1, 9, 102, -1, 39, -1, 38, -1, 40, -1, 562 37, -1, 60, -1, 9, 102, -1, 8, 102, -1, 563 70, 102, -1, 67, 104, 68, -1, -1, 64, 104, 564 -1, 102, -1, 104, 8, 104, -1, 104, 9, 104, 565 -1, 104, 10, 104, -1, 104, 11, 104, -1, 104, 566 12, 104, -1, 104, 6, 6, 104, -1, 104, 7, 567 7, 104, -1, 104, 5, 104, -1, 104, 4, 104, 568 -1, 104, 3, 104, -1 569 }; 570 571 /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ 572 static const yytype_uint16 yyrline[] = 573 { 574 0, 68, 68, 70, 69, 77, 76, 85, 90, 96, 575 97, 98, 104, 108, 112, 119, 126, 133, 137, 144, 576 151, 158, 165, 172, 181, 193, 197, 201, 208, 215, 577 222, 229, 239, 246, 253, 260, 264, 268, 272, 279, 578 301, 309, 318, 325, 334, 345, 351, 354, 358, 363, 579 364, 367, 373, 383, 389, 394, 399, 405, 408, 414, 580 422, 426, 435, 441, 442, 443, 444, 449, 455, 461, 581 467, 468, 471, 472, 480, 489, 490, 499, 500, 506, 582 509, 510, 511, 513, 521, 529, 538, 544, 550, 556, 583 564, 570, 578, 579, 583, 591, 592, 598, 599, 607, 584 608, 611, 617, 625, 633, 641, 651, 654, 658, 664, 585 665, 666, 669, 670, 674, 678, 682, 686, 692, 695, 586 701, 702, 706, 710, 714, 718, 722, 726, 730, 734, 587 738 588 }; 589 #endif 590 591 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE 592 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. 593 First, the terminals, then, starting at YYNTOKENS, nonterminals. */ 594 static const char *const yytname[] = 595 { 596 "$end", "error", "$undefined", "'|'", "'^'", "'&'", "'<'", "'>'", "'+'", 597 "'-'", "'*'", "'/'", "'%'", "LTYPE1", "LTYPE2", "LTYPE3", "LTYPE4", 598 "LTYPE5", "LTYPE6", "LTYPE7", "LTYPE8", "LTYPE9", "LTYPEA", "LTYPEB", 599 "LTYPEC", "LTYPED", "LTYPEE", "LTYPEG", "LTYPEH", "LTYPEI", "LTYPEJ", 600 "LTYPEK", "LTYPEL", "LTYPEM", "LTYPEN", "LTYPEBX", "LTYPEPLD", "LCONST", 601 "LSP", "LSB", "LFP", "LPC", "LTYPEX", "LTYPEPC", "LTYPEF", "LR", "LREG", 602 "LF", "LFREG", "LC", "LCREG", "LPSR", "LFCR", "LCOND", "LS", "LAT", 603 "LFCONST", "LSCONST", "LNAME", "LLAB", "LVAR", "':'", "'='", "';'", 604 "','", "'['", "']'", "'('", "')'", "'$'", "'~'", "$accept", "prog", "@1", 605 "line", "@2", "inst", "cond", "comma", "rel", "ximm", "fcon", "reglist", 606 "gen", "nireg", "ireg", "ioreg", "oreg", "imsr", "imm", "reg", "regreg", 607 "shift", "rcon", "sreg", "spreg", "creg", "frcon", "freg", "name", 608 "offset", "pointer", "con", "oexpr", "expr", 0 609 }; 610 #endif 611 612 # ifdef YYPRINT 613 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to 614 token YYLEX-NUM. */ 615 static const yytype_uint16 yytoknum[] = 616 { 617 0, 256, 257, 124, 94, 38, 60, 62, 43, 45, 618 42, 47, 37, 258, 259, 260, 261, 262, 263, 264, 619 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 620 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 621 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 622 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 623 305, 58, 61, 59, 44, 91, 93, 40, 41, 36, 624 126 625 }; 626 # endif 627 628 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ 629 static const yytype_uint8 yyr1[] = 630 { 631 0, 71, 72, 73, 72, 75, 74, 74, 74, 74, 632 74, 74, 76, 76, 76, 76, 76, 76, 76, 76, 633 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 634 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 635 76, 76, 76, 76, 76, 76, 77, 77, 77, 78, 636 78, 79, 79, 80, 80, 80, 80, 80, 81, 81, 637 82, 82, 82, 83, 83, 83, 83, 83, 83, 83, 638 83, 83, 84, 84, 85, 86, 86, 87, 87, 87, 639 88, 88, 88, 89, 90, 91, 92, 92, 92, 92, 640 93, 93, 94, 94, 94, 95, 95, 96, 96, 97, 641 97, 98, 98, 99, 99, 99, 100, 100, 100, 101, 642 101, 101, 102, 102, 102, 102, 102, 102, 103, 103, 643 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 644 104 645 }; 646 647 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ 648 static const yytype_uint8 yyr2[] = 649 { 650 0, 2, 0, 0, 3, 0, 4, 4, 4, 1, 651 2, 2, 7, 6, 5, 5, 5, 4, 4, 3, 652 3, 4, 6, 7, 7, 7, 6, 6, 3, 4, 653 6, 8, 6, 4, 3, 5, 5, 7, 6, 12, 654 7, 9, 2, 4, 4, 2, 0, 2, 2, 0, 655 2, 4, 2, 2, 2, 4, 2, 1, 2, 3, 656 1, 3, 3, 1, 1, 1, 4, 1, 1, 1, 657 1, 1, 1, 1, 3, 1, 4, 1, 4, 1, 658 1, 1, 1, 2, 1, 5, 4, 4, 4, 4, 659 1, 1, 1, 1, 4, 1, 1, 1, 4, 1, 660 1, 1, 4, 4, 5, 7, 0, 2, 2, 1, 661 1, 1, 1, 1, 2, 2, 2, 3, 0, 2, 662 1, 3, 3, 3, 3, 3, 4, 4, 3, 3, 663 3 664 }; 665 666 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state 667 STATE-NUM when YYTABLE doesn't specify something else to do. Zero 668 means the default is an error. */ 669 static const yytype_uint8 yydefact[] = 670 { 671 2, 3, 1, 0, 0, 46, 46, 46, 46, 49, 672 46, 46, 46, 46, 46, 0, 0, 46, 49, 49, 673 46, 46, 46, 46, 46, 46, 49, 0, 0, 0, 674 0, 0, 9, 4, 0, 11, 0, 0, 0, 49, 675 49, 0, 49, 0, 0, 49, 49, 0, 0, 112, 676 106, 113, 0, 0, 0, 0, 0, 0, 45, 0, 677 0, 0, 0, 0, 0, 0, 0, 0, 75, 79, 678 42, 77, 0, 96, 93, 0, 92, 0, 101, 67, 679 68, 0, 64, 57, 0, 70, 63, 65, 95, 84, 680 71, 69, 0, 5, 0, 0, 10, 47, 48, 0, 681 0, 81, 80, 82, 0, 0, 0, 50, 106, 20, 682 0, 0, 0, 0, 0, 0, 0, 0, 84, 28, 683 115, 114, 0, 0, 0, 0, 120, 0, 116, 0, 684 0, 0, 49, 34, 0, 0, 0, 100, 0, 99, 685 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 686 0, 0, 58, 56, 54, 53, 0, 0, 0, 0, 687 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 688 106, 17, 18, 72, 73, 0, 52, 0, 21, 0, 689 0, 49, 0, 0, 0, 0, 106, 107, 108, 0, 690 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 691 117, 29, 0, 110, 109, 111, 0, 0, 33, 0, 692 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 693 0, 59, 0, 43, 0, 0, 0, 0, 0, 44, 694 6, 7, 8, 14, 84, 15, 16, 52, 0, 0, 695 49, 0, 0, 0, 0, 0, 49, 0, 0, 130, 696 129, 128, 0, 0, 121, 122, 123, 124, 125, 0, 697 103, 0, 35, 0, 101, 36, 49, 0, 0, 78, 698 76, 94, 102, 55, 66, 86, 90, 91, 87, 88, 699 89, 13, 51, 22, 0, 61, 62, 0, 27, 49, 700 26, 0, 104, 126, 127, 30, 32, 0, 0, 38, 701 0, 0, 12, 24, 23, 25, 0, 0, 0, 37, 702 0, 40, 0, 105, 31, 0, 0, 0, 0, 97, 703 0, 0, 41, 0, 0, 0, 0, 118, 85, 98, 704 0, 39, 119 705 }; 706 707 /* YYDEFGOTO[NTERM-NUM]. */ 708 static const yytype_int16 yydefgoto[] = 709 { 710 -1, 1, 3, 33, 163, 34, 36, 107, 109, 82, 711 83, 180, 84, 172, 68, 69, 85, 100, 101, 86, 712 311, 87, 275, 88, 118, 320, 138, 90, 71, 125, 713 206, 126, 331, 127 714 }; 715 716 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing 717 STATE-NUM. */ 718 #define YYPACT_NINF -125 719 static const yytype_int16 yypact[] = 720 { 721 -125, 7, -125, 308, -41, -125, -125, -125, -125, -19, 722 -125, -125, -125, -125, -125, 80, 80, -125, -19, -19, 723 -125, -125, -125, -125, -125, -125, -19, 405, 364, 364, 724 -31, -15, -125, -125, -2, -125, 528, 528, 337, -18, 725 -19, 409, -18, 528, 230, 187, -18, 448, 448, -125, 726 257, -125, 448, 448, -6, 15, 94, 309, -125, 49, 727 19, 44, 95, 19, 309, 309, 63, 391, -125, -125, 728 -125, 90, 137, -125, -125, 145, -125, 146, -125, -125, 729 -125, 66, -125, -125, 52, -125, -125, 150, -125, 147, 730 -125, 137, 57, -125, 448, 448, -125, -125, -125, 448, 731 167, -125, -125, -125, 184, 200, 431, -125, 47, -125, 732 201, 364, 217, 189, 223, 221, 63, 228, -125, -125, 733 -125, -125, 289, 448, 448, 231, -125, 181, -125, 411, 734 54, 448, -19, -125, 237, 238, 12, -125, 240, -125, 735 241, 244, 246, 189, -125, 245, 114, 319, 448, 448, 736 417, 243, -125, -125, -125, 137, 364, 189, 293, 312, 737 313, 341, 364, 308, 542, 552, -125, 189, 189, 364, 738 257, -125, -125, -125, -125, 282, -125, 315, -125, 189, 739 287, 42, 296, 114, 303, 63, 47, -125, -125, 54, 740 448, 448, 448, 363, 369, 448, 448, 448, 448, 448, 741 -125, -125, 306, -125, -125, -125, 311, 316, -125, 53, 742 448, 321, 65, 53, 189, 189, -125, 318, 324, 250, 743 325, -125, 405, -125, 326, 391, 391, 391, 391, -125, 744 -125, -125, -125, -125, 317, -125, -125, 231, 130, 328, 745 -19, 323, 189, 189, 189, 189, 334, 336, 340, 602, 746 621, 628, 448, 448, 197, 197, -125, -125, -125, 352, 747 -125, 49, -125, 516, 359, -125, -19, 366, 371, -125, 748 -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, 749 -125, 189, -125, -125, 474, -125, -125, 361, -125, 165, 750 -125, 399, -125, 235, 235, 432, -125, 189, 53, -125, 751 376, 189, -125, -125, -125, -125, 377, 448, 380, -125, 752 189, -125, 383, -125, -125, 112, 385, 189, 386, -125, 753 388, 189, -125, 448, 112, 382, 267, 395, -125, -125, 754 448, -125, 613 755 }; 756 757 /* YYPGOTO[NTERM-NUM]. */ 758 static const yytype_int16 yypgoto[] = 759 { 760 -125, -125, -125, 292, -125, -125, 578, 45, 354, -56, 761 400, -48, -25, -125, -7, -42, -21, -5, -124, 5, 762 -125, -10, 89, -118, -28, 140, -125, -46, 4, -90, 763 277, -4, -125, -16 764 }; 765 766 /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If 767 positive, shift that token. If negative, reduce the rule which 768 number is the opposite. If zero, do what YYDEFACT says. 769 If YYTABLE_NINF, syntax error. */ 770 #define YYTABLE_NINF -61 771 static const yytype_int16 yytable[] = 772 { 773 89, 89, 114, 133, 92, 201, 70, 2, 89, 89, 774 89, 55, 55, 105, 134, 89, 139, 140, 176, 54, 775 56, 211, 35, 72, 91, 91, 103, 103, 217, 218, 776 93, 94, 104, 103, 91, 97, 98, 110, 112, 145, 777 115, 102, 102, 120, 121, 40, 40, 95, 102, 128, 778 117, 242, 47, 48, 41, 123, 124, 135, 129, 144, 779 154, 96, 132, 58, 59, 218, 77, 78, 152, 141, 780 142, 66, 97, 98, 47, 150, 151, 155, 164, 165, 781 237, 49, 130, 89, 106, 181, 178, 111, 47, 48, 782 116, 119, 203, 204, 205, 166, 247, 97, 98, 173, 783 77, 78, 175, 49, 51, 131, 40, 91, -60, 184, 784 174, 52, 77, 264, 53, 145, 156, 49, 81, 187, 785 188, 162, 152, 153, 50, 202, 51, 207, 89, 224, 786 143, 223, 219, 67, 89, 295, 53, 229, 50, 234, 787 51, 89, 77, 78, 236, 220, 121, 52, 97, 98, 788 53, 240, 91, 158, 159, 74, 160, 146, 91, 75, 789 76, 318, 319, 262, 136, 91, 265, 266, 203, 204, 790 205, 239, 233, 235, 249, 250, 251, 208, 246, 254, 791 255, 256, 257, 258, 190, 191, 192, 193, 194, 195, 792 196, 197, 198, 199, 263, 286, 287, 276, 276, 276, 793 276, 273, 161, 73, 147, 296, 74, 197, 198, 199, 794 75, 76, 148, 149, 285, 181, 181, 157, 72, 267, 795 268, 277, 277, 277, 277, 73, 243, 73, 74, 40, 796 74, 167, 75, 76, 75, 76, 293, 294, 47, 48, 797 97, 98, 303, 195, 196, 197, 198, 199, 168, 200, 798 288, 40, 309, 190, 191, 192, 193, 194, 195, 196, 799 197, 198, 199, 122, 169, 123, 124, 49, 177, 308, 800 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 801 115, 179, 316, 97, 98, 283, 302, 182, 183, 322, 802 51, 290, 185, 325, 305, 113, 186, 67, 189, 225, 803 53, 209, 210, 314, 212, 213, 312, 326, 214, 4, 804 215, 299, 222, 216, 332, 278, 279, 280, 271, 226, 805 227, 5, 6, 7, 8, 9, 10, 11, 12, 13, 806 14, 15, 16, 17, 18, 329, 19, 20, 21, 22, 807 23, 24, 25, 26, 27, 47, 48, 73, 228, 238, 808 74, 28, 29, 241, 75, 76, 239, 203, 204, 205, 809 74, 244, 97, 98, 75, 76, 30, 245, 31, 252, 810 259, 32, 47, 48, 49, 73, 253, 221, 74, 260, 811 261, 281, 75, 76, 77, 78, 269, 284, 79, 80, 812 97, 98, 270, 272, 274, 50, 282, 51, 289, 47, 813 48, 49, 73, 291, 67, 74, 81, 53, 292, 75, 814 76, 77, 78, 47, 48, 79, 80, 47, 48, 47, 815 48, 99, 50, 298, 51, 47, 48, 304, 49, 73, 816 300, 67, 74, 81, 53, 301, 75, 76, 306, 47, 817 48, 307, 49, 310, 315, 313, 49, 317, 49, 321, 818 328, 51, 324, 323, 49, 230, 47, 48, 52, 330, 819 171, 53, 137, 50, 327, 51, 248, 108, 49, 51, 820 0, 51, 67, 221, 0, 53, 52, 51, 52, 53, 821 99, 53, 47, 48, 52, 49, 0, 53, 0, 170, 822 0, 51, 0, 0, 0, 0, 0, 0, 67, 0, 823 0, 53, 0, 0, 0, 0, 0, 0, 51, 0, 824 0, 49, 0, 0, 0, 52, 0, 0, 53, 190, 825 191, 192, 193, 194, 195, 196, 197, 198, 199, 0, 826 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 827 0, 67, 0, 0, 53, 190, 191, 192, 193, 194, 828 195, 196, 197, 198, 199, 190, 191, 192, 193, 194, 829 195, 196, 197, 198, 199, 0, 73, 0, 0, 74, 830 0, 0, 0, 75, 76, 0, 0, 0, 0, 0, 831 297, 97, 98, 0, 37, 38, 39, 0, 42, 43, 832 44, 45, 46, 0, 0, 57, 0, 99, 60, 61, 833 62, 63, 64, 65, 0, 231, 191, 192, 193, 194, 834 195, 196, 197, 198, 199, 232, 190, 191, 192, 193, 835 194, 195, 196, 197, 198, 199, 192, 193, 194, 195, 836 196, 197, 198, 199, 193, 194, 195, 196, 197, 198, 837 199 838 }; 839 840 static const yytype_int16 yycheck[] = 841 { 842 28, 29, 44, 59, 29, 129, 27, 0, 36, 37, 843 38, 15, 16, 38, 60, 43, 62, 63, 108, 15, 844 16, 9, 63, 27, 28, 29, 36, 37, 146, 147, 845 61, 62, 37, 43, 38, 53, 54, 41, 43, 67, 846 44, 36, 37, 47, 48, 64, 64, 62, 43, 53, 847 45, 9, 8, 9, 9, 8, 9, 61, 64, 66, 848 81, 63, 57, 18, 19, 183, 47, 48, 56, 64, 849 65, 26, 53, 54, 8, 9, 10, 81, 94, 95, 850 170, 37, 67, 111, 39, 113, 111, 42, 8, 9, 851 45, 46, 38, 39, 40, 99, 186, 53, 54, 106, 852 47, 48, 106, 37, 60, 11, 64, 111, 66, 116, 853 106, 67, 47, 48, 70, 143, 64, 37, 69, 123, 854 124, 64, 56, 57, 58, 129, 60, 131, 156, 157, 855 67, 156, 148, 67, 162, 259, 70, 162, 58, 167, 856 60, 169, 47, 48, 169, 149, 150, 67, 53, 54, 857 70, 179, 156, 6, 7, 41, 9, 67, 162, 45, 858 46, 49, 50, 209, 69, 169, 212, 213, 38, 39, 859 40, 41, 167, 168, 190, 191, 192, 132, 185, 195, 860 196, 197, 198, 199, 3, 4, 5, 6, 7, 8, 861 9, 10, 11, 12, 210, 243, 244, 225, 226, 227, 862 228, 222, 55, 38, 67, 261, 41, 10, 11, 12, 863 45, 46, 67, 67, 242, 243, 244, 67, 222, 214, 864 215, 225, 226, 227, 228, 38, 181, 38, 41, 64, 865 41, 64, 45, 46, 45, 46, 252, 253, 8, 9, 866 53, 54, 284, 8, 9, 10, 11, 12, 64, 68, 867 245, 64, 298, 3, 4, 5, 6, 7, 8, 9, 868 10, 11, 12, 6, 64, 8, 9, 37, 67, 297, 869 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 870 284, 64, 310, 53, 54, 240, 281, 64, 67, 317, 871 60, 246, 64, 321, 289, 65, 7, 67, 67, 6, 872 70, 64, 64, 307, 64, 64, 301, 323, 64, 1, 873 64, 266, 69, 68, 330, 226, 227, 228, 68, 7, 874 7, 13, 14, 15, 16, 17, 18, 19, 20, 21, 875 22, 23, 24, 25, 26, 68, 28, 29, 30, 31, 876 32, 33, 34, 35, 36, 8, 9, 38, 7, 67, 877 41, 43, 44, 66, 45, 46, 41, 38, 39, 40, 878 41, 65, 53, 54, 45, 46, 58, 64, 60, 6, 879 64, 63, 8, 9, 37, 38, 7, 56, 41, 68, 880 64, 64, 45, 46, 47, 48, 68, 64, 51, 52, 881 53, 54, 68, 68, 68, 58, 68, 60, 64, 8, 882 9, 37, 38, 67, 67, 41, 69, 70, 68, 45, 883 46, 47, 48, 8, 9, 51, 52, 8, 9, 8, 884 9, 69, 58, 64, 60, 8, 9, 66, 37, 38, 885 64, 67, 41, 69, 70, 64, 45, 46, 39, 8, 886 9, 9, 37, 67, 64, 68, 37, 64, 37, 64, 887 68, 60, 64, 67, 37, 163, 8, 9, 67, 64, 888 106, 70, 62, 58, 324, 60, 189, 58, 37, 60, 889 -1, 60, 67, 56, -1, 70, 67, 60, 67, 70, 890 69, 70, 8, 9, 67, 37, -1, 70, -1, 58, 891 -1, 60, -1, -1, -1, -1, -1, -1, 67, -1, 892 -1, 70, -1, -1, -1, -1, -1, -1, 60, -1, 893 -1, 37, -1, -1, -1, 67, -1, -1, 70, 3, 894 4, 5, 6, 7, 8, 9, 10, 11, 12, -1, 895 -1, -1, -1, -1, 60, -1, -1, -1, -1, -1, 896 -1, 67, -1, -1, 70, 3, 4, 5, 6, 7, 897 8, 9, 10, 11, 12, 3, 4, 5, 6, 7, 898 8, 9, 10, 11, 12, -1, 38, -1, -1, 41, 899 -1, -1, -1, 45, 46, -1, -1, -1, -1, -1, 900 64, 53, 54, -1, 6, 7, 8, -1, 10, 11, 901 12, 13, 14, -1, -1, 17, -1, 69, 20, 21, 902 22, 23, 24, 25, -1, 63, 4, 5, 6, 7, 903 8, 9, 10, 11, 12, 63, 3, 4, 5, 6, 904 7, 8, 9, 10, 11, 12, 5, 6, 7, 8, 905 9, 10, 11, 12, 6, 7, 8, 9, 10, 11, 906 12 907 }; 908 909 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing 910 symbol of state STATE-NUM. */ 911 static const yytype_uint8 yystos[] = 912 { 913 0, 72, 0, 73, 1, 13, 14, 15, 16, 17, 914 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 915 29, 30, 31, 32, 33, 34, 35, 36, 43, 44, 916 58, 60, 63, 74, 76, 63, 77, 77, 77, 77, 917 64, 78, 77, 77, 77, 77, 77, 8, 9, 37, 918 58, 60, 67, 70, 99, 102, 99, 77, 78, 78, 919 77, 77, 77, 77, 77, 77, 78, 67, 85, 86, 920 87, 99, 102, 38, 41, 45, 46, 47, 48, 51, 921 52, 69, 80, 81, 83, 87, 90, 92, 94, 95, 922 98, 102, 83, 61, 62, 62, 63, 53, 54, 69, 923 88, 89, 90, 92, 88, 83, 78, 78, 58, 79, 924 102, 78, 88, 65, 86, 102, 78, 90, 95, 78, 925 102, 102, 6, 8, 9, 100, 102, 104, 102, 64, 926 67, 11, 90, 80, 98, 102, 69, 81, 97, 98, 927 98, 90, 90, 67, 85, 95, 67, 67, 67, 67, 928 9, 10, 56, 57, 87, 102, 64, 67, 6, 7, 929 9, 55, 64, 75, 104, 104, 102, 64, 64, 64, 930 58, 79, 84, 85, 99, 102, 100, 67, 83, 64, 931 82, 95, 64, 67, 85, 64, 7, 102, 102, 67, 932 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 933 68, 89, 102, 38, 39, 40, 101, 102, 78, 64, 934 64, 9, 64, 64, 64, 64, 68, 94, 94, 104, 935 102, 56, 69, 83, 95, 6, 7, 7, 7, 83, 936 74, 63, 63, 90, 95, 90, 83, 100, 67, 41, 937 95, 66, 9, 78, 65, 64, 85, 100, 101, 104, 938 104, 104, 6, 7, 104, 104, 104, 104, 104, 64, 939 68, 64, 98, 104, 48, 98, 98, 90, 90, 68, 940 68, 68, 68, 87, 68, 93, 95, 102, 93, 93, 941 93, 64, 68, 78, 64, 95, 82, 82, 90, 64, 942 78, 67, 68, 104, 104, 89, 80, 64, 64, 78, 943 64, 64, 90, 86, 66, 90, 39, 9, 95, 98, 944 67, 91, 90, 68, 102, 64, 95, 64, 49, 50, 945 96, 64, 95, 67, 64, 95, 104, 96, 68, 68, 946 64, 103, 104 947 }; 948 949 #define yyerrok (yyerrstatus = 0) 950 #define yyclearin (yychar = YYEMPTY) 951 #define YYEMPTY (-2) 952 #define YYEOF 0 953 954 #define YYACCEPT goto yyacceptlab 955 #define YYABORT goto yyabortlab 956 #define YYERROR goto yyerrorlab 957 958 959 /* Like YYERROR except do call yyerror. This remains here temporarily 960 to ease the transition to the new meaning of YYERROR, for GCC. 961 Once GCC version 2 has supplanted version 1, this can go. */ 962 963 #define YYFAIL goto yyerrlab 964 965 #define YYRECOVERING() (!!yyerrstatus) 966 967 #define YYBACKUP(Token, Value) \ 968 do \ 969 if (yychar == YYEMPTY && yylen == 1) \ 970 { \ 971 yychar = (Token); \ 972 yylval = (Value); \ 973 yytoken = YYTRANSLATE (yychar); \ 974 YYPOPSTACK (1); \ 975 goto yybackup; \ 976 } \ 977 else \ 978 { \ 979 yyerror (YY_("syntax error: cannot back up")); \ 980 YYERROR; \ 981 } \ 982 while (YYID (0)) 983 984 985 #define YYTERROR 1 986 #define YYERRCODE 256 987 988 989 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. 990 If N is 0, then set CURRENT to the empty location which ends 991 the previous symbol: RHS[0] (always defined). */ 992 993 #define YYRHSLOC(Rhs, K) ((Rhs)[K]) 994 #ifndef YYLLOC_DEFAULT 995 # define YYLLOC_DEFAULT(Current, Rhs, N) \ 996 do \ 997 if (YYID (N)) \ 998 { \ 999 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ 1000 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ 1001 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ 1002 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ 1003 } \ 1004 else \ 1005 { \ 1006 (Current).first_line = (Current).last_line = \ 1007 YYRHSLOC (Rhs, 0).last_line; \ 1008 (Current).first_column = (Current).last_column = \ 1009 YYRHSLOC (Rhs, 0).last_column; \ 1010 } \ 1011 while (YYID (0)) 1012 #endif 1013 1014 1015 /* YY_LOCATION_PRINT -- Print the location on the stream. 1016 This macro was not mandated originally: define only if we know 1017 we won't break user code: when these are the locations we know. */ 1018 1019 #ifndef YY_LOCATION_PRINT 1020 # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL 1021 # define YY_LOCATION_PRINT(File, Loc) \ 1022 fprintf (File, "%d.%d-%d.%d", \ 1023 (Loc).first_line, (Loc).first_column, \ 1024 (Loc).last_line, (Loc).last_column) 1025 # else 1026 # define YY_LOCATION_PRINT(File, Loc) ((void) 0) 1027 # endif 1028 #endif 1029 1030 1031 /* YYLEX -- calling `yylex' with the right arguments. */ 1032 1033 #ifdef YYLEX_PARAM 1034 # define YYLEX yylex (YYLEX_PARAM) 1035 #else 1036 # define YYLEX yylex () 1037 #endif 1038 1039 /* Enable debugging if requested. */ 1040 #if YYDEBUG 1041 1042 # ifndef YYFPRINTF 1043 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */ 1044 # define YYFPRINTF fprintf 1045 # endif 1046 1047 # define YYDPRINTF(Args) \ 1048 do { \ 1049 if (yydebug) \ 1050 YYFPRINTF Args; \ 1051 } while (YYID (0)) 1052 1053 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ 1054 do { \ 1055 if (yydebug) \ 1056 { \ 1057 YYFPRINTF (stderr, "%s ", Title); \ 1058 yy_symbol_print (stderr, \ 1059 Type, Value); \ 1060 YYFPRINTF (stderr, "\n"); \ 1061 } \ 1062 } while (YYID (0)) 1063 1064 1065 /*--------------------------------. 1066 | Print this symbol on YYOUTPUT. | 1067 `--------------------------------*/ 1068 1069 /*ARGSUSED*/ 1070 #if (defined __STDC__ || defined __C99__FUNC__ \ 1071 || defined __cplusplus || defined _MSC_VER) 1072 static void 1073 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) 1074 #else 1075 static void 1076 yy_symbol_value_print (yyoutput, yytype, yyvaluep) 1077 FILE *yyoutput; 1078 int yytype; 1079 YYSTYPE const * const yyvaluep; 1080 #endif 1081 { 1082 if (!yyvaluep) 1083 return; 1084 # ifdef YYPRINT 1085 if (yytype < YYNTOKENS) 1086 YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); 1087 # else 1088 YYUSE (yyoutput); 1089 # endif 1090 switch (yytype) 1091 { 1092 default: 1093 break; 1094 } 1095 } 1096 1097 1098 /*--------------------------------. 1099 | Print this symbol on YYOUTPUT. | 1100 `--------------------------------*/ 1101 1102 #if (defined __STDC__ || defined __C99__FUNC__ \ 1103 || defined __cplusplus || defined _MSC_VER) 1104 static void 1105 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) 1106 #else 1107 static void 1108 yy_symbol_print (yyoutput, yytype, yyvaluep) 1109 FILE *yyoutput; 1110 int yytype; 1111 YYSTYPE const * const yyvaluep; 1112 #endif 1113 { 1114 if (yytype < YYNTOKENS) 1115 YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); 1116 else 1117 YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); 1118 1119 yy_symbol_value_print (yyoutput, yytype, yyvaluep); 1120 YYFPRINTF (yyoutput, ")"); 1121 } 1122 1123 /*------------------------------------------------------------------. 1124 | yy_stack_print -- Print the state stack from its BOTTOM up to its | 1125 | TOP (included). | 1126 `------------------------------------------------------------------*/ 1127 1128 #if (defined __STDC__ || defined __C99__FUNC__ \ 1129 || defined __cplusplus || defined _MSC_VER) 1130 static void 1131 yy_stack_print (yytype_int16 *bottom, yytype_int16 *top) 1132 #else 1133 static void 1134 yy_stack_print (bottom, top) 1135 yytype_int16 *bottom; 1136 yytype_int16 *top; 1137 #endif 1138 { 1139 YYFPRINTF (stderr, "Stack now"); 1140 for (; bottom <= top; ++bottom) 1141 YYFPRINTF (stderr, " %d", *bottom); 1142 YYFPRINTF (stderr, "\n"); 1143 } 1144 1145 # define YY_STACK_PRINT(Bottom, Top) \ 1146 do { \ 1147 if (yydebug) \ 1148 yy_stack_print ((Bottom), (Top)); \ 1149 } while (YYID (0)) 1150 1151 1152 /*------------------------------------------------. 1153 | Report that the YYRULE is going to be reduced. | 1154 `------------------------------------------------*/ 1155 1156 #if (defined __STDC__ || defined __C99__FUNC__ \ 1157 || defined __cplusplus || defined _MSC_VER) 1158 static void 1159 yy_reduce_print (YYSTYPE *yyvsp, int yyrule) 1160 #else 1161 static void 1162 yy_reduce_print (yyvsp, yyrule) 1163 YYSTYPE *yyvsp; 1164 int yyrule; 1165 #endif 1166 { 1167 int yynrhs = yyr2[yyrule]; 1168 int yyi; 1169 unsigned long int yylno = yyrline[yyrule]; 1170 YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", 1171 yyrule - 1, yylno); 1172 /* The symbols being reduced. */ 1173 for (yyi = 0; yyi < yynrhs; yyi++) 1174 { 1175 fprintf (stderr, " $%d = ", yyi + 1); 1176 yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], 1177 &(yyvsp[(yyi + 1) - (yynrhs)]) 1178 ); 1179 fprintf (stderr, "\n"); 1180 } 1181 } 1182 1183 # define YY_REDUCE_PRINT(Rule) \ 1184 do { \ 1185 if (yydebug) \ 1186 yy_reduce_print (yyvsp, Rule); \ 1187 } while (YYID (0)) 1188 1189 /* Nonzero means print parse trace. It is left uninitialized so that 1190 multiple parsers can coexist. */ 1191 int yydebug; 1192 #else /* !YYDEBUG */ 1193 # define YYDPRINTF(Args) 1194 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) 1195 # define YY_STACK_PRINT(Bottom, Top) 1196 # define YY_REDUCE_PRINT(Rule) 1197 #endif /* !YYDEBUG */ 1198 1199 1200 /* YYINITDEPTH -- initial size of the parser's stacks. */ 1201 #ifndef YYINITDEPTH 1202 # define YYINITDEPTH 200 1203 #endif 1204 1205 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only 1206 if the built-in stack extension method is used). 1207 1208 Do not make this value too large; the results are undefined if 1209 YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) 1210 evaluated with infinite-precision integer arithmetic. */ 1211 1212 #ifndef YYMAXDEPTH 1213 # define YYMAXDEPTH 10000 1214 #endif 1215 1216 1217 1218 #if YYERROR_VERBOSE 1219 1220 # ifndef yystrlen 1221 # if defined __GLIBC__ && defined _STRING_H 1222 # define yystrlen strlen 1223 # else 1224 /* Return the length of YYSTR. */ 1225 #if (defined __STDC__ || defined __C99__FUNC__ \ 1226 || defined __cplusplus || defined _MSC_VER) 1227 static YYSIZE_T 1228 yystrlen (const char *yystr) 1229 #else 1230 static YYSIZE_T 1231 yystrlen (yystr) 1232 const char *yystr; 1233 #endif 1234 { 1235 YYSIZE_T yylen; 1236 for (yylen = 0; yystr[yylen]; yylen++) 1237 continue; 1238 return yylen; 1239 } 1240 # endif 1241 # endif 1242 1243 # ifndef yystpcpy 1244 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE 1245 # define yystpcpy stpcpy 1246 # else 1247 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in 1248 YYDEST. */ 1249 #if (defined __STDC__ || defined __C99__FUNC__ \ 1250 || defined __cplusplus || defined _MSC_VER) 1251 static char * 1252 yystpcpy (char *yydest, const char *yysrc) 1253 #else 1254 static char * 1255 yystpcpy (yydest, yysrc) 1256 char *yydest; 1257 const char *yysrc; 1258 #endif 1259 { 1260 char *yyd = yydest; 1261 const char *yys = yysrc; 1262 1263 while ((*yyd++ = *yys++) != '\0') 1264 continue; 1265 1266 return yyd - 1; 1267 } 1268 # endif 1269 # endif 1270 1271 # ifndef yytnamerr 1272 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary 1273 quotes and backslashes, so that it's suitable for yyerror. The 1274 heuristic is that double-quoting is unnecessary unless the string 1275 contains an apostrophe, a comma, or backslash (other than 1276 backslash-backslash). YYSTR is taken from yytname. If YYRES is 1277 null, do not copy; instead, return the length of what the result 1278 would have been. */ 1279 static YYSIZE_T 1280 yytnamerr (char *yyres, const char *yystr) 1281 { 1282 if (*yystr == '"') 1283 { 1284 YYSIZE_T yyn = 0; 1285 char const *yyp = yystr; 1286 1287 for (;;) 1288 switch (*++yyp) 1289 { 1290 case '\'': 1291 case ',': 1292 goto do_not_strip_quotes; 1293 1294 case '\\': 1295 if (*++yyp != '\\') 1296 goto do_not_strip_quotes; 1297 /* Fall through. */ 1298 default: 1299 if (yyres) 1300 yyres[yyn] = *yyp; 1301 yyn++; 1302 break; 1303 1304 case '"': 1305 if (yyres) 1306 yyres[yyn] = '\0'; 1307 return yyn; 1308 } 1309 do_not_strip_quotes: ; 1310 } 1311 1312 if (! yyres) 1313 return yystrlen (yystr); 1314 1315 return yystpcpy (yyres, yystr) - yyres; 1316 } 1317 # endif 1318 1319 /* Copy into YYRESULT an error message about the unexpected token 1320 YYCHAR while in state YYSTATE. Return the number of bytes copied, 1321 including the terminating null byte. If YYRESULT is null, do not 1322 copy anything; just return the number of bytes that would be 1323 copied. As a special case, return 0 if an ordinary "syntax error" 1324 message will do. Return YYSIZE_MAXIMUM if overflow occurs during 1325 size calculation. */ 1326 static YYSIZE_T 1327 yysyntax_error (char *yyresult, int yystate, int yychar) 1328 { 1329 int yyn = yypact[yystate]; 1330 1331 if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) 1332 return 0; 1333 else 1334 { 1335 int yytype = YYTRANSLATE (yychar); 1336 YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); 1337 YYSIZE_T yysize = yysize0; 1338 YYSIZE_T yysize1; 1339 int yysize_overflow = 0; 1340 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; 1341 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; 1342 int yyx; 1343 1344 # if 0 1345 /* This is so xgettext sees the translatable formats that are 1346 constructed on the fly. */ 1347 YY_("syntax error, unexpected %s"); 1348 YY_("syntax error, unexpected %s, expecting %s"); 1349 YY_("syntax error, unexpected %s, expecting %s or %s"); 1350 YY_("syntax error, unexpected %s, expecting %s or %s or %s"); 1351 YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); 1352 # endif 1353 char *yyfmt; 1354 char const *yyf; 1355 static char const yyunexpected[] = "syntax error, unexpected %s"; 1356 static char const yyexpecting[] = ", expecting %s"; 1357 static char const yyor[] = " or %s"; 1358 char yyformat[sizeof yyunexpected 1359 + sizeof yyexpecting - 1 1360 + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) 1361 * (sizeof yyor - 1))]; 1362 char const *yyprefix = yyexpecting; 1363 1364 /* Start YYX at -YYN if negative to avoid negative indexes in 1365 YYCHECK. */ 1366 int yyxbegin = yyn < 0 ? -yyn : 0; 1367 1368 /* Stay within bounds of both yycheck and yytname. */ 1369 int yychecklim = YYLAST - yyn + 1; 1370 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; 1371 int yycount = 1; 1372 1373 yyarg[0] = yytname[yytype]; 1374 yyfmt = yystpcpy (yyformat, yyunexpected); 1375 1376 for (yyx = yyxbegin; yyx < yyxend; ++yyx) 1377 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) 1378 { 1379 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) 1380 { 1381 yycount = 1; 1382 yysize = yysize0; 1383 yyformat[sizeof yyunexpected - 1] = '\0'; 1384 break; 1385 } 1386 yyarg[yycount++] = yytname[yyx]; 1387 yysize1 = yysize + yytnamerr (0, yytname[yyx]); 1388 yysize_overflow |= (yysize1 < yysize); 1389 yysize = yysize1; 1390 yyfmt = yystpcpy (yyfmt, yyprefix); 1391 yyprefix = yyor; 1392 } 1393 1394 yyf = YY_(yyformat); 1395 yysize1 = yysize + yystrlen (yyf); 1396 yysize_overflow |= (yysize1 < yysize); 1397 yysize = yysize1; 1398 1399 if (yysize_overflow) 1400 return YYSIZE_MAXIMUM; 1401 1402 if (yyresult) 1403 { 1404 /* Avoid sprintf, as that infringes on the user's name space. 1405 Don't have undefined behavior even if the translation 1406 produced a string with the wrong number of "%s"s. */ 1407 char *yyp = yyresult; 1408 int yyi = 0; 1409 while ((*yyp = *yyf) != '\0') 1410 { 1411 if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) 1412 { 1413 yyp += yytnamerr (yyp, yyarg[yyi++]); 1414 yyf += 2; 1415 } 1416 else 1417 { 1418 yyp++; 1419 yyf++; 1420 } 1421 } 1422 } 1423 return yysize; 1424 } 1425 } 1426 #endif /* YYERROR_VERBOSE */ 1427 1428 1429 /*-----------------------------------------------. 1430 | Release the memory associated to this symbol. | 1431 `-----------------------------------------------*/ 1432 1433 /*ARGSUSED*/ 1434 #if (defined __STDC__ || defined __C99__FUNC__ \ 1435 || defined __cplusplus || defined _MSC_VER) 1436 static void 1437 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) 1438 #else 1439 static void 1440 yydestruct (yymsg, yytype, yyvaluep) 1441 const char *yymsg; 1442 int yytype; 1443 YYSTYPE *yyvaluep; 1444 #endif 1445 { 1446 YYUSE (yyvaluep); 1447 1448 if (!yymsg) 1449 yymsg = "Deleting"; 1450 YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); 1451 1452 switch (yytype) 1453 { 1454 1455 default: 1456 break; 1457 } 1458 } 1459 1460 1461 /* Prevent warnings from -Wmissing-prototypes. */ 1462 1463 #ifdef YYPARSE_PARAM 1464 #if defined __STDC__ || defined __cplusplus 1465 int yyparse (void *YYPARSE_PARAM); 1466 #else 1467 int yyparse (); 1468 #endif 1469 #else /* ! YYPARSE_PARAM */ 1470 #if defined __STDC__ || defined __cplusplus 1471 int yyparse (void); 1472 #else 1473 int yyparse (); 1474 #endif 1475 #endif /* ! YYPARSE_PARAM */ 1476 1477 1478 1479 /* The look-ahead symbol. */ 1480 int yychar; 1481 1482 /* The semantic value of the look-ahead symbol. */ 1483 YYSTYPE yylval; 1484 1485 /* Number of syntax errors so far. */ 1486 int yynerrs; 1487 1488 1489 1490 /*----------. 1491 | yyparse. | 1492 `----------*/ 1493 1494 #ifdef YYPARSE_PARAM 1495 #if (defined __STDC__ || defined __C99__FUNC__ \ 1496 || defined __cplusplus || defined _MSC_VER) 1497 int 1498 yyparse (void *YYPARSE_PARAM) 1499 #else 1500 int 1501 yyparse (YYPARSE_PARAM) 1502 void *YYPARSE_PARAM; 1503 #endif 1504 #else /* ! YYPARSE_PARAM */ 1505 #if (defined __STDC__ || defined __C99__FUNC__ \ 1506 || defined __cplusplus || defined _MSC_VER) 1507 int 1508 yyparse (void) 1509 #else 1510 int 1511 yyparse () 1512 1513 #endif 1514 #endif 1515 { 1516 1517 int yystate; 1518 int yyn; 1519 int yyresult; 1520 /* Number of tokens to shift before error messages enabled. */ 1521 int yyerrstatus; 1522 /* Look-ahead token as an internal (translated) token number. */ 1523 int yytoken = 0; 1524 #if YYERROR_VERBOSE 1525 /* Buffer for error messages, and its allocated size. */ 1526 char yymsgbuf[128]; 1527 char *yymsg = yymsgbuf; 1528 YYSIZE_T yymsg_alloc = sizeof yymsgbuf; 1529 #endif 1530 1531 /* Three stacks and their tools: 1532 `yyss': related to states, 1533 `yyvs': related to semantic values, 1534 `yyls': related to locations. 1535 1536 Refer to the stacks thru separate pointers, to allow yyoverflow 1537 to reallocate them elsewhere. */ 1538 1539 /* The state stack. */ 1540 yytype_int16 yyssa[YYINITDEPTH]; 1541 yytype_int16 *yyss = yyssa; 1542 yytype_int16 *yyssp; 1543 1544 /* The semantic value stack. */ 1545 YYSTYPE yyvsa[YYINITDEPTH]; 1546 YYSTYPE *yyvs = yyvsa; 1547 YYSTYPE *yyvsp; 1548 1549 1550 1551 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) 1552 1553 YYSIZE_T yystacksize = YYINITDEPTH; 1554 1555 /* The variables used to return semantic value and location from the 1556 action routines. */ 1557 YYSTYPE yyval; 1558 1559 1560 /* The number of symbols on the RHS of the reduced rule. 1561 Keep to zero when no symbol should be popped. */ 1562 int yylen = 0; 1563 1564 YYDPRINTF ((stderr, "Starting parse\n")); 1565 1566 yystate = 0; 1567 yyerrstatus = 0; 1568 yynerrs = 0; 1569 yychar = YYEMPTY; /* Cause a token to be read. */ 1570 1571 /* Initialize stack pointers. 1572 Waste one element of value and location stack 1573 so that they stay on the same level as the state stack. 1574 The wasted elements are never initialized. */ 1575 1576 yyssp = yyss; 1577 yyvsp = yyvs; 1578 1579 goto yysetstate; 1580 1581 /*------------------------------------------------------------. 1582 | yynewstate -- Push a new state, which is found in yystate. | 1583 `------------------------------------------------------------*/ 1584 yynewstate: 1585 /* In all cases, when you get here, the value and location stacks 1586 have just been pushed. So pushing a state here evens the stacks. */ 1587 yyssp++; 1588 1589 yysetstate: 1590 *yyssp = yystate; 1591 1592 if (yyss + yystacksize - 1 <= yyssp) 1593 { 1594 /* Get the current used size of the three stacks, in elements. */ 1595 YYSIZE_T yysize = yyssp - yyss + 1; 1596 1597 #ifdef yyoverflow 1598 { 1599 /* Give user a chance to reallocate the stack. Use copies of 1600 these so that the &'s don't force the real ones into 1601 memory. */ 1602 YYSTYPE *yyvs1 = yyvs; 1603 yytype_int16 *yyss1 = yyss; 1604 1605 1606 /* Each stack pointer address is followed by the size of the 1607 data in use in that stack, in bytes. This used to be a 1608 conditional around just the two extra args, but that might 1609 be undefined if yyoverflow is a macro. */ 1610 yyoverflow (YY_("memory exhausted"), 1611 &yyss1, yysize * sizeof (*yyssp), 1612 &yyvs1, yysize * sizeof (*yyvsp), 1613 1614 &yystacksize); 1615 1616 yyss = yyss1; 1617 yyvs = yyvs1; 1618 } 1619 #else /* no yyoverflow */ 1620 # ifndef YYSTACK_RELOCATE 1621 goto yyexhaustedlab; 1622 # else 1623 /* Extend the stack our own way. */ 1624 if (YYMAXDEPTH <= yystacksize) 1625 goto yyexhaustedlab; 1626 yystacksize *= 2; 1627 if (YYMAXDEPTH < yystacksize) 1628 yystacksize = YYMAXDEPTH; 1629 1630 { 1631 yytype_int16 *yyss1 = yyss; 1632 union yyalloc *yyptr = 1633 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); 1634 if (! yyptr) 1635 goto yyexhaustedlab; 1636 YYSTACK_RELOCATE (yyss); 1637 YYSTACK_RELOCATE (yyvs); 1638 1639 # undef YYSTACK_RELOCATE 1640 if (yyss1 != yyssa) 1641 YYSTACK_FREE (yyss1); 1642 } 1643 # endif 1644 #endif /* no yyoverflow */ 1645 1646 yyssp = yyss + yysize - 1; 1647 yyvsp = yyvs + yysize - 1; 1648 1649 1650 YYDPRINTF ((stderr, "Stack size increased to %lu\n", 1651 (unsigned long int) yystacksize)); 1652 1653 if (yyss + yystacksize - 1 <= yyssp) 1654 YYABORT; 1655 } 1656 1657 YYDPRINTF ((stderr, "Entering state %d\n", yystate)); 1658 1659 goto yybackup; 1660 1661 /*-----------. 1662 | yybackup. | 1663 `-----------*/ 1664 yybackup: 1665 1666 /* Do appropriate processing given the current state. Read a 1667 look-ahead token if we need one and don't already have one. */ 1668 1669 /* First try to decide what to do without reference to look-ahead token. */ 1670 yyn = yypact[yystate]; 1671 if (yyn == YYPACT_NINF) 1672 goto yydefault; 1673 1674 /* Not known => get a look-ahead token if don't already have one. */ 1675 1676 /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ 1677 if (yychar == YYEMPTY) 1678 { 1679 YYDPRINTF ((stderr, "Reading a token: ")); 1680 yychar = YYLEX; 1681 } 1682 1683 if (yychar <= YYEOF) 1684 { 1685 yychar = yytoken = YYEOF; 1686 YYDPRINTF ((stderr, "Now at end of input.\n")); 1687 } 1688 else 1689 { 1690 yytoken = YYTRANSLATE (yychar); 1691 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); 1692 } 1693 1694 /* If the proper action on seeing token YYTOKEN is to reduce or to 1695 detect an error, take that action. */ 1696 yyn += yytoken; 1697 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) 1698 goto yydefault; 1699 yyn = yytable[yyn]; 1700 if (yyn <= 0) 1701 { 1702 if (yyn == 0 || yyn == YYTABLE_NINF) 1703 goto yyerrlab; 1704 yyn = -yyn; 1705 goto yyreduce; 1706 } 1707 1708 if (yyn == YYFINAL) 1709 YYACCEPT; 1710 1711 /* Count tokens shifted since error; after three, turn off error 1712 status. */ 1713 if (yyerrstatus) 1714 yyerrstatus--; 1715 1716 /* Shift the look-ahead token. */ 1717 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); 1718 1719 /* Discard the shifted token unless it is eof. */ 1720 if (yychar != YYEOF) 1721 yychar = YYEMPTY; 1722 1723 yystate = yyn; 1724 *++yyvsp = yylval; 1725 1726 goto yynewstate; 1727 1728 1729 /*-----------------------------------------------------------. 1730 | yydefault -- do the default action for the current state. | 1731 `-----------------------------------------------------------*/ 1732 yydefault: 1733 yyn = yydefact[yystate]; 1734 if (yyn == 0) 1735 goto yyerrlab; 1736 goto yyreduce; 1737 1738 1739 /*-----------------------------. 1740 | yyreduce -- Do a reduction. | 1741 `-----------------------------*/ 1742 yyreduce: 1743 /* yyn is the number of a rule to reduce with. */ 1744 yylen = yyr2[yyn]; 1745 1746 /* If YYLEN is nonzero, implement the default value of the action: 1747 `$$ = $1'. 1748 1749 Otherwise, the following line sets YYVAL to garbage. 1750 This behavior is undocumented and Bison 1751 users should not rely upon it. Assigning to YYVAL 1752 unconditionally makes the parser a bit smaller, and it avoids a 1753 GCC warning that YYVAL may be used uninitialized. */ 1754 yyval = yyvsp[1-yylen]; 1755 1756 1757 YY_REDUCE_PRINT (yyn); 1758 switch (yyn) 1759 { 1760 case 3: 1761 #line 70 "a.y" 1762 { 1763 stmtline = lineno; 1764 } 1765 break; 1766 1767 case 5: 1768 #line 77 "a.y" 1769 { 1770 (yyvsp[(1) - (2)].sym) = labellookup((yyvsp[(1) - (2)].sym)); 1771 if((yyvsp[(1) - (2)].sym)->type == LLAB && (yyvsp[(1) - (2)].sym)->value != pc) 1772 yyerror("redeclaration of %s", (yyvsp[(1) - (2)].sym)->labelname); 1773 (yyvsp[(1) - (2)].sym)->type = LLAB; 1774 (yyvsp[(1) - (2)].sym)->value = pc; 1775 } 1776 break; 1777 1778 case 7: 1779 #line 86 "a.y" 1780 { 1781 (yyvsp[(1) - (4)].sym)->type = LVAR; 1782 (yyvsp[(1) - (4)].sym)->value = (yyvsp[(3) - (4)].lval); 1783 } 1784 break; 1785 1786 case 8: 1787 #line 91 "a.y" 1788 { 1789 if((yyvsp[(1) - (4)].sym)->value != (yyvsp[(3) - (4)].lval)) 1790 yyerror("redeclaration of %s", (yyvsp[(1) - (4)].sym)->name); 1791 (yyvsp[(1) - (4)].sym)->value = (yyvsp[(3) - (4)].lval); 1792 } 1793 break; 1794 1795 case 12: 1796 #line 105 "a.y" 1797 { 1798 outcode((yyvsp[(1) - (7)].lval), (yyvsp[(2) - (7)].lval), &(yyvsp[(3) - (7)].addr), (yyvsp[(5) - (7)].lval), &(yyvsp[(7) - (7)].addr)); 1799 } 1800 break; 1801 1802 case 13: 1803 #line 109 "a.y" 1804 { 1805 outcode((yyvsp[(1) - (6)].lval), (yyvsp[(2) - (6)].lval), &(yyvsp[(3) - (6)].addr), (yyvsp[(5) - (6)].lval), &nullgen); 1806 } 1807 break; 1808 1809 case 14: 1810 #line 113 "a.y" 1811 { 1812 outcode((yyvsp[(1) - (5)].lval), (yyvsp[(2) - (5)].lval), &(yyvsp[(3) - (5)].addr), NREG, &(yyvsp[(5) - (5)].addr)); 1813 } 1814 break; 1815 1816 case 15: 1817 #line 120 "a.y" 1818 { 1819 outcode((yyvsp[(1) - (5)].lval), (yyvsp[(2) - (5)].lval), &(yyvsp[(3) - (5)].addr), NREG, &(yyvsp[(5) - (5)].addr)); 1820 } 1821 break; 1822 1823 case 16: 1824 #line 127 "a.y" 1825 { 1826 outcode((yyvsp[(1) - (5)].lval), (yyvsp[(2) - (5)].lval), &(yyvsp[(3) - (5)].addr), NREG, &(yyvsp[(5) - (5)].addr)); 1827 } 1828 break; 1829 1830 case 17: 1831 #line 134 "a.y" 1832 { 1833 outcode((yyvsp[(1) - (4)].lval), (yyvsp[(2) - (4)].lval), &nullgen, NREG, &(yyvsp[(4) - (4)].addr)); 1834 } 1835 break; 1836 1837 case 18: 1838 #line 138 "a.y" 1839 { 1840 outcode((yyvsp[(1) - (4)].lval), (yyvsp[(2) - (4)].lval), &nullgen, NREG, &(yyvsp[(4) - (4)].addr)); 1841 } 1842 break; 1843 1844 case 19: 1845 #line 145 "a.y" 1846 { 1847 outcode((yyvsp[(1) - (3)].lval), Always, &nullgen, NREG, &(yyvsp[(3) - (3)].addr)); 1848 } 1849 break; 1850 1851 case 20: 1852 #line 152 "a.y" 1853 { 1854 outcode((yyvsp[(1) - (3)].lval), Always, &nullgen, NREG, &(yyvsp[(3) - (3)].addr)); 1855 } 1856 break; 1857 1858 case 21: 1859 #line 159 "a.y" 1860 { 1861 outcode((yyvsp[(1) - (4)].lval), (yyvsp[(2) - (4)].lval), &nullgen, NREG, &(yyvsp[(4) - (4)].addr)); 1862 } 1863 break; 1864 1865 case 22: 1866 #line 166 "a.y" 1867 { 1868 outcode((yyvsp[(1) - (6)].lval), (yyvsp[(2) - (6)].lval), &(yyvsp[(3) - (6)].addr), (yyvsp[(5) - (6)].lval), &nullgen); 1869 } 1870 break; 1871 1872 case 23: 1873 #line 173 "a.y" 1874 { 1875 Addr g; 1876 1877 g = nullgen; 1878 g.type = D_CONST; 1879 g.offset = (yyvsp[(6) - (7)].lval); 1880 outcode((yyvsp[(1) - (7)].lval), (yyvsp[(2) - (7)].lval), &(yyvsp[(3) - (7)].addr), NREG, &g); 1881 } 1882 break; 1883 1884 case 24: 1885 #line 182 "a.y" 1886 { 1887 Addr g; 1888 1889 g = nullgen; 1890 g.type = D_CONST; 1891 g.offset = (yyvsp[(4) - (7)].lval); 1892 outcode((yyvsp[(1) - (7)].lval), (yyvsp[(2) - (7)].lval), &g, NREG, &(yyvsp[(7) - (7)].addr)); 1893 } 1894 break; 1895 1896 case 25: 1897 #line 194 "a.y" 1898 { 1899 outcode((yyvsp[(1) - (7)].lval), (yyvsp[(2) - (7)].lval), &(yyvsp[(5) - (7)].addr), (yyvsp[(3) - (7)].addr).reg, &(yyvsp[(7) - (7)].addr)); 1900 } 1901 break; 1902 1903 case 26: 1904 #line 198 "a.y" 1905 { 1906 outcode((yyvsp[(1) - (6)].lval), (yyvsp[(2) - (6)].lval), &(yyvsp[(5) - (6)].addr), (yyvsp[(3) - (6)].addr).reg, &(yyvsp[(3) - (6)].addr)); 1907 } 1908 break; 1909 1910 case 27: 1911 #line 202 "a.y" 1912 { 1913 outcode((yyvsp[(1) - (6)].lval), (yyvsp[(2) - (6)].lval), &(yyvsp[(4) - (6)].addr), (yyvsp[(6) - (6)].addr).reg, &(yyvsp[(6) - (6)].addr)); 1914 } 1915 break; 1916 1917 case 28: 1918 #line 209 "a.y" 1919 { 1920 outcode((yyvsp[(1) - (3)].lval), (yyvsp[(2) - (3)].lval), &nullgen, NREG, &nullgen); 1921 } 1922 break; 1923 1924 case 29: 1925 #line 216 "a.y" 1926 { 1927 settext((yyvsp[(2) - (4)].addr).sym); 1928 (yyvsp[(4) - (4)].addr).type = D_CONST2; 1929 (yyvsp[(4) - (4)].addr).offset2 = ArgsSizeUnknown; 1930 outcode((yyvsp[(1) - (4)].lval), Always, &(yyvsp[(2) - (4)].addr), 0, &(yyvsp[(4) - (4)].addr)); 1931 } 1932 break; 1933 1934 case 30: 1935 #line 223 "a.y" 1936 { 1937 settext((yyvsp[(2) - (6)].addr).sym); 1938 (yyvsp[(6) - (6)].addr).type = D_CONST2; 1939 (yyvsp[(6) - (6)].addr).offset2 = ArgsSizeUnknown; 1940 outcode((yyvsp[(1) - (6)].lval), Always, &(yyvsp[(2) - (6)].addr), (yyvsp[(4) - (6)].lval), &(yyvsp[(6) - (6)].addr)); 1941 } 1942 break; 1943 1944 case 31: 1945 #line 230 "a.y" 1946 { 1947 settext((yyvsp[(2) - (8)].addr).sym); 1948 (yyvsp[(6) - (8)].addr).type = D_CONST2; 1949 (yyvsp[(6) - (8)].addr).offset2 = (yyvsp[(8) - (8)].lval); 1950 outcode((yyvsp[(1) - (8)].lval), Always, &(yyvsp[(2) - (8)].addr), (yyvsp[(4) - (8)].lval), &(yyvsp[(6) - (8)].addr)); 1951 } 1952 break; 1953 1954 case 32: 1955 #line 240 "a.y" 1956 { 1957 outcode((yyvsp[(1) - (6)].lval), Always, &(yyvsp[(2) - (6)].addr), (yyvsp[(4) - (6)].lval), &(yyvsp[(6) - (6)].addr)); 1958 } 1959 break; 1960 1961 case 33: 1962 #line 247 "a.y" 1963 { 1964 outcode((yyvsp[(1) - (4)].lval), (yyvsp[(2) - (4)].lval), &(yyvsp[(3) - (4)].addr), NREG, &nullgen); 1965 } 1966 break; 1967 1968 case 34: 1969 #line 254 "a.y" 1970 { 1971 outcode((yyvsp[(1) - (3)].lval), Always, &nullgen, NREG, &(yyvsp[(3) - (3)].addr)); 1972 } 1973 break; 1974 1975 case 35: 1976 #line 261 "a.y" 1977 { 1978 outcode((yyvsp[(1) - (5)].lval), (yyvsp[(2) - (5)].lval), &(yyvsp[(3) - (5)].addr), NREG, &(yyvsp[(5) - (5)].addr)); 1979 } 1980 break; 1981 1982 case 36: 1983 #line 265 "a.y" 1984 { 1985 outcode((yyvsp[(1) - (5)].lval), (yyvsp[(2) - (5)].lval), &(yyvsp[(3) - (5)].addr), NREG, &(yyvsp[(5) - (5)].addr)); 1986 } 1987 break; 1988 1989 case 37: 1990 #line 269 "a.y" 1991 { 1992 outcode((yyvsp[(1) - (7)].lval), (yyvsp[(2) - (7)].lval), &(yyvsp[(3) - (7)].addr), (yyvsp[(5) - (7)].lval), &(yyvsp[(7) - (7)].addr)); 1993 } 1994 break; 1995 1996 case 38: 1997 #line 273 "a.y" 1998 { 1999 outcode((yyvsp[(1) - (6)].lval), (yyvsp[(2) - (6)].lval), &(yyvsp[(3) - (6)].addr), (yyvsp[(5) - (6)].addr).reg, &nullgen); 2000 } 2001 break; 2002 2003 case 39: 2004 #line 280 "a.y" 2005 { 2006 Addr g; 2007 2008 g = nullgen; 2009 g.type = D_CONST; 2010 g.offset = 2011 (0xe << 24) | /* opcode */ 2012 ((yyvsp[(1) - (12)].lval) << 20) | /* MCR/MRC */ 2013 ((yyvsp[(2) - (12)].lval) << 28) | /* scond */ 2014 (((yyvsp[(3) - (12)].lval) & 15) << 8) | /* coprocessor number */ 2015 (((yyvsp[(5) - (12)].lval) & 7) << 21) | /* coprocessor operation */ 2016 (((yyvsp[(7) - (12)].lval) & 15) << 12) | /* arm register */ 2017 (((yyvsp[(9) - (12)].lval) & 15) << 16) | /* Crn */ 2018 (((yyvsp[(11) - (12)].lval) & 15) << 0) | /* Crm */ 2019 (((yyvsp[(12) - (12)].lval) & 7) << 5) | /* coprocessor information */ 2020 (1<<4); /* must be set */ 2021 outcode(AMRC, Always, &nullgen, NREG, &g); 2022 } 2023 break; 2024 2025 case 40: 2026 #line 302 "a.y" 2027 { 2028 outcode((yyvsp[(1) - (7)].lval), (yyvsp[(2) - (7)].lval), &(yyvsp[(3) - (7)].addr), (yyvsp[(5) - (7)].addr).reg, &(yyvsp[(7) - (7)].addr)); 2029 } 2030 break; 2031 2032 case 41: 2033 #line 310 "a.y" 2034 { 2035 (yyvsp[(7) - (9)].addr).type = D_REGREG2; 2036 (yyvsp[(7) - (9)].addr).offset = (yyvsp[(9) - (9)].lval); 2037 outcode((yyvsp[(1) - (9)].lval), (yyvsp[(2) - (9)].lval), &(yyvsp[(3) - (9)].addr), (yyvsp[(5) - (9)].addr).reg, &(yyvsp[(7) - (9)].addr)); 2038 } 2039 break; 2040 2041 case 42: 2042 #line 319 "a.y" 2043 { 2044 outcode((yyvsp[(1) - (2)].lval), Always, &(yyvsp[(2) - (2)].addr), NREG, &nullgen); 2045 } 2046 break; 2047 2048 case 43: 2049 #line 326 "a.y" 2050 { 2051 if((yyvsp[(2) - (4)].addr).type != D_CONST || (yyvsp[(4) - (4)].addr).type != D_CONST) 2052 yyerror("arguments to PCDATA must be integer constants"); 2053 outcode((yyvsp[(1) - (4)].lval), Always, &(yyvsp[(2) - (4)].addr), NREG, &(yyvsp[(4) - (4)].addr)); 2054 } 2055 break; 2056 2057 case 44: 2058 #line 335 "a.y" 2059 { 2060 if((yyvsp[(2) - (4)].addr).type != D_CONST) 2061 yyerror("index for FUNCDATA must be integer constant"); 2062 if((yyvsp[(4) - (4)].addr).type != D_EXTERN && (yyvsp[(4) - (4)].addr).type != D_STATIC && (yyvsp[(4) - (4)].addr).type != D_OREG) 2063 yyerror("value for FUNCDATA must be symbol reference"); 2064 outcode((yyvsp[(1) - (4)].lval), Always, &(yyvsp[(2) - (4)].addr), NREG, &(yyvsp[(4) - (4)].addr)); 2065 } 2066 break; 2067 2068 case 45: 2069 #line 346 "a.y" 2070 { 2071 outcode((yyvsp[(1) - (2)].lval), Always, &nullgen, NREG, &nullgen); 2072 } 2073 break; 2074 2075 case 46: 2076 #line 351 "a.y" 2077 { 2078 (yyval.lval) = Always; 2079 } 2080 break; 2081 2082 case 47: 2083 #line 355 "a.y" 2084 { 2085 (yyval.lval) = ((yyvsp[(1) - (2)].lval) & ~C_SCOND) | (yyvsp[(2) - (2)].lval); 2086 } 2087 break; 2088 2089 case 48: 2090 #line 359 "a.y" 2091 { 2092 (yyval.lval) = (yyvsp[(1) - (2)].lval) | (yyvsp[(2) - (2)].lval); 2093 } 2094 break; 2095 2096 case 51: 2097 #line 368 "a.y" 2098 { 2099 (yyval.addr) = nullgen; 2100 (yyval.addr).type = D_BRANCH; 2101 (yyval.addr).offset = (yyvsp[(1) - (4)].lval) + pc; 2102 } 2103 break; 2104 2105 case 52: 2106 #line 374 "a.y" 2107 { 2108 (yyvsp[(1) - (2)].sym) = labellookup((yyvsp[(1) - (2)].sym)); 2109 (yyval.addr) = nullgen; 2110 if(pass == 2 && (yyvsp[(1) - (2)].sym)->type != LLAB) 2111 yyerror("undefined label: %s", (yyvsp[(1) - (2)].sym)->labelname); 2112 (yyval.addr).type = D_BRANCH; 2113 (yyval.addr).offset = (yyvsp[(1) - (2)].sym)->value + (yyvsp[(2) - (2)].lval); 2114 } 2115 break; 2116 2117 case 53: 2118 #line 384 "a.y" 2119 { 2120 (yyval.addr) = nullgen; 2121 (yyval.addr).type = D_CONST; 2122 (yyval.addr).offset = (yyvsp[(2) - (2)].lval); 2123 } 2124 break; 2125 2126 case 54: 2127 #line 390 "a.y" 2128 { 2129 (yyval.addr) = (yyvsp[(2) - (2)].addr); 2130 (yyval.addr).type = D_CONST; 2131 } 2132 break; 2133 2134 case 55: 2135 #line 395 "a.y" 2136 { 2137 (yyval.addr) = (yyvsp[(4) - (4)].addr); 2138 (yyval.addr).type = D_OCONST; 2139 } 2140 break; 2141 2142 case 56: 2143 #line 400 "a.y" 2144 { 2145 (yyval.addr) = nullgen; 2146 (yyval.addr).type = D_SCONST; 2147 memcpy((yyval.addr).u.sval, (yyvsp[(2) - (2)].sval), sizeof((yyval.addr).u.sval)); 2148 } 2149 break; 2150 2151 case 58: 2152 #line 409 "a.y" 2153 { 2154 (yyval.addr) = nullgen; 2155 (yyval.addr).type = D_FCONST; 2156 (yyval.addr).u.dval = (yyvsp[(2) - (2)].dval); 2157 } 2158 break; 2159 2160 case 59: 2161 #line 415 "a.y" 2162 { 2163 (yyval.addr) = nullgen; 2164 (yyval.addr).type = D_FCONST; 2165 (yyval.addr).u.dval = -(yyvsp[(3) - (3)].dval); 2166 } 2167 break; 2168 2169 case 60: 2170 #line 423 "a.y" 2171 { 2172 (yyval.lval) = 1 << (yyvsp[(1) - (1)].lval); 2173 } 2174 break; 2175 2176 case 61: 2177 #line 427 "a.y" 2178 { 2179 int i; 2180 (yyval.lval)=0; 2181 for(i=(yyvsp[(1) - (3)].lval); i<=(yyvsp[(3) - (3)].lval); i++) 2182 (yyval.lval) |= 1<<i; 2183 for(i=(yyvsp[(3) - (3)].lval); i<=(yyvsp[(1) - (3)].lval); i++) 2184 (yyval.lval) |= 1<<i; 2185 } 2186 break; 2187 2188 case 62: 2189 #line 436 "a.y" 2190 { 2191 (yyval.lval) = (1<<(yyvsp[(1) - (3)].lval)) | (yyvsp[(3) - (3)].lval); 2192 } 2193 break; 2194 2195 case 66: 2196 #line 445 "a.y" 2197 { 2198 (yyval.addr) = (yyvsp[(1) - (4)].addr); 2199 (yyval.addr).reg = (yyvsp[(3) - (4)].lval); 2200 } 2201 break; 2202 2203 case 67: 2204 #line 450 "a.y" 2205 { 2206 (yyval.addr) = nullgen; 2207 (yyval.addr).type = D_PSR; 2208 (yyval.addr).reg = (yyvsp[(1) - (1)].lval); 2209 } 2210 break; 2211 2212 case 68: 2213 #line 456 "a.y" 2214 { 2215 (yyval.addr) = nullgen; 2216 (yyval.addr).type = D_FPCR; 2217 (yyval.addr).reg = (yyvsp[(1) - (1)].lval); 2218 } 2219 break; 2220 2221 case 69: 2222 #line 462 "a.y" 2223 { 2224 (yyval.addr) = nullgen; 2225 (yyval.addr).type = D_OREG; 2226 (yyval.addr).offset = (yyvsp[(1) - (1)].lval); 2227 } 2228 break; 2229 2230 case 73: 2231 #line 473 "a.y" 2232 { 2233 (yyval.addr) = (yyvsp[(1) - (1)].addr); 2234 if((yyvsp[(1) - (1)].addr).name != D_EXTERN && (yyvsp[(1) - (1)].addr).name != D_STATIC) { 2235 } 2236 } 2237 break; 2238 2239 case 74: 2240 #line 481 "a.y" 2241 { 2242 (yyval.addr) = nullgen; 2243 (yyval.addr).type = D_OREG; 2244 (yyval.addr).reg = (yyvsp[(2) - (3)].lval); 2245 (yyval.addr).offset = 0; 2246 } 2247 break; 2248 2249 case 76: 2250 #line 491 "a.y" 2251 { 2252 (yyval.addr) = nullgen; 2253 (yyval.addr).type = D_OREG; 2254 (yyval.addr).reg = (yyvsp[(3) - (4)].lval); 2255 (yyval.addr).offset = (yyvsp[(1) - (4)].lval); 2256 } 2257 break; 2258 2259 case 78: 2260 #line 501 "a.y" 2261 { 2262 (yyval.addr) = (yyvsp[(1) - (4)].addr); 2263 (yyval.addr).type = D_OREG; 2264 (yyval.addr).reg = (yyvsp[(3) - (4)].lval); 2265 } 2266 break; 2267 2268 case 83: 2269 #line 514 "a.y" 2270 { 2271 (yyval.addr) = nullgen; 2272 (yyval.addr).type = D_CONST; 2273 (yyval.addr).offset = (yyvsp[(2) - (2)].lval); 2274 } 2275 break; 2276 2277 case 84: 2278 #line 522 "a.y" 2279 { 2280 (yyval.addr) = nullgen; 2281 (yyval.addr).type = D_REG; 2282 (yyval.addr).reg = (yyvsp[(1) - (1)].lval); 2283 } 2284 break; 2285 2286 case 85: 2287 #line 530 "a.y" 2288 { 2289 (yyval.addr) = nullgen; 2290 (yyval.addr).type = D_REGREG; 2291 (yyval.addr).reg = (yyvsp[(2) - (5)].lval); 2292 (yyval.addr).offset = (yyvsp[(4) - (5)].lval); 2293 } 2294 break; 2295 2296 case 86: 2297 #line 539 "a.y" 2298 { 2299 (yyval.addr) = nullgen; 2300 (yyval.addr).type = D_SHIFT; 2301 (yyval.addr).offset = (yyvsp[(1) - (4)].lval) | (yyvsp[(4) - (4)].lval) | (0 << 5); 2302 } 2303 break; 2304 2305 case 87: 2306 #line 545 "a.y" 2307 { 2308 (yyval.addr) = nullgen; 2309 (yyval.addr).type = D_SHIFT; 2310 (yyval.addr).offset = (yyvsp[(1) - (4)].lval) | (yyvsp[(4) - (4)].lval) | (1 << 5); 2311 } 2312 break; 2313 2314 case 88: 2315 #line 551 "a.y" 2316 { 2317 (yyval.addr) = nullgen; 2318 (yyval.addr).type = D_SHIFT; 2319 (yyval.addr).offset = (yyvsp[(1) - (4)].lval) | (yyvsp[(4) - (4)].lval) | (2 << 5); 2320 } 2321 break; 2322 2323 case 89: 2324 #line 557 "a.y" 2325 { 2326 (yyval.addr) = nullgen; 2327 (yyval.addr).type = D_SHIFT; 2328 (yyval.addr).offset = (yyvsp[(1) - (4)].lval) | (yyvsp[(4) - (4)].lval) | (3 << 5); 2329 } 2330 break; 2331 2332 case 90: 2333 #line 565 "a.y" 2334 { 2335 if((yyval.lval) < 0 || (yyval.lval) >= 16) 2336 print("register value out of range\n"); 2337 (yyval.lval) = (((yyvsp[(1) - (1)].lval)&15) << 8) | (1 << 4); 2338 } 2339 break; 2340 2341 case 91: 2342 #line 571 "a.y" 2343 { 2344 if((yyval.lval) < 0 || (yyval.lval) >= 32) 2345 print("shift value out of range\n"); 2346 (yyval.lval) = ((yyvsp[(1) - (1)].lval)&31) << 7; 2347 } 2348 break; 2349 2350 case 93: 2351 #line 580 "a.y" 2352 { 2353 (yyval.lval) = REGPC; 2354 } 2355 break; 2356 2357 case 94: 2358 #line 584 "a.y" 2359 { 2360 if((yyvsp[(3) - (4)].lval) < 0 || (yyvsp[(3) - (4)].lval) >= NREG) 2361 print("register value out of range\n"); 2362 (yyval.lval) = (yyvsp[(3) - (4)].lval); 2363 } 2364 break; 2365 2366 case 96: 2367 #line 593 "a.y" 2368 { 2369 (yyval.lval) = REGSP; 2370 } 2371 break; 2372 2373 case 98: 2374 #line 600 "a.y" 2375 { 2376 if((yyvsp[(3) - (4)].lval) < 0 || (yyvsp[(3) - (4)].lval) >= NREG) 2377 print("register value out of range\n"); 2378 (yyval.lval) = (yyvsp[(3) - (4)].lval); 2379 } 2380 break; 2381 2382 case 101: 2383 #line 612 "a.y" 2384 { 2385 (yyval.addr) = nullgen; 2386 (yyval.addr).type = D_FREG; 2387 (yyval.addr).reg = (yyvsp[(1) - (1)].lval); 2388 } 2389 break; 2390 2391 case 102: 2392 #line 618 "a.y" 2393 { 2394 (yyval.addr) = nullgen; 2395 (yyval.addr).type = D_FREG; 2396 (yyval.addr).reg = (yyvsp[(3) - (4)].lval); 2397 } 2398 break; 2399 2400 case 103: 2401 #line 626 "a.y" 2402 { 2403 (yyval.addr) = nullgen; 2404 (yyval.addr).type = D_OREG; 2405 (yyval.addr).name = (yyvsp[(3) - (4)].lval); 2406 (yyval.addr).sym = nil; 2407 (yyval.addr).offset = (yyvsp[(1) - (4)].lval); 2408 } 2409 break; 2410 2411 case 104: 2412 #line 634 "a.y" 2413 { 2414 (yyval.addr) = nullgen; 2415 (yyval.addr).type = D_OREG; 2416 (yyval.addr).name = (yyvsp[(4) - (5)].lval); 2417 (yyval.addr).sym = linklookup(ctxt, (yyvsp[(1) - (5)].sym)->name, 0); 2418 (yyval.addr).offset = (yyvsp[(2) - (5)].lval); 2419 } 2420 break; 2421 2422 case 105: 2423 #line 642 "a.y" 2424 { 2425 (yyval.addr) = nullgen; 2426 (yyval.addr).type = D_OREG; 2427 (yyval.addr).name = D_STATIC; 2428 (yyval.addr).sym = linklookup(ctxt, (yyvsp[(1) - (7)].sym)->name, 1); 2429 (yyval.addr).offset = (yyvsp[(4) - (7)].lval); 2430 } 2431 break; 2432 2433 case 106: 2434 #line 651 "a.y" 2435 { 2436 (yyval.lval) = 0; 2437 } 2438 break; 2439 2440 case 107: 2441 #line 655 "a.y" 2442 { 2443 (yyval.lval) = (yyvsp[(2) - (2)].lval); 2444 } 2445 break; 2446 2447 case 108: 2448 #line 659 "a.y" 2449 { 2450 (yyval.lval) = -(yyvsp[(2) - (2)].lval); 2451 } 2452 break; 2453 2454 case 113: 2455 #line 671 "a.y" 2456 { 2457 (yyval.lval) = (yyvsp[(1) - (1)].sym)->value; 2458 } 2459 break; 2460 2461 case 114: 2462 #line 675 "a.y" 2463 { 2464 (yyval.lval) = -(yyvsp[(2) - (2)].lval); 2465 } 2466 break; 2467 2468 case 115: 2469 #line 679 "a.y" 2470 { 2471 (yyval.lval) = (yyvsp[(2) - (2)].lval); 2472 } 2473 break; 2474 2475 case 116: 2476 #line 683 "a.y" 2477 { 2478 (yyval.lval) = ~(yyvsp[(2) - (2)].lval); 2479 } 2480 break; 2481 2482 case 117: 2483 #line 687 "a.y" 2484 { 2485 (yyval.lval) = (yyvsp[(2) - (3)].lval); 2486 } 2487 break; 2488 2489 case 118: 2490 #line 692 "a.y" 2491 { 2492 (yyval.lval) = 0; 2493 } 2494 break; 2495 2496 case 119: 2497 #line 696 "a.y" 2498 { 2499 (yyval.lval) = (yyvsp[(2) - (2)].lval); 2500 } 2501 break; 2502 2503 case 121: 2504 #line 703 "a.y" 2505 { 2506 (yyval.lval) = (yyvsp[(1) - (3)].lval) + (yyvsp[(3) - (3)].lval); 2507 } 2508 break; 2509 2510 case 122: 2511 #line 707 "a.y" 2512 { 2513 (yyval.lval) = (yyvsp[(1) - (3)].lval) - (yyvsp[(3) - (3)].lval); 2514 } 2515 break; 2516 2517 case 123: 2518 #line 711 "a.y" 2519 { 2520 (yyval.lval) = (yyvsp[(1) - (3)].lval) * (yyvsp[(3) - (3)].lval); 2521 } 2522 break; 2523 2524 case 124: 2525 #line 715 "a.y" 2526 { 2527 (yyval.lval) = (yyvsp[(1) - (3)].lval) / (yyvsp[(3) - (3)].lval); 2528 } 2529 break; 2530 2531 case 125: 2532 #line 719 "a.y" 2533 { 2534 (yyval.lval) = (yyvsp[(1) - (3)].lval) % (yyvsp[(3) - (3)].lval); 2535 } 2536 break; 2537 2538 case 126: 2539 #line 723 "a.y" 2540 { 2541 (yyval.lval) = (yyvsp[(1) - (4)].lval) << (yyvsp[(4) - (4)].lval); 2542 } 2543 break; 2544 2545 case 127: 2546 #line 727 "a.y" 2547 { 2548 (yyval.lval) = (yyvsp[(1) - (4)].lval) >> (yyvsp[(4) - (4)].lval); 2549 } 2550 break; 2551 2552 case 128: 2553 #line 731 "a.y" 2554 { 2555 (yyval.lval) = (yyvsp[(1) - (3)].lval) & (yyvsp[(3) - (3)].lval); 2556 } 2557 break; 2558 2559 case 129: 2560 #line 735 "a.y" 2561 { 2562 (yyval.lval) = (yyvsp[(1) - (3)].lval) ^ (yyvsp[(3) - (3)].lval); 2563 } 2564 break; 2565 2566 case 130: 2567 #line 739 "a.y" 2568 { 2569 (yyval.lval) = (yyvsp[(1) - (3)].lval) | (yyvsp[(3) - (3)].lval); 2570 } 2571 break; 2572 2573 2574 /* Line 1267 of yacc.c. */ 2575 #line 2576 "y.tab.c" 2576 default: break; 2577 } 2578 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); 2579 2580 YYPOPSTACK (yylen); 2581 yylen = 0; 2582 YY_STACK_PRINT (yyss, yyssp); 2583 2584 *++yyvsp = yyval; 2585 2586 2587 /* Now `shift' the result of the reduction. Determine what state 2588 that goes to, based on the state we popped back to and the rule 2589 number reduced by. */ 2590 2591 yyn = yyr1[yyn]; 2592 2593 yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; 2594 if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) 2595 yystate = yytable[yystate]; 2596 else 2597 yystate = yydefgoto[yyn - YYNTOKENS]; 2598 2599 goto yynewstate; 2600 2601 2602 /*------------------------------------. 2603 | yyerrlab -- here on detecting error | 2604 `------------------------------------*/ 2605 yyerrlab: 2606 /* If not already recovering from an error, report this error. */ 2607 if (!yyerrstatus) 2608 { 2609 ++yynerrs; 2610 #if ! YYERROR_VERBOSE 2611 yyerror (YY_("syntax error")); 2612 #else 2613 { 2614 YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); 2615 if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) 2616 { 2617 YYSIZE_T yyalloc = 2 * yysize; 2618 if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) 2619 yyalloc = YYSTACK_ALLOC_MAXIMUM; 2620 if (yymsg != yymsgbuf) 2621 YYSTACK_FREE (yymsg); 2622 yymsg = (char *) YYSTACK_ALLOC (yyalloc); 2623 if (yymsg) 2624 yymsg_alloc = yyalloc; 2625 else 2626 { 2627 yymsg = yymsgbuf; 2628 yymsg_alloc = sizeof yymsgbuf; 2629 } 2630 } 2631 2632 if (0 < yysize && yysize <= yymsg_alloc) 2633 { 2634 (void) yysyntax_error (yymsg, yystate, yychar); 2635 yyerror (yymsg); 2636 } 2637 else 2638 { 2639 yyerror (YY_("syntax error")); 2640 if (yysize != 0) 2641 goto yyexhaustedlab; 2642 } 2643 } 2644 #endif 2645 } 2646 2647 2648 2649 if (yyerrstatus == 3) 2650 { 2651 /* If just tried and failed to reuse look-ahead token after an 2652 error, discard it. */ 2653 2654 if (yychar <= YYEOF) 2655 { 2656 /* Return failure if at end of input. */ 2657 if (yychar == YYEOF) 2658 YYABORT; 2659 } 2660 else 2661 { 2662 yydestruct ("Error: discarding", 2663 yytoken, &yylval); 2664 yychar = YYEMPTY; 2665 } 2666 } 2667 2668 /* Else will try to reuse look-ahead token after shifting the error 2669 token. */ 2670 goto yyerrlab1; 2671 2672 2673 /*---------------------------------------------------. 2674 | yyerrorlab -- error raised explicitly by YYERROR. | 2675 `---------------------------------------------------*/ 2676 yyerrorlab: 2677 2678 /* Pacify compilers like GCC when the user code never invokes 2679 YYERROR and the label yyerrorlab therefore never appears in user 2680 code. */ 2681 if (/*CONSTCOND*/ 0) 2682 goto yyerrorlab; 2683 2684 /* Do not reclaim the symbols of the rule which action triggered 2685 this YYERROR. */ 2686 YYPOPSTACK (yylen); 2687 yylen = 0; 2688 YY_STACK_PRINT (yyss, yyssp); 2689 yystate = *yyssp; 2690 goto yyerrlab1; 2691 2692 2693 /*-------------------------------------------------------------. 2694 | yyerrlab1 -- common code for both syntax error and YYERROR. | 2695 `-------------------------------------------------------------*/ 2696 yyerrlab1: 2697 yyerrstatus = 3; /* Each real token shifted decrements this. */ 2698 2699 for (;;) 2700 { 2701 yyn = yypact[yystate]; 2702 if (yyn != YYPACT_NINF) 2703 { 2704 yyn += YYTERROR; 2705 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) 2706 { 2707 yyn = yytable[yyn]; 2708 if (0 < yyn) 2709 break; 2710 } 2711 } 2712 2713 /* Pop the current state because it cannot handle the error token. */ 2714 if (yyssp == yyss) 2715 YYABORT; 2716 2717 2718 yydestruct ("Error: popping", 2719 yystos[yystate], yyvsp); 2720 YYPOPSTACK (1); 2721 yystate = *yyssp; 2722 YY_STACK_PRINT (yyss, yyssp); 2723 } 2724 2725 if (yyn == YYFINAL) 2726 YYACCEPT; 2727 2728 *++yyvsp = yylval; 2729 2730 2731 /* Shift the error token. */ 2732 YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); 2733 2734 yystate = yyn; 2735 goto yynewstate; 2736 2737 2738 /*-------------------------------------. 2739 | yyacceptlab -- YYACCEPT comes here. | 2740 `-------------------------------------*/ 2741 yyacceptlab: 2742 yyresult = 0; 2743 goto yyreturn; 2744 2745 /*-----------------------------------. 2746 | yyabortlab -- YYABORT comes here. | 2747 `-----------------------------------*/ 2748 yyabortlab: 2749 yyresult = 1; 2750 goto yyreturn; 2751 2752 #ifndef yyoverflow 2753 /*-------------------------------------------------. 2754 | yyexhaustedlab -- memory exhaustion comes here. | 2755 `-------------------------------------------------*/ 2756 yyexhaustedlab: 2757 yyerror (YY_("memory exhausted")); 2758 yyresult = 2; 2759 /* Fall through. */ 2760 #endif 2761 2762 yyreturn: 2763 if (yychar != YYEOF && yychar != YYEMPTY) 2764 yydestruct ("Cleanup: discarding lookahead", 2765 yytoken, &yylval); 2766 /* Do not reclaim the symbols of the rule which action triggered 2767 this YYABORT or YYACCEPT. */ 2768 YYPOPSTACK (yylen); 2769 YY_STACK_PRINT (yyss, yyssp); 2770 while (yyssp != yyss) 2771 { 2772 yydestruct ("Cleanup: popping", 2773 yystos[*yyssp], yyvsp); 2774 YYPOPSTACK (1); 2775 } 2776 #ifndef yyoverflow 2777 if (yyss != yyssa) 2778 YYSTACK_FREE (yyss); 2779 #endif 2780 #if YYERROR_VERBOSE 2781 if (yymsg != yymsgbuf) 2782 YYSTACK_FREE (yymsg); 2783 #endif 2784 /* Make sure YYID is used. */ 2785 return YYID (yyresult); 2786 } 2787 2788 2789