Logo AND Algorithmique Numérique Distribuée

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