calc.c revision 1.1.1.1 1 1.1 mrg /* A Bison parser, made by GNU Bison 2.4.3. */
2 1.1 mrg
3 1.1 mrg /* Skeleton implementation for Bison's Yacc-like parsers in C
4 1.1 mrg
5 1.1 mrg Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
6 1.1 mrg 2009, 2010 Free Software Foundation, Inc.
7 1.1 mrg
8 1.1 mrg This program is free software: you can redistribute it and/or modify
9 1.1 mrg it under the terms of the GNU General Public License as published by
10 1.1 mrg the Free Software Foundation, either version 3 of the License, or
11 1.1 mrg (at your option) any later version.
12 1.1 mrg
13 1.1 mrg This program is distributed in the hope that it will be useful,
14 1.1 mrg but WITHOUT ANY WARRANTY; without even the implied warranty of
15 1.1 mrg MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 1.1 mrg GNU General Public License for more details.
17 1.1 mrg
18 1.1 mrg You should have received a copy of the GNU General Public License
19 1.1 mrg along with this program. If not, see <http://www.gnu.org/licenses/>. */
20 1.1 mrg
21 1.1 mrg /* As a special exception, you may create a larger work that contains
22 1.1 mrg part or all of the Bison parser skeleton and distribute that work
23 1.1 mrg under terms of your choice, so long as that work isn't itself a
24 1.1 mrg parser generator using the skeleton or a modified version thereof
25 1.1 mrg as a parser skeleton. Alternatively, if you modify or redistribute
26 1.1 mrg the parser skeleton itself, you may (at your option) remove this
27 1.1 mrg special exception, which will cause the skeleton and the resulting
28 1.1 mrg Bison output files to be licensed under the GNU General Public
29 1.1 mrg License without this special exception.
30 1.1 mrg
31 1.1 mrg This special exception was added by the Free Software Foundation in
32 1.1 mrg version 2.2 of Bison. */
33 1.1 mrg
34 1.1 mrg /* C LALR(1) parser skeleton written by Richard Stallman, by
35 1.1 mrg simplifying the original so-called "semantic" parser. */
36 1.1 mrg
37 1.1 mrg /* All symbols defined below should begin with yy or YY, to avoid
38 1.1 mrg infringing on user name space. This should be done even for local
39 1.1 mrg variables, as they might otherwise be expanded by user macros.
40 1.1 mrg There are some unavoidable exceptions within include files to
41 1.1 mrg define necessary library symbols; they are noted "INFRINGES ON
42 1.1 mrg USER NAME SPACE" below. */
43 1.1 mrg
44 1.1 mrg /* Identify Bison output. */
45 1.1 mrg #define YYBISON 1
46 1.1 mrg
47 1.1 mrg /* Bison version. */
48 1.1 mrg #define YYBISON_VERSION "2.4.3"
49 1.1 mrg
50 1.1 mrg /* Skeleton name. */
51 1.1 mrg #define YYSKELETON_NAME "yacc.c"
52 1.1 mrg
53 1.1 mrg /* Pure parsers. */
54 1.1 mrg #define YYPURE 0
55 1.1 mrg
56 1.1 mrg /* Push parsers. */
57 1.1 mrg #define YYPUSH 0
58 1.1 mrg
59 1.1 mrg /* Pull parsers. */
60 1.1 mrg #define YYPULL 1
61 1.1 mrg
62 1.1 mrg /* Using locations. */
63 1.1 mrg #define YYLSP_NEEDED 0
64 1.1 mrg
65 1.1 mrg
66 1.1 mrg
67 1.1 mrg /* Copy the first part of user declarations. */
68 1.1 mrg
69 1.1 mrg /* Line 189 of yacc.c */
70 1.1 mrg #line 1 "calc.y"
71 1.1 mrg
72 1.1 mrg /* A simple integer desk calculator using yacc and gmp.
73 1.1 mrg
74 1.1 mrg Copyright 2000, 2001, 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 mrg this program. If not, see http://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 mrg
211 1.1 mrg
212 1.1 mrg /* Line 189 of yacc.c */
213 1.1 mrg #line 214 "calc.c"
214 1.1 mrg
215 1.1 mrg /* Enabling traces. */
216 1.1 mrg #ifndef YYDEBUG
217 1.1 mrg # define YYDEBUG 0
218 1.1 mrg #endif
219 1.1 mrg
220 1.1 mrg /* Enabling verbose error messages. */
221 1.1 mrg #ifdef YYERROR_VERBOSE
222 1.1 mrg # undef YYERROR_VERBOSE
223 1.1 mrg # define YYERROR_VERBOSE 1
224 1.1 mrg #else
225 1.1 mrg # define YYERROR_VERBOSE 0
226 1.1 mrg #endif
227 1.1 mrg
228 1.1 mrg /* Enabling the token table. */
229 1.1 mrg #ifndef YYTOKEN_TABLE
230 1.1 mrg # define YYTOKEN_TABLE 0
231 1.1 mrg #endif
232 1.1 mrg
233 1.1 mrg
234 1.1 mrg /* Tokens. */
235 1.1 mrg #ifndef YYTOKENTYPE
236 1.1 mrg # define YYTOKENTYPE
237 1.1 mrg /* Put the tokens into the symbol table, so that GDB and other debuggers
238 1.1 mrg know about them. */
239 1.1 mrg enum yytokentype {
240 1.1 mrg EOS = 258,
241 1.1 mrg BAD = 259,
242 1.1 mrg HELP = 260,
243 1.1 mrg HEX = 261,
244 1.1 mrg DECIMAL = 262,
245 1.1 mrg QUIT = 263,
246 1.1 mrg ABS = 264,
247 1.1 mrg BIN = 265,
248 1.1 mrg FIB = 266,
249 1.1 mrg GCD = 267,
250 1.1 mrg KRON = 268,
251 1.1 mrg LCM = 269,
252 1.1 mrg LUCNUM = 270,
253 1.1 mrg NEXTPRIME = 271,
254 1.1 mrg POWM = 272,
255 1.1 mrg ROOT = 273,
256 1.1 mrg SQRT = 274,
257 1.1 mrg NUMBER = 275,
258 1.1 mrg VARIABLE = 276,
259 1.1 mrg LOR = 277,
260 1.1 mrg LAND = 278,
261 1.1 mrg GE = 279,
262 1.1 mrg LE = 280,
263 1.1 mrg NE = 281,
264 1.1 mrg EQ = 282,
265 1.1 mrg RSHIFT = 283,
266 1.1 mrg LSHIFT = 284,
267 1.1 mrg UMINUS = 285
268 1.1 mrg };
269 1.1 mrg #endif
270 1.1 mrg /* Tokens. */
271 1.1 mrg #define EOS 258
272 1.1 mrg #define BAD 259
273 1.1 mrg #define HELP 260
274 1.1 mrg #define HEX 261
275 1.1 mrg #define DECIMAL 262
276 1.1 mrg #define QUIT 263
277 1.1 mrg #define ABS 264
278 1.1 mrg #define BIN 265
279 1.1 mrg #define FIB 266
280 1.1 mrg #define GCD 267
281 1.1 mrg #define KRON 268
282 1.1 mrg #define LCM 269
283 1.1 mrg #define LUCNUM 270
284 1.1 mrg #define NEXTPRIME 271
285 1.1 mrg #define POWM 272
286 1.1 mrg #define ROOT 273
287 1.1 mrg #define SQRT 274
288 1.1 mrg #define NUMBER 275
289 1.1 mrg #define VARIABLE 276
290 1.1 mrg #define LOR 277
291 1.1 mrg #define LAND 278
292 1.1 mrg #define GE 279
293 1.1 mrg #define LE 280
294 1.1 mrg #define NE 281
295 1.1 mrg #define EQ 282
296 1.1 mrg #define RSHIFT 283
297 1.1 mrg #define LSHIFT 284
298 1.1 mrg #define UMINUS 285
299 1.1 mrg
300 1.1 mrg
301 1.1 mrg
302 1.1 mrg
303 1.1 mrg #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
304 1.1 mrg typedef union YYSTYPE
305 1.1 mrg {
306 1.1 mrg
307 1.1 mrg /* Line 214 of yacc.c */
308 1.1 mrg #line 142 "calc.y"
309 1.1 mrg
310 1.1 mrg char *str;
311 1.1 mrg int var;
312 1.1 mrg
313 1.1 mrg
314 1.1 mrg
315 1.1 mrg /* Line 214 of yacc.c */
316 1.1 mrg #line 317 "calc.c"
317 1.1 mrg } YYSTYPE;
318 1.1 mrg # define YYSTYPE_IS_TRIVIAL 1
319 1.1 mrg # define yystype YYSTYPE /* obsolescent; will be withdrawn */
320 1.1 mrg # define YYSTYPE_IS_DECLARED 1
321 1.1 mrg #endif
322 1.1 mrg
323 1.1 mrg
324 1.1 mrg /* Copy the second part of user declarations. */
325 1.1 mrg
326 1.1 mrg
327 1.1 mrg /* Line 264 of yacc.c */
328 1.1 mrg #line 329 "calc.c"
329 1.1 mrg
330 1.1 mrg #ifdef short
331 1.1 mrg # undef short
332 1.1 mrg #endif
333 1.1 mrg
334 1.1 mrg #ifdef YYTYPE_UINT8
335 1.1 mrg typedef YYTYPE_UINT8 yytype_uint8;
336 1.1 mrg #else
337 1.1 mrg typedef unsigned char yytype_uint8;
338 1.1 mrg #endif
339 1.1 mrg
340 1.1 mrg #ifdef YYTYPE_INT8
341 1.1 mrg typedef YYTYPE_INT8 yytype_int8;
342 1.1 mrg #elif (defined __STDC__ || defined __C99__FUNC__ \
343 1.1 mrg || defined __cplusplus || defined _MSC_VER)
344 1.1 mrg typedef signed char yytype_int8;
345 1.1 mrg #else
346 1.1 mrg typedef short int yytype_int8;
347 1.1 mrg #endif
348 1.1 mrg
349 1.1 mrg #ifdef YYTYPE_UINT16
350 1.1 mrg typedef YYTYPE_UINT16 yytype_uint16;
351 1.1 mrg #else
352 1.1 mrg typedef unsigned short int yytype_uint16;
353 1.1 mrg #endif
354 1.1 mrg
355 1.1 mrg #ifdef YYTYPE_INT16
356 1.1 mrg typedef YYTYPE_INT16 yytype_int16;
357 1.1 mrg #else
358 1.1 mrg typedef short int yytype_int16;
359 1.1 mrg #endif
360 1.1 mrg
361 1.1 mrg #ifndef YYSIZE_T
362 1.1 mrg # ifdef __SIZE_TYPE__
363 1.1 mrg # define YYSIZE_T __SIZE_TYPE__
364 1.1 mrg # elif defined size_t
365 1.1 mrg # define YYSIZE_T size_t
366 1.1 mrg # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
367 1.1 mrg || defined __cplusplus || defined _MSC_VER)
368 1.1 mrg # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
369 1.1 mrg # define YYSIZE_T size_t
370 1.1 mrg # else
371 1.1 mrg # define YYSIZE_T unsigned int
372 1.1 mrg # endif
373 1.1 mrg #endif
374 1.1 mrg
375 1.1 mrg #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
376 1.1 mrg
377 1.1 mrg #ifndef YY_
378 1.1 mrg # if defined YYENABLE_NLS && YYENABLE_NLS
379 1.1 mrg # if ENABLE_NLS
380 1.1 mrg # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
381 1.1 mrg # define YY_(msgid) dgettext ("bison-runtime", msgid)
382 1.1 mrg # endif
383 1.1 mrg # endif
384 1.1 mrg # ifndef YY_
385 1.1 mrg # define YY_(msgid) msgid
386 1.1 mrg # endif
387 1.1 mrg #endif
388 1.1 mrg
389 1.1 mrg /* Suppress unused-variable warnings by "using" E. */
390 1.1 mrg #if ! defined lint || defined __GNUC__
391 1.1 mrg # define YYUSE(e) ((void) (e))
392 1.1 mrg #else
393 1.1 mrg # define YYUSE(e) /* empty */
394 1.1 mrg #endif
395 1.1 mrg
396 1.1 mrg /* Identity function, used to suppress warnings about constant conditions. */
397 1.1 mrg #ifndef lint
398 1.1 mrg # define YYID(n) (n)
399 1.1 mrg #else
400 1.1 mrg #if (defined __STDC__ || defined __C99__FUNC__ \
401 1.1 mrg || defined __cplusplus || defined _MSC_VER)
402 1.1 mrg static int
403 1.1 mrg YYID (int yyi)
404 1.1 mrg #else
405 1.1 mrg static int
406 1.1 mrg YYID (yyi)
407 1.1 mrg int yyi;
408 1.1 mrg #endif
409 1.1 mrg {
410 1.1 mrg return yyi;
411 1.1 mrg }
412 1.1 mrg #endif
413 1.1 mrg
414 1.1 mrg #if ! defined yyoverflow || YYERROR_VERBOSE
415 1.1 mrg
416 1.1 mrg /* The parser invokes alloca or malloc; define the necessary symbols. */
417 1.1 mrg
418 1.1 mrg # ifdef YYSTACK_USE_ALLOCA
419 1.1 mrg # if YYSTACK_USE_ALLOCA
420 1.1 mrg # ifdef __GNUC__
421 1.1 mrg # define YYSTACK_ALLOC __builtin_alloca
422 1.1 mrg # elif defined __BUILTIN_VA_ARG_INCR
423 1.1 mrg # include <alloca.h> /* INFRINGES ON USER NAME SPACE */
424 1.1 mrg # elif defined _AIX
425 1.1 mrg # define YYSTACK_ALLOC __alloca
426 1.1 mrg # elif defined _MSC_VER
427 1.1 mrg # include <malloc.h> /* INFRINGES ON USER NAME SPACE */
428 1.1 mrg # define alloca _alloca
429 1.1 mrg # else
430 1.1 mrg # define YYSTACK_ALLOC alloca
431 1.1 mrg # if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
432 1.1 mrg || defined __cplusplus || defined _MSC_VER)
433 1.1 mrg # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
434 1.1 mrg # ifndef _STDLIB_H
435 1.1 mrg # define _STDLIB_H 1
436 1.1 mrg # endif
437 1.1 mrg # endif
438 1.1 mrg # endif
439 1.1 mrg # endif
440 1.1 mrg # endif
441 1.1 mrg
442 1.1 mrg # ifdef YYSTACK_ALLOC
443 1.1 mrg /* Pacify GCC's `empty if-body' warning. */
444 1.1 mrg # define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
445 1.1 mrg # ifndef YYSTACK_ALLOC_MAXIMUM
446 1.1 mrg /* The OS might guarantee only one guard page at the bottom of the stack,
447 1.1 mrg and a page size can be as small as 4096 bytes. So we cannot safely
448 1.1 mrg invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
449 1.1 mrg to allow for a few compiler-allocated temporary stack slots. */
450 1.1 mrg # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
451 1.1 mrg # endif
452 1.1 mrg # else
453 1.1 mrg # define YYSTACK_ALLOC YYMALLOC
454 1.1 mrg # define YYSTACK_FREE YYFREE
455 1.1 mrg # ifndef YYSTACK_ALLOC_MAXIMUM
456 1.1 mrg # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
457 1.1 mrg # endif
458 1.1 mrg # if (defined __cplusplus && ! defined _STDLIB_H \
459 1.1 mrg && ! ((defined YYMALLOC || defined malloc) \
460 1.1 mrg && (defined YYFREE || defined free)))
461 1.1 mrg # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
462 1.1 mrg # ifndef _STDLIB_H
463 1.1 mrg # define _STDLIB_H 1
464 1.1 mrg # endif
465 1.1 mrg # endif
466 1.1 mrg # ifndef YYMALLOC
467 1.1 mrg # define YYMALLOC malloc
468 1.1 mrg # if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
469 1.1 mrg || defined __cplusplus || defined _MSC_VER)
470 1.1 mrg void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
471 1.1 mrg # endif
472 1.1 mrg # endif
473 1.1 mrg # ifndef YYFREE
474 1.1 mrg # define YYFREE free
475 1.1 mrg # if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
476 1.1 mrg || defined __cplusplus || defined _MSC_VER)
477 1.1 mrg void free (void *); /* INFRINGES ON USER NAME SPACE */
478 1.1 mrg # endif
479 1.1 mrg # endif
480 1.1 mrg # endif
481 1.1 mrg #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
482 1.1 mrg
483 1.1 mrg
484 1.1 mrg #if (! defined yyoverflow \
485 1.1 mrg && (! defined __cplusplus \
486 1.1 mrg || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
487 1.1 mrg
488 1.1 mrg /* A type that is properly aligned for any stack member. */
489 1.1 mrg union yyalloc
490 1.1 mrg {
491 1.1 mrg yytype_int16 yyss_alloc;
492 1.1 mrg YYSTYPE yyvs_alloc;
493 1.1 mrg };
494 1.1 mrg
495 1.1 mrg /* The size of the maximum gap between one aligned stack and the next. */
496 1.1 mrg # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
497 1.1 mrg
498 1.1 mrg /* The size of an array large to enough to hold all stacks, each with
499 1.1 mrg N elements. */
500 1.1 mrg # define YYSTACK_BYTES(N) \
501 1.1 mrg ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
502 1.1 mrg + YYSTACK_GAP_MAXIMUM)
503 1.1 mrg
504 1.1 mrg /* Copy COUNT objects from FROM to TO. The source and destination do
505 1.1 mrg not overlap. */
506 1.1 mrg # ifndef YYCOPY
507 1.1 mrg # if defined __GNUC__ && 1 < __GNUC__
508 1.1 mrg # define YYCOPY(To, From, Count) \
509 1.1 mrg __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
510 1.1 mrg # else
511 1.1 mrg # define YYCOPY(To, From, Count) \
512 1.1 mrg do \
513 1.1 mrg { \
514 1.1 mrg YYSIZE_T yyi; \
515 1.1 mrg for (yyi = 0; yyi < (Count); yyi++) \
516 1.1 mrg (To)[yyi] = (From)[yyi]; \
517 1.1 mrg } \
518 1.1 mrg while (YYID (0))
519 1.1 mrg # endif
520 1.1 mrg # endif
521 1.1 mrg
522 1.1 mrg /* Relocate STACK from its old location to the new one. The
523 1.1 mrg local variables YYSIZE and YYSTACKSIZE give the old and new number of
524 1.1 mrg elements in the stack, and YYPTR gives the new location of the
525 1.1 mrg stack. Advance YYPTR to a properly aligned location for the next
526 1.1 mrg stack. */
527 1.1 mrg # define YYSTACK_RELOCATE(Stack_alloc, Stack) \
528 1.1 mrg do \
529 1.1 mrg { \
530 1.1 mrg YYSIZE_T yynewbytes; \
531 1.1 mrg YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
532 1.1 mrg Stack = &yyptr->Stack_alloc; \
533 1.1 mrg yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
534 1.1 mrg yyptr += yynewbytes / sizeof (*yyptr); \
535 1.1 mrg } \
536 1.1 mrg while (YYID (0))
537 1.1 mrg
538 1.1 mrg #endif
539 1.1 mrg
540 1.1 mrg /* YYFINAL -- State number of the termination state. */
541 1.1 mrg #define YYFINAL 41
542 1.1 mrg /* YYLAST -- Last index in YYTABLE. */
543 1.1 mrg #define YYLAST 552
544 1.1 mrg
545 1.1 mrg /* YYNTOKENS -- Number of terminals. */
546 1.1 mrg #define YYNTOKENS 44
547 1.1 mrg /* YYNNTS -- Number of nonterminals. */
548 1.1 mrg #define YYNNTS 7
549 1.1 mrg /* YYNRULES -- Number of rules. */
550 1.1 mrg #define YYNRULES 49
551 1.1 mrg /* YYNRULES -- Number of states. */
552 1.1 mrg #define YYNSTATES 118
553 1.1 mrg
554 1.1 mrg /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
555 1.1 mrg #define YYUNDEFTOK 2
556 1.1 mrg #define YYMAXUTOK 285
557 1.1 mrg
558 1.1 mrg #define YYTRANSLATE(YYX) \
559 1.1 mrg ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
560 1.1 mrg
561 1.1 mrg /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
562 1.1 mrg static const yytype_uint8 yytranslate[] =
563 1.1 mrg {
564 1.1 mrg 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
565 1.1 mrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
566 1.1 mrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
567 1.1 mrg 2, 2, 2, 39, 2, 2, 2, 36, 2, 2,
568 1.1 mrg 41, 42, 34, 32, 43, 33, 2, 35, 2, 2,
569 1.1 mrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
570 1.1 mrg 24, 40, 25, 2, 2, 2, 2, 2, 2, 2,
571 1.1 mrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
572 1.1 mrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
573 1.1 mrg 2, 2, 2, 2, 38, 2, 2, 2, 2, 2,
574 1.1 mrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
575 1.1 mrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
576 1.1 mrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
577 1.1 mrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
578 1.1 mrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
579 1.1 mrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
580 1.1 mrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
581 1.1 mrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
582 1.1 mrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
583 1.1 mrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
584 1.1 mrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
585 1.1 mrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
586 1.1 mrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
587 1.1 mrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
588 1.1 mrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
589 1.1 mrg 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
590 1.1 mrg 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
591 1.1 mrg 15, 16, 17, 18, 19, 20, 21, 22, 23, 26,
592 1.1 mrg 27, 28, 29, 30, 31, 37
593 1.1 mrg };
594 1.1 mrg
595 1.1 mrg #if YYDEBUG
596 1.1 mrg /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
597 1.1 mrg YYRHS. */
598 1.1 mrg static const yytype_uint8 yyprhs[] =
599 1.1 mrg {
600 1.1 mrg 0, 0, 3, 5, 8, 11, 15, 18, 19, 21,
601 1.1 mrg 25, 27, 29, 31, 33, 37, 41, 45, 49, 53,
602 1.1 mrg 57, 61, 65, 69, 72, 75, 79, 83, 87, 91,
603 1.1 mrg 95, 99, 103, 107, 112, 119, 124, 129, 136, 141,
604 1.1 mrg 146, 151, 160, 167, 172, 174, 176, 178, 182, 184
605 1.1 mrg };
606 1.1 mrg
607 1.1 mrg /* YYRHS -- A `-1'-separated list of the rules' RHS. */
608 1.1 mrg static const yytype_int8 yyrhs[] =
609 1.1 mrg {
610 1.1 mrg 45, 0, -1, 47, -1, 46, 47, -1, 47, 3,
611 1.1 mrg -1, 46, 47, 3, -1, 1, 3, -1, -1, 48,
612 1.1 mrg -1, 21, 40, 48, -1, 5, -1, 6, -1, 7,
613 1.1 mrg -1, 8, -1, 41, 48, 42, -1, 48, 32, 48,
614 1.1 mrg -1, 48, 33, 48, -1, 48, 34, 48, -1, 48,
615 1.1 mrg 35, 48, -1, 48, 36, 48, -1, 48, 38, 48,
616 1.1 mrg -1, 48, 31, 48, -1, 48, 30, 48, -1, 48,
617 1.1 mrg 39, -1, 33, 48, -1, 48, 24, 48, -1, 48,
618 1.1 mrg 27, 48, -1, 48, 29, 48, -1, 48, 28, 48,
619 1.1 mrg -1, 48, 26, 48, -1, 48, 25, 48, -1, 48,
620 1.1 mrg 23, 48, -1, 48, 22, 48, -1, 9, 41, 48,
621 1.1 mrg 42, -1, 10, 41, 48, 43, 48, 42, -1, 11,
622 1.1 mrg 41, 48, 42, -1, 12, 41, 49, 42, -1, 13,
623 1.1 mrg 41, 48, 43, 48, 42, -1, 14, 41, 50, 42,
624 1.1 mrg -1, 15, 41, 48, 42, -1, 16, 41, 48, 42,
625 1.1 mrg -1, 17, 41, 48, 43, 48, 43, 48, 42, -1,
626 1.1 mrg 18, 41, 48, 43, 48, 42, -1, 19, 41, 48,
627 1.1 mrg 42, -1, 21, -1, 20, -1, 48, -1, 49, 43,
628 1.1 mrg 48, -1, 48, -1, 50, 43, 48, -1
629 1.1 mrg };
630 1.1 mrg
631 1.1 mrg /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
632 1.1 mrg static const yytype_uint16 yyrline[] =
633 1.1 mrg {
634 1.1 mrg 0, 167, 167, 168, 171, 172, 173, 175, 177, 182,
635 1.1 mrg 188, 189, 190, 191, 197, 198, 199, 200, 201, 202,
636 1.1 mrg 203, 205, 207, 209, 211, 213, 214, 215, 216, 217,
637 1.1 mrg 218, 220, 221, 223, 224, 226, 228, 229, 231, 232,
638 1.1 mrg 234, 235, 236, 238, 240, 246, 257, 258, 261, 262
639 1.1 mrg };
640 1.1 mrg #endif
641 1.1 mrg
642 1.1 mrg #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
643 1.1 mrg /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
644 1.1 mrg First, the terminals, then, starting at YYNTOKENS, nonterminals. */
645 1.1 mrg static const char *const yytname[] =
646 1.1 mrg {
647 1.1 mrg "$end", "error", "$undefined", "EOS", "BAD", "HELP", "HEX", "DECIMAL",
648 1.1 mrg "QUIT", "ABS", "BIN", "FIB", "GCD", "KRON", "LCM", "LUCNUM", "NEXTPRIME",
649 1.1 mrg "POWM", "ROOT", "SQRT", "NUMBER", "VARIABLE", "LOR", "LAND", "'<'",
650 1.1 mrg "'>'", "GE", "LE", "NE", "EQ", "RSHIFT", "LSHIFT", "'+'", "'-'", "'*'",
651 1.1 mrg "'/'", "'%'", "UMINUS", "'^'", "'!'", "'='", "'('", "')'", "','",
652 1.1 mrg "$accept", "top", "statements", "statement", "e", "gcdlist", "lcmlist", 0
653 1.1 mrg };
654 1.1 mrg #endif
655 1.1 mrg
656 1.1 mrg # ifdef YYPRINT
657 1.1 mrg /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
658 1.1 mrg token YYLEX-NUM. */
659 1.1 mrg static const yytype_uint16 yytoknum[] =
660 1.1 mrg {
661 1.1 mrg 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
662 1.1 mrg 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
663 1.1 mrg 275, 276, 277, 278, 60, 62, 279, 280, 281, 282,
664 1.1 mrg 283, 284, 43, 45, 42, 47, 37, 285, 94, 33,
665 1.1 mrg 61, 40, 41, 44
666 1.1 mrg };
667 1.1 mrg # endif
668 1.1 mrg
669 1.1 mrg /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
670 1.1 mrg static const yytype_uint8 yyr1[] =
671 1.1 mrg {
672 1.1 mrg 0, 44, 45, 45, 46, 46, 46, 47, 47, 47,
673 1.1 mrg 47, 47, 47, 47, 48, 48, 48, 48, 48, 48,
674 1.1 mrg 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
675 1.1 mrg 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
676 1.1 mrg 48, 48, 48, 48, 48, 48, 49, 49, 50, 50
677 1.1 mrg };
678 1.1 mrg
679 1.1 mrg /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
680 1.1 mrg static const yytype_uint8 yyr2[] =
681 1.1 mrg {
682 1.1 mrg 0, 2, 1, 2, 2, 3, 2, 0, 1, 3,
683 1.1 mrg 1, 1, 1, 1, 3, 3, 3, 3, 3, 3,
684 1.1 mrg 3, 3, 3, 2, 2, 3, 3, 3, 3, 3,
685 1.1 mrg 3, 3, 3, 4, 6, 4, 4, 6, 4, 4,
686 1.1 mrg 4, 8, 6, 4, 1, 1, 1, 3, 1, 3
687 1.1 mrg };
688 1.1 mrg
689 1.1 mrg /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
690 1.1 mrg STATE-NUM when YYTABLE doesn't specify something else to do. Zero
691 1.1 mrg means the default is an error. */
692 1.1 mrg static const yytype_uint8 yydefact[] =
693 1.1 mrg {
694 1.1 mrg 0, 0, 10, 11, 12, 13, 0, 0, 0, 0,
695 1.1 mrg 0, 0, 0, 0, 0, 0, 0, 45, 44, 0,
696 1.1 mrg 0, 0, 7, 2, 8, 6, 0, 0, 0, 0,
697 1.1 mrg 0, 0, 0, 0, 0, 0, 0, 0, 44, 24,
698 1.1 mrg 0, 1, 3, 4, 0, 0, 0, 0, 0, 0,
699 1.1 mrg 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
700 1.1 mrg 23, 0, 0, 0, 46, 0, 0, 48, 0, 0,
701 1.1 mrg 0, 0, 0, 0, 9, 14, 5, 32, 31, 25,
702 1.1 mrg 30, 29, 26, 28, 27, 22, 21, 15, 16, 17,
703 1.1 mrg 18, 19, 20, 33, 0, 35, 36, 0, 0, 38,
704 1.1 mrg 0, 39, 40, 0, 0, 43, 0, 47, 0, 49,
705 1.1 mrg 0, 0, 34, 37, 0, 42, 0, 41
706 1.1 mrg };
707 1.1 mrg
708 1.1 mrg /* YYDEFGOTO[NTERM-NUM]. */
709 1.1 mrg static const yytype_int8 yydefgoto[] =
710 1.1 mrg {
711 1.1 mrg -1, 21, 22, 23, 24, 65, 68
712 1.1 mrg };
713 1.1 mrg
714 1.1 mrg /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
715 1.1 mrg STATE-NUM. */
716 1.1 mrg #define YYPACT_NINF -39
717 1.1 mrg static const yytype_int16 yypact[] =
718 1.1 mrg {
719 1.1 mrg 41, 3, -39, -39, -39, -39, 2, 4, 27, 32,
720 1.1 mrg 35, 36, 39, 42, 45, 46, 47, -39, -18, 124,
721 1.1 mrg 124, 89, 91, 87, 464, -39, 124, 124, 124, 124,
722 1.1 mrg 124, 124, 124, 124, 124, 124, 124, 124, -39, -36,
723 1.1 mrg 254, -39, 88, -39, 124, 124, 124, 124, 124, 124,
724 1.1 mrg 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
725 1.1 mrg -39, 275, 144, 296, 464, -38, 166, 464, 29, 317,
726 1.1 mrg 338, 188, 210, 359, 464, -39, -39, 481, 497, 513,
727 1.1 mrg 513, 513, 513, 513, 513, 31, 31, -15, -15, -36,
728 1.1 mrg -36, -36, -36, -39, 124, -39, -39, 124, 124, -39,
729 1.1 mrg 124, -39, -39, 124, 124, -39, 380, 464, 401, 464,
730 1.1 mrg 232, 422, -39, -39, 124, -39, 443, -39
731 1.1 mrg };
732 1.1 mrg
733 1.1 mrg /* YYPGOTO[NTERM-NUM]. */
734 1.1 mrg static const yytype_int8 yypgoto[] =
735 1.1 mrg {
736 1.1 mrg -39, -39, -39, 70, -19, -39, -39
737 1.1 mrg };
738 1.1 mrg
739 1.1 mrg /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
740 1.1 mrg positive, shift that token. If negative, reduce the rule which
741 1.1 mrg number is the opposite. If zero, do what YYDEFACT says.
742 1.1 mrg If YYTABLE_NINF, syntax error. */
743 1.1 mrg #define YYTABLE_NINF -8
744 1.1 mrg static const yytype_int8 yytable[] =
745 1.1 mrg {
746 1.1 mrg 39, 40, 59, 60, 96, 97, 25, 61, 62, 63,
747 1.1 mrg 64, 66, 67, 69, 70, 71, 72, 73, 74, 56,
748 1.1 mrg 57, 58, 37, 59, 60, 77, 78, 79, 80, 81,
749 1.1 mrg 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
750 1.1 mrg 92, -7, 1, 26, -7, 27, 2, 3, 4, 5,
751 1.1 mrg 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
752 1.1 mrg 16, 17, 18, 54, 55, 56, 57, 58, 28, 59,
753 1.1 mrg 60, 99, 100, 29, 19, 106, 30, 31, 107, 108,
754 1.1 mrg 32, 109, 20, 33, 110, 111, 34, 35, 36, 41,
755 1.1 mrg 43, 76, 42, 0, 0, 116, 2, 3, 4, 5,
756 1.1 mrg 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
757 1.1 mrg 16, 17, 18, 0, 0, 0, 0, 0, 0, 0,
758 1.1 mrg 0, 0, 0, 0, 19, 0, 0, 0, 0, 0,
759 1.1 mrg 0, 0, 20, 6, 7, 8, 9, 10, 11, 12,
760 1.1 mrg 13, 14, 15, 16, 17, 38, 0, 0, 0, 0,
761 1.1 mrg 0, 0, 0, 0, 0, 0, 0, 19, 0, 0,
762 1.1 mrg 0, 0, 0, 0, 0, 20, 44, 45, 46, 47,
763 1.1 mrg 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
764 1.1 mrg 58, 0, 59, 60, 0, 0, 0, 94, 44, 45,
765 1.1 mrg 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
766 1.1 mrg 56, 57, 58, 0, 59, 60, 0, 0, 0, 98,
767 1.1 mrg 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
768 1.1 mrg 54, 55, 56, 57, 58, 0, 59, 60, 0, 0,
769 1.1 mrg 0, 103, 44, 45, 46, 47, 48, 49, 50, 51,
770 1.1 mrg 52, 53, 54, 55, 56, 57, 58, 0, 59, 60,
771 1.1 mrg 0, 0, 0, 104, 44, 45, 46, 47, 48, 49,
772 1.1 mrg 50, 51, 52, 53, 54, 55, 56, 57, 58, 0,
773 1.1 mrg 59, 60, 0, 0, 0, 114, 44, 45, 46, 47,
774 1.1 mrg 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
775 1.1 mrg 58, 0, 59, 60, 0, 0, 75, 44, 45, 46,
776 1.1 mrg 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
777 1.1 mrg 57, 58, 0, 59, 60, 0, 0, 93, 44, 45,
778 1.1 mrg 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
779 1.1 mrg 56, 57, 58, 0, 59, 60, 0, 0, 95, 44,
780 1.1 mrg 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
781 1.1 mrg 55, 56, 57, 58, 0, 59, 60, 0, 0, 101,
782 1.1 mrg 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
783 1.1 mrg 54, 55, 56, 57, 58, 0, 59, 60, 0, 0,
784 1.1 mrg 102, 44, 45, 46, 47, 48, 49, 50, 51, 52,
785 1.1 mrg 53, 54, 55, 56, 57, 58, 0, 59, 60, 0,
786 1.1 mrg 0, 105, 44, 45, 46, 47, 48, 49, 50, 51,
787 1.1 mrg 52, 53, 54, 55, 56, 57, 58, 0, 59, 60,
788 1.1 mrg 0, 0, 112, 44, 45, 46, 47, 48, 49, 50,
789 1.1 mrg 51, 52, 53, 54, 55, 56, 57, 58, 0, 59,
790 1.1 mrg 60, 0, 0, 113, 44, 45, 46, 47, 48, 49,
791 1.1 mrg 50, 51, 52, 53, 54, 55, 56, 57, 58, 0,
792 1.1 mrg 59, 60, 0, 0, 115, 44, 45, 46, 47, 48,
793 1.1 mrg 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
794 1.1 mrg 0, 59, 60, 0, 0, 117, 44, 45, 46, 47,
795 1.1 mrg 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
796 1.1 mrg 58, 0, 59, 60, 45, 46, 47, 48, 49, 50,
797 1.1 mrg 51, 52, 53, 54, 55, 56, 57, 58, 0, 59,
798 1.1 mrg 60, 46, 47, 48, 49, 50, 51, 52, 53, 54,
799 1.1 mrg 55, 56, 57, 58, 0, 59, 60, -8, -8, -8,
800 1.1 mrg -8, -8, -8, 52, 53, 54, 55, 56, 57, 58,
801 1.1 mrg 0, 59, 60
802 1.1 mrg };
803 1.1 mrg
804 1.1 mrg static const yytype_int8 yycheck[] =
805 1.1 mrg {
806 1.1 mrg 19, 20, 38, 39, 42, 43, 3, 26, 27, 28,
807 1.1 mrg 29, 30, 31, 32, 33, 34, 35, 36, 37, 34,
808 1.1 mrg 35, 36, 40, 38, 39, 44, 45, 46, 47, 48,
809 1.1 mrg 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
810 1.1 mrg 59, 0, 1, 41, 3, 41, 5, 6, 7, 8,
811 1.1 mrg 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
812 1.1 mrg 19, 20, 21, 32, 33, 34, 35, 36, 41, 38,
813 1.1 mrg 39, 42, 43, 41, 33, 94, 41, 41, 97, 98,
814 1.1 mrg 41, 100, 41, 41, 103, 104, 41, 41, 41, 0,
815 1.1 mrg 3, 3, 22, -1, -1, 114, 5, 6, 7, 8,
816 1.1 mrg 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
817 1.1 mrg 19, 20, 21, -1, -1, -1, -1, -1, -1, -1,
818 1.1 mrg -1, -1, -1, -1, 33, -1, -1, -1, -1, -1,
819 1.1 mrg -1, -1, 41, 9, 10, 11, 12, 13, 14, 15,
820 1.1 mrg 16, 17, 18, 19, 20, 21, -1, -1, -1, -1,
821 1.1 mrg -1, -1, -1, -1, -1, -1, -1, 33, -1, -1,
822 1.1 mrg -1, -1, -1, -1, -1, 41, 22, 23, 24, 25,
823 1.1 mrg 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
824 1.1 mrg 36, -1, 38, 39, -1, -1, -1, 43, 22, 23,
825 1.1 mrg 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
826 1.1 mrg 34, 35, 36, -1, 38, 39, -1, -1, -1, 43,
827 1.1 mrg 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
828 1.1 mrg 32, 33, 34, 35, 36, -1, 38, 39, -1, -1,
829 1.1 mrg -1, 43, 22, 23, 24, 25, 26, 27, 28, 29,
830 1.1 mrg 30, 31, 32, 33, 34, 35, 36, -1, 38, 39,
831 1.1 mrg -1, -1, -1, 43, 22, 23, 24, 25, 26, 27,
832 1.1 mrg 28, 29, 30, 31, 32, 33, 34, 35, 36, -1,
833 1.1 mrg 38, 39, -1, -1, -1, 43, 22, 23, 24, 25,
834 1.1 mrg 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
835 1.1 mrg 36, -1, 38, 39, -1, -1, 42, 22, 23, 24,
836 1.1 mrg 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
837 1.1 mrg 35, 36, -1, 38, 39, -1, -1, 42, 22, 23,
838 1.1 mrg 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
839 1.1 mrg 34, 35, 36, -1, 38, 39, -1, -1, 42, 22,
840 1.1 mrg 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
841 1.1 mrg 33, 34, 35, 36, -1, 38, 39, -1, -1, 42,
842 1.1 mrg 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
843 1.1 mrg 32, 33, 34, 35, 36, -1, 38, 39, -1, -1,
844 1.1 mrg 42, 22, 23, 24, 25, 26, 27, 28, 29, 30,
845 1.1 mrg 31, 32, 33, 34, 35, 36, -1, 38, 39, -1,
846 1.1 mrg -1, 42, 22, 23, 24, 25, 26, 27, 28, 29,
847 1.1 mrg 30, 31, 32, 33, 34, 35, 36, -1, 38, 39,
848 1.1 mrg -1, -1, 42, 22, 23, 24, 25, 26, 27, 28,
849 1.1 mrg 29, 30, 31, 32, 33, 34, 35, 36, -1, 38,
850 1.1 mrg 39, -1, -1, 42, 22, 23, 24, 25, 26, 27,
851 1.1 mrg 28, 29, 30, 31, 32, 33, 34, 35, 36, -1,
852 1.1 mrg 38, 39, -1, -1, 42, 22, 23, 24, 25, 26,
853 1.1 mrg 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
854 1.1 mrg -1, 38, 39, -1, -1, 42, 22, 23, 24, 25,
855 1.1 mrg 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
856 1.1 mrg 36, -1, 38, 39, 23, 24, 25, 26, 27, 28,
857 1.1 mrg 29, 30, 31, 32, 33, 34, 35, 36, -1, 38,
858 1.1 mrg 39, 24, 25, 26, 27, 28, 29, 30, 31, 32,
859 1.1 mrg 33, 34, 35, 36, -1, 38, 39, 24, 25, 26,
860 1.1 mrg 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
861 1.1 mrg -1, 38, 39
862 1.1 mrg };
863 1.1 mrg
864 1.1 mrg /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
865 1.1 mrg symbol of state STATE-NUM. */
866 1.1 mrg static const yytype_uint8 yystos[] =
867 1.1 mrg {
868 1.1 mrg 0, 1, 5, 6, 7, 8, 9, 10, 11, 12,
869 1.1 mrg 13, 14, 15, 16, 17, 18, 19, 20, 21, 33,
870 1.1 mrg 41, 45, 46, 47, 48, 3, 41, 41, 41, 41,
871 1.1 mrg 41, 41, 41, 41, 41, 41, 41, 40, 21, 48,
872 1.1 mrg 48, 0, 47, 3, 22, 23, 24, 25, 26, 27,
873 1.1 mrg 28, 29, 30, 31, 32, 33, 34, 35, 36, 38,
874 1.1 mrg 39, 48, 48, 48, 48, 49, 48, 48, 50, 48,
875 1.1 mrg 48, 48, 48, 48, 48, 42, 3, 48, 48, 48,
876 1.1 mrg 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
877 1.1 mrg 48, 48, 48, 42, 43, 42, 42, 43, 43, 42,
878 1.1 mrg 43, 42, 42, 43, 43, 42, 48, 48, 48, 48,
879 1.1 mrg 48, 48, 42, 42, 43, 42, 48, 42
880 1.1 mrg };
881 1.1 mrg
882 1.1 mrg #define yyerrok (yyerrstatus = 0)
883 1.1 mrg #define yyclearin (yychar = YYEMPTY)
884 1.1 mrg #define YYEMPTY (-2)
885 1.1 mrg #define YYEOF 0
886 1.1 mrg
887 1.1 mrg #define YYACCEPT goto yyacceptlab
888 1.1 mrg #define YYABORT goto yyabortlab
889 1.1 mrg #define YYERROR goto yyerrorlab
890 1.1 mrg
891 1.1 mrg
892 1.1 mrg /* Like YYERROR except do call yyerror. This remains here temporarily
893 1.1 mrg to ease the transition to the new meaning of YYERROR, for GCC.
894 1.1 mrg Once GCC version 2 has supplanted version 1, this can go. However,
895 1.1 mrg YYFAIL appears to be in use. Nevertheless, it is formally deprecated
896 1.1 mrg in Bison 2.4.2's NEWS entry, where a plan to phase it out is
897 1.1 mrg discussed. */
898 1.1 mrg
899 1.1 mrg #define YYFAIL goto yyerrlab
900 1.1 mrg #if defined YYFAIL
901 1.1 mrg /* This is here to suppress warnings from the GCC cpp's
902 1.1 mrg -Wunused-macros. Normally we don't worry about that warning, but
903 1.1 mrg some users do, and we want to make it easy for users to remove
904 1.1 mrg YYFAIL uses, which will produce warnings from Bison 2.5. */
905 1.1 mrg #endif
906 1.1 mrg
907 1.1 mrg #define YYRECOVERING() (!!yyerrstatus)
908 1.1 mrg
909 1.1 mrg #define YYBACKUP(Token, Value) \
910 1.1 mrg do \
911 1.1 mrg if (yychar == YYEMPTY && yylen == 1) \
912 1.1 mrg { \
913 1.1 mrg yychar = (Token); \
914 1.1 mrg yylval = (Value); \
915 1.1 mrg yytoken = YYTRANSLATE (yychar); \
916 1.1 mrg YYPOPSTACK (1); \
917 1.1 mrg goto yybackup; \
918 1.1 mrg } \
919 1.1 mrg else \
920 1.1 mrg { \
921 1.1 mrg yyerror (YY_("syntax error: cannot back up")); \
922 1.1 mrg YYERROR; \
923 1.1 mrg } \
924 1.1 mrg while (YYID (0))
925 1.1 mrg
926 1.1 mrg
927 1.1 mrg #define YYTERROR 1
928 1.1 mrg #define YYERRCODE 256
929 1.1 mrg
930 1.1 mrg
931 1.1 mrg /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
932 1.1 mrg If N is 0, then set CURRENT to the empty location which ends
933 1.1 mrg the previous symbol: RHS[0] (always defined). */
934 1.1 mrg
935 1.1 mrg #define YYRHSLOC(Rhs, K) ((Rhs)[K])
936 1.1 mrg #ifndef YYLLOC_DEFAULT
937 1.1 mrg # define YYLLOC_DEFAULT(Current, Rhs, N) \
938 1.1 mrg do \
939 1.1 mrg if (YYID (N)) \
940 1.1 mrg { \
941 1.1 mrg (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
942 1.1 mrg (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
943 1.1 mrg (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
944 1.1 mrg (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
945 1.1 mrg } \
946 1.1 mrg else \
947 1.1 mrg { \
948 1.1 mrg (Current).first_line = (Current).last_line = \
949 1.1 mrg YYRHSLOC (Rhs, 0).last_line; \
950 1.1 mrg (Current).first_column = (Current).last_column = \
951 1.1 mrg YYRHSLOC (Rhs, 0).last_column; \
952 1.1 mrg } \
953 1.1 mrg while (YYID (0))
954 1.1 mrg #endif
955 1.1 mrg
956 1.1 mrg
957 1.1 mrg /* YY_LOCATION_PRINT -- Print the location on the stream.
958 1.1 mrg This macro was not mandated originally: define only if we know
959 1.1 mrg we won't break user code: when these are the locations we know. */
960 1.1 mrg
961 1.1 mrg #ifndef YY_LOCATION_PRINT
962 1.1 mrg # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
963 1.1 mrg # define YY_LOCATION_PRINT(File, Loc) \
964 1.1 mrg fprintf (File, "%d.%d-%d.%d", \
965 1.1 mrg (Loc).first_line, (Loc).first_column, \
966 1.1 mrg (Loc).last_line, (Loc).last_column)
967 1.1 mrg # else
968 1.1 mrg # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
969 1.1 mrg # endif
970 1.1 mrg #endif
971 1.1 mrg
972 1.1 mrg
973 1.1 mrg /* YYLEX -- calling `yylex' with the right arguments. */
974 1.1 mrg
975 1.1 mrg #ifdef YYLEX_PARAM
976 1.1 mrg # define YYLEX yylex (YYLEX_PARAM)
977 1.1 mrg #else
978 1.1 mrg # define YYLEX yylex ()
979 1.1 mrg #endif
980 1.1 mrg
981 1.1 mrg /* Enable debugging if requested. */
982 1.1 mrg #if YYDEBUG
983 1.1 mrg
984 1.1 mrg # ifndef YYFPRINTF
985 1.1 mrg # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
986 1.1 mrg # define YYFPRINTF fprintf
987 1.1 mrg # endif
988 1.1 mrg
989 1.1 mrg # define YYDPRINTF(Args) \
990 1.1 mrg do { \
991 1.1 mrg if (yydebug) \
992 1.1 mrg YYFPRINTF Args; \
993 1.1 mrg } while (YYID (0))
994 1.1 mrg
995 1.1 mrg # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
996 1.1 mrg do { \
997 1.1 mrg if (yydebug) \
998 1.1 mrg { \
999 1.1 mrg YYFPRINTF (stderr, "%s ", Title); \
1000 1.1 mrg yy_symbol_print (stderr, \
1001 1.1 mrg Type, Value); \
1002 1.1 mrg YYFPRINTF (stderr, "\n"); \
1003 1.1 mrg } \
1004 1.1 mrg } while (YYID (0))
1005 1.1 mrg
1006 1.1 mrg
1007 1.1 mrg /*--------------------------------.
1008 1.1 mrg | Print this symbol on YYOUTPUT. |
1009 1.1 mrg `--------------------------------*/
1010 1.1 mrg
1011 1.1 mrg /*ARGSUSED*/
1012 1.1 mrg #if (defined __STDC__ || defined __C99__FUNC__ \
1013 1.1 mrg || defined __cplusplus || defined _MSC_VER)
1014 1.1 mrg static void
1015 1.1 mrg yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
1016 1.1 mrg #else
1017 1.1 mrg static void
1018 1.1 mrg yy_symbol_value_print (yyoutput, yytype, yyvaluep)
1019 1.1 mrg FILE *yyoutput;
1020 1.1 mrg int yytype;
1021 1.1 mrg YYSTYPE const * const yyvaluep;
1022 1.1 mrg #endif
1023 1.1 mrg {
1024 1.1 mrg if (!yyvaluep)
1025 1.1 mrg return;
1026 1.1 mrg # ifdef YYPRINT
1027 1.1 mrg if (yytype < YYNTOKENS)
1028 1.1 mrg YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
1029 1.1 mrg # else
1030 1.1 mrg YYUSE (yyoutput);
1031 1.1 mrg # endif
1032 1.1 mrg switch (yytype)
1033 1.1 mrg {
1034 1.1 mrg default:
1035 1.1 mrg break;
1036 1.1 mrg }
1037 1.1 mrg }
1038 1.1 mrg
1039 1.1 mrg
1040 1.1 mrg /*--------------------------------.
1041 1.1 mrg | Print this symbol on YYOUTPUT. |
1042 1.1 mrg `--------------------------------*/
1043 1.1 mrg
1044 1.1 mrg #if (defined __STDC__ || defined __C99__FUNC__ \
1045 1.1 mrg || defined __cplusplus || defined _MSC_VER)
1046 1.1 mrg static void
1047 1.1 mrg yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
1048 1.1 mrg #else
1049 1.1 mrg static void
1050 1.1 mrg yy_symbol_print (yyoutput, yytype, yyvaluep)
1051 1.1 mrg FILE *yyoutput;
1052 1.1 mrg int yytype;
1053 1.1 mrg YYSTYPE const * const yyvaluep;
1054 1.1 mrg #endif
1055 1.1 mrg {
1056 1.1 mrg if (yytype < YYNTOKENS)
1057 1.1 mrg YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
1058 1.1 mrg else
1059 1.1 mrg YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
1060 1.1 mrg
1061 1.1 mrg yy_symbol_value_print (yyoutput, yytype, yyvaluep);
1062 1.1 mrg YYFPRINTF (yyoutput, ")");
1063 1.1 mrg }
1064 1.1 mrg
1065 1.1 mrg /*------------------------------------------------------------------.
1066 1.1 mrg | yy_stack_print -- Print the state stack from its BOTTOM up to its |
1067 1.1 mrg | TOP (included). |
1068 1.1 mrg `------------------------------------------------------------------*/
1069 1.1 mrg
1070 1.1 mrg #if (defined __STDC__ || defined __C99__FUNC__ \
1071 1.1 mrg || defined __cplusplus || defined _MSC_VER)
1072 1.1 mrg static void
1073 1.1 mrg yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
1074 1.1 mrg #else
1075 1.1 mrg static void
1076 1.1 mrg yy_stack_print (yybottom, yytop)
1077 1.1 mrg yytype_int16 *yybottom;
1078 1.1 mrg yytype_int16 *yytop;
1079 1.1 mrg #endif
1080 1.1 mrg {
1081 1.1 mrg YYFPRINTF (stderr, "Stack now");
1082 1.1 mrg for (; yybottom <= yytop; yybottom++)
1083 1.1 mrg {
1084 1.1 mrg int yybot = *yybottom;
1085 1.1 mrg YYFPRINTF (stderr, " %d", yybot);
1086 1.1 mrg }
1087 1.1 mrg YYFPRINTF (stderr, "\n");
1088 1.1 mrg }
1089 1.1 mrg
1090 1.1 mrg # define YY_STACK_PRINT(Bottom, Top) \
1091 1.1 mrg do { \
1092 1.1 mrg if (yydebug) \
1093 1.1 mrg yy_stack_print ((Bottom), (Top)); \
1094 1.1 mrg } while (YYID (0))
1095 1.1 mrg
1096 1.1 mrg
1097 1.1 mrg /*------------------------------------------------.
1098 1.1 mrg | Report that the YYRULE is going to be reduced. |
1099 1.1 mrg `------------------------------------------------*/
1100 1.1 mrg
1101 1.1 mrg #if (defined __STDC__ || defined __C99__FUNC__ \
1102 1.1 mrg || defined __cplusplus || defined _MSC_VER)
1103 1.1 mrg static void
1104 1.1 mrg yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
1105 1.1 mrg #else
1106 1.1 mrg static void
1107 1.1 mrg yy_reduce_print (yyvsp, yyrule)
1108 1.1 mrg YYSTYPE *yyvsp;
1109 1.1 mrg int yyrule;
1110 1.1 mrg #endif
1111 1.1 mrg {
1112 1.1 mrg int yynrhs = yyr2[yyrule];
1113 1.1 mrg int yyi;
1114 1.1 mrg unsigned long int yylno = yyrline[yyrule];
1115 1.1 mrg YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
1116 1.1 mrg yyrule - 1, yylno);
1117 1.1 mrg /* The symbols being reduced. */
1118 1.1 mrg for (yyi = 0; yyi < yynrhs; yyi++)
1119 1.1 mrg {
1120 1.1 mrg YYFPRINTF (stderr, " $%d = ", yyi + 1);
1121 1.1 mrg yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
1122 1.1 mrg &(yyvsp[(yyi + 1) - (yynrhs)])
1123 1.1 mrg );
1124 1.1 mrg YYFPRINTF (stderr, "\n");
1125 1.1 mrg }
1126 1.1 mrg }
1127 1.1 mrg
1128 1.1 mrg # define YY_REDUCE_PRINT(Rule) \
1129 1.1 mrg do { \
1130 1.1 mrg if (yydebug) \
1131 1.1 mrg yy_reduce_print (yyvsp, Rule); \
1132 1.1 mrg } while (YYID (0))
1133 1.1 mrg
1134 1.1 mrg /* Nonzero means print parse trace. It is left uninitialized so that
1135 1.1 mrg multiple parsers can coexist. */
1136 1.1 mrg int yydebug;
1137 1.1 mrg #else /* !YYDEBUG */
1138 1.1 mrg # define YYDPRINTF(Args)
1139 1.1 mrg # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
1140 1.1 mrg # define YY_STACK_PRINT(Bottom, Top)
1141 1.1 mrg # define YY_REDUCE_PRINT(Rule)
1142 1.1 mrg #endif /* !YYDEBUG */
1143 1.1 mrg
1144 1.1 mrg
1145 1.1 mrg /* YYINITDEPTH -- initial size of the parser's stacks. */
1146 1.1 mrg #ifndef YYINITDEPTH
1147 1.1 mrg # define YYINITDEPTH 200
1148 1.1 mrg #endif
1149 1.1 mrg
1150 1.1 mrg /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1151 1.1 mrg if the built-in stack extension method is used).
1152 1.1 mrg
1153 1.1 mrg Do not make this value too large; the results are undefined if
1154 1.1 mrg YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
1155 1.1 mrg evaluated with infinite-precision integer arithmetic. */
1156 1.1 mrg
1157 1.1 mrg #ifndef YYMAXDEPTH
1158 1.1 mrg # define YYMAXDEPTH 10000
1159 1.1 mrg #endif
1160 1.1 mrg
1161 1.1 mrg
1162 1.1 mrg
1164 1.1 mrg #if YYERROR_VERBOSE
1165 1.1 mrg
1166 1.1 mrg # ifndef yystrlen
1167 1.1 mrg # if defined __GLIBC__ && defined _STRING_H
1168 1.1 mrg # define yystrlen strlen
1169 1.1 mrg # else
1170 1.1 mrg /* Return the length of YYSTR. */
1171 1.1 mrg #if (defined __STDC__ || defined __C99__FUNC__ \
1172 1.1 mrg || defined __cplusplus || defined _MSC_VER)
1173 1.1 mrg static YYSIZE_T
1174 1.1 mrg yystrlen (const char *yystr)
1175 1.1 mrg #else
1176 1.1 mrg static YYSIZE_T
1177 1.1 mrg yystrlen (yystr)
1178 1.1 mrg const char *yystr;
1179 1.1 mrg #endif
1180 1.1 mrg {
1181 1.1 mrg YYSIZE_T yylen;
1182 1.1 mrg for (yylen = 0; yystr[yylen]; yylen++)
1183 1.1 mrg continue;
1184 1.1 mrg return yylen;
1185 1.1 mrg }
1186 1.1 mrg # endif
1187 1.1 mrg # endif
1188 1.1 mrg
1189 1.1 mrg # ifndef yystpcpy
1190 1.1 mrg # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
1191 1.1 mrg # define yystpcpy stpcpy
1192 1.1 mrg # else
1193 1.1 mrg /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1194 1.1 mrg YYDEST. */
1195 1.1 mrg #if (defined __STDC__ || defined __C99__FUNC__ \
1196 1.1 mrg || defined __cplusplus || defined _MSC_VER)
1197 1.1 mrg static char *
1198 1.1 mrg yystpcpy (char *yydest, const char *yysrc)
1199 1.1 mrg #else
1200 1.1 mrg static char *
1201 1.1 mrg yystpcpy (yydest, yysrc)
1202 1.1 mrg char *yydest;
1203 1.1 mrg const char *yysrc;
1204 1.1 mrg #endif
1205 1.1 mrg {
1206 1.1 mrg char *yyd = yydest;
1207 1.1 mrg const char *yys = yysrc;
1208 1.1 mrg
1209 1.1 mrg while ((*yyd++ = *yys++) != '\0')
1210 1.1 mrg continue;
1211 1.1 mrg
1212 1.1 mrg return yyd - 1;
1213 1.1 mrg }
1214 1.1 mrg # endif
1215 1.1 mrg # endif
1216 1.1 mrg
1217 1.1 mrg # ifndef yytnamerr
1218 1.1 mrg /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
1219 1.1 mrg quotes and backslashes, so that it's suitable for yyerror. The
1220 1.1 mrg heuristic is that double-quoting is unnecessary unless the string
1221 1.1 mrg contains an apostrophe, a comma, or backslash (other than
1222 1.1 mrg backslash-backslash). YYSTR is taken from yytname. If YYRES is
1223 1.1 mrg null, do not copy; instead, return the length of what the result
1224 1.1 mrg would have been. */
1225 1.1 mrg static YYSIZE_T
1226 1.1 mrg yytnamerr (char *yyres, const char *yystr)
1227 1.1 mrg {
1228 1.1 mrg if (*yystr == '"')
1229 1.1 mrg {
1230 1.1 mrg YYSIZE_T yyn = 0;
1231 1.1 mrg char const *yyp = yystr;
1232 1.1 mrg
1233 1.1 mrg for (;;)
1234 1.1 mrg switch (*++yyp)
1235 1.1 mrg {
1236 1.1 mrg case '\'':
1237 1.1 mrg case ',':
1238 1.1 mrg goto do_not_strip_quotes;
1239 1.1 mrg
1240 1.1 mrg case '\\':
1241 1.1 mrg if (*++yyp != '\\')
1242 1.1 mrg goto do_not_strip_quotes;
1243 1.1 mrg /* Fall through. */
1244 1.1 mrg default:
1245 1.1 mrg if (yyres)
1246 1.1 mrg yyres[yyn] = *yyp;
1247 1.1 mrg yyn++;
1248 1.1 mrg break;
1249 1.1 mrg
1250 1.1 mrg case '"':
1251 1.1 mrg if (yyres)
1252 1.1 mrg yyres[yyn] = '\0';
1253 1.1 mrg return yyn;
1254 1.1 mrg }
1255 1.1 mrg do_not_strip_quotes: ;
1256 1.1 mrg }
1257 1.1 mrg
1258 1.1 mrg if (! yyres)
1259 1.1 mrg return yystrlen (yystr);
1260 1.1 mrg
1261 1.1 mrg return yystpcpy (yyres, yystr) - yyres;
1262 1.1 mrg }
1263 1.1 mrg # endif
1264 1.1 mrg
1265 1.1 mrg /* Copy into YYRESULT an error message about the unexpected token
1266 1.1 mrg YYCHAR while in state YYSTATE. Return the number of bytes copied,
1267 1.1 mrg including the terminating null byte. If YYRESULT is null, do not
1268 1.1 mrg copy anything; just return the number of bytes that would be
1269 1.1 mrg copied. As a special case, return 0 if an ordinary "syntax error"
1270 1.1 mrg message will do. Return YYSIZE_MAXIMUM if overflow occurs during
1271 1.1 mrg size calculation. */
1272 1.1 mrg static YYSIZE_T
1273 1.1 mrg yysyntax_error (char *yyresult, int yystate, int yychar)
1274 1.1 mrg {
1275 1.1 mrg int yyn = yypact[yystate];
1276 1.1 mrg
1277 1.1 mrg if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
1278 1.1 mrg return 0;
1279 1.1 mrg else
1280 1.1 mrg {
1281 1.1 mrg int yytype = YYTRANSLATE (yychar);
1282 1.1 mrg YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
1283 1.1 mrg YYSIZE_T yysize = yysize0;
1284 1.1 mrg YYSIZE_T yysize1;
1285 1.1 mrg int yysize_overflow = 0;
1286 1.1 mrg enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
1287 1.1 mrg char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
1288 1.1 mrg int yyx;
1289 1.1 mrg
1290 1.1 mrg # if 0
1291 1.1 mrg /* This is so xgettext sees the translatable formats that are
1292 1.1 mrg constructed on the fly. */
1293 1.1 mrg YY_("syntax error, unexpected %s");
1294 1.1 mrg YY_("syntax error, unexpected %s, expecting %s");
1295 1.1 mrg YY_("syntax error, unexpected %s, expecting %s or %s");
1296 1.1 mrg YY_("syntax error, unexpected %s, expecting %s or %s or %s");
1297 1.1 mrg YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
1298 1.1 mrg # endif
1299 1.1 mrg char *yyfmt;
1300 1.1 mrg char const *yyf;
1301 1.1 mrg static char const yyunexpected[] = "syntax error, unexpected %s";
1302 1.1 mrg static char const yyexpecting[] = ", expecting %s";
1303 1.1 mrg static char const yyor[] = " or %s";
1304 1.1 mrg char yyformat[sizeof yyunexpected
1305 1.1 mrg + sizeof yyexpecting - 1
1306 1.1 mrg + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
1307 1.1 mrg * (sizeof yyor - 1))];
1308 1.1 mrg char const *yyprefix = yyexpecting;
1309 1.1 mrg
1310 1.1 mrg /* Start YYX at -YYN if negative to avoid negative indexes in
1311 1.1 mrg YYCHECK. */
1312 1.1 mrg int yyxbegin = yyn < 0 ? -yyn : 0;
1313 1.1 mrg
1314 1.1 mrg /* Stay within bounds of both yycheck and yytname. */
1315 1.1 mrg int yychecklim = YYLAST - yyn + 1;
1316 1.1 mrg int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
1317 1.1 mrg int yycount = 1;
1318 1.1 mrg
1319 1.1 mrg yyarg[0] = yytname[yytype];
1320 1.1 mrg yyfmt = yystpcpy (yyformat, yyunexpected);
1321 1.1 mrg
1322 1.1 mrg for (yyx = yyxbegin; yyx < yyxend; ++yyx)
1323 1.1 mrg if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
1324 1.1 mrg {
1325 1.1 mrg if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
1326 1.1 mrg {
1327 1.1 mrg yycount = 1;
1328 1.1 mrg yysize = yysize0;
1329 1.1 mrg yyformat[sizeof yyunexpected - 1] = '\0';
1330 1.1 mrg break;
1331 1.1 mrg }
1332 1.1 mrg yyarg[yycount++] = yytname[yyx];
1333 1.1 mrg yysize1 = yysize + yytnamerr (0, yytname[yyx]);
1334 1.1 mrg yysize_overflow |= (yysize1 < yysize);
1335 1.1 mrg yysize = yysize1;
1336 1.1 mrg yyfmt = yystpcpy (yyfmt, yyprefix);
1337 1.1 mrg yyprefix = yyor;
1338 1.1 mrg }
1339 1.1 mrg
1340 1.1 mrg yyf = YY_(yyformat);
1341 1.1 mrg yysize1 = yysize + yystrlen (yyf);
1342 1.1 mrg yysize_overflow |= (yysize1 < yysize);
1343 1.1 mrg yysize = yysize1;
1344 1.1 mrg
1345 1.1 mrg if (yysize_overflow)
1346 1.1 mrg return YYSIZE_MAXIMUM;
1347 1.1 mrg
1348 1.1 mrg if (yyresult)
1349 1.1 mrg {
1350 1.1 mrg /* Avoid sprintf, as that infringes on the user's name space.
1351 1.1 mrg Don't have undefined behavior even if the translation
1352 1.1 mrg produced a string with the wrong number of "%s"s. */
1353 1.1 mrg char *yyp = yyresult;
1354 1.1 mrg int yyi = 0;
1355 1.1 mrg while ((*yyp = *yyf) != '\0')
1356 1.1 mrg {
1357 1.1 mrg if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
1358 1.1 mrg {
1359 1.1 mrg yyp += yytnamerr (yyp, yyarg[yyi++]);
1360 1.1 mrg yyf += 2;
1361 1.1 mrg }
1362 1.1 mrg else
1363 1.1 mrg {
1364 1.1 mrg yyp++;
1365 1.1 mrg yyf++;
1366 1.1 mrg }
1367 1.1 mrg }
1368 1.1 mrg }
1369 1.1 mrg return yysize;
1370 1.1 mrg }
1371 1.1 mrg }
1372 1.1 mrg #endif /* YYERROR_VERBOSE */
1373 1.1 mrg
1374 1.1 mrg
1376 1.1 mrg /*-----------------------------------------------.
1377 1.1 mrg | Release the memory associated to this symbol. |
1378 1.1 mrg `-----------------------------------------------*/
1379 1.1 mrg
1380 1.1 mrg /*ARGSUSED*/
1381 1.1 mrg #if (defined __STDC__ || defined __C99__FUNC__ \
1382 1.1 mrg || defined __cplusplus || defined _MSC_VER)
1383 1.1 mrg static void
1384 1.1 mrg yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
1385 1.1 mrg #else
1386 1.1 mrg static void
1387 1.1 mrg yydestruct (yymsg, yytype, yyvaluep)
1388 1.1 mrg const char *yymsg;
1389 1.1 mrg int yytype;
1390 1.1 mrg YYSTYPE *yyvaluep;
1391 1.1 mrg #endif
1392 1.1 mrg {
1393 1.1 mrg YYUSE (yyvaluep);
1394 1.1 mrg
1395 1.1 mrg if (!yymsg)
1396 1.1 mrg yymsg = "Deleting";
1397 1.1 mrg YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1398 1.1 mrg
1399 1.1 mrg switch (yytype)
1400 1.1 mrg {
1401 1.1 mrg
1402 1.1 mrg default:
1403 1.1 mrg break;
1404 1.1 mrg }
1405 1.1 mrg }
1406 1.1 mrg
1407 1.1 mrg /* Prevent warnings from -Wmissing-prototypes. */
1408 1.1 mrg #ifdef YYPARSE_PARAM
1409 1.1 mrg #if defined __STDC__ || defined __cplusplus
1410 1.1 mrg int yyparse (void *YYPARSE_PARAM);
1411 1.1 mrg #else
1412 1.1 mrg int yyparse ();
1413 1.1 mrg #endif
1414 1.1 mrg #else /* ! YYPARSE_PARAM */
1415 1.1 mrg #if defined __STDC__ || defined __cplusplus
1416 1.1 mrg int yyparse (void);
1417 1.1 mrg #else
1418 1.1 mrg int yyparse ();
1419 1.1 mrg #endif
1420 1.1 mrg #endif /* ! YYPARSE_PARAM */
1421 1.1 mrg
1422 1.1 mrg
1423 1.1 mrg /* The lookahead symbol. */
1424 1.1 mrg int yychar;
1425 1.1 mrg
1426 1.1 mrg /* The semantic value of the lookahead symbol. */
1427 1.1 mrg YYSTYPE yylval;
1428 1.1 mrg
1429 1.1 mrg /* Number of syntax errors so far. */
1430 1.1 mrg int yynerrs;
1431 1.1 mrg
1432 1.1 mrg
1433 1.1 mrg
1434 1.1 mrg /*-------------------------.
1435 1.1 mrg | yyparse or yypush_parse. |
1436 1.1 mrg `-------------------------*/
1437 1.1 mrg
1438 1.1 mrg #ifdef YYPARSE_PARAM
1439 1.1 mrg #if (defined __STDC__ || defined __C99__FUNC__ \
1440 1.1 mrg || defined __cplusplus || defined _MSC_VER)
1441 1.1 mrg int
1442 1.1 mrg yyparse (void *YYPARSE_PARAM)
1443 1.1 mrg #else
1444 1.1 mrg int
1445 1.1 mrg yyparse (YYPARSE_PARAM)
1446 1.1 mrg void *YYPARSE_PARAM;
1447 1.1 mrg #endif
1448 1.1 mrg #else /* ! YYPARSE_PARAM */
1449 1.1 mrg #if (defined __STDC__ || defined __C99__FUNC__ \
1450 1.1 mrg || defined __cplusplus || defined _MSC_VER)
1451 1.1 mrg int
1452 1.1 mrg yyparse (void)
1453 1.1 mrg #else
1454 1.1 mrg int
1455 1.1 mrg yyparse ()
1456 1.1 mrg
1457 1.1 mrg #endif
1458 1.1 mrg #endif
1459 1.1 mrg {
1460 1.1 mrg
1461 1.1 mrg
1462 1.1 mrg int yystate;
1463 1.1 mrg /* Number of tokens to shift before error messages enabled. */
1464 1.1 mrg int yyerrstatus;
1465 1.1 mrg
1466 1.1 mrg /* The stacks and their tools:
1467 1.1 mrg `yyss': related to states.
1468 1.1 mrg `yyvs': related to semantic values.
1469 1.1 mrg
1470 1.1 mrg Refer to the stacks thru separate pointers, to allow yyoverflow
1471 1.1 mrg to reallocate them elsewhere. */
1472 1.1 mrg
1473 1.1 mrg /* The state stack. */
1474 1.1 mrg yytype_int16 yyssa[YYINITDEPTH];
1475 1.1 mrg yytype_int16 *yyss;
1476 1.1 mrg yytype_int16 *yyssp;
1477 1.1 mrg
1478 1.1 mrg /* The semantic value stack. */
1479 1.1 mrg YYSTYPE yyvsa[YYINITDEPTH];
1480 1.1 mrg YYSTYPE *yyvs;
1481 1.1 mrg YYSTYPE *yyvsp;
1482 1.1 mrg
1483 1.1 mrg YYSIZE_T yystacksize;
1484 1.1 mrg
1485 1.1 mrg int yyn;
1486 1.1 mrg int yyresult;
1487 1.1 mrg /* Lookahead token as an internal (translated) token number. */
1488 1.1 mrg int yytoken;
1489 1.1 mrg /* The variables used to return semantic value and location from the
1490 1.1 mrg action routines. */
1491 1.1 mrg YYSTYPE yyval;
1492 1.1 mrg
1493 1.1 mrg #if YYERROR_VERBOSE
1494 1.1 mrg /* Buffer for error messages, and its allocated size. */
1495 1.1 mrg char yymsgbuf[128];
1496 1.1 mrg char *yymsg = yymsgbuf;
1497 1.1 mrg YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
1498 1.1 mrg #endif
1499 1.1 mrg
1500 1.1 mrg #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
1501 1.1 mrg
1502 1.1 mrg /* The number of symbols on the RHS of the reduced rule.
1503 1.1 mrg Keep to zero when no symbol should be popped. */
1504 1.1 mrg int yylen = 0;
1505 1.1 mrg
1506 1.1 mrg yytoken = 0;
1507 1.1 mrg yyss = yyssa;
1508 1.1 mrg yyvs = yyvsa;
1509 1.1 mrg yystacksize = YYINITDEPTH;
1510 1.1 mrg
1511 1.1 mrg YYDPRINTF ((stderr, "Starting parse\n"));
1512 1.1 mrg
1513 1.1 mrg yystate = 0;
1514 1.1 mrg yyerrstatus = 0;
1515 1.1 mrg yynerrs = 0;
1516 1.1 mrg yychar = YYEMPTY; /* Cause a token to be read. */
1517 1.1 mrg
1518 1.1 mrg /* Initialize stack pointers.
1519 1.1 mrg Waste one element of value and location stack
1520 1.1 mrg so that they stay on the same level as the state stack.
1521 1.1 mrg The wasted elements are never initialized. */
1522 1.1 mrg yyssp = yyss;
1523 1.1 mrg yyvsp = yyvs;
1524 1.1 mrg
1525 1.1 mrg goto yysetstate;
1526 1.1 mrg
1527 1.1 mrg /*------------------------------------------------------------.
1528 1.1 mrg | yynewstate -- Push a new state, which is found in yystate. |
1529 1.1 mrg `------------------------------------------------------------*/
1530 1.1 mrg yynewstate:
1531 1.1 mrg /* In all cases, when you get here, the value and location stacks
1532 1.1 mrg have just been pushed. So pushing a state here evens the stacks. */
1533 1.1 mrg yyssp++;
1534 1.1 mrg
1535 1.1 mrg yysetstate:
1536 1.1 mrg *yyssp = yystate;
1537 1.1 mrg
1538 1.1 mrg if (yyss + yystacksize - 1 <= yyssp)
1539 1.1 mrg {
1540 1.1 mrg /* Get the current used size of the three stacks, in elements. */
1541 1.1 mrg YYSIZE_T yysize = yyssp - yyss + 1;
1542 1.1 mrg
1543 1.1 mrg #ifdef yyoverflow
1544 1.1 mrg {
1545 1.1 mrg /* Give user a chance to reallocate the stack. Use copies of
1546 1.1 mrg these so that the &'s don't force the real ones into
1547 1.1 mrg memory. */
1548 1.1 mrg YYSTYPE *yyvs1 = yyvs;
1549 1.1 mrg yytype_int16 *yyss1 = yyss;
1550 1.1 mrg
1551 1.1 mrg /* Each stack pointer address is followed by the size of the
1552 1.1 mrg data in use in that stack, in bytes. This used to be a
1553 1.1 mrg conditional around just the two extra args, but that might
1554 1.1 mrg be undefined if yyoverflow is a macro. */
1555 1.1 mrg yyoverflow (YY_("memory exhausted"),
1556 1.1 mrg &yyss1, yysize * sizeof (*yyssp),
1557 1.1 mrg &yyvs1, yysize * sizeof (*yyvsp),
1558 1.1 mrg &yystacksize);
1559 1.1 mrg
1560 1.1 mrg yyss = yyss1;
1561 1.1 mrg yyvs = yyvs1;
1562 1.1 mrg }
1563 1.1 mrg #else /* no yyoverflow */
1564 1.1 mrg # ifndef YYSTACK_RELOCATE
1565 1.1 mrg goto yyexhaustedlab;
1566 1.1 mrg # else
1567 1.1 mrg /* Extend the stack our own way. */
1568 1.1 mrg if (YYMAXDEPTH <= yystacksize)
1569 1.1 mrg goto yyexhaustedlab;
1570 1.1 mrg yystacksize *= 2;
1571 1.1 mrg if (YYMAXDEPTH < yystacksize)
1572 1.1 mrg yystacksize = YYMAXDEPTH;
1573 1.1 mrg
1574 1.1 mrg {
1575 1.1 mrg yytype_int16 *yyss1 = yyss;
1576 1.1 mrg union yyalloc *yyptr =
1577 1.1 mrg (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1578 1.1 mrg if (! yyptr)
1579 1.1 mrg goto yyexhaustedlab;
1580 1.1 mrg YYSTACK_RELOCATE (yyss_alloc, yyss);
1581 1.1 mrg YYSTACK_RELOCATE (yyvs_alloc, yyvs);
1582 1.1 mrg # undef YYSTACK_RELOCATE
1583 1.1 mrg if (yyss1 != yyssa)
1584 1.1 mrg YYSTACK_FREE (yyss1);
1585 1.1 mrg }
1586 1.1 mrg # endif
1587 1.1 mrg #endif /* no yyoverflow */
1588 1.1 mrg
1589 1.1 mrg yyssp = yyss + yysize - 1;
1590 1.1 mrg yyvsp = yyvs + yysize - 1;
1591 1.1 mrg
1592 1.1 mrg YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1593 1.1 mrg (unsigned long int) yystacksize));
1594 1.1 mrg
1595 1.1 mrg if (yyss + yystacksize - 1 <= yyssp)
1596 1.1 mrg YYABORT;
1597 1.1 mrg }
1598 1.1 mrg
1599 1.1 mrg YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1600 1.1 mrg
1601 1.1 mrg if (yystate == YYFINAL)
1602 1.1 mrg YYACCEPT;
1603 1.1 mrg
1604 1.1 mrg goto yybackup;
1605 1.1 mrg
1606 1.1 mrg /*-----------.
1607 1.1 mrg | yybackup. |
1608 1.1 mrg `-----------*/
1609 1.1 mrg yybackup:
1610 1.1 mrg
1611 1.1 mrg /* Do appropriate processing given the current state. Read a
1612 1.1 mrg lookahead token if we need one and don't already have one. */
1613 1.1 mrg
1614 1.1 mrg /* First try to decide what to do without reference to lookahead token. */
1615 1.1 mrg yyn = yypact[yystate];
1616 1.1 mrg if (yyn == YYPACT_NINF)
1617 1.1 mrg goto yydefault;
1618 1.1 mrg
1619 1.1 mrg /* Not known => get a lookahead token if don't already have one. */
1620 1.1 mrg
1621 1.1 mrg /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
1622 1.1 mrg if (yychar == YYEMPTY)
1623 1.1 mrg {
1624 1.1 mrg YYDPRINTF ((stderr, "Reading a token: "));
1625 1.1 mrg yychar = YYLEX;
1626 1.1 mrg }
1627 1.1 mrg
1628 1.1 mrg if (yychar <= YYEOF)
1629 1.1 mrg {
1630 1.1 mrg yychar = yytoken = YYEOF;
1631 1.1 mrg YYDPRINTF ((stderr, "Now at end of input.\n"));
1632 1.1 mrg }
1633 1.1 mrg else
1634 1.1 mrg {
1635 1.1 mrg yytoken = YYTRANSLATE (yychar);
1636 1.1 mrg YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
1637 1.1 mrg }
1638 1.1 mrg
1639 1.1 mrg /* If the proper action on seeing token YYTOKEN is to reduce or to
1640 1.1 mrg detect an error, take that action. */
1641 1.1 mrg yyn += yytoken;
1642 1.1 mrg if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1643 1.1 mrg goto yydefault;
1644 1.1 mrg yyn = yytable[yyn];
1645 1.1 mrg if (yyn <= 0)
1646 1.1 mrg {
1647 1.1 mrg if (yyn == 0 || yyn == YYTABLE_NINF)
1648 1.1 mrg goto yyerrlab;
1649 1.1 mrg yyn = -yyn;
1650 1.1 mrg goto yyreduce;
1651 1.1 mrg }
1652 1.1 mrg
1653 1.1 mrg /* Count tokens shifted since error; after three, turn off error
1654 1.1 mrg status. */
1655 1.1 mrg if (yyerrstatus)
1656 1.1 mrg yyerrstatus--;
1657 1.1 mrg
1658 1.1 mrg /* Shift the lookahead token. */
1659 1.1 mrg YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1660 1.1 mrg
1661 1.1 mrg /* Discard the shifted token. */
1662 1.1 mrg yychar = YYEMPTY;
1663 1.1 mrg
1664 1.1 mrg yystate = yyn;
1665 1.1 mrg *++yyvsp = yylval;
1666 1.1 mrg
1667 1.1 mrg goto yynewstate;
1668 1.1 mrg
1669 1.1 mrg
1670 1.1 mrg /*-----------------------------------------------------------.
1671 1.1 mrg | yydefault -- do the default action for the current state. |
1672 1.1 mrg `-----------------------------------------------------------*/
1673 1.1 mrg yydefault:
1674 1.1 mrg yyn = yydefact[yystate];
1675 1.1 mrg if (yyn == 0)
1676 1.1 mrg goto yyerrlab;
1677 1.1 mrg goto yyreduce;
1678 1.1 mrg
1679 1.1 mrg
1680 1.1 mrg /*-----------------------------.
1681 1.1 mrg | yyreduce -- Do a reduction. |
1682 1.1 mrg `-----------------------------*/
1683 1.1 mrg yyreduce:
1684 1.1 mrg /* yyn is the number of a rule to reduce with. */
1685 1.1 mrg yylen = yyr2[yyn];
1686 1.1 mrg
1687 1.1 mrg /* If YYLEN is nonzero, implement the default value of the action:
1688 1.1 mrg `$$ = $1'.
1689 1.1 mrg
1690 1.1 mrg Otherwise, the following line sets YYVAL to garbage.
1691 1.1 mrg This behavior is undocumented and Bison
1692 1.1 mrg users should not rely upon it. Assigning to YYVAL
1693 1.1 mrg unconditionally makes the parser a bit smaller, and it avoids a
1694 1.1 mrg GCC warning that YYVAL may be used uninitialized. */
1695 1.1 mrg yyval = yyvsp[1-yylen];
1696 1.1 mrg
1697 1.1 mrg
1698 1.1 mrg YY_REDUCE_PRINT (yyn);
1699 1.1 mrg switch (yyn)
1700 1.1 mrg {
1701 1.1 mrg case 6:
1702 1.1 mrg
1703 1.1 mrg /* Line 1464 of yacc.c */
1704 1.1 mrg #line 173 "calc.y"
1705 1.1 mrg { sp = stack[0]; yyerrok; }
1706 1.1 mrg break;
1707 1.1 mrg
1708 1.1 mrg case 8:
1709 1.1 mrg
1710 1.1 mrg /* Line 1464 of yacc.c */
1711 1.1 mrg #line 177 "calc.y"
1712 1.1 mrg {
1713 1.1 mrg mpz_out_str (stdout, obase, sp); putchar ('\n');
1714 1.1 mrg sp--;
1715 1.1 mrg CHECK_EMPTY ();
1716 1.1 mrg }
1717 1.1 mrg break;
1718 1.1 mrg
1719 1.1 mrg case 9:
1720 1.1 mrg
1721 1.1 mrg /* Line 1464 of yacc.c */
1722 1.1 mrg #line 182 "calc.y"
1723 1.1 mrg {
1724 1.1 mrg CHECK_VARIABLE ((yyvsp[(1) - (3)].var));
1725 1.1 mrg mpz_swap (variable[(yyvsp[(1) - (3)].var)], sp);
1726 1.1 mrg sp--;
1727 1.1 mrg CHECK_EMPTY ();
1728 1.1 mrg }
1729 1.1 mrg break;
1730 1.1 mrg
1731 1.1 mrg case 10:
1732 1.1 mrg
1733 1.1 mrg /* Line 1464 of yacc.c */
1734 1.1 mrg #line 188 "calc.y"
1735 1.1 mrg { calc_help (); }
1736 1.1 mrg break;
1737 1.1 mrg
1738 1.1 mrg case 11:
1739 1.1 mrg
1740 1.1 mrg /* Line 1464 of yacc.c */
1741 1.1 mrg #line 189 "calc.y"
1742 1.1 mrg { ibase = 16; obase = -16; }
1743 1.1 mrg break;
1744 1.1 mrg
1745 1.1 mrg case 12:
1746 1.1 mrg
1747 1.1 mrg /* Line 1464 of yacc.c */
1748 1.1 mrg #line 190 "calc.y"
1749 1.1 mrg { ibase = 0; obase = 10; }
1750 1.1 mrg break;
1751 1.1 mrg
1752 1.1 mrg case 13:
1753 1.1 mrg
1754 1.1 mrg /* Line 1464 of yacc.c */
1755 1.1 mrg #line 191 "calc.y"
1756 1.1 mrg { exit (0); }
1757 1.1 mrg break;
1758 1.1 mrg
1759 1.1 mrg case 15:
1760 1.1 mrg
1761 1.1 mrg /* Line 1464 of yacc.c */
1762 1.1 mrg #line 198 "calc.y"
1763 1.1 mrg { sp--; mpz_add (sp, sp, sp+1); }
1764 1.1 mrg break;
1765 1.1 mrg
1766 1.1 mrg case 16:
1767 1.1 mrg
1768 1.1 mrg /* Line 1464 of yacc.c */
1769 1.1 mrg #line 199 "calc.y"
1770 1.1 mrg { sp--; mpz_sub (sp, sp, sp+1); }
1771 1.1 mrg break;
1772 1.1 mrg
1773 1.1 mrg case 17:
1774 1.1 mrg
1775 1.1 mrg /* Line 1464 of yacc.c */
1776 1.1 mrg #line 200 "calc.y"
1777 1.1 mrg { sp--; mpz_mul (sp, sp, sp+1); }
1778 1.1 mrg break;
1779 1.1 mrg
1780 1.1 mrg case 18:
1781 1.1 mrg
1782 1.1 mrg /* Line 1464 of yacc.c */
1783 1.1 mrg #line 201 "calc.y"
1784 1.1 mrg { sp--; mpz_fdiv_q (sp, sp, sp+1); }
1785 1.1 mrg break;
1786 1.1 mrg
1787 1.1 mrg case 19:
1788 1.1 mrg
1789 1.1 mrg /* Line 1464 of yacc.c */
1790 1.1 mrg #line 202 "calc.y"
1791 1.1 mrg { sp--; mpz_fdiv_r (sp, sp, sp+1); }
1792 1.1 mrg break;
1793 1.1 mrg
1794 1.1 mrg case 20:
1795 1.1 mrg
1796 1.1 mrg /* Line 1464 of yacc.c */
1797 1.1 mrg #line 203 "calc.y"
1798 1.1 mrg { CHECK_UI ("Exponent", sp);
1799 1.1 mrg sp--; mpz_pow_ui (sp, sp, mpz_get_ui (sp+1)); }
1800 1.1 mrg break;
1801 1.1 mrg
1802 1.1 mrg case 21:
1803 1.1 mrg
1804 1.1 mrg /* Line 1464 of yacc.c */
1805 1.1 mrg #line 205 "calc.y"
1806 1.1 mrg { CHECK_UI ("Shift count", sp);
1807 1.1 mrg sp--; mpz_mul_2exp (sp, sp, mpz_get_ui (sp+1)); }
1808 1.1 mrg break;
1809 1.1 mrg
1810 1.1 mrg case 22:
1811 1.1 mrg
1812 1.1 mrg /* Line 1464 of yacc.c */
1813 1.1 mrg #line 207 "calc.y"
1814 1.1 mrg { CHECK_UI ("Shift count", sp);
1815 1.1 mrg sp--; mpz_fdiv_q_2exp (sp, sp, mpz_get_ui (sp+1)); }
1816 1.1 mrg break;
1817 1.1 mrg
1818 1.1 mrg case 23:
1819 1.1 mrg
1820 1.1 mrg /* Line 1464 of yacc.c */
1821 1.1 mrg #line 209 "calc.y"
1822 1.1 mrg { CHECK_UI ("Factorial", sp);
1823 1.1 mrg mpz_fac_ui (sp, mpz_get_ui (sp)); }
1824 1.1 mrg break;
1825 1.1 mrg
1826 1.1 mrg case 24:
1827 1.1 mrg
1828 1.1 mrg /* Line 1464 of yacc.c */
1829 1.1 mrg #line 211 "calc.y"
1830 1.1 mrg { mpz_neg (sp, sp); }
1831 1.1 mrg break;
1832 1.1 mrg
1833 1.1 mrg case 25:
1834 1.1 mrg
1835 1.1 mrg /* Line 1464 of yacc.c */
1836 1.1 mrg #line 213 "calc.y"
1837 1.1 mrg { sp--; mpz_set_ui (sp, mpz_cmp (sp, sp+1) < 0); }
1838 1.1 mrg break;
1839 1.1 mrg
1840 1.1 mrg case 26:
1841 1.1 mrg
1842 1.1 mrg /* Line 1464 of yacc.c */
1843 1.1 mrg #line 214 "calc.y"
1844 1.1 mrg { sp--; mpz_set_ui (sp, mpz_cmp (sp, sp+1) <= 0); }
1845 1.1 mrg break;
1846 1.1 mrg
1847 1.1 mrg case 27:
1848 1.1 mrg
1849 1.1 mrg /* Line 1464 of yacc.c */
1850 1.1 mrg #line 215 "calc.y"
1851 1.1 mrg { sp--; mpz_set_ui (sp, mpz_cmp (sp, sp+1) == 0); }
1852 1.1 mrg break;
1853 1.1 mrg
1854 1.1 mrg case 28:
1855 1.1 mrg
1856 1.1 mrg /* Line 1464 of yacc.c */
1857 1.1 mrg #line 216 "calc.y"
1858 1.1 mrg { sp--; mpz_set_ui (sp, mpz_cmp (sp, sp+1) != 0); }
1859 1.1 mrg break;
1860 1.1 mrg
1861 1.1 mrg case 29:
1862 1.1 mrg
1863 1.1 mrg /* Line 1464 of yacc.c */
1864 1.1 mrg #line 217 "calc.y"
1865 1.1 mrg { sp--; mpz_set_ui (sp, mpz_cmp (sp, sp+1) >= 0); }
1866 1.1 mrg break;
1867 1.1 mrg
1868 1.1 mrg case 30:
1869 1.1 mrg
1870 1.1 mrg /* Line 1464 of yacc.c */
1871 1.1 mrg #line 218 "calc.y"
1872 1.1 mrg { sp--; mpz_set_ui (sp, mpz_cmp (sp, sp+1) > 0); }
1873 1.1 mrg break;
1874 1.1 mrg
1875 1.1 mrg case 31:
1876 1.1 mrg
1877 1.1 mrg /* Line 1464 of yacc.c */
1878 1.1 mrg #line 220 "calc.y"
1879 1.1 mrg { sp--; mpz_set_ui (sp, mpz_sgn (sp) && mpz_sgn (sp+1)); }
1880 1.1 mrg break;
1881 1.1 mrg
1882 1.1 mrg case 32:
1883 1.1 mrg
1884 1.1 mrg /* Line 1464 of yacc.c */
1885 1.1 mrg #line 221 "calc.y"
1886 1.1 mrg { sp--; mpz_set_ui (sp, mpz_sgn (sp) || mpz_sgn (sp+1)); }
1887 1.1 mrg break;
1888 1.1 mrg
1889 1.1 mrg case 33:
1890 1.1 mrg
1891 1.1 mrg /* Line 1464 of yacc.c */
1892 1.1 mrg #line 223 "calc.y"
1893 1.1 mrg { mpz_abs (sp, sp); }
1894 1.1 mrg break;
1895 1.1 mrg
1896 1.1 mrg case 34:
1897 1.1 mrg
1898 1.1 mrg /* Line 1464 of yacc.c */
1899 1.1 mrg #line 224 "calc.y"
1900 1.1 mrg { sp--; CHECK_UI ("Binomial base", sp+1);
1901 1.1 mrg mpz_bin_ui (sp, sp, mpz_get_ui (sp+1)); }
1902 1.1 mrg break;
1903 1.1 mrg
1904 1.1 mrg case 35:
1905 1.1 mrg
1906 1.1 mrg /* Line 1464 of yacc.c */
1907 1.1 mrg #line 226 "calc.y"
1908 1.1 mrg { CHECK_UI ("Fibonacci", sp);
1909 1.1 mrg mpz_fib_ui (sp, mpz_get_ui (sp)); }
1910 1.1 mrg break;
1911 1.1 mrg
1912 1.1 mrg case 37:
1913 1.1 mrg
1914 1.1 mrg /* Line 1464 of yacc.c */
1915 1.1 mrg #line 229 "calc.y"
1916 1.1 mrg { sp--; mpz_set_si (sp,
1917 1.1 mrg mpz_kronecker (sp, sp+1)); }
1918 1.1 mrg break;
1919 1.1 mrg
1920 1.1 mrg case 39:
1921 1.1 mrg
1922 1.1 mrg /* Line 1464 of yacc.c */
1923 1.1 mrg #line 232 "calc.y"
1924 1.1 mrg { CHECK_UI ("Lucas number", sp);
1925 1.1 mrg mpz_lucnum_ui (sp, mpz_get_ui (sp)); }
1926 1.1 mrg break;
1927 1.1 mrg
1928 1.1 mrg case 40:
1929 1.1 mrg
1930 1.1 mrg /* Line 1464 of yacc.c */
1931 1.1 mrg #line 234 "calc.y"
1932 1.1 mrg { mpz_nextprime (sp, sp); }
1933 1.1 mrg break;
1934 1.1 mrg
1935 1.1 mrg case 41:
1936 1.1 mrg
1937 1.1 mrg /* Line 1464 of yacc.c */
1938 1.1 mrg #line 235 "calc.y"
1939 1.1 mrg { sp -= 2; mpz_powm (sp, sp, sp+1, sp+2); }
1940 1.1 mrg break;
1941 1.1 mrg
1942 1.1 mrg case 42:
1943 1.1 mrg
1944 1.1 mrg /* Line 1464 of yacc.c */
1945 1.1 mrg #line 236 "calc.y"
1946 1.1 mrg { sp--; CHECK_UI ("Nth-root", sp+1);
1947 1.1 mrg mpz_root (sp, sp, mpz_get_ui (sp+1)); }
1948 1.1 mrg break;
1949 1.1 mrg
1950 1.1 mrg case 43:
1951 1.1 mrg
1952 1.1 mrg /* Line 1464 of yacc.c */
1953 1.1 mrg #line 238 "calc.y"
1954 1.1 mrg { mpz_sqrt (sp, sp); }
1955 1.1 mrg break;
1956 1.1 mrg
1957 1.1 mrg case 44:
1958 1.1 mrg
1959 1.1 mrg /* Line 1464 of yacc.c */
1960 1.1 mrg #line 240 "calc.y"
1961 1.1 mrg {
1962 1.1 mrg sp++;
1963 1.1 mrg CHECK_OVERFLOW ();
1964 1.1 mrg CHECK_VARIABLE ((yyvsp[(1) - (1)].var));
1965 1.1 mrg mpz_set (sp, variable[(yyvsp[(1) - (1)].var)]);
1966 1.1 mrg }
1967 1.1 mrg break;
1968 1.1 mrg
1969 1.1 mrg case 45:
1970 1.1 mrg
1971 1.1 mrg /* Line 1464 of yacc.c */
1972 1.1 mrg #line 246 "calc.y"
1973 1.1 mrg {
1974 1.1 mrg sp++;
1975 1.1 mrg CHECK_OVERFLOW ();
1976 1.1 mrg if (mpz_set_str (sp, (yyvsp[(1) - (1)].str), ibase) != 0)
1977 1.1 mrg {
1978 1.1 mrg fprintf (stderr, "Invalid number: %s\n", (yyvsp[(1) - (1)].str));
1979 1.1 mrg YYERROR;
1980 1.1 mrg }
1981 1.1 mrg }
1982 1.1 mrg break;
1983 1.1 mrg
1984 1.1 mrg case 47:
1985 1.1 mrg
1986 1.1 mrg /* Line 1464 of yacc.c */
1987 1.1 mrg #line 258 "calc.y"
1988 1.1 mrg { sp--; mpz_gcd (sp, sp, sp+1); }
1989 1.1 mrg break;
1990 1.1 mrg
1991 1.1 mrg case 49:
1992 1.1 mrg
1993 1.1 mrg /* Line 1464 of yacc.c */
1994 1.1 mrg #line 262 "calc.y"
1995 1.1 mrg { sp--; mpz_lcm (sp, sp, sp+1); }
1996 1.1 mrg break;
1997 1.1 mrg
1998 1.1 mrg
1999 1.1 mrg
2000 1.1 mrg /* Line 1464 of yacc.c */
2001 1.1 mrg #line 2000 "calc.c"
2002 1.1 mrg default: break;
2003 1.1 mrg }
2004 1.1 mrg YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
2005 1.1 mrg
2006 1.1 mrg YYPOPSTACK (yylen);
2007 1.1 mrg yylen = 0;
2008 1.1 mrg YY_STACK_PRINT (yyss, yyssp);
2009 1.1 mrg
2010 1.1 mrg *++yyvsp = yyval;
2011 1.1 mrg
2012 1.1 mrg /* Now `shift' the result of the reduction. Determine what state
2013 1.1 mrg that goes to, based on the state we popped back to and the rule
2014 1.1 mrg number reduced by. */
2015 1.1 mrg
2016 1.1 mrg yyn = yyr1[yyn];
2017 1.1 mrg
2018 1.1 mrg yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
2019 1.1 mrg if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
2020 1.1 mrg yystate = yytable[yystate];
2021 1.1 mrg else
2022 1.1 mrg yystate = yydefgoto[yyn - YYNTOKENS];
2023 1.1 mrg
2024 1.1 mrg goto yynewstate;
2025 1.1 mrg
2026 1.1 mrg
2027 1.1 mrg /*------------------------------------.
2028 1.1 mrg | yyerrlab -- here on detecting error |
2029 1.1 mrg `------------------------------------*/
2030 1.1 mrg yyerrlab:
2031 1.1 mrg /* If not already recovering from an error, report this error. */
2032 1.1 mrg if (!yyerrstatus)
2033 1.1 mrg {
2034 1.1 mrg ++yynerrs;
2035 1.1 mrg #if ! YYERROR_VERBOSE
2036 1.1 mrg yyerror (YY_("syntax error"));
2037 1.1 mrg #else
2038 1.1 mrg {
2039 1.1 mrg YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
2040 1.1 mrg if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
2041 1.1 mrg {
2042 1.1 mrg YYSIZE_T yyalloc = 2 * yysize;
2043 1.1 mrg if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
2044 1.1 mrg yyalloc = YYSTACK_ALLOC_MAXIMUM;
2045 1.1 mrg if (yymsg != yymsgbuf)
2046 1.1 mrg YYSTACK_FREE (yymsg);
2047 1.1 mrg yymsg = (char *) YYSTACK_ALLOC (yyalloc);
2048 1.1 mrg if (yymsg)
2049 1.1 mrg yymsg_alloc = yyalloc;
2050 1.1 mrg else
2051 1.1 mrg {
2052 1.1 mrg yymsg = yymsgbuf;
2053 1.1 mrg yymsg_alloc = sizeof yymsgbuf;
2054 1.1 mrg }
2055 1.1 mrg }
2056 1.1 mrg
2057 1.1 mrg if (0 < yysize && yysize <= yymsg_alloc)
2058 1.1 mrg {
2059 1.1 mrg (void) yysyntax_error (yymsg, yystate, yychar);
2060 1.1 mrg yyerror (yymsg);
2061 1.1 mrg }
2062 1.1 mrg else
2063 1.1 mrg {
2064 1.1 mrg yyerror (YY_("syntax error"));
2065 1.1 mrg if (yysize != 0)
2066 1.1 mrg goto yyexhaustedlab;
2067 1.1 mrg }
2068 1.1 mrg }
2069 1.1 mrg #endif
2070 1.1 mrg }
2071 1.1 mrg
2072 1.1 mrg
2073 1.1 mrg
2074 1.1 mrg if (yyerrstatus == 3)
2075 1.1 mrg {
2076 1.1 mrg /* If just tried and failed to reuse lookahead token after an
2077 1.1 mrg error, discard it. */
2078 1.1 mrg
2079 1.1 mrg if (yychar <= YYEOF)
2080 1.1 mrg {
2081 1.1 mrg /* Return failure if at end of input. */
2082 1.1 mrg if (yychar == YYEOF)
2083 1.1 mrg YYABORT;
2084 1.1 mrg }
2085 1.1 mrg else
2086 1.1 mrg {
2087 1.1 mrg yydestruct ("Error: discarding",
2088 1.1 mrg yytoken, &yylval);
2089 1.1 mrg yychar = YYEMPTY;
2090 1.1 mrg }
2091 1.1 mrg }
2092 1.1 mrg
2093 1.1 mrg /* Else will try to reuse lookahead token after shifting the error
2094 1.1 mrg token. */
2095 1.1 mrg goto yyerrlab1;
2096 1.1 mrg
2097 1.1 mrg
2098 1.1 mrg /*---------------------------------------------------.
2099 1.1 mrg | yyerrorlab -- error raised explicitly by YYERROR. |
2100 1.1 mrg `---------------------------------------------------*/
2101 1.1 mrg yyerrorlab:
2102 1.1 mrg
2103 1.1 mrg /* Pacify compilers like GCC when the user code never invokes
2104 1.1 mrg YYERROR and the label yyerrorlab therefore never appears in user
2105 1.1 mrg code. */
2106 1.1 mrg if (/*CONSTCOND*/ 0)
2107 1.1 mrg goto yyerrorlab;
2108 1.1 mrg
2109 1.1 mrg /* Do not reclaim the symbols of the rule which action triggered
2110 1.1 mrg this YYERROR. */
2111 1.1 mrg YYPOPSTACK (yylen);
2112 1.1 mrg yylen = 0;
2113 1.1 mrg YY_STACK_PRINT (yyss, yyssp);
2114 1.1 mrg yystate = *yyssp;
2115 1.1 mrg goto yyerrlab1;
2116 1.1 mrg
2117 1.1 mrg
2118 1.1 mrg /*-------------------------------------------------------------.
2119 1.1 mrg | yyerrlab1 -- common code for both syntax error and YYERROR. |
2120 1.1 mrg `-------------------------------------------------------------*/
2121 1.1 mrg yyerrlab1:
2122 1.1 mrg yyerrstatus = 3; /* Each real token shifted decrements this. */
2123 1.1 mrg
2124 1.1 mrg for (;;)
2125 1.1 mrg {
2126 1.1 mrg yyn = yypact[yystate];
2127 1.1 mrg if (yyn != YYPACT_NINF)
2128 1.1 mrg {
2129 1.1 mrg yyn += YYTERROR;
2130 1.1 mrg if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
2131 1.1 mrg {
2132 1.1 mrg yyn = yytable[yyn];
2133 1.1 mrg if (0 < yyn)
2134 1.1 mrg break;
2135 1.1 mrg }
2136 1.1 mrg }
2137 1.1 mrg
2138 1.1 mrg /* Pop the current state because it cannot handle the error token. */
2139 1.1 mrg if (yyssp == yyss)
2140 1.1 mrg YYABORT;
2141 1.1 mrg
2142 1.1 mrg
2143 1.1 mrg yydestruct ("Error: popping",
2144 1.1 mrg yystos[yystate], yyvsp);
2145 1.1 mrg YYPOPSTACK (1);
2146 1.1 mrg yystate = *yyssp;
2147 1.1 mrg YY_STACK_PRINT (yyss, yyssp);
2148 1.1 mrg }
2149 1.1 mrg
2150 1.1 mrg *++yyvsp = yylval;
2151 1.1 mrg
2152 1.1 mrg
2153 1.1 mrg /* Shift the error token. */
2154 1.1 mrg YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
2155 1.1 mrg
2156 1.1 mrg yystate = yyn;
2157 1.1 mrg goto yynewstate;
2158 1.1 mrg
2159 1.1 mrg
2160 1.1 mrg /*-------------------------------------.
2161 1.1 mrg | yyacceptlab -- YYACCEPT comes here. |
2162 1.1 mrg `-------------------------------------*/
2163 1.1 mrg yyacceptlab:
2164 1.1 mrg yyresult = 0;
2165 1.1 mrg goto yyreturn;
2166 1.1 mrg
2167 1.1 mrg /*-----------------------------------.
2168 1.1 mrg | yyabortlab -- YYABORT comes here. |
2169 1.1 mrg `-----------------------------------*/
2170 1.1 mrg yyabortlab:
2171 1.1 mrg yyresult = 1;
2172 1.1 mrg goto yyreturn;
2173 1.1 mrg
2174 1.1 mrg #if !defined(yyoverflow) || YYERROR_VERBOSE
2175 1.1 mrg /*-------------------------------------------------.
2176 1.1 mrg | yyexhaustedlab -- memory exhaustion comes here. |
2177 1.1 mrg `-------------------------------------------------*/
2178 1.1 mrg yyexhaustedlab:
2179 1.1 mrg yyerror (YY_("memory exhausted"));
2180 1.1 mrg yyresult = 2;
2181 1.1 mrg /* Fall through. */
2182 1.1 mrg #endif
2183 1.1 mrg
2184 1.1 mrg yyreturn:
2185 1.1 mrg if (yychar != YYEMPTY)
2186 1.1 mrg yydestruct ("Cleanup: discarding lookahead",
2187 1.1 mrg yytoken, &yylval);
2188 1.1 mrg /* Do not reclaim the symbols of the rule which action triggered
2189 1.1 mrg this YYABORT or YYACCEPT. */
2190 1.1 mrg YYPOPSTACK (yylen);
2191 1.1 mrg YY_STACK_PRINT (yyss, yyssp);
2192 1.1 mrg while (yyssp != yyss)
2193 1.1 mrg {
2194 1.1 mrg yydestruct ("Cleanup: popping",
2195 1.1 mrg yystos[*yyssp], yyvsp);
2196 1.1 mrg YYPOPSTACK (1);
2197 1.1 mrg }
2198 1.1 mrg #ifndef yyoverflow
2199 1.1 mrg if (yyss != yyssa)
2200 1.1 mrg YYSTACK_FREE (yyss);
2201 1.1 mrg #endif
2202 1.1 mrg #if YYERROR_VERBOSE
2203 1.1 mrg if (yymsg != yymsgbuf)
2204 1.1 mrg YYSTACK_FREE (yymsg);
2205 1.1 mrg #endif
2206 1.1 mrg /* Make sure YYID is used. */
2207 1.1 mrg return YYID (yyresult);
2208 1.1 mrg }
2209 1.1 mrg
2210 1.1 mrg
2211 1.1 mrg
2212 1.1 mrg /* Line 1684 of yacc.c */
2213 1.1 mrg #line 264 "calc.y"
2214 1.1 mrg
2215 1.1 mrg
2216 1.1 mrg yyerror (char *s)
2217 1.1 mrg {
2218 1.1 mrg fprintf (stderr, "%s\n", s);
2219 1.1 mrg }
2220 1.1 mrg
2221 1.1 mrg int calc_option_readline = -1;
2222 1.1 mrg
2223 1.1 mrg int
2224 1.1 mrg main (int argc, char *argv[])
2225 1.1 mrg {
2226 1.1 mrg int i;
2227 1.1 mrg
2228 1.1 mrg for (i = 1; i < argc; i++)
2229 1.1 mrg {
2230 1.1 mrg if (strcmp (argv[i], "--readline") == 0)
2231 1.1 mrg calc_option_readline = 1;
2232 1.1 mrg else if (strcmp (argv[i], "--noreadline") == 0)
2233 1.1 mrg calc_option_readline = 0;
2234 1.1 mrg else if (strcmp (argv[i], "--help") == 0)
2235 1.1 mrg {
2236 1.1 mrg printf ("Usage: calc [--option]...\n");
2237 1.1 mrg printf (" --readline use readline\n");
2238 1.1 mrg printf (" --noreadline don't use readline\n");
2239 1.1 mrg printf (" --help this message\n");
2240 1.1 mrg printf ("Readline is only available when compiled in,\n");
2241 1.1 mrg printf ("and in that case it's the default on a tty.\n");
2242 1.1 mrg exit (0);
2243 1.1 mrg }
2244 1.1 mrg else
2245 1.1 mrg {
2246 1.1 mrg fprintf (stderr, "Unrecognised option: %s\n", argv[i]);
2247 1.1 mrg exit (1);
2248 1.1 mrg }
2249 1.1 mrg }
2250 1.1 mrg
2251 1.1 mrg #if WITH_READLINE
2252 1.1 mrg calc_init_readline ();
2253 1.1 mrg #else
2254 1.1 mrg if (calc_option_readline == 1)
2255 1.1 mrg {
2256 1.1 mrg fprintf (stderr, "Readline support not available\n");
2257 1.1 mrg exit (1);
2258 1.1 mrg }
2259 1.1 mrg #endif
2260 1.1 mrg
2261 1.1 mrg for (i = 0; i < numberof (variable); i++)
2262 1.1 mrg mpz_init (variable[i]);
2263 1.1 mrg
2264 1.1 mrg for (i = 0; i < numberof (stack); i++)
2265 1.1 mrg mpz_init (stack[i]);
2266 1.1 mrg
2267 1.1 mrg return yyparse ();
2268 }
2269
2270