Subversion Repositories HelenOS

Rev

Rev 2714 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2714 Rev 3240
1
/* A Bison parser, made by GNU Bison 2.3.  */
1
/* A Bison parser, made by GNU Bison 2.3.  */
2
 
2
 
3
/* Skeleton implementation for Bison's Yacc-like parsers in C
3
/* Skeleton implementation for Bison's Yacc-like parsers in C
4
 
4
 
5
   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
5
   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
6
   Free Software Foundation, Inc.
6
   Free Software Foundation, Inc.
7
 
7
 
8
   This program is free software; you can redistribute it and/or modify
8
   This program is free software; you can redistribute it and/or modify
9
   it under the terms of the GNU General Public License as published by
9
   it under the terms of the GNU General Public License as published by
10
   the Free Software Foundation; either version 2, or (at your option)
10
   the Free Software Foundation; either version 2, or (at your option)
11
   any later version.
11
   any later version.
12
 
12
 
13
   This program is distributed in the hope that it will be useful,
13
   This program is distributed in the hope that it will be useful,
14
   but WITHOUT ANY WARRANTY; without even the implied warranty of
14
   but WITHOUT ANY WARRANTY; without even the implied warranty of
15
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
   GNU General Public License for more details.
16
   GNU General Public License for more details.
17
 
17
 
18
   You should have received a copy of the GNU General Public License
18
   You should have received a copy of the GNU General Public License
19
   along with this program; if not, write to the Free Software
19
   along with this program; if not, write to the Free Software
20
   Foundation, Inc., 51 Franklin Street, Fifth Floor,
20
   Foundation, Inc., 51 Franklin Street, Fifth Floor,
21
   Boston, MA 02110-1301, USA.  */
21
   Boston, MA 02110-1301, USA.  */
22
 
22
 
23
/* As a special exception, you may create a larger work that contains
23
/* As a special exception, you may create a larger work that contains
24
   part or all of the Bison parser skeleton and distribute that work
24
   part or all of the Bison parser skeleton and distribute that work
25
   under terms of your choice, so long as that work isn't itself a
25
   under terms of your choice, so long as that work isn't itself a
26
   parser generator using the skeleton or a modified version thereof
26
   parser generator using the skeleton or a modified version thereof
27
   as a parser skeleton.  Alternatively, if you modify or redistribute
27
   as a parser skeleton.  Alternatively, if you modify or redistribute
28
   the parser skeleton itself, you may (at your option) remove this
28
   the parser skeleton itself, you may (at your option) remove this
29
   special exception, which will cause the skeleton and the resulting
29
   special exception, which will cause the skeleton and the resulting
30
   Bison output files to be licensed under the GNU General Public
30
   Bison output files to be licensed under the GNU General Public
31
   License without this special exception.
31
   License without this special exception.
32
 
32
 
33
   This special exception was added by the Free Software Foundation in
33
   This special exception was added by the Free Software Foundation in
34
   version 2.2 of Bison.  */
34
   version 2.2 of Bison.  */
35
 
35
 
36
/* C LALR(1) parser skeleton written by Richard Stallman, by
36
/* C LALR(1) parser skeleton written by Richard Stallman, by
37
   simplifying the original so-called "semantic" parser.  */
37
   simplifying the original so-called "semantic" parser.  */
38
 
38
 
39
/* All symbols defined below should begin with yy or YY, to avoid
39
/* All symbols defined below should begin with yy or YY, to avoid
40
   infringing on user name space.  This should be done even for local
40
   infringing on user name space.  This should be done even for local
41
   variables, as they might otherwise be expanded by user macros.
41
   variables, as they might otherwise be expanded by user macros.
42
   There are some unavoidable exceptions within include files to
42
   There are some unavoidable exceptions within include files to
43
   define necessary library symbols; they are noted "INFRINGES ON
43
   define necessary library symbols; they are noted "INFRINGES ON
44
   USER NAME SPACE" below.  */
44
   USER NAME SPACE" below.  */
45
 
45
 
46
/* Identify Bison output.  */
46
/* Identify Bison output.  */
47
#define YYBISON 1
47
#define YYBISON 1
48
 
48
 
49
/* Bison version.  */
49
/* Bison version.  */
50
#define YYBISON_VERSION "2.3"
50
#define YYBISON_VERSION "2.3"
51
 
51
 
52
/* Skeleton name.  */
52
/* Skeleton name.  */
53
#define YYSKELETON_NAME "yacc.c"
53
#define YYSKELETON_NAME "yacc.c"
54
 
54
 
55
/* Pure parsers.  */
55
/* Pure parsers.  */
56
#define YYPURE 0
56
#define YYPURE 0
57
 
57
 
58
/* Using locations.  */
58
/* Using locations.  */
59
#define YYLSP_NEEDED 0
59
#define YYLSP_NEEDED 0
60
 
60
 
61
 
61
 
62
 
62
 
63
/* Tokens.  */
63
/* Tokens.  */
64
#ifndef YYTOKENTYPE
64
#ifndef YYTOKENTYPE
65
# define YYTOKENTYPE
65
# define YYTOKENTYPE
66
   /* Put the tokens into the symbol table, so that GDB and other debuggers
66
   /* Put the tokens into the symbol table, so that GDB and other debuggers
67
      know about them.  */
67
      know about them.  */
68
   enum yytokentype {
68
   enum yytokentype {
69
     ARITH_NUM = 258,
69
     ARITH_NUM = 258,
70
     ARITH_LPAREN = 259,
70
     ARITH_LPAREN = 259,
71
     ARITH_RPAREN = 260,
71
     ARITH_RPAREN = 260,
72
     ARITH_OR = 261,
72
     ARITH_OR = 261,
73
     ARITH_AND = 262,
73
     ARITH_AND = 262,
74
     ARITH_BOR = 263,
74
     ARITH_BOR = 263,
75
     ARITH_BXOR = 264,
75
     ARITH_BXOR = 264,
76
     ARITH_BAND = 265,
76
     ARITH_BAND = 265,
77
     ARITH_NE = 266,
77
     ARITH_NE = 266,
78
     ARITH_EQ = 267,
78
     ARITH_EQ = 267,
79
     ARITH_LE = 268,
79
     ARITH_LE = 268,
80
     ARITH_GE = 269,
80
     ARITH_GE = 269,
81
     ARITH_GT = 270,
81
     ARITH_GT = 270,
82
     ARITH_LT = 271,
82
     ARITH_LT = 271,
83
     ARITH_RSHIFT = 272,
83
     ARITH_RSHIFT = 272,
84
     ARITH_LSHIFT = 273,
84
     ARITH_LSHIFT = 273,
85
     ARITH_SUB = 274,
85
     ARITH_SUB = 274,
86
     ARITH_ADD = 275,
86
     ARITH_ADD = 275,
87
     ARITH_REM = 276,
87
     ARITH_REM = 276,
88
     ARITH_DIV = 277,
88
     ARITH_DIV = 277,
89
     ARITH_MUL = 278,
89
     ARITH_MUL = 278,
90
     ARITH_BNOT = 279,
90
     ARITH_BNOT = 279,
91
     ARITH_NOT = 280,
91
     ARITH_NOT = 280,
92
     ARITH_UNARYPLUS = 281,
92
     ARITH_UNARYPLUS = 281,
93
     ARITH_UNARYMINUS = 282
93
     ARITH_UNARYMINUS = 282
94
   };
94
   };
95
#endif
95
#endif
96
/* Tokens.  */
96
/* Tokens.  */
97
#define ARITH_NUM 258
97
#define ARITH_NUM 258
98
#define ARITH_LPAREN 259
98
#define ARITH_LPAREN 259
99
#define ARITH_RPAREN 260
99
#define ARITH_RPAREN 260
100
#define ARITH_OR 261
100
#define ARITH_OR 261
101
#define ARITH_AND 262
101
#define ARITH_AND 262
102
#define ARITH_BOR 263
102
#define ARITH_BOR 263
103
#define ARITH_BXOR 264
103
#define ARITH_BXOR 264
104
#define ARITH_BAND 265
104
#define ARITH_BAND 265
105
#define ARITH_NE 266
105
#define ARITH_NE 266
106
#define ARITH_EQ 267
106
#define ARITH_EQ 267
107
#define ARITH_LE 268
107
#define ARITH_LE 268
108
#define ARITH_GE 269
108
#define ARITH_GE 269
109
#define ARITH_GT 270
109
#define ARITH_GT 270
110
#define ARITH_LT 271
110
#define ARITH_LT 271
111
#define ARITH_RSHIFT 272
111
#define ARITH_RSHIFT 272
112
#define ARITH_LSHIFT 273
112
#define ARITH_LSHIFT 273
113
#define ARITH_SUB 274
113
#define ARITH_SUB 274
114
#define ARITH_ADD 275
114
#define ARITH_ADD 275
115
#define ARITH_REM 276
115
#define ARITH_REM 276
116
#define ARITH_DIV 277
116
#define ARITH_DIV 277
117
#define ARITH_MUL 278
117
#define ARITH_MUL 278
118
#define ARITH_BNOT 279
118
#define ARITH_BNOT 279
119
#define ARITH_NOT 280
119
#define ARITH_NOT 280
120
#define ARITH_UNARYPLUS 281
120
#define ARITH_UNARYPLUS 281
121
#define ARITH_UNARYMINUS 282
121
#define ARITH_UNARYMINUS 282
122
 
122
 
123
 
123
 
124
 
124
 
125
 
125
 
126
/* Copy the first part of user declarations.  */
126
/* Copy the first part of user declarations.  */
127
#line 1 "arith.y"
127
#line 1 "arith.y"
128
 
128
 
129
/*  $NetBSD: arith.y,v 1.13 1999/07/09 03:05:49 christos Exp $  */
129
/*  $NetBSD: arith.y,v 1.13 1999/07/09 03:05:49 christos Exp $  */
130
 
130
 
131
/*-
131
/*-
132
 * Copyright (c) 1993
132
 * Copyright (c) 1993
133
 *  The Regents of the University of California.  All rights reserved.
133
 *  The Regents of the University of California.  All rights reserved.
134
 *
134
 *
135
 * This code is derived from software contributed to Berkeley by
135
 * This code is derived from software contributed to Berkeley by
136
 * Kenneth Almquist.
136
 * Kenneth Almquist.
137
 *
137
 *
138
 * Redistribution and use in source and binary forms, with or without
138
 * Redistribution and use in source and binary forms, with or without
139
 * modification, are permitted provided that the following conditions
139
 * modification, are permitted provided that the following conditions
140
 * are met:
140
 * are met:
141
 * 1. Redistributions of source code must retain the above copyright
141
 * 1. Redistributions of source code must retain the above copyright
142
 *    notice, this list of conditions and the following disclaimer.
142
 *    notice, this list of conditions and the following disclaimer.
143
 * 2. Redistributions in binary form must reproduce the above copyright
143
 * 2. Redistributions in binary form must reproduce the above copyright
144
 *    notice, this list of conditions and the following disclaimer in the
144
 *    notice, this list of conditions and the following disclaimer in the
145
 *    documentation and/or other materials provided with the distribution.
145
 *    documentation and/or other materials provided with the distribution.
146
 * 3. All advertising materials mentioning features or use of this software
146
 * 3. All advertising materials mentioning features or use of this software
147
 *    must display the following acknowledgement:
147
 *    must display the following acknowledgement:
148
 *  This product includes software developed by the University of
148
 *  This product includes software developed by the University of
149
 *  California, Berkeley and its contributors.
149
 *  California, Berkeley and its contributors.
150
 * 4. Neither the name of the University nor the names of its contributors
150
 * 4. Neither the name of the University nor the names of its contributors
151
 *    may be used to endorse or promote products derived from this software
151
 *    may be used to endorse or promote products derived from this software
152
 *    without specific prior written permission.
152
 *    without specific prior written permission.
153
 *
153
 *
154
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
154
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
155
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
155
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
156
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
156
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
157
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
157
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
158
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
158
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
159
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
159
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
160
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
160
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
161
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
161
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
162
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
162
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
163
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
163
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
164
 * SUCH DAMAGE.
164
 * SUCH DAMAGE.
165
 */
165
 */
166
 
166
 
167
#include <sys/cdefs.h>
167
#include <sys/cdefs.h>
168
#ifndef lint
168
#ifndef lint
169
#if 0
169
#if 0
170
static char sccsid[] = "@(#)arith.y 8.3 (Berkeley) 5/4/95";
170
static char sccsid[] = "@(#)arith.y 8.3 (Berkeley) 5/4/95";
171
#else
171
#else
172
__RCSID("$NetBSD: arith.y,v 1.13 1999/07/09 03:05:49 christos Exp $");
172
__RCSID("$NetBSD: arith.y,v 1.13 1999/07/09 03:05:49 christos Exp $");
173
#endif
173
#endif
174
#endif /* not lint */
174
#endif /* not lint */
175
 
175
 
176
#include <stdlib.h>
176
#include <stdlib.h>
177
#include "expand.h"
177
#include "expand.h"
178
#include "shell.h"
178
#include "shell.h"
179
#include "error.h"
179
#include "error.h"
180
#include "output.h"
180
#include "output.h"
181
#include "memalloc.h"
181
#include "memalloc.h"
182
 
182
 
183
const char *arith_buf, *arith_startbuf;
183
const char *arith_buf, *arith_startbuf;
184
 
184
 
185
void yyerror (const char *);
185
void yyerror (const char *);
186
int yyparse (void);
186
int yyparse (void);
187
#ifdef TESTARITH
187
#ifdef TESTARITH
188
int main (int , char *[]);
188
int main (int , char *[]);
189
int error (char *);
189
int error (char *);
190
#endif
190
#endif
191
 
191
 
192
int
192
int
193
arith(s)
193
arith(s)
194
    const char *s;
194
    const char *s;
195
{
195
{
196
    long result;
196
    long result;
197
 
197
 
198
    arith_buf = arith_startbuf = s;
198
    arith_buf = arith_startbuf = s;
199
 
199
 
200
    INTOFF;
200
    INTOFF;
201
    result = yyparse();
201
    result = yyparse();
202
    arith_lex_reset();  /* reprime lex */
202
    arith_lex_reset();  /* reprime lex */
203
    INTON;
203
    INTON;
204
 
204
 
205
    return (result);
205
    return (result);
206
}
206
}
207
 
207
 
208
 
208
 
209
/*
209
/*
210
 *  The exp(1) builtin.
210
 *  The exp(1) builtin.
211
 */
211
 */
212
int
212
int
213
expcmd(argc, argv)
213
expcmd(argc, argv)
214
    int argc;
214
    int argc;
215
    char **argv;
215
    char **argv;
216
{
216
{
217
    const char *p;
217
    const char *p;
218
    char *concat;
218
    char *concat;
219
    char **ap;
219
    char **ap;
220
    long i;
220
    long i;
221
 
221
 
222
    if (argc > 1) {
222
    if (argc > 1) {
223
        p = argv[1];
223
        p = argv[1];
224
        if (argc > 2) {
224
        if (argc > 2) {
225
            /*
225
            /*
226
             * concatenate arguments
226
             * concatenate arguments
227
             */
227
             */
228
            STARTSTACKSTR(concat);
228
            STARTSTACKSTR(concat);
229
            ap = argv + 2;
229
            ap = argv + 2;
230
            for (;;) {
230
            for (;;) {
231
                while (*p)
231
                while (*p)
232
                    STPUTC(*p++, concat);
232
                    STPUTC(*p++, concat);
233
                if ((p = *ap++) == NULL)
233
                if ((p = *ap++) == NULL)
234
                    break;
234
                    break;
235
                STPUTC(' ', concat);
235
                STPUTC(' ', concat);
236
            }
236
            }
237
            STPUTC('\0', concat);
237
            STPUTC('\0', concat);
238
            p = grabstackstr(concat);
238
            p = grabstackstr(concat);
239
        }
239
        }
240
    } else
240
    } else
241
        p = "";
241
        p = "";
242
 
242
 
243
    i = arith(p);
243
    i = arith(p);
244
 
244
 
245
    out1fmt("%ld\n", i);
245
    out1fmt("%ld\n", i);
246
    return (! i);
246
    return (! i);
247
}
247
}
248
 
248
 
