1 1.1 christos /* A Bison parser, made by GNU Bison 3.8.2. */ 2 1.1 christos 3 1.1 christos /* Bison implementation for Yacc-like parsers in C 4 1.1 christos 5 1.1 christos Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation, 6 1.1 christos Inc. 7 1.1 christos 8 1.1 christos This program is free software: you can redistribute it and/or modify 9 1.1 christos it under the terms of the GNU General Public License as published by 10 1.1 christos the Free Software Foundation, either version 3 of the License, or 11 1.1 christos (at your option) any later version. 12 1.1 christos 13 1.1 christos This program is distributed in the hope that it will be useful, 14 1.1 christos but WITHOUT ANY WARRANTY; without even the implied warranty of 15 1.1 christos MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 1.1 christos GNU General Public License for more details. 17 1.1 christos 18 1.1 christos You should have received a copy of the GNU General Public License 19 1.1 christos along with this program. If not, see <https://www.gnu.org/licenses/>. */ 20 1.1 christos 21 1.1 christos /* As a special exception, you may create a larger work that contains 22 1.1 christos part or all of the Bison parser skeleton and distribute that work 23 1.1 christos under terms of your choice, so long as that work isn't itself a 24 1.1 christos parser generator using the skeleton or a modified version thereof 25 1.1 christos as a parser skeleton. Alternatively, if you modify or redistribute 26 1.1 christos the parser skeleton itself, you may (at your option) remove this 27 1.1 christos special exception, which will cause the skeleton and the resulting 28 1.1 christos Bison output files to be licensed under the GNU General Public 29 1.1 christos License without this special exception. 30 1.1 christos 31 1.1 christos This special exception was added by the Free Software Foundation in 32 1.1 christos version 2.2 of Bison. */ 33 1.1 christos 34 1.1 christos /* C LALR(1) parser skeleton written by Richard Stallman, by 35 1.1 christos simplifying the original so-called "semantic" parser. */ 36 1.1 christos 37 1.1 christos /* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, 38 1.1 christos especially those whose name start with YY_ or yy_. They are 39 1.1 christos private implementation details that can be changed or removed. */ 40 1.1 christos 41 1.1 christos /* All symbols defined below should begin with yy or YY, to avoid 42 1.1 christos infringing on user name space. This should be done even for local 43 1.1 christos variables, as they might otherwise be expanded by user macros. 44 1.1 christos There are some unavoidable exceptions within include files to 45 1.1 christos define necessary library symbols; they are noted "INFRINGES ON 46 1.1 christos USER NAME SPACE" below. */ 47 1.1 christos 48 1.1 christos /* Identify Bison output, and Bison version. */ 49 1.1 christos #define YYBISON 30802 50 1.1 christos 51 1.1 christos /* Bison version string. */ 52 1.1 christos #define YYBISON_VERSION "3.8.2" 53 1.1 christos 54 1.1 christos /* Skeleton name. */ 55 1.1 christos #define YYSKELETON_NAME "yacc.c" 56 1.1 christos 57 1.1 christos /* Pure parsers. */ 58 1.1 christos #define YYPURE 0 59 1.1 christos 60 1.1 christos /* Push parsers. */ 61 1.1 christos #define YYPUSH 0 62 1.1 christos 63 1.1 christos /* Pull parsers. */ 64 1.1 christos #define YYPULL 1 65 1.1 christos 66 1.1 christos 67 1.1 christos 68 1.1 christos 69 1.1 christos /* First part of user prologue. */ 70 1.1 christos #line 27 "./config/m68k-parse.y" 71 1.1 christos 72 1.1 christos 73 1.1 christos #include "as.h" 74 1.1 christos #include "tc-m68k.h" 75 1.1 christos #include "m68k-parse.h" 76 1.1 christos #include "safe-ctype.h" 77 1.1 christos 78 1.1 christos /* Remap normal yacc parser interface names (yyparse, yylex, yyerror, 79 1.1 christos etc), as well as gratuitously global symbol names If other parser 80 1.1 christos generators (bison, byacc, etc) produce additional global names that 81 1.1 christos conflict at link time, then those parser generators need to be 82 1.1 christos fixed instead of adding those names to this list. */ 83 1.1 christos 84 1.1 christos #define yymaxdepth m68k_maxdepth 85 1.1 christos #define yyparse m68k_parse 86 1.1 christos #define yylex m68k_lex 87 1.1 christos #define yyerror m68k_error 88 1.1 christos #define yylval m68k_lval 89 1.1 christos #define yychar m68k_char 90 1.1 christos #define yydebug m68k_debug 91 1.1 christos #define yypact m68k_pact 92 1.1 christos #define yyr1 m68k_r1 93 1.1 christos #define yyr2 m68k_r2 94 1.1 christos #define yydef m68k_def 95 1.1 christos #define yychk m68k_chk 96 1.1 christos #define yypgo m68k_pgo 97 1.1 christos #define yyact m68k_act 98 1.1 christos #define yyexca m68k_exca 99 1.1 christos #define yyerrflag m68k_errflag 100 1.1 christos #define yynerrs m68k_nerrs 101 1.1 christos #define yyps m68k_ps 102 1.1 christos #define yypv m68k_pv 103 1.1 christos #define yys m68k_s 104 1.1 christos #define yy_yys m68k_yys 105 1.1 christos #define yystate m68k_state 106 1.1 christos #define yytmp m68k_tmp 107 1.1 christos #define yyv m68k_v 108 1.1 christos #define yy_yyv m68k_yyv 109 1.1 christos #define yyval m68k_val 110 1.1 christos #define yylloc m68k_lloc 111 1.1 christos #define yyreds m68k_reds /* With YYDEBUG defined */ 112 1.1 christos #define yytoks m68k_toks /* With YYDEBUG defined */ 113 1.1 christos #define yylhs m68k_yylhs 114 1.1 christos #define yylen m68k_yylen 115 1.1 christos #define yydefred m68k_yydefred 116 1.1 christos #define yydgoto m68k_yydgoto 117 1.1 christos #define yysindex m68k_yysindex 118 1.1 christos #define yyrindex m68k_yyrindex 119 1.1 christos #define yygindex m68k_yygindex 120 1.1 christos #define yytable m68k_yytable 121 1.1 christos #define yycheck m68k_yycheck 122 1.1 christos 123 1.1 christos #ifndef YYDEBUG 124 1.1 christos #define YYDEBUG 1 125 1.1 christos #endif 126 1.1 christos 127 1.1 christos /* Internal functions. */ 128 1.1 christos 129 1.1 christos static enum m68k_register m68k_reg_parse (char **); 130 1.1 christos static int yylex (void); 131 1.1 christos static void yyerror (const char *); 132 1.1 christos 133 1.1 christos /* The parser sets fields pointed to by this global variable. */ 134 1.1 christos static struct m68k_op *op; 135 1.1 christos 136 1.1 christos 137 1.1 christos #line 138 "config/m68k-parse.c" 138 1.1 christos 139 1.1 christos # ifndef YY_CAST 140 1.1 christos # ifdef __cplusplus 141 1.1 christos # define YY_CAST(Type, Val) static_cast<Type> (Val) 142 1.1 christos # define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val) 143 1.1 christos # else 144 1.1 christos # define YY_CAST(Type, Val) ((Type) (Val)) 145 1.1 christos # define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val)) 146 1.1 christos # endif 147 1.1 christos # endif 148 1.1 christos # ifndef YY_NULLPTR 149 1.1 christos # if defined __cplusplus 150 1.1 christos # if 201103L <= __cplusplus 151 1.1 christos # define YY_NULLPTR nullptr 152 1.1 christos # else 153 1.1 christos # define YY_NULLPTR 0 154 1.1 christos # endif 155 1.1 christos # else 156 1.1 christos # define YY_NULLPTR ((void*)0) 157 1.1 christos # endif 158 1.1 christos # endif 159 1.1 christos 160 1.1 christos 161 1.1 christos /* Debug traces. */ 162 1.1 christos #ifndef YYDEBUG 163 1.1 christos # define YYDEBUG 0 164 1.1 christos #endif 165 1.1 christos #if YYDEBUG 166 1.1 christos extern int yydebug; 167 1.1 christos #endif 168 1.1 christos 169 1.1 christos /* Token kinds. */ 170 1.1 christos #ifndef YYTOKENTYPE 171 1.1 christos # define YYTOKENTYPE 172 1.1 christos enum yytokentype 173 1.1 christos { 174 1.1 christos YYEMPTY = -2, 175 1.1 christos YYEOF = 0, /* "end of file" */ 176 1.1 christos YYerror = 256, /* error */ 177 1.1 christos YYUNDEF = 257, /* "invalid token" */ 178 1.1 christos DR = 258, /* DR */ 179 1.1 christos AR = 259, /* AR */ 180 1.1 christos FPR = 260, /* FPR */ 181 1.1 christos FPCR = 261, /* FPCR */ 182 1.1 christos LPC = 262, /* LPC */ 183 1.1 christos ZAR = 263, /* ZAR */ 184 1.1 christos ZDR = 264, /* ZDR */ 185 1.1 christos LZPC = 265, /* LZPC */ 186 1.1 christos CREG = 266, /* CREG */ 187 1.1 christos INDEXREG = 267, /* INDEXREG */ 188 1.1 christos EXPR = 268 /* EXPR */ 189 1.1 christos }; 190 1.1 christos typedef enum yytokentype yytoken_kind_t; 191 1.1 christos #endif 192 1.1 christos /* Token kinds. */ 193 1.1 christos #define YYEMPTY -2 194 1.1 christos #define YYEOF 0 195 1.1 christos #define YYerror 256 196 1.1 christos #define YYUNDEF 257 197 1.1 christos #define DR 258 198 1.1 christos #define AR 259 199 1.1 christos #define FPR 260 200 1.1 christos #define FPCR 261 201 1.1 christos #define LPC 262 202 1.1 christos #define ZAR 263 203 1.1 christos #define ZDR 264 204 1.1 christos #define LZPC 265 205 1.1 christos #define CREG 266 206 1.1 christos #define INDEXREG 267 207 1.1 christos #define EXPR 268 208 1.1 christos 209 1.1 christos /* Value type. */ 210 1.1 christos #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED 211 1.1 christos union YYSTYPE 212 1.1 christos { 213 1.1 christos #line 95 "./config/m68k-parse.y" 214 1.1 christos 215 1.1 christos struct m68k_indexreg indexreg; 216 1.1 christos enum m68k_register reg; 217 1.1 christos struct m68k_exp exp; 218 1.1 christos unsigned long mask; 219 1.1 christos int onereg; 220 1.1 christos int trailing_ampersand; 221 1.1 christos 222 1.1 christos #line 223 "config/m68k-parse.c" 223 1.1 christos 224 1.1 christos }; 225 1.1 christos typedef union YYSTYPE YYSTYPE; 226 1.1 christos # define YYSTYPE_IS_TRIVIAL 1 227 1.1 christos # define YYSTYPE_IS_DECLARED 1 228 1.1 christos #endif 229 1.1 christos 230 1.1 christos 231 1.1 christos extern YYSTYPE yylval; 232 1.1 christos 233 1.1 christos 234 1.1 christos int yyparse (void); 235 1.1 christos 236 1.1 christos 237 1.1 christos 238 1.1 christos /* Symbol kind. */ 239 1.1 christos enum yysymbol_kind_t 240 1.1 christos { 241 1.1 christos YYSYMBOL_YYEMPTY = -2, 242 1.1 christos YYSYMBOL_YYEOF = 0, /* "end of file" */ 243 1.1 christos YYSYMBOL_YYerror = 1, /* error */ 244 1.1 christos YYSYMBOL_YYUNDEF = 2, /* "invalid token" */ 245 1.1 christos YYSYMBOL_DR = 3, /* DR */ 246 1.1 christos YYSYMBOL_AR = 4, /* AR */ 247 1.1 christos YYSYMBOL_FPR = 5, /* FPR */ 248 1.1 christos YYSYMBOL_FPCR = 6, /* FPCR */ 249 1.1 christos YYSYMBOL_LPC = 7, /* LPC */ 250 1.1 christos YYSYMBOL_ZAR = 8, /* ZAR */ 251 1.1 christos YYSYMBOL_ZDR = 9, /* ZDR */ 252 1.1 christos YYSYMBOL_LZPC = 10, /* LZPC */ 253 1.1 christos YYSYMBOL_CREG = 11, /* CREG */ 254 1.1 christos YYSYMBOL_INDEXREG = 12, /* INDEXREG */ 255 1.1 christos YYSYMBOL_EXPR = 13, /* EXPR */ 256 1.1 christos YYSYMBOL_14_ = 14, /* '&' */ 257 1.1 christos YYSYMBOL_15_ = 15, /* '<' */ 258 1.1 christos YYSYMBOL_16_ = 16, /* '>' */ 259 1.1 christos YYSYMBOL_17_ = 17, /* '#' */ 260 1.1 christos YYSYMBOL_18_ = 18, /* '(' */ 261 1.1 christos YYSYMBOL_19_ = 19, /* ')' */ 262 1.1 christos YYSYMBOL_20_ = 20, /* '+' */ 263 1.1 christos YYSYMBOL_21_ = 21, /* '-' */ 264 1.1 christos YYSYMBOL_22_ = 22, /* ',' */ 265 1.1 christos YYSYMBOL_23_ = 23, /* '[' */ 266 1.1 christos YYSYMBOL_24_ = 24, /* ']' */ 267 1.1 christos YYSYMBOL_25_ = 25, /* '@' */ 268 1.1 christos YYSYMBOL_26_ = 26, /* '/' */ 269 1.1 christos YYSYMBOL_YYACCEPT = 27, /* $accept */ 270 1.1 christos YYSYMBOL_operand = 28, /* operand */ 271 1.1 christos YYSYMBOL_optional_ampersand = 29, /* optional_ampersand */ 272 1.1 christos YYSYMBOL_generic_operand = 30, /* generic_operand */ 273 1.1 christos YYSYMBOL_motorola_operand = 31, /* motorola_operand */ 274 1.1 christos YYSYMBOL_mit_operand = 32, /* mit_operand */ 275 1.1 christos YYSYMBOL_zireg = 33, /* zireg */ 276 1.1 christos YYSYMBOL_zdireg = 34, /* zdireg */ 277 1.1 christos YYSYMBOL_zadr = 35, /* zadr */ 278 1.1 christos YYSYMBOL_zdr = 36, /* zdr */ 279 1.1 christos YYSYMBOL_apc = 37, /* apc */ 280 1.1 christos YYSYMBOL_zapc = 38, /* zapc */ 281 1.1 christos YYSYMBOL_optzapc = 39, /* optzapc */ 282 1.1 christos YYSYMBOL_zpc = 40, /* zpc */ 283 1.1 christos YYSYMBOL_optczapc = 41, /* optczapc */ 284 1.1 christos YYSYMBOL_optcexpr = 42, /* optcexpr */ 285 1.1 christos YYSYMBOL_optexprc = 43, /* optexprc */ 286 1.1 christos YYSYMBOL_reglist = 44, /* reglist */ 287 1.1 christos YYSYMBOL_ireglist = 45, /* ireglist */ 288 1.1 christos YYSYMBOL_reglistpair = 46, /* reglistpair */ 289 1.1 christos YYSYMBOL_reglistreg = 47 /* reglistreg */ 290 1.1 christos }; 291 1.1 christos typedef enum yysymbol_kind_t yysymbol_kind_t; 292 1.1 christos 293 1.1 christos 294 1.1 christos 295 1.1 christos 296 1.1 christos #ifdef short 297 1.1 christos # undef short 298 1.1 christos #endif 299 1.1 christos 300 1.1 christos /* On compilers that do not define __PTRDIFF_MAX__ etc., make sure 301 1.1 christos <limits.h> and (if available) <stdint.h> are included 302 1.1 christos so that the code can choose integer types of a good width. */ 303 1.1 christos 304 1.1 christos #ifndef __PTRDIFF_MAX__ 305 1.1 christos # include <limits.h> /* INFRINGES ON USER NAME SPACE */ 306 1.1 christos # if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ 307 1.1 christos # include <stdint.h> /* INFRINGES ON USER NAME SPACE */ 308 1.1 christos # define YY_STDINT_H 309 1.1 christos # endif 310 1.1 christos #endif 311 1.1 christos 312 1.1 christos /* Narrow types that promote to a signed type and that can represent a 313 1.1 christos signed or unsigned integer of at least N bits. In tables they can 314 1.1 christos save space and decrease cache pressure. Promoting to a signed type 315 1.1 christos helps avoid bugs in integer arithmetic. */ 316 1.1 christos 317 1.1 christos #ifdef __INT_LEAST8_MAX__ 318 1.1 christos typedef __INT_LEAST8_TYPE__ yytype_int8; 319 1.1 christos #elif defined YY_STDINT_H 320 1.1 christos typedef int_least8_t yytype_int8; 321 1.1 christos #else 322 1.1 christos typedef signed char yytype_int8; 323 1.1 christos #endif 324 1.1 christos 325 1.1 christos #ifdef __INT_LEAST16_MAX__ 326 1.1 christos typedef __INT_LEAST16_TYPE__ yytype_int16; 327 1.1 christos #elif defined YY_STDINT_H 328 1.1 christos typedef int_least16_t yytype_int16; 329 1.1 christos #else 330 1.1 christos typedef short yytype_int16; 331 1.1 christos #endif 332 1.1 christos 333 1.1 christos /* Work around bug in HP-UX 11.23, which defines these macros 334 1.1 christos incorrectly for preprocessor constants. This workaround can likely 335 1.1 christos be removed in 2023, as HPE has promised support for HP-UX 11.23 336 1.1 christos (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of 337 1.1 christos <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>. */ 338 1.1 christos #ifdef __hpux 339 1.1 christos # undef UINT_LEAST8_MAX 340 1.1 christos # undef UINT_LEAST16_MAX 341 1.1 christos # define UINT_LEAST8_MAX 255 342 1.1 christos # define UINT_LEAST16_MAX 65535 343 1.1 christos #endif 344 1.1 christos 345 1.1 christos #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__ 346 1.1 christos typedef __UINT_LEAST8_TYPE__ yytype_uint8; 347 1.1 christos #elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \ 348 1.1 christos && UINT_LEAST8_MAX <= INT_MAX) 349 1.1 christos typedef uint_least8_t yytype_uint8; 350 1.1 christos #elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX 351 1.1 christos typedef unsigned char yytype_uint8; 352 1.1 christos #else 353 1.1 christos typedef short yytype_uint8; 354 1.1 christos #endif 355 1.1 christos 356 1.1 christos #if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__ 357 1.1 christos typedef __UINT_LEAST16_TYPE__ yytype_uint16; 358 1.1 christos #elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \ 359 1.1 christos && UINT_LEAST16_MAX <= INT_MAX) 360 1.1 christos typedef uint_least16_t yytype_uint16; 361 1.1 christos #elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX 362 1.1 christos typedef unsigned short yytype_uint16; 363 1.1 christos #else 364 1.1 christos typedef int yytype_uint16; 365 1.1 christos #endif 366 1.1 christos 367 1.1 christos #ifndef YYPTRDIFF_T 368 1.1 christos # if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__ 369 1.1 christos # define YYPTRDIFF_T __PTRDIFF_TYPE__ 370 1.1 christos # define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__ 371 1.1 christos # elif defined PTRDIFF_MAX 372 1.1 christos # ifndef ptrdiff_t 373 1.1 christos # include <stddef.h> /* INFRINGES ON USER NAME SPACE */ 374 1.1 christos # endif 375 1.1 christos # define YYPTRDIFF_T ptrdiff_t 376 1.1 christos # define YYPTRDIFF_MAXIMUM PTRDIFF_MAX 377 1.1 christos # else 378 1.1 christos # define YYPTRDIFF_T long 379 1.1 christos # define YYPTRDIFF_MAXIMUM LONG_MAX 380 1.1 christos # endif 381 1.1 christos #endif 382 1.1 christos 383 1.1 christos #ifndef YYSIZE_T 384 1.1 christos # ifdef __SIZE_TYPE__ 385 1.1 christos # define YYSIZE_T __SIZE_TYPE__ 386 1.1 christos # elif defined size_t 387 1.1 christos # define YYSIZE_T size_t 388 1.1 christos # elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ 389 1.1 christos # include <stddef.h> /* INFRINGES ON USER NAME SPACE */ 390 1.1 christos # define YYSIZE_T size_t 391 1.1 christos # else 392 1.1 christos # define YYSIZE_T unsigned 393 1.1 christos # endif 394 1.1 christos #endif 395 1.1 christos 396 1.1 christos #define YYSIZE_MAXIMUM \ 397 1.1 christos YY_CAST (YYPTRDIFF_T, \ 398 1.1 christos (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \ 399 1.1 christos ? YYPTRDIFF_MAXIMUM \ 400 1.1 christos : YY_CAST (YYSIZE_T, -1))) 401 1.1 christos 402 1.1 christos #define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X)) 403 1.1 christos 404 1.1 christos 405 1.1 christos /* Stored state numbers (used for stacks). */ 406 1.1 christos typedef yytype_uint8 yy_state_t; 407 1.1 christos 408 1.1 christos /* State numbers in computations. */ 409 1.1 christos typedef int yy_state_fast_t; 410 1.1 christos 411 1.1 christos #ifndef YY_ 412 1.1 christos # if defined YYENABLE_NLS && YYENABLE_NLS 413 1.1 christos # if ENABLE_NLS 414 1.1 christos # include <libintl.h> /* INFRINGES ON USER NAME SPACE */ 415 1.1 christos # define YY_(Msgid) dgettext ("bison-runtime", Msgid) 416 1.1 christos # endif 417 1.1 christos # endif 418 1.1 christos # ifndef YY_ 419 1.1 christos # define YY_(Msgid) Msgid 420 1.1 christos # endif 421 1.1 christos #endif 422 1.1 christos 423 1.1 christos 424 1.1 christos #ifndef YY_ATTRIBUTE_PURE 425 1.1 christos # if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__) 426 1.1 christos # define YY_ATTRIBUTE_PURE __attribute__ ((__pure__)) 427 1.1 christos # else 428 1.1 christos # define YY_ATTRIBUTE_PURE 429 1.1 christos # endif 430 1.1 christos #endif 431 1.1 christos 432 1.1 christos #ifndef YY_ATTRIBUTE_UNUSED 433 1.1 christos # if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__) 434 1.1 christos # define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) 435 1.1 christos # else 436 1.1 christos # define YY_ATTRIBUTE_UNUSED 437 1.1 christos # endif 438 1.1 christos #endif 439 1.1 christos 440 1.1 christos /* Suppress unused-variable warnings by "using" E. */ 441 1.1 christos #if ! defined lint || defined __GNUC__ 442 1.1 christos # define YY_USE(E) ((void) (E)) 443 1.1 christos #else 444 1.1 christos # define YY_USE(E) /* empty */ 445 1.1 christos #endif 446 1.1 christos 447 1.1 christos /* Suppress an incorrect diagnostic about yylval being uninitialized. */ 448 1.1 christos #if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__ 449 1.1 christos # if __GNUC__ * 100 + __GNUC_MINOR__ < 407 450 1.1 christos # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ 451 1.1 christos _Pragma ("GCC diagnostic push") \ 452 1.1 christos _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") 453 1.1 christos # else 454 1.1 christos # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ 455 1.1 christos _Pragma ("GCC diagnostic push") \ 456 1.1 christos _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \ 457 1.1 christos _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") 458 1.1 christos # endif 459 1.1 christos # define YY_IGNORE_MAYBE_UNINITIALIZED_END \ 460 1.1 christos _Pragma ("GCC diagnostic pop") 461 1.1 christos #else 462 1.1 christos # define YY_INITIAL_VALUE(Value) Value 463 1.1 christos #endif 464 1.1 christos #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN 465 1.1 christos # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN 466 1.1 christos # define YY_IGNORE_MAYBE_UNINITIALIZED_END 467 1.1 christos #endif 468 1.1 christos #ifndef YY_INITIAL_VALUE 469 1.1 christos # define YY_INITIAL_VALUE(Value) /* Nothing. */ 470 1.1 christos #endif 471 1.1 christos 472 1.1 christos #if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__ 473 1.1 christos # define YY_IGNORE_USELESS_CAST_BEGIN \ 474 1.1 christos _Pragma ("GCC diagnostic push") \ 475 1.1 christos _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"") 476 1.1 christos # define YY_IGNORE_USELESS_CAST_END \ 477 1.1 christos _Pragma ("GCC diagnostic pop") 478 1.1 christos #endif 479 1.1 christos #ifndef YY_IGNORE_USELESS_CAST_BEGIN 480 1.1 christos # define YY_IGNORE_USELESS_CAST_BEGIN 481 1.1 christos # define YY_IGNORE_USELESS_CAST_END 482 1.1 christos #endif 483 1.1 christos 484 1.1 christos 485 1.1 christos #define YY_ASSERT(E) ((void) (0 && (E))) 486 1.1 christos 487 1.1 christos #if !defined yyoverflow 488 1.1 christos 489 1.1 christos /* The parser invokes alloca or malloc; define the necessary symbols. */ 490 1.1 christos 491 1.1 christos # ifdef YYSTACK_USE_ALLOCA 492 1.1 christos # if YYSTACK_USE_ALLOCA 493 1.1 christos # ifdef __GNUC__ 494 1.1 christos # define YYSTACK_ALLOC __builtin_alloca 495 1.1 christos # elif defined __BUILTIN_VA_ARG_INCR 496 1.1 christos # include <alloca.h> /* INFRINGES ON USER NAME SPACE */ 497 1.1 christos # elif defined _AIX 498 1.1 christos # define YYSTACK_ALLOC __alloca 499 1.1 christos # elif defined _MSC_VER 500 1.1 christos # include <malloc.h> /* INFRINGES ON USER NAME SPACE */ 501 1.1 christos # define alloca _alloca 502 1.1 christos # else 503 1.1 christos # define YYSTACK_ALLOC alloca 504 1.1 christos # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS 505 1.1 christos # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ 506 1.1 christos /* Use EXIT_SUCCESS as a witness for stdlib.h. */ 507 1.1 christos # ifndef EXIT_SUCCESS 508 1.1 christos # define EXIT_SUCCESS 0 509 1.1 christos # endif 510 1.1 christos # endif 511 1.1 christos # endif 512 1.1 christos # endif 513 1.1 christos # endif 514 1.1 christos 515 1.1 christos # ifdef YYSTACK_ALLOC 516 1.1 christos /* Pacify GCC's 'empty if-body' warning. */ 517 1.1 christos # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) 518 1.1 christos # ifndef YYSTACK_ALLOC_MAXIMUM 519 1.1 christos /* The OS might guarantee only one guard page at the bottom of the stack, 520 1.1 christos and a page size can be as small as 4096 bytes. So we cannot safely 521 1.1 christos invoke alloca (N) if N exceeds 4096. Use a slightly smaller number 522 1.1 christos to allow for a few compiler-allocated temporary stack slots. */ 523 1.1 christos # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ 524 1.1 christos # endif 525 1.1 christos # else 526 1.1 christos # define YYSTACK_ALLOC YYMALLOC 527 1.1 christos # define YYSTACK_FREE YYFREE 528 1.1 christos # ifndef YYSTACK_ALLOC_MAXIMUM 529 1.1 christos # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM 530 1.1 christos # endif 531 1.1 christos # if (defined __cplusplus && ! defined EXIT_SUCCESS \ 532 1.1 christos && ! ((defined YYMALLOC || defined malloc) \ 533 1.1 christos && (defined YYFREE || defined free))) 534 1.1 christos # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ 535 1.1 christos # ifndef EXIT_SUCCESS 536 1.1 christos # define EXIT_SUCCESS 0 537 1.1 christos # endif 538 1.1 christos # endif 539 1.1 christos # ifndef YYMALLOC 540 1.1 christos # define YYMALLOC malloc 541 1.1 christos # if ! defined malloc && ! defined EXIT_SUCCESS 542 1.1 christos void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ 543 1.1 christos # endif 544 1.1 christos # endif 545 1.1 christos # ifndef YYFREE 546 1.1 christos # define YYFREE free 547 1.1 christos # if ! defined free && ! defined EXIT_SUCCESS 548 1.1 christos void free (void *); /* INFRINGES ON USER NAME SPACE */ 549 1.1 christos # endif 550 1.1 christos # endif 551 1.1 christos # endif 552 1.1 christos #endif /* !defined yyoverflow */ 553 1.1 christos 554 1.1 christos #if (! defined yyoverflow \ 555 1.1 christos && (! defined __cplusplus \ 556 1.1 christos || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) 557 1.1 christos 558 1.1 christos /* A type that is properly aligned for any stack member. */ 559 1.1 christos union yyalloc 560 1.1 christos { 561 1.1 christos yy_state_t yyss_alloc; 562 1.1 christos YYSTYPE yyvs_alloc; 563 1.1 christos }; 564 1.1 christos 565 1.1 christos /* The size of the maximum gap between one aligned stack and the next. */ 566 1.1 christos # define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1) 567 1.1 christos 568 1.1 christos /* The size of an array large to enough to hold all stacks, each with 569 1.1 christos N elements. */ 570 1.1 christos # define YYSTACK_BYTES(N) \ 571 1.1 christos ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \ 572 1.1 christos + YYSTACK_GAP_MAXIMUM) 573 1.1 christos 574 1.1 christos # define YYCOPY_NEEDED 1 575 1.1 christos 576 1.1 christos /* Relocate STACK from its old location to the new one. The 577 1.1 christos local variables YYSIZE and YYSTACKSIZE give the old and new number of 578 1.1 christos elements in the stack, and YYPTR gives the new location of the 579 1.1 christos stack. Advance YYPTR to a properly aligned location for the next 580 1.1 christos stack. */ 581 1.1 christos # define YYSTACK_RELOCATE(Stack_alloc, Stack) \ 582 1.1 christos do \ 583 1.1 christos { \ 584 1.1 christos YYPTRDIFF_T yynewbytes; \ 585 1.1 christos YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ 586 1.1 christos Stack = &yyptr->Stack_alloc; \ 587 1.1 christos yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \ 588 1.1 christos yyptr += yynewbytes / YYSIZEOF (*yyptr); \ 589 1.1 christos } \ 590 1.1 christos while (0) 591 1.1 christos 592 1.1 christos #endif 593 1.1 christos 594 1.1 christos #if defined YYCOPY_NEEDED && YYCOPY_NEEDED 595 1.1 christos /* Copy COUNT objects from SRC to DST. The source and destination do 596 1.1 christos not overlap. */ 597 1.1 christos # ifndef YYCOPY 598 1.1 christos # if defined __GNUC__ && 1 < __GNUC__ 599 1.1 christos # define YYCOPY(Dst, Src, Count) \ 600 1.1 christos __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src))) 601 1.1 christos # else 602 1.1 christos # define YYCOPY(Dst, Src, Count) \ 603 1.1 christos do \ 604 1.1 christos { \ 605 1.1 christos YYPTRDIFF_T yyi; \ 606 1.1 christos for (yyi = 0; yyi < (Count); yyi++) \ 607 1.1 christos (Dst)[yyi] = (Src)[yyi]; \ 608 1.1 christos } \ 609 1.1 christos while (0) 610 1.1 christos # endif 611 1.1 christos # endif 612 1.1 christos #endif /* !YYCOPY_NEEDED */ 613 1.1 christos 614 1.1 christos /* YYFINAL -- State number of the termination state. */ 615 1.1 christos #define YYFINAL 44 616 1.1 christos /* YYLAST -- Last index in YYTABLE. */ 617 1.1 christos #define YYLAST 215 618 1.1 christos 619 1.1 christos /* YYNTOKENS -- Number of terminals. */ 620 1.1 christos #define YYNTOKENS 27 621 1.1 christos /* YYNNTS -- Number of nonterminals. */ 622 1.1 christos #define YYNNTS 21 623 1.1 christos /* YYNRULES -- Number of rules. */ 624 1.1 christos #define YYNRULES 89 625 1.1 christos /* YYNSTATES -- Number of states. */ 626 1.1 christos #define YYNSTATES 180 627 1.1 christos 628 1.1 christos /* YYMAXUTOK -- Last valid token kind. */ 629 1.1 christos #define YYMAXUTOK 268 630 1.1 christos 631 1.1 christos 632 1.1 christos /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM 633 1.1 christos as returned by yylex, with out-of-bounds checking. */ 634 1.1 christos #define YYTRANSLATE(YYX) \ 635 1.1 christos (0 <= (YYX) && (YYX) <= YYMAXUTOK \ 636 1.1 christos ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \ 637 1.1 christos : YYSYMBOL_YYUNDEF) 638 1.1 christos 639 1.1 christos /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM 640 1.1 christos as returned by yylex. */ 641 1.1 christos static const yytype_int8 yytranslate[] = 642 1.1 christos { 643 1.1 christos 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 644 1.1 christos 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 645 1.1 christos 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 646 1.1 christos 2, 2, 2, 2, 2, 17, 2, 2, 14, 2, 647 1.1 christos 18, 19, 2, 20, 22, 21, 2, 26, 2, 2, 648 1.1 christos 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 649 1.1 christos 15, 2, 16, 2, 25, 2, 2, 2, 2, 2, 650 1.1 christos 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 651 1.1 christos 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 652 1.1 christos 2, 23, 2, 24, 2, 2, 2, 2, 2, 2, 653 1.1 christos 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 654 1.1 christos 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 655 1.1 christos 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 656 1.1 christos 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 657 1.1 christos 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 658 1.1 christos 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 659 1.1 christos 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 660 1.1 christos 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 661 1.1 christos 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 662 1.1 christos 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 663 1.1 christos 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 664 1.1 christos 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 665 1.1 christos 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 666 1.1 christos 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 667 1.1 christos 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 668 1.1 christos 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, 669 1.1 christos 5, 6, 7, 8, 9, 10, 11, 12, 13 670 1.1 christos }; 671 1.1 christos 672 1.1 christos #if YYDEBUG 673 1.1 christos /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ 674 1.1 christos static const yytype_int16 yyrline[] = 675 1.1 christos { 676 1.1 christos 0, 120, 120, 121, 125, 134, 135, 142, 147, 152, 677 1.1 christos 157, 162, 167, 172, 177, 182, 187, 192, 205, 210, 678 1.1 christos 215, 220, 230, 240, 250, 255, 260, 265, 272, 283, 679 1.1 christos 290, 296, 303, 309, 320, 330, 337, 343, 351, 358, 680 1.1 christos 365, 371, 379, 386, 398, 409, 422, 430, 438, 446, 681 1.1 christos 456, 463, 471, 478, 492, 493, 506, 507, 519, 520, 682 1.1 christos 521, 527, 528, 534, 535, 542, 543, 544, 551, 554, 683 1.1 christos 560, 561, 568, 571, 581, 585, 595, 599, 608, 609, 684 1.1 christos 613, 625, 629, 630, 634, 641, 651, 655, 659, 663 685 1.1 christos }; 686 1.1 christos #endif 687 1.1 christos 688 1.1 christos /** Accessing symbol of state STATE. */ 689 1.1 christos #define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State]) 690 1.1 christos 691 1.1 christos #if YYDEBUG || 0 692 1.1 christos /* The user-facing name of the symbol whose (internal) number is 693 1.1 christos YYSYMBOL. No bounds checking. */ 694 1.1 christos static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED; 695 1.1 christos 696 1.1 christos /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. 697 1.1 christos First, the terminals, then, starting at YYNTOKENS, nonterminals. */ 698 1.1 christos static const char *const yytname[] = 699 1.1 christos { 700 1.1 christos "\"end of file\"", "error", "\"invalid token\"", "DR", "AR", "FPR", 701 1.1 christos "FPCR", "LPC", "ZAR", "ZDR", "LZPC", "CREG", "INDEXREG", "EXPR", "'&'", 702 1.1 christos "'<'", "'>'", "'#'", "'('", "')'", "'+'", "'-'", "','", "'['", "']'", 703 1.1 christos "'@'", "'/'", "$accept", "operand", "optional_ampersand", 704 1.1 christos "generic_operand", "motorola_operand", "mit_operand", "zireg", "zdireg", 705 1.1 christos "zadr", "zdr", "apc", "zapc", "optzapc", "zpc", "optczapc", "optcexpr", 706 1.1 christos "optexprc", "reglist", "ireglist", "reglistpair", "reglistreg", YY_NULLPTR 707 1.1 christos }; 708 1.1 christos 709 1.1 christos static const char * 710 1.1 christos yysymbol_name (yysymbol_kind_t yysymbol) 711 1.1 christos { 712 1.1 christos return yytname[yysymbol]; 713 1.1 christos } 714 1.1 christos #endif 715 1.1 christos 716 1.1 christos #define YYPACT_NINF (-98) 717 1.1 christos 718 1.1 christos #define yypact_value_is_default(Yyn) \ 719 1.1 christos ((Yyn) == YYPACT_NINF) 720 1.1 christos 721 1.1 christos #define YYTABLE_NINF (-64) 722 1.1 christos 723 1.1 christos #define yytable_value_is_error(Yyn) \ 724 1.1 christos 0 725 1.1 christos 726 1.1 christos /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing 727 1.1 christos STATE-NUM. */ 728 1.1 christos static const yytype_int16 yypact[] = 729 1.1 christos { 730 1.1 christos 89, 14, 9, 31, 35, -98, -98, -98, -98, 0, 731 1.1 christos 36, 42, 28, 56, 63, 67, 90, -98, 75, 75, 732 1.1 christos -98, -98, 86, -98, 96, -15, 123, -98, -98, -98, 733 1.1 christos -98, -98, 97, 115, 119, -98, 120, -98, 122, 16, 734 1.1 christos 126, -98, 127, 157, -98, -98, -98, -98, 19, 154, 735 1.1 christos 154, 154, -98, 140, 29, 144, -98, -98, -98, 123, 736 1.1 christos 141, 99, 18, 70, 147, 105, 148, 152, -98, -98, 737 1.1 christos -98, -98, -98, -98, -98, 142, -13, -98, -98, 146, 738 1.1 christos 150, -98, 133, -98, 140, 60, 146, 149, 133, 153, 739 1.1 christos 140, 151, -98, -98, -98, -98, -98, -98, -98, 155, 740 1.1 christos 158, -98, -98, 159, -98, 62, 143, 154, 154, -98, 741 1.1 christos 160, 161, 162, -98, 133, 163, 164, 165, 166, 116, 742 1.1 christos 168, 167, -98, -98, -98, -98, 169, -98, 173, -98, 743 1.1 christos -98, -98, -98, -98, 174, 176, 133, 116, 177, 175, 744 1.1 christos 175, -98, 175, -98, 175, 170, 178, -98, -98, 180, 745 1.1 christos 181, 175, -98, 171, 179, 182, 183, 187, 186, 189, 746 1.1 christos 175, 175, 190, -98, -98, -98, -98, 79, 143, 195, 747 1.1 christos 191, 192, -98, -98, 193, 194, -98, -98, -98, -98 748 1.1 christos }; 749 1.1 christos 750 1.1 christos /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. 751 1.1 christos Performed when YYTABLE does not specify something else to do. Zero 752 1.1 christos means the default is an error. */ 753 1.1 christos static const yytype_int8 yydefact[] = 754 1.1 christos { 755 1.1 christos 68, 86, 87, 88, 89, 64, 67, 66, 13, 14, 756 1.1 christos 0, 0, 0, 0, 0, 0, 0, 2, 5, 5, 757 1.1 christos 65, 69, 0, 17, 78, 0, 0, 16, 7, 8, 758 1.1 christos 15, 61, 63, 64, 67, 62, 66, 56, 0, 76, 759 1.1 christos 72, 57, 0, 0, 1, 6, 3, 4, 46, 0, 760 1.1 christos 0, 0, 63, 72, 0, 18, 24, 25, 26, 0, 761 1.1 christos 72, 0, 0, 0, 0, 0, 0, 76, 47, 48, 762 1.1 christos 86, 87, 88, 89, 79, 82, 81, 85, 80, 0, 763 1.1 christos 0, 23, 0, 19, 72, 0, 77, 0, 0, 74, 764 1.1 christos 72, 0, 73, 36, 59, 70, 60, 71, 54, 0, 765 1.1 christos 0, 55, 58, 0, 20, 0, 0, 0, 0, 35, 766 1.1 christos 0, 0, 0, 21, 0, 73, 74, 0, 0, 0, 767 1.1 christos 0, 0, 30, 22, 32, 34, 49, 77, 0, 83, 768 1.1 christos 84, 31, 33, 29, 0, 0, 0, 0, 0, 74, 769 1.1 christos 74, 75, 74, 40, 74, 0, 50, 27, 28, 0, 770 1.1 christos 0, 74, 38, 0, 0, 0, 0, 0, 76, 0, 771 1.1 christos 74, 74, 0, 42, 44, 39, 45, 0, 0, 0, 772 1.1 christos 0, 0, 37, 52, 0, 0, 41, 43, 51, 53 773 1.1 christos }; 774 1.1 christos 775 1.1 christos /* YYPGOTO[NTERM-NUM]. */ 776 1.1 christos static const yytype_int16 yypgoto[] = 777 1.1 christos { 778 1.1 christos -98, -98, 196, -98, -98, -98, -81, 6, -98, -9, 779 1.1 christos -98, 2, -98, -78, -38, -97, -67, -98, -48, 172, 780 1.1 christos 12 781 1.1 christos }; 782 1.1 christos 783 1.1 christos /* YYDEFGOTO[NTERM-NUM]. */ 784 1.1 christos static const yytype_int8 yydefgoto[] = 785 1.1 christos { 786 1.1 christos 0, 16, 46, 17, 18, 19, 100, 40, 101, 102, 787 1.1 christos 20, 92, 22, 103, 64, 120, 62, 23, 74, 75, 788 1.1 christos 76 789 1.1 christos }; 790 1.1 christos 791 1.1 christos /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If 792 1.1 christos positive, shift that token. If negative, reduce the rule whose 793 1.1 christos number is the opposite. If YYTABLE_NINF, syntax error. */ 794 1.1 christos static const yytype_int16 yytable[] = 795 1.1 christos { 796 1.1 christos 106, 110, 21, 78, 111, 41, 50, 117, 50, -10, 797 1.1 christos 118, 51, 25, 108, -9, 80, 42, 41, 26, 138, 798 1.1 christos 52, 31, 87, 5, 6, 128, 7, 35, 54, 60, 799 1.1 christos 37, -11, 53, 134, -63, -12, 135, 67, 142, 68, 800 1.1 christos 69, 61, 154, 155, 29, 156, 112, 157, 81, 27, 801 1.1 christos 41, 82, 121, 41, 162, 149, 151, 28, 150, 129, 802 1.1 christos 130, 85, 77, 170, 171, 84, 31, 32, 90, 30, 803 1.1 christos 33, 34, 35, 36, 52, 37, 38, 5, 6, 113, 804 1.1 christos 7, 126, 114, 91, 127, 43, 39, 174, 115, 45, 805 1.1 christos 44, 168, 1, 2, 3, 4, 5, 6, 173, 7, 806 1.1 christos 8, 127, 9, 10, 11, 12, 13, 14, 31, 94, 807 1.1 christos 15, 48, 95, 96, 35, 97, 55, 98, 99, 31, 808 1.1 christos 94, 88, 49, 89, 96, 35, 31, 52, 98, 141, 809 1.1 christos 5, 6, 35, 7, 56, 37, 31, 94, 57, 58, 810 1.1 christos 95, 96, 35, 97, 59, 98, 31, 94, 63, 65, 811 1.1 christos 52, 96, 35, 5, 6, 98, 7, 70, 71, 72, 812 1.1 christos 73, 66, 79, 86, 83, 105, 93, 104, 107, 109, 813 1.1 christos 122, 0, 24, 116, 123, 119, 0, 124, 125, 131, 814 1.1 christos 132, 133, 0, 0, 141, 136, 137, 143, 158, 139, 815 1.1 christos 140, 144, 146, 147, 145, 148, 152, 153, 163, 167, 816 1.1 christos 0, 164, 165, 159, 160, 161, 166, 169, 175, 172, 817 1.1 christos 176, 177, 178, 179, 0, 47 818 1.1 christos }; 819 1.1 christos 820 1.1 christos static const yytype_int16 yycheck[] = 821 1.1 christos { 822 1.1 christos 67, 82, 0, 51, 82, 14, 21, 88, 21, 0, 823 1.1 christos 88, 26, 0, 26, 0, 53, 14, 26, 18, 116, 824 1.1 christos 4, 3, 60, 7, 8, 106, 10, 9, 26, 13, 825 1.1 christos 12, 0, 26, 114, 25, 0, 114, 18, 119, 20, 826 1.1 christos 21, 39, 139, 140, 16, 142, 84, 144, 19, 13, 827 1.1 christos 59, 22, 90, 62, 151, 136, 137, 15, 136, 107, 828 1.1 christos 108, 59, 50, 160, 161, 59, 3, 4, 62, 13, 829 1.1 christos 7, 8, 9, 10, 4, 12, 13, 7, 8, 19, 830 1.1 christos 10, 19, 22, 13, 22, 18, 23, 168, 86, 14, 831 1.1 christos 0, 158, 3, 4, 5, 6, 7, 8, 19, 10, 832 1.1 christos 11, 22, 13, 14, 15, 16, 17, 18, 3, 4, 833 1.1 christos 21, 25, 7, 8, 9, 10, 19, 12, 13, 3, 834 1.1 christos 4, 22, 26, 24, 8, 9, 3, 4, 12, 13, 835 1.1 christos 7, 8, 9, 10, 19, 12, 3, 4, 19, 19, 836 1.1 christos 7, 8, 9, 10, 22, 12, 3, 4, 22, 22, 837 1.1 christos 4, 8, 9, 7, 8, 12, 10, 3, 4, 5, 838 1.1 christos 6, 4, 22, 22, 20, 13, 19, 19, 26, 19, 839 1.1 christos 19, -1, 0, 24, 19, 22, -1, 19, 19, 19, 840 1.1 christos 19, 19, -1, -1, 13, 22, 22, 19, 18, 24, 841 1.1 christos 24, 24, 19, 19, 25, 19, 19, 22, 19, 13, 842 1.1 christos -1, 19, 19, 25, 24, 24, 19, 18, 13, 19, 843 1.1 christos 19, 19, 19, 19, -1, 19 844 1.1 christos }; 845 1.1 christos 846 1.1 christos /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of 847 1.1 christos state STATE-NUM. */ 848 1.1 christos static const yytype_int8 yystos[] = 849 1.1 christos { 850 1.1 christos 0, 3, 4, 5, 6, 7, 8, 10, 11, 13, 851 1.1 christos 14, 15, 16, 17, 18, 21, 28, 30, 31, 32, 852 1.1 christos 37, 38, 39, 44, 46, 47, 18, 13, 15, 16, 853 1.1 christos 13, 3, 4, 7, 8, 9, 10, 12, 13, 23, 854 1.1 christos 34, 36, 38, 18, 0, 14, 29, 29, 25, 26, 855 1.1 christos 21, 26, 4, 34, 38, 19, 19, 19, 19, 22, 856 1.1 christos 13, 38, 43, 22, 41, 22, 4, 18, 20, 21, 857 1.1 christos 3, 4, 5, 6, 45, 46, 47, 47, 45, 22, 858 1.1 christos 41, 19, 22, 20, 34, 38, 22, 41, 22, 24, 859 1.1 christos 34, 13, 38, 19, 4, 7, 8, 10, 12, 13, 860 1.1 christos 33, 35, 36, 40, 19, 13, 43, 26, 26, 19, 861 1.1 christos 33, 40, 41, 19, 22, 38, 24, 33, 40, 22, 862 1.1 christos 42, 41, 19, 19, 19, 19, 19, 22, 33, 45, 863 1.1 christos 45, 19, 19, 19, 33, 40, 22, 22, 42, 24, 864 1.1 christos 24, 13, 33, 19, 24, 25, 19, 19, 19, 33, 865 1.1 christos 40, 33, 19, 22, 42, 42, 42, 42, 18, 25, 866 1.1 christos 24, 24, 42, 19, 19, 19, 19, 13, 43, 18, 867 1.1 christos 42, 42, 19, 19, 33, 13, 19, 19, 19, 19 868 1.1 christos }; 869 1.1 christos 870 1.1 christos /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */ 871 1.1 christos static const yytype_int8 yyr1[] = 872 1.1 christos { 873 1.1 christos 0, 27, 28, 28, 28, 29, 29, 30, 30, 30, 874 1.1 christos 30, 30, 30, 30, 30, 30, 30, 30, 31, 31, 875 1.1 christos 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 876 1.1 christos 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 877 1.1 christos 31, 31, 31, 31, 31, 31, 32, 32, 32, 32, 878 1.1 christos 32, 32, 32, 32, 33, 33, 34, 34, 35, 35, 879 1.1 christos 35, 36, 36, 37, 37, 38, 38, 38, 39, 39, 880 1.1 christos 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 881 1.1 christos 44, 45, 45, 45, 45, 46, 47, 47, 47, 47 882 1.1 christos }; 883 1.1 christos 884 1.1 christos /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */ 885 1.1 christos static const yytype_int8 yyr2[] = 886 1.1 christos { 887 1.1 christos 0, 2, 1, 2, 2, 0, 1, 2, 2, 1, 888 1.1 christos 1, 1, 1, 1, 1, 2, 2, 1, 3, 4, 889 1.1 christos 4, 5, 5, 4, 3, 3, 3, 7, 7, 6, 890 1.1 christos 5, 6, 5, 6, 5, 5, 4, 9, 7, 8, 891 1.1 christos 6, 10, 8, 10, 8, 8, 2, 3, 3, 5, 892 1.1 christos 6, 10, 9, 10, 1, 1, 1, 1, 1, 1, 893 1.1 christos 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 894 1.1 christos 1, 1, 0, 2, 0, 2, 0, 2, 1, 3, 895 1.1 christos 3, 1, 1, 3, 3, 3, 1, 1, 1, 1 896 1.1 christos }; 897 1.1 christos 898 1.1 christos 899 1.1 christos enum { YYENOMEM = -2 }; 900 1.1 christos 901 1.1 christos #define yyerrok (yyerrstatus = 0) 902 1.1 christos #define yyclearin (yychar = YYEMPTY) 903 1.1 christos 904 1.1 christos #define YYACCEPT goto yyacceptlab 905 1.1 christos #define YYABORT goto yyabortlab 906 1.1 christos #define YYERROR goto yyerrorlab 907 1.1 christos #define YYNOMEM goto yyexhaustedlab 908 1.1 christos 909 1.1 christos 910 1.1 christos #define YYRECOVERING() (!!yyerrstatus) 911 1.1 christos 912 1.1 christos #define YYBACKUP(Token, Value) \ 913 1.1 christos do \ 914 1.1 christos if (yychar == YYEMPTY) \ 915 1.1 christos { \ 916 1.1 christos yychar = (Token); \ 917 1.1 christos yylval = (Value); \ 918 1.1 christos YYPOPSTACK (yylen); \ 919 1.1 christos yystate = *yyssp; \ 920 1.1 christos goto yybackup; \ 921 1.1 christos } \ 922 1.1 christos else \ 923 1.1 christos { \ 924 1.1 christos yyerror (YY_("syntax error: cannot back up")); \ 925 1.1 christos YYERROR; \ 926 1.1 christos } \ 927 1.1 christos while (0) 928 1.1 christos 929 1.1 christos /* Backward compatibility with an undocumented macro. 930 1.1 christos Use YYerror or YYUNDEF. */ 931 1.1 christos #define YYERRCODE YYUNDEF 932 1.1 christos 933 1.1 christos 934 1.1 christos /* Enable debugging if requested. */ 935 1.1 christos #if YYDEBUG 936 1.1 christos 937 1.1 christos # ifndef YYFPRINTF 938 1.1 christos # include <stdio.h> /* INFRINGES ON USER NAME SPACE */ 939 1.1 christos # define YYFPRINTF fprintf 940 1.1 christos # endif 941 1.1 christos 942 1.1 christos # define YYDPRINTF(Args) \ 943 1.1 christos do { \ 944 1.1 christos if (yydebug) \ 945 1.1 christos YYFPRINTF Args; \ 946 1.1 christos } while (0) 947 1.1 christos 948 1.1 christos 949 1.1 christos 950 1.1 christos 951 1.1 christos # define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \ 952 1.1 christos do { \ 953 1.1 christos if (yydebug) \ 954 1.1 christos { \ 955 1.1 christos YYFPRINTF (stderr, "%s ", Title); \ 956 1.1 christos yy_symbol_print (stderr, \ 957 1.1 christos Kind, Value); \ 958 1.1 christos YYFPRINTF (stderr, "\n"); \ 959 1.1 christos } \ 960 1.1 christos } while (0) 961 1.1 christos 962 1.1 christos 963 1.1 christos /*-----------------------------------. 964 1.1 christos | Print this symbol's value on YYO. | 965 1.1 christos `-----------------------------------*/ 966 1.1 christos 967 1.1 christos static void 968 1.1 christos yy_symbol_value_print (FILE *yyo, 969 1.1 christos yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep) 970 1.1 christos { 971 1.1 christos FILE *yyoutput = yyo; 972 1.1 christos YY_USE (yyoutput); 973 1.1 christos if (!yyvaluep) 974 1.1 christos return; 975 1.1 christos YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN 976 1.1 christos YY_USE (yykind); 977 1.1 christos YY_IGNORE_MAYBE_UNINITIALIZED_END 978 1.1 christos } 979 1.1 christos 980 1.1 christos 981 1.1 christos /*---------------------------. 982 1.1 christos | Print this symbol on YYO. | 983 1.1 christos `---------------------------*/ 984 1.1 christos 985 1.1 christos static void 986 1.1 christos yy_symbol_print (FILE *yyo, 987 1.1 christos yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep) 988 1.1 christos { 989 1.1 christos YYFPRINTF (yyo, "%s %s (", 990 1.1 christos yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind)); 991 1.1 christos 992 1.1 christos yy_symbol_value_print (yyo, yykind, yyvaluep); 993 1.1 christos YYFPRINTF (yyo, ")"); 994 1.1 christos } 995 1.1 christos 996 1.1 christos /*------------------------------------------------------------------. 997 1.1 christos | yy_stack_print -- Print the state stack from its BOTTOM up to its | 998 1.1 christos | TOP (included). | 999 1.1 christos `------------------------------------------------------------------*/ 1000 1.1 christos 1001 1.1 christos static void 1002 1.1 christos yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop) 1003 1.1 christos { 1004 1.1 christos YYFPRINTF (stderr, "Stack now"); 1005 1.1 christos for (; yybottom <= yytop; yybottom++) 1006 1.1 christos { 1007 1.1 christos int yybot = *yybottom; 1008 1.1 christos YYFPRINTF (stderr, " %d", yybot); 1009 1.1 christos } 1010 1.1 christos YYFPRINTF (stderr, "\n"); 1011 1.1 christos } 1012 1.1 christos 1013 1.1 christos # define YY_STACK_PRINT(Bottom, Top) \ 1014 1.1 christos do { \ 1015 1.1 christos if (yydebug) \ 1016 1.1 christos yy_stack_print ((Bottom), (Top)); \ 1017 1.1 christos } while (0) 1018 1.1 christos 1019 1.1 christos 1020 1.1 christos /*------------------------------------------------. 1021 1.1 christos | Report that the YYRULE is going to be reduced. | 1022 1.1 christos `------------------------------------------------*/ 1023 1.1 christos 1024 1.1 christos static void 1025 1.1 christos yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, 1026 1.1 christos int yyrule) 1027 1.1 christos { 1028 1.1 christos int yylno = yyrline[yyrule]; 1029 1.1 christos int yynrhs = yyr2[yyrule]; 1030 1.1 christos int yyi; 1031 1.1 christos YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n", 1032 1.1 christos yyrule - 1, yylno); 1033 1.1 christos /* The symbols being reduced. */ 1034 1.1 christos for (yyi = 0; yyi < yynrhs; yyi++) 1035 1.1 christos { 1036 1.1 christos YYFPRINTF (stderr, " $%d = ", yyi + 1); 1037 1.1 christos yy_symbol_print (stderr, 1038 1.1 christos YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]), 1039 1.1 christos &yyvsp[(yyi + 1) - (yynrhs)]); 1040 1.1 christos YYFPRINTF (stderr, "\n"); 1041 1.1 christos } 1042 1.1 christos } 1043 1.1 christos 1044 1.1 christos # define YY_REDUCE_PRINT(Rule) \ 1045 1.1 christos do { \ 1046 1.1 christos if (yydebug) \ 1047 1.1 christos yy_reduce_print (yyssp, yyvsp, Rule); \ 1048 1.1 christos } while (0) 1049 1.1 christos 1050 1.1 christos /* Nonzero means print parse trace. It is left uninitialized so that 1051 1.1 christos multiple parsers can coexist. */ 1052 1.1 christos int yydebug; 1053 1.1 christos #else /* !YYDEBUG */ 1054 1.1 christos # define YYDPRINTF(Args) ((void) 0) 1055 1.1 christos # define YY_SYMBOL_PRINT(Title, Kind, Value, Location) 1056 1.1 christos # define YY_STACK_PRINT(Bottom, Top) 1057 1.1 christos # define YY_REDUCE_PRINT(Rule) 1058 1.1 christos #endif /* !YYDEBUG */ 1059 1.1 christos 1060 1.1 christos 1061 1.1 christos /* YYINITDEPTH -- initial size of the parser's stacks. */ 1062 1.1 christos #ifndef YYINITDEPTH 1063 1.1 christos # define YYINITDEPTH 200 1064 1.1 christos #endif 1065 1.1 christos 1066 1.1 christos /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only 1067 1.1 christos if the built-in stack extension method is used). 1068 1.1 christos 1069 1.1 christos Do not make this value too large; the results are undefined if 1070 1.1 christos YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) 1071 1.1 christos evaluated with infinite-precision integer arithmetic. */ 1072 1.1 christos 1073 1.1 christos #ifndef YYMAXDEPTH 1074 1.1 christos # define YYMAXDEPTH 10000 1075 1.1 christos #endif 1076 1.1 christos 1077 1.1 christos 1078 1.1 christos 1079 1.1 christos 1080 1.1 christos 1081 1.1 christos 1082 1.1 christos /*-----------------------------------------------. 1083 1.1 christos | Release the memory associated to this symbol. | 1084 1.1 christos `-----------------------------------------------*/ 1085 1.1 christos 1086 1.1 christos static void 1087 1.1 christos yydestruct (const char *yymsg, 1088 1.1 christos yysymbol_kind_t yykind, YYSTYPE *yyvaluep) 1089 1.1 christos { 1090 1.1 christos YY_USE (yyvaluep); 1091 1.1 christos if (!yymsg) 1092 1.1 christos yymsg = "Deleting"; 1093 1.1 christos YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp); 1094 1.1 christos 1095 1.1 christos YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN 1096 1.1 christos YY_USE (yykind); 1097 1.1 christos YY_IGNORE_MAYBE_UNINITIALIZED_END 1098 1.1 christos } 1099 1.1 christos 1100 1.1 christos 1101 1.1 christos /* Lookahead token kind. */ 1102 1.1 christos int yychar; 1103 1.1 christos 1104 1.1 christos /* The semantic value of the lookahead symbol. */ 1105 1.1 christos YYSTYPE yylval; 1106 1.1 christos /* Number of syntax errors so far. */ 1107 1.1 christos int yynerrs; 1108 1.1 christos 1109 1.1 christos 1110 1.1 christos 1111 1.1 christos 1112 1.1 christos /*----------. 1113 1.1 christos | yyparse. | 1114 1.1 christos `----------*/ 1115 1.1 christos 1116 1.1 christos int 1117 1.1 christos yyparse (void) 1118 1.1 christos { 1119 1.1 christos yy_state_fast_t yystate = 0; 1120 1.1 christos /* Number of tokens to shift before error messages enabled. */ 1121 1.1 christos int yyerrstatus = 0; 1122 1.1 christos 1123 1.1 christos /* Refer to the stacks through separate pointers, to allow yyoverflow 1124 1.1 christos to reallocate them elsewhere. */ 1125 1.1 christos 1126 1.1 christos /* Their size. */ 1127 1.1 christos YYPTRDIFF_T yystacksize = YYINITDEPTH; 1128 1.1 christos 1129 1.1 christos /* The state stack: array, bottom, top. */ 1130 1.1 christos yy_state_t yyssa[YYINITDEPTH]; 1131 1.1 christos yy_state_t *yyss = yyssa; 1132 1.1 christos yy_state_t *yyssp = yyss; 1133 1.1 christos 1134 1.1 christos /* The semantic value stack: array, bottom, top. */ 1135 1.1 christos YYSTYPE yyvsa[YYINITDEPTH]; 1136 1.1 christos YYSTYPE *yyvs = yyvsa; 1137 1.1 christos YYSTYPE *yyvsp = yyvs; 1138 1.1 christos 1139 1.1 christos int yyn; 1140 1.1 christos /* The return value of yyparse. */ 1141 1.1 christos int yyresult; 1142 1.1 christos /* Lookahead symbol kind. */ 1143 1.1 christos yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY; 1144 1.1 christos /* The variables used to return semantic value and location from the 1145 1.1 christos action routines. */ 1146 1.1 christos YYSTYPE yyval; 1147 1.1 christos 1148 1.1 christos 1149 1.1 christos 1150 1.1 christos #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) 1151 1.1 christos 1152 1.1 christos /* The number of symbols on the RHS of the reduced rule. 1153 1.1 christos Keep to zero when no symbol should be popped. */ 1154 1.1 christos int yylen = 0; 1155 1.1 christos 1156 1.1 christos YYDPRINTF ((stderr, "Starting parse\n")); 1157 1.1 christos 1158 1.1 christos yychar = YYEMPTY; /* Cause a token to be read. */ 1159 1.1 christos 1160 1.1 christos goto yysetstate; 1161 1.1 christos 1162 1.1 christos 1163 1.1 christos /*------------------------------------------------------------. 1164 1.1 christos | yynewstate -- push a new state, which is found in yystate. | 1165 1.1 christos `------------------------------------------------------------*/ 1166 1.1 christos yynewstate: 1167 1.1 christos /* In all cases, when you get here, the value and location stacks 1168 1.1 christos have just been pushed. So pushing a state here evens the stacks. */ 1169 1.1 christos yyssp++; 1170 1.1 christos 1171 1.1 christos 1172 1.1 christos /*--------------------------------------------------------------------. 1173 1.1 christos | yysetstate -- set current state (the top of the stack) to yystate. | 1174 1.1 christos `--------------------------------------------------------------------*/ 1175 1.1 christos yysetstate: 1176 1.1 christos YYDPRINTF ((stderr, "Entering state %d\n", yystate)); 1177 1.1 christos YY_ASSERT (0 <= yystate && yystate < YYNSTATES); 1178 1.1 christos YY_IGNORE_USELESS_CAST_BEGIN 1179 1.1 christos *yyssp = YY_CAST (yy_state_t, yystate); 1180 1.1 christos YY_IGNORE_USELESS_CAST_END 1181 1.1 christos YY_STACK_PRINT (yyss, yyssp); 1182 1.1 christos 1183 1.1 christos if (yyss + yystacksize - 1 <= yyssp) 1184 1.1 christos #if !defined yyoverflow && !defined YYSTACK_RELOCATE 1185 1.1 christos YYNOMEM; 1186 1.1 christos #else 1187 1.1 christos { 1188 1.1 christos /* Get the current used size of the three stacks, in elements. */ 1189 1.1 christos YYPTRDIFF_T yysize = yyssp - yyss + 1; 1190 1.1 christos 1191 1.1 christos # if defined yyoverflow 1192 1.1 christos { 1193 1.1 christos /* Give user a chance to reallocate the stack. Use copies of 1194 1.1 christos these so that the &'s don't force the real ones into 1195 1.1 christos memory. */ 1196 1.1 christos yy_state_t *yyss1 = yyss; 1197 1.1 christos YYSTYPE *yyvs1 = yyvs; 1198 1.1 christos 1199 1.1 christos /* Each stack pointer address is followed by the size of the 1200 1.1 christos data in use in that stack, in bytes. This used to be a 1201 1.1 christos conditional around just the two extra args, but that might 1202 1.1 christos be undefined if yyoverflow is a macro. */ 1203 1.1 christos yyoverflow (YY_("memory exhausted"), 1204 1.1 christos &yyss1, yysize * YYSIZEOF (*yyssp), 1205 1.1 christos &yyvs1, yysize * YYSIZEOF (*yyvsp), 1206 1.1 christos &yystacksize); 1207 1.1 christos yyss = yyss1; 1208 1.1 christos yyvs = yyvs1; 1209 1.1 christos } 1210 1.1 christos # else /* defined YYSTACK_RELOCATE */ 1211 1.1 christos /* Extend the stack our own way. */ 1212 1.1 christos if (YYMAXDEPTH <= yystacksize) 1213 1.1 christos YYNOMEM; 1214 1.1 christos yystacksize *= 2; 1215 1.1 christos if (YYMAXDEPTH < yystacksize) 1216 1.1 christos yystacksize = YYMAXDEPTH; 1217 1.1 christos 1218 1.1 christos { 1219 1.1 christos yy_state_t *yyss1 = yyss; 1220 1.1 christos union yyalloc *yyptr = 1221 1.1 christos YY_CAST (union yyalloc *, 1222 1.1 christos YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize)))); 1223 1.1 christos if (! yyptr) 1224 1.1 christos YYNOMEM; 1225 1.1 christos YYSTACK_RELOCATE (yyss_alloc, yyss); 1226 1.1 christos YYSTACK_RELOCATE (yyvs_alloc, yyvs); 1227 1.1 christos # undef YYSTACK_RELOCATE 1228 1.1 christos if (yyss1 != yyssa) 1229 1.1 christos YYSTACK_FREE (yyss1); 1230 1.1 christos } 1231 1.1 christos # endif 1232 1.1 christos 1233 1.1 christos yyssp = yyss + yysize - 1; 1234 1.1 christos yyvsp = yyvs + yysize - 1; 1235 1.1 christos 1236 1.1 christos YY_IGNORE_USELESS_CAST_BEGIN 1237 1.1 christos YYDPRINTF ((stderr, "Stack size increased to %ld\n", 1238 1.1 christos YY_CAST (long, yystacksize))); 1239 1.1 christos YY_IGNORE_USELESS_CAST_END 1240 1.1 christos 1241 1.1 christos if (yyss + yystacksize - 1 <= yyssp) 1242 1.1 christos YYABORT; 1243 1.1 christos } 1244 1.1 christos #endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */ 1245 1.1 christos 1246 1.1 christos 1247 1.1 christos if (yystate == YYFINAL) 1248 1.1 christos YYACCEPT; 1249 1.1 christos 1250 1.1 christos goto yybackup; 1251 1.1 christos 1252 1.1 christos 1253 1.1 christos /*-----------. 1254 1.1 christos | yybackup. | 1255 1.1 christos `-----------*/ 1256 1.1 christos yybackup: 1257 1.1 christos /* Do appropriate processing given the current state. Read a 1258 1.1 christos lookahead token if we need one and don't already have one. */ 1259 1.1 christos 1260 1.1 christos /* First try to decide what to do without reference to lookahead token. */ 1261 1.1 christos yyn = yypact[yystate]; 1262 1.1 christos if (yypact_value_is_default (yyn)) 1263 1.1 christos goto yydefault; 1264 1.1 christos 1265 1.1 christos /* Not known => get a lookahead token if don't already have one. */ 1266 1.1 christos 1267 1.1 christos /* YYCHAR is either empty, or end-of-input, or a valid lookahead. */ 1268 1.1 christos if (yychar == YYEMPTY) 1269 1.1 christos { 1270 1.1 christos YYDPRINTF ((stderr, "Reading a token\n")); 1271 1.1 christos yychar = yylex (); 1272 1.1 christos } 1273 1.1 christos 1274 1.1 christos if (yychar <= YYEOF) 1275 1.1 christos { 1276 1.1 christos yychar = YYEOF; 1277 1.1 christos yytoken = YYSYMBOL_YYEOF; 1278 1.1 christos YYDPRINTF ((stderr, "Now at end of input.\n")); 1279 1.1 christos } 1280 1.1 christos else if (yychar == YYerror) 1281 1.1 christos { 1282 1.1 christos /* The scanner already issued an error message, process directly 1283 1.1 christos to error recovery. But do not keep the error token as 1284 1.1 christos lookahead, it is too special and may lead us to an endless 1285 1.1 christos loop in error recovery. */ 1286 1.1 christos yychar = YYUNDEF; 1287 1.1 christos yytoken = YYSYMBOL_YYerror; 1288 1.1 christos goto yyerrlab1; 1289 1.1 christos } 1290 1.1 christos else 1291 1.1 christos { 1292 1.1 christos yytoken = YYTRANSLATE (yychar); 1293 1.1 christos YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); 1294 1.1 christos } 1295 1.1 christos 1296 1.1 christos /* If the proper action on seeing token YYTOKEN is to reduce or to 1297 1.1 christos detect an error, take that action. */ 1298 1.1 christos yyn += yytoken; 1299 1.1 christos if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) 1300 1.1 christos goto yydefault; 1301 1.1 christos yyn = yytable[yyn]; 1302 1.1 christos if (yyn <= 0) 1303 1.1 christos { 1304 1.1 christos if (yytable_value_is_error (yyn)) 1305 1.1 christos goto yyerrlab; 1306 1.1 christos yyn = -yyn; 1307 1.1 christos goto yyreduce; 1308 1.1 christos } 1309 1.1 christos 1310 1.1 christos /* Count tokens shifted since error; after three, turn off error 1311 1.1 christos status. */ 1312 1.1 christos if (yyerrstatus) 1313 1.1 christos yyerrstatus--; 1314 1.1 christos 1315 1.1 christos /* Shift the lookahead token. */ 1316 1.1 christos YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); 1317 1.1 christos yystate = yyn; 1318 1.1 christos YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN 1319 1.1 christos *++yyvsp = yylval; 1320 1.1 christos YY_IGNORE_MAYBE_UNINITIALIZED_END 1321 1.1 christos 1322 1.1 christos /* Discard the shifted token. */ 1323 1.1 christos yychar = YYEMPTY; 1324 1.1 christos goto yynewstate; 1325 1.1 christos 1326 1.1 christos 1327 1.1 christos /*-----------------------------------------------------------. 1328 1.1 christos | yydefault -- do the default action for the current state. | 1329 1.1 christos `-----------------------------------------------------------*/ 1330 1.1 christos yydefault: 1331 1.1 christos yyn = yydefact[yystate]; 1332 1.1 christos if (yyn == 0) 1333 1.1 christos goto yyerrlab; 1334 1.1 christos goto yyreduce; 1335 1.1 christos 1336 1.1 christos 1337 1.1 christos /*-----------------------------. 1338 1.1 christos | yyreduce -- do a reduction. | 1339 1.1 christos `-----------------------------*/ 1340 1.1 christos yyreduce: 1341 1.1 christos /* yyn is the number of a rule to reduce with. */ 1342 1.1 christos yylen = yyr2[yyn]; 1343 1.1 christos 1344 1.1 christos /* If YYLEN is nonzero, implement the default value of the action: 1345 1.1 christos '$$ = $1'. 1346 1.1 christos 1347 1.1 christos Otherwise, the following line sets YYVAL to garbage. 1348 1.1 christos This behavior is undocumented and Bison 1349 1.1 christos users should not rely upon it. Assigning to YYVAL 1350 1.1 christos unconditionally makes the parser a bit smaller, and it avoids a 1351 1.1 christos GCC warning that YYVAL may be used uninitialized. */ 1352 1.1 christos yyval = yyvsp[1-yylen]; 1353 1.1 christos 1354 1.1 christos 1355 1.1 christos YY_REDUCE_PRINT (yyn); 1356 1.1 christos switch (yyn) 1357 1.1 christos { 1358 1.1 christos case 3: /* operand: motorola_operand optional_ampersand */ 1359 1.1 christos #line 122 "./config/m68k-parse.y" 1360 1.1 christos { 1361 1.1 christos op->trailing_ampersand = (yyvsp[0].trailing_ampersand); 1362 1.1 christos } 1363 1.1 christos #line 1364 "config/m68k-parse.c" 1364 1.1 christos break; 1365 1.1 christos 1366 1.1 christos case 4: /* operand: mit_operand optional_ampersand */ 1367 1.1 christos #line 126 "./config/m68k-parse.y" 1368 1.1 christos { 1369 1.1 christos op->trailing_ampersand = (yyvsp[0].trailing_ampersand); 1370 1.1 christos } 1371 1.1 christos #line 1372 "config/m68k-parse.c" 1372 1.1 christos break; 1373 1.1 christos 1374 1.1 christos case 5: /* optional_ampersand: %empty */ 1375 1.1 christos #line 134 "./config/m68k-parse.y" 1376 1.1 christos { (yyval.trailing_ampersand) = 0; } 1377 1.1 christos #line 1378 "config/m68k-parse.c" 1378 1.1 christos break; 1379 1.1 christos 1380 1.1 christos case 6: /* optional_ampersand: '&' */ 1381 1.1 christos #line 136 "./config/m68k-parse.y" 1382 1.1 christos { (yyval.trailing_ampersand) = 1; } 1383 1.1 christos #line 1384 "config/m68k-parse.c" 1384 1.1 christos break; 1385 1.1 christos 1386 1.1 christos case 7: /* generic_operand: '<' '<' */ 1387 1.1 christos #line 143 "./config/m68k-parse.y" 1388 1.1 christos { 1389 1.1 christos op->mode = LSH; 1390 1.1 christos } 1391 1.1 christos #line 1392 "config/m68k-parse.c" 1392 1.1 christos break; 1393 1.1 christos 1394 1.1 christos case 8: /* generic_operand: '>' '>' */ 1395 1.1 christos #line 148 "./config/m68k-parse.y" 1396 1.1 christos { 1397 1.1 christos op->mode = RSH; 1398 1.1 christos } 1399 1.1 christos #line 1400 "config/m68k-parse.c" 1400 1.1 christos break; 1401 1.1 christos 1402 1.1 christos case 9: /* generic_operand: DR */ 1403 1.1 christos #line 153 "./config/m68k-parse.y" 1404 1.1 christos { 1405 1.1 christos op->mode = DREG; 1406 1.1 christos op->reg = (yyvsp[0].reg); 1407 1.1 christos } 1408 1.1 christos #line 1409 "config/m68k-parse.c" 1409 1.1 christos break; 1410 1.1 christos 1411 1.1 christos case 10: /* generic_operand: AR */ 1412 1.1 christos #line 158 "./config/m68k-parse.y" 1413 1.1 christos { 1414 1.1 christos op->mode = AREG; 1415 1.1 christos op->reg = (yyvsp[0].reg); 1416 1.1 christos } 1417 1.1 christos #line 1418 "config/m68k-parse.c" 1418 1.1 christos break; 1419 1.1 christos 1420 1.1 christos case 11: /* generic_operand: FPR */ 1421 1.1 christos #line 163 "./config/m68k-parse.y" 1422 1.1 christos { 1423 1.1 christos op->mode = FPREG; 1424 1.1 christos op->reg = (yyvsp[0].reg); 1425 1.1 christos } 1426 1.1 christos #line 1427 "config/m68k-parse.c" 1427 1.1 christos break; 1428 1.1 christos 1429 1.1 christos case 12: /* generic_operand: FPCR */ 1430 1.1 christos #line 168 "./config/m68k-parse.y" 1431 1.1 christos { 1432 1.1 christos op->mode = CONTROL; 1433 1.1 christos op->reg = (yyvsp[0].reg); 1434 1.1 christos } 1435 1.1 christos #line 1436 "config/m68k-parse.c" 1436 1.1 christos break; 1437 1.1 christos 1438 1.1 christos case 13: /* generic_operand: CREG */ 1439 1.1 christos #line 173 "./config/m68k-parse.y" 1440 1.1 christos { 1441 1.1 christos op->mode = CONTROL; 1442 1.1 christos op->reg = (yyvsp[0].reg); 1443 1.1 christos } 1444 1.1 christos #line 1445 "config/m68k-parse.c" 1445 1.1 christos break; 1446 1.1 christos 1447 1.1 christos case 14: /* generic_operand: EXPR */ 1448 1.1 christos #line 178 "./config/m68k-parse.y" 1449 1.1 christos { 1450 1.1 christos op->mode = ABSL; 1451 1.1 christos op->disp = (yyvsp[0].exp); 1452 1.1 christos } 1453 1.1 christos #line 1454 "config/m68k-parse.c" 1454 1.1 christos break; 1455 1.1 christos 1456 1.1 christos case 15: /* generic_operand: '#' EXPR */ 1457 1.1 christos #line 183 "./config/m68k-parse.y" 1458 1.1 christos { 1459 1.1 christos op->mode = IMMED; 1460 1.1 christos op->disp = (yyvsp[0].exp); 1461 1.1 christos } 1462 1.1 christos #line 1463 "config/m68k-parse.c" 1463 1.1 christos break; 1464 1.1 christos 1465 1.1 christos case 16: /* generic_operand: '&' EXPR */ 1466 1.1 christos #line 188 "./config/m68k-parse.y" 1467 1.1 christos { 1468 1.1 christos op->mode = IMMED; 1469 1.1 christos op->disp = (yyvsp[0].exp); 1470 1.1 christos } 1471 1.1 christos #line 1472 "config/m68k-parse.c" 1472 1.1 christos break; 1473 1.1 christos 1474 1.1 christos case 17: /* generic_operand: reglist */ 1475 1.1 christos #line 193 "./config/m68k-parse.y" 1476 1.1 christos { 1477 1.1 christos op->mode = REGLST; 1478 1.1 christos op->mask = (yyvsp[0].mask); 1479 1.1 christos } 1480 1.1 christos #line 1481 "config/m68k-parse.c" 1481 1.1 christos break; 1482 1.1 christos 1483 1.1 christos case 18: /* motorola_operand: '(' AR ')' */ 1484 1.1 christos #line 206 "./config/m68k-parse.y" 1485 1.1 christos { 1486 1.1 christos op->mode = AINDR; 1487 1.1 christos op->reg = (yyvsp[-1].reg); 1488 1.1 christos } 1489 1.1 christos #line 1490 "config/m68k-parse.c" 1490 1.1 christos break; 1491 1.1 christos 1492 1.1 christos case 19: /* motorola_operand: '(' AR ')' '+' */ 1493 1.1 christos #line 211 "./config/m68k-parse.y" 1494 1.1 christos { 1495 1.1 christos op->mode = AINC; 1496 1.1 christos op->reg = (yyvsp[-2].reg); 1497 1.1 christos } 1498 1.1 christos #line 1499 "config/m68k-parse.c" 1499 1.1 christos break; 1500 1.1 christos 1501 1.1 christos case 20: /* motorola_operand: '-' '(' AR ')' */ 1502 1.1 christos #line 216 "./config/m68k-parse.y" 1503 1.1 christos { 1504 1.1 christos op->mode = ADEC; 1505 1.1 christos op->reg = (yyvsp[-1].reg); 1506 1.1 christos } 1507 1.1 christos #line 1508 "config/m68k-parse.c" 1508 1.1 christos break; 1509 1.1 christos 1510 1.1 christos case 21: /* motorola_operand: '(' EXPR ',' zapc ')' */ 1511 1.1 christos #line 221 "./config/m68k-parse.y" 1512 1.1 christos { 1513 1.1 christos op->reg = (yyvsp[-1].reg); 1514 1.1 christos op->disp = (yyvsp[-3].exp); 1515 1.1 christos if (((yyvsp[-1].reg) >= ZADDR0 && (yyvsp[-1].reg) <= ZADDR7) 1516 1.1 christos || (yyvsp[-1].reg) == ZPC) 1517 1.1 christos op->mode = BASE; 1518 1.1 christos else 1519 1.1 christos op->mode = DISP; 1520 1.1 christos } 1521 1.1 christos #line 1522 "config/m68k-parse.c" 1522 1.1 christos break; 1523 1.1 christos 1524 1.1 christos case 22: /* motorola_operand: '(' zapc ',' EXPR ')' */ 1525 1.1 christos #line 231 "./config/m68k-parse.y" 1526 1.1 christos { 1527 1.1 christos op->reg = (yyvsp[-3].reg); 1528 1.1 christos op->disp = (yyvsp[-1].exp); 1529 1.1 christos if (((yyvsp[-3].reg) >= ZADDR0 && (yyvsp[-3].reg) <= ZADDR7) 1530 1.1 christos || (yyvsp[-3].reg) == ZPC) 1531 1.1 christos op->mode = BASE; 1532 1.1 christos else 1533 1.1 christos op->mode = DISP; 1534 1.1 christos } 1535 1.1 christos #line 1536 "config/m68k-parse.c" 1536 1.1 christos break; 1537 1.1 christos 1538 1.1 christos case 23: /* motorola_operand: EXPR '(' zapc ')' */ 1539 1.1 christos #line 241 "./config/m68k-parse.y" 1540 1.1 christos { 1541 1.1 christos op->reg = (yyvsp[-1].reg); 1542 1.1 christos op->disp = (yyvsp[-3].exp); 1543 1.1 christos if (((yyvsp[-1].reg) >= ZADDR0 && (yyvsp[-1].reg) <= ZADDR7) 1544 1.1 christos || (yyvsp[-1].reg) == ZPC) 1545 1.1 christos op->mode = BASE; 1546 1.1 christos else 1547 1.1 christos op->mode = DISP; 1548 1.1 christos } 1549 1.1 christos #line 1550 "config/m68k-parse.c" 1550 1.1 christos break; 1551 1.1 christos 1552 1.1 christos case 24: /* motorola_operand: '(' LPC ')' */ 1553 1.1 christos #line 251 "./config/m68k-parse.y" 1554 1.1 christos { 1555 1.1 christos op->mode = DISP; 1556 1.1 christos op->reg = (yyvsp[-1].reg); 1557 1.1 christos } 1558 1.1 christos #line 1559 "config/m68k-parse.c" 1559 1.1 christos break; 1560 1.1 christos 1561 1.1 christos case 25: /* motorola_operand: '(' ZAR ')' */ 1562 1.1 christos #line 256 "./config/m68k-parse.y" 1563 1.1 christos { 1564 1.1 christos op->mode = BASE; 1565 1.1 christos op->reg = (yyvsp[-1].reg); 1566 1.1 christos } 1567 1.1 christos #line 1568 "config/m68k-parse.c" 1568 1.1 christos break; 1569 1.1 christos 1570 1.1 christos case 26: /* motorola_operand: '(' LZPC ')' */ 1571 1.1 christos #line 261 "./config/m68k-parse.y" 1572 1.1 christos { 1573 1.1 christos op->mode = BASE; 1574 1.1 christos op->reg = (yyvsp[-1].reg); 1575 1.1 christos } 1576 1.1 christos #line 1577 "config/m68k-parse.c" 1577 1.1 christos break; 1578 1.1 christos 1579 1.1 christos case 27: /* motorola_operand: '(' EXPR ',' zapc ',' zireg ')' */ 1580 1.1 christos #line 266 "./config/m68k-parse.y" 1581 1.1 christos { 1582 1.1 christos op->mode = BASE; 1583 1.1 christos op->reg = (yyvsp[-3].reg); 1584 1.1 christos op->disp = (yyvsp[-5].exp); 1585 1.1 christos op->index = (yyvsp[-1].indexreg); 1586 1.1 christos } 1587 1.1 christos #line 1588 "config/m68k-parse.c" 1588 1.1 christos break; 1589 1.1 christos 1590 1.1 christos case 28: /* motorola_operand: '(' EXPR ',' zapc ',' zpc ')' */ 1591 1.1 christos #line 273 "./config/m68k-parse.y" 1592 1.1 christos { 1593 1.1 christos if ((yyvsp[-3].reg) == PC || (yyvsp[-3].reg) == ZPC) 1594 1.1 christos yyerror (_("syntax error")); 1595 1.1 christos op->mode = BASE; 1596 1.1 christos op->reg = (yyvsp[-1].reg); 1597 1.1 christos op->disp = (yyvsp[-5].exp); 1598 1.1 christos op->index.reg = (yyvsp[-3].reg); 1599 1.1 christos op->index.size = SIZE_UNSPEC; 1600 1.1 christos op->index.scale = 1; 1601 1.1 christos } 1602 1.1 christos #line 1603 "config/m68k-parse.c" 1603 1.1 christos break; 1604 1.1 christos 1605 1.1 christos case 29: /* motorola_operand: '(' EXPR ',' zdireg optczapc ')' */ 1606 1.1 christos #line 284 "./config/m68k-parse.y" 1607 1.1 christos { 1608 1.1 christos op->mode = BASE; 1609 1.1 christos op->reg = (yyvsp[-1].reg); 1610 1.1 christos op->disp = (yyvsp[-4].exp); 1611 1.1 christos op->index = (yyvsp[-2].indexreg); 1612 1.1 christos } 1613 1.1 christos #line 1614 "config/m68k-parse.c" 1614 1.1 christos break; 1615 1.1 christos 1616 1.1 christos case 30: /* motorola_operand: '(' zdireg ',' EXPR ')' */ 1617 1.1 christos #line 291 "./config/m68k-parse.y" 1618 1.1 christos { 1619 1.1 christos op->mode = BASE; 1620 1.1 christos op->disp = (yyvsp[-1].exp); 1621 1.1 christos op->index = (yyvsp[-3].indexreg); 1622 1.1 christos } 1623 1.1 christos #line 1624 "config/m68k-parse.c" 1624 1.1 christos break; 1625 1.1 christos 1626 1.1 christos case 31: /* motorola_operand: EXPR '(' zapc ',' zireg ')' */ 1627 1.1 christos #line 297 "./config/m68k-parse.y" 1628 1.1 christos { 1629 1.1 christos op->mode = BASE; 1630 1.1 christos op->reg = (yyvsp[-3].reg); 1631 1.1 christos op->disp = (yyvsp[-5].exp); 1632 1.1 christos op->index = (yyvsp[-1].indexreg); 1633 1.1 christos } 1634 1.1 christos #line 1635 "config/m68k-parse.c" 1635 1.1 christos break; 1636 1.1 christos 1637 1.1 christos case 32: /* motorola_operand: '(' zapc ',' zireg ')' */ 1638 1.1 christos #line 304 "./config/m68k-parse.y" 1639 1.1 christos { 1640 1.1 christos op->mode = BASE; 1641 1.1 christos op->reg = (yyvsp[-3].reg); 1642 1.1 christos op->index = (yyvsp[-1].indexreg); 1643 1.1 christos } 1644 1.1 christos #line 1645 "config/m68k-parse.c" 1645 1.1 christos break; 1646 1.1 christos 1647 1.1 christos case 33: /* motorola_operand: EXPR '(' zapc ',' zpc ')' */ 1648 1.1 christos #line 310 "./config/m68k-parse.y" 1649 1.1 christos { 1650 1.1 christos if ((yyvsp[-3].reg) == PC || (yyvsp[-3].reg) == ZPC) 1651 1.1 christos yyerror (_("syntax error")); 1652 1.1 christos op->mode = BASE; 1653 1.1 christos op->reg = (yyvsp[-1].reg); 1654 1.1 christos op->disp = (yyvsp[-5].exp); 1655 1.1 christos op->index.reg = (yyvsp[-3].reg); 1656 1.1 christos op->index.size = SIZE_UNSPEC; 1657 1.1 christos op->index.scale = 1; 1658 1.1 christos } 1659 1.1 christos #line 1660 "config/m68k-parse.c" 1660 1.1 christos break; 1661 1.1 christos 1662 1.1 christos case 34: /* motorola_operand: '(' zapc ',' zpc ')' */ 1663 1.1 christos #line 321 "./config/m68k-parse.y" 1664 1.1 christos { 1665 1.1 christos if ((yyvsp[-3].reg) == PC || (yyvsp[-3].reg) == ZPC) 1666 1.1 christos yyerror (_("syntax error")); 1667 1.1 christos op->mode = BASE; 1668 1.1 christos op->reg = (yyvsp[-1].reg); 1669 1.1 christos op->index.reg = (yyvsp[-3].reg); 1670 1.1 christos op->index.size = SIZE_UNSPEC; 1671 1.1 christos op->index.scale = 1; 1672 1.1 christos } 1673 1.1 christos #line 1674 "config/m68k-parse.c" 1674 1.1 christos break; 1675 1.1 christos 1676 1.1 christos case 35: /* motorola_operand: EXPR '(' zdireg optczapc ')' */ 1677 1.1 christos #line 331 "./config/m68k-parse.y" 1678 1.1 christos { 1679 1.1 christos op->mode = BASE; 1680 1.1 christos op->reg = (yyvsp[-1].reg); 1681 1.1 christos op->disp = (yyvsp[-4].exp); 1682 1.1 christos op->index = (yyvsp[-2].indexreg); 1683 1.1 christos } 1684 1.1 christos #line 1685 "config/m68k-parse.c" 1685 1.1 christos break; 1686 1.1 christos 1687 1.1 christos case 36: /* motorola_operand: '(' zdireg optczapc ')' */ 1688 1.1 christos #line 338 "./config/m68k-parse.y" 1689 1.1 christos { 1690 1.1 christos op->mode = BASE; 1691 1.1 christos op->reg = (yyvsp[-1].reg); 1692 1.1 christos op->index = (yyvsp[-2].indexreg); 1693 1.1 christos } 1694 1.1 christos #line 1695 "config/m68k-parse.c" 1695 1.1 christos break; 1696 1.1 christos 1697 1.1 christos case 37: /* motorola_operand: '(' '[' EXPR optczapc ']' ',' zireg optcexpr ')' */ 1698 1.1 christos #line 344 "./config/m68k-parse.y" 1699 1.1 christos { 1700 1.1 christos op->mode = POST; 1701 1.1 christos op->reg = (yyvsp[-5].reg); 1702 1.1 christos op->disp = (yyvsp[-6].exp); 1703 1.1 christos op->index = (yyvsp[-2].indexreg); 1704 1.1 christos op->odisp = (yyvsp[-1].exp); 1705 1.1 christos } 1706 1.1 christos #line 1707 "config/m68k-parse.c" 1707 1.1 christos break; 1708 1.1 christos 1709 1.1 christos case 38: /* motorola_operand: '(' '[' EXPR optczapc ']' optcexpr ')' */ 1710 1.1 christos #line 352 "./config/m68k-parse.y" 1711 1.1 christos { 1712 1.1 christos op->mode = POST; 1713 1.1 christos op->reg = (yyvsp[-3].reg); 1714 1.1 christos op->disp = (yyvsp[-4].exp); 1715 1.1 christos op->odisp = (yyvsp[-1].exp); 1716 1.1 christos } 1717 1.1 christos #line 1718 "config/m68k-parse.c" 1718 1.1 christos break; 1719 1.1 christos 1720 1.1 christos case 39: /* motorola_operand: '(' '[' zapc ']' ',' zireg optcexpr ')' */ 1721 1.1 christos #line 359 "./config/m68k-parse.y" 1722 1.1 christos { 1723 1.1 christos op->mode = POST; 1724 1.1 christos op->reg = (yyvsp[-5].reg); 1725 1.1 christos op->index = (yyvsp[-2].indexreg); 1726 1.1 christos op->odisp = (yyvsp[-1].exp); 1727 1.1 christos } 1728 1.1 christos #line 1729 "config/m68k-parse.c" 1729 1.1 christos break; 1730 1.1 christos 1731 1.1 christos case 40: /* motorola_operand: '(' '[' zapc ']' optcexpr ')' */ 1732 1.1 christos #line 366 "./config/m68k-parse.y" 1733 1.1 christos { 1734 1.1 christos op->mode = POST; 1735 1.1 christos op->reg = (yyvsp[-3].reg); 1736 1.1 christos op->odisp = (yyvsp[-1].exp); 1737 1.1 christos } 1738 1.1 christos #line 1739 "config/m68k-parse.c" 1739 1.1 christos break; 1740 1.1 christos 1741 1.1 christos case 41: /* motorola_operand: '(' '[' EXPR ',' zapc ',' zireg ']' optcexpr ')' */ 1742 1.1 christos #line 372 "./config/m68k-parse.y" 1743 1.1 christos { 1744 1.1 christos op->mode = PRE; 1745 1.1 christos op->reg = (yyvsp[-5].reg); 1746 1.1 christos op->disp = (yyvsp[-7].exp); 1747 1.1 christos op->index = (yyvsp[-3].indexreg); 1748 1.1 christos op->odisp = (yyvsp[-1].exp); 1749 1.1 christos } 1750 1.1 christos #line 1751 "config/m68k-parse.c" 1751 1.1 christos break; 1752 1.1 christos 1753 1.1 christos case 42: /* motorola_operand: '(' '[' zapc ',' zireg ']' optcexpr ')' */ 1754 1.1 christos #line 380 "./config/m68k-parse.y" 1755 1.1 christos { 1756 1.1 christos op->mode = PRE; 1757 1.1 christos op->reg = (yyvsp[-5].reg); 1758 1.1 christos op->index = (yyvsp[-3].indexreg); 1759 1.1 christos op->odisp = (yyvsp[-1].exp); 1760 1.1 christos } 1761 1.1 christos #line 1762 "config/m68k-parse.c" 1762 1.1 christos break; 1763 1.1 christos 1764 1.1 christos case 43: /* motorola_operand: '(' '[' EXPR ',' zapc ',' zpc ']' optcexpr ')' */ 1765 1.1 christos #line 387 "./config/m68k-parse.y" 1766 1.1 christos { 1767 1.1 christos if ((yyvsp[-5].reg) == PC || (yyvsp[-5].reg) == ZPC) 1768 1.1 christos yyerror (_("syntax error")); 1769 1.1 christos op->mode = PRE; 1770 1.1 christos op->reg = (yyvsp[-3].reg); 1771 1.1 christos op->disp = (yyvsp[-7].exp); 1772 1.1 christos op->index.reg = (yyvsp[-5].reg); 1773 1.1 christos op->index.size = SIZE_UNSPEC; 1774 1.1 christos op->index.scale = 1; 1775 1.1 christos op->odisp = (yyvsp[-1].exp); 1776 1.1 christos } 1777 1.1 christos #line 1778 "config/m68k-parse.c" 1778 1.1 christos break; 1779 1.1 christos 1780 1.1 christos case 44: /* motorola_operand: '(' '[' zapc ',' zpc ']' optcexpr ')' */ 1781 1.1 christos #line 399 "./config/m68k-parse.y" 1782 1.1 christos { 1783 1.1 christos if ((yyvsp[-5].reg) == PC || (yyvsp[-5].reg) == ZPC) 1784 1.1 christos yyerror (_("syntax error")); 1785 1.1 christos op->mode = PRE; 1786 1.1 christos op->reg = (yyvsp[-3].reg); 1787 1.1 christos op->index.reg = (yyvsp[-5].reg); 1788 1.1 christos op->index.size = SIZE_UNSPEC; 1789 1.1 christos op->index.scale = 1; 1790 1.1 christos op->odisp = (yyvsp[-1].exp); 1791 1.1 christos } 1792 1.1 christos #line 1793 "config/m68k-parse.c" 1793 1.1 christos break; 1794 1.1 christos 1795 1.1 christos case 45: /* motorola_operand: '(' '[' optexprc zdireg optczapc ']' optcexpr ')' */ 1796 1.1 christos #line 410 "./config/m68k-parse.y" 1797 1.1 christos { 1798 1.1 christos op->mode = PRE; 1799 1.1 christos op->reg = (yyvsp[-3].reg); 1800 1.1 christos op->disp = (yyvsp[-5].exp); 1801 1.1 christos op->index = (yyvsp[-4].indexreg); 1802 1.1 christos op->odisp = (yyvsp[-1].exp); 1803 1.1 christos } 1804 1.1 christos #line 1805 "config/m68k-parse.c" 1805 1.1 christos break; 1806 1.1 christos 1807 1.1 christos case 46: /* mit_operand: optzapc '@' */ 1808 1.1 christos #line 423 "./config/m68k-parse.y" 1809 1.1 christos { 1810 1.1 christos /* We use optzapc to avoid a shift/reduce conflict. */ 1811 1.1 christos if ((yyvsp[-1].reg) < ADDR0 || (yyvsp[-1].reg) > ADDR7) 1812 1.1 christos yyerror (_("syntax error")); 1813 1.1 christos op->mode = AINDR; 1814 1.1 christos op->reg = (yyvsp[-1].reg); 1815 1.1 christos } 1816 1.1 christos #line 1817 "config/m68k-parse.c" 1817 1.1 christos break; 1818 1.1 christos 1819 1.1 christos case 47: /* mit_operand: optzapc '@' '+' */ 1820 1.1 christos #line 431 "./config/m68k-parse.y" 1821 1.1 christos { 1822 1.1 christos /* We use optzapc to avoid a shift/reduce conflict. */ 1823 1.1 christos if ((yyvsp[-2].reg) < ADDR0 || (yyvsp[-2].reg) > ADDR7) 1824 1.1 christos yyerror (_("syntax error")); 1825 1.1 christos op->mode = AINC; 1826 1.1 christos op->reg = (yyvsp[-2].reg); 1827 1.1 christos } 1828 1.1 christos #line 1829 "config/m68k-parse.c" 1829 1.1 christos break; 1830 1.1 christos 1831 1.1 christos case 48: /* mit_operand: optzapc '@' '-' */ 1832 1.1 christos #line 439 "./config/m68k-parse.y" 1833 1.1 christos { 1834 1.1 christos /* We use optzapc to avoid a shift/reduce conflict. */ 1835 1.1 christos if ((yyvsp[-2].reg) < ADDR0 || (yyvsp[-2].reg) > ADDR7) 1836 1.1 christos yyerror (_("syntax error")); 1837 1.1 christos op->mode = ADEC; 1838 1.1 christos op->reg = (yyvsp[-2].reg); 1839 1.1 christos } 1840 1.1 christos #line 1841 "config/m68k-parse.c" 1841 1.1 christos break; 1842 1.1 christos 1843 1.1 christos case 49: /* mit_operand: optzapc '@' '(' EXPR ')' */ 1844 1.1 christos #line 447 "./config/m68k-parse.y" 1845 1.1 christos { 1846 1.1 christos op->reg = (yyvsp[-4].reg); 1847 1.1 christos op->disp = (yyvsp[-1].exp); 1848 1.1 christos if (((yyvsp[-4].reg) >= ZADDR0 && (yyvsp[-4].reg) <= ZADDR7) 1849 1.1 christos || (yyvsp[-4].reg) == ZPC) 1850 1.1 christos op->mode = BASE; 1851 1.1 christos else 1852 1.1 christos op->mode = DISP; 1853 1.1 christos } 1854 1.1 christos #line 1855 "config/m68k-parse.c" 1855 1.1 christos break; 1856 1.1 christos 1857 1.1 christos case 50: /* mit_operand: optzapc '@' '(' optexprc zireg ')' */ 1858 1.1 christos #line 457 "./config/m68k-parse.y" 1859 1.1 christos { 1860 1.1 christos op->mode = BASE; 1861 1.1 christos op->reg = (yyvsp[-5].reg); 1862 1.1 christos op->disp = (yyvsp[-2].exp); 1863 1.1 christos op->index = (yyvsp[-1].indexreg); 1864 1.1 christos } 1865 1.1 christos #line 1866 "config/m68k-parse.c" 1866 1.1 christos break; 1867 1.1 christos 1868 1.1 christos case 51: /* mit_operand: optzapc '@' '(' EXPR ')' '@' '(' optexprc zireg ')' */ 1869 1.1 christos #line 464 "./config/m68k-parse.y" 1870 1.1 christos { 1871 1.1 christos op->mode = POST; 1872 1.1 christos op->reg = (yyvsp[-9].reg); 1873 1.1 christos op->disp = (yyvsp[-6].exp); 1874 1.1 christos op->index = (yyvsp[-1].indexreg); 1875 1.1 christos op->odisp = (yyvsp[-2].exp); 1876 1.1 christos } 1877 1.1 christos #line 1878 "config/m68k-parse.c" 1878 1.1 christos break; 1879 1.1 christos 1880 1.1 christos case 52: /* mit_operand: optzapc '@' '(' EXPR ')' '@' '(' EXPR ')' */ 1881 1.1 christos #line 472 "./config/m68k-parse.y" 1882 1.1 christos { 1883 1.1 christos op->mode = POST; 1884 1.1 christos op->reg = (yyvsp[-8].reg); 1885 1.1 christos op->disp = (yyvsp[-5].exp); 1886 1.1 christos op->odisp = (yyvsp[-1].exp); 1887 1.1 christos } 1888 1.1 christos #line 1889 "config/m68k-parse.c" 1889 1.1 christos break; 1890 1.1 christos 1891 1.1 christos case 53: /* mit_operand: optzapc '@' '(' optexprc zireg ')' '@' '(' EXPR ')' */ 1892 1.1 christos #line 479 "./config/m68k-parse.y" 1893 1.1 christos { 1894 1.1 christos op->mode = PRE; 1895 1.1 christos op->reg = (yyvsp[-9].reg); 1896 1.1 christos op->disp = (yyvsp[-6].exp); 1897 1.1 christos op->index = (yyvsp[-5].indexreg); 1898 1.1 christos op->odisp = (yyvsp[-1].exp); 1899 1.1 christos } 1900 1.1 christos #line 1901 "config/m68k-parse.c" 1901 1.1 christos break; 1902 1.1 christos 1903 1.1 christos case 55: /* zireg: zadr */ 1904 1.1 christos #line 494 "./config/m68k-parse.y" 1905 1.1 christos { 1906 1.1 christos (yyval.indexreg).reg = (yyvsp[0].reg); 1907 1.1 christos (yyval.indexreg).size = SIZE_UNSPEC; 1908 1.1 christos (yyval.indexreg).scale = 1; 1909 1.1 christos } 1910 1.1 christos #line 1911 "config/m68k-parse.c" 1911 1.1 christos break; 1912 1.1 christos 1913 1.1 christos case 57: /* zdireg: zdr */ 1914 1.1 christos #line 508 "./config/m68k-parse.y" 1915 1.1 christos { 1916 1.1 christos (yyval.indexreg).reg = (yyvsp[0].reg); 1917 1.1 christos (yyval.indexreg).size = SIZE_UNSPEC; 1918 1.1 christos (yyval.indexreg).scale = 1; 1919 1.1 christos } 1920 1.1 christos #line 1921 "config/m68k-parse.c" 1921 1.1 christos break; 1922 1.1 christos 1923 1.1 christos case 68: /* optzapc: %empty */ 1924 1.1 christos #line 551 "./config/m68k-parse.y" 1925 1.1 christos { 1926 1.1 christos (yyval.reg) = ZADDR0; 1927 1.1 christos } 1928 1.1 christos #line 1929 "config/m68k-parse.c" 1929 1.1 christos break; 1930 1.1 christos 1931 1.1 christos case 72: /* optczapc: %empty */ 1932 1.1 christos #line 568 "./config/m68k-parse.y" 1933 1.1 christos { 1934 1.1 christos (yyval.reg) = ZADDR0; 1935 1.1 christos } 1936 1.1 christos #line 1937 "config/m68k-parse.c" 1937 1.1 christos break; 1938 1.1 christos 1939 1.1 christos case 73: /* optczapc: ',' zapc */ 1940 1.1 christos #line 572 "./config/m68k-parse.y" 1941 1.1 christos { 1942 1.1 christos (yyval.reg) = (yyvsp[0].reg); 1943 1.1 christos } 1944 1.1 christos #line 1945 "config/m68k-parse.c" 1945 1.1 christos break; 1946 1.1 christos 1947 1.1 christos case 74: /* optcexpr: %empty */ 1948 1.1 christos #line 581 "./config/m68k-parse.y" 1949 1.1 christos { 1950 1.1 christos (yyval.exp).exp.X_op = O_absent; 1951 1.1 christos (yyval.exp).size = SIZE_UNSPEC; 1952 1.1 christos } 1953 1.1 christos #line 1954 "config/m68k-parse.c" 1954 1.1 christos break; 1955 1.1 christos 1956 1.1 christos case 75: /* optcexpr: ',' EXPR */ 1957 1.1 christos #line 586 "./config/m68k-parse.y" 1958 1.1 christos { 1959 1.1 christos (yyval.exp) = (yyvsp[0].exp); 1960 1.1 christos } 1961 1.1 christos #line 1962 "config/m68k-parse.c" 1962 1.1 christos break; 1963 1.1 christos 1964 1.1 christos case 76: /* optexprc: %empty */ 1965 1.1 christos #line 595 "./config/m68k-parse.y" 1966 1.1 christos { 1967 1.1 christos (yyval.exp).exp.X_op = O_absent; 1968 1.1 christos (yyval.exp).size = SIZE_UNSPEC; 1969 1.1 christos } 1970 1.1 christos #line 1971 "config/m68k-parse.c" 1971 1.1 christos break; 1972 1.1 christos 1973 1.1 christos case 77: /* optexprc: EXPR ',' */ 1974 1.1 christos #line 600 "./config/m68k-parse.y" 1975 1.1 christos { 1976 1.1 christos (yyval.exp) = (yyvsp[-1].exp); 1977 1.1 christos } 1978 1.1 christos #line 1979 "config/m68k-parse.c" 1979 1.1 christos break; 1980 1.1 christos 1981 1.1 christos case 79: /* reglist: reglistpair '/' ireglist */ 1982 1.1 christos #line 610 "./config/m68k-parse.y" 1983 1.1 christos { 1984 1.1 christos (yyval.mask) = (yyvsp[-2].mask) | (yyvsp[0].mask); 1985 1.1 christos } 1986 1.1 christos #line 1987 "config/m68k-parse.c" 1987 1.1 christos break; 1988 1.1 christos 1989 1.1 christos case 80: /* reglist: reglistreg '/' ireglist */ 1990 1.1 christos #line 614 "./config/m68k-parse.y" 1991 1.1 christos { 1992 1.1 christos (yyval.mask) = (1 << (yyvsp[-2].onereg)) | (yyvsp[0].mask); 1993 1.1 christos } 1994 1.1 christos #line 1995 "config/m68k-parse.c" 1995 1.1 christos break; 1996 1.1 christos 1997 1.1 christos case 81: /* ireglist: reglistreg */ 1998 1.1 christos #line 626 "./config/m68k-parse.y" 1999 1.1 christos { 2000 1.1 christos (yyval.mask) = 1 << (yyvsp[0].onereg); 2001 1.1 christos } 2002 1.1 christos #line 2003 "config/m68k-parse.c" 2003 1.1 christos break; 2004 1.1 christos 2005 1.1 christos case 83: /* ireglist: reglistpair '/' ireglist */ 2006 1.1 christos #line 631 "./config/m68k-parse.y" 2007 1.1 christos { 2008 1.1 christos (yyval.mask) = (yyvsp[-2].mask) | (yyvsp[0].mask); 2009 1.1 christos } 2010 1.1 christos #line 2011 "config/m68k-parse.c" 2011 1.1 christos break; 2012 1.1 christos 2013 1.1 christos case 84: /* ireglist: reglistreg '/' ireglist */ 2014 1.1 christos #line 635 "./config/m68k-parse.y" 2015 1.1 christos { 2016 1.1 christos (yyval.mask) = (1 << (yyvsp[-2].onereg)) | (yyvsp[0].mask); 2017 1.1 christos } 2018 1.1 christos #line 2019 "config/m68k-parse.c" 2019 1.1 christos break; 2020 1.1 christos 2021 1.1 christos case 85: /* reglistpair: reglistreg '-' reglistreg */ 2022 1.1 christos #line 642 "./config/m68k-parse.y" 2023 1.1 christos { 2024 1.1 christos if ((yyvsp[-2].onereg) <= (yyvsp[0].onereg)) 2025 1.1 christos (yyval.mask) = (1 << ((yyvsp[0].onereg) + 1)) - 1 - ((1 << (yyvsp[-2].onereg)) - 1); 2026 1.1 christos else 2027 1.1 christos (yyval.mask) = (1 << ((yyvsp[-2].onereg) + 1)) - 1 - ((1 << (yyvsp[0].onereg)) - 1); 2028 1.1 christos } 2029 1.1 christos #line 2030 "config/m68k-parse.c" 2030 1.1 christos break; 2031 1.1 christos 2032 1.1 christos case 86: /* reglistreg: DR */ 2033 1.1 christos #line 652 "./config/m68k-parse.y" 2034 1.1 christos { 2035 1.1 christos (yyval.onereg) = (yyvsp[0].reg) - DATA0; 2036 1.1 christos } 2037 1.1 christos #line 2038 "config/m68k-parse.c" 2038 1.1 christos break; 2039 1.1 christos 2040 1.1 christos case 87: /* reglistreg: AR */ 2041 1.1 christos #line 656 "./config/m68k-parse.y" 2042 1.1 christos { 2043 1.1 christos (yyval.onereg) = (yyvsp[0].reg) - ADDR0 + 8; 2044 1.1 christos } 2045 1.1 christos #line 2046 "config/m68k-parse.c" 2046 1.1 christos break; 2047 1.1 christos 2048 1.1 christos case 88: /* reglistreg: FPR */ 2049 1.1 christos #line 660 "./config/m68k-parse.y" 2050 1.1 christos { 2051 1.1 christos (yyval.onereg) = (yyvsp[0].reg) - FP0 + 16; 2052 1.1 christos } 2053 1.1 christos #line 2054 "config/m68k-parse.c" 2054 1.1 christos break; 2055 1.1 christos 2056 1.1 christos case 89: /* reglistreg: FPCR */ 2057 1.1 christos #line 664 "./config/m68k-parse.y" 2058 1.1 christos { 2059 1.1 christos if ((yyvsp[0].reg) == FPI) 2060 1.1 christos (yyval.onereg) = 24; 2061 1.1 christos else if ((yyvsp[0].reg) == FPS) 2062 1.1 christos (yyval.onereg) = 25; 2063 1.1 christos else 2064 1.1 christos (yyval.onereg) = 26; 2065 1.1 christos } 2066 1.1 christos #line 2067 "config/m68k-parse.c" 2067 1.1 christos break; 2068 1.1 christos 2069 1.1 christos 2070 1.1 christos #line 2071 "config/m68k-parse.c" 2071 1.1 christos 2072 1.1 christos default: break; 2073 1.1 christos } 2074 1.1 christos /* User semantic actions sometimes alter yychar, and that requires 2075 1.1 christos that yytoken be updated with the new translation. We take the 2076 1.1 christos approach of translating immediately before every use of yytoken. 2077 1.1 christos One alternative is translating here after every semantic action, 2078 1.1 christos but that translation would be missed if the semantic action invokes 2079 1.1 christos YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or 2080 1.1 christos if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an 2081 1.1 christos incorrect destructor might then be invoked immediately. In the 2082 1.1 christos case of YYERROR or YYBACKUP, subsequent parser actions might lead 2083 1.1 christos to an incorrect destructor call or verbose syntax error message 2084 1.1 christos before the lookahead is translated. */ 2085 1.1 christos YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc); 2086 1.1 christos 2087 1.1 christos YYPOPSTACK (yylen); 2088 1.1 christos yylen = 0; 2089 1.1 christos 2090 1.1 christos *++yyvsp = yyval; 2091 1.1 christos 2092 1.1 christos /* Now 'shift' the result of the reduction. Determine what state 2093 1.1 christos that goes to, based on the state we popped back to and the rule 2094 1.1 christos number reduced by. */ 2095 1.1 christos { 2096 1.1 christos const int yylhs = yyr1[yyn] - YYNTOKENS; 2097 1.1 christos const int yyi = yypgoto[yylhs] + *yyssp; 2098 1.1 christos yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp 2099 1.1 christos ? yytable[yyi] 2100 1.1 christos : yydefgoto[yylhs]); 2101 1.1 christos } 2102 1.1 christos 2103 1.1 christos goto yynewstate; 2104 1.1 christos 2105 1.1 christos 2106 1.1 christos /*--------------------------------------. 2107 1.1 christos | yyerrlab -- here on detecting error. | 2108 1.1 christos `--------------------------------------*/ 2109 1.1 christos yyerrlab: 2110 1.1 christos /* Make sure we have latest lookahead translation. See comments at 2111 1.1 christos user semantic actions for why this is necessary. */ 2112 1.1 christos yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar); 2113 1.1 christos /* If not already recovering from an error, report this error. */ 2114 1.1 christos if (!yyerrstatus) 2115 1.1 christos { 2116 1.1 christos ++yynerrs; 2117 1.1 christos yyerror (YY_("syntax error")); 2118 1.1 christos } 2119 1.1 christos 2120 1.1 christos if (yyerrstatus == 3) 2121 1.1 christos { 2122 1.1 christos /* If just tried and failed to reuse lookahead token after an 2123 1.1 christos error, discard it. */ 2124 1.1 christos 2125 1.1 christos if (yychar <= YYEOF) 2126 1.1 christos { 2127 1.1 christos /* Return failure if at end of input. */ 2128 1.1 christos if (yychar == YYEOF) 2129 1.1 christos YYABORT; 2130 1.1 christos } 2131 1.1 christos else 2132 1.1 christos { 2133 1.1 christos yydestruct ("Error: discarding", 2134 1.1 christos yytoken, &yylval); 2135 1.1 christos yychar = YYEMPTY; 2136 1.1 christos } 2137 1.1 christos } 2138 1.1 christos 2139 1.1 christos /* Else will try to reuse lookahead token after shifting the error 2140 1.1 christos token. */ 2141 1.1 christos goto yyerrlab1; 2142 1.1 christos 2143 1.1 christos 2144 1.1 christos /*---------------------------------------------------. 2145 1.1 christos | yyerrorlab -- error raised explicitly by YYERROR. | 2146 1.1 christos `---------------------------------------------------*/ 2147 1.1 christos yyerrorlab: 2148 1.1 christos /* Pacify compilers when the user code never invokes YYERROR and the 2149 1.1 christos label yyerrorlab therefore never appears in user code. */ 2150 1.1 christos if (0) 2151 1.1 christos YYERROR; 2152 1.1 christos ++yynerrs; 2153 1.1 christos 2154 1.1 christos /* Do not reclaim the symbols of the rule whose action triggered 2155 1.1 christos this YYERROR. */ 2156 1.1 christos YYPOPSTACK (yylen); 2157 1.1 christos yylen = 0; 2158 1.1 christos YY_STACK_PRINT (yyss, yyssp); 2159 1.1 christos yystate = *yyssp; 2160 1.1 christos goto yyerrlab1; 2161 1.1 christos 2162 1.1 christos 2163 1.1 christos /*-------------------------------------------------------------. 2164 1.1 christos | yyerrlab1 -- common code for both syntax error and YYERROR. | 2165 1.1 christos `-------------------------------------------------------------*/ 2166 1.1 christos yyerrlab1: 2167 1.1 christos yyerrstatus = 3; /* Each real token shifted decrements this. */ 2168 1.1 christos 2169 1.1 christos /* Pop stack until we find a state that shifts the error token. */ 2170 1.1 christos for (;;) 2171 1.1 christos { 2172 1.1 christos yyn = yypact[yystate]; 2173 1.1 christos if (!yypact_value_is_default (yyn)) 2174 1.1 christos { 2175 1.1 christos yyn += YYSYMBOL_YYerror; 2176 1.1 christos if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror) 2177 1.1 christos { 2178 1.1 christos yyn = yytable[yyn]; 2179 1.1 christos if (0 < yyn) 2180 1.1 christos break; 2181 1.1 christos } 2182 1.1 christos } 2183 1.1 christos 2184 1.1 christos /* Pop the current state because it cannot handle the error token. */ 2185 1.1 christos if (yyssp == yyss) 2186 1.1 christos YYABORT; 2187 1.1 christos 2188 1.1 christos 2189 1.1 christos yydestruct ("Error: popping", 2190 1.1 christos YY_ACCESSING_SYMBOL (yystate), yyvsp); 2191 1.1 christos YYPOPSTACK (1); 2192 1.1 christos yystate = *yyssp; 2193 1.1 christos YY_STACK_PRINT (yyss, yyssp); 2194 1.1 christos } 2195 1.1 christos 2196 1.1 christos YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN 2197 1.1 christos *++yyvsp = yylval; 2198 1.1 christos YY_IGNORE_MAYBE_UNINITIALIZED_END 2199 1.1 christos 2200 1.1 christos 2201 1.1 christos /* Shift the error token. */ 2202 1.1 christos YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp); 2203 1.1 christos 2204 1.1 christos yystate = yyn; 2205 1.1 christos goto yynewstate; 2206 1.1 christos 2207 1.1 christos 2208 1.1 christos /*-------------------------------------. 2209 1.1 christos | yyacceptlab -- YYACCEPT comes here. | 2210 1.1 christos `-------------------------------------*/ 2211 1.1 christos yyacceptlab: 2212 1.1 christos yyresult = 0; 2213 1.1 christos goto yyreturnlab; 2214 1.1 christos 2215 1.1 christos 2216 1.1 christos /*-----------------------------------. 2217 1.1 christos | yyabortlab -- YYABORT comes here. | 2218 1.1 christos `-----------------------------------*/ 2219 1.1 christos yyabortlab: 2220 1.1 christos yyresult = 1; 2221 1.1 christos goto yyreturnlab; 2222 1.1 christos 2223 1.1 christos 2224 1.1 christos /*-----------------------------------------------------------. 2225 1.1 christos | yyexhaustedlab -- YYNOMEM (memory exhaustion) comes here. | 2226 1.1 christos `-----------------------------------------------------------*/ 2227 1.1 christos yyexhaustedlab: 2228 1.1 christos yyerror (YY_("memory exhausted")); 2229 1.1 christos yyresult = 2; 2230 1.1 christos goto yyreturnlab; 2231 1.1 christos 2232 1.1 christos 2233 1.1 christos /*----------------------------------------------------------. 2234 1.1 christos | yyreturnlab -- parsing is finished, clean up and return. | 2235 1.1 christos `----------------------------------------------------------*/ 2236 1.1 christos yyreturnlab: 2237 1.1 christos if (yychar != YYEMPTY) 2238 1.1 christos { 2239 1.1 christos /* Make sure we have latest lookahead translation. See comments at 2240 1.1 christos user semantic actions for why this is necessary. */ 2241 1.1 christos yytoken = YYTRANSLATE (yychar); 2242 1.1 christos yydestruct ("Cleanup: discarding lookahead", 2243 1.1 christos yytoken, &yylval); 2244 1.1 christos } 2245 1.1 christos /* Do not reclaim the symbols of the rule whose action triggered 2246 1.1 christos this YYABORT or YYACCEPT. */ 2247 1.1 christos YYPOPSTACK (yylen); 2248 1.1 christos YY_STACK_PRINT (yyss, yyssp); 2249 1.1 christos while (yyssp != yyss) 2250 1.1 christos { 2251 1.1 christos yydestruct ("Cleanup: popping", 2252 1.1 christos YY_ACCESSING_SYMBOL (+*yyssp), yyvsp); 2253 1.1 christos YYPOPSTACK (1); 2254 1.1 christos } 2255 1.1 christos #ifndef yyoverflow 2256 1.1 christos if (yyss != yyssa) 2257 1.1 christos YYSTACK_FREE (yyss); 2258 1.1 christos #endif 2259 1.1 christos 2260 1.1 christos return yyresult; 2261 1.1 christos } 2262 1.1 christos 2263 1.1 christos #line 674 "./config/m68k-parse.y" 2264 1.1 christos 2265 1.1 christos 2266 1.1 christos /* The string to parse is stored here, and modified by yylex. */ 2267 1.1 christos 2268 1.1 christos static char *str; 2269 1.1 christos 2270 1.1 christos /* The original string pointer. */ 2271 1.1 christos 2272 1.1 christos static char *strorig; 2273 1.1 christos 2274 1.1 christos /* If *CCP could be a register, return the register number and advance 2275 1.1 christos *CCP. Otherwise don't change *CCP, and return 0. */ 2276 1.1 christos 2277 1.1 christos static enum m68k_register 2278 1.1 christos m68k_reg_parse (char **ccp) 2279 1.1 christos { 2280 1.1 christos char *start = *ccp; 2281 1.1 christos char c; 2282 1.1 christos char *p; 2283 1.1 christos symbolS *symbolp; 2284 1.1 christos 2285 1.1 christos if (flag_reg_prefix_optional) 2286 1.1 christos { 2287 1.1 christos if (*start == REGISTER_PREFIX) 2288 1.1 christos start++; 2289 1.1 christos p = start; 2290 1.1 christos } 2291 1.1 christos else 2292 1.1 christos { 2293 1.1 christos if (*start != REGISTER_PREFIX) 2294 1.1 christos return 0; 2295 1.1 christos p = start + 1; 2296 1.1 christos } 2297 1.1 christos 2298 1.1 christos if (! is_name_beginner (*p)) 2299 1.1 christos return 0; 2300 1.1 christos 2301 1.1 christos p++; 2302 1.1 christos while (is_part_of_name (*p) && *p != '.' && *p != ':' && *p != '*') 2303 1.1 christos p++; 2304 1.1 christos 2305 1.1 christos c = *p; 2306 1.1 christos *p = 0; 2307 1.1 christos symbolp = symbol_find (start); 2308 1.1 christos *p = c; 2309 1.1 christos 2310 1.1 christos if (symbolp != NULL && S_GET_SEGMENT (symbolp) == reg_section) 2311 1.1 christos { 2312 1.1 christos *ccp = p; 2313 1.1 christos return S_GET_VALUE (symbolp); 2314 1.1 christos } 2315 1.1 christos 2316 1.1 christos /* In MRI mode, something like foo.bar can be equated to a register 2317 1.1 christos name. */ 2318 1.1 christos while (flag_mri && c == '.') 2319 1.1 christos { 2320 1.1 christos ++p; 2321 1.1 christos while (is_part_of_name (*p) && *p != '.' && *p != ':' && *p != '*') 2322 1.1 christos p++; 2323 1.1 christos c = *p; 2324 1.1 christos *p = '\0'; 2325 1.1 christos symbolp = symbol_find (start); 2326 1.1 christos *p = c; 2327 1.1 christos if (symbolp != NULL && S_GET_SEGMENT (symbolp) == reg_section) 2328 1.1 christos { 2329 1.1 christos *ccp = p; 2330 1.1 christos return S_GET_VALUE (symbolp); 2331 1.1 christos } 2332 1.1 christos } 2333 1.1 christos 2334 1.1 christos return 0; 2335 1.1 christos } 2336 1.1 christos 2337 1.1 christos /* The lexer. */ 2338 1.1 christos 2339 1.1 christos static int 2340 1.1 christos yylex (void) 2341 1.1 christos { 2342 1.1 christos enum m68k_register reg; 2343 1.1 christos char *s; 2344 1.1 christos int parens; 2345 1.1 christos int c = 0; 2346 1.1 christos int tail = 0; 2347 1.1 christos 2348 1.1.1.2 christos if (is_whitespace (*str)) 2349 1.1 christos ++str; 2350 1.1 christos 2351 1.1 christos if (*str == '\0') 2352 1.1 christos return 0; 2353 1.1 christos 2354 1.1 christos /* Various special characters are just returned directly. */ 2355 1.1 christos switch (*str) 2356 1.1 christos { 2357 1.1 christos case '@': 2358 1.1 christos /* In MRI mode, this can be the start of an octal number. */ 2359 1.1 christos if (flag_mri) 2360 1.1 christos { 2361 1.1 christos if (ISDIGIT (str[1]) 2362 1.1 christos || ((str[1] == '+' || str[1] == '-') 2363 1.1 christos && ISDIGIT (str[2]))) 2364 1.1 christos break; 2365 1.1 christos } 2366 1.1 christos /* Fall through. */ 2367 1.1 christos case '#': 2368 1.1 christos case '&': 2369 1.1 christos case ',': 2370 1.1 christos case ')': 2371 1.1 christos case '/': 2372 1.1 christos case '[': 2373 1.1 christos case ']': 2374 1.1 christos case '<': 2375 1.1 christos case '>': 2376 1.1 christos return *str++; 2377 1.1 christos case '+': 2378 1.1 christos /* It so happens that a '+' can only appear at the end of an 2379 1.1 christos operand, or if it is trailed by an '&'(see mac load insn). 2380 1.1 christos If it appears anywhere else, it must be a unary. */ 2381 1.1 christos if (str[1] == '\0' || (str[1] == '&' && str[2] == '\0')) 2382 1.1 christos return *str++; 2383 1.1 christos break; 2384 1.1 christos case '-': 2385 1.1 christos /* A '-' can only appear in -(ar), rn-rn, or ar@-. If it 2386 1.1 christos appears anywhere else, it must be a unary minus on an 2387 1.1 christos expression, unless it it trailed by a '&'(see mac load insn). */ 2388 1.1 christos if (str[1] == '\0' || (str[1] == '&' && str[2] == '\0')) 2389 1.1 christos return *str++; 2390 1.1 christos s = str + 1; 2391 1.1 christos if (*s == '(') 2392 1.1 christos ++s; 2393 1.1 christos if (m68k_reg_parse (&s) != 0) 2394 1.1 christos return *str++; 2395 1.1 christos break; 2396 1.1 christos case '(': 2397 1.1 christos /* A '(' can only appear in `(reg)', `(expr,...', `([', `@(', or 2398 1.1 christos `)('. If it appears anywhere else, it must be starting an 2399 1.1 christos expression. */ 2400 1.1 christos if (str[1] == '[' 2401 1.1 christos || (str > strorig 2402 1.1 christos && (str[-1] == '@' 2403 1.1 christos || str[-1] == ')'))) 2404 1.1 christos return *str++; 2405 1.1 christos s = str + 1; 2406 1.1 christos if (m68k_reg_parse (&s) != 0) 2407 1.1 christos return *str++; 2408 1.1 christos /* Check for the case of '(expr,...' by scanning ahead. If we 2409 1.1 christos find a comma outside of balanced parentheses, we return '('. 2410 1.1 christos If we find an unbalanced right parenthesis, then presumably 2411 1.1 christos the '(' really starts an expression. */ 2412 1.1 christos parens = 0; 2413 1.1 christos for (s = str + 1; *s != '\0'; s++) 2414 1.1 christos { 2415 1.1 christos if (*s == '(') 2416 1.1 christos ++parens; 2417 1.1 christos else if (*s == ')') 2418 1.1 christos { 2419 1.1 christos if (parens == 0) 2420 1.1 christos break; 2421 1.1 christos --parens; 2422 1.1 christos } 2423 1.1 christos else if (*s == ',' && parens == 0) 2424 1.1 christos { 2425 1.1 christos /* A comma can not normally appear in an expression, so 2426 1.1 christos this is a case of '(expr,...'. */ 2427 1.1 christos return *str++; 2428 1.1 christos } 2429 1.1 christos } 2430 1.1 christos } 2431 1.1 christos 2432 1.1 christos /* See if it's a register. */ 2433 1.1 christos 2434 1.1 christos reg = m68k_reg_parse (&str); 2435 1.1 christos if (reg != 0) 2436 1.1 christos { 2437 1.1 christos int ret; 2438 1.1 christos 2439 1.1 christos yylval.reg = reg; 2440 1.1 christos 2441 1.1 christos if (reg >= DATA0 && reg <= DATA7) 2442 1.1 christos ret = DR; 2443 1.1 christos else if (reg >= ADDR0 && reg <= ADDR7) 2444 1.1 christos ret = AR; 2445 1.1 christos else if (reg >= FP0 && reg <= FP7) 2446 1.1 christos return FPR; 2447 1.1 christos else if (reg == FPI 2448 1.1 christos || reg == FPS 2449 1.1 christos || reg == FPC) 2450 1.1 christos return FPCR; 2451 1.1 christos else if (reg == PC) 2452 1.1 christos return LPC; 2453 1.1 christos else if (reg >= ZDATA0 && reg <= ZDATA7) 2454 1.1 christos ret = ZDR; 2455 1.1 christos else if (reg >= ZADDR0 && reg <= ZADDR7) 2456 1.1 christos ret = ZAR; 2457 1.1 christos else if (reg == ZPC) 2458 1.1 christos return LZPC; 2459 1.1 christos else 2460 1.1 christos return CREG; 2461 1.1 christos 2462 1.1 christos /* If we get here, we have a data or address register. We 2463 1.1 christos must check for a size or scale; if we find one, we must 2464 1.1 christos return INDEXREG. */ 2465 1.1 christos 2466 1.1 christos s = str; 2467 1.1 christos 2468 1.1 christos if (*s != '.' && *s != ':' && *s != '*') 2469 1.1 christos return ret; 2470 1.1 christos 2471 1.1 christos yylval.indexreg.reg = reg; 2472 1.1 christos 2473 1.1 christos if (*s != '.' && *s != ':') 2474 1.1 christos yylval.indexreg.size = SIZE_UNSPEC; 2475 1.1 christos else 2476 1.1 christos { 2477 1.1 christos ++s; 2478 1.1 christos switch (*s) 2479 1.1 christos { 2480 1.1 christos case 'w': 2481 1.1 christos case 'W': 2482 1.1 christos yylval.indexreg.size = SIZE_WORD; 2483 1.1 christos ++s; 2484 1.1 christos break; 2485 1.1 christos case 'l': 2486 1.1 christos case 'L': 2487 1.1 christos yylval.indexreg.size = SIZE_LONG; 2488 1.1 christos ++s; 2489 1.1 christos break; 2490 1.1 christos default: 2491 1.1 christos yyerror (_("illegal size specification")); 2492 1.1 christos yylval.indexreg.size = SIZE_UNSPEC; 2493 1.1 christos break; 2494 1.1 christos } 2495 1.1 christos } 2496 1.1 christos 2497 1.1 christos yylval.indexreg.scale = 1; 2498 1.1 christos 2499 1.1 christos if (*s == '*' || *s == ':') 2500 1.1 christos { 2501 1.1 christos expressionS scale; 2502 1.1 christos 2503 1.1 christos ++s; 2504 1.1 christos 2505 1.1 christos temp_ilp (s); 2506 1.1 christos expression (&scale); 2507 1.1 christos s = input_line_pointer; 2508 1.1 christos restore_ilp (); 2509 1.1 christos 2510 1.1 christos if (scale.X_op != O_constant) 2511 1.1 christos yyerror (_("scale specification must resolve to a number")); 2512 1.1 christos else 2513 1.1 christos { 2514 1.1 christos switch (scale.X_add_number) 2515 1.1 christos { 2516 1.1 christos case 1: 2517 1.1 christos case 2: 2518 1.1 christos case 4: 2519 1.1 christos case 8: 2520 1.1 christos yylval.indexreg.scale = scale.X_add_number; 2521 1.1 christos break; 2522 1.1 christos default: 2523 1.1 christos yyerror (_("invalid scale value")); 2524 1.1 christos break; 2525 1.1 christos } 2526 1.1 christos } 2527 1.1 christos } 2528 1.1 christos 2529 1.1 christos str = s; 2530 1.1 christos 2531 1.1 christos return INDEXREG; 2532 1.1 christos } 2533 1.1 christos 2534 1.1 christos /* It must be an expression. Before we call expression, we need to 2535 1.1 christos look ahead to see if there is a size specification. We must do 2536 1.1 christos that first, because otherwise foo.l will be treated as the symbol 2537 1.1 christos foo.l, rather than as the symbol foo with a long size 2538 1.1 christos specification. The grammar requires that all expressions end at 2539 1.1 christos the end of the operand, or with ',', '(', ']', ')'. */ 2540 1.1 christos 2541 1.1 christos parens = 0; 2542 1.1 christos for (s = str; *s != '\0'; s++) 2543 1.1 christos { 2544 1.1 christos if (*s == '(') 2545 1.1 christos { 2546 1.1 christos if (parens == 0 2547 1.1 christos && s > str 2548 1.1 christos && (s[-1] == ')' || ISALNUM (s[-1]))) 2549 1.1 christos break; 2550 1.1 christos ++parens; 2551 1.1 christos } 2552 1.1 christos else if (*s == ')') 2553 1.1 christos { 2554 1.1 christos if (parens == 0) 2555 1.1 christos break; 2556 1.1 christos --parens; 2557 1.1 christos } 2558 1.1 christos else if (parens == 0 2559 1.1 christos && (*s == ',' || *s == ']')) 2560 1.1 christos break; 2561 1.1 christos } 2562 1.1 christos 2563 1.1 christos yylval.exp.size = SIZE_UNSPEC; 2564 1.1 christos if (s <= str + 2 2565 1.1 christos || (s[-2] != '.' && s[-2] != ':')) 2566 1.1 christos tail = 0; 2567 1.1 christos else 2568 1.1 christos { 2569 1.1 christos switch (s[-1]) 2570 1.1 christos { 2571 1.1 christos case 's': 2572 1.1 christos case 'S': 2573 1.1 christos case 'b': 2574 1.1 christos case 'B': 2575 1.1 christos yylval.exp.size = SIZE_BYTE; 2576 1.1 christos break; 2577 1.1 christos case 'w': 2578 1.1 christos case 'W': 2579 1.1 christos yylval.exp.size = SIZE_WORD; 2580 1.1 christos break; 2581 1.1 christos case 'l': 2582 1.1 christos case 'L': 2583 1.1 christos yylval.exp.size = SIZE_LONG; 2584 1.1 christos break; 2585 1.1 christos default: 2586 1.1 christos break; 2587 1.1 christos } 2588 1.1 christos if (yylval.exp.size != SIZE_UNSPEC) 2589 1.1 christos tail = 2; 2590 1.1 christos } 2591 1.1 christos 2592 1.1 christos #ifdef OBJ_ELF 2593 1.1 christos { 2594 1.1 christos /* Look for @PLTPC, etc. */ 2595 1.1 christos char *cp; 2596 1.1 christos 2597 1.1 christos yylval.exp.pic_reloc = pic_none; 2598 1.1 christos cp = s - tail; 2599 1.1 christos if (cp - 7 > str && cp[-7] == '@') 2600 1.1 christos { 2601 1.1 christos if (startswith (cp - 7, "@TLSLDM")) 2602 1.1 christos { 2603 1.1 christos yylval.exp.pic_reloc = pic_tls_ldm; 2604 1.1 christos tail += 7; 2605 1.1 christos } 2606 1.1 christos else if (startswith (cp - 7, "@TLSLDO")) 2607 1.1 christos { 2608 1.1 christos yylval.exp.pic_reloc = pic_tls_ldo; 2609 1.1 christos tail += 7; 2610 1.1 christos } 2611 1.1 christos } 2612 1.1 christos else if (cp - 6 > str && cp[-6] == '@') 2613 1.1 christos { 2614 1.1 christos if (startswith (cp - 6, "@PLTPC")) 2615 1.1 christos { 2616 1.1 christos yylval.exp.pic_reloc = pic_plt_pcrel; 2617 1.1 christos tail += 6; 2618 1.1 christos } 2619 1.1 christos else if (startswith (cp - 6, "@GOTPC")) 2620 1.1 christos { 2621 1.1 christos yylval.exp.pic_reloc = pic_got_pcrel; 2622 1.1 christos tail += 6; 2623 1.1 christos } 2624 1.1 christos else if (startswith (cp - 6, "@TLSGD")) 2625 1.1 christos { 2626 1.1 christos yylval.exp.pic_reloc = pic_tls_gd; 2627 1.1 christos tail += 6; 2628 1.1 christos } 2629 1.1 christos else if (startswith (cp - 6, "@TLSIE")) 2630 1.1 christos { 2631 1.1 christos yylval.exp.pic_reloc = pic_tls_ie; 2632 1.1 christos tail += 6; 2633 1.1 christos } 2634 1.1 christos else if (startswith (cp - 6, "@TLSLE")) 2635 1.1 christos { 2636 1.1 christos yylval.exp.pic_reloc = pic_tls_le; 2637 1.1 christos tail += 6; 2638 1.1 christos } 2639 1.1 christos } 2640 1.1 christos else if (cp - 4 > str && cp[-4] == '@') 2641 1.1 christos { 2642 1.1 christos if (startswith (cp - 4, "@PLT")) 2643 1.1 christos { 2644 1.1 christos yylval.exp.pic_reloc = pic_plt_off; 2645 1.1 christos tail += 4; 2646 1.1 christos } 2647 1.1 christos else if (startswith (cp - 4, "@GOT")) 2648 1.1 christos { 2649 1.1 christos yylval.exp.pic_reloc = pic_got_off; 2650 1.1 christos tail += 4; 2651 1.1 christos } 2652 1.1 christos } 2653 1.1 christos } 2654 1.1 christos #endif 2655 1.1 christos 2656 1.1 christos if (tail != 0) 2657 1.1 christos { 2658 1.1 christos c = s[-tail]; 2659 1.1 christos s[-tail] = 0; 2660 1.1 christos } 2661 1.1 christos 2662 1.1 christos temp_ilp (str); 2663 1.1 christos expression (&yylval.exp.exp); 2664 1.1 christos str = input_line_pointer; 2665 1.1 christos restore_ilp (); 2666 1.1 christos 2667 1.1 christos if (tail != 0) 2668 1.1 christos { 2669 1.1 christos s[-tail] = c; 2670 1.1 christos str = s; 2671 1.1 christos } 2672 1.1 christos 2673 1.1 christos return EXPR; 2674 1.1 christos } 2675 1.1 christos 2676 1.1 christos /* Parse an m68k operand. This is the only function which is called 2677 1.1 christos from outside this file. */ 2678 1.1 christos 2679 1.1 christos int 2680 1.1 christos m68k_ip_op (char *s, struct m68k_op *oparg) 2681 1.1 christos { 2682 1.1 christos memset (oparg, 0, sizeof *oparg); 2683 1.1 christos oparg->error = NULL; 2684 1.1 christos oparg->index.reg = ZDATA0; 2685 1.1 christos oparg->index.scale = 1; 2686 1.1 christos oparg->disp.exp.X_op = O_absent; 2687 1.1 christos oparg->odisp.exp.X_op = O_absent; 2688 1.1 christos 2689 1.1 christos str = strorig = s; 2690 1.1 christos op = oparg; 2691 1.1 christos 2692 1.1 christos return yyparse (); 2693 1.1 christos } 2694 1.1 christos 2695 1.1 christos /* The error handler. */ 2696 1.1 christos 2697 1.1 christos static void 2698 1.1 christos yyerror (const char *s) 2699 1.1 christos { 2700 1.1 christos op->error = s; 2701 1.1 christos } 2702