Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
A few more tiers file and a convenient perl script for the alnem project. I
[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 2006/04/22 01:36:54.
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.48 2006/03/21 13:09:12 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_surfxml_flexml_skeleton[] =
1789  "$" "Id: skel,v 1.28 2006/03/21 12:04:13 legranda Exp $";
1790 const char rcs_surfxml_flexml[] =
1791  "$" "Id: flexml.pl,v 1.48 2006/03/21 13:09:12 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* surfxml_pcdata;
1808 AT_surfxml_network_link_bandwidth A_surfxml_network_link_bandwidth;
1809 AT_surfxml_cpu_name A_surfxml_cpu_name;
1810 AT_surfxml_process_kill_time A_surfxml_process_kill_time;
1811 AT_surfxml_network_link_state A_surfxml_network_link_state;
1812 AT_surfxml_argument_value A_surfxml_argument_value;
1813 AT_surfxml_cpu_availability_file A_surfxml_cpu_availability_file;
1814 AT_surfxml_process_host A_surfxml_process_host;
1815 AT_surfxml_route_impact_on_src A_surfxml_route_impact_on_src;
1816 AT_surfxml_route_src A_surfxml_route_src;
1817 AT_surfxml_network_link_latency_file A_surfxml_network_link_latency_file;
1818 AT_surfxml_cpu_max_outgoing_rate A_surfxml_cpu_max_outgoing_rate;
1819 AT_surfxml_route_impact_on_dst_with_other_send A_surfxml_route_impact_on_dst_with_other_send;
1820 AT_surfxml_cpu_interference_send_recv A_surfxml_cpu_interference_send_recv;
1821 AT_surfxml_cpu_availability A_surfxml_cpu_availability;
1822 AT_surfxml_route_impact_on_dst A_surfxml_route_impact_on_dst;
1823 AT_surfxml_cpu_interference_recv A_surfxml_cpu_interference_recv;
1824 AT_surfxml_route_impact_on_src_with_other_recv A_surfxml_route_impact_on_src_with_other_recv;
1825 AT_surfxml_network_link_name A_surfxml_network_link_name;
1826 AT_surfxml_route_element_name A_surfxml_route_element_name;
1827 AT_surfxml_cpu_power A_surfxml_cpu_power;
1828 AT_surfxml_process_start_time A_surfxml_process_start_time;
1829 AT_surfxml_include_file A_surfxml_include_file;
1830 AT_surfxml_process_function A_surfxml_process_function;
1831 AT_surfxml_network_link_sharing_policy A_surfxml_network_link_sharing_policy;
1832 AT_surfxml_route_dst A_surfxml_route_dst;
1833 AT_surfxml_cpu_state A_surfxml_cpu_state;
1834 AT_surfxml_network_link_latency A_surfxml_network_link_latency;
1835 AT_surfxml_network_link_state_file A_surfxml_network_link_state_file;
1836 AT_surfxml_cpu_interference_send A_surfxml_cpu_interference_send;
1837 AT_surfxml_cpu_state_file A_surfxml_cpu_state_file;
1838 AT_surfxml_network_link_bandwidth_file A_surfxml_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 * surfxml_parse_err_msg(void);
1861
1862 /* Cleanup */
1863 static void cleanup(void);
1864 #define CLEANUP  cleanup()
1865
1866 /* Text buffer stack handling. */
1867 static char bufferstack[FLEXML_BUFFERSTACKSIZE];
1868 static char* limit = bufferstack + FLEXML_BUFFERSTACKSIZE;
1869 typedef struct BufferLast_s {
1870   struct BufferLast_s *old; char* saved; char new1[1];
1871 } BufferLast;
1872 #ifdef FLEXML_HasMixed
1873 static BufferLast* last = (BufferLast*)0;
1874 #endif
1875 static char* next = bufferstack;
1876
1877 #define BUFFERSET(P)  (P = next)
1878 #define BUFFERPUTC(C) (assert(next<limit), *(next++) = (C))
1879 #define BUFFERDONE    (BUFFERPUTC('\0'))
1880
1881 #define BUFFERLITERAL(C,P) bufferliteral(C,&(P),surf_parse_text)
1882 static void bufferliteral(char c, const char** pp, char* text)
1883 {
1884   char *s = strchr(text,c), *e = strrchr(text,c);
1885   assert(s <= e); BUFFERSET(*pp);
1886   while (++s<e) {
1887     if (isspace(*s)) { BUFFERPUTC(' '); while (isspace(*s)) ++s; }
1888     else BUFFERPUTC(*s);
1889   }
1890   BUFFERDONE;
1891 }
1892
1893 #ifdef FLEXML_HasMixed
1894 static void pushbuffer(char* p)
1895 {
1896   BufferLast* l = (BufferLast*)next;
1897   assert(next < limit);
1898   l->old = last;
1899   l->saved = p;
1900   next = l->new1;
1901   last = l;
1902 }
1903
1904 static char* popbuffer(void)
1905 {
1906   BufferLast* l = last;
1907   assert(last != (BufferLast*)0);
1908   last = l->old;
1909   next = (char*)l;
1910   return l->saved;
1911 }
1912 #endif
1913
1914 /* General internal entities are `unput' back onto the input stream... */
1915 #define ENTITYTEXT(T) \
1916   { char *s = (T), *e = s+strlen(s);\
1917     while (--e >= s) { unput(*e); }}
1918 /* Flex standard options. */
1919 #define YY_NO_INPUT 1
1920 /* Flex user-requested options. */
1921 /* XML character classes (currently restricted to ASCII). */
1922 /* "Common syntactic structures." */
1923 /* "Names and Tokens." */
1924 /* Miscellaneous. */
1925 /* Parser states (flex `exclusive start conditions'):
1926  *
1927  * PROLOG       the XML prolog of the document before <?xml...>
1928  * DOCTYPE      the XML prolog of the document after <?xml...>
1929  * EPILOG       after the root element
1930  * INCOMMENT    inside an XML comment <!--....-->
1931  * INPI         inside an XML PI <?...?>
1932  * VALUE1       inside a '...'-delimited literal
1933  * VALUE2       inside a "..."-delimited literal
1934  * CDATA        inside a <![CDATA[...] ]> section.
1935  * ROOT_<tag>   expect root element <tag>
1936  * AL_<tag>     inside the attribute list for <tag>
1937  * IN_<tag>     inside a <tag> with element contents (ready for end tag)
1938  * IMPOSSIBLE   dummy to permit disabling rules; must be last
1939  */
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950 #line 239 "surf/surfxml.l"
1951 /* State names. */
1952 const char* *surfxml_statenames=NULL;
1953 #line 1954 "surf/surfxml.c"
1954
1955 #define INITIAL 0
1956 #define PROLOG 1
1957 #define DOCTYPE 2
1958 #define EPILOG 3
1959 #define INCOMMENT 4
1960 #define INPI 5
1961 #define VALUE1 6
1962 #define VALUE2 7
1963 #define CDATA 8
1964 #define ROOT_surfxml_platform_description 9
1965 #define AL_surfxml_platform_description 10
1966 #define S_surfxml_platform_description 11
1967 #define S_surfxml_platform_description_1 12
1968 #define S_surfxml_platform_description_2 13
1969 #define E_surfxml_platform_description 14
1970 #define ROOT_surfxml_include 15
1971 #define AL_surfxml_include 16
1972 #define S_surfxml_include 17
1973 #define S_surfxml_include_1 18
1974 #define S_surfxml_include_2 19
1975 #define E_surfxml_include 20
1976 #define ROOT_surfxml_cpu 21
1977 #define AL_surfxml_cpu 22
1978 #define E_surfxml_cpu 23
1979 #define ROOT_surfxml_network_link 24
1980 #define AL_surfxml_network_link 25
1981 #define E_surfxml_network_link 26
1982 #define ROOT_surfxml_route 27
1983 #define AL_surfxml_route 28
1984 #define S_surfxml_route 29
1985 #define S_surfxml_route_1 30
1986 #define S_surfxml_route_2 31
1987 #define E_surfxml_route 32
1988 #define ROOT_surfxml_route_element 33
1989 #define AL_surfxml_route_element 34
1990 #define E_surfxml_route_element 35
1991 #define ROOT_surfxml_process 36
1992 #define AL_surfxml_process 37
1993 #define S_surfxml_process 38
1994 #define S_surfxml_process_1 39
1995 #define S_surfxml_process_2 40
1996 #define E_surfxml_process 41
1997 #define ROOT_surfxml_argument 42
1998 #define AL_surfxml_argument 43
1999 #define E_surfxml_argument 44
2000 #define IMPOSSIBLE 45
2001
2002 #ifndef YY_NO_UNISTD_H
2003 /* Special case for "unistd.h", since it is non-ANSI. We include it way
2004  * down here because we want the user's section 1 to have been scanned first.
2005  * The user has a chance to override it with an option.
2006  */
2007 #include <unistd.h>
2008 #endif
2009
2010 #ifndef YY_EXTRA_TYPE
2011 #define YY_EXTRA_TYPE void *
2012 #endif
2013
2014 /* Macros after this point can all be overridden by user definitions in
2015  * section 1.
2016  */
2017
2018 #ifndef YY_SKIP_YYWRAP
2019 #ifdef __cplusplus
2020 extern "C" int surf_parse_wrap (void );
2021 #else
2022 extern int surf_parse_wrap (void );
2023 #endif
2024 #endif
2025
2026 #ifndef yytext_ptr
2027 static void yy_flex_strncpy (char *,yyconst char *,int );
2028 #endif
2029
2030 #ifdef YY_NEED_STRLEN
2031 static int yy_flex_strlen (yyconst char * );
2032 #endif
2033
2034 #ifndef YY_NO_INPUT
2035
2036 #ifdef __cplusplus
2037 static int yyinput (void );
2038 #else
2039 static int input (void );
2040 #endif
2041
2042 #endif
2043
2044         static int yy_start_stack_ptr = 0;
2045         static int yy_start_stack_depth = 0;
2046         static int *yy_start_stack = 0;
2047     
2048     static void yy_push_state (int new_state );
2049     
2050     static void yy_pop_state (void );
2051     
2052 /* Amount of stuff to slurp up with each read. */
2053 #ifndef YY_READ_BUF_SIZE
2054 #define YY_READ_BUF_SIZE 8192
2055 #endif
2056
2057 /* Copy whatever the last rule matched to the standard output. */
2058 #ifndef ECHO
2059 /* This used to be an fputs(), but since the string might contain NUL's,
2060  * we now use fwrite().
2061  */
2062 #define ECHO (void) fwrite( surf_parse_text, surf_parse_leng, 1, surf_parse_out )
2063 #endif
2064
2065 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
2066  * is returned in "result".
2067  */
2068 #ifndef YY_INPUT
2069 #define YY_INPUT(buf,result,max_size) \
2070         if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
2071                 { \
2072                 int c = '*'; \
2073                 size_t n; \
2074                 for ( n = 0; n < max_size && \
2075                              (c = getc( surf_parse_in )) != EOF && c != '\n'; ++n ) \
2076                         buf[n] = (char) c; \
2077                 if ( c == '\n' ) \
2078                         buf[n++] = (char) c; \
2079                 if ( c == EOF && ferror( surf_parse_in ) ) \
2080                         YY_FATAL_ERROR( "input in flex scanner failed" ); \
2081                 result = n; \
2082                 } \
2083         else \
2084                 { \
2085                 errno=0; \
2086                 while ( (result = fread(buf, 1, max_size, surf_parse_in))==0 && ferror(surf_parse_in)) \
2087                         { \
2088                         if( errno != EINTR) \
2089                                 { \
2090                                 YY_FATAL_ERROR( "input in flex scanner failed" ); \
2091                                 break; \
2092                                 } \
2093                         errno=0; \
2094                         clearerr(surf_parse_in); \
2095                         } \
2096                 }\
2097 \
2098
2099 #endif
2100
2101 /* No semi-colon after return; correct usage is to write "yyterminate();" -
2102  * we don't want an extra ';' after the "return" because that will cause
2103  * some compilers to complain about unreachable statements.
2104  */
2105 #ifndef yyterminate
2106 #define yyterminate() return YY_NULL
2107 #endif
2108
2109 /* Number of entries by which start-condition stack grows. */
2110 #ifndef YY_START_STACK_INCR
2111 #define YY_START_STACK_INCR 25
2112 #endif
2113
2114 /* Report a fatal error. */
2115 #ifndef YY_FATAL_ERROR
2116 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
2117 #endif
2118
2119 /* end tables serialization structures and prototypes */
2120
2121 /* Default declaration of generated scanner - a define so the user can
2122  * easily add parameters.
2123  */
2124 #ifndef YY_DECL
2125 #define YY_DECL_IS_OURS 1
2126
2127 extern int surf_parse_lex (void);
2128
2129 #define YY_DECL int surf_parse_lex (void)
2130 #endif /* !YY_DECL */
2131
2132 /* Code executed at the beginning of each rule, after surf_parse_text and surf_parse_leng
2133  * have been set up.
2134  */
2135 #ifndef YY_USER_ACTION
2136 #define YY_USER_ACTION
2137 #endif
2138
2139 /* Code executed at the end of each rule. */
2140 #ifndef YY_BREAK
2141 #define YY_BREAK break;
2142 #endif
2143
2144 #define YY_RULE_SETUP \
2145         YY_USER_ACTION
2146
2147 /** The main scanner function which does all the work.
2148  */
2149 YY_DECL
2150 {
2151         register yy_state_type yy_current_state;
2152         register char *yy_cp, *yy_bp;
2153         register int yy_act;
2154     
2155 #line 243 "surf/surfxml.l"
2156
2157
2158  /* Bypass Flex's default INITIAL state and begin by parsing the XML prolog. */
2159  SET(PROLOG);
2160   /* FleXML_init */
2161   next = bufferstack;
2162   if(!surfxml_statenames) {surfxml_statenames= (const char **)calloc(IMPOSSIBLE,sizeof(char*));
2163   surfxml_statenames[PROLOG] = NULL;
2164   surfxml_statenames[DOCTYPE] = NULL;
2165   surfxml_statenames[EPILOG] = NULL;
2166   surfxml_statenames[INCOMMENT] = NULL;
2167   surfxml_statenames[INPI] = NULL;
2168   surfxml_statenames[VALUE1] = NULL;
2169   surfxml_statenames[VALUE2] = NULL;
2170   surfxml_statenames[CDATA] = NULL;
2171   surfxml_statenames[ROOT_surfxml_platform_description] = NULL;
2172   surfxml_statenames[AL_surfxml_platform_description] = NULL;
2173   surfxml_statenames[S_surfxml_platform_description] = "platform_description";
2174   surfxml_statenames[S_surfxml_platform_description_1] = "platform_description";
2175   surfxml_statenames[S_surfxml_platform_description_2] = "platform_description";
2176   surfxml_statenames[E_surfxml_platform_description] = "platform_description";
2177   surfxml_statenames[ROOT_surfxml_include] = NULL;
2178   surfxml_statenames[AL_surfxml_include] = NULL;
2179   surfxml_statenames[S_surfxml_include] = "include";
2180   surfxml_statenames[S_surfxml_include_1] = "include";
2181   surfxml_statenames[S_surfxml_include_2] = "include";
2182   surfxml_statenames[E_surfxml_include] = "include";
2183   surfxml_statenames[ROOT_surfxml_cpu] = NULL;
2184   surfxml_statenames[AL_surfxml_cpu] = NULL;
2185   surfxml_statenames[E_surfxml_cpu] = "cpu";
2186   surfxml_statenames[ROOT_surfxml_network_link] = NULL;
2187   surfxml_statenames[AL_surfxml_network_link] = NULL;
2188   surfxml_statenames[E_surfxml_network_link] = "network_link";
2189   surfxml_statenames[ROOT_surfxml_route] = NULL;
2190   surfxml_statenames[AL_surfxml_route] = NULL;
2191   surfxml_statenames[S_surfxml_route] = "route";
2192   surfxml_statenames[S_surfxml_route_1] = "route";
2193   surfxml_statenames[S_surfxml_route_2] = "route";
2194   surfxml_statenames[E_surfxml_route] = "route";
2195   surfxml_statenames[ROOT_surfxml_route_element] = NULL;
2196   surfxml_statenames[AL_surfxml_route_element] = NULL;
2197   surfxml_statenames[E_surfxml_route_element] = "route_element";
2198   surfxml_statenames[ROOT_surfxml_process] = NULL;
2199   surfxml_statenames[AL_surfxml_process] = NULL;
2200   surfxml_statenames[S_surfxml_process] = "process";
2201   surfxml_statenames[S_surfxml_process_1] = "process";
2202   surfxml_statenames[S_surfxml_process_2] = "process";
2203   surfxml_statenames[E_surfxml_process] = "process";
2204   surfxml_statenames[ROOT_surfxml_argument] = NULL;
2205   surfxml_statenames[AL_surfxml_argument] = NULL;
2206   surfxml_statenames[E_surfxml_argument] = "argument";
2207   }
2208
2209  /* COMMENTS and PIs: handled uniformly for efficiency. */
2210
2211 #line 2212 "surf/surfxml.c"
2212
2213         if ( (yy_init) )
2214                 {
2215                 (yy_init) = 0;
2216
2217 #ifdef YY_USER_INIT
2218                 YY_USER_INIT;
2219 #endif
2220
2221                 if ( ! (yy_start) )
2222                         (yy_start) = 1; /* first start state */
2223
2224                 if ( ! surf_parse_in )
2225                         surf_parse_in = stdin;
2226
2227                 if ( ! surf_parse_out )
2228                         surf_parse_out = stdout;
2229
2230                 if ( ! YY_CURRENT_BUFFER ) {
2231                         surf_parse_ensure_buffer_stack ();
2232                         YY_CURRENT_BUFFER_LVALUE =
2233                                 surf_parse__create_buffer(surf_parse_in,YY_BUF_SIZE );
2234                 }
2235
2236                 surf_parse__load_buffer_state( );
2237                 }
2238
2239         while ( 1 )             /* loops until end-of-file is reached */
2240                 {
2241                 yy_cp = (yy_c_buf_p);
2242
2243                 /* Support of surf_parse_text. */
2244                 *yy_cp = (yy_hold_char);
2245
2246                 /* yy_bp points to the position in yy_ch_buf of the start of
2247                  * the current run.
2248                  */
2249                 yy_bp = yy_cp;
2250
2251                 yy_current_state = (yy_start);
2252 yy_match:
2253                 do
2254                         {
2255                         register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
2256                         if ( yy_accept[yy_current_state] )
2257                                 {
2258                                 (yy_last_accepting_state) = yy_current_state;
2259                                 (yy_last_accepting_cpos) = yy_cp;
2260                                 }
2261                         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2262                                 {
2263                                 yy_current_state = (int) yy_def[yy_current_state];
2264                                 if ( yy_current_state >= 1333 )
2265                                         yy_c = yy_meta[(unsigned int) yy_c];
2266                                 }
2267                         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2268                         ++yy_cp;
2269                         }
2270                 while ( yy_base[yy_current_state] != 3649 );
2271
2272 yy_find_action:
2273                 yy_act = yy_accept[yy_current_state];
2274                 if ( yy_act == 0 )
2275                         { /* have to back up */
2276                         yy_cp = (yy_last_accepting_cpos);
2277                         yy_current_state = (yy_last_accepting_state);
2278                         yy_act = yy_accept[yy_current_state];
2279                         }
2280
2281                 YY_DO_BEFORE_ACTION;
2282
2283                 if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] )
2284                         {
2285                         int yyl;
2286                         for ( yyl = 0; yyl < surf_parse_leng; ++yyl )
2287                                 if ( surf_parse_text[yyl] == '\n' )
2288                                            
2289     surf_parse_lineno++;
2290 ;
2291                         }
2292
2293 do_action:      /* This label is used only to access EOF actions. */
2294
2295                 switch ( yy_act )
2296         { /* beginning of action switch */
2297                         case 0: /* must back up */
2298                         /* undo the effects of YY_DO_BEFORE_ACTION */
2299                         *yy_cp = (yy_hold_char);
2300                         yy_cp = (yy_last_accepting_cpos);
2301                         yy_current_state = (yy_last_accepting_state);
2302                         goto yy_find_action;
2303
2304 case 1:
2305 YY_RULE_SETUP
2306 #line 299 "surf/surfxml.l"
2307 ENTER(INCOMMENT);
2308         YY_BREAK
2309 case 2:
2310 YY_RULE_SETUP
2311 #line 300 "surf/surfxml.l"
2312 ENTER(INPI);
2313         YY_BREAK
2314
2315
2316 case 3:
2317 YY_RULE_SETUP
2318 #line 303 "surf/surfxml.l"
2319 LEAVE;
2320         YY_BREAK
2321 case 4:
2322 #line 305 "surf/surfxml.l"
2323 case 5:
2324 #line 306 "surf/surfxml.l"
2325 case 6:
2326 /* rule 6 can match eol */
2327 YY_RULE_SETUP
2328 #line 306 "surf/surfxml.l"
2329 SKIP;
2330         YY_BREAK
2331 case YY_STATE_EOF(INCOMMENT):
2332 #line 307 "surf/surfxml.l"
2333 FAIL("EOF in comment.");
2334         YY_BREAK
2335
2336
2337 case 7:
2338 YY_RULE_SETUP
2339 #line 310 "surf/surfxml.l"
2340 LEAVE;
2341         YY_BREAK
2342 case 8:
2343 #line 312 "surf/surfxml.l"
2344 case 9:
2345 /* rule 9 can match eol */
2346 YY_RULE_SETUP
2347 #line 312 "surf/surfxml.l"
2348 SKIP;
2349         YY_BREAK
2350 case YY_STATE_EOF(INPI):
2351 #line 313 "surf/surfxml.l"
2352 FAIL("EOF in PI (processing instruction).");
2353         YY_BREAK
2354
2355 /* SPACES: skipped uniformly */
2356 case 10:
2357 /* rule 10 can match eol */
2358 YY_RULE_SETUP
2359 #line 318 "surf/surfxml.l"
2360 SKIP;
2361         YY_BREAK
2362 /* PROLOG: determine root element and process it. */
2363
2364 case 11:
2365 /* rule 11 can match eol */
2366 YY_RULE_SETUP
2367 #line 323 "surf/surfxml.l"
2368 SET(DOCTYPE); 
2369         YY_BREAK
2370 case 12:
2371 /* rule 12 can match eol */
2372 YY_RULE_SETUP
2373 #line 324 "surf/surfxml.l"
2374 FAIL("Bad declaration %s.",surf_parse_text);
2375         YY_BREAK
2376
2377
2378 case 13:
2379 /* rule 13 can match eol */
2380 YY_RULE_SETUP
2381 #line 328 "surf/surfxml.l"
2382 SET(ROOT_surfxml_argument);
2383         YY_BREAK
2384 case 14:
2385 /* rule 14 can match eol */
2386 YY_RULE_SETUP
2387 #line 329 "surf/surfxml.l"
2388 SET(ROOT_surfxml_route_element);
2389         YY_BREAK
2390 case 15:
2391 /* rule 15 can match eol */
2392 YY_RULE_SETUP
2393 #line 330 "surf/surfxml.l"
2394 SET(ROOT_surfxml_cpu);
2395         YY_BREAK
2396 case 16:
2397 /* rule 16 can match eol */
2398 YY_RULE_SETUP
2399 #line 331 "surf/surfxml.l"
2400 SET(ROOT_surfxml_include);
2401         YY_BREAK
2402 case 17:
2403 /* rule 17 can match eol */
2404 YY_RULE_SETUP
2405 #line 332 "surf/surfxml.l"
2406 SET(ROOT_surfxml_route);
2407         YY_BREAK
2408 case 18:
2409 /* rule 18 can match eol */
2410 YY_RULE_SETUP
2411 #line 333 "surf/surfxml.l"
2412 SET(ROOT_surfxml_platform_description);
2413         YY_BREAK
2414 case 19:
2415 /* rule 19 can match eol */
2416 YY_RULE_SETUP
2417 #line 334 "surf/surfxml.l"
2418 SET(ROOT_surfxml_network_link);
2419         YY_BREAK
2420 case 20:
2421 /* rule 20 can match eol */
2422 YY_RULE_SETUP
2423 #line 335 "surf/surfxml.l"
2424 SET(ROOT_surfxml_process);
2425         YY_BREAK
2426 case 21:
2427 /* rule 21 can match eol */
2428 YY_RULE_SETUP
2429 #line 336 "surf/surfxml.l"
2430 FAIL("Bad declaration %s.",surf_parse_text);
2431         YY_BREAK
2432 case 22:
2433 YY_RULE_SETUP
2434 #line 337 "surf/surfxml.l"
2435 FAIL("Unexpected character `%c' in prolog.", surf_parse_text[0]);
2436         YY_BREAK
2437 case YY_STATE_EOF(PROLOG):
2438 case YY_STATE_EOF(DOCTYPE):
2439 #line 338 "surf/surfxml.l"
2440 FAIL("EOF in prolog.");
2441         YY_BREAK
2442
2443 /* RULES DERIVED FROM DTD. */
2444 /* <!-- Small DTD for SURF based tools. -->  */
2445 case 23:
2446 /* rule 23 can match eol */
2447 YY_RULE_SETUP
2448 #line 345 "surf/surfxml.l"
2449 {
2450   ENTER(AL_surfxml_platform_description);
2451   }
2452         YY_BREAK
2453
2454 case 24:
2455 YY_RULE_SETUP
2456 #line 350 "surf/surfxml.l"
2457 {
2458   LEAVE; STag_surfxml_platform_description();surfxml_pcdata = NULL; ENTER(S_surfxml_platform_description);
2459  }
2460         YY_BREAK
2461 case 25:
2462 YY_RULE_SETUP
2463 #line 353 "surf/surfxml.l"
2464 {
2465   LEAVE; STag_surfxml_platform_description(); surfxml_pcdata = NULL; ETag_surfxml_platform_description();
2466   switch (YY_START) {
2467    case ROOT_surfxml_platform_description: SET(EPILOG); break;
2468   }
2469  }
2470         YY_BREAK
2471 case 26:
2472 YY_RULE_SETUP
2473 #line 359 "surf/surfxml.l"
2474 FAIL("Unexpected character `%c' in attribute list of platform_description element.", surf_parse_text[0]);
2475         YY_BREAK
2476 case 27:
2477 YY_RULE_SETUP
2478 #line 360 "surf/surfxml.l"
2479 FAIL("Bad attribute `%s' in `platform_description' element start tag.",surf_parse_text);
2480         YY_BREAK
2481 case YY_STATE_EOF(AL_surfxml_platform_description):
2482 #line 361 "surf/surfxml.l"
2483 FAIL("EOF in attribute list of `platform_description' element.");
2484         YY_BREAK
2485
2486
2487 case 28:
2488 /* rule 28 can match eol */
2489 YY_RULE_SETUP
2490 #line 365 "surf/surfxml.l"
2491 {
2492   LEAVE;
2493   ETag_surfxml_platform_description();
2494   switch (YY_START) {
2495    case ROOT_surfxml_platform_description: SET(EPILOG); break;
2496   }
2497  }
2498         YY_BREAK
2499 case 29:
2500 /* rule 29 can match eol */
2501 YY_RULE_SETUP
2502 #line 372 "surf/surfxml.l"
2503 FAIL("Unexpected end-tag `%s': `</platform_description>' expected.",surf_parse_text);
2504         YY_BREAK
2505 case 30:
2506 YY_RULE_SETUP
2507 #line 373 "surf/surfxml.l"
2508 FAIL("Unexpected character `%c': `</platform_description>' expected.",surf_parse_text[0]);
2509         YY_BREAK
2510 case YY_STATE_EOF(E_surfxml_platform_description):
2511 case YY_STATE_EOF(S_surfxml_platform_description_2):
2512 case YY_STATE_EOF(S_surfxml_platform_description):
2513 #line 374 "surf/surfxml.l"
2514 FAIL("Premature EOF: `</platform_description>' expected.");
2515         YY_BREAK
2516
2517 case 31:
2518 /* rule 31 can match eol */
2519 YY_RULE_SETUP
2520 #line 377 "surf/surfxml.l"
2521 {
2522   A_surfxml_include_file = NULL;
2523   ENTER(AL_surfxml_include);
2524   }
2525         YY_BREAK
2526
2527 case 32:
2528 /* rule 32 can match eol */
2529 YY_RULE_SETUP
2530 #line 383 "surf/surfxml.l"
2531 ENTER(VALUE1); BUFFERSET(A_surfxml_include_file);
2532         YY_BREAK
2533 case 33:
2534 /* rule 33 can match eol */
2535 YY_RULE_SETUP
2536 #line 384 "surf/surfxml.l"
2537 ENTER(VALUE2); BUFFERSET(A_surfxml_include_file);
2538         YY_BREAK
2539 case 34:
2540 YY_RULE_SETUP
2541 #line 386 "surf/surfxml.l"
2542 {
2543   if (!A_surfxml_include_file) FAIL("Required attribute `file' not set for `include' element.");
2544   LEAVE; STag_surfxml_include();surfxml_pcdata = NULL; ENTER(S_surfxml_include);
2545  }
2546         YY_BREAK
2547 case 35:
2548 YY_RULE_SETUP
2549 #line 390 "surf/surfxml.l"
2550 {
2551   if (!A_surfxml_include_file) FAIL("Required attribute `file' not set for `include' element.");
2552   LEAVE; STag_surfxml_include(); surfxml_pcdata = NULL; ETag_surfxml_include();
2553   switch (YY_START) {
2554    case S_surfxml_platform_description_2: case S_surfxml_platform_description_1: case S_surfxml_platform_description: SET(S_surfxml_platform_description_2); break;
2555    case ROOT_surfxml_include: SET(EPILOG); break;
2556    case S_surfxml_include: case S_surfxml_include_2: case S_surfxml_include_1: SET(S_surfxml_include_2); break;
2557   }
2558  }
2559         YY_BREAK
2560 case 36:
2561 YY_RULE_SETUP
2562 #line 399 "surf/surfxml.l"
2563 FAIL("Unexpected character `%c' in attribute list of include element.", surf_parse_text[0]);
2564         YY_BREAK
2565 case 37:
2566 YY_RULE_SETUP
2567 #line 400 "surf/surfxml.l"
2568 FAIL("Bad attribute `%s' in `include' element start tag.",surf_parse_text);
2569         YY_BREAK
2570 case YY_STATE_EOF(AL_surfxml_include):
2571 #line 401 "surf/surfxml.l"
2572 FAIL("EOF in attribute list of `include' element.");
2573         YY_BREAK
2574
2575
2576 case 38:
2577 /* rule 38 can match eol */
2578 YY_RULE_SETUP
2579 #line 405 "surf/surfxml.l"
2580 {
2581   LEAVE;
2582   ETag_surfxml_include();
2583   switch (YY_START) {
2584    case S_surfxml_platform_description_2: case S_surfxml_platform_description_1: case S_surfxml_platform_description: SET(S_surfxml_platform_description_2); break;
2585    case ROOT_surfxml_include: SET(EPILOG); break;
2586    case S_surfxml_include: case S_surfxml_include_2: case S_surfxml_include_1: SET(S_surfxml_include_2); break;
2587   }
2588  }
2589         YY_BREAK
2590 case 39:
2591 /* rule 39 can match eol */
2592 YY_RULE_SETUP
2593 #line 414 "surf/surfxml.l"
2594 FAIL("Unexpected end-tag `%s': `</include>' expected.",surf_parse_text);
2595         YY_BREAK
2596 case 40:
2597 YY_RULE_SETUP
2598 #line 415 "surf/surfxml.l"
2599 FAIL("Unexpected character `%c': `</include>' expected.",surf_parse_text[0]);
2600         YY_BREAK
2601 case YY_STATE_EOF(E_surfxml_include):
2602 case YY_STATE_EOF(S_surfxml_include):
2603 case YY_STATE_EOF(S_surfxml_include_2):
2604 #line 416 "surf/surfxml.l"
2605 FAIL("Premature EOF: `</include>' expected.");
2606         YY_BREAK
2607
2608 case 41:
2609 /* rule 41 can match eol */
2610 YY_RULE_SETUP
2611 #line 419 "surf/surfxml.l"
2612 {
2613   A_surfxml_cpu_name = NULL;
2614   A_surfxml_cpu_power = NULL;
2615   A_surfxml_cpu_availability = "1.0";
2616   A_surfxml_cpu_availability_file = NULL;
2617   A_surfxml_cpu_state = A_surfxml_cpu_state_ON;
2618   A_surfxml_cpu_state_file = NULL;
2619   A_surfxml_cpu_interference_send = "1.0";
2620   A_surfxml_cpu_interference_recv = "1.0";
2621   A_surfxml_cpu_interference_send_recv = "1.0";
2622   A_surfxml_cpu_max_outgoing_rate = "-1.0";
2623   ENTER(AL_surfxml_cpu);
2624   }
2625         YY_BREAK
2626
2627 case 42:
2628 /* rule 42 can match eol */
2629 YY_RULE_SETUP
2630 #line 434 "surf/surfxml.l"
2631 ENTER(VALUE1); BUFFERSET(A_surfxml_cpu_name);
2632         YY_BREAK
2633 case 43:
2634 /* rule 43 can match eol */
2635 YY_RULE_SETUP
2636 #line 435 "surf/surfxml.l"
2637 ENTER(VALUE2); BUFFERSET(A_surfxml_cpu_name);
2638         YY_BREAK
2639 case 44:
2640 /* rule 44 can match eol */
2641 YY_RULE_SETUP
2642 #line 437 "surf/surfxml.l"
2643 ENTER(VALUE1); BUFFERSET(A_surfxml_cpu_power);
2644         YY_BREAK
2645 case 45:
2646 /* rule 45 can match eol */
2647 YY_RULE_SETUP
2648 #line 438 "surf/surfxml.l"
2649 ENTER(VALUE2); BUFFERSET(A_surfxml_cpu_power);
2650         YY_BREAK
2651 case 46:
2652 /* rule 46 can match eol */
2653 YY_RULE_SETUP
2654 #line 440 "surf/surfxml.l"
2655 ENTER(VALUE1); BUFFERSET(A_surfxml_cpu_availability);
2656         YY_BREAK
2657 case 47:
2658 /* rule 47 can match eol */
2659 YY_RULE_SETUP
2660 #line 441 "surf/surfxml.l"
2661 ENTER(VALUE2); BUFFERSET(A_surfxml_cpu_availability);
2662         YY_BREAK
2663 case 48:
2664 /* rule 48 can match eol */
2665 YY_RULE_SETUP
2666 #line 443 "surf/surfxml.l"
2667 ENTER(VALUE1); BUFFERSET(A_surfxml_cpu_availability_file);
2668         YY_BREAK
2669 case 49:
2670 /* rule 49 can match eol */
2671 YY_RULE_SETUP
2672 #line 444 "surf/surfxml.l"
2673 ENTER(VALUE2); BUFFERSET(A_surfxml_cpu_availability_file);
2674         YY_BREAK
2675 case 50:
2676 /* rule 50 can match eol */
2677 #line 447 "surf/surfxml.l"
2678 case 51:
2679 /* rule 51 can match eol */
2680 YY_RULE_SETUP
2681 #line 447 "surf/surfxml.l"
2682 A_surfxml_cpu_state = A_surfxml_cpu_state_ON;
2683         YY_BREAK
2684 case 52:
2685 /* rule 52 can match eol */
2686 #line 449 "surf/surfxml.l"
2687 case 53:
2688 /* rule 53 can match eol */
2689 YY_RULE_SETUP
2690 #line 449 "surf/surfxml.l"
2691 A_surfxml_cpu_state = A_surfxml_cpu_state_OFF;
2692         YY_BREAK
2693 case 54:
2694 /* rule 54 can match eol */
2695 YY_RULE_SETUP
2696 #line 451 "surf/surfxml.l"
2697 ENTER(VALUE1); BUFFERSET(A_surfxml_cpu_state_file);
2698         YY_BREAK
2699 case 55:
2700 /* rule 55 can match eol */
2701 YY_RULE_SETUP
2702 #line 452 "surf/surfxml.l"
2703 ENTER(VALUE2); BUFFERSET(A_surfxml_cpu_state_file);
2704         YY_BREAK
2705 case 56:
2706 /* rule 56 can match eol */
2707 YY_RULE_SETUP
2708 #line 454 "surf/surfxml.l"
2709 ENTER(VALUE1); BUFFERSET(A_surfxml_cpu_interference_send);
2710         YY_BREAK
2711 case 57:
2712 /* rule 57 can match eol */
2713 YY_RULE_SETUP
2714 #line 455 "surf/surfxml.l"
2715 ENTER(VALUE2); BUFFERSET(A_surfxml_cpu_interference_send);
2716         YY_BREAK
2717 case 58:
2718 /* rule 58 can match eol */
2719 YY_RULE_SETUP
2720 #line 457 "surf/surfxml.l"
2721 ENTER(VALUE1); BUFFERSET(A_surfxml_cpu_interference_recv);
2722         YY_BREAK
2723 case 59:
2724 /* rule 59 can match eol */
2725 YY_RULE_SETUP
2726 #line 458 "surf/surfxml.l"
2727 ENTER(VALUE2); BUFFERSET(A_surfxml_cpu_interference_recv);
2728         YY_BREAK
2729 case 60:
2730 /* rule 60 can match eol */
2731 YY_RULE_SETUP
2732 #line 460 "surf/surfxml.l"
2733 ENTER(VALUE1); BUFFERSET(A_surfxml_cpu_interference_send_recv);
2734         YY_BREAK
2735 case 61:
2736 /* rule 61 can match eol */
2737 YY_RULE_SETUP
2738 #line 461 "surf/surfxml.l"
2739 ENTER(VALUE2); BUFFERSET(A_surfxml_cpu_interference_send_recv);
2740         YY_BREAK
2741 case 62:
2742 /* rule 62 can match eol */
2743 YY_RULE_SETUP
2744 #line 463 "surf/surfxml.l"
2745 ENTER(VALUE1); BUFFERSET(A_surfxml_cpu_max_outgoing_rate);
2746         YY_BREAK
2747 case 63:
2748 /* rule 63 can match eol */
2749 YY_RULE_SETUP
2750 #line 464 "surf/surfxml.l"
2751 ENTER(VALUE2); BUFFERSET(A_surfxml_cpu_max_outgoing_rate);
2752         YY_BREAK
2753 case 64:
2754 YY_RULE_SETUP
2755 #line 466 "surf/surfxml.l"
2756 {
2757   if (!A_surfxml_cpu_name) FAIL("Required attribute `name' not set for `cpu' element.");
2758   if (!A_surfxml_cpu_power) FAIL("Required attribute `power' not set for `cpu' element.");
2759   LEAVE; STag_surfxml_cpu();surfxml_pcdata = NULL; ENTER(E_surfxml_cpu);
2760  }
2761         YY_BREAK
2762 case 65:
2763 YY_RULE_SETUP
2764 #line 471 "surf/surfxml.l"
2765 {
2766   if (!A_surfxml_cpu_name) FAIL("Required attribute `name' not set for `cpu' element.");
2767   if (!A_surfxml_cpu_power) FAIL("Required attribute `power' not set for `cpu' element.");
2768   LEAVE; STag_surfxml_cpu(); surfxml_pcdata = NULL; ETag_surfxml_cpu();
2769   switch (YY_START) {
2770    case S_surfxml_platform_description_2: case S_surfxml_platform_description_1: case S_surfxml_platform_description: SET(S_surfxml_platform_description_2); break;
2771    case ROOT_surfxml_cpu: SET(EPILOG); break;
2772    case S_surfxml_include: case S_surfxml_include_2: case S_surfxml_include_1: SET(S_surfxml_include_2); break;
2773   }
2774  }
2775         YY_BREAK
2776 case 66:
2777 YY_RULE_SETUP
2778 #line 481 "surf/surfxml.l"
2779 FAIL("Unexpected character `%c' in attribute list of cpu element.", surf_parse_text[0]);
2780         YY_BREAK
2781 case 67:
2782 YY_RULE_SETUP
2783 #line 482 "surf/surfxml.l"
2784 FAIL("Bad attribute `%s' in `cpu' element start tag.",surf_parse_text);
2785         YY_BREAK
2786 case YY_STATE_EOF(AL_surfxml_cpu):
2787 #line 483 "surf/surfxml.l"
2788 FAIL("EOF in attribute list of `cpu' element.");
2789         YY_BREAK
2790
2791
2792 case 68:
2793 /* rule 68 can match eol */
2794 YY_RULE_SETUP
2795 #line 487 "surf/surfxml.l"
2796 {
2797   LEAVE;
2798   ETag_surfxml_cpu();
2799   switch (YY_START) {
2800    case S_surfxml_platform_description_2: case S_surfxml_platform_description_1: case S_surfxml_platform_description: SET(S_surfxml_platform_description_2); break;
2801    case ROOT_surfxml_cpu: SET(EPILOG); break;
2802    case S_surfxml_include: case S_surfxml_include_2: case S_surfxml_include_1: SET(S_surfxml_include_2); break;
2803   }
2804  }
2805         YY_BREAK
2806 case 69:
2807 /* rule 69 can match eol */
2808 YY_RULE_SETUP
2809 #line 496 "surf/surfxml.l"
2810 FAIL("Unexpected end-tag `%s': `</cpu>' expected.",surf_parse_text);
2811         YY_BREAK
2812 case 70:
2813 YY_RULE_SETUP
2814 #line 497 "surf/surfxml.l"
2815 FAIL("Unexpected character `%c': `</cpu>' expected.",surf_parse_text[0]);
2816         YY_BREAK
2817 case YY_STATE_EOF(E_surfxml_cpu):
2818 #line 498 "surf/surfxml.l"
2819 FAIL("Premature EOF: `</cpu>' expected.");
2820         YY_BREAK
2821
2822 case 71:
2823 /* rule 71 can match eol */
2824 YY_RULE_SETUP
2825 #line 501 "surf/surfxml.l"
2826 {
2827   A_surfxml_network_link_name = NULL;
2828   A_surfxml_network_link_bandwidth = NULL;
2829   A_surfxml_network_link_bandwidth_file = NULL;
2830   A_surfxml_network_link_latency = "0.0";
2831   A_surfxml_network_link_latency_file = NULL;
2832   A_surfxml_network_link_state = A_surfxml_network_link_state_ON;
2833   A_surfxml_network_link_state_file = NULL;
2834   A_surfxml_network_link_sharing_policy = A_surfxml_network_link_sharing_policy_SHARED;
2835   ENTER(AL_surfxml_network_link);
2836   }
2837         YY_BREAK
2838
2839 case 72:
2840 /* rule 72 can match eol */
2841 YY_RULE_SETUP
2842 #line 514 "surf/surfxml.l"
2843 ENTER(VALUE1); BUFFERSET(A_surfxml_network_link_name);
2844         YY_BREAK
2845 case 73:
2846 /* rule 73 can match eol */
2847 YY_RULE_SETUP
2848 #line 515 "surf/surfxml.l"
2849 ENTER(VALUE2); BUFFERSET(A_surfxml_network_link_name);
2850         YY_BREAK
2851 case 74:
2852 /* rule 74 can match eol */
2853 YY_RULE_SETUP
2854 #line 517 "surf/surfxml.l"
2855 ENTER(VALUE1); BUFFERSET(A_surfxml_network_link_bandwidth);
2856         YY_BREAK
2857 case 75:
2858 /* rule 75 can match eol */
2859 YY_RULE_SETUP
2860 #line 518 "surf/surfxml.l"
2861 ENTER(VALUE2); BUFFERSET(A_surfxml_network_link_bandwidth);
2862         YY_BREAK
2863 case 76:
2864 /* rule 76 can match eol */
2865 YY_RULE_SETUP
2866 #line 520 "surf/surfxml.l"
2867 ENTER(VALUE1); BUFFERSET(A_surfxml_network_link_bandwidth_file);
2868         YY_BREAK
2869 case 77:
2870 /* rule 77 can match eol */
2871 YY_RULE_SETUP
2872 #line 521 "surf/surfxml.l"
2873 ENTER(VALUE2); BUFFERSET(A_surfxml_network_link_bandwidth_file);
2874         YY_BREAK
2875 case 78:
2876 /* rule 78 can match eol */
2877 YY_RULE_SETUP
2878 #line 523 "surf/surfxml.l"
2879 ENTER(VALUE1); BUFFERSET(A_surfxml_network_link_latency);
2880         YY_BREAK
2881 case 79:
2882 /* rule 79 can match eol */
2883 YY_RULE_SETUP
2884 #line 524 "surf/surfxml.l"
2885 ENTER(VALUE2); BUFFERSET(A_surfxml_network_link_latency);
2886         YY_BREAK
2887 case 80:
2888 /* rule 80 can match eol */
2889 YY_RULE_SETUP
2890 #line 526 "surf/surfxml.l"
2891 ENTER(VALUE1); BUFFERSET(A_surfxml_network_link_latency_file);
2892         YY_BREAK
2893 case 81:
2894 /* rule 81 can match eol */
2895 YY_RULE_SETUP
2896 #line 527 "surf/surfxml.l"
2897 ENTER(VALUE2); BUFFERSET(A_surfxml_network_link_latency_file);
2898         YY_BREAK
2899 case 82:
2900 /* rule 82 can match eol */
2901 #line 530 "surf/surfxml.l"
2902 case 83:
2903 /* rule 83 can match eol */
2904 YY_RULE_SETUP
2905 #line 530 "surf/surfxml.l"
2906 A_surfxml_network_link_state = A_surfxml_network_link_state_ON;
2907         YY_BREAK
2908 case 84:
2909 /* rule 84 can match eol */
2910 #line 532 "surf/surfxml.l"
2911 case 85:
2912 /* rule 85 can match eol */
2913 YY_RULE_SETUP
2914 #line 532 "surf/surfxml.l"
2915 A_surfxml_network_link_state = A_surfxml_network_link_state_OFF;
2916         YY_BREAK
2917 case 86:
2918 /* rule 86 can match eol */
2919 YY_RULE_SETUP
2920 #line 534 "surf/surfxml.l"
2921 ENTER(VALUE1); BUFFERSET(A_surfxml_network_link_state_file);
2922         YY_BREAK
2923 case 87:
2924 /* rule 87 can match eol */
2925 YY_RULE_SETUP
2926 #line 535 "surf/surfxml.l"
2927 ENTER(VALUE2); BUFFERSET(A_surfxml_network_link_state_file);
2928         YY_BREAK
2929 case 88:
2930 /* rule 88 can match eol */
2931 #line 538 "surf/surfxml.l"
2932 case 89:
2933 /* rule 89 can match eol */
2934 YY_RULE_SETUP
2935 #line 538 "surf/surfxml.l"
2936 A_surfxml_network_link_sharing_policy = A_surfxml_network_link_sharing_policy_SHARED;
2937         YY_BREAK
2938 case 90:
2939 /* rule 90 can match eol */
2940 #line 540 "surf/surfxml.l"
2941 case 91:
2942 /* rule 91 can match eol */
2943 YY_RULE_SETUP
2944 #line 540 "surf/surfxml.l"
2945 A_surfxml_network_link_sharing_policy = A_surfxml_network_link_sharing_policy_FATPIPE;
2946         YY_BREAK
2947 case 92:
2948 YY_RULE_SETUP
2949 #line 542 "surf/surfxml.l"
2950 {
2951   if (!A_surfxml_network_link_name) FAIL("Required attribute `name' not set for `network_link' element.");
2952   if (!A_surfxml_network_link_bandwidth) FAIL("Required attribute `bandwidth' not set for `network_link' element.");
2953   LEAVE; STag_surfxml_network_link();surfxml_pcdata = NULL; ENTER(E_surfxml_network_link);
2954  }
2955         YY_BREAK
2956 case 93:
2957 YY_RULE_SETUP
2958 #line 547 "surf/surfxml.l"
2959 {
2960   if (!A_surfxml_network_link_name) FAIL("Required attribute `name' not set for `network_link' element.");
2961   if (!A_surfxml_network_link_bandwidth) FAIL("Required attribute `bandwidth' not set for `network_link' element.");
2962   LEAVE; STag_surfxml_network_link(); surfxml_pcdata = NULL; ETag_surfxml_network_link();
2963   switch (YY_START) {
2964    case S_surfxml_platform_description_2: case S_surfxml_platform_description_1: case S_surfxml_platform_description: SET(S_surfxml_platform_description_2); break;
2965    case ROOT_surfxml_network_link: SET(EPILOG); break;
2966    case S_surfxml_include: case S_surfxml_include_2: case S_surfxml_include_1: SET(S_surfxml_include_2); break;
2967   }
2968  }
2969         YY_BREAK
2970 case 94:
2971 YY_RULE_SETUP
2972 #line 557 "surf/surfxml.l"
2973 FAIL("Unexpected character `%c' in attribute list of network_link element.", surf_parse_text[0]);
2974         YY_BREAK
2975 case 95:
2976 YY_RULE_SETUP
2977 #line 558 "surf/surfxml.l"
2978 FAIL("Bad attribute `%s' in `network_link' element start tag.",surf_parse_text);
2979         YY_BREAK
2980 case YY_STATE_EOF(AL_surfxml_network_link):
2981 #line 559 "surf/surfxml.l"
2982 FAIL("EOF in attribute list of `network_link' element.");
2983         YY_BREAK
2984
2985
2986 case 96:
2987 /* rule 96 can match eol */
2988 YY_RULE_SETUP
2989 #line 563 "surf/surfxml.l"
2990 {
2991   LEAVE;
2992   ETag_surfxml_network_link();
2993   switch (YY_START) {
2994    case S_surfxml_platform_description_2: case S_surfxml_platform_description_1: case S_surfxml_platform_description: SET(S_surfxml_platform_description_2); break;
2995    case ROOT_surfxml_network_link: SET(EPILOG); break;
2996    case S_surfxml_include: case S_surfxml_include_2: case S_surfxml_include_1: SET(S_surfxml_include_2); break;
2997   }
2998  }
2999         YY_BREAK
3000 case 97:
3001 /* rule 97 can match eol */
3002 YY_RULE_SETUP
3003 #line 572 "surf/surfxml.l"
3004 FAIL("Unexpected end-tag `%s': `</network_link>' expected.",surf_parse_text);
3005         YY_BREAK
3006 case 98:
3007 YY_RULE_SETUP
3008 #line 573 "surf/surfxml.l"
3009 FAIL("Unexpected character `%c': `</network_link>' expected.",surf_parse_text[0]);
3010         YY_BREAK
3011 case YY_STATE_EOF(E_surfxml_network_link):
3012 #line 574 "surf/surfxml.l"
3013 FAIL("Premature EOF: `</network_link>' expected.");
3014         YY_BREAK
3015
3016 case 99:
3017 /* rule 99 can match eol */
3018 YY_RULE_SETUP
3019 #line 577 "surf/surfxml.l"
3020 {
3021   A_surfxml_route_src = NULL;
3022   A_surfxml_route_dst = NULL;
3023   A_surfxml_route_impact_on_src = "0.0";
3024   A_surfxml_route_impact_on_dst = "0.0";
3025   A_surfxml_route_impact_on_src_with_other_recv = "0.0";
3026   A_surfxml_route_impact_on_dst_with_other_send = "0.0";
3027   ENTER(AL_surfxml_route);
3028   }
3029         YY_BREAK
3030
3031 case 100:
3032 /* rule 100 can match eol */
3033 YY_RULE_SETUP
3034 #line 588 "surf/surfxml.l"
3035 ENTER(VALUE1); BUFFERSET(A_surfxml_route_src);
3036         YY_BREAK
3037 case 101:
3038 /* rule 101 can match eol */
3039 YY_RULE_SETUP
3040 #line 589 "surf/surfxml.l"
3041 ENTER(VALUE2); BUFFERSET(A_surfxml_route_src);
3042         YY_BREAK
3043 case 102:
3044 /* rule 102 can match eol */
3045 YY_RULE_SETUP
3046 #line 591 "surf/surfxml.l"
3047 ENTER(VALUE1); BUFFERSET(A_surfxml_route_dst);
3048         YY_BREAK
3049 case 103:
3050 /* rule 103 can match eol */
3051 YY_RULE_SETUP
3052 #line 592 "surf/surfxml.l"
3053 ENTER(VALUE2); BUFFERSET(A_surfxml_route_dst);
3054         YY_BREAK
3055 case 104:
3056 /* rule 104 can match eol */
3057 YY_RULE_SETUP
3058 #line 594 "surf/surfxml.l"
3059 ENTER(VALUE1); BUFFERSET(A_surfxml_route_impact_on_src);
3060         YY_BREAK
3061 case 105:
3062 /* rule 105 can match eol */
3063 YY_RULE_SETUP
3064 #line 595 "surf/surfxml.l"
3065 ENTER(VALUE2); BUFFERSET(A_surfxml_route_impact_on_src);
3066         YY_BREAK
3067 case 106:
3068 /* rule 106 can match eol */
3069 YY_RULE_SETUP
3070 #line 597 "surf/surfxml.l"
3071 ENTER(VALUE1); BUFFERSET(A_surfxml_route_impact_on_dst);
3072         YY_BREAK
3073 case 107:
3074 /* rule 107 can match eol */
3075 YY_RULE_SETUP
3076 #line 598 "surf/surfxml.l"
3077 ENTER(VALUE2); BUFFERSET(A_surfxml_route_impact_on_dst);
3078         YY_BREAK
3079 case 108:
3080 /* rule 108 can match eol */
3081 YY_RULE_SETUP
3082 #line 600 "surf/surfxml.l"
3083 ENTER(VALUE1); BUFFERSET(A_surfxml_route_impact_on_src_with_other_recv);
3084         YY_BREAK
3085 case 109:
3086 /* rule 109 can match eol */
3087 YY_RULE_SETUP
3088 #line 601 "surf/surfxml.l"
3089 ENTER(VALUE2); BUFFERSET(A_surfxml_route_impact_on_src_with_other_recv);
3090         YY_BREAK
3091 case 110:
3092 /* rule 110 can match eol */
3093 YY_RULE_SETUP
3094 #line 603 "surf/surfxml.l"
3095 ENTER(VALUE1); BUFFERSET(A_surfxml_route_impact_on_dst_with_other_send);
3096         YY_BREAK
3097 case 111:
3098 /* rule 111 can match eol */
3099 YY_RULE_SETUP
3100 #line 604 "surf/surfxml.l"
3101 ENTER(VALUE2); BUFFERSET(A_surfxml_route_impact_on_dst_with_other_send);
3102         YY_BREAK
3103 case 112:
3104 YY_RULE_SETUP
3105 #line 606 "surf/surfxml.l"
3106 {
3107   if (!A_surfxml_route_src) FAIL("Required attribute `src' not set for `route' element.");
3108   if (!A_surfxml_route_dst) FAIL("Required attribute `dst' not set for `route' element.");
3109   LEAVE; STag_surfxml_route();surfxml_pcdata = NULL; ENTER(S_surfxml_route);
3110  }
3111         YY_BREAK
3112 case 113:
3113 YY_RULE_SETUP
3114 #line 611 "surf/surfxml.l"
3115 {
3116   if (!A_surfxml_route_src) FAIL("Required attribute `src' not set for `route' element.");
3117   if (!A_surfxml_route_dst) FAIL("Required attribute `dst' not set for `route' element.");
3118   LEAVE; STag_surfxml_route(); surfxml_pcdata = NULL; ETag_surfxml_route();
3119   switch (YY_START) {
3120    case S_surfxml_platform_description_2: case S_surfxml_platform_description_1: case S_surfxml_platform_description: SET(S_surfxml_platform_description_2); break;
3121    case ROOT_surfxml_route: SET(EPILOG); break;
3122    case S_surfxml_include: case S_surfxml_include_2: case S_surfxml_include_1: SET(S_surfxml_include_2); break;
3123   }
3124  }
3125         YY_BREAK
3126 case 114:
3127 YY_RULE_SETUP
3128 #line 621 "surf/surfxml.l"
3129 FAIL("Unexpected character `%c' in attribute list of route element.", surf_parse_text[0]);
3130         YY_BREAK
3131 case 115:
3132 YY_RULE_SETUP
3133 #line 622 "surf/surfxml.l"
3134 FAIL("Bad attribute `%s' in `route' element start tag.",surf_parse_text);
3135         YY_BREAK
3136 case YY_STATE_EOF(AL_surfxml_route):
3137 #line 623 "surf/surfxml.l"
3138 FAIL("EOF in attribute list of `route' element.");
3139         YY_BREAK
3140
3141
3142 case 116:
3143 /* rule 116 can match eol */
3144 YY_RULE_SETUP
3145 #line 627 "surf/surfxml.l"
3146 {
3147   LEAVE;
3148   ETag_surfxml_route();
3149   switch (YY_START) {
3150    case S_surfxml_platform_description_2: case S_surfxml_platform_description_1: case S_surfxml_platform_description: SET(S_surfxml_platform_description_2); break;
3151    case ROOT_surfxml_route: SET(EPILOG); break;
3152    case S_surfxml_include: case S_surfxml_include_2: case S_surfxml_include_1: SET(S_surfxml_include_2); break;
3153   }
3154  }
3155         YY_BREAK
3156 case 117:
3157 /* rule 117 can match eol */
3158 YY_RULE_SETUP
3159 #line 636 "surf/surfxml.l"
3160 FAIL("Unexpected end-tag `%s': `</route>' expected.",surf_parse_text);
3161         YY_BREAK
3162 case 118:
3163 YY_RULE_SETUP
3164 #line 637 "surf/surfxml.l"
3165 FAIL("Unexpected character `%c': `</route>' expected.",surf_parse_text[0]);
3166         YY_BREAK
3167 case YY_STATE_EOF(S_surfxml_route):
3168 case YY_STATE_EOF(S_surfxml_route_2):
3169 case YY_STATE_EOF(E_surfxml_route):
3170 #line 638 "surf/surfxml.l"
3171 FAIL("Premature EOF: `</route>' expected.");
3172         YY_BREAK
3173
3174 case 119:
3175 /* rule 119 can match eol */
3176 YY_RULE_SETUP
3177 #line 641 "surf/surfxml.l"
3178 {
3179   A_surfxml_route_element_name = NULL;
3180   ENTER(AL_surfxml_route_element);
3181   }
3182         YY_BREAK
3183
3184 case 120:
3185 /* rule 120 can match eol */
3186 YY_RULE_SETUP
3187 #line 647 "surf/surfxml.l"
3188 ENTER(VALUE1); BUFFERSET(A_surfxml_route_element_name);
3189         YY_BREAK
3190 case 121:
3191 /* rule 121 can match eol */
3192 YY_RULE_SETUP
3193 #line 648 "surf/surfxml.l"
3194 ENTER(VALUE2); BUFFERSET(A_surfxml_route_element_name);
3195         YY_BREAK
3196 case 122:
3197 YY_RULE_SETUP
3198 #line 650 "surf/surfxml.l"
3199 {
3200   if (!A_surfxml_route_element_name) FAIL("Required attribute `name' not set for `route_element' element.");
3201   LEAVE; STag_surfxml_route_element();surfxml_pcdata = NULL; ENTER(E_surfxml_route_element);
3202  }
3203         YY_BREAK
3204 case 123:
3205 YY_RULE_SETUP
3206 #line 654 "surf/surfxml.l"
3207 {
3208   if (!A_surfxml_route_element_name) FAIL("Required attribute `name' not set for `route_element' element.");
3209   LEAVE; STag_surfxml_route_element(); surfxml_pcdata = NULL; ETag_surfxml_route_element();
3210   switch (YY_START) {
3211    case S_surfxml_route_1: case S_surfxml_route: case S_surfxml_route_2: SET(S_surfxml_route_2); break;
3212    case ROOT_surfxml_route_element: SET(EPILOG); break;
3213   }
3214  }
3215         YY_BREAK
3216 case 124:
3217 YY_RULE_SETUP
3218 #line 662 "surf/surfxml.l"
3219 FAIL("Unexpected character `%c' in attribute list of route_element element.", surf_parse_text[0]);
3220         YY_BREAK
3221 case 125:
3222 YY_RULE_SETUP
3223 #line 663 "surf/surfxml.l"
3224 FAIL("Bad attribute `%s' in `route_element' element start tag.",surf_parse_text);
3225         YY_BREAK
3226 case YY_STATE_EOF(AL_surfxml_route_element):
3227 #line 664 "surf/surfxml.l"
3228 FAIL("EOF in attribute list of `route_element' element.");
3229         YY_BREAK
3230
3231
3232 case 126:
3233 /* rule 126 can match eol */
3234 YY_RULE_SETUP
3235 #line 668 "surf/surfxml.l"
3236 {
3237   LEAVE;
3238   ETag_surfxml_route_element();
3239   switch (YY_START) {
3240    case S_surfxml_route_1: case S_surfxml_route: case S_surfxml_route_2: SET(S_surfxml_route_2); break;
3241    case ROOT_surfxml_route_element: SET(EPILOG); break;
3242   }
3243  }
3244         YY_BREAK
3245 case 127:
3246 /* rule 127 can match eol */
3247 YY_RULE_SETUP
3248 #line 676 "surf/surfxml.l"
3249 FAIL("Unexpected end-tag `%s': `</route_element>' expected.",surf_parse_text);
3250         YY_BREAK
3251 case 128:
3252 YY_RULE_SETUP
3253 #line 677 "surf/surfxml.l"
3254 FAIL("Unexpected character `%c': `</route_element>' expected.",surf_parse_text[0]);
3255         YY_BREAK
3256 case YY_STATE_EOF(E_surfxml_route_element):
3257 #line 678 "surf/surfxml.l"
3258 FAIL("Premature EOF: `</route_element>' expected.");
3259         YY_BREAK
3260
3261 case 129:
3262 /* rule 129 can match eol */
3263 YY_RULE_SETUP
3264 #line 681 "surf/surfxml.l"
3265 {
3266   A_surfxml_process_host = NULL;
3267   A_surfxml_process_function = NULL;
3268   A_surfxml_process_start_time = "-1.0";
3269   A_surfxml_process_kill_time = "-1.0";
3270   ENTER(AL_surfxml_process);
3271   }
3272         YY_BREAK
3273
3274 case 130:
3275 /* rule 130 can match eol */
3276 YY_RULE_SETUP
3277 #line 690 "surf/surfxml.l"
3278 ENTER(VALUE1); BUFFERSET(A_surfxml_process_host);
3279         YY_BREAK
3280 case 131:
3281 /* rule 131 can match eol */
3282 YY_RULE_SETUP
3283 #line 691 "surf/surfxml.l"
3284 ENTER(VALUE2); BUFFERSET(A_surfxml_process_host);
3285         YY_BREAK
3286 case 132:
3287 /* rule 132 can match eol */
3288 YY_RULE_SETUP
3289 #line 693 "surf/surfxml.l"
3290 ENTER(VALUE1); BUFFERSET(A_surfxml_process_function);
3291         YY_BREAK
3292 case 133:
3293 /* rule 133 can match eol */
3294 YY_RULE_SETUP
3295 #line 694 "surf/surfxml.l"
3296 ENTER(VALUE2); BUFFERSET(A_surfxml_process_function);
3297         YY_BREAK
3298 case 134:
3299 /* rule 134 can match eol */
3300 YY_RULE_SETUP
3301 #line 696 "surf/surfxml.l"
3302 ENTER(VALUE1); BUFFERSET(A_surfxml_process_start_time);
3303         YY_BREAK
3304 case 135:
3305 /* rule 135 can match eol */
3306 YY_RULE_SETUP
3307 #line 697 "surf/surfxml.l"
3308 ENTER(VALUE2); BUFFERSET(A_surfxml_process_start_time);
3309         YY_BREAK
3310 case 136:
3311 /* rule 136 can match eol */
3312 YY_RULE_SETUP
3313 #line 699 "surf/surfxml.l"
3314 ENTER(VALUE1); BUFFERSET(A_surfxml_process_kill_time);
3315         YY_BREAK
3316 case 137:
3317 /* rule 137 can match eol */
3318 YY_RULE_SETUP
3319 #line 700 "surf/surfxml.l"
3320 ENTER(VALUE2); BUFFERSET(A_surfxml_process_kill_time);
3321         YY_BREAK
3322 case 138:
3323 YY_RULE_SETUP
3324 #line 702 "surf/surfxml.l"
3325 {
3326   if (!A_surfxml_process_host) FAIL("Required attribute `host' not set for `process' element.");
3327   if (!A_surfxml_process_function) FAIL("Required attribute `function' not set for `process' element.");
3328   LEAVE; STag_surfxml_process();surfxml_pcdata = NULL; ENTER(S_surfxml_process);
3329  }
3330         YY_BREAK
3331 case 139:
3332 YY_RULE_SETUP
3333 #line 707 "surf/surfxml.l"
3334 {
3335   if (!A_surfxml_process_host) FAIL("Required attribute `host' not set for `process' element.");
3336   if (!A_surfxml_process_function) FAIL("Required attribute `function' not set for `process' element.");
3337   LEAVE; STag_surfxml_process(); surfxml_pcdata = NULL; ETag_surfxml_process();
3338   switch (YY_START) {
3339    case S_surfxml_platform_description_2: case S_surfxml_platform_description_1: case S_surfxml_platform_description: SET(S_surfxml_platform_description_2); break;
3340    case ROOT_surfxml_process: SET(EPILOG); break;
3341    case S_surfxml_include: case S_surfxml_include_2: case S_surfxml_include_1: SET(S_surfxml_include_2); break;
3342   }
3343  }
3344         YY_BREAK
3345 case 140:
3346 YY_RULE_SETUP
3347 #line 717 "surf/surfxml.l"
3348 FAIL("Unexpected character `%c' in attribute list of process element.", surf_parse_text[0]);
3349         YY_BREAK
3350 case 141:
3351 YY_RULE_SETUP
3352 #line 718 "surf/surfxml.l"
3353 FAIL("Bad attribute `%s' in `process' element start tag.",surf_parse_text);
3354         YY_BREAK
3355 case YY_STATE_EOF(AL_surfxml_process):
3356 #line 719 "surf/surfxml.l"
3357 FAIL("EOF in attribute list of `process' element.");
3358         YY_BREAK
3359
3360
3361 case 142:
3362 /* rule 142 can match eol */
3363 YY_RULE_SETUP
3364 #line 723 "surf/surfxml.l"
3365 {
3366   LEAVE;
3367   ETag_surfxml_process();
3368   switch (YY_START) {
3369    case S_surfxml_platform_description_2: case S_surfxml_platform_description_1: case S_surfxml_platform_description: SET(S_surfxml_platform_description_2); break;
3370    case ROOT_surfxml_process: SET(EPILOG); break;
3371    case S_surfxml_include: case S_surfxml_include_2: case S_surfxml_include_1: SET(S_surfxml_include_2); break;
3372   }
3373  }
3374         YY_BREAK
3375 case 143:
3376 /* rule 143 can match eol */
3377 YY_RULE_SETUP
3378 #line 732 "surf/surfxml.l"
3379 FAIL("Unexpected end-tag `%s': `</process>' expected.",surf_parse_text);
3380         YY_BREAK
3381 case 144:
3382 YY_RULE_SETUP
3383 #line 733 "surf/surfxml.l"
3384 FAIL("Unexpected character `%c': `</process>' expected.",surf_parse_text[0]);
3385         YY_BREAK
3386 case YY_STATE_EOF(S_surfxml_process):
3387 case YY_STATE_EOF(E_surfxml_process):
3388 case YY_STATE_EOF(S_surfxml_process_2):
3389 #line 734 "surf/surfxml.l"
3390 FAIL("Premature EOF: `</process>' expected.");
3391         YY_BREAK
3392
3393 case 145:
3394 /* rule 145 can match eol */
3395 YY_RULE_SETUP
3396 #line 737 "surf/surfxml.l"
3397 {
3398   A_surfxml_argument_value = NULL;
3399   ENTER(AL_surfxml_argument);
3400   }
3401         YY_BREAK
3402
3403 case 146:
3404 /* rule 146 can match eol */
3405 YY_RULE_SETUP
3406 #line 743 "surf/surfxml.l"
3407 ENTER(VALUE1); BUFFERSET(A_surfxml_argument_value);
3408         YY_BREAK
3409 case 147:
3410 /* rule 147 can match eol */
3411 YY_RULE_SETUP
3412 #line 744 "surf/surfxml.l"
3413 ENTER(VALUE2); BUFFERSET(A_surfxml_argument_value);
3414         YY_BREAK
3415 case 148:
3416 YY_RULE_SETUP
3417 #line 746 "surf/surfxml.l"
3418 {
3419   if (!A_surfxml_argument_value) FAIL("Required attribute `value' not set for `argument' element.");
3420   LEAVE; STag_surfxml_argument();surfxml_pcdata = NULL; ENTER(E_surfxml_argument);
3421  }
3422         YY_BREAK
3423 case 149:
3424 YY_RULE_SETUP
3425 #line 750 "surf/surfxml.l"
3426 {
3427   if (!A_surfxml_argument_value) FAIL("Required attribute `value' not set for `argument' element.");
3428   LEAVE; STag_surfxml_argument(); surfxml_pcdata = NULL; ETag_surfxml_argument();
3429   switch (YY_START) {
3430    case S_surfxml_process_1: case S_surfxml_process: case S_surfxml_process_2: SET(S_surfxml_process_2); break;
3431    case ROOT_surfxml_argument: SET(EPILOG); break;
3432   }
3433  }
3434         YY_BREAK
3435 case 150:
3436 YY_RULE_SETUP
3437 #line 758 "surf/surfxml.l"
3438 FAIL("Unexpected character `%c' in attribute list of argument element.", surf_parse_text[0]);
3439         YY_BREAK
3440 case 151:
3441 YY_RULE_SETUP
3442 #line 759 "surf/surfxml.l"
3443 FAIL("Bad attribute `%s' in `argument' element start tag.",surf_parse_text);
3444         YY_BREAK
3445 case YY_STATE_EOF(AL_surfxml_argument):
3446 #line 760 "surf/surfxml.l"
3447 FAIL("EOF in attribute list of `argument' element.");
3448         YY_BREAK
3449
3450
3451 case 152:
3452 /* rule 152 can match eol */
3453 YY_RULE_SETUP
3454 #line 764 "surf/surfxml.l"
3455 {
3456   LEAVE;
3457   ETag_surfxml_argument();
3458   switch (YY_START) {
3459    case S_surfxml_process_1: case S_surfxml_process: case S_surfxml_process_2: SET(S_surfxml_process_2); break;
3460    case ROOT_surfxml_argument: SET(EPILOG); break;
3461   }
3462  }
3463         YY_BREAK
3464 case 153:
3465 /* rule 153 can match eol */
3466 YY_RULE_SETUP
3467 #line 772 "surf/surfxml.l"
3468 FAIL("Unexpected end-tag `%s': `</argument>' expected.",surf_parse_text);
3469         YY_BREAK
3470 case 154:
3471 YY_RULE_SETUP
3472 #line 773 "surf/surfxml.l"
3473 FAIL("Unexpected character `%c': `</argument>' expected.",surf_parse_text[0]);
3474         YY_BREAK
3475 case YY_STATE_EOF(E_surfxml_argument):
3476 #line 774 "surf/surfxml.l"
3477 FAIL("Premature EOF: `</argument>' expected.");
3478         YY_BREAK
3479
3480 /* EPILOG: after the root element. */
3481
3482 case 155:
3483 YY_RULE_SETUP
3484 #line 780 "surf/surfxml.l"
3485 {SET(PROLOG); yyless(0); CLEANUP; return -1;}
3486         YY_BREAK
3487 case YY_STATE_EOF(EPILOG):
3488 #line 781 "surf/surfxml.l"
3489 SUCCEED;
3490         YY_BREAK
3491
3492 /* CHARACTER DATA. */
3493
3494 /* Non-defined standard entities... */
3495 case 156:
3496 YY_RULE_SETUP
3497 #line 788 "surf/surfxml.l"
3498 BUFFERPUTC('&');
3499         YY_BREAK
3500 case 157:
3501 YY_RULE_SETUP
3502 #line 789 "surf/surfxml.l"
3503 BUFFERPUTC('<');
3504         YY_BREAK
3505 case 158:
3506 YY_RULE_SETUP
3507 #line 790 "surf/surfxml.l"
3508 BUFFERPUTC('>');
3509         YY_BREAK
3510 case 159:
3511 YY_RULE_SETUP
3512 #line 791 "surf/surfxml.l"
3513 BUFFERPUTC('\'');
3514         YY_BREAK
3515 case 160:
3516 YY_RULE_SETUP
3517 #line 792 "surf/surfxml.l"
3518 BUFFERPUTC('"');
3519         YY_BREAK
3520 /* Character entities. */
3521 case 161:
3522 YY_RULE_SETUP
3523 #line 795 "surf/surfxml.l"
3524 BUFFERPUTC((unsigned char)atoi(surf_parse_text+2));
3525         YY_BREAK
3526 case 162:
3527 YY_RULE_SETUP
3528 #line 796 "surf/surfxml.l"
3529 BUFFERPUTC((unsigned char)strtol(surf_parse_text+3,NULL,16));
3530         YY_BREAK
3531
3532
3533 case 163:
3534 /* rule 163 can match eol */
3535 #line 801 "surf/surfxml.l"
3536 case 164:
3537 /* rule 164 can match eol */
3538 #line 802 "surf/surfxml.l"
3539 case 165:
3540 /* rule 165 can match eol */
3541 #line 803 "surf/surfxml.l"
3542 case 166:
3543 /* rule 166 can match eol */
3544 YY_RULE_SETUP
3545 #line 803 "surf/surfxml.l"
3546 BUFFERPUTC('\n');
3547         YY_BREAK
3548
3549
3550 case 167:
3551 YY_RULE_SETUP
3552 #line 807 "surf/surfxml.l"
3553 ENTER(CDATA);
3554         YY_BREAK
3555 case 168:
3556 YY_RULE_SETUP
3557 #line 808 "surf/surfxml.l"
3558 FAIL("Unexpected `]""]>' in character data.");
3559         YY_BREAK
3560
3561
3562 case 169:
3563 YY_RULE_SETUP
3564 #line 812 "surf/surfxml.l"
3565 BUFFERDONE; LEAVE;
3566         YY_BREAK
3567 case YY_STATE_EOF(VALUE1):
3568 #line 813 "surf/surfxml.l"
3569 FAIL("EOF in literal (\"'\" expected).");
3570         YY_BREAK
3571
3572
3573 case 170:
3574 YY_RULE_SETUP
3575 #line 817 "surf/surfxml.l"
3576 BUFFERDONE; LEAVE;
3577         YY_BREAK
3578 case YY_STATE_EOF(VALUE2):
3579 #line 818 "surf/surfxml.l"
3580 FAIL("EOF in literal (`\"' expected).");
3581         YY_BREAK
3582
3583
3584 case 171:
3585 /* rule 171 can match eol */
3586 YY_RULE_SETUP
3587 #line 822 "surf/surfxml.l"
3588 BUFFERPUTC(surf_parse_text[0]);
3589         YY_BREAK
3590 case 172:
3591 YY_RULE_SETUP
3592 #line 823 "surf/surfxml.l"
3593 FAIL("Spurious `%c' in character data.",surf_parse_text[0]);
3594         YY_BREAK
3595
3596
3597 case 173:
3598 YY_RULE_SETUP
3599 #line 827 "surf/surfxml.l"
3600 LEAVE;
3601         YY_BREAK
3602 /* "]""]"               BUFFERPUTC(surf_parse_text[0]); BUFFERPUTC(surf_parse_text[1]); */
3603 case 174:
3604 YY_RULE_SETUP
3605 #line 829 "surf/surfxml.l"
3606 BUFFERPUTC(surf_parse_text[0]);
3607         YY_BREAK
3608 case YY_STATE_EOF(CDATA):
3609 #line 830 "surf/surfxml.l"
3610 FAIL("EOF in CDATA section.");
3611         YY_BREAK
3612
3613 /* Impossible rules to avoid warnings from flex(1). */
3614 /* Ideally, this should be replaced by code in flexml.pl that
3615     generates just the states not covered by other rules. */
3616
3617 case 175:
3618 /* rule 175 can match eol */
3619 YY_RULE_SETUP
3620 #line 837 "surf/surfxml.l"
3621 FAIL("Syntax error on character `%c'.", surf_parse_text[0]);
3622         YY_BREAK
3623
3624 case 176:
3625 YY_RULE_SETUP
3626 #line 840 "surf/surfxml.l"
3627 ECHO;
3628         YY_BREAK
3629 #line 3630 "surf/surfxml.c"
3630 case YY_STATE_EOF(INITIAL):
3631 case YY_STATE_EOF(ROOT_surfxml_platform_description):
3632 case YY_STATE_EOF(S_surfxml_platform_description_1):
3633 case YY_STATE_EOF(ROOT_surfxml_include):
3634 case YY_STATE_EOF(S_surfxml_include_1):
3635 case YY_STATE_EOF(ROOT_surfxml_cpu):
3636 case YY_STATE_EOF(ROOT_surfxml_network_link):
3637 case YY_STATE_EOF(ROOT_surfxml_route):
3638 case YY_STATE_EOF(S_surfxml_route_1):
3639 case YY_STATE_EOF(ROOT_surfxml_route_element):
3640 case YY_STATE_EOF(ROOT_surfxml_process):
3641 case YY_STATE_EOF(S_surfxml_process_1):
3642 case YY_STATE_EOF(ROOT_surfxml_argument):
3643 case YY_STATE_EOF(IMPOSSIBLE):
3644         yyterminate();
3645
3646         case YY_END_OF_BUFFER:
3647                 {
3648                 /* Amount of text matched not including the EOB char. */
3649                 int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
3650
3651                 /* Undo the effects of YY_DO_BEFORE_ACTION. */
3652                 *yy_cp = (yy_hold_char);
3653                 YY_RESTORE_YY_MORE_OFFSET
3654
3655                 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
3656                         {
3657                         /* We're scanning a new file or input source.  It's
3658                          * possible that this happened because the user
3659                          * just pointed surf_parse_in at a new source and called
3660                          * surf_parse_lex().  If so, then we have to assure
3661                          * consistency between YY_CURRENT_BUFFER and our
3662                          * globals.  Here is the right place to do so, because
3663                          * this is the first action (other than possibly a
3664                          * back-up) that will match for the new input source.
3665                          */
3666                         (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
3667                         YY_CURRENT_BUFFER_LVALUE->yy_input_file = surf_parse_in;
3668                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
3669                         }
3670
3671                 /* Note that here we test for yy_c_buf_p "<=" to the position
3672                  * of the first EOB in the buffer, since yy_c_buf_p will
3673                  * already have been incremented past the NUL character
3674                  * (since all states make transitions on EOB to the
3675                  * end-of-buffer state).  Contrast this with the test
3676                  * in input().
3677                  */
3678                 if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
3679                         { /* This was really a NUL. */
3680                         yy_state_type yy_next_state;
3681
3682                         (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
3683
3684                         yy_current_state = yy_get_previous_state(  );
3685
3686                         /* Okay, we're now positioned to make the NUL
3687                          * transition.  We couldn't have
3688                          * yy_get_previous_state() go ahead and do it
3689                          * for us because it doesn't know how to deal
3690                          * with the possibility of jamming (and we don't
3691                          * want to build jamming into it because then it
3692                          * will run more slowly).
3693                          */
3694
3695                         yy_next_state = yy_try_NUL_trans( yy_current_state );
3696
3697                         yy_bp = (yytext_ptr) + YY_MORE_ADJ;
3698
3699                         if ( yy_next_state )
3700                                 {
3701                                 /* Consume the NUL. */
3702                                 yy_cp = ++(yy_c_buf_p);
3703                                 yy_current_state = yy_next_state;
3704                                 goto yy_match;
3705                                 }
3706
3707                         else
3708                                 {
3709                                 yy_cp = (yy_c_buf_p);
3710                                 goto yy_find_action;
3711                                 }
3712                         }
3713
3714                 else switch ( yy_get_next_buffer(  ) )
3715                         {
3716                         case EOB_ACT_END_OF_FILE:
3717                                 {
3718                                 (yy_did_buffer_switch_on_eof) = 0;
3719
3720                                 if ( surf_parse_wrap( ) )
3721                                         {
3722                                         /* Note: because we've taken care in
3723                                          * yy_get_next_buffer() to have set up
3724                                          * surf_parse_text, we can now set up
3725                                          * yy_c_buf_p so that if some total
3726                                          * hoser (like flex itself) wants to
3727                                          * call the scanner after we return the
3728                                          * YY_NULL, it'll still work - another
3729                                          * YY_NULL will get returned.
3730                                          */
3731                                         (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
3732
3733                                         yy_act = YY_STATE_EOF(YY_START);
3734                                         goto do_action;
3735                                         }
3736
3737                                 else
3738                                         {
3739                                         if ( ! (yy_did_buffer_switch_on_eof) )
3740                                                 YY_NEW_FILE;
3741                                         }
3742                                 break;
3743                                 }
3744
3745                         case EOB_ACT_CONTINUE_SCAN:
3746                                 (yy_c_buf_p) =
3747                                         (yytext_ptr) + yy_amount_of_matched_text;
3748
3749                                 yy_current_state = yy_get_previous_state(  );
3750
3751                                 yy_cp = (yy_c_buf_p);
3752                                 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
3753                                 goto yy_match;
3754
3755                         case EOB_ACT_LAST_MATCH:
3756                                 (yy_c_buf_p) =
3757                                 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
3758
3759                                 yy_current_state = yy_get_previous_state(  );
3760
3761                                 yy_cp = (yy_c_buf_p);
3762                                 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
3763                                 goto yy_find_action;
3764                         }
3765                 break;
3766                 }
3767
3768         default:
3769                 YY_FATAL_ERROR(
3770                         "fatal flex scanner internal error--no action found" );
3771         } /* end of action switch */
3772                 } /* end of scanning one token */
3773 } /* end of surf_parse_lex */
3774
3775 /* yy_get_next_buffer - try to read in a new buffer
3776  *
3777  * Returns a code representing an action:
3778  *      EOB_ACT_LAST_MATCH -
3779  *      EOB_ACT_CONTINUE_SCAN - continue scanning from current position
3780  *      EOB_ACT_END_OF_FILE - end of file
3781  */
3782 static int yy_get_next_buffer (void)
3783 {
3784         register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
3785         register char *source = (yytext_ptr);
3786         register int number_to_move, i;
3787         int ret_val;
3788
3789         if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
3790                 YY_FATAL_ERROR(
3791                 "fatal flex scanner internal error--end of buffer missed" );
3792
3793         if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
3794                 { /* Don't try to fill the buffer, so this is an EOF. */
3795                 if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
3796                         {
3797                         /* We matched a single character, the EOB, so
3798                          * treat this as a final EOF.
3799                          */
3800                         return EOB_ACT_END_OF_FILE;
3801                         }
3802
3803                 else
3804                         {
3805                         /* We matched some text prior to the EOB, first
3806                          * process it.
3807                          */
3808                         return EOB_ACT_LAST_MATCH;
3809                         }
3810                 }
3811
3812         /* Try to read more data. */
3813
3814         /* First move last chars to start of buffer. */
3815         number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
3816
3817         for ( i = 0; i < number_to_move; ++i )
3818                 *(dest++) = *(source++);
3819
3820         if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
3821                 /* don't do the read, it's not guaranteed to return an EOF,
3822                  * just force an EOF
3823                  */
3824                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
3825
3826         else
3827                 {
3828                         size_t num_to_read =
3829                         YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
3830
3831                 while ( num_to_read <= 0 )
3832                         { /* Not enough room in the buffer - grow it. */
3833
3834                         /* just a shorter name for the current buffer */
3835                         YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
3836
3837                         int yy_c_buf_p_offset =
3838                                 (int) ((yy_c_buf_p) - b->yy_ch_buf);
3839
3840                         if ( b->yy_is_our_buffer )
3841                                 {
3842                                 int new_size = b->yy_buf_size * 2;
3843
3844                                 if ( new_size <= 0 )
3845                                         b->yy_buf_size += b->yy_buf_size / 8;
3846                                 else
3847                                         b->yy_buf_size *= 2;
3848
3849                                 b->yy_ch_buf = (char *)
3850                                         /* Include room in for 2 EOB chars. */
3851                                         surf_parse_realloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
3852                                 }
3853                         else
3854                                 /* Can't grow it, we don't own it. */
3855                                 b->yy_ch_buf = 0;
3856
3857                         if ( ! b->yy_ch_buf )
3858                                 YY_FATAL_ERROR(
3859                                 "fatal error - scanner input buffer overflow" );
3860
3861                         (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
3862
3863                         num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
3864                                                 number_to_move - 1;
3865
3866                         }
3867
3868                 if ( num_to_read > YY_READ_BUF_SIZE )
3869                         num_to_read = YY_READ_BUF_SIZE;
3870
3871                 /* Read in more data. */
3872                 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
3873                         (yy_n_chars), num_to_read );
3874
3875                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
3876                 }
3877
3878         if ( (yy_n_chars) == 0 )
3879                 {
3880                 if ( number_to_move == YY_MORE_ADJ )
3881                         {
3882                         ret_val = EOB_ACT_END_OF_FILE;
3883                         surf_parse_restart(surf_parse_in  );
3884                         }
3885
3886                 else
3887                         {
3888                         ret_val = EOB_ACT_LAST_MATCH;
3889                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
3890                                 YY_BUFFER_EOF_PENDING;
3891                         }
3892                 }
3893
3894         else
3895                 ret_val = EOB_ACT_CONTINUE_SCAN;
3896
3897         (yy_n_chars) += number_to_move;
3898         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
3899         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
3900
3901         (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
3902
3903         return ret_val;
3904 }
3905
3906 /* yy_get_previous_state - get the state just before the EOB char was reached */
3907
3908     static yy_state_type yy_get_previous_state (void)
3909 {
3910         register yy_state_type yy_current_state;
3911         register char *yy_cp;
3912     
3913         yy_current_state = (yy_start);
3914
3915         for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
3916                 {
3917                 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
3918                 if ( yy_accept[yy_current_state] )
3919                         {
3920                         (yy_last_accepting_state) = yy_current_state;
3921                         (yy_last_accepting_cpos) = yy_cp;
3922                         }
3923                 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
3924                         {
3925                         yy_current_state = (int) yy_def[yy_current_state];
3926                         if ( yy_current_state >= 1333 )
3927                                 yy_c = yy_meta[(unsigned int) yy_c];
3928                         }
3929                 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
3930                 }
3931
3932         return yy_current_state;
3933 }
3934
3935 /* yy_try_NUL_trans - try to make a transition on the NUL character
3936  *
3937  * synopsis
3938  *      next_state = yy_try_NUL_trans( current_state );
3939  */
3940     static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
3941 {
3942         register int yy_is_jam;
3943         register char *yy_cp = (yy_c_buf_p);
3944
3945         register YY_CHAR yy_c = 1;
3946         if ( yy_accept[yy_current_state] )
3947                 {
3948                 (yy_last_accepting_state) = yy_current_state;
3949                 (yy_last_accepting_cpos) = yy_cp;
3950                 }
3951         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
3952                 {
3953                 yy_current_state = (int) yy_def[yy_current_state];
3954                 if ( yy_current_state >= 1333 )
3955                         yy_c = yy_meta[(unsigned int) yy_c];
3956                 }
3957         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
3958         yy_is_jam = (yy_current_state == 1332);
3959
3960         return yy_is_jam ? 0 : yy_current_state;
3961 }
3962
3963 #ifndef YY_NO_INPUT
3964 #ifdef __cplusplus
3965     static int yyinput (void)
3966 #else
3967     static int input  (void)
3968 #endif
3969
3970 {
3971         int c;
3972     
3973         *(yy_c_buf_p) = (yy_hold_char);
3974
3975         if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
3976                 {
3977                 /* yy_c_buf_p now points to the character we want to return.
3978                  * If this occurs *before* the EOB characters, then it's a
3979                  * valid NUL; if not, then we've hit the end of the buffer.
3980                  */
3981                 if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
3982                         /* This was really a NUL. */
3983                         *(yy_c_buf_p) = '\0';
3984
3985                 else
3986                         { /* need more input */
3987                         int offset = (yy_c_buf_p) - (yytext_ptr);
3988                         ++(yy_c_buf_p);
3989
3990                         switch ( yy_get_next_buffer(  ) )
3991                                 {
3992                                 case EOB_ACT_LAST_MATCH:
3993                                         /* This happens because yy_g_n_b()
3994                                          * sees that we've accumulated a
3995                                          * token and flags that we need to
3996                                          * try matching the token before
3997                                          * proceeding.  But for input(),
3998                                          * there's no matching to consider.
3999                                          * So convert the EOB_ACT_LAST_MATCH
4000                                          * to EOB_ACT_END_OF_FILE.
4001                                          */
4002
4003                                         /* Reset buffer status. */
4004                                         surf_parse_restart(surf_parse_in );
4005
4006                                         /*FALLTHROUGH*/
4007
4008                                 case EOB_ACT_END_OF_FILE:
4009                                         {
4010                                         if ( surf_parse_wrap( ) )
4011                                                 return EOF;
4012
4013                                         if ( ! (yy_did_buffer_switch_on_eof) )
4014                                                 YY_NEW_FILE;
4015 #ifdef __cplusplus
4016                                         return yyinput();
4017 #else
4018                                         return input();
4019 #endif
4020                                         }
4021
4022                                 case EOB_ACT_CONTINUE_SCAN:
4023                                         (yy_c_buf_p) = (yytext_ptr) + offset;
4024                                         break;
4025                                 }
4026                         }
4027                 }
4028
4029         c = *(unsigned char *) (yy_c_buf_p);    /* cast for 8-bit char's */
4030         *(yy_c_buf_p) = '\0';   /* preserve surf_parse_text */
4031         (yy_hold_char) = *++(yy_c_buf_p);
4032
4033         if ( c == '\n' )
4034                    
4035     surf_parse_lineno++;
4036 ;
4037
4038         return c;
4039 }
4040 #endif  /* ifndef YY_NO_INPUT */
4041
4042 /** Immediately switch to a different input stream.
4043  * @param input_file A readable stream.
4044  * 
4045  * @note This function does not reset the start condition to @c INITIAL .
4046  */
4047     void surf_parse_restart  (FILE * input_file )
4048 {
4049     
4050         if ( ! YY_CURRENT_BUFFER ){
4051         surf_parse_ensure_buffer_stack ();
4052                 YY_CURRENT_BUFFER_LVALUE =
4053             surf_parse__create_buffer(surf_parse_in,YY_BUF_SIZE );
4054         }
4055
4056         surf_parse__init_buffer(YY_CURRENT_BUFFER,input_file );
4057         surf_parse__load_buffer_state( );
4058 }
4059
4060 /** Switch to a different input buffer.
4061  * @param new_buffer The new input buffer.
4062  * 
4063  */
4064     void surf_parse__switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
4065 {
4066     
4067         /* TODO. We should be able to replace this entire function body
4068          * with
4069          *              surf_parse_pop_buffer_state();
4070          *              surf_parse_push_buffer_state(new_buffer);
4071      */
4072         surf_parse_ensure_buffer_stack ();
4073         if ( YY_CURRENT_BUFFER == new_buffer )
4074                 return;
4075
4076         if ( YY_CURRENT_BUFFER )
4077                 {
4078                 /* Flush out information for old buffer. */
4079                 *(yy_c_buf_p) = (yy_hold_char);
4080                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
4081                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
4082                 }
4083
4084         YY_CURRENT_BUFFER_LVALUE = new_buffer;
4085         surf_parse__load_buffer_state( );
4086
4087         /* We don't actually know whether we did this switch during
4088          * EOF (surf_parse_wrap()) processing, but the only time this flag
4089          * is looked at is after surf_parse_wrap() is called, so it's safe
4090          * to go ahead and always set it.
4091          */
4092         (yy_did_buffer_switch_on_eof) = 1;
4093 }
4094
4095 static void surf_parse__load_buffer_state  (void)
4096 {
4097         (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
4098         (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
4099         surf_parse_in = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
4100         (yy_hold_char) = *(yy_c_buf_p);
4101 }
4102
4103 /** Allocate and initialize an input buffer state.
4104  * @param file A readable stream.
4105  * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
4106  * 
4107  * @return the allocated buffer state.
4108  */
4109     YY_BUFFER_STATE surf_parse__create_buffer  (FILE * file, int  size )
4110 {
4111         YY_BUFFER_STATE b;
4112     
4113         b = (YY_BUFFER_STATE) surf_parse_alloc(sizeof( struct yy_buffer_state )  );
4114         if ( ! b )
4115                 YY_FATAL_ERROR( "out of dynamic memory in surf_parse__create_buffer()" );
4116
4117         b->yy_buf_size = size;
4118
4119         /* yy_ch_buf has to be 2 characters longer than the size given because
4120          * we need to put in 2 end-of-buffer characters.
4121          */
4122         b->yy_ch_buf = (char *) surf_parse_alloc(b->yy_buf_size + 2  );
4123         if ( ! b->yy_ch_buf )
4124                 YY_FATAL_ERROR( "out of dynamic memory in surf_parse__create_buffer()" );
4125
4126         b->yy_is_our_buffer = 1;
4127
4128         surf_parse__init_buffer(b,file );
4129
4130         return b;
4131 }
4132
4133 /** Destroy the buffer.
4134  * @param b a buffer created with surf_parse__create_buffer()
4135  * 
4136  */
4137     void surf_parse__delete_buffer (YY_BUFFER_STATE  b )
4138 {
4139     
4140         if ( ! b )
4141                 return;
4142
4143         if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
4144                 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
4145
4146         if ( b->yy_is_our_buffer )
4147                 surf_parse_free((void *) b->yy_ch_buf  );
4148
4149         surf_parse_free((void *) b  );
4150 }
4151
4152 #ifndef __cplusplus
4153 extern int isatty (int );
4154 #endif /* __cplusplus */
4155     
4156 /* Initializes or reinitializes a buffer.
4157  * This function is sometimes called more than once on the same buffer,
4158  * such as during a surf_parse_restart() or at EOF.
4159  */
4160     static void surf_parse__init_buffer  (YY_BUFFER_STATE  b, FILE * file )
4161
4162 {
4163         int oerrno = errno;
4164     
4165         surf_parse__flush_buffer(b );
4166
4167         b->yy_input_file = file;
4168         b->yy_fill_buffer = 1;
4169
4170     /* If b is the current buffer, then surf_parse__init_buffer was _probably_
4171      * called from surf_parse_restart() or through yy_get_next_buffer.
4172      * In that case, we don't want to reset the lineno or column.
4173      */
4174     if (b != YY_CURRENT_BUFFER){
4175         b->yy_bs_lineno = 1;
4176         b->yy_bs_column = 0;
4177     }
4178
4179         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
4180     
4181         errno = oerrno;
4182 }
4183
4184 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
4185  * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
4186  * 
4187  */
4188     void surf_parse__flush_buffer (YY_BUFFER_STATE  b )
4189 {
4190         if ( ! b )
4191                 return;
4192
4193         b->yy_n_chars = 0;
4194
4195         /* We always need two end-of-buffer characters.  The first causes
4196          * a transition to the end-of-buffer state.  The second causes
4197          * a jam in that state.
4198          */
4199         b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
4200         b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
4201
4202         b->yy_buf_pos = &b->yy_ch_buf[0];
4203
4204         b->yy_at_bol = 1;
4205         b->yy_buffer_status = YY_BUFFER_NEW;
4206
4207         if ( b == YY_CURRENT_BUFFER )
4208                 surf_parse__load_buffer_state( );
4209 }
4210
4211 /** Pushes the new state onto the stack. The new state becomes
4212  *  the current state. This function will allocate the stack
4213  *  if necessary.
4214  *  @param new_buffer The new state.
4215  *  
4216  */
4217 void surf_parse_push_buffer_state (YY_BUFFER_STATE new_buffer )
4218 {
4219         if (new_buffer == NULL)
4220                 return;
4221
4222         surf_parse_ensure_buffer_stack();
4223
4224         /* This block is copied from surf_parse__switch_to_buffer. */
4225         if ( YY_CURRENT_BUFFER )
4226                 {
4227                 /* Flush out information for old buffer. */
4228                 *(yy_c_buf_p) = (yy_hold_char);
4229                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
4230                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
4231                 }
4232
4233         /* Only push if top exists. Otherwise, replace top. */
4234         if (YY_CURRENT_BUFFER)
4235                 (yy_buffer_stack_top)++;
4236         YY_CURRENT_BUFFER_LVALUE = new_buffer;
4237
4238         /* copied from surf_parse__switch_to_buffer. */
4239         surf_parse__load_buffer_state( );
4240         (yy_did_buffer_switch_on_eof) = 1;
4241 }
4242
4243 /** Removes and deletes the top of the stack, if present.
4244  *  The next element becomes the new top.
4245  *  
4246  */
4247 void surf_parse_pop_buffer_state (void)
4248 {
4249         if (!YY_CURRENT_BUFFER)
4250                 return;
4251
4252         surf_parse__delete_buffer(YY_CURRENT_BUFFER );
4253         YY_CURRENT_BUFFER_LVALUE = NULL;
4254         if ((yy_buffer_stack_top) > 0)
4255                 --(yy_buffer_stack_top);
4256
4257         if (YY_CURRENT_BUFFER) {
4258                 surf_parse__load_buffer_state( );
4259                 (yy_did_buffer_switch_on_eof) = 1;
4260         }
4261 }
4262
4263 /* Allocates the stack if it does not exist.
4264  *  Guarantees space for at least one push.
4265  */
4266 static void surf_parse_ensure_buffer_stack (void)
4267 {
4268         int num_to_alloc;
4269     
4270         if (!(yy_buffer_stack)) {
4271
4272                 /* First allocation is just for 2 elements, since we don't know if this
4273                  * scanner will even need a stack. We use 2 instead of 1 to avoid an
4274                  * immediate realloc on the next call.
4275          */
4276                 num_to_alloc = 1;
4277                 (yy_buffer_stack) = (struct yy_buffer_state**)surf_parse_alloc
4278                                                                 (num_to_alloc * sizeof(struct yy_buffer_state*)
4279                                                                 );
4280                 
4281                 memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
4282                                 
4283                 (yy_buffer_stack_max) = num_to_alloc;
4284                 (yy_buffer_stack_top) = 0;
4285                 return;
4286         }
4287
4288         if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
4289
4290                 /* Increase the buffer to prepare for a possible push. */
4291                 int grow_size = 8 /* arbitrary grow size */;
4292
4293                 num_to_alloc = (yy_buffer_stack_max) + grow_size;
4294                 (yy_buffer_stack) = (struct yy_buffer_state**)surf_parse_realloc
4295                                                                 ((yy_buffer_stack),
4296                                                                 num_to_alloc * sizeof(struct yy_buffer_state*)
4297                                                                 );
4298
4299                 /* zero only the new slots.*/
4300                 memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
4301                 (yy_buffer_stack_max) = num_to_alloc;
4302         }
4303 }
4304
4305 /** Setup the input buffer state to scan directly from a user-specified character buffer.
4306  * @param base the character buffer
4307  * @param size the size in bytes of the character buffer
4308  * 
4309  * @return the newly allocated buffer state object. 
4310  */
4311 YY_BUFFER_STATE surf_parse__scan_buffer  (char * base, yy_size_t  size )
4312 {
4313         YY_BUFFER_STATE b;
4314     
4315         if ( size < 2 ||
4316              base[size-2] != YY_END_OF_BUFFER_CHAR ||
4317              base[size-1] != YY_END_OF_BUFFER_CHAR )
4318                 /* They forgot to leave room for the EOB's. */
4319                 return 0;
4320
4321         b = (YY_BUFFER_STATE) surf_parse_alloc(sizeof( struct yy_buffer_state )  );
4322         if ( ! b )
4323                 YY_FATAL_ERROR( "out of dynamic memory in surf_parse__scan_buffer()" );
4324
4325         b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
4326         b->yy_buf_pos = b->yy_ch_buf = base;
4327         b->yy_is_our_buffer = 0;
4328         b->yy_input_file = 0;
4329         b->yy_n_chars = b->yy_buf_size;
4330         b->yy_is_interactive = 0;
4331         b->yy_at_bol = 1;
4332         b->yy_fill_buffer = 0;
4333         b->yy_buffer_status = YY_BUFFER_NEW;
4334
4335         surf_parse__switch_to_buffer(b  );
4336
4337         return b;
4338 }
4339
4340 /** Setup the input buffer state to scan a string. The next call to surf_parse_lex() will
4341  * scan from a @e copy of @a str.
4342  * @param str a NUL-terminated string to scan
4343  * 
4344  * @return the newly allocated buffer state object.
4345  * @note If you want to scan bytes that may contain NUL values, then use
4346  *       surf_parse__scan_bytes() instead.
4347  */
4348 YY_BUFFER_STATE surf_parse__scan_string (yyconst char * yy_str )
4349 {
4350     
4351         return surf_parse__scan_bytes(yy_str,strlen(yy_str) );
4352 }
4353
4354 /** Setup the input buffer state to scan the given bytes. The next call to surf_parse_lex() will
4355  * scan from a @e copy of @a bytes.
4356  * @param bytes the byte buffer to scan
4357  * @param len the number of bytes in the buffer pointed to by @a bytes.
4358  * 
4359  * @return the newly allocated buffer state object.
4360  */
4361 YY_BUFFER_STATE surf_parse__scan_bytes  (yyconst char * bytes, int  len )
4362 {
4363         YY_BUFFER_STATE b;
4364         char *buf;
4365         yy_size_t n;
4366         int i;
4367     
4368         /* Get memory for full buffer, including space for trailing EOB's. */
4369         n = len + 2;
4370         buf = (char *) surf_parse_alloc(n  );
4371         if ( ! buf )
4372                 YY_FATAL_ERROR( "out of dynamic memory in surf_parse__scan_bytes()" );
4373
4374         for ( i = 0; i < len; ++i )
4375                 buf[i] = bytes[i];
4376
4377         buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
4378
4379         b = surf_parse__scan_buffer(buf,n );
4380         if ( ! b )
4381                 YY_FATAL_ERROR( "bad buffer in surf_parse__scan_bytes()" );
4382
4383         /* It's okay to grow etc. this buffer, and we should throw it
4384          * away when we're done.
4385          */
4386         b->yy_is_our_buffer = 1;
4387
4388         return b;
4389 }
4390
4391     static void yy_push_state (int  new_state )
4392 {
4393         if ( (yy_start_stack_ptr) >= (yy_start_stack_depth) )
4394                 {
4395                 yy_size_t new_size;
4396
4397                 (yy_start_stack_depth) += YY_START_STACK_INCR;
4398                 new_size = (yy_start_stack_depth) * sizeof( int );
4399
4400                 if ( ! (yy_start_stack) )
4401                         (yy_start_stack) = (int *) surf_parse_alloc(new_size  );
4402
4403                 else
4404                         (yy_start_stack) = (int *) surf_parse_realloc((void *) (yy_start_stack),new_size  );
4405
4406                 if ( ! (yy_start_stack) )
4407                         YY_FATAL_ERROR(
4408                         "out of memory expanding start-condition stack" );
4409                 }
4410
4411         (yy_start_stack)[(yy_start_stack_ptr)++] = YY_START;
4412
4413         BEGIN(new_state);
4414 }
4415
4416     static void yy_pop_state  (void)
4417 {
4418         if ( --(yy_start_stack_ptr) < 0 )
4419                 YY_FATAL_ERROR( "start-condition stack underflow" );
4420
4421         BEGIN((yy_start_stack)[(yy_start_stack_ptr)]);
4422 }
4423
4424 #ifndef YY_EXIT_FAILURE
4425 #define YY_EXIT_FAILURE 2
4426 #endif
4427
4428 static void yy_fatal_error (yyconst char* msg )
4429 {
4430         (void) fprintf( stderr, "%s\n", msg );
4431         exit( YY_EXIT_FAILURE );
4432 }
4433
4434 /* Redefine yyless() so it works in section 3 code. */
4435
4436 #undef yyless
4437 #define yyless(n) \
4438         do \
4439                 { \
4440                 /* Undo effects of setting up surf_parse_text. */ \
4441         int yyless_macro_arg = (n); \
4442         YY_LESS_LINENO(yyless_macro_arg);\
4443                 surf_parse_text[surf_parse_leng] = (yy_hold_char); \
4444                 (yy_c_buf_p) = surf_parse_text + yyless_macro_arg; \
4445                 (yy_hold_char) = *(yy_c_buf_p); \
4446                 *(yy_c_buf_p) = '\0'; \
4447                 surf_parse_leng = yyless_macro_arg; \
4448                 } \
4449         while ( 0 )
4450
4451 /* Accessor  methods (get/set functions) to struct members. */
4452
4453 /** Get the current line number.
4454  * 
4455  */
4456 int surf_parse_get_lineno  (void)
4457 {
4458         
4459     return surf_parse_lineno;
4460 }
4461
4462 /** Get the input stream.
4463  * 
4464  */
4465 FILE *surf_parse_get_in  (void)
4466 {
4467         return surf_parse_in;
4468 }
4469
4470 /** Get the output stream.
4471  * 
4472  */
4473 FILE *surf_parse_get_out  (void)
4474 {
4475         return surf_parse_out;
4476 }
4477
4478 /** Get the length of the current token.
4479  * 
4480  */
4481 int surf_parse_get_leng  (void)
4482 {
4483         return surf_parse_leng;
4484 }
4485
4486 /** Get the current token.
4487  * 
4488  */
4489
4490 char *surf_parse_get_text  (void)
4491 {
4492         return surf_parse_text;
4493 }
4494
4495 /** Set the current line number.
4496  * @param line_number
4497  * 
4498  */
4499 void surf_parse_set_lineno (int  line_number )
4500 {
4501     
4502     surf_parse_lineno = line_number;
4503 }
4504
4505 /** Set the input stream. This does not discard the current
4506  * input buffer.
4507  * @param in_str A readable stream.
4508  * 
4509  * @see surf_parse__switch_to_buffer
4510  */
4511 void surf_parse_set_in (FILE *  in_str )
4512 {
4513         surf_parse_in = in_str ;
4514 }
4515
4516 void surf_parse_set_out (FILE *  out_str )
4517 {
4518         surf_parse_out = out_str ;
4519 }
4520
4521 int surf_parse_get_debug  (void)
4522 {
4523         return surf_parse__flex_debug;
4524 }
4525
4526 void surf_parse_set_debug (int  bdebug )
4527 {
4528         surf_parse__flex_debug = bdebug ;
4529 }
4530
4531 /* surf_parse_lex_destroy is for both reentrant and non-reentrant scanners. */
4532 int surf_parse_lex_destroy  (void)
4533 {
4534     
4535     /* Pop the buffer stack, destroying each element. */
4536         while(YY_CURRENT_BUFFER){
4537                 surf_parse__delete_buffer(YY_CURRENT_BUFFER  );
4538                 YY_CURRENT_BUFFER_LVALUE = NULL;
4539                 surf_parse_pop_buffer_state();
4540         }
4541
4542         /* Destroy the stack itself. */
4543         surf_parse_free((yy_buffer_stack) );
4544         (yy_buffer_stack) = NULL;
4545
4546     /* Destroy the start condition stack. */
4547         surf_parse_free((yy_start_stack)  );
4548         (yy_start_stack) = NULL;
4549
4550     return 0;
4551 }
4552
4553 /*
4554  * Internal utility routines.
4555  */
4556
4557 #ifndef yytext_ptr
4558 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
4559 {
4560         register int i;
4561         for ( i = 0; i < n; ++i )
4562                 s1[i] = s2[i];
4563 }
4564 #endif
4565
4566 #ifdef YY_NEED_STRLEN
4567 static int yy_flex_strlen (yyconst char * s )
4568 {
4569         register int n;
4570         for ( n = 0; s[n]; ++n )
4571                 ;
4572
4573         return n;
4574 }
4575 #endif
4576
4577 void *surf_parse_alloc (yy_size_t  size )
4578 {
4579         return (void *) malloc( size );
4580 }
4581
4582 void *surf_parse_realloc  (void * ptr, yy_size_t  size )
4583 {
4584         /* The cast to (char *) in the following accommodates both
4585          * implementations that use char* generic pointers, and those
4586          * that use void* generic pointers.  It works with the latter
4587          * because both ANSI C and C++ allow castless assignment from
4588          * any pointer type to void*, and deal with argument conversions
4589          * as though doing an assignment.
4590          */
4591         return (void *) realloc( (char *) ptr, size );
4592 }
4593
4594 void surf_parse_free (void * ptr )
4595 {
4596         free( (char *) ptr );   /* see surf_parse_realloc() for (char *) cast */
4597 }
4598
4599 #define YYTABLES_NAME "yytables"
4600
4601 #undef YY_NEW_FILE
4602 #undef YY_FLUSH_BUFFER
4603 #undef yy_set_bol
4604 #undef yy_new_buffer
4605 #undef yy_set_interactive
4606 #undef yytext_ptr
4607 #undef YY_DO_BEFORE_ACTION
4608
4609 #ifdef YY_DECL_IS_OURS
4610 #undef YY_DECL_IS_OURS
4611 #undef YY_DECL
4612 #endif
4613 #line 840 "surf/surfxml.l"
4614
4615
4616
4617 /* Element context stack lookup. */
4618 int surfxml_element_context(int i)
4619 {
4620   return (0<i && i<yy_start_stack_depth
4621           ? yy_start_stack[yy_start_stack_ptr - i]
4622           : 0);
4623 }
4624
4625 #ifdef FLEX_DEBUG
4626 void print_yy_stack(char* fmt, ...)
4627 {
4628   int i = 0; va_list ap; va_start(ap, fmt);
4629   vfprintf(stderr, fmt, ap);
4630   for (i=1; i<yy_start_stack_ptr; i++)
4631     fprintf(stderr, "%s/", surfxml_statenames[yy_start_stack[i] ]);
4632   fprintf(stderr,"%s\n", surfxml_statenames[YY_START]);
4633   va_end(ap);
4634 }
4635
4636 static void debug_enter(int state, const char* statename) {
4637   yy_push_state(state);
4638   if (surf_parse__flex_debug) print_yy_stack("--ENTER(%s) : ",statename);
4639 }
4640
4641 static void debug_leave(void) {
4642   if (surf_parse__flex_debug) print_yy_stack("--LEAVE : ");
4643   yy_pop_state();
4644 }
4645
4646 static void debug_set(int state, const char* statename) {
4647   BEGIN(state);
4648   if (surf_parse__flex_debug) print_yy_stack("--SET(%s) : ",statename);
4649 }
4650 #endif
4651
4652 enum {flexml_max_err_msg_size = 512};
4653
4654 static char flexml_err_msg[flexml_max_err_msg_size];
4655 const char * surfxml_parse_err_msg()
4656 {
4657     return flexml_err_msg;
4658 }
4659
4660 static void reset_surfxml_parse_err_msg()
4661 {
4662     flexml_err_msg[0] = '\0';
4663 }
4664
4665
4666 static void cleanup(void)
4667 {
4668     if (surfxml_statenames) {
4669         free(surfxml_statenames);
4670         surfxml_statenames = NULL;
4671     }
4672 }
4673
4674
4675 static int fail(const char* fmt, ...)
4676 {
4677     int chars_left, used;
4678     va_list ap; va_start(ap, fmt);
4679 #ifdef FLEXML_yylineno
4680     used = sprintf(flexml_err_msg,
4681                    "Invalid XML (XML input line %d, state %d): ",
4682                    surf_parse_lineno, YY_START);
4683 #else
4684     used = sprintf(flexml_err_msg,
4685                    "Invalid XML (state %d): ",
4686                    YY_START);
4687 #endif
4688     chars_left = flexml_max_err_msg_size - used - 1;
4689     vsnprintf(flexml_err_msg + used, chars_left, fmt, ap);
4690     va_end(ap);
4691
4692 #ifndef FLEXML_quiet_parser
4693     /* print directly to sdterr */
4694     fprintf(stderr, "%s\n", flexml_err_msg);
4695     flexml_err_msg[0] = '\0';
4696 #endif
4697
4698     cleanup();
4699
4700     return 1;
4701 }
4702