249
/*************************/
249
/*************************/
250
#ifdef TEST_ARITH
250
#ifdef TEST_ARITH
251
#include <stdio.h>
251
#include <stdio.h>
252
main(argc, argv)
252
main(argc, argv)
253
    char *argv[];
253
    char *argv[];
254
{
254
{
255
    printf("%d\n", exp(argv[1]));
255
    printf("%d\n", exp(argv[1]));
256
}
256
}
257
error(s)
257
error(s)
258
    char *s;
258
    char *s;
259
{
259
{
260
    fprintf(stderr, "exp: %s\n", s);
260
    fprintf(stderr, "exp: %s\n", s);
261
    exit(1);
261
    exit(1);
262
}
262
}
263
#endif
263
#endif
264
 
264
 
265
 
265
 
266
/* Enabling traces.  */
266
/* Enabling traces.  */
267
#ifndef YYDEBUG
267
#ifndef YYDEBUG
268
# define YYDEBUG 0
268
# define YYDEBUG 0
269
#endif
269
#endif
270
 
270
 
271
/* Enabling verbose error messages.  */
271
/* Enabling verbose error messages.  */
272
#ifdef YYERROR_VERBOSE
272
#ifdef YYERROR_VERBOSE
273
# undef YYERROR_VERBOSE
273
# undef YYERROR_VERBOSE
274
# define YYERROR_VERBOSE 1
274
# define YYERROR_VERBOSE 1
275
#else
275
#else
276
# define YYERROR_VERBOSE 0
276
# define YYERROR_VERBOSE 0
277
#endif
277
#endif
278
 
278
 
279
/* Enabling the token table.  */
279
/* Enabling the token table.  */
280
#ifndef YYTOKEN_TABLE
280
#ifndef YYTOKEN_TABLE
281
# define YYTOKEN_TABLE 0
281
# define YYTOKEN_TABLE 0
282
#endif
282
#endif
283
 
283
 
284
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
284
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
285
typedef int YYSTYPE;
285
typedef int YYSTYPE;
286
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
286
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
287
# define YYSTYPE_IS_DECLARED 1
287
# define YYSTYPE_IS_DECLARED 1
288
# define YYSTYPE_IS_TRIVIAL 1
288
# define YYSTYPE_IS_TRIVIAL 1
289
#endif
289
#endif
290
 
290
 
291
 
291
 
292
 
292
 
293
/* Copy the second part of user declarations.  */
293
/* Copy the second part of user declarations.  */
294
 
294
 
295
 
295
 
296
/* Line 216 of yacc.c.  */
296
/* Line 216 of yacc.c.  */
297
#line 298 "y.tab.c"
297
#line 298 "y.tab.c"
298
 
298
 
299
#ifdef short
299
#ifdef short
300
# undef short
300
# undef short
301
#endif
301
#endif
302
 
302
 
303
#ifdef YYTYPE_UINT8
303
#ifdef YYTYPE_UINT8
304
typedef YYTYPE_UINT8 yytype_uint8;
304
typedef YYTYPE_UINT8 yytype_uint8;
305
#else
305
#else
306
typedef unsigned char yytype_uint8;
306
typedef unsigned char yytype_uint8;
307
#endif
307
#endif
308
 
308
 
309
#ifdef YYTYPE_INT8
309
#ifdef YYTYPE_INT8
310
typedef YYTYPE_INT8 yytype_int8;
310
typedef YYTYPE_INT8 yytype_int8;
311
#elif (defined __STDC__ || defined __C99__FUNC__ \
311
#elif (defined __STDC__ || defined __C99__FUNC__ \
312
     || defined __cplusplus || defined _MSC_VER)
312
     || defined __cplusplus || defined _MSC_VER)
313
typedef signed char yytype_int8;
313
typedef signed char yytype_int8;
314
#else
314
#else
315
typedef short int yytype_int8;
315
typedef short int yytype_int8;
316
#endif
316
#endif
317
 
317
 
318
#ifdef YYTYPE_UINT16
318
#ifdef YYTYPE_UINT16
319
typedef YYTYPE_UINT16 yytype_uint16;
319
typedef YYTYPE_UINT16 yytype_uint16;
320
#else
320
#else
321
typedef unsigned short int yytype_uint16;
321
typedef unsigned short int yytype_uint16;
322
#endif
322
#endif
323
 
323
 
324
#ifdef YYTYPE_INT16
324
#ifdef YYTYPE_INT16
325
typedef YYTYPE_INT16 yytype_int16;
325
typedef YYTYPE_INT16 yytype_int16;
326
#else
326
#else
327
typedef short int yytype_int16;
327
typedef short int yytype_int16;
328
#endif
328
#endif
329
 
329
 
330
#ifndef YYSIZE_T
330
#ifndef YYSIZE_T
331
# ifdef __SIZE_TYPE__
331
# ifdef __SIZE_TYPE__
332
#  define YYSIZE_T __SIZE_TYPE__
332
#  define YYSIZE_T __SIZE_TYPE__
333
# elif defined size_t
333
# elif defined size_t
334
#  define YYSIZE_T size_t
334
#  define YYSIZE_T size_t
335
# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
335
# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
336
     || defined __cplusplus || defined _MSC_VER)
336
     || defined __cplusplus || defined _MSC_VER)
337
#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
337
#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
338
#  define YYSIZE_T size_t
338
#  define YYSIZE_T size_t
339
# else
339
# else
340
#  define YYSIZE_T unsigned int
340
#  define YYSIZE_T unsigned int
341
# endif
341
# endif
342
#endif
342
#endif
343
 
343
 
344
#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
344
#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
345
 
345
 
346
#ifndef YY_
346
#ifndef YY_
347
# if YYENABLE_NLS
347
# if YYENABLE_NLS
348
#  if ENABLE_NLS
348
#  if ENABLE_NLS
349
#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
349
#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
350
#   define YY_(msgid) dgettext ("bison-runtime", msgid)
350
#   define YY_(msgid) dgettext ("bison-runtime", msgid)
351
#  endif
351
#  endif
352
# endif
352
# endif
353
# ifndef YY_
353
# ifndef YY_
354
#  define YY_(msgid) msgid
354
#  define YY_(msgid) msgid
355
# endif
355
# endif
356
#endif
356
#endif
357
 
357
 
358
/* Suppress unused-variable warnings by "using" E.  */
358
/* Suppress unused-variable warnings by "using" E.  */
359
#if ! defined lint || defined __GNUC__
359
#if ! defined lint || defined __GNUC__
360
# define YYUSE(e) ((void) (e))
360
# define YYUSE(e) ((void) (e))
361
#else
361
#else
362
# define YYUSE(e) /* empty */
362
# define YYUSE(e) /* empty */
363
#endif
363
#endif
364
 
364
 
365
/* Identity function, used to suppress warnings about constant conditions.  */
365
/* Identity function, used to suppress warnings about constant conditions.  */
366
#ifndef lint
366
#ifndef lint
367
# define YYID(n) (n)
367
# define YYID(n) (n)
368
#else
368
#else
369
#if (defined __STDC__ || defined __C99__FUNC__ \
369
#if (defined __STDC__ || defined __C99__FUNC__ \
370
     || defined __cplusplus || defined _MSC_VER)
370
     || defined __cplusplus || defined _MSC_VER)
371
static int
371
static int
372
YYID (int i)
372
YYID (int i)
373
#else
373
#else
374
static int
374
static int
375
YYID (i)
375
YYID (i)
376
    int i;
376
    int i;
377
#endif
377
#endif
378
{
378
{
379
  return i;
379
  return i;
380
}
380
}
381
#endif
381
#endif
382
 
382
 
383
#if ! defined yyoverflow || YYERROR_VERBOSE
383
#if ! defined yyoverflow || YYERROR_VERBOSE
384
 
384
 
385
/* The parser invokes alloca or malloc; define the necessary symbols.  */
385
/* The parser invokes alloca or malloc; define the necessary symbols.  */
386
 
386
 
387
# ifdef YYSTACK_USE_ALLOCA
387
# ifdef YYSTACK_USE_ALLOCA
388
#  if YYSTACK_USE_ALLOCA
388
#  if YYSTACK_USE_ALLOCA
389
#   ifdef __GNUC__
389
#   ifdef __GNUC__
390
#    define YYSTACK_ALLOC __builtin_alloca
390
#    define YYSTACK_ALLOC __builtin_alloca
391
#   elif defined __BUILTIN_VA_ARG_INCR
391
#   elif defined __BUILTIN_VA_ARG_INCR
392
#    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
392
#    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
393
#   elif defined _AIX
393
#   elif defined _AIX
394
#    define YYSTACK_ALLOC __alloca
394
#    define YYSTACK_ALLOC __alloca
395
#   elif defined _MSC_VER
395
#   elif defined _MSC_VER
396
#    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
396
#    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
397
#    define alloca _alloca
397
#    define alloca _alloca
398
#   else
398
#   else
399
#    define YYSTACK_ALLOC alloca
399
#    define YYSTACK_ALLOC alloca
400
#    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
400
#    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
401
     || defined __cplusplus || defined _MSC_VER)
401
     || defined __cplusplus || defined _MSC_VER)
402
#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
402
#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
403
#     ifndef _STDLIB_H
403
#     ifndef _STDLIB_H
404
#      define _STDLIB_H 1
404
#      define _STDLIB_H 1
405
#     endif
405
#     endif
406
#    endif
406
#    endif
407
#   endif
407
#   endif
408
#  endif
408
#  endif
409
# endif
409
# endif
410
 
410
 
411
# ifdef YYSTACK_ALLOC
411
# ifdef YYSTACK_ALLOC
412
   /* Pacify GCC's `empty if-body' warning.  */
412
   /* Pacify GCC's `empty if-body' warning.  */
413
#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
413
#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
414
#  ifndef YYSTACK_ALLOC_MAXIMUM
414
#  ifndef YYSTACK_ALLOC_MAXIMUM
415
    /* The OS might guarantee only one guard page at the bottom of the stack,
415
    /* The OS might guarantee only one guard page at the bottom of the stack,
416
       and a page size can be as small as 4096 bytes.  So we cannot safely
416
       and a page size can be as small as 4096 bytes.  So we cannot safely
417
       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
417
       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
418
       to allow for a few compiler-allocated temporary stack slots.  */
418
       to allow for a few compiler-allocated temporary stack slots.  */
419
#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
419
#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
420
#  endif
420
#  endif
421
# else
421
# else
422
#  define YYSTACK_ALLOC YYMALLOC
422
#  define YYSTACK_ALLOC YYMALLOC
423
#  define YYSTACK_FREE YYFREE
423
#  define YYSTACK_FREE YYFREE
424
#  ifndef YYSTACK_ALLOC_MAXIMUM
424
#  ifndef YYSTACK_ALLOC_MAXIMUM
425
#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
425
#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
426
#  endif
426
#  endif
427
#  if (defined __cplusplus && ! defined _STDLIB_H \
427
#  if (defined __cplusplus && ! defined _STDLIB_H \
428
       && ! ((defined YYMALLOC || defined malloc) \
428
       && ! ((defined YYMALLOC || defined malloc) \
429
         && (defined YYFREE || defined free)))
429
         && (defined YYFREE || defined free)))
430
#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
430
#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
431
#   ifndef _STDLIB_H
431
#   ifndef _STDLIB_H
432
#    define _STDLIB_H 1
432
#    define _STDLIB_H 1
433
#   endif
433
#   endif
434
#  endif
434
#  endif
435
#  ifndef YYMALLOC
435
#  ifndef YYMALLOC
436
#   define YYMALLOC malloc
436
#   define YYMALLOC malloc
437
#   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
437
#   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
438
     || defined __cplusplus || defined _MSC_VER)
438
     || defined __cplusplus || defined _MSC_VER)
439
void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
439
void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
440
#   endif
440
#   endif
441
#  endif
441
#  endif
442
#  ifndef YYFREE
442
#  ifndef YYFREE
443
#   define YYFREE free
443
#   define YYFREE free
444
#   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
444
#   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
445
     || defined __cplusplus || defined _MSC_VER)
445
     || defined __cplusplus || defined _MSC_VER)
446
void free (void *); /* INFRINGES ON USER NAME SPACE */
446
void free (void *); /* INFRINGES ON USER NAME SPACE */
447
#   endif
447
#   endif
448
#  endif
448
#  endif
449
# endif
449
# endif
450
#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
450
#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
451
 
451
 
452
 
452
 
453
#if (! defined yyoverflow \
453
#if (! defined yyoverflow \
454
     && (! defined __cplusplus \
454
     && (! defined __cplusplus \
455
     || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
455
     || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
456
 
456
 
457
/* A type that is properly aligned for any stack member.  */
457
/* A type that is properly aligned for any stack member.  */
458
union yyalloc
458
union yyalloc
459
{
459
{
460
  yytype_int16 yyss;
460
  yytype_int16 yyss;
461
  YYSTYPE yyvs;
461
  YYSTYPE yyvs;
462
  };
462
  };
463
 
463
 
464
/* The size of the maximum gap between one aligned stack and the next.  */
464
/* The size of the maximum gap between one aligned stack and the next.  */
465
# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
465
# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
466
 
466
 
467
/* The size of an array large to enough to hold all stacks, each with
467
/* The size of an array large to enough to hold all stacks, each with
468
   N elements.  */
468
   N elements.  */
469
# define YYSTACK_BYTES(N) \
469
# define YYSTACK_BYTES(N) \
470
     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
470
     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
471
      + YYSTACK_GAP_MAXIMUM)
471
      + YYSTACK_GAP_MAXIMUM)
472
 
472
 
473
/* Copy COUNT objects from FROM to TO.  The source and destination do
473
/* Copy COUNT objects from FROM to TO.  The source and destination do
474
   not overlap.  */
474
   not overlap.  */
475
# ifndef YYCOPY
475
# ifndef YYCOPY
476
#  if defined __GNUC__ && 1 < __GNUC__
476
#  if defined __GNUC__ && 1 < __GNUC__
477
#   define YYCOPY(To, From, Count) \
477
#   define YYCOPY(To, From, Count) \
478
      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
478
      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
479
#  else
479
#  else
480
#   define YYCOPY(To, From, Count)      \
480
#   define YYCOPY(To, From, Count)      \
481
      do                    \
481
      do                    \
482
    {                   \
482
    {                   \
483
      YYSIZE_T yyi;             \
483
      YYSIZE_T yyi;             \
484
      for (yyi = 0; yyi < (Count); yyi++)   \
484
      for (yyi = 0; yyi < (Count); yyi++)   \
485
        (To)[yyi] = (From)[yyi];        \
485
        (To)[yyi] = (From)[yyi];        \
486
    }                   \
486
    }                   \
487
      while (YYID (0))
487
      while (YYID (0))
488
#  endif
488
#  endif
489
# endif
489
# endif
490
 
490
 
491
/* Relocate STACK from its old location to the new one.  The
491
/* Relocate STACK from its old location to the new one.  The
492
   local variables YYSIZE and YYSTACKSIZE give the old and new number of
492
   local variables YYSIZE and YYSTACKSIZE give the old and new number of
493
   elements in the stack, and YYPTR gives the new location of the
493
   elements in the stack, and YYPTR gives the new location of the
494
   stack.  Advance YYPTR to a properly aligned location for the next
494
   stack.  Advance YYPTR to a properly aligned location for the next
495
   stack.  */
495
   stack.  */
496
# define YYSTACK_RELOCATE(Stack)                    \
496
# define YYSTACK_RELOCATE(Stack)                    \
497
    do                                  \
497
    do                                  \
498
      {                                 \
498
      {                                 \
499
    YYSIZE_T yynewbytes;                        \
499
    YYSIZE_T yynewbytes;                        \
500
    YYCOPY (&yyptr->Stack, Stack, yysize);              \
500
    YYCOPY (&yyptr->Stack, Stack, yysize);              \
501
    Stack = &yyptr->Stack;                      \
501
    Stack = &yyptr->Stack;                      \
502
    yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
502
    yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
503
    yyptr += yynewbytes / sizeof (*yyptr);              \
503
    yyptr += yynewbytes / sizeof (*yyptr);              \
504
      }                                 \
504
      }                                 \
505
    while (YYID (0))
