1/* File created from flex.skl via mkskel.sh */
2
3#include "flexdef.h"
4
5const char *skel[] = {
6  "/* A lexical scanner generated by flex */",
7  "",
8  "/* Scanner skeleton version:",
9  " * $Header: /projects/cvsroot/src/router/flex/skel.c,v 1.1.1.1 2001/04/08 23:53:37 mhuang Exp $",
10  " */",
11  "",
12  "#define FLEX_SCANNER",
13  "#define YY_FLEX_MAJOR_VERSION 2",
14  "#define YY_FLEX_MINOR_VERSION 5",
15  "",
16  "%-",
17  "#include <stdio.h>",
18  "%*",
19  "",
20  "",
21  "/* cfront 1.2 defines \"c_plusplus\" instead of \"__cplusplus\" */",
22  "#ifdef c_plusplus",
23  "#ifndef __cplusplus",
24  "#define __cplusplus",
25  "#endif",
26  "#endif",
27  "",
28  "",
29  "#ifdef __cplusplus",
30  "",
31  "#include <stdlib.h>",
32  "%+",
33  "class istream;",
34  "%*",
35  "#include <unistd.h>",
36  "",
37  "/* Use prototypes in function declarations. */",
38  "#define YY_USE_PROTOS",
39  "",
40  "/* The \"const\" storage-class-modifier is valid. */",
41  "#define YY_USE_CONST",
42  "",
43  "#else	/* ! __cplusplus */",
44  "",
45  "#if __STDC__",
46  "",
47  "#define YY_USE_PROTOS",
48  "#define YY_USE_CONST",
49  "",
50  "#endif	/* __STDC__ */",
51  "#endif	/* ! __cplusplus */",
52  "",
53  "#ifdef __TURBOC__",
54  " #pragma warn -rch",
55  " #pragma warn -use",
56  "#include <io.h>",
57  "#include <stdlib.h>",
58  "#define YY_USE_CONST",
59  "#define YY_USE_PROTOS",
60  "#endif",
61  "",
62  "#ifdef YY_USE_CONST",
63  "#define yyconst const",
64  "#else",
65  "#define yyconst",
66  "#endif",
67  "",
68  "",
69  "#ifdef YY_USE_PROTOS",
70  "#define YY_PROTO(proto) proto",
71  "#else",
72  "#define YY_PROTO(proto) ()",
73  "#endif",
74  "",
75  "/* Returned upon end-of-file. */",
76  "#define YY_NULL 0",
77  "",
78  "/* Promotes a possibly negative, possibly signed char to an unsigned",
79  " * integer for use as an array index.  If the signed char is negative,",
80  " * we want to instead treat it as an 8-bit unsigned char, hence the",
81  " * double cast.",
82  " */",
83  "#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)",
84  "",
85  "/* Enter a start condition.  This macro really ought to take a parameter,",
86  " * but we do it the disgusting crufty way forced on us by the ()-less",
87  " * definition of BEGIN.",
88  " */",
89  "#define BEGIN yy_start = 1 + 2 *",
90  "",
91  "/* Translate the current start state into a value that can be later handed",
92  " * to BEGIN to return to the state.  The YYSTATE alias is for lex",
93  " * compatibility.",
94  " */",
95  "#define YY_START ((yy_start - 1) / 2)",
96  "#define YYSTATE YY_START",
97  "",
98  "/* Action number for EOF rule of a given start state. */",
99  "#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)",
100  "",
101  "/* Special action meaning \"start processing a new file\". */",
102  "#define YY_NEW_FILE yyrestart( yyin )",
103  "",
104  "#define YY_END_OF_BUFFER_CHAR 0",
105  "",
106  "/* Size of default input buffer. */",
107  "#define YY_BUF_SIZE 16384",
108  "",
109  "typedef struct yy_buffer_state *YY_BUFFER_STATE;",
110  "",
111  "extern int yyleng;",
112  "%-",
113  "extern FILE *yyin, *yyout;",
114  "%*",
115  "",
116  "#define EOB_ACT_CONTINUE_SCAN 0",
117  "#define EOB_ACT_END_OF_FILE 1",
118  "#define EOB_ACT_LAST_MATCH 2",
119  "",
120  "/* The funky do-while in the following #define is used to turn the definition",
121  " * int a single C statement (which needs a semi-colon terminator).  This",
122  " * avoids problems with code like:",
123  " *",
124  " * 	if ( condition_holds )",
125  " *		yyless( 5 );",
126  " *	else",
127  " *		do_something_else();",
128  " *",
129  " * Prior to using the do-while the compiler would get upset at the",
130  " * \"else\" because it interpreted the \"if\" statement as being all",
131  " * done when it reached the ';' after the yyless() call.",
132  " */",
133  "",
134  "/* Return all but the first 'n' matched characters back to the input stream. */",
135  "",
136  "#define yyless(n) \\",
137  "	do \\",
138  "		{ \\",
139  "		/* Undo effects of setting up yytext. */ \\",
140  "		*yy_cp = yy_hold_char; \\",
141  "		YY_RESTORE_YY_MORE_OFFSET \\",
142  "		yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \\",
143  "		YY_DO_BEFORE_ACTION; /* set up yytext again */ \\",
144  "		} \\",
145  "	while ( 0 )",
146  "",
147  "#define unput(c) yyunput( c, yytext_ptr )",
148  "",
149  "/* The following is because we cannot portably get our hands on size_t",
150  " * (without autoconf's help, which isn't available because we want",
151  " * flex-generated scanners to compile on their own).",
152  " */",
153  "typedef unsigned int yy_size_t;",
154  "",
155  "",
156  "struct yy_buffer_state",
157  "	{",
158  "%-",
159  "	FILE *yy_input_file;",
160  "%+",
161  "	istream* yy_input_file;",
162  "%*",
163  "",
164  "	char *yy_ch_buf;		/* input buffer */",
165  "	char *yy_buf_pos;		/* current position in input buffer */",
166  "",
167  "	/* Size of input buffer in bytes, not including room for EOB",
168  "	 * characters.",
169  "	 */",
170  "	yy_size_t yy_buf_size;",
171  "",
172  "	/* Number of characters read into yy_ch_buf, not including EOB",
173  "	 * characters.",
174  "	 */",
175  "	int yy_n_chars;",
176  "",
177  "	/* Whether we \"own\" the buffer - i.e., we know we created it,",
178  "	 * and can realloc() it to grow it, and should free() it to",
179  "	 * delete it.",
180  "	 */",
181  "	int yy_is_our_buffer;",
182  "",
183  "	/* Whether this is an \"interactive\" input source; if so, and",
184  "	 * if we're using stdio for input, then we want to use getc()",
185  "	 * instead of fread(), to make sure we stop fetching input after",
186  "	 * each newline.",
187  "	 */",
188  "	int yy_is_interactive;",
189  "",
190  "	/* Whether we're considered to be at the beginning of a line.",
191  "	 * If so, '^' rules will be active on the next match, otherwise",
192  "	 * not.",
193  "	 */",
194  "	int yy_at_bol;",
195  "",
196  "	/* Whether to try to fill the input buffer when we reach the",
197  "	 * end of it.",
198  "	 */",
199  "	int yy_fill_buffer;",
200  "",
201  "	int yy_buffer_status;",
202  "#define YY_BUFFER_NEW 0",
203  "#define YY_BUFFER_NORMAL 1",
204  "	/* When an EOF's been seen but there's still some text to process",
205  "	 * then we mark the buffer as YY_EOF_PENDING, to indicate that we",
206  "	 * shouldn't try reading from the input source any more.  We might",
207  "	 * still have a bunch of tokens to match, though, because of",
208  "	 * possible backing-up.",
209  "	 *",
210  "	 * When we actually see the EOF, we change the status to \"new\"",
211  "	 * (via yyrestart()), so that the user can continue scanning by",
212  "	 * just pointing yyin at a new input file.",
213  "	 */",
214  "#define YY_BUFFER_EOF_PENDING 2",
215  "	};",
216  "",
217  "%- Standard (non-C++) definition",
218  "static YY_BUFFER_STATE yy_current_buffer = 0;",
219  "%*",
220  "",
221  "/* We provide macros for accessing buffer states in case in the",
222  " * future we want to put the buffer states in a more general",
223  " * \"scanner state\".",
224  " */",
225  "#define YY_CURRENT_BUFFER yy_current_buffer",
226  "",
227  "",
228  "%- Standard (non-C++) definition",
229  "/* yy_hold_char holds the character lost when yytext is formed. */",
230  "static char yy_hold_char;",
231  "",
232  "static int yy_n_chars;		/* number of characters read into yy_ch_buf */",
233  "",
234  "",
235  "int yyleng;",
236  "",
237  "/* Points to current character in buffer. */",
238  "static char *yy_c_buf_p = (char *) 0;",
239  "static int yy_init = 1;		/* whether we need to initialize */",
240  "static int yy_start = 0;	/* start state number */",
241  "",
242  "/* Flag which is used to allow yywrap()'s to do buffer switches",
243  " * instead of setting up a fresh yyin.  A bit of a hack ...",
244  " */",
245  "static int yy_did_buffer_switch_on_eof;",
246  "",
247  "void yyrestart YY_PROTO(( FILE *input_file ));",
248  "",
249  "void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));",
250  "void yy_load_buffer_state YY_PROTO(( void ));",
251  "YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));",
252  "void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));",
253  "void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));",
254  "void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));",
255  "#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )",
256  "",
257  "YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));",
258  "YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));",
259  "YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));",
260  "%*",
261  "",
262  "static void *yy_flex_alloc YY_PROTO(( yy_size_t ));",
263  "static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));",
264  "static void yy_flex_free YY_PROTO(( void * ));",
265  "",
266  "#define yy_new_buffer yy_create_buffer",
267  "",
268  "#define yy_set_interactive(is_interactive) \\",
269  "	{ \\",
270  "	if ( ! yy_current_buffer ) \\",
271  "		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \\",
272  "	yy_current_buffer->yy_is_interactive = is_interactive; \\",
273  "	}",
274  "",
275  "#define yy_set_bol(at_bol) \\",
276  "	{ \\",
277  "	if ( ! yy_current_buffer ) \\",
278  "		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \\",
279  "	yy_current_buffer->yy_at_bol = at_bol; \\",
280  "	}",
281  "",
282  "#define YY_AT_BOL() (yy_current_buffer->yy_at_bol)",
283  "",
284  "%% yytext/yyin/yyout/yy_state_type/yylineno etc. def's & init go here",
285  "",
286  "%- Standard (non-C++) definition",
287  "static yy_state_type yy_get_previous_state YY_PROTO(( void ));",
288  "static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));",
289  "static int yy_get_next_buffer YY_PROTO(( void ));",
290  "static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));",
291  "%*",
292  "",
293  "/* Done after the current pattern has been matched and before the",
294  " * corresponding action - sets up yytext.",
295  " */",
296  "#define YY_DO_BEFORE_ACTION \\",
297  "	yytext_ptr = yy_bp; \\",
298  "%% code to fiddle yytext and yyleng for yymore() goes here",
299  "	yy_hold_char = *yy_cp; \\",
300  "	*yy_cp = '\\0'; \\",
301  "%% code to copy yytext_ptr to yytext[] goes here, if %array",
302  "	yy_c_buf_p = yy_cp;",
303  "",
304  "%% data tables for the DFA and the user's section 1 definitions go here",
305  "",
306  "/* Macros after this point can all be overridden by user definitions in",
307  " * section 1.",
308  " */",
309  "",
310  "#ifndef YY_SKIP_YYWRAP",
311  "#ifdef __cplusplus",
312  "extern \"C\" int yywrap YY_PROTO(( void ));",
313  "#else",
314  "extern int yywrap YY_PROTO(( void ));",
315  "#endif",
316  "#endif",
317  "",
318  "%-",
319  "#ifndef YY_NO_UNPUT",
320  "static void yyunput YY_PROTO(( int c, char *buf_ptr ));",
321  "#endif",
322  "%*",
323  "",
324  "#ifndef yytext_ptr",
325  "static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));",
326  "#endif",
327  "",
328  "#ifdef YY_NEED_STRLEN",
329  "static int yy_flex_strlen YY_PROTO(( yyconst char * ));",
330  "#endif",
331  "",
332  "#ifndef YY_NO_INPUT",
333  "%- Standard (non-C++) definition",
334  "#ifdef __cplusplus",
335  "static int yyinput YY_PROTO(( void ));",
336  "#else",
337  "static int input YY_PROTO(( void ));",
338  "#endif",
339  "%*",
340  "#endif",
341  "",
342  "#if YY_STACK_USED",
343  "static int yy_start_stack_ptr = 0;",
344  "static int yy_start_stack_depth = 0;",
345  "static int *yy_start_stack = 0;",
346  "#ifndef YY_NO_PUSH_STATE",
347  "static void yy_push_state YY_PROTO(( int new_state ));",
348  "#endif",
349  "#ifndef YY_NO_POP_STATE",
350  "static void yy_pop_state YY_PROTO(( void ));",
351  "#endif",
352  "#ifndef YY_NO_TOP_STATE",
353  "static int yy_top_state YY_PROTO(( void ));",
354  "#endif",
355  "",
356  "#else",
357  "#define YY_NO_PUSH_STATE 1",
358  "#define YY_NO_POP_STATE 1",
359  "#define YY_NO_TOP_STATE 1",
360  "#endif",
361  "",
362  "#ifdef YY_MALLOC_DECL",
363  "YY_MALLOC_DECL",
364  "#else",
365  "#if __STDC__",
366  "#ifndef __cplusplus",
367  "#include <stdlib.h>",
368  "#endif",
369  "#else",
370  "/* Just try to get by without declaring the routines.  This will fail",
371  " * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)",
372  " * or sizeof(void*) != sizeof(int).",
373  " */",
374  "#endif",
375  "#endif",
376  "",
377  "/* Amount of stuff to slurp up with each read. */",
378  "#ifndef YY_READ_BUF_SIZE",
379  "#define YY_READ_BUF_SIZE 8192",
380  "#endif",
381  "",
382  "/* Copy whatever the last rule matched to the standard output. */",
383  "",
384  "#ifndef ECHO",
385  "%- Standard (non-C++) definition",
386  "/* This used to be an fputs(), but since the string might contain NUL's,",
387  " * we now use fwrite().",
388  " */",
389  "#define ECHO (void) fwrite( yytext, yyleng, 1, yyout )",
390  "%+ C++ definition",
391  "#define ECHO LexerOutput( yytext, yyleng )",
392  "%*",
393  "#endif",
394  "",
395  "/* Gets input and stuffs it into \"buf\".  number of characters read, or YY_NULL,",
396  " * is returned in \"result\".",
397  " */",
398  "#ifndef YY_INPUT",
399  "#define YY_INPUT(buf,result,max_size) \\",
400  "%% fread()/read() definition of YY_INPUT goes here unless we're doing C++",
401  "%+ C++ definition",
402  "	if ( (result = LexerInput( (char *) buf, max_size )) < 0 ) \\",
403  "		YY_FATAL_ERROR( \"input in flex scanner failed\" );",
404  "%*",
405  "#endif",
406  "",
407  "/* No semi-colon after return; correct usage is to write \"yyterminate();\" -",
408  " * we don't want an extra ';' after the \"return\" because that will cause",
409  " * some compilers to complain about unreachable statements.",
410  " */",
411  "#ifndef yyterminate",
412  "#define yyterminate() return YY_NULL",
413  "#endif",
414  "",
415  "/* Number of entries by which start-condition stack grows. */",
416  "#ifndef YY_START_STACK_INCR",
417  "#define YY_START_STACK_INCR 25",
418  "#endif",
419  "",
420  "/* Report a fatal error. */",
421  "#ifndef YY_FATAL_ERROR",
422  "%-",
423  "#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )",
424  "%+",
425  "#define YY_FATAL_ERROR(msg) LexerError( msg )",
426  "%*",
427  "#endif",
428  "",
429  "/* Default declaration of generated scanner - a define so the user can",
430  " * easily add parameters.",
431  " */",
432  "#ifndef YY_DECL",
433  "%- Standard (non-C++) definition",
434  "#define YY_DECL int yylex YY_PROTO(( void ))",
435  "%+ C++ definition",
436  "#define YY_DECL int yyFlexLexer::yylex()",
437  "%*",
438  "#endif",
439  "",
440  "/* Code executed at the beginning of each rule, after yytext and yyleng",
441  " * have been set up.",
442  " */",
443  "#ifndef YY_USER_ACTION",
444  "#define YY_USER_ACTION",
445  "#endif",
446  "",
447  "/* Code executed at the end of each rule. */",
448  "#ifndef YY_BREAK",
449  "#define YY_BREAK break;",
450  "#endif",
451  "",
452  "%% YY_RULE_SETUP definition goes here",
453  "",
454  "YY_DECL",
455  "	{",
456  "	register yy_state_type yy_current_state;",
457  "	register char *yy_cp, *yy_bp;",
458  "	register int yy_act;",
459  "",
460  "%% user's declarations go here",
461  "",
462  "	if ( yy_init )",
463  "		{",
464  "		yy_init = 0;",
465  "",
466  "#ifdef YY_USER_INIT",
467  "		YY_USER_INIT;",
468  "#endif",
469  "",
470  "		if ( ! yy_start )",
471  "			yy_start = 1;	/* first start state */",
472  "",
473  "		if ( ! yyin )",
474  "%-",
475  "			yyin = stdin;",
476  "%+",
477  "			yyin = &cin;",
478  "%*",
479  "",
480  "		if ( ! yyout )",
481  "%-",
482  "			yyout = stdout;",
483  "%+",
484  "			yyout = &cout;",
485  "%*",
486  "",
487  "		if ( ! yy_current_buffer )",
488  "			yy_current_buffer =",
489  "				yy_create_buffer( yyin, YY_BUF_SIZE );",
490  "",
491  "		yy_load_buffer_state();",
492  "		}",
493  "",
494  "	while ( 1 )		/* loops until end-of-file is reached */",
495  "		{",
496  "%% yymore()-related code goes here",
497  "		yy_cp = yy_c_buf_p;",
498  "",
499  "		/* Support of yytext. */",
500  "		*yy_cp = yy_hold_char;",
501  "",
502  "		/* yy_bp points to the position in yy_ch_buf of the start of",
503  "		 * the current run.",
504  "		 */",
505  "		yy_bp = yy_cp;",
506  "",
507  "%% code to set up and find next match goes here",
508  "",
509  "yy_find_action:",
510  "%% code to find the action number goes here",
511  "",
512  "		YY_DO_BEFORE_ACTION;",
513  "",
514  "%% code for yylineno update goes here",
515  "",
516  "do_action:	/* This label is used only to access EOF actions. */",
517  "",
518  "%% debug code goes here",
519  "",
520  "		switch ( yy_act )",
521  "	{ /* beginning of action switch */",
522  "%% actions go here",
523  "",
524  "	case YY_END_OF_BUFFER:",
525  "		{",
526  "		/* Amount of text matched not including the EOB char. */",
527  "		int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;",
528  "",
529  "		/* Undo the effects of YY_DO_BEFORE_ACTION. */",
530  "		*yy_cp = yy_hold_char;",
531  "		YY_RESTORE_YY_MORE_OFFSET",
532  "",
533  "		if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )",
534  "			{",
535  "			/* We're scanning a new file or input source.  It's",
536  "			 * possible that this happened because the user",
537  "			 * just pointed yyin at a new source and called",
538  "			 * yylex().  If so, then we have to assure",
539  "			 * consistency between yy_current_buffer and our",
540  "			 * globals.  Here is the right place to do so, because",
541  "			 * this is the first action (other than possibly a",
542  "			 * back-up) that will match for the new input source.",
543  "			 */",
544  "			yy_n_chars = yy_current_buffer->yy_n_chars;",
545  "			yy_current_buffer->yy_input_file = yyin;",
546  "			yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;",
547  "			}",
548  "",
549  "		/* Note that here we test for yy_c_buf_p \"<=\" to the position",
550  "		 * of the first EOB in the buffer, since yy_c_buf_p will",
551  "		 * already have been incremented past the NUL character",
552  "		 * (since all states make transitions on EOB to the",
553  "		 * end-of-buffer state).  Contrast this with the test",
554  "		 * in input().",
555  "		 */",
556  "		if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )",
557  "			{ /* This was really a NUL. */",
558  "			yy_state_type yy_next_state;",
559  "",
560  "			yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;",
561  "",
562  "			yy_current_state = yy_get_previous_state();",
563  "",
564  "			/* Okay, we're now positioned to make the NUL",
565  "			 * transition.  We couldn't have",
566  "			 * yy_get_previous_state() go ahead and do it",
567  "			 * for us because it doesn't know how to deal",
568  "			 * with the possibility of jamming (and we don't",
569  "			 * want to build jamming into it because then it",
570  "			 * will run more slowly).",
571  "			 */",
572  "",
573  "			yy_next_state = yy_try_NUL_trans( yy_current_state );",
574  "",
575  "			yy_bp = yytext_ptr + YY_MORE_ADJ;",
576  "",
577  "			if ( yy_next_state )",
578  "				{",
579  "				/* Consume the NUL. */",
580  "				yy_cp = ++yy_c_buf_p;",
581  "				yy_current_state = yy_next_state;",
582  "				goto yy_match;",
583  "				}",
584  "",
585  "			else",
586  "				{",
587  "%% code to do back-up for compressed tables and set up yy_cp goes here",
588  "				goto yy_find_action;",
589  "				}",
590  "			}",
591  "",
592  "		else switch ( yy_get_next_buffer() )",
593  "			{",
594  "			case EOB_ACT_END_OF_FILE:",
595  "				{",
596  "				yy_did_buffer_switch_on_eof = 0;",
597  "",
598  "				if ( yywrap() )",
599  "					{",
600  "					/* Note: because we've taken care in",
601  "					 * yy_get_next_buffer() to have set up",
602  "					 * yytext, we can now set up",
603  "					 * yy_c_buf_p so that if some total",
604  "					 * hoser (like flex itself) wants to",
605  "					 * call the scanner after we return the",
606  "					 * YY_NULL, it'll still work - another",
607  "					 * YY_NULL will get returned.",
608  "					 */",
609  "					yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;",
610  "",
611  "					yy_act = YY_STATE_EOF(YY_START);",
612  "					goto do_action;",
613  "					}",
614  "",
615  "				else",
616  "					{",
617  "					if ( ! yy_did_buffer_switch_on_eof )",
618  "						YY_NEW_FILE;",
619  "					}",
620  "				break;",
621  "				}",
622  "",
623  "			case EOB_ACT_CONTINUE_SCAN:",
624  "				yy_c_buf_p =",
625  "					yytext_ptr + yy_amount_of_matched_text;",
626  "",
627  "				yy_current_state = yy_get_previous_state();",
628  "",
629  "				yy_cp = yy_c_buf_p;",
630  "				yy_bp = yytext_ptr + YY_MORE_ADJ;",
631  "				goto yy_match;",
632  "",
633  "			case EOB_ACT_LAST_MATCH:",
634  "				yy_c_buf_p =",
635  "				&yy_current_buffer->yy_ch_buf[yy_n_chars];",
636  "",
637  "				yy_current_state = yy_get_previous_state();",
638  "",
639  "				yy_cp = yy_c_buf_p;",
640  "				yy_bp = yytext_ptr + YY_MORE_ADJ;",
641  "				goto yy_find_action;",
642  "			}",
643  "		break;",
644  "		}",
645  "",
646  "	default:",
647  "		YY_FATAL_ERROR(",
648  "			\"fatal flex scanner internal error--no action found\" );",
649  "	} /* end of action switch */",
650  "		} /* end of scanning one token */",
651  "	} /* end of yylex */",
652  "",
653  "%+",
654  "yyFlexLexer::yyFlexLexer( istream* arg_yyin, ostream* arg_yyout )",
655  "	{",
656  "	yyin = arg_yyin;",
657  "	yyout = arg_yyout;",
658  "	yy_c_buf_p = 0;",
659  "	yy_init = 1;",
660  "	yy_start = 0;",
661  "	yy_flex_debug = 0;",
662  "	yylineno = 1;	// this will only get updated if %option yylineno",
663  "",
664  "	yy_did_buffer_switch_on_eof = 0;",
665  "",
666  "	yy_looking_for_trail_begin = 0;",
667  "	yy_more_flag = 0;",
668  "	yy_more_len = 0;",
669  "	yy_more_offset = yy_prev_more_offset = 0;",
670  "",
671  "	yy_start_stack_ptr = yy_start_stack_depth = 0;",
672  "	yy_start_stack = 0;",
673  "",
674  "	yy_current_buffer = 0;",
675  "",
676  "#ifdef YY_USES_REJECT",
677  "	yy_state_buf = new yy_state_type[YY_BUF_SIZE + 2];",
678  "#else",
679  "	yy_state_buf = 0;",
680  "#endif",
681  "	}",
682  "",
683  "yyFlexLexer::~yyFlexLexer()",
684  "	{",
685  "	delete yy_state_buf;",
686  "	yy_delete_buffer( yy_current_buffer );",
687  "	}",
688  "",
689  "void yyFlexLexer::switch_streams( istream* new_in, ostream* new_out )",
690  "	{",
691  "	if ( new_in )",
692  "		{",
693  "		yy_delete_buffer( yy_current_buffer );",
694  "		yy_switch_to_buffer( yy_create_buffer( new_in, YY_BUF_SIZE ) );",
695  "		}",
696  "",
697  "	if ( new_out )",
698  "		yyout = new_out;",
699  "	}",
700  "",
701  "#ifdef YY_INTERACTIVE",
702  "int yyFlexLexer::LexerInput( char* buf, int /* max_size */ )",
703  "#else",
704  "int yyFlexLexer::LexerInput( char* buf, int max_size )",
705  "#endif",
706  "	{",
707  "	if ( yyin->eof() || yyin->fail() )",
708  "		return 0;",
709  "",
710  "#ifdef YY_INTERACTIVE",
711  "	yyin->get( buf[0] );",
712  "",
713  "	if ( yyin->eof() )",
714  "		return 0;",
715  "",
716  "	if ( yyin->bad() )",
717  "		return -1;",
718  "",
719  "	return 1;",
720  "",
721  "#else",
722  "	(void) yyin->read( buf, max_size );",
723  "",
724  "	if ( yyin->bad() )",
725  "		return -1;",
726  "	else",
727  "		return yyin->gcount();",
728  "#endif",
729  "	}",
730  "",
731  "void yyFlexLexer::LexerOutput( const char* buf, int size )",
732  "	{",
733  "	(void) yyout->write( buf, size );",
734  "	}",
735  "%*",
736  "",
737  "/* yy_get_next_buffer - try to read in a new buffer",
738  " *",
739  " * Returns a code representing an action:",
740  " *	EOB_ACT_LAST_MATCH -",
741  " *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position",
742  " *	EOB_ACT_END_OF_FILE - end of file",
743  " */",
744  "",
745  "%-",
746  "static int yy_get_next_buffer()",
747  "%+",
748  "int yyFlexLexer::yy_get_next_buffer()",
749  "%*",
750  "	{",
751  "	register char *dest = yy_current_buffer->yy_ch_buf;",
752  "	register char *source = yytext_ptr;",
753  "	register int number_to_move, i;",
754  "	int ret_val;",
755  "",
756  "	if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )",
757  "		YY_FATAL_ERROR(",
758  "		\"fatal flex scanner internal error--end of buffer missed\" );",
759  "",
760  "	if ( yy_current_buffer->yy_fill_buffer == 0 )",
761  "		{ /* Don't try to fill the buffer, so this is an EOF. */",
762  "		if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )",
763  "			{",
764  "			/* We matched a single character, the EOB, so",
765  "			 * treat this as a final EOF.",
766  "			 */",
767  "			return EOB_ACT_END_OF_FILE;",
768  "			}",
769  "",
770  "		else",
771  "			{",
772  "			/* We matched some text prior to the EOB, first",
773  "			 * process it.",
774  "			 */",
775  "			return EOB_ACT_LAST_MATCH;",
776  "			}",
777  "		}",
778  "",
779  "	/* Try to read more data. */",
780  "",
781  "	/* First move last chars to start of buffer. */",
782  "	number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;",
783  "",
784  "	for ( i = 0; i < number_to_move; ++i )",
785  "		*(dest++) = *(source++);",
786  "",
787  "	if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )",
788  "		/* don't do the read, it's not guaranteed to return an EOF,",
789  "		 * just force an EOF",
790  "		 */",
791  "		yy_current_buffer->yy_n_chars = yy_n_chars = 0;",
792  "",
793  "	else",
794  "		{",
795  "		int num_to_read =",
796  "			yy_current_buffer->yy_buf_size - number_to_move - 1;",
797  "",
798  "		while ( num_to_read <= 0 )",
799  "			{ /* Not enough room in the buffer - grow it. */",
800  "#ifdef YY_USES_REJECT",
801  "			YY_FATAL_ERROR(",
802  "\"input buffer overflow, can't enlarge buffer because scanner uses REJECT\" );",
803  "#else",
804  "",
805  "			/* just a shorter name for the current buffer */",
806  "			YY_BUFFER_STATE b = yy_current_buffer;",
807  "",
808  "			int yy_c_buf_p_offset =",
809  "				(int) (yy_c_buf_p - b->yy_ch_buf);",
810  "",
811  "			if ( b->yy_is_our_buffer )",
812  "				{",
813  "				int new_size = b->yy_buf_size * 2;",
814  "",
815  "				if ( new_size <= 0 )",
816  "					b->yy_buf_size += b->yy_buf_size / 8;",
817  "				else",
818  "					b->yy_buf_size *= 2;",
819  "",
820  "				b->yy_ch_buf = (char *)",
821  "					/* Include room in for 2 EOB chars. */",
822  "					yy_flex_realloc( (void *) b->yy_ch_buf,",
823  "							 b->yy_buf_size + 2 );",
824  "				}",
825  "			else",
826  "				/* Can't grow it, we don't own it. */",
827  "				b->yy_ch_buf = 0;",
828  "",
829  "			if ( ! b->yy_ch_buf )",
830  "				YY_FATAL_ERROR(",
831  "				\"fatal error - scanner input buffer overflow\" );",
832  "",
833  "			yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];",
834  "",
835  "			num_to_read = yy_current_buffer->yy_buf_size -",
836  "						number_to_move - 1;",
837  "#endif",
838  "			}",
839  "",
840  "		if ( num_to_read > YY_READ_BUF_SIZE )",
841  "			num_to_read = YY_READ_BUF_SIZE;",
842  "",
843  "		/* Read in more data. */",
844  "		YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),",
845  "			yy_n_chars, num_to_read );",
846  "",
847  "		yy_current_buffer->yy_n_chars = yy_n_chars;",
848  "		}",
849  "",
850  "	if ( yy_n_chars == 0 )",
851  "		{",
852  "		if ( number_to_move == YY_MORE_ADJ )",
853  "			{",
854  "			ret_val = EOB_ACT_END_OF_FILE;",
855  "			yyrestart( yyin );",
856  "			}",
857  "",
858  "		else",
859  "			{",
860  "			ret_val = EOB_ACT_LAST_MATCH;",
861  "			yy_current_buffer->yy_buffer_status =",
862  "				YY_BUFFER_EOF_PENDING;",
863  "			}",
864  "		}",
865  "",
866  "	else",
867  "		ret_val = EOB_ACT_CONTINUE_SCAN;",
868  "",
869  "	yy_n_chars += number_to_move;",
870  "	yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;",
871  "	yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;",
872  "",
873  "	yytext_ptr = &yy_current_buffer->yy_ch_buf[0];",
874  "",
875  "	return ret_val;",
876  "	}",
877  "",
878  "",
879  "/* yy_get_previous_state - get the state just before the EOB char was reached */",
880  "",
881  "%-",
882  "static yy_state_type yy_get_previous_state()",
883  "%+",
884  "yy_state_type yyFlexLexer::yy_get_previous_state()",
885  "%*",
886  "	{",
887  "	register yy_state_type yy_current_state;",
888  "	register char *yy_cp;",
889  "",
890  "%% code to get the start state into yy_current_state goes here",
891  "",
892  "	for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )",
893  "		{",
894  "%% code to find the next state goes here",
895  "		}",
896  "",
897  "	return yy_current_state;",
898  "	}",
899  "",
900  "",
901  "/* yy_try_NUL_trans - try to make a transition on the NUL character",
902  " *",
903  " * synopsis",
904  " *	next_state = yy_try_NUL_trans( current_state );",
905  " */",
906  "",
907  "%-",
908  "#ifdef YY_USE_PROTOS",
909  "static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )",
910  "#else",
911  "static yy_state_type yy_try_NUL_trans( yy_current_state )",
912  "yy_state_type yy_current_state;",
913  "#endif",
914  "%+",
915  "yy_state_type yyFlexLexer::yy_try_NUL_trans( yy_state_type yy_current_state )",
916  "%*",
917  "	{",
918  "	register int yy_is_jam;",
919  "%% code to find the next state, and perhaps do backing up, goes here",
920  "",
921  "	return yy_is_jam ? 0 : yy_current_state;",
922  "	}",
923  "",
924  "",
925  "%-",
926  "#ifndef YY_NO_UNPUT",
927  "#ifdef YY_USE_PROTOS",
928  "static void yyunput( int c, register char *yy_bp )",
929  "#else",
930  "static void yyunput( c, yy_bp )",
931  "int c;",
932  "register char *yy_bp;",
933  "#endif",
934  "%+",
935  "void yyFlexLexer::yyunput( int c, register char* yy_bp )",
936  "%*",
937  "	{",
938  "	register char *yy_cp = yy_c_buf_p;",
939  "",
940  "	/* undo effects of setting up yytext */",
941  "	*yy_cp = yy_hold_char;",
942  "",
943  "	if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )",
944  "		{ /* need to shift things up to make room */",
945  "		/* +2 for EOB chars. */",
946  "		register int number_to_move = yy_n_chars + 2;",
947  "		register char *dest = &yy_current_buffer->yy_ch_buf[",
948  "					yy_current_buffer->yy_buf_size + 2];",
949  "		register char *source =",
950  "				&yy_current_buffer->yy_ch_buf[number_to_move];",
951  "",
952  "		while ( source > yy_current_buffer->yy_ch_buf )",
953  "			*--dest = *--source;",
954  "",
955  "		yy_cp += (int) (dest - source);",
956  "		yy_bp += (int) (dest - source);",
957  "		yy_current_buffer->yy_n_chars =",
958  "			yy_n_chars = yy_current_buffer->yy_buf_size;",
959  "",
960  "		if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )",
961  "			YY_FATAL_ERROR( \"flex scanner push-back overflow\" );",
962  "		}",
963  "",
964  "	*--yy_cp = (char) c;",
965  "",
966  "%% update yylineno here",
967  "",
968  "	yytext_ptr = yy_bp;",
969  "	yy_hold_char = *yy_cp;",
970  "	yy_c_buf_p = yy_cp;",
971  "	}",
972  "%-",
973  "#endif	/* ifndef YY_NO_UNPUT */",
974  "%*",
975  "",
976  "",
977  "%-",
978  "#ifdef __cplusplus",
979  "static int yyinput()",
980  "#else",
981  "static int input()",
982  "#endif",
983  "%+",
984  "int yyFlexLexer::yyinput()",
985  "%*",
986  "	{",
987  "	int c;",
988  "",
989  "	*yy_c_buf_p = yy_hold_char;",
990  "",
991  "	if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )",
992  "		{",
993  "		/* yy_c_buf_p now points to the character we want to return.",
994  "		 * If this occurs *before* the EOB characters, then it's a",
995  "		 * valid NUL; if not, then we've hit the end of the buffer.",
996  "		 */",
997  "		if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )",
998  "			/* This was really a NUL. */",
999  "			*yy_c_buf_p = '\\0';",
1000  "",
1001  "		else",
1002  "			{ /* need more input */",
1003  "			int offset = yy_c_buf_p - yytext_ptr;",
1004  "			++yy_c_buf_p;",
1005  "",
1006  "			switch ( yy_get_next_buffer() )",
1007  "				{",
1008  "				case EOB_ACT_LAST_MATCH:",
1009  "					/* This happens because yy_g_n_b()",
1010  "					 * sees that we've accumulated a",
1011  "					 * token and flags that we need to",
1012  "					 * try matching the token before",
1013  "					 * proceeding.  But for input(),",
1014  "					 * there's no matching to consider.",
1015  "					 * So convert the EOB_ACT_LAST_MATCH",
1016  "					 * to EOB_ACT_END_OF_FILE.",
1017  "					 */",
1018  "",
1019  "					/* Reset buffer status. */",
1020  "					yyrestart( yyin );",
1021  "",
1022  "					/* fall through */",
1023  "",
1024  "				case EOB_ACT_END_OF_FILE:",
1025  "					{",
1026  "					if ( yywrap() )",
1027  "						return EOF;",
1028  "",
1029  "					if ( ! yy_did_buffer_switch_on_eof )",
1030  "						YY_NEW_FILE;",
1031  "#ifdef __cplusplus",
1032  "					return yyinput();",
1033  "#else",
1034  "					return input();",
1035  "#endif",
1036  "					}",
1037  "",
1038  "				case EOB_ACT_CONTINUE_SCAN:",
1039  "					yy_c_buf_p = yytext_ptr + offset;",
1040  "					break;",
1041  "				}",
1042  "			}",
1043  "		}",
1044  "",
1045  "	c = *(unsigned char *) yy_c_buf_p;	/* cast for 8-bit char's */",
1046  "	*yy_c_buf_p = '\\0';	/* preserve yytext */",
1047  "	yy_hold_char = *++yy_c_buf_p;",
1048  "",
1049  "%% update BOL and yylineno",
1050  "",
1051  "	return c;",
1052  "	}",
1053  "",
1054  "",
1055  "%-",
1056  "#ifdef YY_USE_PROTOS",
1057  "void yyrestart( FILE *input_file )",
1058  "#else",
1059  "void yyrestart( input_file )",
1060  "FILE *input_file;",
1061  "#endif",
1062  "%+",
1063  "void yyFlexLexer::yyrestart( istream* input_file )",
1064  "%*",
1065  "	{",
1066  "	if ( ! yy_current_buffer )",
1067  "		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );",
1068  "",
1069  "	yy_init_buffer( yy_current_buffer, input_file );",
1070  "	yy_load_buffer_state();",
1071  "	}",
1072  "",
1073  "",
1074  "%-",
1075  "#ifdef YY_USE_PROTOS",
1076  "void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )",
1077  "#else",
1078  "void yy_switch_to_buffer( new_buffer )",
1079  "YY_BUFFER_STATE new_buffer;",
1080  "#endif",
1081  "%+",
1082  "void yyFlexLexer::yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )",
1083  "%*",
1084  "	{",
1085  "	if ( yy_current_buffer == new_buffer )",
1086  "		return;",
1087  "",
1088  "	if ( yy_current_buffer )",
1089  "		{",
1090  "		/* Flush out information for old buffer. */",
1091  "		*yy_c_buf_p = yy_hold_char;",
1092  "		yy_current_buffer->yy_buf_pos = yy_c_buf_p;",
1093  "		yy_current_buffer->yy_n_chars = yy_n_chars;",
1094  "		}",
1095  "",
1096  "	yy_current_buffer = new_buffer;",
1097  "	yy_load_buffer_state();",
1098  "",
1099  "	/* We don't actually know whether we did this switch during",
1100  "	 * EOF (yywrap()) processing, but the only time this flag",
1101  "	 * is looked at is after yywrap() is called, so it's safe",
1102  "	 * to go ahead and always set it.",
1103  "	 */",
1104  "	yy_did_buffer_switch_on_eof = 1;",
1105  "	}",
1106  "",
1107  "",
1108  "%-",
1109  "#ifdef YY_USE_PROTOS",
1110  "void yy_load_buffer_state( void )",
1111  "#else",
1112  "void yy_load_buffer_state()",
1113  "#endif",
1114  "%+",
1115  "void yyFlexLexer::yy_load_buffer_state()",
1116  "%*",
1117  "	{",
1118  "	yy_n_chars = yy_current_buffer->yy_n_chars;",
1119  "	yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;",
1120  "	yyin = yy_current_buffer->yy_input_file;",
1121  "	yy_hold_char = *yy_c_buf_p;",
1122  "	}",
1123  "",
1124  "",
1125  "%-",
1126  "#ifdef YY_USE_PROTOS",
1127  "YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )",
1128  "#else",
1129  "YY_BUFFER_STATE yy_create_buffer( file, size )",
1130  "FILE *file;",
1131  "int size;",
1132  "#endif",
1133  "%+",
1134  "YY_BUFFER_STATE yyFlexLexer::yy_create_buffer( istream* file, int size )",
1135  "%*",
1136  "	{",
1137  "	YY_BUFFER_STATE b;",
1138  "",
1139  "	b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );",
1140  "	if ( ! b )",
1141  "		YY_FATAL_ERROR( \"out of dynamic memory in yy_create_buffer()\" );",
1142  "",
1143  "	b->yy_buf_size = size;",
1144  "",
1145  "	/* yy_ch_buf has to be 2 characters longer than the size given because",
1146  "	 * we need to put in 2 end-of-buffer characters.",
1147  "	 */",
1148  "	b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );",
1149  "	if ( ! b->yy_ch_buf )",
1150  "		YY_FATAL_ERROR( \"out of dynamic memory in yy_create_buffer()\" );",
1151  "",
1152  "	b->yy_is_our_buffer = 1;",
1153  "",
1154  "	yy_init_buffer( b, file );",
1155  "",
1156  "	return b;",
1157  "	}",
1158  "",
1159  "",
1160  "%-",
1161  "#ifdef YY_USE_PROTOS",
1162  "void yy_delete_buffer( YY_BUFFER_STATE b )",
1163  "#else",
1164  "void yy_delete_buffer( b )",
1165  "YY_BUFFER_STATE b;",
1166  "#endif",
1167  "%+",
1168  "void yyFlexLexer::yy_delete_buffer( YY_BUFFER_STATE b )",
1169  "%*",
1170  "	{",
1171  "	if ( ! b )",
1172  "		return;",
1173  "",
1174  "	if ( b == yy_current_buffer )",
1175  "		yy_current_buffer = (YY_BUFFER_STATE) 0;",
1176  "",
1177  "	if ( b->yy_is_our_buffer )",
1178  "		yy_flex_free( (void *) b->yy_ch_buf );",
1179  "",
1180  "	yy_flex_free( (void *) b );",
1181  "	}",
1182  "",
1183  "",
1184  "%-",
1185  "#ifndef YY_ALWAYS_INTERACTIVE",
1186  "#ifndef YY_NEVER_INTERACTIVE",
1187  "extern int isatty YY_PROTO(( int ));",
1188  "#endif",
1189  "#endif",
1190  "",
1191  "#ifdef YY_USE_PROTOS",
1192  "void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )",
1193  "#else",
1194  "void yy_init_buffer( b, file )",
1195  "YY_BUFFER_STATE b;",
1196  "FILE *file;",
1197  "#endif",
1198  "",
1199  "%+",
1200  "extern \"C\" int isatty YY_PROTO(( int ));",
1201  "void yyFlexLexer::yy_init_buffer( YY_BUFFER_STATE b, istream* file )",
1202  "%*",
1203  "",
1204  "	{",
1205  "	yy_flush_buffer( b );",
1206  "",
1207  "	b->yy_input_file = file;",
1208  "	b->yy_fill_buffer = 1;",
1209  "",
1210  "%-",
1211  "#if YY_ALWAYS_INTERACTIVE",
1212  "	b->yy_is_interactive = 1;",
1213  "#else",
1214  "#if YY_NEVER_INTERACTIVE",
1215  "	b->yy_is_interactive = 0;",
1216  "#else",
1217  "	b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;",
1218  "#endif",
1219  "#endif",
1220  "%+",
1221  "	b->yy_is_interactive = 0;",
1222  "%*",
1223  "	}",
1224  "",
1225  "",
1226  "%-",
1227  "#ifdef YY_USE_PROTOS",
1228  "void yy_flush_buffer( YY_BUFFER_STATE b )",
1229  "#else",
1230  "void yy_flush_buffer( b )",
1231  "YY_BUFFER_STATE b;",
1232  "#endif",
1233  "",
1234  "%+",
1235  "void yyFlexLexer::yy_flush_buffer( YY_BUFFER_STATE b )",
1236  "%*",
1237  "	{",
1238  "	if ( ! b )",
1239  "		return;",
1240  "",
1241  "	b->yy_n_chars = 0;",
1242  "",
1243  "	/* We always need two end-of-buffer characters.  The first causes",
1244  "	 * a transition to the end-of-buffer state.  The second causes",
1245  "	 * a jam in that state.",
1246  "	 */",
1247  "	b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;",
1248  "	b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;",
1249  "",
1250  "	b->yy_buf_pos = &b->yy_ch_buf[0];",
1251  "",
1252  "	b->yy_at_bol = 1;",
1253  "	b->yy_buffer_status = YY_BUFFER_NEW;",
1254  "",
1255  "	if ( b == yy_current_buffer )",
1256  "		yy_load_buffer_state();",
1257  "	}",
1258  "%*",
1259  "",
1260  "",
1261  "#ifndef YY_NO_SCAN_BUFFER",
1262  "%-",
1263  "#ifdef YY_USE_PROTOS",
1264  "YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )",
1265  "#else",
1266  "YY_BUFFER_STATE yy_scan_buffer( base, size )",
1267  "char *base;",
1268  "yy_size_t size;",
1269  "#endif",
1270  "	{",
1271  "	YY_BUFFER_STATE b;",
1272  "",
1273  "	if ( size < 2 ||",
1274  "	     base[size-2] != YY_END_OF_BUFFER_CHAR ||",
1275  "	     base[size-1] != YY_END_OF_BUFFER_CHAR )",
1276  "		/* They forgot to leave room for the EOB's. */",
1277  "		return 0;",
1278  "",
1279  "	b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );",
1280  "	if ( ! b )",
1281  "		YY_FATAL_ERROR( \"out of dynamic memory in yy_scan_buffer()\" );",
1282  "",
1283  "	b->yy_buf_size = size - 2;	/* \"- 2\" to take care of EOB's */",
1284  "	b->yy_buf_pos = b->yy_ch_buf = base;",
1285  "	b->yy_is_our_buffer = 0;",
1286  "	b->yy_input_file = 0;",
1287  "	b->yy_n_chars = b->yy_buf_size;",
1288  "	b->yy_is_interactive = 0;",
1289  "	b->yy_at_bol = 1;",
1290  "	b->yy_fill_buffer = 0;",
1291  "	b->yy_buffer_status = YY_BUFFER_NEW;",
1292  "",
1293  "	yy_switch_to_buffer( b );",
1294  "",
1295  "	return b;",
1296  "	}",
1297  "%*",
1298  "#endif",
1299  "",
1300  "",
1301  "#ifndef YY_NO_SCAN_STRING",
1302  "%-",
1303  "#ifdef YY_USE_PROTOS",
1304  "YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )",
1305  "#else",
1306  "YY_BUFFER_STATE yy_scan_string( yy_str )",
1307  "yyconst char *yy_str;",
1308  "#endif",
1309  "	{",
1310  "	int len;",
1311  "	for ( len = 0; yy_str[len]; ++len )",
1312  "		;",
1313  "",
1314  "	return yy_scan_bytes( yy_str, len );",
1315  "	}",
1316  "%*",
1317  "#endif",
1318  "",
1319  "",
1320  "#ifndef YY_NO_SCAN_BYTES",
1321  "%-",
1322  "#ifdef YY_USE_PROTOS",
1323  "YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )",
1324  "#else",
1325  "YY_BUFFER_STATE yy_scan_bytes( bytes, len )",
1326  "yyconst char *bytes;",
1327  "int len;",
1328  "#endif",
1329  "	{",
1330  "	YY_BUFFER_STATE b;",
1331  "	char *buf;",
1332  "	yy_size_t n;",
1333  "	int i;",
1334  "",
1335  "	/* Get memory for full buffer, including space for trailing EOB's. */",
1336  "	n = len + 2;",
1337  "	buf = (char *) yy_flex_alloc( n );",
1338  "	if ( ! buf )",
1339  "		YY_FATAL_ERROR( \"out of dynamic memory in yy_scan_bytes()\" );",
1340  "",
1341  "	for ( i = 0; i < len; ++i )",
1342  "		buf[i] = bytes[i];",
1343  "",
1344  "	buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;",
1345  "",
1346  "	b = yy_scan_buffer( buf, n );",
1347  "	if ( ! b )",
1348  "		YY_FATAL_ERROR( \"bad buffer in yy_scan_bytes()\" );",
1349  "",
1350  "	/* It's okay to grow etc. this buffer, and we should throw it",
1351  "	 * away when we're done.",
1352  "	 */",
1353  "	b->yy_is_our_buffer = 1;",
1354  "",
1355  "	return b;",
1356  "	}",
1357  "%*",
1358  "#endif",
1359  "",
1360  "",
1361  "#ifndef YY_NO_PUSH_STATE",
1362  "%-",
1363  "#ifdef YY_USE_PROTOS",
1364  "static void yy_push_state( int new_state )",
1365  "#else",
1366  "static void yy_push_state( new_state )",
1367  "int new_state;",
1368  "#endif",
1369  "%+",
1370  "void yyFlexLexer::yy_push_state( int new_state )",
1371  "%*",
1372  "	{",
1373  "	if ( yy_start_stack_ptr >= yy_start_stack_depth )",
1374  "		{",
1375  "		yy_size_t new_size;",
1376  "",
1377  "		yy_start_stack_depth += YY_START_STACK_INCR;",
1378  "		new_size = yy_start_stack_depth * sizeof( int );",
1379  "",
1380  "		if ( ! yy_start_stack )",
1381  "			yy_start_stack = (int *) yy_flex_alloc( new_size );",
1382  "",
1383  "		else",
1384  "			yy_start_stack = (int *) yy_flex_realloc(",
1385  "					(void *) yy_start_stack, new_size );",
1386  "",
1387  "		if ( ! yy_start_stack )",
1388  "			YY_FATAL_ERROR(",
1389  "			\"out of memory expanding start-condition stack\" );",
1390  "		}",
1391  "",
1392  "	yy_start_stack[yy_start_stack_ptr++] = YY_START;",
1393  "",
1394  "	BEGIN(new_state);",
1395  "	}",
1396  "#endif",
1397  "",
1398  "",
1399  "#ifndef YY_NO_POP_STATE",
1400  "%-",
1401  "static void yy_pop_state()",
1402  "%+",
1403  "void yyFlexLexer::yy_pop_state()",
1404  "%*",
1405  "	{",
1406  "	if ( --yy_start_stack_ptr < 0 )",
1407  "		YY_FATAL_ERROR( \"start-condition stack underflow\" );",
1408  "",
1409  "	BEGIN(yy_start_stack[yy_start_stack_ptr]);",
1410  "	}",
1411  "#endif",
1412  "",
1413  "",
1414  "#ifndef YY_NO_TOP_STATE",
1415  "%-",
1416  "static int yy_top_state()",
1417  "%+",
1418  "int yyFlexLexer::yy_top_state()",
1419  "%*",
1420  "	{",
1421  "	return yy_start_stack[yy_start_stack_ptr - 1];",
1422  "	}",
1423  "#endif",
1424  "",
1425  "#ifndef YY_EXIT_FAILURE",
1426  "#define YY_EXIT_FAILURE 2",
1427  "#endif",
1428  "",
1429  "%-",
1430  "#ifdef YY_USE_PROTOS",
1431  "static void yy_fatal_error( yyconst char msg[] )",
1432  "#else",
1433  "static void yy_fatal_error( msg )",
1434  "char msg[];",
1435  "#endif",
1436  "	{",
1437  "	(void) fprintf( stderr, \"%s\\n\", msg );",
1438  "	exit( YY_EXIT_FAILURE );",
1439  "	}",
1440  "",
1441  "%+",
1442  "",
1443  "void yyFlexLexer::LexerError( yyconst char msg[] )",
1444  "	{",
1445  "	cerr << msg << '\\n';",
1446  "	exit( YY_EXIT_FAILURE );",
1447  "	}",
1448  "%*",
1449  "",
1450  "",
1451  "/* Redefine yyless() so it works in section 3 code. */",
1452  "",
1453  "#undef yyless",
1454  "#define yyless(n) \\",
1455  "	do \\",
1456  "		{ \\",
1457  "		/* Undo effects of setting up yytext. */ \\",
1458  "		yytext[yyleng] = yy_hold_char; \\",
1459  "		yy_c_buf_p = yytext + n; \\",
1460  "		yy_hold_char = *yy_c_buf_p; \\",
1461  "		*yy_c_buf_p = '\\0'; \\",
1462  "		yyleng = n; \\",
1463  "		} \\",
1464  "	while ( 0 )",
1465  "",
1466  "",
1467  "/* Internal utility routines. */",
1468  "",
1469  "#ifndef yytext_ptr",
1470  "#ifdef YY_USE_PROTOS",
1471  "static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )",
1472  "#else",
1473  "static void yy_flex_strncpy( s1, s2, n )",
1474  "char *s1;",
1475  "yyconst char *s2;",
1476  "int n;",
1477  "#endif",
1478  "	{",
1479  "	register int i;",
1480  "	for ( i = 0; i < n; ++i )",
1481  "		s1[i] = s2[i];",
1482  "	}",
1483  "#endif",
1484  "",
1485  "#ifdef YY_NEED_STRLEN",
1486  "#ifdef YY_USE_PROTOS",
1487  "static int yy_flex_strlen( yyconst char *s )",
1488  "#else",
1489  "static int yy_flex_strlen( s )",
1490  "yyconst char *s;",
1491  "#endif",
1492  "	{",
1493  "	register int n;",
1494  "	for ( n = 0; s[n]; ++n )",
1495  "		;",
1496  "",
1497  "	return n;",
1498  "	}",
1499  "#endif",
1500  "",
1501  "",
1502  "#ifdef YY_USE_PROTOS",
1503  "static void *yy_flex_alloc( yy_size_t size )",
1504  "#else",
1505  "static void *yy_flex_alloc( size )",
1506  "yy_size_t size;",
1507  "#endif",
1508  "	{",
1509  "	return (void *) malloc( size );",
1510  "	}",
1511  "",
1512  "#ifdef YY_USE_PROTOS",
1513  "static void *yy_flex_realloc( void *ptr, yy_size_t size )",
1514  "#else",
1515  "static void *yy_flex_realloc( ptr, size )",
1516  "void *ptr;",
1517  "yy_size_t size;",
1518  "#endif",
1519  "	{",
1520  "	/* The cast to (char *) in the following accommodates both",
1521  "	 * implementations that use char* generic pointers, and those",
1522  "	 * that use void* generic pointers.  It works with the latter",
1523  "	 * because both ANSI C and C++ allow castless assignment from",
1524  "	 * any pointer type to void*, and deal with argument conversions",
1525  "	 * as though doing an assignment.",
1526  "	 */",
1527  "	return (void *) realloc( (char *) ptr, size );",
1528  "	}",
1529  "",
1530  "#ifdef YY_USE_PROTOS",
1531  "static void yy_flex_free( void *ptr )",
1532  "#else",
1533  "static void yy_flex_free( ptr )",
1534  "void *ptr;",
1535  "#endif",
1536  "	{",
1537  "	free( ptr );",
1538  "	}",
1539  "",
1540  "#if YY_MAIN",
1541  "int main()",
1542  "	{",
1543  "	yylex();",
1544  "	return 0;",
1545  "	}",
1546  "#endif",
1547  0
1548};
1549