1250881Sjkim/* $FreeBSD$ */
2250881Sjkim#ifndef lint
3250881Sjkimstatic const char yysccsid[] = "@(#)yaccpar	1.9 (Berkeley) 02/21/93";
4250881Sjkim#endif
5250881Sjkim
6250881Sjkim#define YYBYACC 1
7250881Sjkim#define YYMAJOR 1
8250881Sjkim#define YYMINOR 9
9250881Sjkim
10250881Sjkim#define YYEMPTY        (-1)
11250881Sjkim#define yyclearin      (yychar = YYEMPTY)
12250881Sjkim#define yyerrok        (yyerrflag = 0)
13250881Sjkim#define YYRECOVERING() (yyerrflag != 0)
14250881Sjkim
15250881Sjkim#define YYPREFIX "yy"
16250881Sjkim
17250881Sjkim#define YYPURE 0
18250881Sjkim
19250881Sjkim#line 35 "parse.y"
20250881Sjkim/*  Copyright (c) 1990 The Regents of the University of California. */
21250881Sjkim/*  All rights reserved. */
22250881Sjkim
23250881Sjkim/*  This code is derived from software contributed to Berkeley by */
24250881Sjkim/*  Vern Paxson. */
25250881Sjkim
26250881Sjkim/*  The United States Government has rights in this work pursuant */
27250881Sjkim/*  to contract no. DE-AC03-76SF00098 between the United States */
28250881Sjkim/*  Department of Energy and the University of California. */
29250881Sjkim
30250881Sjkim/*  This file is part of flex. */
31250881Sjkim
32250881Sjkim/*  Redistribution and use in source and binary forms, with or without */
33250881Sjkim/*  modification, are permitted provided that the following conditions */
34250881Sjkim/*  are met: */
35250881Sjkim
36250881Sjkim/*  1. Redistributions of source code must retain the above copyright */
37250881Sjkim/*     notice, this list of conditions and the following disclaimer. */
38250881Sjkim/*  2. Redistributions in binary form must reproduce the above copyright */
39250881Sjkim/*     notice, this list of conditions and the following disclaimer in the */
40250881Sjkim/*     documentation and/or other materials provided with the distribution. */
41250881Sjkim
42250881Sjkim/*  Neither the name of the University nor the names of its contributors */
43250881Sjkim/*  may be used to endorse or promote products derived from this software */
44250881Sjkim/*  without specific prior written permission. */
45250881Sjkim
46250881Sjkim/*  THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR */
47250881Sjkim/*  IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED */
48250881Sjkim/*  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR */
49250881Sjkim/*  PURPOSE. */
50250881Sjkim
51250881Sjkim#include "flexdef.h"
52250881Sjkim#include "tables.h"
53250881Sjkim
54250881Sjkimint pat, scnum, eps, headcnt, trailcnt, lastchar, i, rulelen;
55250881Sjkimint trlcontxt, xcluflg, currccl, cclsorted, varlength, variable_trail_rule;
56250881Sjkim
57250881Sjkimint *scon_stk;
58250881Sjkimint scon_stk_ptr;
59250881Sjkim
60250881Sjkimstatic int madeany = false;  /* whether we've made the '.' character class */
61250881Sjkimstatic int ccldot, cclany;
62250881Sjkimint previous_continued_action;	/* whether the previous rule's action was '|' */
63250881Sjkim
64250881Sjkim#define format_warn3(fmt, a1, a2) \
65250881Sjkim	do{ \
66250881Sjkim        char fw3_msg[MAXLINE];\
67250881Sjkim        snprintf( fw3_msg, MAXLINE,(fmt), (a1), (a2) );\
68250881Sjkim        warn( fw3_msg );\
69250881Sjkim	}while(0)
70250881Sjkim
71250881Sjkim/* Expand a POSIX character class expression. */
72250881Sjkim#define CCL_EXPR(func) \
73250881Sjkim	do{ \
74250881Sjkim	int c; \
75250881Sjkim	for ( c = 0; c < csize; ++c ) \
76250881Sjkim		if ( isascii(c) && func(c) ) \
77250881Sjkim			ccladd( currccl, c ); \
78250881Sjkim	}while(0)
79250881Sjkim
80250881Sjkim/* negated class */
81250881Sjkim#define CCL_NEG_EXPR(func) \
82250881Sjkim	do{ \
83250881Sjkim	int c; \
84250881Sjkim	for ( c = 0; c < csize; ++c ) \
85250881Sjkim		if ( !func(c) ) \
86250881Sjkim			ccladd( currccl, c ); \
87250881Sjkim	}while(0)
88250881Sjkim
89250881Sjkim/* While POSIX defines isblank(), it's not ANSI C. */
90250881Sjkim#define IS_BLANK(c) ((c) == ' ' || (c) == '\t')
91250881Sjkim
92250881Sjkim/* On some over-ambitious machines, such as DEC Alpha's, the default
93250881Sjkim * token type is "long" instead of "int"; this leads to problems with
94250881Sjkim * declaring yylval in flexdef.h.  But so far, all the yacc's I've seen
95250881Sjkim * wrap their definitions of YYSTYPE with "#ifndef YYSTYPE"'s, so the
96250881Sjkim * following should ensure that the default token type is "int".
97250881Sjkim */
98250881Sjkim#define YYSTYPE int
99250881Sjkim
100250881Sjkim#line 99 "parse.c"
101250881Sjkim
102250881Sjkim#ifndef YYSTYPE
103250881Sjkimtypedef int YYSTYPE;
104250881Sjkim#endif
105250881Sjkim
106250881Sjkim/* compatibility with bison */
107250881Sjkim#ifdef YYPARSE_PARAM
108250881Sjkim/* compatibility with FreeBSD */
109250881Sjkim# ifdef YYPARSE_PARAM_TYPE
110250881Sjkim#  define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
111250881Sjkim# else
112250881Sjkim#  define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
113250881Sjkim# endif
114250881Sjkim#else
115250881Sjkim# define YYPARSE_DECL() yyparse(void)
116250881Sjkim#endif
117250881Sjkim
118250881Sjkim/* Parameters sent to lex. */
119250881Sjkim#ifdef YYLEX_PARAM
120250881Sjkim# define YYLEX_DECL() yylex(void *YYLEX_PARAM)
121250881Sjkim# define YYLEX yylex(YYLEX_PARAM)
122250881Sjkim#else
123250881Sjkim# define YYLEX_DECL() yylex(void)
124250881Sjkim# define YYLEX yylex()
125250881Sjkim#endif
126250881Sjkim
127250881Sjkim/* Parameters sent to yyerror. */
128250881Sjkim#ifndef YYERROR_DECL
129250881Sjkim#define YYERROR_DECL() yyerror(const char *s)
130250881Sjkim#endif
131250881Sjkim#ifndef YYERROR_CALL
132250881Sjkim#define YYERROR_CALL(msg) yyerror(msg)
133250881Sjkim#endif
134250881Sjkim
135250881Sjkimextern int YYPARSE_DECL();
136250881Sjkim
137250881Sjkim#define CHAR 257
138250881Sjkim#define NUMBER 258
139250881Sjkim#define SECTEND 259
140250881Sjkim#define SCDECL 260
141250881Sjkim#define XSCDECL 261
142250881Sjkim#define NAME 262
143250881Sjkim#define PREVCCL 263
144250881Sjkim#define EOF_OP 264
145250881Sjkim#define OPTION_OP 265
146250881Sjkim#define OPT_OUTFILE 266
147250881Sjkim#define OPT_PREFIX 267
148250881Sjkim#define OPT_YYCLASS 268
149250881Sjkim#define OPT_HEADER 269
150250881Sjkim#define OPT_EXTRA_TYPE 270
151250881Sjkim#define OPT_TABLES 271
152250881Sjkim#define CCE_ALNUM 272
153250881Sjkim#define CCE_ALPHA 273
154250881Sjkim#define CCE_BLANK 274
155250881Sjkim#define CCE_CNTRL 275
156250881Sjkim#define CCE_DIGIT 276
157250881Sjkim#define CCE_GRAPH 277
158250881Sjkim#define CCE_LOWER 278
159250881Sjkim#define CCE_PRINT 279
160250881Sjkim#define CCE_PUNCT 280
161250881Sjkim#define CCE_SPACE 281
162250881Sjkim#define CCE_UPPER 282
163250881Sjkim#define CCE_XDIGIT 283
164250881Sjkim#define CCE_NEG_ALNUM 284
165250881Sjkim#define CCE_NEG_ALPHA 285
166250881Sjkim#define CCE_NEG_BLANK 286
167250881Sjkim#define CCE_NEG_CNTRL 287
168250881Sjkim#define CCE_NEG_DIGIT 288
169250881Sjkim#define CCE_NEG_GRAPH 289
170250881Sjkim#define CCE_NEG_LOWER 290
171250881Sjkim#define CCE_NEG_PRINT 291
172250881Sjkim#define CCE_NEG_PUNCT 292
173250881Sjkim#define CCE_NEG_SPACE 293
174250881Sjkim#define CCE_NEG_UPPER 294
175250881Sjkim#define CCE_NEG_XDIGIT 295
176250881Sjkim#define CCL_OP_DIFF 296
177250881Sjkim#define CCL_OP_UNION 297
178250881Sjkim#define BEGIN_REPEAT_POSIX 298
179250881Sjkim#define END_REPEAT_POSIX 299
180250881Sjkim#define BEGIN_REPEAT_FLEX 300
181250881Sjkim#define END_REPEAT_FLEX 301
182250881Sjkim#define YYERRCODE 256
183250881Sjkimstatic const short yylhs[] = {                           -1,
184250881Sjkim    0,    1,    2,    2,    2,    2,    3,    6,    6,    7,
185250881Sjkim    7,    7,    8,    9,    9,   10,   10,   10,   10,   10,
186250881Sjkim   10,    4,    4,    4,    5,   12,   12,   12,   12,   14,
187250881Sjkim   11,   11,   11,   15,   15,   15,   16,   13,   13,   13,
188250881Sjkim   13,   18,   18,   17,   19,   19,   19,   19,   19,   20,
189250881Sjkim   20,   20,   20,   20,   20,   20,   20,   20,   20,   20,
190250881Sjkim   20,   21,   21,   21,   23,   23,   24,   24,   24,   24,
191250881Sjkim   25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
192250881Sjkim   25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
193250881Sjkim   25,   25,   25,   25,   22,   22,
194250881Sjkim};
195250881Sjkimstatic const short yylen[] = {                            2,
196250881Sjkim    5,    0,    3,    2,    0,    1,    1,    1,    1,    2,
197250881Sjkim    1,    1,    2,    2,    0,    3,    3,    3,    3,    3,
198250881Sjkim    3,    5,    5,    0,    0,    2,    1,    1,    1,    0,
199250881Sjkim    4,    3,    0,    3,    1,    1,    1,    2,    3,    2,
200250881Sjkim    1,    3,    1,    2,    2,    1,    6,    5,    4,    2,
201250881Sjkim    2,    2,    6,    5,    4,    1,    1,    1,    3,    3,
202250881Sjkim    1,    3,    3,    1,    3,    4,    4,    2,    2,    0,
203250881Sjkim    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
204250881Sjkim    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
205250881Sjkim    1,    1,    1,    1,    2,    0,
206250881Sjkim};
207250881Sjkimstatic const short yydefred[] = {                         2,
208250881Sjkim    0,    0,    6,    0,    7,    8,    9,   15,   24,    0,
209250881Sjkim    4,    0,    0,   12,   11,    0,    0,    0,    0,    0,
210250881Sjkim    0,    0,   14,    0,    1,    0,   10,    0,    0,    0,
211250881Sjkim    0,    0,    0,    0,    0,   24,    0,   16,   18,   19,
212250881Sjkim   20,   17,   21,   32,   36,   37,    0,   35,    0,   29,
213250881Sjkim   61,   58,   28,    0,   56,   96,    0,    0,    0,   27,
214250881Sjkim    0,    0,    0,    0,    0,   64,   31,    0,   23,   26,
215250881Sjkim    0,    0,   70,    0,   22,    0,   40,    0,   44,    0,
216250881Sjkim    0,    0,   50,   51,   52,    0,    0,   34,   95,   59,
217250881Sjkim   60,    0,    0,   71,   72,   73,   74,   75,   76,   77,
218250881Sjkim   78,   79,   80,   82,   81,   83,   84,   85,   86,   87,
219250881Sjkim   88,   93,   89,   90,   91,   94,   92,   65,   69,   39,
220250881Sjkim    0,    0,    0,   62,   63,   66,    0,   49,    0,   55,
221250881Sjkim    0,   67,    0,   48,    0,   54,   47,   53,
222250881Sjkim};
223250881Sjkimstatic const short yydgoto[] = {                          1,
224250881Sjkim    2,    4,    9,   13,   25,   10,   16,   11,   12,   23,
225250881Sjkim   26,   59,   60,   35,   47,   48,   61,   62,   63,   64,
226250881Sjkim   65,   71,   66,   74,  119,
227250881Sjkim};
228250881Sjkimstatic const short yysindex[] = {                         0,
229250881Sjkim    0, -222,    0, -155,    0,    0,    0,    0,    0, -215,
230250881Sjkim    0, -123,    6,    0,    0, -193,   10,   21,   26,   31,
231250881Sjkim   35,   37,    0,   59,    0,  -44,    0, -147, -145, -140,
232250881Sjkim -133, -132, -129,   75, -214,    0,  -19,    0,    0,    0,
233250881Sjkim    0,    0,    0,    0,    0,    0,   23,    0,  -48,    0,
234250881Sjkim    0,    0,    0,  -17,    0,    0,  -17,   27,  128,    0,
235250881Sjkim  -17,   -1,  -30,  -41, -189,    0,    0, -121,    0,    0,
236250881Sjkim  -31,  -34,    0,  -87,    0,  -25,    0,  -17,    0, -109,
237250881Sjkim  -41, -108,    0,    0,    0,   60,   60,    0,    0,    0,
238250881Sjkim    0,   46,  107,    0,    0,    0,    0,    0,    0,    0,
239250881Sjkim    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
240250881Sjkim    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
241250881Sjkim  -30,  -36,  -39,    0,    0,    0, -104,    0, -219,    0,
242250881Sjkim -238,    0, -144,    0, -143,    0,    0,    0,
243250881Sjkim};
244250881Sjkimstatic const short yyrindex[] = {                         0,
245250881Sjkim    0, -141,    0,    0,    0,    0,    0,    0,    0,    0,
246250881Sjkim    0, -134,    9,    0,    0, -125,    0,    0,    0,    0,
247250881Sjkim    0,    0,    0, -178,    0,   22,    0,    0,    0,    0,
248250881Sjkim    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
249250881Sjkim    0,    0,    0,    0,    0,    0,    0,    0,  -21,    0,
250250881Sjkim    0,    0,    0,    0,    0,    0,    0,   85,    0,    0,
251250881Sjkim    0,  144,   47,    4,  -10,    0,    0,    0,    0,    0,
252250881Sjkim    0,    0,    0,    0,    0,  146,    0,    0,    0,    0,
253250881Sjkim   18,    0,    0,    0,    0,    0,    0,    0,    0,    0,
254250881Sjkim    0,    0,  124,    0,    0,    0,    0,    0,    0,    0,
255250881Sjkim    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
256250881Sjkim    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
257250881Sjkim   50,    0,    0,    0,    0,    0,    0,    0,    0,    0,
258250881Sjkim    0,    0,    0,    0,    0,    0,    0,    0,
259250881Sjkim};
260250881Sjkimstatic const short yygindex[] = {                         0,
261250881Sjkim    0,    0,    0,  121,  133,    0,    0,    0,    0,    0,
262250881Sjkim    0,    0,  106,    0,    0,   93,    0,   32,   84,  -45,
263250881Sjkim    0,    0,   25,   90,    0,
264250881Sjkim};
265250881Sjkim#define YYTABLESIZE 419
266250881Sjkimstatic const short yytable[] = {                         57,
267250881Sjkim   83,   84,   90,   56,  131,  118,   91,  129,   25,   57,
268250881Sjkim  120,   24,   33,   46,   56,   55,   56,   81,   33,  135,
269250881Sjkim   57,   85,   57,   57,   33,   57,   55,   45,   55,   57,
270250881Sjkim   57,   57,   57,    3,   77,   57,   57,   46,  133,   46,
271250881Sjkim   14,   45,   33,   46,   46,   79,   15,   46,   33,   46,
272250881Sjkim   46,   45,   57,   45,   33,   25,   43,   45,   45,   42,
273250881Sjkim   58,   25,  136,   45,   45,   24,   68,   25,   27,   33,
274250881Sjkim   28,   58,   33,   58,   54,   81,   69,   30,   36,  134,
275250881Sjkim   57,   29,   43,   30,   67,   42,   30,   43,   72,   78,
276250881Sjkim   42,   31,   76,   43,   46,   32,   42,   33,   78,   33,
277250881Sjkim   34,   33,   33,    5,    6,    7,   86,   87,   45,    8,
278250881Sjkim  124,  125,   25,   57,   38,   25,   39,    5,    5,    5,
279250881Sjkim   73,   40,   78,    5,   13,   13,   13,   46,   41,   42,
280250881Sjkim   13,   33,   43,    3,    3,    3,   44,   75,  126,    3,
281250881Sjkim   46,   45,   17,   18,   19,   20,   21,   22,  122,  123,
282250881Sjkim   58,  127,  132,   41,  137,   38,   49,  138,   37,   70,
283250881Sjkim   88,  121,   92,    0,    0,    0,    0,    0,    0,   93,
284250881Sjkim   43,    0,    0,   42,    0,    0,    0,   70,    0,    0,
285250881Sjkim    0,    0,    0,    0,   94,   95,   96,   97,   98,   99,
286250881Sjkim  100,  101,  102,  103,  104,  105,  106,  107,  108,  109,
287250881Sjkim  110,  111,  112,  113,  114,  115,  116,  117,    0,    0,
288250881Sjkim    0,    0,    0,    0,    0,    0,   68,    0,    0,    0,
289250881Sjkim    0,    0,    0,    0,    0,   89,   51,    0,    0,    0,
290250881Sjkim    0,    0,   52,    0,   33,   33,   50,   51,    0,   51,
291250881Sjkim    0,   33,   33,   52,   53,   52,   57,    0,    0,    0,
292250881Sjkim    0,    0,   57,    0,    0,    0,    0,    0,   82,    0,
293250881Sjkim   46,  130,  128,    0,   33,   33,   46,   80,    0,    0,
294250881Sjkim    0,   33,   33,    0,   45,    0,    0,   25,   25,    0,
295250881Sjkim   45,    0,    0,    0,   25,   25,    0,   57,    0,   57,
296250881Sjkim    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
297250881Sjkim    0,   46,   93,    0,    0,    0,    0,    0,    0,    0,
298250881Sjkim    0,    0,    0,    0,    0,   45,    0,   94,   95,   96,
299250881Sjkim   97,   98,   99,  100,  101,  102,  103,  104,  105,  106,
300250881Sjkim  107,  108,  109,  110,  111,  112,  113,  114,  115,  116,
301250881Sjkim  117,   70,    0,    0,    0,    0,    0,    0,    0,    0,
302250881Sjkim    0,    0,    0,    0,    0,    0,   70,   70,   70,   70,
303250881Sjkim   70,   70,   70,   70,   70,   70,   70,   70,   70,   70,
304250881Sjkim   70,   70,   70,   70,   70,   70,   70,   70,   70,   70,
305250881Sjkim   68,    0,    0,    0,    0,    0,    0,    0,    0,    0,
306250881Sjkim    0,    0,    0,    0,    0,   68,   68,   68,   68,   68,
307250881Sjkim   68,   68,   68,   68,   68,   68,   68,   68,   68,   68,
308250881Sjkim   68,   68,   68,   68,   68,   68,   68,   68,   68,
309250881Sjkim};
310250881Sjkimstatic const short yycheck[] = {                         10,
311250881Sjkim   42,   43,   34,   34,   44,   93,   41,   44,    0,   40,
312250881Sjkim   36,   60,   34,   10,   34,   46,   34,   63,   40,  258,
313250881Sjkim   40,   63,   40,   34,   46,   36,   46,   10,   46,   40,
314250881Sjkim   41,   42,   43,  256,   36,   46,   47,   34,  258,   36,
315250881Sjkim  256,  256,   34,   40,   41,   47,  262,  262,   40,   46,
316250881Sjkim   47,   34,   63,   36,   46,   34,   10,   40,   41,   10,
317250881Sjkim   91,   40,  301,   46,   47,   60,   44,   46,  262,   91,
318250881Sjkim   61,   91,   94,   91,   94,  121,  125,  256,  123,  299,
319250881Sjkim   91,   61,   36,  262,   62,   36,   61,   41,   57,  124,
320250881Sjkim   41,   61,   61,   47,   91,   61,   47,   61,  124,   91,
321250881Sjkim   42,  123,   94,  259,  260,  261,  296,  297,   91,  265,
322250881Sjkim   86,   87,   91,  124,  262,   94,  262,  259,  260,  261,
323250881Sjkim   94,  262,  124,  265,  259,  260,  261,  124,  262,  262,
324250881Sjkim  265,  123,  262,  259,  260,  261,   62,   10,   93,  265,
325250881Sjkim  262,  124,  266,  267,  268,  269,  270,  271,  258,  258,
326250881Sjkim   91,   45,  257,   10,  299,   10,   36,  301,   26,   54,
327250881Sjkim   68,   78,   73,   -1,   -1,   -1,   -1,   -1,   -1,  257,
328250881Sjkim  124,   -1,   -1,  124,   -1,   -1,   -1,   93,   -1,   -1,
329250881Sjkim   -1,   -1,   -1,   -1,  272,  273,  274,  275,  276,  277,
330250881Sjkim  278,  279,  280,  281,  282,  283,  284,  285,  286,  287,
331250881Sjkim  288,  289,  290,  291,  292,  293,  294,  295,   -1,   -1,
332250881Sjkim   -1,   -1,   -1,   -1,   -1,   -1,   93,   -1,   -1,   -1,
333250881Sjkim   -1,   -1,   -1,   -1,   -1,  257,  257,   -1,   -1,   -1,
334250881Sjkim   -1,   -1,  263,   -1,  256,  257,  256,  257,   -1,  257,
335250881Sjkim   -1,  263,  264,  263,  264,  263,  257,   -1,   -1,   -1,
336250881Sjkim   -1,   -1,  263,   -1,   -1,   -1,   -1,   -1,  300,   -1,
337250881Sjkim  257,  301,  299,   -1,  256,  257,  263,  298,   -1,   -1,
338250881Sjkim   -1,  263,  264,   -1,  257,   -1,   -1,  256,  257,   -1,
339250881Sjkim  263,   -1,   -1,   -1,  263,  264,   -1,  298,   -1,  300,
340250881Sjkim   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
341250881Sjkim   -1,  298,  257,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
342250881Sjkim   -1,   -1,   -1,   -1,   -1,  298,   -1,  272,  273,  274,
343250881Sjkim  275,  276,  277,  278,  279,  280,  281,  282,  283,  284,
344250881Sjkim  285,  286,  287,  288,  289,  290,  291,  292,  293,  294,
345250881Sjkim  295,  257,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
346250881Sjkim   -1,   -1,   -1,   -1,   -1,   -1,  272,  273,  274,  275,
347250881Sjkim  276,  277,  278,  279,  280,  281,  282,  283,  284,  285,
348250881Sjkim  286,  287,  288,  289,  290,  291,  292,  293,  294,  295,
349250881Sjkim  257,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
350250881Sjkim   -1,   -1,   -1,   -1,   -1,  272,  273,  274,  275,  276,
351250881Sjkim  277,  278,  279,  280,  281,  282,  283,  284,  285,  286,
352250881Sjkim  287,  288,  289,  290,  291,  292,  293,  294,  295,
353250881Sjkim};
354250881Sjkim#define YYFINAL 1
355250881Sjkim#ifndef YYDEBUG
356250881Sjkim#define YYDEBUG 0
357250881Sjkim#endif
358250881Sjkim#define YYMAXTOKEN 301
359250881Sjkim#if YYDEBUG
360250881Sjkimstatic const char *yyname[] = {
361250881Sjkim
362250881Sjkim"end-of-file",0,0,0,0,0,0,0,0,0,"'\\n'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
363250881Sjkim0,0,0,"'\"'",0,"'$'",0,0,0,"'('","')'","'*'","'+'","','","'-'","'.'","'/'",0,0,
364250881Sjkim0,0,0,0,0,0,0,0,0,0,"'<'","'='","'>'","'?'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
365250881Sjkim0,0,0,0,0,0,0,0,0,"'['",0,"']'","'^'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
366250881Sjkim0,0,0,0,0,0,0,"'{'","'|'","'}'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
367250881Sjkim0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
368250881Sjkim0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
369250881Sjkim0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"CHAR","NUMBER","SECTEND",
370250881Sjkim"SCDECL","XSCDECL","NAME","PREVCCL","EOF_OP","OPTION_OP","OPT_OUTFILE",
371250881Sjkim"OPT_PREFIX","OPT_YYCLASS","OPT_HEADER","OPT_EXTRA_TYPE","OPT_TABLES",
372250881Sjkim"CCE_ALNUM","CCE_ALPHA","CCE_BLANK","CCE_CNTRL","CCE_DIGIT","CCE_GRAPH",
373250881Sjkim"CCE_LOWER","CCE_PRINT","CCE_PUNCT","CCE_SPACE","CCE_UPPER","CCE_XDIGIT",
374250881Sjkim"CCE_NEG_ALNUM","CCE_NEG_ALPHA","CCE_NEG_BLANK","CCE_NEG_CNTRL","CCE_NEG_DIGIT",
375250881Sjkim"CCE_NEG_GRAPH","CCE_NEG_LOWER","CCE_NEG_PRINT","CCE_NEG_PUNCT","CCE_NEG_SPACE",
376250881Sjkim"CCE_NEG_UPPER","CCE_NEG_XDIGIT","CCL_OP_DIFF","CCL_OP_UNION",
377250881Sjkim"BEGIN_REPEAT_POSIX","END_REPEAT_POSIX","BEGIN_REPEAT_FLEX","END_REPEAT_FLEX",
378250881Sjkim};
379250881Sjkimstatic const char *yyrule[] = {
380250881Sjkim"$accept : goal",
381250881Sjkim"goal : initlex sect1 sect1end sect2 initforrule",
382250881Sjkim"initlex :",
383250881Sjkim"sect1 : sect1 startconddecl namelist1",
384250881Sjkim"sect1 : sect1 options",
385250881Sjkim"sect1 :",
386250881Sjkim"sect1 : error",
387250881Sjkim"sect1end : SECTEND",
388250881Sjkim"startconddecl : SCDECL",
389250881Sjkim"startconddecl : XSCDECL",
390250881Sjkim"namelist1 : namelist1 NAME",
391250881Sjkim"namelist1 : NAME",
392250881Sjkim"namelist1 : error",
393250881Sjkim"options : OPTION_OP optionlist",
394250881Sjkim"optionlist : optionlist option",
395250881Sjkim"optionlist :",
396250881Sjkim"option : OPT_OUTFILE '=' NAME",
397250881Sjkim"option : OPT_EXTRA_TYPE '=' NAME",
398250881Sjkim"option : OPT_PREFIX '=' NAME",
399250881Sjkim"option : OPT_YYCLASS '=' NAME",
400250881Sjkim"option : OPT_HEADER '=' NAME",
401250881Sjkim"option : OPT_TABLES '=' NAME",
402250881Sjkim"sect2 : sect2 scon initforrule flexrule '\\n'",
403250881Sjkim"sect2 : sect2 scon '{' sect2 '}'",
404250881Sjkim"sect2 :",
405250881Sjkim"initforrule :",
406250881Sjkim"flexrule : '^' rule",
407250881Sjkim"flexrule : rule",
408250881Sjkim"flexrule : EOF_OP",
409250881Sjkim"flexrule : error",
410250881Sjkim"scon_stk_ptr :",
411250881Sjkim"scon : '<' scon_stk_ptr namelist2 '>'",
412250881Sjkim"scon : '<' '*' '>'",
413250881Sjkim"scon :",
414250881Sjkim"namelist2 : namelist2 ',' sconname",
415250881Sjkim"namelist2 : sconname",
416250881Sjkim"namelist2 : error",
417250881Sjkim"sconname : NAME",
418250881Sjkim"rule : re2 re",
419250881Sjkim"rule : re2 re '$'",
420250881Sjkim"rule : re '$'",
421250881Sjkim"rule : re",
422250881Sjkim"re : re '|' series",
423250881Sjkim"re : series",
424250881Sjkim"re2 : re '/'",
425250881Sjkim"series : series singleton",
426250881Sjkim"series : singleton",
427250881Sjkim"series : series BEGIN_REPEAT_POSIX NUMBER ',' NUMBER END_REPEAT_POSIX",
428250881Sjkim"series : series BEGIN_REPEAT_POSIX NUMBER ',' END_REPEAT_POSIX",
429250881Sjkim"series : series BEGIN_REPEAT_POSIX NUMBER END_REPEAT_POSIX",
430250881Sjkim"singleton : singleton '*'",
431250881Sjkim"singleton : singleton '+'",
432250881Sjkim"singleton : singleton '?'",
433250881Sjkim"singleton : singleton BEGIN_REPEAT_FLEX NUMBER ',' NUMBER END_REPEAT_FLEX",
434250881Sjkim"singleton : singleton BEGIN_REPEAT_FLEX NUMBER ',' END_REPEAT_FLEX",
435250881Sjkim"singleton : singleton BEGIN_REPEAT_FLEX NUMBER END_REPEAT_FLEX",
436250881Sjkim"singleton : '.'",
437250881Sjkim"singleton : fullccl",
438250881Sjkim"singleton : PREVCCL",
439250881Sjkim"singleton : '\"' string '\"'",
440250881Sjkim"singleton : '(' re ')'",
441250881Sjkim"singleton : CHAR",
442250881Sjkim"fullccl : fullccl CCL_OP_DIFF braceccl",
443250881Sjkim"fullccl : fullccl CCL_OP_UNION braceccl",
444250881Sjkim"fullccl : braceccl",
445250881Sjkim"braceccl : '[' ccl ']'",
446250881Sjkim"braceccl : '[' '^' ccl ']'",
447250881Sjkim"ccl : ccl CHAR '-' CHAR",
448250881Sjkim"ccl : ccl CHAR",
449250881Sjkim"ccl : ccl ccl_expr",
450250881Sjkim"ccl :",
451250881Sjkim"ccl_expr : CCE_ALNUM",
452250881Sjkim"ccl_expr : CCE_ALPHA",
453250881Sjkim"ccl_expr : CCE_BLANK",
454250881Sjkim"ccl_expr : CCE_CNTRL",
455250881Sjkim"ccl_expr : CCE_DIGIT",
456250881Sjkim"ccl_expr : CCE_GRAPH",
457250881Sjkim"ccl_expr : CCE_LOWER",
458250881Sjkim"ccl_expr : CCE_PRINT",
459250881Sjkim"ccl_expr : CCE_PUNCT",
460250881Sjkim"ccl_expr : CCE_SPACE",
461250881Sjkim"ccl_expr : CCE_XDIGIT",
462250881Sjkim"ccl_expr : CCE_UPPER",
463250881Sjkim"ccl_expr : CCE_NEG_ALNUM",
464250881Sjkim"ccl_expr : CCE_NEG_ALPHA",
465250881Sjkim"ccl_expr : CCE_NEG_BLANK",
466250881Sjkim"ccl_expr : CCE_NEG_CNTRL",
467250881Sjkim"ccl_expr : CCE_NEG_DIGIT",
468250881Sjkim"ccl_expr : CCE_NEG_GRAPH",
469250881Sjkim"ccl_expr : CCE_NEG_PRINT",
470250881Sjkim"ccl_expr : CCE_NEG_PUNCT",
471250881Sjkim"ccl_expr : CCE_NEG_SPACE",
472250881Sjkim"ccl_expr : CCE_NEG_XDIGIT",
473250881Sjkim"ccl_expr : CCE_NEG_LOWER",
474250881Sjkim"ccl_expr : CCE_NEG_UPPER",
475250881Sjkim"string : string CHAR",
476250881Sjkim"string :",
477250881Sjkim
478250881Sjkim};
479250881Sjkim#endif
480250881Sjkim
481250881Sjkimint      yydebug;
482250881Sjkimint      yynerrs;
483250881Sjkim
484250881Sjkimint      yyerrflag;
485250881Sjkimint      yychar;
486250881SjkimYYSTYPE  yyval;
487250881SjkimYYSTYPE  yylval;
488250881Sjkim
489250881Sjkim/* define the initial stack-sizes */
490250881Sjkim#ifdef YYSTACKSIZE
491250881Sjkim#undef YYMAXDEPTH
492250881Sjkim#define YYMAXDEPTH  YYSTACKSIZE
493250881Sjkim#else
494250881Sjkim#ifdef YYMAXDEPTH
495250881Sjkim#define YYSTACKSIZE YYMAXDEPTH
496250881Sjkim#else
497250881Sjkim#define YYSTACKSIZE 500
498250881Sjkim#define YYMAXDEPTH  500
499250881Sjkim#endif
500250881Sjkim#endif
501250881Sjkim
502250881Sjkim#define YYINITSTACKSIZE 500
503250881Sjkim
504250881Sjkimtypedef struct {
505250881Sjkim    unsigned stacksize;
506250881Sjkim    short    *s_base;
507250881Sjkim    short    *s_mark;
508250881Sjkim    short    *s_last;
509250881Sjkim    YYSTYPE  *l_base;
510250881Sjkim    YYSTYPE  *l_mark;
511250881Sjkim} YYSTACKDATA;
512250881Sjkim/* variables for the parser stack */
513250881Sjkimstatic YYSTACKDATA yystack;
514250881Sjkim#line 948 "parse.y"
515250881Sjkim
516250881Sjkim
517250881Sjkim/* build_eof_action - build the "<<EOF>>" action for the active start
518250881Sjkim *                    conditions
519250881Sjkim */
520250881Sjkim
521250881Sjkimvoid build_eof_action()
522250881Sjkim	{
523250881Sjkim	int i;
524250881Sjkim	char action_text[MAXLINE];
525250881Sjkim
526250881Sjkim	for ( i = 1; i <= scon_stk_ptr; ++i )
527250881Sjkim		{
528250881Sjkim		if ( sceof[scon_stk[i]] )
529250881Sjkim			format_pinpoint_message(
530250881Sjkim				"multiple <<EOF>> rules for start condition %s",
531250881Sjkim				scname[scon_stk[i]] );
532250881Sjkim
533250881Sjkim		else
534250881Sjkim			{
535250881Sjkim			sceof[scon_stk[i]] = true;
536250881Sjkim
537250881Sjkim			if (previous_continued_action /* && previous action was regular */)
538250881Sjkim				add_action("YY_RULE_SETUP\n");
539250881Sjkim
540250881Sjkim			snprintf( action_text, sizeof(action_text), "case YY_STATE_EOF(%s):\n",
541250881Sjkim				scname[scon_stk[i]] );
542250881Sjkim			add_action( action_text );
543250881Sjkim			}
544250881Sjkim		}
545250881Sjkim
546250881Sjkim	line_directive_out( (FILE *) 0, 1 );
547250881Sjkim
548250881Sjkim	/* This isn't a normal rule after all - don't count it as
549250881Sjkim	 * such, so we don't have any holes in the rule numbering
550250881Sjkim	 * (which make generating "rule can never match" warnings
551250881Sjkim	 * more difficult.
552250881Sjkim	 */
553250881Sjkim	--num_rules;
554250881Sjkim	++num_eof_rules;
555250881Sjkim	}
556250881Sjkim
557250881Sjkim
558250881Sjkim/* format_synerr - write out formatted syntax error */
559250881Sjkim
560250881Sjkimvoid format_synerr( msg, arg )
561250881Sjkimconst char *msg, arg[];
562250881Sjkim	{
563250881Sjkim	char errmsg[MAXLINE];
564250881Sjkim
565250881Sjkim	(void) snprintf( errmsg, sizeof(errmsg), msg, arg );
566250881Sjkim	synerr( errmsg );
567250881Sjkim	}
568250881Sjkim
569250881Sjkim
570250881Sjkim/* synerr - report a syntax error */
571250881Sjkim
572250881Sjkimvoid synerr( str )
573250881Sjkimconst char *str;
574250881Sjkim	{
575250881Sjkim	syntaxerror = true;
576250881Sjkim	pinpoint_message( str );
577250881Sjkim	}
578250881Sjkim
579250881Sjkim
580250881Sjkim/* format_warn - write out formatted warning */
581250881Sjkim
582250881Sjkimvoid format_warn( msg, arg )
583250881Sjkimconst char *msg, arg[];
584250881Sjkim	{
585250881Sjkim	char warn_msg[MAXLINE];
586250881Sjkim
587250881Sjkim	snprintf( warn_msg, sizeof(warn_msg), msg, arg );
588250881Sjkim	warn( warn_msg );
589250881Sjkim	}
590250881Sjkim
591250881Sjkim
592250881Sjkim/* warn - report a warning, unless -w was given */
593250881Sjkim
594250881Sjkimvoid warn( str )
595250881Sjkimconst char *str;
596250881Sjkim	{
597250881Sjkim	line_warning( str, linenum );
598250881Sjkim	}
599250881Sjkim
600250881Sjkim/* format_pinpoint_message - write out a message formatted with one string,
601250881Sjkim *			     pinpointing its location
602250881Sjkim */
603250881Sjkim
604250881Sjkimvoid format_pinpoint_message( msg, arg )
605250881Sjkimconst char *msg, arg[];
606250881Sjkim	{
607250881Sjkim	char errmsg[MAXLINE];
608250881Sjkim
609250881Sjkim	snprintf( errmsg, sizeof(errmsg), msg, arg );
610250881Sjkim	pinpoint_message( errmsg );
611250881Sjkim	}
612250881Sjkim
613250881Sjkim
614250881Sjkim/* pinpoint_message - write out a message, pinpointing its location */
615250881Sjkim
616250881Sjkimvoid pinpoint_message( str )
617250881Sjkimconst char *str;
618250881Sjkim	{
619250881Sjkim	line_pinpoint( str, linenum );
620250881Sjkim	}
621250881Sjkim
622250881Sjkim
623250881Sjkim/* line_warning - report a warning at a given line, unless -w was given */
624250881Sjkim
625250881Sjkimvoid line_warning( str, line )
626250881Sjkimconst char *str;
627250881Sjkimint line;
628250881Sjkim	{
629250881Sjkim	char warning[MAXLINE];
630250881Sjkim
631250881Sjkim	if ( ! nowarn )
632250881Sjkim		{
633250881Sjkim		snprintf( warning, sizeof(warning), "warning, %s", str );
634250881Sjkim		line_pinpoint( warning, line );
635250881Sjkim		}
636250881Sjkim	}
637250881Sjkim
638250881Sjkim
639250881Sjkim/* line_pinpoint - write out a message, pinpointing it at the given line */
640250881Sjkim
641250881Sjkimvoid line_pinpoint( str, line )
642250881Sjkimconst char *str;
643250881Sjkimint line;
644250881Sjkim	{
645250881Sjkim	fprintf( stderr, "%s:%d: %s\n", infilename, line, str );
646250881Sjkim	}
647250881Sjkim
648250881Sjkim
649250881Sjkim/* yyerror - eat up an error message from the parser;
650250881Sjkim *	     currently, messages are ignore
651250881Sjkim */
652250881Sjkim
653250881Sjkimvoid yyerror( msg )
654250881Sjkimconst char *msg;
655250881Sjkim	{
656250881Sjkim	}
657250881Sjkim#line 656 "parse.c"
658250881Sjkim
659250881Sjkim#if YYDEBUG
660250881Sjkim#include <stdio.h>		/* needed for printf */
661250881Sjkim#endif
662250881Sjkim
663250881Sjkim#include <stdlib.h>	/* needed for malloc, etc */
664250881Sjkim#include <string.h>	/* needed for memset */
665250881Sjkim
666250881Sjkim/* allocate initial stack or double stack size, up to YYMAXDEPTH */
667250881Sjkimstatic int yygrowstack(YYSTACKDATA *data)
668250881Sjkim{
669250881Sjkim    int i;
670250881Sjkim    unsigned newsize;
671250881Sjkim    short *newss;
672250881Sjkim    YYSTYPE *newvs;
673250881Sjkim
674250881Sjkim    if ((newsize = data->stacksize) == 0)
675250881Sjkim        newsize = YYINITSTACKSIZE;
676250881Sjkim    else if (newsize >= YYMAXDEPTH)
677250881Sjkim        return -1;
678250881Sjkim    else if ((newsize *= 2) > YYMAXDEPTH)
679250881Sjkim        newsize = YYMAXDEPTH;
680250881Sjkim
681250881Sjkim    i = data->s_mark - data->s_base;
682250881Sjkim    newss = (short *)realloc(data->s_base, newsize * sizeof(*newss));
683298241Saraujo    if (newss == NULL)
684250881Sjkim        return -1;
685250881Sjkim
686250881Sjkim    data->s_base = newss;
687250881Sjkim    data->s_mark = newss + i;
688250881Sjkim
689250881Sjkim    newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
690298241Saraujo    if (newvs == NULL)
691250881Sjkim        return -1;
692250881Sjkim
693250881Sjkim    data->l_base = newvs;
694250881Sjkim    data->l_mark = newvs + i;
695250881Sjkim
696250881Sjkim    data->stacksize = newsize;
697250881Sjkim    data->s_last = data->s_base + newsize - 1;
698250881Sjkim    return 0;
699250881Sjkim}
700250881Sjkim
701250881Sjkim#if YYPURE || defined(YY_NO_LEAKS)
702250881Sjkimstatic void yyfreestack(YYSTACKDATA *data)
703250881Sjkim{
704250881Sjkim    free(data->s_base);
705250881Sjkim    free(data->l_base);
706250881Sjkim    memset(data, 0, sizeof(*data));
707250881Sjkim}
708250881Sjkim#else
709250881Sjkim#define yyfreestack(data) /* nothing */
710250881Sjkim#endif
711250881Sjkim
712250881Sjkim#define YYABORT  goto yyabort
713250881Sjkim#define YYREJECT goto yyabort
714250881Sjkim#define YYACCEPT goto yyaccept
715250881Sjkim#define YYERROR  goto yyerrlab
716250881Sjkim
717250881Sjkimint
718250881SjkimYYPARSE_DECL()
719250881Sjkim{
720250881Sjkim    int yym, yyn, yystate;
721250881Sjkim#if YYDEBUG
722250881Sjkim    const char *yys;
723250881Sjkim
724298241Saraujo    if ((yys = getenv("YYDEBUG")) != NULL)
725250881Sjkim    {
726250881Sjkim        yyn = *yys;
727250881Sjkim        if (yyn >= '0' && yyn <= '9')
728250881Sjkim            yydebug = yyn - '0';
729250881Sjkim    }
730250881Sjkim#endif
731250881Sjkim
732250881Sjkim    yynerrs = 0;
733250881Sjkim    yyerrflag = 0;
734250881Sjkim    yychar = YYEMPTY;
735250881Sjkim    yystate = 0;
736250881Sjkim
737250881Sjkim#if YYPURE
738250881Sjkim    memset(&yystack, 0, sizeof(yystack));
739250881Sjkim#endif
740250881Sjkim
741250881Sjkim    if (yystack.s_base == NULL && yygrowstack(&yystack)) goto yyoverflow;
742250881Sjkim    yystack.s_mark = yystack.s_base;
743250881Sjkim    yystack.l_mark = yystack.l_base;
744250881Sjkim    yystate = 0;
745250881Sjkim    *yystack.s_mark = 0;
746250881Sjkim
747250881Sjkimyyloop:
748250881Sjkim    if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
749250881Sjkim    if (yychar < 0)
750250881Sjkim    {
751250881Sjkim        if ((yychar = YYLEX) < 0) yychar = 0;
752250881Sjkim#if YYDEBUG
753250881Sjkim        if (yydebug)
754250881Sjkim        {
755250881Sjkim            yys = 0;
756250881Sjkim            if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
757250881Sjkim            if (!yys) yys = "illegal-symbol";
758250881Sjkim            printf("%sdebug: state %d, reading %d (%s)\n",
759250881Sjkim                    YYPREFIX, yystate, yychar, yys);
760250881Sjkim        }
761250881Sjkim#endif
762250881Sjkim    }
763250881Sjkim    if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&
764250881Sjkim            yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
765250881Sjkim    {
766250881Sjkim#if YYDEBUG
767250881Sjkim        if (yydebug)
768250881Sjkim            printf("%sdebug: state %d, shifting to state %d\n",
769250881Sjkim                    YYPREFIX, yystate, yytable[yyn]);
770250881Sjkim#endif
771250881Sjkim        if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack))
772250881Sjkim        {
773250881Sjkim            goto yyoverflow;
774250881Sjkim        }
775250881Sjkim        yystate = yytable[yyn];
776250881Sjkim        *++yystack.s_mark = yytable[yyn];
777250881Sjkim        *++yystack.l_mark = yylval;
778250881Sjkim        yychar = YYEMPTY;
779250881Sjkim        if (yyerrflag > 0)  --yyerrflag;
780250881Sjkim        goto yyloop;
781250881Sjkim    }
782250881Sjkim    if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&
783250881Sjkim            yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
784250881Sjkim    {
785250881Sjkim        yyn = yytable[yyn];
786250881Sjkim        goto yyreduce;
787250881Sjkim    }
788250881Sjkim    if (yyerrflag) goto yyinrecovery;
789250881Sjkim
790250881Sjkim    yyerror("syntax error");
791250881Sjkim
792250881Sjkim    goto yyerrlab;
793250881Sjkim
794250881Sjkimyyerrlab:
795250881Sjkim    ++yynerrs;
796250881Sjkim
797250881Sjkimyyinrecovery:
798250881Sjkim    if (yyerrflag < 3)
799250881Sjkim    {
800250881Sjkim        yyerrflag = 3;
801250881Sjkim        for (;;)
802250881Sjkim        {
803250881Sjkim            if ((yyn = yysindex[*yystack.s_mark]) && (yyn += YYERRCODE) >= 0 &&
804250881Sjkim                    yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
805250881Sjkim            {
806250881Sjkim#if YYDEBUG
807250881Sjkim                if (yydebug)
808250881Sjkim                    printf("%sdebug: state %d, error recovery shifting\
809250881Sjkim to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]);
810250881Sjkim#endif
811250881Sjkim                if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack))
812250881Sjkim                {
813250881Sjkim                    goto yyoverflow;
814250881Sjkim                }
815250881Sjkim                yystate = yytable[yyn];
816250881Sjkim                *++yystack.s_mark = yytable[yyn];
817250881Sjkim                *++yystack.l_mark = yylval;
818250881Sjkim                goto yyloop;
819250881Sjkim            }
820250881Sjkim            else
821250881Sjkim            {
822250881Sjkim#if YYDEBUG
823250881Sjkim                if (yydebug)
824250881Sjkim                    printf("%sdebug: error recovery discarding state %d\n",
825250881Sjkim                            YYPREFIX, *yystack.s_mark);
826250881Sjkim#endif
827250881Sjkim                if (yystack.s_mark <= yystack.s_base) goto yyabort;
828250881Sjkim                --yystack.s_mark;
829250881Sjkim                --yystack.l_mark;
830250881Sjkim            }
831250881Sjkim        }
832250881Sjkim    }
833250881Sjkim    else
834250881Sjkim    {
835250881Sjkim        if (yychar == 0) goto yyabort;
836250881Sjkim#if YYDEBUG
837250881Sjkim        if (yydebug)
838250881Sjkim        {
839250881Sjkim            yys = 0;
840250881Sjkim            if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
841250881Sjkim            if (!yys) yys = "illegal-symbol";
842250881Sjkim            printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
843250881Sjkim                    YYPREFIX, yystate, yychar, yys);
844250881Sjkim        }
845250881Sjkim#endif
846250881Sjkim        yychar = YYEMPTY;
847250881Sjkim        goto yyloop;
848250881Sjkim    }
849250881Sjkim
850250881Sjkimyyreduce:
851250881Sjkim#if YYDEBUG
852250881Sjkim    if (yydebug)
853250881Sjkim        printf("%sdebug: state %d, reducing by rule %d (%s)\n",
854250881Sjkim                YYPREFIX, yystate, yyn, yyrule[yyn]);
855250881Sjkim#endif
856250881Sjkim    yym = yylen[yyn];
857250881Sjkim    if (yym)
858250881Sjkim        yyval = yystack.l_mark[1-yym];
859250881Sjkim    else
860250881Sjkim        memset(&yyval, 0, sizeof yyval);
861250881Sjkim    switch (yyn)
862250881Sjkim    {
863250881Sjkimcase 1:
864250881Sjkim#line 119 "parse.y"
865250881Sjkim	{ /* add default rule */
866250881Sjkim			int def_rule;
867250881Sjkim
868250881Sjkim			pat = cclinit();
869250881Sjkim			cclnegate( pat );
870250881Sjkim
871250881Sjkim			def_rule = mkstate( -pat );
872250881Sjkim
873250881Sjkim			/* Remember the number of the default rule so we
874250881Sjkim			 * don't generate "can't match" warnings for it.
875250881Sjkim			 */
876250881Sjkim			default_rule = num_rules;
877250881Sjkim
878250881Sjkim			finish_rule( def_rule, false, 0, 0, 0);
879250881Sjkim
880250881Sjkim			for ( i = 1; i <= lastsc; ++i )
881250881Sjkim				scset[i] = mkbranch( scset[i], def_rule );
882250881Sjkim
883250881Sjkim			if ( spprdflt )
884250881Sjkim				add_action(
885250881Sjkim				"YY_FATAL_ERROR( \"flex scanner jammed\" )" );
886250881Sjkim			else
887250881Sjkim				add_action( "ECHO" );
888250881Sjkim
889250881Sjkim			add_action( ";\n\tYY_BREAK\n" );
890250881Sjkim			}
891250881Sjkimbreak;
892250881Sjkimcase 2:
893250881Sjkim#line 148 "parse.y"
894250881Sjkim	{ /* initialize for processing rules */
895250881Sjkim
896250881Sjkim			/* Create default DFA start condition. */
897250881Sjkim			scinstal( "INITIAL", false );
898250881Sjkim			}
899250881Sjkimbreak;
900250881Sjkimcase 6:
901250881Sjkim#line 159 "parse.y"
902250881Sjkim	{ synerr( _("unknown error processing section 1") ); }
903250881Sjkimbreak;
904250881Sjkimcase 7:
905250881Sjkim#line 163 "parse.y"
906250881Sjkim	{
907250881Sjkim			check_options();
908250881Sjkim			scon_stk = allocate_integer_array( lastsc + 1 );
909250881Sjkim			scon_stk_ptr = 0;
910250881Sjkim			}
911250881Sjkimbreak;
912250881Sjkimcase 8:
913250881Sjkim#line 171 "parse.y"
914250881Sjkim	{ xcluflg = false; }
915250881Sjkimbreak;
916250881Sjkimcase 9:
917250881Sjkim#line 174 "parse.y"
918250881Sjkim	{ xcluflg = true; }
919250881Sjkimbreak;
920250881Sjkimcase 10:
921250881Sjkim#line 178 "parse.y"
922250881Sjkim	{ scinstal( nmstr, xcluflg ); }
923250881Sjkimbreak;
924250881Sjkimcase 11:
925250881Sjkim#line 181 "parse.y"
926250881Sjkim	{ scinstal( nmstr, xcluflg ); }
927250881Sjkimbreak;
928250881Sjkimcase 12:
929250881Sjkim#line 184 "parse.y"
930250881Sjkim	{ synerr( _("bad start condition list") ); }
931250881Sjkimbreak;
932250881Sjkimcase 16:
933250881Sjkim#line 195 "parse.y"
934250881Sjkim	{
935250881Sjkim			outfilename = copy_string( nmstr );
936250881Sjkim			did_outfilename = 1;
937250881Sjkim			}
938250881Sjkimbreak;
939250881Sjkimcase 17:
940250881Sjkim#line 200 "parse.y"
941250881Sjkim	{ extra_type = copy_string( nmstr ); }
942250881Sjkimbreak;
943250881Sjkimcase 18:
944250881Sjkim#line 202 "parse.y"
945250881Sjkim	{ prefix = copy_string( nmstr ); }
946250881Sjkimbreak;
947250881Sjkimcase 19:
948250881Sjkim#line 204 "parse.y"
949250881Sjkim	{ yyclass = copy_string( nmstr ); }
950250881Sjkimbreak;
951250881Sjkimcase 20:
952250881Sjkim#line 206 "parse.y"
953250881Sjkim	{ headerfilename = copy_string( nmstr ); }
954250881Sjkimbreak;
955250881Sjkimcase 21:
956250881Sjkim#line 208 "parse.y"
957250881Sjkim	{ tablesext = true; tablesfilename = copy_string( nmstr ); }
958250881Sjkimbreak;
959250881Sjkimcase 22:
960250881Sjkim#line 212 "parse.y"
961250881Sjkim	{ scon_stk_ptr = yystack.l_mark[-3]; }
962250881Sjkimbreak;
963250881Sjkimcase 23:
964250881Sjkim#line 214 "parse.y"
965250881Sjkim	{ scon_stk_ptr = yystack.l_mark[-3]; }
966250881Sjkimbreak;
967250881Sjkimcase 25:
968250881Sjkim#line 219 "parse.y"
969250881Sjkim	{
970250881Sjkim			/* Initialize for a parse of one rule. */
971250881Sjkim			trlcontxt = variable_trail_rule = varlength = false;
972250881Sjkim			trailcnt = headcnt = rulelen = 0;
973250881Sjkim			current_state_type = STATE_NORMAL;
974250881Sjkim			previous_continued_action = continued_action;
975250881Sjkim			in_rule = true;
976250881Sjkim
977250881Sjkim			new_rule();
978250881Sjkim			}
979250881Sjkimbreak;
980250881Sjkimcase 26:
981250881Sjkim#line 232 "parse.y"
982250881Sjkim	{
983250881Sjkim			pat = yystack.l_mark[0];
984250881Sjkim			finish_rule( pat, variable_trail_rule,
985250881Sjkim				headcnt, trailcnt , previous_continued_action);
986250881Sjkim
987250881Sjkim			if ( scon_stk_ptr > 0 )
988250881Sjkim				{
989250881Sjkim				for ( i = 1; i <= scon_stk_ptr; ++i )
990250881Sjkim					scbol[scon_stk[i]] =
991250881Sjkim						mkbranch( scbol[scon_stk[i]],
992250881Sjkim								pat );
993250881Sjkim				}
994250881Sjkim
995250881Sjkim			else
996250881Sjkim				{
997250881Sjkim				/* Add to all non-exclusive start conditions,
998250881Sjkim				 * including the default (0) start condition.
999250881Sjkim				 */
1000250881Sjkim
1001250881Sjkim				for ( i = 1; i <= lastsc; ++i )
1002250881Sjkim					if ( ! scxclu[i] )
1003250881Sjkim						scbol[i] = mkbranch( scbol[i],
1004250881Sjkim									pat );
1005250881Sjkim				}
1006250881Sjkim
1007250881Sjkim			if ( ! bol_needed )
1008250881Sjkim				{
1009250881Sjkim				bol_needed = true;
1010250881Sjkim
1011250881Sjkim				if ( performance_report > 1 )
1012250881Sjkim					pinpoint_message(
1013250881Sjkim			"'^' operator results in sub-optimal performance" );
1014250881Sjkim				}
1015250881Sjkim			}
1016250881Sjkimbreak;
1017250881Sjkimcase 27:
1018250881Sjkim#line 268 "parse.y"
1019250881Sjkim	{
1020250881Sjkim			pat = yystack.l_mark[0];
1021250881Sjkim			finish_rule( pat, variable_trail_rule,
1022250881Sjkim				headcnt, trailcnt , previous_continued_action);
1023250881Sjkim
1024250881Sjkim			if ( scon_stk_ptr > 0 )
1025250881Sjkim				{
1026250881Sjkim				for ( i = 1; i <= scon_stk_ptr; ++i )
1027250881Sjkim					scset[scon_stk[i]] =
1028250881Sjkim						mkbranch( scset[scon_stk[i]],
1029250881Sjkim								pat );
1030250881Sjkim				}
1031250881Sjkim
1032250881Sjkim			else
1033250881Sjkim				{
1034250881Sjkim				for ( i = 1; i <= lastsc; ++i )
1035250881Sjkim					if ( ! scxclu[i] )
1036250881Sjkim						scset[i] =
1037250881Sjkim							mkbranch( scset[i],
1038250881Sjkim								pat );
1039250881Sjkim				}
1040250881Sjkim			}
1041250881Sjkimbreak;
1042250881Sjkimcase 28:
1043250881Sjkim#line 292 "parse.y"
1044250881Sjkim	{
1045250881Sjkim			if ( scon_stk_ptr > 0 )
1046250881Sjkim				build_eof_action();
1047250881Sjkim
1048250881Sjkim			else
1049250881Sjkim				{
1050250881Sjkim				/* This EOF applies to all start conditions
1051250881Sjkim				 * which don't already have EOF actions.
1052250881Sjkim				 */
1053250881Sjkim				for ( i = 1; i <= lastsc; ++i )
1054250881Sjkim					if ( ! sceof[i] )
1055250881Sjkim						scon_stk[++scon_stk_ptr] = i;
1056250881Sjkim
1057250881Sjkim				if ( scon_stk_ptr == 0 )
1058250881Sjkim					warn(
1059250881Sjkim			"all start conditions already have <<EOF>> rules" );
1060250881Sjkim
1061250881Sjkim				else
1062250881Sjkim					build_eof_action();
1063250881Sjkim				}
1064250881Sjkim			}
1065250881Sjkimbreak;
1066250881Sjkimcase 29:
1067250881Sjkim#line 315 "parse.y"
1068250881Sjkim	{ synerr( _("unrecognized rule") ); }
1069250881Sjkimbreak;
1070250881Sjkimcase 30:
1071250881Sjkim#line 319 "parse.y"
1072250881Sjkim	{ yyval = scon_stk_ptr; }
1073250881Sjkimbreak;
1074250881Sjkimcase 31:
1075250881Sjkim#line 323 "parse.y"
1076250881Sjkim	{ yyval = yystack.l_mark[-2]; }
1077250881Sjkimbreak;
1078250881Sjkimcase 32:
1079250881Sjkim#line 326 "parse.y"
1080250881Sjkim	{
1081250881Sjkim			yyval = scon_stk_ptr;
1082250881Sjkim
1083250881Sjkim			for ( i = 1; i <= lastsc; ++i )
1084250881Sjkim				{
1085250881Sjkim				int j;
1086250881Sjkim
1087250881Sjkim				for ( j = 1; j <= scon_stk_ptr; ++j )
1088250881Sjkim					if ( scon_stk[j] == i )
1089250881Sjkim						break;
1090250881Sjkim
1091250881Sjkim				if ( j > scon_stk_ptr )
1092250881Sjkim					scon_stk[++scon_stk_ptr] = i;
1093250881Sjkim				}
1094250881Sjkim			}
1095250881Sjkimbreak;
1096250881Sjkimcase 33:
1097250881Sjkim#line 343 "parse.y"
1098250881Sjkim	{ yyval = scon_stk_ptr; }
1099250881Sjkimbreak;
1100250881Sjkimcase 36:
1101250881Sjkim#line 351 "parse.y"
1102250881Sjkim	{ synerr( _("bad start condition list") ); }
1103250881Sjkimbreak;
1104250881Sjkimcase 37:
1105250881Sjkim#line 355 "parse.y"
1106250881Sjkim	{
1107250881Sjkim			if ( (scnum = sclookup( nmstr )) == 0 )
1108250881Sjkim				format_pinpoint_message(
1109250881Sjkim					"undeclared start condition %s",
1110250881Sjkim					nmstr );
1111250881Sjkim			else
1112250881Sjkim				{
1113250881Sjkim				for ( i = 1; i <= scon_stk_ptr; ++i )
1114250881Sjkim					if ( scon_stk[i] == scnum )
1115250881Sjkim						{
1116250881Sjkim						format_warn(
1117250881Sjkim							"<%s> specified twice",
1118250881Sjkim							scname[scnum] );
1119250881Sjkim						break;
1120250881Sjkim						}
1121250881Sjkim
1122250881Sjkim				if ( i > scon_stk_ptr )
1123250881Sjkim					scon_stk[++scon_stk_ptr] = scnum;
1124250881Sjkim				}
1125250881Sjkim			}
1126250881Sjkimbreak;
1127250881Sjkimcase 38:
1128250881Sjkim#line 378 "parse.y"
1129250881Sjkim	{
1130250881Sjkim			if ( transchar[lastst[yystack.l_mark[0]]] != SYM_EPSILON )
1131250881Sjkim				/* Provide final transition \now/ so it
1132250881Sjkim				 * will be marked as a trailing context
1133250881Sjkim				 * state.
1134250881Sjkim				 */
1135250881Sjkim				yystack.l_mark[0] = link_machines( yystack.l_mark[0],
1136250881Sjkim						mkstate( SYM_EPSILON ) );
1137250881Sjkim
1138250881Sjkim			mark_beginning_as_normal( yystack.l_mark[0] );
1139250881Sjkim			current_state_type = STATE_NORMAL;
1140250881Sjkim
1141250881Sjkim			if ( previous_continued_action )
1142250881Sjkim				{
1143250881Sjkim				/* We need to treat this as variable trailing
1144250881Sjkim				 * context so that the backup does not happen
1145250881Sjkim				 * in the action but before the action switch
1146250881Sjkim				 * statement.  If the backup happens in the
1147250881Sjkim				 * action, then the rules "falling into" this
1148250881Sjkim				 * one's action will *also* do the backup,
1149250881Sjkim				 * erroneously.
1150250881Sjkim				 */
1151250881Sjkim				if ( ! varlength || headcnt != 0 )
1152250881Sjkim					warn(
1153250881Sjkim		"trailing context made variable due to preceding '|' action" );
1154250881Sjkim
1155250881Sjkim				/* Mark as variable. */
1156250881Sjkim				varlength = true;
1157250881Sjkim				headcnt = 0;
1158250881Sjkim
1159250881Sjkim				}
1160250881Sjkim
1161250881Sjkim			if ( lex_compat || (varlength && headcnt == 0) )
1162250881Sjkim				{ /* variable trailing context rule */
1163250881Sjkim				/* Mark the first part of the rule as the
1164250881Sjkim				 * accepting "head" part of a trailing
1165250881Sjkim				 * context rule.
1166250881Sjkim				 *
1167250881Sjkim				 * By the way, we didn't do this at the
1168250881Sjkim				 * beginning of this production because back
1169250881Sjkim				 * then current_state_type was set up for a
1170250881Sjkim				 * trail rule, and add_accept() can create
1171250881Sjkim				 * a new state ...
1172250881Sjkim				 */
1173250881Sjkim				add_accept( yystack.l_mark[-1],
1174250881Sjkim					num_rules | YY_TRAILING_HEAD_MASK );
1175250881Sjkim				variable_trail_rule = true;
1176250881Sjkim				}
1177250881Sjkim
1178250881Sjkim			else
1179250881Sjkim				trailcnt = rulelen;
1180250881Sjkim
1181250881Sjkim			yyval = link_machines( yystack.l_mark[-1], yystack.l_mark[0] );
1182250881Sjkim			}
1183250881Sjkimbreak;
1184250881Sjkimcase 39:
1185250881Sjkim#line 434 "parse.y"
1186250881Sjkim	{ synerr( _("trailing context used twice") ); }
1187250881Sjkimbreak;
1188250881Sjkimcase 40:
1189250881Sjkim#line 437 "parse.y"
1190250881Sjkim	{
1191250881Sjkim			headcnt = 0;
1192250881Sjkim			trailcnt = 1;
1193250881Sjkim			rulelen = 1;
1194250881Sjkim			varlength = false;
1195250881Sjkim
1196250881Sjkim			current_state_type = STATE_TRAILING_CONTEXT;
1197250881Sjkim
1198250881Sjkim			if ( trlcontxt )
1199250881Sjkim				{
1200250881Sjkim				synerr( _("trailing context used twice") );
1201250881Sjkim				yyval = mkstate( SYM_EPSILON );
1202250881Sjkim				}
1203250881Sjkim
1204250881Sjkim			else if ( previous_continued_action )
1205250881Sjkim				{
1206250881Sjkim				/* See the comment in the rule for "re2 re"
1207250881Sjkim				 * above.
1208250881Sjkim				 */
1209250881Sjkim				warn(
1210250881Sjkim		"trailing context made variable due to preceding '|' action" );
1211250881Sjkim
1212250881Sjkim				varlength = true;
1213250881Sjkim				}
1214250881Sjkim
1215250881Sjkim			if ( lex_compat || varlength )
1216250881Sjkim				{
1217250881Sjkim				/* Again, see the comment in the rule for
1218250881Sjkim				 * "re2 re" above.
1219250881Sjkim				 */
1220250881Sjkim				add_accept( yystack.l_mark[-1],
1221250881Sjkim					num_rules | YY_TRAILING_HEAD_MASK );
1222250881Sjkim				variable_trail_rule = true;
1223250881Sjkim				}
1224250881Sjkim
1225250881Sjkim			trlcontxt = true;
1226250881Sjkim
1227250881Sjkim			eps = mkstate( SYM_EPSILON );
1228250881Sjkim			yyval = link_machines( yystack.l_mark[-1],
1229250881Sjkim				link_machines( eps, mkstate( '\n' ) ) );
1230250881Sjkim			}
1231250881Sjkimbreak;
1232250881Sjkimcase 41:
1233250881Sjkim#line 480 "parse.y"
1234250881Sjkim	{
1235250881Sjkim			yyval = yystack.l_mark[0];
1236250881Sjkim
1237250881Sjkim			if ( trlcontxt )
1238250881Sjkim				{
1239250881Sjkim				if ( lex_compat || (varlength && headcnt == 0) )
1240250881Sjkim					/* Both head and trail are
1241250881Sjkim					 * variable-length.
1242250881Sjkim					 */
1243250881Sjkim					variable_trail_rule = true;
1244250881Sjkim				else
1245250881Sjkim					trailcnt = rulelen;
1246250881Sjkim				}
1247250881Sjkim			}
1248250881Sjkimbreak;
1249250881Sjkimcase 42:
1250250881Sjkim#line 498 "parse.y"
1251250881Sjkim	{
1252250881Sjkim			varlength = true;
1253250881Sjkim			yyval = mkor( yystack.l_mark[-2], yystack.l_mark[0] );
1254250881Sjkim			}
1255250881Sjkimbreak;
1256250881Sjkimcase 43:
1257250881Sjkim#line 504 "parse.y"
1258250881Sjkim	{ yyval = yystack.l_mark[0]; }
1259250881Sjkimbreak;
1260250881Sjkimcase 44:
1261250881Sjkim#line 509 "parse.y"
1262250881Sjkim	{
1263250881Sjkim			/* This rule is written separately so the
1264250881Sjkim			 * reduction will occur before the trailing
1265250881Sjkim			 * series is parsed.
1266250881Sjkim			 */
1267250881Sjkim
1268250881Sjkim			if ( trlcontxt )
1269250881Sjkim				synerr( _("trailing context used twice") );
1270250881Sjkim			else
1271250881Sjkim				trlcontxt = true;
1272250881Sjkim
1273250881Sjkim			if ( varlength )
1274250881Sjkim				/* We hope the trailing context is
1275250881Sjkim				 * fixed-length.
1276250881Sjkim				 */
1277250881Sjkim				varlength = false;
1278250881Sjkim			else
1279250881Sjkim				headcnt = rulelen;
1280250881Sjkim
1281250881Sjkim			rulelen = 0;
1282250881Sjkim
1283250881Sjkim			current_state_type = STATE_TRAILING_CONTEXT;
1284250881Sjkim			yyval = yystack.l_mark[-1];
1285250881Sjkim			}
1286250881Sjkimbreak;
1287250881Sjkimcase 45:
1288250881Sjkim#line 536 "parse.y"
1289250881Sjkim	{
1290250881Sjkim			/* This is where concatenation of adjacent patterns
1291250881Sjkim			 * gets done.
1292250881Sjkim			 */
1293250881Sjkim			yyval = link_machines( yystack.l_mark[-1], yystack.l_mark[0] );
1294250881Sjkim			}
1295250881Sjkimbreak;
1296250881Sjkimcase 46:
1297250881Sjkim#line 544 "parse.y"
1298250881Sjkim	{ yyval = yystack.l_mark[0]; }
1299250881Sjkimbreak;
1300250881Sjkimcase 47:
1301250881Sjkim#line 547 "parse.y"
1302250881Sjkim	{
1303250881Sjkim			varlength = true;
1304250881Sjkim
1305250881Sjkim			if ( yystack.l_mark[-3] > yystack.l_mark[-1] || yystack.l_mark[-3] < 0 )
1306250881Sjkim				{
1307250881Sjkim				synerr( _("bad iteration values") );
1308250881Sjkim				yyval = yystack.l_mark[-5];
1309250881Sjkim				}
1310250881Sjkim			else
1311250881Sjkim				{
1312250881Sjkim				if ( yystack.l_mark[-3] == 0 )
1313250881Sjkim					{
1314250881Sjkim					if ( yystack.l_mark[-1] <= 0 )
1315250881Sjkim						{
1316250881Sjkim						synerr(
1317250881Sjkim						_("bad iteration values") );
1318250881Sjkim						yyval = yystack.l_mark[-5];
1319250881Sjkim						}
1320250881Sjkim					else
1321250881Sjkim						yyval = mkopt(
1322250881Sjkim							mkrep( yystack.l_mark[-5], 1, yystack.l_mark[-1] ) );
1323250881Sjkim					}
1324250881Sjkim				else
1325250881Sjkim					yyval = mkrep( yystack.l_mark[-5], yystack.l_mark[-3], yystack.l_mark[-1] );
1326250881Sjkim				}
1327250881Sjkim			}
1328250881Sjkimbreak;
1329250881Sjkimcase 48:
1330250881Sjkim#line 575 "parse.y"
1331250881Sjkim	{
1332250881Sjkim			varlength = true;
1333250881Sjkim
1334250881Sjkim			if ( yystack.l_mark[-2] <= 0 )
1335250881Sjkim				{
1336250881Sjkim				synerr( _("iteration value must be positive") );
1337250881Sjkim				yyval = yystack.l_mark[-4];
1338250881Sjkim				}
1339250881Sjkim
1340250881Sjkim			else
1341250881Sjkim				yyval = mkrep( yystack.l_mark[-4], yystack.l_mark[-2], INFINITE_REPEAT );
1342250881Sjkim			}
1343250881Sjkimbreak;
1344250881Sjkimcase 49:
1345250881Sjkim#line 589 "parse.y"
1346250881Sjkim	{
1347250881Sjkim			/* The series could be something like "(foo)",
1348250881Sjkim			 * in which case we have no idea what its length
1349250881Sjkim			 * is, so we punt here.
1350250881Sjkim			 */
1351250881Sjkim			varlength = true;
1352250881Sjkim
1353250881Sjkim			if ( yystack.l_mark[-1] <= 0 )
1354250881Sjkim				{
1355250881Sjkim				  synerr( _("iteration value must be positive")
1356250881Sjkim					  );
1357250881Sjkim				yyval = yystack.l_mark[-3];
1358250881Sjkim				}
1359250881Sjkim
1360250881Sjkim			else
1361250881Sjkim				yyval = link_machines( yystack.l_mark[-3],
1362250881Sjkim						copysingl( yystack.l_mark[-3], yystack.l_mark[-1] - 1 ) );
1363250881Sjkim			}
1364250881Sjkimbreak;
1365250881Sjkimcase 50:
1366250881Sjkim#line 611 "parse.y"
1367250881Sjkim	{
1368250881Sjkim			varlength = true;
1369250881Sjkim
1370250881Sjkim			yyval = mkclos( yystack.l_mark[-1] );
1371250881Sjkim			}
1372250881Sjkimbreak;
1373250881Sjkimcase 51:
1374250881Sjkim#line 618 "parse.y"
1375250881Sjkim	{
1376250881Sjkim			varlength = true;
1377250881Sjkim			yyval = mkposcl( yystack.l_mark[-1] );
1378250881Sjkim			}
1379250881Sjkimbreak;
1380250881Sjkimcase 52:
1381250881Sjkim#line 624 "parse.y"
1382250881Sjkim	{
1383250881Sjkim			varlength = true;
1384250881Sjkim			yyval = mkopt( yystack.l_mark[-1] );
1385250881Sjkim			}
1386250881Sjkimbreak;
1387250881Sjkimcase 53:
1388250881Sjkim#line 630 "parse.y"
1389250881Sjkim	{
1390250881Sjkim			varlength = true;
1391250881Sjkim
1392250881Sjkim			if ( yystack.l_mark[-3] > yystack.l_mark[-1] || yystack.l_mark[-3] < 0 )
1393250881Sjkim				{
1394250881Sjkim				synerr( _("bad iteration values") );
1395250881Sjkim				yyval = yystack.l_mark[-5];
1396250881Sjkim				}
1397250881Sjkim			else
1398250881Sjkim				{
1399250881Sjkim				if ( yystack.l_mark[-3] == 0 )
1400250881Sjkim					{
1401250881Sjkim					if ( yystack.l_mark[-1] <= 0 )
1402250881Sjkim						{
1403250881Sjkim						synerr(
1404250881Sjkim						_("bad iteration values") );
1405250881Sjkim						yyval = yystack.l_mark[-5];
1406250881Sjkim						}
1407250881Sjkim					else
1408250881Sjkim						yyval = mkopt(
1409250881Sjkim							mkrep( yystack.l_mark[-5], 1, yystack.l_mark[-1] ) );
1410250881Sjkim					}
1411250881Sjkim				else
1412250881Sjkim					yyval = mkrep( yystack.l_mark[-5], yystack.l_mark[-3], yystack.l_mark[-1] );
1413250881Sjkim				}
1414250881Sjkim			}
1415250881Sjkimbreak;
1416250881Sjkimcase 54:
1417250881Sjkim#line 658 "parse.y"
1418250881Sjkim	{
1419250881Sjkim			varlength = true;
1420250881Sjkim
1421250881Sjkim			if ( yystack.l_mark[-2] <= 0 )
1422250881Sjkim				{
1423250881Sjkim				synerr( _("iteration value must be positive") );
1424250881Sjkim				yyval = yystack.l_mark[-4];
1425250881Sjkim				}
1426250881Sjkim
1427250881Sjkim			else
1428250881Sjkim				yyval = mkrep( yystack.l_mark[-4], yystack.l_mark[-2], INFINITE_REPEAT );
1429250881Sjkim			}
1430250881Sjkimbreak;
1431250881Sjkimcase 55:
1432250881Sjkim#line 672 "parse.y"
1433250881Sjkim	{
1434250881Sjkim			/* The singleton could be something like "(foo)",
1435250881Sjkim			 * in which case we have no idea what its length
1436250881Sjkim			 * is, so we punt here.
1437250881Sjkim			 */
1438250881Sjkim			varlength = true;
1439250881Sjkim
1440250881Sjkim			if ( yystack.l_mark[-1] <= 0 )
1441250881Sjkim				{
1442250881Sjkim				synerr( _("iteration value must be positive") );
1443250881Sjkim				yyval = yystack.l_mark[-3];
1444250881Sjkim				}
1445250881Sjkim
1446250881Sjkim			else
1447250881Sjkim				yyval = link_machines( yystack.l_mark[-3],
1448250881Sjkim						copysingl( yystack.l_mark[-3], yystack.l_mark[-1] - 1 ) );
1449250881Sjkim			}
1450250881Sjkimbreak;
1451250881Sjkimcase 56:
1452250881Sjkim#line 691 "parse.y"
1453250881Sjkim	{
1454250881Sjkim			if ( ! madeany )
1455250881Sjkim				{
1456250881Sjkim				/* Create the '.' character class. */
1457250881Sjkim                    ccldot = cclinit();
1458250881Sjkim                    ccladd( ccldot, '\n' );
1459250881Sjkim                    cclnegate( ccldot );
1460250881Sjkim
1461250881Sjkim                    if ( useecs )
1462250881Sjkim                        mkeccl( ccltbl + cclmap[ccldot],
1463250881Sjkim                            ccllen[ccldot], nextecm,
1464250881Sjkim                            ecgroup, csize, csize );
1465250881Sjkim
1466250881Sjkim				/* Create the (?s:'.') character class. */
1467250881Sjkim                    cclany = cclinit();
1468250881Sjkim                    cclnegate( cclany );
1469250881Sjkim
1470250881Sjkim                    if ( useecs )
1471250881Sjkim                        mkeccl( ccltbl + cclmap[cclany],
1472250881Sjkim                            ccllen[cclany], nextecm,
1473250881Sjkim                            ecgroup, csize, csize );
1474250881Sjkim
1475250881Sjkim				madeany = true;
1476250881Sjkim				}
1477250881Sjkim
1478250881Sjkim			++rulelen;
1479250881Sjkim
1480250881Sjkim            if (sf_dot_all())
1481250881Sjkim                yyval = mkstate( -cclany );
1482250881Sjkim            else
1483250881Sjkim                yyval = mkstate( -ccldot );
1484250881Sjkim			}
1485250881Sjkimbreak;
1486250881Sjkimcase 57:
1487250881Sjkim#line 725 "parse.y"
1488250881Sjkim	{
1489250881Sjkim				/* Sort characters for fast searching.
1490250881Sjkim				 */
1491250881Sjkim				qsort( ccltbl + cclmap[yystack.l_mark[0]], ccllen[yystack.l_mark[0]], sizeof (*ccltbl), cclcmp );
1492250881Sjkim
1493250881Sjkim			if ( useecs )
1494250881Sjkim				mkeccl( ccltbl + cclmap[yystack.l_mark[0]], ccllen[yystack.l_mark[0]],
1495250881Sjkim					nextecm, ecgroup, csize, csize );
1496250881Sjkim
1497250881Sjkim			++rulelen;
1498250881Sjkim
1499250881Sjkim			if (ccl_has_nl[yystack.l_mark[0]])
1500250881Sjkim				rule_has_nl[num_rules] = true;
1501250881Sjkim
1502250881Sjkim			yyval = mkstate( -yystack.l_mark[0] );
1503250881Sjkim			}
1504250881Sjkimbreak;
1505250881Sjkimcase 58:
1506250881Sjkim#line 743 "parse.y"
1507250881Sjkim	{
1508250881Sjkim			++rulelen;
1509250881Sjkim
1510250881Sjkim			if (ccl_has_nl[yystack.l_mark[0]])
1511250881Sjkim				rule_has_nl[num_rules] = true;
1512250881Sjkim
1513250881Sjkim			yyval = mkstate( -yystack.l_mark[0] );
1514250881Sjkim			}
1515250881Sjkimbreak;
1516250881Sjkimcase 59:
1517250881Sjkim#line 753 "parse.y"
1518250881Sjkim	{ yyval = yystack.l_mark[-1]; }
1519250881Sjkimbreak;
1520250881Sjkimcase 60:
1521250881Sjkim#line 756 "parse.y"
1522250881Sjkim	{ yyval = yystack.l_mark[-1]; }
1523250881Sjkimbreak;
1524250881Sjkimcase 61:
1525250881Sjkim#line 759 "parse.y"
1526250881Sjkim	{
1527250881Sjkim			++rulelen;
1528250881Sjkim
1529250881Sjkim			if (yystack.l_mark[0] == nlch)
1530250881Sjkim				rule_has_nl[num_rules] = true;
1531250881Sjkim
1532250881Sjkim            if (sf_case_ins() && has_case(yystack.l_mark[0]))
1533250881Sjkim                /* create an alternation, as in (a|A) */
1534250881Sjkim                yyval = mkor (mkstate(yystack.l_mark[0]), mkstate(reverse_case(yystack.l_mark[0])));
1535250881Sjkim            else
1536250881Sjkim                yyval = mkstate( yystack.l_mark[0] );
1537250881Sjkim			}
1538250881Sjkimbreak;
1539250881Sjkimcase 62:
1540250881Sjkim#line 773 "parse.y"
1541250881Sjkim	{ yyval = ccl_set_diff  (yystack.l_mark[-2], yystack.l_mark[0]); }
1542250881Sjkimbreak;
1543250881Sjkimcase 63:
1544250881Sjkim#line 774 "parse.y"
1545250881Sjkim	{ yyval = ccl_set_union (yystack.l_mark[-2], yystack.l_mark[0]); }
1546250881Sjkimbreak;
1547250881Sjkimcase 65:
1548250881Sjkim#line 780 "parse.y"
1549250881Sjkim	{ yyval = yystack.l_mark[-1]; }
1550250881Sjkimbreak;
1551250881Sjkimcase 66:
1552250881Sjkim#line 783 "parse.y"
1553250881Sjkim	{
1554250881Sjkim			cclnegate( yystack.l_mark[-1] );
1555250881Sjkim			yyval = yystack.l_mark[-1];
1556250881Sjkim			}
1557250881Sjkimbreak;
1558250881Sjkimcase 67:
1559250881Sjkim#line 790 "parse.y"
1560250881Sjkim	{
1561250881Sjkim
1562250881Sjkim			if (sf_case_ins())
1563250881Sjkim			  {
1564250881Sjkim
1565250881Sjkim			    /* If one end of the range has case and the other
1566250881Sjkim			     * does not, or the cases are different, then we're not
1567250881Sjkim			     * sure what range the user is trying to express.
1568250881Sjkim			     * Examples: [@-z] or [S-t]
1569250881Sjkim			     */
1570250881Sjkim			    if (has_case (yystack.l_mark[-2]) != has_case (yystack.l_mark[0])
1571250881Sjkim				     || (has_case (yystack.l_mark[-2]) && (b_islower (yystack.l_mark[-2]) != b_islower (yystack.l_mark[0])))
1572250881Sjkim				     || (has_case (yystack.l_mark[-2]) && (b_isupper (yystack.l_mark[-2]) != b_isupper (yystack.l_mark[0]))))
1573250881Sjkim			      format_warn3 (
1574250881Sjkim			      _("the character range [%c-%c] is ambiguous in a case-insensitive scanner"),
1575250881Sjkim					    yystack.l_mark[-2], yystack.l_mark[0]);
1576250881Sjkim
1577250881Sjkim			    /* If the range spans uppercase characters but not
1578250881Sjkim			     * lowercase (or vice-versa), then should we automatically
1579250881Sjkim			     * include lowercase characters in the range?
1580250881Sjkim			     * Example: [@-_] spans [a-z] but not [A-Z]
1581250881Sjkim			     */
1582250881Sjkim			    else if (!has_case (yystack.l_mark[-2]) && !has_case (yystack.l_mark[0]) && !range_covers_case (yystack.l_mark[-2], yystack.l_mark[0]))
1583250881Sjkim			      format_warn3 (
1584250881Sjkim			      _("the character range [%c-%c] is ambiguous in a case-insensitive scanner"),
1585250881Sjkim					    yystack.l_mark[-2], yystack.l_mark[0]);
1586250881Sjkim			  }
1587250881Sjkim
1588250881Sjkim			if ( yystack.l_mark[-2] > yystack.l_mark[0] )
1589250881Sjkim				synerr( _("negative range in character class") );
1590250881Sjkim
1591250881Sjkim			else
1592250881Sjkim				{
1593250881Sjkim				for ( i = yystack.l_mark[-2]; i <= yystack.l_mark[0]; ++i )
1594250881Sjkim					ccladd( yystack.l_mark[-3], i );
1595250881Sjkim
1596250881Sjkim				/* Keep track if this ccl is staying in
1597250881Sjkim				 * alphabetical order.
1598250881Sjkim				 */
1599250881Sjkim				cclsorted = cclsorted && (yystack.l_mark[-2] > lastchar);
1600250881Sjkim				lastchar = yystack.l_mark[0];
1601250881Sjkim
1602250881Sjkim                /* Do it again for upper/lowercase */
1603250881Sjkim                if (sf_case_ins() && has_case(yystack.l_mark[-2]) && has_case(yystack.l_mark[0])){
1604250881Sjkim                    yystack.l_mark[-2] = reverse_case (yystack.l_mark[-2]);
1605250881Sjkim                    yystack.l_mark[0] = reverse_case (yystack.l_mark[0]);
1606250881Sjkim
1607250881Sjkim                    for ( i = yystack.l_mark[-2]; i <= yystack.l_mark[0]; ++i )
1608250881Sjkim                        ccladd( yystack.l_mark[-3], i );
1609250881Sjkim
1610250881Sjkim                    cclsorted = cclsorted && (yystack.l_mark[-2] > lastchar);
1611250881Sjkim                    lastchar = yystack.l_mark[0];
1612250881Sjkim                }
1613250881Sjkim
1614250881Sjkim				}
1615250881Sjkim
1616250881Sjkim			yyval = yystack.l_mark[-3];
1617250881Sjkim			}
1618250881Sjkimbreak;
1619250881Sjkimcase 68:
1620250881Sjkim#line 850 "parse.y"
1621250881Sjkim	{
1622250881Sjkim			ccladd( yystack.l_mark[-1], yystack.l_mark[0] );
1623250881Sjkim			cclsorted = cclsorted && (yystack.l_mark[0] > lastchar);
1624250881Sjkim			lastchar = yystack.l_mark[0];
1625250881Sjkim
1626250881Sjkim            /* Do it again for upper/lowercase */
1627250881Sjkim            if (sf_case_ins() && has_case(yystack.l_mark[0])){
1628250881Sjkim                yystack.l_mark[0] = reverse_case (yystack.l_mark[0]);
1629250881Sjkim                ccladd (yystack.l_mark[-1], yystack.l_mark[0]);
1630250881Sjkim
1631250881Sjkim                cclsorted = cclsorted && (yystack.l_mark[0] > lastchar);
1632250881Sjkim                lastchar = yystack.l_mark[0];
1633250881Sjkim            }
1634250881Sjkim
1635250881Sjkim			yyval = yystack.l_mark[-1];
1636250881Sjkim			}
1637250881Sjkimbreak;
1638250881Sjkimcase 69:
1639250881Sjkim#line 868 "parse.y"
1640250881Sjkim	{
1641250881Sjkim			/* Too hard to properly maintain cclsorted. */
1642250881Sjkim			cclsorted = false;
1643250881Sjkim			yyval = yystack.l_mark[-1];
1644250881Sjkim			}
1645250881Sjkimbreak;
1646250881Sjkimcase 70:
1647250881Sjkim#line 875 "parse.y"
1648250881Sjkim	{
1649250881Sjkim			cclsorted = true;
1650250881Sjkim			lastchar = 0;
1651250881Sjkim			currccl = yyval = cclinit();
1652250881Sjkim			}
1653250881Sjkimbreak;
1654250881Sjkimcase 71:
1655250881Sjkim#line 883 "parse.y"
1656250881Sjkim	{ CCL_EXPR(isalnum); }
1657250881Sjkimbreak;
1658250881Sjkimcase 72:
1659250881Sjkim#line 884 "parse.y"
1660250881Sjkim	{ CCL_EXPR(isalpha); }
1661250881Sjkimbreak;
1662250881Sjkimcase 73:
1663250881Sjkim#line 885 "parse.y"
1664250881Sjkim	{ CCL_EXPR(IS_BLANK); }
1665250881Sjkimbreak;
1666250881Sjkimcase 74:
1667250881Sjkim#line 886 "parse.y"
1668250881Sjkim	{ CCL_EXPR(iscntrl); }
1669250881Sjkimbreak;
1670250881Sjkimcase 75:
1671250881Sjkim#line 887 "parse.y"
1672250881Sjkim	{ CCL_EXPR(isdigit); }
1673250881Sjkimbreak;
1674250881Sjkimcase 76:
1675250881Sjkim#line 888 "parse.y"
1676250881Sjkim	{ CCL_EXPR(isgraph); }
1677250881Sjkimbreak;
1678250881Sjkimcase 77:
1679250881Sjkim#line 889 "parse.y"
1680250881Sjkim	{
1681250881Sjkim                          CCL_EXPR(islower);
1682250881Sjkim                          if (sf_case_ins())
1683250881Sjkim                              CCL_EXPR(isupper);
1684250881Sjkim                        }
1685250881Sjkimbreak;
1686250881Sjkimcase 78:
1687250881Sjkim#line 894 "parse.y"
1688250881Sjkim	{ CCL_EXPR(isprint); }
1689250881Sjkimbreak;
1690250881Sjkimcase 79:
1691250881Sjkim#line 895 "parse.y"
1692250881Sjkim	{ CCL_EXPR(ispunct); }
1693250881Sjkimbreak;
1694250881Sjkimcase 80:
1695250881Sjkim#line 896 "parse.y"
1696250881Sjkim	{ CCL_EXPR(isspace); }
1697250881Sjkimbreak;
1698250881Sjkimcase 81:
1699250881Sjkim#line 897 "parse.y"
1700250881Sjkim	{ CCL_EXPR(isxdigit); }
1701250881Sjkimbreak;
1702250881Sjkimcase 82:
1703250881Sjkim#line 898 "parse.y"
1704250881Sjkim	{
1705250881Sjkim                    CCL_EXPR(isupper);
1706250881Sjkim                    if (sf_case_ins())
1707250881Sjkim                        CCL_EXPR(islower);
1708250881Sjkim				}
1709250881Sjkimbreak;
1710250881Sjkimcase 83:
1711250881Sjkim#line 904 "parse.y"
1712250881Sjkim	{ CCL_NEG_EXPR(isalnum); }
1713250881Sjkimbreak;
1714250881Sjkimcase 84:
1715250881Sjkim#line 905 "parse.y"
1716250881Sjkim	{ CCL_NEG_EXPR(isalpha); }
1717250881Sjkimbreak;
1718250881Sjkimcase 85:
1719250881Sjkim#line 906 "parse.y"
1720250881Sjkim	{ CCL_NEG_EXPR(IS_BLANK); }
1721250881Sjkimbreak;
1722250881Sjkimcase 86:
1723250881Sjkim#line 907 "parse.y"
1724250881Sjkim	{ CCL_NEG_EXPR(iscntrl); }
1725250881Sjkimbreak;
1726250881Sjkimcase 87:
1727250881Sjkim#line 908 "parse.y"
1728250881Sjkim	{ CCL_NEG_EXPR(isdigit); }
1729250881Sjkimbreak;
1730250881Sjkimcase 88:
1731250881Sjkim#line 909 "parse.y"
1732250881Sjkim	{ CCL_NEG_EXPR(isgraph); }
1733250881Sjkimbreak;
1734250881Sjkimcase 89:
1735250881Sjkim#line 910 "parse.y"
1736250881Sjkim	{ CCL_NEG_EXPR(isprint); }
1737250881Sjkimbreak;
1738250881Sjkimcase 90:
1739250881Sjkim#line 911 "parse.y"
1740250881Sjkim	{ CCL_NEG_EXPR(ispunct); }
1741250881Sjkimbreak;
1742250881Sjkimcase 91:
1743250881Sjkim#line 912 "parse.y"
1744250881Sjkim	{ CCL_NEG_EXPR(isspace); }
1745250881Sjkimbreak;
1746250881Sjkimcase 92:
1747250881Sjkim#line 913 "parse.y"
1748250881Sjkim	{ CCL_NEG_EXPR(isxdigit); }
1749250881Sjkimbreak;
1750250881Sjkimcase 93:
1751250881Sjkim#line 914 "parse.y"
1752250881Sjkim	{
1753250881Sjkim				if ( sf_case_ins() )
1754250881Sjkim					warn(_("[:^lower:] is ambiguous in case insensitive scanner"));
1755250881Sjkim				else
1756250881Sjkim					CCL_NEG_EXPR(islower);
1757250881Sjkim				}
1758250881Sjkimbreak;
1759250881Sjkimcase 94:
1760250881Sjkim#line 920 "parse.y"
1761250881Sjkim	{
1762250881Sjkim				if ( sf_case_ins() )
1763250881Sjkim					warn(_("[:^upper:] ambiguous in case insensitive scanner"));
1764250881Sjkim				else
1765250881Sjkim					CCL_NEG_EXPR(isupper);
1766250881Sjkim				}
1767250881Sjkimbreak;
1768250881Sjkimcase 95:
1769250881Sjkim#line 929 "parse.y"
1770250881Sjkim	{
1771250881Sjkim			if ( yystack.l_mark[0] == nlch )
1772250881Sjkim				rule_has_nl[num_rules] = true;
1773250881Sjkim
1774250881Sjkim			++rulelen;
1775250881Sjkim
1776250881Sjkim            if (sf_case_ins() && has_case(yystack.l_mark[0]))
1777250881Sjkim                yyval = mkor (mkstate(yystack.l_mark[0]), mkstate(reverse_case(yystack.l_mark[0])));
1778250881Sjkim            else
1779250881Sjkim                yyval = mkstate (yystack.l_mark[0]);
1780250881Sjkim
1781250881Sjkim			yyval = link_machines( yystack.l_mark[-1], yyval);
1782250881Sjkim			}
1783250881Sjkimbreak;
1784250881Sjkimcase 96:
1785250881Sjkim#line 944 "parse.y"
1786250881Sjkim	{ yyval = mkstate( SYM_EPSILON ); }
1787250881Sjkimbreak;
1788250881Sjkim#line 1787 "parse.c"
1789250881Sjkim    }
1790250881Sjkim    yystack.s_mark -= yym;
1791250881Sjkim    yystate = *yystack.s_mark;
1792250881Sjkim    yystack.l_mark -= yym;
1793250881Sjkim    yym = yylhs[yyn];
1794250881Sjkim    if (yystate == 0 && yym == 0)
1795250881Sjkim    {
1796250881Sjkim#if YYDEBUG
1797250881Sjkim        if (yydebug)
1798250881Sjkim            printf("%sdebug: after reduction, shifting from state 0 to\
1799250881Sjkim state %d\n", YYPREFIX, YYFINAL);
1800250881Sjkim#endif
1801250881Sjkim        yystate = YYFINAL;
1802250881Sjkim        *++yystack.s_mark = YYFINAL;
1803250881Sjkim        *++yystack.l_mark = yyval;
1804250881Sjkim        if (yychar < 0)
1805250881Sjkim        {
1806250881Sjkim            if ((yychar = YYLEX) < 0) yychar = 0;
1807250881Sjkim#if YYDEBUG
1808250881Sjkim            if (yydebug)
1809250881Sjkim            {
1810250881Sjkim                yys = 0;
1811250881Sjkim                if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
1812250881Sjkim                if (!yys) yys = "illegal-symbol";
1813250881Sjkim                printf("%sdebug: state %d, reading %d (%s)\n",
1814250881Sjkim                        YYPREFIX, YYFINAL, yychar, yys);
1815250881Sjkim            }
1816250881Sjkim#endif
1817250881Sjkim        }
1818250881Sjkim        if (yychar == 0) goto yyaccept;
1819250881Sjkim        goto yyloop;
1820250881Sjkim    }
1821250881Sjkim    if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&
1822250881Sjkim            yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
1823250881Sjkim        yystate = yytable[yyn];
1824250881Sjkim    else
1825250881Sjkim        yystate = yydgoto[yym];
1826250881Sjkim#if YYDEBUG
1827250881Sjkim    if (yydebug)
1828250881Sjkim        printf("%sdebug: after reduction, shifting from state %d \
1829250881Sjkimto state %d\n", YYPREFIX, *yystack.s_mark, yystate);
1830250881Sjkim#endif
1831250881Sjkim    if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack))
1832250881Sjkim    {
1833250881Sjkim        goto yyoverflow;
1834250881Sjkim    }
1835250881Sjkim    *++yystack.s_mark = (short) yystate;
1836250881Sjkim    *++yystack.l_mark = yyval;
1837250881Sjkim    goto yyloop;
1838250881Sjkim
1839250881Sjkimyyoverflow:
1840250881Sjkim    yyerror("yacc stack overflow");
1841250881Sjkim
1842250881Sjkimyyabort:
1843250881Sjkim    yyfreestack(&yystack);
1844250881Sjkim    return (1);
1845250881Sjkim
1846250881Sjkimyyaccept:
1847250881Sjkim    yyfreestack(&yystack);
1848250881Sjkim    return (0);
1849250881Sjkim}
1850