505
    while (YYID (0))
506
 
506
 
507
#endif
507
#endif
508
 
508
 
509
/* YYFINAL -- State number of the termination state.  */
509
/* YYFINAL -- State number of the termination state.  */
510
#define YYFINAL  14
510
#define YYFINAL  14
511
/* YYLAST -- Last index in YYTABLE.  */
511
/* YYLAST -- Last index in YYTABLE.  */
512
#define YYLAST   170
512
#define YYLAST   170
513
 
513
 
514
/* YYNTOKENS -- Number of terminals.  */
514
/* YYNTOKENS -- Number of terminals.  */
515
#define YYNTOKENS  28
515
#define YYNTOKENS  28
516
/* YYNNTS -- Number of nonterminals.  */
516
/* YYNNTS -- Number of nonterminals.  */
517
#define YYNNTS  3
517
#define YYNNTS  3
518
/* YYNRULES -- Number of rules.  */
518
/* YYNRULES -- Number of rules.  */
519
#define YYNRULES  26
519
#define YYNRULES  26
520
/* YYNRULES -- Number of states.  */
520
/* YYNRULES -- Number of states.  */
521
#define YYNSTATES  52
521
#define YYNSTATES  52
522
 
522
 
523
/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
523
/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
524
#define YYUNDEFTOK  2
524
#define YYUNDEFTOK  2
525
#define YYMAXUTOK   282
525
#define YYMAXUTOK   282
526
 
526
 
527
#define YYTRANSLATE(YYX)                        \
527
#define YYTRANSLATE(YYX)                        \
528
  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
528
  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
529
 
529
 
530
/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
530
/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
531
static const yytype_uint8 yytranslate[] =
531
static const yytype_uint8 yytranslate[] =
532
{
532
{
533
       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
533
       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
534
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
534
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
535
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
535
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
536
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
536
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
537
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
537
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
538
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
538
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
539
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
539
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
540
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
540
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
541
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
541
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
542
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
542
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
543
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
543
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
544
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
544
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
545
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
545
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
546
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
546
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
547
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
547
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
548
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
548
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
549
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
549
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
550
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
550
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
551
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
551
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
552
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
552
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
553
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
553
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
554
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
554
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
555
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
555
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
556
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
556
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
557
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
557
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
558
       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
558
       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
559
       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
559
       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
560
      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
560
      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
561
      25,    26,    27
561
      25,    26,    27
562
};
562
};
563
 
563
 
564
#if YYDEBUG
564
#if YYDEBUG
565
/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
565
/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
566
   YYRHS.  */
566
   YYRHS.  */
567
static const yytype_uint8 yyprhs[] =
567
static const yytype_uint8 yyprhs[] =
568
{
568
{
569
       0,     0,     3,     5,     9,    13,    17,    21,    25,    29,
569
       0,     0,     3,     5,     9,    13,    17,    21,    25,    29,
570
      33,    37,    41,    45,    49,    53,    57,    61,    65,    69,
570
      33,    37,    41,    45,    49,    53,    57,    61,    65,    69,
571
      73,    77,    81,    84,    87,    90,    93
571
      73,    77,    81,    84,    87,    90,    93
572
};
572
};
573
 
573
 
574
/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
574
/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
575
static const yytype_int8 yyrhs[] =
575
static const yytype_int8 yyrhs[] =
576
{
576
{
577
      29,     0,    -1,    30,    -1,     4,    30,     5,    -1,    30,
577
      29,     0,    -1,    30,    -1,     4,    30,     5,    -1,    30,
578
       6,    30,    -1,    30,     7,    30,    -1,    30,     8,    30,
578
       6,    30,    -1,    30,     7,    30,    -1,    30,     8,    30,
579
      -1,    30,     9,    30,    -1,    30,    10,    30,    -1,    30,
579
      -1,    30,     9,    30,    -1,    30,    10,    30,    -1,    30,
580
      12,    30,    -1,    30,    15,    30,    -1,    30,    14,    30,
580
      12,    30,    -1,    30,    15,    30,    -1,    30,    14,    30,
581
      -1,    30,    16,    30,    -1,    30,    13,    30,    -1,    30,
581
      -1,    30,    16,    30,    -1,    30,    13,    30,    -1,    30,
582
      11,    30,    -1,    30,    18,    30,    -1,    30,    17,    30,
582
      11,    30,    -1,    30,    18,    30,    -1,    30,    17,    30,
583
      -1,    30,    20,    30,    -1,    30,    19,    30,    -1,    30,
583
      -1,    30,    20,    30,    -1,    30,    19,    30,    -1,    30,
584
      23,    30,    -1,    30,    22,    30,    -1,    30,    21,    30,
584
      23,    30,    -1,    30,    22,    30,    -1,    30,    21,    30,
585
      -1,    25,    30,    -1,    24,    30,    -1,    19,    30,    -1,
585
      -1,    25,    30,    -1,    24,    30,    -1,    19,    30,    -1,
586
      20,    30,    -1,     3,    -1
586
      20,    30,    -1,     3,    -1
587
};
587
};
588
 
588
 
589
/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
589
/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
590
static const yytype_uint8 yyrline[] =
590
static const yytype_uint8 yyrline[] =
591
{
591
{
592
       0,   153,   153,   159,   160,   161,   162,   163,   164,   165,
592
       0,   153,   153,   159,   160,   161,   162,   163,   164,   165,
593
     166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
593
     166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
594
     176,   181,   186,   187,   188,   189,   190
594
     176,   181,   186,   187,   188,   189,   190
595
};
595
};
596
#endif
596
#endif
597
 
597
 
598
#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
598
#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
599
/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
599
/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
600
   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
600
   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
601
static const char *const yytname[] =
601
static const char *const yytname[] =
602
{
602
{
603
  "$end", "error", "$undefined", "ARITH_NUM", "ARITH_LPAREN",
603
  "$end", "error", "$undefined", "ARITH_NUM", "ARITH_LPAREN",
604
  "ARITH_RPAREN", "ARITH_OR", "ARITH_AND", "ARITH_BOR", "ARITH_BXOR",
604
  "ARITH_RPAREN", "ARITH_OR", "ARITH_AND", "ARITH_BOR", "ARITH_BXOR",
605
  "ARITH_BAND", "ARITH_NE", "ARITH_EQ", "ARITH_LE", "ARITH_GE", "ARITH_GT",
605
  "ARITH_BAND", "ARITH_NE", "ARITH_EQ", "ARITH_LE", "ARITH_GE", "ARITH_GT",
606
  "ARITH_LT", "ARITH_RSHIFT", "ARITH_LSHIFT", "ARITH_SUB", "ARITH_ADD",
606
  "ARITH_LT", "ARITH_RSHIFT", "ARITH_LSHIFT", "ARITH_SUB", "ARITH_ADD",
607
  "ARITH_REM", "ARITH_DIV", "ARITH_MUL", "ARITH_BNOT", "ARITH_NOT",
607
  "ARITH_REM", "ARITH_DIV", "ARITH_MUL", "ARITH_BNOT", "ARITH_NOT",
608
  "ARITH_UNARYPLUS", "ARITH_UNARYMINUS", "$accept", "exp", "expr", 0
608
  "ARITH_UNARYPLUS", "ARITH_UNARYMINUS", "$accept", "exp", "expr", 0
609
};
609
};
610
#endif
610
#endif
611
 
611
 
612
# ifdef YYPRINT
612
# ifdef YYPRINT
613
/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
613
/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
614
   token YYLEX-NUM.  */
614
   token YYLEX-NUM.  */
615
static const yytype_uint16 yytoknum[] =
615
static const yytype_uint16 yytoknum[] =
616
{
616
{
617
       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
617
       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
618
     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
618
     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
619
     275,   276,   277,   278,   279,   280,   281,   282
619
     275,   276,   277,   278,   279,   280,   281,   282
620
};
620
};
621
# endif
621
# endif
622
 
622
 
623
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
623
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
624
static const yytype_uint8 yyr1[] =
624
static const yytype_uint8 yyr1[] =
625
{
625
{
626
       0,    28,    29,    30,    30,    30,    30,    30,    30,    30,
626
       0,    28,    29,    30,    30,    30,    30,    30,    30,    30,
627
      30,    30,    30,    30,    30,    30,    30,    30,    30,    30,
627
      30,    30,    30,    30,    30,    30,    30,    30,    30,    30,
628
      30,    30,    30,    30,    30,    30,    30
628
      30,    30,    30,    30,    30,    30,    30
629
};
629
};
630
 
630
 
631
/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
631
/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
632
static const yytype_uint8 yyr2[] =
632
static const yytype_uint8 yyr2[] =
633
{
633
{
634
       0,     2,     1,     3,     3,     3,     3,     3,     3,     3,
634
       0,     2,     1,     3,     3,     3,     3,     3,     3,     3,
635
       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
635
       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
636
       3,     3,     2,     2,     2,     2,     1
636
       3,     3,     2,     2,     2,     2,     1
637
};
637
};
638
 
638
 
639
/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
639
/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
640
   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
640
   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
641
   means the default is an error.  */
641
   means the default is an error.  */
642
static const yytype_uint8 yydefact[] =
642
static const yytype_uint8 yydefact[] =
643
{
643
{
644
       0,    26,     0,     0,     0,     0,     0,     0,     2,     0,
644
       0,    26,     0,     0,     0,     0,     0,     0,     2,     0,
645
      24,    25,    23,    22,     1,     0,     0,     0,     0,     0,
645
      24,    25,    23,    22,     1,     0,     0,     0,     0,     0,
646
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
646
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
647
       0,     0,     0,     3,     4,     5,     6,     7,     8,    14,
647
       0,     0,     0,     3,     4,     5,     6,     7,     8,    14,
648
       9,    13,    11,    10,    12,    16,    15,    18,    17,    21,
648
       9,    13,    11,    10,    12,    16,    15,    18,    17,    21,
649
      20,    19
649
      20,    19
650
};
650
};
651
 
651
 
652
/* YYDEFGOTO[NTERM-NUM].  */
652
/* YYDEFGOTO[NTERM-NUM].  */
653
static const yytype_int8 yydefgoto[] =
653
static const yytype_int8 yydefgoto[] =
654
{
654
{
655
      -1,     7,     8
655
      -1,     7,     8
656
};
656
};
657
 
657
 
658
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
658
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
659
   STATE-NUM.  */
659
   STATE-NUM.  */
660
#define YYPACT_NINF -13
660
#define YYPACT_NINF -13
661
static const yytype_int16 yypact[] =
661
static const yytype_int16 yypact[] =
662
{
662
{
663
      28,   -13,    28,    28,    28,    28,    28,    12,    67,    49,
663
      28,   -13,    28,    28,    28,    28,    28,    12,    67,    49,
664
     -13,   -13,   -13,   -13,   -13,    28,    28,    28,    28,    28,
664
     -13,   -13,   -13,   -13,   -13,    28,    28,    28,    28,    28,
665
      28,    28,    28,    28,    28,    28,    28,    28,    28,    28,
665
      28,    28,    28,    28,    28,    28,    28,    28,    28,    28,
666
      28,    28,    28,   -13,    84,   100,   115,    23,   128,   139,
666
      28,    28,    28,   -13,    84,   100,   115,    23,   128,   139,
667
     139,   -12,   -12,   -12,   -12,   144,   144,   147,   147,   -13,
667
     139,   -12,   -12,   -12,   -12,   144,   144,   147,   147,   -13,
668
     -13,   -13
668
     -13,   -13
669
};
669
};
670
 
670
 
671
/* YYPGOTO[NTERM-NUM].  */
671
/* YYPGOTO[NTERM-NUM].  */
672
static const yytype_int8 yypgoto[] =
672
static const yytype_int8 yypgoto[] =
673
{
673
{
674
     -13,   -13,    -2
674
     -13,   -13,    -2
675
};
675
};
676
 
676
 
677
/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
677
/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
678
   positive, shift that token.  If negative, reduce the rule which
678
   positive, shift that token.  If negative, reduce the rule which
679
   number is the opposite.  If zero, do what YYDEFACT says.
679
   number is the opposite.  If zero, do what YYDEFACT says.
680
   If YYTABLE_NINF, syntax error.  */
680
   If YYTABLE_NINF, syntax error.  */
681
#define YYTABLE_NINF -1
681
#define YYTABLE_NINF -1
682
static const yytype_uint8 yytable[] =
682
static const yytype_uint8 yytable[] =
683
{
683
{
684
       9,    10,    11,    12,    13,    26,    27,    28,    29,    30,
684
       9,    10,    11,    12,    13,    26,    27,    28,    29,    30,
685
      31,    32,    14,    34,    35,    36,    37,    38,    39,    40,
685
      31,    32,    14,    34,    35,    36,    37,    38,    39,    40,
686
      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
686
      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
687
      51,     1,     2,    19,    20,    21,    22,    23,    24,    25,
687
      51,     1,     2,    19,    20,    21,    22,    23,    24,    25,
688
      26,    27,    28,    29,    30,    31,    32,     3,     4,     0,
688
      26,    27,    28,    29,    30,    31,    32,     3,     4,     0,
689
       0,     0,     5,     6,    33,    15,    16,    17,    18,    19,
689
       0,     0,     5,     6,    33,    15,    16,    17,    18,    19,
690
      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
690
      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
691
      30,    31,    32,    15,    16,    17,    18,    19,    20,    21,
691
      30,    31,    32,    15,    16,    17,    18,    19,    20,    21,
692
      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
692
      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
693
      32,    16,    17,    18,    19,    20,    21,    22,    23,    24,
693
      32,    16,    17,    18,    19,    20,    21,    22,    23,    24,
694
      25,    26,    27,    28,    29,    30,    31,    32,    17,    18,
694
      25,    26,    27,    28,    29,    30,    31,    32,    17,    18,
695
      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
695
      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
696
      29,    30,    31,    32,    18,    19,    20,    21,    22,    23,
696
      29,    30,    31,    32,    18,    19,    20,    21,    22,    23,
697
      24,    25,    26,    27,    28,    29,    30,    31,    32,    20,
697
      24,    25,    26,    27,    28,    29,    30,    31,    32,    20,
698
      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
698
      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
699
      31,    32,    22,    23,    24,    25,    26,    27,    28,    29,
699
      31,    32,    22,    23,    24,    25,    26,    27,    28,    29,
700
      30,    31,    32,    28,    29,    30,    31,    32,    30,    31,
700
      30,    31,    32,    28,    29,    30,    31,    32,    30,    31,
701
      32
701
      32
702
};
702
};
703
 
703
 
704
static const yytype_int8 yycheck[] =
704
static const yytype_int8 yycheck[] =
705
{
705
{
706
       2,     3,     4,     5,     6,    17,    18,    19,    20,    21,
706
       2,     3,     4,     5,     6,    17,    18,    19,    20,    21,
707
      22,    23,     0,    15,    16,    17,    18,    19,    20,    21,
707
      22,    23,     0,    15,    16,    17,    18,    19,    20,    21,
708
      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
708
      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
709
      32,     3,     4,    10,    11,    12,    13,    14,    15,    16,
709
      32,     3,     4,    10,    11,    12,    13,    14,    15,    16,
710
      17,    18,    19,    20,    21,    22,    23,    19,    20,    -1,
710
      17,    18,    19,    20,    21,    22,    23,    19,    20,    -1,
711
      -1,    -1,    24,    25,     5,     6,     7,     8,     9,    10,
711
      -1,    -1,    24,    25,     5,     6,     7,     8,     9,    10,
712
      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
712
      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
713
      21,    22,    23,     6,     7,     8,     9,    10,    11,    12,
713
      21,    22,    23,     6,     7,     8,     9,    10,    11,    12,
714
      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
714
      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
715
      23,     7,     8,     9,    10,    11,    12,    13,    14,    15,
715
      23,     7,     8,     9,    10,    11,    12,    13,    14,    15,
716
      16,    17,    18,    19,    20,    21,    22,    23,     8,     9,
716
      16,    17,    18,    19,    20,    21,    22,    23,     8,     9,
717
      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
717
      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
718
      20,    21,    22,    23,     9,    10,    11,    12,    13,    14,
718
      20,    21,    22,    23,     9,    10,    11,    12,    13,    14,
719
      15,    16,    17,    18,    19,    20,    21,    22,    23,    11,
719
      15,    16,    17,    18,    19,    20,    21,    22,    23,    11,
720
      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
720
      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
721
      22,    23,    13,    14,    15,    16,    17,    18,    19,    20,
721
      22,    23,    13,    14,    15,    16,    17,    18,    19,    20,
722
      21,    22,    23,    19,    20,    21,    22,    23,    21,    22,
722
      21,    22,    23,    19,    20,    21,    22,    23,    21,    22,
723
      23
723
      23
724
};
724
};
725
 
