1    	#line 2 "lexer.c"
2    	
3    	#line 4 "lexer.c"
4    	
5    	#define  YY_INT_ALIGNED short int
6    	
7    	/* A lexical scanner generated by flex */
8    	
9    	/* %not-for-header */
10   	
11   	/* %if-c-only */
12   	/* %if-not-reentrant */
13   	/* %endif */
14   	/* %endif */
15   	/* %ok-for-header */
16   	
17   	#define FLEX_SCANNER
18   	#define YY_FLEX_MAJOR_VERSION 2
19   	#define YY_FLEX_MINOR_VERSION 6
20   	#define YY_FLEX_SUBMINOR_VERSION 1
21   	#if YY_FLEX_SUBMINOR_VERSION > 0
22   	#define FLEX_BETA
23   	#endif
24   	
25   	/* %if-c++-only */
26   	/* %endif */
27   	
28   	/* %if-c-only */
29   	    
30   	/* %endif */
31   	
32   	/* %if-c-only */
33   	
34   	/* %endif */
35   	
36   	/* First, we deal with  platform-specific or compiler-specific issues. */
37   	
38   	/* begin standard C headers. */
39   	/* %if-c-only */
40   	#include <stdio.h>
41   	#include <string.h>
42   	#include <errno.h>
43   	#include <stdlib.h>
44   	/* %endif */
45   	
46   	/* %if-tables-serialization */
47   	/* %endif */
48   	/* end standard C headers. */
49   	
50   	/* %if-c-or-c++ */
51   	/* flex integer type definitions */
52   	
53   	#ifndef FLEXINT_H
54   	#define FLEXINT_H
55   	
56   	/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
57   	
58   	#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
59   	
60   	/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
61   	 * if you want the limit (max/min) macros for int types. 
62   	 */
63   	#ifndef __STDC_LIMIT_MACROS
64   	#define __STDC_LIMIT_MACROS 1
65   	#endif
66   	
67   	#include <inttypes.h>
68   	typedef int8_t flex_int8_t;
69   	typedef uint8_t flex_uint8_t;
70   	typedef int16_t flex_int16_t;
71   	typedef uint16_t flex_uint16_t;
72   	typedef int32_t flex_int32_t;
73   	typedef uint32_t flex_uint32_t;
74   	#else
75   	typedef signed char flex_int8_t;
76   	typedef short int flex_int16_t;
77   	typedef int flex_int32_t;
78   	typedef unsigned char flex_uint8_t; 
79   	typedef unsigned short int flex_uint16_t;
80   	typedef unsigned int flex_uint32_t;
81   	
82   	/* Limits of integral types. */
83   	#ifndef INT8_MIN
84   	#define INT8_MIN               (-128)
85   	#endif
86   	#ifndef INT16_MIN
87   	#define INT16_MIN              (-32767-1)
88   	#endif
89   	#ifndef INT32_MIN
90   	#define INT32_MIN              (-2147483647-1)
91   	#endif
92   	#ifndef INT8_MAX
93   	#define INT8_MAX               (127)
94   	#endif
95   	#ifndef INT16_MAX
96   	#define INT16_MAX              (32767)
97   	#endif
98   	#ifndef INT32_MAX
99   	#define INT32_MAX              (2147483647)
100  	#endif
101  	#ifndef UINT8_MAX
102  	#define UINT8_MAX              (255U)
103  	#endif
104  	#ifndef UINT16_MAX
105  	#define UINT16_MAX             (65535U)
106  	#endif
107  	#ifndef UINT32_MAX
108  	#define UINT32_MAX             (4294967295U)
109  	#endif
110  	
111  	#endif /* ! C99 */
112  	
113  	#endif /* ! FLEXINT_H */
114  	
115  	/* %endif */
116  	
117  	/* %if-c++-only */
118  	/* %endif */
119  	
120  	/* TODO: this is always defined, so inline it */
121  	#define yyconst const
122  	
123  	#if defined(__GNUC__) && __GNUC__ >= 3
124  	#define yynoreturn __attribute__((__noreturn__))
125  	#else
126  	#define yynoreturn
127  	#endif
128  	
129  	/* %not-for-header */
130  	
131  	/* Returned upon end-of-file. */
132  	#define YY_NULL 0
133  	/* %ok-for-header */
134  	
135  	/* %not-for-header */
136  	
137  	/* Promotes a possibly negative, possibly signed char to an unsigned
138  	 * integer for use as an array index.  If the signed char is negative,
139  	 * we want to instead treat it as an 8-bit unsigned char, hence the
140  	 * double cast.
141  	 */
142  	#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
143  	/* %ok-for-header */
144  	
145  	/* %if-reentrant */
146  	
147  	/* An opaque pointer. */
148  	#ifndef YY_TYPEDEF_YY_SCANNER_T
149  	#define YY_TYPEDEF_YY_SCANNER_T
150  	typedef void* yyscan_t;
151  	#endif
152  	
153  	/* For convenience, these vars (plus the bison vars far below)
154  	   are macros in the reentrant scanner. */
155  	#define yyin yyg->yyin_r
156  	#define yyout yyg->yyout_r
157  	#define yyextra yyg->yyextra_r
158  	#define yyleng yyg->yyleng_r
159  	#define yytext yyg->yytext_r
160  	#define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)
161  	#define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)
162  	#define yy_flex_debug yyg->yy_flex_debug_r
163  	
164  	/* %endif */
165  	
166  	/* %if-not-reentrant */
167  	/* %endif */
168  	
169  	/* Enter a start condition.  This macro really ought to take a parameter,
170  	 * but we do it the disgusting crufty way forced on us by the ()-less
171  	 * definition of BEGIN.
172  	 */
173  	#define BEGIN yyg->yy_start = 1 + 2 *
174  	
175  	/* Translate the current start state into a value that can be later handed
176  	 * to BEGIN to return to the state.  The YYSTATE alias is for lex
177  	 * compatibility.
178  	 */
179  	#define YY_START ((yyg->yy_start - 1) / 2)
180  	#define YYSTATE YY_START
181  	
182  	/* Action number for EOF rule of a given start state. */
183  	#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
184  	
185  	/* Special action meaning "start processing a new file". */
186  	#define YY_NEW_FILE yyrestart(yyin ,yyscanner )
187  	
188  	#define YY_END_OF_BUFFER_CHAR 0
189  	
190  	/* Size of default input buffer. */
191  	#ifndef YY_BUF_SIZE
192  	#ifdef __ia64__
193  	/* On IA-64, the buffer size is 16k, not 8k.
194  	 * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
195  	 * Ditto for the __ia64__ case accordingly.
196  	 */
197  	#define YY_BUF_SIZE 32768
198  	#else
199  	#define YY_BUF_SIZE 16384
200  	#endif /* __ia64__ */
201  	#endif
202  	
203  	/* The state buf must be large enough to hold one state per character in the main buffer.
204  	 */
205  	#define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
206  	
207  	#ifndef YY_TYPEDEF_YY_BUFFER_STATE
208  	#define YY_TYPEDEF_YY_BUFFER_STATE
209  	typedef struct yy_buffer_state *YY_BUFFER_STATE;
210  	#endif
211  	
212  	#ifndef YY_TYPEDEF_YY_SIZE_T
213  	#define YY_TYPEDEF_YY_SIZE_T
214  	typedef size_t yy_size_t;
215  	#endif
216  	
217  	/* %if-not-reentrant */
218  	/* %endif */
219  	
220  	/* %if-c-only */
221  	/* %if-not-reentrant */
222  	/* %endif */
223  	/* %endif */
224  	
225  	#define EOB_ACT_CONTINUE_SCAN 0
226  	#define EOB_ACT_END_OF_FILE 1
227  	#define EOB_ACT_LAST_MATCH 2
228  	
229  	    #define YY_LESS_LINENO(n)
230  	    #define YY_LINENO_REWIND_TO(ptr)
231  	    
232  	/* Return all but the first "n" matched characters back to the input stream. */
233  	#define yyless(n) \
234  		do \
235  			{ \
236  			/* Undo effects of setting up yytext. */ \
237  	        yy_size_t yyless_macro_arg = (n); \
238  	        YY_LESS_LINENO(yyless_macro_arg);\
239  			*yy_cp = yyg->yy_hold_char; \
240  			YY_RESTORE_YY_MORE_OFFSET \
241  			yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
242  			YY_DO_BEFORE_ACTION; /* set up yytext again */ \
243  			} \
244  		while ( 0 )
245  	
246  	#define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner )
247  	
248  	#ifndef YY_STRUCT_YY_BUFFER_STATE
249  	#define YY_STRUCT_YY_BUFFER_STATE
250  	struct yy_buffer_state
251  		{
252  	/* %if-c-only */
253  		FILE *yy_input_file;
254  	/* %endif */
255  	
256  	/* %if-c++-only */
257  	/* %endif */
258  	
259  		char *yy_ch_buf;		/* input buffer */
260  		char *yy_buf_pos;		/* current position in input buffer */
261  	
262  		/* Size of input buffer in bytes, not including room for EOB
263  		 * characters.
264  		 */
265  		int yy_buf_size;
266  	
267  		/* Number of characters read into yy_ch_buf, not including EOB
268  		 * characters.
269  		 */
270  		int yy_n_chars;
271  	
272  		/* Whether we "own" the buffer - i.e., we know we created it,
273  		 * and can realloc() it to grow it, and should free() it to
274  		 * delete it.
275  		 */
276  		int yy_is_our_buffer;
277  	
278  		/* Whether this is an "interactive" input source; if so, and
279  		 * if we're using stdio for input, then we want to use getc()
280  		 * instead of fread(), to make sure we stop fetching input after
281  		 * each newline.
282  		 */
283  		int yy_is_interactive;
284  	
285  		/* Whether we're considered to be at the beginning of a line.
286  		 * If so, '^' rules will be active on the next match, otherwise
287  		 * not.
288  		 */
289  		int yy_at_bol;
290  	
291  	    int yy_bs_lineno; /**< The line count. */
292  	    int yy_bs_column; /**< The column count. */
293  	    
294  		/* Whether to try to fill the input buffer when we reach the
295  		 * end of it.
296  		 */
297  		int yy_fill_buffer;
298  	
299  		int yy_buffer_status;
300  	
301  	#define YY_BUFFER_NEW 0
302  	#define YY_BUFFER_NORMAL 1
303  		/* When an EOF's been seen but there's still some text to process
304  		 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
305  		 * shouldn't try reading from the input source any more.  We might
306  		 * still have a bunch of tokens to match, though, because of
307  		 * possible backing-up.
308  		 *
309  		 * When we actually see the EOF, we change the status to "new"
310  		 * (via yyrestart()), so that the user can continue scanning by
311  		 * just pointing yyin at a new input file.
312  		 */
313  	#define YY_BUFFER_EOF_PENDING 2
314  	
315  		};
316  	#endif /* !YY_STRUCT_YY_BUFFER_STATE */
317  	
318  	/* %if-c-only Standard (non-C++) definition */
319  	/* %not-for-header */
320  	
321  	/* %if-not-reentrant */
322  	/* %endif */
323  	/* %ok-for-header */
324  	
325  	/* %endif */
326  	
327  	/* We provide macros for accessing buffer states in case in the
328  	 * future we want to put the buffer states in a more general
329  	 * "scanner state".
330  	 *
331  	 * Returns the top of the stack, or NULL.
332  	 */
333  	#define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
334  	                          ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
335  	                          : NULL)
336  	
337  	/* Same as previous macro, but useful when we know that the buffer stack is not
338  	 * NULL or when we need an lvalue. For internal use only.
339  	 */
340  	#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
341  	
342  	/* %if-c-only Standard (non-C++) definition */
343  	
344  	/* %if-not-reentrant */
345  	/* %not-for-header */
346  	
347  	/* %ok-for-header */
348  	
349  	/* %endif */
350  	
351  	void yyrestart (FILE *input_file ,yyscan_t yyscanner );
352  	void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
353  	YY_BUFFER_STATE yy_create_buffer (FILE *file,int size ,yyscan_t yyscanner );
354  	void yy_delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
355  	void yy_flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
356  	void yypush_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
357  	void yypop_buffer_state (yyscan_t yyscanner );
358  	
359  	static void yyensure_buffer_stack (yyscan_t yyscanner );
360  	static void yy_load_buffer_state (yyscan_t yyscanner );
361  	static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner );
362  	
363  	#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER ,yyscanner)
364  	
365  	YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner );
366  	YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ,yyscan_t yyscanner );
367  	YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner );
368  	
369  	/* %endif */
370  	
371  	void *yyalloc (yy_size_t ,yyscan_t yyscanner );
372  	void *yyrealloc (void *,yy_size_t ,yyscan_t yyscanner );
373  	void yyfree (void * ,yyscan_t yyscanner );
374  	
375  	#define yy_new_buffer yy_create_buffer
376  	
377  	#define yy_set_interactive(is_interactive) \
378  		{ \
379  		if ( ! YY_CURRENT_BUFFER ){ \
380  	        yyensure_buffer_stack (yyscanner); \
381  			YY_CURRENT_BUFFER_LVALUE =    \
382  	            yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
383  		} \
384  		YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
385  		}
386  	
387  	#define yy_set_bol(at_bol) \
388  		{ \
389  		if ( ! YY_CURRENT_BUFFER ){\
390  	        yyensure_buffer_stack (yyscanner); \
391  			YY_CURRENT_BUFFER_LVALUE =    \
392  	            yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
393  		} \
394  		YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
395  		}
396  	
397  	#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
398  	
399  	/* %% [1.0] yytext/yyin/yyout/yy_state_type/yylineno etc. def's & init go here */
400  	/* Begin user sect3 */
401  	
402  	#define yywrap(yyscanner) (/*CONSTCOND*/1)
403  	#define YY_SKIP_YYWRAP
404  	
405  	#define FLEX_DEBUG
406  	
407  	typedef unsigned char YY_CHAR;
408  	
409  	typedef int yy_state_type;
410  	
411  	#define yytext_ptr yytext_r
412  	
413  	/* %% [1.5] DFA */
414  	
415  	/* %if-c-only Standard (non-C++) definition */
416  	
417  	static yy_state_type yy_get_previous_state (yyscan_t yyscanner );
418  	static yy_state_type yy_try_NUL_trans (yy_state_type current_state  ,yyscan_t yyscanner);
419  	static int yy_get_next_buffer (yyscan_t yyscanner );
420  	static void yynoreturn yy_fatal_error (yyconst char* msg ,yyscan_t yyscanner );
421  	
422  	/* %endif */
423  	
424  	/* Done after the current pattern has been matched and before the
425  	 * corresponding action - sets up yytext.
426  	 */
427  	#define YY_DO_BEFORE_ACTION \
428  		yyg->yytext_ptr = yy_bp; \
429  	/* %% [2.0] code to fiddle yytext and yyleng for yymore() goes here \ */\
430  		yyleng = (int) (yy_cp - yy_bp); \
431  		yyg->yy_hold_char = *yy_cp; \
432  		*yy_cp = '\0'; \
433  	/* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\
434  		yyg->yy_c_buf_p = yy_cp;
435  	
436  	/* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */
437  	#define YY_NUM_RULES 20
438  	#define YY_END_OF_BUFFER 21
439  	/* This struct is not used in this scanner,
440  	   but its presence is necessary. */
441  	struct yy_trans_info
442  		{
443  		flex_int32_t yy_verify;
444  		flex_int32_t yy_nxt;
445  		};
446  	static yyconst flex_int16_t yy_accept[57] =
447  	    {   0,
448  	        0,    0,   21,   19,   18,   17,   19,   19,   19,    5,
449  	       19,   19,   14,   14,    6,    7,   15,    3,    4,   15,
450  	       15,    1,    2,   18,    0,   16,    0,   12,    0,    0,
451  	        0,   13,   13,   14,   14,    0,    0,   15,   15,   15,
452  	       15,    0,   11,    0,   12,    0,    0,   14,    9,    8,
453  	       15,   11,   13,   15,   10,    0
454  	    } ;
455  	
456  	static yyconst YY_CHAR yy_ec[256] =
457  	    {   0,
458  	        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
459  	        1,    1,    2,    1,    1,    1,    1,    1,    1,    1,
460  	        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
461  	        1,    2,    1,    1,    4,    1,    1,    1,    5,    1,
462  	        1,    1,    6,    7,    8,    9,   10,   11,   12,   12,
463  	       12,   12,   12,   12,   12,   12,   12,   13,   14,    1,
464  	        1,    1,    1,    1,   15,   15,   15,   15,   15,   15,
465  	       16,   16,   16,   16,   16,   16,   16,   16,   16,   16,
466  	       16,   16,   16,   16,   16,   16,   16,   16,   16,   16,
467  	       17,   18,   19,    1,   16,    1,   20,   15,   15,   15,
468  	
469  	       21,   15,   22,   16,   16,   16,   16,   16,   16,   16,
470  	       16,   16,   16,   16,   23,   24,   16,   16,   16,   25,
471  	       16,   16,   26,    1,   27,    1,    1,    1,    1,    1,
472  	        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
473  	        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
474  	        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
475  	        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
476  	        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
477  	        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
478  	        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
479  	
480  	        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
481  	        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
482  	        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
483  	        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
484  	        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
485  	        1,    1,    1,    1,    1
486  	    } ;
487  	
488  	static yyconst YY_CHAR yy_meta[28] =
489  	    {   0,
490  	        1,    1,    1,    1,    1,    1,    1,    1,    2,    1,
491  	        3,    3,    1,    1,    3,    2,    1,    1,    1,    3,
492  	        3,    2,    2,    2,    2,    1,    1
493  	    } ;
494  	
495  	static yyconst flex_uint16_t yy_base[64] =
496  	    {   0,
497  	        0,    0,   98,   99,   95,   99,   93,   23,   23,   99,
498  	       18,   85,   25,   27,   99,   99,    0,   99,   99,   73,
499  	       19,   99,   99,   91,   89,   99,   27,   99,   37,   39,
500  	       35,   37,   40,   42,   47,   88,    0,    0,   51,   48,
501  	       51,   51,   99,   55,   56,    0,   67,    0,    0,    0,
502  	       44,   58,    0,   45,    0,   99,   76,   79,   81,   84,
503  	       87,   62,   61
504  	    } ;
505  	
506  	static yyconst flex_int16_t yy_def[64] =
507  	    {   0,
508  	       56,    1,   56,   56,   56,   56,   57,   58,   56,   56,
509  	       56,   56,   56,   56,   56,   56,   59,   56,   56,   59,
510  	       59,   56,   56,   56,   57,   56,   58,   56,   60,   58,
511  	       56,   56,   56,   56,   56,   61,   62,   59,   59,   59,
512  	       59,   60,   56,   60,   58,   63,   61,   62,   59,   59,
513  	       59,   60,   63,   59,   59,    0,   56,   56,   56,   56,
514  	       56,   56,   56
515  	    } ;
516  	
517  	static yyconst flex_uint16_t yy_nxt[127] =
518  	    {   0,
519  	        4,    5,    6,    7,    8,    9,   10,   11,    4,   12,
520  	       13,   14,   15,   16,   17,   17,   18,    4,   19,   17,
521  	       17,   20,   21,   17,   17,   22,   23,   28,   34,   35,
522  	       31,   28,   29,   32,   33,   35,   35,   35,   35,   40,
523  	       30,   43,   41,   45,   30,   32,   33,   33,   33,   37,
524  	       33,   33,   35,   35,   44,   43,   30,   35,   35,   52,
525  	       28,   46,   43,   53,   48,   55,   37,   54,   44,   26,
526  	       51,   50,   44,   30,   49,   44,   25,   25,   25,   27,
527  	       27,   27,   38,   38,   42,   42,   42,   47,   47,   47,
528  	       26,   26,   24,   39,   36,   26,   24,   56,    3,   56,
529  	
530  	       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
531  	       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
532  	       56,   56,   56,   56,   56,   56
533  	    } ;
534  	
535  	static yyconst flex_int16_t yy_chk[127] =
536  	    {   0,
537  	        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
538  	        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
539  	        1,    1,    1,    1,    1,    1,    1,    8,   11,   11,
540  	        9,   27,    8,    9,    9,   13,   13,   14,   14,   21,
541  	        8,   29,   21,   30,   27,   31,   31,   32,   32,   13,
542  	       33,   33,   34,   34,   29,   42,   30,   35,   35,   44,
543  	       45,   32,   52,   63,   62,   54,   34,   51,   42,   47,
544  	       41,   40,   44,   45,   39,   52,   57,   57,   57,   58,
545  	       58,   58,   59,   59,   60,   60,   60,   61,   61,   61,
546  	       36,   25,   24,   20,   12,    7,    5,    3,   56,   56,
547  	
548  	       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
549  	       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
550  	       56,   56,   56,   56,   56,   56
551  	    } ;
552  	
553  	static yyconst flex_int16_t yy_rule_linenum[20] =
554  	    {   0,
555  	       43,   46,   49,   52,   55,   58,   61,   64,   67,   70,
556  	       73,   77,   81,   84,   87,   90,   97,  101,  102
557  	    } ;
558  	
559  	/* The intent behind this definition is that it'll catch
560  	 * any uses of REJECT which flex missed.
561  	 */
562  	#define REJECT reject_used_but_not_detected
563  	#define yymore() yymore_used_but_not_detected
564  	#define YY_MORE_ADJ 0
565  	#define YY_RESTORE_YY_MORE_OFFSET
566  	#line 1 "lexer.l"
567  	#line 2 "lexer.l"
568  	#include "lang.h"
569  	#include "parser.h"
570  	
571  	#define EXTRA ((struct lgfs2_lang_state *)yyextra)
572  	
573  	#define P(token, type, text) do {\
574  		*(yylval) = ast_new(type, text);\
575  		if (*(yylval) == NULL) {\
576  			EXTRA->ls_errnum = errno;\
577  			return 1;\
578  		}\
579  		return (TOK_##token);\
580  	} while(0)
581  	
582  	#define COLNUM EXTRA->ls_colnum
583  	#define YY_USER_ACTION COLNUM += yyleng;
584  	
585  	#define YY_NO_INPUT 1
586  	#line 587 "lexer.c"
587  	
588  	#define INITIAL 0
589  	
590  	#ifndef YY_NO_UNISTD_H
591  	/* Special case for "unistd.h", since it is non-ANSI. We include it way
592  	 * down here because we want the user's section 1 to have been scanned first.
593  	 * The user has a chance to override it with an option.
594  	 */
595  	/* %if-c-only */
596  	#include <unistd.h>
597  	/* %endif */
598  	/* %if-c++-only */
599  	/* %endif */
600  	#endif
601  	
602  	#define YY_EXTRA_TYPE struct lgfs2_lang_state *
603  	
604  	/* %if-c-only Reentrant structure and macros (non-C++). */
605  	/* %if-reentrant */
606  	
607  	/* Holds the entire state of the reentrant scanner. */
608  	struct yyguts_t
609  	    {
610  	
611  	    /* User-defined. Not touched by flex. */
612  	    YY_EXTRA_TYPE yyextra_r;
613  	
614  	    /* The rest are the same as the globals declared in the non-reentrant scanner. */
615  	    FILE *yyin_r, *yyout_r;
616  	    size_t yy_buffer_stack_top; /**< index of top of stack. */
617  	    size_t yy_buffer_stack_max; /**< capacity of stack. */
618  	    YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */
619  	    char yy_hold_char;
620  	    int yy_n_chars;
621  	    int yyleng_r;
622  	    char *yy_c_buf_p;
623  	    int yy_init;
624  	    int yy_start;
625  	    int yy_did_buffer_switch_on_eof;
626  	    int yy_start_stack_ptr;
627  	    int yy_start_stack_depth;
628  	    int *yy_start_stack;
629  	    yy_state_type yy_last_accepting_state;
630  	    char* yy_last_accepting_cpos;
631  	
632  	    int yylineno_r;
633  	    int yy_flex_debug_r;
634  	
635  	    char *yytext_r;
636  	    int yy_more_flag;
637  	    int yy_more_len;
638  	
639  	    YYSTYPE * yylval_r;
640  	
641  	    }; /* end struct yyguts_t */
642  	
643  	/* %if-c-only */
644  	
645  	static int yy_init_globals (yyscan_t yyscanner );
646  	
647  	/* %endif */
648  	
649  	/* %if-reentrant */
650  	
651  	    /* This must go here because YYSTYPE and YYLTYPE are included
652  	     * from bison output in section 1.*/
653  	    #    define yylval yyg->yylval_r
654  	    
655  	int yylex_init (yyscan_t* scanner);
656  	
657  	int yylex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner);
658  	
659  	/* %endif */
660  	
661  	/* %endif End reentrant structures and macros. */
662  	
663  	/* Accessor methods to globals.
664  	   These are made visible to non-reentrant scanners for convenience. */
665  	
666  	int yylex_destroy (yyscan_t yyscanner );
667  	
668  	int yyget_debug (yyscan_t yyscanner );
669  	
670  	void yyset_debug (int debug_flag ,yyscan_t yyscanner );
671  	
672  	YY_EXTRA_TYPE yyget_extra (yyscan_t yyscanner );
673  	
674  	void yyset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner );
675  	
676  	FILE *yyget_in (yyscan_t yyscanner );
677  	
678  	void yyset_in  (FILE * _in_str ,yyscan_t yyscanner );
679  	
680  	FILE *yyget_out (yyscan_t yyscanner );
681  	
682  	void yyset_out  (FILE * _out_str ,yyscan_t yyscanner );
683  	
684  				int yyget_leng (yyscan_t yyscanner );
685  	
686  	char *yyget_text (yyscan_t yyscanner );
687  	
688  	int yyget_lineno (yyscan_t yyscanner );
689  	
690  	void yyset_lineno (int _line_number ,yyscan_t yyscanner );
691  	
692  	int yyget_column  (yyscan_t yyscanner );
693  	
694  	void yyset_column (int _column_no ,yyscan_t yyscanner );
695  	
696  	/* %if-bison-bridge */
697  	
698  	YYSTYPE * yyget_lval (yyscan_t yyscanner );
699  	
700  	void yyset_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner );
701  	
702  	/* %endif */
703  	
704  	/* Macros after this point can all be overridden by user definitions in
705  	 * section 1.
706  	 */
707  	
708  	#ifndef YY_SKIP_YYWRAP
709  	#ifdef __cplusplus
710  	extern "C" int yywrap (yyscan_t yyscanner );
711  	#else
712  	extern int yywrap (yyscan_t yyscanner );
713  	#endif
714  	#endif
715  	
716  	/* %not-for-header */
717  	
718  	#ifndef YY_NO_UNPUT
719  	    
720  	#endif
721  	/* %ok-for-header */
722  	
723  	/* %endif */
724  	
725  	#ifndef yytext_ptr
726  	static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner);
727  	#endif
728  	
729  	#ifdef YY_NEED_STRLEN
730  	static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner);
731  	#endif
732  	
733  	#ifndef YY_NO_INPUT
734  	/* %if-c-only Standard (non-C++) definition */
735  	/* %not-for-header */
736  	
737  	#ifdef __cplusplus
738  	static int yyinput (yyscan_t yyscanner );
739  	#else
740  	static int input (yyscan_t yyscanner );
741  	#endif
742  	/* %ok-for-header */
743  	
744  	/* %endif */
745  	#endif
746  	
747  	/* %if-c-only */
748  	
749  	/* %endif */
750  	
751  	/* Amount of stuff to slurp up with each read. */
752  	#ifndef YY_READ_BUF_SIZE
753  	#ifdef __ia64__
754  	/* On IA-64, the buffer size is 16k, not 8k */
755  	#define YY_READ_BUF_SIZE 16384
756  	#else
757  	#define YY_READ_BUF_SIZE 8192
758  	#endif /* __ia64__ */
759  	#endif
760  	
761  	/* Copy whatever the last rule matched to the standard output. */
762  	#ifndef ECHO
763  	/* %if-c-only Standard (non-C++) definition */
764  	/* This used to be an fputs(), but since the string might contain NUL's,
765  	 * we now use fwrite().
766  	 */
767  	#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0)
768  	/* %endif */
769  	/* %if-c++-only C++ definition */
770  	/* %endif */
771  	#endif
772  	
773  	/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
774  	 * is returned in "result".
775  	 */
776  	#ifndef YY_INPUT
777  	#define YY_INPUT(buf,result,max_size) \
778  	/* %% [5.0] fread()/read() definition of YY_INPUT goes here unless we're doing C++ \ */\
779  		if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
780  			{ \
781  			int c = '*'; \
782  			int n; \
783  			for ( n = 0; n < max_size && \
784  				     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
785  				buf[n] = (char) c; \
786  			if ( c == '\n' ) \
787  				buf[n++] = (char) c; \
788  			if ( c == EOF && ferror( yyin ) ) \
789  				YY_FATAL_ERROR( "input in flex scanner failed" ); \
790  			result = n; \
791  			} \
792  		else \
793  			{ \
794  			errno=0; \
795  			while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \
796  				{ \
797  				if( errno != EINTR) \
798  					{ \
799  					YY_FATAL_ERROR( "input in flex scanner failed" ); \
800  					break; \
801  					} \
802  				errno=0; \
803  				clearerr(yyin); \
804  				} \
805  			}\
806  	\
807  	/* %if-c++-only C++ definition \ */\
808  	/* %endif */
809  	
810  	#endif
811  	
812  	/* No semi-colon after return; correct usage is to write "yyterminate();" -
813  	 * we don't want an extra ';' after the "return" because that will cause
814  	 * some compilers to complain about unreachable statements.
815  	 */
816  	#ifndef yyterminate
817  	#define yyterminate() return YY_NULL
818  	#endif
819  	
820  	/* Number of entries by which start-condition stack grows. */
821  	#ifndef YY_START_STACK_INCR
822  	#define YY_START_STACK_INCR 25
823  	#endif
824  	
825  	/* Report a fatal error. */
826  	#ifndef YY_FATAL_ERROR
827  	/* %if-c-only */
828  	#define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner)
829  	/* %endif */
830  	/* %if-c++-only */
831  	/* %endif */
832  	#endif
833  	
834  	/* %if-tables-serialization structures and prototypes */
835  	/* %not-for-header */
836  	
837  	/* %ok-for-header */
838  	
839  	/* %not-for-header */
840  	
841  	/* %tables-yydmap generated elements */
842  	/* %endif */
843  	/* end tables serialization structures and prototypes */
844  	
845  	/* %ok-for-header */
846  	
847  	/* Default declaration of generated scanner - a define so the user can
848  	 * easily add parameters.
849  	 */
850  	#ifndef YY_DECL
851  	#define YY_DECL_IS_OURS 1
852  	/* %if-c-only Standard (non-C++) definition */
853  	
854  	extern int yylex \
855  	               (YYSTYPE * yylval_param ,yyscan_t yyscanner);
856  	
857  	#define YY_DECL int yylex \
858  	               (YYSTYPE * yylval_param , yyscan_t yyscanner)
859  	/* %endif */
860  	/* %if-c++-only C++ definition */
861  	/* %endif */
862  	#endif /* !YY_DECL */
863  	
864  	/* Code executed at the beginning of each rule, after yytext and yyleng
865  	 * have been set up.
866  	 */
867  	#ifndef YY_USER_ACTION
868  	#define YY_USER_ACTION
869  	#endif
870  	
871  	/* Code executed at the end of each rule. */
872  	#ifndef YY_BREAK
873  	#define YY_BREAK /*LINTED*/break;
874  	#endif
875  	
876  	/* %% [6.0] YY_RULE_SETUP definition goes here */
877  	#define YY_RULE_SETUP \
878  		YY_USER_ACTION
879  	
880  	/* %not-for-header */
881  	
882  	/** The main scanner function which does all the work.
883  	 */
884  	YY_DECL
885  	{
886  		yy_state_type yy_current_state;
887  		char *yy_cp, *yy_bp;
888  		int yy_act;
889  	    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
890  	
891  	    yylval = yylval_param;
892  	
(1) Event cond_true: Condition "!yyg->yy_init", taking true branch.
893  		if ( !yyg->yy_init )
894  			{
895  			yyg->yy_init = 1;
896  	
897  	#ifdef YY_USER_INIT
898  			YY_USER_INIT;
899  	#endif
900  	
(2) Event cond_true: Condition "!yyg->yy_start", taking true branch.
901  			if ( ! yyg->yy_start )
902  				yyg->yy_start = 1;	/* first start state */
903  	
(3) Event cond_true: Condition "!yyg->yyin_r", taking true branch.
904  			if ( ! yyin )
905  	/* %if-c-only */
906  				yyin = stdin;
907  	/* %endif */
908  	/* %if-c++-only */
909  	/* %endif */
910  	
(4) Event cond_true: Condition "!yyg->yyout_r", taking true branch.
911  			if ( ! yyout )
912  	/* %if-c-only */
913  				yyout = stdout;
914  	/* %endif */
915  	/* %if-c++-only */
916  	/* %endif */
917  	
(5) Event cond_false: Condition "yyg->yy_buffer_stack", taking false branch.
(6) Event var_compare_op: Comparing "yyg->yy_buffer_stack" to null implies that "yyg->yy_buffer_stack" might be null.
(7) Event cond_true: Condition "!(yyg->yy_buffer_stack ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] : NULL)", taking true branch.
Also see events: [var_deref_op]
918  			if ( ! YY_CURRENT_BUFFER ) {
919  				yyensure_buffer_stack (yyscanner);
(8) Event var_deref_op: Dereferencing null pointer "yyg->yy_buffer_stack".
Also see events: [var_compare_op]
920  				YY_CURRENT_BUFFER_LVALUE =
921  					yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
922  			}
923  	
924  			yy_load_buffer_state(yyscanner );
925  			}
926  	
927  		{
928  	/* %% [7.0] user's declarations go here */
929  	#line 41 "lexer.l"
930  	
931  	
932  	#line 933 "lexer.c"
933  	
934  		while ( /*CONSTCOND*/1 )		/* loops until end-of-file is reached */
935  			{
936  	/* %% [8.0] yymore()-related code goes here */
937  			yy_cp = yyg->yy_c_buf_p;
938  	
939  			/* Support of yytext. */
940  			*yy_cp = yyg->yy_hold_char;
941  	
942  			/* yy_bp points to the position in yy_ch_buf of the start of
943  			 * the current run.
944  			 */
945  			yy_bp = yy_cp;
946  	
947  	/* %% [9.0] code to set up and find next match goes here */
948  			yy_current_state = yyg->yy_start;
949  	yy_match:
950  			do
951  				{
952  				YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ;
953  				if ( yy_accept[yy_current_state] )
954  					{
955  					yyg->yy_last_accepting_state = yy_current_state;
956  					yyg->yy_last_accepting_cpos = yy_cp;
957  					}
958  				while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
959  					{
960  					yy_current_state = (int) yy_def[yy_current_state];
961  					if ( yy_current_state >= 57 )
962  						yy_c = yy_meta[(unsigned int) yy_c];
963  					}
964  				yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
965  				++yy_cp;
966  				}
967  			while ( yy_base[yy_current_state] != 99 );
968  	
969  	yy_find_action:
970  	/* %% [10.0] code to find the action number goes here */
971  			yy_act = yy_accept[yy_current_state];
972  			if ( yy_act == 0 )
973  				{ /* have to back up */
974  				yy_cp = yyg->yy_last_accepting_cpos;
975  				yy_current_state = yyg->yy_last_accepting_state;
976  				yy_act = yy_accept[yy_current_state];
977  				}
978  	
979  			YY_DO_BEFORE_ACTION;
980  	
981  	/* %% [11.0] code for yylineno update goes here */
982  	
983  	do_action:	/* This label is used only to access EOF actions. */
984  	
985  	/* %% [12.0] debug code goes here */
986  			if ( yy_flex_debug )
987  				{
988  				if ( yy_act == 0 )
989  					fprintf( stderr, "--scanner backing up\n" );
990  				else if ( yy_act < 20 )
991  					fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
992  					         (long)yy_rule_linenum[yy_act], yytext );
993  				else if ( yy_act == 20 )
994  					fprintf( stderr, "--accepting default rule (\"%s\")\n",
995  					         yytext );
996  				else if ( yy_act == 21 )
997  					fprintf( stderr, "--(end of buffer or a NUL)\n" );
998  				else
999  					fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
1000 				}
1001 	
1002 			switch ( yy_act )
1003 		{ /* beginning of action switch */
1004 	/* %% [13.0] actions go here */
1005 				case 0: /* must back up */
1006 				/* undo the effects of YY_DO_BEFORE_ACTION */
1007 				*yy_cp = yyg->yy_hold_char;
1008 				yy_cp = yyg->yy_last_accepting_cpos;
1009 				yy_current_state = yyg->yy_last_accepting_state;
1010 				goto yy_find_action;
1011 	
1012 	case 1:
1013 	YY_RULE_SETUP
1014 	#line 43 "lexer.l"
1015 	{
1016 				return TOK_LBRACE;
1017 				}
1018 		YY_BREAK
1019 	case 2:
1020 	YY_RULE_SETUP
1021 	#line 46 "lexer.l"
1022 	{
1023 				return TOK_RBRACE;
1024 				}
1025 		YY_BREAK
1026 	case 3:
1027 	YY_RULE_SETUP
1028 	#line 49 "lexer.l"
1029 	{
1030 				return TOK_LBRACKET;
1031 				}
1032 		YY_BREAK
1033 	case 4:
1034 	YY_RULE_SETUP
1035 	#line 52 "lexer.l"
1036 	{
1037 				P(RBRACKET, AST_EX_SUBSCRIPT, "[ ]");
1038 				}
1039 		YY_BREAK
1040 	case 5:
1041 	YY_RULE_SETUP
1042 	#line 55 "lexer.l"
1043 	{
1044 				return TOK_COMMA;
1045 				}
1046 		YY_BREAK
1047 	case 6:
1048 	YY_RULE_SETUP
1049 	#line 58 "lexer.l"
1050 	{
1051 				P(COLON, AST_EX_FIELDSPEC, yytext);
1052 				}
1053 		YY_BREAK
1054 	case 7:
1055 	YY_RULE_SETUP
1056 	#line 61 "lexer.l"
1057 	{
1058 				return TOK_SEMI;
1059 				}
1060 		YY_BREAK
1061 	case 8:
1062 	YY_RULE_SETUP
1063 	#line 64 "lexer.l"
1064 	{
1065 				P(SET, AST_ST_SET, yytext);
1066 				}
1067 		YY_BREAK
1068 	case 9:
1069 	YY_RULE_SETUP
1070 	#line 67 "lexer.l"
1071 	{
1072 				P(GET, AST_ST_GET, yytext);
1073 				}
1074 		YY_BREAK
1075 	case 10:
1076 	YY_RULE_SETUP
1077 	#line 70 "lexer.l"
1078 	{
1079 				P(STATE, AST_KW_STATE, yytext);
1080 				}
1081 		YY_BREAK
1082 	case 11:
1083 	/* rule 11 can match eol */
1084 	YY_RULE_SETUP
1085 	#line 73 "lexer.l"
1086 	{
1087 				yytext[yyleng-1] = '\0';
1088 				P(PATH, AST_EX_PATH, yytext + 1);
1089 				}
1090 		YY_BREAK
1091 	case 12:
1092 	/* rule 12 can match eol */
1093 	YY_RULE_SETUP
1094 	#line 77 "lexer.l"
1095 	{
1096 				yytext[yyleng-1] = '\0';
1097 				P(STRING, AST_EX_STRING, yytext + 1);
1098 				}
1099 		YY_BREAK
1100 	case 13:
1101 	YY_RULE_SETUP
1102 	#line 81 "lexer.l"
1103 	{
1104 				P(OFFSET, AST_EX_OFFSET, yytext);
1105 				}
1106 		YY_BREAK
1107 	case 14:
1108 	YY_RULE_SETUP
1109 	#line 84 "lexer.l"
1110 	{
1111 				P(NUMBER, AST_EX_NUMBER, yytext);
1112 				}
1113 		YY_BREAK
1114 	case 15:
1115 	YY_RULE_SETUP
1116 	#line 87 "lexer.l"
1117 	{
1118 				P(ID, AST_EX_ID, yytext);
1119 				}
1120 		YY_BREAK
1121 	case 16:
1122 	/* rule 16 can match eol */
1123 	YY_RULE_SETUP
1124 	#line 90 "lexer.l"
1125 	{
1126 				COLNUM = 0;
1127 				EXTRA->ls_linenum++;
1128 				}
1129 		YY_BREAK
1130 	case YY_STATE_EOF(INITIAL):
1131 	#line 94 "lexer.l"
1132 	{
1133 				return 0;
1134 				}
1135 		YY_BREAK
1136 	case 17:
1137 	/* rule 17 can match eol */
1138 	YY_RULE_SETUP
1139 	#line 97 "lexer.l"
1140 	{
1141 				COLNUM = 0;
1142 				EXTRA->ls_linenum++;
1143 				}
1144 		YY_BREAK
1145 	case 18:
1146 	YY_RULE_SETUP
1147 	#line 101 "lexer.l"
1148 	;
1149 		YY_BREAK
1150 	case 19:
1151 	YY_RULE_SETUP
1152 	#line 102 "lexer.l"
1153 	{
1154 				printf("Unexpected character '%s' on line %d column %d\n",
1155 				       yytext, yylineno, COLNUM);
1156 				return 1;
1157 				}
1158 		YY_BREAK
1159 	case 20:
1160 	YY_RULE_SETUP
1161 	#line 108 "lexer.l"
1162 	ECHO;
1163 		YY_BREAK
1164 	#line 1165 "lexer.c"
1165 	
1166 		case YY_END_OF_BUFFER:
1167 			{
1168 			/* Amount of text matched not including the EOB char. */
1169 			int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1;
1170 	
1171 			/* Undo the effects of YY_DO_BEFORE_ACTION. */
1172 			*yy_cp = yyg->yy_hold_char;
1173 			YY_RESTORE_YY_MORE_OFFSET
1174 	
1175 			if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
1176 				{
1177 				/* We're scanning a new file or input source.  It's
1178 				 * possible that this happened because the user
1179 				 * just pointed yyin at a new source and called
1180 				 * yylex().  If so, then we have to assure
1181 				 * consistency between YY_CURRENT_BUFFER and our
1182 				 * globals.  Here is the right place to do so, because
1183 				 * this is the first action (other than possibly a
1184 				 * back-up) that will match for the new input source.
1185 				 */
1186 				yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
1187 	/* %if-c-only */
1188 				YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
1189 	/* %endif */
1190 	/* %if-c++-only */
1191 	/* %endif */
1192 				YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
1193 				}
1194 	
1195 			/* Note that here we test for yy_c_buf_p "<=" to the position
1196 			 * of the first EOB in the buffer, since yy_c_buf_p will
1197 			 * already have been incremented past the NUL character
1198 			 * (since all states make transitions on EOB to the
1199 			 * end-of-buffer state).  Contrast this with the test
1200 			 * in input().
1201 			 */
1202 			if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
1203 				{ /* This was really a NUL. */
1204 				yy_state_type yy_next_state;
1205 	
1206 				yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text;
1207 	
1208 				yy_current_state = yy_get_previous_state( yyscanner );
1209 	
1210 				/* Okay, we're now positioned to make the NUL
1211 				 * transition.  We couldn't have
1212 				 * yy_get_previous_state() go ahead and do it
1213 				 * for us because it doesn't know how to deal
1214 				 * with the possibility of jamming (and we don't
1215 				 * want to build jamming into it because then it
1216 				 * will run more slowly).
1217 				 */
1218 	
1219 				yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner);
1220 	
1221 				yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
1222 	
1223 				if ( yy_next_state )
1224 					{
1225 					/* Consume the NUL. */
1226 					yy_cp = ++yyg->yy_c_buf_p;
1227 					yy_current_state = yy_next_state;
1228 					goto yy_match;
1229 					}
1230 	
1231 				else
1232 					{
1233 	/* %% [14.0] code to do back-up for compressed tables and set up yy_cp goes here */
1234 					yy_cp = yyg->yy_c_buf_p;
1235 					goto yy_find_action;
1236 					}
1237 				}
1238 	
1239 			else switch ( yy_get_next_buffer( yyscanner ) )
1240 				{
1241 				case EOB_ACT_END_OF_FILE:
1242 					{
1243 					yyg->yy_did_buffer_switch_on_eof = 0;
1244 	
1245 					if ( yywrap(yyscanner ) )
1246 						{
1247 						/* Note: because we've taken care in
1248 						 * yy_get_next_buffer() to have set up
1249 						 * yytext, we can now set up
1250 						 * yy_c_buf_p so that if some total
1251 						 * hoser (like flex itself) wants to
1252 						 * call the scanner after we return the
1253 						 * YY_NULL, it'll still work - another
1254 						 * YY_NULL will get returned.
1255 						 */
1256 						yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ;
1257 	
1258 						yy_act = YY_STATE_EOF(YY_START);
1259 						goto do_action;
1260 						}
1261 	
1262 					else
1263 						{
1264 						if ( ! yyg->yy_did_buffer_switch_on_eof )
1265 							YY_NEW_FILE;
1266 						}
1267 					break;
1268 					}
1269 	
1270 				case EOB_ACT_CONTINUE_SCAN:
1271 					yyg->yy_c_buf_p =
1272 						yyg->yytext_ptr + yy_amount_of_matched_text;
1273 	
1274 					yy_current_state = yy_get_previous_state( yyscanner );
1275 	
1276 					yy_cp = yyg->yy_c_buf_p;
1277 					yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
1278 					goto yy_match;
1279 	
1280 				case EOB_ACT_LAST_MATCH:
1281 					yyg->yy_c_buf_p =
1282 					&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars];
1283 	
1284 					yy_current_state = yy_get_previous_state( yyscanner );
1285 	
1286 					yy_cp = yyg->yy_c_buf_p;
1287 					yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
1288 					goto yy_find_action;
1289 				}
1290 			break;
1291 			}
1292 	
1293 		default:
1294 			YY_FATAL_ERROR(
1295 				"fatal flex scanner internal error--no action found" );
1296 		} /* end of action switch */
1297 			} /* end of scanning one token */
1298 		} /* end of user's declarations */
1299 	} /* end of yylex */
1300 	/* %ok-for-header */
1301 	
1302 	/* %if-c++-only */
1303 	/* %not-for-header */
1304 	
1305 	/* %ok-for-header */
1306 	
1307 	/* %endif */
1308 	
1309 	/* yy_get_next_buffer - try to read in a new buffer
1310 	 *
1311 	 * Returns a code representing an action:
1312 	 *	EOB_ACT_LAST_MATCH -
1313 	 *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position
1314 	 *	EOB_ACT_END_OF_FILE - end of file
1315 	 */
1316 	/* %if-c-only */
1317 	static int yy_get_next_buffer (yyscan_t yyscanner)
1318 	/* %endif */
1319 	/* %if-c++-only */
1320 	/* %endif */
1321 	{
1322 	    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1323 		char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
1324 		char *source = yyg->yytext_ptr;
1325 		yy_size_t number_to_move, i;
1326 		int ret_val;
1327 	
1328 		if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] )
1329 			YY_FATAL_ERROR(
1330 			"fatal flex scanner internal error--end of buffer missed" );
1331 	
1332 		if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
1333 			{ /* Don't try to fill the buffer, so this is an EOF. */
1334 			if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 )
1335 				{
1336 				/* We matched a single character, the EOB, so
1337 				 * treat this as a final EOF.
1338 				 */
1339 				return EOB_ACT_END_OF_FILE;
1340 				}
1341 	
1342 			else
1343 				{
1344 				/* We matched some text prior to the EOB, first
1345 				 * process it.
1346 				 */
1347 				return EOB_ACT_LAST_MATCH;
1348 				}
1349 			}
1350 	
1351 		/* Try to read more data. */
1352 	
1353 		/* First move last chars to start of buffer. */
1354 		number_to_move = (yy_size_t) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1;
1355 	
1356 		for ( i = 0; i < number_to_move; ++i )
1357 			*(dest++) = *(source++);
1358 	
1359 		if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
1360 			/* don't do the read, it's not guaranteed to return an EOF,
1361 			 * just force an EOF
1362 			 */
1363 			YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0;
1364 	
1365 		else
1366 			{
1367 				int num_to_read =
1368 				YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
1369 	
1370 			while ( num_to_read <= 0 )
1371 				{ /* Not enough room in the buffer - grow it. */
1372 	
1373 				/* just a shorter name for the current buffer */
1374 				YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
1375 	
1376 				int yy_c_buf_p_offset =
1377 					(int) (yyg->yy_c_buf_p - b->yy_ch_buf);
1378 	
1379 				if ( b->yy_is_our_buffer )
1380 					{
1381 					int new_size = b->yy_buf_size * 2;
1382 	
1383 					if ( new_size <= 0 )
1384 						b->yy_buf_size += b->yy_buf_size / 8;
1385 					else
1386 						b->yy_buf_size *= 2;
1387 	
1388 					b->yy_ch_buf = (char *)
1389 						/* Include room in for 2 EOB chars. */
1390 						yyrealloc((void *) b->yy_ch_buf,(yy_size_t) (b->yy_buf_size + 2) ,yyscanner );
1391 					}
1392 				else
1393 					/* Can't grow it, we don't own it. */
1394 					b->yy_ch_buf = NULL;
1395 	
1396 				if ( ! b->yy_ch_buf )
1397 					YY_FATAL_ERROR(
1398 					"fatal error - scanner input buffer overflow" );
1399 	
1400 				yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
1401 	
1402 				num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
1403 							number_to_move - 1;
1404 	
1405 				}
1406 	
1407 			if ( num_to_read > YY_READ_BUF_SIZE )
1408 				num_to_read = YY_READ_BUF_SIZE;
1409 	
1410 			/* Read in more data. */
1411 			YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
1412 				yyg->yy_n_chars, num_to_read );
1413 	
1414 			YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
1415 			}
1416 	
1417 		if ( yyg->yy_n_chars == 0 )
1418 			{
1419 			if ( number_to_move == YY_MORE_ADJ )
1420 				{
1421 				ret_val = EOB_ACT_END_OF_FILE;
1422 				yyrestart(yyin  ,yyscanner);
1423 				}
1424 	
1425 			else
1426 				{
1427 				ret_val = EOB_ACT_LAST_MATCH;
1428 				YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
1429 					YY_BUFFER_EOF_PENDING;
1430 				}
1431 			}
1432 	
1433 		else
1434 			ret_val = EOB_ACT_CONTINUE_SCAN;
1435 	
1436 		if ((int) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
1437 			/* Extend the array by 50%, plus the number we really need. */
1438 			int new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1);
1439 			YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,(yy_size_t) new_size ,yyscanner );
1440 			if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
1441 				YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
1442 		}
1443 	
1444 		yyg->yy_n_chars += number_to_move;
1445 		YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR;
1446 		YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
1447 	
1448 		yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
1449 	
1450 		return ret_val;
1451 	}
1452 	
1453 	/* yy_get_previous_state - get the state just before the EOB char was reached */
1454 	
1455 	/* %if-c-only */
1456 	/* %not-for-header */
1457 	
1458 	    static yy_state_type yy_get_previous_state (yyscan_t yyscanner)
1459 	/* %endif */
1460 	/* %if-c++-only */
1461 	/* %endif */
1462 	{
1463 		yy_state_type yy_current_state;
1464 		char *yy_cp;
1465 	    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1466 	
1467 	/* %% [15.0] code to get the start state into yy_current_state goes here */
1468 		yy_current_state = yyg->yy_start;
1469 	
1470 		for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp )
1471 			{
1472 	/* %% [16.0] code to find the next state goes here */
1473 			YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
1474 			if ( yy_accept[yy_current_state] )
1475 				{
1476 				yyg->yy_last_accepting_state = yy_current_state;
1477 				yyg->yy_last_accepting_cpos = yy_cp;
1478 				}
1479 			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1480 				{
1481 				yy_current_state = (int) yy_def[yy_current_state];
1482 				if ( yy_current_state >= 57 )
1483 					yy_c = yy_meta[(unsigned int) yy_c];
1484 				}
1485 			yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
1486 			}
1487 	
1488 		return yy_current_state;
1489 	}
1490 	
1491 	/* yy_try_NUL_trans - try to make a transition on the NUL character
1492 	 *
1493 	 * synopsis
1494 	 *	next_state = yy_try_NUL_trans( current_state );
1495 	 */
1496 	/* %if-c-only */
1497 	    static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state , yyscan_t yyscanner)
1498 	/* %endif */
1499 	/* %if-c++-only */
1500 	/* %endif */
1501 	{
1502 		int yy_is_jam;
1503 	    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */
1504 	/* %% [17.0] code to find the next state, and perhaps do backing up, goes here */
1505 		char *yy_cp = yyg->yy_c_buf_p;
1506 	
1507 		YY_CHAR yy_c = 1;
1508 		if ( yy_accept[yy_current_state] )
1509 			{
1510 			yyg->yy_last_accepting_state = yy_current_state;
1511 			yyg->yy_last_accepting_cpos = yy_cp;
1512 			}
1513 		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1514 			{
1515 			yy_current_state = (int) yy_def[yy_current_state];
1516 			if ( yy_current_state >= 57 )
1517 				yy_c = yy_meta[(unsigned int) yy_c];
1518 			}
1519 		yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
1520 		yy_is_jam = (yy_current_state == 56);
1521 	
1522 		(void)yyg;
1523 		return yy_is_jam ? 0 : yy_current_state;
1524 	}
1525 	
1526 	#ifndef YY_NO_UNPUT
1527 	/* %if-c-only */
1528 	
1529 	/* %endif */
1530 	#endif
1531 	
1532 	/* %if-c-only */
1533 	#ifndef YY_NO_INPUT
1534 	#ifdef __cplusplus
1535 	    static int yyinput (yyscan_t yyscanner)
1536 	#else
1537 	    static int input  (yyscan_t yyscanner)
1538 	#endif
1539 	
1540 	/* %endif */
1541 	/* %if-c++-only */
1542 	/* %endif */
1543 	{
1544 		int c;
1545 	    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1546 	
1547 		*yyg->yy_c_buf_p = yyg->yy_hold_char;
1548 	
1549 		if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
1550 			{
1551 			/* yy_c_buf_p now points to the character we want to return.
1552 			 * If this occurs *before* the EOB characters, then it's a
1553 			 * valid NUL; if not, then we've hit the end of the buffer.
1554 			 */
1555 			if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
1556 				/* This was really a NUL. */
1557 				*yyg->yy_c_buf_p = '\0';
1558 	
1559 			else
1560 				{ /* need more input */
1561 				int offset = yyg->yy_c_buf_p - yyg->yytext_ptr;
1562 				++yyg->yy_c_buf_p;
1563 	
1564 				switch ( yy_get_next_buffer( yyscanner ) )
1565 					{
1566 					case EOB_ACT_LAST_MATCH:
1567 						/* This happens because yy_g_n_b()
1568 						 * sees that we've accumulated a
1569 						 * token and flags that we need to
1570 						 * try matching the token before
1571 						 * proceeding.  But for input(),
1572 						 * there's no matching to consider.
1573 						 * So convert the EOB_ACT_LAST_MATCH
1574 						 * to EOB_ACT_END_OF_FILE.
1575 						 */
1576 	
1577 						/* Reset buffer status. */
1578 						yyrestart(yyin ,yyscanner);
1579 	
1580 						/*FALLTHROUGH*/
1581 	
1582 					case EOB_ACT_END_OF_FILE:
1583 						{
1584 						if ( yywrap(yyscanner ) )
1585 							return 0;
1586 	
1587 						if ( ! yyg->yy_did_buffer_switch_on_eof )
1588 							YY_NEW_FILE;
1589 	#ifdef __cplusplus
1590 						return yyinput(yyscanner);
1591 	#else
1592 						return input(yyscanner);
1593 	#endif
1594 						}
1595 	
1596 					case EOB_ACT_CONTINUE_SCAN:
1597 						yyg->yy_c_buf_p = yyg->yytext_ptr + offset;
1598 						break;
1599 					}
1600 				}
1601 			}
1602 	
1603 		c = *(unsigned char *) yyg->yy_c_buf_p;	/* cast for 8-bit char's */
1604 		*yyg->yy_c_buf_p = '\0';	/* preserve yytext */
1605 		yyg->yy_hold_char = *++yyg->yy_c_buf_p;
1606 	
1607 	/* %% [19.0] update BOL and yylineno */
1608 	
1609 		return c;
1610 	}
1611 	/* %if-c-only */
1612 	#endif	/* ifndef YY_NO_INPUT */
1613 	/* %endif */
1614 	
1615 	/** Immediately switch to a different input stream.
1616 	 * @param input_file A readable stream.
1617 	 * @param yyscanner The scanner object.
1618 	 * @note This function does not reset the start condition to @c INITIAL .
1619 	 */
1620 	/* %if-c-only */
1621 	    void yyrestart  (FILE * input_file , yyscan_t yyscanner)
1622 	/* %endif */
1623 	/* %if-c++-only */
1624 	/* %endif */
1625 	{
1626 	    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1627 	
1628 		if ( ! YY_CURRENT_BUFFER ){
1629 	        yyensure_buffer_stack (yyscanner);
1630 			YY_CURRENT_BUFFER_LVALUE =
1631 	            yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
1632 		}
1633 	
1634 		yy_init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner);
1635 		yy_load_buffer_state(yyscanner );
1636 	}
1637 	
1638 	/* %if-c++-only */
1639 	/* %endif */
1640 	
1641 	/** Switch to a different input buffer.
1642 	 * @param new_buffer The new input buffer.
1643 	 * @param yyscanner The scanner object.
1644 	 */
1645 	/* %if-c-only */
1646 	    void yy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer , yyscan_t yyscanner)
1647 	/* %endif */
1648 	/* %if-c++-only */
1649 	/* %endif */
1650 	{
1651 	    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1652 	
1653 		/* TODO. We should be able to replace this entire function body
1654 		 * with
1655 		 *		yypop_buffer_state();
1656 		 *		yypush_buffer_state(new_buffer);
1657 	     */
1658 		yyensure_buffer_stack (yyscanner);
1659 		if ( YY_CURRENT_BUFFER == new_buffer )
1660 			return;
1661 	
1662 		if ( YY_CURRENT_BUFFER )
1663 			{
1664 			/* Flush out information for old buffer. */
1665 			*yyg->yy_c_buf_p = yyg->yy_hold_char;
1666 			YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
1667 			YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
1668 			}
1669 	
1670 		YY_CURRENT_BUFFER_LVALUE = new_buffer;
1671 		yy_load_buffer_state(yyscanner );
1672 	
1673 		/* We don't actually know whether we did this switch during
1674 		 * EOF (yywrap()) processing, but the only time this flag
1675 		 * is looked at is after yywrap() is called, so it's safe
1676 		 * to go ahead and always set it.
1677 		 */
1678 		yyg->yy_did_buffer_switch_on_eof = 1;
1679 	}
1680 	
1681 	/* %if-c-only */
1682 	static void yy_load_buffer_state  (yyscan_t yyscanner)
1683 	/* %endif */
1684 	/* %if-c++-only */
1685 	/* %endif */
1686 	{
1687 	    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1688 		yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
1689 		yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
1690 	/* %if-c-only */
1691 		yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
1692 	/* %endif */
1693 	/* %if-c++-only */
1694 	/* %endif */
1695 		yyg->yy_hold_char = *yyg->yy_c_buf_p;
1696 	}
1697 	
1698 	/** Allocate and initialize an input buffer state.
1699 	 * @param file A readable stream.
1700 	 * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
1701 	 * @param yyscanner The scanner object.
1702 	 * @return the allocated buffer state.
1703 	 */
1704 	/* %if-c-only */
1705 	    YY_BUFFER_STATE yy_create_buffer  (FILE * file, int  size , yyscan_t yyscanner)
1706 	/* %endif */
1707 	/* %if-c++-only */
1708 	/* %endif */
1709 	{
1710 		YY_BUFFER_STATE b;
1711 	    
1712 		b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner );
1713 		if ( ! b )
1714 			YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
1715 	
1716 		b->yy_buf_size = size;
1717 	
1718 		/* yy_ch_buf has to be 2 characters longer than the size given because
1719 		 * we need to put in 2 end-of-buffer characters.
1720 		 */
1721 		b->yy_ch_buf = (char *) yyalloc((yy_size_t) (b->yy_buf_size + 2) ,yyscanner );
1722 		if ( ! b->yy_ch_buf )
1723 			YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
1724 	
1725 		b->yy_is_our_buffer = 1;
1726 	
1727 		yy_init_buffer(b,file ,yyscanner);
1728 	
1729 		return b;
1730 	}
1731 	
1732 	/* %if-c++-only */
1733 	/* %endif */
1734 	
1735 	/** Destroy the buffer.
1736 	 * @param b a buffer created with yy_create_buffer()
1737 	 * @param yyscanner The scanner object.
1738 	 */
1739 	/* %if-c-only */
1740 	    void yy_delete_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
1741 	/* %endif */
1742 	/* %if-c++-only */
1743 	/* %endif */
1744 	{
1745 	    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1746 	
1747 		if ( ! b )
1748 			return;
1749 	
1750 		if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
1751 			YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
1752 	
1753 		if ( b->yy_is_our_buffer )
1754 			yyfree((void *) b->yy_ch_buf ,yyscanner );
1755 	
1756 		yyfree((void *) b ,yyscanner );
1757 	}
1758 	
1759 	/* Initializes or reinitializes a buffer.
1760 	 * This function is sometimes called more than once on the same buffer,
1761 	 * such as during a yyrestart() or at EOF.
1762 	 */
1763 	/* %if-c-only */
1764 	    static void yy_init_buffer  (YY_BUFFER_STATE  b, FILE * file , yyscan_t yyscanner)
1765 	/* %endif */
1766 	/* %if-c++-only */
1767 	/* %endif */
1768 	
1769 	{
1770 		int oerrno = errno;
1771 	    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1772 	
1773 		yy_flush_buffer(b ,yyscanner);
1774 	
1775 	/* %if-c-only */
1776 		b->yy_input_file = file;
1777 	/* %endif */
1778 	/* %if-c++-only */
1779 	/* %endif */
1780 		b->yy_fill_buffer = 1;
1781 	
1782 	    /* If b is the current buffer, then yy_init_buffer was _probably_
1783 	     * called from yyrestart() or through yy_get_next_buffer.
1784 	     * In that case, we don't want to reset the lineno or column.
1785 	     */
1786 	    if (b != YY_CURRENT_BUFFER){
1787 	        b->yy_bs_lineno = 1;
1788 	        b->yy_bs_column = 0;
1789 	    }
1790 	
1791 	/* %if-c-only */
1792 	
1793 	        b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
1794 	    
1795 	/* %endif */
1796 	/* %if-c++-only */
1797 	/* %endif */
1798 		errno = oerrno;
1799 	}
1800 	
1801 	/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
1802 	 * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
1803 	 * @param yyscanner The scanner object.
1804 	 */
1805 	/* %if-c-only */
1806 	    void yy_flush_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
1807 	/* %endif */
1808 	/* %if-c++-only */
1809 	/* %endif */
1810 	{
1811 	    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1812 		if ( ! b )
1813 			return;
1814 	
1815 		b->yy_n_chars = 0;
1816 	
1817 		/* We always need two end-of-buffer characters.  The first causes
1818 		 * a transition to the end-of-buffer state.  The second causes
1819 		 * a jam in that state.
1820 		 */
1821 		b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
1822 		b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
1823 	
1824 		b->yy_buf_pos = &b->yy_ch_buf[0];
1825 	
1826 		b->yy_at_bol = 1;
1827 		b->yy_buffer_status = YY_BUFFER_NEW;
1828 	
1829 		if ( b == YY_CURRENT_BUFFER )
1830 			yy_load_buffer_state(yyscanner );
1831 	}
1832 	
1833 	/* %if-c-or-c++ */
1834 	/** Pushes the new state onto the stack. The new state becomes
1835 	 *  the current state. This function will allocate the stack
1836 	 *  if necessary.
1837 	 *  @param new_buffer The new state.
1838 	 *  @param yyscanner The scanner object.
1839 	 */
1840 	/* %if-c-only */
1841 	void yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
1842 	/* %endif */
1843 	/* %if-c++-only */
1844 	/* %endif */
1845 	{
1846 	    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1847 		if (new_buffer == NULL)
1848 			return;
1849 	
1850 		yyensure_buffer_stack(yyscanner);
1851 	
1852 		/* This block is copied from yy_switch_to_buffer. */
1853 		if ( YY_CURRENT_BUFFER )
1854 			{
1855 			/* Flush out information for old buffer. */
1856 			*yyg->yy_c_buf_p = yyg->yy_hold_char;
1857 			YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
1858 			YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
1859 			}
1860 	
1861 		/* Only push if top exists. Otherwise, replace top. */
1862 		if (YY_CURRENT_BUFFER)
1863 			yyg->yy_buffer_stack_top++;
1864 		YY_CURRENT_BUFFER_LVALUE = new_buffer;
1865 	
1866 		/* copied from yy_switch_to_buffer. */
1867 		yy_load_buffer_state(yyscanner );
1868 		yyg->yy_did_buffer_switch_on_eof = 1;
1869 	}
1870 	/* %endif */
1871 	
1872 	/* %if-c-or-c++ */
1873 	/** Removes and deletes the top of the stack, if present.
1874 	 *  The next element becomes the new top.
1875 	 *  @param yyscanner The scanner object.
1876 	 */
1877 	/* %if-c-only */
1878 	void yypop_buffer_state (yyscan_t yyscanner)
1879 	/* %endif */
1880 	/* %if-c++-only */
1881 	/* %endif */
1882 	{
1883 	    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1884 		if (!YY_CURRENT_BUFFER)
1885 			return;
1886 	
1887 		yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner);
1888 		YY_CURRENT_BUFFER_LVALUE = NULL;
1889 		if (yyg->yy_buffer_stack_top > 0)
1890 			--yyg->yy_buffer_stack_top;
1891 	
1892 		if (YY_CURRENT_BUFFER) {
1893 			yy_load_buffer_state(yyscanner );
1894 			yyg->yy_did_buffer_switch_on_eof = 1;
1895 		}
1896 	}
1897 	/* %endif */
1898 	
1899 	/* %if-c-or-c++ */
1900 	/* Allocates the stack if it does not exist.
1901 	 *  Guarantees space for at least one push.
1902 	 */
1903 	/* %if-c-only */
1904 	static void yyensure_buffer_stack (yyscan_t yyscanner)
1905 	/* %endif */
1906 	/* %if-c++-only */
1907 	/* %endif */
1908 	{
1909 		int num_to_alloc;
1910 	    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1911 	
1912 		if (!yyg->yy_buffer_stack) {
1913 	
1914 			/* First allocation is just for 2 elements, since we don't know if this
1915 			 * scanner will even need a stack. We use 2 instead of 1 to avoid an
1916 			 * immediate realloc on the next call.
1917 	         */
1918 	      num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */
1919 			yyg->yy_buffer_stack = (struct yy_buffer_state**)yyalloc
1920 									(num_to_alloc * sizeof(struct yy_buffer_state*)
1921 									, yyscanner);
1922 			if ( ! yyg->yy_buffer_stack )
1923 				YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
1924 									  
1925 			memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*));
1926 					
1927 			yyg->yy_buffer_stack_max = num_to_alloc;
1928 			yyg->yy_buffer_stack_top = 0;
1929 			return;
1930 		}
1931 	
1932 		if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){
1933 	
1934 			/* Increase the buffer to prepare for a possible push. */
1935 			yy_size_t grow_size = 8 /* arbitrary grow size */;
1936 	
1937 			num_to_alloc = yyg->yy_buffer_stack_max + grow_size;
1938 			yyg->yy_buffer_stack = (struct yy_buffer_state**)yyrealloc
1939 									(yyg->yy_buffer_stack,
1940 									num_to_alloc * sizeof(struct yy_buffer_state*)
1941 									, yyscanner);
1942 			if ( ! yyg->yy_buffer_stack )
1943 				YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
1944 	
1945 			/* zero only the new slots.*/
1946 			memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*));
1947 			yyg->yy_buffer_stack_max = num_to_alloc;
1948 		}
1949 	}
1950 	/* %endif */
1951 	
1952 	/* %if-c-only */
1953 	/** Setup the input buffer state to scan directly from a user-specified character buffer.
1954 	 * @param base the character buffer
1955 	 * @param size the size in bytes of the character buffer
1956 	 * @param yyscanner The scanner object.
1957 	 * @return the newly allocated buffer state object. 
1958 	 */
1959 	YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size , yyscan_t yyscanner)
1960 	{
1961 		YY_BUFFER_STATE b;
1962 	    
1963 		if ( size < 2 ||
1964 		     base[size-2] != YY_END_OF_BUFFER_CHAR ||
1965 		     base[size-1] != YY_END_OF_BUFFER_CHAR )
1966 			/* They forgot to leave room for the EOB's. */
1967 			return NULL;
1968 	
1969 		b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner );
1970 		if ( ! b )
1971 			YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
1972 	
1973 		b->yy_buf_size = (int) (size - 2);	/* "- 2" to take care of EOB's */
1974 		b->yy_buf_pos = b->yy_ch_buf = base;
1975 		b->yy_is_our_buffer = 0;
1976 		b->yy_input_file = NULL;
1977 		b->yy_n_chars = b->yy_buf_size;
1978 		b->yy_is_interactive = 0;
1979 		b->yy_at_bol = 1;
1980 		b->yy_fill_buffer = 0;
1981 		b->yy_buffer_status = YY_BUFFER_NEW;
1982 	
1983 		yy_switch_to_buffer(b ,yyscanner );
1984 	
1985 		return b;
1986 	}
1987 	/* %endif */
1988 	
1989 	/* %if-c-only */
1990 	/** Setup the input buffer state to scan a string. The next call to yylex() will
1991 	 * scan from a @e copy of @a str.
1992 	 * @param yystr a NUL-terminated string to scan
1993 	 * @param yyscanner The scanner object.
1994 	 * @return the newly allocated buffer state object.
1995 	 * @note If you want to scan bytes that may contain NUL values, then use
1996 	 *       yy_scan_bytes() instead.
1997 	 */
1998 	YY_BUFFER_STATE yy_scan_string (yyconst char * yystr , yyscan_t yyscanner)
1999 	{
2000 	    
2001 		return yy_scan_bytes(yystr,(int) strlen(yystr) ,yyscanner);
2002 	}
2003 	/* %endif */
2004 	
2005 	/* %if-c-only */
2006 	/** Setup the input buffer state to scan the given bytes. The next call to yylex() will
2007 	 * scan from a @e copy of @a bytes.
2008 	 * @param yybytes the byte buffer to scan
2009 	 * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
2010 	 * @param yyscanner The scanner object.
2011 	 * @return the newly allocated buffer state object.
2012 	 */
2013 	YY_BUFFER_STATE yy_scan_bytes  (yyconst char * yybytes, int  _yybytes_len , yyscan_t yyscanner)
2014 	{
2015 		YY_BUFFER_STATE b;
2016 		char *buf;
2017 		yy_size_t n;
2018 		int i;
2019 	    
2020 		/* Get memory for full buffer, including space for trailing EOB's. */
2021 		n = (yy_size_t) (_yybytes_len + 2);
2022 		buf = (char *) yyalloc(n ,yyscanner );
2023 		if ( ! buf )
2024 			YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
2025 	
2026 		for ( i = 0; i < _yybytes_len; ++i )
2027 			buf[i] = yybytes[i];
2028 	
2029 		buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
2030 	
2031 		b = yy_scan_buffer(buf,n ,yyscanner);
2032 		if ( ! b )
2033 			YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
2034 	
2035 		/* It's okay to grow etc. this buffer, and we should throw it
2036 		 * away when we're done.
2037 		 */
2038 		b->yy_is_our_buffer = 1;
2039 	
2040 		return b;
2041 	}
2042 	/* %endif */
2043 	
2044 	#ifndef YY_EXIT_FAILURE
2045 	#define YY_EXIT_FAILURE 2
2046 	#endif
2047 	
2048 	/* %if-c-only */
2049 	static void yynoreturn yy_fatal_error (yyconst char* msg , yyscan_t yyscanner)
2050 	{
2051 		struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2052 		(void)yyg;
2053 		(void) fprintf( stderr, "%s\n", msg );
2054 		exit( YY_EXIT_FAILURE );
2055 	}
2056 	/* %endif */
2057 	/* %if-c++-only */
2058 	/* %endif */
2059 	
2060 	/* Redefine yyless() so it works in section 3 code. */
2061 	
2062 	#undef yyless
2063 	#define yyless(n) \
2064 		do \
2065 			{ \
2066 			/* Undo effects of setting up yytext. */ \
2067 	        yy_size_t yyless_macro_arg = (n); \
2068 	        YY_LESS_LINENO(yyless_macro_arg);\
2069 			yytext[yyleng] = yyg->yy_hold_char; \
2070 			yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
2071 			yyg->yy_hold_char = *yyg->yy_c_buf_p; \
2072 			*yyg->yy_c_buf_p = '\0'; \
2073 			yyleng = yyless_macro_arg; \
2074 			} \
2075 		while ( 0 )
2076 	
2077 	/* Accessor  methods (get/set functions) to struct members. */
2078 	
2079 	/* %if-c-only */
2080 	/* %if-reentrant */
2081 	
2082 	/** Get the user-defined data for this scanner.
2083 	 * @param yyscanner The scanner object.
2084 	 */
2085 	YY_EXTRA_TYPE yyget_extra  (yyscan_t yyscanner)
2086 	{
2087 	    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2088 	    return yyextra;
2089 	}
2090 	
2091 	/* %endif */
2092 	
2093 	/** Get the current line number.
2094 	 * @param yyscanner The scanner object.
2095 	 */
2096 	int yyget_lineno  (yyscan_t yyscanner)
2097 	{
2098 	    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2099 	    
2100 	        if (! YY_CURRENT_BUFFER)
2101 	            return 0;
2102 	    
2103 	    return yylineno;
2104 	}
2105 	
2106 	/** Get the current column number.
2107 	 * @param yyscanner The scanner object.
2108 	 */
2109 	int yyget_column  (yyscan_t yyscanner)
2110 	{
2111 	    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2112 	    
2113 	        if (! YY_CURRENT_BUFFER)
2114 	            return 0;
2115 	    
2116 	    return yycolumn;
2117 	}
2118 	
2119 	/** Get the input stream.
2120 	 * @param yyscanner The scanner object.
2121 	 */
2122 	FILE *yyget_in  (yyscan_t yyscanner)
2123 	{
2124 	    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2125 	    return yyin;
2126 	}
2127 	
2128 	/** Get the output stream.
2129 	 * @param yyscanner The scanner object.
2130 	 */
2131 	FILE *yyget_out  (yyscan_t yyscanner)
2132 	{
2133 	    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2134 	    return yyout;
2135 	}
2136 	
2137 	/** Get the length of the current token.
2138 	 * @param yyscanner The scanner object.
2139 	 */
2140 	int yyget_leng  (yyscan_t yyscanner)
2141 	{
2142 	    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2143 	    return yyleng;
2144 	}
2145 	
2146 	/** Get the current token.
2147 	 * @param yyscanner The scanner object.
2148 	 */
2149 	
2150 	char *yyget_text  (yyscan_t yyscanner)
2151 	{
2152 	    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2153 	    return yytext;
2154 	}
2155 	
2156 	/* %if-reentrant */
2157 	
2158 	/** Set the user-defined data. This data is never touched by the scanner.
2159 	 * @param user_defined The data to be associated with this scanner.
2160 	 * @param yyscanner The scanner object.
2161 	 */
2162 	void yyset_extra (YY_EXTRA_TYPE  user_defined , yyscan_t yyscanner)
2163 	{
2164 	    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2165 	    yyextra = user_defined ;
2166 	}
2167 	
2168 	/* %endif */
2169 	
2170 	/** Set the current line number.
2171 	 * @param _line_number line number
2172 	 * @param yyscanner The scanner object.
2173 	 */
2174 	void yyset_lineno (int  _line_number , yyscan_t yyscanner)
2175 	{
2176 	    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2177 	
2178 	        /* lineno is only valid if an input buffer exists. */
2179 	        if (! YY_CURRENT_BUFFER )
2180 	           YY_FATAL_ERROR( "yyset_lineno called with no buffer" );
2181 	    
2182 	    yylineno = _line_number;
2183 	}
2184 	
2185 	/** Set the current column.
2186 	 * @param _column_no column number
2187 	 * @param yyscanner The scanner object.
2188 	 */
2189 	void yyset_column (int  _column_no , yyscan_t yyscanner)
2190 	{
2191 	    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2192 	
2193 	        /* column is only valid if an input buffer exists. */
2194 	        if (! YY_CURRENT_BUFFER )
2195 	           YY_FATAL_ERROR( "yyset_column called with no buffer" );
2196 	    
2197 	    yycolumn = _column_no;
2198 	}
2199 	
2200 	/** Set the input stream. This does not discard the current
2201 	 * input buffer.
2202 	 * @param _in_str A readable stream.
2203 	 * @param yyscanner The scanner object.
2204 	 * @see yy_switch_to_buffer
2205 	 */
2206 	void yyset_in (FILE *  _in_str , yyscan_t yyscanner)
2207 	{
2208 	    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2209 	    yyin = _in_str ;
2210 	}
2211 	
2212 	void yyset_out (FILE *  _out_str , yyscan_t yyscanner)
2213 	{
2214 	    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2215 	    yyout = _out_str ;
2216 	}
2217 	
2218 	int yyget_debug  (yyscan_t yyscanner)
2219 	{
2220 	    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2221 	    return yy_flex_debug;
2222 	}
2223 	
2224 	void yyset_debug (int  _bdebug , yyscan_t yyscanner)
2225 	{
2226 	    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2227 	    yy_flex_debug = _bdebug ;
2228 	}
2229 	
2230 	/* %endif */
2231 	
2232 	/* %if-reentrant */
2233 	/* Accessor methods for yylval and yylloc */
2234 	
2235 	/* %if-bison-bridge */
2236 	
2237 	YYSTYPE * yyget_lval  (yyscan_t yyscanner)
2238 	{
2239 	    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2240 	    return yylval;
2241 	}
2242 	
2243 	void yyset_lval (YYSTYPE *  yylval_param , yyscan_t yyscanner)
2244 	{
2245 	    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2246 	    yylval = yylval_param;
2247 	}
2248 	
2249 	/* %endif */
2250 	
2251 	/* User-visible API */
2252 	
2253 	/* yylex_init is special because it creates the scanner itself, so it is
2254 	 * the ONLY reentrant function that doesn't take the scanner as the last argument.
2255 	 * That's why we explicitly handle the declaration, instead of using our macros.
2256 	 */
2257 	
2258 	int yylex_init(yyscan_t* ptr_yy_globals)
2259 	
2260 	{
2261 	    if (ptr_yy_globals == NULL){
2262 	        errno = EINVAL;
2263 	        return 1;
2264 	    }
2265 	
2266 	    *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), NULL );
2267 	
2268 	    if (*ptr_yy_globals == NULL){
2269 	        errno = ENOMEM;
2270 	        return 1;
2271 	    }
2272 	
2273 	    /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */
2274 	    memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
2275 	
2276 	    return yy_init_globals ( *ptr_yy_globals );
2277 	}
2278 	
2279 	/* yylex_init_extra has the same functionality as yylex_init, but follows the
2280 	 * convention of taking the scanner as the last argument. Note however, that
2281 	 * this is a *pointer* to a scanner, as it will be allocated by this call (and
2282 	 * is the reason, too, why this function also must handle its own declaration).
2283 	 * The user defined value in the first argument will be available to yyalloc in
2284 	 * the yyextra field.
2285 	 */
2286 	
2287 	int yylex_init_extra(YY_EXTRA_TYPE yy_user_defined,yyscan_t* ptr_yy_globals )
2288 	
2289 	{
2290 	    struct yyguts_t dummy_yyguts;
2291 	
2292 	    yyset_extra (yy_user_defined, &dummy_yyguts);
2293 	
2294 	    if (ptr_yy_globals == NULL){
2295 	        errno = EINVAL;
2296 	        return 1;
2297 	    }
2298 		
2299 	    *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), &dummy_yyguts );
2300 		
2301 	    if (*ptr_yy_globals == NULL){
2302 	        errno = ENOMEM;
2303 	        return 1;
2304 	    }
2305 	    
2306 	    /* By setting to 0xAA, we expose bugs in
2307 	    yy_init_globals. Leave at 0x00 for releases. */
2308 	    memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
2309 	    
2310 	    yyset_extra (yy_user_defined, *ptr_yy_globals);
2311 	    
2312 	    return yy_init_globals ( *ptr_yy_globals );
2313 	}
2314 	
2315 	/* %endif if-c-only */
2316 	
2317 	/* %if-c-only */
2318 	static int yy_init_globals (yyscan_t yyscanner)
2319 	{
2320 	    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2321 	    /* Initialization is the same as for the non-reentrant scanner.
2322 	     * This function is called from yylex_destroy(), so don't allocate here.
2323 	     */
2324 	
2325 	    yyg->yy_buffer_stack = NULL;
2326 	    yyg->yy_buffer_stack_top = 0;
2327 	    yyg->yy_buffer_stack_max = 0;
2328 	    yyg->yy_c_buf_p = NULL;
2329 	    yyg->yy_init = 0;
2330 	    yyg->yy_start = 0;
2331 	
2332 	    yyg->yy_start_stack_ptr = 0;
2333 	    yyg->yy_start_stack_depth = 0;
2334 	    yyg->yy_start_stack =  NULL;
2335 	
2336 	/* Defined in main.c */
2337 	#ifdef YY_STDINIT
2338 	    yyin = stdin;
2339 	    yyout = stdout;
2340 	#else
2341 	    yyin = NULL;
2342 	    yyout = NULL;
2343 	#endif
2344 	
2345 	    /* For future reference: Set errno on error, since we are called by
2346 	     * yylex_init()
2347 	     */
2348 	    return 0;
2349 	}
2350 	/* %endif */
2351 	
2352 	/* %if-c-only SNIP! this currently causes conflicts with the c++ scanner */
2353 	/* yylex_destroy is for both reentrant and non-reentrant scanners. */
2354 	int yylex_destroy  (yyscan_t yyscanner)
2355 	{
2356 	    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2357 	
2358 	    /* Pop the buffer stack, destroying each element. */
2359 		while(YY_CURRENT_BUFFER){
2360 			yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner );
2361 			YY_CURRENT_BUFFER_LVALUE = NULL;
2362 			yypop_buffer_state(yyscanner);
2363 		}
2364 	
2365 		/* Destroy the stack itself. */
2366 		yyfree(yyg->yy_buffer_stack ,yyscanner);
2367 		yyg->yy_buffer_stack = NULL;
2368 	
2369 	    /* Destroy the start condition stack. */
2370 	        yyfree(yyg->yy_start_stack ,yyscanner );
2371 	        yyg->yy_start_stack = NULL;
2372 	
2373 	    /* Reset the globals. This is important in a non-reentrant scanner so the next time
2374 	     * yylex() is called, initialization will occur. */
2375 	    yy_init_globals( yyscanner);
2376 	
2377 	/* %if-reentrant */
2378 	    /* Destroy the main struct (reentrant only). */
2379 	    yyfree ( yyscanner , yyscanner );
2380 	    yyscanner = NULL;
2381 	/* %endif */
2382 	    return 0;
2383 	}
2384 	/* %endif */
2385 	
2386 	/*
2387 	 * Internal utility routines.
2388 	 */
2389 	
2390 	#ifndef yytext_ptr
2391 	static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner)
2392 	{
2393 		struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2394 		(void)yyg;
2395 	
2396 		int i;
2397 		for ( i = 0; i < n; ++i )
2398 			s1[i] = s2[i];
2399 	}
2400 	#endif
2401 	
2402 	#ifdef YY_NEED_STRLEN
2403 	static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner)
2404 	{
2405 		int n;
2406 		for ( n = 0; s[n]; ++n )
2407 			;
2408 	
2409 		return n;
2410 	}
2411 	#endif
2412 	
2413 	void *yyalloc (yy_size_t  size , yyscan_t yyscanner)
2414 	{
2415 		struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2416 		(void)yyg;
2417 		return malloc(size);
2418 	}
2419 	
2420 	void *yyrealloc  (void * ptr, yy_size_t  size , yyscan_t yyscanner)
2421 	{
2422 		struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2423 		(void)yyg;
2424 	
2425 		/* The cast to (char *) in the following accommodates both
2426 		 * implementations that use char* generic pointers, and those
2427 		 * that use void* generic pointers.  It works with the latter
2428 		 * because both ANSI C and C++ allow castless assignment from
2429 		 * any pointer type to void*, and deal with argument conversions
2430 		 * as though doing an assignment.
2431 		 */
2432 		return realloc(ptr, size);
2433 	}
2434 	
2435 	void yyfree (void * ptr , yyscan_t yyscanner)
2436 	{
2437 		struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2438 		(void)yyg;
2439 		free( (char *) ptr );	/* see yyrealloc() for (char *) cast */
2440 	}
2441 	
2442 	/* %if-tables-serialization definitions */
2443 	/* %define-yytables   The name for this specific scanner's tables. */
2444 	#define YYTABLES_NAME "yytables"
2445 	/* %endif */
2446 	
2447 	/* %ok-for-header */
2448 	
2449 	#line 108 "lexer.l"
2450 	
2451 	
2452 	
2453