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