1 1.1.1.5 mrg /* A Bison parser, made by GNU Bison 3.6.4. */ 2 1.1 mrg 3 1.1.1.5 mrg /* Bison implementation for Yacc-like parsers in C 4 1.1.1.5 mrg 5 1.1.1.5 mrg Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, 6 1.1.1.5 mrg Inc. 7 1.1.1.5 mrg 8 1.1.1.5 mrg This program is free software: you can redistribute it and/or modify 9 1.1.1.5 mrg it under the terms of the GNU General Public License as published by 10 1.1.1.5 mrg the Free Software Foundation, either version 3 of the License, or 11 1.1.1.5 mrg (at your option) any later version. 12 1.1.1.5 mrg 13 1.1.1.5 mrg This program is distributed in the hope that it will be useful, 14 1.1.1.5 mrg but WITHOUT ANY WARRANTY; without even the implied warranty of 15 1.1.1.5 mrg MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 1.1.1.5 mrg GNU General Public License for more details. 17 1.1.1.5 mrg 18 1.1.1.5 mrg You should have received a copy of the GNU General Public License 19 1.1.1.5 mrg along with this program. If not, see <http://www.gnu.org/licenses/>. */ 20 1.1.1.5 mrg 21 1.1.1.5 mrg /* As a special exception, you may create a larger work that contains 22 1.1.1.5 mrg part or all of the Bison parser skeleton and distribute that work 23 1.1.1.5 mrg under terms of your choice, so long as that work isn't itself a 24 1.1.1.5 mrg parser generator using the skeleton or a modified version thereof 25 1.1.1.5 mrg as a parser skeleton. Alternatively, if you modify or redistribute 26 1.1.1.5 mrg the parser skeleton itself, you may (at your option) remove this 27 1.1.1.5 mrg special exception, which will cause the skeleton and the resulting 28 1.1.1.5 mrg Bison output files to be licensed under the GNU General Public 29 1.1.1.5 mrg License without this special exception. 30 1.1.1.5 mrg 31 1.1.1.5 mrg This special exception was added by the Free Software Foundation in 32 1.1.1.5 mrg version 2.2 of Bison. */ 33 1.1.1.5 mrg 34 1.1.1.5 mrg /* C LALR(1) parser skeleton written by Richard Stallman, by 35 1.1.1.5 mrg simplifying the original so-called "semantic" parser. */ 36 1.1.1.5 mrg 37 1.1.1.5 mrg /* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, 38 1.1.1.5 mrg especially those whose name start with YY_ or yy_. They are 39 1.1.1.5 mrg private implementation details that can be changed or removed. */ 40 1.1.1.5 mrg 41 1.1.1.5 mrg /* All symbols defined below should begin with yy or YY, to avoid 42 1.1.1.5 mrg infringing on user name space. This should be done even for local 43 1.1.1.5 mrg variables, as they might otherwise be expanded by user macros. 44 1.1.1.5 mrg There are some unavoidable exceptions within include files to 45 1.1.1.5 mrg define necessary library symbols; they are noted "INFRINGES ON 46 1.1.1.5 mrg USER NAME SPACE" below. */ 47 1.1.1.5 mrg 48 1.1.1.5 mrg /* Identify Bison output. */ 49 1.1.1.5 mrg #define YYBISON 1 50 1.1.1.5 mrg 51 1.1.1.5 mrg /* Bison version. */ 52 1.1.1.5 mrg #define YYBISON_VERSION "3.6.4" 53 1.1.1.5 mrg 54 1.1.1.5 mrg /* Skeleton name. */ 55 1.1.1.5 mrg #define YYSKELETON_NAME "yacc.c" 56 1.1.1.5 mrg 57 1.1.1.5 mrg /* Pure parsers. */ 58 1.1 mrg #define YYPURE 0 59 1.1 mrg 60 1.1.1.5 mrg /* Push parsers. */ 61 1.1.1.5 mrg #define YYPUSH 0 62 1.1.1.5 mrg 63 1.1.1.5 mrg /* Pull parsers. */ 64 1.1.1.5 mrg #define YYPULL 1 65 1.1.1.5 mrg 66 1.1.1.5 mrg 67 1.1.1.5 mrg 68 1.1.1.5 mrg 69 1.1.1.5 mrg /* First part of user prologue. */ 70 1.1.1.5 mrg #line 1 "../../../gmp/demos/calc/calc.y" 71 1.1.1.5 mrg 72 1.1 mrg /* A simple integer desk calculator using yacc and gmp. 73 1.1 mrg 74 1.1.1.3 mrg Copyright 2000-2002 Free Software Foundation, Inc. 75 1.1 mrg 76 1.1 mrg This file is part of the GNU MP Library. 77 1.1 mrg 78 1.1 mrg This program is free software; you can redistribute it and/or modify it under 79 1.1 mrg the terms of the GNU General Public License as published by the Free Software 80 1.1 mrg Foundation; either version 3 of the License, or (at your option) any later 81 1.1 mrg version. 82 1.1 mrg 83 1.1 mrg This program is distributed in the hope that it will be useful, but WITHOUT ANY 84 1.1 mrg WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 85 1.1 mrg PARTICULAR PURPOSE. See the GNU General Public License for more details. 86 1.1 mrg 87 1.1 mrg You should have received a copy of the GNU General Public License along with 88 1.1.1.3 mrg this program. If not, see https://www.gnu.org/licenses/. */ 89 1.1 mrg 90 1.1 mrg 91 1.1 mrg /* This is a simple program, meant only to show one way to use GMP for this 92 1.1 mrg sort of thing. There's few features, and error checking is minimal. 93 1.1 mrg Standard input is read, calc_help() below shows the inputs accepted. 94 1.1 mrg 95 1.1 mrg Expressions are evaluated as they're read. If user defined functions 96 1.1 mrg were wanted it'd be necessary to build a parse tree like pexpr.c does, or 97 1.1 mrg a list of operations for a stack based evaluator. That would also make 98 1.1 mrg it possible to detect and optimize evaluations "mod m" like pexpr.c does. 99 1.1 mrg 100 1.1 mrg A stack is used for intermediate values in the expression evaluation, 101 1.1 mrg separate from the yacc parser stack. This is simple, makes error 102 1.1 mrg recovery easy, minimizes the junk around mpz calls in the rules, and 103 1.1 mrg saves initializing or clearing "mpz_t"s during a calculation. A 104 1.1 mrg disadvantage though is that variables must be copied to the stack to be 105 1.1 mrg worked on. A more sophisticated calculator or language system might be 106 1.1 mrg able to avoid that when executing a compiled or semi-compiled form. 107 1.1 mrg 108 1.1 mrg Avoiding repeated initializing and clearing of "mpz_t"s is important. In 109 1.1 mrg this program the time spent parsing is obviously much greater than any 110 1.1 mrg possible saving from this, but a proper calculator or language should 111 1.1 mrg take some trouble over it. Don't be surprised if an init/clear takes 3 112 1.1 mrg or more times as long as a 10 limb addition, depending on the system (see 113 1.1 mrg the mpz_init_realloc_clear example in tune/README). */ 114 1.1 mrg 115 1.1 mrg 116 1.1 mrg #include <stdio.h> 117 1.1 mrg #include <stdlib.h> 118 1.1 mrg #include <string.h> 119 1.1 mrg #include "gmp.h" 120 1.1 mrg #define NO_CALC_H /* because it conflicts with normal calc.c stuff */ 121 1.1 mrg #include "calc-common.h" 122 1.1 mrg 123 1.1 mrg 124 1.1 mrg #define numberof(x) (sizeof (x) / sizeof ((x)[0])) 125 1.1 mrg 126 1.1 mrg 127 1.1 mrg void 128 1.1 mrg calc_help (void) 129 1.1 mrg { 130 1.1 mrg printf ("Examples:\n"); 131 1.1 mrg printf (" 2+3*4 expressions are evaluated\n"); 132 1.1 mrg printf (" x=5^6 variables a to z can be set and used\n"); 133 1.1 mrg printf ("Operators:\n"); 134 1.1 mrg printf (" + - * arithmetic\n"); 135 1.1 mrg printf (" / %% division and remainder (rounding towards negative infinity)\n"); 136 1.1 mrg printf (" ^ exponentiation\n"); 137 1.1 mrg printf (" ! factorial\n"); 138 1.1 mrg printf (" << >> left and right shifts\n"); 139 1.1 mrg printf (" <= >= > \\ comparisons, giving 1 if true, 0 if false\n"); 140 1.1 mrg printf (" == != < /\n"); 141 1.1 mrg printf (" && || logical and/or, giving 1 if true, 0 if false\n"); 142 1.1 mrg printf ("Functions:\n"); 143 1.1 mrg printf (" abs(n) absolute value\n"); 144 1.1 mrg printf (" bin(n,m) binomial coefficient\n"); 145 1.1 mrg printf (" fib(n) fibonacci number\n"); 146 1.1 mrg printf (" gcd(a,b,..) greatest common divisor\n"); 147 1.1 mrg printf (" kron(a,b) kronecker symbol\n"); 148 1.1 mrg printf (" lcm(a,b,..) least common multiple\n"); 149 1.1 mrg printf (" lucnum(n) lucas number\n"); 150 1.1 mrg printf (" nextprime(n) next prime after n\n"); 151 1.1 mrg printf (" powm(b,e,m) modulo powering, b^e%%m\n"); 152 1.1 mrg printf (" root(n,r) r-th root\n"); 153 1.1 mrg printf (" sqrt(n) square root\n"); 154 1.1 mrg printf ("Other:\n"); 155 1.1 mrg printf (" hex \\ set hex or decimal for input and output\n"); 156 1.1 mrg printf (" decimal / (\"0x\" can be used for hex too)\n"); 157 1.1 mrg printf (" quit exit program (EOF works too)\n"); 158 1.1 mrg printf (" ; statements are separated with a ; or newline\n"); 159 1.1 mrg printf (" \\ continue expressions with \\ before newline\n"); 160 1.1 mrg printf (" # xxx comments are # though to newline\n"); 161 1.1 mrg printf ("Hex numbers must be entered in upper case, to distinguish them from the\n"); 162 1.1 mrg printf ("variables a to f (like in bc).\n"); 163 1.1 mrg } 164 1.1 mrg 165 1.1 mrg 166 1.1 mrg int ibase = 0; 167 1.1 mrg int obase = 10; 168 1.1 mrg 169 1.1 mrg 170 1.1 mrg /* The stack is a fixed size, which means there's a limit on the nesting 171 1.1 mrg allowed in expressions. A more sophisticated program could let it grow 172 1.1 mrg dynamically. */ 173 1.1 mrg 174 1.1 mrg mpz_t stack[100]; 175 1.1 mrg mpz_ptr sp = stack[0]; 176 1.1 mrg 177 1.1 mrg #define CHECK_OVERFLOW() \ 178 1.1 mrg if (sp >= stack[numberof(stack)]) /* FIXME */ \ 179 1.1 mrg { \ 180 1.1 mrg fprintf (stderr, \ 181 1.1 mrg "Value stack overflow, too much nesting in expression\n"); \ 182 1.1 mrg YYERROR; \ 183 1.1 mrg } 184 1.1 mrg 185 1.1 mrg #define CHECK_EMPTY() \ 186 1.1 mrg if (sp != stack[0]) \ 187 1.1 mrg { \ 188 1.1 mrg fprintf (stderr, "Oops, expected the value stack to be empty\n"); \ 189 1.1 mrg sp = stack[0]; \ 190 1.1 mrg } 191 1.1 mrg 192 1.1 mrg 193 1.1 mrg mpz_t variable[26]; 194 1.1 mrg 195 1.1 mrg #define CHECK_VARIABLE(var) \ 196 1.1 mrg if ((var) < 0 || (var) >= numberof (variable)) \ 197 1.1 mrg { \ 198 1.1 mrg fprintf (stderr, "Oops, bad variable somehow: %d\n", var); \ 199 1.1 mrg YYERROR; \ 200 1.1 mrg } 201 1.1 mrg 202 1.1 mrg 203 1.1 mrg #define CHECK_UI(name,z) \ 204 1.1 mrg if (! mpz_fits_ulong_p (z)) \ 205 1.1 mrg { \ 206 1.1 mrg fprintf (stderr, "%s too big\n", name); \ 207 1.1 mrg YYERROR; \ 208 1.1 mrg } 209 1.1 mrg 210 1.1.1.5 mrg 211 1.1.1.5 mrg #line 212 "calc.c" 212 1.1.1.5 mrg 213 1.1.1.5 mrg # ifndef YY_CAST 214 1.1.1.5 mrg # ifdef __cplusplus 215 1.1.1.5 mrg # define YY_CAST(Type, Val) static_cast<Type> (Val) 216 1.1.1.5 mrg # define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val) 217 1.1.1.5 mrg # else 218 1.1.1.5 mrg # define YY_CAST(Type, Val) ((Type) (Val)) 219 1.1.1.5 mrg # define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val)) 220 1.1.1.5 mrg # endif 221 1.1.1.5 mrg # endif 222 1.1.1.5 mrg # ifndef YY_NULLPTR 223 1.1.1.5 mrg # if defined __cplusplus 224 1.1.1.5 mrg # if 201103L <= __cplusplus 225 1.1.1.5 mrg # define YY_NULLPTR nullptr 226 1.1.1.5 mrg # else 227 1.1.1.5 mrg # define YY_NULLPTR 0 228 1.1.1.5 mrg # endif 229 1.1.1.5 mrg # else 230 1.1.1.5 mrg # define YY_NULLPTR ((void*)0) 231 1.1.1.5 mrg # endif 232 1.1.1.5 mrg # endif 233 1.1.1.5 mrg 234 1.1.1.5 mrg /* Use api.header.include to #include this header 235 1.1.1.5 mrg instead of duplicating it here. */ 236 1.1.1.5 mrg #ifndef YY_YY_CALC_H_INCLUDED 237 1.1.1.5 mrg # define YY_YY_CALC_H_INCLUDED 238 1.1.1.5 mrg /* Debug traces. */ 239 1.1.1.5 mrg #ifndef YYDEBUG 240 1.1.1.5 mrg # define YYDEBUG 0 241 1.1 mrg #endif 242 1.1.1.5 mrg #if YYDEBUG 243 1.1.1.5 mrg extern int yydebug; 244 1.1.1.5 mrg #endif 245 1.1.1.5 mrg 246 1.1.1.5 mrg /* Token kinds. */ 247 1.1.1.5 mrg #ifndef YYTOKENTYPE 248 1.1.1.5 mrg # define YYTOKENTYPE 249 1.1.1.5 mrg enum yytokentype 250 1.1.1.5 mrg { 251 1.1.1.5 mrg YYEMPTY = -2, 252 1.1.1.5 mrg YYEOF = 0, /* "end of file" */ 253 1.1.1.5 mrg YYerror = 256, /* error */ 254 1.1.1.5 mrg YYUNDEF = 257, /* "invalid token" */ 255 1.1.1.5 mrg EOS = 258, /* EOS */ 256 1.1.1.5 mrg BAD = 259, /* BAD */ 257 1.1.1.5 mrg HELP = 260, /* HELP */ 258 1.1.1.5 mrg HEX = 261, /* HEX */ 259 1.1.1.5 mrg DECIMAL = 262, /* DECIMAL */ 260 1.1.1.5 mrg QUIT = 263, /* QUIT */ 261 1.1.1.5 mrg ABS = 264, /* ABS */ 262 1.1.1.5 mrg BIN = 265, /* BIN */ 263 1.1.1.5 mrg FIB = 266, /* FIB */ 264 1.1.1.5 mrg GCD = 267, /* GCD */ 265 1.1.1.5 mrg KRON = 268, /* KRON */ 266 1.1.1.5 mrg LCM = 269, /* LCM */ 267 1.1.1.5 mrg LUCNUM = 270, /* LUCNUM */ 268 1.1.1.5 mrg NEXTPRIME = 271, /* NEXTPRIME */ 269 1.1.1.5 mrg POWM = 272, /* POWM */ 270 1.1.1.5 mrg ROOT = 273, /* ROOT */ 271 1.1.1.5 mrg SQRT = 274, /* SQRT */ 272 1.1.1.5 mrg NUMBER = 275, /* NUMBER */ 273 1.1.1.5 mrg VARIABLE = 276, /* VARIABLE */ 274 1.1.1.5 mrg LOR = 277, /* LOR */ 275 1.1.1.5 mrg LAND = 278, /* LAND */ 276 1.1.1.5 mrg EQ = 279, /* EQ */ 277 1.1.1.5 mrg NE = 280, /* NE */ 278 1.1.1.5 mrg LE = 281, /* LE */ 279 1.1.1.5 mrg GE = 282, /* GE */ 280 1.1.1.5 mrg LSHIFT = 283, /* LSHIFT */ 281 1.1.1.5 mrg RSHIFT = 284, /* RSHIFT */ 282 1.1.1.5 mrg UMINUS = 285 /* UMINUS */ 283 1.1.1.5 mrg }; 284 1.1.1.5 mrg typedef enum yytokentype yytoken_kind_t; 285 1.1.1.5 mrg #endif 286 1.1.1.5 mrg /* Token kinds. */ 287 1.1.1.5 mrg #define YYEOF 0 288 1.1.1.5 mrg #define YYerror 256 289 1.1.1.5 mrg #define YYUNDEF 257 290 1.1.1.5 mrg #define EOS 258 291 1.1.1.5 mrg #define BAD 259 292 1.1.1.5 mrg #define HELP 260 293 1.1.1.5 mrg #define HEX 261 294 1.1.1.5 mrg #define DECIMAL 262 295 1.1.1.5 mrg #define QUIT 263 296 1.1.1.5 mrg #define ABS 264 297 1.1.1.5 mrg #define BIN 265 298 1.1.1.5 mrg #define FIB 266 299 1.1.1.5 mrg #define GCD 267 300 1.1.1.5 mrg #define KRON 268 301 1.1.1.5 mrg #define LCM 269 302 1.1.1.5 mrg #define LUCNUM 270 303 1.1.1.5 mrg #define NEXTPRIME 271 304 1.1.1.5 mrg #define POWM 272 305 1.1.1.5 mrg #define ROOT 273 306 1.1.1.5 mrg #define SQRT 274 307 1.1.1.5 mrg #define NUMBER 275 308 1.1.1.5 mrg #define VARIABLE 276 309 1.1.1.5 mrg #define LOR 277 310 1.1.1.5 mrg #define LAND 278 311 1.1.1.5 mrg #define EQ 279 312 1.1.1.5 mrg #define NE 280 313 1.1.1.5 mrg #define LE 281 314 1.1.1.5 mrg #define GE 282 315 1.1.1.5 mrg #define LSHIFT 283 316 1.1.1.5 mrg #define RSHIFT 284 317 1.1.1.5 mrg #define UMINUS 285 318 1.1.1.5 mrg 319 1.1.1.5 mrg /* Value type. */ 320 1.1.1.5 mrg #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED 321 1.1.1.5 mrg union YYSTYPE 322 1.1.1.5 mrg { 323 1.1.1.3 mrg #line 142 "../../../gmp/demos/calc/calc.y" 324 1.1.1.5 mrg 325 1.1 mrg char *str; 326 1.1 mrg int var; 327 1.1.1.5 mrg 328 1.1.1.5 mrg #line 329 "calc.c" 329 1.1.1.5 mrg 330 1.1.1.5 mrg }; 331 1.1.1.5 mrg typedef union YYSTYPE YYSTYPE; 332 1.1.1.5 mrg # define YYSTYPE_IS_TRIVIAL 1 333 1.1.1.5 mrg # define YYSTYPE_IS_DECLARED 1 334 1.1.1.5 mrg #endif 335 1.1.1.5 mrg 336 1.1.1.5 mrg 337 1.1.1.5 mrg extern YYSTYPE yylval; 338 1.1.1.5 mrg 339 1.1.1.5 mrg int yyparse (void); 340 1.1.1.5 mrg 341 1.1.1.5 mrg #endif /* !YY_YY_CALC_H_INCLUDED */ 342 1.1.1.5 mrg /* Symbol kind. */ 343 1.1.1.5 mrg enum yysymbol_kind_t 344 1.1.1.5 mrg { 345 1.1.1.5 mrg YYSYMBOL_YYEMPTY = -2, 346 1.1.1.5 mrg YYSYMBOL_YYEOF = 0, /* "end of file" */ 347 1.1.1.5 mrg YYSYMBOL_YYerror = 1, /* error */ 348 1.1.1.5 mrg YYSYMBOL_YYUNDEF = 2, /* "invalid token" */ 349 1.1.1.5 mrg YYSYMBOL_EOS = 3, /* EOS */ 350 1.1.1.5 mrg YYSYMBOL_BAD = 4, /* BAD */ 351 1.1.1.5 mrg YYSYMBOL_HELP = 5, /* HELP */ 352 1.1.1.5 mrg YYSYMBOL_HEX = 6, /* HEX */ 353 1.1.1.5 mrg YYSYMBOL_DECIMAL = 7, /* DECIMAL */ 354 1.1.1.5 mrg YYSYMBOL_QUIT = 8, /* QUIT */ 355 1.1.1.5 mrg YYSYMBOL_ABS = 9, /* ABS */ 356 1.1.1.5 mrg YYSYMBOL_BIN = 10, /* BIN */ 357 1.1.1.5 mrg YYSYMBOL_FIB = 11, /* FIB */ 358 1.1.1.5 mrg YYSYMBOL_GCD = 12, /* GCD */ 359 1.1.1.5 mrg YYSYMBOL_KRON = 13, /* KRON */ 360 1.1.1.5 mrg YYSYMBOL_LCM = 14, /* LCM */ 361 1.1.1.5 mrg YYSYMBOL_LUCNUM = 15, /* LUCNUM */ 362 1.1.1.5 mrg YYSYMBOL_NEXTPRIME = 16, /* NEXTPRIME */ 363 1.1.1.5 mrg YYSYMBOL_POWM = 17, /* POWM */ 364 1.1.1.5 mrg YYSYMBOL_ROOT = 18, /* ROOT */ 365 1.1.1.5 mrg YYSYMBOL_SQRT = 19, /* SQRT */ 366 1.1.1.5 mrg YYSYMBOL_NUMBER = 20, /* NUMBER */ 367 1.1.1.5 mrg YYSYMBOL_VARIABLE = 21, /* VARIABLE */ 368 1.1.1.5 mrg YYSYMBOL_LOR = 22, /* LOR */ 369 1.1.1.5 mrg YYSYMBOL_LAND = 23, /* LAND */ 370 1.1.1.5 mrg YYSYMBOL_24_ = 24, /* '<' */ 371 1.1.1.5 mrg YYSYMBOL_25_ = 25, /* '>' */ 372 1.1.1.5 mrg YYSYMBOL_EQ = 26, /* EQ */ 373 1.1.1.5 mrg YYSYMBOL_NE = 27, /* NE */ 374 1.1.1.5 mrg YYSYMBOL_LE = 28, /* LE */ 375 1.1.1.5 mrg YYSYMBOL_GE = 29, /* GE */ 376 1.1.1.5 mrg YYSYMBOL_LSHIFT = 30, /* LSHIFT */ 377 1.1.1.5 mrg YYSYMBOL_RSHIFT = 31, /* RSHIFT */ 378 1.1.1.5 mrg YYSYMBOL_32_ = 32, /* '+' */ 379 1.1.1.5 mrg YYSYMBOL_33_ = 33, /* '-' */ 380 1.1.1.5 mrg YYSYMBOL_34_ = 34, /* '*' */ 381 1.1.1.5 mrg YYSYMBOL_35_ = 35, /* '/' */ 382 1.1.1.5 mrg YYSYMBOL_36_ = 36, /* '%' */ 383 1.1.1.5 mrg YYSYMBOL_UMINUS = 37, /* UMINUS */ 384 1.1.1.5 mrg YYSYMBOL_38_ = 38, /* '^' */ 385 1.1.1.5 mrg YYSYMBOL_39_ = 39, /* '!' */ 386 1.1.1.5 mrg YYSYMBOL_40_ = 40, /* '=' */ 387 1.1.1.5 mrg YYSYMBOL_41_ = 41, /* '(' */ 388 1.1.1.5 mrg YYSYMBOL_42_ = 42, /* ')' */ 389 1.1.1.5 mrg YYSYMBOL_43_ = 43, /* ',' */ 390 1.1.1.5 mrg YYSYMBOL_YYACCEPT = 44, /* $accept */ 391 1.1.1.5 mrg YYSYMBOL_top = 45, /* top */ 392 1.1.1.5 mrg YYSYMBOL_statements = 46, /* statements */ 393 1.1.1.5 mrg YYSYMBOL_statement = 47, /* statement */ 394 1.1.1.5 mrg YYSYMBOL_e = 48, /* e */ 395 1.1.1.5 mrg YYSYMBOL_gcdlist = 49, /* gcdlist */ 396 1.1.1.5 mrg YYSYMBOL_lcmlist = 50 /* lcmlist */ 397 1.1.1.5 mrg }; 398 1.1.1.5 mrg typedef enum yysymbol_kind_t yysymbol_kind_t; 399 1.1.1.5 mrg 400 1.1.1.5 mrg 401 1.1.1.5 mrg 402 1.1.1.5 mrg 403 1.1.1.5 mrg #ifdef short 404 1.1.1.5 mrg # undef short 405 1.1.1.5 mrg #endif 406 1.1.1.5 mrg 407 1.1.1.5 mrg /* On compilers that do not define __PTRDIFF_MAX__ etc., make sure 408 1.1.1.5 mrg <limits.h> and (if available) <stdint.h> are included 409 1.1.1.5 mrg so that the code can choose integer types of a good width. */ 410 1.1.1.5 mrg 411 1.1.1.5 mrg #ifndef __PTRDIFF_MAX__ 412 1.1.1.5 mrg # include <limits.h> /* INFRINGES ON USER NAME SPACE */ 413 1.1.1.5 mrg # if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ 414 1.1.1.5 mrg # include <stdint.h> /* INFRINGES ON USER NAME SPACE */ 415 1.1.1.5 mrg # define YY_STDINT_H 416 1.1.1.5 mrg # endif 417 1.1.1.5 mrg #endif 418 1.1.1.5 mrg 419 1.1.1.5 mrg /* Narrow types that promote to a signed type and that can represent a 420 1.1.1.5 mrg signed or unsigned integer of at least N bits. In tables they can 421 1.1.1.5 mrg save space and decrease cache pressure. Promoting to a signed type 422 1.1.1.5 mrg helps avoid bugs in integer arithmetic. */ 423 1.1.1.5 mrg 424 1.1.1.5 mrg #ifdef __INT_LEAST8_MAX__ 425 1.1.1.5 mrg typedef __INT_LEAST8_TYPE__ yytype_int8; 426 1.1.1.5 mrg #elif defined YY_STDINT_H 427 1.1.1.5 mrg typedef int_least8_t yytype_int8; 428 1.1.1.5 mrg #else 429 1.1.1.5 mrg typedef signed char yytype_int8; 430 1.1.1.5 mrg #endif 431 1.1.1.5 mrg 432 1.1.1.5 mrg #ifdef __INT_LEAST16_MAX__ 433 1.1.1.5 mrg typedef __INT_LEAST16_TYPE__ yytype_int16; 434 1.1.1.5 mrg #elif defined YY_STDINT_H 435 1.1.1.5 mrg typedef int_least16_t yytype_int16; 436 1.1.1.5 mrg #else 437 1.1.1.5 mrg typedef short yytype_int16; 438 1.1.1.5 mrg #endif 439 1.1.1.5 mrg 440 1.1.1.5 mrg #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__ 441 1.1.1.5 mrg typedef __UINT_LEAST8_TYPE__ yytype_uint8; 442 1.1.1.5 mrg #elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \ 443 1.1.1.5 mrg && UINT_LEAST8_MAX <= INT_MAX) 444 1.1.1.5 mrg typedef uint_least8_t yytype_uint8; 445 1.1.1.5 mrg #elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX 446 1.1.1.5 mrg typedef unsigned char yytype_uint8; 447 1.1.1.5 mrg #else 448 1.1.1.5 mrg typedef short yytype_uint8; 449 1.1.1.5 mrg #endif 450 1.1.1.5 mrg 451 1.1.1.5 mrg #if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__ 452 1.1.1.5 mrg typedef __UINT_LEAST16_TYPE__ yytype_uint16; 453 1.1.1.5 mrg #elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \ 454 1.1.1.5 mrg && UINT_LEAST16_MAX <= INT_MAX) 455 1.1.1.5 mrg typedef uint_least16_t yytype_uint16; 456 1.1.1.5 mrg #elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX 457 1.1.1.5 mrg typedef unsigned short yytype_uint16; 458 1.1.1.5 mrg #else 459 1.1.1.5 mrg typedef int yytype_uint16; 460 1.1.1.5 mrg #endif 461 1.1.1.5 mrg 462 1.1.1.5 mrg #ifndef YYPTRDIFF_T 463 1.1.1.5 mrg # if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__ 464 1.1.1.5 mrg # define YYPTRDIFF_T __PTRDIFF_TYPE__ 465 1.1.1.5 mrg # define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__ 466 1.1.1.5 mrg # elif defined PTRDIFF_MAX 467 1.1.1.5 mrg # ifndef ptrdiff_t 468 1.1.1.5 mrg # include <stddef.h> /* INFRINGES ON USER NAME SPACE */ 469 1.1.1.5 mrg # endif 470 1.1.1.5 mrg # define YYPTRDIFF_T ptrdiff_t 471 1.1.1.5 mrg # define YYPTRDIFF_MAXIMUM PTRDIFF_MAX 472 1.1.1.5 mrg # else 473 1.1.1.5 mrg # define YYPTRDIFF_T long 474 1.1.1.5 mrg # define YYPTRDIFF_MAXIMUM LONG_MAX 475 1.1.1.5 mrg # endif 476 1.1.1.5 mrg #endif 477 1.1.1.5 mrg 478 1.1.1.5 mrg #ifndef YYSIZE_T 479 1.1.1.5 mrg # ifdef __SIZE_TYPE__ 480 1.1.1.5 mrg # define YYSIZE_T __SIZE_TYPE__ 481 1.1.1.5 mrg # elif defined size_t 482 1.1.1.5 mrg # define YYSIZE_T size_t 483 1.1.1.5 mrg # elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ 484 1.1.1.5 mrg # include <stddef.h> /* INFRINGES ON USER NAME SPACE */ 485 1.1.1.5 mrg # define YYSIZE_T size_t 486 1.1 mrg # else 487 1.1.1.5 mrg # define YYSIZE_T unsigned 488 1.1 mrg # endif 489 1.1.1.5 mrg #endif 490 1.1.1.5 mrg 491 1.1.1.5 mrg #define YYSIZE_MAXIMUM \ 492 1.1.1.5 mrg YY_CAST (YYPTRDIFF_T, \ 493 1.1.1.5 mrg (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \ 494 1.1.1.5 mrg ? YYPTRDIFF_MAXIMUM \ 495 1.1.1.5 mrg : YY_CAST (YYSIZE_T, -1))) 496 1.1.1.5 mrg 497 1.1.1.5 mrg #define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X)) 498 1.1.1.5 mrg 499 1.1.1.5 mrg 500 1.1.1.5 mrg /* Stored state numbers (used for stacks). */ 501 1.1.1.5 mrg typedef yytype_int8 yy_state_t; 502 1.1.1.5 mrg 503 1.1.1.5 mrg /* State numbers in computations. */ 504 1.1.1.5 mrg typedef int yy_state_fast_t; 505 1.1.1.5 mrg 506 1.1.1.5 mrg #ifndef YY_ 507 1.1.1.5 mrg # if defined YYENABLE_NLS && YYENABLE_NLS 508 1.1.1.5 mrg # if ENABLE_NLS 509 1.1.1.5 mrg # include <libintl.h> /* INFRINGES ON USER NAME SPACE */ 510 1.1.1.5 mrg # define YY_(Msgid) dgettext ("bison-runtime", Msgid) 511 1.1.1.5 mrg # endif 512 1.1.1.5 mrg # endif 513 1.1.1.5 mrg # ifndef YY_ 514 1.1.1.5 mrg # define YY_(Msgid) Msgid 515 1.1.1.5 mrg # endif 516 1.1.1.5 mrg #endif 517 1.1.1.5 mrg 518 1.1.1.5 mrg 519 1.1.1.5 mrg #ifndef YY_ATTRIBUTE_PURE 520 1.1.1.5 mrg # if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__) 521 1.1.1.5 mrg # define YY_ATTRIBUTE_PURE __attribute__ ((__pure__)) 522 1.1.1.5 mrg # else 523 1.1.1.5 mrg # define YY_ATTRIBUTE_PURE 524 1.1.1.5 mrg # endif 525 1.1.1.5 mrg #endif 526 1.1.1.5 mrg 527 1.1.1.5 mrg #ifndef YY_ATTRIBUTE_UNUSED 528 1.1.1.5 mrg # if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__) 529 1.1.1.5 mrg # define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) 530 1.1.1.5 mrg # else 531 1.1.1.5 mrg # define YY_ATTRIBUTE_UNUSED 532 1.1.1.5 mrg # endif 533 1.1.1.5 mrg #endif 534 1.1.1.5 mrg 535 1.1.1.5 mrg /* Suppress unused-variable warnings by "using" E. */ 536 1.1.1.5 mrg #if ! defined lint || defined __GNUC__ 537 1.1.1.5 mrg # define YYUSE(E) ((void) (E)) 538 1.1 mrg #else 539 1.1.1.5 mrg # define YYUSE(E) /* empty */ 540 1.1 mrg #endif 541 1.1 mrg 542 1.1.1.5 mrg #if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ 543 1.1.1.5 mrg /* Suppress an incorrect diagnostic about yylval being uninitialized. */ 544 1.1.1.5 mrg # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ 545 1.1.1.5 mrg _Pragma ("GCC diagnostic push") \ 546 1.1.1.5 mrg _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \ 547 1.1.1.5 mrg _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") 548 1.1.1.5 mrg # define YY_IGNORE_MAYBE_UNINITIALIZED_END \ 549 1.1.1.5 mrg _Pragma ("GCC diagnostic pop") 550 1.1 mrg #else 551 1.1.1.5 mrg # define YY_INITIAL_VALUE(Value) Value 552 1.1.1.5 mrg #endif 553 1.1.1.5 mrg #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN 554 1.1.1.5 mrg # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN 555 1.1.1.5 mrg # define YY_IGNORE_MAYBE_UNINITIALIZED_END 556 1.1.1.5 mrg #endif 557 1.1.1.5 mrg #ifndef YY_INITIAL_VALUE 558 1.1.1.5 mrg # define YY_INITIAL_VALUE(Value) /* Nothing. */ 559 1.1.1.5 mrg #endif 560 1.1.1.5 mrg 561 1.1.1.5 mrg #if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__ 562 1.1.1.5 mrg # define YY_IGNORE_USELESS_CAST_BEGIN \ 563 1.1.1.5 mrg _Pragma ("GCC diagnostic push") \ 564 1.1.1.5 mrg _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"") 565 1.1.1.5 mrg # define YY_IGNORE_USELESS_CAST_END \ 566 1.1.1.5 mrg _Pragma ("GCC diagnostic pop") 567 1.1.1.5 mrg #endif 568 1.1.1.5 mrg #ifndef YY_IGNORE_USELESS_CAST_BEGIN 569 1.1.1.5 mrg # define YY_IGNORE_USELESS_CAST_BEGIN 570 1.1.1.5 mrg # define YY_IGNORE_USELESS_CAST_END 571 1.1.1.5 mrg #endif 572 1.1.1.5 mrg 573 1.1.1.5 mrg 574 1.1.1.5 mrg #define YY_ASSERT(E) ((void) (0 && (E))) 575 1.1.1.5 mrg 576 1.1.1.5 mrg #if !defined yyoverflow 577 1.1.1.5 mrg 578 1.1.1.5 mrg /* The parser invokes alloca or malloc; define the necessary symbols. */ 579 1.1.1.5 mrg 580 1.1.1.5 mrg # ifdef YYSTACK_USE_ALLOCA 581 1.1.1.5 mrg # if YYSTACK_USE_ALLOCA 582 1.1.1.5 mrg # ifdef __GNUC__ 583 1.1.1.5 mrg # define YYSTACK_ALLOC __builtin_alloca 584 1.1.1.5 mrg # elif defined __BUILTIN_VA_ARG_INCR 585 1.1.1.5 mrg # include <alloca.h> /* INFRINGES ON USER NAME SPACE */ 586 1.1.1.5 mrg # elif defined _AIX 587 1.1.1.5 mrg # define YYSTACK_ALLOC __alloca 588 1.1.1.5 mrg # elif defined _MSC_VER 589 1.1.1.5 mrg # include <malloc.h> /* INFRINGES ON USER NAME SPACE */ 590 1.1.1.5 mrg # define alloca _alloca 591 1.1.1.5 mrg # else 592 1.1.1.5 mrg # define YYSTACK_ALLOC alloca 593 1.1.1.5 mrg # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS 594 1.1.1.5 mrg # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ 595 1.1.1.5 mrg /* Use EXIT_SUCCESS as a witness for stdlib.h. */ 596 1.1.1.5 mrg # ifndef EXIT_SUCCESS 597 1.1.1.5 mrg # define EXIT_SUCCESS 0 598 1.1.1.5 mrg # endif 599 1.1.1.5 mrg # endif 600 1.1.1.5 mrg # endif 601 1.1.1.5 mrg # endif 602 1.1.1.5 mrg # endif 603 1.1.1.5 mrg 604 1.1.1.5 mrg # ifdef YYSTACK_ALLOC 605 1.1.1.5 mrg /* Pacify GCC's 'empty if-body' warning. */ 606 1.1.1.5 mrg # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) 607 1.1.1.5 mrg # ifndef YYSTACK_ALLOC_MAXIMUM 608 1.1.1.5 mrg /* The OS might guarantee only one guard page at the bottom of the stack, 609 1.1.1.5 mrg and a page size can be as small as 4096 bytes. So we cannot safely 610 1.1.1.5 mrg invoke alloca (N) if N exceeds 4096. Use a slightly smaller number 611 1.1.1.5 mrg to allow for a few compiler-allocated temporary stack slots. */ 612 1.1.1.5 mrg # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ 613 1.1.1.5 mrg # endif 614 1.1.1.5 mrg # else 615 1.1.1.5 mrg # define YYSTACK_ALLOC YYMALLOC 616 1.1.1.5 mrg # define YYSTACK_FREE YYFREE 617 1.1.1.5 mrg # ifndef YYSTACK_ALLOC_MAXIMUM 618 1.1.1.5 mrg # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM 619 1.1.1.5 mrg # endif 620 1.1.1.5 mrg # if (defined __cplusplus && ! defined EXIT_SUCCESS \ 621 1.1.1.5 mrg && ! ((defined YYMALLOC || defined malloc) \ 622 1.1.1.5 mrg && (defined YYFREE || defined free))) 623 1.1.1.5 mrg # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ 624 1.1.1.5 mrg # ifndef EXIT_SUCCESS 625 1.1.1.5 mrg # define EXIT_SUCCESS 0 626 1.1.1.5 mrg # endif 627 1.1.1.5 mrg # endif 628 1.1.1.5 mrg # ifndef YYMALLOC 629 1.1.1.5 mrg # define YYMALLOC malloc 630 1.1.1.5 mrg # if ! defined malloc && ! defined EXIT_SUCCESS 631 1.1.1.5 mrg void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ 632 1.1.1.5 mrg # endif 633 1.1.1.5 mrg # endif 634 1.1.1.5 mrg # ifndef YYFREE 635 1.1.1.5 mrg # define YYFREE free 636 1.1.1.5 mrg # if ! defined free && ! defined EXIT_SUCCESS 637 1.1.1.5 mrg void free (void *); /* INFRINGES ON USER NAME SPACE */ 638 1.1.1.5 mrg # endif 639 1.1.1.5 mrg # endif 640 1.1.1.5 mrg # endif 641 1.1.1.5 mrg #endif /* !defined yyoverflow */ 642 1.1.1.5 mrg 643 1.1.1.5 mrg #if (! defined yyoverflow \ 644 1.1.1.5 mrg && (! defined __cplusplus \ 645 1.1.1.5 mrg || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) 646 1.1.1.5 mrg 647 1.1.1.5 mrg /* A type that is properly aligned for any stack member. */ 648 1.1.1.5 mrg union yyalloc 649 1.1.1.5 mrg { 650 1.1.1.5 mrg yy_state_t yyss_alloc; 651 1.1.1.5 mrg YYSTYPE yyvs_alloc; 652 1.1.1.5 mrg }; 653 1.1.1.5 mrg 654 1.1.1.5 mrg /* The size of the maximum gap between one aligned stack and the next. */ 655 1.1.1.5 mrg # define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1) 656 1.1.1.5 mrg 657 1.1.1.5 mrg /* The size of an array large to enough to hold all stacks, each with 658 1.1.1.5 mrg N elements. */ 659 1.1.1.5 mrg # define YYSTACK_BYTES(N) \ 660 1.1.1.5 mrg ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \ 661 1.1.1.5 mrg + YYSTACK_GAP_MAXIMUM) 662 1.1.1.5 mrg 663 1.1.1.5 mrg # define YYCOPY_NEEDED 1 664 1.1.1.5 mrg 665 1.1.1.5 mrg /* Relocate STACK from its old location to the new one. The 666 1.1.1.5 mrg local variables YYSIZE and YYSTACKSIZE give the old and new number of 667 1.1.1.5 mrg elements in the stack, and YYPTR gives the new location of the 668 1.1.1.5 mrg stack. Advance YYPTR to a properly aligned location for the next 669 1.1.1.5 mrg stack. */ 670 1.1.1.5 mrg # define YYSTACK_RELOCATE(Stack_alloc, Stack) \ 671 1.1.1.5 mrg do \ 672 1.1.1.5 mrg { \ 673 1.1.1.5 mrg YYPTRDIFF_T yynewbytes; \ 674 1.1.1.5 mrg YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ 675 1.1.1.5 mrg Stack = &yyptr->Stack_alloc; \ 676 1.1.1.5 mrg yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \ 677 1.1.1.5 mrg yyptr += yynewbytes / YYSIZEOF (*yyptr); \ 678 1.1.1.5 mrg } \ 679 1.1.1.5 mrg while (0) 680 1.1.1.5 mrg 681 1.1 mrg #endif 682 1.1 mrg 683 1.1.1.5 mrg #if defined YYCOPY_NEEDED && YYCOPY_NEEDED 684 1.1.1.5 mrg /* Copy COUNT objects from SRC to DST. The source and destination do 685 1.1.1.5 mrg not overlap. */ 686 1.1.1.5 mrg # ifndef YYCOPY 687 1.1.1.5 mrg # if defined __GNUC__ && 1 < __GNUC__ 688 1.1.1.5 mrg # define YYCOPY(Dst, Src, Count) \ 689 1.1.1.5 mrg __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src))) 690 1.1.1.5 mrg # else 691 1.1.1.5 mrg # define YYCOPY(Dst, Src, Count) \ 692 1.1.1.5 mrg do \ 693 1.1.1.5 mrg { \ 694 1.1.1.5 mrg YYPTRDIFF_T yyi; \ 695 1.1.1.5 mrg for (yyi = 0; yyi < (Count); yyi++) \ 696 1.1.1.5 mrg (Dst)[yyi] = (Src)[yyi]; \ 697 1.1.1.5 mrg } \ 698 1.1.1.5 mrg while (0) 699 1.1.1.5 mrg # endif 700 1.1.1.5 mrg # endif 701 1.1.1.5 mrg #endif /* !YYCOPY_NEEDED */ 702 1.1.1.5 mrg 703 1.1.1.5 mrg /* YYFINAL -- State number of the termination state. */ 704 1.1.1.5 mrg #define YYFINAL 41 705 1.1.1.5 mrg /* YYLAST -- Last index in YYTABLE. */ 706 1.1.1.5 mrg #define YYLAST 552 707 1.1.1.5 mrg 708 1.1.1.5 mrg /* YYNTOKENS -- Number of terminals. */ 709 1.1.1.5 mrg #define YYNTOKENS 44 710 1.1.1.5 mrg /* YYNNTS -- Number of nonterminals. */ 711 1.1.1.5 mrg #define YYNNTS 7 712 1.1.1.5 mrg /* YYNRULES -- Number of rules. */ 713 1.1.1.5 mrg #define YYNRULES 49 714 1.1.1.5 mrg /* YYNSTATES -- Number of states. */ 715 1.1.1.5 mrg #define YYNSTATES 118 716 1.1.1.5 mrg 717 1.1.1.5 mrg #define YYMAXUTOK 285 718 1.1.1.5 mrg 719 1.1.1.5 mrg 720 1.1.1.5 mrg /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM 721 1.1.1.5 mrg as returned by yylex, with out-of-bounds checking. */ 722 1.1.1.5 mrg #define YYTRANSLATE(YYX) \ 723 1.1.1.5 mrg (0 <= (YYX) && (YYX) <= YYMAXUTOK \ 724 1.1.1.5 mrg ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \ 725 1.1.1.5 mrg : YYSYMBOL_YYUNDEF) 726 1.1.1.5 mrg 727 1.1.1.5 mrg /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM 728 1.1.1.5 mrg as returned by yylex. */ 729 1.1.1.5 mrg static const yytype_int8 yytranslate[] = 730 1.1.1.5 mrg { 731 1.1.1.5 mrg 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 732 1.1.1.5 mrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 733 1.1.1.5 mrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 734 1.1.1.5 mrg 2, 2, 2, 39, 2, 2, 2, 36, 2, 2, 735 1.1.1.5 mrg 41, 42, 34, 32, 43, 33, 2, 35, 2, 2, 736 1.1.1.5 mrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 737 1.1.1.5 mrg 24, 40, 25, 2, 2, 2, 2, 2, 2, 2, 738 1.1.1.5 mrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 739 1.1.1.5 mrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 740 1.1.1.5 mrg 2, 2, 2, 2, 38, 2, 2, 2, 2, 2, 741 1.1.1.5 mrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 742 1.1.1.5 mrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 743 1.1.1.5 mrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 744 1.1.1.5 mrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 745 1.1.1.5 mrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 746 1.1.1.5 mrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 747 1.1.1.5 mrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 748 1.1.1.5 mrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 749 1.1.1.5 mrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 750 1.1.1.5 mrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 751 1.1.1.5 mrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 752 1.1.1.5 mrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 753 1.1.1.5 mrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 754 1.1.1.5 mrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 755 1.1.1.5 mrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 756 1.1.1.5 mrg 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, 757 1.1.1.5 mrg 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 758 1.1.1.5 mrg 15, 16, 17, 18, 19, 20, 21, 22, 23, 26, 759 1.1.1.5 mrg 27, 28, 29, 30, 31, 37 760 1.1.1.5 mrg }; 761 1.1.1.5 mrg 762 1.1.1.5 mrg #if YYDEBUG 763 1.1.1.5 mrg /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ 764 1.1.1.5 mrg static const yytype_int16 yyrline[] = 765 1.1.1.5 mrg { 766 1.1.1.5 mrg 0, 167, 167, 168, 171, 172, 173, 175, 177, 182, 767 1.1.1.5 mrg 188, 189, 190, 191, 197, 198, 199, 200, 201, 202, 768 1.1.1.5 mrg 203, 205, 207, 209, 211, 213, 214, 215, 216, 217, 769 1.1.1.5 mrg 218, 220, 221, 223, 224, 226, 228, 229, 231, 232, 770 1.1.1.5 mrg 234, 235, 236, 238, 240, 246, 257, 258, 261, 262 771 1.1 mrg }; 772 1.1.1.5 mrg #endif 773 1.1.1.5 mrg 774 1.1.1.5 mrg /** Accessing symbol of state STATE. */ 775 1.1.1.5 mrg #define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State]) 776 1.1.1.5 mrg 777 1.1.1.5 mrg #if YYDEBUG || 0 778 1.1.1.5 mrg /* The user-facing name of the symbol whose (internal) number is 779 1.1.1.5 mrg YYSYMBOL. No bounds checking. */ 780 1.1.1.5 mrg static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED; 781 1.1.1.5 mrg 782 1.1.1.5 mrg /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. 783 1.1.1.5 mrg First, the terminals, then, starting at YYNTOKENS, nonterminals. */ 784 1.1.1.5 mrg static const char *const yytname[] = 785 1.1.1.5 mrg { 786 1.1.1.5 mrg "\"end of file\"", "error", "\"invalid token\"", "EOS", "BAD", "HELP", 787 1.1.1.5 mrg "HEX", "DECIMAL", "QUIT", "ABS", "BIN", "FIB", "GCD", "KRON", "LCM", 788 1.1.1.5 mrg "LUCNUM", "NEXTPRIME", "POWM", "ROOT", "SQRT", "NUMBER", "VARIABLE", 789 1.1.1.5 mrg "LOR", "LAND", "'<'", "'>'", "EQ", "NE", "LE", "GE", "LSHIFT", "RSHIFT", 790 1.1.1.5 mrg "'+'", "'-'", "'*'", "'/'", "'%'", "UMINUS", "'^'", "'!'", "'='", "'('", 791 1.1.1.5 mrg "')'", "','", "$accept", "top", "statements", "statement", "e", 792 1.1.1.5 mrg "gcdlist", "lcmlist", YY_NULLPTR 793 1.1.1.5 mrg }; 794 1.1.1.5 mrg 795 1.1.1.5 mrg static const char * 796 1.1.1.5 mrg yysymbol_name (yysymbol_kind_t yysymbol) 797 1.1.1.5 mrg { 798 1.1.1.5 mrg return yytname[yysymbol]; 799 1.1.1.5 mrg } 800 1.1.1.5 mrg #endif 801 1.1.1.5 mrg 802 1.1.1.5 mrg #ifdef YYPRINT 803 1.1.1.5 mrg /* YYTOKNUM[NUM] -- (External) token number corresponding to the 804 1.1.1.5 mrg (internal) symbol number NUM (which must be that of a token). */ 805 1.1.1.5 mrg static const yytype_int16 yytoknum[] = 806 1.1.1.5 mrg { 807 1.1.1.5 mrg 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 808 1.1.1.5 mrg 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 809 1.1.1.5 mrg 275, 276, 277, 278, 60, 62, 279, 280, 281, 282, 810 1.1.1.5 mrg 283, 284, 43, 45, 42, 47, 37, 285, 94, 33, 811 1.1.1.5 mrg 61, 40, 41, 44 812 1.1 mrg }; 813 1.1.1.5 mrg #endif 814 1.1.1.5 mrg 815 1.1.1.5 mrg #define YYPACT_NINF (-39) 816 1.1.1.5 mrg 817 1.1.1.5 mrg #define yypact_value_is_default(Yyn) \ 818 1.1.1.5 mrg ((Yyn) == YYPACT_NINF) 819 1.1.1.5 mrg 820 1.1.1.5 mrg #define YYTABLE_NINF (-8) 821 1.1.1.5 mrg 822 1.1.1.5 mrg #define yytable_value_is_error(Yyn) \ 823 1.1.1.5 mrg ((Yyn) == YYTABLE_NINF) 824 1.1.1.5 mrg 825 1.1.1.5 mrg /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing 826 1.1.1.5 mrg STATE-NUM. */ 827 1.1.1.5 mrg static const yytype_int16 yypact[] = 828 1.1.1.5 mrg { 829 1.1.1.5 mrg 41, 3, -39, -39, -39, -39, 2, 4, 27, 32, 830 1.1.1.5 mrg 35, 36, 39, 42, 45, 46, 47, -39, -18, 124, 831 1.1.1.5 mrg 124, 89, 91, 87, 464, -39, 124, 124, 124, 124, 832 1.1.1.5 mrg 124, 124, 124, 124, 124, 124, 124, 124, -39, -36, 833 1.1.1.5 mrg 254, -39, 88, -39, 124, 124, 124, 124, 124, 124, 834 1.1.1.5 mrg 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 835 1.1.1.5 mrg -39, 275, 144, 296, 464, -38, 166, 464, 29, 317, 836 1.1.1.5 mrg 338, 188, 210, 359, 464, -39, -39, 481, 497, 513, 837 1.1.1.5 mrg 513, 513, 513, 513, 513, 31, 31, -15, -15, -36, 838 1.1.1.5 mrg -36, -36, -36, -39, 124, -39, -39, 124, 124, -39, 839 1.1.1.5 mrg 124, -39, -39, 124, 124, -39, 380, 464, 401, 464, 840 1.1.1.5 mrg 232, 422, -39, -39, 124, -39, 443, -39 841 1.1 mrg }; 842 1.1.1.5 mrg 843 1.1.1.5 mrg /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. 844 1.1.1.5 mrg Performed when YYTABLE does not specify something else to do. Zero 845 1.1.1.5 mrg means the default is an error. */ 846 1.1.1.5 mrg static const yytype_int8 yydefact[] = 847 1.1.1.5 mrg { 848 1.1.1.5 mrg 0, 0, 10, 11, 12, 13, 0, 0, 0, 0, 849 1.1.1.5 mrg 0, 0, 0, 0, 0, 0, 0, 45, 44, 0, 850 1.1.1.5 mrg 0, 0, 7, 2, 8, 6, 0, 0, 0, 0, 851 1.1.1.5 mrg 0, 0, 0, 0, 0, 0, 0, 0, 44, 24, 852 1.1.1.5 mrg 0, 1, 3, 4, 0, 0, 0, 0, 0, 0, 853 1.1.1.5 mrg 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 854 1.1.1.5 mrg 23, 0, 0, 0, 46, 0, 0, 48, 0, 0, 855 1.1.1.5 mrg 0, 0, 0, 0, 9, 14, 5, 32, 31, 25, 856 1.1.1.5 mrg 30, 27, 28, 26, 29, 21, 22, 15, 16, 17, 857 1.1.1.5 mrg 18, 19, 20, 33, 0, 35, 36, 0, 0, 38, 858 1.1.1.5 mrg 0, 39, 40, 0, 0, 43, 0, 47, 0, 49, 859 1.1.1.5 mrg 0, 0, 34, 37, 0, 42, 0, 41 860 1.1 mrg }; 861 1.1.1.5 mrg 862 1.1.1.5 mrg /* YYPGOTO[NTERM-NUM]. */ 863 1.1.1.5 mrg static const yytype_int8 yypgoto[] = 864 1.1.1.5 mrg { 865 1.1.1.5 mrg -39, -39, -39, 70, -19, -39, -39 866 1.1 mrg }; 867 1.1.1.5 mrg 868 1.1.1.5 mrg /* YYDEFGOTO[NTERM-NUM]. */ 869 1.1.1.5 mrg static const yytype_int8 yydefgoto[] = 870 1.1.1.5 mrg { 871 1.1.1.5 mrg -1, 21, 22, 23, 24, 65, 68 872 1.1 mrg }; 873 1.1.1.5 mrg 874 1.1.1.5 mrg /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If 875 1.1.1.5 mrg positive, shift that token. If negative, reduce the rule whose 876 1.1.1.5 mrg number is the opposite. If YYTABLE_NINF, syntax error. */ 877 1.1.1.5 mrg static const yytype_int8 yytable[] = 878 1.1.1.5 mrg { 879 1.1.1.5 mrg 39, 40, 59, 60, 96, 97, 25, 61, 62, 63, 880 1.1.1.5 mrg 64, 66, 67, 69, 70, 71, 72, 73, 74, 56, 881 1.1.1.5 mrg 57, 58, 37, 59, 60, 77, 78, 79, 80, 81, 882 1.1.1.5 mrg 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 883 1.1.1.5 mrg 92, -7, 1, 26, -7, 27, 2, 3, 4, 5, 884 1.1.1.5 mrg 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 885 1.1.1.5 mrg 16, 17, 18, 54, 55, 56, 57, 58, 28, 59, 886 1.1.1.5 mrg 60, 99, 100, 29, 19, 106, 30, 31, 107, 108, 887 1.1.1.5 mrg 32, 109, 20, 33, 110, 111, 34, 35, 36, 41, 888 1.1.1.5 mrg 43, 76, 42, 0, 0, 116, 2, 3, 4, 5, 889 1.1.1.5 mrg 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 890 1.1.1.5 mrg 16, 17, 18, 0, 0, 0, 0, 0, 0, 0, 891 1.1.1.5 mrg 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 892 1.1.1.5 mrg 0, 0, 20, 6, 7, 8, 9, 10, 11, 12, 893 1.1.1.5 mrg 13, 14, 15, 16, 17, 38, 0, 0, 0, 0, 894 1.1.1.5 mrg 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 895 1.1.1.5 mrg 0, 0, 0, 0, 0, 20, 44, 45, 46, 47, 896 1.1.1.5 mrg 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 897 1.1.1.5 mrg 58, 0, 59, 60, 0, 0, 0, 94, 44, 45, 898 1.1.1.5 mrg 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 899 1.1.1.5 mrg 56, 57, 58, 0, 59, 60, 0, 0, 0, 98, 900 1.1.1.5 mrg 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 901 1.1.1.5 mrg 54, 55, 56, 57, 58, 0, 59, 60, 0, 0, 902 1.1.1.5 mrg 0, 103, 44, 45, 46, 47, 48, 49, 50, 51, 903 1.1.1.5 mrg 52, 53, 54, 55, 56, 57, 58, 0, 59, 60, 904 1.1.1.5 mrg 0, 0, 0, 104, 44, 45, 46, 47, 48, 49, 905 1.1.1.5 mrg 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, 906 1.1.1.5 mrg 59, 60, 0, 0, 0, 114, 44, 45, 46, 47, 907 1.1.1.5 mrg 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 908 1.1.1.5 mrg 58, 0, 59, 60, 0, 0, 75, 44, 45, 46, 909 1.1.1.5 mrg 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 910 1.1.1.5 mrg 57, 58, 0, 59, 60, 0, 0, 93, 44, 45, 911 1.1.1.5 mrg 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 912 1.1.1.5 mrg 56, 57, 58, 0, 59, 60, 0, 0, 95, 44, 913 1.1.1.5 mrg 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 914 1.1.1.5 mrg 55, 56, 57, 58, 0, 59, 60, 0, 0, 101, 915 1.1.1.5 mrg 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 916 1.1.1.5 mrg 54, 55, 56, 57, 58, 0, 59, 60, 0, 0, 917 1.1.1.5 mrg 102, 44, 45, 46, 47, 48, 49, 50, 51, 52, 918 1.1.1.5 mrg 53, 54, 55, 56, 57, 58, 0, 59, 60, 0, 919 1.1.1.5 mrg 0, 105, 44, 45, 46, 47, 48, 49, 50, 51, 920 1.1.1.5 mrg 52, 53, 54, 55, 56, 57, 58, 0, 59, 60, 921 1.1.1.5 mrg 0, 0, 112, 44, 45, 46, 47, 48, 49, 50, 922 1.1.1.5 mrg 51, 52, 53, 54, 55, 56, 57, 58, 0, 59, 923 1.1.1.5 mrg 60, 0, 0, 113, 44, 45, 46, 47, 48, 49, 924 1.1.1.5 mrg 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, 925 1.1.1.5 mrg 59, 60, 0, 0, 115, 44, 45, 46, 47, 48, 926 1.1.1.5 mrg 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 927 1.1.1.5 mrg 0, 59, 60, 0, 0, 117, 44, 45, 46, 47, 928 1.1.1.5 mrg 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 929 1.1.1.5 mrg 58, 0, 59, 60, 45, 46, 47, 48, 49, 50, 930 1.1.1.5 mrg 51, 52, 53, 54, 55, 56, 57, 58, 0, 59, 931 1.1.1.5 mrg 60, 46, 47, 48, 49, 50, 51, 52, 53, 54, 932 1.1.1.5 mrg 55, 56, 57, 58, 0, 59, 60, -8, -8, -8, 933 1.1.1.5 mrg -8, -8, -8, 52, 53, 54, 55, 56, 57, 58, 934 1.1.1.5 mrg 0, 59, 60 935 1.1 mrg }; 936 1.1.1.5 mrg 937 1.1.1.5 mrg static const yytype_int8 yycheck[] = 938 1.1.1.5 mrg { 939 1.1.1.5 mrg 19, 20, 38, 39, 42, 43, 3, 26, 27, 28, 940 1.1.1.5 mrg 29, 30, 31, 32, 33, 34, 35, 36, 37, 34, 941 1.1.1.5 mrg 35, 36, 40, 38, 39, 44, 45, 46, 47, 48, 942 1.1.1.5 mrg 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 943 1.1.1.5 mrg 59, 0, 1, 41, 3, 41, 5, 6, 7, 8, 944 1.1.1.5 mrg 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 945 1.1.1.5 mrg 19, 20, 21, 32, 33, 34, 35, 36, 41, 38, 946 1.1.1.5 mrg 39, 42, 43, 41, 33, 94, 41, 41, 97, 98, 947 1.1.1.5 mrg 41, 100, 41, 41, 103, 104, 41, 41, 41, 0, 948 1.1.1.5 mrg 3, 3, 22, -1, -1, 114, 5, 6, 7, 8, 949 1.1.1.5 mrg 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 950 1.1.1.5 mrg 19, 20, 21, -1, -1, -1, -1, -1, -1, -1, 951 1.1.1.5 mrg -1, -1, -1, -1, 33, -1, -1, -1, -1, -1, 952 1.1.1.5 mrg -1, -1, 41, 9, 10, 11, 12, 13, 14, 15, 953 1.1.1.5 mrg 16, 17, 18, 19, 20, 21, -1, -1, -1, -1, 954 1.1.1.5 mrg -1, -1, -1, -1, -1, -1, -1, 33, -1, -1, 955 1.1.1.5 mrg -1, -1, -1, -1, -1, 41, 22, 23, 24, 25, 956 1.1.1.5 mrg 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 957 1.1.1.5 mrg 36, -1, 38, 39, -1, -1, -1, 43, 22, 23, 958 1.1.1.5 mrg 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 959 1.1.1.5 mrg 34, 35, 36, -1, 38, 39, -1, -1, -1, 43, 960 1.1.1.5 mrg 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 961 1.1.1.5 mrg 32, 33, 34, 35, 36, -1, 38, 39, -1, -1, 962 1.1.1.5 mrg -1, 43, 22, 23, 24, 25, 26, 27, 28, 29, 963 1.1.1.5 mrg 30, 31, 32, 33, 34, 35, 36, -1, 38, 39, 964 1.1.1.5 mrg -1, -1, -1, 43, 22, 23, 24, 25, 26, 27, 965 1.1.1.5 mrg 28, 29, 30, 31, 32, 33, 34, 35, 36, -1, 966 1.1.1.5 mrg 38, 39, -1, -1, -1, 43, 22, 23, 24, 25, 967 1.1.1.5 mrg 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 968 1.1.1.5 mrg 36, -1, 38, 39, -1, -1, 42, 22, 23, 24, 969 1.1.1.5 mrg 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 970 1.1.1.5 mrg 35, 36, -1, 38, 39, -1, -1, 42, 22, 23, 971 1.1.1.5 mrg 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 972 1.1.1.5 mrg 34, 35, 36, -1, 38, 39, -1, -1, 42, 22, 973 1.1.1.5 mrg 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 974 1.1.1.5 mrg 33, 34, 35, 36, -1, 38, 39, -1, -1, 42, 975 1.1.1.5 mrg 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 976 1.1.1.5 mrg 32, 33, 34, 35, 36, -1, 38, 39, -1, -1, 977 1.1.1.5 mrg 42, 22, 23, 24, 25, 26, 27, 28, 29, 30, 978 1.1.1.5 mrg 31, 32, 33, 34, 35, 36, -1, 38, 39, -1, 979 1.1.1.5 mrg -1, 42, 22, 23, 24, 25, 26, 27, 28, 29, 980 1.1.1.5 mrg 30, 31, 32, 33, 34, 35, 36, -1, 38, 39, 981 1.1.1.5 mrg -1, -1, 42, 22, 23, 24, 25, 26, 27, 28, 982 1.1.1.5 mrg 29, 30, 31, 32, 33, 34, 35, 36, -1, 38, 983 1.1.1.5 mrg 39, -1, -1, 42, 22, 23, 24, 25, 26, 27, 984 1.1.1.5 mrg 28, 29, 30, 31, 32, 33, 34, 35, 36, -1, 985 1.1.1.5 mrg 38, 39, -1, -1, 42, 22, 23, 24, 25, 26, 986 1.1.1.5 mrg 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 987 1.1.1.5 mrg -1, 38, 39, -1, -1, 42, 22, 23, 24, 25, 988 1.1.1.5 mrg 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 989 1.1.1.5 mrg 36, -1, 38, 39, 23, 24, 25, 26, 27, 28, 990 1.1.1.5 mrg 29, 30, 31, 32, 33, 34, 35, 36, -1, 38, 991 1.1.1.5 mrg 39, 24, 25, 26, 27, 28, 29, 30, 31, 32, 992 1.1.1.5 mrg 33, 34, 35, 36, -1, 38, 39, 24, 25, 26, 993 1.1.1.5 mrg 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 994 1.1.1.5 mrg -1, 38, 39 995 1.1 mrg }; 996 1.1.1.5 mrg 997 1.1.1.5 mrg /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing 998 1.1.1.5 mrg symbol of state STATE-NUM. */ 999 1.1.1.5 mrg static const yytype_int8 yystos[] = 1000 1.1.1.5 mrg { 1001 1.1.1.5 mrg 0, 1, 5, 6, 7, 8, 9, 10, 11, 12, 1002 1.1.1.5 mrg 13, 14, 15, 16, 17, 18, 19, 20, 21, 33, 1003 1.1.1.5 mrg 41, 45, 46, 47, 48, 3, 41, 41, 41, 41, 1004 1.1.1.5 mrg 41, 41, 41, 41, 41, 41, 41, 40, 21, 48, 1005 1.1.1.5 mrg 48, 0, 47, 3, 22, 23, 24, 25, 26, 27, 1006 1.1.1.5 mrg 28, 29, 30, 31, 32, 33, 34, 35, 36, 38, 1007 1.1.1.5 mrg 39, 48, 48, 48, 48, 49, 48, 48, 50, 48, 1008 1.1.1.5 mrg 48, 48, 48, 48, 48, 42, 3, 48, 48, 48, 1009 1.1.1.5 mrg 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 1010 1.1.1.5 mrg 48, 48, 48, 42, 43, 42, 42, 43, 43, 42, 1011 1.1.1.5 mrg 43, 42, 42, 43, 43, 42, 48, 48, 48, 48, 1012 1.1.1.5 mrg 48, 48, 42, 42, 43, 42, 48, 42 1013 1.1 mrg }; 1014 1.1 mrg 1015 1.1.1.5 mrg /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ 1016 1.1.1.5 mrg static const yytype_int8 yyr1[] = 1017 1.1.1.5 mrg { 1018 1.1.1.5 mrg 0, 44, 45, 45, 46, 46, 46, 47, 47, 47, 1019 1.1.1.5 mrg 47, 47, 47, 47, 48, 48, 48, 48, 48, 48, 1020 1.1.1.5 mrg 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 1021 1.1.1.5 mrg 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 1022 1.1.1.5 mrg 48, 48, 48, 48, 48, 48, 49, 49, 50, 50 1023 1.1 mrg }; 1024 1.1 mrg 1025 1.1.1.5 mrg /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ 1026 1.1.1.5 mrg static const yytype_int8 yyr2[] = 1027 1.1.1.5 mrg { 1028 1.1.1.5 mrg 0, 2, 1, 2, 2, 3, 2, 0, 1, 3, 1029 1.1.1.5 mrg 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 1030 1.1.1.5 mrg 3, 3, 3, 2, 2, 3, 3, 3, 3, 3, 1031 1.1.1.5 mrg 3, 3, 3, 4, 6, 4, 4, 6, 4, 4, 1032 1.1.1.5 mrg 4, 8, 6, 4, 1, 1, 1, 3, 1, 3 1033 1.1 mrg }; 1034 1.1 mrg 1035 1.1 mrg 1036 1.1.1.5 mrg enum { YYENOMEM = -2 }; 1037 1.1 mrg 1038 1.1.1.5 mrg #define yyerrok (yyerrstatus = 0) 1039 1.1.1.5 mrg #define yyclearin (yychar = YYEMPTY) 1040 1.1.1.4 mrg 1041 1.1.1.5 mrg #define YYACCEPT goto yyacceptlab 1042 1.1.1.5 mrg #define YYABORT goto yyabortlab 1043 1.1.1.5 mrg #define YYERROR goto yyerrorlab 1044 1.1.1.5 mrg 1045 1.1.1.5 mrg 1046 1.1.1.5 mrg #define YYRECOVERING() (!!yyerrstatus) 1047 1.1.1.5 mrg 1048 1.1.1.5 mrg #define YYBACKUP(Token, Value) \ 1049 1.1.1.5 mrg do \ 1050 1.1.1.5 mrg if (yychar == YYEMPTY) \ 1051 1.1.1.5 mrg { \ 1052 1.1.1.5 mrg yychar = (Token); \ 1053 1.1.1.5 mrg yylval = (Value); \ 1054 1.1.1.5 mrg YYPOPSTACK (yylen); \ 1055 1.1.1.5 mrg yystate = *yyssp; \ 1056 1.1.1.5 mrg goto yybackup; \ 1057 1.1.1.5 mrg } \ 1058 1.1.1.5 mrg else \ 1059 1.1.1.5 mrg { \ 1060 1.1.1.5 mrg yyerror (YY_("syntax error: cannot back up")); \ 1061 1.1.1.5 mrg YYERROR; \ 1062 1.1.1.5 mrg } \ 1063 1.1.1.5 mrg while (0) 1064 1.1.1.5 mrg 1065 1.1.1.5 mrg /* Backward compatibility with an undocumented macro. 1066 1.1.1.5 mrg Use YYerror or YYUNDEF. */ 1067 1.1.1.5 mrg #define YYERRCODE YYUNDEF 1068 1.1 mrg 1069 1.1.1.5 mrg 1070 1.1.1.5 mrg /* Enable debugging if requested. */ 1071 1.1.1.5 mrg #if YYDEBUG 1072 1.1.1.5 mrg 1073 1.1.1.5 mrg # ifndef YYFPRINTF 1074 1.1.1.5 mrg # include <stdio.h> /* INFRINGES ON USER NAME SPACE */ 1075 1.1.1.5 mrg # define YYFPRINTF fprintf 1076 1.1.1.5 mrg # endif 1077 1.1.1.5 mrg 1078 1.1.1.5 mrg # define YYDPRINTF(Args) \ 1079 1.1.1.5 mrg do { \ 1080 1.1.1.5 mrg if (yydebug) \ 1081 1.1.1.5 mrg YYFPRINTF Args; \ 1082 1.1.1.5 mrg } while (0) 1083 1.1.1.5 mrg 1084 1.1.1.5 mrg /* This macro is provided for backward compatibility. */ 1085 1.1.1.5 mrg # ifndef YY_LOCATION_PRINT 1086 1.1.1.5 mrg # define YY_LOCATION_PRINT(File, Loc) ((void) 0) 1087 1.1.1.5 mrg # endif 1088 1.1.1.5 mrg 1089 1.1.1.5 mrg 1090 1.1.1.5 mrg # define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \ 1091 1.1.1.5 mrg do { \ 1092 1.1.1.5 mrg if (yydebug) \ 1093 1.1.1.5 mrg { \ 1094 1.1.1.5 mrg YYFPRINTF (stderr, "%s ", Title); \ 1095 1.1.1.5 mrg yy_symbol_print (stderr, \ 1096 1.1.1.5 mrg Kind, Value); \ 1097 1.1.1.5 mrg YYFPRINTF (stderr, "\n"); \ 1098 1.1.1.5 mrg } \ 1099 1.1.1.5 mrg } while (0) 1100 1.1.1.5 mrg 1101 1.1.1.5 mrg 1102 1.1.1.5 mrg /*-----------------------------------. 1103 1.1.1.5 mrg | Print this symbol's value on YYO. | 1104 1.1.1.5 mrg `-----------------------------------*/ 1105 1.1.1.5 mrg 1106 1.1.1.5 mrg static void 1107 1.1.1.5 mrg yy_symbol_value_print (FILE *yyo, 1108 1.1.1.5 mrg yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep) 1109 1.1 mrg { 1110 1.1.1.5 mrg FILE *yyoutput = yyo; 1111 1.1.1.5 mrg YYUSE (yyoutput); 1112 1.1.1.5 mrg if (!yyvaluep) 1113 1.1.1.5 mrg return; 1114 1.1.1.5 mrg # ifdef YYPRINT 1115 1.1.1.5 mrg if (yykind < YYNTOKENS) 1116 1.1.1.5 mrg YYPRINT (yyo, yytoknum[yykind], *yyvaluep); 1117 1.1.1.5 mrg # endif 1118 1.1.1.5 mrg YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN 1119 1.1.1.5 mrg YYUSE (yykind); 1120 1.1.1.5 mrg YY_IGNORE_MAYBE_UNINITIALIZED_END 1121 1.1 mrg } 1122 1.1 mrg 1123 1.1 mrg 1124 1.1.1.5 mrg /*---------------------------. 1125 1.1.1.5 mrg | Print this symbol on YYO. | 1126 1.1.1.5 mrg `---------------------------*/ 1127 1.1.1.5 mrg 1128 1.1.1.5 mrg static void 1129 1.1.1.5 mrg yy_symbol_print (FILE *yyo, 1130 1.1.1.5 mrg yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep) 1131 1.1 mrg { 1132 1.1.1.5 mrg YYFPRINTF (yyo, "%s %s (", 1133 1.1.1.5 mrg yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind)); 1134 1.1 mrg 1135 1.1.1.5 mrg yy_symbol_value_print (yyo, yykind, yyvaluep); 1136 1.1.1.5 mrg YYFPRINTF (yyo, ")"); 1137 1.1.1.5 mrg } 1138 1.1.1.5 mrg 1139 1.1.1.5 mrg /*------------------------------------------------------------------. 1140 1.1.1.5 mrg | yy_stack_print -- Print the state stack from its BOTTOM up to its | 1141 1.1.1.5 mrg | TOP (included). | 1142 1.1.1.5 mrg `------------------------------------------------------------------*/ 1143 1.1.1.5 mrg 1144 1.1.1.5 mrg static void 1145 1.1.1.5 mrg yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop) 1146 1.1.1.5 mrg { 1147 1.1.1.5 mrg YYFPRINTF (stderr, "Stack now"); 1148 1.1.1.5 mrg for (; yybottom <= yytop; yybottom++) 1149 1.1 mrg { 1150 1.1.1.5 mrg int yybot = *yybottom; 1151 1.1.1.5 mrg YYFPRINTF (stderr, " %d", yybot); 1152 1.1 mrg } 1153 1.1.1.5 mrg YYFPRINTF (stderr, "\n"); 1154 1.1.1.5 mrg } 1155 1.1 mrg 1156 1.1.1.5 mrg # define YY_STACK_PRINT(Bottom, Top) \ 1157 1.1.1.5 mrg do { \ 1158 1.1.1.5 mrg if (yydebug) \ 1159 1.1.1.5 mrg yy_stack_print ((Bottom), (Top)); \ 1160 1.1.1.5 mrg } while (0) 1161 1.1.1.5 mrg 1162 1.1.1.5 mrg 1163 1.1.1.5 mrg /*------------------------------------------------. 1164 1.1.1.5 mrg | Report that the YYRULE is going to be reduced. | 1165 1.1.1.5 mrg `------------------------------------------------*/ 1166 1.1.1.5 mrg 1167 1.1.1.5 mrg static void 1168 1.1.1.5 mrg yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, 1169 1.1.1.5 mrg int yyrule) 1170 1.1.1.5 mrg { 1171 1.1.1.5 mrg int yylno = yyrline[yyrule]; 1172 1.1.1.5 mrg int yynrhs = yyr2[yyrule]; 1173 1.1.1.5 mrg int yyi; 1174 1.1.1.5 mrg YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n", 1175 1.1.1.5 mrg yyrule - 1, yylno); 1176 1.1.1.5 mrg /* The symbols being reduced. */ 1177 1.1.1.5 mrg for (yyi = 0; yyi < yynrhs; yyi++) 1178 1.1 mrg { 1179 1.1.1.5 mrg YYFPRINTF (stderr, " $%d = ", yyi + 1); 1180 1.1.1.5 mrg yy_symbol_print (stderr, 1181 1.1.1.5 mrg YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]), 1182 1.1.1.5 mrg &yyvsp[(yyi + 1) - (yynrhs)]); 1183 1.1.1.5 mrg YYFPRINTF (stderr, "\n"); 1184 1.1 mrg } 1185 1.1.1.5 mrg } 1186 1.1 mrg 1187 1.1.1.5 mrg # define YY_REDUCE_PRINT(Rule) \ 1188 1.1.1.5 mrg do { \ 1189 1.1.1.5 mrg if (yydebug) \ 1190 1.1.1.5 mrg yy_reduce_print (yyssp, yyvsp, Rule); \ 1191 1.1.1.5 mrg } while (0) 1192 1.1 mrg 1193 1.1.1.5 mrg /* Nonzero means print parse trace. It is left uninitialized so that 1194 1.1.1.5 mrg multiple parsers can coexist. */ 1195 1.1.1.5 mrg int yydebug; 1196 1.1.1.5 mrg #else /* !YYDEBUG */ 1197 1.1.1.5 mrg # define YYDPRINTF(Args) ((void) 0) 1198 1.1.1.5 mrg # define YY_SYMBOL_PRINT(Title, Kind, Value, Location) 1199 1.1.1.5 mrg # define YY_STACK_PRINT(Bottom, Top) 1200 1.1.1.5 mrg # define YY_REDUCE_PRINT(Rule) 1201 1.1.1.5 mrg #endif /* !YYDEBUG */ 1202 1.1.1.4 mrg 1203 1.1 mrg 1204 1.1.1.5 mrg /* YYINITDEPTH -- initial size of the parser's stacks. */ 1205 1.1.1.5 mrg #ifndef YYINITDEPTH 1206 1.1.1.5 mrg # define YYINITDEPTH 200 1207 1.1 mrg #endif 1208 1.1 mrg 1209 1.1.1.5 mrg /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only 1210 1.1.1.5 mrg if the built-in stack extension method is used). 1211 1.1 mrg 1212 1.1.1.5 mrg Do not make this value too large; the results are undefined if 1213 1.1.1.5 mrg YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) 1214 1.1.1.5 mrg evaluated with infinite-precision integer arithmetic. */ 1215 1.1 mrg 1216 1.1.1.5 mrg #ifndef YYMAXDEPTH 1217 1.1.1.5 mrg # define YYMAXDEPTH 10000 1218 1.1.1.5 mrg #endif 1219 1.1 mrg 1220 1.1 mrg 1221 1.1 mrg 1222 1.1 mrg 1223 1.1.1.2 mrg 1224 1.1 mrg 1225 1.1.1.5 mrg /*-----------------------------------------------. 1226 1.1.1.5 mrg | Release the memory associated to this symbol. | 1227 1.1.1.5 mrg `-----------------------------------------------*/ 1228 1.1.1.5 mrg 1229 1.1.1.5 mrg static void 1230 1.1.1.5 mrg yydestruct (const char *yymsg, 1231 1.1.1.5 mrg yysymbol_kind_t yykind, YYSTYPE *yyvaluep) 1232 1.1 mrg { 1233 1.1.1.5 mrg YYUSE (yyvaluep); 1234 1.1.1.5 mrg if (!yymsg) 1235 1.1.1.5 mrg yymsg = "Deleting"; 1236 1.1.1.5 mrg YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp); 1237 1.1.1.5 mrg 1238 1.1.1.5 mrg YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN 1239 1.1.1.5 mrg YYUSE (yykind); 1240 1.1.1.5 mrg YY_IGNORE_MAYBE_UNINITIALIZED_END 1241 1.1 mrg } 1242 1.1.1.2 mrg 1243 1.1.1.5 mrg 1244 1.1.1.5 mrg /* The lookahead symbol. */ 1245 1.1.1.5 mrg int yychar; 1246 1.1.1.5 mrg 1247 1.1.1.5 mrg /* The semantic value of the lookahead symbol. */ 1248 1.1.1.5 mrg YYSTYPE yylval; 1249 1.1.1.5 mrg /* Number of syntax errors so far. */ 1250 1.1.1.5 mrg int yynerrs; 1251 1.1.1.5 mrg 1252 1.1.1.5 mrg 1253 1.1.1.5 mrg 1254 1.1.1.5 mrg 1255 1.1.1.5 mrg /*----------. 1256 1.1.1.5 mrg | yyparse. | 1257 1.1.1.5 mrg `----------*/ 1258 1.1 mrg 1259 1.1 mrg int 1260 1.1.1.5 mrg yyparse (void) 1261 1.1 mrg { 1262 1.1.1.5 mrg yy_state_fast_t yystate; 1263 1.1.1.5 mrg /* Number of tokens to shift before error messages enabled. */ 1264 1.1.1.5 mrg int yyerrstatus; 1265 1.1.1.5 mrg 1266 1.1.1.5 mrg /* The stacks and their tools: 1267 1.1.1.5 mrg 'yyss': related to states. 1268 1.1.1.5 mrg 'yyvs': related to semantic values. 1269 1.1.1.5 mrg 1270 1.1.1.5 mrg Refer to the stacks through separate pointers, to allow yyoverflow 1271 1.1.1.5 mrg to reallocate them elsewhere. */ 1272 1.1.1.5 mrg 1273 1.1.1.5 mrg /* Their size. */ 1274 1.1.1.5 mrg YYPTRDIFF_T yystacksize; 1275 1.1.1.5 mrg 1276 1.1.1.5 mrg /* The state stack. */ 1277 1.1.1.5 mrg yy_state_t yyssa[YYINITDEPTH]; 1278 1.1.1.5 mrg yy_state_t *yyss; 1279 1.1.1.5 mrg yy_state_t *yyssp; 1280 1.1.1.5 mrg 1281 1.1.1.5 mrg /* The semantic value stack. */ 1282 1.1.1.5 mrg YYSTYPE yyvsa[YYINITDEPTH]; 1283 1.1.1.5 mrg YYSTYPE *yyvs; 1284 1.1.1.5 mrg YYSTYPE *yyvsp; 1285 1.1.1.5 mrg 1286 1.1.1.5 mrg int yyn; 1287 1.1.1.5 mrg /* The return value of yyparse. */ 1288 1.1.1.5 mrg int yyresult; 1289 1.1.1.5 mrg /* Lookahead token as an internal (translated) token number. */ 1290 1.1.1.5 mrg yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY; 1291 1.1.1.5 mrg /* The variables used to return semantic value and location from the 1292 1.1.1.5 mrg action routines. */ 1293 1.1.1.5 mrg YYSTYPE yyval; 1294 1.1.1.5 mrg 1295 1.1.1.5 mrg 1296 1.1.1.5 mrg 1297 1.1.1.5 mrg #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) 1298 1.1.1.5 mrg 1299 1.1.1.5 mrg /* The number of symbols on the RHS of the reduced rule. 1300 1.1.1.5 mrg Keep to zero when no symbol should be popped. */ 1301 1.1.1.5 mrg int yylen = 0; 1302 1.1.1.5 mrg 1303 1.1.1.5 mrg yynerrs = 0; 1304 1.1.1.5 mrg yystate = 0; 1305 1.1.1.5 mrg yyerrstatus = 0; 1306 1.1.1.5 mrg 1307 1.1.1.5 mrg yystacksize = YYINITDEPTH; 1308 1.1.1.5 mrg yyssp = yyss = yyssa; 1309 1.1.1.5 mrg yyvsp = yyvs = yyvsa; 1310 1.1.1.5 mrg 1311 1.1.1.5 mrg 1312 1.1.1.5 mrg YYDPRINTF ((stderr, "Starting parse\n")); 1313 1.1.1.5 mrg 1314 1.1.1.5 mrg yychar = YYEMPTY; /* Cause a token to be read. */ 1315 1.1.1.5 mrg goto yysetstate; 1316 1.1.1.5 mrg 1317 1.1.1.5 mrg 1318 1.1.1.5 mrg /*------------------------------------------------------------. 1319 1.1.1.5 mrg | yynewstate -- push a new state, which is found in yystate. | 1320 1.1.1.5 mrg `------------------------------------------------------------*/ 1321 1.1.1.5 mrg yynewstate: 1322 1.1.1.5 mrg /* In all cases, when you get here, the value and location stacks 1323 1.1.1.5 mrg have just been pushed. So pushing a state here evens the stacks. */ 1324 1.1.1.5 mrg yyssp++; 1325 1.1.1.5 mrg 1326 1.1.1.5 mrg 1327 1.1.1.5 mrg /*--------------------------------------------------------------------. 1328 1.1.1.5 mrg | yysetstate -- set current state (the top of the stack) to yystate. | 1329 1.1.1.5 mrg `--------------------------------------------------------------------*/ 1330 1.1.1.5 mrg yysetstate: 1331 1.1.1.5 mrg YYDPRINTF ((stderr, "Entering state %d\n", yystate)); 1332 1.1.1.5 mrg YY_ASSERT (0 <= yystate && yystate < YYNSTATES); 1333 1.1.1.5 mrg YY_IGNORE_USELESS_CAST_BEGIN 1334 1.1.1.5 mrg *yyssp = YY_CAST (yy_state_t, yystate); 1335 1.1.1.5 mrg YY_IGNORE_USELESS_CAST_END 1336 1.1.1.5 mrg YY_STACK_PRINT (yyss, yyssp); 1337 1.1 mrg 1338 1.1.1.5 mrg if (yyss + yystacksize - 1 <= yyssp) 1339 1.1.1.5 mrg #if !defined yyoverflow && !defined YYSTACK_RELOCATE 1340 1.1.1.5 mrg goto yyexhaustedlab; 1341 1.1.1.5 mrg #else 1342 1.1 mrg { 1343 1.1.1.5 mrg /* Get the current used size of the three stacks, in elements. */ 1344 1.1.1.5 mrg YYPTRDIFF_T yysize = yyssp - yyss + 1; 1345 1.1.1.5 mrg 1346 1.1.1.5 mrg # if defined yyoverflow 1347 1.1.1.5 mrg { 1348 1.1.1.5 mrg /* Give user a chance to reallocate the stack. Use copies of 1349 1.1.1.5 mrg these so that the &'s don't force the real ones into 1350 1.1.1.5 mrg memory. */ 1351 1.1.1.5 mrg yy_state_t *yyss1 = yyss; 1352 1.1.1.5 mrg YYSTYPE *yyvs1 = yyvs; 1353 1.1.1.5 mrg 1354 1.1.1.5 mrg /* Each stack pointer address is followed by the size of the 1355 1.1.1.5 mrg data in use in that stack, in bytes. This used to be a 1356 1.1.1.5 mrg conditional around just the two extra args, but that might 1357 1.1.1.5 mrg be undefined if yyoverflow is a macro. */ 1358 1.1.1.5 mrg yyoverflow (YY_("memory exhausted"), 1359 1.1.1.5 mrg &yyss1, yysize * YYSIZEOF (*yyssp), 1360 1.1.1.5 mrg &yyvs1, yysize * YYSIZEOF (*yyvsp), 1361 1.1.1.5 mrg &yystacksize); 1362 1.1.1.5 mrg yyss = yyss1; 1363 1.1.1.5 mrg yyvs = yyvs1; 1364 1.1.1.5 mrg } 1365 1.1.1.5 mrg # else /* defined YYSTACK_RELOCATE */ 1366 1.1.1.5 mrg /* Extend the stack our own way. */ 1367 1.1.1.5 mrg if (YYMAXDEPTH <= yystacksize) 1368 1.1.1.5 mrg goto yyexhaustedlab; 1369 1.1.1.5 mrg yystacksize *= 2; 1370 1.1.1.5 mrg if (YYMAXDEPTH < yystacksize) 1371 1.1.1.5 mrg yystacksize = YYMAXDEPTH; 1372 1.1.1.5 mrg 1373 1.1.1.5 mrg { 1374 1.1.1.5 mrg yy_state_t *yyss1 = yyss; 1375 1.1.1.5 mrg union yyalloc *yyptr = 1376 1.1.1.5 mrg YY_CAST (union yyalloc *, 1377 1.1.1.5 mrg YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize)))); 1378 1.1.1.5 mrg if (! yyptr) 1379 1.1.1.5 mrg goto yyexhaustedlab; 1380 1.1.1.5 mrg YYSTACK_RELOCATE (yyss_alloc, yyss); 1381 1.1.1.5 mrg YYSTACK_RELOCATE (yyvs_alloc, yyvs); 1382 1.1.1.5 mrg # undef YYSTACK_RELOCATE 1383 1.1.1.5 mrg if (yyss1 != yyssa) 1384 1.1.1.5 mrg YYSTACK_FREE (yyss1); 1385 1.1.1.5 mrg } 1386 1.1.1.5 mrg # endif 1387 1.1.1.5 mrg 1388 1.1.1.5 mrg yyssp = yyss + yysize - 1; 1389 1.1.1.5 mrg yyvsp = yyvs + yysize - 1; 1390 1.1.1.5 mrg 1391 1.1.1.5 mrg YY_IGNORE_USELESS_CAST_BEGIN 1392 1.1.1.5 mrg YYDPRINTF ((stderr, "Stack size increased to %ld\n", 1393 1.1.1.5 mrg YY_CAST (long, yystacksize))); 1394 1.1.1.5 mrg YY_IGNORE_USELESS_CAST_END 1395 1.1.1.5 mrg 1396 1.1.1.5 mrg if (yyss + yystacksize - 1 <= yyssp) 1397 1.1.1.5 mrg YYABORT; 1398 1.1 mrg } 1399 1.1.1.5 mrg #endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */ 1400 1.1 mrg 1401 1.1.1.5 mrg if (yystate == YYFINAL) 1402 1.1.1.5 mrg YYACCEPT; 1403 1.1 mrg 1404 1.1.1.5 mrg goto yybackup; 1405 1.1.1.5 mrg 1406 1.1.1.5 mrg 1407 1.1.1.5 mrg /*-----------. 1408 1.1.1.5 mrg | yybackup. | 1409 1.1.1.5 mrg `-----------*/ 1410 1.1.1.5 mrg yybackup: 1411 1.1.1.5 mrg /* Do appropriate processing given the current state. Read a 1412 1.1.1.5 mrg lookahead token if we need one and don't already have one. */ 1413 1.1.1.5 mrg 1414 1.1.1.5 mrg /* First try to decide what to do without reference to lookahead token. */ 1415 1.1.1.5 mrg yyn = yypact[yystate]; 1416 1.1.1.5 mrg if (yypact_value_is_default (yyn)) 1417 1.1.1.5 mrg goto yydefault; 1418 1.1 mrg 1419 1.1.1.5 mrg /* Not known => get a lookahead token if don't already have one. */ 1420 1.1 mrg 1421 1.1.1.5 mrg /* YYCHAR is either empty, or end-of-input, or a valid lookahead. */ 1422 1.1.1.5 mrg if (yychar == YYEMPTY) 1423 1.1 mrg { 1424 1.1.1.5 mrg YYDPRINTF ((stderr, "Reading a token\n")); 1425 1.1.1.5 mrg yychar = yylex (); 1426 1.1 mrg } 1427 1.1.1.5 mrg 1428 1.1.1.5 mrg if (yychar <= YYEOF) 1429 1.1 mrg { 1430 1.1.1.5 mrg yychar = YYEOF; 1431 1.1.1.5 mrg yytoken = YYSYMBOL_YYEOF; 1432 1.1.1.5 mrg YYDPRINTF ((stderr, "Now at end of input.\n")); 1433 1.1 mrg } 1434 1.1.1.5 mrg else if (yychar == YYerror) 1435 1.1 mrg { 1436 1.1.1.5 mrg /* The scanner already issued an error message, process directly 1437 1.1.1.5 mrg to error recovery. But do not keep the error token as 1438 1.1.1.5 mrg lookahead, it is too special and may lead us to an endless 1439 1.1.1.5 mrg loop in error recovery. */ 1440 1.1.1.5 mrg yychar = YYUNDEF; 1441 1.1.1.5 mrg yytoken = YYSYMBOL_YYerror; 1442 1.1.1.5 mrg goto yyerrlab1; 1443 1.1 mrg } 1444 1.1.1.5 mrg else 1445 1.1 mrg { 1446 1.1.1.5 mrg yytoken = YYTRANSLATE (yychar); 1447 1.1.1.5 mrg YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); 1448 1.1.1.4 mrg } 1449 1.1.1.5 mrg 1450 1.1.1.5 mrg /* If the proper action on seeing token YYTOKEN is to reduce or to 1451 1.1.1.5 mrg detect an error, take that action. */ 1452 1.1.1.5 mrg yyn += yytoken; 1453 1.1.1.5 mrg if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) 1454 1.1.1.5 mrg goto yydefault; 1455 1.1.1.5 mrg yyn = yytable[yyn]; 1456 1.1.1.5 mrg if (yyn <= 0) 1457 1.1.1.4 mrg { 1458 1.1.1.5 mrg if (yytable_value_is_error (yyn)) 1459 1.1.1.5 mrg goto yyerrlab; 1460 1.1.1.5 mrg yyn = -yyn; 1461 1.1.1.5 mrg goto yyreduce; 1462 1.1 mrg } 1463 1.1 mrg 1464 1.1.1.5 mrg /* Count tokens shifted since error; after three, turn off error 1465 1.1.1.5 mrg status. */ 1466 1.1.1.5 mrg if (yyerrstatus) 1467 1.1.1.5 mrg yyerrstatus--; 1468 1.1.1.5 mrg 1469 1.1.1.5 mrg /* Shift the lookahead token. */ 1470 1.1.1.5 mrg YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); 1471 1.1.1.5 mrg yystate = yyn; 1472 1.1.1.5 mrg YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN 1473 1.1.1.5 mrg *++yyvsp = yylval; 1474 1.1.1.5 mrg YY_IGNORE_MAYBE_UNINITIALIZED_END 1475 1.1.1.5 mrg 1476 1.1.1.5 mrg /* Discard the shifted token. */ 1477 1.1.1.5 mrg yychar = YYEMPTY; 1478 1.1.1.5 mrg goto yynewstate; 1479 1.1.1.5 mrg 1480 1.1.1.5 mrg 1481 1.1.1.5 mrg /*-----------------------------------------------------------. 1482 1.1.1.5 mrg | yydefault -- do the default action for the current state. | 1483 1.1.1.5 mrg `-----------------------------------------------------------*/ 1484 1.1.1.5 mrg yydefault: 1485 1.1.1.5 mrg yyn = yydefact[yystate]; 1486 1.1.1.5 mrg if (yyn == 0) 1487 1.1.1.5 mrg goto yyerrlab; 1488 1.1.1.5 mrg goto yyreduce; 1489 1.1.1.5 mrg 1490 1.1.1.5 mrg 1491 1.1.1.5 mrg /*-----------------------------. 1492 1.1.1.5 mrg | yyreduce -- do a reduction. | 1493 1.1.1.5 mrg `-----------------------------*/ 1494 1.1 mrg yyreduce: 1495 1.1.1.5 mrg /* yyn is the number of a rule to reduce with. */ 1496 1.1.1.5 mrg yylen = yyr2[yyn]; 1497 1.1.1.5 mrg 1498 1.1.1.5 mrg /* If YYLEN is nonzero, implement the default value of the action: 1499 1.1.1.5 mrg '$$ = $1'. 1500 1.1 mrg 1501 1.1.1.5 mrg Otherwise, the following line sets YYVAL to garbage. 1502 1.1.1.5 mrg This behavior is undocumented and Bison 1503 1.1.1.5 mrg users should not rely upon it. Assigning to YYVAL 1504 1.1.1.5 mrg unconditionally makes the parser a bit smaller, and it avoids a 1505 1.1.1.5 mrg GCC warning that YYVAL may be used uninitialized. */ 1506 1.1.1.5 mrg yyval = yyvsp[1-yylen]; 1507 1.1.1.5 mrg 1508 1.1.1.5 mrg 1509 1.1.1.5 mrg YY_REDUCE_PRINT (yyn); 1510 1.1.1.5 mrg switch (yyn) 1511 1.1 mrg { 1512 1.1.1.5 mrg case 6: 1513 1.1.1.3 mrg #line 173 "../../../gmp/demos/calc/calc.y" 1514 1.1.1.5 mrg { sp = stack[0]; yyerrok; } 1515 1.1.1.5 mrg #line 1516 "calc.c" 1516 1.1.1.5 mrg break; 1517 1.1.1.5 mrg 1518 1.1.1.5 mrg case 8: 1519 1.1.1.3 mrg #line 177 "../../../gmp/demos/calc/calc.y" 1520 1.1.1.5 mrg { 1521 1.1 mrg mpz_out_str (stdout, obase, sp); putchar ('\n'); 1522 1.1 mrg sp--; 1523 1.1 mrg CHECK_EMPTY (); 1524 1.1 mrg } 1525 1.1.1.5 mrg #line 1526 "calc.c" 1526 1.1.1.5 mrg break; 1527 1.1.1.5 mrg 1528 1.1.1.5 mrg case 9: 1529 1.1.1.3 mrg #line 182 "../../../gmp/demos/calc/calc.y" 1530 1.1.1.5 mrg { 1531 1.1.1.5 mrg CHECK_VARIABLE ((yyvsp[-2].var)); 1532 1.1.1.5 mrg mpz_swap (variable[(yyvsp[-2].var)], sp); 1533 1.1 mrg sp--; 1534 1.1 mrg CHECK_EMPTY (); 1535 1.1 mrg } 1536 1.1.1.5 mrg #line 1537 "calc.c" 1537 1.1.1.5 mrg break; 1538 1.1.1.5 mrg 1539 1.1.1.5 mrg case 10: 1540 1.1.1.3 mrg #line 188 "../../../gmp/demos/calc/calc.y" 1541 1.1.1.5 mrg { calc_help (); } 1542 1.1.1.5 mrg #line 1543 "calc.c" 1543 1.1.1.5 mrg break; 1544 1.1.1.5 mrg 1545 1.1.1.5 mrg case 11: 1546 1.1.1.3 mrg #line 189 "../../../gmp/demos/calc/calc.y" 1547 1.1.1.5 mrg { ibase = 16; obase = -16; } 1548 1.1.1.5 mrg #line 1549 "calc.c" 1549 1.1.1.5 mrg break; 1550 1.1.1.5 mrg 1551 1.1.1.5 mrg case 12: 1552 1.1.1.3 mrg #line 190 "../../../gmp/demos/calc/calc.y" 1553 1.1.1.5 mrg { ibase = 0; obase = 10; } 1554 1.1.1.5 mrg #line 1555 "calc.c" 1555 1.1.1.5 mrg break; 1556 1.1.1.5 mrg 1557 1.1.1.5 mrg case 13: 1558 1.1.1.3 mrg #line 191 "../../../gmp/demos/calc/calc.y" 1559 1.1.1.5 mrg { exit (0); } 1560 1.1.1.5 mrg #line 1561 "calc.c" 1561 1.1.1.5 mrg break; 1562 1.1.1.5 mrg 1563 1.1.1.5 mrg case 15: 1564 1.1.1.3 mrg #line 198 "../../../gmp/demos/calc/calc.y" 1565 1.1.1.5 mrg { sp--; mpz_add (sp, sp, sp+1); } 1566 1.1.1.5 mrg #line 1567 "calc.c" 1567 1.1.1.5 mrg break; 1568 1.1.1.5 mrg 1569 1.1.1.5 mrg case 16: 1570 1.1.1.3 mrg #line 199 "../../../gmp/demos/calc/calc.y" 1571 1.1.1.5 mrg { sp--; mpz_sub (sp, sp, sp+1); } 1572 1.1.1.5 mrg #line 1573 "calc.c" 1573 1.1.1.5 mrg break; 1574 1.1.1.5 mrg 1575 1.1.1.5 mrg case 17: 1576 1.1.1.3 mrg #line 200 "../../../gmp/demos/calc/calc.y" 1577 1.1.1.5 mrg { sp--; mpz_mul (sp, sp, sp+1); } 1578 1.1.1.5 mrg #line 1579 "calc.c" 1579 1.1.1.5 mrg break; 1580 1.1.1.5 mrg 1581 1.1.1.5 mrg case 18: 1582 1.1.1.3 mrg #line 201 "../../../gmp/demos/calc/calc.y" 1583 1.1.1.5 mrg { sp--; mpz_fdiv_q (sp, sp, sp+1); } 1584 1.1.1.5 mrg #line 1585 "calc.c" 1585 1.1.1.5 mrg break; 1586 1.1.1.5 mrg 1587 1.1.1.5 mrg case 19: 1588 1.1.1.3 mrg #line 202 "../../../gmp/demos/calc/calc.y" 1589 1.1.1.5 mrg { sp--; mpz_fdiv_r (sp, sp, sp+1); } 1590 1.1.1.5 mrg #line 1591 "calc.c" 1591 1.1.1.5 mrg break; 1592 1.1.1.5 mrg 1593 1.1.1.5 mrg case 20: 1594 1.1.1.3 mrg #line 203 "../../../gmp/demos/calc/calc.y" 1595 1.1.1.5 mrg { CHECK_UI ("Exponent", sp); 1596 1.1 mrg sp--; mpz_pow_ui (sp, sp, mpz_get_ui (sp+1)); } 1597 1.1.1.5 mrg #line 1598 "calc.c" 1598 1.1.1.5 mrg break; 1599 1.1.1.5 mrg 1600 1.1.1.5 mrg case 21: 1601 1.1.1.3 mrg #line 205 "../../../gmp/demos/calc/calc.y" 1602 1.1.1.5 mrg { CHECK_UI ("Shift count", sp); 1603 1.1 mrg sp--; mpz_mul_2exp (sp, sp, mpz_get_ui (sp+1)); } 1604 1.1.1.5 mrg #line 1605 "calc.c" 1605 1.1.1.5 mrg break; 1606 1.1.1.5 mrg 1607 1.1.1.5 mrg case 22: 1608 1.1.1.3 mrg #line 207 "../../../gmp/demos/calc/calc.y" 1609 1.1.1.5 mrg { CHECK_UI ("Shift count", sp); 1610 1.1 mrg sp--; mpz_fdiv_q_2exp (sp, sp, mpz_get_ui (sp+1)); } 1611 1.1.1.5 mrg #line 1612 "calc.c" 1612 1.1.1.5 mrg break; 1613 1.1.1.5 mrg 1614 1.1.1.5 mrg case 23: 1615 1.1.1.3 mrg #line 209 "../../../gmp/demos/calc/calc.y" 1616 1.1.1.5 mrg { CHECK_UI ("Factorial", sp); 1617 1.1 mrg mpz_fac_ui (sp, mpz_get_ui (sp)); } 1618 1.1.1.5 mrg #line 1619 "calc.c" 1619 1.1.1.5 mrg break; 1620 1.1.1.5 mrg 1621 1.1.1.5 mrg case 24: 1622 1.1.1.3 mrg #line 211 "../../../gmp/demos/calc/calc.y" 1623 1.1.1.5 mrg { mpz_neg (sp, sp); } 1624 1.1.1.5 mrg #line 1625 "calc.c" 1625 1.1.1.5 mrg break; 1626 1.1.1.5 mrg 1627 1.1.1.5 mrg case 25: 1628 1.1.1.3 mrg #line 213 "../../../gmp/demos/calc/calc.y" 1629 1.1.1.5 mrg { sp--; mpz_set_ui (sp, mpz_cmp (sp, sp+1) < 0); } 1630 1.1.1.5 mrg #line 1631 "calc.c" 1631 1.1.1.5 mrg break; 1632 1.1.1.5 mrg 1633 1.1.1.5 mrg case 26: 1634 1.1.1.3 mrg #line 214 "../../../gmp/demos/calc/calc.y" 1635 1.1.1.5 mrg { sp--; mpz_set_ui (sp, mpz_cmp (sp, sp+1) <= 0); } 1636 1.1.1.5 mrg #line 1637 "calc.c" 1637 1.1.1.5 mrg break; 1638 1.1.1.5 mrg 1639 1.1.1.5 mrg case 27: 1640 1.1.1.3 mrg #line 215 "../../../gmp/demos/calc/calc.y" 1641 1.1.1.5 mrg { sp--; mpz_set_ui (sp, mpz_cmp (sp, sp+1) == 0); } 1642 1.1.1.5 mrg #line 1643 "calc.c" 1643 1.1.1.5 mrg break; 1644 1.1.1.5 mrg 1645 1.1.1.5 mrg case 28: 1646 1.1.1.3 mrg #line 216 "../../../gmp/demos/calc/calc.y" 1647 1.1.1.5 mrg { sp--; mpz_set_ui (sp, mpz_cmp (sp, sp+1) != 0); } 1648 1.1.1.5 mrg #line 1649 "calc.c" 1649 1.1.1.5 mrg break; 1650 1.1.1.5 mrg 1651 1.1.1.5 mrg case 29: 1652 1.1.1.3 mrg #line 217 "../../../gmp/demos/calc/calc.y" 1653 1.1.1.5 mrg { sp--; mpz_set_ui (sp, mpz_cmp (sp, sp+1) >= 0); } 1654 1.1.1.5 mrg #line 1655 "calc.c" 1655 1.1.1.5 mrg break; 1656 1.1.1.5 mrg 1657 1.1.1.5 mrg case 30: 1658 1.1.1.3 mrg #line 218 "../../../gmp/demos/calc/calc.y" 1659 1.1.1.5 mrg { sp--; mpz_set_ui (sp, mpz_cmp (sp, sp+1) > 0); } 1660 1.1.1.5 mrg #line 1661 "calc.c" 1661 1.1.1.5 mrg break; 1662 1.1.1.5 mrg 1663 1.1.1.5 mrg case 31: 1664 1.1.1.3 mrg #line 220 "../../../gmp/demos/calc/calc.y" 1665 1.1.1.5 mrg { sp--; mpz_set_ui (sp, mpz_sgn (sp) && mpz_sgn (sp+1)); } 1666 1.1.1.5 mrg #line 1667 "calc.c" 1667 1.1.1.5 mrg break; 1668 1.1.1.5 mrg 1669 1.1.1.5 mrg case 32: 1670 1.1.1.3 mrg #line 221 "../../../gmp/demos/calc/calc.y" 1671 1.1.1.5 mrg { sp--; mpz_set_ui (sp, mpz_sgn (sp) || mpz_sgn (sp+1)); } 1672 1.1.1.5 mrg #line 1673 "calc.c" 1673 1.1.1.5 mrg break; 1674 1.1.1.5 mrg 1675 1.1.1.5 mrg case 33: 1676 1.1.1.3 mrg #line 223 "../../../gmp/demos/calc/calc.y" 1677 1.1.1.5 mrg { mpz_abs (sp, sp); } 1678 1.1.1.5 mrg #line 1679 "calc.c" 1679 1.1.1.5 mrg break; 1680 1.1.1.5 mrg 1681 1.1.1.5 mrg case 34: 1682 1.1.1.3 mrg #line 224 "../../../gmp/demos/calc/calc.y" 1683 1.1.1.5 mrg { sp--; CHECK_UI ("Binomial base", sp+1); 1684 1.1 mrg mpz_bin_ui (sp, sp, mpz_get_ui (sp+1)); } 1685 1.1.1.5 mrg #line 1686 "calc.c" 1686 1.1.1.5 mrg break; 1687 1.1.1.5 mrg 1688 1.1.1.5 mrg case 35: 1689 1.1.1.3 mrg #line 226 "../../../gmp/demos/calc/calc.y" 1690 1.1.1.5 mrg { CHECK_UI ("Fibonacci", sp); 1691 1.1 mrg mpz_fib_ui (sp, mpz_get_ui (sp)); } 1692 1.1.1.5 mrg #line 1693 "calc.c" 1693 1.1.1.5 mrg break; 1694 1.1.1.5 mrg 1695 1.1.1.5 mrg case 37: 1696 1.1.1.3 mrg #line 229 "../../../gmp/demos/calc/calc.y" 1697 1.1.1.5 mrg { sp--; mpz_set_si (sp, 1698 1.1 mrg mpz_kronecker (sp, sp+1)); } 1699 1.1.1.5 mrg #line 1700 "calc.c" 1700 1.1.1.5 mrg break; 1701 1.1.1.5 mrg 1702 1.1.1.5 mrg case 39: 1703 1.1.1.3 mrg #line 232 "../../../gmp/demos/calc/calc.y" 1704 1.1.1.5 mrg { CHECK_UI ("Lucas number", sp); 1705 1.1 mrg mpz_lucnum_ui (sp, mpz_get_ui (sp)); } 1706 1.1.1.5 mrg #line 1707 "calc.c" 1707 1.1.1.5 mrg break; 1708 1.1.1.5 mrg 1709 1.1.1.5 mrg case 40: 1710 1.1.1.3 mrg #line 234 "../../../gmp/demos/calc/calc.y" 1711 1.1.1.5 mrg { mpz_nextprime (sp, sp); } 1712 1.1.1.5 mrg #line 1713 "calc.c" 1713 1.1.1.5 mrg break; 1714 1.1.1.5 mrg 1715 1.1.1.5 mrg case 41: 1716 1.1.1.3 mrg #line 235 "../../../gmp/demos/calc/calc.y" 1717 1.1.1.5 mrg { sp -= 2; mpz_powm (sp, sp, sp+1, sp+2); } 1718 1.1.1.5 mrg #line 1719 "calc.c" 1719 1.1.1.5 mrg break; 1720 1.1.1.5 mrg 1721 1.1.1.5 mrg case 42: 1722 1.1.1.3 mrg #line 236 "../../../gmp/demos/calc/calc.y" 1723 1.1.1.5 mrg { sp--; CHECK_UI ("Nth-root", sp+1); 1724 1.1 mrg mpz_root (sp, sp, mpz_get_ui (sp+1)); } 1725 1.1.1.5 mrg #line 1726 "calc.c" 1726 1.1.1.5 mrg break; 1727 1.1.1.5 mrg 1728 1.1.1.5 mrg case 43: 1729 1.1.1.3 mrg #line 238 "../../../gmp/demos/calc/calc.y" 1730 1.1.1.5 mrg { mpz_sqrt (sp, sp); } 1731 1.1.1.5 mrg #line 1732 "calc.c" 1732 1.1.1.5 mrg break; 1733 1.1.1.5 mrg 1734 1.1.1.5 mrg case 44: 1735 1.1.1.3 mrg #line 240 "../../../gmp/demos/calc/calc.y" 1736 1.1.1.5 mrg { 1737 1.1 mrg sp++; 1738 1.1 mrg CHECK_OVERFLOW (); 1739 1.1.1.5 mrg CHECK_VARIABLE ((yyvsp[0].var)); 1740 1.1.1.5 mrg mpz_set (sp, variable[(yyvsp[0].var)]); 1741 1.1 mrg } 1742 1.1.1.5 mrg #line 1743 "calc.c" 1743 1.1.1.5 mrg break; 1744 1.1.1.5 mrg 1745 1.1.1.5 mrg case 45: 1746 1.1.1.3 mrg #line 246 "../../../gmp/demos/calc/calc.y" 1747 1.1.1.5 mrg { 1748 1.1 mrg sp++; 1749 1.1 mrg CHECK_OVERFLOW (); 1750 1.1.1.5 mrg if (mpz_set_str (sp, (yyvsp[0].str), ibase) != 0) 1751 1.1 mrg { 1752 1.1.1.5 mrg fprintf (stderr, "Invalid number: %s\n", (yyvsp[0].str)); 1753 1.1 mrg YYERROR; 1754 1.1 mrg } 1755 1.1 mrg } 1756 1.1.1.5 mrg #line 1757 "calc.c" 1757 1.1.1.5 mrg break; 1758 1.1.1.5 mrg 1759 1.1.1.5 mrg case 47: 1760 1.1.1.3 mrg #line 258 "../../../gmp/demos/calc/calc.y" 1761 1.1.1.5 mrg { sp--; mpz_gcd (sp, sp, sp+1); } 1762 1.1.1.5 mrg #line 1763 "calc.c" 1763 1.1.1.5 mrg break; 1764 1.1.1.5 mrg 1765 1.1.1.5 mrg case 49: 1766 1.1.1.3 mrg #line 262 "../../../gmp/demos/calc/calc.y" 1767 1.1.1.5 mrg { sp--; mpz_lcm (sp, sp, sp+1); } 1768 1.1.1.5 mrg #line 1769 "calc.c" 1769 1.1.1.5 mrg break; 1770 1.1.1.5 mrg 1771 1.1.1.5 mrg 1772 1.1.1.5 mrg #line 1773 "calc.c" 1773 1.1.1.5 mrg 1774 1.1.1.5 mrg default: break; 1775 1.1.1.5 mrg } 1776 1.1.1.5 mrg /* User semantic actions sometimes alter yychar, and that requires 1777 1.1.1.5 mrg that yytoken be updated with the new translation. We take the 1778 1.1.1.5 mrg approach of translating immediately before every use of yytoken. 1779 1.1.1.5 mrg One alternative is translating here after every semantic action, 1780 1.1.1.5 mrg but that translation would be missed if the semantic action invokes 1781 1.1.1.5 mrg YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or 1782 1.1.1.5 mrg if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an 1783 1.1.1.5 mrg incorrect destructor might then be invoked immediately. In the 1784 1.1.1.5 mrg case of YYERROR or YYBACKUP, subsequent parser actions might lead 1785 1.1.1.5 mrg to an incorrect destructor call or verbose syntax error message 1786 1.1.1.5 mrg before the lookahead is translated. */ 1787 1.1.1.5 mrg YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc); 1788 1.1.1.5 mrg 1789 1.1.1.5 mrg YYPOPSTACK (yylen); 1790 1.1.1.5 mrg yylen = 0; 1791 1.1.1.5 mrg 1792 1.1.1.5 mrg *++yyvsp = yyval; 1793 1.1.1.5 mrg 1794 1.1.1.5 mrg /* Now 'shift' the result of the reduction. Determine what state 1795 1.1.1.5 mrg that goes to, based on the state we popped back to and the rule 1796 1.1.1.5 mrg number reduced by. */ 1797 1.1.1.5 mrg { 1798 1.1.1.5 mrg const int yylhs = yyr1[yyn] - YYNTOKENS; 1799 1.1.1.5 mrg const int yyi = yypgoto[yylhs] + *yyssp; 1800 1.1.1.5 mrg yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp 1801 1.1.1.5 mrg ? yytable[yyi] 1802 1.1.1.5 mrg : yydefgoto[yylhs]); 1803 1.1.1.5 mrg } 1804 1.1.1.5 mrg 1805 1.1.1.5 mrg goto yynewstate; 1806 1.1.1.5 mrg 1807 1.1.1.5 mrg 1808 1.1.1.5 mrg /*--------------------------------------. 1809 1.1.1.5 mrg | yyerrlab -- here on detecting error. | 1810 1.1.1.5 mrg `--------------------------------------*/ 1811 1.1.1.5 mrg yyerrlab: 1812 1.1.1.5 mrg /* Make sure we have latest lookahead translation. See comments at 1813 1.1.1.5 mrg user semantic actions for why this is necessary. */ 1814 1.1.1.5 mrg yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar); 1815 1.1.1.5 mrg /* If not already recovering from an error, report this error. */ 1816 1.1.1.5 mrg if (!yyerrstatus) 1817 1.1 mrg { 1818 1.1.1.5 mrg ++yynerrs; 1819 1.1.1.5 mrg yyerror (YY_("syntax error")); 1820 1.1.1.5 mrg } 1821 1.1.1.5 mrg 1822 1.1.1.5 mrg if (yyerrstatus == 3) 1823 1.1.1.5 mrg { 1824 1.1.1.5 mrg /* If just tried and failed to reuse lookahead token after an 1825 1.1.1.5 mrg error, discard it. */ 1826 1.1.1.5 mrg 1827 1.1.1.5 mrg if (yychar <= YYEOF) 1828 1.1 mrg { 1829 1.1.1.5 mrg /* Return failure if at end of input. */ 1830 1.1.1.5 mrg if (yychar == YYEOF) 1831 1.1.1.5 mrg YYABORT; 1832 1.1.1.5 mrg } 1833 1.1.1.5 mrg else 1834 1.1.1.5 mrg { 1835 1.1.1.5 mrg yydestruct ("Error: discarding", 1836 1.1.1.5 mrg yytoken, &yylval); 1837 1.1.1.5 mrg yychar = YYEMPTY; 1838 1.1.1.5 mrg } 1839 1.1.1.5 mrg } 1840 1.1.1.5 mrg 1841 1.1.1.5 mrg /* Else will try to reuse lookahead token after shifting the error 1842 1.1.1.5 mrg token. */ 1843 1.1.1.5 mrg goto yyerrlab1; 1844 1.1.1.5 mrg 1845 1.1.1.5 mrg 1846 1.1.1.5 mrg /*---------------------------------------------------. 1847 1.1.1.5 mrg | yyerrorlab -- error raised explicitly by YYERROR. | 1848 1.1.1.5 mrg `---------------------------------------------------*/ 1849 1.1.1.5 mrg yyerrorlab: 1850 1.1.1.5 mrg /* Pacify compilers when the user code never invokes YYERROR and the 1851 1.1.1.5 mrg label yyerrorlab therefore never appears in user code. */ 1852 1.1.1.5 mrg if (0) 1853 1.1.1.5 mrg YYERROR; 1854 1.1.1.5 mrg 1855 1.1.1.5 mrg /* Do not reclaim the symbols of the rule whose action triggered 1856 1.1.1.5 mrg this YYERROR. */ 1857 1.1.1.5 mrg YYPOPSTACK (yylen); 1858 1.1.1.5 mrg yylen = 0; 1859 1.1.1.5 mrg YY_STACK_PRINT (yyss, yyssp); 1860 1.1.1.5 mrg yystate = *yyssp; 1861 1.1.1.5 mrg goto yyerrlab1; 1862 1.1.1.5 mrg 1863 1.1.1.5 mrg 1864 1.1.1.5 mrg /*-------------------------------------------------------------. 1865 1.1.1.5 mrg | yyerrlab1 -- common code for both syntax error and YYERROR. | 1866 1.1.1.5 mrg `-------------------------------------------------------------*/ 1867 1.1.1.5 mrg yyerrlab1: 1868 1.1.1.5 mrg yyerrstatus = 3; /* Each real token shifted decrements this. */ 1869 1.1.1.5 mrg 1870 1.1.1.5 mrg /* Pop stack until we find a state that shifts the error token. */ 1871 1.1.1.5 mrg for (;;) 1872 1.1.1.5 mrg { 1873 1.1.1.5 mrg yyn = yypact[yystate]; 1874 1.1.1.5 mrg if (!yypact_value_is_default (yyn)) 1875 1.1.1.5 mrg { 1876 1.1.1.5 mrg yyn += YYSYMBOL_YYerror; 1877 1.1.1.5 mrg if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror) 1878 1.1.1.4 mrg { 1879 1.1.1.5 mrg yyn = yytable[yyn]; 1880 1.1.1.5 mrg if (0 < yyn) 1881 1.1.1.5 mrg break; 1882 1.1.1.4 mrg } 1883 1.1.1.5 mrg } 1884 1.1.1.5 mrg 1885 1.1.1.5 mrg /* Pop the current state because it cannot handle the error token. */ 1886 1.1.1.5 mrg if (yyssp == yyss) 1887 1.1.1.5 mrg YYABORT; 1888 1.1.1.5 mrg 1889 1.1.1.5 mrg 1890 1.1.1.5 mrg yydestruct ("Error: popping", 1891 1.1.1.5 mrg YY_ACCESSING_SYMBOL (yystate), yyvsp); 1892 1.1.1.5 mrg YYPOPSTACK (1); 1893 1.1.1.5 mrg yystate = *yyssp; 1894 1.1.1.5 mrg YY_STACK_PRINT (yyss, yyssp); 1895 1.1.1.5 mrg } 1896 1.1.1.5 mrg 1897 1.1.1.5 mrg YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN 1898 1.1.1.5 mrg *++yyvsp = yylval; 1899 1.1.1.5 mrg YY_IGNORE_MAYBE_UNINITIALIZED_END 1900 1.1.1.5 mrg 1901 1.1.1.5 mrg 1902 1.1.1.5 mrg /* Shift the error token. */ 1903 1.1.1.5 mrg YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp); 1904 1.1.1.5 mrg 1905 1.1.1.5 mrg yystate = yyn; 1906 1.1.1.5 mrg goto yynewstate; 1907 1.1.1.5 mrg 1908 1.1.1.5 mrg 1909 1.1.1.5 mrg /*-------------------------------------. 1910 1.1.1.5 mrg | yyacceptlab -- YYACCEPT comes here. | 1911 1.1.1.5 mrg `-------------------------------------*/ 1912 1.1.1.5 mrg yyacceptlab: 1913 1.1.1.5 mrg yyresult = 0; 1914 1.1.1.5 mrg goto yyreturn; 1915 1.1.1.5 mrg 1916 1.1.1.5 mrg 1917 1.1.1.5 mrg /*-----------------------------------. 1918 1.1.1.5 mrg | yyabortlab -- YYABORT comes here. | 1919 1.1.1.5 mrg `-----------------------------------*/ 1920 1.1.1.5 mrg yyabortlab: 1921 1.1.1.5 mrg yyresult = 1; 1922 1.1.1.5 mrg goto yyreturn; 1923 1.1.1.5 mrg 1924 1.1.1.5 mrg 1925 1.1.1.5 mrg #if !defined yyoverflow 1926 1.1.1.5 mrg /*-------------------------------------------------. 1927 1.1.1.5 mrg | yyexhaustedlab -- memory exhaustion comes here. | 1928 1.1.1.5 mrg `-------------------------------------------------*/ 1929 1.1.1.5 mrg yyexhaustedlab: 1930 1.1.1.5 mrg yyerror (YY_("memory exhausted")); 1931 1.1.1.5 mrg yyresult = 2; 1932 1.1.1.5 mrg /* Fall through. */ 1933 1.1.1.4 mrg #endif 1934 1.1.1.5 mrg 1935 1.1.1.5 mrg 1936 1.1.1.5 mrg /*-----------------------------------------------------. 1937 1.1.1.5 mrg | yyreturn -- parsing is finished, return the result. | 1938 1.1.1.5 mrg `-----------------------------------------------------*/ 1939 1.1.1.5 mrg yyreturn: 1940 1.1.1.5 mrg if (yychar != YYEMPTY) 1941 1.1.1.5 mrg { 1942 1.1.1.5 mrg /* Make sure we have latest lookahead translation. See comments at 1943 1.1.1.5 mrg user semantic actions for why this is necessary. */ 1944 1.1.1.5 mrg yytoken = YYTRANSLATE (yychar); 1945 1.1.1.5 mrg yydestruct ("Cleanup: discarding lookahead", 1946 1.1.1.5 mrg yytoken, &yylval); 1947 1.1.1.5 mrg } 1948 1.1.1.5 mrg /* Do not reclaim the symbols of the rule whose action triggered 1949 1.1.1.5 mrg this YYABORT or YYACCEPT. */ 1950 1.1.1.5 mrg YYPOPSTACK (yylen); 1951 1.1.1.5 mrg YY_STACK_PRINT (yyss, yyssp); 1952 1.1.1.5 mrg while (yyssp != yyss) 1953 1.1.1.5 mrg { 1954 1.1.1.5 mrg yydestruct ("Cleanup: popping", 1955 1.1.1.5 mrg YY_ACCESSING_SYMBOL (+*yyssp), yyvsp); 1956 1.1.1.5 mrg YYPOPSTACK (1); 1957 1.1.1.5 mrg } 1958 1.1.1.5 mrg #ifndef yyoverflow 1959 1.1.1.5 mrg if (yyss != yyssa) 1960 1.1.1.5 mrg YYSTACK_FREE (yyss); 1961 1.1.1.5 mrg #endif 1962 1.1.1.5 mrg 1963 1.1.1.5 mrg return yyresult; 1964 1.1.1.5 mrg } 1965 1.1.1.5 mrg 1966 1.1.1.5 mrg #line 264 "../../../gmp/demos/calc/calc.y" 1967 1.1.1.5 mrg 1968 1.1.1.5 mrg 1969 1.1.1.5 mrg yyerror (char *s) 1970 1.1.1.5 mrg { 1971 1.1.1.5 mrg fprintf (stderr, "%s\n", s); 1972 1.1.1.5 mrg } 1973 1.1.1.5 mrg 1974 1.1.1.5 mrg int calc_option_readline = -1; 1975 1.1.1.5 mrg 1976 1.1.1.5 mrg int 1977 1.1.1.5 mrg main (int argc, char *argv[]) 1978 1.1.1.5 mrg { 1979 1.1.1.5 mrg int i; 1980 1.1.1.5 mrg 1981 1.1.1.5 mrg for (i = 1; i < argc; i++) 1982 1.1.1.5 mrg { 1983 1.1.1.5 mrg if (strcmp (argv[i], "--readline") == 0) 1984 1.1.1.5 mrg calc_option_readline = 1; 1985 1.1.1.5 mrg else if (strcmp (argv[i], "--noreadline") == 0) 1986 1.1.1.5 mrg calc_option_readline = 0; 1987 1.1.1.5 mrg else if (strcmp (argv[i], "--help") == 0) 1988 1.1.1.5 mrg { 1989 1.1.1.5 mrg printf ("Usage: calc [--option]...\n"); 1990 1.1.1.5 mrg printf (" --readline use readline\n"); 1991 1.1.1.5 mrg printf (" --noreadline don't use readline\n"); 1992 1.1.1.5 mrg printf (" --help this message\n"); 1993 1.1.1.5 mrg printf ("Readline is only available when compiled in,\n"); 1994 1.1.1.5 mrg printf ("and in that case it's the default on a tty.\n"); 1995 1.1.1.5 mrg exit (0); 1996 1.1.1.5 mrg } 1997 1.1.1.5 mrg else 1998 1.1.1.5 mrg { 1999 1.1.1.5 mrg fprintf (stderr, "Unrecognised option: %s\n", argv[i]); 2000 1.1.1.5 mrg exit (1); 2001 1.1 mrg } 2002 1.1 mrg } 2003 1.1.1.5 mrg 2004 1.1.1.5 mrg #if WITH_READLINE 2005 1.1.1.5 mrg calc_init_readline (); 2006 1.1.1.5 mrg #else 2007 1.1.1.5 mrg if (calc_option_readline == 1) 2008 1.1.1.5 mrg { 2009 1.1.1.5 mrg fprintf (stderr, "Readline support not available\n"); 2010 1.1.1.5 mrg exit (1); 2011 1.1.1.5 mrg } 2012 1.1.1.5 mrg #endif 2013 1.1.1.5 mrg 2014 1.1.1.5 mrg for (i = 0; i < numberof (variable); i++) 2015 1.1.1.5 mrg mpz_init (variable[i]); 2016 1.1.1.5 mrg 2017 1.1.1.5 mrg for (i = 0; i < numberof (stack); i++) 2018 1.1.1.5 mrg mpz_init (stack[i]); 2019 1.1.1.5 mrg 2020 1.1.1.5 mrg return yyparse (); 2021 1.1 mrg } 2022