calc.c revision 1.1.1.5 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