1/* A lexical scanner generated by flex */
2
3/* Scanner skeleton version:
4 * $NetBSD: flex.skl,v 1.22 2005/08/08 01:28:08 christos Exp $
5 */
6
7#define FLEX_SCANNER
8#define YY_FLEX_MAJOR_VERSION 2
9#define YY_FLEX_MINOR_VERSION 5
10
11#include <stdio.h>
12
13
14/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
15#ifdef c_plusplus
16#ifndef __cplusplus
17#define __cplusplus
18#endif
19#endif
20
21
22#ifdef __cplusplus
23
24#include <stdlib.h>
25#include <unistd.h>
26
27/* Use prototypes in function declarations. */
28#define YY_USE_PROTOS
29
30/* The "const" storage-class-modifier is valid. */
31#define YY_USE_CONST
32
33#else	/* ! __cplusplus */
34
35#if __STDC__
36
37#define YY_USE_PROTOS
38#define YY_USE_CONST
39
40#endif	/* __STDC__ */
41#endif	/* ! __cplusplus */
42
43#ifdef __TURBOC__
44 #pragma warn -rch
45 #pragma warn -use
46#include <io.h>
47#include <stdlib.h>
48#define YY_USE_CONST
49#define YY_USE_PROTOS
50#endif
51
52#ifdef YY_USE_CONST
53#define yyconst const
54#else
55#define yyconst
56#endif
57
58
59#ifdef YY_USE_PROTOS
60#define YY_PROTO(proto) proto
61#else
62#define YY_PROTO(proto) ()
63#endif
64
65/* Returned upon end-of-file. */
66#define YY_NULL 0
67
68/* Promotes a possibly negative, possibly signed char to an unsigned
69 * integer for use as an array index.  If the signed char is negative,
70 * we want to instead treat it as an 8-bit unsigned char, hence the
71 * double cast.
72 */
73#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
74
75/* Enter a start condition.  This macro really ought to take a parameter,
76 * but we do it the disgusting crufty way forced on us by the ()-less
77 * definition of BEGIN.
78 */
79#define BEGIN yy_start = 1 + 2 *
80
81/* Translate the current start state into a value that can be later handed
82 * to BEGIN to return to the state.  The YYSTATE alias is for lex
83 * compatibility.
84 */
85#define YY_START ((yy_start - 1) / 2)
86#define YYSTATE YY_START
87
88/* Action number for EOF rule of a given start state. */
89#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
90
91/* Special action meaning "start processing a new file". */
92#define YY_NEW_FILE yyrestart( yyin )
93
94#define YY_END_OF_BUFFER_CHAR 0
95
96/* Size of default input buffer. */
97#define YY_BUF_SIZE 16384
98
99typedef struct yy_buffer_state *YY_BUFFER_STATE;
100
101extern int yyleng;
102extern FILE *yyin, *yyout;
103
104#define EOB_ACT_CONTINUE_SCAN 0
105#define EOB_ACT_END_OF_FILE 1
106#define EOB_ACT_LAST_MATCH 2
107
108/* The funky do-while in the following #define is used to turn the definition
109 * int a single C statement (which needs a semi-colon terminator).  This
110 * avoids problems with code like:
111 *
112 * 	if ( condition_holds )
113 *		yyless( 5 );
114 *	else
115 *		do_something_else();
116 *
117 * Prior to using the do-while the compiler would get upset at the
118 * "else" because it interpreted the "if" statement as being all
119 * done when it reached the ';' after the yyless() call.
120 */
121
122/* Return all but the first 'n' matched characters back to the input stream. */
123
124#define yyless(n) \
125	do \
126		{ \
127		/* Undo effects of setting up yytext. */ \
128		*yy_cp = yy_hold_char; \
129		YY_RESTORE_YY_MORE_OFFSET \
130		yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
131		YY_DO_BEFORE_ACTION; /* set up yytext again */ \
132		} \
133	while ( 0 )
134
135#define unput(c) yyunput( c, yytext_ptr )
136
137/* The following is because we cannot portably get our hands on size_t
138 * (without autoconf's help, which isn't available because we want
139 * flex-generated scanners to compile on their own).
140 */
141typedef unsigned int yy_size_t;
142
143
144struct yy_buffer_state
145	{
146	FILE *yy_input_file;
147
148	char *yy_ch_buf;		/* input buffer */
149	char *yy_buf_pos;		/* current position in input buffer */
150
151	/* Size of input buffer in bytes, not including room for EOB
152	 * characters.
153	 */
154	yy_size_t yy_buf_size;
155
156	/* Number of characters read into yy_ch_buf, not including EOB
157	 * characters.
158	 */
159	int yy_n_chars;
160
161	/* Whether we "own" the buffer - i.e., we know we created it,
162	 * and can realloc() it to grow it, and should free() it to
163	 * delete it.
164	 */
165	int yy_is_our_buffer;
166
167	/* Whether this is an "interactive" input source; if so, and
168	 * if we're using stdio for input, then we want to use getc()
169	 * instead of fread(), to make sure we stop fetching input after
170	 * each newline.
171	 */
172	int yy_is_interactive;
173
174	/* Whether we're considered to be at the beginning of a line.
175	 * If so, '^' rules will be active on the next match, otherwise
176	 * not.
177	 */
178	int yy_at_bol;
179
180	/* Whether to try to fill the input buffer when we reach the
181	 * end of it.
182	 */
183	int yy_fill_buffer;
184
185	int yy_buffer_status;
186#define YY_BUFFER_NEW 0
187#define YY_BUFFER_NORMAL 1
188	/* When an EOF's been seen but there's still some text to process
189	 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
190	 * shouldn't try reading from the input source any more.  We might
191	 * still have a bunch of tokens to match, though, because of
192	 * possible backing-up.
193	 *
194	 * When we actually see the EOF, we change the status to "new"
195	 * (via yyrestart()), so that the user can continue scanning by
196	 * just pointing yyin at a new input file.
197	 */
198#define YY_BUFFER_EOF_PENDING 2
199	};
200
201static YY_BUFFER_STATE yy_current_buffer = 0;
202
203/* We provide macros for accessing buffer states in case in the
204 * future we want to put the buffer states in a more general
205 * "scanner state".
206 */
207#define YY_CURRENT_BUFFER yy_current_buffer
208
209
210/* yy_hold_char holds the character lost when yytext is formed. */
211static char yy_hold_char;
212
213static int yy_n_chars;		/* number of characters read into yy_ch_buf */
214
215
216int yyleng;
217
218/* Points to current character in buffer. */
219static char *yy_c_buf_p = (char *) 0;
220static int yy_init = 1;		/* whether we need to initialize */
221static int yy_start = 0;	/* start state number */
222
223/* Flag which is used to allow yywrap()'s to do buffer switches
224 * instead of setting up a fresh yyin.  A bit of a hack ...
225 */
226static int yy_did_buffer_switch_on_eof;
227
228void yyrestart YY_PROTO(( FILE *input_file ));
229
230void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
231void yy_load_buffer_state YY_PROTO(( void ));
232YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
233void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
234void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
235void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
236#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
237
238YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
239YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
240YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, yy_size_t len ));
241#ifdef __cplusplus
242YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, int size ));
243YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
244#endif
245
246#define yy_new_buffer yy_create_buffer
247
248#define yy_set_interactive(is_interactive) \
249	{ \
250	if ( ! yy_current_buffer ) \
251		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
252	yy_current_buffer->yy_is_interactive = is_interactive; \
253	}
254
255#define yy_set_bol(at_bol) \
256	{ \
257	if ( ! yy_current_buffer ) \
258		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
259	yy_current_buffer->yy_at_bol = at_bol; \
260	}
261
262#define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
263
264
265#define yywrap() (/*CONSTCOND*/1)
266#define YY_SKIP_YYWRAP
267typedef unsigned char YY_CHAR;
268FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
269typedef int yy_state_type;
270extern char *yytext;
271#define yytext_ptr yytext
272
273static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
274static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ))
275#ifdef __GNUC__
276    __attribute__((__unused__))
277#endif
278;
279static void yy_flex_free YY_PROTO(( void * ));
280
281static yy_state_type yy_get_previous_state YY_PROTO(( void ));
282static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
283static int yy_get_next_buffer YY_PROTO(( void ));
284static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
285
286/* Done after the current pattern has been matched and before the
287 * corresponding action - sets up yytext.
288 */
289#define YY_DO_BEFORE_ACTION \
290	yytext_ptr = yy_bp; \
291	yyleng = (int) (yy_cp - yy_bp); \
292	yy_hold_char = *yy_cp; \
293	*yy_cp = '\0'; \
294	yy_c_buf_p = yy_cp;
295
296#define YY_NUM_RULES 59
297#define YY_END_OF_BUFFER 60
298static yyconst short int yy_accept[939] =
299    {   0,
300        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
301       60,   40,   40,   37,   55,   40,   55,   40,   38,   40,
302       40,   38,   35,   13,   13,   35,   35,   35,   31,   35,
303       21,   32,   35,   35,   35,   35,   35,   35,   35,   35,
304       35,   35,   35,   35,   35,   35,   35,   35,   35,   45,
305       43,   56,   56,   51,   49,   54,    0,    0,    0,    0,
306        0,    0,    0,   41,    0,    0,    0,    0,    0,    0,
307        0,    0,    0,    0,    0,   42,   36,   42,   42,   42,
308       42,   38,    0,    0,   38,   13,    0,   27,    0,    0,
309        0,    0,   11,   21,   26,    0,    0,    0,    0,    0,
310
311        0,    0,   28,    0,    0,    0,    0,    0,    0,    0,
312        0,    0,    0,    0,    0,    0,   33,   29,   12,    0,
313       46,   48,   47,    0,   52,   53,    0,    0,    0,    0,
314        0,    0,    0,    0,    0,   39,    0,    0,   38,    0,
315       30,    0,    0,    0,    0,    0,    0,    0,    0,    0,
316        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
317        0,   29,    0,    0,    0,    0,    0,    0,    0,    0,
318        0,    0,    0,    0,    0,    0,    0,   38,    0,    0,
319        0,   15,    0,   26,   26,    0,    0,   23,   23,    0,
320        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
321
322        0,    0,    0,    0,    0,    0,   58,    0,    0,    0,
323        0,    0,    0,    0,   38,    0,    0,    0,    0,    0,
324        0,    0,    0,    0,   18,    0,    0,    0,    0,    0,
325        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
326        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
327        0,    0,    0,    0,    0,   38,    0,    0,    0,    0,
328        0,   25,    0,    0,   14,    0,    0,    0,    0,    0,
329        0,    0,    0,    0,    0,    0,    0,    0,    0,   16,
330        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
331       38,    0,    0,    0,    0,    0,    0,    0,    0,    0,
332
333        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
334       17,    0,    0,    0,    0,    0,    0,    0,    0,    0,
335        0,   38,    0,   34,    0,    0,    0,    0,    0,    0,
336        0,   23,   23,    0,    0,    0,    0,    0,    0,    0,
337        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
338        0,    0,    0,    0,   38,    0,    0,    0,    0,    0,
339        0,    0,    0,   22,    0,    0,    0,    0,    0,    0,
340        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
341        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
342        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
343
344       19,    0,    0,    8,    0,    0,    0,    0,    0,    0,
345        0,    0,    0,    0,    0,    0,    0,    0,    0,    8,
346        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
347        0,    0,    0,    0,    0,    0,    0,    0,   10,    0,
348        0,    0,    0,    0,    0,    0,    0,   20,    0,    0,
349        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
350        0,    0,    0,    0,    0,    0,    7,    0,    0,    0,
351        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
352        0,    0,    0,    7,   57,    9,    0,    0,    0,    0,
353        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
354
355        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
356        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
357        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
358        4,    0,    0,    0,    0,    0,    0,    0,    0,    0,
359        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
360        4,    0,    0,    0,    0,    0,    0,    0,    0,    0,
361        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
362       26,   26,    0,    0,    0,    0,    0,    0,    0,    0,
363        6,    0,    0,    0,    0,    0,    2,    0,    0,    0,
364        0,    0,    0,    0,    0,    0,    0,    0,    0,    6,
365
366        0,    0,    0,    0,    0,    2,    0,    0,    0,    0,
367        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
368        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
369        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
370        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
371        0,    0,    0,    0,    0,    0,   24,    0,    0,    0,
372        0,   44,   50,    0,    0,    0,    0,    0,    0,    0,
373        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
374        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
375        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
376
377        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
378        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
379        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
380        0,    0,    0,    0,    0,    0,    0,    0,    0,    3,
381        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
382        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
383        1,    0,    0,    3,    0,    0,    0,    0,    0,    0,
384        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
385        0,    0,    0,    0,    1,    0,    0,    5,    0,    0,
386        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
387
388        0,    0,    0,    0,    7,    0,    5,    0,    0,    0,
389        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
390        0,    0,    0,    7,    0,    0,    0,    0,    0,    0,
391        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
392        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
393        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
394        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
395        0,    0,    0,    0,    0,    0,    0,    3,    3,    0,
396        0,    0,    0,    0,    0,    3,    3,    0,    0,    0,
397        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
398
399        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
400        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
401        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
402        0,    0,    0,    0,    0,    0,    0,    0
403    } ;
404
405static yyconst int yy_ec[256] =
406    {   0,
407        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
408        2,    2,    2,    1,    1,    1,    1,    1,    1,    1,
409        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
410        1,    2,    1,    4,    5,    1,    6,    1,    7,    8,
411        9,   10,    1,   11,    1,    1,   12,   13,   13,   13,
412       13,   13,   13,   13,   13,   13,   13,   14,   15,   14,
413       16,   14,    1,    1,   17,   18,   19,   20,   21,   22,
414       23,   24,   25,   26,   26,   27,   28,   29,   30,   31,
415       26,   32,   33,   34,   35,   36,   37,   26,   38,   26,
416       39,   40,   41,    1,   42,    1,   43,   44,   45,   46,
417
418       47,   48,   49,   50,   51,   26,   26,   52,   53,   54,
419       55,   56,   26,   57,   58,   59,   60,   26,   26,   61,
420       62,   63,   64,    1,   65,    1,    1,    1,    1,    1,
421        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
422        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
423        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
424        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
425        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
426        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
427        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
428
429        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
430        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
431        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
432        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
433        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
434        1,    1,    1,    1,    1
435    } ;
436
437static yyconst int yy_meta[66] =
438    {   0,
439        1,    2,    3,    1,    1,    4,    1,    5,    6,    7,
440        8,    1,    9,    1,   10,    1,   11,   11,   11,   11,
441       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
442       11,   11,   11,   11,   11,   11,   11,   11,   12,    1,
443        1,   11,   11,   11,   11,   11,   11,   11,   11,   11,
444       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
445       11,   11,   11,   13,    1
446    } ;
447
448static yyconst short int yy_base[1026] =
449    {   0,
450        0,   65,  130, 3616,   14,   15,   16,   17,   25,   26,
451     3621,    0,   40,  194,   49,   43,   35, 4144,    0,   64,
452       67, 3588, 4144,   19,   31,   44, 3553, 3555, 4144, 3581,
453     3576, 4144,  254,  319,    6,   16, 3558,   31, 3546,    0,
454        7,   58,   61,   62,  168,  169,  170,   67,  203,    0,
455     4144, 3573, 3556,    0,    0, 3501, 3504, 3505, 3501, 3508,
456      199, 3516,  199, 4144,    0,  210,  232,  234,  233, 3533,
457     3533,  216,  217,  218,  197, 4144, 4144, 3470, 3470, 3457,
458     3462,    0, 3467, 3459, 3461,  116,  202, 4144, 3479, 3434,
459     3473, 3476, 4144, 3465, 4144, 3447, 3435,   14,   90,   21,
460
461      186, 3414, 4144,  177,  183,  180,   26,  181,  189,  188,
462      178,  218,  248,  249,  251,  253, 4144,    0, 4144,    0,
463     4144, 4144, 4144,    0, 4144, 4144, 3392,  187, 3391, 3395,
464     3407,  296,  245,  297,  301, 4144, 3396, 3392, 3400, 3393,
465     4144,   86,  203,  384,  252,  336,  254,  259,  284,  260,
466      449,  302,  287,  267,  315,  310,  317,  262,  313,  320,
467      318,    0,    0,    0, 3382, 3360, 3355, 3364, 3353,  360,
468      357,  361,  366,  368,  372, 3355, 3350, 3357, 3332,  372,
469      375, 4144,  377,  408,  375,  344,  514, 4144,  578,  334,
470      326,  379,  383,  388,  391,  398,  408,  417,    0,    0,
471
472     3322, 3324, 3329, 3327, 3318,  428, 4144,  428,  430,  433,
473      436,  437, 3317, 3316, 3348, 3303,  449,  453,  409,  472,
474      442,  484,  490,  638, 4144,    0, 3317, 3313, 3276, 3271,
475     3263, 3258,  444, 3235,  269,  497,  454,  466,  439,  472,
476      703,    0,    0, 3212, 3217, 3199, 3209,  501,  493,  496,
477      503,  504,  546, 3208,  532, 3235, 3206,  507,  515,  527,
478      556, 4144,  558,  561, 4144, 3222, 3218, 3193, 3153, 3056,
479     3060, 3058,  493, 3054,  541,  555,  536,  539,  768, 4144,
480        0,    0,  571, 3062,  573,  591,  573,  833,  586,  596,
481     3067, 3104,  475,  570,  562,  603,  605, 3079, 3071, 3052,
482
483     3046,  607, 3053, 3044, 3046, 3052, 3044,  324,  554,  581,
484     4144,    0,    0,  632,  615,  617,  659,  624,  898,  663,
485      630,  665, 3090, 4144,  516,  629,  650,  672,  682, 3048,
486     3047, 4144,    0, 3012, 3023, 3026, 3012,  628,  963,  639,
487        0,    0, 3020, 1027,  693,  654,  686, 1087,  725, 1152,
488     3017,  698,  686,  720,  722,  706,  707,  705, 3027, 3001,
489     2976, 2957,  703, 4144, 1217,    0,    0, 2977,  743,  756,
490      785,  747,  802,  811,  814,  868,  877, 2979,  752, 1282,
491     1347, 2975,  751,  197,  561,  768,  800,  571,  757, 2956,
492     2946,  737,  851,  733,  764,  642,  771, 2858, 2851, 1412,
493
494     4144,    0,    0, 4144,  853,  865,  823,  880,  913,  922,
495      926,  939,  942,  951,  981,  984, 1004, 1007, 2819,  694,
496     1477, 1016, 1035, 2704, 2667,  770,  834,  851,  759,  863,
497      836,  927,  827,  769,  882, 2687, 2627, 1039, 4144,  826,
498     1051,  865,  921,  916,  966, 2596, 2604, 4144,    0,    0,
499      995, 1021,  997, 1032, 1167, 1170, 1187, 1197, 1066, 1200,
500     1238, 1257, 1260, 1242, 1269, 1317, 4144, 1542, 1233, 1607,
501     1272,  958,  926,  640,  992, 1179,  828,  995,  881, 1016,
502      866, 1002,  711,  976, 4144, 4144, 1064, 1297,  991, 1050,
503      983, 1025, 2575, 2568,    0,    0, 1301, 1079, 1081, 1326,
504
505     1328, 1331, 1671, 1372, 1382, 1391, 1394, 1440, 1452, 1432,
506     1731, 1796, 1861, 1141, 1144, 1926, 1014, 1149, 1146, 1168,
507     1157, 1135, 1435, 1455, 1465, 1185, 2517, 1044,    0,    0,
508     4144, 2447, 1362, 1364, 1494, 1496, 1518, 1311, 1376, 1507,
509     1509, 1574, 1571, 1576, 1582, 1585, 1557, 1591, 1626, 1505,
510     1202, 1521, 1530, 1651, 1991, 1248,  903, 2056, 2121, 2344,
511     1200, 1287, 1286, 1288, 1359, 1315, 1155, 1285, 1346, 1472,
512     1527, 1405, 1204, 2301, 2248, 2216,    0,    0, 2069, 1635,
513     4144, 2026, 1655, 1659, 1675, 1560, 4144, 1673, 1684, 1649,
514     1705, 1690, 1698, 1695, 1764, 1758, 1716, 1564, 1751, 1265,
515
516     1740, 1373, 1400, 1815, 1821, 1465, 1700, 1231, 1415, 1493,
517     1402, 1411, 1550, 1726, 1568, 2186, 1760, 1569, 1638, 1774,
518     1685, 1593, 1471,    0,    0, 1439, 1351, 1818, 1830, 1876,
519     1878, 1842, 1839, 1880, 2020, 2018, 2022, 2026, 2036, 1782,
520     1747, 1754, 1217, 1429, 1539, 1497, 1597, 1664, 1856, 1351,
521     1758, 1417, 1681, 1489, 2251, 1822, 4144, 1895, 1340, 1317,
522     1219, 4144, 4144, 1184, 1047, 2076, 1903, 2011, 2097, 2315,
523     2079, 2087, 2101, 2103, 2145, 1882, 1846, 2006, 1870, 1638,
524     1280, 1560, 1600, 2375, 1666, 1792, 1614, 1744, 2440, 2505,
525     2570,  964,  778,  724, 2155, 2107, 1905, 2167, 2139, 2203,
526
527     2205, 2164, 2169, 2214, 2219, 2228, 2234, 2266, 2273, 2284,
528     2298, 2208, 2292, 2294, 2009, 2012, 2014, 1684, 1748, 1891,
529     1885, 2635, 2700,  607, 1817, 1615, 1869, 1799, 1672, 1997,
530     2020, 2047, 1784, 2332, 2765, 2830, 2074,    0,  569, 4144,
531      478, 2348, 2236, 2302, 2322, 2329, 2346, 2350, 2455, 2457,
532     2459, 2473, 2480, 2463, 2484, 2528, 2538, 2532, 2522, 2524,
533     4144, 2553, 2590, 2000, 2179, 2062, 1735, 2019, 2055, 2089,
534     2548,  442,  399, 1562, 1884, 2058, 2116, 1858, 2120, 2148,
535     2179, 1978, 2592,  348, 2173, 2073, 2141, 4144, 2596, 2490,
536     2269, 2614, 2546, 2600, 2618, 2611, 2616, 2656, 2651, 2670,
537
538     2667, 2675, 2678, 2681, 2718, 2720, 2274, 2218, 2114, 2185,
539     2259, 2283, 2311, 2334, 2340, 2250, 2217, 2466, 2115, 2315,
540     2443, 2437, 2503,  273, 2460, 2740, 2654, 2684, 2780, 2742,
541     2744, 2782, 2785, 2894, 2788, 2796, 2806, 2812, 2847, 2537,
542     2534, 2528, 2210, 2341, 2459, 2570, 2633, 2820, 1859, 2578,
543     2625, 2668, 1981, 2850, 2852, 2871, 2863, 2885, 2888, 2890,
544     2896, 2904, 2473, 2535, 2719, 2708, 2499, 2658, 2732, 2630,
545     2694, 2922, 2912, 2914, 2932, 2938, 2947, 2956, 2958, 2721,
546     2771, 2724, 2706, 2764, 2782,  215,    4, 2962, 2964, 2966,
547     2973, 2981, 2726, 2826, 2787, 2829, 2790, 2983, 2989, 2997,
548
549     3006, 3008, 2852, 2855, 2940, 2306, 2880, 3015, 3017, 3022,
550     2789, 2859, 2960, 3024, 3031, 3033, 3038, 2948, 2921, 3013,
551     2898, 3047, 3054, 3057, 2766, 2878, 2796, 3063, 3073, 3077,
552     2967, 2901, 3043, 3079, 2914, 3082, 3057, 4144, 3116, 3129,
553     3142, 3155, 3168, 3181, 3186, 3197, 3210, 3223, 3236, 3246,
554     3259, 3272, 3285, 3298, 3303, 3314, 3327, 3340, 3353, 3365,
555     3376, 3389, 3401, 3412, 3425, 3437, 3448, 3461, 3473, 3484,
556     3497, 3509, 3520, 3533, 3546, 3558, 3569, 3581, 3592, 3605,
557     3617, 3627, 3638, 3651, 3663, 3674, 3686, 3697, 3710, 3722,
558     3733, 3745, 3756, 3769, 3781, 3791, 3802, 3815, 3827, 3838,
559
560     3851, 3863, 3873, 3884, 3897, 3910, 3922, 3933, 3945, 3956,
561     3969, 3981, 3992, 4004, 4015, 4028, 4040, 4051, 4063, 4073,
562     4084, 4096, 4106, 4117, 4130
563    } ;
564
565static yyconst short int yy_def[1026] =
566    {   0,
567      939,  939,  938,    3,  940,  940,  940,  940,  941,  941,
568      938,  938,  938,  938,  942,  943,  944,  938,  945,  938,
569      938,  945,  938,  938,  938,  946,  938,  947,  938,  938,
570      938,  938,  948,  948,   34,   34,   34,   34,  949,   34,
571       34,   34,   34,   34,   34,   34,   34,   34,  950,  951,
572      938,  952,  952,  953,  953,  954,  938,  938,  938,  938,
573      938,  938,  942,  938,  942,  942,  942,  942,  942,  938,
574      943,  938,  938,  938,  938,  938,  938,  938,  938,  938,
575      938,  945,  938,  938,  945,  938,  946,  938,  946,  938,
576      938,  947,  938,  938,  938,   34,   34,   34,   34,   34,
577
578       34,  949,  938,   34,   34,   34,   34,   34,   34,   34,
579       34,   34,   34,   34,   34,   34,  938,  955,  938,  956,
580      938,  938,  938,  957,  938,  938,  938,  938,  938,  938,
581      938,  942,  942,  942,  942,  938,  938,  938,  945,  938,
582      938,   34,   34,  948,   34,   34,   34,   34,   34,   34,
583      948,   34,   34,   34,   34,   34,   34,   34,   34,   34,
584       34,  955,  958,  959,  938,  938,  938,  938,  938,  938,
585      942,  942,  942,  942,  942,  938,  938,  945,  938,   34,
586       34,  938,   34,  938,  960,   34,  948,  938,  938,   34,
587       34,   34,   34,   34,   34,   34,   34,   34,  961,  962,
588
589      938,  938,  938,  938,  938,  938,  938,  942,  942,  942,
590      942,  942,  938,  938,  945,  938,   34,   34,   34,  938,
591      960,  960,  963,  948,  938,  189,  938,  938,  938,  938,
592      938,  938,  938,  938,   34,   34,   34,   34,   34,   34,
593      948,  964,  965,  938,  938,  938,  938,  938,  942,  942,
594      942,  942,  942,  938,  938,  945,  938,   34,   34,   34,
595      938,  938,  966,  963,  938,  938,  938,  938,  938,  938,
596      938,  938,  938,  938,   34,   34,   34,   34,  948,  938,
597      967,  968,  938,  938,  969,  942,  942,  970,  938,  969,
598      945,  971,   34,   34,   34,  966,  972,  938,  938,  938,
599
600      938,  973,  938,  938,  938,  938,  938,   34,   34,   34,
601      938,  974,  975,  938,  938,  976,  942,  942,  977,  938,
602      938,  978,  971,  938,   34,   34,   34,  938,  972,  938,
603      938,  938,  189,  938,  938,  938,  938,   34,  948,   34,
604      979,  980,  938,  981,  938,  976,  942,  938,  942,  977,
605      938,  938,  938,  982,  978,   34,   34,   34,  938,  938,
606      938,  938,   34,  938,  948,  983,  984,  938,  985,  985,
607      985,  985,  985,  985,  985,  985,  985,  938,  942,  986,
608      986,  381,  381,  381,  381,  381,  381,  381,  942,  938,
609      938,  982,  987,   34,   34,   34,   34,  938,  938,  948,
610
611      938,  988,  989,  938,  990,  938,  938,  985,  985,  985,
612      985,  985,  985,  985,  985,  985,  985,  985,  938,  942,
613      991,  942,  942,  381,  381,  381,  381,  381,  381,  381,
614      381,  381,  381,  381,  942,  938,  938,  938,  938,  992,
615      987,   34,   34,   34,   34,  938,  938,  938,  993,  994,
616      995,  938,  996,  938,  985,  985,  985,  985,  985,  985,
617      985,  985,  985,  985,  985,  985,  938,  997,  942,  998,
618      942,  381,  381,  381,  381,  381,  381,  381,  381,  381,
619      381,  381,  381,  942,  938,  938,  992,  999,   34,   34,
620       34,   34,  938,  938, 1000, 1001,  938,  995,  996, 1002,
621
622      985,  985, 1003,  985,  985,  985,  985,  985,  985,  942,
623      997,  998, 1004,  381,  381,  938,  381,  381,  381,  381,
624      381,  381,  938,  999,   34,   34,  938,  938, 1005, 1006,
625      938,  938,  938,  938, 1002,  985,  985, 1007, 1007, 1007,
626     1007, 1007, 1007, 1007, 1007, 1007,  985,  985,  985,  985,
627      942,  942,  942,  942, 1004,  381,  381, 1008, 1008,  559,
628      559,  559,  559,  559,  559,  559,  381,  381,  381,  381,
629      938, 1009,   34,  938,  938,  938, 1010, 1011,  938,  938,
630      938,  938,  985,  985,  938, 1007,  938, 1007, 1007, 1007,
631     1007, 1007, 1007, 1007, 1007, 1007, 1012,  942,  942,  942,
632
633      942,  381,  381,  942,  559,  942,  559,  559,  559,  559,
634      559,  559,  559,  559,  559, 1013,  938, 1009, 1009, 1014,
635      938,  938,  938, 1015, 1016,  938,  938,  985,  985, 1007,
636     1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1017,
637      942,  942,  381,  381,  559,  559,  559,  559,  559,  559,
638      559,  559,  559,  559, 1018,  938,  938, 1014,  938,  938,
639      938,  938,  938,  938,  938,  985,  985, 1007, 1007, 1019,
640     1007, 1007, 1007, 1007, 1020, 1020, 1017,  942,  942,  381,
641      381,  559,  559,  938,  559,  559,  559,  559, 1021, 1021,
642     1018,  938,  938,  938,  985,  985, 1007, 1007, 1022, 1022,
643
644     1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1007, 1007,
645     1020, 1023, 1023, 1023, 1020,  942,  942,  381,  381,  559,
646      559, 1024, 1024,  723,  723,  723,  723,  723,  723,  723,
647      723,  559,  559,  690, 1025, 1025,  736,  690,  938,  938,
648      938,  985,  985,  985, 1007, 1007,  938, 1022, 1022, 1022,
649     1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022,  938, 1023,
650      938, 1023, 1023,  942,  942,  381,  381,  381,  559,  559,
651      942,  723,  723,  723,  723,  723,  723,  723,  723,  723,
652      723,  723,  942,  736,  942,  736,  736,  938,  985,  985,
653      985, 1007, 1007, 1022, 1022, 1022, 1022, 1022, 1022, 1022,
654
655     1022, 1022, 1022, 1022, 1023, 1023,  942,  381,  381,  381,
656      559,  559,  723,  723,  723,  723,  723,  723,  723,  723,
657      723,  723,  723,  736,  736,  985,  985,  985, 1007, 1007,
658     1022, 1022, 1022, 1019, 1022, 1022, 1022, 1022, 1023,  381,
659      381,  381,  559,  559,  723,  723,  723,  684,  723,  723,
660      723,  723,  736,  985, 1007, 1007, 1022, 1022, 1022, 1022,
661     1022, 1023,  381,  559,  559,  723,  723,  723,  723,  723,
662      736,  985, 1007, 1007, 1007, 1022, 1022, 1022, 1023,  381,
663      559,  559,  559,  723,  723,  723,  736, 1007, 1007, 1007,
664     1022, 1022,  559,  559,  559,  723,  723, 1007, 1007, 1007,
665
666     1022, 1022,  559,  559,  559,  723,  723, 1007, 1022, 1022,
667      559,  723,  723, 1007, 1022, 1022, 1022,  559,  723,  723,
668      723, 1022, 1022, 1022,  723,  723,  723, 1022, 1022, 1022,
669      723,  723,  723, 1022,  723, 1022,  723,    0,  938,  938,
670      938,  938,  938,  938,  938,  938,  938,  938,  938,  938,
671      938,  938,  938,  938,  938,  938,  938,  938,  938,  938,
672      938,  938,  938,  938,  938,  938,  938,  938,  938,  938,
673      938,  938,  938,  938,  938,  938,  938,  938,  938,  938,
674      938,  938,  938,  938,  938,  938,  938,  938,  938,  938,
675      938,  938,  938,  938,  938,  938,  938,  938,  938,  938,
676
677      938,  938,  938,  938,  938,  938,  938,  938,  938,  938,
678      938,  938,  938,  938,  938,  938,  938,  938,  938,  938,
679      938,  938,  938,  938,  938
680    } ;
681
682static yyconst short int yy_nxt[4210] =
683    {   0,
684       12,   13,   14,   15,   12,   12,   16,   12,   12,   12,
685       12,   17,   18,   12,   12,   12,   51,   51,   51,   51,
686       86,   86,  938,   52,   52,   53,   53,   55,   55,   96,
687       56,   56,   86,   86,   98,   96,   96,  784,   12,   12,
688       12,   61,   61,   96,   77,   96,   57,   88,  143,   99,
689       96,  101,   64,  145,  104,   96,  105,   58,   59,   60,
690       96,  106,   62,   12,   12,   12,   13,   14,   15,   20,
691       21,   16,   12,   12,   12,   12,   17,   18,   12,   12,
692       12,   78,   71,   89,   22,  150,   57,   96,   65,   72,
693       96,   96,   79,   80,   81,   66,   96,   58,   59,   60,
694
695       73,   74,   75,   12,   12,   12,   67,   68,   69,   83,
696       57,  107,  180,   57,  108,   96,  109,   86,   86,   96,
697      116,   58,   59,   60,   58,   59,   84,  144,   12,   12,
698       23,   24,   25,   26,   27,   23,   28,   29,   29,   29,
699       29,   30,   31,   29,   32,   32,   33,   34,   33,   33,
700       35,   33,   36,   37,   33,   33,   33,   33,   33,   33,
701       33,   33,   33,   33,   33,   38,   33,   33,   39,   23,
702       23,   33,   33,   40,   41,   33,   42,   33,   33,   33,
703       43,   44,   33,   45,   33,   46,   33,   47,   33,   48,
704       33,   33,   33,   29,   29,   61,   61,   96,   96,   96,
705
706       61,   61,   64,  136,  146,   88,   96,   96,  117,   96,
707       96,  111,   96,   64,  110,   96,   62,   96,   96,  113,
708      114,   62,  136,  136,  136,  148,  424,  112,  115,  166,
709      181,  147,   96,  149,  154,   64,   64,   64,   65,  151,
710       57,   89,  152,  167,  772,  153,  428,   96,   64,   65,
711      130,   58,   59,   60,   95,   95,   95,   95,   95,   95,
712       95,   95,   95,   95,   95,   95,  119,   95,   95,   95,
713      132,   65,   65,   65,  155,  128,  127,   96,   96,  129,
714       96,   96,   96,   96,   65,  183,  135,  172,   96,   96,
715      133,   96,   95,   95,   95,  134,   96,  157,   96,   64,
716
717       64,  173,  156,  160,   64,  151,  784,  159,  195,  191,
718      161,  158,  187,   96,  275,  151,   96,   95,   95,   95,
719       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
720       95,   96,   95,   95,   95,   65,   65,  184,  184,   96,
721       65,  186,   96,  185,   96,  190,   96,   96,   97,   96,
722      151,  175,  174,   96,  171,   96,  192,   95,   95,   95,
723       64,  206,  206,   96,   64,   96,  193,  207,  198,   64,
724      194,   64,  196,   96,  197,   64,  222,  222,  236,  338,
725      235,  784,   95,   95,  182,  182,  182,  182,  182,  182,
726      182,  182,  182,  182,  182,  182,   65,  182,  182,  182,
727
728       65,   96,  224,  208,   96,   65,   96,   65,   96,  220,
729      220,   65,   96,  217,  211,  221,  218,   96,  219,  209,
730       96,  237,  182,  182,  182,  210,  212,   96,  813,  206,
731      206,   64,  239,   64,  238,  207,   64,   96,   96,   64,
732       64,  151,  240,  222,  222,  260,   96,  182,  182,  188,
733      189,  189,  188,  188,  188,  188,  188,  188,  188,  188,
734      188,  241,  188,  188,  188,  157,  258,   65,   96,   65,
735      259,  772,   65,  220,  220,   65,   65,  251,   96,  221,
736      250,  252,   96,   96,  249,  222,  222,  188,  188,  188,
737      253,  261,  261,  272,  273,   96,   64,  151,  262,   64,
738
739      263,   96,  285,  285,   96,  278,   64,   64,  325,  276,
740      788,  151,  188,  188,  225,  225,  225,  225,  225,  225,
741      225,  225,  225,  225,  225,  225,   96,  225,  225,  225,
742      279,  293,   65,  290,  290,   65,   96,  356,  277,  294,
743      286,  305,   65,   65,   96,   96,  286,  288,  288,   64,
744      287,  295,  225,  225,  225,  306,   96,  261,  261,  296,
745      296,  253,  261,  261,  262,   96,  263,  276,   96,  262,
746       96,  263,  314,  314,  285,  285,   64,  225,  225,  226,
747      226,  327,  308,   96,   96,   65,  309,  320,  320,  310,
748      424,   96,  317,  317,   64,  227,  277,  290,  290,   96,
749
750      424,  228,  302,  326,  296,  296,  328,  328,  333,  333,
751       96,  339,   65,  262,  429,  263,  344,  344,  345,  345,
752      318,  229,  230,  340,  434,  348,  348,   64,  231,  232,
753       65,  352,  352,  314,  314,  233,  774,  234,  265,  265,
754      265,  265,  265,  265,  265,  265,  265,  265,  265,  265,
755      357,  265,  265,  265,  343,  345,  345,   96,   96,  321,
756      317,  317,   64,   65,  320,  320,  353,  353,   96,  424,
757      358,   96,  354,  328,  328,  444,  265,  265,  265,   96,
758      262,  347,  263,  328,  328,  351,  363,  353,  353,   64,
759      262,  476,  263,  354,  345,  345,  365,   64,   65,  352,
760
761      352,  265,  265,  280,  280,  280,  280,  280,  280,  280,
762      280,  280,  280,  280,  280,  378,  280,  280,  280,  379,
763      391,  392,  392,  353,  353,   65,  349,  349,   64,  354,
764      394,  395,   96,   65,   96,   96,   96,  396,  392,  392,
765      424,  280,  280,  280,  405,  405,  397,  389,  405,  405,
766      406,  741,  407,  442,  406,   64,  407,  405,  405,  400,
767       64,  522,   96,  406,   65,  407,  280,  280,  311,  311,
768      311,  311,  311,  311,  311,  311,  311,  311,  311,  311,
769      424,  311,  311,  311,  443,  409,  405,  405,  424,  420,
770      435,   65,  406,   96,  407,  445,   65,  424,  424,  424,
771
772       96,  411,  473,  405,  405,  427,  311,  311,  311,  406,
773      740,  407,  405,  405,  410,  405,  405,  476,  406,  482,
774      407,  406,  430,  407,  454,  454,  483,  487,  487,  424,
775      406,  311,  311,   63,  288,  288,   64,   63,   63,   63,
776       63,   63,   63,   63,   63,   63,   63,   63,   63,  431,
777      432,  412,  438,  438,  405,  405,  424,  424,  433,  439,
778      406,  440,  407,  424,  413,  424,  452,  452,  414,  405,
779      405,   63,   65,   63,  453,  406,  476,  407,  405,  405,
780      424,  405,  405,  481,  406,   64,  407,  406,  474,  407,
781      478,  489,  424,  475,   96,  424,   63,   63,   63,  349,
782
783      349,   64,   63,   63,   63,   63,   63,   63,   63,   63,
784      424,   63,   63,   63,  405,  405,  477,  415,  416,  484,
785      406,   65,  407,  405,  405,  520,  417,  405,  405,  406,
786      418,  407,  424,  406,  518,  407,   63,   65,   63,  603,
787      405,  405,  455,  405,  405,   96,  406,  490,  407,  406,
788       96,  407,  405,  405,  456,  424,  424,  491,  406,  515,
789      407,   63,   63,  364,  364,  364,  364,  364,  364,  364,
790      364,  364,  364,  364,  364,  479,  364,  364,  364,   64,
791      457,  458,  405,  405,  514,  405,  405,  424,  406,  480,
792      407,  406,  739,  407,  492,   96,  497,  497,  499,  499,
793
794      459,  364,  364,  364,  460,  405,  405,  526,  405,  405,
795      151,  406,   96,  407,  406,   65,  407,  469,  469,   64,
796       96,  424,  452,  452,  424,  470,  364,  364,  344,  344,
797      453,  424,  462,  454,  454,  461,  471,  471,   64,  406,
798      438,  438,  422,  424,  370,  424,  463,  439,  476,  440,
799      371,  517,  438,  438,   96,   65,  521,  465,  151,  439,
800      464,  440,  519,  694,  466,  487,  487,  503,  503,  525,
801      372,  373,  476,  406,   65,  407,  575,  374,  375,   96,
802      497,  497,  499,  499,  376,  576,  377,   63,  348,  348,
803       64,   63,   63,   63,   63,   63,   63,   63,   63,   63,
804
805       63,   63,   63,  380,  381,  380,  380,  380,  380,  380,
806      382,  380,  380,  380,  380,  380,  380,  380,  380,  380,
807      380,  380,  380,  380,  380,   63,   65,   63,  380,  380,
808      383,  384,  380,  380,  380,  380,  380,  385,  386,  380,
809      380,  380,  380,  380,  387,  380,  388,  380,  380,  380,
810       63,   63,   63,  349,  349,   64,   63,   63,   63,   63,
811       63,   63,   63,   63,  424,   63,   63,   63,  405,  405,
812      424,  405,  405,  424,  406,  424,  407,  406,  424,  407,
813      516,  516,  556,  479,  424,  557,  424,  568,  405,  405,
814       63,   65,   63,  501,  406,  567,  407,  424,  405,  405,
815
816      476,  405,  405,  502,  406,   64,  407,  406,  424,  407,
817      570,  693,  569,  573,   96,   63,   63,  401,  401,  401,
818      401,  401,  401,  401,  401,  401,  401,  401,  401,  605,
819      401,  401,  401,   96,  469,  469,   64,  151,  459,  405,
820      405,   65,  470,  405,  405,  406,  424,  407,  459,  406,
821      680,  407,  302,  459,  609,  401,  401,  401,  405,  405,
822      605,  405,  405,  646,  406,  602,  407,  406,   64,  407,
823      405,  405,   65,  471,  471,   64,  406,  424,  407,  422,
824      401,  401,   63,  421,  421,   64,   63,   63,   63,  422,
825       63,  423,   63,   63,  504,   63,   63,   63,  523,  523,
826
827      719,  507,  497,  497,   65,  439,  506,  440,  531,  424,
828      505,   65,  585,  585,  424,  605,  605,  605,  405,  405,
829       63,   65,   63,  508,  406,  587,  407,  533,  533,  405,
830      405,  532,  405,  405,  534,  406,  610,  407,  406,  611,
831      407,  692,  612,  476,  605,   63,   63,   63,  421,  421,
832       64,   63,   63,   63,  422,   63,  423,   63,   63,  302,
833       63,   63,   63,  533,  533,  580,  580,  509,  615,  536,
834      534,  581,  537,  405,  405,  424,  425,  585,  585,  406,
835      605,  407,  665,  405,  405,   63,   65,   63,  605,  406,
836      587,  407,  405,  405,  582,  405,  405,  643,  406,  649,
837
838      407,  406,  424,  407,  570,  588,  619,  619,  613,  614,
839       63,   63,  448,  448,  448,  448,  448,  448,  448,  448,
840      448,  448,  448,  448,  644,  448,  448,  448,  547,  424,
841      459,  605,  548,  510,  510,   64,  523,  523,  549,  551,
842      605,  405,  405,  439,  605,  440,  605,  406,  681,  407,
843      448,  448,  448,  405,  405,  664,  523,  523,  424,  406,
844      649,  407,  552,  439,  650,  440,  571,  571,   64,  647,
845      686,   65,  572,  616,  616,  448,  448,   63,  421,  421,
846       64,   63,   63,   63,  422,   63,  423,   63,   63,   63,
847       63,   63,   63,  550,   96,  533,  533,  405,  405,  661,
848
849      462,  424,  534,  406,   65,  407,  597,  597,  585,  585,
850      585,  585,  406,  583,  407,   63,   65,   63,  605,  405,
851      405,  587,  605,  587,   64,  406,  605,  407,  617,  617,
852      683,  553,  553,   64,  618,  648,  589,  598,  554,  688,
853       63,   63,   63,  510,  510,   64,   63,   63,   63,   63,
854       63,   63,   63,   63,  584,   63,   63,   63,  405,  405,
855       65,  585,  585,  590,  406,  682,  407,   64,  605,   65,
856      619,  619,  585,  585,  587,  585,  585,  585,  585,  605,
857       63,   65,   63,  585,  585,  587,  585,  585,  587,  605,
858      587,  772,  405,  405,  814,  641,  587,  605,  406,  587,
859
860      407,  720,  459,   65,  651,   63,   63,   63,  512,  512,
861       64,   63,   63,   63,   63,   63,   63,   63,   63,   63,
862       63,   63,   63,  591,  592,  654,  605,  405,  405,  605,
863      593,  594,  595,  406,  660,  407,  580,  580,  596,  619,
864      619,  721,  581,  605,  772,   63,   65,   63,  649,  459,
865      585,  585,  599,  599,   64,  733,  405,  405,  600,  718,
866      405,  405,  406,  587,  407,  582,  406,  424,  407,  776,
867       63,   63,  503,  503,  585,  585,  585,  585,  406,  628,
868      407,  601,  531,  629,  550,  585,  585,  587,  539,  587,
869       65,  585,  585,  605,  540,  605,  585,  585,  587,  585,
870
871      585,  772,  630,  632,  587,  532,  585,  585,  766,  587,
872      605,  659,  587,  424,  541,  542,  631,  597,  597,  587,
873      649,  543,  544,  406,  649,  407,  779,  687,  545,  645,
874      546,   63,  510,  510,   64,   63,   63,   63,   63,   63,
875       63,   63,   63,   64,   63,   63,   63,  633,  634,  636,
876       64,  635,  599,  599,   64,  605,  642,   64,  600,  585,
877      585,  617,  617,  678,  424,  585,  585,  618,  809,   63,
878       65,   63,  587,  605,  652,  656,  656,  424,  587,   65,
879      767,  601,  657,  675,  675,  679,   65,  605,  653,  768,
880       65,  676,  652,   65,   63,   63,   63,  512,  512,   64,
881
882       63,   63,   63,   63,   63,   63,   63,   63,   63,   63,
883       63,   63,  637,  605,  685,  639,  604,  604,   64,  405,
884      405,  605,  551,  656,  656,  406,  638,  407,  772,  606,
885      657,  405,  405,  775,   63,   65,   63,  406,  732,  407,
886      585,  585,  649,  585,  585,  552,  772,  675,  675,  667,
887      605,  666,  778,  587,   65,  676,  587,  684,  684,   63,
888       63,   63,  553,  553,   64,   63,   63,   63,   63,  554,
889       63,   63,   63,   64,   63,   63,   63,  585,  585,  585,
890      585,  670,  670,  715,  715,  605,  717,  772,  772,  938,
891      587,  938,  587,  634,  587,  634,  656,  656,  772,   63,
892
893       65,   63,  668,  657,  405,  405,  585,  585,  769,   65,
894      406,  669,  407,  772,  605,  815,  818,  818,  777,  587,
895      605,  770,  745,  696,   63,   63,   63,  516,  516,   64,
896       63,   63,   63,  422,   63,  423,   63,   63,   63,   63,
897       63,   63,  558,  559,  558,  558,  558,  558,  558,  560,
898      558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
899      558,  558,  558,  558,   63,   65,   63,  558,  558,  561,
900      562,  558,  558,  558,  558,  558,  563,  564,  558,  558,
901      558,  558,  558,  565,  558,  566,  558,  558,  558,   63,
902       63,   63,  553,  553,   64,   63,   63,   63,   63,  554,
903
904       63,   63,   63,   64,   63,   63,   63,  772,  871,   64,
905      715,  715,  585,  585,  784,   64,  938,   64,  938,  585,
906      585,  585,  585,  585,  585,  587,  772,  585,  585,   63,
907       65,   63,  587,  716,  587,  823,  587,  585,  585,   65,
908      587,  765,  627,  810,  764,   65,  780,  781,  424,  772,
909      587,   65,  697,   65,   63,   63,   63,  604,  604,   64,
910       63,   63,   63,   63,   63,   63,   63,   63,  634,   63,
911      606,   63,  673,  782,  671,  672,  605,  405,  405,  811,
912      585,  585,  808,  406,  605,  407,  674,  772,  585,  585,
913      787,  424,  649,  587,   63,   65,   63,  695,  585,  585,
914
915      626,  587,  585,  585,  585,  585,  784,  784,  405,  405,
916      824,  587,  816,  812,  406,  587,  407,  587,  605,   63,
917       63,   63,  604,  604,   64,   63,   63,   63,   63,   63,
918       63,   63,   63,  709,   63,  606,   63,  634,  698,  743,
919      747,  747,  710,  424,  772,  772,  711,  711,  744,  772,
920      607,  637,  531,  587,  676,  841,  405,  405,  817,   63,
921       65,   63,  406,  818,  407,  747,  747,  713,  585,  585,
922      747,  747,  825,  819,  784,  714,   64,  772,  587,  742,
923      751,  587,   64,  587,   63,   63,   63,  616,  616,   64,
924       63,   63,   63,  422,   63,  423,   63,   63,   63,   63,
925
926       63,   63,  820,  746,  747,  747,  747,  747,  772,  759,
927      759,  807,   65,  842,  424,  747,  747,  587,   65,  587,
928      747,  747,  761,  752,   63,   65,   63,  821,  587,  747,
929      747,  864,  749,  587,  750,  747,  747,  405,  405,  605,
930      623,  822,  587,  406,  840,  407,  772,  424,  587,   63,
931       63,   63,  689,  689,   64,   63,   63,   63,   63,   63,
932      690,   63,   63,  753,   63,   63,   63,  747,  747,  790,
933      405,  405,  754,  818,  585,  585,  406,   64,  407,  772,
934      587,  622,  755,  756,  757,  585,  585,  587,  605,   63,
935       65,   63,  843,  759,  759,  759,  759,  828,  587,  711,
936
937      711,  818,  844,  405,  405,  531,  761,  676,  761,  406,
938      763,  407,  605,   65,   63,   63,  670,  670,  634,  758,
939      713,  621,  531,  585,  585,  762,  791,  912,  714,  587,
940      585,  585,  700,  734,  734,  772,  587,  845,  701,  551,
941      772,  690,  634,  587,  772,  702,  792,  747,  747,  405,
942      405,  747,  747,  793,  736,  406,  847,  407,  703,  704,
943      587,  865,  737,  772,  587,  705,  706,  846,  789,  772,
944      605,  849,  707,  608,  708,   63,  684,  684,   64,   63,
945       63,   63,  551,   63,   63,   63,   63,   63,   63,  606,
946       63,  722,  723,  722,  722,  722,  722,  722,  724,  722,
947
948      722,  722,  722,  722,  722,  725,  722,  722,  722,  722,
949      722,  722,  722,   63,   65,   63,  722,  722,  726,  727,
950      722,  722,  722,  722,  722,  728,  729,  722,  722,  722,
951      722,  722,  730,  722,  731,  722,  722,  722,   63,   63,
952       63,  734,  734,   64,   63,   63,   63,  551,   63,  690,
953       63,   63,   63,   63,   63,   63,  747,  747,  747,  747,
954      747,  747,  736,  579,  747,  747,  772,  848,  848,  587,
955      737,  587,  772,  587,  747,  747,  853,  587,   63,   65,
956       63,  747,  747,  851,  794,  747,  747,  587,  772,  795,
957      796,  405,  405,  784,  587,  772,  850,  406,  587,  407,
958
959      866,  880,  424,   63,   63,   63,  738,  738,   64,   63,
960       63,   63,   63,   63,   63,   63,   63,   63,   63,   63,
961       63,  799,  798,  759,  759,  759,  759,  797,  772,  747,
962      747,  827,  772,  747,  747,  885,  761,  800,  761,  747,
963      747,  574,  587,   63,   65,   63,  587,  585,  585,  771,
964      771,   64,  587,  852,  759,  759,  476,  424,  863,  881,
965      587,  476,  606,  424,  605,  830,  424,  761,   63,   63,
966       63,  689,  689,   64,   63,   63,   63,   63,   63,  690,
967       63,   63,  801,   63,   63,   63,  802,   65,  528,  804,
968      805,  759,  759,  783,  783,   64,  527,  405,  405,  772,
969
970      803,  747,  747,  406,  761,  407,  785,  772,   63,   65,
971       63,  867,  747,  747,  587,  585,  585,  747,  747,  747,
972      747,  806,  826,  494,  869,  587,  831,  833,  587,  493,
973      587,   65,  587,   63,   63,   63,  771,  771,   64,   63,
974       63,   63,   63,   63,   63,   63,   63,  829,   63,  606,
975       63,  832,  834,  834,  772,  405,  405,  747,  747,  772,
976      868,  406,  772,  407,  486,  587,  870,  799,  747,  747,
977      587,  747,  747,   63,   65,   63,  747,  747,  854,  747,
978      747,  587,  747,  747,  587,  405,  405,  772,  818,  587,
979      886,  406,  587,  407,  485,  587,  472,  772,   63,   63,
980
981       63,  771,  771,   64,   63,   63,   63,   63,   63,   63,
982       63,   63,  799,   63,  606,   63,  821,  459,  799,  759,
983      759,  759,  759,  835,  837,  884,  887,  784,  836,  773,
984      895,  838,  761,  424,  761,  605,  839,  772,   63,   65,
985       63,  405,  405,  585,  585,  747,  747,  406,  605,  407,
986      424,  882,  903,  605,  476,  605,  587,  894,  587,  459,
987      883,  772,  856,   63,   63,   63,  783,  783,   64,   63,
988       63,   63,   63,   63,   63,   63,   63,  818,   63,  785,
989       63,  585,  585,  747,  747,  857,  747,  747,  896,  747,
990      747,  893,  931,  772,  587,  772,  587,  747,  747,  587,
991
992      605,  855,  587,   63,   65,   63,  897,  747,  747,  907,
993      587,  772,  859,  747,  747,  905,  605,  918,  605,  772,
994      587,  848,  848,  858,  933,  772,  587,   63,   63,   63,
995       63,  783,  783,   64,   63,   63,   63,   63,   63,   63,
996       63,   63,  860,   63,  785,   63,  799,  861,  759,  759,
997      722,  405,  405,  585,  585,  605,  467,  406,  772,  407,
998      802,  761,  906,  786,  747,  747,  587,  904,   63,   65,
999       63,  649,  585,  585,  862,  447,  873,  587,  872,  911,
1000      876,  605,  446,  919,  605,  587,  747,  747,  772,  747,
1001      747,  747,  747,   63,   63,  834,  834,  747,  747,  587,
1002
1003      913,  938,  587,  874,  587,  759,  759,  772,  587,  772,
1004      587,  700,  875,  585,  585,  585,  585,  701,  761,  932,
1005      878,  877,  927,  405,  405,  935,  587,  772,  587,  406,
1006      772,  407,  888,  585,  585,  799,  879,  703,  704,  747,
1007      747,  925,  937,  772,  705,  706,  587,  889,  747,  747,
1008      772,  707,  587,  708,  799,  459,  890,  747,  747,  759,
1009      759,  587,  891,  585,  585,  585,  585,  585,  585,  605,
1010      587,  892,  761,  649,  747,  747,  587,  605,  587,  437,
1011      587,  649,  747,  747,  585,  585,  818,  587,  898,  772,
1012      585,  585,  920,  436,  900,  587,  772,  587,  585,  585,
1013
1014      902,  921,  634,  587,  426,  899,  901,  747,  747,  747,
1015      747,  587,  419,  908,  404,  302,  585,  585,  747,  747,
1016      587,  302,  587,  747,  747,  585,  585,  909,  910,  587,
1017      634,  587,  747,  747,  747,  747,  587,  399,  587,  747,
1018      747,  915,  772,  914,  398,  587,  926,  587,  747,  747,
1019      390,  922,  587,  368,  916,  747,  747,  634,  747,  747,
1020      305,  587,  924,  917,  747,  747,  923,  362,  587,  361,
1021      302,  587,  772,  928,  747,  747,  818,  587,  747,  747,
1022      747,  747,  799,  747,  747,  930,  772,  587,  360,  359,
1023      818,  587,  324,  587,  337,  929,  587,  934,  336,  335,
1024
1025      334,  302,  302,  302,  331,  330,  324,  936,  322,  315,
1026      799,  307,  304,  303,  302,  799,   19,   19,   19,   19,
1027       19,   19,   19,   19,   19,   19,   19,   19,   19,   50,
1028       50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
1029       50,   50,   54,   54,   54,   54,   54,   54,   54,   54,
1030       54,   54,   54,   54,   54,   63,   63,   63,   63,   63,
1031       63,   63,   63,   63,   63,   63,   63,   63,   70,   70,
1032       70,   70,   70,   70,   70,   70,   70,   70,   70,   70,
1033       70,   76,   76,   76,   76,   76,   76,   76,   76,   76,
1034       76,   76,   76,   76,   82,  301,   82,   87,   87,   87,
1035
1036       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
1037       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
1038       91,   91,   91,   96,   96,   96,   96,   96,   96,   96,
1039       96,   96,   96,   96,   96,   96,  102,  102,  102,  102,
1040      102,  102,  102,  102,  102,  102,  102,  300,  102,  118,
1041      299,  298,  292,  291,  289,  284,  118,  248,  118,  120,
1042      120,  283,  120,  120,  120,  283,  120,  120,  120,  120,
1043      120,  120,  121,  121,  121,  121,  121,  121,  121,  121,
1044      121,  121,  121,  121,  121,  124,  124,  124,  274,  124,
1045      124,  124,  124,  124,  124,  124,  124,  124,  125,  125,
1046
1047      125,  125,  125,  125,  125,  125,  125,  125,  125,  125,
1048      125,  162,  271,  162,  163,  163,  270,  163,  163,  163,
1049      269,  163,  163,  163,  163,  163,  163,  164,  164,  164,
1050      268,  164,  164,  164,  164,  164,  164,  164,  164,  164,
1051      199,  199,  267,  199,  199,  199,  266,  199,  199,  199,
1052      199,  199,  199,  200,  200,  200,  257,  200,  200,  200,
1053      200,  200,  200,  200,  200,  200,  223,  223,  256,  255,
1054      254,  248,  247,  246,  245,  223,  242,  242,  244,  242,
1055      242,  242,  216,  242,  242,  242,  242,  242,  242,  243,
1056      243,  243,  215,  243,  243,  243,  243,  243,  243,  243,
1057
1058      243,  243,  264,  264,  214,  213,  264,  205,  264,  264,
1059      204,  264,  281,  281,  203,  281,  281,  281,  202,  281,
1060      281,  281,  281,  281,  281,  282,  282,  282,  201,  282,
1061      282,  282,  282,  282,  282,  282,  282,  282,  297,  297,
1062      179,  178,  177,  176,  170,  169,  168,  297,  312,  312,
1063      165,  312,  312,  312,  103,  312,  312,  312,  312,  312,
1064      312,  313,  313,  313,  142,  313,  313,  313,  313,  313,
1065      313,  313,  313,  313,  316,  316,   96,   94,  938,  141,
1066      140,  938,  139,  316,  319,  319,  319,  319,  319,  319,
1067      319,  319,  319,  319,  319,  319,  319,  323,  323,  323,
1068
1069      323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
1070      329,  329,  138,  137,  329,  130,  329,  329,  129,  329,
1071      332,  332,  332,  332,  332,  332,  332,  332,  128,  332,
1072      127,  332,  332,  341,  341,  938,  341,  341,  341,  136,
1073      341,  341,  341,  341,  341,  341,  342,  342,  342,  131,
1074      342,  342,  342,  342,  342,  342,  342,  342,  342,  346,
1075      346,  130,  129,  128,  127,  126,  346,  123,  346,  350,
1076      350,  350,  350,  350,  350,  350,  350,  350,  350,  350,
1077      350,  350,  355,  355,  122,  355,  103,  100,   94,  355,
1078       93,  355,  366,  366,   92,  366,  366,  366,   90,  366,
1079
1080      366,  366,  366,  366,  366,  367,  367,  367,   85,  367,
1081      367,  367,  367,  367,  367,  367,  367,  367,  369,  369,
1082      938,   49,  938,  938,  938,  938,  938,  369,  393,  393,
1083      938,  938,  938,  938,  938,  938,  938,  393,  402,  402,
1084      938,  402,  402,  402,  938,  402,  402,  402,  402,  402,
1085      402,  403,  403,  403,  938,  403,  403,  403,  403,  403,
1086      403,  403,  403,  403,  408,  408,  938,  408,  938,  408,
1087      938,  408,  938,  408,  424,  424,  424,  424,  424,  424,
1088      424,  424,  424,  424,  424,  424,  424,  441,  441,  938,
1089      938,  441,  938,  441,  441,  938,  441,  449,  449,  938,
1090
1091      449,  449,  449,  938,  449,  449,  449,  449,  449,  449,
1092      450,  450,  450,  938,  450,  450,  450,  450,  450,  450,
1093      450,  450,  450,  451,  451,  938,  451,  938,  451,  938,
1094      938,  938,  451,  468,  468,  468,  468,  468,  468,  468,
1095      468,  468,  468,  468,  468,  468,  488,  488,  938,  938,
1096      938,  938,  938,  938,  938,  488,  495,  495,  938,  495,
1097      495,  495,  938,  495,  495,  495,  495,  495,  495,  496,
1098      496,  496,  938,  496,  496,  496,  496,  496,  496,  496,
1099      496,  496,  498,  498,  938,  938,  938,  938,  938,  498,
1100      938,  498,  500,  500,  938,  938,  938,  938,  938,  938,
1101
1102      938,  500,  511,  511,  511,  511,  511,  511,  511,  511,
1103      511,  511,  511,  511,  511,  513,  513,  513,  513,  513,
1104      513,  513,  513,  513,  513,  513,  513,  513,  524,  524,
1105      938,  938,  524,  938,  524,  524,  938,  524,  529,  529,
1106      938,  529,  529,  529,  938,  529,  529,  529,  529,  529,
1107      529,  530,  530,  530,  938,  530,  530,  530,  530,  530,
1108      530,  530,  530,  530,  535,  535,  938,  938,  535,  938,
1109      938,  535,  938,  535,  538,  538,  938,  538,  938,  538,
1110      938,  938,  938,  538,  555,  555,  555,  555,  555,  555,
1111      555,  555,  555,  555,  555,  555,  555,  577,  577,  938,
1112
1113      577,  577,  577,  938,  577,  577,  577,  577,  577,  577,
1114      578,  578,  578,  938,  578,  578,  578,  578,  578,  578,
1115      578,  578,  578,  586,  586,  938,  938,  938,  938,  938,
1116      586,  586,  586,  605,  605,  605,  605,  605,  605,  605,
1117      605,  605,  605,  605,  605,  605,  620,  620,  938,  938,
1118      938,  938,  938,  938,  938,  620,  624,  624,  938,  624,
1119      624,  624,  938,  624,  624,  624,  624,  624,  624,  625,
1120      625,  625,  938,  625,  625,  625,  625,  625,  625,  625,
1121      625,  625,  640,  640,  938,  640,  938,  640,  938,  938,
1122      938,  640,  655,  655,  655,  655,  655,  655,  655,  655,
1123
1124      655,  655,  655,  655,  655,  658,  658,  938,  938,  658,
1125      938,  938,  658,  938,  658,  662,  662,  938,  662,  662,
1126      662,  938,  662,  662,  662,  662,  662,  662,  663,  663,
1127      663,  938,  663,  663,  663,  663,  663,  663,  663,  663,
1128      663,  677,  677,  938,  938,  938,  677,  938,  677,  938,
1129      677,  691,  691,  691,  691,  691,  691,  691,  691,  691,
1130      691,  691,  691,  691,  699,  699,  938,  699,  938,  938,
1131      938,  938,  699,  699,  712,  712,  938,  712,  938,  712,
1132      938,  938,  938,  712,  735,  735,  735,  735,  735,  735,
1133      735,  735,  735,  735,  735,  735,  735,  748,  748,  938,
1134
1135      938,  938,  938,  938,  748,  748,  748,  760,  760,  938,
1136      938,  938,  938,  938,  760,  760,  760,  772,  772,  772,
1137      772,  772,  772,  772,  772,  772,  772,  772,  772,  772,
1138      784,  784,  784,  784,  784,  784,  784,  784,  784,  784,
1139      784,  784,  784,   11,  938,  938,  938,  938,  938,  938,
1140      938,  938,  938,  938,  938,  938,  938,  938,  938,  938,
1141      938,  938,  938,  938,  938,  938,  938,  938,  938,  938,
1142      938,  938,  938,  938,  938,  938,  938,  938,  938,  938,
1143      938,  938,  938,  938,  938,  938,  938,  938,  938,  938,
1144      938,  938,  938,  938,  938,  938,  938,  938,  938,  938,
1145
1146      938,  938,  938,  938,  938,  938,  938,  938,  938
1147    } ;
1148
1149static yyconst short int yy_chk[4210] =
1150    {   0,
1151        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
1152        1,    1,    1,    1,    1,    1,    5,    6,    7,    8,
1153       24,   24,    0,    5,    6,    7,    8,    9,   10,   40,
1154        9,   10,   25,   25,   35,   35,   41,  887,    1,    1,
1155        1,   13,   13,   98,   17,   36,   12,   26,   98,   36,
1156      100,   38,   15,  100,   40,  107,   41,   12,   12,   12,
1157       38,   41,   13,    1,    1,    2,    2,    2,    2,    2,
1158        2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
1159        2,   17,   16,   26,    2,  107,   13,   42,   15,   16,
1160       43,   44,   17,   17,   17,   15,   48,   13,   13,   13,
1161
1162       16,   16,   16,    2,    2,    2,   15,   15,   15,   20,
1163       20,   42,  142,   21,   43,  142,   44,   86,   86,   99,
1164       48,   20,   20,   20,   21,   21,   21,   99,    2,    2,
1165        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
1166        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
1167        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
1168        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
1169        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
1170        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
1171        3,    3,    3,    3,    3,   14,   14,   45,   46,   47,
1172
1173       61,   61,   63,   75,  101,   87,  104,  111,   49,  106,
1174      108,   46,  105,   66,   45,  101,   14,  110,  109,   47,
1175       47,   61,   72,   73,   74,  105,  384,   46,   47,  128,
1176      143,  104,  143,  106,  111,   67,   69,   68,   63,  108,
1177       14,   87,  109,  128,  886,  110,  384,  112,  133,   66,
1178       75,   14,   14,   14,   33,   33,   33,   33,   33,   33,
1179       33,   33,   33,   33,   33,   33,   49,   33,   33,   33,
1180       66,   67,   69,   68,  112,   73,   72,  113,  114,   74,
1181      115,  145,  116,  147,  133,  145,   69,  133,  148,  150,
1182       67,  158,   33,   33,   33,   68,  154,  114,  235,  132,
1183
1184      134,  133,  113,  116,  135,  147,  824,  115,  158,  154,
1185      116,  114,  150,  149,  235,  148,  153,   33,   33,   34,
1186       34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
1187       34,  152,   34,   34,   34,  132,  134,  146,  146,  156,
1188      135,  149,  159,  146,  155,  153,  157,  161,   34,  160,
1189      152,  135,  134,  308,  132,  191,  155,   34,   34,   34,
1190      171,  170,  170,  190,  172,  146,  156,  170,  161,  173,
1191      157,  174,  159,  186,  160,  175,  185,  185,  191,  308,
1192      190,  784,   34,   34,  144,  144,  144,  144,  144,  144,
1193      144,  144,  144,  144,  144,  144,  171,  144,  144,  144,
1194
1195      172,  180,  186,  171,  181,  173,  183,  174,  192,  184,
1196      184,  175,  193,  180,  174,  184,  181,  194,  183,  172,
1197      195,  192,  144,  144,  144,  173,  175,  196,  773,  206,
1198      206,  208,  195,  209,  194,  206,  210,  197,  219,  211,
1199      212,  193,  196,  221,  221,  219,  198,  144,  144,  151,
1200      151,  151,  151,  151,  151,  151,  151,  151,  151,  151,
1201      151,  197,  151,  151,  151,  198,  217,  208,  239,  209,
1202      218,  772,  210,  220,  220,  211,  212,  210,  217,  220,
1203      209,  211,  218,  237,  208,  222,  222,  151,  151,  151,
1204      212,  223,  223,  233,  233,  238,  249,  239,  223,  250,
1205
1206      223,  240,  248,  248,  293,  237,  251,  252,  293,  236,
1207      741,  238,  151,  151,  187,  187,  187,  187,  187,  187,
1208      187,  187,  187,  187,  187,  187,  236,  187,  187,  187,
1209      240,  258,  249,  255,  255,  250,  258,  325,  236,  259,
1210      250,  273,  251,  252,  259,  325,  249,  253,  253,  253,
1211      252,  260,  187,  187,  187,  273,  260,  261,  261,  263,
1212      263,  251,  264,  264,  261,  277,  261,  276,  278,  264,
1213      275,  264,  283,  283,  285,  285,  287,  187,  187,  189,
1214      189,  295,  275,  309,  276,  253,  277,  289,  289,  278,
1215      385,  295,  286,  286,  286,  189,  276,  290,  290,  294,
1216
1217      388,  189,  739,  294,  296,  296,  297,  297,  302,  302,
1218      310,  309,  287,  297,  385,  297,  315,  315,  316,  316,
1219      287,  189,  189,  310,  388,  318,  318,  318,  189,  189,
1220      286,  321,  321,  314,  314,  189,  724,  189,  224,  224,
1221      224,  224,  224,  224,  224,  224,  224,  224,  224,  224,
1222      326,  224,  224,  224,  314,  346,  346,  338,  326,  290,
1223      317,  317,  317,  318,  320,  320,  322,  322,  340,  474,
1224      327,  396,  322,  328,  328,  396,  224,  224,  224,  327,
1225      328,  317,  328,  329,  329,  320,  338,  353,  353,  347,
1226      329,  474,  329,  353,  345,  345,  340,  420,  317,  352,
1227
1228      352,  224,  224,  241,  241,  241,  241,  241,  241,  241,
1229      241,  241,  241,  241,  241,  345,  241,  241,  241,  347,
1230      352,  354,  354,  355,  355,  347,  349,  349,  349,  355,
1231      356,  357,  363,  420,  358,  356,  357,  358,  392,  392,
1232      483,  241,  241,  241,  369,  369,  358,  349,  372,  372,
1233      369,  694,  369,  394,  372,  379,  372,  370,  370,  363,
1234      389,  483,  394,  370,  349,  370,  241,  241,  279,  279,
1235      279,  279,  279,  279,  279,  279,  279,  279,  279,  279,
1236      383,  279,  279,  279,  395,  370,  371,  371,  429,  379,
1237      389,  379,  371,  395,  371,  397,  389,  386,  434,  426,
1238
1239      397,  372,  426,  373,  373,  383,  279,  279,  279,  373,
1240      693,  373,  374,  374,  371,  375,  375,  429,  374,  434,
1241      374,  375,  386,  375,  407,  407,  434,  440,  440,  387,
1242      407,  279,  279,  288,  288,  288,  288,  288,  288,  288,
1243      288,  288,  288,  288,  288,  288,  288,  288,  288,  387,
1244      387,  373,  393,  393,  405,  405,  433,  477,  387,  393,
1245      405,  393,  405,  427,  374,  431,  406,  406,  375,  376,
1246      376,  288,  288,  288,  406,  376,  477,  376,  377,  377,
1247      428,  408,  408,  433,  377,  435,  377,  408,  427,  408,
1248      431,  442,  430,  428,  442,  481,  288,  288,  319,  319,
1249
1250      319,  319,  319,  319,  319,  319,  319,  319,  319,  319,
1251      479,  319,  319,  319,  409,  409,  430,  376,  376,  435,
1252      409,  435,  409,  410,  410,  481,  376,  411,  411,  410,
1253      377,  410,  557,  411,  479,  411,  319,  319,  319,  557,
1254      412,  412,  409,  413,  413,  444,  412,  443,  412,  413,
1255      443,  413,  414,  414,  410,  473,  432,  444,  414,  473,
1256      414,  319,  319,  339,  339,  339,  339,  339,  339,  339,
1257      339,  339,  339,  339,  339,  432,  339,  339,  339,  484,
1258      411,  412,  415,  415,  472,  416,  416,  472,  415,  432,
1259      415,  416,  692,  416,  445,  445,  451,  451,  453,  453,
1260
1261      413,  339,  339,  339,  414,  417,  417,  491,  418,  418,
1262      489,  417,  491,  417,  418,  484,  418,  422,  422,  422,
1263      489,  475,  452,  452,  478,  422,  339,  339,  344,  344,
1264      452,  482,  416,  454,  454,  415,  423,  423,  423,  454,
1265      438,  438,  423,  517,  344,  480,  416,  438,  475,  438,
1266      344,  478,  441,  441,  492,  422,  482,  418,  492,  441,
1267      417,  441,  480,  665,  418,  487,  487,  459,  459,  490,
1268      344,  344,  517,  459,  423,  459,  528,  344,  344,  490,
1269      498,  498,  499,  499,  344,  528,  344,  348,  348,  348,
1270      348,  348,  348,  348,  348,  348,  348,  348,  348,  348,
1271
1272      348,  348,  348,  348,  348,  348,  348,  348,  348,  348,
1273      348,  348,  348,  348,  348,  348,  348,  348,  348,  348,
1274      348,  348,  348,  348,  348,  348,  348,  348,  348,  348,
1275      348,  348,  348,  348,  348,  348,  348,  348,  348,  348,
1276      348,  348,  348,  348,  348,  348,  348,  348,  348,  348,
1277      348,  348,  350,  350,  350,  350,  350,  350,  350,  350,
1278      350,  350,  350,  350,  522,  350,  350,  350,  455,  455,
1279      514,  456,  456,  515,  455,  519,  455,  456,  518,  456,
1280      476,  476,  514,  522,  567,  515,  521,  519,  457,  457,
1281      350,  350,  350,  455,  457,  518,  457,  520,  458,  458,
1282
1283      567,  460,  460,  456,  458,  551,  458,  460,  476,  460,
1284      521,  664,  520,  526,  526,  350,  350,  365,  365,  365,
1285      365,  365,  365,  365,  365,  365,  365,  365,  365,  561,
1286      365,  365,  365,  573,  469,  469,  469,  573,  457,  461,
1287      461,  551,  469,  464,  464,  461,  643,  461,  460,  464,
1288      643,  464,  661,  458,  561,  365,  365,  365,  462,  462,
1289      608,  463,  463,  608,  462,  556,  462,  463,  600,  463,
1290      465,  465,  469,  471,  471,  471,  465,  556,  465,  471,
1291      365,  365,  380,  380,  380,  380,  380,  380,  380,  380,
1292      380,  380,  380,  380,  461,  380,  380,  380,  488,  488,
1293
1294      681,  464,  497,  497,  600,  488,  463,  488,  497,  681,
1295      462,  471,  538,  538,  568,  563,  562,  564,  466,  466,
1296      380,  380,  380,  465,  466,  538,  466,  500,  500,  501,
1297      501,  497,  502,  502,  500,  501,  562,  501,  502,  563,
1298      502,  660,  564,  568,  566,  380,  380,  381,  381,  381,
1299      381,  381,  381,  381,  381,  381,  381,  381,  381,  659,
1300      381,  381,  381,  533,  533,  534,  534,  466,  566,  501,
1301      533,  534,  502,  504,  504,  569,  381,  539,  539,  504,
1302      650,  504,  627,  505,  505,  381,  381,  381,  565,  505,
1303      539,  505,  506,  506,  534,  507,  507,  602,  506,  650,
1304
1305      506,  507,  602,  507,  569,  539,  572,  572,  565,  565,
1306      381,  381,  400,  400,  400,  400,  400,  400,  400,  400,
1307      400,  400,  400,  400,  603,  400,  400,  400,  505,  603,
1308      504,  611,  506,  510,  510,  510,  523,  523,  507,  510,
1309      612,  508,  508,  523,  609,  523,  652,  508,  644,  508,
1310      400,  400,  400,  509,  509,  626,  524,  524,  644,  509,
1311      611,  509,  510,  524,  612,  524,  525,  525,  606,  609,
1312      652,  510,  525,  570,  570,  400,  400,  421,  421,  421,
1313      421,  421,  421,  421,  421,  421,  421,  421,  421,  421,
1314      421,  421,  421,  508,  525,  535,  535,  536,  536,  623,
1315
1316      509,  570,  535,  536,  606,  536,  550,  550,  540,  540,
1317      541,  541,  550,  536,  550,  421,  421,  421,  654,  537,
1318      537,  540,  610,  541,  552,  537,  646,  537,  571,  571,
1319      646,  553,  553,  553,  571,  610,  540,  552,  553,  654,
1320      421,  421,  468,  468,  468,  468,  468,  468,  468,  468,
1321      468,  468,  468,  468,  537,  468,  468,  468,  547,  547,
1322      552,  586,  586,  541,  547,  645,  547,  598,  645,  553,
1323      618,  618,  543,  543,  586,  542,  542,  544,  544,  613,
1324      468,  468,  468,  545,  545,  543,  546,  546,  542,  682,
1325      544,  774,  548,  548,  774,  598,  545,  615,  548,  546,
1326
1327      548,  682,  547,  598,  613,  468,  468,  470,  470,  470,
1328      470,  470,  470,  470,  470,  470,  470,  470,  470,  470,
1329      470,  470,  470,  542,  543,  615,  647,  549,  549,  683,
1330      544,  545,  545,  549,  622,  549,  580,  580,  546,  619,
1331      619,  683,  580,  687,  726,  470,  470,  470,  647,  548,
1332      590,  590,  554,  554,  554,  687,  583,  583,  554,  680,
1333      584,  584,  583,  590,  583,  580,  584,  680,  584,  726,
1334      470,  470,  503,  503,  588,  588,  585,  585,  503,  583,
1335      503,  554,  585,  584,  549,  589,  589,  588,  503,  585,
1336      554,  592,  592,  648,  503,  685,  594,  594,  589,  593,
1337
1338      593,  729,  588,  590,  592,  585,  591,  591,  718,  594,
1339      653,  621,  593,  718,  503,  503,  589,  597,  597,  591,
1340      648,  503,  503,  597,  685,  597,  729,  653,  503,  607,
1341      503,  511,  511,  511,  511,  511,  511,  511,  511,  511,
1342      511,  511,  511,  601,  511,  511,  511,  591,  592,  594,
1343      641,  593,  599,  599,  599,  614,  601,  642,  599,  596,
1344      596,  617,  617,  641,  767,  595,  595,  617,  767,  511,
1345      511,  511,  596,  688,  614,  620,  620,  719,  595,  601,
1346      719,  599,  620,  640,  640,  642,  641,  651,  614,  719,
1347      599,  640,  688,  642,  511,  511,  512,  512,  512,  512,
1348
1349      512,  512,  512,  512,  512,  512,  512,  512,  512,  512,
1350      512,  512,  595,  733,  651,  596,  604,  604,  604,  628,
1351      628,  686,  604,  656,  656,  628,  595,  628,  728,  604,
1352      656,  629,  629,  725,  512,  512,  512,  629,  686,  629,
1353      633,  633,  733,  632,  632,  604,  725,  677,  677,  629,
1354      605,  628,  728,  633,  604,  677,  632,  649,  649,  512,
1355      512,  513,  513,  513,  513,  513,  513,  513,  513,  513,
1356      513,  513,  513,  679,  513,  513,  513,  630,  630,  631,
1357      631,  634,  634,  676,  676,  649,  679,  778,  849,  676,
1358      630,  676,  631,  632,  634,  633,  658,  658,  727,  513,
1359
1360      513,  513,  630,  658,  667,  667,  697,  697,  720,  679,
1361      667,  631,  667,  775,  721,  775,  778,  849,  727,  697,
1362      720,  721,  697,  667,  513,  513,  516,  516,  516,  516,
1363      516,  516,  516,  516,  516,  516,  516,  516,  516,  516,
1364      516,  516,  516,  516,  516,  516,  516,  516,  516,  516,
1365      516,  516,  516,  516,  516,  516,  516,  516,  516,  516,
1366      516,  516,  516,  516,  516,  516,  516,  516,  516,  516,
1367      516,  516,  516,  516,  516,  516,  516,  516,  516,  516,
1368      516,  516,  516,  516,  516,  516,  516,  516,  516,  516,
1369      516,  555,  555,  555,  555,  555,  555,  555,  555,  555,
1370
1371      555,  555,  555,  764,  555,  555,  555,  782,  853,  678,
1372      715,  715,  668,  668,  853,  716,  715,  717,  715,  636,
1373      636,  635,  635,  637,  637,  668,  730,  638,  638,  555,
1374      555,  555,  636,  678,  635,  782,  637,  639,  639,  764,
1375      638,  717,  582,  768,  716,  678,  730,  730,  768,  731,
1376      639,  716,  668,  717,  555,  555,  558,  558,  558,  558,
1377      558,  558,  558,  558,  558,  558,  558,  558,  635,  558,
1378      558,  558,  638,  731,  636,  637,  732,  666,  666,  769,
1379      671,  671,  766,  666,  769,  666,  639,  776,  672,  672,
1380      737,  766,  732,  671,  558,  558,  558,  666,  669,  669,
1381
1382      579,  672,  673,  673,  674,  674,  786,  737,  696,  696,
1383      786,  669,  776,  770,  696,  673,  696,  674,  770,  558,
1384      558,  559,  559,  559,  559,  559,  559,  559,  559,  559,
1385      559,  559,  559,  672,  559,  559,  559,  671,  669,  696,
1386      699,  699,  673,  809,  819,  777,  675,  675,  696,  779,
1387      559,  674,  675,  699,  675,  809,  695,  695,  777,  559,
1388      559,  559,  695,  819,  695,  702,  702,  675,  698,  698,
1389      703,  703,  787,  779,  787,  675,  785,  780,  702,  695,
1390      702,  698,  765,  703,  559,  559,  616,  616,  616,  616,
1391      616,  616,  616,  616,  616,  616,  616,  616,  616,  616,
1392
1393      616,  616,  780,  698,  700,  700,  701,  701,  781,  712,
1394      712,  765,  785,  810,  810,  704,  704,  700,  765,  701,
1395      705,  705,  712,  703,  616,  616,  616,  781,  704,  706,
1396      706,  843,  700,  705,  701,  707,  707,  743,  743,  843,
1397      576,  781,  706,  743,  808,  743,  817,  808,  707,  616,
1398      616,  655,  655,  655,  655,  655,  655,  655,  655,  655,
1399      655,  655,  655,  704,  655,  655,  655,  708,  708,  743,
1400      791,  791,  705,  817,  709,  709,  791,  807,  791,  816,
1401      708,  575,  706,  707,  707,  710,  710,  709,  811,  655,
1402      655,  655,  811,  713,  713,  714,  714,  791,  710,  711,
1403
1404      711,  816,  812,  744,  744,  711,  713,  711,  714,  744,
1405      714,  744,  812,  807,  655,  655,  670,  670,  709,  708,
1406      711,  574,  670,  745,  745,  713,  744,  906,  711,  670,
1407      746,  746,  670,  734,  734,  906,  745,  813,  670,  734,
1408      813,  734,  710,  746,  820,  670,  745,  747,  747,  742,
1409      742,  748,  748,  746,  734,  742,  815,  742,  670,  670,
1410      747,  844,  734,  814,  748,  670,  670,  814,  742,  815,
1411      844,  820,  670,  560,  670,  684,  684,  684,  684,  684,
1412      684,  684,  684,  684,  684,  684,  684,  684,  684,  684,
1413      684,  684,  684,  684,  684,  684,  684,  684,  684,  684,
1414
1415      684,  684,  684,  684,  684,  684,  684,  684,  684,  684,
1416      684,  684,  684,  684,  684,  684,  684,  684,  684,  684,
1417      684,  684,  684,  684,  684,  684,  684,  684,  684,  684,
1418      684,  684,  684,  684,  684,  684,  684,  684,  684,  684,
1419      689,  689,  689,  689,  689,  689,  689,  689,  689,  689,
1420      689,  689,  689,  689,  689,  689,  749,  749,  750,  750,
1421      751,  751,  689,  532,  754,  754,  822,  818,  818,  749,
1422      689,  750,  821,  751,  752,  752,  825,  754,  689,  689,
1423      689,  753,  753,  822,  749,  755,  755,  752,  845,  750,
1424      751,  790,  790,  825,  753,  818,  821,  790,  755,  790,
1425
1426      845,  863,  863,  689,  689,  690,  690,  690,  690,  690,
1427      690,  690,  690,  690,  690,  690,  690,  690,  690,  690,
1428      690,  754,  753,  759,  759,  760,  760,  752,  867,  756,
1429      756,  790,  823,  758,  758,  867,  759,  755,  760,  757,
1430      757,  527,  756,  690,  690,  690,  758,  793,  793,  771,
1431      771,  771,  757,  823,  762,  762,  840,  842,  841,  864,
1432      793,  842,  771,  841,  864,  793,  840,  762,  690,  690,
1433      691,  691,  691,  691,  691,  691,  691,  691,  691,  691,
1434      691,  691,  756,  691,  691,  691,  757,  771,  494,  758,
1435      762,  763,  763,  783,  783,  783,  493,  789,  789,  846,
1436
1437      757,  794,  794,  789,  763,  789,  783,  850,  691,  691,
1438      691,  846,  796,  796,  794,  792,  792,  797,  797,  795,
1439      795,  763,  789,  447,  850,  796,  794,  796,  792,  446,
1440      797,  783,  795,  691,  691,  722,  722,  722,  722,  722,
1441      722,  722,  722,  722,  722,  722,  722,  792,  722,  722,
1442      722,  795,  799,  799,  851,  827,  827,  798,  798,  870,
1443      847,  827,  847,  827,  437,  799,  851,  797,  801,  801,
1444      798,  800,  800,  722,  722,  722,  802,  802,  827,  803,
1445      803,  801,  804,  804,  800,  828,  828,  868,  870,  802,
1446      868,  828,  803,  828,  436,  804,  425,  852,  722,  722,
1447
1448      723,  723,  723,  723,  723,  723,  723,  723,  723,  723,
1449      723,  723,  798,  723,  723,  723,  852,  828,  800,  805,
1450      805,  806,  806,  801,  803,  866,  871,  871,  802,  723,
1451      883,  804,  805,  424,  806,  883,  806,  866,  723,  723,
1452      723,  826,  826,  830,  830,  831,  831,  826,  865,  826,
1453      880,  865,  893,  882,  880,  893,  830,  882,  831,  826,
1454      865,  869,  830,  723,  723,  735,  735,  735,  735,  735,
1455      735,  735,  735,  735,  735,  735,  735,  869,  735,  735,
1456      735,  829,  829,  832,  832,  831,  833,  833,  884,  835,
1457      835,  881,  925,  884,  829,  925,  832,  836,  836,  833,
1458
1459      881,  829,  835,  735,  735,  735,  885,  837,  837,  897,
1460      836,  885,  833,  838,  838,  895,  895,  911,  911,  897,
1461      837,  848,  848,  832,  927,  927,  838,  848,  735,  735,
1462      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
1463      736,  736,  836,  736,  736,  736,  835,  837,  839,  839,
1464      848,  854,  854,  855,  855,  894,  419,  854,  896,  854,
1465      838,  839,  896,  736,  857,  857,  855,  894,  736,  736,
1466      736,  903,  856,  856,  839,  399,  855,  857,  854,  904,
1467      857,  903,  398,  912,  904,  856,  858,  858,  912,  859,
1468      859,  860,  860,  736,  736,  834,  834,  861,  861,  858,
1469
1470      907,  834,  859,  856,  860,  862,  862,  926,  834,  907,
1471      861,  834,  856,  873,  873,  874,  874,  834,  862,  926,
1472      859,  858,  921,  872,  872,  932,  873,  921,  874,  872,
1473      932,  872,  873,  875,  875,  860,  862,  834,  834,  876,
1474      876,  919,  935,  935,  834,  834,  875,  874,  877,  877,
1475      919,  834,  876,  834,  861,  872,  875,  878,  878,  879,
1476      879,  877,  876,  888,  888,  889,  889,  890,  890,  905,
1477      878,  877,  879,  905,  891,  891,  888,  918,  889,  391,
1478      890,  918,  892,  892,  898,  898,  931,  891,  888,  913,
1479      899,  899,  913,  390,  890,  892,  931,  898,  900,  900,
1480
1481      892,  913,  898,  899,  382,  889,  891,  901,  901,  902,
1482      902,  900,  378,  899,  368,  362,  908,  908,  909,  909,
1483      901,  361,  902,  910,  910,  914,  914,  901,  902,  908,
1484      900,  909,  915,  915,  916,  916,  910,  360,  914,  917,
1485      917,  909,  920,  908,  359,  915,  920,  916,  922,  922,
1486      351,  915,  917,  343,  910,  923,  923,  914,  924,  924,
1487      337,  922,  917,  910,  928,  928,  916,  336,  923,  335,
1488      334,  924,  933,  922,  929,  929,  933,  928,  930,  930,
1489      934,  934,  928,  936,  936,  924,  937,  929,  331,  330,
1490      937,  930,  323,  934,  307,  923,  936,  929,  306,  305,
1491
1492      304,  303,  301,  300,  299,  298,  292,  934,  291,  284,
1493      930,  274,  272,  271,  270,  936,  939,  939,  939,  939,
1494      939,  939,  939,  939,  939,  939,  939,  939,  939,  940,
1495      940,  940,  940,  940,  940,  940,  940,  940,  940,  940,
1496      940,  940,  941,  941,  941,  941,  941,  941,  941,  941,
1497      941,  941,  941,  941,  941,  942,  942,  942,  942,  942,
1498      942,  942,  942,  942,  942,  942,  942,  942,  943,  943,
1499      943,  943,  943,  943,  943,  943,  943,  943,  943,  943,
1500      943,  944,  944,  944,  944,  944,  944,  944,  944,  944,
1501      944,  944,  944,  944,  945,  269,  945,  946,  946,  946,
1502
1503      946,  946,  946,  946,  946,  946,  946,  946,  946,  946,
1504      947,  947,  947,  947,  947,  947,  947,  947,  947,  947,
1505      947,  947,  947,  948,  948,  948,  948,  948,  948,  948,
1506      948,  948,  948,  948,  948,  948,  949,  949,  949,  949,
1507      949,  949,  949,  949,  949,  949,  949,  268,  949,  950,
1508      267,  266,  257,  256,  254,  247,  950,  246,  950,  951,
1509      951,  245,  951,  951,  951,  244,  951,  951,  951,  951,
1510      951,  951,  952,  952,  952,  952,  952,  952,  952,  952,
1511      952,  952,  952,  952,  952,  953,  953,  953,  234,  953,
1512      953,  953,  953,  953,  953,  953,  953,  953,  954,  954,
1513
1514      954,  954,  954,  954,  954,  954,  954,  954,  954,  954,
1515      954,  955,  232,  955,  956,  956,  231,  956,  956,  956,
1516      230,  956,  956,  956,  956,  956,  956,  957,  957,  957,
1517      229,  957,  957,  957,  957,  957,  957,  957,  957,  957,
1518      958,  958,  228,  958,  958,  958,  227,  958,  958,  958,
1519      958,  958,  958,  959,  959,  959,  216,  959,  959,  959,
1520      959,  959,  959,  959,  959,  959,  960,  960,  215,  214,
1521      213,  205,  204,  203,  202,  960,  961,  961,  201,  961,
1522      961,  961,  179,  961,  961,  961,  961,  961,  961,  962,
1523      962,  962,  178,  962,  962,  962,  962,  962,  962,  962,
1524
1525      962,  962,  963,  963,  177,  176,  963,  169,  963,  963,
1526      168,  963,  964,  964,  167,  964,  964,  964,  166,  964,
1527      964,  964,  964,  964,  964,  965,  965,  965,  165,  965,
1528      965,  965,  965,  965,  965,  965,  965,  965,  966,  966,
1529      140,  139,  138,  137,  131,  130,  129,  966,  967,  967,
1530      127,  967,  967,  967,  102,  967,  967,  967,  967,  967,
1531      967,  968,  968,  968,   97,  968,  968,  968,  968,  968,
1532      968,  968,  968,  968,  969,  969,   96,   94,   92,   91,
1533       90,   89,   85,  969,  970,  970,  970,  970,  970,  970,
1534      970,  970,  970,  970,  970,  970,  970,  971,  971,  971,
1535
1536      971,  971,  971,  971,  971,  971,  971,  971,  971,  971,
1537      972,  972,   84,   83,  972,   81,  972,  972,   80,  972,
1538      973,  973,  973,  973,  973,  973,  973,  973,   79,  973,
1539       78,  973,  973,  974,  974,   71,  974,  974,  974,   70,
1540      974,  974,  974,  974,  974,  974,  975,  975,  975,   62,
1541      975,  975,  975,  975,  975,  975,  975,  975,  975,  976,
1542      976,   60,   59,   58,   57,   56,  976,   53,  976,  977,
1543      977,  977,  977,  977,  977,  977,  977,  977,  977,  977,
1544      977,  977,  978,  978,   52,  978,   39,   37,   31,  978,
1545       30,  978,  979,  979,   28,  979,  979,  979,   27,  979,
1546
1547      979,  979,  979,  979,  979,  980,  980,  980,   22,  980,
1548      980,  980,  980,  980,  980,  980,  980,  980,  981,  981,
1549       11,    4,    0,    0,    0,    0,    0,  981,  982,  982,
1550        0,    0,    0,    0,    0,    0,    0,  982,  983,  983,
1551        0,  983,  983,  983,    0,  983,  983,  983,  983,  983,
1552      983,  984,  984,  984,    0,  984,  984,  984,  984,  984,
1553      984,  984,  984,  984,  985,  985,    0,  985,    0,  985,
1554        0,  985,    0,  985,  986,  986,  986,  986,  986,  986,
1555      986,  986,  986,  986,  986,  986,  986,  987,  987,    0,
1556        0,  987,    0,  987,  987,    0,  987,  988,  988,    0,
1557
1558      988,  988,  988,    0,  988,  988,  988,  988,  988,  988,
1559      989,  989,  989,    0,  989,  989,  989,  989,  989,  989,
1560      989,  989,  989,  990,  990,    0,  990,    0,  990,    0,
1561        0,    0,  990,  991,  991,  991,  991,  991,  991,  991,
1562      991,  991,  991,  991,  991,  991,  992,  992,    0,    0,
1563        0,    0,    0,    0,    0,  992,  993,  993,    0,  993,
1564      993,  993,    0,  993,  993,  993,  993,  993,  993,  994,
1565      994,  994,    0,  994,  994,  994,  994,  994,  994,  994,
1566      994,  994,  995,  995,    0,    0,    0,    0,    0,  995,
1567        0,  995,  996,  996,    0,    0,    0,    0,    0,    0,
1568
1569        0,  996,  997,  997,  997,  997,  997,  997,  997,  997,
1570      997,  997,  997,  997,  997,  998,  998,  998,  998,  998,
1571      998,  998,  998,  998,  998,  998,  998,  998,  999,  999,
1572        0,    0,  999,    0,  999,  999,    0,  999, 1000, 1000,
1573        0, 1000, 1000, 1000,    0, 1000, 1000, 1000, 1000, 1000,
1574     1000, 1001, 1001, 1001,    0, 1001, 1001, 1001, 1001, 1001,
1575     1001, 1001, 1001, 1001, 1002, 1002,    0,    0, 1002,    0,
1576        0, 1002,    0, 1002, 1003, 1003,    0, 1003,    0, 1003,
1577        0,    0,    0, 1003, 1004, 1004, 1004, 1004, 1004, 1004,
1578     1004, 1004, 1004, 1004, 1004, 1004, 1004, 1005, 1005,    0,
1579
1580     1005, 1005, 1005,    0, 1005, 1005, 1005, 1005, 1005, 1005,
1581     1006, 1006, 1006,    0, 1006, 1006, 1006, 1006, 1006, 1006,
1582     1006, 1006, 1006, 1007, 1007,    0,    0,    0,    0,    0,
1583     1007, 1007, 1007, 1008, 1008, 1008, 1008, 1008, 1008, 1008,
1584     1008, 1008, 1008, 1008, 1008, 1008, 1009, 1009,    0,    0,
1585        0,    0,    0,    0,    0, 1009, 1010, 1010,    0, 1010,
1586     1010, 1010,    0, 1010, 1010, 1010, 1010, 1010, 1010, 1011,
1587     1011, 1011,    0, 1011, 1011, 1011, 1011, 1011, 1011, 1011,
1588     1011, 1011, 1012, 1012,    0, 1012,    0, 1012,    0,    0,
1589        0, 1012, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013,
1590
1591     1013, 1013, 1013, 1013, 1013, 1014, 1014,    0,    0, 1014,
1592        0,    0, 1014,    0, 1014, 1015, 1015,    0, 1015, 1015,
1593     1015,    0, 1015, 1015, 1015, 1015, 1015, 1015, 1016, 1016,
1594     1016,    0, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016,
1595     1016, 1017, 1017,    0,    0,    0, 1017,    0, 1017,    0,
1596     1017, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018,
1597     1018, 1018, 1018, 1018, 1019, 1019,    0, 1019,    0,    0,
1598        0,    0, 1019, 1019, 1020, 1020,    0, 1020,    0, 1020,
1599        0,    0,    0, 1020, 1021, 1021, 1021, 1021, 1021, 1021,
1600     1021, 1021, 1021, 1021, 1021, 1021, 1021, 1022, 1022,    0,
1601
1602        0,    0,    0,    0, 1022, 1022, 1022, 1023, 1023,    0,
1603        0,    0,    0,    0, 1023, 1023, 1023, 1024, 1024, 1024,
1604     1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
1605     1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025,
1606     1025, 1025, 1025,  938,  938,  938,  938,  938,  938,  938,
1607      938,  938,  938,  938,  938,  938,  938,  938,  938,  938,
1608      938,  938,  938,  938,  938,  938,  938,  938,  938,  938,
1609      938,  938,  938,  938,  938,  938,  938,  938,  938,  938,
1610      938,  938,  938,  938,  938,  938,  938,  938,  938,  938,
1611      938,  938,  938,  938,  938,  938,  938,  938,  938,  938,
1612
1613      938,  938,  938,  938,  938,  938,  938,  938,  938
1614    } ;
1615
1616static yy_state_type yy_last_accepting_state;
1617static char *yy_last_accepting_cpos;
1618
1619/* The intent behind this definition is that it'll catch
1620 * any uses of REJECT which flex missed.
1621 */
1622#define REJECT reject_used_but_not_detected
1623#define yymore() yymore_used_but_not_detected
1624#define YY_MORE_ADJ 0
1625#define YY_RESTORE_YY_MORE_OFFSET
1626char *yytext;
1627#line 1 "gengtype-lex.l"
1628#define INITIAL 0
1629/* -*- indented-text -*- */
1630/* Process source files and output type information.
1631   Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
1632
1633This file is part of GCC.
1634
1635GCC is free software; you can redistribute it and/or modify it under
1636the terms of the GNU General Public License as published by the Free
1637Software Foundation; either version 2, or (at your option) any later
1638version.
1639
1640GCC is distributed in the hope that it will be useful, but WITHOUT ANY
1641WARRANTY; without even the implied warranty of MERCHANTABILITY or
1642FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
1643for more details.
1644
1645You should have received a copy of the GNU General Public License
1646along with GCC; see the file COPYING.  If not, write to the Free
1647Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
164802110-1301, USA.  */
1649#line 23 "gengtype-lex.l"
1650#include "bconfig.h"
1651#include "coretypes.h"
1652#include "system.h"
1653
1654#define malloc xmalloc
1655#define realloc xrealloc
1656
1657#include "gengtype.h"
1658#include "gengtype-yacc.h"
1659
1660#define YY_INPUT(BUF,RESULT,SIZE) ((RESULT) = macro_input (BUF,SIZE))
1661
1662static unsigned macro_input (char *buffer, unsigned);
1663static const char *push_macro_expansion (const char *, unsigned,
1664					 const char *, unsigned);
1665static char *mangle_macro_name (const char *, unsigned,
1666       			        const char *, unsigned);
1667static void update_lineno (const char *l, size_t len);
1668
1669struct fileloc lexer_line;
1670int lexer_toplevel_done;
1671
1672static void
1673update_lineno (const char *l, size_t len)
1674{
1675  while (len-- > 0)
1676    if (*l++ == '\n')
1677      lexer_line.line++;
1678}
1679
1680#define in_struct 1
1681#define in_struct_comment 2
1682#define in_comment 3
1683#define in_yacc_escape 4
1684
1685#define YY_NO_UNPUT 1
1686#define YY_NEVER_INTERACTIVE 1
1687#line 1688 "lex.yy.c"
1688
1689/* Macros after this point can all be overridden by user definitions in
1690 * section 1.
1691 */
1692
1693#ifndef YY_SKIP_YYWRAP
1694#ifdef __cplusplus
1695extern "C" int yywrap YY_PROTO(( void ));
1696#else
1697extern int yywrap YY_PROTO(( void ));
1698#endif
1699#endif
1700
1701#ifndef YY_NO_UNPUT
1702static void yyunput YY_PROTO(( int c, char *buf_ptr ))
1703#ifdef __GNUC__
1704    __attribute__((__unused__))
1705#endif
1706;
1707#endif
1708
1709#ifndef yytext_ptr
1710static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, yy_size_t ));
1711#endif
1712
1713#ifdef YY_NEED_STRLEN
1714static yy_size_t yy_flex_strlen YY_PROTO(( yyconst char * ));
1715#endif
1716
1717#ifndef YY_NO_INPUT
1718#ifdef __cplusplus
1719static int yyinput YY_PROTO(( void ));
1720#else
1721static int input YY_PROTO(( void ));
1722#endif
1723#endif
1724
1725#if YY_STACK_USED
1726static int yy_start_stack_ptr = 0;
1727static int yy_start_stack_depth = 0;
1728static int *yy_start_stack = 0;
1729#ifndef YY_NO_PUSH_STATE
1730static void yy_push_state YY_PROTO(( int new_state ));
1731#endif
1732#ifndef YY_NO_POP_STATE
1733static void yy_pop_state YY_PROTO(( void ));
1734#endif
1735#ifndef YY_NO_TOP_STATE
1736static int yy_top_state YY_PROTO(( void ));
1737#endif
1738
1739#else
1740#define YY_NO_PUSH_STATE 1
1741#define YY_NO_POP_STATE 1
1742#define YY_NO_TOP_STATE 1
1743#endif
1744
1745#ifdef YY_MALLOC_DECL
1746YY_MALLOC_DECL
1747#else
1748#if __STDC__
1749#ifndef __cplusplus
1750#include <stdlib.h>
1751#endif
1752#else
1753/* Just try to get by without declaring the routines.  This will fail
1754 * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
1755 * or sizeof(void*) != sizeof(int).
1756 */
1757#endif
1758#endif
1759
1760/* Amount of stuff to slurp up with each read. */
1761#ifndef YY_READ_BUF_SIZE
1762#define YY_READ_BUF_SIZE 8192
1763#endif
1764
1765/* Copy whatever the last rule matched to the standard output. */
1766
1767#ifndef ECHO
1768/* This used to be an fputs(), but since the string might contain NUL's,
1769 * we now use fwrite().
1770 */
1771#define ECHO (void) fwrite( yytext, (size_t)yyleng, 1, yyout )
1772#endif
1773
1774/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
1775 * is returned in "result".
1776 */
1777#ifndef YY_INPUT
1778#define YY_INPUT(buf,result,max_size) \
1779	if ( yy_current_buffer->yy_is_interactive ) \
1780		{ \
1781		int c = '*', n; \
1782		for ( n = 0; n < max_size && \
1783			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
1784			buf[n] = (char) c; \
1785		if ( c == '\n' ) \
1786			buf[n++] = (char) c; \
1787		if ( c == EOF && ferror( yyin ) ) \
1788			YY_FATAL_ERROR( "input in flex scanner failed" ); \
1789		result = n; \
1790		} \
1791	else if ( ((result = fread( buf, 1, (size_t)max_size, yyin )) == 0) \
1792		  && ferror( yyin ) ) \
1793		YY_FATAL_ERROR( "input in flex scanner failed" );
1794#endif
1795
1796/* No semi-colon after return; correct usage is to write "yyterminate();" -
1797 * we don't want an extra ';' after the "return" because that will cause
1798 * some compilers to complain about unreachable statements.
1799 */
1800#ifndef yyterminate
1801#define yyterminate() return YY_NULL
1802#endif
1803
1804/* Number of entries by which start-condition stack grows. */
1805#ifndef YY_START_STACK_INCR
1806#define YY_START_STACK_INCR 25
1807#endif
1808
1809/* Report a fatal error. */
1810#ifndef YY_FATAL_ERROR
1811#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
1812#endif
1813
1814/* Default declaration of generated scanner - a define so the user can
1815 * easily add parameters.
1816 */
1817#ifndef YY_DECL
1818#define YY_DECL int yylex YY_PROTO(( void ))
1819#endif
1820
1821/* Code executed at the beginning of each rule, after yytext and yyleng
1822 * have been set up.
1823 */
1824#ifndef YY_USER_ACTION
1825#define YY_USER_ACTION
1826#endif
1827
1828/* Code executed at the end of each rule. */
1829#ifndef YY_BREAK
1830#define YY_BREAK /*LINTED*/break;
1831#endif
1832
1833#define YY_RULE_SETUP \
1834	if ( yyleng > 0 ) \
1835		yy_current_buffer->yy_at_bol = \
1836				(yytext[yyleng - 1] == '\n'); \
1837	YY_USER_ACTION
1838
1839YY_DECL
1840	{
1841	register yy_state_type yy_current_state;
1842	register char *yy_cp, *yy_bp;
1843	register int yy_act;
1844
1845#line 63 "gengtype-lex.l"
1846
1847
1848#line 1849 "lex.yy.c"
1849
1850#if defined(YY_USES_REJECT) && (defined(__GNUC__) || defined(lint))
1851	/* XXX: shut up `unused label' warning with %options yylineno */
1852	if (/*CONSTCOND*/0 && yy_full_match)
1853		goto find_rule;
1854#endif
1855	if ( yy_init )
1856		{
1857		yy_init = 0;
1858
1859#ifdef YY_USER_INIT
1860		YY_USER_INIT;
1861#endif
1862
1863		if ( ! yy_start )
1864			yy_start = 1;	/* first start state */
1865
1866		if ( ! yyin )
1867			yyin = stdin;
1868
1869		if ( ! yyout )
1870			yyout = stdout;
1871
1872		if ( ! yy_current_buffer )
1873			yy_current_buffer =
1874				yy_create_buffer( yyin, YY_BUF_SIZE );
1875
1876		yy_load_buffer_state();
1877		}
1878
1879	while (/*CONSTCOND*/ 1 )	/* loops until end-of-file is reached */
1880		{
1881		yy_cp = yy_c_buf_p;
1882
1883		/* Support of yytext. */
1884		*yy_cp = yy_hold_char;
1885
1886		/* yy_bp points to the position in yy_ch_buf of the start of
1887		 * the current run.
1888		 */
1889		yy_bp = yy_cp;
1890
1891		yy_current_state = yy_start;
1892		yy_current_state += YY_AT_BOL();
1893yy_match:
1894		do
1895			{
1896			register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
1897			if ( yy_accept[yy_current_state] )
1898				{
1899				yy_last_accepting_state = yy_current_state;
1900				yy_last_accepting_cpos = yy_cp;
1901				}
1902			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1903				{
1904				yy_current_state = (int) yy_def[yy_current_state];
1905				if ( yy_current_state >= 939 )
1906					yy_c = yy_meta[(unsigned int) yy_c];
1907				}
1908			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1909			++yy_cp;
1910			}
1911		while ( yy_base[yy_current_state] != 4144 );
1912
1913yy_find_action:
1914		yy_act = yy_accept[yy_current_state];
1915		if ( yy_act == 0 )
1916			{ /* have to back up */
1917			yy_cp = yy_last_accepting_cpos;
1918			yy_current_state = yy_last_accepting_state;
1919			yy_act = yy_accept[yy_current_state];
1920			}
1921
1922		YY_DO_BEFORE_ACTION;
1923
1924
1925do_action:	/* This label is used only to access EOF actions. */
1926
1927
1928		switch ( yy_act )
1929	{ /* beginning of action switch */
1930			case 0: /* must back up */
1931			/* undo the effects of YY_DO_BEFORE_ACTION */
1932			*yy_cp = yy_hold_char;
1933			yy_cp = yy_last_accepting_cpos;
1934			yy_current_state = yy_last_accepting_state;
1935			goto yy_find_action;
1936
1937case 1:
1938YY_RULE_SETUP
1939#line 65 "gengtype-lex.l"
1940{
1941  char *tagstart;
1942  size_t taglen;
1943  char *namestart;
1944  size_t namelen;
1945  int is_pointer = 0;
1946  struct type *t;
1947  int union_p;
1948
1949  tagstart = yytext + strlen (" typedef ");
1950  while (ISSPACE (*tagstart))
1951    tagstart++;
1952  union_p = tagstart[0] == 'u';
1953  tagstart += strlen ("union ");
1954  while (ISSPACE (*tagstart))
1955    tagstart++;
1956  for (taglen = 1; ISIDNUM (tagstart[taglen]); taglen++)
1957    ;
1958  for (namestart = tagstart + taglen;
1959       ! ISIDNUM (*namestart);
1960       namestart++)
1961    if (*namestart == '*')
1962      is_pointer = 1;
1963  for (namelen = 1; ISIDNUM (namestart[namelen]); namelen++)
1964    ;
1965  t = find_structure ((const char *) xmemdup (tagstart, taglen, taglen+1),
1966		      union_p);
1967  if (is_pointer)
1968    t = create_pointer (t);
1969  namestart = (char *) xmemdup (namestart, namelen, namelen+1);
1970#ifdef USE_MAPPED_LOCATION
1971  /* temporary kludge - gentype doesn't handle cpp conditionals */
1972  if (strcmp (namestart, "location_t") != 0
1973      && strcmp (namestart, "expanded_location") != 0)
1974#endif
1975  do_typedef (namestart, t, &lexer_line);
1976  update_lineno (yytext, yyleng);
1977}
1978	YY_BREAK
1979case 2:
1980YY_RULE_SETUP
1981#line 104 "gengtype-lex.l"
1982{
1983
1984  char *namestart;
1985  size_t namelen;
1986  struct type *t;
1987  char *typestart;
1988  size_t typelen;
1989
1990  for (namestart = yytext + yyleng - 2; ISSPACE (*namestart); namestart--)
1991    ;
1992  for (namelen = 1; !ISSPACE (namestart[-namelen]); namelen++)
1993    ;
1994  namestart -= namelen - 1;
1995  for (typestart = yytext + strlen (" typedef ");
1996       ISSPACE(*typestart);
1997       typestart++)
1998    ;
1999  for (typelen = namestart - typestart;
2000       ISSPACE (typestart[typelen-1]);
2001       typelen--)
2002    ;
2003
2004  t = create_scalar_type (typestart, typelen);
2005  do_typedef ((const char *) xmemdup (namestart, namelen, namelen+1), t,
2006	      &lexer_line);
2007  update_lineno (yytext, yyleng);
2008}
2009	YY_BREAK
2010case 3:
2011YY_RULE_SETUP
2012#line 132 "gengtype-lex.l"
2013{
2014  char *namestart;
2015  size_t namelen;
2016  struct type *t;
2017
2018  for (namestart = yytext + yyleng - 7; ISSPACE (*namestart); namestart--)
2019    ;
2020  for (namelen = 1; !ISSPACE (namestart[-namelen]); namelen++)
2021    ;
2022  namestart -= namelen - 1;
2023
2024  t = create_scalar_type ("function type", sizeof ("function type")-1);
2025  do_typedef ((const char *) xmemdup (namestart, namelen, namelen+1), t,
2026	      &lexer_line);
2027  update_lineno (yytext, yyleng);
2028}
2029	YY_BREAK
2030case 4:
2031YY_RULE_SETUP
2032#line 149 "gengtype-lex.l"
2033{
2034  char *namestart;
2035  size_t namelen;
2036  struct type *t;
2037
2038  for (namestart = yytext + yyleng - 2; ISSPACE (*namestart); namestart--)
2039    ;
2040  for (namelen = 1; !ISSPACE (namestart[-namelen]); namelen++)
2041    ;
2042  namestart -= namelen - 1;
2043
2044  t = create_scalar_type ("function type", sizeof ("function type")-1);
2045  do_typedef ((const char *) xmemdup (namestart, namelen, namelen+1), t,
2046	      &lexer_line);
2047  update_lineno (yytext, yyleng);
2048}
2049	YY_BREAK
2050case 5:
2051YY_RULE_SETUP
2052#line 166 "gengtype-lex.l"
2053{
2054  char *namestart;
2055  size_t namelen;
2056  struct type *t;
2057
2058  for (namestart = yytext + yyleng - 7; !ISIDNUM (*namestart); namestart--)
2059    ;
2060  for (namelen = 1; ISIDNUM (namestart[-namelen]); namelen++)
2061    ;
2062  namestart -= namelen - 1;
2063
2064  t = create_scalar_type ("function type", sizeof ("function type")-1);
2065  do_typedef ((const char *) xmemdup (namestart, namelen, namelen+1), t,
2066	      &lexer_line);
2067  update_lineno (yytext, yyleng);
2068}
2069	YY_BREAK
2070case 6:
2071YY_RULE_SETUP
2072#line 183 "gengtype-lex.l"
2073{
2074  char *namestart;
2075  size_t namelen;
2076  struct type *t;
2077
2078  for (namestart = yytext + yyleng - 2; !ISIDNUM (*namestart); namestart--)
2079    ;
2080  for (namelen = 1; ISIDNUM (namestart[-namelen]); namelen++)
2081    ;
2082  namestart -= namelen - 1;
2083
2084  t = create_scalar_type ("function type", sizeof ("function type")-1);
2085  do_typedef ((const char *) xmemdup (namestart, namelen, namelen+1), t,
2086	      &lexer_line);
2087  update_lineno (yytext, yyleng);
2088}
2089	YY_BREAK
2090case 7:
2091*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
2092yy_c_buf_p = yy_cp -= 3;
2093YY_DO_BEFORE_ACTION; /* set up yytext again */
2094YY_RULE_SETUP
2095#line 200 "gengtype-lex.l"
2096{
2097  char *tagstart;
2098  size_t taglen;
2099  int typedef_p;
2100  int union_p;
2101
2102  typedef_p = yytext[1] == 't';
2103  if (typedef_p)
2104    for (tagstart = yytext + strlen (" typedef ");
2105	 ISSPACE(*tagstart);
2106	 tagstart++)
2107      ;
2108  else
2109    tagstart = yytext + 1;
2110
2111  union_p = tagstart[0] == 'u';
2112  tagstart += strlen ("union ");
2113  while (ISSPACE (*tagstart))
2114    tagstart++;
2115  for (taglen = 1; ISIDNUM (tagstart[taglen]); taglen++)
2116    ;
2117
2118  yylval.t = find_structure ((const char *) xmemdup (tagstart, taglen,
2119						     taglen + 1),
2120			     union_p);
2121  BEGIN(in_struct);
2122  update_lineno (yytext, yyleng);
2123  return typedef_p ? ENT_TYPEDEF_STRUCT : ENT_STRUCT;
2124}
2125	YY_BREAK
2126case 8:
2127*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
2128yy_c_buf_p = yy_cp -= 3;
2129YY_DO_BEFORE_ACTION; /* set up yytext again */
2130YY_RULE_SETUP
2131#line 230 "gengtype-lex.l"
2132{
2133  BEGIN(in_struct);
2134  update_lineno (yytext, yyleng);
2135  return ENT_EXTERNSTATIC;
2136}
2137	YY_BREAK
2138case 9:
2139*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
2140yy_c_buf_p = yy_cp -= 3;
2141YY_DO_BEFORE_ACTION; /* set up yytext again */
2142YY_RULE_SETUP
2143#line 236 "gengtype-lex.l"
2144{
2145  BEGIN(in_struct);
2146  update_lineno (yytext, yyleng);
2147  return ENT_YACCUNION;
2148}
2149	YY_BREAK
2150case 10:
2151YY_RULE_SETUP
2152#line 242 "gengtype-lex.l"
2153{
2154  char *macro, *arg;
2155  unsigned macro_len, arg_len;
2156  char *ptr = yytext;
2157  const char *additional;
2158  type_p t;
2159
2160  /* Find the macro name.  */
2161  for (macro = ptr; *ptr != '(' && !ISSPACE (*ptr); ptr++)
2162    continue;
2163  for (macro_len = ptr - macro; !(ISALNUM (*ptr) || *ptr == '_'); ptr++)
2164    continue;
2165
2166  /* Find the argument(s).  */
2167  for (arg = ptr; *ptr != ')'; ptr++)
2168    continue;
2169  arg_len = ptr - arg;
2170
2171  /* Create the struct and typedef.  */
2172  ptr = mangle_macro_name ("VEC", 3, arg, arg_len);
2173
2174  t = find_structure (ptr, 0);
2175  do_typedef (ptr, t, &lexer_line);
2176
2177  /* Push the macro for later expansion.  */
2178  additional = push_macro_expansion (macro, macro_len, arg, arg_len);
2179
2180  if (additional)
2181    {
2182      ptr = mangle_macro_name (ptr, strlen (ptr),
2183			       additional, strlen (additional));
2184      t = find_structure (ptr, 0);
2185      do_typedef (ptr, t, &lexer_line);
2186    }
2187}
2188	YY_BREAK
2189
2190case 11:
2191YY_RULE_SETUP
2192#line 280 "gengtype-lex.l"
2193{ BEGIN(in_struct_comment); }
2194	YY_BREAK
2195case 12:
2196YY_RULE_SETUP
2197#line 282 "gengtype-lex.l"
2198{ BEGIN(in_yacc_escape); } /* } */
2199	YY_BREAK
2200case 13:
2201YY_RULE_SETUP
2202#line 284 "gengtype-lex.l"
2203{ update_lineno (yytext, yyleng); }
2204	YY_BREAK
2205case 14:
2206*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
2207yy_c_buf_p = yy_cp = yy_bp + 5;
2208YY_DO_BEFORE_ACTION; /* set up yytext again */
2209YY_RULE_SETUP
2210#line 286 "gengtype-lex.l"
2211/* don't care */
2212	YY_BREAK
2213case 15:
2214*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
2215yy_c_buf_p = yy_cp = yy_bp + 3;
2216YY_DO_BEFORE_ACTION; /* set up yytext again */
2217YY_RULE_SETUP
2218#line 287 "gengtype-lex.l"
2219{ return GTY_TOKEN; }
2220	YY_BREAK
2221case 16:
2222*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
2223yy_c_buf_p = yy_cp = yy_bp + 5;
2224YY_DO_BEFORE_ACTION; /* set up yytext again */
2225YY_RULE_SETUP
2226#line 288 "gengtype-lex.l"
2227{ return UNION; }
2228	YY_BREAK
2229case 17:
2230*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
2231yy_c_buf_p = yy_cp = yy_bp + 6;
2232YY_DO_BEFORE_ACTION; /* set up yytext again */
2233YY_RULE_SETUP
2234#line 289 "gengtype-lex.l"
2235{ return STRUCT; }
2236	YY_BREAK
2237case 18:
2238*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
2239yy_c_buf_p = yy_cp = yy_bp + 4;
2240YY_DO_BEFORE_ACTION; /* set up yytext again */
2241YY_RULE_SETUP
2242#line 290 "gengtype-lex.l"
2243{ return ENUM; }
2244	YY_BREAK
2245case 19:
2246*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
2247yy_c_buf_p = yy_cp = yy_bp + 9;
2248YY_DO_BEFORE_ACTION; /* set up yytext again */
2249YY_RULE_SETUP
2250#line 291 "gengtype-lex.l"
2251{ return ALIAS; }
2252	YY_BREAK
2253case 20:
2254*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
2255yy_c_buf_p = yy_cp = yy_bp + 10;
2256YY_DO_BEFORE_ACTION; /* set up yytext again */
2257YY_RULE_SETUP
2258#line 292 "gengtype-lex.l"
2259{ return NESTED_PTR; }
2260	YY_BREAK
2261case 21:
2262YY_RULE_SETUP
2263#line 293 "gengtype-lex.l"
2264{ return NUM; }
2265	YY_BREAK
2266case 22:
2267*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
2268yy_c_buf_p = yy_cp -= 1;
2269YY_DO_BEFORE_ACTION; /* set up yytext again */
2270YY_RULE_SETUP
2271#line 294 "gengtype-lex.l"
2272{
2273  yylval.s = (const char *) xmemdup (yytext, yyleng, yyleng+1);
2274  return PARAM_IS;
2275}
2276	YY_BREAK
2277case 23:
2278*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
2279yy_c_buf_p = yy_cp -= 1;
2280YY_DO_BEFORE_ACTION; /* set up yytext again */
2281#line 300 "gengtype-lex.l"
2282case 24:
2283YY_RULE_SETUP
2284#line 300 "gengtype-lex.l"
2285{
2286  size_t len;
2287
2288  for (len = yyleng; ISSPACE (yytext[len-1]); len--)
2289    ;
2290
2291  yylval.t = create_scalar_type (yytext, len);
2292  update_lineno (yytext, yyleng);
2293  return SCALAR;
2294}
2295	YY_BREAK
2296case 25:
2297YY_RULE_SETUP
2298#line 311 "gengtype-lex.l"
2299{
2300  char *macro, *arg;
2301  unsigned macro_len, arg_len;
2302  char *ptr = yytext;
2303
2304  /* Find the macro name */
2305  for (macro = ptr; *ptr != '(' && !ISSPACE (*ptr); ptr++)
2306    continue;
2307  for (macro_len = ptr - macro; !(ISALNUM(*ptr) || *ptr == '_'); ptr++)
2308    continue;
2309
2310  /* Find the arguments.  */
2311  for (arg = ptr; *ptr != ')'; ptr++)
2312    continue;
2313  arg_len = ptr - arg;
2314
2315  ptr = mangle_macro_name (macro, macro_len, arg, arg_len);
2316  yylval.s = ptr;
2317  return ID;
2318}
2319	YY_BREAK
2320case 26:
2321*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
2322yy_c_buf_p = yy_cp -= 1;
2323YY_DO_BEFORE_ACTION; /* set up yytext again */
2324YY_RULE_SETUP
2325#line 332 "gengtype-lex.l"
2326{
2327  yylval.s = (const char *) xmemdup (yytext, yyleng, yyleng+1);
2328  return ID;
2329}
2330	YY_BREAK
2331case 27:
2332YY_RULE_SETUP
2333#line 337 "gengtype-lex.l"
2334{
2335  yylval.s = (const char *) xmemdup (yytext+1, yyleng-2, yyleng-1);
2336  return STRING;
2337}
2338	YY_BREAK
2339case 28:
2340YY_RULE_SETUP
2341#line 341 "gengtype-lex.l"
2342{
2343  yylval.s = (const char *) xmemdup (yytext+1, yyleng-2, yyleng-1);
2344  return ARRAY;
2345}
2346	YY_BREAK
2347case 29:
2348YY_RULE_SETUP
2349#line 345 "gengtype-lex.l"
2350{
2351  yylval.s = (const char *) xmemdup (yytext+1, yyleng-1, yyleng);
2352  return PERCENT_ID;
2353}
2354	YY_BREAK
2355case 30:
2356YY_RULE_SETUP
2357#line 349 "gengtype-lex.l"
2358{
2359  yylval.s = (const char *) xmemdup (yytext+1, yyleng-2, yyleng);
2360  return CHAR;
2361}
2362	YY_BREAK
2363case 31:
2364YY_RULE_SETUP
2365#line 354 "gengtype-lex.l"
2366{ return yytext[0]; }
2367	YY_BREAK
2368case 32:
2369YY_RULE_SETUP
2370#line 356 "gengtype-lex.l"
2371{
2372  if (lexer_toplevel_done)
2373    {
2374      BEGIN(INITIAL);
2375      lexer_toplevel_done = 0;
2376    }
2377  return yytext[0];
2378}
2379	YY_BREAK
2380case 33:
2381YY_RULE_SETUP
2382#line 365 "gengtype-lex.l"
2383{
2384  BEGIN(INITIAL);
2385  return PERCENTPERCENT;
2386}
2387	YY_BREAK
2388case 34:
2389YY_RULE_SETUP
2390#line 370 "gengtype-lex.l"
2391{lexer_line.line++;}
2392	YY_BREAK
2393case 35:
2394YY_RULE_SETUP
2395#line 372 "gengtype-lex.l"
2396{
2397  error_at_line (&lexer_line, "unexpected character `%s'", yytext);
2398}
2399	YY_BREAK
2400
2401case 36:
2402YY_RULE_SETUP
2403#line 377 "gengtype-lex.l"
2404{ BEGIN(in_comment); }
2405	YY_BREAK
2406case 37:
2407YY_RULE_SETUP
2408#line 378 "gengtype-lex.l"
2409{ lexer_line.line++; }
2410	YY_BREAK
2411case 38:
2412#line 380 "gengtype-lex.l"
2413case 39:
2414#line 381 "gengtype-lex.l"
2415case 40:
2416YY_RULE_SETUP
2417#line 381 "gengtype-lex.l"
2418/* do nothing */
2419	YY_BREAK
2420case 41:
2421YY_RULE_SETUP
2422#line 382 "gengtype-lex.l"
2423{ update_lineno (yytext, yyleng); }
2424	YY_BREAK
2425case 42:
2426*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
2427yy_c_buf_p = yy_cp = yy_bp + 1;
2428YY_DO_BEFORE_ACTION; /* set up yytext again */
2429YY_RULE_SETUP
2430#line 383 "gengtype-lex.l"
2431/* do nothing */
2432	YY_BREAK
2433
2434case 43:
2435YY_RULE_SETUP
2436#line 386 "gengtype-lex.l"
2437{ lexer_line.line++; }
2438	YY_BREAK
2439case 44:
2440#line 388 "gengtype-lex.l"
2441case 45:
2442YY_RULE_SETUP
2443#line 388 "gengtype-lex.l"
2444/* do nothing */
2445	YY_BREAK
2446case 46:
2447*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
2448yy_c_buf_p = yy_cp = yy_bp + 1;
2449YY_DO_BEFORE_ACTION; /* set up yytext again */
2450YY_RULE_SETUP
2451#line 389 "gengtype-lex.l"
2452/* do nothing */
2453	YY_BREAK
2454
2455case 47:
2456YY_RULE_SETUP
2457#line 391 "gengtype-lex.l"
2458{ BEGIN(INITIAL); }
2459	YY_BREAK
2460case 48:
2461YY_RULE_SETUP
2462#line 392 "gengtype-lex.l"
2463{ BEGIN(in_struct); }
2464	YY_BREAK
2465
2466case 49:
2467YY_RULE_SETUP
2468#line 395 "gengtype-lex.l"
2469{ lexer_line.line++; }
2470	YY_BREAK
2471case 50:
2472#line 397 "gengtype-lex.l"
2473case 51:
2474YY_RULE_SETUP
2475#line 397 "gengtype-lex.l"
2476/* do nothing */
2477	YY_BREAK
2478case 52:
2479*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
2480yy_c_buf_p = yy_cp = yy_bp + 1;
2481YY_DO_BEFORE_ACTION; /* set up yytext again */
2482YY_RULE_SETUP
2483#line 398 "gengtype-lex.l"
2484/* do nothing */
2485	YY_BREAK
2486case 53:
2487YY_RULE_SETUP
2488#line 399 "gengtype-lex.l"
2489{ BEGIN(in_struct); }
2490	YY_BREAK
2491case 54:
2492YY_RULE_SETUP
2493#line 400 "gengtype-lex.l"
2494{
2495  error_at_line (&lexer_line,
2496		 "unterminated %%{; unexpected EOF");
2497}
2498	YY_BREAK
2499
2500case 55:
2501#line 408 "gengtype-lex.l"
2502case 56:
2503YY_RULE_SETUP
2504#line 408 "gengtype-lex.l"
2505{
2506  error_at_line (&lexer_line,
2507		 "unterminated comment or string; unexpected EOF");
2508}
2509	YY_BREAK
2510case 57:
2511YY_RULE_SETUP
2512#line 413 "gengtype-lex.l"
2513/* do nothing */
2514	YY_BREAK
2515case 58:
2516YY_RULE_SETUP
2517#line 414 "gengtype-lex.l"
2518{
2519  error_at_line (&lexer_line, "stray GTY marker");
2520}
2521	YY_BREAK
2522case 59:
2523YY_RULE_SETUP
2524#line 418 "gengtype-lex.l"
2525YY_FATAL_ERROR( "flex scanner jammed" );
2526	YY_BREAK
2527#line 2528 "lex.yy.c"
2528case YY_STATE_EOF(INITIAL):
2529case YY_STATE_EOF(in_struct):
2530case YY_STATE_EOF(in_struct_comment):
2531case YY_STATE_EOF(in_comment):
2532case YY_STATE_EOF(in_yacc_escape):
2533	yyterminate();
2534
2535	case YY_END_OF_BUFFER:
2536		{
2537		/* Amount of text matched not including the EOB char. */
2538		int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
2539
2540		/* Undo the effects of YY_DO_BEFORE_ACTION. */
2541		*yy_cp = yy_hold_char;
2542		YY_RESTORE_YY_MORE_OFFSET
2543
2544		if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
2545			{
2546			/* We're scanning a new file or input source.  It's
2547			 * possible that this happened because the user
2548			 * just pointed yyin at a new source and called
2549			 * yylex().  If so, then we have to assure
2550			 * consistency between yy_current_buffer and our
2551			 * globals.  Here is the right place to do so, because
2552			 * this is the first action (other than possibly a
2553			 * back-up) that will match for the new input source.
2554			 */
2555			yy_n_chars = yy_current_buffer->yy_n_chars;
2556			yy_current_buffer->yy_input_file = yyin;
2557			yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
2558			}
2559
2560		/* Note that here we test for yy_c_buf_p "<=" to the position
2561		 * of the first EOB in the buffer, since yy_c_buf_p will
2562		 * already have been incremented past the NUL character
2563		 * (since all states make transitions on EOB to the
2564		 * end-of-buffer state).  Contrast this with the test
2565		 * in input().
2566		 */
2567		if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
2568			{ /* This was really a NUL. */
2569			yy_state_type yy_next_state;
2570
2571			yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
2572
2573			yy_current_state = yy_get_previous_state();
2574
2575			/* Okay, we're now positioned to make the NUL
2576			 * transition.  We couldn't have
2577			 * yy_get_previous_state() go ahead and do it
2578			 * for us because it doesn't know how to deal
2579			 * with the possibility of jamming (and we don't
2580			 * want to build jamming into it because then it
2581			 * will run more slowly).
2582			 */
2583
2584			yy_next_state = yy_try_NUL_trans( yy_current_state );
2585
2586			yy_bp = yytext_ptr + YY_MORE_ADJ;
2587
2588			if ( yy_next_state )
2589				{
2590				/* Consume the NUL. */
2591				yy_cp = ++yy_c_buf_p;
2592				yy_current_state = yy_next_state;
2593				goto yy_match;
2594				}
2595
2596			else
2597				{
2598				yy_cp = yy_c_buf_p;
2599				goto yy_find_action;
2600				}
2601			}
2602
2603		else switch ( yy_get_next_buffer() )
2604			{
2605			case EOB_ACT_END_OF_FILE:
2606				{
2607				yy_did_buffer_switch_on_eof = 0;
2608
2609				if ( yywrap() )
2610					{
2611					/* Note: because we've taken care in
2612					 * yy_get_next_buffer() to have set up
2613					 * yytext, we can now set up
2614					 * yy_c_buf_p so that if some total
2615					 * hoser (like flex itself) wants to
2616					 * call the scanner after we return the
2617					 * YY_NULL, it'll still work - another
2618					 * YY_NULL will get returned.
2619					 */
2620					yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
2621
2622					yy_act = YY_STATE_EOF(YY_START);
2623					goto do_action;
2624					}
2625
2626				else
2627					{
2628					if ( ! yy_did_buffer_switch_on_eof )
2629						YY_NEW_FILE;
2630					}
2631				break;
2632				}
2633
2634			case EOB_ACT_CONTINUE_SCAN:
2635				yy_c_buf_p =
2636					yytext_ptr + yy_amount_of_matched_text;
2637
2638				yy_current_state = yy_get_previous_state();
2639
2640				yy_cp = yy_c_buf_p;
2641				yy_bp = yytext_ptr + YY_MORE_ADJ;
2642				goto yy_match;
2643
2644			case EOB_ACT_LAST_MATCH:
2645				yy_c_buf_p =
2646				&yy_current_buffer->yy_ch_buf[yy_n_chars];
2647
2648				yy_current_state = yy_get_previous_state();
2649
2650				yy_cp = yy_c_buf_p;
2651				yy_bp = yytext_ptr + YY_MORE_ADJ;
2652				goto yy_find_action;
2653			}
2654		break;
2655		}
2656
2657	default:
2658		YY_FATAL_ERROR(
2659			"fatal flex scanner internal error--no action found" );
2660	} /* end of action switch */
2661		} /* end of scanning one token */
2662	} /* end of yylex */
2663
2664
2665/* yy_get_next_buffer - try to read in a new buffer
2666 *
2667 * Returns a code representing an action:
2668 *	EOB_ACT_LAST_MATCH -
2669 *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position
2670 *	EOB_ACT_END_OF_FILE - end of file
2671 */
2672
2673static int yy_get_next_buffer()
2674	{
2675	register char *dest = yy_current_buffer->yy_ch_buf;
2676	register char *source = yytext_ptr;
2677	register int number_to_move, i;
2678	int ret_val;
2679
2680	if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
2681		YY_FATAL_ERROR(
2682		"fatal flex scanner internal error--end of buffer missed" );
2683
2684	if ( yy_current_buffer->yy_fill_buffer == 0 )
2685		{ /* Don't try to fill the buffer, so this is an EOF. */
2686		if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
2687			{
2688			/* We matched a single character, the EOB, so
2689			 * treat this as a final EOF.
2690			 */
2691			return EOB_ACT_END_OF_FILE;
2692			}
2693
2694		else
2695			{
2696			/* We matched some text prior to the EOB, first
2697			 * process it.
2698			 */
2699			return EOB_ACT_LAST_MATCH;
2700			}
2701		}
2702
2703	/* Try to read more data. */
2704
2705	/* First move last chars to start of buffer. */
2706	number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
2707
2708	for ( i = 0; i < number_to_move; ++i )
2709		*(dest++) = *(source++);
2710
2711	if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
2712		/* don't do the read, it's not guaranteed to return an EOF,
2713		 * just force an EOF
2714		 */
2715		yy_current_buffer->yy_n_chars = yy_n_chars = 0;
2716
2717	else
2718		{
2719		int num_to_read =
2720			yy_current_buffer->yy_buf_size - number_to_move - 1;
2721
2722		while ( num_to_read <= 0 )
2723			{ /* Not enough room in the buffer - grow it. */
2724#ifdef YY_USES_REJECT
2725			YY_FATAL_ERROR(
2726"input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
2727#else
2728
2729			/* just a shorter name for the current buffer */
2730			YY_BUFFER_STATE b = yy_current_buffer;
2731
2732			int yy_c_buf_p_offset =
2733				(int) (yy_c_buf_p - b->yy_ch_buf);
2734
2735			if ( b->yy_is_our_buffer )
2736				{
2737				int new_size = b->yy_buf_size * 2;
2738
2739				if ( new_size <= 0 )
2740					b->yy_buf_size += b->yy_buf_size / 8;
2741				else
2742					b->yy_buf_size *= 2;
2743
2744				b->yy_ch_buf = (char *)
2745					/* Include room in for 2 EOB chars. */
2746					yy_flex_realloc( (void *) b->yy_ch_buf,
2747							 b->yy_buf_size + 2 );
2748				}
2749			else
2750				/* Can't grow it, we don't own it. */
2751				b->yy_ch_buf = 0;
2752
2753			if ( ! b->yy_ch_buf )
2754				YY_FATAL_ERROR(
2755				"fatal error - scanner input buffer overflow" );
2756
2757			yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
2758
2759			num_to_read = yy_current_buffer->yy_buf_size -
2760						number_to_move - 1;
2761#endif
2762			}
2763
2764		if ( num_to_read > YY_READ_BUF_SIZE )
2765			num_to_read = YY_READ_BUF_SIZE;
2766
2767		/* Read in more data. */
2768		YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
2769			yy_n_chars, num_to_read );
2770
2771		yy_current_buffer->yy_n_chars = yy_n_chars;
2772		}
2773
2774	if ( yy_n_chars == 0 )
2775		{
2776		if ( number_to_move == YY_MORE_ADJ )
2777			{
2778			ret_val = EOB_ACT_END_OF_FILE;
2779			yyrestart( yyin );
2780			}
2781
2782		else
2783			{
2784			ret_val = EOB_ACT_LAST_MATCH;
2785			yy_current_buffer->yy_buffer_status =
2786				YY_BUFFER_EOF_PENDING;
2787			}
2788		}
2789
2790	else
2791		ret_val = EOB_ACT_CONTINUE_SCAN;
2792
2793	yy_n_chars += number_to_move;
2794	yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
2795	yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
2796
2797	yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
2798
2799	return ret_val;
2800	}
2801
2802
2803/* yy_get_previous_state - get the state just before the EOB char was reached */
2804
2805static yy_state_type yy_get_previous_state()
2806	{
2807	register yy_state_type yy_current_state;
2808	register char *yy_cp;
2809
2810	yy_current_state = yy_start;
2811	yy_current_state += YY_AT_BOL();
2812
2813	for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
2814		{
2815		register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
2816		if ( yy_accept[yy_current_state] )
2817			{
2818			yy_last_accepting_state = yy_current_state;
2819			yy_last_accepting_cpos = yy_cp;
2820			}
2821		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2822			{
2823			yy_current_state = (int) yy_def[yy_current_state];
2824			if ( yy_current_state >= 939 )
2825				yy_c = yy_meta[(unsigned int) yy_c];
2826			}
2827		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2828		}
2829
2830	return yy_current_state;
2831	}
2832
2833
2834/* yy_try_NUL_trans - try to make a transition on the NUL character
2835 *
2836 * synopsis
2837 *	next_state = yy_try_NUL_trans( current_state );
2838 */
2839
2840#ifdef YY_USE_PROTOS
2841static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
2842#else
2843static yy_state_type yy_try_NUL_trans( yy_current_state )
2844yy_state_type yy_current_state;
2845#endif
2846	{
2847	register int yy_is_jam;
2848	register char *yy_cp = yy_c_buf_p;
2849
2850	register YY_CHAR yy_c = 1;
2851	if ( yy_accept[yy_current_state] )
2852		{
2853		yy_last_accepting_state = yy_current_state;
2854		yy_last_accepting_cpos = yy_cp;
2855		}
2856	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2857		{
2858		yy_current_state = (int) yy_def[yy_current_state];
2859		if ( yy_current_state >= 939 )
2860			yy_c = yy_meta[(unsigned int) yy_c];
2861		}
2862	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2863	yy_is_jam = (yy_current_state == 938);
2864
2865	return yy_is_jam ? 0 : yy_current_state;
2866	}
2867
2868
2869#ifndef YY_NO_UNPUT
2870#ifdef YY_USE_PROTOS
2871static void yyunput( int c, register char *yy_bp )
2872#else
2873static void yyunput( c, yy_bp )
2874int c;
2875register char *yy_bp;
2876#endif
2877	{
2878	register char *yy_cp = yy_c_buf_p;
2879
2880	/* undo effects of setting up yytext */
2881	*yy_cp = yy_hold_char;
2882
2883	if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
2884		{ /* need to shift things up to make room */
2885		/* +2 for EOB chars. */
2886		register int number_to_move = yy_n_chars + 2;
2887		register char *dest = &yy_current_buffer->yy_ch_buf[
2888					yy_current_buffer->yy_buf_size + 2];
2889		register char *source =
2890				&yy_current_buffer->yy_ch_buf[number_to_move];
2891
2892		while ( source > yy_current_buffer->yy_ch_buf )
2893			*--dest = *--source;
2894
2895		yy_cp += (int) (dest - source);
2896		yy_bp += (int) (dest - source);
2897		yy_current_buffer->yy_n_chars =
2898			yy_n_chars = yy_current_buffer->yy_buf_size;
2899
2900		if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
2901			YY_FATAL_ERROR( "flex scanner push-back overflow" );
2902		}
2903
2904	*--yy_cp = (char) c;
2905
2906
2907	yytext_ptr = yy_bp;
2908	yy_hold_char = *yy_cp;
2909	yy_c_buf_p = yy_cp;
2910	}
2911#endif	/* ifndef YY_NO_UNPUT */
2912
2913
2914#ifdef __cplusplus
2915static int yyinput()
2916#else
2917static int input()
2918#endif
2919	{
2920	int c;
2921
2922	*yy_c_buf_p = yy_hold_char;
2923
2924	if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
2925		{
2926		/* yy_c_buf_p now points to the character we want to return.
2927		 * If this occurs *before* the EOB characters, then it's a
2928		 * valid NUL; if not, then we've hit the end of the buffer.
2929		 */
2930		if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
2931			/* This was really a NUL. */
2932			*yy_c_buf_p = '\0';
2933
2934		else
2935			{ /* need more input */
2936			int offset = yy_c_buf_p - yytext_ptr;
2937			++yy_c_buf_p;
2938
2939			switch ( yy_get_next_buffer() )
2940				{
2941				case EOB_ACT_LAST_MATCH:
2942					/* This happens because yy_g_n_b()
2943					 * sees that we've accumulated a
2944					 * token and flags that we need to
2945					 * try matching the token before
2946					 * proceeding.  But for input(),
2947					 * there's no matching to consider.
2948					 * So convert the EOB_ACT_LAST_MATCH
2949					 * to EOB_ACT_END_OF_FILE.
2950					 */
2951
2952					/* Reset buffer status. */
2953					yyrestart( yyin );
2954
2955					/*FALLTHROUGH*/
2956
2957				case EOB_ACT_END_OF_FILE:
2958					{
2959					if ( yywrap() )
2960						return EOF;
2961
2962					if ( ! yy_did_buffer_switch_on_eof )
2963						YY_NEW_FILE;
2964#ifdef __cplusplus
2965					return yyinput();
2966#else
2967					return input();
2968#endif
2969					}
2970
2971				case EOB_ACT_CONTINUE_SCAN:
2972					yy_c_buf_p = yytext_ptr + offset;
2973					break;
2974				}
2975			}
2976		}
2977
2978	c = *(unsigned char *) yy_c_buf_p;	/* cast for 8-bit char's */
2979	*yy_c_buf_p = '\0';	/* preserve yytext */
2980	yy_hold_char = *++yy_c_buf_p;
2981
2982	yy_current_buffer->yy_at_bol = (c == '\n');
2983
2984	return c;
2985	}
2986
2987
2988#ifdef YY_USE_PROTOS
2989void yyrestart( FILE *input_file )
2990#else
2991void yyrestart( input_file )
2992FILE *input_file;
2993#endif
2994	{
2995	if ( ! yy_current_buffer )
2996		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
2997
2998	yy_init_buffer( yy_current_buffer, input_file );
2999	yy_load_buffer_state();
3000	}
3001
3002
3003#ifdef YY_USE_PROTOS
3004void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
3005#else
3006void yy_switch_to_buffer( new_buffer )
3007YY_BUFFER_STATE new_buffer;
3008#endif
3009	{
3010	if ( yy_current_buffer == new_buffer )
3011		return;
3012
3013	if ( yy_current_buffer )
3014		{
3015		/* Flush out information for old buffer. */
3016		*yy_c_buf_p = yy_hold_char;
3017		yy_current_buffer->yy_buf_pos = yy_c_buf_p;
3018		yy_current_buffer->yy_n_chars = yy_n_chars;
3019		}
3020
3021	yy_current_buffer = new_buffer;
3022	yy_load_buffer_state();
3023
3024	/* We don't actually know whether we did this switch during
3025	 * EOF (yywrap()) processing, but the only time this flag
3026	 * is looked at is after yywrap() is called, so it's safe
3027	 * to go ahead and always set it.
3028	 */
3029	yy_did_buffer_switch_on_eof = 1;
3030	}
3031
3032
3033#ifdef YY_USE_PROTOS
3034void yy_load_buffer_state( void )
3035#else
3036void yy_load_buffer_state()
3037#endif
3038	{
3039	yy_n_chars = yy_current_buffer->yy_n_chars;
3040	yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
3041	yyin = yy_current_buffer->yy_input_file;
3042	yy_hold_char = *yy_c_buf_p;
3043	}
3044
3045
3046#ifdef YY_USE_PROTOS
3047YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
3048#else
3049YY_BUFFER_STATE yy_create_buffer( file, size )
3050FILE *file;
3051int size;
3052#endif
3053	{
3054	YY_BUFFER_STATE b;
3055
3056	b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
3057	if ( ! b )
3058		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
3059
3060	b->yy_buf_size = size;
3061
3062	/* yy_ch_buf has to be 2 characters longer than the size given because
3063	 * we need to put in 2 end-of-buffer characters.
3064	 */
3065	b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
3066	if ( ! b->yy_ch_buf )
3067		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
3068
3069	b->yy_is_our_buffer = 1;
3070
3071	yy_init_buffer( b, file );
3072
3073	return b;
3074	}
3075
3076
3077#ifdef YY_USE_PROTOS
3078void yy_delete_buffer( YY_BUFFER_STATE b )
3079#else
3080void yy_delete_buffer( b )
3081YY_BUFFER_STATE b;
3082#endif
3083	{
3084	if ( ! b )
3085		return;
3086
3087	if ( b == yy_current_buffer )
3088		yy_current_buffer = (YY_BUFFER_STATE) 0;
3089
3090	if ( b->yy_is_our_buffer )
3091		yy_flex_free( (void *) b->yy_ch_buf );
3092
3093	yy_flex_free( (void *) b );
3094	}
3095
3096
3097#ifndef YY_ALWAYS_INTERACTIVE
3098#ifndef YY_NEVER_INTERACTIVE
3099#include <unistd.h>
3100#endif
3101#endif
3102
3103#ifdef YY_USE_PROTOS
3104void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
3105#else
3106void yy_init_buffer( b, file )
3107YY_BUFFER_STATE b;
3108FILE *file;
3109#endif
3110
3111
3112	{
3113	yy_flush_buffer( b );
3114
3115	b->yy_input_file = file;
3116	b->yy_fill_buffer = 1;
3117
3118#if YY_ALWAYS_INTERACTIVE
3119	b->yy_is_interactive = 1;
3120#else
3121#if YY_NEVER_INTERACTIVE
3122	b->yy_is_interactive = 0;
3123#else
3124	b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
3125#endif
3126#endif
3127	}
3128
3129
3130#ifdef YY_USE_PROTOS
3131void yy_flush_buffer( YY_BUFFER_STATE b )
3132#else
3133void yy_flush_buffer( b )
3134YY_BUFFER_STATE b;
3135#endif
3136
3137	{
3138	if ( ! b )
3139		return;
3140
3141	b->yy_n_chars = 0;
3142
3143	/* We always need two end-of-buffer characters.  The first causes
3144	 * a transition to the end-of-buffer state.  The second causes
3145	 * a jam in that state.
3146	 */
3147	b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
3148	b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
3149
3150	b->yy_buf_pos = &b->yy_ch_buf[0];
3151
3152	b->yy_at_bol = 1;
3153	b->yy_buffer_status = YY_BUFFER_NEW;
3154
3155	if ( b == yy_current_buffer )
3156		yy_load_buffer_state();
3157	}
3158
3159
3160#ifndef YY_NO_SCAN_BUFFER
3161#ifdef YY_USE_PROTOS
3162YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
3163#else
3164YY_BUFFER_STATE yy_scan_buffer( base, size )
3165char *base;
3166yy_size_t size;
3167#endif
3168	{
3169	YY_BUFFER_STATE b;
3170
3171	if ( size < 2 ||
3172	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
3173	     base[size-1] != YY_END_OF_BUFFER_CHAR )
3174		/* They forgot to leave room for the EOB's. */
3175		return 0;
3176
3177	b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
3178	if ( ! b )
3179		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
3180
3181	b->yy_buf_size = size - 2;	/* "- 2" to take care of EOB's */
3182	b->yy_buf_pos = b->yy_ch_buf = base;
3183	b->yy_is_our_buffer = 0;
3184	b->yy_input_file = 0;
3185	b->yy_n_chars = b->yy_buf_size;
3186	b->yy_is_interactive = 0;
3187	b->yy_at_bol = 1;
3188	b->yy_fill_buffer = 0;
3189	b->yy_buffer_status = YY_BUFFER_NEW;
3190
3191	yy_switch_to_buffer( b );
3192
3193	return b;
3194	}
3195#ifdef __cplusplus
3196YY_BUFFER_STATE yy_scan_buffer( char *base, int size )
3197	{
3198	return yy_scan_buffer(base, (yy_size_t) size);
3199	}
3200#endif
3201#endif
3202
3203
3204#ifndef YY_NO_SCAN_STRING
3205#ifdef YY_USE_PROTOS
3206YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
3207#else
3208YY_BUFFER_STATE yy_scan_string( yy_str )
3209yyconst char *yy_str;
3210#endif
3211	{
3212	yy_size_t len;
3213	for ( len = 0; yy_str[len]; ++len )
3214		;
3215
3216	return yy_scan_bytes( yy_str, len );
3217	}
3218#endif
3219
3220
3221#ifndef YY_NO_SCAN_BYTES
3222#ifdef YY_USE_PROTOS
3223YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, yy_size_t len )
3224#else
3225YY_BUFFER_STATE yy_scan_bytes( bytes, len )
3226yyconst char *bytes;
3227yy_size_t len;
3228#endif
3229	{
3230	YY_BUFFER_STATE b;
3231	char *buf;
3232	yy_size_t n, i;
3233
3234	/* Get memory for full buffer, including space for trailing EOB's. */
3235	n = len + 2;
3236	buf = (char *) yy_flex_alloc( n );
3237	if ( ! buf )
3238		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
3239
3240	for ( i = 0; i < len; ++i )
3241		buf[i] = bytes[i];
3242
3243	buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
3244
3245	b = yy_scan_buffer( buf, n );
3246	if ( ! b )
3247		YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
3248
3249	/* It's okay to grow etc. this buffer, and we should throw it
3250	 * away when we're done.
3251	 */
3252	b->yy_is_our_buffer = 1;
3253
3254	return b;
3255	}
3256#ifdef __cplusplus
3257YY_BUFFER_STATE yy_scan_bytes( yyconst char *base, int size )
3258	{
3259	return yy_scan_bytes(base, (yy_size_t) size);
3260	}
3261#endif
3262#endif
3263
3264
3265#ifndef YY_NO_PUSH_STATE
3266#ifdef YY_USE_PROTOS
3267static void yy_push_state( int new_state )
3268#else
3269static void yy_push_state( new_state )
3270int new_state;
3271#endif
3272	{
3273	if ( yy_start_stack_ptr >= yy_start_stack_depth )
3274		{
3275		yy_size_t new_size;
3276
3277		yy_start_stack_depth += YY_START_STACK_INCR;
3278		new_size = yy_start_stack_depth * sizeof( int );
3279
3280		if ( ! yy_start_stack )
3281			yy_start_stack = (int *) yy_flex_alloc( new_size );
3282
3283		else
3284			yy_start_stack = (int *) yy_flex_realloc(
3285					(void *) yy_start_stack, new_size );
3286
3287		if ( ! yy_start_stack )
3288			YY_FATAL_ERROR(
3289			"out of memory expanding start-condition stack" );
3290		}
3291
3292	yy_start_stack[yy_start_stack_ptr++] = YY_START;
3293
3294	BEGIN(new_state);
3295	}
3296#endif
3297
3298
3299#ifndef YY_NO_POP_STATE
3300static void yy_pop_state()
3301	{
3302	if ( --yy_start_stack_ptr < 0 )
3303		YY_FATAL_ERROR( "start-condition stack underflow" );
3304
3305	BEGIN(yy_start_stack[yy_start_stack_ptr]);
3306	}
3307#endif
3308
3309
3310#ifndef YY_NO_TOP_STATE
3311static int yy_top_state()
3312	{
3313	return yy_start_stack[yy_start_stack_ptr - 1];
3314	}
3315#endif
3316
3317#ifndef YY_EXIT_FAILURE
3318#define YY_EXIT_FAILURE 2
3319#endif
3320
3321#ifdef YY_USE_PROTOS
3322static void yy_fatal_error( yyconst char msg[] )
3323#else
3324static void yy_fatal_error( msg )
3325char msg[];
3326#endif
3327	{
3328	(void) fprintf( stderr, "%s\n", msg );
3329	exit( YY_EXIT_FAILURE );
3330	}
3331
3332
3333
3334/* Redefine yyless() so it works in section 3 code. */
3335
3336#undef yyless
3337#define yyless(n) \
3338	do \
3339		{ \
3340		/* Undo effects of setting up yytext. */ \
3341		yytext[yyleng] = yy_hold_char; \
3342		yy_c_buf_p = yytext + n; \
3343		yy_hold_char = *yy_c_buf_p; \
3344		*yy_c_buf_p = '\0'; \
3345		yyleng = n; \
3346		} \
3347	while ( 0 )
3348
3349
3350/* Internal utility routines. */
3351
3352#ifndef yytext_ptr
3353#ifdef YY_USE_PROTOS
3354static void yy_flex_strncpy( char *s1, yyconst char *s2, yy_size_t n )
3355#else
3356static void yy_flex_strncpy( s1, s2, n )
3357char *s1;
3358yyconst char *s2;
3359yy_size_t n;
3360#endif
3361	{
3362	register yy_size_t i;
3363	for ( i = 0; i < n; ++i )
3364		s1[i] = s2[i];
3365	}
3366#endif
3367
3368#ifdef YY_NEED_STRLEN
3369#ifdef YY_USE_PROTOS
3370static yy_size_t yy_flex_strlen( yyconst char *s )
3371#else
3372static yy_size_t yy_flex_strlen( s )
3373yyconst char *s;
3374#endif
3375	{
3376	register yy_size_t n;
3377	for ( n = 0; s[n]; ++n )
3378		;
3379
3380	return n;
3381	}
3382#endif
3383
3384
3385#ifdef YY_USE_PROTOS
3386static void *yy_flex_alloc( yy_size_t size )
3387#else
3388static void *yy_flex_alloc( size )
3389yy_size_t size;
3390#endif
3391	{
3392	return (void *) malloc( size );
3393	}
3394
3395#ifdef YY_USE_PROTOS
3396static void *yy_flex_realloc( void *ptr, yy_size_t size )
3397#else
3398static void *yy_flex_realloc( ptr, size )
3399void *ptr;
3400yy_size_t size;
3401#endif
3402	{
3403	/* The cast to (char *) in the following accommodates both
3404	 * implementations that use char* generic pointers, and those
3405	 * that use void* generic pointers.  It works with the latter
3406	 * because both ANSI C and C++ allow castless assignment from
3407	 * any pointer type to void*, and deal with argument conversions
3408	 * as though doing an assignment.
3409	 */
3410	return (void *) realloc( (char *) ptr, size );
3411	}
3412
3413#ifdef YY_USE_PROTOS
3414static void yy_flex_free( void *ptr )
3415#else
3416static void yy_flex_free( ptr )
3417void *ptr;
3418#endif
3419	{
3420	free( ptr );
3421	}
3422
3423#if YY_MAIN
3424int main()
3425	{
3426	yylex();
3427	return 0;
3428	}
3429#endif
3430#line 418 "gengtype-lex.l"
3431
3432
3433/* Deal with the expansion caused by the DEF_VEC_x macros.  */
3434
3435/* Mangle a macro and argument list as done by cpp concatenation in
3436   the compiler proper.  */
3437static char *
3438mangle_macro_name (const char *macro, unsigned macro_len,
3439		   const char *arg, unsigned arg_len)
3440{
3441  char *ptr = (char *) xmemdup (macro, macro_len, macro_len + arg_len + 2);
3442
3443  /* Now copy and concatenate each argument */
3444  while (arg_len)
3445    {
3446      ptr[macro_len++] = '_';
3447      for (; arg_len && (ISALNUM(*arg) || *arg == '_'); arg_len--)
3448        ptr[macro_len++] = *arg++;
3449      for (; arg_len && !(ISALNUM(*arg) || *arg == '_'); arg_len--)
3450        arg++;
3451    }
3452  ptr[macro_len] = 0;
3453
3454  return ptr;
3455}
3456
3457typedef struct macro_def
3458{
3459  const char *name;
3460  const char *expansion;
3461  const char *additional;
3462} macro_def_t;
3463
3464typedef struct macro
3465{
3466  const macro_def_t *def;
3467  struct macro *next;
3468  const char *args[10];
3469} macro_t;
3470
3471static const macro_def_t macro_defs[] =
3472{
3473#define IN_GENGTYPE 1
3474#include "vec.h"
3475  {NULL, NULL, NULL}
3476};
3477
3478/* Chain of macro expansions to do at end of scanning.  */
3479static macro_t *macro_expns;
3480static macro_t *macro_expns_end;
3481
3482/* Push macro NAME (NAME_LEN) with argument ARG (ARG_LEN) onto the
3483   expansion queue.  We ensure NAME is known at this point.  */
3484
3485static const char *
3486push_macro_expansion (const char *name, unsigned name_len,
3487		      const char *arg, unsigned arg_len)
3488{
3489  unsigned ix;
3490
3491  for (ix = 0; macro_defs[ix].name; ix++)
3492    if (strlen (macro_defs[ix].name) == name_len
3493        && !memcmp (name, macro_defs[ix].name, name_len))
3494      {
3495        macro_t *expansion = XNEW (macro_t);
3496        char *args;
3497	unsigned argno, last_arg;
3498
3499	expansion->def = &macro_defs[ix];
3500	expansion->next = NULL;
3501	args = (char *) xmemdup (arg, arg_len, arg_len+1);
3502	args[arg_len] = 0;
3503        for (argno = 0; *args;)
3504	  {
3505   	    expansion->args[argno++] = args;
3506	    while (*args && (ISALNUM (*args) || *args == '_'))
3507	      args++;
3508	    if (argno == 1)
3509	      expansion->args[argno++] = "base";
3510	    if (!*args)
3511	      break;
3512	    *args++ = 0;
3513	    while (*args && !(ISALNUM (*args) || *args == '_'))
3514	      args++;
3515          }
3516	last_arg = argno;
3517        for (; argno != 10; argno++)
3518	  expansion->args[argno] = NULL;
3519	if (macro_expns_end)
3520          macro_expns_end->next = expansion;
3521	else
3522	  macro_expns = expansion;
3523	macro_expns_end = expansion;
3524	if (macro_defs[ix].additional)
3525	  {
3526	    macro_t *expn2 = XNEW (macro_t);
3527            memcpy (expn2, expansion, sizeof (*expn2));
3528	    expansion = expn2;
3529	    expansion->def += 1;
3530	    expansion->args[last_arg++] = macro_defs[ix].additional;
3531	    macro_expns_end->next = expansion;
3532	    macro_expns_end = expansion;
3533	  }
3534        if (last_arg > 2 && strcmp (expansion->args[last_arg - 1], "heap"))
3535	  expansion->args[last_arg++] = "GTY (())";
3536	return macro_defs[ix].additional;
3537      }
3538  error_at_line (&lexer_line, "unrecognized macro `%.*s(%.*s)'",
3539		 name_len, name, arg_len, arg);
3540  return NULL;
3541}
3542
3543/* Attempt to read some input.  Use fread until we're at the end of
3544   file.  At end of file expand the next queued macro.  We presume the
3545   buffer is large enough for the entire expansion.  */
3546
3547static unsigned
3548macro_input (char *buffer, unsigned size)
3549{
3550  unsigned result;
3551
3552  result = fread (buffer, 1, size, yyin);
3553  if (result)
3554    /*NOP*/;
3555  else if (ferror (yyin))
3556    YY_FATAL_ERROR ("read of source file failed");
3557  else if (macro_expns)
3558    {
3559      const char *expn;
3560      unsigned len;
3561
3562      for (expn = macro_expns->def->expansion; *expn; expn++)
3563        {
3564	  if (*expn == '#')
3565	    {
3566	      int argno;
3567
3568	      argno = expn[1] - '0';
3569	      expn += 1;
3570
3571	      /* Remove inserted space? */
3572	      if (buffer[result-1] == ' ' && buffer[result-2] == '_')
3573	        result--;
3574
3575	      /* Insert the argument value */
3576	      if (macro_expns->args[argno])
3577	        {
3578		  len = strlen (macro_expns->args[argno]);
3579		  memcpy (&buffer[result], macro_expns->args[argno], len);
3580		  result += len;
3581		}
3582
3583	      /* Skip next space? */
3584	      if (expn[1] == ' ' && expn[2] == '_')
3585	        expn++;
3586	    }
3587	  else
3588	    {
3589	      buffer[result++] = *expn;
3590	      if (*expn == ';' || *expn == '{')
3591	        buffer[result++] = '\n';
3592	    }
3593        }
3594      if (result > size)
3595        YY_FATAL_ERROR ("buffer too small to expand macro");
3596      macro_expns = macro_expns->next;
3597      if (!macro_expns)
3598        macro_expns_end = NULL;
3599    }
3600  return result;
3601}
3602
3603void
3604yyerror (const char *s)
3605{
3606  error_at_line (&lexer_line, s);
3607}
3608
3609void
3610parse_file (const char *fname)
3611{
3612  yyin = fopen (fname, "r");
3613  lexer_line.file = fname;
3614  lexer_line.line = 1;
3615  if (yyin == NULL)
3616    {
3617      perror (fname);
3618      exit (1);
3619    }
3620  if (yyparse() != 0)
3621    exit (1);
3622  fclose (yyin);
3623}
3624