0275dab03cc778e1dd67b73471b8ea436c21ce81
[scilab.git] / scilab / modules / ast / src / cpp / parse / scanscilab.cpp
1
2 #line 3 "src/cpp/parse/scanscilab.cpp"
3
4 #define  YY_INT_ALIGNED short int
5
6 /* A lexical scanner generated by flex */
7
8 #define FLEX_SCANNER
9 #define YY_FLEX_MAJOR_VERSION 2
10 #define YY_FLEX_MINOR_VERSION 5
11 #define YY_FLEX_SUBMINOR_VERSION 35
12 #if YY_FLEX_SUBMINOR_VERSION > 0
13 #define FLEX_BETA
14 #endif
15
16 /* First, we deal with  platform-specific or compiler-specific issues. */
17
18 /* begin standard C headers. */
19 #include <stdio.h>
20 #include <string.h>
21 #include <errno.h>
22 #include <stdlib.h>
23
24 /* end standard C headers. */
25
26 /* flex integer type definitions */
27
28 #ifndef FLEXINT_H
29 #define FLEXINT_H
30
31 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
32
33 #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
34
35 /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
36  * if you want the limit (max/min) macros for int types. 
37  */
38 #ifndef __STDC_LIMIT_MACROS
39 #define __STDC_LIMIT_MACROS 1
40 #endif
41
42 #include <inttypes.h>
43 typedef int8_t flex_int8_t;
44 typedef uint8_t flex_uint8_t;
45 typedef int16_t flex_int16_t;
46 typedef uint16_t flex_uint16_t;
47 typedef int32_t flex_int32_t;
48 typedef uint32_t flex_uint32_t;
49 #else
50 typedef signed char flex_int8_t;
51 typedef short int flex_int16_t;
52 typedef int flex_int32_t;
53 typedef unsigned char flex_uint8_t; 
54 typedef unsigned short int flex_uint16_t;
55 typedef unsigned int flex_uint32_t;
56
57 /* Limits of integral types. */
58 #ifndef INT8_MIN
59 #define INT8_MIN               (-128)
60 #endif
61 #ifndef INT16_MIN
62 #define INT16_MIN              (-32767-1)
63 #endif
64 #ifndef INT32_MIN
65 #define INT32_MIN              (-2147483647-1)
66 #endif
67 #ifndef INT8_MAX
68 #define INT8_MAX               (127)
69 #endif
70 #ifndef INT16_MAX
71 #define INT16_MAX              (32767)
72 #endif
73 #ifndef INT32_MAX
74 #define INT32_MAX              (2147483647)
75 #endif
76 #ifndef UINT8_MAX
77 #define UINT8_MAX              (255U)
78 #endif
79 #ifndef UINT16_MAX
80 #define UINT16_MAX             (65535U)
81 #endif
82 #ifndef UINT32_MAX
83 #define UINT32_MAX             (4294967295U)
84 #endif
85
86 #endif /* ! C99 */
87
88 #endif /* ! FLEXINT_H */
89
90 #ifdef __cplusplus
91
92 /* The "const" storage-class-modifier is valid. */
93 #define YY_USE_CONST
94
95 #else   /* ! __cplusplus */
96
97 /* C99 requires __STDC__ to be defined as 1. */
98 #if defined (__STDC__)
99
100 #define YY_USE_CONST
101
102 #endif  /* defined (__STDC__) */
103 #endif  /* ! __cplusplus */
104
105 #ifdef YY_USE_CONST
106 #define yyconst const
107 #else
108 #define yyconst
109 #endif
110
111 /* Returned upon end-of-file. */
112 #define YY_NULL 0
113
114 /* Promotes a possibly negative, possibly signed char to an unsigned
115  * integer for use as an array index.  If the signed char is negative,
116  * we want to instead treat it as an 8-bit unsigned char, hence the
117  * double cast.
118  */
119 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
120
121 /* Enter a start condition.  This macro really ought to take a parameter,
122  * but we do it the disgusting crufty way forced on us by the ()-less
123  * definition of BEGIN.
124  */
125 #define BEGIN (yy_start) = 1 + 2 *
126
127 /* Translate the current start state into a value that can be later handed
128  * to BEGIN to return to the state.  The YYSTATE alias is for lex
129  * compatibility.
130  */
131 #define YY_START (((yy_start) - 1) / 2)
132 #define YYSTATE YY_START
133
134 /* Action number for EOF rule of a given start state. */
135 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
136
137 /* Special action meaning "start processing a new file". */
138 #define YY_NEW_FILE yyrestart(yyin  )
139
140 #define YY_END_OF_BUFFER_CHAR 0
141
142 /* Size of default input buffer. */
143 #ifndef YY_BUF_SIZE
144 #ifdef __ia64__
145 /* On IA-64, the buffer size is 16k, not 8k.
146  * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
147  * Ditto for the __ia64__ case accordingly.
148  */
149 #define YY_BUF_SIZE 32768
150 #else
151 #define YY_BUF_SIZE 16384
152 #endif /* __ia64__ */
153 #endif
154
155 /* The state buf must be large enough to hold one state per character in the main buffer.
156  */
157 #define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
158
159 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
160 #define YY_TYPEDEF_YY_BUFFER_STATE
161 typedef struct yy_buffer_state *YY_BUFFER_STATE;
162 #endif
163
164 extern int yyleng;
165
166 extern FILE *yyin, *yyout;
167
168 #define EOB_ACT_CONTINUE_SCAN 0
169 #define EOB_ACT_END_OF_FILE 1
170 #define EOB_ACT_LAST_MATCH 2
171
172     #define YY_LESS_LINENO(n)
173     
174 /* Return all but the first "n" matched characters back to the input stream. */
175 #define yyless(n) \
176         do \
177                 { \
178                 /* Undo effects of setting up yytext. */ \
179         int yyless_macro_arg = (n); \
180         YY_LESS_LINENO(yyless_macro_arg);\
181                 *yy_cp = (yy_hold_char); \
182                 YY_RESTORE_YY_MORE_OFFSET \
183                 (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
184                 YY_DO_BEFORE_ACTION; /* set up yytext again */ \
185                 } \
186         while ( 0 )
187
188 #define unput(c) yyunput( c, (yytext_ptr)  )
189
190 #ifndef YY_TYPEDEF_YY_SIZE_T
191 #define YY_TYPEDEF_YY_SIZE_T
192 typedef size_t yy_size_t;
193 #endif
194
195 #ifndef YY_STRUCT_YY_BUFFER_STATE
196 #define YY_STRUCT_YY_BUFFER_STATE
197 struct yy_buffer_state
198         {
199         FILE *yy_input_file;
200
201         char *yy_ch_buf;                /* input buffer */
202         char *yy_buf_pos;               /* current position in input buffer */
203
204         /* Size of input buffer in bytes, not including room for EOB
205          * characters.
206          */
207         yy_size_t yy_buf_size;
208
209         /* Number of characters read into yy_ch_buf, not including EOB
210          * characters.
211          */
212         int yy_n_chars;
213
214         /* Whether we "own" the buffer - i.e., we know we created it,
215          * and can realloc() it to grow it, and should free() it to
216          * delete it.
217          */
218         int yy_is_our_buffer;
219
220         /* Whether this is an "interactive" input source; if so, and
221          * if we're using stdio for input, then we want to use getc()
222          * instead of fread(), to make sure we stop fetching input after
223          * each newline.
224          */
225         int yy_is_interactive;
226
227         /* Whether we're considered to be at the beginning of a line.
228          * If so, '^' rules will be active on the next match, otherwise
229          * not.
230          */
231         int yy_at_bol;
232
233     int yy_bs_lineno; /**< The line count. */
234     int yy_bs_column; /**< The column count. */
235     
236         /* Whether to try to fill the input buffer when we reach the
237          * end of it.
238          */
239         int yy_fill_buffer;
240
241         int yy_buffer_status;
242
243 #define YY_BUFFER_NEW 0
244 #define YY_BUFFER_NORMAL 1
245         /* When an EOF's been seen but there's still some text to process
246          * then we mark the buffer as YY_EOF_PENDING, to indicate that we
247          * shouldn't try reading from the input source any more.  We might
248          * still have a bunch of tokens to match, though, because of
249          * possible backing-up.
250          *
251          * When we actually see the EOF, we change the status to "new"
252          * (via yyrestart()), so that the user can continue scanning by
253          * just pointing yyin at a new input file.
254          */
255 #define YY_BUFFER_EOF_PENDING 2
256
257         };
258 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
259
260 /* Stack of input buffers. */
261 static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
262 static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
263 static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
264
265 /* We provide macros for accessing buffer states in case in the
266  * future we want to put the buffer states in a more general
267  * "scanner state".
268  *
269  * Returns the top of the stack, or NULL.
270  */
271 #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
272                           ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
273                           : NULL)
274
275 /* Same as previous macro, but useful when we know that the buffer stack is not
276  * NULL or when we need an lvalue. For internal use only.
277  */
278 #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
279
280 /* yy_hold_char holds the character lost when yytext is formed. */
281 static char yy_hold_char;
282 static int yy_n_chars;          /* number of characters read into yy_ch_buf */
283 int yyleng;
284
285 /* Points to current character in buffer. */
286 static char *yy_c_buf_p = (char *) 0;
287 static int yy_init = 0;         /* whether we need to initialize */
288 static int yy_start = 0;        /* start state number */
289
290 /* Flag which is used to allow yywrap()'s to do buffer switches
291  * instead of setting up a fresh yyin.  A bit of a hack ...
292  */
293 static int yy_did_buffer_switch_on_eof;
294
295 void yyrestart (FILE *input_file  );
296 void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer  );
297 YY_BUFFER_STATE yy_create_buffer (FILE *file,int size  );
298 void yy_delete_buffer (YY_BUFFER_STATE b  );
299 void yy_flush_buffer (YY_BUFFER_STATE b  );
300 void yypush_buffer_state (YY_BUFFER_STATE new_buffer  );
301 void yypop_buffer_state (void );
302
303 static void yyensure_buffer_stack (void );
304 static void yy_load_buffer_state (void );
305 static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file  );
306
307 #define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER )
308
309 YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size  );
310 YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str  );
311 YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len  );
312
313 void *yyalloc (yy_size_t  );
314 void *yyrealloc (void *,yy_size_t  );
315 void yyfree (void *  );
316
317 #define yy_new_buffer yy_create_buffer
318
319 #define yy_set_interactive(is_interactive) \
320         { \
321         if ( ! YY_CURRENT_BUFFER ){ \
322         yyensure_buffer_stack (); \
323                 YY_CURRENT_BUFFER_LVALUE =    \
324             yy_create_buffer(yyin,YY_BUF_SIZE ); \
325         } \
326         YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
327         }
328
329 #define yy_set_bol(at_bol) \
330         { \
331         if ( ! YY_CURRENT_BUFFER ){\
332         yyensure_buffer_stack (); \
333                 YY_CURRENT_BUFFER_LVALUE =    \
334             yy_create_buffer(yyin,YY_BUF_SIZE ); \
335         } \
336         YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
337         }
338
339 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
340
341 /* Begin user sect3 */
342
343 #define yywrap(n) 1
344 #define YY_SKIP_YYWRAP
345
346 typedef unsigned char YY_CHAR;
347
348 FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
349
350 typedef int yy_state_type;
351
352 extern int yylineno;
353
354 int yylineno = 1;
355
356 extern char *yytext;
357 #define yytext_ptr yytext
358
359 static yy_state_type yy_get_previous_state (void );
360 static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
361 static int yy_get_next_buffer (void );
362 static void yy_fatal_error (yyconst char msg[]  );
363
364 /* Done after the current pattern has been matched and before the
365  * corresponding action - sets up yytext.
366  */
367 #define YY_DO_BEFORE_ACTION \
368         (yytext_ptr) = yy_bp; \
369         yyleng = (size_t) (yy_cp - yy_bp); \
370         (yy_hold_char) = *yy_cp; \
371         *yy_cp = '\0'; \
372         (yy_c_buf_p) = yy_cp;
373
374 #define YY_NUM_RULES 144
375 #define YY_END_OF_BUFFER 145
376 /* This struct is not used in this scanner,
377    but its presence is necessary. */
378 struct yy_trans_info
379         {
380         flex_int32_t yy_verify;
381         flex_int32_t yy_nxt;
382         };
383 static yyconst flex_int16_t yy_acclist[944] =
384     {   0,
385     16408,  122,  122,  132,  132,  112,  112,  108,  108,  145,
386        83,  144,   79,   83,  144,   80,  144,   80,   83,  144,
387        77,   83,  144,   74,   83,  144,   27,   83,  144,   74,
388        83,  144,   30,   83,  144,   78,   83,  144,   34,   83,
389       144,   35,   83,  144,   48,   83,  144,   47,   83,  144,
390        37,   83,  144,   46,   83,  144,   67,   83,  144,   49,
391        83,  144,   69,   83,  144,   38,   83,  144,   36,   83,
392       144,   60,   83,  144,   64,   83,  144,   61,   83,  144,
393        26,   83,  144,   65,   83,  144,   50,   83,  144,   66,
394        83,  144,   51,   83,  144,   74,   83,  144,   74,   83,
395
396       144,   74,   83,  144,   74,   83,  144,   74,   83,  144,
397        74,   83,  144,   74,   83,  144,   74,   83,  144,   74,
398        83,  144,   74,   83,  144,   74,   83,  144,   39,   83,
399       144,   32,   83,  144,   40,   83,  144,   26,   83,  144,
400        83,  144,   83,  144,   83,  144,   83,  144,   83,  144,
401        83,  144,   83,  144,   83,  144,   83,  144,   79,   83,
402       144,16408,   74,   83,  144,   27,   83,  144,   74,   83,
403       144,   74,   83,  144,   74,   83,  144,   74,   83,  144,
404        74,   83,  144,   74,   83,  144,   74,   83,  144,   74,
405        83,  144,   74,   83,  144,   74,   83,  144,   74,   83,
406
407       144,   74,   83,  144,   83,  144,   83,  144,   83,  144,
408        83,  144,   83,  144,   83,  144,   83,  144,   83,  144,
409        83,  144,  122,  123,  144,  121,  144,  121,  123,  144,
410       119,  123,  144,  118,  123,  144,  123,  144,  132,  133,
411       144,  131,  144,  131,  133,  144,  128,  133,  144,  129,
412       133,  144,  133,  144,  112,  113,  144,  111,  144,  111,
413       113,  144,  113,  144,  113,  144,  108,  144,  107,  144,
414       107,  144,  106,  144,  105,  106,  144,  102,  144,  102,
415       106,  144,  106,  144,   97,  144,   79,   97,  144,   88,
416       144,   88,   97,  144,   77,   97,  144,   74,   97,  144,
417
418        27,   97,  144,   74,   97,  144,   30,   97,  144,   78,
419        97,  144,   84,   86,   97,  144,   85,   97,  144,   48,
420        97,  144,   91,   97,  144,   37,   97,  144,   93,   97,
421       144,   67,   97,  144,   49,   97,  144,   69,   97,  144,
422        38,   87,   97,  144,   36,   97,  144,   60,   97,  144,
423        64,   97,  144,   61,   97,  144,   26,   97,  144,   65,
424        97,  144,   50,   97,  144,   89,   97,  144,   51,   97,
425       144,   39,   97,  144,   32,   97,  144,   90,   97,  144,
426        26,   97,  144,   97,  144,   97,  144,   97,  144,   97,
427       144,   97,  144,   97,  144,   97,  144,   97,  144,  143,
428
429       144,  134,  144,  137,  144,  137,  144,   77,  144,   78,
430       144,  139,  143,  144,  136,  144,  135,  144,  140,  143,
431       144,  138,  143,  144,  141,  143,  144,  142,  143,  144,
432       144,   25,  144,  144,   25,  144,   25,  144,   25,  144,
433        25,  144,   25,  144,   25,  144,   25,  144,   25,  144,
434        25,  144,   25,  144,   25,  144,   25,  144,  144,  144,
435       144,  144,  144,  144,  144,  144,   79,   81,   81,   80,
436        74,   74,    3,   29,   74,    2,   28,   74,   31,   51,
437        41,   42,   68,   43,   73,   44,   45,   75,   76,   72,
438        69,   62,   59,   58,   63,   74,   74,   74,   17,   74,
439
440        74,   74,   74,   74,    4,   74,   74,   74,   74,   74,
441        74,   74,   74,   33,   74,   79,16408,   74,   74,    3,
442        29,   74,    2,   28,   74,   74,   74,   74,   17,   74,
443        74,   74,   74,   74,    4,   74,   74,   74,   74,   74,
444        74,   74,   74,   74,  122,  121,  114,  115,  116,  117,
445       132,  131,  124,  125,  126,  127,  112,  111,  109,  110,
446       108,  107,  105,  102,  103,  104,   79,   86,   95,   96,
447        87,   88,   29,   74,   28,   74,   87,  143,  134,  137,
448        25,   25,    3,   25,    2,   25,   25,   25,   25,   17,
449        25,   25,   25,   25,   25,    4,   25,   25,   25,   25,
450
451        25,   25,   25,   25,   25,   82,   82,   55,   52,   53,
452        54,   56,   72,   70,   71,   57,   74,   74,   74,   74,
453        74,    8,   74,   15,   74,   74,   74,   74,   74,   74,
454        74,   74,   20,   74,   74,    1,   74, 8216, 8216,   74,
455        74,   74,   74,   74,    8,   74,   15,   74,   74,   74,
456        74,   74,   74,   74,   74,   20,   74,   74,    1,   74,
457       120,  120,  130,  130,   92,   94,   98,   98,   25,   25,
458        25,   25,   25,    8,   25,   15,   25,   25,   25,   25,
459        25,   25,   25,   25,   20,   25,   25,   74,   12,   74,
460        74,   74,    6,   74,   74,   74,   74,   74,   74,   74,
461
462        74,    5,   74,   74,    1,    1,   74,    1,    1,    1,
463         1,    1,    1,    1,    1,   74, 8216,   74,   12,   74,
464        74,   74,    6,   74,   74,   74,   74,   74,   74,   74,
465        74,    5,   74,   74,    1,    1,   74,    1,    1,    1,
466         1,    1,    1,    1,    1,   74,  100,  100,   25,   12,
467        25,   25,   25,    6,   25,   25,   25,   25,   25,   25,
468        25,   25,    5,   25,   25,   25,   74,   74,   18,   74,
469        21,   74,   74,   74,   74,   74,   74,   74,   74,   74,
470        74,   16,   74,    1,    1,    1,    1,    1,    1,    1,
471        74,   74,   18,   74,   21,   74,   74,   74,   74,   74,
472
473        74,   74,   74,   74,   74,   16,   74,    1, 8216,    1,
474      8216,    1,    1,    1,    1,    1,    1,    1,   99,   99,
475        25,   25,   18,   25,   21,   25,   25,   25,   25,   25,
476        25,   25,   25,   25,   25,   16,   25,   74,    7,   74,
477        74,   74,   74,   23,   74,   22,   74,    9,   74,   10,
478        74,    1,    1,    1,   74,    7,   74,   74,   74,   74,
479        23,   74,   22,   74,    9,   74,   10,   74,    1, 8216,
480         1,    1,    1,  101,  101,   99,   25,    7,   25,   25,
481        25,   25,   23,   25,   22,   25,    9,   25,   10,   25,
482        74,   74,   74,   74,    1,   74,   74,   74,   74,   74,
483
484         1,   74,  101,   25,   25,   25,   25,   19,   74,   74,
485        13,   74,   74,   19,   74,   74,   13,   74,   74,   19,
486        25,   25,   13,   25,   25,   74,   11,   74,   74,   11,
487        74,   25,   11,   25,   74,   74,   25,   14,   74,   14,
488        74,   14,   25
489     } ;
490
491 static yyconst flex_int16_t yy_accept[825] =
492     {   0,
493         1,    1,    2,    3,    4,    5,    6,    7,    8,    9,
494        10,   10,   10,   10,   10,   10,   10,   10,   10,   11,
495        13,   16,   18,   21,   24,   27,   30,   33,   36,   39,
496        42,   45,   48,   51,   54,   57,   60,   63,   66,   69,
497        72,   75,   78,   81,   84,   87,   90,   93,   96,   99,
498       102,  105,  108,  111,  114,  117,  120,  123,  126,  129,
499       132,  135,  138,  141,  143,  145,  147,  149,  151,  153,
500       155,  157,  159,  163,  166,  169,  172,  175,  178,  181,
501       184,  187,  190,  193,  196,  199,  202,  205,  207,  209,
502       211,  213,  215,  217,  219,  221,  223,  226,  228,  231,
503
504       234,  237,  239,  242,  244,  247,  250,  253,  255,  258,
505       260,  263,  265,  267,  269,  271,  273,  275,  278,  280,
506       283,  285,  287,  290,  292,  295,  298,  301,  304,  307,
507       310,  313,  317,  320,  323,  326,  329,  332,  335,  338,
508       341,  345,  348,  351,  354,  357,  360,  363,  366,  369,
509       372,  375,  378,  381,  384,  386,  388,  390,  392,  394,
510       396,  398,  400,  402,  404,  406,  408,  410,  412,  415,
511       417,  419,  422,  425,  428,  431,  432,  434,  435,  437,
512       439,  441,  443,  445,  447,  449,  451,  453,  455,  457,
513       459,  460,  461,  462,  463,  464,  465,  466,  467,  468,
514
515       469,  470,  470,  470,  471,  472,  472,  472,  472,  472,
516       472,  472,  472,  472,  473,  473,  473,  473,  473,  473,
517       473,  473,  473,  476,  479,  480,  481,  481,  482,  483,
518       484,  485,  486,  487,  488,  489,  489,  490,  491,  492,
519       492,  492,  492,  493,  494,  494,  495,  495,  496,  496,
520       496,  497,  498,  499,  501,  502,  503,  504,  505,  507,
521       508,  509,  510,  511,  512,  513,  514,  515,  515,  516,
522       516,  516,  516,  516,  516,  516,  516,  516,  518,  518,
523       518,  518,  518,  518,  518,  518,  518,  518,  518,  518,
524       519,  519,  519,  519,  519,  519,  519,  519,  519,  520,
525
526       520,  520,  520,  520,  520,  520,  520,  520,  523,  526,
527       527,  528,  529,  531,  532,  533,  534,  535,  537,  538,
528       539,  540,  541,  542,  543,  544,  545,  545,  545,  545,
529       545,  545,  545,  545,  545,  546,  547,  548,  549,  550,
530       551,  551,  552,  553,  554,  555,  556,  557,  557,  558,
531       559,  560,  561,  562,  563,  564,  565,  566,  567,  568,
532       569,  570,  571,  571,  572,  573,  575,  577,  577,  578,
533       579,  580,  581,  582,  582,  582,  582,  582,  582,  582,
534       582,  582,  583,  583,  583,  583,  583,  583,  583,  583,
535       583,  585,  587,  588,  589,  590,  592,  593,  594,  595,
536
537       596,  598,  599,  600,  601,  602,  603,  604,  605,  606,
538       606,  606,  606,  606,  606,  606,  606,  607,  608,  608,
539       608,  608,  608,  608,  608,  608,  608,  608,  608,  608,
540       608,  608,  608,  609,  610,  611,  612,  613,  614,  614,
541       615,  615,  616,  617,  618,  619,  620,  621,  622,  624,
542       626,  627,  628,  629,  630,  631,  632,  633,  635,  636,
543       638,  638,  638,  638,  638,  638,  638,  638,  638,  638,
544       638,  638,  638,  638,  638,  638,  638,  638,  638,  638,
545       638,  638,  638,  638,  638,  638,  638,  638,  638,  639,
546       640,  640,  640,  640,  640,  640,  640,  640,  640,  640,
547
548       640,  640,  640,  640,  640,  641,  642,  643,  644,  645,
549       647,  649,  650,  651,  652,  653,  654,  655,  656,  658,
550       659,  661,  661,  661,  661,  662,  663,  664,  665,  666,
551       667,  667,  667,  668,  669,  669,  669,  669,  669,  669,
552       669,  669,  669,  669,  669,  669,  669,  669,  669,  669,
553       670,  671,  672,  673,  674,  676,  678,  679,  680,  681,
554       682,  683,  684,  685,  687,  688,  688,  688,  688,  688,
555       688,  688,  688,  688,  688,  689,  691,  692,  693,  695,
556       696,  697,  698,  699,  700,  701,  702,  704,  705,  706,
557       708,  709,  710,  711,  712,  713,  714,  715,  716,  717,
558
559       717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
560       717,  717,  717,  717,  717,  717,  717,  718,  718,  718,
561       718,  718,  718,  718,  719,  721,  722,  723,  725,  726,
562       727,  728,  729,  730,  731,  732,  734,  735,  736,  738,
563       739,  740,  741,  742,  743,  744,  745,  746,  747,  747,
564       748,  749,  749,  749,  749,  749,  749,  749,  749,  749,
565       750,  752,  753,  754,  756,  757,  758,  759,  760,  761,
566       762,  763,  765,  766,  767,  768,  769,  771,  773,  774,
567       775,  776,  777,  778,  779,  780,  781,  782,  784,  785,
568       786,  787,  788,  789,  790,  791,  791,  791,  791,  791,
569
570       791,  791,  791,  792,  793,  795,  797,  798,  799,  800,
571       801,  802,  803,  804,  805,  806,  808,  810,  812,  813,
572       814,  815,  816,  817,  818,  819,  819,  819,  820,  821,
573       822,  823,  825,  827,  828,  829,  830,  831,  832,  833,
574       834,  835,  836,  838,  839,  841,  842,  843,  844,  846,
575       848,  850,  852,  853,  854,  855,  855,  855,  856,  858,
576       859,  860,  861,  863,  865,  867,  869,  871,  872,  873,
577       874,  874,  875,  876,  877,  878,  880,  881,  882,  883,
578       885,  887,  889,  891,  892,  893,  894,  895,  897,  898,
579       899,  900,  901,  903,  904,  905,  906,  907,  908,  910,
580
581       911,  913,  914,  916,  917,  919,  920,  922,  923,  925,
582       926,  927,  929,  930,  932,  933,  935,  936,  937,  938,
583       940,  942,  944,  944
584     } ;
585
586 static yyconst flex_int32_t yy_ec[256] =
587     {   0,
588         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
589         2,    2,    4,    1,    1,    1,    1,    1,    1,    1,
590         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
591         1,    2,    1,    5,    6,    7,    8,    9,   10,   11,
592        12,   13,   14,   15,   16,   17,   18,   19,   19,   19,
593        19,   19,   19,   19,   19,   19,   19,   20,   21,   22,
594        23,   24,    6,   25,    6,    6,    6,   26,   27,   28,
595         6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
596         6,    6,    6,   29,    6,    6,    6,    6,    6,    6,
597        30,   31,   32,   33,    6,    1,   34,   35,   36,   37,
598
599        38,   39,    6,   40,   41,    6,   42,   43,   44,   45,
600        46,    6,    6,   47,   48,   49,   50,    6,   51,    6,
601        52,    6,   53,   54,   55,   56,    1,   57,   57,   57,
602        57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
603        57,   57,   57,   58,   58,   58,   58,   58,   58,   58,
604        58,   58,   58,   58,   58,   58,   58,   58,   58,   59,
605        59,   59,   59,   59,   59,   59,   59,   59,   59,   59,
606        59,   59,   59,   59,   59,   59,   59,   59,   59,   59,
607        59,   59,   59,   59,   59,   59,   60,   59,   59,   59,
608        61,    1,    1,   62,   62,   62,   62,   62,   62,   62,
609
610        62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
611        62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
612        62,   62,   62,   63,   64,   64,   64,   64,   64,   64,
613        64,   64,   64,   64,   64,   64,   65,   66,   67,   68,
614        69,   69,   69,   70,    1,    1,    1,    1,    1,    1,
615         1,    1,    1,    1,    1
616     } ;
617
618 static yyconst flex_int32_t yy_meta[71] =
619     {   0,
620         1,    2,    3,    4,    5,    6,    6,    7,    1,    5,
621         8,    1,    9,    1,   10,    1,   11,    9,   12,    1,
622        10,    8,    8,    8,    1,    6,    6,    6,    6,    1,
623         1,    1,    1,    6,    6,    6,    6,    6,    6,    6,
624         6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
625         6,    6,    1,    1,    1,    1,    1,    1,    1,    1,
626         1,    6,    6,    6,    6,    6,    6,    6,    6,    6
627     } ;
628
629 static yyconst flex_int16_t yy_base[852] =
630     {   0,
631         0,   70,  138,  141,  149,  157,  160,  166,  146,  153,
632       173,  178,  196,    0,  265,  320,  376,    0,  908, 4184,
633       183,  270,  279, 4184,  239,  248,  419,  895, 4184, 4184,
634      4184,  155, 4184, 4184, 4184,  319,  175,  329, 4184, 4184,
635       269,  272,  275,  276, 4184,  885, 4184, 4184,  325,  421,
636       423,  451,  425,  463,  469,  475,  477,  482,  504, 4184,
637       840, 4184,  317,  300,  267,  477,  132,  488,  497,  310,
638       502,  835,  562,  515,  524,  631,  567,  569,  571,  606,
639       573,  491,  608,  614,  633,  636,  638,  513,  417,  631,
640       137,  645,  650,  580,  655,  829,    0, 4184,  877,  274,
641
642       329,  861,    0, 4184,  858,  451,  599,  834,    0, 4184,
643       846,  829,  831,    0, 4184,  831, 4184,  790, 4184,  782,
644       655, 4184,  715,  718,  719, 4184,  699,  687,  730,  765,
645      4184, 4184, 4184,  334, 4184, 4184, 4184,  753,  724,  756,
646       765, 4184,  721,  646,  656,  723, 4184,  748, 4184, 4184,
647      4184,  682, 4184,  741,  730,  491,  738,  239,  743,  747,
648       752,  673,    0,  722, 4184,  683, 4184, 4184,    0, 4184,
649      4184,    0,    0,    0,    0, 4184,  752,  761,  804,  807,
650       811,  809,  836,  813,  848,  854,  860,  862,  867,  889,
651       862,  701,  873,  305,  882,  866,  887,  624,  774, 4184,
652
653       671,  947,  950,  954,  931,  924,  876,  929,  408,  934,
654       918,  939,  599,    0,  944,  913,  949,  484,  954,  958,
655       963,  597,  997,  999, 4184, 4184,    0, 4184,  446,  633,
656       629, 1013,  627, 4184, 4184,    0, 4184, 1015, 1018,  896,
657       947, 1041, 4184, 4184,  745, 4184,  882, 4184, 1031,    0,
658      1029, 1031, 1043, 1034, 1046, 1061, 1058, 1073, 1075, 1080,
659      1087, 1099, 1102, 1111, 1105, 1117, 4184, 1094, 1124, 1110,
660      1117, 1122, 1127, 1132, 1137, 1142, 1147, 1207, 1153, 1162,
661      1176,  970, 1181,  510, 1186, 1190, 1195,  564, 1255, 1239,
662      1201, 1204, 1224,  518, 1232, 1236, 1241,  556, 1264, 1246,
663
664      1249, 1255,  723, 1260, 1264, 1278,  554, 1312, 1314, 1316,
665      1318, 1330, 1321, 1343, 1348, 1355, 1360, 1367, 1372, 1379,
666      1386, 1391, 1395, 1408, 1410, 1413, 1406, 1411, 1416, 1421,
667      1426, 1431, 1436, 1441,    0, 4184, 4184, 4184, 4184, 4184,
668      1500,    0, 4184, 4184, 4184, 4184, 4184, 1502,    0, 4184,
669      4184, 4184,    0, 4184,  605, 4184, 4184, 4184, 1507, 4184,
670       603,  537,  510,  523, 1505, 1486, 1500, 1528,  521,    0,
671       507, 4184, 1505, 1498, 1394, 1503,  900, 1508, 1482, 1513,
672       450, 1513, 1527, 1477, 1532, 1019, 1537, 1492, 1542,  444,
673      1576, 1578, 1580, 1582, 1594, 1585, 1607, 1612, 1619, 1624,
674
675      1631, 1636, 1643, 1650, 1655, 1659, 1672, 1674, 1677, 1670,
676      1675, 1680, 1685, 1690, 1695, 1700, 4184,  496, 1705, 1710,
677      1715, 1720, 1725, 1730, 1735, 1740, 1745, 1750, 1755, 1760,
678      1765, 1770, 4184, 4184, 4184, 4184, 4184, 1813,  476,  474,
679       454,  438, 4184, 1807, 1805, 1809, 1824, 1831, 1833, 1836,
680      1838, 1850, 1855, 1862, 1864, 1867, 1869, 1881, 1893, 1942,
681      1866, 1880, 1956, 2016, 1962, 1658, 1967, 1104, 1972, 1976,
682      1981,  318, 2041, 1987, 1874, 1992, 1107, 1997, 2001, 2006,
683       316, 2011, 2016, 2030, 2035, 2040, 2055, 2060, 4184, 2120,
684      2066, 2075, 2080, 2088, 2093, 2098, 2103, 2108, 2113, 2118,
685
686      2123, 2128, 2133, 2138, 2172, 2174, 2179, 2181, 2188, 2196,
687      2203, 2205, 2210, 2218, 2222, 2227, 2234, 2241, 2246, 2249,
688      2298, 2312, 2317, 2322, 4184,  362, 4184,  346,  331,  318,
689      2382, 2385, 4184,  280,  255, 2333, 2347, 2352, 2357, 2362,
690      2367, 2372, 2377, 2382, 2387, 2392, 2397, 2402, 2407, 2441,
691      2443, 2448, 2450, 2457, 2465, 2472, 2474, 2479, 2487, 2491,
692      2496, 2503, 2510, 2515, 2518, 2511, 2516, 2521, 2526, 2531,
693      2536, 2541, 2546, 2551, 2585, 2587, 2589, 2591, 2594, 2613,
694      2616, 2619, 2625, 2628, 2642, 2644, 2656, 2658,    0,    0,
695      2641, 2069, 2651, 1155, 2656, 2337, 2661,  126, 2695, 2668,
696
697      2678, 2688, 2693, 2698, 2703, 2708, 2713, 2718, 2723, 2728,
698      2733, 2738, 2743, 2748, 2753, 2758, 2818, 2764, 2773, 2778,
699      2786, 2791, 2796, 2830, 2832, 2834, 2836, 2839, 2858, 2861,
700      2864, 2870, 2873, 2887, 2889, 2901, 2903, 2932,    0, 2887,
701      2590, 2901, 1229, 2906, 2672, 2911,  114, 2945, 2686, 4184,
702       162,  129, 1370, 2918, 2932, 2938, 2943, 2948, 2953, 2987,
703      2989, 2991, 2993, 2996, 3015, 3018, 3021, 3027, 3030, 3044,
704      3046, 3058, 3060, 3062, 3074,    0, 3076, 3088, 3090, 3092,
705      3104, 3116, 3119, 3122, 3134, 3138, 3146, 3152, 3139, 3145,
706      3150, 3155, 3160, 3165, 3170, 3175, 3180, 3185, 3190, 3195,
707
708      3200,    0, 3234,    0, 3236, 3238, 3241, 3243, 3250, 3265,
709      3268, 3272, 3284, 3287, 3299, 3296,    0, 3328, 3283, 3295,
710      3300, 3305, 3310, 3315, 3320, 1377, 1442, 4184, 1509, 3354,
711         0, 3356, 3358, 3361, 3363, 3370, 3385, 3388, 3392, 3404,
712      3407, 3419, 3416, 3422, 3434, 3438, 3447, 3441, 3450, 3456,
713      3463, 3469, 3456, 3462, 3467,    0,    0, 3501, 3503, 3505,
714      3507, 3519, 3510, 3533, 3535, 3537, 3567, 3520, 3534, 3539,
715      1544, 4184, 1634, 4184, 3573, 3575, 3577, 3579, 3591, 3582,
716      3605, 3607, 3609, 3613, 3621, 3635, 3637,    0, 3639, 3643,
717      3661, 3665,    0, 4184, 3669, 3673, 3687, 3691, 3695, 3709,
718
719      3713, 3717, 3725, 3731, 3739, 3747, 3753, 3762, 3755, 3769,
720      3771, 3777, 3784, 3786, 3793, 3799, 3808, 3815, 3817, 3812,
721      3830, 3839, 4184, 3888, 3900, 3912, 3924, 3936, 3948, 3955,
722      3962, 3973, 3979, 3986, 3998, 4010, 4022, 4034, 4046, 4053,
723      4060, 4072, 4083, 4094, 4104, 4111, 4123, 4135, 4147, 4159,
724      4171
725     } ;
726
727 static yyconst flex_int16_t yy_def[852] =
728     {   0,
729       823,  823,  824,  824,  825,  825,  826,  826,  827,  827,
730       828,  828,  823,   13,  829,  829,  823,   17,  823,  823,
731       823,  823,  823,  823,  830,  831,  830,  823,  823,  823,
732       823,  823,  823,  823,  823,  823,  823,  823,  823,  823,
733       823,  823,  823,  823,  823,  823,  823,  823,   27,   27,
734        27,   27,   27,   27,   27,   27,   27,   27,   27,  823,
735       823,  823,  823,  823,  823,  823,  823,  823,  823,  823,
736       823,  823,  832,  833,  834,  833,   76,   76,   76,   76,
737        76,   76,   76,   76,   76,   76,   76,  823,  823,  823,
738       823,  823,  823,  823,  823,  823,  835,  823,  823,  823,
739
740       823,  823,  836,  823,  823,  823,  823,  823,  837,  823,
741       823,  823,  823,  838,  823,  823,  823,  823,  823,  823,
742       823,  823,  823,  823,  823,  823,   27,  831,   27,  823,
743       823,  823,  823,  823,  823,  823,  823,  823,  823,  823,
744       823,  823,  823,  823,  823,  823,  823,  823,  823,  823,
745       823,  823,  823,  823,  823,  823,  823,  823,  823,  823,
746       823,  823,  839,  823,  823,  823,  823,  823,  839,  823,
747       823,  839,  839,  839,  839,  823,  840,  841,  840,  179,
748       179,  179,  179,  179,  179,  179,  179,  179,  179,  179,
749       823,  823,  823,  823,  823,  823,  823,  823,  823,  823,
750
751       823,  823,  823,  823,   27,  823,  823,  823,  823,  823,
752       823,  823,  823,  128,  823,  823,  823,  823,  823,  823,
753       823,  823,   27,   27,  823,  823,  842,  823,  823,  823,
754       823,  823,  823,  823,  823,  843,  823,  823,  823,  823,
755       823,  823,  823,  823,  823,  823,  823,  823,  823,  844,
756        27,   27,   27,   27,   27,   27,   27,   27,   27,   27,
757        27,   27,   27,   27,   27,   27,  823,  823,   27,  823,
758       823,  823,  823,  823,  823,  823,  823,  832,  845,  846,
759       823,  823,  823,  823,  823,  823,  823,  823,  847,   76,
760       823,  823,  823,  823,  823,  823,  823,  823,  834,  823,
761
762       823,  823,  823,  823,  823,  823,  823,   76,   76,   76,
763        76,   76,   76,   76,   76,   76,   76,   76,   76,   76,
764        76,   76,   76,   76,   76,   76,  823,  823,  823,  823,
765       823,  823,  823,  823,  835,  823,  823,  823,  823,  823,
766       823,  836,  823,  823,  823,  823,  823,  823,  837,  823,
767       823,  823,  838,  823,  823,  823,  823,  823,  823,  823,
768       823,  823,  823,  823,  823,   27,   27,  823,  823,  839,
769       823,  823,  179,  823,  823,  823,  823,  823,  823,  823,
770       823,  841,  823,  823,  823,  823,  823,  823,  823,  823,
771       179,  179,  179,  179,  179,  179,  179,  179,  179,  179,
772
773       179,  179,  179,  179,  179,  179,  179,  179,  179,  823,
774       823,  823,  823,  823,  823,  823,  823,  823,  823,  823,
775       823,  823,  823,  823,  823,  823,  823,  823,  823,  823,
776       823,  823,  823,  823,  823,  823,  823,  823,  823,  823,
777       823,  823,  823,   27,   27,   27,   27,   27,   27,   27,
778        27,   27,   27,   27,   27,   27,   27,   27,   27,  823,
779       823,  823,  823,  845,  823,  823,  823,  823,  823,  823,
780       823,  823,  846,  823,  823,  823,  823,  823,  823,  823,
781       823,  823,  823,  823,  823,  823,  823,  823,  823,  847,
782       823,  823,  823,  823,  823,  823,  823,  823,  823,  823,
783
784       823,  823,  823,  823,   76,   76,   76,   76,   76,   76,
785        76,   76,   76,   76,   76,   76,   76,   76,   76,   76,
786       823,  823,  823,  823,  823,  823,  823,  823,  823,  823,
787       823,  823,  823,  823,  823,  823,  823,  823,  823,  823,
788       823,  823,  823,  823,  823,  823,  823,  823,  823,  179,
789       179,  179,  179,  179,  179,  179,  179,  179,  179,  179,
790       179,  179,  179,  179,  179,  823,  823,  823,  823,  823,
791       823,  823,  823,  823,   27,   27,   27,   27,   27,   27,
792        27,   27,   27,   27,   27,   27,   27,   27,  848,  460,
793       848,  848,  848,  848,  848,  848,  848,  848,   27,  823,
794
795       823,  823,  823,  823,  823,  823,  823,  823,  823,  823,
796       823,  823,  823,  823,  823,  823,  847,  823,  823,  823,
797       823,  823,  823,   76,   76,   76,   76,   76,   76,   76,
798        76,   76,   76,   76,   76,   76,   76,  849,  521,  848,
799       848,  848,  848,  848,  848,  848,  848,   76,  823,  823,
800       823,  823,  850,  823,  823,  823,  823,  823,  823,  179,
801       179,  179,  179,  179,  179,  179,  179,  179,  179,  179,
802       179,  179,  179,  179,   27,  128,   27,   27,   27,   27,
803        27,   27,   27,   27,   27,   27,   27,   27,  848,  848,
804       848,  848,  848,  848,  848,  823,  823,  823,  823,  823,
805
806       823,  464,   76,  299,   76,   76,   76,   76,   76,   76,
807        76,   76,   76,   76,   76,   76,  848,  849,  848,  848,
808       848,  848,  848,  848,  848,  851,  850,  823,  850,  179,
809       382,  179,  179,  179,  179,  179,  179,  179,  179,  179,
810       179,  179,  179,   27,   27,   27,   27,   27,   27,   27,
811        27,   27,  848,  848,  848,  464,  473,   76,   76,   76,
812        76,   76,   76,   76,   76,   76,  849,  848,  848,  848,
813       851,  823,  851,  823,  179,  179,  179,  179,  179,  179,
814       179,  179,  179,   27,   27,   27,   27,  460,   76,   76,
815        76,   76,  521,  823,  179,  179,  179,  179,   27,   27,
816
817        27,   27,   76,   76,   76,   76,  179,  179,  179,  179,
818        27,   27,   76,   76,  179,  179,   27,   76,  179,   27,
819        76,  179,    0,  823,  823,  823,  823,  823,  823,  823,
820       823,  823,  823,  823,  823,  823,  823,  823,  823,  823,
821       823,  823,  823,  823,  823,  823,  823,  823,  823,  823,
822       823
823     } ;
824
825 static yyconst flex_int16_t yy_nxt[4255] =
826     {   0,
827        20,   21,   22,   23,   24,   25,   26,   27,   28,   29,
828        30,   31,   32,   33,   34,   35,   36,   37,   38,   39,
829        40,   41,   42,   43,   44,   25,   25,   25,   25,   45,
830        46,   47,   48,   25,   49,   50,   51,   52,   53,   25,
831        54,   25,   25,   25,   25,   55,   56,   57,   58,   25,
832        59,   25,   60,   61,   62,   63,   20,   20,   20,   20,
833        20,   64,   65,   66,   67,   68,   69,   70,   71,   72,
834        20,   73,   22,   23,   24,   74,   75,   76,   28,   29,
835        30,   31,   32,   33,   34,   35,   36,   37,   38,   39,
836        40,   41,   42,   43,   44,   74,   74,   74,   74,   45,
837
838        46,   47,   48,   74,   77,   78,   79,   80,   81,   74,
839        82,   74,   74,   74,   74,   83,   84,   85,   86,   74,
840        87,   74,   60,   61,   62,   63,   20,   20,   20,   20,
841        20,   88,   89,   90,   91,   92,   93,   94,   95,   96,
842        98,   99,  100,   98,   99,  100,  726,  101,  115,  116,
843       101,  104,  105,  106,  102,  115,  116,  102,  107,  104,
844       105,  106,  110,  111,  650,  108,  107,  226,  110,  111,
845       725,  227,  112,  108,  118,  119,  120,  113,  112,  118,
846       119,  120,  695,  113,  199,  200,  201,  235,  272,  272,
847       121,  236,  237,  329,  329,  121,  122,  123,  124,  125,
848
849       126,  127,  128,  129,  130,  131,  132,  133,  134,  135,
850       136,  137,  138,  139,  140,  141,  142,  143,  144,  145,
851       146,  127,  127,  127,  127,  147,  148,  149,  150,  127,
852       127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
853       127,  127,  127,  127,  127,  127,  127,  127,  151,  152,
854       153,  154,  122,  122,  122,  122,  122,  155,  156,  157,
855       158,  159,  159,  160,  161,  162,  164,  165,  166,  167,
856       242,  202,  653,  245,  168,  169,  247,  249,  337,  170,
857       202,  204,  533,  338,  203,  171,  172,  173,  174,  175,
858       203,  243,  244,  203,  246,  272,  272,  248,  244,  203,
859
860       206,  207,  208,  209,  210,  210,  211,  212,  213,  215,
861       216,  217,  218,  219,  219,  220,  221,  222,  268,  530,
862       175,  164,  165,  166,  167,  270,  270,  270,  228,  168,
863       169,  229,  529,  339,  170,  230,  231,  232,  340,  244,
864       171,  172,  173,  174,  175,  238,  226,  239,  527,  233,
865       227,  234,  205,  205,  240,  241,  269,  269,  269,  269,
866       269,  412,  412,  205,  525,  240,  241,  275,  275,  275,
867       275,  251,  613,  205,  606,  175,  176,  176,  176,  176,
868       176,  177,  178,  179,  176,  176,  176,  176,  176,  176,
869       176,  176,  176,  176,  176,  176,  176,  176,  176,  176,
870
871       176,  177,  177,  177,  177,  176,  176,  176,  176,  177,
872       180,  181,  182,  183,  184,  177,  185,  177,  177,  177,
873       177,  186,  187,  188,  189,  177,  190,  177,  176,  176,
874       176,  176,  176,  176,  176,  176,  176,  191,  192,  193,
875       194,  195,  195,  196,  197,  198,  223,  224,  205,  205,
876       205,  205,  205,  205,  252,  344,  442,  223,  234,  205,
877       345,  205,  434,  205,  421,  421,  253,  224,  254,  205,
878       257,  205,  442,  205,  258,  327,  327,  327,  205,  205,
879       206,  207,  208,  209,  210,  210,  211,  212,  213,  205,
880       205,  205,  440,  255,  440,  256,  205,  205,  417,  205,
881
882       549,  259,  205,  205,  205,  205,  542,  205,  371,  205,
883       205,  205,  261,  205,  262,  205,  289,  260,  290,  290,
884       205,  264,  369,  205,  369,  205,  531,  263,  265,  318,
885       205,  205,  205,  271,  271,  271,  271,  271,  530,  290,
886       428,  428,  205,  266,  273,  273,  273,  273,  273,  270,
887       270,  270,  205,  273,  273,  273,  274,  273,  276,  276,
888       276,  276,  276,  278,  200,  201,  484,  484,  280,  326,
889       326,  326,  326,  326,  493,  493,  291,  292,  293,  294,
890       295,  295,  296,  297,  298,  300,  301,  302,  303,  304,
891       304,  305,  306,  307,  290,  290,  290,  290,  290,  290,
892
893       290,  290,  311,  346,  529,  290,  355,  290,  347,  290,
894       504,  290,  497,  310,  312,  290,  313,  290,  316,  290,
895       488,  290,  317,  281,  282,  283,  284,  285,  285,  286,
896       287,  288,  289,  290,  290,  290,  290,  332,  332,  332,
897       332,  290,  290,  436,  290,  435,  290,  245,  314,  230,
898       315,  320,  290,  432,  290,  425,  319,  247,  308,  309,
899       290,  290,  290,  290,  290,  290,  290,  357,  246,  308,
900       321,  290,  358,  200,  290,  323,  290,  325,  248,  309,
901       416,  290,  324,  322,  290,  372,  290,  328,  328,  328,
902       328,  328,  291,  292,  293,  294,  295,  295,  296,  297,
903
904       298,  330,  330,  330,  330,  330,  330,  330,  330,  331,
905       330,  333,  333,  333,  333,  333,  359,  200,  201,  202,
906       202,  365,  242,  371,  249,  360,  205,  205,  361,  277,
907       362,  363,  203,  203,  364,  267,  235,  205,  203,  203,
908       236,  237,  268,  243,  244,  244,  245,  205,  215,  216,
909       217,  218,  219,  219,  220,  221,  222,  366,  367,  410,
910       410,  410,  228,  244,  250,  229,  369,  246,  366,  368,
911       231,  232,  238,  225,  239,  199,  200,  201,  367,  500,
912       500,  240,  241,  233,  356,  234,  269,  269,  269,  269,
913       269,  355,  240,  241,  271,  271,  271,  271,  271,  273,
914
915       273,  273,  273,  273,  275,  275,  275,  275,  276,  276,
916       276,  276,  276,  374,  375,  376,  377,  378,  378,  379,
917       380,  381,  383,  384,  385,  386,  387,  387,  388,  389,
918       390,  391,  392,  354,  373,  373,  373,  373,  373,  373,
919       373,  373,  391,  352,  394,  373,  351,  373,  350,  373,
920       348,  373,  392,  393,  396,  373,  395,  373,  399,  373,
921       343,  373,  400,  373,  373,  374,  375,  376,  377,  378,
922       378,  379,  380,  381,  373,  373,  373,  341,  397,  336,
923       398,  373,  373,  247,  373,  334,  401,  373,  373,  373,
924       373,  277,  373,  267,  373,  373,  373,  403,  373,  404,
925
926       373,  250,  402,  225,  248,  373,  406,  823,  373,  439,
927       373,  439,  405,  407,  440,  373,  373,  373,  409,  409,
928       409,  409,  409,  414,  414,  414,  414,  373,  408,  411,
929       411,  411,  411,  411,  419,  419,  419,  373,  413,  413,
930       413,  413,  413,  415,  415,  415,  415,  415,  202,  417,
931       418,  202,  417,  418,  823,  202,  538,  538,  205,  205,
932       441,  203,  441,  823,  203,  442,  823,  203,  203,  205,
933       203,  426,  426,  426,  203,  423,  423,  423,  423,  205,
934       205,  205,  205,  205,  205,  420,  420,  420,  420,  420,
935       422,  422,  422,  422,  422,  424,  424,  424,  424,  424,
936
937       214,  214,  214,  214,  214,  427,  427,  427,  427,  427,
938       429,  429,  429,  429,  429,  430,  430,  430,  430,  431,
939       431,  431,  431,  431,  205,  205,  205,  205,  482,  482,
940       482,  232,  249,  438,  238,  205,  239,  205,  240,  241,
941       240,  241,  242,  240,  241,  205,  823,  205,  823,  240,
942       241,  240,  241,  244,  240,  241,  205,  205,  205,  205,
943       823,  205,  205,  243,  244,  823,  444,  205,  823,  205,
944       205,  205,  205,  205,  205,  545,  545,  205,  445,  446,
945       823,  205,  205,  823,  205,  205,  205,  447,  205,  205,
946       823,  205,  823,  448,  205,  268,  205,  449,  823,  205,
947
948       205,  205,  205,  205,  450,  823,  205,  205,  205,  205,
949       823,  205,  823,  205,  205,  205,  244,  451,  205,  452,
950       823,  205,  823,  205,  823,  205,  205,  205,  205,  205,
951       205,  823,  205,  205,  453,  454,  823,  205,  205,  205,
952       205,  455,  456,  205,  205,  205,  823,  205,  457,  205,
953       205,  205,  205,  205,  289,  205,  458,  459,  823,  205,
954       602,  602,  205,  609,  609,  205,  269,  269,  269,  269,
955       269,  823,  205,  269,  269,  269,  269,  269,  269,  269,
956       269,  269,  269,  269,  269,  269,  269,  269,  269,  269,
957       269,  269,  460,  461,  461,  461,  461,  461,  462,  462,
958
959       462,  462,  462,  463,  463,  463,  463,  463,  278,  200,
960       201,  691,  691,  280,  465,  466,  467,  468,  469,  469,
961       470,  471,  472,  474,  475,  476,  477,  478,  478,  479,
962       480,  481,  279,  279,  279,  279,  279,  483,  483,  483,
963       483,  483,  485,  485,  485,  485,  485,  486,  486,  486,
964       486,  487,  487,  487,  487,  487,  289,  290,  290,  290,
965       290,  290,  491,  491,  491,  289,  290,  290,  281,  282,
966       283,  284,  285,  285,  286,  287,  288,  290,  823,  490,
967       492,  492,  492,  492,  492,  721,  721,  290,  494,  494,
968       494,  494,  494,  495,  495,  495,  495,  496,  496,  496,
969
970       496,  496,  299,  299,  299,  299,  299,  498,  498,  498,
971       490,  499,  499,  499,  499,  499,  501,  501,  501,  501,
972       501,  502,  502,  502,  502,  300,  301,  302,  303,  304,
973       304,  305,  306,  307,  503,  503,  503,  503,  503,  290,
974       290,  290,  290,  290,  290,  290,  290,  823,  290,  290,
975       290,  823,  290,  505,  290,  823,  290,  290,  290,  290,
976       290,  823,  290,  823,  290,  506,  507,  823,  290,  290,
977       290,  290,  728,  729,  508,  290,  290,  823,  290,  772,
978       773,  290,  290,  290,  510,  823,  290,  290,  290,  823,
979       509,  290,  823,  290,  290,  290,  290,  823,  290,  290,
980
981       290,  511,  823,  290,  512,  290,  290,  290,  290,  823,
982       290,  513,  823,  290,  290,  290,  823,  290,  290,  290,
983       290,  823,  290,  290,  290,  823,  514,  515,  516,  290,
984       823,  517,  518,  290,  290,  290,  290,  290,  290,  290,
985       290,  290,  823,  290,  728,  729,  290,  823,  290,  823,
986       520,  290,  536,  536,  536,  823,  290,  823,  290,  519,
987       823,  290,  326,  326,  326,  326,  326,  326,  326,  326,
988       326,  326,  326,  326,  326,  326,  326,  326,  326,  326,
989       326,  326,  326,  326,  326,  326,  521,  522,  522,  522,
990       522,  522,  523,  523,  523,  523,  523,  524,  524,  524,
991
992       524,  524,  525,  526,  527,  528,  202,  823,  359,  200,
993       201,  774,  729,  205,  205,  823,  341,  360,  348,  203,
994       361,  823,  362,  363,  205,  203,  364,  205,  205,  532,
995       533,  534,  373,  373,  205,  543,  543,  543,  205,  540,
996       540,  540,  540,  373,  368,  535,  772,  773,  205,  547,
997       547,  547,  547,  373,  373,  373,  373,  373,  373,  537,
998       537,  537,  537,  537,  539,  539,  539,  539,  539,  541,
999       541,  541,  541,  541,  383,  384,  385,  386,  387,  387,
1000       388,  389,  390,  382,  382,  382,  382,  382,  544,  544,
1001       544,  544,  544,  546,  546,  546,  546,  546,  548,  548,
1002
1003       548,  548,  548,  373,  373,  373,  373,  373,  373,  373,
1004       373,  823,  373,  373,  373,  823,  373,  550,  373,  823,
1005       373,  373,  373,  373,  373,  823,  373,  823,  373,  551,
1006       552,  823,  373,  373,  373,  373,  794,  773,  553,  373,
1007       373,  823,  373,  823,  823,  373,  373,  373,  555,  823,
1008       373,  373,  373,  823,  554,  373,  823,  373,  373,  373,
1009       373,  823,  373,  373,  373,  556,  823,  373,  557,  373,
1010       373,  373,  373,  823,  373,  558,  823,  373,  373,  373,
1011       823,  373,  373,  373,  373,  823,  373,  373,  373,  823,
1012       559,  560,  561,  373,  823,  562,  563,  373,  373,  373,
1013
1014       373,  373,  373,  373,  373,  373,  823,  373,  823,  823,
1015       373,  823,  373,  823,  565,  373,  600,  600,  600,  823,
1016       373,  823,  373,  564,  823,  373,  409,  409,  409,  409,
1017       409,  409,  409,  409,  409,  409,  409,  409,  409,  409,
1018       409,  409,  409,  409,  409,  409,  566,  566,  566,  566,
1019       566,  567,  567,  567,  567,  567,  568,  568,  568,  568,
1020       568,  205,  205,  205,  205,  205,  205,  205,  205,  205,
1021       205,  205,  205,  205,  205,  205,  205,  205,  205,  205,
1022       205,  569,  569,  569,  569,  569,  570,  570,  570,  570,
1023       570,  571,  571,  571,  571,  571,  214,  214,  214,  214,
1024
1025       214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
1026       214,  214,  214,  214,  214,  214,  572,  572,  572,  572,
1027       572,  573,  573,  573,  573,  573,  574,  574,  574,  574,
1028       574,  438,  205,  205,  205,  205,  205,  205,  240,  241,
1029       575,  823,  576,  205,  577,  205,  823,  205,  823,  240,
1030       241,  205,  205,  205,  823,  205,  823,  205,  205,  205,
1031       205,  205,  205,  205,  205,  205,  205,  823,  579,  205,
1032       823,  580,  578,  581,  205,  823,  205,  205,  205,  205,
1033       823,  205,  205,  205,  205,  823,  205,  582,  205,  205,
1034       205,  205,  205,  205,  205,  205,  205,  205,  205,  823,
1035
1036       205,  585,  205,  205,  583,  205,  823,  205,  205,  205,
1037       205,  584,  205,  587,  823,  586,  823,  205,  823,  205,
1038       205,  205,  599,  599,  599,  599,  599,  823,  823,  205,
1039       823,  205,  607,  607,  607,  588,  599,  599,  599,  599,
1040       599,  205,  589,  589,  823,  589,  589,  590,  590,  589,
1041       589,  589,  589,  589,  589,  589,  589,  589,  589,  589,
1042       590,  589,  589,  589,  589,  589,  589,  590,  590,  590,
1043       590,  589,  589,  589,  589,  590,  590,  590,  590,  590,
1044       590,  590,  590,  590,  590,  590,  590,  590,  590,  590,
1045       590,  590,  590,  590,  589,  589,  589,  589,  589,  589,
1046
1047       589,  589,  589,  591,  592,  593,  594,  595,  595,  596,
1048       597,  598,  599,  599,  599,  599,  599,  289,  464,  464,
1049       464,  464,  464,  601,  601,  601,  601,  601,  603,  603,
1050       603,  603,  603,  604,  604,  604,  604,  605,  605,  605,
1051       605,  605,  289,  473,  473,  473,  473,  473,  608,  608,
1052       608,  608,  608,  610,  610,  610,  610,  610,  611,  611,
1053       611,  611,  612,  612,  612,  612,  612,  279,  279,  279,
1054       279,  279,  279,  279,  279,  279,  279,  465,  466,  467,
1055       468,  469,  469,  470,  471,  472,  279,  279,  279,  279,
1056       279,  279,  279,  279,  279,  279,  614,  614,  614,  614,
1057
1058       614,  823,  474,  475,  476,  477,  478,  478,  479,  480,
1059       481,  615,  615,  615,  615,  615,  616,  616,  616,  616,
1060       616,  617,  290,  290,  290,  290,  290,  689,  689,  689,
1061       489,  290,  290,  290,  290,  290,  290,  290,  290,  290,
1062       290,  489,  823,  489,  290,  290,  290,  290,  290,  618,
1063       618,  618,  618,  618,  619,  619,  619,  619,  619,  620,
1064       620,  620,  620,  620,  299,  299,  299,  299,  299,  299,
1065       299,  299,  299,  299,  299,  299,  299,  299,  299,  299,
1066       299,  299,  299,  299,  621,  621,  621,  621,  621,  622,
1067       622,  622,  622,  622,  623,  623,  623,  623,  623,  290,
1068
1069       290,  290,  290,  823,  823,  624,  290,  290,  290,  290,
1070       290,  625,  290,  823,  626,  290,  290,  290,  823,  290,
1071       290,  823,  290,  290,  290,  628,  290,  290,  823,  627,
1072       290,  290,  290,  290,  629,  823,  290,  290,  290,  823,
1073       630,  290,  823,  290,  290,  290,  290,  631,  290,  290,
1074       290,  290,  823,  290,  290,  290,  290,  823,  290,  823,
1075       290,  290,  290,  823,  634,  290,  290,  632,  290,  290,
1076       290,  633,  290,  290,  290,  290,  290,  290,  823,  290,
1077       823,  823,  635,  823,  290,  636,  823,  290,  823,  290,
1078       823,  637,  823,  823,  290,  823,  823,  290,  589,  638,
1079
1080       823,  589,  589,  639,  639,  589,  589,  589,  589,  589,
1081       589,  589,  589,  589,  589,  589,  639,  589,  589,  589,
1082       589,  589,  589,  639,  639,  639,  639,  589,  589,  589,
1083       589,  639,  639,  639,  639,  639,  639,  639,  639,  639,
1084       639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
1085       589,  589,  589,  589,  589,  589,  589,  589,  589,  640,
1086       641,  642,  643,  644,  644,  645,  646,  647,  648,  648,
1087       648,  648,  648,  648,  648,  648,  648,  648,  648,  648,
1088       648,  648,  648,  649,  650,  651,  532,  533,  534,  373,
1089       373,  373,  373,  373,  693,  693,  693,  693,  531,  652,
1090
1091       823,  823,  535,  373,  373,  373,  373,  373,  373,  373,
1092       373,  373,  373,  373,  373,  373,  373,  373,  654,  654,
1093       654,  654,  654,  655,  655,  655,  655,  655,  656,  656,
1094       656,  656,  656,  382,  382,  382,  382,  382,  382,  382,
1095       382,  382,  382,  382,  382,  382,  382,  382,  382,  382,
1096       382,  382,  382,  657,  657,  657,  657,  657,  658,  658,
1097       658,  658,  658,  659,  659,  659,  659,  659,  373,  373,
1098       373,  373,  823,  823,  660,  373,  373,  373,  373,  373,
1099       661,  373,  823,  662,  373,  373,  373,  823,  373,  373,
1100       823,  373,  373,  373,  664,  373,  373,  823,  663,  373,
1101
1102       373,  373,  373,  665,  823,  373,  373,  373,  823,  666,
1103       373,  823,  373,  373,  373,  373,  667,  373,  373,  373,
1104       373,  823,  373,  373,  373,  373,  823,  373,  823,  373,
1105       373,  373,  823,  670,  373,  373,  668,  373,  373,  373,
1106       669,  373,  373,  373,  373,  373,  373,  823,  373,  823,
1107       823,  671,  823,  373,  672,  823,  373,  823,  373,  823,
1108       673,  823,  823,  373,  823,  823,  373,  674,  674,  674,
1109       674,  674,  674,  674,  674,  674,  674,  674,  674,  674,
1110       674,  674,  675,  675,  675,  675,  675,  675,  675,  675,
1111       675,  675,  675,  675,  675,  675,  675,  676,  676,  676,
1112
1113       676,  676,  676,  676,  676,  676,  676,  676,  676,  676,
1114       676,  676,  205,  205,  205,  205,  205,  205,  205,  205,
1115       823,  205,  205,  205,  823,  205,  677,  205,  678,  205,
1116       823,  679,  205,  205,  680,  205,  823,  205,  823,  205,
1117       205,  205,  205,  205,  205,  823,  205,  205,  719,  719,
1118       719,  205,  205,  205,  205,  205,  205,  205,  823,  823,
1119       823,  205,  681,  205,  682,  683,  205,  205,  684,  205,
1120       205,  205,  205,  205,  685,  823,  205,  686,  823,  687,
1121       205,  823,  205,  205,  205,  205,  205,  649,  650,  651,
1122       205,  823,  205,  823,  205,  688,  205,  590,  590,  590,
1123
1124       590,  590,  823,  652,  205,  823,  205,  690,  690,  690,
1125       690,  690,  692,  692,  692,  692,  692,  694,  694,  694,
1126       694,  694,  205,  205,  464,  464,  464,  464,  464,  723,
1127       723,  723,  723,  205,  464,  464,  464,  464,  464,  823,
1128       823,  823,  823,  205,  464,  464,  464,  464,  464,  464,
1129       464,  464,  464,  464,  696,  696,  696,  696,  696,  697,
1130       697,  697,  697,  697,  698,  698,  698,  698,  698,  473,
1131       473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
1132       473,  473,  473,  473,  473,  473,  473,  473,  473,  699,
1133       699,  699,  699,  699,  700,  700,  700,  700,  700,  701,
1134
1135       701,  701,  701,  701,  702,  702,  702,  702,  702,  702,
1136       702,  702,  702,  702,  702,  702,  702,  702,  702,  617,
1137       703,  703,  703,  703,  703,  823,  823,  823,  489,  703,
1138       703,  703,  703,  703,  703,  703,  703,  703,  703,  489,
1139       823,  489,  704,  704,  704,  704,  704,  704,  704,  704,
1140       704,  704,  704,  704,  704,  704,  704,  290,  290,  290,
1141       290,  290,  290,  290,  290,  823,  290,  290,  290,  823,
1142       290,  705,  290,  706,  290,  823,  707,  290,  290,  708,
1143       290,  823,  290,  823,  290,  290,  290,  290,  290,  290,
1144       823,  290,  290,  823,  823,  823,  290,  290,  290,  290,
1145
1146       290,  290,  290,  823,  823,  823,  290,  709,  290,  710,
1147       711,  290,  290,  712,  290,  290,  290,  290,  290,  713,
1148       823,  290,  714,  823,  715,  290,  823,  290,  290,  290,
1149       290,  290,  823,  638,  489,  290,  823,  290,  823,  290,
1150       716,  290,  589,  639,  639,  639,  639,  639,  823,  290,
1151       823,  290,  823,  589,  589,  589,  718,  720,  720,  720,
1152       720,  720,  722,  722,  722,  722,  722,  724,  724,  724,
1153       724,  724,  290,  290,  730,  730,  730,  730,  730,  823,
1154       823,  823,  823,  290,  823,  823,  823,  718,  730,  730,
1155       730,  730,  730,  290,  730,  730,  730,  730,  730,  731,
1156
1157       731,  731,  731,  731,  731,  731,  731,  731,  731,  731,
1158       731,  731,  731,  731,  373,  373,  373,  373,  373,  373,
1159       373,  373,  823,  373,  373,  373,  823,  373,  732,  373,
1160       733,  373,  823,  734,  373,  373,  735,  373,  823,  373,
1161       823,  373,  373,  373,  373,  373,  373,  823,  373,  373,
1162       823,  823,  823,  373,  373,  373,  373,  373,  373,  373,
1163       823,  823,  823,  373,  736,  373,  737,  738,  373,  373,
1164       739,  373,  373,  373,  373,  373,  740,  823,  373,  741,
1165       823,  742,  373,  823,  373,  373,  373,  373,  373,  373,
1166       373,  823,  373,  823,  373,  823,  373,  743,  373,  823,
1167
1168       373,  205,  205,  205,  205,  823,  373,  823,  373,  823,
1169       373,  823,  205,  823,  205,  205,  205,  205,  205,  205,
1170       205,  823,  205,  823,  205,  823,  205,  823,  205,  823,
1171       745,  205,  205,  823,  744,  823,  205,  823,  205,  823,
1172       205,  823,  205,  205,  205,  823,  205,  205,  746,  205,
1173       205,  823,  205,  823,  205,  823,  747,  205,  823,  749,
1174       205,  205,  205,  823,  205,  205,  205,  205,  823,  748,
1175       205,  823,  205,  205,  205,  823,  205,  823,  750,  205,
1176       205,  823,  205,  823,  205,  752,  751,  823,  823,  823,
1177       205,  823,  823,  823,  205,  590,  590,  590,  590,  590,
1178
1179       205,  590,  590,  590,  590,  590,  590,  590,  590,  590,
1180       590,  590,  590,  590,  590,  590,  753,  753,  753,  753,
1181       753,  754,  754,  754,  754,  754,  755,  755,  755,  755,
1182       755,  756,  756,  756,  756,  756,  756,  756,  756,  756,
1183       756,  756,  756,  756,  756,  756,  757,  757,  757,  757,
1184       757,  757,  757,  757,  757,  757,  757,  757,  757,  757,
1185       757,  290,  290,  290,  290,  290,  290,  823,  290,  290,
1186       290,  290,  290,  823,  290,  823,  290,  290,  290,  290,
1187       823,  759,  290,  823,  290,  758,  290,  823,  290,  290,
1188       823,  290,  290,  290,  760,  290,  290,  823,  290,  290,
1189
1190       290,  823,  823,  290,  823,  761,  290,  823,  823,  763,
1191       290,  290,  290,  290,  290,  290,  290,  823,  762,  823,
1192       290,  823,  290,  290,  290,  290,  290,  290,  764,  767,
1193       489,  823,  290,  823,  290,  765,  823,  290,  766,  639,
1194       639,  639,  639,  639,  290,  823,  823,  290,  823,  823,
1195       589,  639,  639,  639,  639,  639,  639,  639,  639,  639,
1196       639,  639,  639,  639,  639,  639,  768,  768,  768,  768,
1197       768,  769,  769,  769,  769,  769,  770,  770,  770,  770,
1198       770,  373,  373,  373,  373,  373,  373,  823,  373,  373,
1199       373,  373,  373,  823,  373,  823,  373,  373,  373,  373,
1200
1201       823,  776,  373,  823,  373,  775,  373,  823,  373,  373,
1202       823,  373,  373,  373,  777,  373,  373,  823,  373,  373,
1203       373,  823,  823,  373,  823,  778,  373,  823,  823,  780,
1204       373,  373,  373,  373,  373,  373,  373,  823,  779,  823,
1205       373,  823,  373,  373,  373,  373,  373,  373,  781,  205,
1206       205,  823,  373,  823,  373,  782,  823,  373,  783,  823,
1207       205,  205,  205,  823,  373,  205,  205,  373,  205,  205,
1208       205,  784,  205,  785,  205,  205,  205,  205,  205,  205,
1209       823,  787,  205,  205,  205,  205,  205,  823,  205,  205,
1210       205,  205,  786,  823,  205,  205,  205,  205,  205,  823,
1211
1212       823,  205,  823,  823,  205,  823,  823,  205,  823,  823,
1213       823,  205,  788,  788,  788,  788,  788,  205,  788,  788,
1214       788,  788,  788,  788,  788,  788,  788,  788,  290,  290,
1215       290,  290,  290,  290,  290,  290,  823,  290,  290,  290,
1216       790,  290,  823,  290,  823,  290,  290,  290,  290,  290,
1217       789,  290,  791,  290,  823,  290,  823,  290,  290,  792,
1218       290,  290,  290,  290,  290,  290,  823,  290,  767,  489,
1219       823,  290,  823,  290,  823,  290,  793,  793,  793,  793,
1220       793,  290,  823,  290,  823,  290,  823,  823,  823,  589,
1221       793,  793,  793,  793,  793,  793,  793,  793,  793,  793,
1222
1223       373,  373,  373,  373,  373,  373,  373,  373,  823,  373,
1224       373,  373,  796,  373,  823,  373,  823,  373,  373,  373,
1225       373,  373,  795,  373,  797,  373,  823,  373,  823,  373,
1226       373,  798,  373,  373,  373,  373,  373,  373,  823,  373,
1227       205,  205,  823,  373,  823,  373,  823,  373,  205,  205,
1228       799,  205,  823,  373,  823,  373,  823,  373,  823,  205,
1229       823,  205,  205,  205,  205,  205,  290,  290,  823,  800,
1230       290,  290,  823,  205,  823,  205,  803,  290,  823,  801,
1231       823,  290,  823,  205,  802,  205,  823,  290,  290,  290,
1232       823,  804,  290,  290,  823,  823,  373,  373,  823,  290,
1233
1234       373,  373,  823,  290,  823,  805,  807,  373,  823,  290,
1235       823,  373,  806,  290,  373,  373,  823,  373,  373,  373,
1236       823,  808,  205,  205,  823,  373,  823,  823,  823,  373,
1237       823,  809,  823,  205,  823,  373,  205,  205,  810,  373,
1238       205,  205,  823,  205,  205,  205,  823,  205,  823,  811,
1239       823,  205,  290,  290,  812,  205,  823,  205,  290,  290,
1240       823,  205,  823,  290,  823,  205,  290,  290,  823,  290,
1241       823,  813,  823,  290,  290,  290,  823,  290,  823,  290,
1242       373,  373,  373,  373,  814,  290,  823,  290,  823,  373,
1243       373,  373,  823,  373,  823,  290,  373,  373,  205,  205,
1244
1245       373,  373,  815,  373,  205,  205,  816,  373,  823,  205,
1246       373,  290,  290,  290,  290,  205,  817,  373,  823,  205,
1247       373,  373,  290,  823,  290,  205,  373,  373,  823,  818,
1248       823,  373,  290,  823,  290,  205,  205,  373,  819,  205,
1249       205,  373,  290,  290,  373,  373,  205,  373,  823,  823,
1250       205,  823,  820,  290,  823,  373,  205,  290,  290,  821,
1251       205,  822,  823,  290,  823,  373,  373,  373,  290,  823,
1252       823,  823,  823,  823,  823,  823,  823,  373,  290,  823,
1253       823,  823,  823,  823,  823,  823,  823,  373,   97,   97,
1254        97,   97,   97,   97,   97,   97,   97,   97,   97,   97,
1255
1256       103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
1257       103,  103,  109,  109,  109,  109,  109,  109,  109,  109,
1258       109,  109,  109,  109,  114,  114,  114,  114,  114,  114,
1259       114,  114,  114,  114,  114,  114,  117,  117,  117,  117,
1260       117,  117,  117,  117,  117,  117,  117,  117,  163,  163,
1261       163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
1262       205,  823,  823,  823,  823,  823,  205,  214,  823,  823,
1263       823,  823,  823,  214,  279,  279,  279,  823,  279,  279,
1264       290,  823,  823,  823,  290,  823,  823,  823,  823,  823,
1265       290,  299,  823,  823,  823,  823,  823,  299,  335,  335,
1266
1267       823,  823,  823,  335,  335,  335,  335,  335,  823,  335,
1268       342,  342,  823,  823,  823,  342,  342,  342,  342,  342,
1269       823,  342,  349,  349,  823,  823,  349,  349,  349,  349,
1270       823,  349,  349,  349,  353,  353,  823,  823,  353,  353,
1271       353,  353,  353,  353,  353,  353,  370,  823,  823,  823,
1272       823,  370,  370,  370,  370,  823,  370,  370,  373,  823,
1273       823,  823,  823,  823,  373,  382,  823,  823,  823,  823,
1274       823,  382,  433,  433,  433,  433,  433,  433,  433,  433,
1275       433,  433,  433,  437,  437,  437,  437,  437,  437,  437,
1276       437,  437,  437,  437,  443,  443,  443,  443,  443,  443,
1277
1278       443,  443,  443,  443,  443,  464,  823,  823,  823,  464,
1279       823,  823,  823,  823,  823,  464,  473,  823,  823,  823,
1280       823,  823,  473,  489,  489,  489,  489,  489,  489,  489,
1281       823,  489,  489,  489,  489,  589,  589,  823,  589,  589,
1282       589,  589,  589,  589,  589,  589,  589,  717,  717,  717,
1283       717,  717,  717,  717,  717,  717,  717,  717,  717,  727,
1284       727,  727,  727,  727,  727,  727,  727,  727,  727,  727,
1285       727,  771,  771,  771,  771,  771,  771,  771,  771,  771,
1286       771,  771,  771,   19,  823,  823,  823,  823,  823,  823,
1287       823,  823,  823,  823,  823,  823,  823,  823,  823,  823,
1288
1289       823,  823,  823,  823,  823,  823,  823,  823,  823,  823,
1290       823,  823,  823,  823,  823,  823,  823,  823,  823,  823,
1291       823,  823,  823,  823,  823,  823,  823,  823,  823,  823,
1292       823,  823,  823,  823,  823,  823,  823,  823,  823,  823,
1293       823,  823,  823,  823,  823,  823,  823,  823,  823,  823,
1294       823,  823,  823,  823
1295     } ;
1296
1297 static yyconst flex_int16_t yy_chk[4255] =
1298     {   0,
1299         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
1300         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
1301         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
1302         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
1303         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
1304         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
1305         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
1306         2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
1307         2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
1308         2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
1309
1310         2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
1311         2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
1312         2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
1313         2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
1314         3,    3,    3,    4,    4,    4,  652,    3,    9,    9,
1315         4,    5,    5,    5,    3,   10,   10,    4,    5,    6,
1316         6,    6,    7,    7,  651,    5,    6,   32,    8,    8,
1317       647,   32,    7,    6,   11,   11,   11,    7,    8,   12,
1318        12,   12,  598,    8,   21,   21,   21,   37,   67,   67,
1319        11,   37,   37,   91,   91,   12,   13,   13,   13,   13,
1320
1321        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
1322        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
1323        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
1324        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
1325        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
1326        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
1327        13,   13,   13,   13,   13,   13,   15,   15,   15,   15,
1328        41,   22,  535,   42,   15,   15,   43,   44,  100,   15,
1329        23,   23,  534,  100,   22,   15,   15,   15,   15,   15,
1330        22,   41,   41,   23,   42,  158,  158,   43,   44,   23,
1331
1332        25,   25,   25,   25,   25,   25,   25,   25,   25,   26,
1333        26,   26,   26,   26,   26,   26,   26,   26,   63,  530,
1334        15,   16,   16,   16,   16,   65,   65,   65,   36,   16,
1335        16,   36,  529,  101,   16,   36,   36,   36,  101,   63,
1336        16,   16,   16,   16,   16,   38,  134,   38,  528,   36,
1337       134,   36,   49,   49,   38,   38,   64,   64,   64,   64,
1338        64,  194,  194,   49,  526,   38,   38,   70,   70,   70,
1339        70,   49,  481,   49,  472,   16,   17,   17,   17,   17,
1340        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
1341        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
1342
1343        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
1344        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
1345        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
1346        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
1347        17,   17,   17,   17,   17,   17,   27,   27,   50,   50,
1348        51,   51,   53,   53,   50,  106,  442,   27,  229,   50,
1349       106,   51,  229,   53,  209,  209,   50,   27,   51,   50,
1350        53,   51,  441,   53,   53,   89,   89,   89,   52,   52,
1351        27,   27,   27,   27,   27,   27,   27,   27,   27,   52,
1352        54,   54,  440,   52,  439,   52,   55,   55,  418,   52,
1353
1354       390,   54,   56,   56,   57,   57,  381,   55,  371,   58,
1355        58,   54,   56,   56,   57,   57,   74,   55,   82,   82,
1356        58,   58,  369,   56,  364,   57,  363,   57,   58,   82,
1357        58,   59,   59,   66,   66,   66,   66,   66,  362,   82,
1358       218,  218,   59,   59,   68,   68,   68,   68,   68,  156,
1359       156,  156,   59,   69,   69,   69,   69,   69,   71,   71,
1360        71,   71,   71,   73,   73,   73,  284,  284,   73,   88,
1361        88,   88,   88,   88,  294,  294,   74,   74,   74,   74,
1362        74,   74,   74,   74,   74,   75,   75,   75,   75,   75,
1363        75,   75,   75,   75,   77,   77,   78,   78,   79,   79,
1364
1365        81,   81,   78,  107,  361,   77,  355,   78,  107,   79,
1366       307,   81,  298,   77,   78,   77,   79,   78,   81,   79,
1367       288,   81,   81,   73,   73,   73,   73,   73,   73,   73,
1368        73,   73,   76,   80,   80,   83,   83,   94,   94,   94,
1369        94,   84,   84,  233,   80,  231,   83,  144,   80,  230,
1370        80,   84,   84,  222,   80,  213,   83,  145,   76,   76,
1371        85,   85,   84,   86,   86,   87,   87,  121,  144,   76,
1372        85,   85,  121,  201,   86,   86,   87,   87,  145,   76,
1373       198,   85,   86,   85,   86,  166,   87,   90,   90,   90,
1374        90,   90,   76,   76,   76,   76,   76,   76,   76,   76,
1375
1376        76,   92,   92,   92,   92,   92,   93,   93,   93,   93,
1377        93,   95,   95,   95,   95,   95,  123,  123,  123,  124,
1378       125,  125,  143,  164,  146,  123,  127,  127,  123,  162,
1379       123,  123,  124,  125,  123,  152,  139,  127,  124,  125,
1380       139,  139,  154,  143,  143,  146,  245,  127,  128,  128,
1381       128,  128,  128,  128,  128,  128,  128,  129,  129,  192,
1382       192,  192,  138,  154,  148,  138,  141,  245,  129,  138,
1383       138,  138,  140,  130,  140,  199,  199,  199,  129,  303,
1384       303,  140,  140,  138,  120,  138,  155,  155,  155,  155,
1385       155,  118,  140,  140,  157,  157,  157,  157,  157,  159,
1386
1387       159,  159,  159,  159,  160,  160,  160,  160,  161,  161,
1388       161,  161,  161,  177,  177,  177,  177,  177,  177,  177,
1389       177,  177,  178,  178,  178,  178,  178,  178,  178,  178,
1390       178,  179,  179,  116,  180,  180,  182,  182,  181,  181,
1391       184,  184,  179,  113,  181,  180,  112,  182,  111,  181,
1392       108,  184,  179,  180,  182,  180,  181,  182,  184,  181,
1393       105,  184,  184,  183,  183,  179,  179,  179,  179,  179,
1394       179,  179,  179,  179,  183,  185,  185,  102,  183,   99,
1395       183,  186,  186,  247,  183,   96,  185,  187,  187,  188,
1396       188,   72,  186,   61,  189,  189,  185,  187,  187,  188,
1397
1398       188,   46,  186,   28,  247,  189,  189,   19,  187,  240,
1399       188,  240,  188,  189,  240,  189,  190,  190,  191,  191,
1400       191,  191,  191,  196,  196,  196,  196,  190,  190,  193,
1401       193,  193,  193,  193,  207,  207,  207,  190,  195,  195,
1402       195,  195,  195,  197,  197,  197,  197,  197,  202,  202,
1403       202,  203,  203,  203,    0,  204,  377,  377,  205,  205,
1404       241,  202,  241,    0,  203,  241,    0,  202,  204,  205,
1405       203,  216,  216,  216,  204,  211,  211,  211,  211,  205,
1406       206,  206,  206,  206,  206,  208,  208,  208,  208,  208,
1407       210,  210,  210,  210,  210,  212,  212,  212,  212,  212,
1408
1409       215,  215,  215,  215,  215,  217,  217,  217,  217,  217,
1410       219,  219,  219,  219,  219,  220,  220,  220,  220,  221,
1411       221,  221,  221,  221,  223,  223,  224,  224,  282,  282,
1412       282,  232,  249,  238,  239,  223,  239,  224,  232,  232,
1413       238,  238,  242,  239,  239,  223,    0,  224,    0,  232,
1414       232,  238,  238,  249,  239,  239,  251,  251,  252,  252,
1415         0,  254,  254,  242,  242,    0,  251,  251,    0,  252,
1416       253,  253,  254,  255,  255,  386,  386,  251,  252,  252,
1417         0,  253,  254,    0,  255,  257,  257,  253,  256,  256,
1418         0,  253,    0,  255,  255,  268,  257,  256,    0,  256,
1419
1420       258,  258,  259,  259,  257,    0,  257,  260,  260,  256,
1421         0,  258,    0,  259,  261,  261,  268,  258,  260,  260,
1422         0,  258,    0,  259,    0,  261,  262,  262,  260,  263,
1423       263,    0,  265,  265,  261,  261,    0,  262,  264,  264,
1424       263,  262,  263,  265,  266,  266,    0,  262,  264,  264,
1425       263,  269,  269,  265,  279,  266,  265,  266,    0,  264,
1426       468,  468,  269,  477,  477,  266,  270,  270,  270,  270,
1427       270,    0,  269,  271,  271,  271,  271,  271,  272,  272,
1428       272,  272,  272,  273,  273,  273,  273,  273,  274,  274,
1429       274,  274,  274,  275,  275,  275,  275,  275,  276,  276,
1430
1431       276,  276,  276,  277,  277,  277,  277,  277,  278,  278,
1432       278,  594,  594,  278,  279,  279,  279,  279,  279,  279,
1433       279,  279,  279,  280,  280,  280,  280,  280,  280,  280,
1434       280,  280,  281,  281,  281,  281,  281,  283,  283,  283,
1435       283,  283,  285,  285,  285,  285,  285,  286,  286,  286,
1436       286,  287,  287,  287,  287,  287,  289,  291,  291,  291,
1437       291,  291,  292,  292,  292,  299,  290,  290,  278,  278,
1438       278,  278,  278,  278,  278,  278,  278,  290,    0,  289,
1439       293,  293,  293,  293,  293,  643,  643,  290,  295,  295,
1440       295,  295,  295,  296,  296,  296,  296,  297,  297,  297,
1441
1442       297,  297,  300,  300,  300,  300,  300,  301,  301,  301,
1443       289,  302,  302,  302,  302,  302,  304,  304,  304,  304,
1444       304,  305,  305,  305,  305,  299,  299,  299,  299,  299,
1445       299,  299,  299,  299,  306,  306,  306,  306,  306,  308,
1446       308,  309,  309,  310,  310,  311,  311,    0,  313,  313,
1447       308,    0,  309,  310,  310,    0,  311,  312,  312,  313,
1448       308,    0,  309,    0,  310,  311,  311,    0,  312,  313,
1449       314,  314,  653,  653,  312,  315,  315,    0,  312,  726,
1450       726,  314,  316,  316,  315,    0,  315,  317,  317,    0,
1451       314,  314,    0,  316,  318,  318,  315,    0,  317,  319,
1452
1453       319,  316,    0,  316,  317,  318,  320,  320,  317,    0,
1454       319,  319,    0,  321,  321,  318,    0,  320,  322,  322,
1455       319,    0,  323,  323,  321,    0,  320,  320,  321,  322,
1456         0,  322,  323,  323,  321,  324,  324,  325,  325,  322,
1457       326,  326,    0,  323,  727,  727,  324,    0,  325,    0,
1458       325,  326,  375,  375,  375,    0,  324,    0,  325,  324,
1459         0,  326,  327,  327,  327,  327,  327,  328,  328,  328,
1460       328,  328,  329,  329,  329,  329,  329,  330,  330,  330,
1461       330,  330,  331,  331,  331,  331,  331,  332,  332,  332,
1462       332,  332,  333,  333,  333,  333,  333,  334,  334,  334,
1463
1464       334,  334,  341,  341,  348,  348,  365,    0,  359,  359,
1465       359,  729,  729,  366,  366,    0,  341,  359,  348,  365,
1466       359,    0,  359,  359,  366,  365,  359,  367,  367,  368,
1467       368,  368,  373,  373,  366,  384,  384,  384,  367,  379,
1468       379,  379,  379,  373,  368,  368,  771,  771,  367,  388,
1469       388,  388,  388,  373,  374,  374,  374,  374,  374,  376,
1470       376,  376,  376,  376,  378,  378,  378,  378,  378,  380,
1471       380,  380,  380,  380,  382,  382,  382,  382,  382,  382,
1472       382,  382,  382,  383,  383,  383,  383,  383,  385,  385,
1473       385,  385,  385,  387,  387,  387,  387,  387,  389,  389,
1474
1475       389,  389,  389,  391,  391,  392,  392,  393,  393,  394,
1476       394,    0,  396,  396,  391,    0,  392,  393,  393,    0,
1477       394,  395,  395,  396,  391,    0,  392,    0,  393,  394,
1478       394,    0,  395,  396,  397,  397,  773,  773,  395,  398,
1479       398,    0,  395,    0,    0,  397,  399,  399,  398,    0,
1480       398,  400,  400,    0,  397,  397,    0,  399,  401,  401,
1481       398,    0,  400,  402,  402,  399,    0,  399,  400,  401,
1482       403,  403,  400,    0,  402,  402,    0,  404,  404,  401,
1483         0,  403,  405,  405,  402,    0,  406,  406,  404,    0,
1484       403,  403,  404,  405,    0,  405,  406,  406,  404,  407,
1485
1486       407,  408,  408,  405,  409,  409,    0,  406,    0,    0,
1487       407,    0,  408,    0,  408,  409,  466,  466,  466,    0,
1488       407,    0,  408,  407,    0,  409,  410,  410,  410,  410,
1489       410,  411,  411,  411,  411,  411,  412,  412,  412,  412,
1490       412,  413,  413,  413,  413,  413,  414,  414,  414,  414,
1491       414,  415,  415,  415,  415,  415,  416,  416,  416,  416,
1492       416,  419,  419,  419,  419,  419,  420,  420,  420,  420,
1493       420,  421,  421,  421,  421,  421,  422,  422,  422,  422,
1494       422,  423,  423,  423,  423,  423,  424,  424,  424,  424,
1495       424,  425,  425,  425,  425,  425,  426,  426,  426,  426,
1496
1497       426,  427,  427,  427,  427,  427,  428,  428,  428,  428,
1498       428,  429,  429,  429,  429,  429,  430,  430,  430,  430,
1499       430,  431,  431,  431,  431,  431,  432,  432,  432,  432,
1500       432,  438,  445,  445,  444,  444,  446,  446,  438,  438,
1501       444,    0,  445,  445,  446,  444,    0,  446,    0,  438,
1502       438,  447,  447,  445,    0,  444,    0,  446,  448,  448,
1503       449,  449,  447,  450,  450,  451,  451,    0,  448,  448,
1504         0,  449,  447,  451,  450,    0,  451,  452,  452,  448,
1505         0,  449,  453,  453,  450,    0,  451,  452,  452,  454,
1506       454,  455,  455,  453,  456,  456,  457,  457,  452,    0,
1507
1508       454,  455,  455,  453,  453,  456,    0,  457,  458,  458,
1509       454,  454,  455,  457,    0,  456,    0,  457,    0,  458,
1510       459,  459,  461,  461,  461,  461,  461,    0,    0,  458,
1511         0,  459,  475,  475,  475,  459,  462,  462,  462,  462,
1512       462,  459,  460,  460,    0,  460,  460,  460,  460,  460,
1513       460,  460,  460,  460,  460,  460,  460,  460,  460,  460,
1514       460,  460,  460,  460,  460,  460,  460,  460,  460,  460,
1515       460,  460,  460,  460,  460,  460,  460,  460,  460,  460,
1516       460,  460,  460,  460,  460,  460,  460,  460,  460,  460,
1517       460,  460,  460,  460,  460,  460,  460,  460,  460,  460,
1518
1519       460,  460,  460,  460,  460,  460,  460,  460,  460,  460,
1520       460,  460,  463,  463,  463,  463,  463,  464,  465,  465,
1521       465,  465,  465,  467,  467,  467,  467,  467,  469,  469,
1522       469,  469,  469,  470,  470,  470,  470,  471,  471,  471,
1523       471,  471,  473,  474,  474,  474,  474,  474,  476,  476,
1524       476,  476,  476,  478,  478,  478,  478,  478,  479,  479,
1525       479,  479,  480,  480,  480,  480,  480,  482,  482,  482,
1526       482,  482,  483,  483,  483,  483,  483,  464,  464,  464,
1527       464,  464,  464,  464,  464,  464,  484,  484,  484,  484,
1528       484,  485,  485,  485,  485,  485,  486,  486,  486,  486,
1529
1530       486,    0,  473,  473,  473,  473,  473,  473,  473,  473,
1531       473,  487,  487,  487,  487,  487,  488,  488,  488,  488,
1532       488,  490,  491,  491,  491,  491,  491,  592,  592,  592,
1533       490,  492,  492,  492,  492,  492,  493,  493,  493,  493,
1534       493,  490,    0,  490,  494,  494,  494,  494,  494,  495,
1535       495,  495,  495,  495,  496,  496,  496,  496,  496,  497,
1536       497,  497,  497,  497,  498,  498,  498,  498,  498,  499,
1537       499,  499,  499,  499,  500,  500,  500,  500,  500,  501,
1538       501,  501,  501,  501,  502,  502,  502,  502,  502,  503,
1539       503,  503,  503,  503,  504,  504,  504,  504,  504,  505,
1540
1541       505,  506,  506,    0,    0,  505,  507,  507,  508,  508,
1542       505,  506,  506,    0,  507,  509,  509,  507,    0,  508,
1543       505,    0,  506,  510,  510,  509,  509,  507,    0,  508,
1544       511,  511,  512,  512,  510,    0,  509,  513,  513,    0,
1545       512,  511,    0,  512,  510,  514,  514,  513,  513,  515,
1546       515,  511,    0,  512,  516,  516,  514,    0,  513,    0,
1547       515,  517,  517,    0,  516,  516,  514,  514,  518,  518,
1548       515,  515,  517,  519,  519,  516,  520,  520,    0,  518,
1549         0,    0,  517,    0,  519,  518,    0,  520,    0,  518,
1550         0,  520,    0,    0,  519,    0,    0,  520,  521,  521,
1551
1552         0,  521,  521,  521,  521,  521,  521,  521,  521,  521,
1553       521,  521,  521,  521,  521,  521,  521,  521,  521,  521,
1554       521,  521,  521,  521,  521,  521,  521,  521,  521,  521,
1555       521,  521,  521,  521,  521,  521,  521,  521,  521,  521,
1556       521,  521,  521,  521,  521,  521,  521,  521,  521,  521,
1557       521,  521,  521,  521,  521,  521,  521,  521,  521,  521,
1558       521,  521,  521,  521,  521,  521,  521,  521,  522,  522,
1559       522,  522,  522,  523,  523,  523,  523,  523,  524,  524,
1560       524,  524,  524,  531,  531,  531,  532,  532,  532,  536,
1561       536,  536,  536,  536,  596,  596,  596,  596,  531,  531,
1562
1563         0,    0,  532,  537,  537,  537,  537,  537,  538,  538,
1564       538,  538,  538,  539,  539,  539,  539,  539,  540,  540,
1565       540,  540,  540,  541,  541,  541,  541,  541,  542,  542,
1566       542,  542,  542,  543,  543,  543,  543,  543,  544,  544,
1567       544,  544,  544,  545,  545,  545,  545,  545,  546,  546,
1568       546,  546,  546,  547,  547,  547,  547,  547,  548,  548,
1569       548,  548,  548,  549,  549,  549,  549,  549,  550,  550,
1570       551,  551,    0,    0,  550,  552,  552,  553,  553,  550,
1571       551,  551,    0,  552,  554,  554,  552,    0,  553,  550,
1572         0,  551,  555,  555,  554,  554,  552,    0,  553,  556,
1573
1574       556,  557,  557,  555,    0,  554,  558,  558,    0,  557,
1575       556,    0,  557,  555,  559,  559,  558,  558,  560,  560,
1576       556,    0,  557,  561,  561,  559,    0,  558,    0,  560,
1577       562,  562,    0,  561,  561,  559,  559,  563,  563,  560,
1578       560,  562,  564,  564,  561,  565,  565,    0,  563,    0,
1579         0,  562,    0,  564,  563,    0,  565,    0,  563,    0,
1580       565,    0,    0,  564,    0,    0,  565,  566,  566,  566,
1581       566,  566,  567,  567,  567,  567,  567,  568,  568,  568,
1582       568,  568,  569,  569,  569,  569,  569,  570,  570,  570,
1583       570,  570,  571,  571,  571,  571,  571,  572,  572,  572,
1584
1585       572,  572,  573,  573,  573,  573,  573,  574,  574,  574,
1586       574,  574,  575,  575,  576,  576,  577,  577,  578,  578,
1587         0,  579,  579,  575,    0,  576,  575,  577,  577,  578,
1588         0,  578,  579,  575,  579,  576,    0,  577,    0,  578,
1589       580,  580,  579,  581,  581,    0,  582,  582,  641,  641,
1590       641,  580,  583,  583,  581,  584,  584,  582,    0,    0,
1591         0,  580,  580,  583,  581,  582,  584,  582,  583,  585,
1592       585,  586,  586,  583,  584,    0,  584,  585,    0,  586,
1593       585,    0,  586,  587,  587,  588,  588,  649,  649,  649,
1594       585,    0,  586,    0,  587,  588,  588,  591,  591,  591,
1595
1596       591,  591,    0,  649,  587,    0,  588,  593,  593,  593,
1597       593,  593,  595,  595,  595,  595,  595,  597,  597,  597,
1598       597,  597,  599,  599,  600,  600,  600,  600,  600,  645,
1599       645,  645,  645,  599,  601,  601,  601,  601,  601,    0,
1600         0,    0,    0,  599,  602,  602,  602,  602,  602,  603,
1601       603,  603,  603,  603,  604,  604,  604,  604,  604,  605,
1602       605,  605,  605,  605,  606,  606,  606,  606,  606,  607,
1603       607,  607,  607,  607,  608,  608,  608,  608,  608,  609,
1604       609,  609,  609,  609,  610,  610,  610,  610,  610,  611,
1605       611,  611,  611,  611,  612,  612,  612,  612,  612,  613,
1606
1607       613,  613,  613,  613,  614,  614,  614,  614,  614,  615,
1608       615,  615,  615,  615,  616,  616,  616,  616,  616,  617,
1609       618,  618,  618,  618,  618,    0,    0,    0,  617,  619,
1610       619,  619,  619,  619,  620,  620,  620,  620,  620,  617,
1611         0,  617,  621,  621,  621,  621,  621,  622,  622,  622,
1612       622,  622,  623,  623,  623,  623,  623,  624,  624,  625,
1613       625,  626,  626,  627,  627,    0,  628,  628,  624,    0,
1614       625,  624,  626,  626,  627,    0,  627,  628,  624,  628,
1615       625,    0,  626,    0,  627,  629,  629,  628,  630,  630,
1616         0,  631,  631,    0,    0,    0,  629,  632,  632,  630,
1617
1618       633,  633,  631,    0,    0,    0,  629,  629,  632,  630,
1619       631,  633,  631,  632,  634,  634,  635,  635,  632,  633,
1620         0,  633,  634,    0,  635,  634,    0,  635,  636,  636,
1621       637,  637,    0,  638,  638,  634,    0,  635,    0,  636,
1622       637,  637,  638,  640,  640,  640,  640,  640,    0,  636,
1623         0,  637,    0,  638,  638,  638,  638,  642,  642,  642,
1624       642,  642,  644,  644,  644,  644,  644,  646,  646,  646,
1625       646,  646,  648,  648,  654,  654,  654,  654,  654,    0,
1626         0,    0,    0,  648,    0,    0,    0,  638,  655,  655,
1627       655,  655,  655,  648,  656,  656,  656,  656,  656,  657,
1628
1629       657,  657,  657,  657,  658,  658,  658,  658,  658,  659,
1630       659,  659,  659,  659,  660,  660,  661,  661,  662,  662,
1631       663,  663,    0,  664,  664,  660,    0,  661,  660,  662,
1632       662,  663,    0,  663,  664,  660,  664,  661,    0,  662,
1633         0,  663,  665,  665,  664,  666,  666,    0,  667,  667,
1634         0,    0,    0,  665,  668,  668,  666,  669,  669,  667,
1635         0,    0,    0,  665,  665,  668,  666,  667,  669,  667,
1636       668,  670,  670,  671,  671,  668,  669,    0,  669,  670,
1637         0,  671,  670,    0,  671,  672,  672,  673,  673,  674,
1638       674,    0,  670,    0,  671,    0,  672,  673,  673,    0,
1639
1640       674,  675,  675,  677,  677,    0,  672,    0,  673,    0,
1641       674,    0,  675,    0,  677,  678,  678,  679,  679,  680,
1642       680,    0,  675,    0,  677,    0,  678,    0,  679,    0,
1643       680,  681,  681,    0,  679,    0,  678,    0,  679,    0,
1644       680,    0,  681,  682,  682,    0,  683,  683,  681,  684,
1645       684,    0,  681,    0,  682,    0,  682,  683,    0,  684,
1646       684,  685,  685,    0,  682,  686,  686,  683,    0,  683,
1647       684,    0,  685,  687,  687,    0,  686,    0,  685,  688,
1648       688,    0,  685,    0,  687,  687,  686,    0,    0,    0,
1649       688,    0,    0,    0,  687,  689,  689,  689,  689,  689,
1650
1651       688,  690,  690,  690,  690,  690,  691,  691,  691,  691,
1652       691,  692,  692,  692,  692,  692,  693,  693,  693,  693,
1653       693,  694,  694,  694,  694,  694,  695,  695,  695,  695,
1654       695,  696,  696,  696,  696,  696,  697,  697,  697,  697,
1655       697,  698,  698,  698,  698,  698,  699,  699,  699,  699,
1656       699,  700,  700,  700,  700,  700,  701,  701,  701,  701,
1657       701,  703,  703,  705,  705,  706,  706,    0,  707,  707,
1658       708,  708,  703,    0,  705,    0,  706,  709,  709,  707,
1659         0,  708,  703,    0,  705,  707,  706,    0,  709,  707,
1660         0,  708,  710,  710,  709,  711,  711,    0,  709,  712,
1661
1662       712,    0,    0,  710,    0,  710,  711,    0,    0,  712,
1663       712,  713,  713,  710,  714,  714,  711,    0,  711,    0,
1664       712,    0,  713,  716,  716,  714,  715,  715,  713,  718,
1665       718,    0,  713,    0,  716,  714,    0,  715,  715,  719,
1666       719,  719,  719,  719,  716,    0,    0,  715,    0,    0,
1667       718,  720,  720,  720,  720,  720,  721,  721,  721,  721,
1668       721,  722,  722,  722,  722,  722,  723,  723,  723,  723,
1669       723,  724,  724,  724,  724,  724,  725,  725,  725,  725,
1670       725,  730,  730,  732,  732,  733,  733,    0,  734,  734,
1671       735,  735,  730,    0,  732,    0,  733,  736,  736,  734,
1672
1673         0,  735,  730,    0,  732,  734,  733,    0,  736,  734,
1674         0,  735,  737,  737,  736,  738,  738,    0,  736,  739,
1675       739,    0,    0,  737,    0,  737,  738,    0,    0,  739,
1676       739,  740,  740,  737,  741,  741,  738,    0,  738,    0,
1677       739,    0,  740,  743,  743,  741,  742,  742,  740,  744,
1678       744,    0,  740,    0,  743,  741,    0,  742,  742,    0,
1679       744,  745,  745,    0,  743,  746,  746,  742,  748,  748,
1680       744,  744,  745,  746,  747,  747,  746,  749,  749,  748,
1681         0,  748,  745,  750,  750,  747,  746,    0,  749,  748,
1682       751,  751,  747,    0,  750,  747,  752,  752,  749,    0,
1683
1684         0,  751,    0,    0,  750,    0,    0,  752,    0,    0,
1685         0,  751,  753,  753,  753,  753,  753,  752,  754,  754,
1686       754,  754,  754,  755,  755,  755,  755,  755,  758,  758,
1687       759,  759,  760,  760,  761,  761,    0,  763,  763,  758,
1688       760,  759,    0,  760,    0,  761,  762,  762,  763,  758,
1689       758,  759,  761,  760,    0,  761,    0,  762,  763,  762,
1690       764,  764,  765,  765,  766,  766,    0,  762,  767,  767,
1691         0,  764,    0,  765,    0,  766,  768,  768,  768,  768,
1692       768,  764,    0,  765,    0,  766,    0,    0,    0,  767,
1693       769,  769,  769,  769,  769,  770,  770,  770,  770,  770,
1694
1695       775,  775,  776,  776,  777,  777,  778,  778,    0,  780,
1696       780,  775,  777,  776,    0,  777,    0,  778,  779,  779,
1697       780,  775,  775,  776,  778,  777,    0,  778,    0,  779,
1698       780,  779,  781,  781,  782,  782,  783,  783,    0,  779,
1699       784,  784,    0,  781,    0,  782,    0,  783,  785,  785,
1700       784,  784,    0,  781,    0,  782,    0,  783,    0,  785,
1701         0,  784,  786,  786,  787,  787,  789,  789,    0,  785,
1702       790,  790,    0,  786,    0,  787,  789,  789,    0,  786,
1703         0,  790,    0,  786,  787,  787,    0,  789,  791,  791,
1704         0,  790,  792,  792,    0,    0,  795,  795,    0,  791,
1705
1706       796,  796,    0,  792,    0,  791,  795,  795,    0,  791,
1707         0,  796,  792,  792,  797,  797,    0,  795,  798,  798,
1708         0,  796,  799,  799,    0,  797,    0,    0,    0,  798,
1709         0,  797,    0,  799,    0,  797,  800,  800,  798,  798,
1710       801,  801,    0,  799,  802,  802,    0,  800,    0,  800,
1711         0,  801,  803,  803,  802,  802,    0,  800,  804,  804,
1712         0,  801,    0,  803,    0,  802,  805,  805,    0,  804,
1713         0,  804,    0,  803,  806,  806,    0,  805,    0,  804,
1714       807,  807,  809,  809,  806,  806,    0,  805,    0,  808,
1715       808,  807,    0,  809,    0,  806,  810,  810,  811,  811,
1716
1717       808,  807,  808,  809,  812,  812,  810,  810,    0,  811,
1718       808,  813,  813,  814,  814,  812,  811,  810,    0,  811,
1719       815,  815,  813,    0,  814,  812,  816,  816,    0,  813,
1720         0,  815,  813,    0,  814,  817,  817,  816,  815,  820,
1721       820,  815,  818,  818,  819,  819,  817,  816,    0,    0,
1722       820,    0,  817,  818,    0,  819,  817,  821,  821,  818,
1723       820,  819,    0,  818,    0,  819,  822,  822,  821,    0,
1724         0,    0,    0,    0,    0,    0,    0,  822,  821,    0,
1725         0,    0,    0,    0,    0,    0,    0,  822,  824,  824,
1726       824,  824,  824,  824,  824,  824,  824,  824,  824,  824,
1727
1728       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
1729       825,  825,  826,  826,  826,  826,  826,  826,  826,  826,
1730       826,  826,  826,  826,  827,  827,  827,  827,  827,  827,
1731       827,  827,  827,  827,  827,  827,  828,  828,  828,  828,
1732       828,  828,  828,  828,  828,  828,  828,  828,  829,  829,
1733       829,  829,  829,  829,  829,  829,  829,  829,  829,  829,
1734       830,    0,    0,    0,    0,    0,  830,  831,    0,    0,
1735         0,    0,    0,  831,  832,  832,  832,    0,  832,  832,
1736       833,    0,    0,    0,  833,    0,    0,    0,    0,    0,
1737       833,  834,    0,    0,    0,    0,    0,  834,  835,  835,
1738
1739         0,    0,    0,  835,  835,  835,  835,  835,    0,  835,
1740       836,  836,    0,    0,    0,  836,  836,  836,  836,  836,
1741         0,  836,  837,  837,    0,    0,  837,  837,  837,  837,
1742         0,  837,  837,  837,  838,  838,    0,    0,  838,  838,
1743       838,  838,  838,  838,  838,  838,  839,    0,    0,    0,
1744         0,  839,  839,  839,  839,    0,  839,  839,  840,    0,
1745         0,    0,    0,    0,  840,  841,    0,    0,    0,    0,
1746         0,  841,  842,  842,  842,  842,  842,  842,  842,  842,
1747       842,  842,  842,  843,  843,  843,  843,  843,  843,  843,
1748       843,  843,  843,  843,  844,  844,  844,  844,  844,  844,
1749
1750       844,  844,  844,  844,  844,  845,    0,    0,    0,  845,
1751         0,    0,    0,    0,    0,  845,  846,    0,    0,    0,
1752         0,    0,  846,  847,  847,  847,  847,  847,  847,  847,
1753         0,  847,  847,  847,  847,  848,  848,    0,  848,  848,
1754       848,  848,  848,  848,  848,  848,  848,  849,  849,  849,
1755       849,  849,  849,  849,  849,  849,  849,  849,  849,  850,
1756       850,  850,  850,  850,  850,  850,  850,  850,  850,  850,
1757       850,  851,  851,  851,  851,  851,  851,  851,  851,  851,
1758       851,  851,  851,  823,  823,  823,  823,  823,  823,  823,
1759       823,  823,  823,  823,  823,  823,  823,  823,  823,  823,
1760
1761       823,  823,  823,  823,  823,  823,  823,  823,  823,  823,
1762       823,  823,  823,  823,  823,  823,  823,  823,  823,  823,
1763       823,  823,  823,  823,  823,  823,  823,  823,  823,  823,
1764       823,  823,  823,  823,  823,  823,  823,  823,  823,  823,
1765       823,  823,  823,  823,  823,  823,  823,  823,  823,  823,
1766       823,  823,  823,  823
1767     } ;
1768
1769 extern int yy_flex_debug;
1770 int yy_flex_debug = 0;
1771
1772 static yy_state_type *yy_state_buf=0, *yy_state_ptr=0;
1773 static char *yy_full_match;
1774 static int yy_lp;
1775 static int yy_looking_for_trail_begin = 0;
1776 static int yy_full_lp;
1777 static int *yy_full_state;
1778 #define YY_TRAILING_MASK 0x2000
1779 #define YY_TRAILING_HEAD_MASK 0x4000
1780 #define REJECT \
1781 { \
1782 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ \
1783 yy_cp = (yy_full_match); /* restore poss. backed-over text */ \
1784 (yy_lp) = (yy_full_lp); /* restore orig. accepting pos. */ \
1785 (yy_state_ptr) = (yy_full_state); /* restore orig. state */ \
1786 yy_current_state = *(yy_state_ptr); /* restore curr. state */ \
1787 ++(yy_lp); \
1788 goto find_rule; \
1789 }
1790
1791 #define yymore() yymore_used_but_not_detected
1792 #define YY_MORE_ADJ 0
1793 #define YY_RESTORE_YY_MORE_OFFSET
1794 char *yytext;
1795 /*
1796  *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
1797  *  Copyright (C) 2008-2012 - Scilab Enterprises - Bruno JOFRET
1798  *
1799  * Copyright (C) 2012 - 2016 - Scilab Enterprises
1800  *
1801  * This file is hereby licensed under the terms of the GNU GPL v2.0,
1802  * pursuant to article 5.3.4 of the CeCILL v.2.1.
1803  * This file was originally licensed under the terms of the CeCILL v2.1,
1804  * and continues to be available under such terms.
1805  * For more information, see the COPYING file which you should have received
1806  * along with this program.
1807  * === LICENSE_END ===
1808  *
1809  */
1810
1811 #include <stack>
1812
1813 #include "isatty.hxx"
1814 #include "parse.hxx"
1815 #include "parser_private.hxx"
1816
1817 #include "context.hxx"
1818
1819 extern "C"
1820 {
1821 #include "charEncoding.h"
1822 #include "sci_malloc.h"
1823 }
1824
1825 static std::stack<int> paren_levels;
1826
1827 static int comment_level = 0;
1828 static int last_token = 0;
1829 static int exit_status = PARSE_ERROR;
1830 static int str_opener_column = 0;
1831 static std::string current_file;
1832 static std::string program_name;
1833
1834 static std::string pstBuffer;
1835
1836 extern void yyerror(std::string);
1837
1838 #define YY_USER_ACTION                          \
1839     yylloc.first_column = yylloc.last_column; yylloc.last_column += yyleng;
1840 //yylloc.last_column += yyleng;
1841
1842 /* -*- Verbose Special Debug -*- */
1843 //#define DEV
1844 //#define TOKENDEV
1845
1846 #ifdef DEV
1847 #define DEBUG(x) std::cout << "[DEBUG] " << x << std::endl;
1848 #else
1849 #define DEBUG(x) /* Nothing */
1850 #endif
1851
1852 #define INITIAL 0
1853 #define SIMPLESTRING 1
1854 #define DOUBLESTRING 2
1855 #define REGIONCOMMENT 3
1856 #define LINECOMMENT 4
1857 #define LINEBREAK 5
1858 #define MATRIX 6
1859 #define SHELLMODE 7
1860 #define BEGINID 8
1861
1862 #ifndef YY_EXTRA_TYPE
1863 #define YY_EXTRA_TYPE void *
1864 #endif
1865
1866 static int yy_init_globals (void );
1867
1868 /* Accessor methods to globals.
1869    These are made visible to non-reentrant scanners for convenience. */
1870
1871 int yylex_destroy (void );
1872
1873 int yyget_debug (void );
1874
1875 void yyset_debug (int debug_flag  );
1876
1877 YY_EXTRA_TYPE yyget_extra (void );
1878
1879 void yyset_extra (YY_EXTRA_TYPE user_defined  );
1880
1881 FILE *yyget_in (void );
1882
1883 void yyset_in  (FILE * in_str  );
1884
1885 FILE *yyget_out (void );
1886
1887 void yyset_out  (FILE * out_str  );
1888
1889 int yyget_leng (void );
1890
1891 char *yyget_text (void );
1892
1893 int yyget_lineno (void );
1894
1895 void yyset_lineno (int line_number  );
1896
1897 /* Macros after this point can all be overridden by user definitions in
1898  * section 1.
1899  */
1900
1901 #ifndef YY_SKIP_YYWRAP
1902 #ifdef __cplusplus
1903 extern "C" int yywrap (void );
1904 #else
1905 extern int yywrap (void );
1906 #endif
1907 #endif
1908
1909     static void yyunput (int c,char *buf_ptr  );
1910     
1911 #ifndef yytext_ptr
1912 static void yy_flex_strncpy (char *,yyconst char *,int );
1913 #endif
1914
1915 #ifdef YY_NEED_STRLEN
1916 static int yy_flex_strlen (yyconst char * );
1917 #endif
1918
1919 #ifndef YY_NO_INPUT
1920
1921 #ifdef __cplusplus
1922 static int yyinput (void );
1923 #else
1924 static int input (void );
1925 #endif
1926
1927 #endif
1928
1929         static int yy_start_stack_ptr = 0;
1930         static int yy_start_stack_depth = 0;
1931         static int *yy_start_stack = NULL;
1932     
1933     static void yy_push_state (int new_state );
1934     
1935     static void yy_pop_state (void );
1936     
1937     static int yy_top_state (void );
1938     
1939 /* Amount of stuff to slurp up with each read. */
1940 #ifndef YY_READ_BUF_SIZE
1941 #ifdef __ia64__
1942 /* On IA-64, the buffer size is 16k, not 8k */
1943 #define YY_READ_BUF_SIZE 16384
1944 #else
1945 #define YY_READ_BUF_SIZE 8192
1946 #endif /* __ia64__ */
1947 #endif
1948
1949 /* Copy whatever the last rule matched to the standard output. */
1950 #ifndef ECHO
1951 /* This used to be an fputs(), but since the string might contain NUL's,
1952  * we now use fwrite().
1953  */
1954 #define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
1955 #endif
1956
1957 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
1958  * is returned in "result".
1959  */
1960 #ifndef YY_INPUT
1961 #define YY_INPUT(buf,result,max_size) \
1962         if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
1963                 { \
1964                 int c = '*'; \
1965                 size_t n; \
1966                 for ( n = 0; n < max_size && \
1967                              (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
1968                         buf[n] = (char) c; \
1969                 if ( c == '\n' ) \
1970                         buf[n++] = (char) c; \
1971                 if ( c == EOF && ferror( yyin ) ) \
1972                         YY_FATAL_ERROR( "input in flex scanner failed" ); \
1973                 result = n; \
1974                 } \
1975         else \
1976                 { \
1977                 errno=0; \
1978                 while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
1979                         { \
1980                         if( errno != EINTR) \
1981                                 { \
1982                                 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1983                                 break; \
1984                                 } \
1985                         errno=0; \
1986                         clearerr(yyin); \
1987                         } \
1988                 }\
1989 \
1990
1991 #endif
1992
1993 /* No semi-colon after return; correct usage is to write "yyterminate();" -
1994  * we don't want an extra ';' after the "return" because that will cause
1995  * some compilers to complain about unreachable statements.
1996  */
1997 #ifndef yyterminate
1998 #define yyterminate() return YY_NULL
1999 #endif
2000
2001 /* Number of entries by which start-condition stack grows. */
2002 #ifndef YY_START_STACK_INCR
2003 #define YY_START_STACK_INCR 25
2004 #endif
2005
2006 /* Report a fatal error. */
2007 #ifndef YY_FATAL_ERROR
2008 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
2009 #endif
2010
2011 /* end tables serialization structures and prototypes */
2012
2013 /* Default declaration of generated scanner - a define so the user can
2014  * easily add parameters.
2015  */
2016 #ifndef YY_DECL
2017 #define YY_DECL_IS_OURS 1
2018
2019 extern int yylex (void);
2020
2021 #define YY_DECL int yylex (void)
2022 #endif /* !YY_DECL */
2023
2024 /* Code executed at the beginning of each rule, after yytext and yyleng
2025  * have been set up.
2026  */
2027 #ifndef YY_USER_ACTION
2028 #define YY_USER_ACTION
2029 #endif
2030
2031 /* Code executed at the end of each rule. */
2032 #ifndef YY_BREAK
2033 #define YY_BREAK break;
2034 #endif
2035
2036 #define YY_RULE_SETUP \
2037         if ( yyleng > 0 ) \
2038                 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \
2039                                 (yytext[yyleng - 1] == '\n'); \
2040         YY_USER_ACTION
2041
2042 /** The main scanner function which does all the work.
2043  */
2044 YY_DECL
2045 {
2046         register yy_state_type yy_current_state;
2047         register char *yy_cp, *yy_bp;
2048         register int yy_act;
2049     
2050         if ( !(yy_init) )
2051                 {
2052                 (yy_init) = 1;
2053
2054 #ifdef YY_USER_INIT
2055                 YY_USER_INIT;
2056 #endif
2057
2058         /* Create the reject buffer large enough to save one state per allowed character. */
2059         if ( ! (yy_state_buf) )
2060             (yy_state_buf) = (yy_state_type *)yyalloc(YY_STATE_BUF_SIZE  );
2061             if ( ! (yy_state_buf) )
2062                 YY_FATAL_ERROR( "out of dynamic memory in yylex()" );
2063
2064                 if ( ! (yy_start) )
2065                         (yy_start) = 1; /* first start state */
2066
2067                 if ( ! yyin )
2068                         yyin = stdin;
2069
2070                 if ( ! yyout )
2071                         yyout = stdout;
2072
2073                 if ( ! YY_CURRENT_BUFFER ) {
2074                         yyensure_buffer_stack ();
2075                         YY_CURRENT_BUFFER_LVALUE =
2076                                 yy_create_buffer(yyin,YY_BUF_SIZE );
2077                 }
2078
2079                 yy_load_buffer_state( );
2080                 }
2081
2082         while ( 1 )             /* loops until end-of-file is reached */
2083                 {
2084                 yy_cp = (yy_c_buf_p);
2085
2086                 /* Support of yytext. */
2087                 *yy_cp = (yy_hold_char);
2088
2089                 /* yy_bp points to the position in yy_ch_buf of the start of
2090                  * the current run.
2091                  */
2092                 yy_bp = yy_cp;
2093
2094                 yy_current_state = (yy_start);
2095                 yy_current_state += YY_AT_BOL();
2096
2097                 (yy_state_ptr) = (yy_state_buf);
2098                 *(yy_state_ptr)++ = yy_current_state;
2099
2100 yy_match:
2101                 do
2102                         {
2103                         register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
2104                         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2105                                 {
2106                                 yy_current_state = (int) yy_def[yy_current_state];
2107                                 if ( yy_current_state >= 824 )
2108                                         yy_c = yy_meta[(unsigned int) yy_c];
2109                                 }
2110                         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2111                         *(yy_state_ptr)++ = yy_current_state;
2112                         ++yy_cp;
2113                         }
2114                 while ( yy_base[yy_current_state] != 4184 );
2115
2116 yy_find_action:
2117                 yy_current_state = *--(yy_state_ptr);
2118                 (yy_lp) = yy_accept[yy_current_state];
2119 find_rule: /* we branch to this label when backing up */
2120                 for ( ; ; ) /* until we find what rule we matched */
2121                         {
2122                         if ( (yy_lp) && (yy_lp) < yy_accept[yy_current_state + 1] )
2123                                 {
2124                                 yy_act = yy_acclist[(yy_lp)];
2125                                 if ( yy_act & YY_TRAILING_HEAD_MASK ||
2126                                      (yy_looking_for_trail_begin) )
2127                                         {
2128                                         if ( yy_act == (yy_looking_for_trail_begin) )
2129                                                 {
2130                                                 (yy_looking_for_trail_begin) = 0;
2131                                                 yy_act &= ~YY_TRAILING_HEAD_MASK;
2132                                                 break;
2133                                                 }
2134                                         }
2135                                 else if ( yy_act & YY_TRAILING_MASK )
2136                                         {
2137                                         (yy_looking_for_trail_begin) = yy_act & ~YY_TRAILING_MASK;
2138                                         (yy_looking_for_trail_begin) |= YY_TRAILING_HEAD_MASK;
2139                                         }
2140                                 else
2141                                         {
2142                                         (yy_full_match) = yy_cp;
2143                                         (yy_full_state) = (yy_state_ptr);
2144                                         (yy_full_lp) = (yy_lp);
2145                                         break;
2146                                         }
2147                                 ++(yy_lp);
2148                                 goto find_rule;
2149                                 }
2150                         --yy_cp;
2151                         yy_current_state = *--(yy_state_ptr);
2152                         (yy_lp) = yy_accept[yy_current_state];
2153                         }
2154
2155                 YY_DO_BEFORE_ACTION;
2156
2157 do_action:      /* This label is used only to access EOF actions. */
2158
2159                 switch ( yy_act )
2160         { /* beginning of action switch */
2161 case 1:
2162 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
2163 (yy_c_buf_p) = yy_cp = yy_bp + 3;
2164 YY_DO_BEFORE_ACTION; /* set up yytext again */
2165 YY_RULE_SETUP
2166 {
2167 // BOM found ==> ignored
2168 }
2169         YY_BREAK
2170 case 2:
2171 YY_RULE_SETUP
2172 {
2173     BEGIN(INITIAL);
2174     return scan_throw(BOOLTRUE);
2175 }
2176         YY_BREAK
2177 case 3:
2178 YY_RULE_SETUP
2179 {
2180     BEGIN(INITIAL);
2181     return scan_throw(BOOLFALSE);
2182 }
2183         YY_BREAK
2184 case 4:
2185 YY_RULE_SETUP
2186 {
2187         if (last_token != DOT)
2188     {
2189         ParserSingleInstance::pushControlStatus(Parser::WithinIf);
2190     }
2191     DEBUG("BEGIN(INITIAL)");
2192     BEGIN(INITIAL);
2193     return scan_throw(IF);
2194 }
2195         YY_BREAK
2196 case 5:
2197 YY_RULE_SETUP
2198 {
2199     DEBUG("BEGIN(INITIAL)");
2200     BEGIN(INITIAL);
2201     return scan_throw(THEN);
2202 }
2203         YY_BREAK
2204 case 6:
2205 YY_RULE_SETUP
2206 {
2207         if (last_token != DOT)
2208     {
2209         // Pop to step out IF
2210         ParserSingleInstance::popControlStatus();
2211         ParserSingleInstance::pushControlStatus(Parser::WithinElse);
2212     }
2213     DEBUG("BEGIN(INITIAL)");
2214     BEGIN(INITIAL);
2215         return scan_throw(ELSE);
2216 }
2217         YY_BREAK
2218 case 7:
2219 YY_RULE_SETUP
2220 {
2221         if (last_token != DOT)
2222     {
2223         ParserSingleInstance::popControlStatus();
2224         ParserSingleInstance::pushControlStatus(Parser::WithinElseIf);
2225     }
2226     DEBUG("BEGIN(INITIAL)");
2227     BEGIN(INITIAL);
2228         return scan_throw(ELSEIF);
2229 }
2230         YY_BREAK
2231 case 8:
2232 YY_RULE_SETUP
2233 {
2234         if (last_token != DOT)
2235     {
2236         ParserSingleInstance::popControlStatus();
2237     }
2238     DEBUG("BEGIN(INITIAL)");
2239     BEGIN(INITIAL);
2240     return scan_throw(END);
2241 }
2242         YY_BREAK
2243 case 9:
2244 YY_RULE_SETUP
2245 {
2246         if (last_token != DOT)
2247     {
2248         ParserSingleInstance::pushControlStatus(Parser::WithinSelect);
2249     }
2250     DEBUG("BEGIN(INITIAL)");
2251     BEGIN(INITIAL);
2252     return scan_throw(SELECT);
2253 }
2254         YY_BREAK
2255 case 10:
2256 YY_RULE_SETUP
2257 {
2258         if (last_token != DOT)
2259     {
2260         ParserSingleInstance::pushControlStatus(Parser::WithinSwitch);
2261     }
2262     DEBUG("BEGIN(INITIAL)");
2263     BEGIN(INITIAL);
2264     return scan_throw(SWITCH);
2265 }
2266         YY_BREAK
2267 case 11:
2268 YY_RULE_SETUP
2269 {
2270         if (last_token != DOT)
2271     {
2272         ParserSingleInstance::popControlStatus();
2273         ParserSingleInstance::pushControlStatus(Parser::WithinOtherwise);
2274     }
2275     DEBUG("BEGIN(INITIAL)");
2276     BEGIN(INITIAL);
2277         return scan_throw(OTHERWISE);
2278 }
2279         YY_BREAK
2280 case 12:
2281 YY_RULE_SETUP
2282 {
2283         if (last_token != DOT)
2284     {
2285         ParserSingleInstance::popControlStatus();
2286         ParserSingleInstance::pushControlStatus(Parser::WithinCase);
2287     }
2288     DEBUG("BEGIN(INITIAL)");
2289     BEGIN(INITIAL);
2290     return scan_throw(CASE);
2291 }
2292         YY_BREAK
2293 case 13:
2294 YY_RULE_SETUP
2295 {
2296         if (last_token != DOT)
2297     {
2298         ParserSingleInstance::pushControlStatus(Parser::WithinFunction);
2299     }
2300     DEBUG("BEGIN(INITIAL)");
2301     BEGIN(INITIAL);
2302     return scan_throw(FUNCTION);
2303 }
2304         YY_BREAK
2305 case 14:
2306 YY_RULE_SETUP
2307 {
2308         if (last_token != DOT)
2309     {
2310         ParserSingleInstance::popControlStatus();
2311     }
2312     DEBUG("BEGIN(INITIAL)");
2313     BEGIN(INITIAL);
2314         return scan_throw(ENDFUNCTION);
2315 }
2316         YY_BREAK
2317 case 15:
2318 YY_RULE_SETUP
2319 {
2320         if (last_token != DOT)
2321     {
2322         ParserSingleInstance::pushControlStatus(Parser::WithinFor);
2323     }
2324     BEGIN(INITIAL);
2325     return scan_throw(FOR);
2326 }
2327         YY_BREAK
2328 case 16:
2329 YY_RULE_SETUP
2330 {
2331         if (last_token != DOT)
2332     {
2333         ParserSingleInstance::pushControlStatus(Parser::WithinWhile);
2334     }
2335         BEGIN(INITIAL);
2336         return scan_throw(WHILE);
2337 }
2338         YY_BREAK
2339 case 17:
2340 YY_RULE_SETUP
2341 {
2342         BEGIN(INITIAL);
2343     return scan_throw(DO);
2344 }
2345         YY_BREAK
2346 case 18:
2347 YY_RULE_SETUP
2348 {
2349         BEGIN(INITIAL);
2350         return scan_throw(BREAK);
2351 }
2352         YY_BREAK
2353 case 19:
2354 YY_RULE_SETUP
2355 {
2356         BEGIN(INITIAL);
2357         return scan_throw(CONTINUE);
2358 }
2359         YY_BREAK
2360 case 20:
2361 YY_RULE_SETUP
2362 {
2363         ParserSingleInstance::pushControlStatus(Parser::WithinTry);
2364         BEGIN(INITIAL);
2365         return scan_throw(TRY);
2366 }
2367         YY_BREAK
2368 case 21:
2369 YY_RULE_SETUP
2370 {
2371     // Pop to step out TRY
2372         ParserSingleInstance::popControlStatus();
2373         ParserSingleInstance::pushControlStatus(Parser::WithinCatch);
2374         BEGIN(INITIAL);
2375         return scan_throw(CATCH);
2376 }
2377         YY_BREAK
2378 case 22:
2379 YY_RULE_SETUP
2380 {
2381     BEGIN(INITIAL);
2382     return scan_throw(RETURN);
2383 }
2384         YY_BREAK
2385 case 23:
2386 YY_RULE_SETUP
2387 {
2388     BEGIN(INITIAL);
2389     return scan_throw(RETURN);
2390 }
2391         YY_BREAK
2392 case 24:
2393 /* rule 24 can match eol */
2394 YY_RULE_SETUP
2395 {
2396         BEGIN(BEGINID);
2397 }
2398         YY_BREAK
2399
2400 case 25:
2401 YY_RULE_SETUP
2402 {
2403         wchar_t *pwText = to_wide_string(yytext);
2404         if (yytext != NULL && pwText == NULL)
2405         {
2406             std::string str = "Can\'t convert \'";
2407             str += yytext;
2408             str += "\' to UTF-8";
2409             BEGIN(INITIAL);
2410             yyerror(str);
2411             return scan_throw(FLEX_ERROR);
2412         }
2413         yylval.str = new std::wstring(pwText);
2414         FREE(pwText);
2415         types::InternalType * pIT = symbol::Context::getInstance()->get(symbol::Symbol(*yylval.str));
2416         if (pIT && pIT->isCallable())
2417         {
2418             scan_throw(ID);
2419             BEGIN(SHELLMODE);
2420         }
2421         else
2422         {
2423             BEGIN(INITIAL);
2424             return scan_throw(ID);
2425         }
2426     }
2427         YY_BREAK
2428
2429 case 26:
2430 YY_RULE_SETUP
2431 {
2432   return scan_throw(NOT);
2433 }
2434         YY_BREAK
2435 case 27:
2436 YY_RULE_SETUP
2437 {
2438   return scan_throw(DOLLAR);
2439 }
2440         YY_BREAK
2441 case 28:
2442 YY_RULE_SETUP
2443 {
2444   return scan_throw(BOOLTRUE);
2445 }
2446         YY_BREAK
2447 case 29:
2448 YY_RULE_SETUP
2449 {
2450   return scan_throw(BOOLFALSE);
2451 }
2452         YY_BREAK
2453 case 30:
2454 YY_RULE_SETUP
2455 {
2456   return scan_throw(AND);
2457 }
2458         YY_BREAK
2459 case 31:
2460 YY_RULE_SETUP
2461 {
2462   return scan_throw(ANDAND);
2463 }
2464         YY_BREAK
2465 case 32:
2466 YY_RULE_SETUP
2467 {
2468   return scan_throw(OR);
2469 }
2470         YY_BREAK
2471 case 33:
2472 YY_RULE_SETUP
2473 {
2474   return scan_throw(OROR);
2475 }
2476         YY_BREAK
2477 case 34:
2478 YY_RULE_SETUP
2479 {
2480   return scan_throw(LPAREN);
2481 }
2482         YY_BREAK
2483 case 35:
2484 YY_RULE_SETUP
2485 {
2486   return scan_throw(RPAREN);
2487 }
2488         YY_BREAK
2489 case 36:
2490 YY_RULE_SETUP
2491 {
2492         scan_step();
2493   return scan_throw(SEMI);
2494 }
2495         YY_BREAK
2496 case 37:
2497 YY_RULE_SETUP
2498 {
2499         scan_step();
2500   return scan_throw(COMMA);
2501 }
2502         YY_BREAK
2503 case 38:
2504 YY_RULE_SETUP
2505 {
2506   return scan_throw(COLON);
2507 }
2508         YY_BREAK
2509 case 39:
2510 YY_RULE_SETUP
2511 {
2512   yy_push_state(MATRIX);
2513   paren_levels.push(0);
2514   ParserSingleInstance::pushControlStatus(Parser::WithinCell);
2515   return scan_throw(LBRACE);
2516 }
2517         YY_BREAK
2518 case 40:
2519 YY_RULE_SETUP
2520 {
2521   return scan_throw(RBRACE);
2522 }
2523         YY_BREAK
2524 case 41:
2525 YY_RULE_SETUP
2526 {
2527   return scan_throw(DOTQUOTE);
2528 }
2529         YY_BREAK
2530 case 42:
2531 YY_RULE_SETUP
2532 {
2533   return scan_throw(DOTTIMES);
2534 }
2535         YY_BREAK
2536 case 43:
2537 YY_RULE_SETUP
2538 {
2539   return scan_throw(DOTRDIVIDE);
2540 }
2541         YY_BREAK
2542 case 44:
2543 YY_RULE_SETUP
2544 {
2545   return scan_throw(DOTLDIVIDE);
2546 }
2547         YY_BREAK
2548 case 45:
2549 YY_RULE_SETUP
2550 {
2551   return scan_throw(DOTPOWER);
2552 }
2553         YY_BREAK
2554 case 46:
2555 YY_RULE_SETUP
2556 {
2557   return scan_throw(MINUS);
2558 }
2559         YY_BREAK
2560 case 47:
2561 YY_RULE_SETUP
2562 {
2563   return scan_throw(PLUS);
2564 }
2565         YY_BREAK
2566 case 48:
2567 YY_RULE_SETUP
2568 {
2569   return scan_throw(TIMES);
2570 }
2571         YY_BREAK
2572 case 49:
2573 YY_RULE_SETUP
2574 {
2575   return scan_throw(RDIVIDE);
2576 }
2577         YY_BREAK
2578 case 50:
2579 YY_RULE_SETUP
2580 {
2581   return scan_throw(LDIVIDE);
2582 }
2583         YY_BREAK
2584 case 51:
2585 YY_RULE_SETUP
2586 {
2587   return scan_throw(POWER);
2588 }
2589         YY_BREAK
2590 case 52:
2591 YY_RULE_SETUP
2592 {
2593   return scan_throw(KRONTIMES);
2594 }
2595         YY_BREAK
2596 case 53:
2597 YY_RULE_SETUP
2598 {
2599   return scan_throw(KRONRDIVIDE);
2600 }
2601         YY_BREAK
2602 case 54:
2603 YY_RULE_SETUP
2604 {
2605   return scan_throw(KRONLDIVIDE);
2606 }
2607         YY_BREAK
2608 case 55:
2609 /* rule 55 can match eol */
2610 YY_RULE_SETUP
2611 {
2612     unput(yytext[yyleng - 1]);
2613     return scan_throw(CONTROLTIMES);
2614 }
2615         YY_BREAK
2616 case 56:
2617 /* rule 56 can match eol */
2618 YY_RULE_SETUP
2619 {
2620     unput(yytext[yyleng - 1]);
2621     return scan_throw(CONTROLRDIVIDE);
2622 }
2623         YY_BREAK
2624 case 57:
2625 /* rule 57 can match eol */
2626 YY_RULE_SETUP
2627 {
2628     unput(yytext[yyleng - 1]);
2629     return scan_throw(CONTROLLDIVIDE);
2630 }
2631         YY_BREAK
2632 case 58:
2633 YY_RULE_SETUP
2634 {
2635   return scan_throw(EQ);
2636 }
2637         YY_BREAK
2638 case 59:
2639 YY_RULE_SETUP
2640 {
2641   return scan_throw(NE);
2642 }
2643         YY_BREAK
2644 case 60:
2645 YY_RULE_SETUP
2646 {
2647   return scan_throw(LT);
2648 }
2649         YY_BREAK
2650 case 61:
2651 YY_RULE_SETUP
2652 {
2653   return scan_throw(GT);
2654 }
2655         YY_BREAK
2656 case 62:
2657 YY_RULE_SETUP
2658 {
2659   return scan_throw(LE);
2660 }
2661         YY_BREAK
2662 case 63:
2663 YY_RULE_SETUP
2664 {
2665   return scan_throw(GE);
2666 }
2667         YY_BREAK
2668 case 64:
2669 YY_RULE_SETUP
2670 {
2671   return scan_throw(ASSIGN);
2672  }
2673         YY_BREAK
2674 case 65:
2675 YY_RULE_SETUP
2676 {
2677   DEBUG("yy_push_state(MATRIX)");
2678   yy_push_state(MATRIX);
2679   paren_levels.push(0);
2680   ParserSingleInstance::pushControlStatus(Parser::WithinMatrix);
2681   return scan_throw(LBRACK);
2682 }
2683         YY_BREAK
2684 case 66:
2685 YY_RULE_SETUP
2686 {
2687   return scan_throw(RBRACK);
2688 }
2689         YY_BREAK
2690 case 67:
2691 YY_RULE_SETUP
2692 {
2693   return scan_throw(DOT);
2694 }
2695         YY_BREAK
2696 case 68:
2697 YY_RULE_SETUP
2698 {
2699     ParserSingleInstance::pushControlStatus(Parser::WithinDots);
2700     yy_push_state(LINEBREAK);
2701 }
2702         YY_BREAK
2703 case 69:
2704 YY_RULE_SETUP
2705 {
2706   yylval.number = atof(yytext);
2707 #ifdef TOKENDEV
2708   std::cout << "--> [DEBUG] INTEGER : " << yytext << std::endl;
2709 #endif
2710 //  scan_step();
2711   return scan_throw(VARINT);
2712 }
2713         YY_BREAK
2714 case 70:
2715 YY_RULE_SETUP
2716 {
2717   scan_exponent_convert(yytext);
2718   yylval.number = atof(yytext);
2719 #ifdef TOKENDEV
2720   std::cout << "--> [DEBUG] FLOATING : " << yytext << std::endl;
2721 #endif
2722   //scan_step();
2723   return scan_throw(VARFLOAT);
2724 }
2725         YY_BREAK
2726 case 71:
2727 YY_RULE_SETUP
2728 {
2729   yylval.number = atof(yytext);
2730 #ifdef TOKENDEV
2731   std::cout << "--> [DEBUG] FLOATING : " << yytext << std::endl;
2732 #endif
2733   //scan_step();
2734   return scan_throw(VARFLOAT);
2735 }
2736         YY_BREAK
2737 case 72:
2738 YY_RULE_SETUP
2739 {
2740   yylval.number = atof(yytext);
2741 #ifdef TOKENDEV
2742   std::cout << "--> [DEBUG] NUMBER : " << yytext << std::endl;
2743 #endif
2744 //  scan_step();
2745   return scan_throw(NUM);
2746 }
2747         YY_BREAK
2748 case 73:
2749 YY_RULE_SETUP
2750 {
2751   yylval.number = atof(yytext);
2752 #ifdef TOKENDEV
2753   std::cout << "--> [DEBUG] LITTLE : " << yytext << std::endl;
2754 #endif
2755 //  scan_step();
2756   return scan_throw(NUM);
2757 }
2758         YY_BREAK
2759 case 74:
2760 YY_RULE_SETUP
2761 {
2762     wchar_t *pwText = to_wide_string(yytext);
2763     if (yytext != NULL && pwText == NULL)
2764     {
2765         std::string str = "Can\'t convert \'";
2766         str += yytext;
2767         str += "\' to UTF-8";
2768         BEGIN(INITIAL);
2769         yyerror(str);
2770         return scan_throw(FLEX_ERROR);
2771     }
2772     yylval.str = new std::wstring(pwText);
2773     FREE(pwText);
2774 #ifdef TOKENDEV
2775   std::cout << "--> [DEBUG] ID : " << yytext << std::endl;
2776 #endif
2777 //  scan_step();
2778   return scan_throw(ID);
2779 }
2780         YY_BREAK
2781 case 75:
2782 YY_RULE_SETUP
2783 {
2784   yylval.comment = new std::wstring();
2785   comment_level = 1;
2786   ParserSingleInstance::pushControlStatus(Parser::WithinBlockComment);
2787   yy_push_state(REGIONCOMMENT);
2788 }
2789         YY_BREAK
2790 case 76:
2791 YY_RULE_SETUP
2792 {
2793   pstBuffer.clear();
2794   yy_push_state(LINECOMMENT);
2795 }
2796         YY_BREAK
2797 case 77:
2798 YY_RULE_SETUP
2799 {
2800   pstBuffer.clear();
2801   str_opener_column = yylloc.first_column;
2802   yy_push_state(DOUBLESTRING);
2803 }
2804         YY_BREAK
2805 case 78:
2806 YY_RULE_SETUP
2807 {
2808   /*
2809   ** Matrix Transposition special behaviour
2810   ** ID' []' toto()' are transposition call
2811   */
2812   if (last_token == ID
2813       || last_token == RBRACK
2814       || last_token == RPAREN
2815       || last_token == RBRACE
2816       || last_token == VARINT
2817       || last_token == VARFLOAT
2818       || last_token == NUM
2819       || last_token == BOOLTRUE
2820       || last_token == BOOLFALSE)
2821   {
2822       return scan_throw(QUOTE);
2823   }
2824   else
2825   {
2826       pstBuffer.clear();
2827       str_opener_column = yylloc.first_column;
2828       yy_push_state(SIMPLESTRING);
2829   }
2830 }
2831         YY_BREAK
2832 case 79:
2833 YY_RULE_SETUP
2834 {
2835         scan_step();
2836         scan_throw(SPACES);
2837 }
2838         YY_BREAK
2839 case 80:
2840 /* rule 80 can match eol */
2841 YY_RULE_SETUP
2842 {
2843   yylloc.last_line += 1;
2844   yylloc.last_column = 1;
2845   scan_step();
2846   if (last_token != EOL) {
2847       return scan_throw(EOL);
2848   }
2849
2850 }
2851         YY_BREAK
2852 case 81:
2853 /* rule 81 can match eol */
2854 YY_RULE_SETUP
2855 {
2856   yylloc.last_line += 1;
2857   yylloc.last_column = 1;
2858   scan_step();
2859   if (last_token != EOL)
2860   {
2861       return scan_throw(EOL);
2862   }
2863   scan_throw(EOL);
2864 }
2865         YY_BREAK
2866 case 82:
2867 /* rule 82 can match eol */
2868 YY_RULE_SETUP
2869 {
2870   yylloc.last_line += 2;
2871   yylloc.last_column = 1;
2872   scan_step();
2873   if (last_token != EOL)
2874   {
2875       return scan_throw(EOL);
2876   }
2877   scan_throw(EOL);
2878 }
2879         YY_BREAK
2880 case 83:
2881 YY_RULE_SETUP
2882 {
2883     std::string str = "Unexpected token \'";
2884     str += yytext;
2885     str += "\'";
2886     BEGIN(INITIAL);
2887     yyerror(str);
2888     return scan_throw(FLEX_ERROR);
2889 }
2890         YY_BREAK
2891
2892 case 84:
2893 YY_RULE_SETUP
2894 {
2895     ++paren_levels.top();
2896     return scan_throw(LPAREN);
2897   }
2898         YY_BREAK
2899 case 85:
2900 YY_RULE_SETUP
2901 {
2902     --paren_levels.top();
2903     return scan_throw(RPAREN);
2904   }
2905         YY_BREAK
2906 case 86:
2907 YY_RULE_SETUP
2908 {
2909       unput(yytext[yyleng -1]);
2910       if (last_token == ID
2911           || last_token == RPAREN
2912           || last_token == QUOTE
2913           || last_token == VARINT
2914           || last_token == VARFLOAT
2915           || last_token == NUM)
2916       {
2917           return scan_throw(COMMA);
2918       }
2919   }
2920         YY_BREAK
2921 case 87:
2922 YY_RULE_SETUP
2923 {
2924       return scan_throw(COLON);
2925   }
2926         YY_BREAK
2927 case 88:
2928 /* rule 88 can match eol */
2929 YY_RULE_SETUP
2930 {
2931       yylloc.last_line += 1;
2932       yylloc.last_column = 1;
2933       if(last_token != DOTS && last_token != EOL)
2934       {
2935           return scan_throw(EOL);
2936       }
2937       scan_throw(EOL);
2938   }
2939         YY_BREAK
2940 case 89:
2941 YY_RULE_SETUP
2942 {
2943     DEBUG("yy_pop_state()");
2944     yy_pop_state();
2945     paren_levels.pop();
2946     ParserSingleInstance::popControlStatus();
2947     return scan_throw(RBRACK);
2948   }
2949         YY_BREAK
2950 case 90:
2951 YY_RULE_SETUP
2952 {
2953     yy_pop_state();
2954     paren_levels.pop();
2955     ParserSingleInstance::popControlStatus();
2956     return scan_throw(RBRACE);
2957   }
2958         YY_BREAK
2959 case 91:
2960 case 92:
2961 YY_RULE_SETUP
2962 {
2963     return scan_throw(PLUS);
2964   }
2965         YY_BREAK
2966 case 93:
2967 case 94:
2968 YY_RULE_SETUP
2969 {
2970     return scan_throw(MINUS);
2971   }
2972         YY_BREAK
2973 case 95:
2974 YY_RULE_SETUP
2975 {
2976     // no need to unput the '+'
2977     if (last_token != LBRACK
2978        && last_token != EOL
2979        && last_token != SEMI
2980        && last_token != COMMA
2981        && last_token != DOTTIMES
2982        && last_token != DOTRDIVIDE
2983        && last_token != DOTLDIVIDE
2984        && last_token != DOTPOWER
2985        && last_token != MINUS
2986        && last_token != PLUS
2987        && last_token != TIMES
2988        && last_token != RDIVIDE
2989        && last_token != LDIVIDE
2990        && last_token != POWER
2991        && last_token != KRONTIMES
2992        && last_token != KRONRDIVIDE
2993        && last_token != KRONLDIVIDE
2994        && last_token != EQ
2995        && last_token != NE
2996        && last_token != LT
2997        && last_token != GT
2998        && last_token != LE
2999        && last_token != GE
3000       && paren_levels.top() == 0)
3001    {
3002        return scan_throw(COMMA);
3003    }
3004    else
3005    {
3006        unput('+');
3007        yylloc.last_column--;
3008    }
3009   }
3010         YY_BREAK
3011 case 96:
3012 YY_RULE_SETUP
3013 {
3014     unput('-');
3015     yylloc.last_column--;
3016     if (last_token != LBRACK
3017        && last_token != EOL
3018        && last_token != SEMI
3019        && last_token != COMMA
3020        && last_token != DOTTIMES
3021        && last_token != DOTRDIVIDE
3022        && last_token != DOTLDIVIDE
3023        && last_token != DOTPOWER
3024        && last_token != MINUS
3025        && last_token != PLUS
3026        && last_token != TIMES
3027        && last_token != RDIVIDE
3028        && last_token != LDIVIDE
3029        && last_token != POWER
3030        && last_token != KRONTIMES
3031        && last_token != KRONRDIVIDE
3032        && last_token != KRONLDIVIDE
3033        && last_token != EQ
3034        && last_token != NE
3035        && last_token != LT
3036        && last_token != GT
3037        && last_token != LE
3038        && last_token != GE
3039        && paren_levels.top() == 0)
3040    {
3041        return scan_throw(COMMA);
3042    }
3043   }
3044         YY_BREAK
3045 case 97:
3046 YY_RULE_SETUP
3047 {
3048     std::string str = "Unexpected token \'";
3049     str += yytext;
3050     str += "\' within a matrix.";
3051     BEGIN(INITIAL);
3052     yyerror(str);
3053     return scan_throw(FLEX_ERROR);
3054   }
3055         YY_BREAK
3056 case 98:
3057 /* rule 98 can match eol */
3058 YY_RULE_SETUP
3059 {
3060       yylloc.last_line += 1;
3061       yylloc.last_column = 1;
3062       scan_step();
3063   }
3064         YY_BREAK
3065 case 99:
3066 /* rule 99 can match eol */
3067 YY_RULE_SETUP
3068 {
3069       yylloc.last_line += 1;
3070       yylloc.last_column = 1;
3071       scan_step();
3072   }
3073         YY_BREAK
3074 case 100:
3075 /* rule 100 can match eol */
3076 YY_RULE_SETUP
3077 {
3078       yylloc.last_line += 1;
3079       yylloc.last_column = 1;
3080       scan_step();
3081       unput(' ');
3082       yylloc.last_column--;
3083   }
3084         YY_BREAK
3085 case 101:
3086 /* rule 101 can match eol */
3087 YY_RULE_SETUP
3088 {
3089       yylloc.last_line += 1;
3090       yylloc.last_column = 1;
3091       scan_step();
3092       unput(' ');
3093       yylloc.last_column--;
3094   }
3095         YY_BREAK
3096 case YY_STATE_EOF(MATRIX):
3097 {
3098       yy_pop_state();
3099       paren_levels.pop();
3100   }
3101         YY_BREAK
3102
3103 case 102:
3104 /* rule 102 can match eol */
3105 YY_RULE_SETUP
3106 {
3107     yylloc.last_line += 1;
3108     yylloc.last_column = 1;
3109     scan_step();
3110     yy_pop_state();
3111     ParserSingleInstance::popControlStatus();
3112   }
3113         YY_BREAK
3114 case 103:
3115 YY_RULE_SETUP
3116 {
3117     ++comment_level;
3118     yy_push_state(REGIONCOMMENT);
3119   }
3120         YY_BREAK
3121 case 104:
3122 YY_RULE_SETUP
3123 {
3124     scan_throw(DOTS);
3125     pstBuffer.clear();
3126     yy_push_state(LINECOMMENT);
3127   }
3128         YY_BREAK
3129 case 105:
3130 YY_RULE_SETUP
3131 {
3132       /* Do nothing... */
3133   }
3134         YY_BREAK
3135 case YY_STATE_EOF(LINEBREAK):
3136 {
3137       yy_pop_state();
3138   }
3139         YY_BREAK
3140 case 106:
3141 YY_RULE_SETUP
3142 {
3143     std::string str = "Unexpected token \'";
3144     str += yytext;
3145     str += "\' after line break with .. or ...";
3146     BEGIN(INITIAL);
3147     yyerror(str);
3148     return scan_throw(FLEX_ERROR);
3149   }
3150         YY_BREAK
3151
3152 case 107:
3153 /* rule 107 can match eol */
3154 YY_RULE_SETUP
3155 {
3156     //yylloc.last_line += 1;
3157     //yylloc.last_column = 1;
3158     //scan_step();
3159     yy_pop_state();
3160     for (int i = yyleng - 1 ; i >= 0 ; --i)
3161     {
3162         //std::cerr << "Unputting i = {" << i << "}" << std::endl;
3163         //std::cerr << "Unputting {" << yytext[i] << "}" << std::endl;
3164         unput(yytext[i]);
3165         yylloc.last_column--;
3166     }
3167     /*
3168     ** To forgot comments after lines break
3169     */
3170     if (last_token != DOTS)
3171     {
3172         //std::cerr << "pstBuffer = {" << *pstBuffer << "}" << std::endl;
3173         //std::cerr << "pstBuffer->c_str() = {" << pstBuffer->c_str() << "}" << std::endl;
3174         wchar_t *pwstBuffer = to_wide_string(pstBuffer.c_str());
3175         //std::wcerr << L"pwstBuffer = W{" << pwstBuffer << L"}" << std::endl;
3176         if (pstBuffer.c_str() != NULL && pwstBuffer == NULL)
3177         {
3178             pstBuffer.clear();
3179             std::string str = "Can\'t convert \'";
3180             str += pstBuffer.c_str();
3181             str += "\' to UTF-8";
3182             BEGIN(INITIAL);
3183             yyerror(str);
3184             return scan_throw(FLEX_ERROR);
3185         }
3186         yylval.comment = new std::wstring(pwstBuffer);
3187         pstBuffer.clear();
3188         FREE (pwstBuffer);
3189         return scan_throw(COMMENT);
3190     }
3191     else
3192     {
3193         pstBuffer.clear();
3194     }
3195   }
3196         YY_BREAK
3197 case YY_STATE_EOF(LINECOMMENT):
3198 {
3199     yy_pop_state();
3200     wchar_t *pwstBuffer = to_wide_string(pstBuffer.c_str());
3201     if (pstBuffer.c_str() != NULL && pwstBuffer == NULL)
3202     {
3203         pstBuffer.clear();
3204         std::string str = "Can\'t convert \'";
3205         str += pstBuffer.c_str();
3206         str += "\' to UTF-8";
3207         BEGIN(INITIAL);
3208         yyerror(str);
3209         return scan_throw(FLEX_ERROR);
3210     }
3211     yylval.comment = new std::wstring(pwstBuffer);
3212     pstBuffer.clear();
3213     FREE (pwstBuffer);
3214     return scan_throw(COMMENT);
3215   }
3216         YY_BREAK
3217 case 108:
3218 YY_RULE_SETUP
3219 {
3220       // Put the char in a temporary CHAR buffer to go through UTF-8 trouble
3221       // only translate to WCHAR_T when popping state.
3222       pstBuffer += yytext;
3223   }
3224         YY_BREAK
3225
3226 case 109:
3227 YY_RULE_SETUP
3228 {
3229     --comment_level;
3230     if (comment_level == 0) {
3231       ParserSingleInstance::popControlStatus();
3232       yy_pop_state();
3233       //return scan_throw(BLOCKCOMMENT);
3234     }
3235   }
3236         YY_BREAK
3237 case 110:
3238 YY_RULE_SETUP
3239 {
3240     ++comment_level;
3241     yy_push_state(REGIONCOMMENT);
3242   }
3243         YY_BREAK
3244 case 111:
3245 /* rule 111 can match eol */
3246 YY_RULE_SETUP
3247 {
3248     yylloc.last_line += 1;
3249     yylloc.last_column = 1;
3250     scan_step();
3251     *yylval.comment += L"\n//";
3252   }
3253         YY_BREAK
3254 case 112:
3255 case 113:
3256 YY_RULE_SETUP
3257 {
3258       wchar_t *pwText = to_wide_string(yytext);
3259       *yylval.comment += std::wstring(pwText);
3260       FREE(pwText);
3261   }
3262         YY_BREAK
3263 case YY_STATE_EOF(REGIONCOMMENT):
3264 {
3265       yy_pop_state();
3266 //    std::string str = "unexpected end of file in a comment";
3267 //    scan_error(str);
3268   }
3269         YY_BREAK
3270
3271 case 114:
3272 YY_RULE_SETUP
3273 {
3274     pstBuffer += "\"";
3275   }
3276         YY_BREAK
3277 case 115:
3278 YY_RULE_SETUP
3279 {
3280     pstBuffer += "'";
3281   }
3282         YY_BREAK
3283 case 116:
3284 YY_RULE_SETUP
3285 {
3286     pstBuffer += "\"";
3287   }
3288         YY_BREAK
3289 case 117:
3290 YY_RULE_SETUP
3291 {
3292     pstBuffer += "'";
3293   }
3294         YY_BREAK
3295 case 118:
3296 YY_RULE_SETUP
3297 {
3298     yy_pop_state();
3299     //scan_step();
3300     wchar_t *pwstBuffer = to_wide_string(pstBuffer.c_str());
3301     if (pstBuffer.c_str() != NULL && pwstBuffer == NULL)
3302     {
3303         pstBuffer.clear();
3304         std::string str = "Can\'t convert \'";
3305         str += pstBuffer.c_str();
3306         str += "\' to UTF-8";
3307         BEGIN(INITIAL);
3308         yyerror(str);
3309         return scan_throw(FLEX_ERROR);
3310     }
3311     yylval.str = new std::wstring(pwstBuffer);
3312     pstBuffer.clear();
3313     FREE(pwstBuffer);
3314     yylloc.first_column = str_opener_column;
3315     return scan_throw(STR);
3316   }
3317         YY_BREAK
3318 case 119:
3319 YY_RULE_SETUP
3320 {
3321     pstBuffer.clear();
3322     BEGIN(INITIAL);
3323     yyerror("Heterogeneous string detected, starting with \' and ending with \".");
3324     return scan_throw(FLEX_ERROR);
3325   }
3326         YY_BREAK
3327 case 120:
3328 /* rule 120 can match eol */
3329 YY_RULE_SETUP
3330 {
3331       yylloc.last_line += 1;
3332       yylloc.last_column = 1;
3333       /* Do nothing... Just skip */
3334   }
3335         YY_BREAK
3336 case 121:
3337 /* rule 121 can match eol */
3338 YY_RULE_SETUP
3339 {
3340     pstBuffer.clear();
3341     yylloc.last_line += 1;
3342     yylloc.last_column = 1;
3343     BEGIN(INITIAL);
3344     yyerror("Unexpected end of line in a string.");
3345     return scan_throw(FLEX_ERROR);
3346   }
3347         YY_BREAK
3348 case YY_STATE_EOF(SIMPLESTRING):
3349 {
3350     pstBuffer.clear();
3351     BEGIN(INITIAL);
3352     yyerror("Unexpected end of file in a string.");
3353     return scan_throw(FLEX_ERROR);
3354   }
3355         YY_BREAK
3356 case 122:
3357 case 123:
3358 YY_RULE_SETUP
3359 {
3360     //scan_step();
3361     pstBuffer += yytext;
3362   }
3363         YY_BREAK
3364
3365 case 124:
3366 YY_RULE_SETUP
3367 {
3368     pstBuffer += "\"";
3369   }
3370         YY_BREAK
3371 case 125:
3372 YY_RULE_SETUP
3373 {
3374     pstBuffer += "'";
3375   }
3376         YY_BREAK
3377 case 126:
3378 YY_RULE_SETUP
3379 {
3380     pstBuffer += "\"";
3381   }
3382         YY_BREAK
3383 case 127:
3384 YY_RULE_SETUP
3385 {
3386     pstBuffer += "'";
3387   }
3388         YY_BREAK
3389 case 128:
3390 YY_RULE_SETUP
3391 {
3392     yy_pop_state();
3393     //scan_step();
3394     wchar_t *pwstBuffer = to_wide_string(pstBuffer.c_str());
3395     if (pstBuffer.c_str() != NULL && pwstBuffer == NULL)
3396     {
3397         pstBuffer.clear();
3398         std::string str = "Can\'t convert \'";
3399         str += pstBuffer.c_str();
3400         str += "\' to UTF-8";
3401         BEGIN(INITIAL);
3402         yyerror(str);
3403         return scan_throw(FLEX_ERROR);
3404     }
3405     yylval.str = new std::wstring(pwstBuffer);
3406     pstBuffer.clear();
3407     FREE(pwstBuffer);
3408     yylloc.first_column = str_opener_column;
3409     return scan_throw(STR);
3410   }
3411         YY_BREAK
3412 case 129:
3413 YY_RULE_SETUP
3414 {
3415     pstBuffer.clear();
3416     BEGIN(INITIAL);
3417     yyerror("Heterogeneous string detected, starting with \" and ending with \'.");
3418     return scan_throw(FLEX_ERROR);
3419   }
3420         YY_BREAK
3421 case 130:
3422 /* rule 130 can match eol */
3423 YY_RULE_SETUP
3424 {
3425       yylloc.last_line += 1;
3426       yylloc.last_column = 1;
3427       /* Do nothing... Just skip */
3428   }
3429         YY_BREAK
3430 case 131:
3431 /* rule 131 can match eol */
3432 YY_RULE_SETUP
3433 {
3434     pstBuffer.clear();
3435     yylloc.last_line += 1;
3436     yylloc.last_column = 1;
3437     BEGIN(INITIAL);
3438     yyerror("Unexpected end of line in a string.");
3439     return scan_throw(FLEX_ERROR);
3440   }
3441         YY_BREAK
3442 case YY_STATE_EOF(DOUBLESTRING):
3443 {
3444     pstBuffer.clear();
3445     BEGIN(INITIAL);
3446     yyerror("Unexpected end of file in a string.");
3447     return scan_throw(FLEX_ERROR);
3448   }
3449         YY_BREAK
3450 case 132:
3451 case 133:
3452 YY_RULE_SETUP
3453 {
3454    //scan_step();
3455    pstBuffer += yytext;
3456   }
3457         YY_BREAK
3458
3459 case 134:
3460 YY_RULE_SETUP
3461 {
3462         if (last_token == ID)
3463         {
3464             scan_throw(SPACES);
3465             return ID;
3466         }
3467     }
3468         YY_BREAK
3469 case 135:
3470 YY_RULE_SETUP
3471 {
3472         BEGIN(INITIAL);
3473         scan_step();
3474         return scan_throw(SEMI);
3475     }
3476         YY_BREAK
3477 case 136:
3478 YY_RULE_SETUP
3479 {
3480         BEGIN(INITIAL);
3481         scan_step();
3482         return scan_throw(COMMA);
3483     }
3484         YY_BREAK
3485 case 137:
3486 /* rule 137 can match eol */
3487 YY_RULE_SETUP
3488 {
3489         BEGIN(INITIAL);
3490         yylloc.last_line += 1;
3491         yylloc.last_column = 1;
3492         scan_step();
3493         return scan_throw(EOL);
3494     }
3495         YY_BREAK
3496 case 138:
3497 YY_RULE_SETUP
3498 {
3499         if (last_token == STR || last_token == SPACES)
3500         {
3501             wchar_t *pwText = to_wide_string(yytext);
3502             yylval.str = new std::wstring(pwText);
3503             FREE(pwText);
3504             return scan_throw(STR);
3505         }
3506         else
3507         {
3508             BEGIN(INITIAL);
3509             return scan_throw(ASSIGN);
3510         }
3511     }
3512         YY_BREAK
3513 case 139:
3514 YY_RULE_SETUP
3515 {
3516         if (last_token == STR || last_token == SPACES)
3517         {
3518             wchar_t *pwText = to_wide_string(yytext);
3519             yylval.str = new std::wstring(pwText);
3520             FREE(pwText);
3521             return scan_throw(STR);
3522         }
3523         else
3524         {
3525             BEGIN(INITIAL);
3526             return scan_throw(LPAREN);
3527         }
3528     }
3529         YY_BREAK
3530 case 140:
3531 YY_RULE_SETUP
3532 {
3533         if (last_token == STR || last_token == SPACES)
3534         {
3535             wchar_t *pwText = to_wide_string(yytext);
3536             yylval.str = new std::wstring(pwText);
3537             FREE(pwText);
3538             return scan_throw(STR);
3539         }
3540         else
3541         {
3542             BEGIN(INITIAL);
3543             return scan_throw(LT);
3544         }
3545     }
3546         YY_BREAK
3547 case 141:
3548 YY_RULE_SETUP
3549 {
3550         if (last_token == STR || last_token == SPACES)
3551         {
3552             wchar_t *pwText = to_wide_string(yytext);
3553             yylval.str = new std::wstring(pwText);
3554             FREE(pwText);
3555             return scan_throw(STR);
3556         }
3557         else
3558         {
3559             BEGIN(INITIAL);
3560             return scan_throw(GT);
3561         }
3562     }
3563         YY_BREAK
3564 case 142:
3565 YY_RULE_SETUP
3566 {
3567         if (last_token == STR || last_token == SPACES)
3568         {
3569             wchar_t *pwText = to_wide_string(yytext);
3570             yylval.str = new std::wstring(pwText);
3571             FREE(pwText);
3572             return scan_throw(STR);
3573         }
3574         else
3575         {
3576             BEGIN(INITIAL);
3577             return scan_throw(NOT);
3578         }
3579     }
3580         YY_BREAK
3581 case 143:
3582 YY_RULE_SETUP
3583 {
3584         wchar_t *pwText = to_wide_string(yytext);
3585         yylval.str = new std::wstring(pwText);
3586         FREE(pwText);
3587         return scan_throw(STR);
3588     }
3589         YY_BREAK
3590 case YY_STATE_EOF(SHELLMODE):
3591 {
3592         BEGIN(INITIAL);
3593     }
3594         YY_BREAK
3595
3596 case 144:
3597 YY_RULE_SETUP
3598 ECHO;
3599         YY_BREAK
3600                         case YY_STATE_EOF(INITIAL):
3601                         case YY_STATE_EOF(BEGINID):
3602                                 yyterminate();
3603
3604         case YY_END_OF_BUFFER:
3605                 {
3606                 /* Amount of text matched not including the EOB char. */
3607                 int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
3608
3609                 /* Undo the effects of YY_DO_BEFORE_ACTION. */
3610                 *yy_cp = (yy_hold_char);
3611                 YY_RESTORE_YY_MORE_OFFSET
3612
3613                 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
3614                         {
3615                         /* We're scanning a new file or input source.  It's
3616                          * possible that this happened because the user
3617                          * just pointed yyin at a new source and called
3618                          * yylex().  If so, then we have to assure
3619                          * consistency between YY_CURRENT_BUFFER and our
3620                          * globals.  Here is the right place to do so, because
3621                          * this is the first action (other than possibly a
3622                          * back-up) that will match for the new input source.
3623                          */
3624                         (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
3625                         YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
3626                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
3627                         }
3628
3629                 /* Note that here we test for yy_c_buf_p "<=" to the position
3630                  * of the first EOB in the buffer, since yy_c_buf_p will
3631                  * already have been incremented past the NUL character
3632                  * (since all states make transitions on EOB to the
3633                  * end-of-buffer state).  Contrast this with the test
3634                  * in input().
3635                  */
3636                 if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
3637                         { /* This was really a NUL. */
3638                         yy_state_type yy_next_state;
3639
3640                         (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
3641
3642                         yy_current_state = yy_get_previous_state(  );
3643
3644                         /* Okay, we're now positioned to make the NUL
3645                          * transition.  We couldn't have
3646                          * yy_get_previous_state() go ahead and do it
3647                          * for us because it doesn't know how to deal
3648                          * with the possibility of jamming (and we don't
3649                          * want to build jamming into it because then it
3650                          * will run more slowly).
3651                          */
3652
3653                         yy_next_state = yy_try_NUL_trans( yy_current_state );
3654
3655                         yy_bp = (yytext_ptr) + YY_MORE_ADJ;
3656
3657                         if ( yy_next_state )
3658                                 {
3659                                 /* Consume the NUL. */
3660                                 yy_cp = ++(yy_c_buf_p);
3661                                 yy_current_state = yy_next_state;
3662                                 goto yy_match;
3663                                 }
3664
3665                         else
3666                                 {
3667                                 yy_cp = (yy_c_buf_p);
3668                                 goto yy_find_action;
3669                                 }
3670                         }
3671
3672                 else switch ( yy_get_next_buffer(  ) )
3673                         {
3674                         case EOB_ACT_END_OF_FILE:
3675                                 {
3676                                 (yy_did_buffer_switch_on_eof) = 0;
3677
3678                                 if ( yywrap( ) )
3679                                         {
3680                                         /* Note: because we've taken care in
3681                                          * yy_get_next_buffer() to have set up
3682                                          * yytext, we can now set up
3683                                          * yy_c_buf_p so that if some total
3684                                          * hoser (like flex itself) wants to
3685                                          * call the scanner after we return the
3686                                          * YY_NULL, it'll still work - another
3687                                          * YY_NULL will get returned.
3688                                          */
3689                                         (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
3690
3691                                         yy_act = YY_STATE_EOF(YY_START);
3692                                         goto do_action;
3693                                         }
3694
3695                                 else
3696                                         {
3697                                         if ( ! (yy_did_buffer_switch_on_eof) )
3698                                                 YY_NEW_FILE;
3699                                         }
3700                                 break;
3701                                 }
3702
3703                         case EOB_ACT_CONTINUE_SCAN:
3704                                 (yy_c_buf_p) =
3705                                         (yytext_ptr) + yy_amount_of_matched_text;
3706
3707                                 yy_current_state = yy_get_previous_state(  );
3708
3709                                 yy_cp = (yy_c_buf_p);
3710                                 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
3711                                 goto yy_match;
3712
3713                         case EOB_ACT_LAST_MATCH:
3714                                 (yy_c_buf_p) =
3715                                 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
3716
3717                                 yy_current_state = yy_get_previous_state(  );
3718
3719                                 yy_cp = (yy_c_buf_p);
3720                                 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
3721                                 goto yy_find_action;
3722                         }
3723                 break;
3724                 }
3725
3726         default:
3727                 YY_FATAL_ERROR(
3728                         "fatal flex scanner internal error--no action found" );
3729         } /* end of action switch */
3730                 } /* end of scanning one token */
3731 } /* end of yylex */
3732
3733 /* yy_get_next_buffer - try to read in a new buffer
3734  *
3735  * Returns a code representing an action:
3736  *      EOB_ACT_LAST_MATCH -
3737  *      EOB_ACT_CONTINUE_SCAN - continue scanning from current position
3738  *      EOB_ACT_END_OF_FILE - end of file
3739  */
3740 static int yy_get_next_buffer (void)
3741 {
3742         register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
3743         register char *source = (yytext_ptr);
3744         register int number_to_move, i;
3745         int ret_val;
3746
3747         if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
3748                 YY_FATAL_ERROR(
3749                 "fatal flex scanner internal error--end of buffer missed" );
3750
3751         if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
3752                 { /* Don't try to fill the buffer, so this is an EOF. */
3753                 if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
3754                         {
3755                         /* We matched a single character, the EOB, so
3756                          * treat this as a final EOF.
3757                          */
3758                         return EOB_ACT_END_OF_FILE;
3759                         }
3760
3761                 else
3762                         {
3763                         /* We matched some text prior to the EOB, first
3764                          * process it.
3765                          */
3766                         return EOB_ACT_LAST_MATCH;
3767                         }
3768                 }
3769
3770         /* Try to read more data. */
3771
3772         /* First move last chars to start of buffer. */
3773         number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
3774
3775         for ( i = 0; i < number_to_move; ++i )
3776                 *(dest++) = *(source++);
3777
3778         if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
3779                 /* don't do the read, it's not guaranteed to return an EOF,
3780                  * just force an EOF
3781                  */
3782                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
3783
3784         else
3785                 {
3786                         int num_to_read =
3787                         YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
3788
3789                 while ( num_to_read <= 0 )
3790                         { /* Not enough room in the buffer - grow it. */
3791
3792                         YY_FATAL_ERROR(
3793 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
3794
3795                         }
3796
3797                 if ( num_to_read > YY_READ_BUF_SIZE )
3798                         num_to_read = YY_READ_BUF_SIZE;
3799
3800                 /* Read in more data. */
3801                 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
3802                         (yy_n_chars), (size_t) num_to_read );
3803
3804                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
3805                 }
3806
3807         if ( (yy_n_chars) == 0 )
3808                 {
3809                 if ( number_to_move == YY_MORE_ADJ )
3810                         {
3811                         ret_val = EOB_ACT_END_OF_FILE;
3812                         yyrestart(yyin  );
3813                         }
3814
3815                 else
3816                         {
3817                         ret_val = EOB_ACT_LAST_MATCH;
3818                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
3819                                 YY_BUFFER_EOF_PENDING;
3820                         }
3821                 }
3822
3823         else
3824                 ret_val = EOB_ACT_CONTINUE_SCAN;
3825
3826         if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
3827                 /* Extend the array by 50%, plus the number we really need. */
3828                 yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
3829                 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size  );
3830                 if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
3831                         YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
3832         }
3833
3834         (yy_n_chars) += number_to_move;
3835         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
3836         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
3837
3838         (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
3839
3840         return ret_val;
3841 }
3842
3843 /* yy_get_previous_state - get the state just before the EOB char was reached */
3844
3845     static yy_state_type yy_get_previous_state (void)
3846 {
3847         register yy_state_type yy_current_state;
3848         register char *yy_cp;
3849     
3850         yy_current_state = (yy_start);
3851         yy_current_state += YY_AT_BOL();
3852
3853         (yy_state_ptr) = (yy_state_buf);
3854         *(yy_state_ptr)++ = yy_current_state;
3855
3856         for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
3857                 {
3858                 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
3859                 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
3860                         {
3861                         yy_current_state = (int) yy_def[yy_current_state];
3862                         if ( yy_current_state >= 824 )
3863                                 yy_c = yy_meta[(unsigned int) yy_c];
3864                         }
3865                 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
3866                 *(yy_state_ptr)++ = yy_current_state;
3867                 }
3868
3869         return yy_current_state;
3870 }
3871
3872 /* yy_try_NUL_trans - try to make a transition on the NUL character
3873  *
3874  * synopsis
3875  *      next_state = yy_try_NUL_trans( current_state );
3876  */
3877     static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
3878 {
3879         register int yy_is_jam;
3880     
3881         register YY_CHAR yy_c = 1;
3882         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
3883                 {
3884                 yy_current_state = (int) yy_def[yy_current_state];
3885                 if ( yy_current_state >= 824 )
3886                         yy_c = yy_meta[(unsigned int) yy_c];
3887                 }
3888         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
3889         yy_is_jam = (yy_current_state == 823);
3890         if ( ! yy_is_jam )
3891                 *(yy_state_ptr)++ = yy_current_state;
3892
3893         return yy_is_jam ? 0 : yy_current_state;
3894 }
3895
3896     static void yyunput (int c, register char * yy_bp )
3897 {
3898         register char *yy_cp;
3899     
3900     yy_cp = (yy_c_buf_p);
3901
3902         /* undo effects of setting up yytext */
3903         *yy_cp = (yy_hold_char);
3904
3905         if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
3906                 { /* need to shift things up to make room */
3907                 /* +2 for EOB chars. */
3908                 register int number_to_move = (yy_n_chars) + 2;
3909                 register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
3910                                         YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
3911                 register char *source =
3912                                 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
3913
3914                 while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
3915                         *--dest = *--source;
3916
3917                 yy_cp += (int) (dest - source);
3918                 yy_bp += (int) (dest - source);
3919                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
3920                         (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
3921
3922                 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
3923                         YY_FATAL_ERROR( "flex scanner push-back overflow" );
3924                 }
3925
3926         *--yy_cp = (char) c;
3927
3928         (yytext_ptr) = yy_bp;
3929         (yy_hold_char) = *yy_cp;
3930         (yy_c_buf_p) = yy_cp;
3931 }
3932
3933 #ifndef YY_NO_INPUT
3934 #ifdef __cplusplus
3935     static int yyinput (void)
3936 #else
3937     static int input  (void)
3938 #endif
3939
3940 {
3941         int c;
3942     
3943         *(yy_c_buf_p) = (yy_hold_char);
3944
3945         if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
3946                 {
3947                 /* yy_c_buf_p now points to the character we want to return.
3948                  * If this occurs *before* the EOB characters, then it's a
3949                  * valid NUL; if not, then we've hit the end of the buffer.
3950                  */
3951                 if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
3952                         /* This was really a NUL. */
3953                         *(yy_c_buf_p) = '\0';
3954
3955                 else
3956                         { /* need more input */
3957                         int offset = (yy_c_buf_p) - (yytext_ptr);
3958                         ++(yy_c_buf_p);
3959
3960                         switch ( yy_get_next_buffer(  ) )
3961                                 {
3962                                 case EOB_ACT_LAST_MATCH:
3963                                         /* This happens because yy_g_n_b()
3964                                          * sees that we've accumulated a
3965                                          * token and flags that we need to
3966                                          * try matching the token before
3967                                          * proceeding.  But for input(),
3968                                          * there's no matching to consider.
3969                                          * So convert the EOB_ACT_LAST_MATCH
3970                                          * to EOB_ACT_END_OF_FILE.
3971                                          */
3972
3973                                         /* Reset buffer status. */
3974                                         yyrestart(yyin );
3975
3976                                         /*FALLTHROUGH*/
3977
3978                                 case EOB_ACT_END_OF_FILE:
3979                                         {
3980                                         if ( yywrap( ) )
3981                                                 return EOF;
3982
3983                                         if ( ! (yy_did_buffer_switch_on_eof) )
3984                                                 YY_NEW_FILE;
3985 #ifdef __cplusplus
3986                                         return yyinput();
3987 #else
3988                                         return input();
3989 #endif
3990                                         }
3991
3992                                 case EOB_ACT_CONTINUE_SCAN:
3993                                         (yy_c_buf_p) = (yytext_ptr) + offset;
3994                                         break;
3995                                 }
3996                         }
3997                 }
3998
3999         c = *(unsigned char *) (yy_c_buf_p);    /* cast for 8-bit char's */
4000         *(yy_c_buf_p) = '\0';   /* preserve yytext */
4001         (yy_hold_char) = *++(yy_c_buf_p);
4002
4003         YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n');
4004
4005         return c;
4006 }
4007 #endif  /* ifndef YY_NO_INPUT */
4008
4009 /** Immediately switch to a different input stream.
4010  * @param input_file A readable stream.
4011  * 
4012  * @note This function does not reset the start condition to @c INITIAL .
4013  */
4014     void yyrestart  (FILE * input_file )
4015 {
4016     
4017         if ( ! YY_CURRENT_BUFFER ){
4018         yyensure_buffer_stack ();
4019                 YY_CURRENT_BUFFER_LVALUE =
4020             yy_create_buffer(yyin,YY_BUF_SIZE );
4021         }
4022
4023         yy_init_buffer(YY_CURRENT_BUFFER,input_file );
4024         yy_load_buffer_state( );
4025 }
4026
4027 /** Switch to a different input buffer.
4028  * @param new_buffer The new input buffer.
4029  * 
4030  */
4031     void yy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
4032 {
4033     
4034         /* TODO. We should be able to replace this entire function body
4035          * with
4036          *              yypop_buffer_state();
4037          *              yypush_buffer_state(new_buffer);
4038      */
4039         yyensure_buffer_stack ();
4040         if ( YY_CURRENT_BUFFER == new_buffer )
4041                 return;
4042
4043         if ( YY_CURRENT_BUFFER )
4044                 {
4045                 /* Flush out information for old buffer. */
4046                 *(yy_c_buf_p) = (yy_hold_char);
4047                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
4048                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
4049                 }
4050
4051         YY_CURRENT_BUFFER_LVALUE = new_buffer;
4052         yy_load_buffer_state( );
4053
4054         /* We don't actually know whether we did this switch during
4055          * EOF (yywrap()) processing, but the only time this flag
4056          * is looked at is after yywrap() is called, so it's safe
4057          * to go ahead and always set it.
4058          */
4059         (yy_did_buffer_switch_on_eof) = 1;
4060 }
4061
4062 static void yy_load_buffer_state  (void)
4063 {
4064         (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
4065         (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
4066         yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
4067         (yy_hold_char) = *(yy_c_buf_p);
4068 }
4069
4070 /** Allocate and initialize an input buffer state.
4071  * @param file A readable stream.
4072  * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
4073  * 
4074  * @return the allocated buffer state.
4075  */
4076     YY_BUFFER_STATE yy_create_buffer  (FILE * file, int  size )
4077 {
4078         YY_BUFFER_STATE b;
4079     
4080         b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state )  );
4081         if ( ! b )
4082                 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
4083
4084         b->yy_buf_size = size;
4085
4086         /* yy_ch_buf has to be 2 characters longer than the size given because
4087          * we need to put in 2 end-of-buffer characters.
4088          */
4089         b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2  );
4090         if ( ! b->yy_ch_buf )
4091                 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
4092
4093         b->yy_is_our_buffer = 1;
4094
4095         yy_init_buffer(b,file );
4096
4097         return b;
4098 }
4099
4100 /** Destroy the buffer.
4101  * @param b a buffer created with yy_create_buffer()
4102  * 
4103  */
4104     void yy_delete_buffer (YY_BUFFER_STATE  b )
4105 {
4106     
4107         if ( ! b )
4108                 return;
4109
4110         if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
4111                 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
4112
4113         if ( b->yy_is_our_buffer )
4114                 yyfree((void *) b->yy_ch_buf  );
4115
4116         yyfree((void *) b  );
4117 }
4118
4119 #ifndef __cplusplus
4120 extern int isatty (int );
4121 #endif /* __cplusplus */
4122     
4123 /* Initializes or reinitializes a buffer.
4124  * This function is sometimes called more than once on the same buffer,
4125  * such as during a yyrestart() or at EOF.
4126  */
4127     static void yy_init_buffer  (YY_BUFFER_STATE  b, FILE * file )
4128
4129 {
4130         int oerrno = errno;
4131     
4132         yy_flush_buffer(b );
4133
4134         b->yy_input_file = file;
4135         b->yy_fill_buffer = 1;
4136
4137     /* If b is the current buffer, then yy_init_buffer was _probably_
4138      * called from yyrestart() or through yy_get_next_buffer.
4139      * In that case, we don't want to reset the lineno or column.
4140      */
4141     if (b != YY_CURRENT_BUFFER){
4142         b->yy_bs_lineno = 1;
4143         b->yy_bs_column = 0;
4144     }
4145
4146         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
4147     
4148         errno = oerrno;
4149 }
4150
4151 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
4152  * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
4153  * 
4154  */
4155     void yy_flush_buffer (YY_BUFFER_STATE  b )
4156 {
4157         if ( ! b )
4158                 return;
4159
4160         b->yy_n_chars = 0;
4161
4162         /* We always need two end-of-buffer characters.  The first causes
4163          * a transition to the end-of-buffer state.  The second causes
4164          * a jam in that state.
4165          */
4166         b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
4167         b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
4168
4169         b->yy_buf_pos = &b->yy_ch_buf[0];
4170
4171         b->yy_at_bol = 1;
4172         b->yy_buffer_status = YY_BUFFER_NEW;
4173
4174         if ( b == YY_CURRENT_BUFFER )
4175                 yy_load_buffer_state( );
4176 }
4177
4178 /** Pushes the new state onto the stack. The new state becomes
4179  *  the current state. This function will allocate the stack
4180  *  if necessary.
4181  *  @param new_buffer The new state.
4182  *  
4183  */
4184 void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
4185 {
4186         if (new_buffer == NULL)
4187                 return;
4188
4189         yyensure_buffer_stack();
4190
4191         /* This block is copied from yy_switch_to_buffer. */
4192         if ( YY_CURRENT_BUFFER )
4193                 {
4194                 /* Flush out information for old buffer. */
4195                 *(yy_c_buf_p) = (yy_hold_char);
4196                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
4197                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
4198                 }
4199
4200         /* Only push if top exists. Otherwise, replace top. */
4201         if (YY_CURRENT_BUFFER)
4202                 (yy_buffer_stack_top)++;
4203         YY_CURRENT_BUFFER_LVALUE = new_buffer;
4204
4205         /* copied from yy_switch_to_buffer. */
4206         yy_load_buffer_state( );
4207         (yy_did_buffer_switch_on_eof) = 1;
4208 }
4209
4210 /** Removes and deletes the top of the stack, if present.
4211  *  The next element becomes the new top.
4212  *  
4213  */
4214 void yypop_buffer_state (void)
4215 {
4216         if (!YY_CURRENT_BUFFER)
4217                 return;
4218
4219         yy_delete_buffer(YY_CURRENT_BUFFER );
4220         YY_CURRENT_BUFFER_LVALUE = NULL;
4221         if ((yy_buffer_stack_top) > 0)
4222                 --(yy_buffer_stack_top);
4223
4224         if (YY_CURRENT_BUFFER) {
4225                 yy_load_buffer_state( );
4226                 (yy_did_buffer_switch_on_eof) = 1;
4227         }
4228 }
4229
4230 /* Allocates the stack if it does not exist.
4231  *  Guarantees space for at least one push.
4232  */
4233 static void yyensure_buffer_stack (void)
4234 {
4235         int num_to_alloc;
4236     
4237         if (!(yy_buffer_stack)) {
4238
4239                 /* First allocation is just for 2 elements, since we don't know if this
4240                  * scanner will even need a stack. We use 2 instead of 1 to avoid an
4241                  * immediate realloc on the next call.
4242          */
4243                 num_to_alloc = 1;
4244                 (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
4245                                                                 (num_to_alloc * sizeof(struct yy_buffer_state*)
4246                                                                 );
4247                 if ( ! (yy_buffer_stack) )
4248                         YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
4249                                                                   
4250                 memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
4251                                 
4252                 (yy_buffer_stack_max) = num_to_alloc;
4253                 (yy_buffer_stack_top) = 0;
4254                 return;
4255         }
4256
4257         if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
4258
4259                 /* Increase the buffer to prepare for a possible push. */
4260                 int grow_size = 8 /* arbitrary grow size */;
4261
4262                 num_to_alloc = (yy_buffer_stack_max) + grow_size;
4263                 (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
4264                                                                 ((yy_buffer_stack),
4265                                                                 num_to_alloc * sizeof(struct yy_buffer_state*)
4266                                                                 );
4267                 if ( ! (yy_buffer_stack) )
4268                         YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
4269
4270                 /* zero only the new slots.*/
4271                 memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
4272                 (yy_buffer_stack_max) = num_to_alloc;
4273         }
4274 }
4275
4276 /** Setup the input buffer state to scan directly from a user-specified character buffer.
4277  * @param base the character buffer
4278  * @param size the size in bytes of the character buffer
4279  * 
4280  * @return the newly allocated buffer state object. 
4281  */
4282 YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size )
4283 {
4284         YY_BUFFER_STATE b;
4285     
4286         if ( size < 2 ||
4287              base[size-2] != YY_END_OF_BUFFER_CHAR ||
4288              base[size-1] != YY_END_OF_BUFFER_CHAR )
4289                 /* They forgot to leave room for the EOB's. */
4290                 return 0;
4291
4292         b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state )  );
4293         if ( ! b )
4294                 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
4295
4296         b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
4297         b->yy_buf_pos = b->yy_ch_buf = base;
4298         b->yy_is_our_buffer = 0;
4299         b->yy_input_file = 0;
4300         b->yy_n_chars = b->yy_buf_size;
4301         b->yy_is_interactive = 0;
4302         b->yy_at_bol = 1;
4303         b->yy_fill_buffer = 0;
4304         b->yy_buffer_status = YY_BUFFER_NEW;
4305
4306         yy_switch_to_buffer(b  );
4307
4308         return b;
4309 }
4310
4311 /** Setup the input buffer state to scan a string. The next call to yylex() will
4312  * scan from a @e copy of @a str.
4313  * @param yystr a NUL-terminated string to scan
4314  * 
4315  * @return the newly allocated buffer state object.
4316  * @note If you want to scan bytes that may contain NUL values, then use
4317  *       yy_scan_bytes() instead.
4318  */
4319 YY_BUFFER_STATE yy_scan_string (yyconst char * yystr )
4320 {
4321     
4322         return yy_scan_bytes(yystr,strlen(yystr) );
4323 }
4324
4325 /** Setup the input buffer state to scan the given bytes. The next call to yylex() will
4326  * scan from a @e copy of @a bytes.
4327  * @param yybytes the byte buffer to scan
4328  * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
4329  * 
4330  * @return the newly allocated buffer state object.
4331  */
4332 YY_BUFFER_STATE yy_scan_bytes  (yyconst char * yybytes, int  _yybytes_len )
4333 {
4334         YY_BUFFER_STATE b;
4335         char *buf;
4336         yy_size_t n;
4337         int i;
4338     
4339         /* Get memory for full buffer, including space for trailing EOB's. */
4340         n = _yybytes_len + 2;
4341         buf = (char *) yyalloc(n  );
4342         if ( ! buf )
4343                 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
4344
4345         for ( i = 0; i < _yybytes_len; ++i )
4346                 buf[i] = yybytes[i];
4347
4348         buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
4349
4350         b = yy_scan_buffer(buf,n );
4351         if ( ! b )
4352                 YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
4353
4354         /* It's okay to grow etc. this buffer, and we should throw it
4355          * away when we're done.
4356          */
4357         b->yy_is_our_buffer = 1;
4358
4359         return b;
4360 }
4361
4362     static void yy_push_state (int  new_state )
4363 {
4364         if ( (yy_start_stack_ptr) >= (yy_start_stack_depth) )
4365                 {
4366                 yy_size_t new_size;
4367
4368                 (yy_start_stack_depth) += YY_START_STACK_INCR;
4369                 new_size = (yy_start_stack_depth) * sizeof( int );
4370
4371                 if ( ! (yy_start_stack) )
4372                         (yy_start_stack) = (int *) yyalloc(new_size  );
4373
4374                 else
4375                         (yy_start_stack) = (int *) yyrealloc((void *) (yy_start_stack),new_size  );
4376
4377                 if ( ! (yy_start_stack) )
4378                         YY_FATAL_ERROR( "out of memory expanding start-condition stack" );
4379                 }
4380
4381         (yy_start_stack)[(yy_start_stack_ptr)++] = YY_START;
4382
4383         BEGIN(new_state);
4384 }
4385
4386     static void yy_pop_state  (void)
4387 {
4388         if ( --(yy_start_stack_ptr) < 0 )
4389                 YY_FATAL_ERROR( "start-condition stack underflow" );
4390
4391         BEGIN((yy_start_stack)[(yy_start_stack_ptr)]);
4392 }
4393
4394     static int yy_top_state  (void)
4395 {
4396         return (yy_start_stack)[(yy_start_stack_ptr) - 1];
4397 }
4398
4399 #ifndef YY_EXIT_FAILURE
4400 #define YY_EXIT_FAILURE 2
4401 #endif
4402
4403 static void yy_fatal_error (yyconst char* msg )
4404 {
4405         (void) fprintf( stderr, "%s\n", msg );
4406         exit( YY_EXIT_FAILURE );
4407 }
4408
4409 /* Redefine yyless() so it works in section 3 code. */
4410
4411 #undef yyless
4412 #define yyless(n) \
4413         do \
4414                 { \
4415                 /* Undo effects of setting up yytext. */ \
4416         int yyless_macro_arg = (n); \
4417         YY_LESS_LINENO(yyless_macro_arg);\
4418                 yytext[yyleng] = (yy_hold_char); \
4419                 (yy_c_buf_p) = yytext + yyless_macro_arg; \
4420                 (yy_hold_char) = *(yy_c_buf_p); \
4421                 *(yy_c_buf_p) = '\0'; \
4422                 yyleng = yyless_macro_arg; \
4423                 } \
4424         while ( 0 )
4425
4426 /* Accessor  methods (get/set functions) to struct members. */
4427
4428 /** Get the current line number.
4429  * 
4430  */
4431 int yyget_lineno  (void)
4432 {
4433         
4434     return yylineno;
4435 }
4436
4437 /** Get the input stream.
4438  * 
4439  */
4440 FILE *yyget_in  (void)
4441 {
4442         return yyin;
4443 }
4444
4445 /** Get the output stream.
4446  * 
4447  */
4448 FILE *yyget_out  (void)
4449 {
4450         return yyout;
4451 }
4452
4453 /** Get the length of the current token.
4454  * 
4455  */
4456 int yyget_leng  (void)
4457 {
4458         return yyleng;
4459 }
4460
4461 /** Get the current token.
4462  * 
4463  */
4464
4465 char *yyget_text  (void)
4466 {
4467         return yytext;
4468 }
4469
4470 /** Set the current line number.
4471  * @param line_number
4472  * 
4473  */
4474 void yyset_lineno (int  line_number )
4475 {
4476     
4477     yylineno = line_number;
4478 }
4479
4480 /** Set the input stream. This does not discard the current
4481  * input buffer.
4482  * @param in_str A readable stream.
4483  * 
4484  * @see yy_switch_to_buffer
4485  */
4486 void yyset_in (FILE *  in_str )
4487 {
4488         yyin = in_str ;
4489 }
4490
4491 void yyset_out (FILE *  out_str )
4492 {
4493         yyout = out_str ;
4494 }
4495
4496 int yyget_debug  (void)
4497 {
4498         return yy_flex_debug;
4499 }
4500
4501 void yyset_debug (int  bdebug )
4502 {
4503         yy_flex_debug = bdebug ;
4504 }
4505
4506 static int yy_init_globals (void)
4507 {
4508         /* Initialization is the same as for the non-reentrant scanner.
4509      * This function is called from yylex_destroy(), so don't allocate here.
4510      */
4511
4512     (yy_buffer_stack) = 0;
4513     (yy_buffer_stack_top) = 0;
4514     (yy_buffer_stack_max) = 0;
4515     (yy_c_buf_p) = (char *) 0;
4516     (yy_init) = 0;
4517     (yy_start) = 0;
4518
4519     (yy_start_stack_ptr) = 0;
4520     (yy_start_stack_depth) = 0;
4521     (yy_start_stack) =  NULL;
4522
4523     (yy_state_buf) = 0;
4524     (yy_state_ptr) = 0;
4525     (yy_full_match) = 0;
4526     (yy_lp) = 0;
4527
4528 /* Defined in main.c */
4529 #ifdef YY_STDINIT
4530     yyin = stdin;
4531     yyout = stdout;
4532 #else
4533     yyin = (FILE *) 0;
4534     yyout = (FILE *) 0;
4535 #endif
4536
4537     /* For future reference: Set errno on error, since we are called by
4538      * yylex_init()
4539      */
4540     return 0;
4541 }
4542
4543 /* yylex_destroy is for both reentrant and non-reentrant scanners. */
4544 int yylex_destroy  (void)
4545 {
4546     
4547     /* Pop the buffer stack, destroying each element. */
4548         while(YY_CURRENT_BUFFER){
4549                 yy_delete_buffer(YY_CURRENT_BUFFER  );
4550                 YY_CURRENT_BUFFER_LVALUE = NULL;
4551                 yypop_buffer_state();
4552         }
4553
4554         /* Destroy the stack itself. */
4555         yyfree((yy_buffer_stack) );
4556         (yy_buffer_stack) = NULL;
4557
4558     /* Destroy the start condition stack. */
4559         yyfree((yy_start_stack)  );
4560         (yy_start_stack) = NULL;
4561
4562     yyfree ( (yy_state_buf) );
4563     (yy_state_buf)  = NULL;
4564
4565     /* Reset the globals. This is important in a non-reentrant scanner so the next time
4566      * yylex() is called, initialization will occur. */
4567     yy_init_globals( );
4568
4569     return 0;
4570 }
4571
4572 /*
4573  * Internal utility routines.
4574  */
4575
4576 #ifndef yytext_ptr
4577 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
4578 {
4579         register int i;
4580         for ( i = 0; i < n; ++i )
4581                 s1[i] = s2[i];
4582 }
4583 #endif
4584
4585 #ifdef YY_NEED_STRLEN
4586 static int yy_flex_strlen (yyconst char * s )
4587 {
4588         register int n;
4589         for ( n = 0; s[n]; ++n )
4590                 ;
4591
4592         return n;
4593 }
4594 #endif
4595
4596 void *yyalloc (yy_size_t  size )
4597 {
4598         return (void *) malloc( size );
4599 }
4600
4601 void *yyrealloc  (void * ptr, yy_size_t  size )
4602 {
4603         /* The cast to (char *) in the following accommodates both
4604          * implementations that use char* generic pointers, and those
4605          * that use void* generic pointers.  It works with the latter
4606          * because both ANSI C and C++ allow castless assignment from
4607          * any pointer type to void*, and deal with argument conversions
4608          * as though doing an assignment.
4609          */
4610         return (void *) realloc( (char *) ptr, size );
4611 }
4612
4613 void yyfree (void * ptr )
4614 {
4615         free( (char *) ptr );   /* see yyrealloc() for (char *) cast */
4616 }
4617
4618 #define YYTABLES_NAME "yytables"
4619
4620 int scan_throw(int token) {
4621   last_token = token;
4622 #ifdef DEV
4623   std::cout << "--> [DEBUG] TOKEN : " << token << std::endl;
4624 #endif
4625   return token;
4626 }
4627
4628 int get_last_token() {
4629     return last_token;
4630 }
4631
4632 void scan_step() {
4633   yylloc.first_line = yylloc.last_line;
4634   yylloc.first_column = yylloc.last_column;
4635 }
4636
4637 /*
4638 ** convert floating numbers to C standard
4639 ** 1.2d-3 -> 1.2e-3
4640 ** 1.2D-3 -> 1.2e-3
4641 */
4642 void scan_exponent_convert(char *in)
4643 {
4644   for (; *in != 'd' && *in != 'D'; ++in);
4645   *in = 'e';
4646 }
4647
4648 #ifdef _MSC_VER
4649 int isatty (int desc)
4650 {
4651   return 0;
4652 }
4653 #endif
4654