Logo AND Algorithmique Numérique Distribuée

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