725
 
726
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
726
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
727
   symbol of state STATE-NUM.  */
727
   symbol of state STATE-NUM.  */
728
static const yytype_uint8 yystos[] =
728
static const yytype_uint8 yystos[] =
729
{
729
{
730
       0,     3,     4,    19,    20,    24,    25,    29,    30,    30,
730
       0,     3,     4,    19,    20,    24,    25,    29,    30,    30,
731
      30,    30,    30,    30,     0,     6,     7,     8,     9,    10,
731
      30,    30,    30,    30,     0,     6,     7,     8,     9,    10,
732
      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
732
      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
733
      21,    22,    23,     5,    30,    30,    30,    30,    30,    30,
733
      21,    22,    23,     5,    30,    30,    30,    30,    30,    30,
734
      30,    30,    30,    30,    30,    30,    30,    30,    30,    30,
734
      30,    30,    30,    30,    30,    30,    30,    30,    30,    30,
735
      30,    30
735
      30,    30
736
};
736
};
737
 
737
 
738
#define yyerrok     (yyerrstatus = 0)
738
#define yyerrok     (yyerrstatus = 0)
739
#define yyclearin   (yychar = YYEMPTY)
739
#define yyclearin   (yychar = YYEMPTY)
740
#define YYEMPTY     (-2)
740
#define YYEMPTY     (-2)
741
#define YYEOF       0
741
#define YYEOF       0
742
 
742
 
743
#define YYACCEPT    goto yyacceptlab
743
#define YYACCEPT    goto yyacceptlab
744
#define YYABORT     goto yyabortlab
744
#define YYABORT     goto yyabortlab
745
#define YYERROR     goto yyerrorlab
745
#define YYERROR     goto yyerrorlab
746
 
746
 
747
 
747
 
748
/* Like YYERROR except do call yyerror.  This remains here temporarily
748
/* Like YYERROR except do call yyerror.  This remains here temporarily
749
   to ease the transition to the new meaning of YYERROR, for GCC.
749
   to ease the transition to the new meaning of YYERROR, for GCC.
750
   Once GCC version 2 has supplanted version 1, this can go.  */
750
   Once GCC version 2 has supplanted version 1, this can go.  */
751
 
751
 
752
#define YYFAIL      goto yyerrlab
752
#define YYFAIL      goto yyerrlab
753
 
753
 
754
#define YYRECOVERING()  (!!yyerrstatus)
754
#define YYRECOVERING()  (!!yyerrstatus)
755
 
755
 
756
#define YYBACKUP(Token, Value)                  \
756
#define YYBACKUP(Token, Value)                  \
757
do                              \
757
do                              \
758
  if (yychar == YYEMPTY && yylen == 1)              \
758
  if (yychar == YYEMPTY && yylen == 1)              \
759
    {                               \
759
    {                               \
760
      yychar = (Token);                     \
760
      yychar = (Token);                     \
761
      yylval = (Value);                     \
761
      yylval = (Value);                     \
762
      yytoken = YYTRANSLATE (yychar);               \
762
      yytoken = YYTRANSLATE (yychar);               \
763
      YYPOPSTACK (1);                       \
763
      YYPOPSTACK (1);                       \
764
      goto yybackup;                        \
764
      goto yybackup;                        \
765
    }                               \
765
    }                               \
766
  else                              \
766
  else                              \
767
    {                               \
767
    {                               \
768
      yyerror (YY_("syntax error: cannot back up")); \
768
      yyerror (YY_("syntax error: cannot back up")); \
769
      YYERROR;                          \
769
      YYERROR;                          \
770
    }                               \
770
    }                               \
771
while (YYID (0))
771
while (YYID (0))
772
 
772
 
773
 
773
 
774
#define YYTERROR    1
774
#define YYTERROR    1
775
#define YYERRCODE   256
775
#define YYERRCODE   256
776
 
776
 
777
 
777
 
778
/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
778
/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
779
   If N is 0, then set CURRENT to the empty location which ends
779
   If N is 0, then set CURRENT to the empty location which ends
780
   the previous symbol: RHS[0] (always defined).  */
780
   the previous symbol: RHS[0] (always defined).  */
781
 
781
 
782
#define YYRHSLOC(Rhs, K) ((Rhs)[K])
782
#define YYRHSLOC(Rhs, K) ((Rhs)[K])
783
#ifndef YYLLOC_DEFAULT
783
#ifndef YYLLOC_DEFAULT
784
# define YYLLOC_DEFAULT(Current, Rhs, N)                \
784
# define YYLLOC_DEFAULT(Current, Rhs, N)                \
785
    do                                  \
785
    do                                  \
786
      if (YYID (N))                                                    \
786
      if (YYID (N))                                                    \
