Logo AND Algorithmique Numérique Distribuée

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