Logo AND Algorithmique Numérique Distribuée

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