787
    {                               \
787
    {                               \
788
      (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;    \
788
      (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;    \
789
      (Current).first_column = YYRHSLOC (Rhs, 1).first_column;  \
789
      (Current).first_column = YYRHSLOC (Rhs, 1).first_column;  \
790
      (Current).last_line    = YYRHSLOC (Rhs, N).last_line;     \
790
      (Current).last_line    = YYRHSLOC (Rhs, N).last_line;     \
791
      (Current).last_column  = YYRHSLOC (Rhs, N).last_column;   \
791
      (Current).last_column  = YYRHSLOC (Rhs, N).last_column;   \
792
    }                               \
792
    }                               \
793
      else                              \
793
      else                              \
794
    {                               \
794
    {                               \
795
      (Current).first_line   = (Current).last_line   =      \
795
      (Current).first_line   = (Current).last_line   =      \
796
        YYRHSLOC (Rhs, 0).last_line;                \
796
        YYRHSLOC (Rhs, 0).last_line;                \
797
      (Current).first_column = (Current).last_column =      \
797
      (Current).first_column = (Current).last_column =      \
798
        YYRHSLOC (Rhs, 0).last_column;              \
798
        YYRHSLOC (Rhs, 0).last_column;              \
799
    }                               \
799
    }                               \
800
    while (YYID (0))
800
    while (YYID (0))
801
#endif
801
#endif
802
 
802
 
803
 
803
 
804
/* YY_LOCATION_PRINT -- Print the location on the stream.
804
/* YY_LOCATION_PRINT -- Print the location on the stream.
805
   This macro was not mandated originally: define only if we know
805
   This macro was not mandated originally: define only if we know
806
   we won't break user code: when these are the locations we know.  */
806
   we won't break user code: when these are the locations we know.  */
807
 
807
 
808
#ifndef YY_LOCATION_PRINT
808
#ifndef YY_LOCATION_PRINT
809
# if YYLTYPE_IS_TRIVIAL
809
# if YYLTYPE_IS_TRIVIAL
810
#  define YY_LOCATION_PRINT(File, Loc)          \
810
#  define YY_LOCATION_PRINT(File, Loc)          \
811
     fprintf (File, "%d.%d-%d.%d",          \
811
     fprintf (File, "%d.%d-%d.%d",          \
812
          (Loc).first_line, (Loc).first_column, \
812
          (Loc).first_line, (Loc).first_column, \
813
          (Loc).last_line,  (Loc).last_column)
813
          (Loc).last_line,  (Loc).last_column)
814
# else
814
# else
815
#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
815
#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
816
# endif
816
# endif
817
#endif
817
#endif
818
 
818
 
819
 
819
 
820
/* YYLEX -- calling `yylex' with the right arguments.  */
820
/* YYLEX -- calling `yylex' with the right arguments.  */
821
 
821
 
822
#ifdef YYLEX_PARAM
822
#ifdef YYLEX_PARAM
823
# define YYLEX yylex (YYLEX_PARAM)
823
# define YYLEX yylex (YYLEX_PARAM)
824
#else
824
#else
825
# define YYLEX yylex ()
825
# define YYLEX yylex ()
826
#endif
826
#endif
827
 
827
 
828
/* Enable debugging if requested.  */
828
/* Enable debugging if requested.  */
829
#if YYDEBUG
829
#if YYDEBUG
830
 
830
 
831
# ifndef YYFPRINTF
831
# ifndef YYFPRINTF
832
#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
832
#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
833
#  define YYFPRINTF fprintf
833
#  define YYFPRINTF fprintf
834
# endif
834
# endif
835
 
835
 
836
# define YYDPRINTF(Args)            \
836
# define YYDPRINTF(Args)            \
837
do {                        \
837
do {                        \
838
  if (yydebug)                  \
838
  if (yydebug)                  \
839
    YYFPRINTF Args;             \
839
    YYFPRINTF Args;             \
840
} while (YYID (0))
840
} while (YYID (0))
841
 
841
 
842
# define YY_SYMBOL_PRINT(Title, Type, Value, Location)            \
842
# define YY_SYMBOL_PRINT(Title, Type, Value, Location)            \
843
do {                                      \
843
do {                                      \
844
  if (yydebug)                                \
844
  if (yydebug)                                \
845
    {                                     \
845
    {                                     \
846
      YYFPRINTF (stderr, "%s ", Title);                   \
846
      YYFPRINTF (stderr, "%s ", Title);                   \
847
      yy_symbol_print (stderr,                        \
847
      yy_symbol_print (stderr,                        \
848
          Type, Value); \
848
          Type, Value); \
849
      YYFPRINTF (stderr, "\n");                       \
849
      YYFPRINTF (stderr, "\n");                       \
850
    }                                     \
850
    }                                     \
851
} while (YYID (0))
851
} while (YYID (0))
852
 
852
 
853
 
853
 
854
/*--------------------------------.
854
/*--------------------------------.
855
| Print this symbol on YYOUTPUT.  |
855
| Print this symbol on YYOUTPUT.  |
856
`--------------------------------*/
856
`--------------------------------*/
857
 
857
 
858
/*ARGSUSED*/
858
/*ARGSUSED*/
859
#if (defined __STDC__ || defined __C99__FUNC__ \
859
#if (defined __STDC__ || defined __C99__FUNC__ \
860
     || defined __cplusplus || defined _MSC_VER)
860
     || defined __cplusplus || defined _MSC_VER)
861
static void
861
static void
862
yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
862
yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
863
#else
863
#else
864
static void
864
static void
865
yy_symbol_value_print (yyoutput, yytype, yyvaluep)
865
yy_symbol_value_print (yyoutput, yytype, yyvaluep)
866
    FILE *yyoutput;
866
    FILE *yyoutput;
867
    int yytype;
867
    int yytype;
868
    YYSTYPE const * const yyvaluep;
868
    YYSTYPE const * const yyvaluep;
869
#endif
869
#endif
870
{
870
{
871
  if (!yyvaluep)
871
  if (!yyvaluep)
872
    return;
872
    return;
873
# ifdef YYPRINT
873
# ifdef YYPRINT
874
  if (yytype < YYNTOKENS)
874
  if (yytype < YYNTOKENS)
875
    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
875
    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
876
# else
876
# else
877
  YYUSE (yyoutput);
877
  YYUSE (yyoutput);
878
# endif
878
# endif
879
  switch (yytype)
879
  switch (yytype)
880
    {
880
    {
881
      default:
881
      default:
882
    break;
882
    break;
883
    }
883
    }
884
}
884
}
885
 
885
 
886
 
886
 
887
/*--------------------------------.
887
/*--------------------------------.
888
| Print this symbol on YYOUTPUT.  |
888
| Print this symbol on YYOUTPUT.  |
889
`--------------------------------*/
889
`--------------------------------*/
890
 
890
 
891
#if (defined __STDC__ || defined __C99__FUNC__ \
891
#if (defined __STDC__ || defined __C99__FUNC__ \
892
     || defined __cplusplus || defined _MSC_VER)
892
     || defined __cplusplus || defined _MSC_VER)
893
static void
893
static void
894
yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
894
yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
895
#else
895
#else
896
static void
896
static void
897
yy_symbol_print (yyoutput, yytype, yyvaluep)
897
yy_symbol_print (yyoutput, yytype, yyvaluep)
898
    FILE *yyoutput;
898
    FILE *yyoutput;
899
    int yytype;
899
    int yytype;
900
    YYSTYPE const * const yyvaluep;
900
    YYSTYPE const * const yyvaluep;
901
#endif
901
#endif
902
{
902
{
903
  if (yytype < YYNTOKENS)
903
  if (yytype < YYNTOKENS)
904
    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
904
    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
905
  else
905
  else
906
    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
906
    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
907
 
907
 
908
  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
908
  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
909
  YYFPRINTF (yyoutput, ")");
909
  YYFPRINTF (yyoutput, ")");
910
}
910
}
911
 
911
 
912
/*------------------------------------------------------------------.
912
/*------------------------------------------------------------------.
913
| yy_stack_print -- Print the state stack from its BOTTOM up to its |
913
| yy_stack_print -- Print the state stack from its BOTTOM up to its |
914
| TOP (included).                                                   |
914
| TOP (included).                                                   |
915
`------------------------------------------------------------------*/
915
`------------------------------------------------------------------*/
916
 
916
 
917
#if (defined __STDC__ || defined __C99__FUNC__ \
917
#if (defined __STDC__ || defined __C99__FUNC__ \
918
     || defined __cplusplus || defined _MSC_VER)
918
     || defined __cplusplus || defined _MSC_VER)
919
static void
919
static void
920
yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
920
yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
921
#else
921
#else
922
static void
922
static void
923
yy_stack_print (bottom, top)
923
yy_stack_print (bottom, top)
924
    yytype_int16 *bottom;
924
    yytype_int16 *bottom;
925
    yytype_int16 *top;
925
    yytype_int16 *top;
926
#endif
926
#endif
927
{
927
{
928
  YYFPRINTF (stderr, "Stack now");
928
  YYFPRINTF (stderr, "Stack now");
929
  for (; bottom <= top; ++bottom)
929
  for (; bottom <= top; ++bottom)
930
    YYFPRINTF (stderr, " %d", *bottom);
930
    YYFPRINTF (stderr, " %d", *bottom);
931
  YYFPRINTF (stderr, "\n");
931
  YYFPRINTF (stderr, "\n");
932
}
932
}
933
 
933
 
934
# define YY_STACK_PRINT(Bottom, Top)                \
934
# define YY_STACK_PRINT(Bottom, Top)                \
935
do {                                \
935
do {                                \
936
  if (yydebug)                          \
936
  if (yydebug)                          \
937
    yy_stack_print ((Bottom), (Top));               \
937
    yy_stack_print ((Bottom), (Top));               \
938
} while (YYID (0))
938
} while (YYID (0))
939
 
939
 
940
 
940
 
941
/*------------------------------------------------.
941
/*------------------------------------------------.
942
| Report that the YYRULE is going to be reduced.  |
942
| Report that the YYRULE is going to be reduced.  |
943
`------------------------------------------------*/
943
`------------------------------------------------*/
944
 
944
 
945
#if (defined __STDC__ || defined __C99__FUNC__ \
945
#if (defined __STDC__ || defined __C99__FUNC__ \
946
     || defined __cplusplus || defined _MSC_VER)
946
     || defined __cplusplus || defined _MSC_VER)
947
static void
947
static void
948
yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
948
yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
949
#else
949
#else
950
static void
950
static void
951
yy_reduce_print (yyvsp, yyrule)
951
yy_reduce_print (yyvsp, yyrule)
952
    YYSTYPE *yyvsp;
952
    YYSTYPE *yyvsp;
953
    int yyrule;
953
    int yyrule;
954
#endif
954
#endif
955
{
955
{
956
  int yynrhs = yyr2[yyrule];
956
  int yynrhs = yyr2[yyrule];
957
  int yyi;
957
  int yyi;
958
  unsigned long int yylno = yyrline[yyrule];
958
  unsigned long int yylno = yyrline[yyrule];
959
  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
959
  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
960
         yyrule - 1, yylno);
960
         yyrule - 1, yylno);
961
  /* The symbols being reduced.  */
961
  /* The symbols being reduced.  */
962
  for (yyi = 0; yyi < yynrhs; yyi++)
962
  for (yyi = 0; yyi < yynrhs; yyi++)
963
    {
963
    {
964
      fprintf (stderr, "   $%d = ", yyi + 1);
964
      fprintf (stderr, "   $%d = ", yyi + 1);
965
      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
965
      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
966
               &(yyvsp[(yyi + 1) - (yynrhs)])
966
               &(yyvsp[(yyi + 1) - (yynrhs)])
967
                           );
967
                           );
968
      fprintf (stderr, "\n");
968
      fprintf (stderr, "\n");
969
    }
969
    }
970
}
970
}
971
 
971
 
972
# define YY_REDUCE_PRINT(Rule)      \
972
# define YY_REDUCE_PRINT(Rule)      \
973
do {                    \
973
do {                    \
974
  if (yydebug)              \
974
  if (yydebug)              \
975
    yy_reduce_print (yyvsp, Rule); \
975
    yy_reduce_print (yyvsp, Rule); \
976
} while (YYID (0))
976
} while (YYID (0))
977
 
977
 
978
/* Nonzero means print parse trace.  It is left uninitialized so that
978
/* Nonzero means print parse trace.  It is left uninitialized so that
979
   multiple parsers can coexist.  */
979
   multiple parsers can coexist.  */
980
int yydebug;
980
int yydebug;
981
#else /* !YYDEBUG */
981
#else /* !YYDEBUG */
982
# define YYDPRINTF(Args)
982
# define YYDPRINTF(Args)
983
# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
983
# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
984
# define YY_STACK_PRINT(Bottom, Top)
984
# define YY_STACK_PRINT(Bottom, Top)
985
# define YY_REDUCE_PRINT(Rule)
985
# define YY_REDUCE_PRINT(Rule)
986
#endif /* !YYDEBUG */
986
#endif /* !YYDEBUG */
987
 
987
 
988
 
988
 
989
/* YYINITDEPTH -- initial size of the parser's stacks.  */
989
/* YYINITDEPTH -- initial size of the parser's stacks.  */
990
#ifndef YYINITDEPTH
990
#ifndef YYINITDEPTH
991
# define YYINITDEPTH 200
991
# define YYINITDEPTH 200
992
#endif
992
#endif
993
 
993
 
994
/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
994
/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
995
   if the built-in stack extension method is used).
995
   if the built-in stack extension method is used).
996
 
996
 
997
   Do not make this value too large; the results are undefined if
997
   Do not make this value too large; the results are undefined if
998
   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
998
   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
999
   evaluated with infinite-precision integer arithmetic.  */
999
   evaluated with infinite-precision integer arithmetic.  */
1000
 
1000
 
1001
#ifndef YYMAXDEPTH
1001
#ifndef YYMAXDEPTH
1002
# define YYMAXDEPTH 10000
1002
# define YYMAXDEPTH 10000
1003
#endif
1003
#endif
1004
 
1004
 
1005

1005

1006
 
1006
 
1007
#if YYERROR_VERBOSE
1007
#if YYERROR_VERBOSE
1008
 
1008
 
1009
# ifndef yystrlen
1009
# ifndef yystrlen
1010
#  if defined __GLIBC__ && defined _STRING_H
1010
#  if defined __GLIBC__ && defined _STRING_H
1011
#   define yystrlen strlen
1011
#   define yystrlen strlen
1012
#  else
1012
#  else
1013
/* Return the length of YYSTR.  */
1013
/* Return the length of YYSTR.  */
1014
#if (defined __STDC__ || defined __C99__FUNC__ \
1014
#if (defined __STDC__ || defined __C99__FUNC__ \
1015
     || defined __cplusplus || defined _MSC_VER)
1015
     || defined __cplusplus || defined _MSC_VER)
1016
static YYSIZE_T
1016
static YYSIZE_T
1017
yystrlen (const char *yystr)
1017
yystrlen (const char *yystr)
1018
#else
1018
#else
1019
static YYSIZE_T
1019
static YYSIZE_T
1020
yystrlen (yystr)
1020
yystrlen (yystr)
1021
    const char *yystr;
1021
    const char *yystr;
1022
#endif
1022
#endif
1023
{
1023
{
1024
  YYSIZE_T yylen;
1024
  YYSIZE_T yylen;
1025
  for (yylen = 0; yystr[yylen]; yylen++)
1025
  for (yylen = 0; yystr[yylen]; yylen++)
1026
    continue;
1026
    continue;
1027
  return yylen;
1027
  return yylen;
1028
}
1028
}
1029
#  endif
1029
#  endif
1030
# endif
1030
# endif
1031
 
1031
 
1032
# ifndef yystpcpy
1032
# ifndef yystpcpy
1033
#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
1033
#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
1034
#   define yystpcpy stpcpy
1034
#   define yystpcpy stpcpy
1035
#  else
1035
#  else
1036
/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1036
/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1037
   YYDEST.  */
1037
   YYDEST.  */
1038
#if (defined __STDC__ || defined __C99__FUNC__ \
1038
#if (defined __STDC__ || defined __C99__FUNC__ \
1039
     || defined __cplusplus || defined _MSC_VER)
1039
     || defined __cplusplus || defined _MSC_VER)
1040
static char *
1040
static char *
1041
yystpcpy (char *yydest, const char *yysrc)
1041
yystpcpy (char *yydest, const char *yysrc)
1042
#else
1042
#else
1043
static char *
1043
static char *
1044
yystpcpy (yydest, yysrc)
1044
yystpcpy (yydest, yysrc)
1045
    char *yydest;
1045
    char *yydest;
1046
    const char *yysrc;
1046
    const char *yysrc;
1047
#endif
1047
#endif
1048
{
1048
{
1049
  char *yyd = yydest;
1049
  char *yyd = yydest;
1050
  const char *yys = yysrc;
1050
  const char *yys = yysrc;
1051
 
1051
 
1052
  while ((*yyd++ = *yys++) != '\0')
1052
  while ((*yyd++ = *yys++) != '\0')
1053
    continue;
1053
    continue;
1054
 
1054
 
1055
  return yyd - 1;
1055
  return yyd - 1;
1056
}
1056
}
1057
#  endif
1057
#  endif
1058
# endif
1058
# endif
1059
 
1059
 
1060
# ifndef yytnamerr
1060
# ifndef yytnamerr
1061
/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
1061
/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
1062
   quotes and backslashes, so that it's suitable for yyerror.  The
1062
   quotes and backslashes, so that it's suitable for yyerror.  The
1063
   heuristic is that double-quoting is unnecessary unless the string
1063
   heuristic is that double-quoting is unnecessary unless the string
1064
   contains an apostrophe, a comma, or backslash (other than
1064
   contains an apostrophe, a comma, or backslash (other than
1065
   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
1065
   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
1066
   null, do not copy; instead, return the length of what the result
1066
   null, do not copy; instead, return the length of what the result
1067
   would have been.  */
1067
   would have been.  */
1068
static YYSIZE_T
1068
static YYSIZE_T
1069
yytnamerr (char *yyres, const char *yystr)
1069
yytnamerr (char *yyres, const char *yystr)
1070
{
1070
{
1071
  if (*yystr == '"')
1071
  if (*yystr == '"')
1072
    {
1072
    {
1073
      YYSIZE_T yyn = 0;
1073
      YYSIZE_T yyn = 0;
1074
      char const *yyp = yystr;
1074
      char const *yyp = yystr;
1075
 
1075
 
1076
      for (;;)
1076
      for (;;)
1077
    switch (*++yyp)
1077
    switch (*++yyp)
1078
      {
1078
      {
1079
      case '\'':
1079
      case '\'':
1080
      case ',':
1080
      case ',':
1081
        goto do_not_strip_quotes;
1081
        goto do_not_strip_quotes;
1082
 
1082
 
1083
      case '\\':
1083
      case '\\':
1084
        if (*++yyp != '\\')
1084
        if (*++yyp != '\\')
1085
          goto do_not_strip_quotes;
1085
          goto do_not_strip_quotes;
1086
        /* Fall through.  */
1086
        /* Fall through.  */
1087
      default:
1087
      default:
1088
        if (yyres)
1088
        if (yyres)
1089
          yyres[yyn] = *yyp;
1089
          yyres[yyn] = *yyp;
1090
        yyn++;
1090
        yyn++;
1091
        break;
1091
        break;
1092
 
1092
 
1093
      case '"':
1093
      case '"':
1094
        if (yyres)
1094
        if (yyres)
1095
          yyres[yyn] = '\0';
1095
          yyres[yyn] = '\0';
1096
        return yyn;
1096
        return yyn;
1097
      }
1097
      }
1098
    do_not_strip_quotes: ;
1098
    do_not_strip_quotes: ;
1099
    }
1099
    }
1100
 
1100
 
1101
  if (! yyres)
1101
  if (! yyres)
1102
    return yystrlen (yystr);
1102
    return yystrlen (yystr);
1103
 
1103
 
1104
  return yystpcpy (yyres, yystr) - yyres;
1104
  return yystpcpy (yyres, yystr) - yyres;
1105
}
1105
}
1106
# endif
1106
# endif
1107
 
1107
 
1108
/* Copy into YYRESULT an error message about the unexpected token
1108
/* Copy into YYRESULT an error message about the unexpected token
1109
   YYCHAR while in state YYSTATE.  Return the number of bytes copied,
1109
   YYCHAR while in state YYSTATE.  Return the number of bytes copied,
1110
   including the terminating null byte.  If YYRESULT is null, do not
1110
   including the terminating null byte.  If YYRESULT is null, do not
1111
   copy anything; just return the number of bytes that would be
1111
   copy anything; just return the number of bytes that would be
1112
   copied.  As a special case, return 0 if an ordinary "syntax error"
1112
   copied.  As a special case, return 0 if an ordinary "syntax error"
1113
   message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
1113
   message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
1114
   size calculation.  */
1114
   size calculation.  */
1115
static YYSIZE_T
1115
static YYSIZE_T
1116
yysyntax_error (char *yyresult, int yystate, int yychar)
1116
yysyntax_error (char *yyresult, int yystate, int yychar)
1117
{
1117
{
1118
  int yyn = yypact[yystate];
1118
  int yyn = yypact[yystate];
1119
 
1119
 
1120
  if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
1120
  if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
1121
    return 0;
1121
    return 0;
1122
  else
1122
  else
1123
    {
1123
    {
1124
      int yytype = YYTRANSLATE (yychar);
1124
      int yytype = YYTRANSLATE (yychar);
1125
      YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
1125
      YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
1126
      YYSIZE_T yysize = yysize0;
1126
      YYSIZE_T yysize = yysize0;
1127
      YYSIZE_T yysize1;
1127
      YYSIZE_T yysize1;
1128
      int yysize_overflow = 0;
1128
      int yysize_overflow = 0;
1129
      enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
1129
      enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
1130
      char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
1130
      char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
1131
      int yyx;
1131
      int yyx;
1132
 
1132
 
1133
# if 0
1133
# if 0
1134
      /* This is so xgettext sees the translatable formats that are
1134
      /* This is so xgettext sees the translatable formats that are
1135
     constructed on the fly.  */
1135
     constructed on the fly.  */
1136
      YY_("syntax error, unexpected %s");
1136
      YY_("syntax error, unexpected %s");
1137
      YY_("syntax error, unexpected %s, expecting %s");
1137
      YY_("syntax error, unexpected %s, expecting %s");
1138
      YY_("syntax error, unexpected %s, expecting %s or %s");
1138
      YY_("syntax error, unexpected %s, expecting %s or %s");
1139
      YY_("syntax error, unexpected %s, expecting %s or %s or %s");
1139
      YY_("syntax error, unexpected %s, expecting %s or %s or %s");
1140
      YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
1140
      YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
1141
# endif
1141
# endif
1142
      char *yyfmt;
1142
      char *yyfmt;
1143
      char const *yyf;
1143
      char const *yyf;
1144
      static char const yyunexpected[] = "syntax error, unexpected %s";
1144
      static char const yyunexpected[] = "syntax error, unexpected %s";
1145
      static char const yyexpecting[] = ", expecting %s";
1145
      static char const yyexpecting[] = ", expecting %s";
1146
      static char const yyor[] = " or %s";
1146
      static char const yyor[] = " or %s";
1147
      char yyformat[sizeof yyunexpected
1147
      char yyformat[sizeof yyunexpected
1148
            + sizeof yyexpecting - 1
1148
            + sizeof yyexpecting - 1
1149
            + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
1149
            + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
1150
               * (sizeof yyor - 1))];
1150
               * (sizeof yyor - 1))];
1151
      char const *yyprefix = yyexpecting;
1151
      char const *yyprefix = yyexpecting;
1152
 
1152
 
1153
      /* Start YYX at -YYN if negative to avoid negative indexes in
1153
      /* Start YYX at -YYN if negative to avoid negative indexes in
1154
     YYCHECK.  */
1154
     YYCHECK.  */
1155
      int yyxbegin = yyn < 0 ? -yyn : 0;
1155
      int yyxbegin = yyn < 0 ? -yyn : 0;
1156
 
1156
 
1157
      /* Stay within bounds of both yycheck and yytname.  */
1157
      /* Stay within bounds of both yycheck and yytname.  */
1158
      int yychecklim = YYLAST - yyn + 1;
1158
      int yychecklim = YYLAST - yyn + 1;
1159
      int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
1159
      int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
1160
      int yycount = 1;
1160
      int yycount = 1;
1161
 
1161
 
1162
      yyarg[0] = yytname[yytype];
1162
      yyarg[0] = yytname[yytype];
1163
      yyfmt = yystpcpy (yyformat, yyunexpected);
1163
      yyfmt = yystpcpy (yyformat, yyunexpected);
1164
 
1164
 
1165
      for (yyx = yyxbegin; yyx < yyxend; ++yyx)
1165
      for (yyx = yyxbegin; yyx < yyxend; ++yyx)
1166
    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
1166
    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
1167
      {
1167
      {
1168
        if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
1168
        if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
1169
          {
1169
          {
1170
        yycount = 1;
1170
        yycount = 1;
1171
        yysize = yysize0;
1171
        yysize = yysize0;
1172
        yyformat[sizeof yyunexpected - 1] = '\0';
1172
        yyformat[sizeof yyunexpected - 1] = '\0';
1173
        break;
1173
        break;
1174
          }
1174
          }
1175
        yyarg[yycount++] = yytname[yyx];
1175
        yyarg[yycount++] = yytname[yyx];
1176
        yysize1 = yysize + yytnamerr (0, yytname[yyx]);
1176
        yysize1 = yysize + yytnamerr (0, yytname[yyx]);
1177
        yysize_overflow |= (yysize1 < yysize);
1177
        yysize_overflow |= (yysize1 < yysize);
1178
        yysize = yysize1;
1178
        yysize = yysize1;
1179
        yyfmt = yystpcpy (yyfmt, yyprefix);
1179
        yyfmt = yystpcpy (yyfmt, yyprefix);
1180
        yyprefix = yyor;
1180
        yyprefix = yyor;
1181
      }
1181
      }
1182
 
1182
 
1183
      yyf = YY_(yyformat);
1183
      yyf = YY_(yyformat);
1184
      yysize1 = yysize + yystrlen (yyf);
1184
      yysize1 = yysize + yystrlen (yyf);
1185
      yysize_overflow |= (yysize1 < yysize);
1185
      yysize_overflow |= (yysize1 < yysize);
1186
      yysize = yysize1;
1186
      yysize = yysize1;
1187
 
1187
 
1188
      if (yysize_overflow)
1188
      if (yysize_overflow)
1189
    return YYSIZE_MAXIMUM;
1189
    return YYSIZE_MAXIMUM;
1190
 
1190
 
1191
      if (yyresult)
1191
      if (yyresult)
1192
    {
1192
    {
1193
      /* Avoid sprintf, as that infringes on the user's name space.
1193
      /* Avoid sprintf, as that infringes on the user's name space.
1194
         Don't have undefined behavior even if the translation
1194
         Don't have undefined behavior even if the translation
1195
         produced a string with the wrong number of "%s"s.  */
1195
         produced a string with the wrong number of "%s"s.  */
1196
      char *yyp = yyresult;
1196
      char *yyp = yyresult;
1197
      int yyi = 0;
1197
      int yyi = 0;
1198
      while ((*yyp = *yyf) != '\0')
1198
      while ((*yyp = *yyf) != '\0')
1199
        {
1199
        {
1200
          if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
1200
          if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
1201
        {
1201
        {
1202
          yyp += yytnamerr (yyp, yyarg[yyi++]);
1202
          yyp += yytnamerr (yyp, yyarg[yyi++]);
1203
          yyf += 2;
1203
          yyf += 2;
1204
        }
1204
        }
1205
          else
1205
          else
1206
        {
1206
        {
1207
          yyp++;
1207
          yyp++;
1208
          yyf++;
1208
          yyf++;
1209
        }
1209
        }
1210
        }
1210
        }
1211
    }
1211
    }
1212
      return yysize;
1212
      return yysize;
1213
    }
1213
    }
1214
}
1214
}
1215
#endif /* YYERROR_VERBOSE */
1215
#endif /* YYERROR_VERBOSE */
1216

1216

1217
 
1217
 
1218
/*-----------------------------------------------.
1218
/*-----------------------------------------------.
1219
| Release the memory associated to this symbol.  |
1219
| Release the memory associated to this symbol.  |
1220
`-----------------------------------------------*/
1220
`-----------------------------------------------*/
1221
 
1221
 
1222
/*ARGSUSED*/
1222
/*ARGSUSED*/
1223
#if (defined __STDC__ || defined __C99__FUNC__ \
1223
#if (defined __STDC__ || defined __C99__FUNC__ \
1224
     || defined __cplusplus || defined _MSC_VER)
1224
     || defined __cplusplus || defined _MSC_VER)
1225
static void
1225
static void
1226
yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
1226
yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
1227
#else
1227
#else
1228
static void
1228
static void
1229
yydestruct (yymsg, yytype, yyvaluep)
1229
yydestruct (yymsg, yytype, yyvaluep)
1230
    const char *yymsg;
1230
    const char *yymsg;
1231
    int yytype;
1231
    int yytype;
1232
    YYSTYPE *yyvaluep;
1232
    YYSTYPE *yyvaluep;
1233
#endif
1233
#endif
1234
{
1234
{
1235
  YYUSE (yyvaluep);
1235
  YYUSE (yyvaluep);
1236
 
1236
 
1237
  if (!yymsg)
1237
  if (!yymsg)
1238
    yymsg = "Deleting";
1238
    yymsg = "Deleting";
1239
  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1239
  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1240
 
1240
 
1241
  switch (yytype)
1241
  switch (yytype)
1242
    {
1242
    {
1243
 
1243
 
1244
      default:
1244
      default:
1245
    break;
1245
    break;
1246
    }
1246
    }
1247
}
1247
}
1248

1248

1249
 
1249
 
1250
/* Prevent warnings from -Wmissing-prototypes.  */
1250
/* Prevent warnings from -Wmissing-prototypes.  */
1251
 
1251
 
1252
#ifdef YYPARSE_PARAM
1252
#ifdef YYPARSE_PARAM
1253
#if defined __STDC__ || defined __cplusplus
1253
#if defined __STDC__ || defined __cplusplus
1254
int yyparse (void *YYPARSE_PARAM);
1254
int yyparse (void *YYPARSE_PARAM);
1255
#else
1255
#else
1256
int yyparse ();
1256
int yyparse ();
1257
#endif
1257
#endif
1258
#else /* ! YYPARSE_PARAM */
1258
#else /* ! YYPARSE_PARAM */
1259
#if defined __STDC__ || defined __cplusplus
1259
#if defined __STDC__ || defined __cplusplus
1260
int yyparse (void);
1260
int yyparse (void);
1261
#else
1261
#else
1262
int yyparse ();
1262
int yyparse ();
1263
#endif
1263
#endif
1264
#endif /* ! YYPARSE_PARAM */
1264
#endif /* ! YYPARSE_PARAM */
1265
 
1265
 
1266
 
1266
 
1267
 
1267
 
1268
/* The look-ahead symbol.  */
1268
/* The look-ahead symbol.  */
1269
int yychar;
1269
int yychar;
1270
 
1270
 
1271
/* The semantic value of the look-ahead symbol.  */
1271
/* The semantic value of the look-ahead symbol.  */
1272
YYSTYPE yylval;
1272
YYSTYPE yylval;
1273
 
1273
 
1274
/* Number of syntax errors so far.  */
1274
/* Number of syntax errors so far.  */
1275
int yynerrs;
1275
int yynerrs;
1276
 
1276
 
1277
 
1277
 
1278
 
1278
 
1279
/*----------.
1279
/*----------.
1280
| yyparse.  |
1280
| yyparse.  |
1281
`----------*/
1281
`----------*/
1282
 
1282
 
1283
#ifdef YYPARSE_PARAM
1283
#ifdef YYPARSE_PARAM
1284
#if (defined __STDC__ || defined __C99__FUNC__ \
1284
#if (defined __STDC__ || defined __C99__FUNC__ \
1285
     || defined __cplusplus || defined _MSC_VER)
1285
     || defined __cplusplus || defined _MSC_VER)
1286
int
1286
int
1287
yyparse (void *YYPARSE_PARAM)
1287
yyparse (void *YYPARSE_PARAM)
1288
#else
1288
#else
1289
int
1289
int
1290
yyparse (YYPARSE_PARAM)
1290
yyparse (YYPARSE_PARAM)
1291
    void *YYPARSE_PARAM;
1291
    void *YYPARSE_PARAM;
1292
#endif
1292
#endif
1293
#else /* ! YYPARSE_PARAM */
1293
#else /* ! YYPARSE_PARAM */
1294
#if (defined __STDC__ || defined __C99__FUNC__ \
1294
#if (defined __STDC__ || defined __C99__FUNC__ \
1295
     || defined __cplusplus || defined _MSC_VER)
1295
     || defined __cplusplus || defined _MSC_VER)
1296
int
1296
int
1297
yyparse (void)
1297
yyparse (void)
1298
#else
1298
#else
1299
int
1299
int
1300
yyparse ()
1300
yyparse ()
1301
 
1301
 
1302
#endif
1302
#endif
1303
#endif
1303
#endif
1304
{
1304
{
1305
 
1305
 
1306
  int yystate;
1306
  int yystate;
1307
  int yyn;
1307
  int yyn;
1308
  int yyresult;
1308
  int yyresult;
1309
  /* Number of tokens to shift before error messages enabled.  */
1309
  /* Number of tokens to shift before error messages enabled.  */
1310
  int yyerrstatus;
1310
  int yyerrstatus;
1311
  /* Look-ahead token as an internal (translated) token number.  */
1311
  /* Look-ahead token as an internal (translated) token number.  */
1312
  int yytoken = 0;
1312
  int yytoken = 0;
1313
#if YYERROR_VERBOSE
1313
#if YYERROR_VERBOSE
1314
  /* Buffer for error messages, and its allocated size.  */
1314
  /* Buffer for error messages, and its allocated size.  */
1315
  char yymsgbuf[128];
1315
  char yymsgbuf[128];
1316
  char *yymsg = yymsgbuf;
1316
  char *yymsg = yymsgbuf;
1317
  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
1317
  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
1318
#endif
1318
#endif
1319
 
1319
 
1320
  /* Three stacks and their tools:
1320
  /* Three stacks and their tools:
1321
     `yyss': related to states,
1321
     `yyss': related to states,
1322
     `yyvs': related to semantic values,
1322
     `yyvs': related to semantic values,
1323
     `yyls': related to locations.
1323
     `yyls': related to locations.
1324
 
1324
 
1325
     Refer to the stacks thru separate pointers, to allow yyoverflow
1325
     Refer to the stacks thru separate pointers, to allow yyoverflow
1326
     to reallocate them elsewhere.  */
1326
     to reallocate them elsewhere.  */
1327
 
1327
 
1328
  /* The state stack.  */
1328
  /* The state stack.  */
1329
  yytype_int16 yyssa[YYINITDEPTH];
1329
  yytype_int16 yyssa[YYINITDEPTH];
1330
  yytype_int16 *yyss = yyssa;
1330
  yytype_int16 *yyss = yyssa;
1331
  yytype_int16 *yyssp;
1331
  yytype_int16 *yyssp;
1332
 
1332
 
1333
  /* The semantic value stack.  */
1333
  /* The semantic value stack.  */
1334
  YYSTYPE yyvsa[YYINITDEPTH];
1334
  YYSTYPE yyvsa[YYINITDEPTH];
1335
  YYSTYPE *yyvs = yyvsa;
1335
  YYSTYPE *yyvs = yyvsa;
1336
  YYSTYPE *yyvsp;
1336
  YYSTYPE *yyvsp;
1337
 
1337
 
1338
 
1338
 
1339
 
1339
 
1340
#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
1340
#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
1341
 
1341
 
1342
  YYSIZE_T yystacksize = YYINITDEPTH;
1342
  YYSIZE_T yystacksize = YYINITDEPTH;
1343
 
1343
 
1344
  /* The variables used to return semantic value and location from the
1344
  /* The variables used to return semantic value and location from the
1345
     action routines.  */
1345
     action routines.  */
1346
  YYSTYPE yyval;
1346
  YYSTYPE yyval;
1347
 
1347
 
1348
 
1348
 
1349
  /* The number of symbols on the RHS of the reduced rule.
1349
  /* The number of symbols on the RHS of the reduced rule.
1350
     Keep to zero when no symbol should be popped.  */
1350
     Keep to zero when no symbol should be popped.  */
1351
  int yylen = 0;
1351
  int yylen = 0;
1352
 
1352
 
1353
  YYDPRINTF ((stderr, "Starting parse\n"));
1353
  YYDPRINTF ((stderr, "Starting parse\n"));
1354
 
1354
 
1355
  yystate = 0;
1355
  yystate = 0;
1356
  yyerrstatus = 0;
1356
  yyerrstatus = 0;
1357
  yynerrs = 0;
1357
  yynerrs = 0;
1358
  yychar = YYEMPTY;     /* Cause a token to be read.  */
1358
  yychar = YYEMPTY;     /* Cause a token to be read.  */
1359
 
1359
 
1360
  /* Initialize stack pointers.
1360
  /* Initialize stack pointers.
1361
     Waste one element of value and location stack
1361
     Waste one element of value and location stack
1362
     so that they stay on the same level as the state stack.
1362
     so that they stay on the same level as the state stack.
1363
     The wasted elements are never initialized.  */
1363
     The wasted elements are never initialized.  */
1364
 
1364
 
1365
  yyssp = yyss;
1365
  yyssp = yyss;
1366
  yyvsp = yyvs;
1366
  yyvsp = yyvs;
1367
 
1367
 
1368
  goto yysetstate;
1368
  goto yysetstate;
1369
 
1369
 
1370
/*------------------------------------------------------------.
1370
/*------------------------------------------------------------.
1371
| yynewstate -- Push a new state, which is found in yystate.  |
1371
| yynewstate -- Push a new state, which is found in yystate.  |
1372
`------------------------------------------------------------*/
1372
`------------------------------------------------------------*/
1373
 yynewstate:
1373
 yynewstate:
1374
  /* In all cases, when you get here, the value and location stacks
1374
  /* In all cases, when you get here, the value and location stacks
1375
     have just been pushed.  So pushing a state here evens the stacks.  */
1375
     have just been pushed.  So pushing a state here evens the stacks.  */
1376
  yyssp++;
1376
  yyssp++;
1377
 
1377
 
1378
 yysetstate:
1378
 yysetstate:
1379
  *yyssp = yystate;
1379
  *yyssp = yystate;
1380
 
1380
 
1381
  if (yyss + yystacksize - 1 <= yyssp)
1381
  if (yyss + yystacksize - 1 <= yyssp)
1382
    {
1382
    {
1383
      /* Get the current used size of the three stacks, in elements.  */
1383
      /* Get the current used size of the three stacks, in elements.  */
1384
      YYSIZE_T yysize = yyssp - yyss + 1;
1384
      YYSIZE_T yysize = yyssp - yyss + 1;
1385
 
1385
 
1386
#ifdef yyoverflow
1386
#ifdef yyoverflow
1387
      {
1387
      {
1388
    /* Give user a chance to reallocate the stack.  Use copies of
1388
    /* Give user a chance to reallocate the stack.  Use copies of
1389
       these so that the &'s don't force the real ones into
1389
       these so that the &'s don't force the real ones into
1390
       memory.  */
1390
       memory.  */
1391
    YYSTYPE *yyvs1 = yyvs;
1391
    YYSTYPE *yyvs1 = yyvs;
1392
    yytype_int16 *yyss1 = yyss;
1392
    yytype_int16 *yyss1 = yyss;
1393
 
1393
 
1394
 
1394
 
1395
    /* Each stack pointer address is followed by the size of the
1395
    /* Each stack pointer address is followed by the size of the
1396
       data in use in that stack, in bytes.  This used to be a
1396
       data in use in that stack, in bytes.  This used to be a
1397
       conditional around just the two extra args, but that might
1397
       conditional around just the two extra args, but that might
1398
       be undefined if yyoverflow is a macro.  */
1398
       be undefined if yyoverflow is a macro.  */
1399
    yyoverflow (YY_("memory exhausted"),
1399
    yyoverflow (YY_("memory exhausted"),
1400
            &yyss1, yysize * sizeof (*yyssp),
1400
            &yyss1, yysize * sizeof (*yyssp),
1401
            &yyvs1, yysize * sizeof (*yyvsp),
1401
            &yyvs1, yysize * sizeof (*yyvsp),
1402
 
1402
 
1403
            &yystacksize);
1403
            &yystacksize);
1404
 
1404
 
1405
    yyss = yyss1;
1405
    yyss = yyss1;
1406
    yyvs = yyvs1;
1406
    yyvs = yyvs1;
1407
      }
1407
      }
1408
#else /* no yyoverflow */
1408
#else /* no yyoverflow */
1409
# ifndef YYSTACK_RELOCATE
1409
# ifndef YYSTACK_RELOCATE
1410
      goto yyexhaustedlab;
1410
      goto yyexhaustedlab;
1411
# else
1411
# else
1412
      /* Extend the stack our own way.  */
1412
      /* Extend the stack our own way.  */
1413
      if (YYMAXDEPTH <= yystacksize)
1413
      if (YYMAXDEPTH <= yystacksize)
1414
    goto yyexhaustedlab;
1414
    goto yyexhaustedlab;
1415
      yystacksize *= 2;
1415
      yystacksize *= 2;
1416
      if (YYMAXDEPTH < yystacksize)
1416
      if (YYMAXDEPTH < yystacksize)
1417
    yystacksize = YYMAXDEPTH;
1417
    yystacksize = YYMAXDEPTH;
1418
 
1418
 
1419
      {
1419
      {
1420
    yytype_int16 *yyss1 = yyss;
1420
    yytype_int16 *yyss1 = yyss;
1421
    union yyalloc *yyptr =
1421
    union yyalloc *yyptr =
1422
      (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1422
      (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1423
    if (! yyptr)
1423
    if (! yyptr)
1424
      goto yyexhaustedlab;
1424
      goto yyexhaustedlab;
1425
    YYSTACK_RELOCATE (yyss);
1425
    YYSTACK_RELOCATE (yyss);
1426
    YYSTACK_RELOCATE (yyvs);
1426
    YYSTACK_RELOCATE (yyvs);
1427
 
1427
 
1428
#  undef YYSTACK_RELOCATE
1428
#  undef YYSTACK_RELOCATE
1429
    if (yyss1 != yyssa)
1429
    if (yyss1 != yyssa)
1430
      YYSTACK_FREE (yyss1);
1430
      YYSTACK_FREE (yyss1);
1431
      }
1431
      }
1432
# endif
1432
# endif
1433
#endif /* no yyoverflow */
1433
#endif /* no yyoverflow */
1434
 
1434
 
1435
      yyssp = yyss + yysize - 1;
1435
      yyssp = yyss + yysize - 1;
1436
      yyvsp = yyvs + yysize - 1;
1436
      yyvsp = yyvs + yysize - 1;
1437
 
1437
 
1438
 
1438
 
1439
      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1439
      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1440
          (unsigned long int) yystacksize));
1440
          (unsigned long int) yystacksize));
1441
 
1441
 
1442
      if (yyss + yystacksize - 1 <= yyssp)
1442
      if (yyss + yystacksize - 1 <= yyssp)
1443
    YYABORT;
1443
    YYABORT;
1444
    }
1444
    }
1445
 
1445
 
1446
  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1446
  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1447
 
1447
 
1448
  goto yybackup;
1448
  goto yybackup;
1449
 
1449
 
1450
/*-----------.
1450
/*-----------.
1451
| yybackup.  |
1451
| yybackup.  |
1452
`-----------*/
1452
`-----------*/
1453
yybackup:
1453
yybackup:
1454
 
1454
 
1455
  /* Do appropriate processing given the current state.  Read a
1455
  /* Do appropriate processing given the current state.  Read a
1456
     look-ahead token if we need one and don't already have one.  */
1456
     look-ahead token if we need one and don't already have one.  */
1457
 
1457
 
1458
  /* First try to decide what to do without reference to look-ahead token.  */
1458
  /* First try to decide what to do without reference to look-ahead token.  */
1459
  yyn = yypact[yystate];
1459
  yyn = yypact[yystate];
1460
  if (yyn == YYPACT_NINF)
1460
  if (yyn == YYPACT_NINF)
1461
    goto yydefault;
1461
    goto yydefault;
1462
 
1462
 
1463
  /* Not known => get a look-ahead token if don't already have one.  */
1463
  /* Not known => get a look-ahead token if don't already have one.  */
1464
 
1464
 
1465
  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
1465
  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
1466
  if (yychar == YYEMPTY)
1466
  if (yychar == YYEMPTY)
1467
    {
1467
    {
1468
      YYDPRINTF ((stderr, "Reading a token: "));
1468
      YYDPRINTF ((stderr, "Reading a token: "));
1469
      yychar = YYLEX;
1469
      yychar = YYLEX;
1470
    }
1470
    }
1471
 
1471
 
1472
  if (yychar <= YYEOF)
1472
  if (yychar <= YYEOF)
1473
    {
1473
    {
1474
      yychar = yytoken = YYEOF;
1474
      yychar = yytoken = YYEOF;
1475
      YYDPRINTF ((stderr, "Now at end of input.\n"));
1475
      YYDPRINTF ((stderr, "Now at end of input.\n"));
1476
    }
1476
    }
1477
  else
1477
  else
1478
    {
1478
    {
1479
      yytoken = YYTRANSLATE (yychar);
1479
      yytoken = YYTRANSLATE (yychar);
1480
      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
1480
      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
1481
    }
1481
    }
1482
 
1482
 
1483
  /* If the proper action on seeing token YYTOKEN is to reduce or to
1483
  /* If the proper action on seeing token YYTOKEN is to reduce or to
1484
     detect an error, take that action.  */
1484
     detect an error, take that action.  */
1485
  yyn += yytoken;
1485
  yyn += yytoken;
1486
  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1486
  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1487
    goto yydefault;
1487
    goto yydefault;
1488
  yyn = yytable[yyn];
1488
  yyn = yytable[yyn];
1489
  if (yyn <= 0)
1489
  if (yyn <= 0)
1490
    {
1490
    {
1491
      if (yyn == 0 || yyn == YYTABLE_NINF)
1491
      if (yyn == 0 || yyn == YYTABLE_NINF)
1492
    goto yyerrlab;
1492
    goto yyerrlab;
1493
      yyn = -yyn;
1493
      yyn = -yyn;
1494
      goto yyreduce;
1494
      goto yyreduce;
1495
    }
1495
    }
1496
 
1496
 
1497
  if (yyn == YYFINAL)
1497
  if (yyn == YYFINAL)
1498
    YYACCEPT;
1498
    YYACCEPT;
1499
 
1499
 
1500
  /* Count tokens shifted since error; after three, turn off error
1500
  /* Count tokens shifted since error; after three, turn off error
1501
     status.  */
1501
     status.  */
1502
  if (yyerrstatus)
1502
  if (yyerrstatus)
1503
    yyerrstatus--;
1503
    yyerrstatus--;
1504
 
1504
 
1505
  /* Shift the look-ahead token.  */
1505
  /* Shift the look-ahead token.  */
1506
  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1506
  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1507
 
1507
 
1508
  /* Discard the shifted token unless it is eof.  */
1508
  /* Discard the shifted token unless it is eof.  */
1509
  if (yychar != YYEOF)
1509
  if (yychar != YYEOF)
1510
    yychar = YYEMPTY;
1510
    yychar = YYEMPTY;
1511
 
1511
 
1512
  yystate = yyn;
1512
  yystate = yyn;
1513
  *++yyvsp = yylval;
1513
  *++yyvsp = yylval;
1514
 
1514
 
1515
  goto yynewstate;
1515
  goto yynewstate;
1516
 
1516
 
1517
 
1517
 
1518
/*-----------------------------------------------------------.
1518
/*-----------------------------------------------------------.
1519
| yydefault -- do the default action for the current state.  |
1519
| yydefault -- do the default action for the current state.  |
1520
`-----------------------------------------------------------*/
1520
`-----------------------------------------------------------*/
1521
yydefault:
1521
yydefault:
1522
  yyn = yydefact[yystate];
1522
  yyn = yydefact[yystate];
1523
  if (yyn == 0)
1523
  if (yyn == 0)
1524
    goto yyerrlab;
1524
    goto yyerrlab;
1525
  goto yyreduce;
1525
  goto yyreduce;
1526
 
1526
 
1527
 
1527
 
1528
/*-----------------------------.
1528
/*-----------------------------.
1529
| yyreduce -- Do a reduction.  |
1529
| yyreduce -- Do a reduction.  |
1530
`-----------------------------*/
1530
`-----------------------------*/
1531
yyreduce:
1531
yyreduce:
1532
  /* yyn is the number of a rule to reduce with.  */
1532
  /* yyn is the number of a rule to reduce with.  */
1533
  yylen = yyr2[yyn];
1533
  yylen = yyr2[yyn];
1534
 
1534
 
1535
  /* If YYLEN is nonzero, implement the default value of the action:
1535
  /* If YYLEN is nonzero, implement the default value of the action:
1536
     `$$ = $1'.
1536
     `$$ = $1'.
1537
 
1537
 
1538
     Otherwise, the following line sets YYVAL to garbage.
1538
     Otherwise, the following line sets YYVAL to garbage.
1539
     This behavior is undocumented and Bison
1539
     This behavior is undocumented and Bison
1540
     users should not rely upon it.  Assigning to YYVAL
1540
     users should not rely upon it.  Assigning to YYVAL
1541
     unconditionally makes the parser a bit smaller, and it avoids a
1541
     unconditionally makes the parser a bit smaller, and it avoids a
1542
     GCC warning that YYVAL may be used uninitialized.  */
1542
     GCC warning that YYVAL may be used uninitialized.  */
1543
  yyval = yyvsp[1-yylen];
1543
  yyval = yyvsp[1-yylen];
1544
 
1544
 
1545
 
1545
 
1546
  YY_REDUCE_PRINT (yyn);
1546
  YY_REDUCE_PRINT (yyn);
1547
  switch (yyn)
1547
  switch (yyn)
1548
    {
1548
    {
1549
        case 2:
1549
        case 2:
1550
#line 153 "arith.y"
1550
#line 153 "arith.y"
1551
    {
1551
    {
1552
            return ((yyvsp[(1) - (1)]));
1552
            return ((yyvsp[(1) - (1)]));
1553
        }
1553
        }
1554
    break;
1554
    break;
1555
 
1555
 
1556
  case 3:
1556
  case 3:
1557
#line 159 "arith.y"
1557
#line 159 "arith.y"
1558
    { (yyval) = (yyvsp[(2) - (3)]); }
1558
    { (yyval) = (yyvsp[(2) - (3)]); }
1559
    break;
1559
    break;
1560
 
1560
 
1561
  case 4:
1561
  case 4:
1562
#line 160 "arith.y"
1562
#line 160 "arith.y"
1563
    { (yyval) = (yyvsp[(1) - (3)]) ? (yyvsp[(1) - (3)]) : (yyvsp[(3) - (3)]) ? (yyvsp[(3) - (3)]) : 0; }
1563
    { (yyval) = (yyvsp[(1) - (3)]) ? (yyvsp[(1) - (3)]) : (yyvsp[(3) - (3)]) ? (yyvsp[(3) - (3)]) : 0; }
1564
    break;
1564
    break;
1565
 
1565
 
1566
  case 5:
1566
  case 5:
1567
#line 161 "arith.y"
1567
#line 161 "arith.y"
1568
    { (yyval) = (yyvsp[(1) - (3)]) ? ( (yyvsp[(3) - (3)]) ? (yyvsp[(3) - (3)]) : 0 ) : 0; }
1568
    { (yyval) = (yyvsp[(1) - (3)]) ? ( (yyvsp[(3) - (3)]) ? (yyvsp[(3) - (3)]) : 0 ) : 0; }
1569
    break;
1569
    break;
1570
 
1570
 
1571
  case 6:
1571
  case 6:
1572
#line 162 "arith.y"
1572
#line 162 "arith.y"
1573
    { (yyval) = (yyvsp[(1) - (3)]) | (yyvsp[(3) - (3)]); }
1573
    { (yyval) = (yyvsp[(1) - (3)]) | (yyvsp[(3) - (3)]); }
1574
    break;
1574
    break;
1575
 
1575
 
1576
  case 7:
1576
  case 7:
1577
#line 163 "arith.y"
1577
#line 163 "arith.y"
1578
    { (yyval) = (yyvsp[(1) - (3)]) ^ (yyvsp[(3) - (3)]); }
1578
    { (yyval) = (yyvsp[(1) - (3)]) ^ (yyvsp[(3) - (3)]); }
1579
    break;
1579
    break;
1580
 
1580
 
1581
  case 8:
1581
  case 8:
1582
#line 164 "arith.y"
1582
#line 164 "arith.y"
1583
    { (yyval) = (yyvsp[(1) - (3)]) & (yyvsp[(3) - (3)]); }
1583
    { (yyval) = (yyvsp[(1) - (3)]) & (yyvsp[(3) - (3)]); }
1584
    break;
1584
    break;
1585
 
1585
 
1586
  case 9:
1586
  case 9:
1587
#line 165 "arith.y"
1587
#line 165 "arith.y"
1588
    { (yyval) = (yyvsp[(1) - (3)]) == (yyvsp[(3) - (3)]); }
1588
    { (yyval) = (yyvsp[(1) - (3)]) == (yyvsp[(3) - (3)]); }
1589
    break;
1589
    break;
1590
 
1590
 
1591
  case 10:
1591
  case 10:
1592
#line 166 "arith.y"
1592
#line 166 "arith.y"
1593
    { (yyval) = (yyvsp[(1) - (3)]) > (yyvsp[(3) - (3)]); }
1593
    { (yyval) = (yyvsp[(1) - (3)]) > (yyvsp[(3) - (3)]); }
1594
    break;
1594
    break;
1595
 
1595
 
1596
  case 11:
1596
  case 11:
1597
#line 167 "arith.y"
1597
#line 167 "arith.y"
1598
    { (yyval) = (yyvsp[(1) - (3)]) >= (yyvsp[(3) - (3)]); }
1598
    { (yyval) = (yyvsp[(1) - (3)]) >= (yyvsp[(3) - (3)]); }
1599
    break;
1599
    break;
1600
 
1600
 
1601
  case 12:
1601
  case 12:
1602
#line 168 "arith.y"
1602
#line 168 "arith.y"
1603
    { (yyval) = (yyvsp[(1) - (3)]) < (yyvsp[(3) - (3)]); }
1603
    { (yyval) = (yyvsp[(1) - (3)]) < (yyvsp[(3) - (3)]); }
1604
    break;
1604
    break;
1605
 
1605
 
1606
  case 13:
1606
  case 13:
1607
#line 169 "arith.y"
1607
#line 169 "arith.y"
1608
    { (yyval) = (yyvsp[(1) - (3)]) <= (yyvsp[(3) - (3)]); }
1608
    { (yyval) = (yyvsp[(1) - (3)]) <= (yyvsp[(3) - (3)]); }
1609
    break;
1609
    break;
1610
 
1610
 
1611
  case 14:
1611
  case 14:
1612
#line 170 "arith.y"
1612
#line 170 "arith.y"
1613
    { (yyval) = (yyvsp[(1) - (3)]) != (yyvsp[(3) - (3)]); }
1613
    { (yyval) = (yyvsp[(1) - (3)]) != (yyvsp[(3) - (3)]); }
1614
    break;
1614
    break;
1615
 
1615
 
1616
  case 15:
1616
  case 15:
1617
#line 171 "arith.y"
1617
#line 171 "arith.y"
1618
    { (yyval) = (yyvsp[(1) - (3)]) << (yyvsp[(3) - (3)]); }
1618
    { (yyval) = (yyvsp[(1) - (3)]) << (yyvsp[(3) - (3)]); }
1619
    break;
1619
    break;
1620
 
1620
 
1621
  case 16:
1621
  case 16:
1622
#line 172 "arith.y"
1622
#line 172 "arith.y"
1623
    { (yyval) = (yyvsp[(1) - (3)]) >> (yyvsp[(3) - (3)]); }
1623
    { (yyval) = (yyvsp[(1) - (3)]) >> (yyvsp[(3) - (3)]); }
1624
    break;
1624
    break;
1625
 
1625
 
1626
  case 17:
1626
  case 17:
1627
#line 173 "arith.y"
1627
#line 173 "arith.y"
1628
    { (yyval) = (yyvsp[(1) - (3)]) + (yyvsp[(3) - (3)]); }
1628
    { (yyval) = (yyvsp[(1) - (3)]) + (yyvsp[(3) - (3)]); }
1629
    break;
1629
    break;
1630
 
1630
 
1631
  case 18:
1631
  case 18:
1632
#line 174 "arith.y"
1632
#line 174 "arith.y"
1633
    { (yyval) = (yyvsp[(1) - (3)]) - (yyvsp[(3) - (3)]); }
1633
    { (yyval) = (yyvsp[(1) - (3)]) - (yyvsp[(3) - (3)]); }
1634
    break;
1634
    break;
1635
 
1635
 
1636
  case 19:
1636
  case 19:
1637
#line 175 "arith.y"
1637
#line 175 "arith.y"
1638
    { (yyval) = (yyvsp[(1) - (3)]) * (yyvsp[(3) - (3)]); }
1638
    { (yyval) = (yyvsp[(1) - (3)]) * (yyvsp[(3) - (3)]); }
1639
    break;
1639
    break;
1640
 
1640
 
1641
  case 20:
1641
  case 20:
1642
#line 176 "arith.y"
1642
#line 176 "arith.y"
1643
    {
1643
    {
1644
            if ((yyvsp[(3) - (3)]) == 0)
1644
            if ((yyvsp[(3) - (3)]) == 0)
1645
                yyerror("division by zero");
1645
                yyerror("division by zero");
1646
            (yyval) = (yyvsp[(1) - (3)]) / (yyvsp[(3) - (3)]);
1646
            (yyval) = (yyvsp[(1) - (3)]) / (yyvsp[(3) - (3)]);
1647
            }
1647
            }
1648
    break;
1648
    break;
1649
 
1649
 
1650
  case 21:
1650
  case 21:
1651
#line 181 "arith.y"
1651
#line 181 "arith.y"
1652
    {
1652
    {
1653
            if ((yyvsp[(3) - (3)]) == 0)
1653
            if ((yyvsp[(3) - (3)]) == 0)
1654
                yyerror("division by zero");
1654
                yyerror("division by zero");
1655
            (yyval) = (yyvsp[(1) - (3)]) % (yyvsp[(3) - (3)]);
1655
            (yyval) = (yyvsp[(1) - (3)]) % (yyvsp[(3) - (3)]);
1656
            }
1656
            }
1657
    break;
1657
    break;
1658
 
1658
 
1659
  case 22:
1659
  case 22:
1660
#line 186 "arith.y"
1660
#line 186 "arith.y"
1661
    { (yyval) = !((yyvsp[(2) - (2)])); }
1661
    { (yyval) = !((yyvsp[(2) - (2)])); }
1662
    break;
1662
    break;
1663
 
1663
 
1664
  case 23:
1664
  case 23:
1665
#line 187 "arith.y"
1665
#line 187 "arith.y"
1666
    { (yyval) = ~((yyvsp[(2) - (2)])); }
1666
    { (yyval) = ~((yyvsp[(2) - (2)])); }
1667
    break;
1667
    break;
1668
 
1668
 
1669
  case 24:
1669
  case 24:
1670
#line 188 "arith.y"
1670
#line 188 "arith.y"
1671
    { (yyval) = -((yyvsp[(2) - (2)])); }
1671
    { (yyval) = -((yyvsp[(2) - (2)])); }
1672
    break;
1672
    break;
1673
 
1673
 
1674
  case 25:
1674
  case 25:
1675
#line 189 "arith.y"
1675
#line 189 "arith.y"
1676
    { (yyval) = (yyvsp[(2) - (2)]); }
1676
    { (yyval) = (yyvsp[(2) - (2)]); }
1677
    break;
1677
    break;
1678
 
1678
 
1679
 
1679
 
1680
/* Line 1267 of yacc.c.  */
1680
/* Line 1267 of yacc.c.  */
1681
#line 1682 "y.tab.c"
1681
#line 1682 "y.tab.c"
1682
      default: break;
1682
      default: break;
1683
    }
1683
    }
1684
  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
1684
  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
1685
 
1685
 
1686
  YYPOPSTACK (yylen);
1686
  YYPOPSTACK (yylen);
1687
  yylen = 0;
1687
  yylen = 0;
1688
  YY_STACK_PRINT (yyss, yyssp);
1688
  YY_STACK_PRINT (yyss, yyssp);
1689
 
1689
 
1690
  *++yyvsp = yyval;
1690
  *++yyvsp = yyval;
1691
 
1691
 
1692
 
1692
 
1693
  /* Now `shift' the result of the reduction.  Determine what state
1693
  /* Now `shift' the result of the reduction.  Determine what state
1694
     that goes to, based on the state we popped back to and the rule
1694
     that goes to, based on the state we popped back to and the rule
1695
     number reduced by.  */
1695
     number reduced by.  */
1696
 
1696
 
1697
  yyn = yyr1[yyn];
1697
  yyn = yyr1[yyn];
1698
 
1698
 
1699
  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
1699
  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
1700
  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
1700
  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
1701
    yystate = yytable[yystate];
1701
    yystate = yytable[yystate];
1702
  else
1702
  else
1703
    yystate = yydefgoto[yyn - YYNTOKENS];
1703
    yystate = yydefgoto[yyn - YYNTOKENS];
1704
 
1704
 
1705
  goto yynewstate;
1705
  goto yynewstate;
1706
 
1706
 
1707
 
1707
 
1708
/*------------------------------------.
1708
/*------------------------------------.
1709
| yyerrlab -- here on detecting error |
1709
| yyerrlab -- here on detecting error |
1710
`------------------------------------*/
1710
`------------------------------------*/
1711
yyerrlab:
1711
yyerrlab:
1712
  /* If not already recovering from an error, report this error.  */
1712
  /* If not already recovering from an error, report this error.  */
1713
  if (!yyerrstatus)
1713
  if (!yyerrstatus)
1714
    {
1714
    {
1715
      ++yynerrs;
1715
      ++yynerrs;
1716
#if ! YYERROR_VERBOSE
1716
#if ! YYERROR_VERBOSE
1717
      yyerror (YY_("syntax error"));
1717
      yyerror (YY_("syntax error"));
1718
#else
1718
#else
1719
      {
1719
      {
1720
    YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
1720
    YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
1721
    if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
1721
    if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
1722
      {
1722
      {
1723
        YYSIZE_T yyalloc = 2 * yysize;
1723
        YYSIZE_T yyalloc = 2 * yysize;
1724
        if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
1724
        if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
1725
          yyalloc = YYSTACK_ALLOC_MAXIMUM;
1725
          yyalloc = YYSTACK_ALLOC_MAXIMUM;
1726
        if (yymsg != yymsgbuf)
1726
        if (yymsg != yymsgbuf)
1727
          YYSTACK_FREE (yymsg);
1727
          YYSTACK_FREE (yymsg);
1728
        yymsg = (char *) YYSTACK_ALLOC (yyalloc);
1728
        yymsg = (char *) YYSTACK_ALLOC (yyalloc);
1729
        if (yymsg)
1729
        if (yymsg)
1730
          yymsg_alloc = yyalloc;
1730
          yymsg_alloc = yyalloc;
1731
        else
1731
        else
1732
          {
1732
          {
1733
        yymsg = yymsgbuf;
1733
        yymsg = yymsgbuf;
1734
        yymsg_alloc = sizeof yymsgbuf;
1734
        yymsg_alloc = sizeof yymsgbuf;
1735
          }
1735
          }
1736
      }
1736
      }
1737
 
1737
 
1738
    if (0 < yysize && yysize <= yymsg_alloc)
1738
    if (0 < yysize && yysize <= yymsg_alloc)
1739
      {
1739
      {
1740
        (void) yysyntax_error (yymsg, yystate, yychar);
1740
        (void) yysyntax_error (yymsg, yystate, yychar);
1741
        yyerror (yymsg);
1741
        yyerror (yymsg);
1742
      }
1742
      }
1743
    else
1743
    else
1744
      {
1744
      {
1745
        yyerror (YY_("syntax error"));
1745
        yyerror (YY_("syntax error"));
1746
        if (yysize != 0)
1746
        if (yysize != 0)
1747
          goto yyexhaustedlab;
1747
          goto yyexhaustedlab;
1748
      }
1748
      }
1749
      }
1749
      }
1750
#endif
1750
#endif
1751
    }
1751
    }
1752
 
1752
 
1753
 
1753
 
1754
 
1754
 
1755
  if (yyerrstatus == 3)
1755
  if (yyerrstatus == 3)
1756
    {
1756
    {
1757
      /* If just tried and failed to reuse look-ahead token after an
1757
      /* If just tried and failed to reuse look-ahead token after an
1758
     error, discard it.  */
1758
     error, discard it.  */
1759
 
1759
 
1760
      if (yychar <= YYEOF)
1760
      if (yychar <= YYEOF)
1761
    {
1761
    {
1762
      /* Return failure if at end of input.  */
1762
      /* Return failure if at end of input.  */
1763
      if (yychar == YYEOF)
1763
      if (yychar == YYEOF)
1764
        YYABORT;
1764
        YYABORT;
1765
    }
1765
    }
1766
      else
1766
      else
1767
    {
1767
    {
1768
      yydestruct ("Error: discarding",
1768
      yydestruct ("Error: discarding",
1769
              yytoken, &yylval);
1769
              yytoken, &yylval);
1770
      yychar = YYEMPTY;
1770
      yychar = YYEMPTY;
1771
    }
1771
    }
1772
    }
1772
    }
1773
 
1773
 
1774
  /* Else will try to reuse look-ahead token after shifting the error
1774
  /* Else will try to reuse look-ahead token after shifting the error
1775
     token.  */
1775
     token.  */
1776
  goto yyerrlab1;
1776
  goto yyerrlab1;
1777
 
1777
 
1778
 
1778
 
1779
/*---------------------------------------------------.
1779
/*---------------------------------------------------.
1780
| yyerrorlab -- error raised explicitly by YYERROR.  |
1780
| yyerrorlab -- error raised explicitly by YYERROR.  |
1781
`---------------------------------------------------*/
1781
`---------------------------------------------------*/
1782
yyerrorlab:
1782
yyerrorlab:
1783
 
1783
 
1784
  /* Pacify compilers like GCC when the user code never invokes
1784
  /* Pacify compilers like GCC when the user code never invokes
1785
     YYERROR and the label yyerrorlab therefore never appears in user
1785
     YYERROR and the label yyerrorlab therefore never appears in user
1786
     code.  */
1786
     code.  */
1787
  if (/*CONSTCOND*/ 0)
1787
  if (/*CONSTCOND*/ 0)
1788
     goto yyerrorlab;
1788
     goto yyerrorlab;
1789
 
1789
 
1790
  /* Do not reclaim the symbols of the rule which action triggered
1790
  /* Do not reclaim the symbols of the rule which action triggered
1791
     this YYERROR.  */
1791
     this YYERROR.  */
1792
  YYPOPSTACK (yylen);
1792
  YYPOPSTACK (yylen);
1793
  yylen = 0;
1793
  yylen = 0;
1794
  YY_STACK_PRINT (yyss, yyssp);
1794
  YY_STACK_PRINT (yyss, yyssp);
1795
  yystate = *yyssp;
1795
  yystate = *yyssp;
1796
  goto yyerrlab1;
1796
  goto yyerrlab1;
1797
 
1797
 
1798
 
1798
 
1799
/*-------------------------------------------------------------.
1799
/*-------------------------------------------------------------.
1800
| yyerrlab1 -- common code for both syntax error and YYERROR.  |
1800
| yyerrlab1 -- common code for both syntax error and YYERROR.  |
1801
`-------------------------------------------------------------*/
1801
`-------------------------------------------------------------*/
1802
yyerrlab1:
1802
yyerrlab1:
1803
  yyerrstatus = 3;  /* Each real token shifted decrements this.  */
1803
  yyerrstatus = 3;  /* Each real token shifted decrements this.  */
1804
 
1804
 
1805
  for (;;)
1805
  for (;;)
1806
    {
1806
    {
1807
      yyn = yypact[yystate];
1807
      yyn = yypact[yystate];
1808
      if (yyn != YYPACT_NINF)
1808
      if (yyn != YYPACT_NINF)
1809
    {
1809
    {
1810
      yyn += YYTERROR;
1810
      yyn += YYTERROR;
1811
      if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
1811
      if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
1812
        {
1812
        {
1813
          yyn = yytable[yyn];
1813
          yyn = yytable[yyn];
1814
          if (0 < yyn)
1814
          if (0 < yyn)
1815
        break;
1815
        break;
1816
        }
1816
        }
1817
    }
1817
    }
1818
 
1818
 
1819
      /* Pop the current state because it cannot handle the error token.  */
1819
      /* Pop the current state because it cannot handle the error token.  */
1820
      if (yyssp == yyss)
1820
      if (yyssp == yyss)
1821
    YYABORT;
1821
    YYABORT;
1822
 
1822
 
1823
 
1823
 
1824
      yydestruct ("Error: popping",
1824
      yydestruct ("Error: popping",
1825
          yystos[yystate], yyvsp);
1825
          yystos[yystate], yyvsp);
1826
      YYPOPSTACK (1);
1826
      YYPOPSTACK (1);
1827
      yystate = *yyssp;
1827
      yystate = *yyssp;
1828
      YY_STACK_PRINT (yyss, yyssp);
1828
      YY_STACK_PRINT (yyss, yyssp);
1829
    }
1829
    }
1830
 
1830
 
1831
  if (yyn == YYFINAL)
1831
  if (yyn == YYFINAL)
1832
    YYACCEPT;
1832
    YYACCEPT;
1833
 
1833
 
1834
  *++yyvsp = yylval;
1834
  *++yyvsp = yylval;
1835
 
1835
 
1836
 
1836
 
1837
  /* Shift the error token.  */
1837
  /* Shift the error token.  */
1838
  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
1838
  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
1839
 
1839
 
1840
  yystate = yyn;
1840
  yystate = yyn;
1841
  goto yynewstate;
1841
  goto yynewstate;
1842
 
1842
 
1843
 
1843
 
1844
/*-------------------------------------.
1844
/*-------------------------------------.
1845
| yyacceptlab -- YYACCEPT comes here.  |
1845
| yyacceptlab -- YYACCEPT comes here.  |
1846
`-------------------------------------*/
1846
`-------------------------------------*/
1847
yyacceptlab:
1847
yyacceptlab:
1848
  yyresult = 0;
1848
  yyresult = 0;
1849
  goto yyreturn;
1849
  goto yyreturn;
1850
 
1850
 
1851
/*-----------------------------------.
1851
/*-----------------------------------.
1852
| yyabortlab -- YYABORT comes here.  |
1852
| yyabortlab -- YYABORT comes here.  |
1853
`-----------------------------------*/
1853
`-----------------------------------*/
1854
yyabortlab:
1854
yyabortlab:
1855
  yyresult = 1;
1855
  yyresult = 1;
1856
  goto yyreturn;
1856
  goto yyreturn;
1857
 
1857
 
1858
#ifndef yyoverflow
1858
#ifndef yyoverflow
1859
/*-------------------------------------------------.
1859
/*-------------------------------------------------.
1860
| yyexhaustedlab -- memory exhaustion comes here.  |
1860
| yyexhaustedlab -- memory exhaustion comes here.  |
1861
`-------------------------------------------------*/
1861
`-------------------------------------------------*/
1862
yyexhaustedlab:
1862
yyexhaustedlab:
1863
  yyerror (YY_("memory exhausted"));
1863
  yyerror (YY_("memory exhausted"));
1864
  yyresult = 2;
1864
  yyresult = 2;
1865
  /* Fall through.  */
1865
  /* Fall through.  */
1866
#endif
1866
#endif
1867
 
1867
 
1868
yyreturn:
1868
yyreturn:
1869
  if (yychar != YYEOF && yychar != YYEMPTY)
1869
  if (yychar != YYEOF && yychar != YYEMPTY)
1870
     yydestruct ("Cleanup: discarding lookahead",
1870
     yydestruct ("Cleanup: discarding lookahead",
1871
         yytoken, &yylval);
1871
         yytoken, &yylval);
1872
  /* Do not reclaim the symbols of the rule which action triggered
1872
  /* Do not reclaim the symbols of the rule which action triggered
1873
     this YYABORT or YYACCEPT.  */
1873
     this YYABORT or YYACCEPT.  */
1874
  YYPOPSTACK (yylen);
1874
  YYPOPSTACK (yylen);
1875
  YY_STACK_PRINT (yyss, yyssp);
1875
  YY_STACK_PRINT (yyss, yyssp);
1876
  while (yyssp != yyss)
1876
  while (yyssp != yyss)
1877
    {
1877
    {
1878
      yydestruct ("Cleanup: popping",
1878
      yydestruct ("Cleanup: popping",
1879
          yystos[*yyssp], yyvsp);
1879
          yystos[*yyssp], yyvsp);
1880
      YYPOPSTACK (1);
1880
      YYPOPSTACK (1);
1881
    }
1881
    }
1882
#ifndef yyoverflow
1882
#ifndef yyoverflow
1883
  if (yyss != yyssa)
1883
  if (yyss != yyssa)
1884
    YYSTACK_FREE (yyss);
1884
    YYSTACK_FREE (yyss);
1885
#endif
1885
#endif
1886
#if YYERROR_VERBOSE
1886
#if YYERROR_VERBOSE
1887
  if (yymsg != yymsgbuf)
1887
  if (yymsg != yymsgbuf)
1888
    YYSTACK_FREE (yymsg);
1888
    YYSTACK_FREE (yymsg);
1889
#endif
1889
#endif
1890
  /* Make sure YYID is used.  */
1890
  /* Make sure YYID is used.  */
1891
  return YYID (yyresult);
1891
  return YYID (yyresult);
1892
}
1892
}
1893
 
1893
 
1894
 
1894
 
1895
#line 192 "arith.y"
1895
#line 192 "arith.y"
1896
 
1896
 
1897
void
1897
void
1898
yyerror(s)
1898
yyerror(s)
1899
    const char *s;
1899
    const char *s;
1900
{
1900
{
1901
 
1901
 
1902
    yyclearin;
1902
    yyclearin;
1903
    arith_lex_reset();  /* reprime lex */
1903
    arith_lex_reset();  /* reprime lex */
1904
    error("arithmetic expression: %s: \"%s\"", s, arith_startbuf);
1904
    error("arithmetic expression: %s: \"%s\"", s, arith_startbuf);
1905
    /* NOTREACHED */
1905
    /* NOTREACHED */
1906
}
1906
}
1907
 
1907
 
1908
 
1908