Logo AND Algorithmique Numérique Distribuée

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