xref: /dflybsd-src/contrib/flex/src/parse.c (revision 388e4ddaf1c230f115961bdb4bad6a8d3e017c93)
1*d9805213SSascha Wildner /* A Bison parser, made by GNU Bison 3.0.4.  */
2*d9805213SSascha Wildner 
3*d9805213SSascha Wildner /* Bison implementation for Yacc-like parsers in C
4*d9805213SSascha Wildner 
5*d9805213SSascha Wildner    Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
6*d9805213SSascha Wildner 
7*d9805213SSascha Wildner    This program is free software: you can redistribute it and/or modify
8*d9805213SSascha Wildner    it under the terms of the GNU General Public License as published by
9*d9805213SSascha Wildner    the Free Software Foundation, either version 3 of the License, or
10*d9805213SSascha Wildner    (at your option) any later version.
11*d9805213SSascha Wildner 
12*d9805213SSascha Wildner    This program is distributed in the hope that it will be useful,
13*d9805213SSascha Wildner    but WITHOUT ANY WARRANTY; without even the implied warranty of
14*d9805213SSascha Wildner    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15*d9805213SSascha Wildner    GNU General Public License for more details.
16*d9805213SSascha Wildner 
17*d9805213SSascha Wildner    You should have received a copy of the GNU General Public License
18*d9805213SSascha Wildner    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19*d9805213SSascha Wildner 
20*d9805213SSascha Wildner /* As a special exception, you may create a larger work that contains
21*d9805213SSascha Wildner    part or all of the Bison parser skeleton and distribute that work
22*d9805213SSascha Wildner    under terms of your choice, so long as that work isn't itself a
23*d9805213SSascha Wildner    parser generator using the skeleton or a modified version thereof
24*d9805213SSascha Wildner    as a parser skeleton.  Alternatively, if you modify or redistribute
25*d9805213SSascha Wildner    the parser skeleton itself, you may (at your option) remove this
26*d9805213SSascha Wildner    special exception, which will cause the skeleton and the resulting
27*d9805213SSascha Wildner    Bison output files to be licensed under the GNU General Public
28*d9805213SSascha Wildner    License without this special exception.
29*d9805213SSascha Wildner 
30*d9805213SSascha Wildner    This special exception was added by the Free Software Foundation in
31*d9805213SSascha Wildner    version 2.2 of Bison.  */
32*d9805213SSascha Wildner 
33*d9805213SSascha Wildner /* C LALR(1) parser skeleton written by Richard Stallman, by
34*d9805213SSascha Wildner    simplifying the original so-called "semantic" parser.  */
35*d9805213SSascha Wildner 
36*d9805213SSascha Wildner /* All symbols defined below should begin with yy or YY, to avoid
37*d9805213SSascha Wildner    infringing on user name space.  This should be done even for local
38*d9805213SSascha Wildner    variables, as they might otherwise be expanded by user macros.
39*d9805213SSascha Wildner    There are some unavoidable exceptions within include files to
40*d9805213SSascha Wildner    define necessary library symbols; they are noted "INFRINGES ON
41*d9805213SSascha Wildner    USER NAME SPACE" below.  */
42*d9805213SSascha Wildner 
43*d9805213SSascha Wildner /* Identify Bison output.  */
44*d9805213SSascha Wildner #define YYBISON 1
45*d9805213SSascha Wildner 
46*d9805213SSascha Wildner /* Bison version.  */
47*d9805213SSascha Wildner #define YYBISON_VERSION "3.0.4"
48*d9805213SSascha Wildner 
49*d9805213SSascha Wildner /* Skeleton name.  */
50*d9805213SSascha Wildner #define YYSKELETON_NAME "yacc.c"
51*d9805213SSascha Wildner 
52*d9805213SSascha Wildner /* Pure parsers.  */
53*d9805213SSascha Wildner #define YYPURE 0
54*d9805213SSascha Wildner 
55*d9805213SSascha Wildner /* Push parsers.  */
56*d9805213SSascha Wildner #define YYPUSH 0
57*d9805213SSascha Wildner 
58*d9805213SSascha Wildner /* Pull parsers.  */
59*d9805213SSascha Wildner #define YYPULL 1
60*d9805213SSascha Wildner 
61*d9805213SSascha Wildner 
62*d9805213SSascha Wildner 
63*d9805213SSascha Wildner 
64*d9805213SSascha Wildner /* Copy the first part of user declarations.  */
65*d9805213SSascha Wildner #line 34 "parse.y" /* yacc.c:339  */
66*d9805213SSascha Wildner 
67*d9805213SSascha Wildner /*  Copyright (c) 1990 The Regents of the University of California. */
68*d9805213SSascha Wildner /*  All rights reserved. */
69*d9805213SSascha Wildner 
70*d9805213SSascha Wildner /*  This code is derived from software contributed to Berkeley by */
71*d9805213SSascha Wildner /*  Vern Paxson. */
72*d9805213SSascha Wildner 
73*d9805213SSascha Wildner /*  The United States Government has rights in this work pursuant */
74*d9805213SSascha Wildner /*  to contract no. DE-AC03-76SF00098 between the United States */
75*d9805213SSascha Wildner /*  Department of Energy and the University of California. */
76*d9805213SSascha Wildner 
77*d9805213SSascha Wildner /*  This file is part of flex. */
78*d9805213SSascha Wildner 
79*d9805213SSascha Wildner /*  Redistribution and use in source and binary forms, with or without */
80*d9805213SSascha Wildner /*  modification, are permitted provided that the following conditions */
81*d9805213SSascha Wildner /*  are met: */
82*d9805213SSascha Wildner 
83*d9805213SSascha Wildner /*  1. Redistributions of source code must retain the above copyright */
84*d9805213SSascha Wildner /*     notice, this list of conditions and the following disclaimer. */
85*d9805213SSascha Wildner /*  2. Redistributions in binary form must reproduce the above copyright */
86*d9805213SSascha Wildner /*     notice, this list of conditions and the following disclaimer in the */
87*d9805213SSascha Wildner /*     documentation and/or other materials provided with the distribution. */
88*d9805213SSascha Wildner 
89*d9805213SSascha Wildner /*  Neither the name of the University nor the names of its contributors */
90*d9805213SSascha Wildner /*  may be used to endorse or promote products derived from this software */
91*d9805213SSascha Wildner /*  without specific prior written permission. */
92*d9805213SSascha Wildner 
93*d9805213SSascha Wildner /*  THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR */
94*d9805213SSascha Wildner /*  IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED */
95*d9805213SSascha Wildner /*  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR */
96*d9805213SSascha Wildner /*  PURPOSE. */
97*d9805213SSascha Wildner 
98*d9805213SSascha Wildner #include "flexdef.h"
99*d9805213SSascha Wildner #include "tables.h"
100*d9805213SSascha Wildner 
101*d9805213SSascha Wildner int pat, scnum, eps, headcnt, trailcnt, lastchar, i, rulelen;
102*d9805213SSascha Wildner int trlcontxt, xcluflg, currccl, cclsorted, varlength, variable_trail_rule;
103*d9805213SSascha Wildner 
104*d9805213SSascha Wildner int *scon_stk;
105*d9805213SSascha Wildner int scon_stk_ptr;
106*d9805213SSascha Wildner 
107*d9805213SSascha Wildner static int madeany = false;  /* whether we've made the '.' character class */
108*d9805213SSascha Wildner static int ccldot, cclany;
109*d9805213SSascha Wildner int previous_continued_action;	/* whether the previous rule's action was '|' */
110*d9805213SSascha Wildner 
111*d9805213SSascha Wildner #define format_warn3(fmt, a1, a2) \
112*d9805213SSascha Wildner 	do{ \
113*d9805213SSascha Wildner         char fw3_msg[MAXLINE];\
114*d9805213SSascha Wildner         snprintf( fw3_msg, MAXLINE,(fmt), (a1), (a2) );\
115*d9805213SSascha Wildner         lwarn( fw3_msg );\
116*d9805213SSascha Wildner 	}while(0)
117*d9805213SSascha Wildner 
118*d9805213SSascha Wildner /* Expand a POSIX character class expression. */
119*d9805213SSascha Wildner #define CCL_EXPR(func) \
120*d9805213SSascha Wildner 	do{ \
121*d9805213SSascha Wildner 	int c; \
122*d9805213SSascha Wildner 	for ( c = 0; c < csize; ++c ) \
123*d9805213SSascha Wildner 		if ( isascii(c) && func(c) ) \
124*d9805213SSascha Wildner 			ccladd( currccl, c ); \
125*d9805213SSascha Wildner 	}while(0)
126*d9805213SSascha Wildner 
127*d9805213SSascha Wildner /* negated class */
128*d9805213SSascha Wildner #define CCL_NEG_EXPR(func) \
129*d9805213SSascha Wildner 	do{ \
130*d9805213SSascha Wildner 	int c; \
131*d9805213SSascha Wildner 	for ( c = 0; c < csize; ++c ) \
132*d9805213SSascha Wildner 		if ( !func(c) ) \
133*d9805213SSascha Wildner 			ccladd( currccl, c ); \
134*d9805213SSascha Wildner 	}while(0)
135*d9805213SSascha Wildner 
136*d9805213SSascha Wildner /* While POSIX defines isblank(), it's not ANSI C. */
137*d9805213SSascha Wildner #define IS_BLANK(c) ((c) == ' ' || (c) == '\t')
138*d9805213SSascha Wildner 
139*d9805213SSascha Wildner /* On some over-ambitious machines, such as DEC Alpha's, the default
140*d9805213SSascha Wildner  * token type is "long" instead of "int"; this leads to problems with
141*d9805213SSascha Wildner  * declaring yylval in flexdef.h.  But so far, all the yacc's I've seen
142*d9805213SSascha Wildner  * wrap their definitions of YYSTYPE with "#ifndef YYSTYPE"'s, so the
143*d9805213SSascha Wildner  * following should ensure that the default token type is "int".
144*d9805213SSascha Wildner  */
145*d9805213SSascha Wildner #define YYSTYPE int
146*d9805213SSascha Wildner 
147*d9805213SSascha Wildner 
148*d9805213SSascha Wildner #line 149 "parse.c" /* yacc.c:339  */
149*d9805213SSascha Wildner 
150*d9805213SSascha Wildner # ifndef YY_NULLPTR
151*d9805213SSascha Wildner #  if defined __cplusplus && 201103L <= __cplusplus
152*d9805213SSascha Wildner #   define YY_NULLPTR nullptr
153*d9805213SSascha Wildner #  else
154*d9805213SSascha Wildner #   define YY_NULLPTR 0
155*d9805213SSascha Wildner #  endif
156*d9805213SSascha Wildner # endif
157*d9805213SSascha Wildner 
158*d9805213SSascha Wildner /* Enabling verbose error messages.  */
159*d9805213SSascha Wildner #ifdef YYERROR_VERBOSE
160*d9805213SSascha Wildner # undef YYERROR_VERBOSE
161*d9805213SSascha Wildner # define YYERROR_VERBOSE 1
162*d9805213SSascha Wildner #else
163*d9805213SSascha Wildner # define YYERROR_VERBOSE 0
164*d9805213SSascha Wildner #endif
165*d9805213SSascha Wildner 
166*d9805213SSascha Wildner /* In a future release of Bison, this section will be replaced
167*d9805213SSascha Wildner    by #include "y.tab.h".  */
168*d9805213SSascha Wildner #ifndef YY_YY_PARSE_H_INCLUDED
169*d9805213SSascha Wildner # define YY_YY_PARSE_H_INCLUDED
170*d9805213SSascha Wildner /* Debug traces.  */
171*d9805213SSascha Wildner #ifndef YYDEBUG
172*d9805213SSascha Wildner # define YYDEBUG 0
173*d9805213SSascha Wildner #endif
174*d9805213SSascha Wildner #if YYDEBUG
175*d9805213SSascha Wildner extern int yydebug;
176*d9805213SSascha Wildner #endif
177*d9805213SSascha Wildner 
178*d9805213SSascha Wildner /* Token type.  */
179*d9805213SSascha Wildner #ifndef YYTOKENTYPE
180*d9805213SSascha Wildner # define YYTOKENTYPE
181*d9805213SSascha Wildner   enum yytokentype
182*d9805213SSascha Wildner   {
183*d9805213SSascha Wildner     CHAR = 258,
184*d9805213SSascha Wildner     NUMBER = 259,
185*d9805213SSascha Wildner     SECTEND = 260,
186*d9805213SSascha Wildner     SCDECL = 261,
187*d9805213SSascha Wildner     XSCDECL = 262,
188*d9805213SSascha Wildner     NAME = 263,
189*d9805213SSascha Wildner     PREVCCL = 264,
190*d9805213SSascha Wildner     EOF_OP = 265,
191*d9805213SSascha Wildner     TOK_OPTION = 266,
192*d9805213SSascha Wildner     TOK_OUTFILE = 267,
193*d9805213SSascha Wildner     TOK_PREFIX = 268,
194*d9805213SSascha Wildner     TOK_YYCLASS = 269,
195*d9805213SSascha Wildner     TOK_HEADER_FILE = 270,
196*d9805213SSascha Wildner     TOK_EXTRA_TYPE = 271,
197*d9805213SSascha Wildner     TOK_TABLES_FILE = 272,
198*d9805213SSascha Wildner     CCE_ALNUM = 273,
199*d9805213SSascha Wildner     CCE_ALPHA = 274,
200*d9805213SSascha Wildner     CCE_BLANK = 275,
201*d9805213SSascha Wildner     CCE_CNTRL = 276,
202*d9805213SSascha Wildner     CCE_DIGIT = 277,
203*d9805213SSascha Wildner     CCE_GRAPH = 278,
204*d9805213SSascha Wildner     CCE_LOWER = 279,
205*d9805213SSascha Wildner     CCE_PRINT = 280,
206*d9805213SSascha Wildner     CCE_PUNCT = 281,
207*d9805213SSascha Wildner     CCE_SPACE = 282,
208*d9805213SSascha Wildner     CCE_UPPER = 283,
209*d9805213SSascha Wildner     CCE_XDIGIT = 284,
210*d9805213SSascha Wildner     CCE_NEG_ALNUM = 285,
211*d9805213SSascha Wildner     CCE_NEG_ALPHA = 286,
212*d9805213SSascha Wildner     CCE_NEG_BLANK = 287,
213*d9805213SSascha Wildner     CCE_NEG_CNTRL = 288,
214*d9805213SSascha Wildner     CCE_NEG_DIGIT = 289,
215*d9805213SSascha Wildner     CCE_NEG_GRAPH = 290,
216*d9805213SSascha Wildner     CCE_NEG_LOWER = 291,
217*d9805213SSascha Wildner     CCE_NEG_PRINT = 292,
218*d9805213SSascha Wildner     CCE_NEG_PUNCT = 293,
219*d9805213SSascha Wildner     CCE_NEG_SPACE = 294,
220*d9805213SSascha Wildner     CCE_NEG_UPPER = 295,
221*d9805213SSascha Wildner     CCE_NEG_XDIGIT = 296,
222*d9805213SSascha Wildner     CCL_OP_DIFF = 297,
223*d9805213SSascha Wildner     CCL_OP_UNION = 298,
224*d9805213SSascha Wildner     BEGIN_REPEAT_POSIX = 299,
225*d9805213SSascha Wildner     END_REPEAT_POSIX = 300,
226*d9805213SSascha Wildner     BEGIN_REPEAT_FLEX = 301,
227*d9805213SSascha Wildner     END_REPEAT_FLEX = 302
228*d9805213SSascha Wildner   };
229*d9805213SSascha Wildner #endif
230*d9805213SSascha Wildner /* Tokens.  */
231*d9805213SSascha Wildner #define CHAR 258
232*d9805213SSascha Wildner #define NUMBER 259
233*d9805213SSascha Wildner #define SECTEND 260
234*d9805213SSascha Wildner #define SCDECL 261
235*d9805213SSascha Wildner #define XSCDECL 262
236*d9805213SSascha Wildner #define NAME 263
237*d9805213SSascha Wildner #define PREVCCL 264
238*d9805213SSascha Wildner #define EOF_OP 265
239*d9805213SSascha Wildner #define TOK_OPTION 266
240*d9805213SSascha Wildner #define TOK_OUTFILE 267
241*d9805213SSascha Wildner #define TOK_PREFIX 268
242*d9805213SSascha Wildner #define TOK_YYCLASS 269
243*d9805213SSascha Wildner #define TOK_HEADER_FILE 270
244*d9805213SSascha Wildner #define TOK_EXTRA_TYPE 271
245*d9805213SSascha Wildner #define TOK_TABLES_FILE 272
246*d9805213SSascha Wildner #define CCE_ALNUM 273
247*d9805213SSascha Wildner #define CCE_ALPHA 274
248*d9805213SSascha Wildner #define CCE_BLANK 275
249*d9805213SSascha Wildner #define CCE_CNTRL 276
250*d9805213SSascha Wildner #define CCE_DIGIT 277
251*d9805213SSascha Wildner #define CCE_GRAPH 278
252*d9805213SSascha Wildner #define CCE_LOWER 279
253*d9805213SSascha Wildner #define CCE_PRINT 280
254*d9805213SSascha Wildner #define CCE_PUNCT 281
255*d9805213SSascha Wildner #define CCE_SPACE 282
256*d9805213SSascha Wildner #define CCE_UPPER 283
257*d9805213SSascha Wildner #define CCE_XDIGIT 284
258*d9805213SSascha Wildner #define CCE_NEG_ALNUM 285
259*d9805213SSascha Wildner #define CCE_NEG_ALPHA 286
260*d9805213SSascha Wildner #define CCE_NEG_BLANK 287
261*d9805213SSascha Wildner #define CCE_NEG_CNTRL 288
262*d9805213SSascha Wildner #define CCE_NEG_DIGIT 289
263*d9805213SSascha Wildner #define CCE_NEG_GRAPH 290
264*d9805213SSascha Wildner #define CCE_NEG_LOWER 291
265*d9805213SSascha Wildner #define CCE_NEG_PRINT 292
266*d9805213SSascha Wildner #define CCE_NEG_PUNCT 293
267*d9805213SSascha Wildner #define CCE_NEG_SPACE 294
268*d9805213SSascha Wildner #define CCE_NEG_UPPER 295
269*d9805213SSascha Wildner #define CCE_NEG_XDIGIT 296
270*d9805213SSascha Wildner #define CCL_OP_DIFF 297
271*d9805213SSascha Wildner #define CCL_OP_UNION 298
272*d9805213SSascha Wildner #define BEGIN_REPEAT_POSIX 299
273*d9805213SSascha Wildner #define END_REPEAT_POSIX 300
274*d9805213SSascha Wildner #define BEGIN_REPEAT_FLEX 301
275*d9805213SSascha Wildner #define END_REPEAT_FLEX 302
276*d9805213SSascha Wildner 
277*d9805213SSascha Wildner /* Value type.  */
278*d9805213SSascha Wildner #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
279*d9805213SSascha Wildner typedef int YYSTYPE;
280*d9805213SSascha Wildner # define YYSTYPE_IS_TRIVIAL 1
281*d9805213SSascha Wildner # define YYSTYPE_IS_DECLARED 1
282*d9805213SSascha Wildner #endif
283*d9805213SSascha Wildner 
284*d9805213SSascha Wildner 
285*d9805213SSascha Wildner extern YYSTYPE yylval;
286*d9805213SSascha Wildner 
287*d9805213SSascha Wildner int yyparse (void);
288*d9805213SSascha Wildner 
289*d9805213SSascha Wildner #endif /* !YY_YY_PARSE_H_INCLUDED  */
290*d9805213SSascha Wildner 
291*d9805213SSascha Wildner /* Copy the second part of user declarations.  */
292*d9805213SSascha Wildner 
293*d9805213SSascha Wildner #line 294 "parse.c" /* yacc.c:358  */
294*d9805213SSascha Wildner 
295*d9805213SSascha Wildner #ifdef short
296*d9805213SSascha Wildner # undef short
297*d9805213SSascha Wildner #endif
298*d9805213SSascha Wildner 
299*d9805213SSascha Wildner #ifdef YYTYPE_UINT8
300*d9805213SSascha Wildner typedef YYTYPE_UINT8 yytype_uint8;
301*d9805213SSascha Wildner #else
302*d9805213SSascha Wildner typedef unsigned char yytype_uint8;
303*d9805213SSascha Wildner #endif
304*d9805213SSascha Wildner 
305*d9805213SSascha Wildner #ifdef YYTYPE_INT8
306*d9805213SSascha Wildner typedef YYTYPE_INT8 yytype_int8;
307*d9805213SSascha Wildner #else
308*d9805213SSascha Wildner typedef signed char yytype_int8;
309*d9805213SSascha Wildner #endif
310*d9805213SSascha Wildner 
311*d9805213SSascha Wildner #ifdef YYTYPE_UINT16
312*d9805213SSascha Wildner typedef YYTYPE_UINT16 yytype_uint16;
313*d9805213SSascha Wildner #else
314*d9805213SSascha Wildner typedef unsigned short int yytype_uint16;
315*d9805213SSascha Wildner #endif
316*d9805213SSascha Wildner 
317*d9805213SSascha Wildner #ifdef YYTYPE_INT16
318*d9805213SSascha Wildner typedef YYTYPE_INT16 yytype_int16;
319*d9805213SSascha Wildner #else
320*d9805213SSascha Wildner typedef short int yytype_int16;
321*d9805213SSascha Wildner #endif
322*d9805213SSascha Wildner 
323*d9805213SSascha Wildner #ifndef YYSIZE_T
324*d9805213SSascha Wildner # ifdef __SIZE_TYPE__
325*d9805213SSascha Wildner #  define YYSIZE_T __SIZE_TYPE__
326*d9805213SSascha Wildner # elif defined size_t
327*d9805213SSascha Wildner #  define YYSIZE_T size_t
328*d9805213SSascha Wildner # elif ! defined YYSIZE_T
329*d9805213SSascha Wildner #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
330*d9805213SSascha Wildner #  define YYSIZE_T size_t
331*d9805213SSascha Wildner # else
332*d9805213SSascha Wildner #  define YYSIZE_T unsigned int
333*d9805213SSascha Wildner # endif
334*d9805213SSascha Wildner #endif
335*d9805213SSascha Wildner 
336*d9805213SSascha Wildner #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
337*d9805213SSascha Wildner 
338*d9805213SSascha Wildner #ifndef YY_
339*d9805213SSascha Wildner # if defined YYENABLE_NLS && YYENABLE_NLS
340*d9805213SSascha Wildner #  if ENABLE_NLS
341*d9805213SSascha Wildner #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
342*d9805213SSascha Wildner #   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
343*d9805213SSascha Wildner #  endif
344*d9805213SSascha Wildner # endif
345*d9805213SSascha Wildner # ifndef YY_
346*d9805213SSascha Wildner #  define YY_(Msgid) Msgid
347*d9805213SSascha Wildner # endif
348*d9805213SSascha Wildner #endif
349*d9805213SSascha Wildner 
350*d9805213SSascha Wildner #ifndef YY_ATTRIBUTE
351*d9805213SSascha Wildner # if (defined __GNUC__                                               \
352*d9805213SSascha Wildner       && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__)))  \
353*d9805213SSascha Wildner      || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
354*d9805213SSascha Wildner #  define YY_ATTRIBUTE(Spec) __attribute__(Spec)
355*d9805213SSascha Wildner # else
356*d9805213SSascha Wildner #  define YY_ATTRIBUTE(Spec) /* empty */
357*d9805213SSascha Wildner # endif
358*d9805213SSascha Wildner #endif
359*d9805213SSascha Wildner 
360*d9805213SSascha Wildner #ifndef YY_ATTRIBUTE_PURE
361*d9805213SSascha Wildner # define YY_ATTRIBUTE_PURE   YY_ATTRIBUTE ((__pure__))
362*d9805213SSascha Wildner #endif
363*d9805213SSascha Wildner 
364*d9805213SSascha Wildner #ifndef YY_ATTRIBUTE_UNUSED
365*d9805213SSascha Wildner # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
366*d9805213SSascha Wildner #endif
367*d9805213SSascha Wildner 
368*d9805213SSascha Wildner #if !defined _Noreturn \
369*d9805213SSascha Wildner      && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
370*d9805213SSascha Wildner # if defined _MSC_VER && 1200 <= _MSC_VER
371*d9805213SSascha Wildner #  define _Noreturn __declspec (noreturn)
372*d9805213SSascha Wildner # else
373*d9805213SSascha Wildner #  define _Noreturn YY_ATTRIBUTE ((__noreturn__))
374*d9805213SSascha Wildner # endif
375*d9805213SSascha Wildner #endif
376*d9805213SSascha Wildner 
377*d9805213SSascha Wildner /* Suppress unused-variable warnings by "using" E.  */
378*d9805213SSascha Wildner #if ! defined lint || defined __GNUC__
379*d9805213SSascha Wildner # define YYUSE(E) ((void) (E))
380*d9805213SSascha Wildner #else
381*d9805213SSascha Wildner # define YYUSE(E) /* empty */
382*d9805213SSascha Wildner #endif
383*d9805213SSascha Wildner 
384*d9805213SSascha Wildner #if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
385*d9805213SSascha Wildner /* Suppress an incorrect diagnostic about yylval being uninitialized.  */
386*d9805213SSascha Wildner # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
387*d9805213SSascha Wildner     _Pragma ("GCC diagnostic push") \
388*d9805213SSascha Wildner     _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
389*d9805213SSascha Wildner     _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
390*d9805213SSascha Wildner # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
391*d9805213SSascha Wildner     _Pragma ("GCC diagnostic pop")
392*d9805213SSascha Wildner #else
393*d9805213SSascha Wildner # define YY_INITIAL_VALUE(Value) Value
394*d9805213SSascha Wildner #endif
395*d9805213SSascha Wildner #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
396*d9805213SSascha Wildner # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
397*d9805213SSascha Wildner # define YY_IGNORE_MAYBE_UNINITIALIZED_END
398*d9805213SSascha Wildner #endif
399*d9805213SSascha Wildner #ifndef YY_INITIAL_VALUE
400*d9805213SSascha Wildner # define YY_INITIAL_VALUE(Value) /* Nothing. */
401*d9805213SSascha Wildner #endif
402*d9805213SSascha Wildner 
403*d9805213SSascha Wildner 
404*d9805213SSascha Wildner #if ! defined yyoverflow || YYERROR_VERBOSE
405*d9805213SSascha Wildner 
406*d9805213SSascha Wildner /* The parser invokes alloca or malloc; define the necessary symbols.  */
407*d9805213SSascha Wildner 
408*d9805213SSascha Wildner # ifdef YYSTACK_USE_ALLOCA
409*d9805213SSascha Wildner #  if YYSTACK_USE_ALLOCA
410*d9805213SSascha Wildner #   ifdef __GNUC__
411*d9805213SSascha Wildner #    define YYSTACK_ALLOC __builtin_alloca
412*d9805213SSascha Wildner #   elif defined __BUILTIN_VA_ARG_INCR
413*d9805213SSascha Wildner #    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
414*d9805213SSascha Wildner #   elif defined _AIX
415*d9805213SSascha Wildner #    define YYSTACK_ALLOC __alloca
416*d9805213SSascha Wildner #   elif defined _MSC_VER
417*d9805213SSascha Wildner #    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
418*d9805213SSascha Wildner #    define alloca _alloca
419*d9805213SSascha Wildner #   else
420*d9805213SSascha Wildner #    define YYSTACK_ALLOC alloca
421*d9805213SSascha Wildner #    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
422*d9805213SSascha Wildner #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
423*d9805213SSascha Wildner       /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
424*d9805213SSascha Wildner #     ifndef EXIT_SUCCESS
425*d9805213SSascha Wildner #      define EXIT_SUCCESS 0
426*d9805213SSascha Wildner #     endif
427*d9805213SSascha Wildner #    endif
428*d9805213SSascha Wildner #   endif
429*d9805213SSascha Wildner #  endif
430*d9805213SSascha Wildner # endif
431*d9805213SSascha Wildner 
432*d9805213SSascha Wildner # ifdef YYSTACK_ALLOC
433*d9805213SSascha Wildner    /* Pacify GCC's 'empty if-body' warning.  */
434*d9805213SSascha Wildner #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
435*d9805213SSascha Wildner #  ifndef YYSTACK_ALLOC_MAXIMUM
436*d9805213SSascha Wildner     /* The OS might guarantee only one guard page at the bottom of the stack,
437*d9805213SSascha Wildner        and a page size can be as small as 4096 bytes.  So we cannot safely
438*d9805213SSascha Wildner        invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
439*d9805213SSascha Wildner        to allow for a few compiler-allocated temporary stack slots.  */
440*d9805213SSascha Wildner #   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
441*d9805213SSascha Wildner #  endif
442*d9805213SSascha Wildner # else
443*d9805213SSascha Wildner #  define YYSTACK_ALLOC YYMALLOC
444*d9805213SSascha Wildner #  define YYSTACK_FREE YYFREE
445*d9805213SSascha Wildner #  ifndef YYSTACK_ALLOC_MAXIMUM
446*d9805213SSascha Wildner #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
447*d9805213SSascha Wildner #  endif
448*d9805213SSascha Wildner #  if (defined __cplusplus && ! defined EXIT_SUCCESS \
449*d9805213SSascha Wildner        && ! ((defined YYMALLOC || defined malloc) \
450*d9805213SSascha Wildner              && (defined YYFREE || defined free)))
451*d9805213SSascha Wildner #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
452*d9805213SSascha Wildner #   ifndef EXIT_SUCCESS
453*d9805213SSascha Wildner #    define EXIT_SUCCESS 0
454*d9805213SSascha Wildner #   endif
455*d9805213SSascha Wildner #  endif
456*d9805213SSascha Wildner #  ifndef YYMALLOC
457*d9805213SSascha Wildner #   define YYMALLOC malloc
458*d9805213SSascha Wildner #   if ! defined malloc && ! defined EXIT_SUCCESS
459*d9805213SSascha Wildner void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
460*d9805213SSascha Wildner #   endif
461*d9805213SSascha Wildner #  endif
462*d9805213SSascha Wildner #  ifndef YYFREE
463*d9805213SSascha Wildner #   define YYFREE free
464*d9805213SSascha Wildner #   if ! defined free && ! defined EXIT_SUCCESS
465*d9805213SSascha Wildner void free (void *); /* INFRINGES ON USER NAME SPACE */
466*d9805213SSascha Wildner #   endif
467*d9805213SSascha Wildner #  endif
468*d9805213SSascha Wildner # endif
469*d9805213SSascha Wildner #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
470*d9805213SSascha Wildner 
471*d9805213SSascha Wildner 
472*d9805213SSascha Wildner #if (! defined yyoverflow \
473*d9805213SSascha Wildner      && (! defined __cplusplus \
474*d9805213SSascha Wildner          || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
475*d9805213SSascha Wildner 
476*d9805213SSascha Wildner /* A type that is properly aligned for any stack member.  */
477*d9805213SSascha Wildner union yyalloc
478*d9805213SSascha Wildner {
479*d9805213SSascha Wildner   yytype_int16 yyss_alloc;
480*d9805213SSascha Wildner   YYSTYPE yyvs_alloc;
481*d9805213SSascha Wildner };
482*d9805213SSascha Wildner 
483*d9805213SSascha Wildner /* The size of the maximum gap between one aligned stack and the next.  */
484*d9805213SSascha Wildner # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
485*d9805213SSascha Wildner 
486*d9805213SSascha Wildner /* The size of an array large to enough to hold all stacks, each with
487*d9805213SSascha Wildner    N elements.  */
488*d9805213SSascha Wildner # define YYSTACK_BYTES(N) \
489*d9805213SSascha Wildner      ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
490*d9805213SSascha Wildner       + YYSTACK_GAP_MAXIMUM)
491*d9805213SSascha Wildner 
492*d9805213SSascha Wildner # define YYCOPY_NEEDED 1
493*d9805213SSascha Wildner 
494*d9805213SSascha Wildner /* Relocate STACK from its old location to the new one.  The
495*d9805213SSascha Wildner    local variables YYSIZE and YYSTACKSIZE give the old and new number of
496*d9805213SSascha Wildner    elements in the stack, and YYPTR gives the new location of the
497*d9805213SSascha Wildner    stack.  Advance YYPTR to a properly aligned location for the next
498*d9805213SSascha Wildner    stack.  */
499*d9805213SSascha Wildner # define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
500*d9805213SSascha Wildner     do                                                                  \
501*d9805213SSascha Wildner       {                                                                 \
502*d9805213SSascha Wildner         YYSIZE_T yynewbytes;                                            \
503*d9805213SSascha Wildner         YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
504*d9805213SSascha Wildner         Stack = &yyptr->Stack_alloc;                                    \
505*d9805213SSascha Wildner         yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
506*d9805213SSascha Wildner         yyptr += yynewbytes / sizeof (*yyptr);                          \
507*d9805213SSascha Wildner       }                                                                 \
508*d9805213SSascha Wildner     while (0)
509*d9805213SSascha Wildner 
510*d9805213SSascha Wildner #endif
511*d9805213SSascha Wildner 
512*d9805213SSascha Wildner #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
513*d9805213SSascha Wildner /* Copy COUNT objects from SRC to DST.  The source and destination do
514*d9805213SSascha Wildner    not overlap.  */
515*d9805213SSascha Wildner # ifndef YYCOPY
516*d9805213SSascha Wildner #  if defined __GNUC__ && 1 < __GNUC__
517*d9805213SSascha Wildner #   define YYCOPY(Dst, Src, Count) \
518*d9805213SSascha Wildner       __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
519*d9805213SSascha Wildner #  else
520*d9805213SSascha Wildner #   define YYCOPY(Dst, Src, Count)              \
521*d9805213SSascha Wildner       do                                        \
522*d9805213SSascha Wildner         {                                       \
523*d9805213SSascha Wildner           YYSIZE_T yyi;                         \
524*d9805213SSascha Wildner           for (yyi = 0; yyi < (Count); yyi++)   \
525*d9805213SSascha Wildner             (Dst)[yyi] = (Src)[yyi];            \
526*d9805213SSascha Wildner         }                                       \
527*d9805213SSascha Wildner       while (0)
528*d9805213SSascha Wildner #  endif
529*d9805213SSascha Wildner # endif
530*d9805213SSascha Wildner #endif /* !YYCOPY_NEEDED */
531*d9805213SSascha Wildner 
532*d9805213SSascha Wildner /* YYFINAL -- State number of the termination state.  */
533*d9805213SSascha Wildner #define YYFINAL  3
534*d9805213SSascha Wildner /* YYLAST -- Last index in YYTABLE.  */
535*d9805213SSascha Wildner #define YYLAST   161
536*d9805213SSascha Wildner 
537*d9805213SSascha Wildner /* YYNTOKENS -- Number of terminals.  */
538*d9805213SSascha Wildner #define YYNTOKENS  69
539*d9805213SSascha Wildner /* YYNNTS -- Number of nonterminals.  */
540*d9805213SSascha Wildner #define YYNNTS  27
541*d9805213SSascha Wildner /* YYNRULES -- Number of rules.  */
542*d9805213SSascha Wildner #define YYNRULES  97
543*d9805213SSascha Wildner /* YYNSTATES -- Number of states.  */
544*d9805213SSascha Wildner #define YYNSTATES  140
545*d9805213SSascha Wildner 
546*d9805213SSascha Wildner /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
547*d9805213SSascha Wildner    by yylex, with out-of-bounds checking.  */
548*d9805213SSascha Wildner #define YYUNDEFTOK  2
549*d9805213SSascha Wildner #define YYMAXUTOK   302
550*d9805213SSascha Wildner 
551*d9805213SSascha Wildner #define YYTRANSLATE(YYX)                                                \
552*d9805213SSascha Wildner   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
553*d9805213SSascha Wildner 
554*d9805213SSascha Wildner /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
555*d9805213SSascha Wildner    as returned by yylex, without out-of-bounds checking.  */
556*d9805213SSascha Wildner static const yytype_uint8 yytranslate[] =
557*d9805213SSascha Wildner {
558*d9805213SSascha Wildner        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
559*d9805213SSascha Wildner       49,     2,     2,     2,     2,     2,     2,     2,     2,     2,
560*d9805213SSascha Wildner        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
561*d9805213SSascha Wildner        2,     2,     2,     2,    63,     2,    57,     2,     2,     2,
562*d9805213SSascha Wildner       64,    65,    55,    60,    56,    68,    62,    59,     2,     2,
563*d9805213SSascha Wildner        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
564*d9805213SSascha Wildner       53,    48,    54,    61,     2,     2,     2,     2,     2,     2,
565*d9805213SSascha Wildner        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
566*d9805213SSascha Wildner        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
567*d9805213SSascha Wildner        2,    66,     2,    67,    52,     2,     2,     2,     2,     2,
568*d9805213SSascha Wildner        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
569*d9805213SSascha Wildner        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
570*d9805213SSascha Wildner        2,     2,     2,    50,    58,    51,     2,     2,     2,     2,
571*d9805213SSascha Wildner        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
572*d9805213SSascha Wildner        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
573*d9805213SSascha Wildner        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
574*d9805213SSascha Wildner        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
575*d9805213SSascha Wildner        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
576*d9805213SSascha Wildner        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
577*d9805213SSascha Wildner        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
578*d9805213SSascha Wildner        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
579*d9805213SSascha Wildner        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
580*d9805213SSascha Wildner        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
581*d9805213SSascha Wildner        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
582*d9805213SSascha Wildner        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
583*d9805213SSascha Wildner        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
584*d9805213SSascha Wildner        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
585*d9805213SSascha Wildner       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
586*d9805213SSascha Wildner       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
587*d9805213SSascha Wildner       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
588*d9805213SSascha Wildner       45,    46,    47
589*d9805213SSascha Wildner };
590*d9805213SSascha Wildner 
591*d9805213SSascha Wildner #if YYDEBUG
592*d9805213SSascha Wildner   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
593*d9805213SSascha Wildner static const yytype_uint16 yyrline[] =
594*d9805213SSascha Wildner {
595*d9805213SSascha Wildner        0,   118,   118,   148,   155,   156,   157,   158,   162,   170,
596*d9805213SSascha Wildner      173,   177,   180,   183,   187,   190,   191,   194,   199,   201,
597*d9805213SSascha Wildner      205,   207,   209,   213,   215,   217,   221,   233,   269,   293,
598*d9805213SSascha Wildner      316,   321,   324,   327,   345,   348,   350,   352,   356,   379,
599*d9805213SSascha Wildner      435,   438,   481,   499,   505,   510,   537,   545,   548,   576,
600*d9805213SSascha Wildner      590,   612,   619,   625,   631,   659,   673,   692,   726,   744,
601*d9805213SSascha Wildner      754,   757,   760,   775,   776,   777,   782,   784,   791,   851,
602*d9805213SSascha Wildner      869,   877,   885,   886,   887,   888,   889,   890,   891,   896,
603*d9805213SSascha Wildner      897,   898,   899,   900,   906,   907,   908,   909,   910,   911,
604*d9805213SSascha Wildner      912,   913,   914,   915,   916,   922,   930,   946
605*d9805213SSascha Wildner };
606*d9805213SSascha Wildner #endif
607*d9805213SSascha Wildner 
608*d9805213SSascha Wildner #if YYDEBUG || YYERROR_VERBOSE || 0
609*d9805213SSascha Wildner /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
610*d9805213SSascha Wildner    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
611*d9805213SSascha Wildner static const char *const yytname[] =
612*d9805213SSascha Wildner {
613*d9805213SSascha Wildner   "$end", "error", "$undefined", "CHAR", "NUMBER", "SECTEND", "SCDECL",
614*d9805213SSascha Wildner   "XSCDECL", "NAME", "PREVCCL", "EOF_OP", "TOK_OPTION", "TOK_OUTFILE",
615*d9805213SSascha Wildner   "TOK_PREFIX", "TOK_YYCLASS", "TOK_HEADER_FILE", "TOK_EXTRA_TYPE",
616*d9805213SSascha Wildner   "TOK_TABLES_FILE", "CCE_ALNUM", "CCE_ALPHA", "CCE_BLANK", "CCE_CNTRL",
617*d9805213SSascha Wildner   "CCE_DIGIT", "CCE_GRAPH", "CCE_LOWER", "CCE_PRINT", "CCE_PUNCT",
618*d9805213SSascha Wildner   "CCE_SPACE", "CCE_UPPER", "CCE_XDIGIT", "CCE_NEG_ALNUM", "CCE_NEG_ALPHA",
619*d9805213SSascha Wildner   "CCE_NEG_BLANK", "CCE_NEG_CNTRL", "CCE_NEG_DIGIT", "CCE_NEG_GRAPH",
620*d9805213SSascha Wildner   "CCE_NEG_LOWER", "CCE_NEG_PRINT", "CCE_NEG_PUNCT", "CCE_NEG_SPACE",
621*d9805213SSascha Wildner   "CCE_NEG_UPPER", "CCE_NEG_XDIGIT", "CCL_OP_DIFF", "CCL_OP_UNION",
622*d9805213SSascha Wildner   "BEGIN_REPEAT_POSIX", "END_REPEAT_POSIX", "BEGIN_REPEAT_FLEX",
623*d9805213SSascha Wildner   "END_REPEAT_FLEX", "'='", "'\\n'", "'{'", "'}'", "'^'", "'<'", "'>'",
624*d9805213SSascha Wildner   "'*'", "','", "'$'", "'|'", "'/'", "'+'", "'?'", "'.'", "'\"'", "'('",
625*d9805213SSascha Wildner   "')'", "'['", "']'", "'-'", "$accept", "goal", "initlex", "sect1",
626*d9805213SSascha Wildner   "sect1end", "startconddecl", "namelist1", "options", "optionlist",
627*d9805213SSascha Wildner   "option", "sect2", "initforrule", "flexrule", "scon_stk_ptr", "scon",
628*d9805213SSascha Wildner   "namelist2", "sconname", "rule", "re", "re2", "series", "singleton",
629*d9805213SSascha Wildner   "fullccl", "braceccl", "ccl", "ccl_expr", "string", YY_NULLPTR
630*d9805213SSascha Wildner };
631*d9805213SSascha Wildner #endif
632*d9805213SSascha Wildner 
633*d9805213SSascha Wildner # ifdef YYPRINT
634*d9805213SSascha Wildner /* YYTOKNUM[NUM] -- (External) token number corresponding to the
635*d9805213SSascha Wildner    (internal) symbol number NUM (which must be that of a token).  */
636*d9805213SSascha Wildner static const yytype_uint16 yytoknum[] =
637*d9805213SSascha Wildner {
638*d9805213SSascha Wildner        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
639*d9805213SSascha Wildner      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
640*d9805213SSascha Wildner      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
641*d9805213SSascha Wildner      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
642*d9805213SSascha Wildner      295,   296,   297,   298,   299,   300,   301,   302,    61,    10,
643*d9805213SSascha Wildner      123,   125,    94,    60,    62,    42,    44,    36,   124,    47,
644*d9805213SSascha Wildner       43,    63,    46,    34,    40,    41,    91,    93,    45
645*d9805213SSascha Wildner };
646*d9805213SSascha Wildner # endif
647*d9805213SSascha Wildner 
648*d9805213SSascha Wildner #define YYPACT_NINF -52
649*d9805213SSascha Wildner 
650*d9805213SSascha Wildner #define yypact_value_is_default(Yystate) \
651*d9805213SSascha Wildner   (!!((Yystate) == (-52)))
652*d9805213SSascha Wildner 
653*d9805213SSascha Wildner #define YYTABLE_NINF -27
654*d9805213SSascha Wildner 
655*d9805213SSascha Wildner #define yytable_value_is_error(Yytable_value) \
656*d9805213SSascha Wildner   0
657*d9805213SSascha Wildner 
658*d9805213SSascha Wildner   /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
659*d9805213SSascha Wildner      STATE-NUM.  */
660*d9805213SSascha Wildner static const yytype_int16 yypact[] =
661*d9805213SSascha Wildner {
662*d9805213SSascha Wildner      -52,    17,   103,   -52,   -52,   113,   -52,   -52,   -52,   -52,
663*d9805213SSascha Wildner      -52,    48,   -52,   114,     6,   -52,   -52,    42,     7,    12,
664*d9805213SSascha Wildner       58,    77,    88,    89,   -52,    43,   -52,    73,   -52,   130,
665*d9805213SSascha Wildner      131,   132,   133,   134,   135,    90,    91,   -52,    -1,   -52,
666*d9805213SSascha Wildner      -52,   -52,   -52,   -52,   -52,   -52,   -52,   -52,    40,   -52,
667*d9805213SSascha Wildner       44,   -52,   -52,   -52,   -52,    39,   -52,   -52,    39,    93,
668*d9805213SSascha Wildner       97,   -52,   -12,    39,    49,    61,   -31,   -52,   -52,   139,
669*d9805213SSascha Wildner      -52,   -52,     1,   -51,   -52,     0,   -52,   -52,    39,   -52,
670*d9805213SSascha Wildner       75,   144,    61,   145,   -52,   -52,   -52,    84,    84,   -52,
671*d9805213SSascha Wildner      -52,   -52,   -52,    50,    83,   -52,   -52,   -52,   -52,   -52,
672*d9805213SSascha Wildner      -52,   -52,   -52,   -52,   -52,   -52,   -52,   -52,   -52,   -52,
673*d9805213SSascha Wildner      -52,   -52,   -52,   -52,   -52,   -52,   -52,   -52,   -52,   -52,
674*d9805213SSascha Wildner      -52,    49,   -52,   -40,    10,   -52,   -52,   -52,   149,   -52,
675*d9805213SSascha Wildner        9,   -52,    -3,   -52,   108,   -52,   107,   -52,   -52,   -52
676*d9805213SSascha Wildner };
677*d9805213SSascha Wildner 
678*d9805213SSascha Wildner   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
679*d9805213SSascha Wildner      Performed when YYTABLE does not specify something else to do.  Zero
680*d9805213SSascha Wildner      means the default is an error.  */
681*d9805213SSascha Wildner static const yytype_uint8 yydefact[] =
682*d9805213SSascha Wildner {
683*d9805213SSascha Wildner        3,     0,     0,     1,     7,     0,     8,     9,    10,    16,
684*d9805213SSascha Wildner       25,     0,     5,    14,    34,    13,    12,     4,     0,     0,
685*d9805213SSascha Wildner        0,     0,     0,     0,    15,    31,     2,    26,    11,     0,
686*d9805213SSascha Wildner        0,     0,     0,     0,     0,     0,     0,    25,     0,    17,
687*d9805213SSascha Wildner       19,    20,    21,    18,    22,    33,    37,    38,     0,    36,
688*d9805213SSascha Wildner       34,    30,    62,    59,    29,     0,    57,    97,     0,    71,
689*d9805213SSascha Wildner        0,    28,    42,     0,    44,    47,    58,    65,    32,     0,
690*d9805213SSascha Wildner       24,    27,     0,     0,    71,     0,    23,    41,     0,    45,
691*d9805213SSascha Wildner       39,     0,    46,     0,    51,    52,    53,     0,     0,    35,
692*d9805213SSascha Wildner       96,    60,    61,     0,    69,    72,    73,    74,    75,    76,
693*d9805213SSascha Wildner       77,    78,    79,    80,    81,    83,    82,    84,    85,    86,
694*d9805213SSascha Wildner       87,    88,    89,    94,    90,    91,    92,    95,    93,    66,
695*d9805213SSascha Wildner       70,    43,    40,     0,     0,    63,    64,    67,     0,    50,
696*d9805213SSascha Wildner        0,    56,     0,    68,     0,    49,     0,    55,    48,    54
697*d9805213SSascha Wildner };
698*d9805213SSascha Wildner 
699*d9805213SSascha Wildner   /* YYPGOTO[NTERM-NUM].  */
700*d9805213SSascha Wildner static const yytype_int16 yypgoto[] =
701*d9805213SSascha Wildner {
702*d9805213SSascha Wildner      -52,   -52,   -52,   -52,   -52,   -52,   -52,   -52,   -52,   -52,
703*d9805213SSascha Wildner      118,   129,   -52,   -52,   -52,   -52,    92,   102,   -48,   -52,
704*d9805213SSascha Wildner       80,   -21,   -52,    47,    85,   -52,   -52
705*d9805213SSascha Wildner };
706*d9805213SSascha Wildner 
707*d9805213SSascha Wildner   /* YYDEFGOTO[NTERM-NUM].  */
708*d9805213SSascha Wildner static const yytype_int8 yydefgoto[] =
709*d9805213SSascha Wildner {
710*d9805213SSascha Wildner       -1,     1,     2,     5,    10,    11,    17,    12,    13,    24,
711*d9805213SSascha Wildner       14,    26,    60,    36,    27,    48,    49,    61,    62,    63,
712*d9805213SSascha Wildner       64,    65,    66,    67,    75,   120,    72
713*d9805213SSascha Wildner };
714*d9805213SSascha Wildner 
715*d9805213SSascha Wildner   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
716*d9805213SSascha Wildner      positive, shift that token.  If negative, reduce the rule whose
717*d9805213SSascha Wildner      number is the opposite.  If YYTABLE_NINF, syntax error.  */
718*d9805213SSascha Wildner static const yytype_int16 yytable[] =
719*d9805213SSascha Wildner {
720*d9805213SSascha Wildner       51,   136,    52,    94,    90,   129,   -26,    78,    53,    54,
721*d9805213SSascha Wildner       73,    87,    88,   134,    92,    80,   130,     3,    95,    96,
722*d9805213SSascha Wildner       97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
723*d9805213SSascha Wildner      107,   108,   109,   110,   111,   112,   113,   114,   115,   116,
724*d9805213SSascha Wildner      117,   118,    52,    82,   137,    77,    78,    79,    53,    15,
725*d9805213SSascha Wildner       28,    55,    52,    94,   135,    29,    16,   131,    53,    25,
726*d9805213SSascha Wildner       30,    56,    57,    58,    91,    59,   132,   119,    95,    96,
727*d9805213SSascha Wildner       97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
728*d9805213SSascha Wildner      107,   108,   109,   110,   111,   112,   113,   114,   115,   116,
729*d9805213SSascha Wildner      117,   118,    46,    81,    68,    70,    69,    25,    35,    47,
730*d9805213SSascha Wildner       82,    56,    57,    58,     4,    59,    31,    83,    -6,    -6,
731*d9805213SSascha Wildner       -6,    56,    57,    58,    -6,    59,    84,   127,     6,     7,
732*d9805213SSascha Wildner        8,    85,    86,    37,     9,    32,    18,    19,    20,    21,
733*d9805213SSascha Wildner       22,    23,   122,    78,   125,   126,    33,    34,    39,    40,
734*d9805213SSascha Wildner       41,    42,    43,    44,    45,    74,    76,    47,   123,   124,
735*d9805213SSascha Wildner       59,   128,   133,   138,   139,    50,    38,    71,   121,    93,
736*d9805213SSascha Wildner        0,    89
737*d9805213SSascha Wildner };
738*d9805213SSascha Wildner 
739*d9805213SSascha Wildner static const yytype_int8 yycheck[] =
740*d9805213SSascha Wildner {
741*d9805213SSascha Wildner        1,     4,     3,     3,     3,    45,     0,    58,     9,    10,
742*d9805213SSascha Wildner       58,    42,    43,     4,    65,    63,    56,     0,    18,    19,
743*d9805213SSascha Wildner       20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
744*d9805213SSascha Wildner       30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
745*d9805213SSascha Wildner       40,    41,     3,    64,    47,    57,    58,    59,     9,     1,
746*d9805213SSascha Wildner        8,    52,     3,     3,    45,    48,     8,    47,     9,    53,
747*d9805213SSascha Wildner       48,    62,    63,    64,    63,    66,    56,    67,    18,    19,
748*d9805213SSascha Wildner       20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
749*d9805213SSascha Wildner       30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
750*d9805213SSascha Wildner       40,    41,     1,    44,    54,    51,    56,    53,    55,     8,
751*d9805213SSascha Wildner      121,    62,    63,    64,     1,    66,    48,    46,     5,     6,
752*d9805213SSascha Wildner        7,    62,    63,    64,    11,    66,    55,    67,     5,     6,
753*d9805213SSascha Wildner        7,    60,    61,    50,    11,    48,    12,    13,    14,    15,
754*d9805213SSascha Wildner       16,    17,    57,    58,    87,    88,    48,    48,     8,     8,
755*d9805213SSascha Wildner        8,     8,     8,     8,    54,    52,    49,     8,     4,     4,
756*d9805213SSascha Wildner       66,    68,     3,    45,    47,    37,    27,    55,    78,    74,
757*d9805213SSascha Wildner       -1,    69
758*d9805213SSascha Wildner };
759*d9805213SSascha Wildner 
760*d9805213SSascha Wildner   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
761*d9805213SSascha Wildner      symbol of state STATE-NUM.  */
762*d9805213SSascha Wildner static const yytype_uint8 yystos[] =
763*d9805213SSascha Wildner {
764*d9805213SSascha Wildner        0,    70,    71,     0,     1,    72,     5,     6,     7,    11,
765*d9805213SSascha Wildner       73,    74,    76,    77,    79,     1,     8,    75,    12,    13,
766*d9805213SSascha Wildner       14,    15,    16,    17,    78,    53,    80,    83,     8,    48,
767*d9805213SSascha Wildner       48,    48,    48,    48,    48,    55,    82,    50,    80,     8,
768*d9805213SSascha Wildner        8,     8,     8,     8,     8,    54,     1,     8,    84,    85,
769*d9805213SSascha Wildner       79,     1,     3,     9,    10,    52,    62,    63,    64,    66,
770*d9805213SSascha Wildner       81,    86,    87,    88,    89,    90,    91,    92,    54,    56,
771*d9805213SSascha Wildner       51,    86,    95,    87,    52,    93,    49,    57,    58,    59,
772*d9805213SSascha Wildner       87,    44,    90,    46,    55,    60,    61,    42,    43,    85,
773*d9805213SSascha Wildner        3,    63,    65,    93,     3,    18,    19,    20,    21,    22,
774*d9805213SSascha Wildner       23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
775*d9805213SSascha Wildner       33,    34,    35,    36,    37,    38,    39,    40,    41,    67,
776*d9805213SSascha Wildner       94,    89,    57,     4,     4,    92,    92,    67,    68,    45,
777*d9805213SSascha Wildner       56,    47,    56,     3,     4,    45,     4,    47,    45,    47
778*d9805213SSascha Wildner };
779*d9805213SSascha Wildner 
780*d9805213SSascha Wildner   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
781*d9805213SSascha Wildner static const yytype_uint8 yyr1[] =
782*d9805213SSascha Wildner {
783*d9805213SSascha Wildner        0,    69,    70,    71,    72,    72,    72,    72,    73,    74,
784*d9805213SSascha Wildner       74,    75,    75,    75,    76,    77,    77,    78,    78,    78,
785*d9805213SSascha Wildner       78,    78,    78,    79,    79,    79,    80,    81,    81,    81,
786*d9805213SSascha Wildner       81,    82,    83,    83,    83,    84,    84,    84,    85,    86,
787*d9805213SSascha Wildner       86,    86,    86,    87,    87,    88,    89,    89,    89,    89,
788*d9805213SSascha Wildner       89,    90,    90,    90,    90,    90,    90,    90,    90,    90,
789*d9805213SSascha Wildner       90,    90,    90,    91,    91,    91,    92,    92,    93,    93,
790*d9805213SSascha Wildner       93,    93,    94,    94,    94,    94,    94,    94,    94,    94,
791*d9805213SSascha Wildner       94,    94,    94,    94,    94,    94,    94,    94,    94,    94,
792*d9805213SSascha Wildner       94,    94,    94,    94,    94,    94,    95,    95
793*d9805213SSascha Wildner };
794*d9805213SSascha Wildner 
795*d9805213SSascha Wildner   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
796*d9805213SSascha Wildner static const yytype_uint8 yyr2[] =
797*d9805213SSascha Wildner {
798*d9805213SSascha Wildner        0,     2,     5,     0,     3,     2,     0,     1,     1,     1,
799*d9805213SSascha Wildner        1,     2,     1,     1,     2,     2,     0,     3,     3,     3,
800*d9805213SSascha Wildner        3,     3,     3,     5,     5,     0,     0,     2,     1,     1,
801*d9805213SSascha Wildner        1,     0,     4,     3,     0,     3,     1,     1,     1,     2,
802*d9805213SSascha Wildner        3,     2,     1,     3,     1,     2,     2,     1,     6,     5,
803*d9805213SSascha Wildner        4,     2,     2,     2,     6,     5,     4,     1,     1,     1,
804*d9805213SSascha Wildner        3,     3,     1,     3,     3,     1,     3,     4,     4,     2,
805*d9805213SSascha Wildner        2,     0,     1,     1,     1,     1,     1,     1,     1,     1,
806*d9805213SSascha Wildner        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
807*d9805213SSascha Wildner        1,     1,     1,     1,     1,     1,     2,     0
808*d9805213SSascha Wildner };
809*d9805213SSascha Wildner 
810*d9805213SSascha Wildner 
811*d9805213SSascha Wildner #define yyerrok         (yyerrstatus = 0)
812*d9805213SSascha Wildner #define yyclearin       (yychar = YYEMPTY)
813*d9805213SSascha Wildner #define YYEMPTY         (-2)
814*d9805213SSascha Wildner #define YYEOF           0
815*d9805213SSascha Wildner 
816*d9805213SSascha Wildner #define YYACCEPT        goto yyacceptlab
817*d9805213SSascha Wildner #define YYABORT         goto yyabortlab
818*d9805213SSascha Wildner #define YYERROR         goto yyerrorlab
819*d9805213SSascha Wildner 
820*d9805213SSascha Wildner 
821*d9805213SSascha Wildner #define YYRECOVERING()  (!!yyerrstatus)
822*d9805213SSascha Wildner 
823*d9805213SSascha Wildner #define YYBACKUP(Token, Value)                                  \
824*d9805213SSascha Wildner do                                                              \
825*d9805213SSascha Wildner   if (yychar == YYEMPTY)                                        \
826*d9805213SSascha Wildner     {                                                           \
827*d9805213SSascha Wildner       yychar = (Token);                                         \
828*d9805213SSascha Wildner       yylval = (Value);                                         \
829*d9805213SSascha Wildner       YYPOPSTACK (yylen);                                       \
830*d9805213SSascha Wildner       yystate = *yyssp;                                         \
831*d9805213SSascha Wildner       goto yybackup;                                            \
832*d9805213SSascha Wildner     }                                                           \
833*d9805213SSascha Wildner   else                                                          \
834*d9805213SSascha Wildner     {                                                           \
835*d9805213SSascha Wildner       yyerror (YY_("syntax error: cannot back up")); \
836*d9805213SSascha Wildner       YYERROR;                                                  \
837*d9805213SSascha Wildner     }                                                           \
838*d9805213SSascha Wildner while (0)
839*d9805213SSascha Wildner 
840*d9805213SSascha Wildner /* Error token number */
841*d9805213SSascha Wildner #define YYTERROR        1
842*d9805213SSascha Wildner #define YYERRCODE       256
843*d9805213SSascha Wildner 
844*d9805213SSascha Wildner 
845*d9805213SSascha Wildner 
846*d9805213SSascha Wildner /* Enable debugging if requested.  */
847*d9805213SSascha Wildner #if YYDEBUG
848*d9805213SSascha Wildner 
849*d9805213SSascha Wildner # ifndef YYFPRINTF
850*d9805213SSascha Wildner #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
851*d9805213SSascha Wildner #  define YYFPRINTF fprintf
852*d9805213SSascha Wildner # endif
853*d9805213SSascha Wildner 
854*d9805213SSascha Wildner # define YYDPRINTF(Args)                        \
855*d9805213SSascha Wildner do {                                            \
856*d9805213SSascha Wildner   if (yydebug)                                  \
857*d9805213SSascha Wildner     YYFPRINTF Args;                             \
858*d9805213SSascha Wildner } while (0)
859*d9805213SSascha Wildner 
860*d9805213SSascha Wildner /* This macro is provided for backward compatibility. */
861*d9805213SSascha Wildner #ifndef YY_LOCATION_PRINT
862*d9805213SSascha Wildner # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
863*d9805213SSascha Wildner #endif
864*d9805213SSascha Wildner 
865*d9805213SSascha Wildner 
866*d9805213SSascha Wildner # define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
867*d9805213SSascha Wildner do {                                                                      \
868*d9805213SSascha Wildner   if (yydebug)                                                            \
869*d9805213SSascha Wildner     {                                                                     \
870*d9805213SSascha Wildner       YYFPRINTF (stderr, "%s ", Title);                                   \
871*d9805213SSascha Wildner       yy_symbol_print (stderr,                                            \
872*d9805213SSascha Wildner                   Type, Value); \
873*d9805213SSascha Wildner       YYFPRINTF (stderr, "\n");                                           \
874*d9805213SSascha Wildner     }                                                                     \
875*d9805213SSascha Wildner } while (0)
876*d9805213SSascha Wildner 
877*d9805213SSascha Wildner 
878*d9805213SSascha Wildner /*----------------------------------------.
879*d9805213SSascha Wildner | Print this symbol's value on YYOUTPUT.  |
880*d9805213SSascha Wildner `----------------------------------------*/
881*d9805213SSascha Wildner 
882*d9805213SSascha Wildner static void
yy_symbol_value_print(FILE * yyoutput,int yytype,YYSTYPE const * const yyvaluep)883*d9805213SSascha Wildner yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
884*d9805213SSascha Wildner {
885*d9805213SSascha Wildner   FILE *yyo = yyoutput;
886*d9805213SSascha Wildner   YYUSE (yyo);
887*d9805213SSascha Wildner   if (!yyvaluep)
888*d9805213SSascha Wildner     return;
889*d9805213SSascha Wildner # ifdef YYPRINT
890*d9805213SSascha Wildner   if (yytype < YYNTOKENS)
891*d9805213SSascha Wildner     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
892*d9805213SSascha Wildner # endif
893*d9805213SSascha Wildner   YYUSE (yytype);
894*d9805213SSascha Wildner }
895*d9805213SSascha Wildner 
896*d9805213SSascha Wildner 
897*d9805213SSascha Wildner /*--------------------------------.
898*d9805213SSascha Wildner | Print this symbol on YYOUTPUT.  |
899*d9805213SSascha Wildner `--------------------------------*/
900*d9805213SSascha Wildner 
901*d9805213SSascha Wildner static void
yy_symbol_print(FILE * yyoutput,int yytype,YYSTYPE const * const yyvaluep)902*d9805213SSascha Wildner yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
903*d9805213SSascha Wildner {
904*d9805213SSascha Wildner   YYFPRINTF (yyoutput, "%s %s (",
905*d9805213SSascha Wildner              yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
906*d9805213SSascha Wildner 
907*d9805213SSascha Wildner   yy_symbol_value_print (yyoutput, yytype, yyvaluep);
908*d9805213SSascha Wildner   YYFPRINTF (yyoutput, ")");
909*d9805213SSascha Wildner }
910*d9805213SSascha Wildner 
911*d9805213SSascha Wildner /*------------------------------------------------------------------.
912*d9805213SSascha Wildner | yy_stack_print -- Print the state stack from its BOTTOM up to its |
913*d9805213SSascha Wildner | TOP (included).                                                   |
914*d9805213SSascha Wildner `------------------------------------------------------------------*/
915*d9805213SSascha Wildner 
916*d9805213SSascha Wildner static void
yy_stack_print(yytype_int16 * yybottom,yytype_int16 * yytop)917*d9805213SSascha Wildner yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
918*d9805213SSascha Wildner {
919*d9805213SSascha Wildner   YYFPRINTF (stderr, "Stack now");
920*d9805213SSascha Wildner   for (; yybottom <= yytop; yybottom++)
921*d9805213SSascha Wildner     {
922*d9805213SSascha Wildner       int yybot = *yybottom;
923*d9805213SSascha Wildner       YYFPRINTF (stderr, " %d", yybot);
924*d9805213SSascha Wildner     }
925*d9805213SSascha Wildner   YYFPRINTF (stderr, "\n");
926*d9805213SSascha Wildner }
927*d9805213SSascha Wildner 
928*d9805213SSascha Wildner # define YY_STACK_PRINT(Bottom, Top)                            \
929*d9805213SSascha Wildner do {                                                            \
930*d9805213SSascha Wildner   if (yydebug)                                                  \
931*d9805213SSascha Wildner     yy_stack_print ((Bottom), (Top));                           \
932*d9805213SSascha Wildner } while (0)
933*d9805213SSascha Wildner 
934*d9805213SSascha Wildner 
935*d9805213SSascha Wildner /*------------------------------------------------.
936*d9805213SSascha Wildner | Report that the YYRULE is going to be reduced.  |
937*d9805213SSascha Wildner `------------------------------------------------*/
938*d9805213SSascha Wildner 
939*d9805213SSascha Wildner static void
yy_reduce_print(yytype_int16 * yyssp,YYSTYPE * yyvsp,int yyrule)940*d9805213SSascha Wildner yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
941*d9805213SSascha Wildner {
942*d9805213SSascha Wildner   unsigned long int yylno = yyrline[yyrule];
943*d9805213SSascha Wildner   int yynrhs = yyr2[yyrule];
944*d9805213SSascha Wildner   int yyi;
945*d9805213SSascha Wildner   YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
946*d9805213SSascha Wildner              yyrule - 1, yylno);
947*d9805213SSascha Wildner   /* The symbols being reduced.  */
948*d9805213SSascha Wildner   for (yyi = 0; yyi < yynrhs; yyi++)
949*d9805213SSascha Wildner     {
950*d9805213SSascha Wildner       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
951*d9805213SSascha Wildner       yy_symbol_print (stderr,
952*d9805213SSascha Wildner                        yystos[yyssp[yyi + 1 - yynrhs]],
953*d9805213SSascha Wildner                        &(yyvsp[(yyi + 1) - (yynrhs)])
954*d9805213SSascha Wildner                                               );
955*d9805213SSascha Wildner       YYFPRINTF (stderr, "\n");
956*d9805213SSascha Wildner     }
957*d9805213SSascha Wildner }
958*d9805213SSascha Wildner 
959*d9805213SSascha Wildner # define YY_REDUCE_PRINT(Rule)          \
960*d9805213SSascha Wildner do {                                    \
961*d9805213SSascha Wildner   if (yydebug)                          \
962*d9805213SSascha Wildner     yy_reduce_print (yyssp, yyvsp, Rule); \
963*d9805213SSascha Wildner } while (0)
964*d9805213SSascha Wildner 
965*d9805213SSascha Wildner /* Nonzero means print parse trace.  It is left uninitialized so that
966*d9805213SSascha Wildner    multiple parsers can coexist.  */
967*d9805213SSascha Wildner int yydebug;
968*d9805213SSascha Wildner #else /* !YYDEBUG */
969*d9805213SSascha Wildner # define YYDPRINTF(Args)
970*d9805213SSascha Wildner # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
971*d9805213SSascha Wildner # define YY_STACK_PRINT(Bottom, Top)
972*d9805213SSascha Wildner # define YY_REDUCE_PRINT(Rule)
973*d9805213SSascha Wildner #endif /* !YYDEBUG */
974*d9805213SSascha Wildner 
975*d9805213SSascha Wildner 
976*d9805213SSascha Wildner /* YYINITDEPTH -- initial size of the parser's stacks.  */
977*d9805213SSascha Wildner #ifndef YYINITDEPTH
978*d9805213SSascha Wildner # define YYINITDEPTH 200
979*d9805213SSascha Wildner #endif
980*d9805213SSascha Wildner 
981*d9805213SSascha Wildner /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
982*d9805213SSascha Wildner    if the built-in stack extension method is used).
983*d9805213SSascha Wildner 
984*d9805213SSascha Wildner    Do not make this value too large; the results are undefined if
985*d9805213SSascha Wildner    YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
986*d9805213SSascha Wildner    evaluated with infinite-precision integer arithmetic.  */
987*d9805213SSascha Wildner 
988*d9805213SSascha Wildner #ifndef YYMAXDEPTH
989*d9805213SSascha Wildner # define YYMAXDEPTH 10000
990*d9805213SSascha Wildner #endif
991*d9805213SSascha Wildner 
992*d9805213SSascha Wildner 
993*d9805213SSascha Wildner #if YYERROR_VERBOSE
994*d9805213SSascha Wildner 
995*d9805213SSascha Wildner # ifndef yystrlen
996*d9805213SSascha Wildner #  if defined __GLIBC__ && defined _STRING_H
997*d9805213SSascha Wildner #   define yystrlen strlen
998*d9805213SSascha Wildner #  else
999*d9805213SSascha Wildner /* Return the length of YYSTR.  */
1000*d9805213SSascha Wildner static YYSIZE_T
yystrlen(const char * yystr)1001*d9805213SSascha Wildner yystrlen (const char *yystr)
1002*d9805213SSascha Wildner {
1003*d9805213SSascha Wildner   YYSIZE_T yylen;
1004*d9805213SSascha Wildner   for (yylen = 0; yystr[yylen]; yylen++)
1005*d9805213SSascha Wildner     continue;
1006*d9805213SSascha Wildner   return yylen;
1007*d9805213SSascha Wildner }
1008*d9805213SSascha Wildner #  endif
1009*d9805213SSascha Wildner # endif
1010*d9805213SSascha Wildner 
1011*d9805213SSascha Wildner # ifndef yystpcpy
1012*d9805213SSascha Wildner #  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
1013*d9805213SSascha Wildner #   define yystpcpy stpcpy
1014*d9805213SSascha Wildner #  else
1015*d9805213SSascha Wildner /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1016*d9805213SSascha Wildner    YYDEST.  */
1017*d9805213SSascha Wildner static char *
yystpcpy(char * yydest,const char * yysrc)1018*d9805213SSascha Wildner yystpcpy (char *yydest, const char *yysrc)
1019*d9805213SSascha Wildner {
1020*d9805213SSascha Wildner   char *yyd = yydest;
1021*d9805213SSascha Wildner   const char *yys = yysrc;
1022*d9805213SSascha Wildner 
1023*d9805213SSascha Wildner   while ((*yyd++ = *yys++) != '\0')
1024*d9805213SSascha Wildner     continue;
1025*d9805213SSascha Wildner 
1026*d9805213SSascha Wildner   return yyd - 1;
1027*d9805213SSascha Wildner }
1028*d9805213SSascha Wildner #  endif
1029*d9805213SSascha Wildner # endif
1030*d9805213SSascha Wildner 
1031*d9805213SSascha Wildner # ifndef yytnamerr
1032*d9805213SSascha Wildner /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
1033*d9805213SSascha Wildner    quotes and backslashes, so that it's suitable for yyerror.  The
1034*d9805213SSascha Wildner    heuristic is that double-quoting is unnecessary unless the string
1035*d9805213SSascha Wildner    contains an apostrophe, a comma, or backslash (other than
1036*d9805213SSascha Wildner    backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
1037*d9805213SSascha Wildner    null, do not copy; instead, return the length of what the result
1038*d9805213SSascha Wildner    would have been.  */
1039*d9805213SSascha Wildner static YYSIZE_T
yytnamerr(char * yyres,const char * yystr)1040*d9805213SSascha Wildner yytnamerr (char *yyres, const char *yystr)
1041*d9805213SSascha Wildner {
1042*d9805213SSascha Wildner   if (*yystr == '"')
1043*d9805213SSascha Wildner     {
1044*d9805213SSascha Wildner       YYSIZE_T yyn = 0;
1045*d9805213SSascha Wildner       char const *yyp = yystr;
1046*d9805213SSascha Wildner 
1047*d9805213SSascha Wildner       for (;;)
1048*d9805213SSascha Wildner         switch (*++yyp)
1049*d9805213SSascha Wildner           {
1050*d9805213SSascha Wildner           case '\'':
1051*d9805213SSascha Wildner           case ',':
1052*d9805213SSascha Wildner             goto do_not_strip_quotes;
1053*d9805213SSascha Wildner 
1054*d9805213SSascha Wildner           case '\\':
1055*d9805213SSascha Wildner             if (*++yyp != '\\')
1056*d9805213SSascha Wildner               goto do_not_strip_quotes;
1057*d9805213SSascha Wildner             /* Fall through.  */
1058*d9805213SSascha Wildner           default:
1059*d9805213SSascha Wildner             if (yyres)
1060*d9805213SSascha Wildner               yyres[yyn] = *yyp;
1061*d9805213SSascha Wildner             yyn++;
1062*d9805213SSascha Wildner             break;
1063*d9805213SSascha Wildner 
1064*d9805213SSascha Wildner           case '"':
1065*d9805213SSascha Wildner             if (yyres)
1066*d9805213SSascha Wildner               yyres[yyn] = '\0';
1067*d9805213SSascha Wildner             return yyn;
1068*d9805213SSascha Wildner           }
1069*d9805213SSascha Wildner     do_not_strip_quotes: ;
1070*d9805213SSascha Wildner     }
1071*d9805213SSascha Wildner 
1072*d9805213SSascha Wildner   if (! yyres)
1073*d9805213SSascha Wildner     return yystrlen (yystr);
1074*d9805213SSascha Wildner 
1075*d9805213SSascha Wildner   return yystpcpy (yyres, yystr) - yyres;
1076*d9805213SSascha Wildner }
1077*d9805213SSascha Wildner # endif
1078*d9805213SSascha Wildner 
1079*d9805213SSascha Wildner /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
1080*d9805213SSascha Wildner    about the unexpected token YYTOKEN for the state stack whose top is
1081*d9805213SSascha Wildner    YYSSP.
1082*d9805213SSascha Wildner 
1083*d9805213SSascha Wildner    Return 0 if *YYMSG was successfully written.  Return 1 if *YYMSG is
1084*d9805213SSascha Wildner    not large enough to hold the message.  In that case, also set
1085*d9805213SSascha Wildner    *YYMSG_ALLOC to the required number of bytes.  Return 2 if the
1086*d9805213SSascha Wildner    required number of bytes is too large to store.  */
1087*d9805213SSascha Wildner static int
yysyntax_error(YYSIZE_T * yymsg_alloc,char ** yymsg,yytype_int16 * yyssp,int yytoken)1088*d9805213SSascha Wildner yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
1089*d9805213SSascha Wildner                 yytype_int16 *yyssp, int yytoken)
1090*d9805213SSascha Wildner {
1091*d9805213SSascha Wildner   YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
1092*d9805213SSascha Wildner   YYSIZE_T yysize = yysize0;
1093*d9805213SSascha Wildner   enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
1094*d9805213SSascha Wildner   /* Internationalized format string. */
1095*d9805213SSascha Wildner   const char *yyformat = YY_NULLPTR;
1096*d9805213SSascha Wildner   /* Arguments of yyformat. */
1097*d9805213SSascha Wildner   char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
1098*d9805213SSascha Wildner   /* Number of reported tokens (one for the "unexpected", one per
1099*d9805213SSascha Wildner      "expected"). */
1100*d9805213SSascha Wildner   int yycount = 0;
1101*d9805213SSascha Wildner 
1102*d9805213SSascha Wildner   /* There are many possibilities here to consider:
1103*d9805213SSascha Wildner      - If this state is a consistent state with a default action, then
1104*d9805213SSascha Wildner        the only way this function was invoked is if the default action
1105*d9805213SSascha Wildner        is an error action.  In that case, don't check for expected
1106*d9805213SSascha Wildner        tokens because there are none.
1107*d9805213SSascha Wildner      - The only way there can be no lookahead present (in yychar) is if
1108*d9805213SSascha Wildner        this state is a consistent state with a default action.  Thus,
1109*d9805213SSascha Wildner        detecting the absence of a lookahead is sufficient to determine
1110*d9805213SSascha Wildner        that there is no unexpected or expected token to report.  In that
1111*d9805213SSascha Wildner        case, just report a simple "syntax error".
1112*d9805213SSascha Wildner      - Don't assume there isn't a lookahead just because this state is a
1113*d9805213SSascha Wildner        consistent state with a default action.  There might have been a
1114*d9805213SSascha Wildner        previous inconsistent state, consistent state with a non-default
1115*d9805213SSascha Wildner        action, or user semantic action that manipulated yychar.
1116*d9805213SSascha Wildner      - Of course, the expected token list depends on states to have
1117*d9805213SSascha Wildner        correct lookahead information, and it depends on the parser not
1118*d9805213SSascha Wildner        to perform extra reductions after fetching a lookahead from the
1119*d9805213SSascha Wildner        scanner and before detecting a syntax error.  Thus, state merging
1120*d9805213SSascha Wildner        (from LALR or IELR) and default reductions corrupt the expected
1121*d9805213SSascha Wildner        token list.  However, the list is correct for canonical LR with
1122*d9805213SSascha Wildner        one exception: it will still contain any token that will not be
1123*d9805213SSascha Wildner        accepted due to an error action in a later state.
1124*d9805213SSascha Wildner   */
1125*d9805213SSascha Wildner   if (yytoken != YYEMPTY)
1126*d9805213SSascha Wildner     {
1127*d9805213SSascha Wildner       int yyn = yypact[*yyssp];
1128*d9805213SSascha Wildner       yyarg[yycount++] = yytname[yytoken];
1129*d9805213SSascha Wildner       if (!yypact_value_is_default (yyn))
1130*d9805213SSascha Wildner         {
1131*d9805213SSascha Wildner           /* Start YYX at -YYN if negative to avoid negative indexes in
1132*d9805213SSascha Wildner              YYCHECK.  In other words, skip the first -YYN actions for
1133*d9805213SSascha Wildner              this state because they are default actions.  */
1134*d9805213SSascha Wildner           int yyxbegin = yyn < 0 ? -yyn : 0;
1135*d9805213SSascha Wildner           /* Stay within bounds of both yycheck and yytname.  */
1136*d9805213SSascha Wildner           int yychecklim = YYLAST - yyn + 1;
1137*d9805213SSascha Wildner           int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
1138*d9805213SSascha Wildner           int yyx;
1139*d9805213SSascha Wildner 
1140*d9805213SSascha Wildner           for (yyx = yyxbegin; yyx < yyxend; ++yyx)
1141*d9805213SSascha Wildner             if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
1142*d9805213SSascha Wildner                 && !yytable_value_is_error (yytable[yyx + yyn]))
1143*d9805213SSascha Wildner               {
1144*d9805213SSascha Wildner                 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
1145*d9805213SSascha Wildner                   {
1146*d9805213SSascha Wildner                     yycount = 1;
1147*d9805213SSascha Wildner                     yysize = yysize0;
1148*d9805213SSascha Wildner                     break;
1149*d9805213SSascha Wildner                   }
1150*d9805213SSascha Wildner                 yyarg[yycount++] = yytname[yyx];
1151*d9805213SSascha Wildner                 {
1152*d9805213SSascha Wildner                   YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
1153*d9805213SSascha Wildner                   if (! (yysize <= yysize1
1154*d9805213SSascha Wildner                          && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
1155*d9805213SSascha Wildner                     return 2;
1156*d9805213SSascha Wildner                   yysize = yysize1;
1157*d9805213SSascha Wildner                 }
1158*d9805213SSascha Wildner               }
1159*d9805213SSascha Wildner         }
1160*d9805213SSascha Wildner     }
1161*d9805213SSascha Wildner 
1162*d9805213SSascha Wildner   switch (yycount)
1163*d9805213SSascha Wildner     {
1164*d9805213SSascha Wildner # define YYCASE_(N, S)                      \
1165*d9805213SSascha Wildner       case N:                               \
1166*d9805213SSascha Wildner         yyformat = S;                       \
1167*d9805213SSascha Wildner       break
1168*d9805213SSascha Wildner       YYCASE_(0, YY_("syntax error"));
1169*d9805213SSascha Wildner       YYCASE_(1, YY_("syntax error, unexpected %s"));
1170*d9805213SSascha Wildner       YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
1171*d9805213SSascha Wildner       YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
1172*d9805213SSascha Wildner       YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
1173*d9805213SSascha Wildner       YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
1174*d9805213SSascha Wildner # undef YYCASE_
1175*d9805213SSascha Wildner     }
1176*d9805213SSascha Wildner 
1177*d9805213SSascha Wildner   {
1178*d9805213SSascha Wildner     YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
1179*d9805213SSascha Wildner     if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
1180*d9805213SSascha Wildner       return 2;
1181*d9805213SSascha Wildner     yysize = yysize1;
1182*d9805213SSascha Wildner   }
1183*d9805213SSascha Wildner 
1184*d9805213SSascha Wildner   if (*yymsg_alloc < yysize)
1185*d9805213SSascha Wildner     {
1186*d9805213SSascha Wildner       *yymsg_alloc = 2 * yysize;
1187*d9805213SSascha Wildner       if (! (yysize <= *yymsg_alloc
1188*d9805213SSascha Wildner              && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
1189*d9805213SSascha Wildner         *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
1190*d9805213SSascha Wildner       return 1;
1191*d9805213SSascha Wildner     }
1192*d9805213SSascha Wildner 
1193*d9805213SSascha Wildner   /* Avoid sprintf, as that infringes on the user's name space.
1194*d9805213SSascha Wildner      Don't have undefined behavior even if the translation
1195*d9805213SSascha Wildner      produced a string with the wrong number of "%s"s.  */
1196*d9805213SSascha Wildner   {
1197*d9805213SSascha Wildner     char *yyp = *yymsg;
1198*d9805213SSascha Wildner     int yyi = 0;
1199*d9805213SSascha Wildner     while ((*yyp = *yyformat) != '\0')
1200*d9805213SSascha Wildner       if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
1201*d9805213SSascha Wildner         {
1202*d9805213SSascha Wildner           yyp += yytnamerr (yyp, yyarg[yyi++]);
1203*d9805213SSascha Wildner           yyformat += 2;
1204*d9805213SSascha Wildner         }
1205*d9805213SSascha Wildner       else
1206*d9805213SSascha Wildner         {
1207*d9805213SSascha Wildner           yyp++;
1208*d9805213SSascha Wildner           yyformat++;
1209*d9805213SSascha Wildner         }
1210*d9805213SSascha Wildner   }
1211*d9805213SSascha Wildner   return 0;
1212*d9805213SSascha Wildner }
1213*d9805213SSascha Wildner #endif /* YYERROR_VERBOSE */
1214*d9805213SSascha Wildner 
1215*d9805213SSascha Wildner /*-----------------------------------------------.
1216*d9805213SSascha Wildner | Release the memory associated to this symbol.  |
1217*d9805213SSascha Wildner `-----------------------------------------------*/
1218*d9805213SSascha Wildner 
1219*d9805213SSascha Wildner static void
yydestruct(const char * yymsg,int yytype,YYSTYPE * yyvaluep)1220*d9805213SSascha Wildner yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
1221*d9805213SSascha Wildner {
1222*d9805213SSascha Wildner   YYUSE (yyvaluep);
1223*d9805213SSascha Wildner   if (!yymsg)
1224*d9805213SSascha Wildner     yymsg = "Deleting";
1225*d9805213SSascha Wildner   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1226*d9805213SSascha Wildner 
1227*d9805213SSascha Wildner   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1228*d9805213SSascha Wildner   YYUSE (yytype);
1229*d9805213SSascha Wildner   YY_IGNORE_MAYBE_UNINITIALIZED_END
1230*d9805213SSascha Wildner }
1231*d9805213SSascha Wildner 
1232*d9805213SSascha Wildner 
1233*d9805213SSascha Wildner 
1234*d9805213SSascha Wildner 
1235*d9805213SSascha Wildner /* The lookahead symbol.  */
1236*d9805213SSascha Wildner int yychar;
1237*d9805213SSascha Wildner 
1238*d9805213SSascha Wildner /* The semantic value of the lookahead symbol.  */
1239*d9805213SSascha Wildner YYSTYPE yylval;
1240*d9805213SSascha Wildner /* Number of syntax errors so far.  */
1241*d9805213SSascha Wildner int yynerrs;
1242*d9805213SSascha Wildner 
1243*d9805213SSascha Wildner 
1244*d9805213SSascha Wildner /*----------.
1245*d9805213SSascha Wildner | yyparse.  |
1246*d9805213SSascha Wildner `----------*/
1247*d9805213SSascha Wildner 
1248*d9805213SSascha Wildner int
yyparse(void)1249*d9805213SSascha Wildner yyparse (void)
1250*d9805213SSascha Wildner {
1251*d9805213SSascha Wildner     int yystate;
1252*d9805213SSascha Wildner     /* Number of tokens to shift before error messages enabled.  */
1253*d9805213SSascha Wildner     int yyerrstatus;
1254*d9805213SSascha Wildner 
1255*d9805213SSascha Wildner     /* The stacks and their tools:
1256*d9805213SSascha Wildner        'yyss': related to states.
1257*d9805213SSascha Wildner        'yyvs': related to semantic values.
1258*d9805213SSascha Wildner 
1259*d9805213SSascha Wildner        Refer to the stacks through separate pointers, to allow yyoverflow
1260*d9805213SSascha Wildner        to reallocate them elsewhere.  */
1261*d9805213SSascha Wildner 
1262*d9805213SSascha Wildner     /* The state stack.  */
1263*d9805213SSascha Wildner     yytype_int16 yyssa[YYINITDEPTH];
1264*d9805213SSascha Wildner     yytype_int16 *yyss;
1265*d9805213SSascha Wildner     yytype_int16 *yyssp;
1266*d9805213SSascha Wildner 
1267*d9805213SSascha Wildner     /* The semantic value stack.  */
1268*d9805213SSascha Wildner     YYSTYPE yyvsa[YYINITDEPTH];
1269*d9805213SSascha Wildner     YYSTYPE *yyvs;
1270*d9805213SSascha Wildner     YYSTYPE *yyvsp;
1271*d9805213SSascha Wildner 
1272*d9805213SSascha Wildner     YYSIZE_T yystacksize;
1273*d9805213SSascha Wildner 
1274*d9805213SSascha Wildner   int yyn;
1275*d9805213SSascha Wildner   int yyresult;
1276*d9805213SSascha Wildner   /* Lookahead token as an internal (translated) token number.  */
1277*d9805213SSascha Wildner   int yytoken = 0;
1278*d9805213SSascha Wildner   /* The variables used to return semantic value and location from the
1279*d9805213SSascha Wildner      action routines.  */
1280*d9805213SSascha Wildner   YYSTYPE yyval;
1281*d9805213SSascha Wildner 
1282*d9805213SSascha Wildner #if YYERROR_VERBOSE
1283*d9805213SSascha Wildner   /* Buffer for error messages, and its allocated size.  */
1284*d9805213SSascha Wildner   char yymsgbuf[128];
1285*d9805213SSascha Wildner   char *yymsg = yymsgbuf;
1286*d9805213SSascha Wildner   YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
1287*d9805213SSascha Wildner #endif
1288*d9805213SSascha Wildner 
1289*d9805213SSascha Wildner #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
1290*d9805213SSascha Wildner 
1291*d9805213SSascha Wildner   /* The number of symbols on the RHS of the reduced rule.
1292*d9805213SSascha Wildner      Keep to zero when no symbol should be popped.  */
1293*d9805213SSascha Wildner   int yylen = 0;
1294*d9805213SSascha Wildner 
1295*d9805213SSascha Wildner   yyssp = yyss = yyssa;
1296*d9805213SSascha Wildner   yyvsp = yyvs = yyvsa;
1297*d9805213SSascha Wildner   yystacksize = YYINITDEPTH;
1298*d9805213SSascha Wildner 
1299*d9805213SSascha Wildner   YYDPRINTF ((stderr, "Starting parse\n"));
1300*d9805213SSascha Wildner 
1301*d9805213SSascha Wildner   yystate = 0;
1302*d9805213SSascha Wildner   yyerrstatus = 0;
1303*d9805213SSascha Wildner   yynerrs = 0;
1304*d9805213SSascha Wildner   yychar = YYEMPTY; /* Cause a token to be read.  */
1305*d9805213SSascha Wildner   goto yysetstate;
1306*d9805213SSascha Wildner 
1307*d9805213SSascha Wildner /*------------------------------------------------------------.
1308*d9805213SSascha Wildner | yynewstate -- Push a new state, which is found in yystate.  |
1309*d9805213SSascha Wildner `------------------------------------------------------------*/
1310*d9805213SSascha Wildner  yynewstate:
1311*d9805213SSascha Wildner   /* In all cases, when you get here, the value and location stacks
1312*d9805213SSascha Wildner      have just been pushed.  So pushing a state here evens the stacks.  */
1313*d9805213SSascha Wildner   yyssp++;
1314*d9805213SSascha Wildner 
1315*d9805213SSascha Wildner  yysetstate:
1316*d9805213SSascha Wildner   *yyssp = yystate;
1317*d9805213SSascha Wildner 
1318*d9805213SSascha Wildner   if (yyss + yystacksize - 1 <= yyssp)
1319*d9805213SSascha Wildner     {
1320*d9805213SSascha Wildner       /* Get the current used size of the three stacks, in elements.  */
1321*d9805213SSascha Wildner       YYSIZE_T yysize = yyssp - yyss + 1;
1322*d9805213SSascha Wildner 
1323*d9805213SSascha Wildner #ifdef yyoverflow
1324*d9805213SSascha Wildner       {
1325*d9805213SSascha Wildner         /* Give user a chance to reallocate the stack.  Use copies of
1326*d9805213SSascha Wildner            these so that the &'s don't force the real ones into
1327*d9805213SSascha Wildner            memory.  */
1328*d9805213SSascha Wildner         YYSTYPE *yyvs1 = yyvs;
1329*d9805213SSascha Wildner         yytype_int16 *yyss1 = yyss;
1330*d9805213SSascha Wildner 
1331*d9805213SSascha Wildner         /* Each stack pointer address is followed by the size of the
1332*d9805213SSascha Wildner            data in use in that stack, in bytes.  This used to be a
1333*d9805213SSascha Wildner            conditional around just the two extra args, but that might
1334*d9805213SSascha Wildner            be undefined if yyoverflow is a macro.  */
1335*d9805213SSascha Wildner         yyoverflow (YY_("memory exhausted"),
1336*d9805213SSascha Wildner                     &yyss1, yysize * sizeof (*yyssp),
1337*d9805213SSascha Wildner                     &yyvs1, yysize * sizeof (*yyvsp),
1338*d9805213SSascha Wildner                     &yystacksize);
1339*d9805213SSascha Wildner 
1340*d9805213SSascha Wildner         yyss = yyss1;
1341*d9805213SSascha Wildner         yyvs = yyvs1;
1342*d9805213SSascha Wildner       }
1343*d9805213SSascha Wildner #else /* no yyoverflow */
1344*d9805213SSascha Wildner # ifndef YYSTACK_RELOCATE
1345*d9805213SSascha Wildner       goto yyexhaustedlab;
1346*d9805213SSascha Wildner # else
1347*d9805213SSascha Wildner       /* Extend the stack our own way.  */
1348*d9805213SSascha Wildner       if (YYMAXDEPTH <= yystacksize)
1349*d9805213SSascha Wildner         goto yyexhaustedlab;
1350*d9805213SSascha Wildner       yystacksize *= 2;
1351*d9805213SSascha Wildner       if (YYMAXDEPTH < yystacksize)
1352*d9805213SSascha Wildner         yystacksize = YYMAXDEPTH;
1353*d9805213SSascha Wildner 
1354*d9805213SSascha Wildner       {
1355*d9805213SSascha Wildner         yytype_int16 *yyss1 = yyss;
1356*d9805213SSascha Wildner         union yyalloc *yyptr =
1357*d9805213SSascha Wildner           (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1358*d9805213SSascha Wildner         if (! yyptr)
1359*d9805213SSascha Wildner           goto yyexhaustedlab;
1360*d9805213SSascha Wildner         YYSTACK_RELOCATE (yyss_alloc, yyss);
1361*d9805213SSascha Wildner         YYSTACK_RELOCATE (yyvs_alloc, yyvs);
1362*d9805213SSascha Wildner #  undef YYSTACK_RELOCATE
1363*d9805213SSascha Wildner         if (yyss1 != yyssa)
1364*d9805213SSascha Wildner           YYSTACK_FREE (yyss1);
1365*d9805213SSascha Wildner       }
1366*d9805213SSascha Wildner # endif
1367*d9805213SSascha Wildner #endif /* no yyoverflow */
1368*d9805213SSascha Wildner 
1369*d9805213SSascha Wildner       yyssp = yyss + yysize - 1;
1370*d9805213SSascha Wildner       yyvsp = yyvs + yysize - 1;
1371*d9805213SSascha Wildner 
1372*d9805213SSascha Wildner       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1373*d9805213SSascha Wildner                   (unsigned long int) yystacksize));
1374*d9805213SSascha Wildner 
1375*d9805213SSascha Wildner       if (yyss + yystacksize - 1 <= yyssp)
1376*d9805213SSascha Wildner         YYABORT;
1377*d9805213SSascha Wildner     }
1378*d9805213SSascha Wildner 
1379*d9805213SSascha Wildner   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1380*d9805213SSascha Wildner 
1381*d9805213SSascha Wildner   if (yystate == YYFINAL)
1382*d9805213SSascha Wildner     YYACCEPT;
1383*d9805213SSascha Wildner 
1384*d9805213SSascha Wildner   goto yybackup;
1385*d9805213SSascha Wildner 
1386*d9805213SSascha Wildner /*-----------.
1387*d9805213SSascha Wildner | yybackup.  |
1388*d9805213SSascha Wildner `-----------*/
1389*d9805213SSascha Wildner yybackup:
1390*d9805213SSascha Wildner 
1391*d9805213SSascha Wildner   /* Do appropriate processing given the current state.  Read a
1392*d9805213SSascha Wildner      lookahead token if we need one and don't already have one.  */
1393*d9805213SSascha Wildner 
1394*d9805213SSascha Wildner   /* First try to decide what to do without reference to lookahead token.  */
1395*d9805213SSascha Wildner   yyn = yypact[yystate];
1396*d9805213SSascha Wildner   if (yypact_value_is_default (yyn))
1397*d9805213SSascha Wildner     goto yydefault;
1398*d9805213SSascha Wildner 
1399*d9805213SSascha Wildner   /* Not known => get a lookahead token if don't already have one.  */
1400*d9805213SSascha Wildner 
1401*d9805213SSascha Wildner   /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
1402*d9805213SSascha Wildner   if (yychar == YYEMPTY)
1403*d9805213SSascha Wildner     {
1404*d9805213SSascha Wildner       YYDPRINTF ((stderr, "Reading a token: "));
1405*d9805213SSascha Wildner       yychar = yylex ();
1406*d9805213SSascha Wildner     }
1407*d9805213SSascha Wildner 
1408*d9805213SSascha Wildner   if (yychar <= YYEOF)
1409*d9805213SSascha Wildner     {
1410*d9805213SSascha Wildner       yychar = yytoken = YYEOF;
1411*d9805213SSascha Wildner       YYDPRINTF ((stderr, "Now at end of input.\n"));
1412*d9805213SSascha Wildner     }
1413*d9805213SSascha Wildner   else
1414*d9805213SSascha Wildner     {
1415*d9805213SSascha Wildner       yytoken = YYTRANSLATE (yychar);
1416*d9805213SSascha Wildner       YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
1417*d9805213SSascha Wildner     }
1418*d9805213SSascha Wildner 
1419*d9805213SSascha Wildner   /* If the proper action on seeing token YYTOKEN is to reduce or to
1420*d9805213SSascha Wildner      detect an error, take that action.  */
1421*d9805213SSascha Wildner   yyn += yytoken;
1422*d9805213SSascha Wildner   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1423*d9805213SSascha Wildner     goto yydefault;
1424*d9805213SSascha Wildner   yyn = yytable[yyn];
1425*d9805213SSascha Wildner   if (yyn <= 0)
1426*d9805213SSascha Wildner     {
1427*d9805213SSascha Wildner       if (yytable_value_is_error (yyn))
1428*d9805213SSascha Wildner         goto yyerrlab;
1429*d9805213SSascha Wildner       yyn = -yyn;
1430*d9805213SSascha Wildner       goto yyreduce;
1431*d9805213SSascha Wildner     }
1432*d9805213SSascha Wildner 
1433*d9805213SSascha Wildner   /* Count tokens shifted since error; after three, turn off error
1434*d9805213SSascha Wildner      status.  */
1435*d9805213SSascha Wildner   if (yyerrstatus)
1436*d9805213SSascha Wildner     yyerrstatus--;
1437*d9805213SSascha Wildner 
1438*d9805213SSascha Wildner   /* Shift the lookahead token.  */
1439*d9805213SSascha Wildner   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1440*d9805213SSascha Wildner 
1441*d9805213SSascha Wildner   /* Discard the shifted token.  */
1442*d9805213SSascha Wildner   yychar = YYEMPTY;
1443*d9805213SSascha Wildner 
1444*d9805213SSascha Wildner   yystate = yyn;
1445*d9805213SSascha Wildner   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1446*d9805213SSascha Wildner   *++yyvsp = yylval;
1447*d9805213SSascha Wildner   YY_IGNORE_MAYBE_UNINITIALIZED_END
1448*d9805213SSascha Wildner 
1449*d9805213SSascha Wildner   goto yynewstate;
1450*d9805213SSascha Wildner 
1451*d9805213SSascha Wildner 
1452*d9805213SSascha Wildner /*-----------------------------------------------------------.
1453*d9805213SSascha Wildner | yydefault -- do the default action for the current state.  |
1454*d9805213SSascha Wildner `-----------------------------------------------------------*/
1455*d9805213SSascha Wildner yydefault:
1456*d9805213SSascha Wildner   yyn = yydefact[yystate];
1457*d9805213SSascha Wildner   if (yyn == 0)
1458*d9805213SSascha Wildner     goto yyerrlab;
1459*d9805213SSascha Wildner   goto yyreduce;
1460*d9805213SSascha Wildner 
1461*d9805213SSascha Wildner 
1462*d9805213SSascha Wildner /*-----------------------------.
1463*d9805213SSascha Wildner | yyreduce -- Do a reduction.  |
1464*d9805213SSascha Wildner `-----------------------------*/
1465*d9805213SSascha Wildner yyreduce:
1466*d9805213SSascha Wildner   /* yyn is the number of a rule to reduce with.  */
1467*d9805213SSascha Wildner   yylen = yyr2[yyn];
1468*d9805213SSascha Wildner 
1469*d9805213SSascha Wildner   /* If YYLEN is nonzero, implement the default value of the action:
1470*d9805213SSascha Wildner      '$$ = $1'.
1471*d9805213SSascha Wildner 
1472*d9805213SSascha Wildner      Otherwise, the following line sets YYVAL to garbage.
1473*d9805213SSascha Wildner      This behavior is undocumented and Bison
1474*d9805213SSascha Wildner      users should not rely upon it.  Assigning to YYVAL
1475*d9805213SSascha Wildner      unconditionally makes the parser a bit smaller, and it avoids a
1476*d9805213SSascha Wildner      GCC warning that YYVAL may be used uninitialized.  */
1477*d9805213SSascha Wildner   yyval = yyvsp[1-yylen];
1478*d9805213SSascha Wildner 
1479*d9805213SSascha Wildner 
1480*d9805213SSascha Wildner   YY_REDUCE_PRINT (yyn);
1481*d9805213SSascha Wildner   switch (yyn)
1482*d9805213SSascha Wildner     {
1483*d9805213SSascha Wildner         case 2:
1484*d9805213SSascha Wildner #line 119 "parse.y" /* yacc.c:1646  */
1485*d9805213SSascha Wildner     { /* add default rule */
1486*d9805213SSascha Wildner 			int def_rule;
1487*d9805213SSascha Wildner 
1488*d9805213SSascha Wildner 			pat = cclinit();
1489*d9805213SSascha Wildner 			cclnegate( pat );
1490*d9805213SSascha Wildner 
1491*d9805213SSascha Wildner 			def_rule = mkstate( -pat );
1492*d9805213SSascha Wildner 
1493*d9805213SSascha Wildner 			/* Remember the number of the default rule so we
1494*d9805213SSascha Wildner 			 * don't generate "can't match" warnings for it.
1495*d9805213SSascha Wildner 			 */
1496*d9805213SSascha Wildner 			default_rule = num_rules;
1497*d9805213SSascha Wildner 
1498*d9805213SSascha Wildner 			finish_rule( def_rule, false, 0, 0, 0);
1499*d9805213SSascha Wildner 
1500*d9805213SSascha Wildner 			for ( i = 1; i <= lastsc; ++i )
1501*d9805213SSascha Wildner 				scset[i] = mkbranch( scset[i], def_rule );
1502*d9805213SSascha Wildner 
1503*d9805213SSascha Wildner 			if ( spprdflt )
1504*d9805213SSascha Wildner 				add_action(
1505*d9805213SSascha Wildner 				"YY_FATAL_ERROR( \"flex scanner jammed\" )" );
1506*d9805213SSascha Wildner 			else
1507*d9805213SSascha Wildner 				add_action( "ECHO" );
1508*d9805213SSascha Wildner 
1509*d9805213SSascha Wildner 			add_action( ";\n\tYY_BREAK]]\n" );
1510*d9805213SSascha Wildner 			}
1511*d9805213SSascha Wildner #line 1512 "parse.c" /* yacc.c:1646  */
1512*d9805213SSascha Wildner     break;
1513*d9805213SSascha Wildner 
1514*d9805213SSascha Wildner   case 3:
1515*d9805213SSascha Wildner #line 148 "parse.y" /* yacc.c:1646  */
1516*d9805213SSascha Wildner     { /* initialize for processing rules */
1517*d9805213SSascha Wildner 
1518*d9805213SSascha Wildner 			/* Create default DFA start condition. */
1519*d9805213SSascha Wildner 			scinstal( "INITIAL", false );
1520*d9805213SSascha Wildner 			}
1521*d9805213SSascha Wildner #line 1522 "parse.c" /* yacc.c:1646  */
1522*d9805213SSascha Wildner     break;
1523*d9805213SSascha Wildner 
1524*d9805213SSascha Wildner   case 7:
1525*d9805213SSascha Wildner #line 159 "parse.y" /* yacc.c:1646  */
1526*d9805213SSascha Wildner     { synerr( _("unknown error processing section 1") ); }
1527*d9805213SSascha Wildner #line 1528 "parse.c" /* yacc.c:1646  */
1528*d9805213SSascha Wildner     break;
1529*d9805213SSascha Wildner 
1530*d9805213SSascha Wildner   case 8:
1531*d9805213SSascha Wildner #line 163 "parse.y" /* yacc.c:1646  */
1532*d9805213SSascha Wildner     {
1533*d9805213SSascha Wildner 			check_options();
1534*d9805213SSascha Wildner 			scon_stk = allocate_integer_array( lastsc + 1 );
1535*d9805213SSascha Wildner 			scon_stk_ptr = 0;
1536*d9805213SSascha Wildner 			}
1537*d9805213SSascha Wildner #line 1538 "parse.c" /* yacc.c:1646  */
1538*d9805213SSascha Wildner     break;
1539*d9805213SSascha Wildner 
1540*d9805213SSascha Wildner   case 9:
1541*d9805213SSascha Wildner #line 171 "parse.y" /* yacc.c:1646  */
1542*d9805213SSascha Wildner     { xcluflg = false; }
1543*d9805213SSascha Wildner #line 1544 "parse.c" /* yacc.c:1646  */
1544*d9805213SSascha Wildner     break;
1545*d9805213SSascha Wildner 
1546*d9805213SSascha Wildner   case 10:
1547*d9805213SSascha Wildner #line 174 "parse.y" /* yacc.c:1646  */
1548*d9805213SSascha Wildner     { xcluflg = true; }
1549*d9805213SSascha Wildner #line 1550 "parse.c" /* yacc.c:1646  */
1550*d9805213SSascha Wildner     break;
1551*d9805213SSascha Wildner 
1552*d9805213SSascha Wildner   case 11:
1553*d9805213SSascha Wildner #line 178 "parse.y" /* yacc.c:1646  */
1554*d9805213SSascha Wildner     { scinstal( nmstr, xcluflg ); }
1555*d9805213SSascha Wildner #line 1556 "parse.c" /* yacc.c:1646  */
1556*d9805213SSascha Wildner     break;
1557*d9805213SSascha Wildner 
1558*d9805213SSascha Wildner   case 12:
1559*d9805213SSascha Wildner #line 181 "parse.y" /* yacc.c:1646  */
1560*d9805213SSascha Wildner     { scinstal( nmstr, xcluflg ); }
1561*d9805213SSascha Wildner #line 1562 "parse.c" /* yacc.c:1646  */
1562*d9805213SSascha Wildner     break;
1563*d9805213SSascha Wildner 
1564*d9805213SSascha Wildner   case 13:
1565*d9805213SSascha Wildner #line 184 "parse.y" /* yacc.c:1646  */
1566*d9805213SSascha Wildner     { synerr( _("bad start condition list") ); }
1567*d9805213SSascha Wildner #line 1568 "parse.c" /* yacc.c:1646  */
1568*d9805213SSascha Wildner     break;
1569*d9805213SSascha Wildner 
1570*d9805213SSascha Wildner   case 17:
1571*d9805213SSascha Wildner #line 195 "parse.y" /* yacc.c:1646  */
1572*d9805213SSascha Wildner     {
1573*d9805213SSascha Wildner 			outfilename = xstrdup(nmstr);
1574*d9805213SSascha Wildner 			did_outfilename = 1;
1575*d9805213SSascha Wildner 			}
1576*d9805213SSascha Wildner #line 1577 "parse.c" /* yacc.c:1646  */
1577*d9805213SSascha Wildner     break;
1578*d9805213SSascha Wildner 
1579*d9805213SSascha Wildner   case 18:
1580*d9805213SSascha Wildner #line 200 "parse.y" /* yacc.c:1646  */
1581*d9805213SSascha Wildner     { extra_type = xstrdup(nmstr); }
1582*d9805213SSascha Wildner #line 1583 "parse.c" /* yacc.c:1646  */
1583*d9805213SSascha Wildner     break;
1584*d9805213SSascha Wildner 
1585*d9805213SSascha Wildner   case 19:
1586*d9805213SSascha Wildner #line 202 "parse.y" /* yacc.c:1646  */
1587*d9805213SSascha Wildner     { prefix = xstrdup(nmstr);
1588*d9805213SSascha Wildner                           if (strchr(prefix, '[') || strchr(prefix, ']'))
1589*d9805213SSascha Wildner                               flexerror(_("Prefix must not contain [ or ]")); }
1590*d9805213SSascha Wildner #line 1591 "parse.c" /* yacc.c:1646  */
1591*d9805213SSascha Wildner     break;
1592*d9805213SSascha Wildner 
1593*d9805213SSascha Wildner   case 20:
1594*d9805213SSascha Wildner #line 206 "parse.y" /* yacc.c:1646  */
1595*d9805213SSascha Wildner     { yyclass = xstrdup(nmstr); }
1596*d9805213SSascha Wildner #line 1597 "parse.c" /* yacc.c:1646  */
1597*d9805213SSascha Wildner     break;
1598*d9805213SSascha Wildner 
1599*d9805213SSascha Wildner   case 21:
1600*d9805213SSascha Wildner #line 208 "parse.y" /* yacc.c:1646  */
1601*d9805213SSascha Wildner     { headerfilename = xstrdup(nmstr); }
1602*d9805213SSascha Wildner #line 1603 "parse.c" /* yacc.c:1646  */
1603*d9805213SSascha Wildner     break;
1604*d9805213SSascha Wildner 
1605*d9805213SSascha Wildner   case 22:
1606*d9805213SSascha Wildner #line 210 "parse.y" /* yacc.c:1646  */
1607*d9805213SSascha Wildner     { tablesext = true; tablesfilename = xstrdup(nmstr); }
1608*d9805213SSascha Wildner #line 1609 "parse.c" /* yacc.c:1646  */
1609*d9805213SSascha Wildner     break;
1610*d9805213SSascha Wildner 
1611*d9805213SSascha Wildner   case 23:
1612*d9805213SSascha Wildner #line 214 "parse.y" /* yacc.c:1646  */
1613*d9805213SSascha Wildner     { scon_stk_ptr = (yyvsp[-3]); }
1614*d9805213SSascha Wildner #line 1615 "parse.c" /* yacc.c:1646  */
1615*d9805213SSascha Wildner     break;
1616*d9805213SSascha Wildner 
1617*d9805213SSascha Wildner   case 24:
1618*d9805213SSascha Wildner #line 216 "parse.y" /* yacc.c:1646  */
1619*d9805213SSascha Wildner     { scon_stk_ptr = (yyvsp[-3]); }
1620*d9805213SSascha Wildner #line 1621 "parse.c" /* yacc.c:1646  */
1621*d9805213SSascha Wildner     break;
1622*d9805213SSascha Wildner 
1623*d9805213SSascha Wildner   case 26:
1624*d9805213SSascha Wildner #line 221 "parse.y" /* yacc.c:1646  */
1625*d9805213SSascha Wildner     {
1626*d9805213SSascha Wildner 			/* Initialize for a parse of one rule. */
1627*d9805213SSascha Wildner 			trlcontxt = variable_trail_rule = varlength = false;
1628*d9805213SSascha Wildner 			trailcnt = headcnt = rulelen = 0;
1629*d9805213SSascha Wildner 			current_state_type = STATE_NORMAL;
1630*d9805213SSascha Wildner 			previous_continued_action = continued_action;
1631*d9805213SSascha Wildner 			in_rule = true;
1632*d9805213SSascha Wildner 
1633*d9805213SSascha Wildner 			new_rule();
1634*d9805213SSascha Wildner 			}
1635*d9805213SSascha Wildner #line 1636 "parse.c" /* yacc.c:1646  */
1636*d9805213SSascha Wildner     break;
1637*d9805213SSascha Wildner 
1638*d9805213SSascha Wildner   case 27:
1639*d9805213SSascha Wildner #line 234 "parse.y" /* yacc.c:1646  */
1640*d9805213SSascha Wildner     {
1641*d9805213SSascha Wildner 			pat = (yyvsp[0]);
1642*d9805213SSascha Wildner 			finish_rule( pat, variable_trail_rule,
1643*d9805213SSascha Wildner 				headcnt, trailcnt , previous_continued_action);
1644*d9805213SSascha Wildner 
1645*d9805213SSascha Wildner 			if ( scon_stk_ptr > 0 )
1646*d9805213SSascha Wildner 				{
1647*d9805213SSascha Wildner 				for ( i = 1; i <= scon_stk_ptr; ++i )
1648*d9805213SSascha Wildner 					scbol[scon_stk[i]] =
1649*d9805213SSascha Wildner 						mkbranch( scbol[scon_stk[i]],
1650*d9805213SSascha Wildner 								pat );
1651*d9805213SSascha Wildner 				}
1652*d9805213SSascha Wildner 
1653*d9805213SSascha Wildner 			else
1654*d9805213SSascha Wildner 				{
1655*d9805213SSascha Wildner 				/* Add to all non-exclusive start conditions,
1656*d9805213SSascha Wildner 				 * including the default (0) start condition.
1657*d9805213SSascha Wildner 				 */
1658*d9805213SSascha Wildner 
1659*d9805213SSascha Wildner 				for ( i = 1; i <= lastsc; ++i )
1660*d9805213SSascha Wildner 					if ( ! scxclu[i] )
1661*d9805213SSascha Wildner 						scbol[i] = mkbranch( scbol[i],
1662*d9805213SSascha Wildner 									pat );
1663*d9805213SSascha Wildner 				}
1664*d9805213SSascha Wildner 
1665*d9805213SSascha Wildner 			if ( ! bol_needed )
1666*d9805213SSascha Wildner 				{
1667*d9805213SSascha Wildner 				bol_needed = true;
1668*d9805213SSascha Wildner 
1669*d9805213SSascha Wildner 				if ( performance_report > 1 )
1670*d9805213SSascha Wildner 					pinpoint_message(
1671*d9805213SSascha Wildner 			"'^' operator results in sub-optimal performance" );
1672*d9805213SSascha Wildner 				}
1673*d9805213SSascha Wildner 			}
1674*d9805213SSascha Wildner #line 1675 "parse.c" /* yacc.c:1646  */
1675*d9805213SSascha Wildner     break;
1676*d9805213SSascha Wildner 
1677*d9805213SSascha Wildner   case 28:
1678*d9805213SSascha Wildner #line 270 "parse.y" /* yacc.c:1646  */
1679*d9805213SSascha Wildner     {
1680*d9805213SSascha Wildner 			pat = (yyvsp[0]);
1681*d9805213SSascha Wildner 			finish_rule( pat, variable_trail_rule,
1682*d9805213SSascha Wildner 				headcnt, trailcnt , previous_continued_action);
1683*d9805213SSascha Wildner 
1684*d9805213SSascha Wildner 			if ( scon_stk_ptr > 0 )
1685*d9805213SSascha Wildner 				{
1686*d9805213SSascha Wildner 				for ( i = 1; i <= scon_stk_ptr; ++i )
1687*d9805213SSascha Wildner 					scset[scon_stk[i]] =
1688*d9805213SSascha Wildner 						mkbranch( scset[scon_stk[i]],
1689*d9805213SSascha Wildner 								pat );
1690*d9805213SSascha Wildner 				}
1691*d9805213SSascha Wildner 
1692*d9805213SSascha Wildner 			else
1693*d9805213SSascha Wildner 				{
1694*d9805213SSascha Wildner 				for ( i = 1; i <= lastsc; ++i )
1695*d9805213SSascha Wildner 					if ( ! scxclu[i] )
1696*d9805213SSascha Wildner 						scset[i] =
1697*d9805213SSascha Wildner 							mkbranch( scset[i],
1698*d9805213SSascha Wildner 								pat );
1699*d9805213SSascha Wildner 				}
1700*d9805213SSascha Wildner 			}
1701*d9805213SSascha Wildner #line 1702 "parse.c" /* yacc.c:1646  */
1702*d9805213SSascha Wildner     break;
1703*d9805213SSascha Wildner 
1704*d9805213SSascha Wildner   case 29:
1705*d9805213SSascha Wildner #line 294 "parse.y" /* yacc.c:1646  */
1706*d9805213SSascha Wildner     {
1707*d9805213SSascha Wildner 			if ( scon_stk_ptr > 0 )
1708*d9805213SSascha Wildner 				build_eof_action();
1709*d9805213SSascha Wildner 
1710*d9805213SSascha Wildner 			else
1711*d9805213SSascha Wildner 				{
1712*d9805213SSascha Wildner 				/* This EOF applies to all start conditions
1713*d9805213SSascha Wildner 				 * which don't already have EOF actions.
1714*d9805213SSascha Wildner 				 */
1715*d9805213SSascha Wildner 				for ( i = 1; i <= lastsc; ++i )
1716*d9805213SSascha Wildner 					if ( ! sceof[i] )
1717*d9805213SSascha Wildner 						scon_stk[++scon_stk_ptr] = i;
1718*d9805213SSascha Wildner 
1719*d9805213SSascha Wildner 				if ( scon_stk_ptr == 0 )
1720*d9805213SSascha Wildner 					lwarn(
1721*d9805213SSascha Wildner 			"all start conditions already have <<EOF>> rules" );
1722*d9805213SSascha Wildner 
1723*d9805213SSascha Wildner 				else
1724*d9805213SSascha Wildner 					build_eof_action();
1725*d9805213SSascha Wildner 				}
1726*d9805213SSascha Wildner 			}
1727*d9805213SSascha Wildner #line 1728 "parse.c" /* yacc.c:1646  */
1728*d9805213SSascha Wildner     break;
1729*d9805213SSascha Wildner 
1730*d9805213SSascha Wildner   case 30:
1731*d9805213SSascha Wildner #line 317 "parse.y" /* yacc.c:1646  */
1732*d9805213SSascha Wildner     { synerr( _("unrecognized rule") ); }
1733*d9805213SSascha Wildner #line 1734 "parse.c" /* yacc.c:1646  */
1734*d9805213SSascha Wildner     break;
1735*d9805213SSascha Wildner 
1736*d9805213SSascha Wildner   case 31:
1737*d9805213SSascha Wildner #line 321 "parse.y" /* yacc.c:1646  */
1738*d9805213SSascha Wildner     { (yyval) = scon_stk_ptr; }
1739*d9805213SSascha Wildner #line 1740 "parse.c" /* yacc.c:1646  */
1740*d9805213SSascha Wildner     break;
1741*d9805213SSascha Wildner 
1742*d9805213SSascha Wildner   case 32:
1743*d9805213SSascha Wildner #line 325 "parse.y" /* yacc.c:1646  */
1744*d9805213SSascha Wildner     { (yyval) = (yyvsp[-2]); }
1745*d9805213SSascha Wildner #line 1746 "parse.c" /* yacc.c:1646  */
1746*d9805213SSascha Wildner     break;
1747*d9805213SSascha Wildner 
1748*d9805213SSascha Wildner   case 33:
1749*d9805213SSascha Wildner #line 328 "parse.y" /* yacc.c:1646  */
1750*d9805213SSascha Wildner     {
1751*d9805213SSascha Wildner 			(yyval) = scon_stk_ptr;
1752*d9805213SSascha Wildner 
1753*d9805213SSascha Wildner 			for ( i = 1; i <= lastsc; ++i )
1754*d9805213SSascha Wildner 				{
1755*d9805213SSascha Wildner 				int j;
1756*d9805213SSascha Wildner 
1757*d9805213SSascha Wildner 				for ( j = 1; j <= scon_stk_ptr; ++j )
1758*d9805213SSascha Wildner 					if ( scon_stk[j] == i )
1759*d9805213SSascha Wildner 						break;
1760*d9805213SSascha Wildner 
1761*d9805213SSascha Wildner 				if ( j > scon_stk_ptr )
1762*d9805213SSascha Wildner 					scon_stk[++scon_stk_ptr] = i;
1763*d9805213SSascha Wildner 				}
1764*d9805213SSascha Wildner 			}
1765*d9805213SSascha Wildner #line 1766 "parse.c" /* yacc.c:1646  */
1766*d9805213SSascha Wildner     break;
1767*d9805213SSascha Wildner 
1768*d9805213SSascha Wildner   case 34:
1769*d9805213SSascha Wildner #line 345 "parse.y" /* yacc.c:1646  */
1770*d9805213SSascha Wildner     { (yyval) = scon_stk_ptr; }
1771*d9805213SSascha Wildner #line 1772 "parse.c" /* yacc.c:1646  */
1772*d9805213SSascha Wildner     break;
1773*d9805213SSascha Wildner 
1774*d9805213SSascha Wildner   case 37:
1775*d9805213SSascha Wildner #line 353 "parse.y" /* yacc.c:1646  */
1776*d9805213SSascha Wildner     { synerr( _("bad start condition list") ); }
1777*d9805213SSascha Wildner #line 1778 "parse.c" /* yacc.c:1646  */
1778*d9805213SSascha Wildner     break;
1779*d9805213SSascha Wildner 
1780*d9805213SSascha Wildner   case 38:
1781*d9805213SSascha Wildner #line 357 "parse.y" /* yacc.c:1646  */
1782*d9805213SSascha Wildner     {
1783*d9805213SSascha Wildner 			if ( (scnum = sclookup( nmstr )) == 0 )
1784*d9805213SSascha Wildner 				format_pinpoint_message(
1785*d9805213SSascha Wildner 					"undeclared start condition %s",
1786*d9805213SSascha Wildner 					nmstr );
1787*d9805213SSascha Wildner 			else
1788*d9805213SSascha Wildner 				{
1789*d9805213SSascha Wildner 				for ( i = 1; i <= scon_stk_ptr; ++i )
1790*d9805213SSascha Wildner 					if ( scon_stk[i] == scnum )
1791*d9805213SSascha Wildner 						{
1792*d9805213SSascha Wildner 						format_warn(
1793*d9805213SSascha Wildner 							"<%s> specified twice",
1794*d9805213SSascha Wildner 							scname[scnum] );
1795*d9805213SSascha Wildner 						break;
1796*d9805213SSascha Wildner 						}
1797*d9805213SSascha Wildner 
1798*d9805213SSascha Wildner 				if ( i > scon_stk_ptr )
1799*d9805213SSascha Wildner 					scon_stk[++scon_stk_ptr] = scnum;
1800*d9805213SSascha Wildner 				}
1801*d9805213SSascha Wildner 			}
1802*d9805213SSascha Wildner #line 1803 "parse.c" /* yacc.c:1646  */
1803*d9805213SSascha Wildner     break;
1804*d9805213SSascha Wildner 
1805*d9805213SSascha Wildner   case 39:
1806*d9805213SSascha Wildner #line 380 "parse.y" /* yacc.c:1646  */
1807*d9805213SSascha Wildner     {
1808*d9805213SSascha Wildner 			if ( transchar[lastst[(yyvsp[0])]] != SYM_EPSILON )
1809*d9805213SSascha Wildner 				/* Provide final transition \now/ so it
1810*d9805213SSascha Wildner 				 * will be marked as a trailing context
1811*d9805213SSascha Wildner 				 * state.
1812*d9805213SSascha Wildner 				 */
1813*d9805213SSascha Wildner 				(yyvsp[0]) = link_machines( (yyvsp[0]),
1814*d9805213SSascha Wildner 						mkstate( SYM_EPSILON ) );
1815*d9805213SSascha Wildner 
1816*d9805213SSascha Wildner 			mark_beginning_as_normal( (yyvsp[0]) );
1817*d9805213SSascha Wildner 			current_state_type = STATE_NORMAL;
1818*d9805213SSascha Wildner 
1819*d9805213SSascha Wildner 			if ( previous_continued_action )
1820*d9805213SSascha Wildner 				{
1821*d9805213SSascha Wildner 				/* We need to treat this as variable trailing
1822*d9805213SSascha Wildner 				 * context so that the backup does not happen
1823*d9805213SSascha Wildner 				 * in the action but before the action switch
1824*d9805213SSascha Wildner 				 * statement.  If the backup happens in the
1825*d9805213SSascha Wildner 				 * action, then the rules "falling into" this
1826*d9805213SSascha Wildner 				 * one's action will *also* do the backup,
1827*d9805213SSascha Wildner 				 * erroneously.
1828*d9805213SSascha Wildner 				 */
1829*d9805213SSascha Wildner 				if ( ! varlength || headcnt != 0 )
1830*d9805213SSascha Wildner 					lwarn(
1831*d9805213SSascha Wildner 		"trailing context made variable due to preceding '|' action" );
1832*d9805213SSascha Wildner 
1833*d9805213SSascha Wildner 				/* Mark as variable. */
1834*d9805213SSascha Wildner 				varlength = true;
1835*d9805213SSascha Wildner 				headcnt = 0;
1836*d9805213SSascha Wildner 
1837*d9805213SSascha Wildner 				}
1838*d9805213SSascha Wildner 
1839*d9805213SSascha Wildner 			if ( lex_compat || (varlength && headcnt == 0) )
1840*d9805213SSascha Wildner 				{ /* variable trailing context rule */
1841*d9805213SSascha Wildner 				/* Mark the first part of the rule as the
1842*d9805213SSascha Wildner 				 * accepting "head" part of a trailing
1843*d9805213SSascha Wildner 				 * context rule.
1844*d9805213SSascha Wildner 				 *
1845*d9805213SSascha Wildner 				 * By the way, we didn't do this at the
1846*d9805213SSascha Wildner 				 * beginning of this production because back
1847*d9805213SSascha Wildner 				 * then current_state_type was set up for a
1848*d9805213SSascha Wildner 				 * trail rule, and add_accept() can create
1849*d9805213SSascha Wildner 				 * a new state ...
1850*d9805213SSascha Wildner 				 */
1851*d9805213SSascha Wildner 				add_accept( (yyvsp[-1]),
1852*d9805213SSascha Wildner 					num_rules | YY_TRAILING_HEAD_MASK );
1853*d9805213SSascha Wildner 				variable_trail_rule = true;
1854*d9805213SSascha Wildner 				}
1855*d9805213SSascha Wildner 
1856*d9805213SSascha Wildner 			else
1857*d9805213SSascha Wildner 				trailcnt = rulelen;
1858*d9805213SSascha Wildner 
1859*d9805213SSascha Wildner 			(yyval) = link_machines( (yyvsp[-1]), (yyvsp[0]) );
1860*d9805213SSascha Wildner 			}
1861*d9805213SSascha Wildner #line 1862 "parse.c" /* yacc.c:1646  */
1862*d9805213SSascha Wildner     break;
1863*d9805213SSascha Wildner 
1864*d9805213SSascha Wildner   case 40:
1865*d9805213SSascha Wildner #line 436 "parse.y" /* yacc.c:1646  */
1866*d9805213SSascha Wildner     { synerr( _("trailing context used twice") ); }
1867*d9805213SSascha Wildner #line 1868 "parse.c" /* yacc.c:1646  */
1868*d9805213SSascha Wildner     break;
1869*d9805213SSascha Wildner 
1870*d9805213SSascha Wildner   case 41:
1871*d9805213SSascha Wildner #line 439 "parse.y" /* yacc.c:1646  */
1872*d9805213SSascha Wildner     {
1873*d9805213SSascha Wildner 			headcnt = 0;
1874*d9805213SSascha Wildner 			trailcnt = 1;
1875*d9805213SSascha Wildner 			rulelen = 1;
1876*d9805213SSascha Wildner 			varlength = false;
1877*d9805213SSascha Wildner 
1878*d9805213SSascha Wildner 			current_state_type = STATE_TRAILING_CONTEXT;
1879*d9805213SSascha Wildner 
1880*d9805213SSascha Wildner 			if ( trlcontxt )
1881*d9805213SSascha Wildner 				{
1882*d9805213SSascha Wildner 				synerr( _("trailing context used twice") );
1883*d9805213SSascha Wildner 				(yyval) = mkstate( SYM_EPSILON );
1884*d9805213SSascha Wildner 				}
1885*d9805213SSascha Wildner 
1886*d9805213SSascha Wildner 			else if ( previous_continued_action )
1887*d9805213SSascha Wildner 				{
1888*d9805213SSascha Wildner 				/* See the comment in the rule for "re2 re"
1889*d9805213SSascha Wildner 				 * above.
1890*d9805213SSascha Wildner 				 */
1891*d9805213SSascha Wildner 				lwarn(
1892*d9805213SSascha Wildner 		"trailing context made variable due to preceding '|' action" );
1893*d9805213SSascha Wildner 
1894*d9805213SSascha Wildner 				varlength = true;
1895*d9805213SSascha Wildner 				}
1896*d9805213SSascha Wildner 
1897*d9805213SSascha Wildner 			if ( lex_compat || varlength )
1898*d9805213SSascha Wildner 				{
1899*d9805213SSascha Wildner 				/* Again, see the comment in the rule for
1900*d9805213SSascha Wildner 				 * "re2 re" above.
1901*d9805213SSascha Wildner 				 */
1902*d9805213SSascha Wildner 				add_accept( (yyvsp[-1]),
1903*d9805213SSascha Wildner 					num_rules | YY_TRAILING_HEAD_MASK );
1904*d9805213SSascha Wildner 				variable_trail_rule = true;
1905*d9805213SSascha Wildner 				}
1906*d9805213SSascha Wildner 
1907*d9805213SSascha Wildner 			trlcontxt = true;
1908*d9805213SSascha Wildner 
1909*d9805213SSascha Wildner 			eps = mkstate( SYM_EPSILON );
1910*d9805213SSascha Wildner 			(yyval) = link_machines( (yyvsp[-1]),
1911*d9805213SSascha Wildner 				link_machines( eps, mkstate( '\n' ) ) );
1912*d9805213SSascha Wildner 			}
1913*d9805213SSascha Wildner #line 1914 "parse.c" /* yacc.c:1646  */
1914*d9805213SSascha Wildner     break;
1915*d9805213SSascha Wildner 
1916*d9805213SSascha Wildner   case 42:
1917*d9805213SSascha Wildner #line 482 "parse.y" /* yacc.c:1646  */
1918*d9805213SSascha Wildner     {
1919*d9805213SSascha Wildner 			(yyval) = (yyvsp[0]);
1920*d9805213SSascha Wildner 
1921*d9805213SSascha Wildner 			if ( trlcontxt )
1922*d9805213SSascha Wildner 				{
1923*d9805213SSascha Wildner 				if ( lex_compat || (varlength && headcnt == 0) )
1924*d9805213SSascha Wildner 					/* Both head and trail are
1925*d9805213SSascha Wildner 					 * variable-length.
1926*d9805213SSascha Wildner 					 */
1927*d9805213SSascha Wildner 					variable_trail_rule = true;
1928*d9805213SSascha Wildner 				else
1929*d9805213SSascha Wildner 					trailcnt = rulelen;
1930*d9805213SSascha Wildner 				}
1931*d9805213SSascha Wildner 			}
1932*d9805213SSascha Wildner #line 1933 "parse.c" /* yacc.c:1646  */
1933*d9805213SSascha Wildner     break;
1934*d9805213SSascha Wildner 
1935*d9805213SSascha Wildner   case 43:
1936*d9805213SSascha Wildner #line 500 "parse.y" /* yacc.c:1646  */
1937*d9805213SSascha Wildner     {
1938*d9805213SSascha Wildner 			varlength = true;
1939*d9805213SSascha Wildner 			(yyval) = mkor( (yyvsp[-2]), (yyvsp[0]) );
1940*d9805213SSascha Wildner 			}
1941*d9805213SSascha Wildner #line 1942 "parse.c" /* yacc.c:1646  */
1942*d9805213SSascha Wildner     break;
1943*d9805213SSascha Wildner 
1944*d9805213SSascha Wildner   case 44:
1945*d9805213SSascha Wildner #line 506 "parse.y" /* yacc.c:1646  */
1946*d9805213SSascha Wildner     { (yyval) = (yyvsp[0]); }
1947*d9805213SSascha Wildner #line 1948 "parse.c" /* yacc.c:1646  */
1948*d9805213SSascha Wildner     break;
1949*d9805213SSascha Wildner 
1950*d9805213SSascha Wildner   case 45:
1951*d9805213SSascha Wildner #line 511 "parse.y" /* yacc.c:1646  */
1952*d9805213SSascha Wildner     {
1953*d9805213SSascha Wildner 			/* This rule is written separately so the
1954*d9805213SSascha Wildner 			 * reduction will occur before the trailing
1955*d9805213SSascha Wildner 			 * series is parsed.
1956*d9805213SSascha Wildner 			 */
1957*d9805213SSascha Wildner 
1958*d9805213SSascha Wildner 			if ( trlcontxt )
1959*d9805213SSascha Wildner 				synerr( _("trailing context used twice") );
1960*d9805213SSascha Wildner 			else
1961*d9805213SSascha Wildner 				trlcontxt = true;
1962*d9805213SSascha Wildner 
1963*d9805213SSascha Wildner 			if ( varlength )
1964*d9805213SSascha Wildner 				/* We hope the trailing context is
1965*d9805213SSascha Wildner 				 * fixed-length.
1966*d9805213SSascha Wildner 				 */
1967*d9805213SSascha Wildner 				varlength = false;
1968*d9805213SSascha Wildner 			else
1969*d9805213SSascha Wildner 				headcnt = rulelen;
1970*d9805213SSascha Wildner 
1971*d9805213SSascha Wildner 			rulelen = 0;
1972*d9805213SSascha Wildner 
1973*d9805213SSascha Wildner 			current_state_type = STATE_TRAILING_CONTEXT;
1974*d9805213SSascha Wildner 			(yyval) = (yyvsp[-1]);
1975*d9805213SSascha Wildner 			}
1976*d9805213SSascha Wildner #line 1977 "parse.c" /* yacc.c:1646  */
1977*d9805213SSascha Wildner     break;
1978*d9805213SSascha Wildner 
1979*d9805213SSascha Wildner   case 46:
1980*d9805213SSascha Wildner #line 538 "parse.y" /* yacc.c:1646  */
1981*d9805213SSascha Wildner     {
1982*d9805213SSascha Wildner 			/* This is where concatenation of adjacent patterns
1983*d9805213SSascha Wildner 			 * gets done.
1984*d9805213SSascha Wildner 			 */
1985*d9805213SSascha Wildner 			(yyval) = link_machines( (yyvsp[-1]), (yyvsp[0]) );
1986*d9805213SSascha Wildner 			}
1987*d9805213SSascha Wildner #line 1988 "parse.c" /* yacc.c:1646  */
1988*d9805213SSascha Wildner     break;
1989*d9805213SSascha Wildner 
1990*d9805213SSascha Wildner   case 47:
1991*d9805213SSascha Wildner #line 546 "parse.y" /* yacc.c:1646  */
1992*d9805213SSascha Wildner     { (yyval) = (yyvsp[0]); }
1993*d9805213SSascha Wildner #line 1994 "parse.c" /* yacc.c:1646  */
1994*d9805213SSascha Wildner     break;
1995*d9805213SSascha Wildner 
1996*d9805213SSascha Wildner   case 48:
1997*d9805213SSascha Wildner #line 549 "parse.y" /* yacc.c:1646  */
1998*d9805213SSascha Wildner     {
1999*d9805213SSascha Wildner 			varlength = true;
2000*d9805213SSascha Wildner 
2001*d9805213SSascha Wildner 			if ( (yyvsp[-3]) > (yyvsp[-1]) || (yyvsp[-3]) < 0 )
2002*d9805213SSascha Wildner 				{
2003*d9805213SSascha Wildner 				synerr( _("bad iteration values") );
2004*d9805213SSascha Wildner 				(yyval) = (yyvsp[-5]);
2005*d9805213SSascha Wildner 				}
2006*d9805213SSascha Wildner 			else
2007*d9805213SSascha Wildner 				{
2008*d9805213SSascha Wildner 				if ( (yyvsp[-3]) == 0 )
2009*d9805213SSascha Wildner 					{
2010*d9805213SSascha Wildner 					if ( (yyvsp[-1]) <= 0 )
2011*d9805213SSascha Wildner 						{
2012*d9805213SSascha Wildner 						synerr(
2013*d9805213SSascha Wildner 						_("bad iteration values") );
2014*d9805213SSascha Wildner 						(yyval) = (yyvsp[-5]);
2015*d9805213SSascha Wildner 						}
2016*d9805213SSascha Wildner 					else
2017*d9805213SSascha Wildner 						(yyval) = mkopt(
2018*d9805213SSascha Wildner 							mkrep( (yyvsp[-5]), 1, (yyvsp[-1]) ) );
2019*d9805213SSascha Wildner 					}
2020*d9805213SSascha Wildner 				else
2021*d9805213SSascha Wildner 					(yyval) = mkrep( (yyvsp[-5]), (yyvsp[-3]), (yyvsp[-1]) );
2022*d9805213SSascha Wildner 				}
2023*d9805213SSascha Wildner 			}
2024*d9805213SSascha Wildner #line 2025 "parse.c" /* yacc.c:1646  */
2025*d9805213SSascha Wildner     break;
2026*d9805213SSascha Wildner 
2027*d9805213SSascha Wildner   case 49:
2028*d9805213SSascha Wildner #line 577 "parse.y" /* yacc.c:1646  */
2029*d9805213SSascha Wildner     {
2030*d9805213SSascha Wildner 			varlength = true;
2031*d9805213SSascha Wildner 
2032*d9805213SSascha Wildner 			if ( (yyvsp[-2]) <= 0 )
2033*d9805213SSascha Wildner 				{
2034*d9805213SSascha Wildner 				synerr( _("iteration value must be positive") );
2035*d9805213SSascha Wildner 				(yyval) = (yyvsp[-4]);
2036*d9805213SSascha Wildner 				}
2037*d9805213SSascha Wildner 
2038*d9805213SSascha Wildner 			else
2039*d9805213SSascha Wildner 				(yyval) = mkrep( (yyvsp[-4]), (yyvsp[-2]), INFINITE_REPEAT );
2040*d9805213SSascha Wildner 			}
2041*d9805213SSascha Wildner #line 2042 "parse.c" /* yacc.c:1646  */
2042*d9805213SSascha Wildner     break;
2043*d9805213SSascha Wildner 
2044*d9805213SSascha Wildner   case 50:
2045*d9805213SSascha Wildner #line 591 "parse.y" /* yacc.c:1646  */
2046*d9805213SSascha Wildner     {
2047*d9805213SSascha Wildner 			/* The series could be something like "(foo)",
2048*d9805213SSascha Wildner 			 * in which case we have no idea what its length
2049*d9805213SSascha Wildner 			 * is, so we punt here.
2050*d9805213SSascha Wildner 			 */
2051*d9805213SSascha Wildner 			varlength = true;
2052*d9805213SSascha Wildner 
2053*d9805213SSascha Wildner 			if ( (yyvsp[-1]) <= 0 )
2054*d9805213SSascha Wildner 				{
2055*d9805213SSascha Wildner 				  synerr( _("iteration value must be positive")
2056*d9805213SSascha Wildner 					  );
2057*d9805213SSascha Wildner 				(yyval) = (yyvsp[-3]);
2058*d9805213SSascha Wildner 				}
2059*d9805213SSascha Wildner 
2060*d9805213SSascha Wildner 			else
2061*d9805213SSascha Wildner 				(yyval) = link_machines( (yyvsp[-3]),
2062*d9805213SSascha Wildner 						copysingl( (yyvsp[-3]), (yyvsp[-1]) - 1 ) );
2063*d9805213SSascha Wildner 			}
2064*d9805213SSascha Wildner #line 2065 "parse.c" /* yacc.c:1646  */
2065*d9805213SSascha Wildner     break;
2066*d9805213SSascha Wildner 
2067*d9805213SSascha Wildner   case 51:
2068*d9805213SSascha Wildner #line 613 "parse.y" /* yacc.c:1646  */
2069*d9805213SSascha Wildner     {
2070*d9805213SSascha Wildner 			varlength = true;
2071*d9805213SSascha Wildner 
2072*d9805213SSascha Wildner 			(yyval) = mkclos( (yyvsp[-1]) );
2073*d9805213SSascha Wildner 			}
2074*d9805213SSascha Wildner #line 2075 "parse.c" /* yacc.c:1646  */
2075*d9805213SSascha Wildner     break;
2076*d9805213SSascha Wildner 
2077*d9805213SSascha Wildner   case 52:
2078*d9805213SSascha Wildner #line 620 "parse.y" /* yacc.c:1646  */
2079*d9805213SSascha Wildner     {
2080*d9805213SSascha Wildner 			varlength = true;
2081*d9805213SSascha Wildner 			(yyval) = mkposcl( (yyvsp[-1]) );
2082*d9805213SSascha Wildner 			}
2083*d9805213SSascha Wildner #line 2084 "parse.c" /* yacc.c:1646  */
2084*d9805213SSascha Wildner     break;
2085*d9805213SSascha Wildner 
2086*d9805213SSascha Wildner   case 53:
2087*d9805213SSascha Wildner #line 626 "parse.y" /* yacc.c:1646  */
2088*d9805213SSascha Wildner     {
2089*d9805213SSascha Wildner 			varlength = true;
2090*d9805213SSascha Wildner 			(yyval) = mkopt( (yyvsp[-1]) );
2091*d9805213SSascha Wildner 			}
2092*d9805213SSascha Wildner #line 2093 "parse.c" /* yacc.c:1646  */
2093*d9805213SSascha Wildner     break;
2094*d9805213SSascha Wildner 
2095*d9805213SSascha Wildner   case 54:
2096*d9805213SSascha Wildner #line 632 "parse.y" /* yacc.c:1646  */
2097*d9805213SSascha Wildner     {
2098*d9805213SSascha Wildner 			varlength = true;
2099*d9805213SSascha Wildner 
2100*d9805213SSascha Wildner 			if ( (yyvsp[-3]) > (yyvsp[-1]) || (yyvsp[-3]) < 0 )
2101*d9805213SSascha Wildner 				{
2102*d9805213SSascha Wildner 				synerr( _("bad iteration values") );
2103*d9805213SSascha Wildner 				(yyval) = (yyvsp[-5]);
2104*d9805213SSascha Wildner 				}
2105*d9805213SSascha Wildner 			else
2106*d9805213SSascha Wildner 				{
2107*d9805213SSascha Wildner 				if ( (yyvsp[-3]) == 0 )
2108*d9805213SSascha Wildner 					{
2109*d9805213SSascha Wildner 					if ( (yyvsp[-1]) <= 0 )
2110*d9805213SSascha Wildner 						{
2111*d9805213SSascha Wildner 						synerr(
2112*d9805213SSascha Wildner 						_("bad iteration values") );
2113*d9805213SSascha Wildner 						(yyval) = (yyvsp[-5]);
2114*d9805213SSascha Wildner 						}
2115*d9805213SSascha Wildner 					else
2116*d9805213SSascha Wildner 						(yyval) = mkopt(
2117*d9805213SSascha Wildner 							mkrep( (yyvsp[-5]), 1, (yyvsp[-1]) ) );
2118*d9805213SSascha Wildner 					}
2119*d9805213SSascha Wildner 				else
2120*d9805213SSascha Wildner 					(yyval) = mkrep( (yyvsp[-5]), (yyvsp[-3]), (yyvsp[-1]) );
2121*d9805213SSascha Wildner 				}
2122*d9805213SSascha Wildner 			}
2123*d9805213SSascha Wildner #line 2124 "parse.c" /* yacc.c:1646  */
2124*d9805213SSascha Wildner     break;
2125*d9805213SSascha Wildner 
2126*d9805213SSascha Wildner   case 55:
2127*d9805213SSascha Wildner #line 660 "parse.y" /* yacc.c:1646  */
2128*d9805213SSascha Wildner     {
2129*d9805213SSascha Wildner 			varlength = true;
2130*d9805213SSascha Wildner 
2131*d9805213SSascha Wildner 			if ( (yyvsp[-2]) <= 0 )
2132*d9805213SSascha Wildner 				{
2133*d9805213SSascha Wildner 				synerr( _("iteration value must be positive") );
2134*d9805213SSascha Wildner 				(yyval) = (yyvsp[-4]);
2135*d9805213SSascha Wildner 				}
2136*d9805213SSascha Wildner 
2137*d9805213SSascha Wildner 			else
2138*d9805213SSascha Wildner 				(yyval) = mkrep( (yyvsp[-4]), (yyvsp[-2]), INFINITE_REPEAT );
2139*d9805213SSascha Wildner 			}
2140*d9805213SSascha Wildner #line 2141 "parse.c" /* yacc.c:1646  */
2141*d9805213SSascha Wildner     break;
2142*d9805213SSascha Wildner 
2143*d9805213SSascha Wildner   case 56:
2144*d9805213SSascha Wildner #line 674 "parse.y" /* yacc.c:1646  */
2145*d9805213SSascha Wildner     {
2146*d9805213SSascha Wildner 			/* The singleton could be something like "(foo)",
2147*d9805213SSascha Wildner 			 * in which case we have no idea what its length
2148*d9805213SSascha Wildner 			 * is, so we punt here.
2149*d9805213SSascha Wildner 			 */
2150*d9805213SSascha Wildner 			varlength = true;
2151*d9805213SSascha Wildner 
2152*d9805213SSascha Wildner 			if ( (yyvsp[-1]) <= 0 )
2153*d9805213SSascha Wildner 				{
2154*d9805213SSascha Wildner 				synerr( _("iteration value must be positive") );
2155*d9805213SSascha Wildner 				(yyval) = (yyvsp[-3]);
2156*d9805213SSascha Wildner 				}
2157*d9805213SSascha Wildner 
2158*d9805213SSascha Wildner 			else
2159*d9805213SSascha Wildner 				(yyval) = link_machines( (yyvsp[-3]),
2160*d9805213SSascha Wildner 						copysingl( (yyvsp[-3]), (yyvsp[-1]) - 1 ) );
2161*d9805213SSascha Wildner 			}
2162*d9805213SSascha Wildner #line 2163 "parse.c" /* yacc.c:1646  */
2163*d9805213SSascha Wildner     break;
2164*d9805213SSascha Wildner 
2165*d9805213SSascha Wildner   case 57:
2166*d9805213SSascha Wildner #line 693 "parse.y" /* yacc.c:1646  */
2167*d9805213SSascha Wildner     {
2168*d9805213SSascha Wildner 			if ( ! madeany )
2169*d9805213SSascha Wildner 				{
2170*d9805213SSascha Wildner 				/* Create the '.' character class. */
2171*d9805213SSascha Wildner                     ccldot = cclinit();
2172*d9805213SSascha Wildner                     ccladd( ccldot, '\n' );
2173*d9805213SSascha Wildner                     cclnegate( ccldot );
2174*d9805213SSascha Wildner 
2175*d9805213SSascha Wildner                     if ( useecs )
2176*d9805213SSascha Wildner                         mkeccl( ccltbl + cclmap[ccldot],
2177*d9805213SSascha Wildner                             ccllen[ccldot], nextecm,
2178*d9805213SSascha Wildner                             ecgroup, csize, csize );
2179*d9805213SSascha Wildner 
2180*d9805213SSascha Wildner 				/* Create the (?s:'.') character class. */
2181*d9805213SSascha Wildner                     cclany = cclinit();
2182*d9805213SSascha Wildner                     cclnegate( cclany );
2183*d9805213SSascha Wildner 
2184*d9805213SSascha Wildner                     if ( useecs )
2185*d9805213SSascha Wildner                         mkeccl( ccltbl + cclmap[cclany],
2186*d9805213SSascha Wildner                             ccllen[cclany], nextecm,
2187*d9805213SSascha Wildner                             ecgroup, csize, csize );
2188*d9805213SSascha Wildner 
2189*d9805213SSascha Wildner 				madeany = true;
2190*d9805213SSascha Wildner 				}
2191*d9805213SSascha Wildner 
2192*d9805213SSascha Wildner 			++rulelen;
2193*d9805213SSascha Wildner 
2194*d9805213SSascha Wildner             if (sf_dot_all())
2195*d9805213SSascha Wildner                 (yyval) = mkstate( -cclany );
2196*d9805213SSascha Wildner             else
2197*d9805213SSascha Wildner                 (yyval) = mkstate( -ccldot );
2198*d9805213SSascha Wildner 			}
2199*d9805213SSascha Wildner #line 2200 "parse.c" /* yacc.c:1646  */
2200*d9805213SSascha Wildner     break;
2201*d9805213SSascha Wildner 
2202*d9805213SSascha Wildner   case 58:
2203*d9805213SSascha Wildner #line 727 "parse.y" /* yacc.c:1646  */
2204*d9805213SSascha Wildner     {
2205*d9805213SSascha Wildner 				/* Sort characters for fast searching.
2206*d9805213SSascha Wildner 				 */
2207*d9805213SSascha Wildner 				qsort( ccltbl + cclmap[(yyvsp[0])], (size_t) ccllen[(yyvsp[0])], sizeof (*ccltbl), cclcmp );
2208*d9805213SSascha Wildner 
2209*d9805213SSascha Wildner 			if ( useecs )
2210*d9805213SSascha Wildner 				mkeccl( ccltbl + cclmap[(yyvsp[0])], ccllen[(yyvsp[0])],
2211*d9805213SSascha Wildner 					nextecm, ecgroup, csize, csize );
2212*d9805213SSascha Wildner 
2213*d9805213SSascha Wildner 			++rulelen;
2214*d9805213SSascha Wildner 
2215*d9805213SSascha Wildner 			if (ccl_has_nl[(yyvsp[0])])
2216*d9805213SSascha Wildner 				rule_has_nl[num_rules] = true;
2217*d9805213SSascha Wildner 
2218*d9805213SSascha Wildner 			(yyval) = mkstate( -(yyvsp[0]) );
2219*d9805213SSascha Wildner 			}
2220*d9805213SSascha Wildner #line 2221 "parse.c" /* yacc.c:1646  */
2221*d9805213SSascha Wildner     break;
2222*d9805213SSascha Wildner 
2223*d9805213SSascha Wildner   case 59:
2224*d9805213SSascha Wildner #line 745 "parse.y" /* yacc.c:1646  */
2225*d9805213SSascha Wildner     {
2226*d9805213SSascha Wildner 			++rulelen;
2227*d9805213SSascha Wildner 
2228*d9805213SSascha Wildner 			if (ccl_has_nl[(yyvsp[0])])
2229*d9805213SSascha Wildner 				rule_has_nl[num_rules] = true;
2230*d9805213SSascha Wildner 
2231*d9805213SSascha Wildner 			(yyval) = mkstate( -(yyvsp[0]) );
2232*d9805213SSascha Wildner 			}
2233*d9805213SSascha Wildner #line 2234 "parse.c" /* yacc.c:1646  */
2234*d9805213SSascha Wildner     break;
2235*d9805213SSascha Wildner 
2236*d9805213SSascha Wildner   case 60:
2237*d9805213SSascha Wildner #line 755 "parse.y" /* yacc.c:1646  */
2238*d9805213SSascha Wildner     { (yyval) = (yyvsp[-1]); }
2239*d9805213SSascha Wildner #line 2240 "parse.c" /* yacc.c:1646  */
2240*d9805213SSascha Wildner     break;
2241*d9805213SSascha Wildner 
2242*d9805213SSascha Wildner   case 61:
2243*d9805213SSascha Wildner #line 758 "parse.y" /* yacc.c:1646  */
2244*d9805213SSascha Wildner     { (yyval) = (yyvsp[-1]); }
2245*d9805213SSascha Wildner #line 2246 "parse.c" /* yacc.c:1646  */
2246*d9805213SSascha Wildner     break;
2247*d9805213SSascha Wildner 
2248*d9805213SSascha Wildner   case 62:
2249*d9805213SSascha Wildner #line 761 "parse.y" /* yacc.c:1646  */
2250*d9805213SSascha Wildner     {
2251*d9805213SSascha Wildner 			++rulelen;
2252*d9805213SSascha Wildner 
2253*d9805213SSascha Wildner 			if ((yyvsp[0]) == nlch)
2254*d9805213SSascha Wildner 				rule_has_nl[num_rules] = true;
2255*d9805213SSascha Wildner 
2256*d9805213SSascha Wildner             if (sf_case_ins() && has_case((yyvsp[0])))
2257*d9805213SSascha Wildner                 /* create an alternation, as in (a|A) */
2258*d9805213SSascha Wildner                 (yyval) = mkor (mkstate((yyvsp[0])), mkstate(reverse_case((yyvsp[0]))));
2259*d9805213SSascha Wildner             else
2260*d9805213SSascha Wildner                 (yyval) = mkstate( (yyvsp[0]) );
2261*d9805213SSascha Wildner 			}
2262*d9805213SSascha Wildner #line 2263 "parse.c" /* yacc.c:1646  */
2263*d9805213SSascha Wildner     break;
2264*d9805213SSascha Wildner 
2265*d9805213SSascha Wildner   case 63:
2266*d9805213SSascha Wildner #line 775 "parse.y" /* yacc.c:1646  */
2267*d9805213SSascha Wildner     { (yyval) = ccl_set_diff  ((yyvsp[-2]), (yyvsp[0])); }
2268*d9805213SSascha Wildner #line 2269 "parse.c" /* yacc.c:1646  */
2269*d9805213SSascha Wildner     break;
2270*d9805213SSascha Wildner 
2271*d9805213SSascha Wildner   case 64:
2272*d9805213SSascha Wildner #line 776 "parse.y" /* yacc.c:1646  */
2273*d9805213SSascha Wildner     { (yyval) = ccl_set_union ((yyvsp[-2]), (yyvsp[0])); }
2274*d9805213SSascha Wildner #line 2275 "parse.c" /* yacc.c:1646  */
2275*d9805213SSascha Wildner     break;
2276*d9805213SSascha Wildner 
2277*d9805213SSascha Wildner   case 66:
2278*d9805213SSascha Wildner #line 782 "parse.y" /* yacc.c:1646  */
2279*d9805213SSascha Wildner     { (yyval) = (yyvsp[-1]); }
2280*d9805213SSascha Wildner #line 2281 "parse.c" /* yacc.c:1646  */
2281*d9805213SSascha Wildner     break;
2282*d9805213SSascha Wildner 
2283*d9805213SSascha Wildner   case 67:
2284*d9805213SSascha Wildner #line 785 "parse.y" /* yacc.c:1646  */
2285*d9805213SSascha Wildner     {
2286*d9805213SSascha Wildner 			cclnegate( (yyvsp[-1]) );
2287*d9805213SSascha Wildner 			(yyval) = (yyvsp[-1]);
2288*d9805213SSascha Wildner 			}
2289*d9805213SSascha Wildner #line 2290 "parse.c" /* yacc.c:1646  */
2290*d9805213SSascha Wildner     break;
2291*d9805213SSascha Wildner 
2292*d9805213SSascha Wildner   case 68:
2293*d9805213SSascha Wildner #line 792 "parse.y" /* yacc.c:1646  */
2294*d9805213SSascha Wildner     {
2295*d9805213SSascha Wildner 
2296*d9805213SSascha Wildner 			if (sf_case_ins())
2297*d9805213SSascha Wildner 			  {
2298*d9805213SSascha Wildner 
2299*d9805213SSascha Wildner 			    /* If one end of the range has case and the other
2300*d9805213SSascha Wildner 			     * does not, or the cases are different, then we're not
2301*d9805213SSascha Wildner 			     * sure what range the user is trying to express.
2302*d9805213SSascha Wildner 			     * Examples: [@-z] or [S-t]
2303*d9805213SSascha Wildner 			     */
2304*d9805213SSascha Wildner 			    if (has_case ((yyvsp[-2])) != has_case ((yyvsp[0]))
2305*d9805213SSascha Wildner 				     || (has_case ((yyvsp[-2])) && (b_islower ((yyvsp[-2])) != b_islower ((yyvsp[0]))))
2306*d9805213SSascha Wildner 				     || (has_case ((yyvsp[-2])) && (b_isupper ((yyvsp[-2])) != b_isupper ((yyvsp[0])))))
2307*d9805213SSascha Wildner 			      format_warn3 (
2308*d9805213SSascha Wildner 			      _("the character range [%c-%c] is ambiguous in a case-insensitive scanner"),
2309*d9805213SSascha Wildner 					    (yyvsp[-2]), (yyvsp[0]));
2310*d9805213SSascha Wildner 
2311*d9805213SSascha Wildner 			    /* If the range spans uppercase characters but not
2312*d9805213SSascha Wildner 			     * lowercase (or vice-versa), then should we automatically
2313*d9805213SSascha Wildner 			     * include lowercase characters in the range?
2314*d9805213SSascha Wildner 			     * Example: [@-_] spans [a-z] but not [A-Z]
2315*d9805213SSascha Wildner 			     */
2316*d9805213SSascha Wildner 			    else if (!has_case ((yyvsp[-2])) && !has_case ((yyvsp[0])) && !range_covers_case ((yyvsp[-2]), (yyvsp[0])))
2317*d9805213SSascha Wildner 			      format_warn3 (
2318*d9805213SSascha Wildner 			      _("the character range [%c-%c] is ambiguous in a case-insensitive scanner"),
2319*d9805213SSascha Wildner 					    (yyvsp[-2]), (yyvsp[0]));
2320*d9805213SSascha Wildner 			  }
2321*d9805213SSascha Wildner 
2322*d9805213SSascha Wildner 			if ( (yyvsp[-2]) > (yyvsp[0]) )
2323*d9805213SSascha Wildner 				synerr( _("negative range in character class") );
2324*d9805213SSascha Wildner 
2325*d9805213SSascha Wildner 			else
2326*d9805213SSascha Wildner 				{
2327*d9805213SSascha Wildner 				for ( i = (yyvsp[-2]); i <= (yyvsp[0]); ++i )
2328*d9805213SSascha Wildner 					ccladd( (yyvsp[-3]), i );
2329*d9805213SSascha Wildner 
2330*d9805213SSascha Wildner 				/* Keep track if this ccl is staying in
2331*d9805213SSascha Wildner 				 * alphabetical order.
2332*d9805213SSascha Wildner 				 */
2333*d9805213SSascha Wildner 				cclsorted = cclsorted && ((yyvsp[-2]) > lastchar);
2334*d9805213SSascha Wildner 				lastchar = (yyvsp[0]);
2335*d9805213SSascha Wildner 
2336*d9805213SSascha Wildner                 /* Do it again for upper/lowercase */
2337*d9805213SSascha Wildner                 if (sf_case_ins() && has_case((yyvsp[-2])) && has_case((yyvsp[0]))){
2338*d9805213SSascha Wildner                     (yyvsp[-2]) = reverse_case ((yyvsp[-2]));
2339*d9805213SSascha Wildner                     (yyvsp[0]) = reverse_case ((yyvsp[0]));
2340*d9805213SSascha Wildner 
2341*d9805213SSascha Wildner                     for ( i = (yyvsp[-2]); i <= (yyvsp[0]); ++i )
2342*d9805213SSascha Wildner                         ccladd( (yyvsp[-3]), i );
2343*d9805213SSascha Wildner 
2344*d9805213SSascha Wildner                     cclsorted = cclsorted && ((yyvsp[-2]) > lastchar);
2345*d9805213SSascha Wildner                     lastchar = (yyvsp[0]);
2346*d9805213SSascha Wildner                 }
2347*d9805213SSascha Wildner 
2348*d9805213SSascha Wildner 				}
2349*d9805213SSascha Wildner 
2350*d9805213SSascha Wildner 			(yyval) = (yyvsp[-3]);
2351*d9805213SSascha Wildner 			}
2352*d9805213SSascha Wildner #line 2353 "parse.c" /* yacc.c:1646  */
2353*d9805213SSascha Wildner     break;
2354*d9805213SSascha Wildner 
2355*d9805213SSascha Wildner   case 69:
2356*d9805213SSascha Wildner #line 852 "parse.y" /* yacc.c:1646  */
2357*d9805213SSascha Wildner     {
2358*d9805213SSascha Wildner 			ccladd( (yyvsp[-1]), (yyvsp[0]) );
2359*d9805213SSascha Wildner 			cclsorted = cclsorted && ((yyvsp[0]) > lastchar);
2360*d9805213SSascha Wildner 			lastchar = (yyvsp[0]);
2361*d9805213SSascha Wildner 
2362*d9805213SSascha Wildner             /* Do it again for upper/lowercase */
2363*d9805213SSascha Wildner             if (sf_case_ins() && has_case((yyvsp[0]))){
2364*d9805213SSascha Wildner                 (yyvsp[0]) = reverse_case ((yyvsp[0]));
2365*d9805213SSascha Wildner                 ccladd ((yyvsp[-1]), (yyvsp[0]));
2366*d9805213SSascha Wildner 
2367*d9805213SSascha Wildner                 cclsorted = cclsorted && ((yyvsp[0]) > lastchar);
2368*d9805213SSascha Wildner                 lastchar = (yyvsp[0]);
2369*d9805213SSascha Wildner             }
2370*d9805213SSascha Wildner 
2371*d9805213SSascha Wildner 			(yyval) = (yyvsp[-1]);
2372*d9805213SSascha Wildner 			}
2373*d9805213SSascha Wildner #line 2374 "parse.c" /* yacc.c:1646  */
2374*d9805213SSascha Wildner     break;
2375*d9805213SSascha Wildner 
2376*d9805213SSascha Wildner   case 70:
2377*d9805213SSascha Wildner #line 870 "parse.y" /* yacc.c:1646  */
2378*d9805213SSascha Wildner     {
2379*d9805213SSascha Wildner 			/* Too hard to properly maintain cclsorted. */
2380*d9805213SSascha Wildner 			cclsorted = false;
2381*d9805213SSascha Wildner 			(yyval) = (yyvsp[-1]);
2382*d9805213SSascha Wildner 			}
2383*d9805213SSascha Wildner #line 2384 "parse.c" /* yacc.c:1646  */
2384*d9805213SSascha Wildner     break;
2385*d9805213SSascha Wildner 
2386*d9805213SSascha Wildner   case 71:
2387*d9805213SSascha Wildner #line 877 "parse.y" /* yacc.c:1646  */
2388*d9805213SSascha Wildner     {
2389*d9805213SSascha Wildner 			cclsorted = true;
2390*d9805213SSascha Wildner 			lastchar = 0;
2391*d9805213SSascha Wildner 			currccl = (yyval) = cclinit();
2392*d9805213SSascha Wildner 			}
2393*d9805213SSascha Wildner #line 2394 "parse.c" /* yacc.c:1646  */
2394*d9805213SSascha Wildner     break;
2395*d9805213SSascha Wildner 
2396*d9805213SSascha Wildner   case 72:
2397*d9805213SSascha Wildner #line 885 "parse.y" /* yacc.c:1646  */
2398*d9805213SSascha Wildner     { CCL_EXPR(isalnum); }
2399*d9805213SSascha Wildner #line 2400 "parse.c" /* yacc.c:1646  */
2400*d9805213SSascha Wildner     break;
2401*d9805213SSascha Wildner 
2402*d9805213SSascha Wildner   case 73:
2403*d9805213SSascha Wildner #line 886 "parse.y" /* yacc.c:1646  */
2404*d9805213SSascha Wildner     { CCL_EXPR(isalpha); }
2405*d9805213SSascha Wildner #line 2406 "parse.c" /* yacc.c:1646  */
2406*d9805213SSascha Wildner     break;
2407*d9805213SSascha Wildner 
2408*d9805213SSascha Wildner   case 74:
2409*d9805213SSascha Wildner #line 887 "parse.y" /* yacc.c:1646  */
2410*d9805213SSascha Wildner     { CCL_EXPR(IS_BLANK); }
2411*d9805213SSascha Wildner #line 2412 "parse.c" /* yacc.c:1646  */
2412*d9805213SSascha Wildner     break;
2413*d9805213SSascha Wildner 
2414*d9805213SSascha Wildner   case 75:
2415*d9805213SSascha Wildner #line 888 "parse.y" /* yacc.c:1646  */
2416*d9805213SSascha Wildner     { CCL_EXPR(iscntrl); }
2417*d9805213SSascha Wildner #line 2418 "parse.c" /* yacc.c:1646  */
2418*d9805213SSascha Wildner     break;
2419*d9805213SSascha Wildner 
2420*d9805213SSascha Wildner   case 76:
2421*d9805213SSascha Wildner #line 889 "parse.y" /* yacc.c:1646  */
2422*d9805213SSascha Wildner     { CCL_EXPR(isdigit); }
2423*d9805213SSascha Wildner #line 2424 "parse.c" /* yacc.c:1646  */
2424*d9805213SSascha Wildner     break;
2425*d9805213SSascha Wildner 
2426*d9805213SSascha Wildner   case 77:
2427*d9805213SSascha Wildner #line 890 "parse.y" /* yacc.c:1646  */
2428*d9805213SSascha Wildner     { CCL_EXPR(isgraph); }
2429*d9805213SSascha Wildner #line 2430 "parse.c" /* yacc.c:1646  */
2430*d9805213SSascha Wildner     break;
2431*d9805213SSascha Wildner 
2432*d9805213SSascha Wildner   case 78:
2433*d9805213SSascha Wildner #line 891 "parse.y" /* yacc.c:1646  */
2434*d9805213SSascha Wildner     {
2435*d9805213SSascha Wildner                           CCL_EXPR(islower);
2436*d9805213SSascha Wildner                           if (sf_case_ins())
2437*d9805213SSascha Wildner                               CCL_EXPR(isupper);
2438*d9805213SSascha Wildner                         }
2439*d9805213SSascha Wildner #line 2440 "parse.c" /* yacc.c:1646  */
2440*d9805213SSascha Wildner     break;
2441*d9805213SSascha Wildner 
2442*d9805213SSascha Wildner   case 79:
2443*d9805213SSascha Wildner #line 896 "parse.y" /* yacc.c:1646  */
2444*d9805213SSascha Wildner     { CCL_EXPR(isprint); }
2445*d9805213SSascha Wildner #line 2446 "parse.c" /* yacc.c:1646  */
2446*d9805213SSascha Wildner     break;
2447*d9805213SSascha Wildner 
2448*d9805213SSascha Wildner   case 80:
2449*d9805213SSascha Wildner #line 897 "parse.y" /* yacc.c:1646  */
2450*d9805213SSascha Wildner     { CCL_EXPR(ispunct); }
2451*d9805213SSascha Wildner #line 2452 "parse.c" /* yacc.c:1646  */
2452*d9805213SSascha Wildner     break;
2453*d9805213SSascha Wildner 
2454*d9805213SSascha Wildner   case 81:
2455*d9805213SSascha Wildner #line 898 "parse.y" /* yacc.c:1646  */
2456*d9805213SSascha Wildner     { CCL_EXPR(isspace); }
2457*d9805213SSascha Wildner #line 2458 "parse.c" /* yacc.c:1646  */
2458*d9805213SSascha Wildner     break;
2459*d9805213SSascha Wildner 
2460*d9805213SSascha Wildner   case 82:
2461*d9805213SSascha Wildner #line 899 "parse.y" /* yacc.c:1646  */
2462*d9805213SSascha Wildner     { CCL_EXPR(isxdigit); }
2463*d9805213SSascha Wildner #line 2464 "parse.c" /* yacc.c:1646  */
2464*d9805213SSascha Wildner     break;
2465*d9805213SSascha Wildner 
2466*d9805213SSascha Wildner   case 83:
2467*d9805213SSascha Wildner #line 900 "parse.y" /* yacc.c:1646  */
2468*d9805213SSascha Wildner     {
2469*d9805213SSascha Wildner                     CCL_EXPR(isupper);
2470*d9805213SSascha Wildner                     if (sf_case_ins())
2471*d9805213SSascha Wildner                         CCL_EXPR(islower);
2472*d9805213SSascha Wildner 				}
2473*d9805213SSascha Wildner #line 2474 "parse.c" /* yacc.c:1646  */
2474*d9805213SSascha Wildner     break;
2475*d9805213SSascha Wildner 
2476*d9805213SSascha Wildner   case 84:
2477*d9805213SSascha Wildner #line 906 "parse.y" /* yacc.c:1646  */
2478*d9805213SSascha Wildner     { CCL_NEG_EXPR(isalnum); }
2479*d9805213SSascha Wildner #line 2480 "parse.c" /* yacc.c:1646  */
2480*d9805213SSascha Wildner     break;
2481*d9805213SSascha Wildner 
2482*d9805213SSascha Wildner   case 85:
2483*d9805213SSascha Wildner #line 907 "parse.y" /* yacc.c:1646  */
2484*d9805213SSascha Wildner     { CCL_NEG_EXPR(isalpha); }
2485*d9805213SSascha Wildner #line 2486 "parse.c" /* yacc.c:1646  */
2486*d9805213SSascha Wildner     break;
2487*d9805213SSascha Wildner 
2488*d9805213SSascha Wildner   case 86:
2489*d9805213SSascha Wildner #line 908 "parse.y" /* yacc.c:1646  */
2490*d9805213SSascha Wildner     { CCL_NEG_EXPR(IS_BLANK); }
2491*d9805213SSascha Wildner #line 2492 "parse.c" /* yacc.c:1646  */
2492*d9805213SSascha Wildner     break;
2493*d9805213SSascha Wildner 
2494*d9805213SSascha Wildner   case 87:
2495*d9805213SSascha Wildner #line 909 "parse.y" /* yacc.c:1646  */
2496*d9805213SSascha Wildner     { CCL_NEG_EXPR(iscntrl); }
2497*d9805213SSascha Wildner #line 2498 "parse.c" /* yacc.c:1646  */
2498*d9805213SSascha Wildner     break;
2499*d9805213SSascha Wildner 
2500*d9805213SSascha Wildner   case 88:
2501*d9805213SSascha Wildner #line 910 "parse.y" /* yacc.c:1646  */
2502*d9805213SSascha Wildner     { CCL_NEG_EXPR(isdigit); }
2503*d9805213SSascha Wildner #line 2504 "parse.c" /* yacc.c:1646  */
2504*d9805213SSascha Wildner     break;
2505*d9805213SSascha Wildner 
2506*d9805213SSascha Wildner   case 89:
2507*d9805213SSascha Wildner #line 911 "parse.y" /* yacc.c:1646  */
2508*d9805213SSascha Wildner     { CCL_NEG_EXPR(isgraph); }
2509*d9805213SSascha Wildner #line 2510 "parse.c" /* yacc.c:1646  */
2510*d9805213SSascha Wildner     break;
2511*d9805213SSascha Wildner 
2512*d9805213SSascha Wildner   case 90:
2513*d9805213SSascha Wildner #line 912 "parse.y" /* yacc.c:1646  */
2514*d9805213SSascha Wildner     { CCL_NEG_EXPR(isprint); }
2515*d9805213SSascha Wildner #line 2516 "parse.c" /* yacc.c:1646  */
2516*d9805213SSascha Wildner     break;
2517*d9805213SSascha Wildner 
2518*d9805213SSascha Wildner   case 91:
2519*d9805213SSascha Wildner #line 913 "parse.y" /* yacc.c:1646  */
2520*d9805213SSascha Wildner     { CCL_NEG_EXPR(ispunct); }
2521*d9805213SSascha Wildner #line 2522 "parse.c" /* yacc.c:1646  */
2522*d9805213SSascha Wildner     break;
2523*d9805213SSascha Wildner 
2524*d9805213SSascha Wildner   case 92:
2525*d9805213SSascha Wildner #line 914 "parse.y" /* yacc.c:1646  */
2526*d9805213SSascha Wildner     { CCL_NEG_EXPR(isspace); }
2527*d9805213SSascha Wildner #line 2528 "parse.c" /* yacc.c:1646  */
2528*d9805213SSascha Wildner     break;
2529*d9805213SSascha Wildner 
2530*d9805213SSascha Wildner   case 93:
2531*d9805213SSascha Wildner #line 915 "parse.y" /* yacc.c:1646  */
2532*d9805213SSascha Wildner     { CCL_NEG_EXPR(isxdigit); }
2533*d9805213SSascha Wildner #line 2534 "parse.c" /* yacc.c:1646  */
2534*d9805213SSascha Wildner     break;
2535*d9805213SSascha Wildner 
2536*d9805213SSascha Wildner   case 94:
2537*d9805213SSascha Wildner #line 916 "parse.y" /* yacc.c:1646  */
2538*d9805213SSascha Wildner     {
2539*d9805213SSascha Wildner 				if ( sf_case_ins() )
2540*d9805213SSascha Wildner 					lwarn(_("[:^lower:] is ambiguous in case insensitive scanner"));
2541*d9805213SSascha Wildner 				else
2542*d9805213SSascha Wildner 					CCL_NEG_EXPR(islower);
2543*d9805213SSascha Wildner 				}
2544*d9805213SSascha Wildner #line 2545 "parse.c" /* yacc.c:1646  */
2545*d9805213SSascha Wildner     break;
2546*d9805213SSascha Wildner 
2547*d9805213SSascha Wildner   case 95:
2548*d9805213SSascha Wildner #line 922 "parse.y" /* yacc.c:1646  */
2549*d9805213SSascha Wildner     {
2550*d9805213SSascha Wildner 				if ( sf_case_ins() )
2551*d9805213SSascha Wildner 					lwarn(_("[:^upper:] ambiguous in case insensitive scanner"));
2552*d9805213SSascha Wildner 				else
2553*d9805213SSascha Wildner 					CCL_NEG_EXPR(isupper);
2554*d9805213SSascha Wildner 				}
2555*d9805213SSascha Wildner #line 2556 "parse.c" /* yacc.c:1646  */
2556*d9805213SSascha Wildner     break;
2557*d9805213SSascha Wildner 
2558*d9805213SSascha Wildner   case 96:
2559*d9805213SSascha Wildner #line 931 "parse.y" /* yacc.c:1646  */
2560*d9805213SSascha Wildner     {
2561*d9805213SSascha Wildner 			if ( (yyvsp[0]) == nlch )
2562*d9805213SSascha Wildner 				rule_has_nl[num_rules] = true;
2563*d9805213SSascha Wildner 
2564*d9805213SSascha Wildner 			++rulelen;
2565*d9805213SSascha Wildner 
2566*d9805213SSascha Wildner             if (sf_case_ins() && has_case((yyvsp[0])))
2567*d9805213SSascha Wildner                 (yyval) = mkor (mkstate((yyvsp[0])), mkstate(reverse_case((yyvsp[0]))));
2568*d9805213SSascha Wildner             else
2569*d9805213SSascha Wildner                 (yyval) = mkstate ((yyvsp[0]));
2570*d9805213SSascha Wildner 
2571*d9805213SSascha Wildner 			(yyval) = link_machines( (yyvsp[-1]), (yyval));
2572*d9805213SSascha Wildner 			}
2573*d9805213SSascha Wildner #line 2574 "parse.c" /* yacc.c:1646  */
2574*d9805213SSascha Wildner     break;
2575*d9805213SSascha Wildner 
2576*d9805213SSascha Wildner   case 97:
2577*d9805213SSascha Wildner #line 946 "parse.y" /* yacc.c:1646  */
2578*d9805213SSascha Wildner     { (yyval) = mkstate( SYM_EPSILON ); }
2579*d9805213SSascha Wildner #line 2580 "parse.c" /* yacc.c:1646  */
2580*d9805213SSascha Wildner     break;
2581*d9805213SSascha Wildner 
2582*d9805213SSascha Wildner 
2583*d9805213SSascha Wildner #line 2584 "parse.c" /* yacc.c:1646  */
2584*d9805213SSascha Wildner       default: break;
2585*d9805213SSascha Wildner     }
2586*d9805213SSascha Wildner   /* User semantic actions sometimes alter yychar, and that requires
2587*d9805213SSascha Wildner      that yytoken be updated with the new translation.  We take the
2588*d9805213SSascha Wildner      approach of translating immediately before every use of yytoken.
2589*d9805213SSascha Wildner      One alternative is translating here after every semantic action,
2590*d9805213SSascha Wildner      but that translation would be missed if the semantic action invokes
2591*d9805213SSascha Wildner      YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
2592*d9805213SSascha Wildner      if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
2593*d9805213SSascha Wildner      incorrect destructor might then be invoked immediately.  In the
2594*d9805213SSascha Wildner      case of YYERROR or YYBACKUP, subsequent parser actions might lead
2595*d9805213SSascha Wildner      to an incorrect destructor call or verbose syntax error message
2596*d9805213SSascha Wildner      before the lookahead is translated.  */
2597*d9805213SSascha Wildner   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
2598*d9805213SSascha Wildner 
2599*d9805213SSascha Wildner   YYPOPSTACK (yylen);
2600*d9805213SSascha Wildner   yylen = 0;
2601*d9805213SSascha Wildner   YY_STACK_PRINT (yyss, yyssp);
2602*d9805213SSascha Wildner 
2603*d9805213SSascha Wildner   *++yyvsp = yyval;
2604*d9805213SSascha Wildner 
2605*d9805213SSascha Wildner   /* Now 'shift' the result of the reduction.  Determine what state
2606*d9805213SSascha Wildner      that goes to, based on the state we popped back to and the rule
2607*d9805213SSascha Wildner      number reduced by.  */
2608*d9805213SSascha Wildner 
2609*d9805213SSascha Wildner   yyn = yyr1[yyn];
2610*d9805213SSascha Wildner 
2611*d9805213SSascha Wildner   yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
2612*d9805213SSascha Wildner   if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
2613*d9805213SSascha Wildner     yystate = yytable[yystate];
2614*d9805213SSascha Wildner   else
2615*d9805213SSascha Wildner     yystate = yydefgoto[yyn - YYNTOKENS];
2616*d9805213SSascha Wildner 
2617*d9805213SSascha Wildner   goto yynewstate;
2618*d9805213SSascha Wildner 
2619*d9805213SSascha Wildner 
2620*d9805213SSascha Wildner /*--------------------------------------.
2621*d9805213SSascha Wildner | yyerrlab -- here on detecting error.  |
2622*d9805213SSascha Wildner `--------------------------------------*/
2623*d9805213SSascha Wildner yyerrlab:
2624*d9805213SSascha Wildner   /* Make sure we have latest lookahead translation.  See comments at
2625*d9805213SSascha Wildner      user semantic actions for why this is necessary.  */
2626*d9805213SSascha Wildner   yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
2627*d9805213SSascha Wildner 
2628*d9805213SSascha Wildner   /* If not already recovering from an error, report this error.  */
2629*d9805213SSascha Wildner   if (!yyerrstatus)
2630*d9805213SSascha Wildner     {
2631*d9805213SSascha Wildner       ++yynerrs;
2632*d9805213SSascha Wildner #if ! YYERROR_VERBOSE
2633*d9805213SSascha Wildner       yyerror (YY_("syntax error"));
2634*d9805213SSascha Wildner #else
2635*d9805213SSascha Wildner # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
2636*d9805213SSascha Wildner                                         yyssp, yytoken)
2637*d9805213SSascha Wildner       {
2638*d9805213SSascha Wildner         char const *yymsgp = YY_("syntax error");
2639*d9805213SSascha Wildner         int yysyntax_error_status;
2640*d9805213SSascha Wildner         yysyntax_error_status = YYSYNTAX_ERROR;
2641*d9805213SSascha Wildner         if (yysyntax_error_status == 0)
2642*d9805213SSascha Wildner           yymsgp = yymsg;
2643*d9805213SSascha Wildner         else if (yysyntax_error_status == 1)
2644*d9805213SSascha Wildner           {
2645*d9805213SSascha Wildner             if (yymsg != yymsgbuf)
2646*d9805213SSascha Wildner               YYSTACK_FREE (yymsg);
2647*d9805213SSascha Wildner             yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
2648*d9805213SSascha Wildner             if (!yymsg)
2649*d9805213SSascha Wildner               {
2650*d9805213SSascha Wildner                 yymsg = yymsgbuf;
2651*d9805213SSascha Wildner                 yymsg_alloc = sizeof yymsgbuf;
2652*d9805213SSascha Wildner                 yysyntax_error_status = 2;
2653*d9805213SSascha Wildner               }
2654*d9805213SSascha Wildner             else
2655*d9805213SSascha Wildner               {
2656*d9805213SSascha Wildner                 yysyntax_error_status = YYSYNTAX_ERROR;
2657*d9805213SSascha Wildner                 yymsgp = yymsg;
2658*d9805213SSascha Wildner               }
2659*d9805213SSascha Wildner           }
2660*d9805213SSascha Wildner         yyerror (yymsgp);
2661*d9805213SSascha Wildner         if (yysyntax_error_status == 2)
2662*d9805213SSascha Wildner           goto yyexhaustedlab;
2663*d9805213SSascha Wildner       }
2664*d9805213SSascha Wildner # undef YYSYNTAX_ERROR
2665*d9805213SSascha Wildner #endif
2666*d9805213SSascha Wildner     }
2667*d9805213SSascha Wildner 
2668*d9805213SSascha Wildner 
2669*d9805213SSascha Wildner 
2670*d9805213SSascha Wildner   if (yyerrstatus == 3)
2671*d9805213SSascha Wildner     {
2672*d9805213SSascha Wildner       /* If just tried and failed to reuse lookahead token after an
2673*d9805213SSascha Wildner          error, discard it.  */
2674*d9805213SSascha Wildner 
2675*d9805213SSascha Wildner       if (yychar <= YYEOF)
2676*d9805213SSascha Wildner         {
2677*d9805213SSascha Wildner           /* Return failure if at end of input.  */
2678*d9805213SSascha Wildner           if (yychar == YYEOF)
2679*d9805213SSascha Wildner             YYABORT;
2680*d9805213SSascha Wildner         }
2681*d9805213SSascha Wildner       else
2682*d9805213SSascha Wildner         {
2683*d9805213SSascha Wildner           yydestruct ("Error: discarding",
2684*d9805213SSascha Wildner                       yytoken, &yylval);
2685*d9805213SSascha Wildner           yychar = YYEMPTY;
2686*d9805213SSascha Wildner         }
2687*d9805213SSascha Wildner     }
2688*d9805213SSascha Wildner 
2689*d9805213SSascha Wildner   /* Else will try to reuse lookahead token after shifting the error
2690*d9805213SSascha Wildner      token.  */
2691*d9805213SSascha Wildner   goto yyerrlab1;
2692*d9805213SSascha Wildner 
2693*d9805213SSascha Wildner 
2694*d9805213SSascha Wildner /*---------------------------------------------------.
2695*d9805213SSascha Wildner | yyerrorlab -- error raised explicitly by YYERROR.  |
2696*d9805213SSascha Wildner `---------------------------------------------------*/
2697*d9805213SSascha Wildner yyerrorlab:
2698*d9805213SSascha Wildner 
2699*d9805213SSascha Wildner   /* Pacify compilers like GCC when the user code never invokes
2700*d9805213SSascha Wildner      YYERROR and the label yyerrorlab therefore never appears in user
2701*d9805213SSascha Wildner      code.  */
2702*d9805213SSascha Wildner   if (/*CONSTCOND*/ 0)
2703*d9805213SSascha Wildner      goto yyerrorlab;
2704*d9805213SSascha Wildner 
2705*d9805213SSascha Wildner   /* Do not reclaim the symbols of the rule whose action triggered
2706*d9805213SSascha Wildner      this YYERROR.  */
2707*d9805213SSascha Wildner   YYPOPSTACK (yylen);
2708*d9805213SSascha Wildner   yylen = 0;
2709*d9805213SSascha Wildner   YY_STACK_PRINT (yyss, yyssp);
2710*d9805213SSascha Wildner   yystate = *yyssp;
2711*d9805213SSascha Wildner   goto yyerrlab1;
2712*d9805213SSascha Wildner 
2713*d9805213SSascha Wildner 
2714*d9805213SSascha Wildner /*-------------------------------------------------------------.
2715*d9805213SSascha Wildner | yyerrlab1 -- common code for both syntax error and YYERROR.  |
2716*d9805213SSascha Wildner `-------------------------------------------------------------*/
2717*d9805213SSascha Wildner yyerrlab1:
2718*d9805213SSascha Wildner   yyerrstatus = 3;      /* Each real token shifted decrements this.  */
2719*d9805213SSascha Wildner 
2720*d9805213SSascha Wildner   for (;;)
2721*d9805213SSascha Wildner     {
2722*d9805213SSascha Wildner       yyn = yypact[yystate];
2723*d9805213SSascha Wildner       if (!yypact_value_is_default (yyn))
2724*d9805213SSascha Wildner         {
2725*d9805213SSascha Wildner           yyn += YYTERROR;
2726*d9805213SSascha Wildner           if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
2727*d9805213SSascha Wildner             {
2728*d9805213SSascha Wildner               yyn = yytable[yyn];
2729*d9805213SSascha Wildner               if (0 < yyn)
2730*d9805213SSascha Wildner                 break;
2731*d9805213SSascha Wildner             }
2732*d9805213SSascha Wildner         }
2733*d9805213SSascha Wildner 
2734*d9805213SSascha Wildner       /* Pop the current state because it cannot handle the error token.  */
2735*d9805213SSascha Wildner       if (yyssp == yyss)
2736*d9805213SSascha Wildner         YYABORT;
2737*d9805213SSascha Wildner 
2738*d9805213SSascha Wildner 
2739*d9805213SSascha Wildner       yydestruct ("Error: popping",
2740*d9805213SSascha Wildner                   yystos[yystate], yyvsp);
2741*d9805213SSascha Wildner       YYPOPSTACK (1);
2742*d9805213SSascha Wildner       yystate = *yyssp;
2743*d9805213SSascha Wildner       YY_STACK_PRINT (yyss, yyssp);
2744*d9805213SSascha Wildner     }
2745*d9805213SSascha Wildner 
2746*d9805213SSascha Wildner   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2747*d9805213SSascha Wildner   *++yyvsp = yylval;
2748*d9805213SSascha Wildner   YY_IGNORE_MAYBE_UNINITIALIZED_END
2749*d9805213SSascha Wildner 
2750*d9805213SSascha Wildner 
2751*d9805213SSascha Wildner   /* Shift the error token.  */
2752*d9805213SSascha Wildner   YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
2753*d9805213SSascha Wildner 
2754*d9805213SSascha Wildner   yystate = yyn;
2755*d9805213SSascha Wildner   goto yynewstate;
2756*d9805213SSascha Wildner 
2757*d9805213SSascha Wildner 
2758*d9805213SSascha Wildner /*-------------------------------------.
2759*d9805213SSascha Wildner | yyacceptlab -- YYACCEPT comes here.  |
2760*d9805213SSascha Wildner `-------------------------------------*/
2761*d9805213SSascha Wildner yyacceptlab:
2762*d9805213SSascha Wildner   yyresult = 0;
2763*d9805213SSascha Wildner   goto yyreturn;
2764*d9805213SSascha Wildner 
2765*d9805213SSascha Wildner /*-----------------------------------.
2766*d9805213SSascha Wildner | yyabortlab -- YYABORT comes here.  |
2767*d9805213SSascha Wildner `-----------------------------------*/
2768*d9805213SSascha Wildner yyabortlab:
2769*d9805213SSascha Wildner   yyresult = 1;
2770*d9805213SSascha Wildner   goto yyreturn;
2771*d9805213SSascha Wildner 
2772*d9805213SSascha Wildner #if !defined yyoverflow || YYERROR_VERBOSE
2773*d9805213SSascha Wildner /*-------------------------------------------------.
2774*d9805213SSascha Wildner | yyexhaustedlab -- memory exhaustion comes here.  |
2775*d9805213SSascha Wildner `-------------------------------------------------*/
2776*d9805213SSascha Wildner yyexhaustedlab:
2777*d9805213SSascha Wildner   yyerror (YY_("memory exhausted"));
2778*d9805213SSascha Wildner   yyresult = 2;
2779*d9805213SSascha Wildner   /* Fall through.  */
2780*d9805213SSascha Wildner #endif
2781*d9805213SSascha Wildner 
2782*d9805213SSascha Wildner yyreturn:
2783*d9805213SSascha Wildner   if (yychar != YYEMPTY)
2784*d9805213SSascha Wildner     {
2785*d9805213SSascha Wildner       /* Make sure we have latest lookahead translation.  See comments at
2786*d9805213SSascha Wildner          user semantic actions for why this is necessary.  */
2787*d9805213SSascha Wildner       yytoken = YYTRANSLATE (yychar);
2788*d9805213SSascha Wildner       yydestruct ("Cleanup: discarding lookahead",
2789*d9805213SSascha Wildner                   yytoken, &yylval);
2790*d9805213SSascha Wildner     }
2791*d9805213SSascha Wildner   /* Do not reclaim the symbols of the rule whose action triggered
2792*d9805213SSascha Wildner      this YYABORT or YYACCEPT.  */
2793*d9805213SSascha Wildner   YYPOPSTACK (yylen);
2794*d9805213SSascha Wildner   YY_STACK_PRINT (yyss, yyssp);
2795*d9805213SSascha Wildner   while (yyssp != yyss)
2796*d9805213SSascha Wildner     {
2797*d9805213SSascha Wildner       yydestruct ("Cleanup: popping",
2798*d9805213SSascha Wildner                   yystos[*yyssp], yyvsp);
2799*d9805213SSascha Wildner       YYPOPSTACK (1);
2800*d9805213SSascha Wildner     }
2801*d9805213SSascha Wildner #ifndef yyoverflow
2802*d9805213SSascha Wildner   if (yyss != yyssa)
2803*d9805213SSascha Wildner     YYSTACK_FREE (yyss);
2804*d9805213SSascha Wildner #endif
2805*d9805213SSascha Wildner #if YYERROR_VERBOSE
2806*d9805213SSascha Wildner   if (yymsg != yymsgbuf)
2807*d9805213SSascha Wildner     YYSTACK_FREE (yymsg);
2808*d9805213SSascha Wildner #endif
2809*d9805213SSascha Wildner   return yyresult;
2810*d9805213SSascha Wildner }
2811*d9805213SSascha Wildner #line 949 "parse.y" /* yacc.c:1906  */
2812*d9805213SSascha Wildner 
2813*d9805213SSascha Wildner 
2814*d9805213SSascha Wildner 
2815*d9805213SSascha Wildner /* build_eof_action - build the "<<EOF>>" action for the active start
2816*d9805213SSascha Wildner  *                    conditions
2817*d9805213SSascha Wildner  */
2818*d9805213SSascha Wildner 
build_eof_action(void)2819*d9805213SSascha Wildner void build_eof_action(void)
2820*d9805213SSascha Wildner 	{
2821*d9805213SSascha Wildner 	int i;
2822*d9805213SSascha Wildner 	char action_text[MAXLINE];
2823*d9805213SSascha Wildner 
2824*d9805213SSascha Wildner 	for ( i = 1; i <= scon_stk_ptr; ++i )
2825*d9805213SSascha Wildner 		{
2826*d9805213SSascha Wildner 		if ( sceof[scon_stk[i]] )
2827*d9805213SSascha Wildner 			format_pinpoint_message(
2828*d9805213SSascha Wildner 				"multiple <<EOF>> rules for start condition %s",
2829*d9805213SSascha Wildner 				scname[scon_stk[i]] );
2830*d9805213SSascha Wildner 
2831*d9805213SSascha Wildner 		else
2832*d9805213SSascha Wildner 			{
2833*d9805213SSascha Wildner 			sceof[scon_stk[i]] = true;
2834*d9805213SSascha Wildner 
2835*d9805213SSascha Wildner 			if (previous_continued_action /* && previous action was regular */)
2836*d9805213SSascha Wildner 				add_action("YY_RULE_SETUP\n");
2837*d9805213SSascha Wildner 
2838*d9805213SSascha Wildner 			snprintf( action_text, sizeof(action_text), "case YY_STATE_EOF(%s):\n",
2839*d9805213SSascha Wildner 				scname[scon_stk[i]] );
2840*d9805213SSascha Wildner 			add_action( action_text );
2841*d9805213SSascha Wildner 			}
2842*d9805213SSascha Wildner 		}
2843*d9805213SSascha Wildner 
2844*d9805213SSascha Wildner 	line_directive_out(NULL, 1);
2845*d9805213SSascha Wildner         add_action("[[");
2846*d9805213SSascha Wildner 
2847*d9805213SSascha Wildner 	/* This isn't a normal rule after all - don't count it as
2848*d9805213SSascha Wildner 	 * such, so we don't have any holes in the rule numbering
2849*d9805213SSascha Wildner 	 * (which make generating "rule can never match" warnings
2850*d9805213SSascha Wildner 	 * more difficult.
2851*d9805213SSascha Wildner 	 */
2852*d9805213SSascha Wildner 	--num_rules;
2853*d9805213SSascha Wildner 	++num_eof_rules;
2854*d9805213SSascha Wildner 	}
2855*d9805213SSascha Wildner 
2856*d9805213SSascha Wildner 
2857*d9805213SSascha Wildner /* format_synerr - write out formatted syntax error */
2858*d9805213SSascha Wildner 
format_synerr(const char * msg,const char arg[])2859*d9805213SSascha Wildner void format_synerr( const char *msg, const char arg[] )
2860*d9805213SSascha Wildner 	{
2861*d9805213SSascha Wildner 	char errmsg[MAXLINE];
2862*d9805213SSascha Wildner 
2863*d9805213SSascha Wildner 	(void) snprintf( errmsg, sizeof(errmsg), msg, arg );
2864*d9805213SSascha Wildner 	synerr( errmsg );
2865*d9805213SSascha Wildner 	}
2866*d9805213SSascha Wildner 
2867*d9805213SSascha Wildner 
2868*d9805213SSascha Wildner /* synerr - report a syntax error */
2869*d9805213SSascha Wildner 
synerr(const char * str)2870*d9805213SSascha Wildner void synerr( const char *str )
2871*d9805213SSascha Wildner 	{
2872*d9805213SSascha Wildner 	syntaxerror = true;
2873*d9805213SSascha Wildner 	pinpoint_message( str );
2874*d9805213SSascha Wildner 	}
2875*d9805213SSascha Wildner 
2876*d9805213SSascha Wildner 
2877*d9805213SSascha Wildner /* format_warn - write out formatted warning */
2878*d9805213SSascha Wildner 
format_warn(const char * msg,const char arg[])2879*d9805213SSascha Wildner void format_warn( const char *msg, const char arg[] )
2880*d9805213SSascha Wildner 	{
2881*d9805213SSascha Wildner 	char warn_msg[MAXLINE];
2882*d9805213SSascha Wildner 
2883*d9805213SSascha Wildner 	snprintf( warn_msg, sizeof(warn_msg), msg, arg );
2884*d9805213SSascha Wildner 	lwarn( warn_msg );
2885*d9805213SSascha Wildner 	}
2886*d9805213SSascha Wildner 
2887*d9805213SSascha Wildner 
2888*d9805213SSascha Wildner /* lwarn - report a warning, unless -w was given */
2889*d9805213SSascha Wildner 
lwarn(const char * str)2890*d9805213SSascha Wildner void lwarn( const char *str )
2891*d9805213SSascha Wildner 	{
2892*d9805213SSascha Wildner 	line_warning( str, linenum );
2893*d9805213SSascha Wildner 	}
2894*d9805213SSascha Wildner 
2895*d9805213SSascha Wildner /* format_pinpoint_message - write out a message formatted with one string,
2896*d9805213SSascha Wildner  *			     pinpointing its location
2897*d9805213SSascha Wildner  */
2898*d9805213SSascha Wildner 
format_pinpoint_message(const char * msg,const char arg[])2899*d9805213SSascha Wildner void format_pinpoint_message( const char *msg, const char arg[] )
2900*d9805213SSascha Wildner 	{
2901*d9805213SSascha Wildner 	char errmsg[MAXLINE];
2902*d9805213SSascha Wildner 
2903*d9805213SSascha Wildner 	snprintf( errmsg, sizeof(errmsg), msg, arg );
2904*d9805213SSascha Wildner 	pinpoint_message( errmsg );
2905*d9805213SSascha Wildner 	}
2906*d9805213SSascha Wildner 
2907*d9805213SSascha Wildner 
2908*d9805213SSascha Wildner /* pinpoint_message - write out a message, pinpointing its location */
2909*d9805213SSascha Wildner 
pinpoint_message(const char * str)2910*d9805213SSascha Wildner void pinpoint_message( const char *str )
2911*d9805213SSascha Wildner 	{
2912*d9805213SSascha Wildner 	line_pinpoint( str, linenum );
2913*d9805213SSascha Wildner 	}
2914*d9805213SSascha Wildner 
2915*d9805213SSascha Wildner 
2916*d9805213SSascha Wildner /* line_warning - report a warning at a given line, unless -w was given */
2917*d9805213SSascha Wildner 
line_warning(const char * str,int line)2918*d9805213SSascha Wildner void line_warning( const char *str, int line )
2919*d9805213SSascha Wildner 	{
2920*d9805213SSascha Wildner 	char warning[MAXLINE];
2921*d9805213SSascha Wildner 
2922*d9805213SSascha Wildner 	if ( ! nowarn )
2923*d9805213SSascha Wildner 		{
2924*d9805213SSascha Wildner 		snprintf( warning, sizeof(warning), "warning, %s", str );
2925*d9805213SSascha Wildner 		line_pinpoint( warning, line );
2926*d9805213SSascha Wildner 		}
2927*d9805213SSascha Wildner 	}
2928*d9805213SSascha Wildner 
2929*d9805213SSascha Wildner 
2930*d9805213SSascha Wildner /* line_pinpoint - write out a message, pinpointing it at the given line */
2931*d9805213SSascha Wildner 
line_pinpoint(const char * str,int line)2932*d9805213SSascha Wildner void line_pinpoint( const char *str, int line )
2933*d9805213SSascha Wildner 	{
2934*d9805213SSascha Wildner 	fprintf( stderr, "%s:%d: %s\n", infilename, line, str );
2935*d9805213SSascha Wildner 	}
2936*d9805213SSascha Wildner 
2937*d9805213SSascha Wildner 
2938*d9805213SSascha Wildner /* yyerror - eat up an error message from the parser;
2939*d9805213SSascha Wildner  *	     currently, messages are ignore
2940*d9805213SSascha Wildner  */
2941*d9805213SSascha Wildner 
yyerror(const char * msg)2942*d9805213SSascha Wildner void yyerror( const char *msg )
2943*d9805213SSascha Wildner 	{
2944*d9805213SSascha Wildner 		(void)msg;
2945*d9805213SSascha Wildner 	}
2946