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