Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Stop build the log strings on the stack: we are multi-threaded now, and this is like...
[simgrid.git] / src / xbt / graphxml.c
1
2 #line 3 "xbt/graphxml.c"
3
4 #define  YY_INT_ALIGNED short int
5
6 /* A lexical scanner generated by flex */
7
8 #define FLEX_SCANNER
9 #define YY_FLEX_MAJOR_VERSION 2
10 #define YY_FLEX_MINOR_VERSION 5
11 #define YY_FLEX_SUBMINOR_VERSION 33
12 #if YY_FLEX_SUBMINOR_VERSION > 0
13 #define FLEX_BETA
14 #endif
15
16 /* First, we deal with  platform-specific or compiler-specific issues. */
17
18 /* begin standard C headers. */
19 #include <stdio.h>
20 #include <string.h>
21 #include <errno.h>
22 #include <stdlib.h>
23
24 /* end standard C headers. */
25
26 /* flex integer type definitions */
27
28 #ifndef FLEXINT_H
29 #define FLEXINT_H
30
31 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
32
33 #if __STDC_VERSION__ >= 199901L
34
35 /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
36  * if you want the limit (max/min) macros for int types. 
37  */
38 #ifndef __STDC_LIMIT_MACROS
39 #define __STDC_LIMIT_MACROS 1
40 #endif
41
42 #include <inttypes.h>
43 typedef int8_t flex_int8_t;
44 typedef uint8_t flex_uint8_t;
45 typedef int16_t flex_int16_t;
46 typedef uint16_t flex_uint16_t;
47 typedef int32_t flex_int32_t;
48 typedef uint32_t flex_uint32_t;
49 #else
50 typedef signed char flex_int8_t;
51 typedef short int flex_int16_t;
52 typedef int flex_int32_t;
53 typedef unsigned char flex_uint8_t; 
54 typedef unsigned short int flex_uint16_t;
55 typedef unsigned int flex_uint32_t;
56 #endif /* ! C99 */
57
58 /* Limits of integral types. */
59 #ifndef INT8_MIN
60 #define INT8_MIN               (-128)
61 #endif
62 #ifndef INT16_MIN
63 #define INT16_MIN              (-32767-1)
64 #endif
65 #ifndef INT32_MIN
66 #define INT32_MIN              (-2147483647-1)
67 #endif
68 #ifndef INT8_MAX
69 #define INT8_MAX               (127)
70 #endif
71 #ifndef INT16_MAX
72 #define INT16_MAX              (32767)
73 #endif
74 #ifndef INT32_MAX
75 #define INT32_MAX              (2147483647)
76 #endif
77 #ifndef UINT8_MAX
78 #define UINT8_MAX              (255U)
79 #endif
80 #ifndef UINT16_MAX
81 #define UINT16_MAX             (65535U)
82 #endif
83 #ifndef UINT32_MAX
84 #define UINT32_MAX             (4294967295U)
85 #endif
86
87 #endif /* ! FLEXINT_H */
88
89 #ifdef __cplusplus
90
91 /* The "const" storage-class-modifier is valid. */
92 #define YY_USE_CONST
93
94 #else   /* ! __cplusplus */
95
96 #if __STDC__
97
98 #define YY_USE_CONST
99
100 #endif  /* __STDC__ */
101 #endif  /* ! __cplusplus */
102
103 #ifdef YY_USE_CONST
104 #define yyconst const
105 #else
106 #define yyconst
107 #endif
108
109 /* Returned upon end-of-file. */
110 #define YY_NULL 0
111
112 /* Promotes a possibly negative, possibly signed char to an unsigned
113  * integer for use as an array index.  If the signed char is negative,
114  * we want to instead treat it as an 8-bit unsigned char, hence the
115  * double cast.
116  */
117 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
118
119 /* Enter a start condition.  This macro really ought to take a parameter,
120  * but we do it the disgusting crufty way forced on us by the ()-less
121  * definition of BEGIN.
122  */
123 #define BEGIN (yy_start) = 1 + 2 *
124
125 /* Translate the current start state into a value that can be later handed
126  * to BEGIN to return to the state.  The YYSTATE alias is for lex
127  * compatibility.
128  */
129 #define YY_START (((yy_start) - 1) / 2)
130 #define YYSTATE YY_START
131
132 /* Action number for EOF rule of a given start state. */
133 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
134
135 /* Special action meaning "start processing a new file". */
136 #define YY_NEW_FILE xbt_graph_parse_restart(xbt_graph_parse_in  )
137
138 #define YY_END_OF_BUFFER_CHAR 0
139
140 /* Size of default input buffer. */
141 #ifndef YY_BUF_SIZE
142 #define YY_BUF_SIZE 16384
143 #endif
144
145 /* The state buf must be large enough to hold one state per character in the main buffer.
146  */
147 #define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
148
149 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
150 #define YY_TYPEDEF_YY_BUFFER_STATE
151 typedef struct yy_buffer_state *YY_BUFFER_STATE;
152 #endif
153
154 extern int xbt_graph_parse_leng;
155
156 extern FILE *xbt_graph_parse_in, *xbt_graph_parse_out;
157
158 #define EOB_ACT_CONTINUE_SCAN 0
159 #define EOB_ACT_END_OF_FILE 1
160 #define EOB_ACT_LAST_MATCH 2
161
162     /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires
163      *       access to the local variable yy_act. Since yyless() is a macro, it would break
164      *       existing scanners that call yyless() from OUTSIDE xbt_graph_parse_lex. 
165      *       One obvious solution it to make yy_act a global. I tried that, and saw
166      *       a 5% performance hit in a non-xbt_graph_parse_lineno scanner, because yy_act is
167      *       normally declared as a register variable-- so it is not worth it.
168      */
169     #define  YY_LESS_LINENO(n) \
170             do { \
171                 int yyl;\
172                 for ( yyl = n; yyl < xbt_graph_parse_leng; ++yyl )\
173                     if ( xbt_graph_parse_text[yyl] == '\n' )\
174                         --xbt_graph_parse_lineno;\
175             }while(0)
176     
177 /* Return all but the first "n" matched characters back to the input stream. */
178 #define yyless(n) \
179         do \
180                 { \
181                 /* Undo effects of setting up xbt_graph_parse_text. */ \
182         int yyless_macro_arg = (n); \
183         YY_LESS_LINENO(yyless_macro_arg);\
184                 *yy_cp = (yy_hold_char); \
185                 YY_RESTORE_YY_MORE_OFFSET \
186                 (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
187                 YY_DO_BEFORE_ACTION; /* set up xbt_graph_parse_text again */ \
188                 } \
189         while ( 0 )
190
191 #define unput(c) yyunput( c, (yytext_ptr)  )
192
193 /* The following is because we cannot portably get our hands on size_t
194  * (without autoconf's help, which isn't available because we want
195  * flex-generated scanners to compile on their own).
196  */
197
198 #ifndef YY_TYPEDEF_YY_SIZE_T
199 #define YY_TYPEDEF_YY_SIZE_T
200 typedef unsigned int yy_size_t;
201 #endif
202
203 #ifndef YY_STRUCT_YY_BUFFER_STATE
204 #define YY_STRUCT_YY_BUFFER_STATE
205 struct yy_buffer_state
206         {
207         FILE *yy_input_file;
208
209         char *yy_ch_buf;                /* input buffer */
210         char *yy_buf_pos;               /* current position in input buffer */
211
212         /* Size of input buffer in bytes, not including room for EOB
213          * characters.
214          */
215         yy_size_t yy_buf_size;
216
217         /* Number of characters read into yy_ch_buf, not including EOB
218          * characters.
219          */
220         int yy_n_chars;
221
222         /* Whether we "own" the buffer - i.e., we know we created it,
223          * and can realloc() it to grow it, and should free() it to
224          * delete it.
225          */
226         int yy_is_our_buffer;
227
228         /* Whether this is an "interactive" input source; if so, and
229          * if we're using stdio for input, then we want to use getc()
230          * instead of fread(), to make sure we stop fetching input after
231          * each newline.
232          */
233         int yy_is_interactive;
234
235         /* Whether we're considered to be at the beginning of a line.
236          * If so, '^' rules will be active on the next match, otherwise
237          * not.
238          */
239         int yy_at_bol;
240
241     int yy_bs_lineno; /**< The line count. */
242     int yy_bs_column; /**< The column count. */
243     
244         /* Whether to try to fill the input buffer when we reach the
245          * end of it.
246          */
247         int yy_fill_buffer;
248
249         int yy_buffer_status;
250
251 #define YY_BUFFER_NEW 0
252 #define YY_BUFFER_NORMAL 1
253         /* When an EOF's been seen but there's still some text to process
254          * then we mark the buffer as YY_EOF_PENDING, to indicate that we
255          * shouldn't try reading from the input source any more.  We might
256          * still have a bunch of tokens to match, though, because of
257          * possible backing-up.
258          *
259          * When we actually see the EOF, we change the status to "new"
260          * (via xbt_graph_parse_restart()), so that the user can continue scanning by
261          * just pointing xbt_graph_parse_in at a new input file.
262          */
263 #define YY_BUFFER_EOF_PENDING 2
264
265         };
266 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
267
268 /* Stack of input buffers. */
269 static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
270 static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
271 static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
272
273 /* We provide macros for accessing buffer states in case in the
274  * future we want to put the buffer states in a more general
275  * "scanner state".
276  *
277  * Returns the top of the stack, or NULL.
278  */
279 #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
280                           ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
281                           : NULL)
282
283 /* Same as previous macro, but useful when we know that the buffer stack is not
284  * NULL or when we need an lvalue. For internal use only.
285  */
286 #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
287
288 /* yy_hold_char holds the character lost when xbt_graph_parse_text is formed. */
289 static char yy_hold_char;
290 static int yy_n_chars;          /* number of characters read into yy_ch_buf */
291 int xbt_graph_parse_leng;
292
293 /* Points to current character in buffer. */
294 static char *yy_c_buf_p = (char *) 0;
295 static int yy_init = 0;         /* whether we need to initialize */
296 static int yy_start = 0;        /* start state number */
297
298 /* Flag which is used to allow xbt_graph_parse_wrap()'s to do buffer switches
299  * instead of setting up a fresh xbt_graph_parse_in.  A bit of a hack ...
300  */
301 static int yy_did_buffer_switch_on_eof;
302
303 void xbt_graph_parse_restart (FILE *input_file  );
304 void xbt_graph_parse__switch_to_buffer (YY_BUFFER_STATE new_buffer  );
305 YY_BUFFER_STATE xbt_graph_parse__create_buffer (FILE *file,int size  );
306 void xbt_graph_parse__delete_buffer (YY_BUFFER_STATE b  );
307 void xbt_graph_parse__flush_buffer (YY_BUFFER_STATE b  );
308 void xbt_graph_parse_push_buffer_state (YY_BUFFER_STATE new_buffer  );
309 void xbt_graph_parse_pop_buffer_state (void );
310
311 static void xbt_graph_parse_ensure_buffer_stack (void );
312 static void xbt_graph_parse__load_buffer_state (void );
313 static void xbt_graph_parse__init_buffer (YY_BUFFER_STATE b,FILE *file  );
314
315 #define YY_FLUSH_BUFFER xbt_graph_parse__flush_buffer(YY_CURRENT_BUFFER )
316
317 YY_BUFFER_STATE xbt_graph_parse__scan_buffer (char *base,yy_size_t size  );
318 YY_BUFFER_STATE xbt_graph_parse__scan_string (yyconst char *yy_str  );
319 YY_BUFFER_STATE xbt_graph_parse__scan_bytes (yyconst char *bytes,int len  );
320
321 void *xbt_graph_parse_alloc (yy_size_t  );
322 void *xbt_graph_parse_realloc (void *,yy_size_t  );
323 void xbt_graph_parse_free (void *  );
324
325 #define yy_new_buffer xbt_graph_parse__create_buffer
326
327 #define yy_set_interactive(is_interactive) \
328         { \
329         if ( ! YY_CURRENT_BUFFER ){ \
330         xbt_graph_parse_ensure_buffer_stack (); \
331                 YY_CURRENT_BUFFER_LVALUE =    \
332             xbt_graph_parse__create_buffer(xbt_graph_parse_in,YY_BUF_SIZE ); \
333         } \
334         YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
335         }
336
337 #define yy_set_bol(at_bol) \
338         { \
339         if ( ! YY_CURRENT_BUFFER ){\
340         xbt_graph_parse_ensure_buffer_stack (); \
341                 YY_CURRENT_BUFFER_LVALUE =    \
342             xbt_graph_parse__create_buffer(xbt_graph_parse_in,YY_BUF_SIZE ); \
343         } \
344         YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
345         }
346
347 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
348
349 /* Begin user sect3 */
350
351 #define xbt_graph_parse_wrap() 1
352 #define YY_SKIP_YYWRAP
353
354 typedef unsigned char YY_CHAR;
355
356 FILE *xbt_graph_parse_in = (FILE *) 0, *xbt_graph_parse_out = (FILE *) 0;
357
358 typedef int yy_state_type;
359
360 extern int xbt_graph_parse_lineno;
361
362 int xbt_graph_parse_lineno = 1;
363
364 extern char *xbt_graph_parse_text;
365 #define yytext_ptr xbt_graph_parse_text
366
367 static yy_state_type yy_get_previous_state (void );
368 static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
369 static int yy_get_next_buffer (void );
370 static void yy_fatal_error (yyconst char msg[]  );
371
372 /* Done after the current pattern has been matched and before the
373  * corresponding action - sets up xbt_graph_parse_text.
374  */
375 #define YY_DO_BEFORE_ACTION \
376         (yytext_ptr) = yy_bp; \
377         xbt_graph_parse_leng = (size_t) (yy_cp - yy_bp); \
378         (yy_hold_char) = *yy_cp; \
379         *yy_cp = '\0'; \
380         (yy_c_buf_p) = yy_cp;
381
382 #define YY_NUM_RULES 89
383 #define YY_END_OF_BUFFER 90
384 /* This struct is not used in this scanner,
385    but its presence is necessary. */
386 struct yy_trans_info
387         {
388         flex_int32_t yy_verify;
389         flex_int32_t yy_nxt;
390         };
391 static yyconst flex_int16_t yy_accept[546] =
392     {   0,
393         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
394         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
395         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
396         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
397         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
398        90,   88,   17,   10,   10,   17,   17,   68,   10,   68,
399         5,    6,    5,    8,    9,    8,   84,   76,   77,   85,
400        82,   85,   83,   87,   76,   77,   87,   88,   25,   10,
401        25,   25,   25,   23,   25,   29,   10,   29,   29,   88,
402        88,   29,   43,   10,   43,   43,   43,   41,   43,   43,
403
404        43,   43,   47,   10,   47,   63,   10,   63,   63,   63,
405        61,   63,   63,   63,   63,   63,   67,   10,   67,   85,
406        84,   10,    0,    2,    2,    0,    4,    7,   79,   78,
407         0,    0,    0,    0,    0,    0,    0,   24,   26,   26,
408         0,    0,    0,   42,   44,   44,   44,   44,   44,    0,
409        62,   64,   64,   64,   64,   64,   64,   64,    0,    0,
410         0,    0,    0,    0,    0,    3,    0,    0,    0,    0,
411         0,    0,    0,   86,    0,   26,    0,    0,    0,    0,
412        44,   44,   44,   44,    0,    0,   64,   64,   64,   64,
413        64,   64,    0,    0,    0,   81,    0,   16,    1,    0,
414
415         0,   74,    0,    0,    0,   71,   70,    0,    0,   26,
416         0,    0,   28,    0,    0,    0,   44,   44,   44,   44,
417         0,    0,   46,    0,   64,   64,   64,   64,   64,   64,
418         0,    0,   66,    0,    0,    0,    0,   75,   69,    0,
419         0,    0,   26,    0,   48,   30,    0,    0,   44,    0,
420         0,   44,    0,    0,    0,   64,   64,    0,    0,   64,
421        64,    0,    0,    0,    0,    0,   12,    0,   72,   73,
422        18,   26,    0,   48,   30,    0,   36,   35,    0,    0,
423         0,   34,   33,   44,    0,    0,   60,   59,    0,    0,
424        64,    0,   52,   51,   64,   64,    0,    0,    0,    0,
425
426         0,   11,   18,   26,    0,    0,   32,   31,   44,    0,
427        45,    0,   50,   49,    0,    0,    0,    0,    0,    0,
428         0,   65,    0,    0,    0,    0,   26,    0,   27,   44,
429         0,   58,   57,    0,   54,   53,    0,   56,   55,    0,
430         0,    0,    0,   26,   44,   80,    0,    0,    0,   26,
431        44,   44,    0,    0,    0,    0,    0,    0,    0,    0,
432         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
433         0,    0,   38,   37,    0,   40,   39,    0,    0,    0,
434         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
435         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
436
437         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
438         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
439         0,    0,    0,    0,    0,   12,    0,   12,    0,    0,
440        20,    0,   19,    0,    0,    0,    0,    0,    0,    0,
441        22,   21,    0,    0,    0,    0,    0,    0,    0,   11,
442         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
443         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
444         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
445         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
446         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
447
448         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
449         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
450         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
451         0,    0,    0,    0,    0,    0,    0,    0,   13,    0,
452         0,   14,    0,   15,    0
453     } ;
454
455 static yyconst flex_int32_t yy_ec[256] =
456     {   0,
457         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
458         1,    2,    4,    1,    1,    1,    1,    1,    1,    1,
459         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
460         1,    2,    5,    6,    7,    1,    1,    8,    9,    1,
461         1,    1,    1,    1,   10,   11,   12,   13,   13,   13,
462        13,   13,   13,   13,   13,   13,   13,   14,   15,   16,
463        17,   18,   19,    1,   20,   21,   22,   23,   24,   21,
464        14,   14,   14,   14,   14,   14,   25,   14,   26,   27,
465        14,   14,   28,   29,   14,   14,   14,   14,   30,   14,
466        31,    1,   32,    1,   33,    1,   34,   35,   36,   37,
467
468        38,   39,   40,   41,   42,   14,   14,   43,   44,   45,
469        46,   47,   48,   49,   50,   51,   52,   53,   14,   54,
470        55,   14,    1,    1,    1,    1,    1,    1,    1,    1,
471         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
472         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
473         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
474         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
475         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
476         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
477         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
478
479         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
480         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
481         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
482         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
483         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
484         1,    1,    1,    1,    1
485     } ;
486
487 static yyconst flex_int32_t yy_meta[56] =
488     {   0,
489         1,    2,    2,    2,    1,    1,    1,    1,    1,    3,
490         3,    1,    4,    5,    1,    1,    1,    6,    1,    7,
491         7,    7,    7,    7,    5,    5,    5,    5,    5,    5,
492         1,    1,    5,    7,    7,    7,    7,    7,    7,    5,
493         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
494         5,    5,    5,    5,    5
495     } ;
496
497 static yyconst flex_int16_t yy_base[576] =
498     {   0,
499         0,    0,    0,    3,    6,    9,   24,   27,   11,   14,
500        15,   17,   29,   38,   45,   52,   59,   61,   67,   70,
501        93,  135,   73,   76,  111,  114,  117,  153,  156,  159,
502       176,  179,  182,  185,  200,  203,  206,  209,  225,    0,
503       279,  282,  285,  288,  304,    0,  358,  361,  363,  365,
504      1541, 1542, 1542,  380,  383,   47,   62, 1542,  386,  171,
505      1542, 1542, 1530, 1542, 1542, 1521, 1542, 1534, 1534,  365,
506      1542, 1542, 1542, 1542, 1532, 1532, 1502,  375, 1542,  389,
507      1515,    0,  195, 1542, 1482, 1542,  398,  391,  399,  393,
508       401,  402, 1542,  420, 1513,    0,  411, 1542, 1496, 1495,
509
510      1494, 1481, 1542,  423,  423, 1542,  429, 1508,    0,  429,
511      1542, 1491,    1, 1490, 1477, 1488, 1542,  441,  435, 1516,
512      1488,  447,   34, 1465, 1542, 1508, 1499, 1542, 1542, 1542,
513        69,   40, 1465, 1464, 1462, 1495, 1463, 1542,    0, 1488,
514      1470, 1472, 1462, 1542,    0, 1456, 1471, 1461, 1454, 1458,
515      1542,    0, 1451, 1466, 1455, 1455, 1446, 1448, 1458, 1464,
516      1476, 1475, 1482,  108, 1447, 1542,   75,    0, 1443, 1443,
517      1473, 1472, 1440, 1542, 1451, 1442,  453,  456, 1443, 1445,
518      1447, 1442, 1441, 1436,  459,  462, 1443, 1438, 1435, 1436,
519      1424, 1432,  465,  482, 1449, 1542, 1452, 1542, 1542,  110,
520
521      1426, 1542, 1453, 1452, 1416, 1542, 1542, 1414, 1417, 1414,
522       485,  488, 1542,  491, 1424, 1355,  494, 1349,  510, 1331,
523       513,  518, 1542,  526,  530, 1336, 1325,  535, 1337, 1328,
524       538,  546, 1542,  551, 1338,  423,  555, 1542, 1542, 1341,
525      1259, 1232, 1233,  558,  563,  568,  575,  578,  586,  591,
526       595, 1228,  607,  610,  613,  626, 1228,  629,  632, 1229,
527      1215,  645, 1244,  452, 1245,  648, 1542, 1225, 1542, 1542,
528       651, 1195,  654,  657,  665,  671, 1542, 1542,  685,  688,
529       701, 1542, 1542, 1183,  696,  709, 1542, 1542,  717,  720,
530       728,  733, 1542, 1542,  744,  747,  750, 1199,   32,  104,
531
532       153, 1542,  753, 1174,  756,  763, 1542, 1542, 1069,  773,
533      1542,  776, 1542, 1542,  784,  790,  800,  803,  811,  816,
534       827, 1542, 1055,  146,  179,  147, 1026,  830, 1542, 1013,
535       833, 1542, 1542,  847, 1542, 1542,  855, 1542, 1542, 1001,
536       863,  175,  428,  987,  119, 1542,  866,  181,   89,  869,
537       872,  875,  435,  360,  455,  457,  458,  891,  894,  910,
538       913,  921,  926,  484,  489,  508,  557,  578,  937,  567,
539       625,  945, 1542, 1542,  953, 1542, 1542,  582,  176,  606,
540       528,  961,  961,  901,  908,  887,  964,  621,  967,  970,
541       973,  990,  856,  830,  812,  788,  998, 1001, 1007, 1010,
542
543      1027, 1035, 1053, 1085,  688,  687,  592,  548,  652, 1045,
544       663, 1103,  678,  284, 1121, 1153,  545,  475,  381,  408,
545       688,  710,  699,  765,  278,  369,  285,  291, 1048,  293,
546      1542,  211, 1542,  608,  715,  744,  162,  110,   76, 1077,
547      1542, 1542,  352,  752,  647,    5,  199,  661,  772, 1542,
548      1116,  798, 1145, 1171, 1179, 1184,  567,  723, 1192,  771,
549       803,  461,  660,  806,  820,  777,  792,  517,  766,  834,
550       836,  829,  873,  780,  862,  884,  887,  913,  934,  869,
551       943,  968,  971,  965,  979,  690,  790,  980,  999,  872,
552       883,  844, 1064,  926,  989, 1123, 1132,  500,  902, 1148,
553
554      1160,  915, 1056, 1065, 1124, 1173, 1181, 1133, 1189,  603,
555       916, 1194, 1195, 1005, 1059, 1060, 1080, 1095, 1127, 1092,
556      1128, 1185, 1190, 1191, 1193, 1196, 1197, 1016, 1208, 1200,
557      1201, 1214, 1212, 1237, 1217, 1227, 1244, 1247, 1542, 1250,
558      1254, 1542, 1257, 1542, 1542, 1275, 1282, 1289, 1296, 1303,
559      1310, 1317, 1324, 1331, 1338, 1345, 1350, 1355, 1360, 1367,
560      1370, 1373, 1376, 1383, 1387, 1393, 1399, 1405, 1412, 1419,
561      1426, 1433, 1440, 1447, 1454
562     } ;
563
564 static yyconst flex_int16_t yy_def[576] =
565     {   0,
566       546,  546,  547,  547,  547,  547,  548,  548,  549,  549,
567       550,  550,  551,  551,  551,  551,  552,  552,  546,  546,
568       553,  553,  554,  554,  554,  554,  546,  546,  554,  554,
569       546,  546,  554,  554,  554,  554,  546,  546,  545,   39,
570       555,  555,  546,  546,  545,   45,  556,  556,  551,  551,
571       545,  545,  545,  545,  545,  545,  545,  545,  545,  545,
572       545,  545,  545,  545,  545,  545,  545,  545,  545,  545,
573       545,  545,  545,  545,  545,  545,  545,  545,  545,  545,
574       545,  557,  545,  545,  557,  545,  545,  545,  545,  545,
575       545,  545,  545,  545,  545,  558,  545,  545,  558,  558,
576
577       558,  558,  545,  545,  545,  545,  545,  545,  559,  545,
578       545,  559,  559,  559,  559,  559,  545,  545,  545,  545,
579       545,  545,  560,  545,  545,  545,  545,  545,  545,  545,
580       545,  545,  545,  545,  545,  545,  545,  545,  557,  557,
581       561,  545,  545,  545,  558,  558,  558,  558,  558,  562,
582       545,  559,  559,  559,  559,  559,  559,  559,  563,  545,
583       545,  564,  545,  564,  545,  545,  545,  565,  545,  545,
584       545,  545,  545,  545,  545,  557,  566,  566,  545,  545,
585       558,  558,  558,  558,  567,  567,  559,  559,  559,  559,
586       559,  559,  568,  568,  545,  545,  564,  545,  545,  564,
587
588       545,  545,  565,  545,  545,  545,  545,  545,  545,  557,
589       545,  566,  545,  566,  545,  545,  558,  558,  558,  558,
590       545,  567,  545,  567,  559,  559,  559,  559,  559,  559,
591       545,  568,  545,  568,  545,  564,  569,  545,  545,  545,
592       545,  545,  557,  566,  545,  545,  545,  545,  558,  545,
593       545,  558,  567,  545,  545,  559,  559,  545,  545,  559,
594       559,  568,  545,  564,  569,  569,  545,  569,  545,  545,
595       545,  557,  566,  545,  545,  545,  545,  545,  545,  545,
596       545,  545,  545,  558,  567,  545,  545,  545,  545,  545,
597       559,  545,  545,  545,  559,  559,  568,  545,  564,  569,
598
599       569,  545,  545,  557,  566,  545,  545,  545,  558,  545,
600       545,  545,  545,  545,  545,  545,  545,  545,  545,  545,
601       545,  545,  545,  564,  569,  569,  557,  545,  545,  558,
602       545,  545,  545,  545,  545,  545,  545,  545,  545,  545,
603       564,  569,  569,  557,  558,  545,  564,  569,  569,  557,
604       558,  558,  564,  564,  564,  569,  569,  545,  545,  545,
605       545,  545,  545,  564,  564,  564,  569,  569,  545,  545,
606       545,  545,  545,  545,  545,  545,  545,  564,  564,  564,
607       569,  569,  545,  545,  545,  545,  564,  564,  564,  569,
608       569,  569,  545,  545,  545,  545,  564,  564,  564,  569,
609
610       569,  569,  570,  571,  545,  545,  545,  545,  564,  564,
611       564,  569,  572,  573,  570,  571,  545,  545,  545,  545,
612       564,  564,  564,  572,  569,  574,  573,  575,  569,  545,
613       545,  545,  545,  564,  564,  564,  574,  545,  575,  569,
614       545,  545,  564,  564,  564,  545,  564,  564,  564,  545,
615       564,  564,  564,  564,  564,  564,  564,  564,  564,  564,
616       564,  564,  564,  564,  564,  564,  564,  564,  564,  564,
617       564,  564,  564,  564,  564,  564,  564,  564,  564,  564,
618       564,  564,  564,  564,  564,  564,  564,  564,  564,  564,
619       564,  564,  564,  564,  564,  564,  564,  564,  564,  564,
620
621       564,  564,  564,  564,  564,  564,  564,  564,  564,  564,
622       564,  564,  564,  564,  564,  564,  564,  564,  564,  564,
623       564,  564,  564,  564,  564,  564,  564,  564,  564,  564,
624       564,  564,  564,  564,  564,  564,  564,  564,  545,  564,
625       564,  545,  564,  545,    0,  545,  545,  545,  545,  545,
626       545,  545,  545,  545,  545,  545,  545,  545,  545,  545,
627       545,  545,  545,  545,  545,  545,  545,  545,  545,  545,
628       545,  545,  545,  545,  545
629     } ;
630
631 static yyconst flex_int16_t yy_nxt[1598] =
632     {   0,
633       545,   54,   55,   54,   54,   55,   54,   54,   55,   54,
634        54,   55,   54,   62,  545,   56,   62,   65,   56,   65,
635        63,   57,  450,   63,   57,   59,   55,   59,   59,   55,
636        59,   68,   69,   66,  154,   66,   70,   71,  155,   60,
637        68,   69,   60,  163,   72,   70,   71,   68,   69,  198,
638        73,  123,   70,   72,   68,   69,  164,   73,  324,   70,
639        72,   75,   76,   75,   76,  124,  123,   72,   55,   55,
640        55,   55,   55,   55,   87,   55,   87,   87,   55,   87,
641       125,  167,   78,  169,  438,   78,  170,  167,   88,  202,
642        77,   88,   77,   79,   80,   55,   80,   79,   79,   79,
643
644        79,   79,   79,   79,   81,   79,  267,   79,   83,   79,
645        84,   79,   87,   55,   87,   87,   55,   87,   55,   55,
646        55,  267,  168,   79,   79,  198,   89,  198,  446,   89,
647       357,  236,   90,  200,   85,   79,   80,   55,   80,   79,
648        79,   79,   79,   79,   79,   79,   81,   79,  325,   79,
649        83,   79,   84,   79,   55,   55,   55,   87,   55,   87,
650        87,   55,   87,  198,  267,   79,   79,  438,   90,  341,
651       267,   88,  351,  352,   88,  126,   85,   55,   55,   55,
652        55,   55,   55,   87,   55,   87,   87,   55,   87,  125,
653       326,   91,  267,  198,   91,  343,  267,   89,  267,  126,
654
655        89,   87,   55,   87,   87,   55,   87,   55,   55,   55,
656        55,   55,   55,  125,  342,   92,  198,  356,   92,  442,
657       348,   90,  388,  451,   90,   93,   94,   55,   94,   93,
658        93,   93,   93,   93,   93,   93,   95,   93,   96,   93,
659        97,   93,   98,   93,   96,   96,   96,   96,   96,   96,
660        96,   96,   96,   96,   96,   93,   93,   96,   96,   96,
661        96,   99,   96,   96,   96,   96,   96,  100,   96,  101,
662        96,  102,   96,   96,   96,   96,   96,   96,   96,   96,
663       104,   55,  104,  104,   55,  104,   55,   55,   55,   55,
664        55,   55,  425,  425,  105,  267,  268,  105,  441,  438,
665
666        91,  428,  428,   91,  106,  107,   55,  107,  106,  106,
667       106,  106,  106,  106,  106,  108,  106,  109,  106,  110,
668       106,  111,  106,  109,  109,  109,  109,  109,  109,  109,
669       109,  109,  109,  109,  106,  106,  109,  109,  109,  109,
670       112,  109,  109,  109,  109,  109,  113,  109,  114,  109,
671       109,  109,  109,  115,  116,  109,  109,  109,  109,  118,
672        55,  118,  118,   55,  118,   68,   69,   68,   69,  198,
673        70,  131,   70,  119,  438,  447,  119,  198,  120,  126,
674       120,  122,  122,  122,  122,  122,  122,  122,  122,  122,
675       122,  122,  122,  125,  121,  126,  121,  126,  132,  122,
676
677       122,  122,  141,  126,  133,  126,  126,  134,  365,  125,
678       141,  125,  135,  141,  137,  126,  433,  125,  432,  125,
679       125,  122,  122,  122,  122,  122,  122,  126,  142,  125,
680       122,  122,  122,  126,  150,  143,  142,  143,  142,  126,
681       198,  125,  122,  122,  122,  267,  159,  125,  122,  122,
682       122,  264,  198,  125,  211,  211,  211,  211,  211,  211,
683       221,  221,  221,  221,  221,  221,  231,  231,  231,  198,
684       213,  364,  198,  213,  267,  267,  223,  349,  198,  223,
685       431,  299,  233,  231,  231,  231,  211,  211,  211,  211,
686       211,  211,  211,  211,  211,  247,  247,  247,  367,  233,
687
688       366,  198,  213,  368,  214,  213,  198,  224,  213,  468,
689       248,  250,  250,  250,  221,  221,  221,  198,  234,  221,
690       221,  221,  379,  378,  244,  198,  251,  221,  221,  221,
691       223,  254,  254,  254,  198,  223,  258,  258,  258,  231,
692       231,  231,  504,  223,  380,  267,  255,  231,  231,  231,
693       474,  259,  231,  231,  231,  233,  266,  266,  266,  211,
694       211,  211,  253,  233,  274,  274,  274,  390,  233,  275,
695       275,  275,  267,  268,  267,  213,  247,  247,  247,  276,
696       276,  276,  430,  277,  198,  420,  278,  279,  279,  279,
697       262,  248,  250,  250,  250,  267,  281,  281,  281,  198,
698
699       282,  381,  280,  283,  273,  383,  462,  251,  221,  221,
700       221,  254,  254,  254,  286,  286,  286,  384,  287,  387,
701       198,  288,  382,  198,  223,  198,  255,  289,  289,  289,
702       258,  258,  258,  292,  292,  292,  443,  293,  198,  516,
703       294,  419,  290,  389,  285,  259,  231,  231,  231,  266,
704       266,  266,  303,  303,  303,  211,  211,  211,  274,  274,
705       274,  398,  233,  385,  198,  267,  275,  275,  275,  198,
706       449,  213,  276,  276,  276,  386,  277,  198,  198,  278,
707       198,  421,  297,  425,  452,  300,  279,  279,  279,  306,
708       306,  306,  423,  307,  305,  426,  308,  310,  310,  310,
709
710       301,  280,  281,  281,  281,  198,  282,  198,  469,  283,
711       286,  286,  286,  311,  287,  434,  198,  288,  289,  289,
712       289,  312,  312,  312,  418,  313,  436,  198,  314,  315,
713       315,  315,  198,  290,  292,  292,  292,  417,  293,  435,
714       198,  294,  444,  492,  316,  317,  317,  317,  319,  319,
715       319,  321,  321,  321,  303,  303,  303,  328,  328,  328,
716       318,  198,  463,  320,  306,  306,  306,  322,  307,  198,
717       425,  308,  445,  329,  310,  310,  310,  312,  312,  312,
718       448,  313,  426,  198,  314,  315,  315,  315,  198,  198,
719       311,  331,  331,  331,  198,  332,  453,  198,  333,  475,
720
721       316,  317,  317,  317,  334,  334,  334,  198,  335,  198,
722       466,  336,  319,  319,  319,  198,  318,  337,  337,  337,
723       198,  338,  455,  198,  339,  472,  480,  320,  321,  321,
724       321,  328,  328,  328,  331,  331,  331,  198,  332,  408,
725       473,  333,  467,  493,  322,  470,  198,  329,  334,  334,
726       334,  198,  335,  198,  407,  336,  337,  337,  337,  471,
727       338,  198,  478,  339,  347,  347,  347,  347,  347,  347,
728       358,  358,  358,  360,  360,  360,  362,  362,  362,  198,
729       198,  406,  476,  198,  477,  359,  198,  498,  361,  198,
730       198,  363,  358,  358,  358,  369,  369,  369,  405,  370,
731
732       198,  198,  371,  353,  198,  354,  479,  359,  481,  486,
733       355,  360,  360,  360,  372,  372,  372,  482,  373,  198,
734       483,  374,  362,  362,  362,  496,  361,  375,  375,  375,
735       198,  376,  198,  198,  377,  396,  497,  363,  369,  369,
736       369,  395,  370,  198,  505,  371,  372,  372,  372,  394,
737       373,  198,  517,  374,  375,  375,  375,  508,  376,  484,
738       198,  377,  391,  391,  391,  397,  397,  397,  399,  399,
739       399,  400,  400,  400,  391,  391,  391,  392,  267,  500,
740       485,  198,  198,  487,  198,  198,  401,  267,  198,  392,
741       267,  402,  402,  402,  393,  403,  198,  198,  404,  397,
742
743       397,  397,  410,  410,  410,  490,  198,  267,  399,  399,
744       399,  400,  400,  400,  488,  198,  198,  489,  198,  491,
745       494,  534,  198,  350,  198,  409,  401,  267,  412,  412,
746       412,  346,  413,  198,  411,  414,  402,  402,  402,  495,
747       403,  520,  501,  404,  267,  345,  410,  410,  410,  440,
748       440,  440,  267,  265,  265,  265,  265,  265,  265,  265,
749       265,  265,  198,  344,  265,  267,  268,  265,  265,  265,
750       267,  265,  422,  198,  340,  510,  198,  198,  440,  440,
751       440,  198,  198,  265,  265,  265,  265,  265,  265,  265,
752       265,  265,  265,  265,  267,  521,  265,  198,  509,  265,
753
754       265,  265,  267,  265,  412,  412,  412,  499,  413,  198,
755       522,  414,  198,  330,  300,  265,  265,  454,  454,  454,
756       267,  265,  265,  265,  265,  265,  429,  265,  265,  265,
757       523,  524,  265,  198,  511,  265,  265,  265,  267,  265,
758       198,  198,  526,  514,  198,  198,  456,  456,  456,  198,
759       198,  265,  265,  265,  265,  265,  265,  265,  265,  265,
760       265,  429,  198,  525,  265,  198,  502,  265,  265,  265,
761       267,  265,  454,  454,  454,  503,  457,  198,  527,  458,
762       459,  459,  459,  265,  265,  456,  456,  456,  198,  460,
763       198,  506,  461,  459,  459,  459,  198,  464,  198,  515,
764
765       465,  198,  198,  507,  518,  519,  198,  198,  198,  198,
766       198,  198,  198,  198,  198,  512,  534,  198,  198,  537,
767       537,  528,  540,  513,  327,  198,  529,  323,  309,  198,
768       304,  198,  532,  533,  198,  540,  535,  536,  538,  538,
769       538,  530,  302,  531,  198,  541,  541,  541,  538,  538,
770       538,  543,  543,  543,  539,  541,  541,  541,  543,  543,
771       543,  542,  267,  298,  539,  296,  295,  544,  291,  284,
772       272,  542,  271,  270,  544,   52,   52,   52,   52,   52,
773        52,   52,   53,   53,   53,   53,   53,   53,   53,   58,
774        58,   58,   58,   58,   58,   58,   61,   61,   61,   61,
775
776        61,   61,   61,   64,   64,   64,   64,   64,   64,   64,
777        67,   67,   67,   67,   67,   67,   67,   74,   74,   74,
778        74,   74,   74,   74,   82,   82,   82,   82,   82,   82,
779        82,   86,   86,   86,   86,   86,   86,   86,  103,  103,
780       103,  103,  103,  103,  103,  117,  117,  117,  117,  117,
781       117,  117,  139,  139,  139,  269,  139,  145,  145,  145,
782       263,  145,  152,  152,  152,  261,  152,  162,  162,  162,
783       162,  162,  260,  162,  177,  257,  177,  185,  256,  185,
784       193,  252,  193,  197,  197,  197,  197,  197,  197,  197,
785       203,  249,  246,  203,  212,  212,  212,  212,  212,  212,
786
787       222,  222,  222,  222,  222,  222,  232,  232,  232,  232,
788       232,  232,  265,  265,  265,  265,  265,  265,  265,  415,
789       415,  415,  415,  415,  415,  415,  416,  416,  416,  416,
790       416,  416,  416,  424,  424,  424,  424,  424,  424,  424,
791       427,  427,  427,  427,  427,  427,  427,  437,  437,  437,
792       437,  437,  437,  437,  439,  439,  439,  439,  439,  439,
793       439,  245,  243,  242,  241,  240,  239,  238,  237,  198,
794       235,  230,  229,  228,  227,  226,  225,  220,  219,  218,
795       217,  216,  215,  210,  209,  208,  207,  206,  205,  204,
796       201,  199,  198,  196,  195,  194,  192,  191,  190,  189,
797
798       188,  187,  186,  184,  183,  182,  181,  180,  179,  178,
799       176,  175,  174,  173,  172,  171,  166,  163,  165,  161,
800       160,  158,  157,  156,  153,  151,  149,  148,  147,  146,
801       144,  140,  138,  136,  130,  129,  130,  129,  128,  127,
802       545,   51,  545,  545,  545,  545,  545,  545,  545,  545,
803       545,  545,  545,  545,  545,  545,  545,  545,  545,  545,
804       545,  545,  545,  545,  545,  545,  545,  545,  545,  545,
805       545,  545,  545,  545,  545,  545,  545,  545,  545,  545,
806       545,  545,  545,  545,  545,  545,  545,  545,  545,  545,
807       545,  545,  545,  545,  545,  545,  545
808
809     } ;
810
811 static yyconst flex_int16_t yy_chk[1598] =
812     {   0,
813         0,    3,    3,    3,    4,    4,    4,    5,    5,    5,
814         6,    6,    6,    9,    0,    3,   10,   11,    4,   12,
815         9,    5,  446,   10,    6,    7,    7,    7,    8,    8,
816         8,   13,   13,   11,  113,   12,   13,   13,  113,    7,
817        14,   14,    8,  123,   13,   14,   14,   15,   15,  299,
818        15,   56,   15,   14,   16,   16,  123,   16,  299,   16,
819        15,   17,   17,   18,   18,   56,   57,   16,   19,   19,
820        19,   20,   20,   20,   23,   23,   23,   24,   24,   24,
821        57,  131,   19,  132,  439,   20,  132,  167,   23,  167,
822        17,   24,   18,   21,   21,   21,   21,   21,   21,   21,
823
824        21,   21,   21,   21,   21,   21,  349,   21,   21,   21,
825        21,   21,   25,   25,   25,   26,   26,   26,   27,   27,
826        27,  300,  131,   21,   21,  164,   25,  200,  438,   26,
827       349,  200,   27,  164,   21,   22,   22,   22,   22,   22,
828        22,   22,   22,   22,   22,   22,   22,   22,  300,   22,
829        22,   22,   22,   22,   28,   28,   28,   29,   29,   29,
830        30,   30,   30,  324,  326,   22,   22,  437,   28,  324,
831       301,   29,  345,  345,   30,   60,   22,   31,   31,   31,
832        32,   32,   32,   33,   33,   33,   34,   34,   34,   60,
833       301,   31,  342,  379,   32,  326,  325,   33,  348,   83,
834
835        34,   35,   35,   35,   36,   36,   36,   37,   37,   37,
836        38,   38,   38,   83,  325,   35,  447,  348,   36,  432,
837       342,   37,  379,  447,   38,   39,   39,   39,   39,   39,
838        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
839        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
840        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
841        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
842        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
843        41,   41,   41,   42,   42,   42,   43,   43,   43,   44,
844        44,   44,  414,  427,   41,  425,  425,   42,  430,  428,
845
846        43,  414,  427,   44,   45,   45,   45,   45,   45,   45,
847        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
848        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
849        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
850        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
851        45,   45,   45,   45,   45,   45,   45,   45,   45,   47,
852        47,   47,   48,   48,   48,   49,   49,   50,   50,  443,
853        49,   70,   50,   47,  426,  443,   48,  354,   49,   78,
854        50,   54,   54,   54,   55,   55,   55,   59,   59,   59,
855        80,   80,   80,   78,   49,   88,   50,   90,   70,   87,
856
857        87,   87,   88,   89,   70,   91,   92,   70,  354,   88,
858        89,   90,   70,   92,   78,   97,  420,   89,  419,   91,
859        92,   94,   94,   94,  104,  104,  104,  105,   88,   97,
860       107,  107,  107,  110,  105,   88,   89,   90,   91,  119,
861       236,  105,  118,  118,  118,  343,  119,  110,  122,  122,
862       122,  236,  353,  119,  177,  177,  177,  178,  178,  178,
863       185,  185,  185,  186,  186,  186,  193,  193,  193,  264,
864       177,  353,  355,  178,  356,  357,  185,  343,  462,  186,
865       418,  264,  193,  194,  194,  194,  211,  211,  211,  212,
866       212,  212,  214,  214,  214,  217,  217,  217,  356,  194,
867
868       355,  364,  211,  357,  178,  212,  365,  186,  214,  462,
869       217,  219,  219,  219,  221,  221,  221,  498,  194,  222,
870       222,  222,  365,  364,  214,  366,  219,  224,  224,  224,
871       221,  225,  225,  225,  468,  222,  228,  228,  228,  231,
872       231,  231,  498,  224,  366,  381,  225,  232,  232,  232,
873       468,  228,  234,  234,  234,  231,  237,  237,  237,  244,
874       244,  244,  224,  232,  245,  245,  245,  381,  234,  246,
875       246,  246,  237,  237,  367,  244,  247,  247,  247,  248,
876       248,  248,  417,  248,  457,  408,  248,  249,  249,  249,
877       234,  247,  250,  250,  250,  368,  251,  251,  251,  378,
878
879       251,  367,  249,  251,  244,  370,  457,  250,  253,  253,
880       253,  254,  254,  254,  255,  255,  255,  370,  255,  378,
881       510,  255,  368,  380,  253,  434,  254,  256,  256,  256,
882       258,  258,  258,  259,  259,  259,  434,  259,  388,  510,
883       259,  407,  256,  380,  253,  258,  262,  262,  262,  266,
884       266,  266,  271,  271,  271,  273,  273,  273,  274,  274,
885       274,  388,  262,  371,  445,  266,  275,  275,  275,  409,
886       445,  273,  276,  276,  276,  371,  276,  463,  448,  276,
887       411,  409,  262,  413,  448,  266,  279,  279,  279,  280,
888       280,  280,  411,  280,  273,  413,  280,  285,  285,  285,
889
890       266,  279,  281,  281,  281,  421,  281,  486,  463,  281,
891       286,  286,  286,  285,  286,  421,  423,  286,  289,  289,
892       289,  290,  290,  290,  406,  290,  423,  422,  290,  291,
893       291,  291,  435,  289,  292,  292,  292,  405,  292,  422,
894       458,  292,  435,  486,  291,  295,  295,  295,  296,  296,
895       296,  297,  297,  297,  303,  303,  303,  305,  305,  305,
896       295,  436,  458,  296,  306,  306,  306,  297,  306,  444,
897       424,  306,  436,  305,  310,  310,  310,  312,  312,  312,
898       444,  312,  424,  469,  312,  315,  315,  315,  460,  449,
899       310,  316,  316,  316,  466,  316,  449,  474,  316,  469,
900
901       315,  317,  317,  317,  318,  318,  318,  487,  318,  467,
902       460,  318,  319,  319,  319,  452,  317,  320,  320,  320,
903       461,  320,  452,  464,  320,  466,  474,  319,  321,  321,
904       321,  328,  328,  328,  331,  331,  331,  465,  331,  396,
905       467,  331,  461,  487,  321,  464,  472,  328,  334,  334,
906       334,  470,  334,  471,  395,  334,  337,  337,  337,  465,
907       337,  492,  472,  337,  341,  341,  341,  347,  347,  347,
908       350,  350,  350,  351,  351,  351,  352,  352,  352,  475,
909       341,  394,  470,  347,  471,  350,  480,  492,  351,  490,
910       473,  352,  358,  358,  358,  359,  359,  359,  393,  359,
911
912       491,  476,  359,  347,  477,  347,  473,  358,  475,  480,
913       347,  360,  360,  360,  361,  361,  361,  476,  361,  499,
914       477,  361,  362,  362,  362,  490,  360,  363,  363,  363,
915       478,  363,  502,  511,  363,  386,  491,  362,  369,  369,
916       369,  385,  369,  494,  499,  369,  372,  372,  372,  384,
917       372,  479,  511,  372,  375,  375,  375,  502,  375,  478,
918       481,  375,  382,  382,  382,  387,  387,  387,  389,  389,
919       389,  390,  390,  390,  391,  391,  391,  382,  382,  494,
920       479,  387,  484,  481,  389,  482,  390,  390,  483,  391,
921       391,  392,  392,  392,  383,  392,  485,  488,  392,  397,
922
923       397,  397,  398,  398,  398,  484,  495,  392,  399,  399,
924       399,  400,  400,  400,  482,  397,  489,  483,  398,  485,
925       488,  528,  514,  344,  399,  397,  400,  400,  401,  401,
926       401,  340,  401,  528,  399,  401,  402,  402,  402,  489,
927       402,  514,  495,  402,  401,  330,  410,  410,  410,  429,
928       429,  429,  402,  403,  403,  403,  403,  403,  403,  403,
929       403,  403,  410,  327,  403,  429,  429,  403,  403,  403,
930       403,  403,  410,  503,  323,  504,  515,  516,  440,  440,
931       440,  493,  504,  403,  403,  404,  404,  404,  404,  404,
932       404,  404,  404,  404,  440,  515,  404,  517,  503,  404,
933
934       404,  404,  404,  404,  412,  412,  412,  493,  412,  520,
935       516,  412,  518,  309,  440,  404,  404,  451,  451,  451,
936       412,  415,  415,  415,  415,  415,  415,  415,  415,  415,
937       517,  518,  415,  451,  505,  415,  415,  415,  415,  415,
938       496,  505,  520,  508,  519,  521,  453,  453,  453,  497,
939       508,  415,  415,  416,  416,  416,  416,  416,  416,  416,
940       416,  416,  453,  519,  416,  500,  496,  416,  416,  416,
941       416,  416,  454,  454,  454,  497,  454,  501,  521,  454,
942       455,  455,  455,  416,  416,  456,  456,  456,  454,  456,
943       506,  500,  456,  459,  459,  459,  455,  459,  507,  509,
944
945       459,  456,  522,  501,  512,  513,  509,  523,  524,  459,
946       525,  512,  513,  526,  527,  506,  529,  530,  531,  532,
947       533,  522,  535,  507,  304,  529,  523,  298,  284,  533,
948       272,  532,  526,  527,  535,  536,  530,  531,  534,  534,
949       534,  524,  268,  525,  536,  537,  537,  537,  538,  538,
950       538,  540,  540,  540,  534,  541,  541,  541,  543,  543,
951       543,  537,  265,  263,  538,  261,  260,  540,  257,  252,
952       243,  541,  242,  241,  543,  546,  546,  546,  546,  546,
953       546,  546,  547,  547,  547,  547,  547,  547,  547,  548,
954       548,  548,  548,  548,  548,  548,  549,  549,  549,  549,
955
956       549,  549,  549,  550,  550,  550,  550,  550,  550,  550,
957       551,  551,  551,  551,  551,  551,  551,  552,  552,  552,
958       552,  552,  552,  552,  553,  553,  553,  553,  553,  553,
959       553,  554,  554,  554,  554,  554,  554,  554,  555,  555,
960       555,  555,  555,  555,  555,  556,  556,  556,  556,  556,
961       556,  556,  557,  557,  557,  240,  557,  558,  558,  558,
962       235,  558,  559,  559,  559,  230,  559,  560,  560,  560,
963       560,  560,  229,  560,  561,  227,  561,  562,  226,  562,
964       563,  220,  563,  564,  564,  564,  564,  564,  564,  564,
965       565,  218,  216,  565,  566,  566,  566,  566,  566,  566,
966
967       567,  567,  567,  567,  567,  567,  568,  568,  568,  568,
968       568,  568,  569,  569,  569,  569,  569,  569,  569,  570,
969       570,  570,  570,  570,  570,  570,  571,  571,  571,  571,
970       571,  571,  571,  572,  572,  572,  572,  572,  572,  572,
971       573,  573,  573,  573,  573,  573,  573,  574,  574,  574,
972       574,  574,  574,  574,  575,  575,  575,  575,  575,  575,
973       575,  215,  210,  209,  208,  205,  204,  203,  201,  197,
974       195,  192,  191,  190,  189,  188,  187,  184,  183,  182,
975       181,  180,  179,  176,  175,  173,  172,  171,  170,  169,
976       165,  163,  162,  161,  160,  159,  158,  157,  156,  155,
977
978       154,  153,  150,  149,  148,  147,  146,  143,  142,  141,
979       140,  137,  136,  135,  134,  133,  127,  126,  124,  121,
980       120,  116,  115,  114,  112,  108,  102,  101,  100,   99,
981        95,   85,   81,   77,   76,   75,   69,   68,   66,   63,
982        51,  545,  545,  545,  545,  545,  545,  545,  545,  545,
983       545,  545,  545,  545,  545,  545,  545,  545,  545,  545,
984       545,  545,  545,  545,  545,  545,  545,  545,  545,  545,
985       545,  545,  545,  545,  545,  545,  545,  545,  545,  545,
986       545,  545,  545,  545,  545,  545,  545,  545,  545,  545,
987       545,  545,  545,  545,  545,  545,  545
988
989     } ;
990
991 /* Table of booleans, true if rule could match eol. */
992 static yyconst flex_int32_t yy_rule_can_match_eol[90] =
993     {   0,
994 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 
995     1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
996     1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
997     1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 
998     0, 0, 0, 0, 1, 0, 0, 0, 1, 0,     };
999
1000 static yy_state_type yy_last_accepting_state;
1001 static char *yy_last_accepting_cpos;
1002
1003 extern int xbt_graph_parse__flex_debug;
1004 int xbt_graph_parse__flex_debug = 0;
1005
1006 /* The intent behind this definition is that it'll catch
1007  * any uses of REJECT which flex missed.
1008  */
1009 #define REJECT reject_used_but_not_detected
1010 #define yymore() yymore_used_but_not_detected
1011 #define YY_MORE_ADJ 0
1012 #define YY_RESTORE_YY_MORE_OFFSET
1013 char *xbt_graph_parse_text;
1014 /* Validating XML processor for xbt/graphxml.dtd.
1015  * Generated 2007/08/09 10:57:49.
1016  *
1017  * This program was generated with the FleXML XML processor generator.
1018  * FleXML is Copyright (C) 1999-2005 Kristoffer Rose.  All rights reserved.
1019  * FleXML is Copyright (C) 2003-2006 Martin Quinson.  All rights reserved.
1020  * (Id: flexml.pl,v 1.61 2006/09/13 16:34:33 wdowling Exp).
1021  * 
1022  * There are two, intertwined parts to this program, part A and part B.
1023  *
1024  * Part A
1025  * ------
1026  * 
1027  * Some parts, here collectively called "Part A", are found in the 
1028  * FleXML package.  They are Copyright (C) 1999-2005 Kristoffer Rose
1029  * and Copyright (C) 2003-2006 Martin Quinson. All rights reserved.
1030  *
1031  * You can redistribute, use, perform, display and/or modify "Part A"
1032  * provided the following two conditions hold:
1033  *
1034  * 1. The program is distributed WITHOUT ANY WARRANTY from the author of
1035  *    FleXML; without even the implied warranty of MERCHANTABILITY or
1036  *    FITNESS FOR A PARTICULAR PURPOSE.
1037  *
1038  * 2. The program distribution conditions do not in any way affect the
1039  *    distribution conditions of the FleXML system used to generate this
1040  *    file or any version of FleXML derived from that system.
1041  *
1042  * Notice that these are explicit rights granted to you for files
1043  * generated by the FleXML system.  For your rights in connection with
1044  * the FleXML system itself please consult the GNU General Public License.
1045  * 
1046  * Part B
1047  * ------
1048  * 
1049  * The other parts, here collectively called "Part B", and which came 
1050  * from the DTD used by FleXML to generate this program, can be 
1051  * distributed (or not, as the case may be) under the terms of whoever
1052  * wrote them, provided these terms respect and obey the two conditions 
1053  * above under the heading "Part A".
1054  *
1055  * The author of and contributors to FleXML specifically disclaim
1056  * any copyright interest in "Part B", unless "Part B" was written 
1057  * by the author of or contributors to FleXML.
1058  * 
1059  */
1060
1061 /* Version strings. */
1062 const char rcs_graphxml_flexml_skeleton[] =
1063  "$" "Id: skel,v 1.38 2006/09/12 18:05:45 wdowling Exp $";
1064 const char rcs_graphxml_flexml[] =
1065  "$" "Id: flexml.pl,v 1.61 2006/09/13 16:34:33 wdowling Exp $";
1066
1067 /* ANSI headers. */
1068 #include <unistd.h>
1069 #include <stdio.h>
1070 #include <string.h>
1071 #include <assert.h>
1072 #include <stdarg.h>
1073 #include <ctype.h>
1074
1075 #ifndef FLEXML_INDEXSTACKSIZE
1076 #define FLEXML_INDEXSTACKSIZE 1000
1077 #endif
1078
1079 /* Generated definitions. */
1080 #define FLEXML_yylineno
1081 #ifndef FLEXML_BUFFERSTACKSIZE
1082 #define FLEXML_BUFFERSTACKSIZE 1000000
1083 #endif
1084 #define FLEXML_NEED_BUFFERLIT
1085
1086 /* XML processor api. */
1087 /* FleXML-provided data. */
1088 int graphxml_pcdata_ix;
1089 extern char *graphxml_bufferstack;
1090 #define graphxml_pcdata (graphxml_bufferstack + graphxml_pcdata_ix)
1091 AT_graphxml_node_name AX_graphxml_node_name;
1092 #define A_graphxml_node_name (graphxml_bufferstack + AX_graphxml_node_name)
1093 AT_graphxml_edge_source AX_graphxml_edge_source;
1094 #define A_graphxml_edge_source (graphxml_bufferstack + AX_graphxml_edge_source)
1095 AT_graphxml_node_position_y AX_graphxml_node_position_y;
1096 #define A_graphxml_node_position_y (graphxml_bufferstack + AX_graphxml_node_position_y)
1097 AT_graphxml_node_position_x AX_graphxml_node_position_x;
1098 #define A_graphxml_node_position_x (graphxml_bufferstack + AX_graphxml_node_position_x)
1099 AT_graphxml_edge_data AX_graphxml_edge_data;
1100 #define A_graphxml_edge_data (graphxml_bufferstack + AX_graphxml_edge_data)
1101 AT_graphxml_edge_target AX_graphxml_edge_target;
1102 #define A_graphxml_edge_target (graphxml_bufferstack + AX_graphxml_edge_target)
1103 AT_graphxml_graph_isDirected AX_graphxml_graph_isDirected;
1104 #define A_graphxml_graph_isDirected AX_graphxml_graph_isDirected
1105 AT_graphxml_node_label AX_graphxml_node_label;
1106 #define A_graphxml_node_label (graphxml_bufferstack + AX_graphxml_node_label)
1107 AT_graphxml_node_data AX_graphxml_node_data;
1108 #define A_graphxml_node_data (graphxml_bufferstack + AX_graphxml_node_data)
1109 AT_graphxml_edge_label AX_graphxml_edge_label;
1110 #define A_graphxml_edge_label (graphxml_bufferstack + AX_graphxml_edge_label)
1111 AT_graphxml_edge_length AX_graphxml_edge_length;
1112 #define A_graphxml_edge_length (graphxml_bufferstack + AX_graphxml_edge_length)
1113 AT_graphxml_edge_name AX_graphxml_edge_name;
1114 #define A_graphxml_edge_name (graphxml_bufferstack + AX_graphxml_edge_name)
1115
1116 /* XML state. */
1117 #ifdef FLEX_DEBUG
1118 # define ENTER(state)   debug_enter(state,#state)
1119 # define LEAVE          debug_leave()
1120 # define SET(state)     debug_set(state,#state)
1121   static void debug_enter(int, const char*);
1122   static void debug_leave(void);
1123   static void debug_set(int, const char*);
1124 #else
1125 # define ENTER(state)   (yy_push_state(state))
1126 # define LEAVE          (yy_pop_state())
1127 # define SET(state)     BEGIN(state)
1128 #endif
1129
1130 /* Generic actions. */
1131 #define SKIP    /*skip*/
1132 #define SUCCEED        CLEANUP; return 0
1133
1134 #define FAIL    return fail
1135 static int fail(const char*, ...);
1136
1137 enum {flexml_max_err_msg_size = 512};
1138 static char flexml_err_msg[flexml_max_err_msg_size];
1139 const char * graphxml_parse_err_msg()
1140 {
1141     return flexml_err_msg;
1142 }
1143 static void reset_graphxml_parse_err_msg()
1144 {
1145     flexml_err_msg[0] = '\0';
1146 }
1147
1148 /* Cleanup */
1149 static void cleanup(void);
1150 #define CLEANUP  cleanup()
1151
1152 /* Text buffer stack handling. */
1153 char *graphxml_bufferstack = NULL;
1154 static int blimit = FLEXML_BUFFERSTACKSIZE;
1155 static int bnext = 1;
1156
1157 static int *indexstack = NULL;
1158 static int ilimit = FLEXML_INDEXSTACKSIZE;
1159 static int inext = 1;
1160
1161 #define BUFFERSET(P)  (P = bnext)
1162 #define BUFFERPUTC(C) (ck_blimit(), graphxml_bufferstack[bnext++] = (C))
1163 #define BUFFERDONE    (BUFFERPUTC('\0'))
1164
1165 #define BUFFERLITERAL(C, P) graphxml_bufferliteral(C, &(P), xbt_graph_parse_text)
1166
1167 /* after this is called, there are at least 2 slots left in the stack */
1168 static int ck_blimit()
1169 {
1170      if (bnext >= blimit) {
1171          blimit += FLEXML_BUFFERSTACKSIZE + 2;
1172          {
1173              char *temp = (char *) realloc(graphxml_bufferstack, blimit);
1174              assert(temp);
1175              graphxml_bufferstack = temp;
1176          }
1177      }
1178      return 0;
1179 }
1180
1181 /* after this is called, there are at least 2 slots left in the stack */
1182 static int ck_ilimit()
1183 {
1184      if (inext >= ilimit) {
1185          ilimit += FLEXML_INDEXSTACKSIZE + 2;
1186          {
1187              int *temp = (int *) realloc(indexstack, ilimit);
1188              assert(temp);
1189              indexstack = temp;
1190          }
1191      }
1192      return 0;
1193 }
1194
1195 #ifdef FLEXML_NEED_BUFFERLIT
1196 static void graphxml_bufferliteral(char c, int* pp, const char* text)
1197 {
1198   const char *s = (c ? strchr(text,c) : text-1), *e = strrchr(text,c);
1199   assert(s <= e); BUFFERSET(*pp);
1200   while (++s<e) {
1201     if (isspace(*s) && c) { BUFFERPUTC(' '); while (isspace(*s)) ++s; }
1202     else BUFFERPUTC(*s);
1203   }
1204   BUFFERDONE;
1205 }
1206 #endif
1207
1208 static void pushbuffer(int p)
1209 {
1210     ck_ilimit();
1211     indexstack[inext++] = p;
1212     indexstack[inext++] = bnext;    
1213 }
1214
1215 static int popbuffer(void)
1216 {
1217     assert(inext >= 2);
1218     bnext = indexstack[--inext];
1219     return indexstack[--inext];
1220 }
1221
1222 /* General internal entities are `unput' back onto the input stream... */
1223 #define ENTITYTEXT(T) \
1224   { char *s = (T), *e = s+strlen(s);\
1225     while (--e >= s) { unput(*e); }}
1226
1227 /* Flex standard options. */
1228 #define YY_NO_INPUT 1
1229 /* Flex user-requested options. */
1230 /* XML character classes (currently restricted to ASCII). */
1231 /* "Common syntactic structures." */
1232 /* "Names and Tokens." */
1233 /* Miscellaneous. */
1234 /* Parser states (flex `exclusive start conditions'):
1235  *
1236  * PROLOG       the XML prolog of the document before <?xml...>
1237  * DOCTYPE      the XML prolog of the document after <?xml...>
1238  * EPILOG       after the root element
1239  * INCOMMENT    inside an XML comment <!--....-->
1240  * INPI         inside an XML PI <?...?>
1241  * VALUE1       inside a '...'-delimited literal
1242  * VALUE2       inside a "..."-delimited literal
1243  * CDATA        inside a <![CDATA[...] ]> section.
1244  * ROOT_<tag>   expect root element <tag>
1245  * AL_<tag>     inside the attribute list for <tag>
1246  * IN_<tag>     inside a <tag> with element contents (ready for end tag)
1247  * IMPOSSIBLE   dummy to permit disabling rules; must be last
1248  */
1249
1250 /* State names. */
1251 const char* *graphxml_statenames=NULL;
1252
1253 #define INITIAL 0
1254 #define PROLOG 1
1255 #define DOCTYPE 2
1256 #define EPILOG 3
1257 #define INCOMMENT 4
1258 #define INPI 5
1259 #define VALUE1 6
1260 #define VALUE2 7
1261 #define CDATA 8
1262 #define ROOT_graphxml_graph 9
1263 #define AL_graphxml_graph 10
1264 #define S_graphxml_graph 11
1265 #define S_graphxml_graph_1 12
1266 #define S_graphxml_graph_2 13
1267 #define S_graphxml_graph_3 14
1268 #define S_graphxml_graph_4 15
1269 #define S_graphxml_graph_5 16
1270 #define E_graphxml_graph 17
1271 #define ROOT_graphxml_node 18
1272 #define AL_graphxml_node 19
1273 #define E_graphxml_node 20
1274 #define ROOT_graphxml_edge 21
1275 #define AL_graphxml_edge 22
1276 #define E_graphxml_edge 23
1277 #define IMPOSSIBLE 24
1278
1279 #ifndef YY_NO_UNISTD_H
1280 /* Special case for "unistd.h", since it is non-ANSI. We include it way
1281  * down here because we want the user's section 1 to have been scanned first.
1282  * The user has a chance to override it with an option.
1283  */
1284 #include <unistd.h>
1285 #endif
1286
1287 #ifndef YY_EXTRA_TYPE
1288 #define YY_EXTRA_TYPE void *
1289 #endif
1290
1291 static int yy_init_globals (void );
1292
1293 /* Macros after this point can all be overridden by user definitions in
1294  * section 1.
1295  */
1296
1297 #ifndef YY_SKIP_YYWRAP
1298 #ifdef __cplusplus
1299 extern "C" int xbt_graph_parse_wrap (void );
1300 #else
1301 extern int xbt_graph_parse_wrap (void );
1302 #endif
1303 #endif
1304
1305 #ifndef yytext_ptr
1306 static void yy_flex_strncpy (char *,yyconst char *,int );
1307 #endif
1308
1309 #ifdef YY_NEED_STRLEN
1310 static int yy_flex_strlen (yyconst char * );
1311 #endif
1312
1313 #ifndef YY_NO_INPUT
1314
1315 #ifdef __cplusplus
1316 static int yyinput (void );
1317 #else
1318 static int input (void );
1319 #endif
1320
1321 #endif
1322
1323         static int yy_start_stack_ptr = 0;
1324         static int yy_start_stack_depth = 0;
1325         static int *yy_start_stack = NULL;
1326     
1327     static void yy_push_state (int new_state );
1328     
1329     static void yy_pop_state (void );
1330     
1331 /* Amount of stuff to slurp up with each read. */
1332 #ifndef YY_READ_BUF_SIZE
1333 #define YY_READ_BUF_SIZE 8192
1334 #endif
1335
1336 /* Copy whatever the last rule matched to the standard output. */
1337 #ifndef ECHO
1338 /* This used to be an fputs(), but since the string might contain NUL's,
1339  * we now use fwrite().
1340  */
1341 #define ECHO (void) fwrite( xbt_graph_parse_text, xbt_graph_parse_leng, 1, xbt_graph_parse_out )
1342 #endif
1343
1344 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
1345  * is returned in "result".
1346  */
1347 #ifndef YY_INPUT
1348 #define YY_INPUT(buf,result,max_size) \
1349         if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
1350                 { \
1351                 int c = '*'; \
1352                 size_t n; \
1353                 for ( n = 0; n < max_size && \
1354                              (c = getc( xbt_graph_parse_in )) != EOF && c != '\n'; ++n ) \
1355                         buf[n] = (char) c; \
1356                 if ( c == '\n' ) \
1357                         buf[n++] = (char) c; \
1358                 if ( c == EOF && ferror( xbt_graph_parse_in ) ) \
1359                         YY_FATAL_ERROR( "input in flex scanner failed" ); \
1360                 result = n; \
1361                 } \
1362         else \
1363                 { \
1364                 errno=0; \
1365                 while ( (result = fread(buf, 1, max_size, xbt_graph_parse_in))==0 && ferror(xbt_graph_parse_in)) \
1366                         { \
1367                         if( errno != EINTR) \
1368                                 { \
1369                                 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1370                                 break; \
1371                                 } \
1372                         errno=0; \
1373                         clearerr(xbt_graph_parse_in); \
1374                         } \
1375                 }\
1376 \
1377
1378 #endif
1379
1380 /* No semi-colon after return; correct usage is to write "yyterminate();" -
1381  * we don't want an extra ';' after the "return" because that will cause
1382  * some compilers to complain about unreachable statements.
1383  */
1384 #ifndef yyterminate
1385 #define yyterminate() return YY_NULL
1386 #endif
1387
1388 /* Number of entries by which start-condition stack grows. */
1389 #ifndef YY_START_STACK_INCR
1390 #define YY_START_STACK_INCR 25
1391 #endif
1392
1393 /* Report a fatal error. */
1394 #ifndef YY_FATAL_ERROR
1395 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
1396 #endif
1397
1398 /* end tables serialization structures and prototypes */
1399
1400 /* Default declaration of generated scanner - a define so the user can
1401  * easily add parameters.
1402  */
1403 #ifndef YY_DECL
1404 #define YY_DECL_IS_OURS 1
1405
1406 extern int xbt_graph_parse_lex (void);
1407
1408 #define YY_DECL int xbt_graph_parse_lex (void)
1409 #endif /* !YY_DECL */
1410
1411 /* Code executed at the beginning of each rule, after xbt_graph_parse_text and xbt_graph_parse_leng
1412  * have been set up.
1413  */
1414 #ifndef YY_USER_ACTION
1415 #define YY_USER_ACTION
1416 #endif
1417
1418 /* Code executed at the end of each rule. */
1419 #ifndef YY_BREAK
1420 #define YY_BREAK break;
1421 #endif
1422
1423 #define YY_RULE_SETUP \
1424         YY_USER_ACTION
1425
1426 /** The main scanner function which does all the work.
1427  */
1428 YY_DECL
1429 {
1430         register yy_state_type yy_current_state;
1431         register char *yy_cp, *yy_bp;
1432         register int yy_act;
1433     
1434  /* Bypass Flex's default INITIAL state and begin by parsing the XML prolog. */
1435  SET(PROLOG);
1436  reset_graphxml_parse_err_msg();
1437  graphxml_bufferstack = (char *) malloc(FLEXML_BUFFERSTACKSIZE);
1438  assert(graphxml_bufferstack);
1439  #ifdef FLEX_DEBUG
1440  {
1441      int i;
1442      for (i = 0; i < blimit; i++) {
1443          graphxml_bufferstack[i] = '\377';
1444      }
1445  }
1446  #endif
1447  graphxml_bufferstack[0] = '\0';
1448  indexstack = (int *) malloc(FLEXML_INDEXSTACKSIZE * sizeof(int));
1449  assert(indexstack);
1450  indexstack[0] = 0;
1451
1452   /* FleXML_init */
1453   bnext = inext = 1;
1454   graphxml_bufferliteral('\0', &bnext, "-1.0");
1455   graphxml_bufferliteral('\0', &bnext, "-1.0");
1456   graphxml_bufferliteral('\0', &bnext, "-1.0");
1457   if(!graphxml_statenames) {graphxml_statenames= (const char **)calloc(IMPOSSIBLE,sizeof(char*));
1458   graphxml_statenames[PROLOG] = NULL;
1459   graphxml_statenames[DOCTYPE] = NULL;
1460   graphxml_statenames[EPILOG] = NULL;
1461   graphxml_statenames[INCOMMENT] = NULL;
1462   graphxml_statenames[INPI] = NULL;
1463   graphxml_statenames[VALUE1] = NULL;
1464   graphxml_statenames[VALUE2] = NULL;
1465   graphxml_statenames[CDATA] = NULL;
1466   graphxml_statenames[ROOT_graphxml_graph] = NULL;
1467   graphxml_statenames[AL_graphxml_graph] = NULL;
1468   graphxml_statenames[S_graphxml_graph] = "graph";
1469   graphxml_statenames[S_graphxml_graph_1] = "graph";
1470   graphxml_statenames[S_graphxml_graph_2] = "graph";
1471   graphxml_statenames[S_graphxml_graph_3] = "graph";
1472   graphxml_statenames[S_graphxml_graph_4] = "graph";
1473   graphxml_statenames[S_graphxml_graph_5] = "graph";
1474   graphxml_statenames[E_graphxml_graph] = "graph";
1475   graphxml_statenames[ROOT_graphxml_node] = NULL;
1476   graphxml_statenames[AL_graphxml_node] = NULL;
1477   graphxml_statenames[E_graphxml_node] = "node";
1478   graphxml_statenames[ROOT_graphxml_edge] = NULL;
1479   graphxml_statenames[AL_graphxml_edge] = NULL;
1480   graphxml_statenames[E_graphxml_edge] = "edge";
1481   }
1482
1483  /* COMMENTS and PIs: handled uniformly for efficiency. */
1484
1485         if ( !(yy_init) )
1486                 {
1487                 (yy_init) = 1;
1488
1489 #ifdef YY_USER_INIT
1490                 YY_USER_INIT;
1491 #endif
1492
1493                 if ( ! (yy_start) )
1494                         (yy_start) = 1; /* first start state */
1495
1496                 if ( ! xbt_graph_parse_in )
1497                         xbt_graph_parse_in = stdin;
1498
1499                 if ( ! xbt_graph_parse_out )
1500                         xbt_graph_parse_out = stdout;
1501
1502                 if ( ! YY_CURRENT_BUFFER ) {
1503                         xbt_graph_parse_ensure_buffer_stack ();
1504                         YY_CURRENT_BUFFER_LVALUE =
1505                                 xbt_graph_parse__create_buffer(xbt_graph_parse_in,YY_BUF_SIZE );
1506                 }
1507
1508                 xbt_graph_parse__load_buffer_state( );
1509                 }
1510
1511         while ( 1 )             /* loops until end-of-file is reached */
1512                 {
1513                 yy_cp = (yy_c_buf_p);
1514
1515                 /* Support of xbt_graph_parse_text. */
1516                 *yy_cp = (yy_hold_char);
1517
1518                 /* yy_bp points to the position in yy_ch_buf of the start of
1519                  * the current run.
1520                  */
1521                 yy_bp = yy_cp;
1522
1523                 yy_current_state = (yy_start);
1524 yy_match:
1525                 do
1526                         {
1527                         register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
1528                         if ( yy_accept[yy_current_state] )
1529                                 {
1530                                 (yy_last_accepting_state) = yy_current_state;
1531                                 (yy_last_accepting_cpos) = yy_cp;
1532                                 }
1533                         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1534                                 {
1535                                 yy_current_state = (int) yy_def[yy_current_state];
1536                                 if ( yy_current_state >= 546 )
1537                                         yy_c = yy_meta[(unsigned int) yy_c];
1538                                 }
1539                         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1540                         ++yy_cp;
1541                         }
1542                 while ( yy_base[yy_current_state] != 1542 );
1543
1544 yy_find_action:
1545                 yy_act = yy_accept[yy_current_state];
1546                 if ( yy_act == 0 )
1547                         { /* have to back up */
1548                         yy_cp = (yy_last_accepting_cpos);
1549                         yy_current_state = (yy_last_accepting_state);
1550                         yy_act = yy_accept[yy_current_state];
1551                         }
1552
1553                 YY_DO_BEFORE_ACTION;
1554
1555                 if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] )
1556                         {
1557                         int yyl;
1558                         for ( yyl = 0; yyl < xbt_graph_parse_leng; ++yyl )
1559                                 if ( xbt_graph_parse_text[yyl] == '\n' )
1560                                            
1561     xbt_graph_parse_lineno++;
1562 ;
1563                         }
1564
1565 do_action:      /* This label is used only to access EOF actions. */
1566
1567                 switch ( yy_act )
1568         { /* beginning of action switch */
1569                         case 0: /* must back up */
1570                         /* undo the effects of YY_DO_BEFORE_ACTION */
1571                         *yy_cp = (yy_hold_char);
1572                         yy_cp = (yy_last_accepting_cpos);
1573                         yy_current_state = (yy_last_accepting_state);
1574                         goto yy_find_action;
1575
1576 case 1:
1577 YY_RULE_SETUP
1578 ENTER(INCOMMENT);
1579         YY_BREAK
1580 case 2:
1581 YY_RULE_SETUP
1582 ENTER(INPI);
1583         YY_BREAK
1584
1585 case 3:
1586 YY_RULE_SETUP
1587 LEAVE;
1588         YY_BREAK
1589 case 4:
1590 case 5:
1591 case 6:
1592 /* rule 6 can match eol */
1593 YY_RULE_SETUP
1594 SKIP;
1595         YY_BREAK
1596 case YY_STATE_EOF(INCOMMENT):
1597 FAIL("EOF in comment.");
1598         YY_BREAK
1599
1600 case 7:
1601 YY_RULE_SETUP
1602 LEAVE;
1603         YY_BREAK
1604 case 8:
1605 case 9:
1606 /* rule 9 can match eol */
1607 YY_RULE_SETUP
1608 SKIP;
1609         YY_BREAK
1610 case YY_STATE_EOF(INPI):
1611 FAIL("EOF in PI (processing instruction).");
1612         YY_BREAK
1613
1614 /* SPACES: skipped uniformly */
1615 case 10:
1616 /* rule 10 can match eol */
1617 YY_RULE_SETUP
1618 SKIP;
1619         YY_BREAK
1620 /* PROLOG: determine root element and process it. */
1621
1622 case 11:
1623 /* rule 11 can match eol */
1624 YY_RULE_SETUP
1625 SET(DOCTYPE); 
1626         YY_BREAK
1627 case 12:
1628 /* rule 12 can match eol */
1629 YY_RULE_SETUP
1630 FAIL("Bad declaration %s.",xbt_graph_parse_text);
1631         YY_BREAK
1632
1633 case 13:
1634 /* rule 13 can match eol */
1635 YY_RULE_SETUP
1636 SET(ROOT_graphxml_edge);
1637         YY_BREAK
1638 case 14:
1639 /* rule 14 can match eol */
1640 YY_RULE_SETUP
1641 SET(ROOT_graphxml_node);
1642         YY_BREAK
1643 case 15:
1644 /* rule 15 can match eol */
1645 YY_RULE_SETUP
1646 SET(ROOT_graphxml_graph);
1647         YY_BREAK
1648 case 16:
1649 /* rule 16 can match eol */
1650 YY_RULE_SETUP
1651 FAIL("Bad declaration %s.",xbt_graph_parse_text);
1652         YY_BREAK
1653 case 17:
1654 YY_RULE_SETUP
1655 FAIL("Unexpected character `%c' in prolog.", xbt_graph_parse_text[0]);
1656         YY_BREAK
1657 case YY_STATE_EOF(PROLOG):
1658 case YY_STATE_EOF(DOCTYPE):
1659 FAIL("EOF in prolog.");
1660         YY_BREAK
1661
1662 /* RULES DERIVED FROM DTD. */
1663 /* <!-- Small DTD for xbt graphs. -->  */
1664 /*     isDirected (true|false) "true"
1665   * >  */
1666 case 18:
1667 /* rule 18 can match eol */
1668 YY_RULE_SETUP
1669 {
1670   AX_graphxml_graph_isDirected = A_graphxml_graph_isDirected_true;
1671   ENTER(AL_graphxml_graph); pushbuffer(0);
1672   }
1673         YY_BREAK
1674
1675 case 19:
1676 /* rule 19 can match eol */
1677 case 20:
1678 /* rule 20 can match eol */
1679 YY_RULE_SETUP
1680 A_graphxml_graph_isDirected = A_graphxml_graph_isDirected_true;
1681         YY_BREAK
1682 case 21:
1683 /* rule 21 can match eol */
1684 case 22:
1685 /* rule 22 can match eol */
1686 YY_RULE_SETUP
1687 A_graphxml_graph_isDirected = A_graphxml_graph_isDirected_false;
1688         YY_BREAK
1689 case 23:
1690 YY_RULE_SETUP
1691 {
1692   LEAVE; STag_graphxml_graph();graphxml_pcdata_ix = 0; ENTER(S_graphxml_graph);
1693  }
1694         YY_BREAK
1695 case 24:
1696 YY_RULE_SETUP
1697 {
1698   LEAVE; STag_graphxml_graph(); graphxml_pcdata_ix = 0; ETag_graphxml_graph(); popbuffer(); /* attribute */
1699   switch (YY_START) {
1700    case ROOT_graphxml_graph: SET(EPILOG); break;
1701   }
1702  }
1703         YY_BREAK
1704 case 25:
1705 YY_RULE_SETUP
1706 FAIL("Unexpected character `%c' in attribute list of graph element.", xbt_graph_parse_text[0]);
1707         YY_BREAK
1708 case 26:
1709 YY_RULE_SETUP
1710 FAIL("Bad attribute `%s' in `graph' element start tag.",xbt_graph_parse_text);
1711         YY_BREAK
1712 case YY_STATE_EOF(AL_graphxml_graph):
1713 FAIL("EOF in attribute list of `graph' element.");
1714         YY_BREAK
1715
1716 case 27:
1717 /* rule 27 can match eol */
1718 YY_RULE_SETUP
1719 {
1720   LEAVE;
1721   ETag_graphxml_graph();
1722   popbuffer(); /* attribute */
1723   switch (YY_START) {
1724    case ROOT_graphxml_graph: SET(EPILOG); break;
1725   }
1726  }
1727         YY_BREAK
1728 case 28:
1729 /* rule 28 can match eol */
1730 YY_RULE_SETUP
1731 FAIL("Unexpected end-tag `%s': `</graph>' expected.",xbt_graph_parse_text);
1732         YY_BREAK
1733 case 29:
1734 YY_RULE_SETUP
1735 FAIL("Unexpected character `%c': `</graph>' expected.",xbt_graph_parse_text[0]);
1736         YY_BREAK
1737 case YY_STATE_EOF(S_graphxml_graph_1):
1738 case YY_STATE_EOF(E_graphxml_graph):
1739 case YY_STATE_EOF(S_graphxml_graph_3):
1740 case YY_STATE_EOF(S_graphxml_graph_5):
1741 case YY_STATE_EOF(S_graphxml_graph):
1742 FAIL("Premature EOF: `</graph>' expected.");
1743         YY_BREAK
1744
1745 /*     label           CDATA                ""
1746   *     name            CDATA                #REQUIRED
1747   *     data            CDATA                ""
1748   *     position_x          CDATA                "-1.0"
1749   *     position_y          CDATA                "-1.0"
1750   * >  */
1751 case 30:
1752 /* rule 30 can match eol */
1753 YY_RULE_SETUP
1754 {
1755   AX_graphxml_node_label = 0;
1756   AX_graphxml_node_name = 0;
1757   AX_graphxml_node_data = 0;
1758   AX_graphxml_node_position_x = 1;
1759   AX_graphxml_node_position_y = 6;
1760   ENTER(AL_graphxml_node); pushbuffer(0);
1761   }
1762         YY_BREAK
1763
1764 case 31:
1765 /* rule 31 can match eol */
1766 YY_RULE_SETUP
1767 ENTER(VALUE1); BUFFERSET(AX_graphxml_node_label);
1768         YY_BREAK
1769 case 32:
1770 /* rule 32 can match eol */
1771 YY_RULE_SETUP
1772 ENTER(VALUE2); BUFFERSET(AX_graphxml_node_label);
1773         YY_BREAK
1774 case 33:
1775 /* rule 33 can match eol */
1776 YY_RULE_SETUP
1777 ENTER(VALUE1); BUFFERSET(AX_graphxml_node_name);
1778         YY_BREAK
1779 case 34:
1780 /* rule 34 can match eol */
1781 YY_RULE_SETUP
1782 ENTER(VALUE2); BUFFERSET(AX_graphxml_node_name);
1783         YY_BREAK
1784 case 35:
1785 /* rule 35 can match eol */
1786 YY_RULE_SETUP
1787 ENTER(VALUE1); BUFFERSET(AX_graphxml_node_data);
1788         YY_BREAK
1789 case 36:
1790 /* rule 36 can match eol */
1791 YY_RULE_SETUP
1792 ENTER(VALUE2); BUFFERSET(AX_graphxml_node_data);
1793         YY_BREAK
1794 case 37:
1795 /* rule 37 can match eol */
1796 YY_RULE_SETUP
1797 ENTER(VALUE1); BUFFERSET(AX_graphxml_node_position_x);
1798         YY_BREAK
1799 case 38:
1800 /* rule 38 can match eol */
1801 YY_RULE_SETUP
1802 ENTER(VALUE2); BUFFERSET(AX_graphxml_node_position_x);
1803         YY_BREAK
1804 case 39:
1805 /* rule 39 can match eol */
1806 YY_RULE_SETUP
1807 ENTER(VALUE1); BUFFERSET(AX_graphxml_node_position_y);
1808         YY_BREAK
1809 case 40:
1810 /* rule 40 can match eol */
1811 YY_RULE_SETUP
1812 ENTER(VALUE2); BUFFERSET(AX_graphxml_node_position_y);
1813         YY_BREAK
1814 case 41:
1815 YY_RULE_SETUP
1816 {
1817   if (!AX_graphxml_node_name) FAIL("Required attribute `name' not set for `node' element.");
1818   LEAVE; STag_graphxml_node();graphxml_pcdata_ix = 0; ENTER(E_graphxml_node);
1819  }
1820         YY_BREAK
1821 case 42:
1822 YY_RULE_SETUP
1823 {
1824   if (!AX_graphxml_node_name) FAIL("Required attribute `name' not set for `node' element.");
1825   LEAVE; STag_graphxml_node(); graphxml_pcdata_ix = 0; ETag_graphxml_node(); popbuffer(); /* attribute */
1826   switch (YY_START) {
1827    case S_graphxml_graph_2: case S_graphxml_graph_3: case S_graphxml_graph: SET(S_graphxml_graph_3); break;
1828    case ROOT_graphxml_node: SET(EPILOG); break;
1829   }
1830  }
1831         YY_BREAK
1832 case 43:
1833 YY_RULE_SETUP
1834 FAIL("Unexpected character `%c' in attribute list of node element.", xbt_graph_parse_text[0]);
1835         YY_BREAK
1836 case 44:
1837 YY_RULE_SETUP
1838 FAIL("Bad attribute `%s' in `node' element start tag.",xbt_graph_parse_text);
1839         YY_BREAK
1840 case YY_STATE_EOF(AL_graphxml_node):
1841 FAIL("EOF in attribute list of `node' element.");
1842         YY_BREAK
1843
1844 case 45:
1845 /* rule 45 can match eol */
1846 YY_RULE_SETUP
1847 {
1848   LEAVE;
1849   ETag_graphxml_node();
1850   popbuffer(); /* attribute */
1851   switch (YY_START) {
1852    case S_graphxml_graph_2: case S_graphxml_graph_3: case S_graphxml_graph: SET(S_graphxml_graph_3); break;
1853    case ROOT_graphxml_node: SET(EPILOG); break;
1854   }
1855  }
1856         YY_BREAK
1857 case 46:
1858 /* rule 46 can match eol */
1859 YY_RULE_SETUP
1860 FAIL("Unexpected end-tag `%s': `</node>' expected.",xbt_graph_parse_text);
1861         YY_BREAK
1862 case 47:
1863 YY_RULE_SETUP
1864 FAIL("Unexpected character `%c': `</node>' expected.",xbt_graph_parse_text[0]);
1865         YY_BREAK
1866 case YY_STATE_EOF(E_graphxml_node):
1867 FAIL("Premature EOF: `</node>' expected.");
1868         YY_BREAK
1869
1870 /*     label           CDATA                ""
1871   *     name            CDATA               #IMPLIED
1872   *     source          CDATA               #REQUIRED
1873   *     target          CDATA               #REQUIRED
1874   *     length          CDATA               "-1.0"
1875   *     data            CDATA               ""
1876   * >  */
1877 case 48:
1878 /* rule 48 can match eol */
1879 YY_RULE_SETUP
1880 {
1881   AX_graphxml_edge_label = 0;
1882   AX_graphxml_edge_name = 0;
1883   AX_graphxml_edge_source = 0;
1884   AX_graphxml_edge_target = 0;
1885   AX_graphxml_edge_length = 11;
1886   AX_graphxml_edge_data = 0;
1887   ENTER(AL_graphxml_edge); pushbuffer(0);
1888   }
1889         YY_BREAK
1890
1891 case 49:
1892 /* rule 49 can match eol */
1893 YY_RULE_SETUP
1894 ENTER(VALUE1); BUFFERSET(AX_graphxml_edge_label);
1895         YY_BREAK
1896 case 50:
1897 /* rule 50 can match eol */
1898 YY_RULE_SETUP
1899 ENTER(VALUE2); BUFFERSET(AX_graphxml_edge_label);
1900         YY_BREAK
1901 case 51:
1902 /* rule 51 can match eol */
1903 YY_RULE_SETUP
1904 ENTER(VALUE1); BUFFERSET(AX_graphxml_edge_name);
1905         YY_BREAK
1906 case 52:
1907 /* rule 52 can match eol */
1908 YY_RULE_SETUP
1909 ENTER(VALUE2); BUFFERSET(AX_graphxml_edge_name);
1910         YY_BREAK
1911 case 53:
1912 /* rule 53 can match eol */
1913 YY_RULE_SETUP
1914 ENTER(VALUE1); BUFFERSET(AX_graphxml_edge_source);
1915         YY_BREAK
1916 case 54:
1917 /* rule 54 can match eol */
1918 YY_RULE_SETUP
1919 ENTER(VALUE2); BUFFERSET(AX_graphxml_edge_source);
1920         YY_BREAK
1921 case 55:
1922 /* rule 55 can match eol */
1923 YY_RULE_SETUP
1924 ENTER(VALUE1); BUFFERSET(AX_graphxml_edge_target);
1925         YY_BREAK
1926 case 56:
1927 /* rule 56 can match eol */
1928 YY_RULE_SETUP
1929 ENTER(VALUE2); BUFFERSET(AX_graphxml_edge_target);
1930         YY_BREAK
1931 case 57:
1932 /* rule 57 can match eol */
1933 YY_RULE_SETUP
1934 ENTER(VALUE1); BUFFERSET(AX_graphxml_edge_length);
1935         YY_BREAK
1936 case 58:
1937 /* rule 58 can match eol */
1938 YY_RULE_SETUP
1939 ENTER(VALUE2); BUFFERSET(AX_graphxml_edge_length);
1940         YY_BREAK
1941 case 59:
1942 /* rule 59 can match eol */
1943 YY_RULE_SETUP
1944 ENTER(VALUE1); BUFFERSET(AX_graphxml_edge_data);
1945         YY_BREAK
1946 case 60:
1947 /* rule 60 can match eol */
1948 YY_RULE_SETUP
1949 ENTER(VALUE2); BUFFERSET(AX_graphxml_edge_data);
1950         YY_BREAK
1951 case 61:
1952 YY_RULE_SETUP
1953 {
1954   if (!AX_graphxml_edge_source) FAIL("Required attribute `source' not set for `edge' element.");
1955   if (!AX_graphxml_edge_target) FAIL("Required attribute `target' not set for `edge' element.");
1956   LEAVE; STag_graphxml_edge();graphxml_pcdata_ix = 0; ENTER(E_graphxml_edge);
1957  }
1958         YY_BREAK
1959 case 62:
1960 YY_RULE_SETUP
1961 {
1962   if (!AX_graphxml_edge_source) FAIL("Required attribute `source' not set for `edge' element.");
1963   if (!AX_graphxml_edge_target) FAIL("Required attribute `target' not set for `edge' element.");
1964   LEAVE; STag_graphxml_edge(); graphxml_pcdata_ix = 0; ETag_graphxml_edge(); popbuffer(); /* attribute */
1965   switch (YY_START) {
1966    case S_graphxml_graph_1: case S_graphxml_graph_3: case S_graphxml_graph_5: case S_graphxml_graph_4: case S_graphxml_graph: SET(S_graphxml_graph_5); break;
1967    case ROOT_graphxml_edge: SET(EPILOG); break;
1968   }
1969  }
1970         YY_BREAK
1971 case 63:
1972 YY_RULE_SETUP
1973 FAIL("Unexpected character `%c' in attribute list of edge element.", xbt_graph_parse_text[0]);
1974         YY_BREAK
1975 case 64:
1976 YY_RULE_SETUP
1977 FAIL("Bad attribute `%s' in `edge' element start tag.",xbt_graph_parse_text);
1978         YY_BREAK
1979 case YY_STATE_EOF(AL_graphxml_edge):
1980 FAIL("EOF in attribute list of `edge' element.");
1981         YY_BREAK
1982
1983 case 65:
1984 /* rule 65 can match eol */
1985 YY_RULE_SETUP
1986 {
1987   LEAVE;
1988   ETag_graphxml_edge();
1989   popbuffer(); /* attribute */
1990   switch (YY_START) {
1991    case S_graphxml_graph_1: case S_graphxml_graph_3: case S_graphxml_graph_5: case S_graphxml_graph_4: case S_graphxml_graph: SET(S_graphxml_graph_5); break;
1992    case ROOT_graphxml_edge: SET(EPILOG); break;
1993   }
1994  }
1995         YY_BREAK
1996 case 66:
1997 /* rule 66 can match eol */
1998 YY_RULE_SETUP
1999 FAIL("Unexpected end-tag `%s': `</edge>' expected.",xbt_graph_parse_text);
2000         YY_BREAK
2001 case 67:
2002 YY_RULE_SETUP
2003 FAIL("Unexpected character `%c': `</edge>' expected.",xbt_graph_parse_text[0]);
2004         YY_BREAK
2005 case YY_STATE_EOF(E_graphxml_edge):
2006 FAIL("Premature EOF: `</edge>' expected.");
2007         YY_BREAK
2008
2009 /* EPILOG: after the root element. */
2010
2011 case 68:
2012 YY_RULE_SETUP
2013 {SET(PROLOG); yyless(0); CLEANUP; return -1;}
2014         YY_BREAK
2015 case YY_STATE_EOF(EPILOG):
2016 SUCCEED;
2017         YY_BREAK
2018
2019 /* CHARACTER DATA. */
2020
2021 /* Non-defined standard entities... */
2022 case 69:
2023 YY_RULE_SETUP
2024 BUFFERPUTC('&');
2025         YY_BREAK
2026 case 70:
2027 YY_RULE_SETUP
2028 BUFFERPUTC('<');
2029         YY_BREAK
2030 case 71:
2031 YY_RULE_SETUP
2032 BUFFERPUTC('>');
2033         YY_BREAK
2034 case 72:
2035 YY_RULE_SETUP
2036 BUFFERPUTC('\'');
2037         YY_BREAK
2038 case 73:
2039 YY_RULE_SETUP
2040 BUFFERPUTC('"');
2041         YY_BREAK
2042 /* Character entities. */
2043 case 74:
2044 YY_RULE_SETUP
2045 BUFFERPUTC((unsigned char)atoi(xbt_graph_parse_text+2));
2046         YY_BREAK
2047 case 75:
2048 YY_RULE_SETUP
2049 BUFFERPUTC((unsigned char)strtol(xbt_graph_parse_text+3,NULL,16));
2050         YY_BREAK
2051
2052 case 76:
2053 /* rule 76 can match eol */
2054 case 77:
2055 /* rule 77 can match eol */
2056 case 78:
2057 /* rule 78 can match eol */
2058 case 79:
2059 /* rule 79 can match eol */
2060 YY_RULE_SETUP
2061 BUFFERPUTC('\n');
2062         YY_BREAK
2063
2064 case 80:
2065 YY_RULE_SETUP
2066 ENTER(CDATA);
2067         YY_BREAK
2068 case 81:
2069 YY_RULE_SETUP
2070 FAIL("Unexpected `]""]>' in character data.");
2071         YY_BREAK
2072
2073 case 82:
2074 YY_RULE_SETUP
2075 BUFFERDONE; LEAVE;
2076         YY_BREAK
2077 case YY_STATE_EOF(VALUE1):
2078 FAIL("EOF in literal (\"'\" expected).");
2079         YY_BREAK
2080
2081 case 83:
2082 YY_RULE_SETUP
2083 BUFFERDONE; LEAVE;
2084         YY_BREAK
2085 case YY_STATE_EOF(VALUE2):
2086 FAIL("EOF in literal (`\"' expected).");
2087         YY_BREAK
2088
2089 case 84:
2090 /* rule 84 can match eol */
2091 YY_RULE_SETUP
2092 BUFFERPUTC(xbt_graph_parse_text[0]);
2093         YY_BREAK
2094 case 85:
2095 YY_RULE_SETUP
2096 FAIL("Spurious `%c' in character data.",xbt_graph_parse_text[0]);
2097         YY_BREAK
2098
2099 case 86:
2100 YY_RULE_SETUP
2101 LEAVE;
2102         YY_BREAK
2103 /* "]""]"               BUFFERPUTC(xbt_graph_parse_text[0]); BUFFERPUTC(xbt_graph_parse_text[1]); */
2104 case 87:
2105 YY_RULE_SETUP
2106 BUFFERPUTC(xbt_graph_parse_text[0]);
2107         YY_BREAK
2108 case YY_STATE_EOF(CDATA):
2109 FAIL("EOF in CDATA section.");
2110         YY_BREAK
2111
2112 /* Impossible rules to avoid warnings from flex(1). */
2113 /* Ideally, this should be replaced by code in flexml.pl that
2114     generates just the states not covered by other rules. */
2115
2116 case 88:
2117 /* rule 88 can match eol */
2118 YY_RULE_SETUP
2119 FAIL("Syntax error on character `%c'.", xbt_graph_parse_text[0]);
2120         YY_BREAK
2121
2122 case 89:
2123 YY_RULE_SETUP
2124 ECHO;
2125         YY_BREAK
2126 case YY_STATE_EOF(INITIAL):
2127 case YY_STATE_EOF(ROOT_graphxml_graph):
2128 case YY_STATE_EOF(S_graphxml_graph_2):
2129 case YY_STATE_EOF(S_graphxml_graph_4):
2130 case YY_STATE_EOF(ROOT_graphxml_node):
2131 case YY_STATE_EOF(ROOT_graphxml_edge):
2132 case YY_STATE_EOF(IMPOSSIBLE):
2133         yyterminate();
2134
2135         case YY_END_OF_BUFFER:
2136                 {
2137                 /* Amount of text matched not including the EOB char. */
2138                 int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
2139
2140                 /* Undo the effects of YY_DO_BEFORE_ACTION. */
2141                 *yy_cp = (yy_hold_char);
2142                 YY_RESTORE_YY_MORE_OFFSET
2143
2144                 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
2145                         {
2146                         /* We're scanning a new file or input source.  It's
2147                          * possible that this happened because the user
2148                          * just pointed xbt_graph_parse_in at a new source and called
2149                          * xbt_graph_parse_lex().  If so, then we have to assure
2150                          * consistency between YY_CURRENT_BUFFER and our
2151                          * globals.  Here is the right place to do so, because
2152                          * this is the first action (other than possibly a
2153                          * back-up) that will match for the new input source.
2154                          */
2155                         (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
2156                         YY_CURRENT_BUFFER_LVALUE->yy_input_file = xbt_graph_parse_in;
2157                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
2158                         }
2159
2160                 /* Note that here we test for yy_c_buf_p "<=" to the position
2161                  * of the first EOB in the buffer, since yy_c_buf_p will
2162                  * already have been incremented past the NUL character
2163                  * (since all states make transitions on EOB to the
2164                  * end-of-buffer state).  Contrast this with the test
2165                  * in input().
2166                  */
2167                 if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
2168                         { /* This was really a NUL. */
2169                         yy_state_type yy_next_state;
2170
2171                         (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
2172
2173                         yy_current_state = yy_get_previous_state(  );
2174
2175                         /* Okay, we're now positioned to make the NUL
2176                          * transition.  We couldn't have
2177                          * yy_get_previous_state() go ahead and do it
2178                          * for us because it doesn't know how to deal
2179                          * with the possibility of jamming (and we don't
2180                          * want to build jamming into it because then it
2181                          * will run more slowly).
2182                          */
2183
2184                         yy_next_state = yy_try_NUL_trans( yy_current_state );
2185
2186                         yy_bp = (yytext_ptr) + YY_MORE_ADJ;
2187
2188                         if ( yy_next_state )
2189                                 {
2190                                 /* Consume the NUL. */
2191                                 yy_cp = ++(yy_c_buf_p);
2192                                 yy_current_state = yy_next_state;
2193                                 goto yy_match;
2194                                 }
2195
2196                         else
2197                                 {
2198                                 yy_cp = (yy_c_buf_p);
2199                                 goto yy_find_action;
2200                                 }
2201                         }
2202
2203                 else switch ( yy_get_next_buffer(  ) )
2204                         {
2205                         case EOB_ACT_END_OF_FILE:
2206                                 {
2207                                 (yy_did_buffer_switch_on_eof) = 0;
2208
2209                                 if ( xbt_graph_parse_wrap( ) )
2210                                         {
2211                                         /* Note: because we've taken care in
2212                                          * yy_get_next_buffer() to have set up
2213                                          * xbt_graph_parse_text, we can now set up
2214                                          * yy_c_buf_p so that if some total
2215                                          * hoser (like flex itself) wants to
2216                                          * call the scanner after we return the
2217                                          * YY_NULL, it'll still work - another
2218                                          * YY_NULL will get returned.
2219                                          */
2220                                         (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
2221
2222                                         yy_act = YY_STATE_EOF(YY_START);
2223                                         goto do_action;
2224                                         }
2225
2226                                 else
2227                                         {
2228                                         if ( ! (yy_did_buffer_switch_on_eof) )
2229                                                 YY_NEW_FILE;
2230                                         }
2231                                 break;
2232                                 }
2233
2234                         case EOB_ACT_CONTINUE_SCAN:
2235                                 (yy_c_buf_p) =
2236                                         (yytext_ptr) + yy_amount_of_matched_text;
2237
2238                                 yy_current_state = yy_get_previous_state(  );
2239
2240                                 yy_cp = (yy_c_buf_p);
2241                                 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
2242                                 goto yy_match;
2243
2244                         case EOB_ACT_LAST_MATCH:
2245                                 (yy_c_buf_p) =
2246                                 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
2247
2248                                 yy_current_state = yy_get_previous_state(  );
2249
2250                                 yy_cp = (yy_c_buf_p);
2251                                 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
2252                                 goto yy_find_action;
2253                         }
2254                 break;
2255                 }
2256
2257         default:
2258                 YY_FATAL_ERROR(
2259                         "fatal flex scanner internal error--no action found" );
2260         } /* end of action switch */
2261                 } /* end of scanning one token */
2262 } /* end of xbt_graph_parse_lex */
2263
2264 /* yy_get_next_buffer - try to read in a new buffer
2265  *
2266  * Returns a code representing an action:
2267  *      EOB_ACT_LAST_MATCH -
2268  *      EOB_ACT_CONTINUE_SCAN - continue scanning from current position
2269  *      EOB_ACT_END_OF_FILE - end of file
2270  */
2271 static int yy_get_next_buffer (void)
2272 {
2273         register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
2274         register char *source = (yytext_ptr);
2275         register int number_to_move, i;
2276         int ret_val;
2277
2278         if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
2279                 YY_FATAL_ERROR(
2280                 "fatal flex scanner internal error--end of buffer missed" );
2281
2282         if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
2283                 { /* Don't try to fill the buffer, so this is an EOF. */
2284                 if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
2285                         {
2286                         /* We matched a single character, the EOB, so
2287                          * treat this as a final EOF.
2288                          */
2289                         return EOB_ACT_END_OF_FILE;
2290                         }
2291
2292                 else
2293                         {
2294                         /* We matched some text prior to the EOB, first
2295                          * process it.
2296                          */
2297                         return EOB_ACT_LAST_MATCH;
2298                         }
2299                 }
2300
2301         /* Try to read more data. */
2302
2303         /* First move last chars to start of buffer. */
2304         number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
2305
2306         for ( i = 0; i < number_to_move; ++i )
2307                 *(dest++) = *(source++);
2308
2309         if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
2310                 /* don't do the read, it's not guaranteed to return an EOF,
2311                  * just force an EOF
2312                  */
2313                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
2314
2315         else
2316                 {
2317                         int num_to_read =
2318                         YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
2319
2320                 while ( num_to_read <= 0 )
2321                         { /* Not enough room in the buffer - grow it. */
2322
2323                         /* just a shorter name for the current buffer */
2324                         YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
2325
2326                         int yy_c_buf_p_offset =
2327                                 (int) ((yy_c_buf_p) - b->yy_ch_buf);
2328
2329                         if ( b->yy_is_our_buffer )
2330                                 {
2331                                 int new_size = b->yy_buf_size * 2;
2332
2333                                 if ( new_size <= 0 )
2334                                         b->yy_buf_size += b->yy_buf_size / 8;
2335                                 else
2336                                         b->yy_buf_size *= 2;
2337
2338                                 b->yy_ch_buf = (char *)
2339                                         /* Include room in for 2 EOB chars. */
2340                                         xbt_graph_parse_realloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
2341                                 }
2342                         else
2343                                 /* Can't grow it, we don't own it. */
2344                                 b->yy_ch_buf = 0;
2345
2346                         if ( ! b->yy_ch_buf )
2347                                 YY_FATAL_ERROR(
2348                                 "fatal error - scanner input buffer overflow" );
2349
2350                         (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
2351
2352                         num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
2353                                                 number_to_move - 1;
2354
2355                         }
2356
2357                 if ( num_to_read > YY_READ_BUF_SIZE )
2358                         num_to_read = YY_READ_BUF_SIZE;
2359
2360                 /* Read in more data. */
2361                 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
2362                         (yy_n_chars), (size_t) num_to_read );
2363
2364                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
2365                 }
2366
2367         if ( (yy_n_chars) == 0 )
2368                 {
2369                 if ( number_to_move == YY_MORE_ADJ )
2370                         {
2371                         ret_val = EOB_ACT_END_OF_FILE;
2372                         xbt_graph_parse_restart(xbt_graph_parse_in  );
2373                         }
2374
2375                 else
2376                         {
2377                         ret_val = EOB_ACT_LAST_MATCH;
2378                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
2379                                 YY_BUFFER_EOF_PENDING;
2380                         }
2381                 }
2382
2383         else
2384                 ret_val = EOB_ACT_CONTINUE_SCAN;
2385
2386         (yy_n_chars) += number_to_move;
2387         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
2388         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
2389
2390         (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
2391
2392         return ret_val;
2393 }
2394
2395 /* yy_get_previous_state - get the state just before the EOB char was reached */
2396
2397     static yy_state_type yy_get_previous_state (void)
2398 {
2399         register yy_state_type yy_current_state;
2400         register char *yy_cp;
2401     
2402         yy_current_state = (yy_start);
2403
2404         for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
2405                 {
2406                 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
2407                 if ( yy_accept[yy_current_state] )
2408                         {
2409                         (yy_last_accepting_state) = yy_current_state;
2410                         (yy_last_accepting_cpos) = yy_cp;
2411                         }
2412                 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2413                         {
2414                         yy_current_state = (int) yy_def[yy_current_state];
2415                         if ( yy_current_state >= 546 )
2416                                 yy_c = yy_meta[(unsigned int) yy_c];
2417                         }
2418                 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2419                 }
2420
2421         return yy_current_state;
2422 }
2423
2424 /* yy_try_NUL_trans - try to make a transition on the NUL character
2425  *
2426  * synopsis
2427  *      next_state = yy_try_NUL_trans( current_state );
2428  */
2429     static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
2430 {
2431         register int yy_is_jam;
2432         register char *yy_cp = (yy_c_buf_p);
2433
2434         register YY_CHAR yy_c = 1;
2435         if ( yy_accept[yy_current_state] )
2436                 {
2437                 (yy_last_accepting_state) = yy_current_state;
2438                 (yy_last_accepting_cpos) = yy_cp;
2439                 }
2440         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2441                 {
2442                 yy_current_state = (int) yy_def[yy_current_state];
2443                 if ( yy_current_state >= 546 )
2444                         yy_c = yy_meta[(unsigned int) yy_c];
2445                 }
2446         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2447         yy_is_jam = (yy_current_state == 545);
2448
2449         return yy_is_jam ? 0 : yy_current_state;
2450 }
2451
2452 #ifndef YY_NO_INPUT
2453 #ifdef __cplusplus
2454     static int yyinput (void)
2455 #else
2456     static int input  (void)
2457 #endif
2458
2459 {
2460         int c;
2461     
2462         *(yy_c_buf_p) = (yy_hold_char);
2463
2464         if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
2465                 {
2466                 /* yy_c_buf_p now points to the character we want to return.
2467                  * If this occurs *before* the EOB characters, then it's a
2468                  * valid NUL; if not, then we've hit the end of the buffer.
2469                  */
2470                 if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
2471                         /* This was really a NUL. */
2472                         *(yy_c_buf_p) = '\0';
2473
2474                 else
2475                         { /* need more input */
2476                         int offset = (yy_c_buf_p) - (yytext_ptr);
2477                         ++(yy_c_buf_p);
2478
2479                         switch ( yy_get_next_buffer(  ) )
2480                                 {
2481                                 case EOB_ACT_LAST_MATCH:
2482                                         /* This happens because yy_g_n_b()
2483                                          * sees that we've accumulated a
2484                                          * token and flags that we need to
2485                                          * try matching the token before
2486                                          * proceeding.  But for input(),
2487                                          * there's no matching to consider.
2488                                          * So convert the EOB_ACT_LAST_MATCH
2489                                          * to EOB_ACT_END_OF_FILE.
2490                                          */
2491
2492                                         /* Reset buffer status. */
2493                                         xbt_graph_parse_restart(xbt_graph_parse_in );
2494
2495                                         /*FALLTHROUGH*/
2496
2497                                 case EOB_ACT_END_OF_FILE:
2498                                         {
2499                                         if ( xbt_graph_parse_wrap( ) )
2500                                                 return EOF;
2501
2502                                         if ( ! (yy_did_buffer_switch_on_eof) )
2503                                                 YY_NEW_FILE;
2504 #ifdef __cplusplus
2505                                         return yyinput();
2506 #else
2507                                         return input();
2508 #endif
2509                                         }
2510
2511                                 case EOB_ACT_CONTINUE_SCAN:
2512                                         (yy_c_buf_p) = (yytext_ptr) + offset;
2513                                         break;
2514                                 }
2515                         }
2516                 }
2517
2518         c = *(unsigned char *) (yy_c_buf_p);    /* cast for 8-bit char's */
2519         *(yy_c_buf_p) = '\0';   /* preserve xbt_graph_parse_text */
2520         (yy_hold_char) = *++(yy_c_buf_p);
2521
2522         if ( c == '\n' )
2523                    
2524     xbt_graph_parse_lineno++;
2525 ;
2526
2527         return c;
2528 }
2529 #endif  /* ifndef YY_NO_INPUT */
2530
2531 /** Immediately switch to a different input stream.
2532  * @param input_file A readable stream.
2533  * 
2534  * @note This function does not reset the start condition to @c INITIAL .
2535  */
2536     void xbt_graph_parse_restart  (FILE * input_file )
2537 {
2538     
2539         if ( ! YY_CURRENT_BUFFER ){
2540         xbt_graph_parse_ensure_buffer_stack ();
2541                 YY_CURRENT_BUFFER_LVALUE =
2542             xbt_graph_parse__create_buffer(xbt_graph_parse_in,YY_BUF_SIZE );
2543         }
2544
2545         xbt_graph_parse__init_buffer(YY_CURRENT_BUFFER,input_file );
2546         xbt_graph_parse__load_buffer_state( );
2547 }
2548
2549 /** Switch to a different input buffer.
2550  * @param new_buffer The new input buffer.
2551  * 
2552  */
2553     void xbt_graph_parse__switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
2554 {
2555     
2556         /* TODO. We should be able to replace this entire function body
2557          * with
2558          *              xbt_graph_parse_pop_buffer_state();
2559          *              xbt_graph_parse_push_buffer_state(new_buffer);
2560      */
2561         xbt_graph_parse_ensure_buffer_stack ();
2562         if ( YY_CURRENT_BUFFER == new_buffer )
2563                 return;
2564
2565         if ( YY_CURRENT_BUFFER )
2566                 {
2567                 /* Flush out information for old buffer. */
2568                 *(yy_c_buf_p) = (yy_hold_char);
2569                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
2570                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
2571                 }
2572
2573         YY_CURRENT_BUFFER_LVALUE = new_buffer;
2574         xbt_graph_parse__load_buffer_state( );
2575
2576         /* We don't actually know whether we did this switch during
2577          * EOF (xbt_graph_parse_wrap()) processing, but the only time this flag
2578          * is looked at is after xbt_graph_parse_wrap() is called, so it's safe
2579          * to go ahead and always set it.
2580          */
2581         (yy_did_buffer_switch_on_eof) = 1;
2582 }
2583
2584 static void xbt_graph_parse__load_buffer_state  (void)
2585 {
2586         (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
2587         (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
2588         xbt_graph_parse_in = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
2589         (yy_hold_char) = *(yy_c_buf_p);
2590 }
2591
2592 /** Allocate and initialize an input buffer state.
2593  * @param file A readable stream.
2594  * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
2595  * 
2596  * @return the allocated buffer state.
2597  */
2598     YY_BUFFER_STATE xbt_graph_parse__create_buffer  (FILE * file, int  size )
2599 {
2600         YY_BUFFER_STATE b;
2601     
2602         b = (YY_BUFFER_STATE) xbt_graph_parse_alloc(sizeof( struct yy_buffer_state )  );
2603         if ( ! b )
2604                 YY_FATAL_ERROR( "out of dynamic memory in xbt_graph_parse__create_buffer()" );
2605
2606         b->yy_buf_size = size;
2607
2608         /* yy_ch_buf has to be 2 characters longer than the size given because
2609          * we need to put in 2 end-of-buffer characters.
2610          */
2611         b->yy_ch_buf = (char *) xbt_graph_parse_alloc(b->yy_buf_size + 2  );
2612         if ( ! b->yy_ch_buf )
2613                 YY_FATAL_ERROR( "out of dynamic memory in xbt_graph_parse__create_buffer()" );
2614
2615         b->yy_is_our_buffer = 1;
2616
2617         xbt_graph_parse__init_buffer(b,file );
2618
2619         return b;
2620 }
2621
2622 /** Destroy the buffer.
2623  * @param b a buffer created with xbt_graph_parse__create_buffer()
2624  * 
2625  */
2626     void xbt_graph_parse__delete_buffer (YY_BUFFER_STATE  b )
2627 {
2628     
2629         if ( ! b )
2630                 return;
2631
2632         if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
2633                 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
2634
2635         if ( b->yy_is_our_buffer )
2636                 xbt_graph_parse_free((void *) b->yy_ch_buf  );
2637
2638         xbt_graph_parse_free((void *) b  );
2639 }
2640
2641 #ifndef __cplusplus
2642 extern int isatty (int );
2643 #endif /* __cplusplus */
2644     
2645 /* Initializes or reinitializes a buffer.
2646  * This function is sometimes called more than once on the same buffer,
2647  * such as during a xbt_graph_parse_restart() or at EOF.
2648  */
2649     static void xbt_graph_parse__init_buffer  (YY_BUFFER_STATE  b, FILE * file )
2650
2651 {
2652         int oerrno = errno;
2653     
2654         xbt_graph_parse__flush_buffer(b );
2655
2656         b->yy_input_file = file;
2657         b->yy_fill_buffer = 1;
2658
2659     /* If b is the current buffer, then xbt_graph_parse__init_buffer was _probably_
2660      * called from xbt_graph_parse_restart() or through yy_get_next_buffer.
2661      * In that case, we don't want to reset the lineno or column.
2662      */
2663     if (b != YY_CURRENT_BUFFER){
2664         b->yy_bs_lineno = 1;
2665         b->yy_bs_column = 0;
2666     }
2667
2668         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
2669     
2670         errno = oerrno;
2671 }
2672
2673 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
2674  * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
2675  * 
2676  */
2677     void xbt_graph_parse__flush_buffer (YY_BUFFER_STATE  b )
2678 {
2679         if ( ! b )
2680                 return;
2681
2682         b->yy_n_chars = 0;
2683
2684         /* We always need two end-of-buffer characters.  The first causes
2685          * a transition to the end-of-buffer state.  The second causes
2686          * a jam in that state.
2687          */
2688         b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
2689         b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
2690
2691         b->yy_buf_pos = &b->yy_ch_buf[0];
2692
2693         b->yy_at_bol = 1;
2694         b->yy_buffer_status = YY_BUFFER_NEW;
2695
2696         if ( b == YY_CURRENT_BUFFER )
2697                 xbt_graph_parse__load_buffer_state( );
2698 }
2699
2700 /** Pushes the new state onto the stack. The new state becomes
2701  *  the current state. This function will allocate the stack
2702  *  if necessary.
2703  *  @param new_buffer The new state.
2704  *  
2705  */
2706 void xbt_graph_parse_push_buffer_state (YY_BUFFER_STATE new_buffer )
2707 {
2708         if (new_buffer == NULL)
2709                 return;
2710
2711         xbt_graph_parse_ensure_buffer_stack();
2712
2713         /* This block is copied from xbt_graph_parse__switch_to_buffer. */
2714         if ( YY_CURRENT_BUFFER )
2715                 {
2716                 /* Flush out information for old buffer. */
2717                 *(yy_c_buf_p) = (yy_hold_char);
2718                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
2719                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
2720                 }
2721
2722         /* Only push if top exists. Otherwise, replace top. */
2723         if (YY_CURRENT_BUFFER)
2724                 (yy_buffer_stack_top)++;
2725         YY_CURRENT_BUFFER_LVALUE = new_buffer;
2726
2727         /* copied from xbt_graph_parse__switch_to_buffer. */
2728         xbt_graph_parse__load_buffer_state( );
2729         (yy_did_buffer_switch_on_eof) = 1;
2730 }
2731
2732 /** Removes and deletes the top of the stack, if present.
2733  *  The next element becomes the new top.
2734  *  
2735  */
2736 void xbt_graph_parse_pop_buffer_state (void)
2737 {
2738         if (!YY_CURRENT_BUFFER)
2739                 return;
2740
2741         xbt_graph_parse__delete_buffer(YY_CURRENT_BUFFER );
2742         YY_CURRENT_BUFFER_LVALUE = NULL;
2743         if ((yy_buffer_stack_top) > 0)
2744                 --(yy_buffer_stack_top);
2745
2746         if (YY_CURRENT_BUFFER) {
2747                 xbt_graph_parse__load_buffer_state( );
2748                 (yy_did_buffer_switch_on_eof) = 1;
2749         }
2750 }
2751
2752 /* Allocates the stack if it does not exist.
2753  *  Guarantees space for at least one push.
2754  */
2755 static void xbt_graph_parse_ensure_buffer_stack (void)
2756 {
2757         int num_to_alloc;
2758     
2759         if (!(yy_buffer_stack)) {
2760
2761                 /* First allocation is just for 2 elements, since we don't know if this
2762                  * scanner will even need a stack. We use 2 instead of 1 to avoid an
2763                  * immediate realloc on the next call.
2764          */
2765                 num_to_alloc = 1;
2766                 (yy_buffer_stack) = (struct yy_buffer_state**)xbt_graph_parse_alloc
2767                                                                 (num_to_alloc * sizeof(struct yy_buffer_state*)
2768                                                                 );
2769                 
2770                 memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
2771                                 
2772                 (yy_buffer_stack_max) = num_to_alloc;
2773                 (yy_buffer_stack_top) = 0;
2774                 return;
2775         }
2776
2777         if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
2778
2779                 /* Increase the buffer to prepare for a possible push. */
2780                 int grow_size = 8 /* arbitrary grow size */;
2781
2782                 num_to_alloc = (yy_buffer_stack_max) + grow_size;
2783                 (yy_buffer_stack) = (struct yy_buffer_state**)xbt_graph_parse_realloc
2784                                                                 ((yy_buffer_stack),
2785                                                                 num_to_alloc * sizeof(struct yy_buffer_state*)
2786                                                                 );
2787
2788                 /* zero only the new slots.*/
2789                 memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
2790                 (yy_buffer_stack_max) = num_to_alloc;
2791         }
2792 }
2793
2794 /** Setup the input buffer state to scan directly from a user-specified character buffer.
2795  * @param base the character buffer
2796  * @param size the size in bytes of the character buffer
2797  * 
2798  * @return the newly allocated buffer state object. 
2799  */
2800 YY_BUFFER_STATE xbt_graph_parse__scan_buffer  (char * base, yy_size_t  size )
2801 {
2802         YY_BUFFER_STATE b;
2803     
2804         if ( size < 2 ||
2805              base[size-2] != YY_END_OF_BUFFER_CHAR ||
2806              base[size-1] != YY_END_OF_BUFFER_CHAR )
2807                 /* They forgot to leave room for the EOB's. */
2808                 return 0;
2809
2810         b = (YY_BUFFER_STATE) xbt_graph_parse_alloc(sizeof( struct yy_buffer_state )  );
2811         if ( ! b )
2812                 YY_FATAL_ERROR( "out of dynamic memory in xbt_graph_parse__scan_buffer()" );
2813
2814         b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
2815         b->yy_buf_pos = b->yy_ch_buf = base;
2816         b->yy_is_our_buffer = 0;
2817         b->yy_input_file = 0;
2818         b->yy_n_chars = b->yy_buf_size;
2819         b->yy_is_interactive = 0;
2820         b->yy_at_bol = 1;
2821         b->yy_fill_buffer = 0;
2822         b->yy_buffer_status = YY_BUFFER_NEW;
2823
2824         xbt_graph_parse__switch_to_buffer(b  );
2825
2826         return b;
2827 }
2828
2829 /** Setup the input buffer state to scan a string. The next call to xbt_graph_parse_lex() will
2830  * scan from a @e copy of @a str.
2831  * @param yystr a NUL-terminated string to scan
2832  * 
2833  * @return the newly allocated buffer state object.
2834  * @note If you want to scan bytes that may contain NUL values, then use
2835  *       xbt_graph_parse__scan_bytes() instead.
2836  */
2837 YY_BUFFER_STATE xbt_graph_parse__scan_string (yyconst char * yystr )
2838 {
2839     
2840         return xbt_graph_parse__scan_bytes(yystr,strlen(yystr) );
2841 }
2842
2843 /** Setup the input buffer state to scan the given bytes. The next call to xbt_graph_parse_lex() will
2844  * scan from a @e copy of @a bytes.
2845  * @param bytes the byte buffer to scan
2846  * @param len the number of bytes in the buffer pointed to by @a bytes.
2847  * 
2848  * @return the newly allocated buffer state object.
2849  */
2850 YY_BUFFER_STATE xbt_graph_parse__scan_bytes  (yyconst char * yybytes, int  _yybytes_len )
2851 {
2852         YY_BUFFER_STATE b;
2853         char *buf;
2854         yy_size_t n;
2855         int i;
2856     
2857         /* Get memory for full buffer, including space for trailing EOB's. */
2858         n = _yybytes_len + 2;
2859         buf = (char *) xbt_graph_parse_alloc(n  );
2860         if ( ! buf )
2861                 YY_FATAL_ERROR( "out of dynamic memory in xbt_graph_parse__scan_bytes()" );
2862
2863         for ( i = 0; i < _yybytes_len; ++i )
2864                 buf[i] = yybytes[i];
2865
2866         buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
2867
2868         b = xbt_graph_parse__scan_buffer(buf,n );
2869         if ( ! b )
2870                 YY_FATAL_ERROR( "bad buffer in xbt_graph_parse__scan_bytes()" );
2871
2872         /* It's okay to grow etc. this buffer, and we should throw it
2873          * away when we're done.
2874          */
2875         b->yy_is_our_buffer = 1;
2876
2877         return b;
2878 }
2879
2880     static void yy_push_state (int  new_state )
2881 {
2882         if ( (yy_start_stack_ptr) >= (yy_start_stack_depth) )
2883                 {
2884                 yy_size_t new_size;
2885
2886                 (yy_start_stack_depth) += YY_START_STACK_INCR;
2887                 new_size = (yy_start_stack_depth) * sizeof( int );
2888
2889                 if ( ! (yy_start_stack) )
2890                         (yy_start_stack) = (int *) xbt_graph_parse_alloc(new_size  );
2891
2892                 else
2893                         (yy_start_stack) = (int *) xbt_graph_parse_realloc((void *) (yy_start_stack),new_size  );
2894
2895                 if ( ! (yy_start_stack) )
2896                         YY_FATAL_ERROR(
2897                         "out of memory expanding start-condition stack" );
2898                 }
2899
2900         (yy_start_stack)[(yy_start_stack_ptr)++] = YY_START;
2901
2902         BEGIN(new_state);
2903 }
2904
2905     static void yy_pop_state  (void)
2906 {
2907         if ( --(yy_start_stack_ptr) < 0 )
2908                 YY_FATAL_ERROR( "start-condition stack underflow" );
2909
2910         BEGIN((yy_start_stack)[(yy_start_stack_ptr)]);
2911 }
2912
2913 #ifndef YY_EXIT_FAILURE
2914 #define YY_EXIT_FAILURE 2
2915 #endif
2916
2917 static void yy_fatal_error (yyconst char* msg )
2918 {
2919         (void) fprintf( stderr, "%s\n", msg );
2920         exit( YY_EXIT_FAILURE );
2921 }
2922
2923 /* Redefine yyless() so it works in section 3 code. */
2924
2925 #undef yyless
2926 #define yyless(n) \
2927         do \
2928                 { \
2929                 /* Undo effects of setting up xbt_graph_parse_text. */ \
2930         int yyless_macro_arg = (n); \
2931         YY_LESS_LINENO(yyless_macro_arg);\
2932                 xbt_graph_parse_text[xbt_graph_parse_leng] = (yy_hold_char); \
2933                 (yy_c_buf_p) = xbt_graph_parse_text + yyless_macro_arg; \
2934                 (yy_hold_char) = *(yy_c_buf_p); \
2935                 *(yy_c_buf_p) = '\0'; \
2936                 xbt_graph_parse_leng = yyless_macro_arg; \
2937                 } \
2938         while ( 0 )
2939
2940 /* Accessor  methods (get/set functions) to struct members. */
2941
2942 /** Get the current line number.
2943  * 
2944  */
2945 int xbt_graph_parse_get_lineno  (void)
2946 {
2947         
2948     return xbt_graph_parse_lineno;
2949 }
2950
2951 /** Get the input stream.
2952  * 
2953  */
2954 FILE *xbt_graph_parse_get_in  (void)
2955 {
2956         return xbt_graph_parse_in;
2957 }
2958
2959 /** Get the output stream.
2960  * 
2961  */
2962 FILE *xbt_graph_parse_get_out  (void)
2963 {
2964         return xbt_graph_parse_out;
2965 }
2966
2967 /** Get the length of the current token.
2968  * 
2969  */
2970 int xbt_graph_parse_get_leng  (void)
2971 {
2972         return xbt_graph_parse_leng;
2973 }
2974
2975 /** Get the current token.
2976  * 
2977  */
2978
2979 char *xbt_graph_parse_get_text  (void)
2980 {
2981         return xbt_graph_parse_text;
2982 }
2983
2984 /** Set the current line number.
2985  * @param line_number
2986  * 
2987  */
2988 void xbt_graph_parse_set_lineno (int  line_number )
2989 {
2990     
2991     xbt_graph_parse_lineno = line_number;
2992 }
2993
2994 /** Set the input stream. This does not discard the current
2995  * input buffer.
2996  * @param in_str A readable stream.
2997  * 
2998  * @see xbt_graph_parse__switch_to_buffer
2999  */
3000 void xbt_graph_parse_set_in (FILE *  in_str )
3001 {
3002         xbt_graph_parse_in = in_str ;
3003 }
3004
3005 void xbt_graph_parse_set_out (FILE *  out_str )
3006 {
3007         xbt_graph_parse_out = out_str ;
3008 }
3009
3010 int xbt_graph_parse_get_debug  (void)
3011 {
3012         return xbt_graph_parse__flex_debug;
3013 }
3014
3015 void xbt_graph_parse_set_debug (int  bdebug )
3016 {
3017         xbt_graph_parse__flex_debug = bdebug ;
3018 }
3019
3020 static int yy_init_globals (void)
3021 {
3022         /* Initialization is the same as for the non-reentrant scanner.
3023      * This function is called from xbt_graph_parse_lex_destroy(), so don't allocate here.
3024      */
3025
3026     /* We do not touch xbt_graph_parse_lineno unless the option is enabled. */
3027     xbt_graph_parse_lineno =  1;
3028     
3029     (yy_buffer_stack) = 0;
3030     (yy_buffer_stack_top) = 0;
3031     (yy_buffer_stack_max) = 0;
3032     (yy_c_buf_p) = (char *) 0;
3033     (yy_init) = 0;
3034     (yy_start) = 0;
3035
3036     (yy_start_stack_ptr) = 0;
3037     (yy_start_stack_depth) = 0;
3038     (yy_start_stack) =  NULL;
3039
3040 /* Defined in main.c */
3041 #ifdef YY_STDINIT
3042     xbt_graph_parse_in = stdin;
3043     xbt_graph_parse_out = stdout;
3044 #else
3045     xbt_graph_parse_in = (FILE *) 0;
3046     xbt_graph_parse_out = (FILE *) 0;
3047 #endif
3048
3049     /* For future reference: Set errno on error, since we are called by
3050      * xbt_graph_parse_lex_init()
3051      */
3052     return 0;
3053 }
3054
3055 /* xbt_graph_parse_lex_destroy is for both reentrant and non-reentrant scanners. */
3056 int xbt_graph_parse_lex_destroy  (void)
3057 {
3058     
3059     /* Pop the buffer stack, destroying each element. */
3060         while(YY_CURRENT_BUFFER){
3061                 xbt_graph_parse__delete_buffer(YY_CURRENT_BUFFER  );
3062                 YY_CURRENT_BUFFER_LVALUE = NULL;
3063                 xbt_graph_parse_pop_buffer_state();
3064         }
3065
3066         /* Destroy the stack itself. */
3067         xbt_graph_parse_free((yy_buffer_stack) );
3068         (yy_buffer_stack) = NULL;
3069
3070     /* Destroy the start condition stack. */
3071         xbt_graph_parse_free((yy_start_stack)  );
3072         (yy_start_stack) = NULL;
3073
3074     /* Reset the globals. This is important in a non-reentrant scanner so the next time
3075      * xbt_graph_parse_lex() is called, initialization will occur. */
3076     yy_init_globals( );
3077
3078     return 0;
3079 }
3080
3081 /*
3082  * Internal utility routines.
3083  */
3084
3085 #ifndef yytext_ptr
3086 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
3087 {
3088         register int i;
3089         for ( i = 0; i < n; ++i )
3090                 s1[i] = s2[i];
3091 }
3092 #endif
3093
3094 #ifdef YY_NEED_STRLEN
3095 static int yy_flex_strlen (yyconst char * s )
3096 {
3097         register int n;
3098         for ( n = 0; s[n]; ++n )
3099                 ;
3100
3101         return n;
3102 }
3103 #endif
3104
3105 void *xbt_graph_parse_alloc (yy_size_t  size )
3106 {
3107         return (void *) malloc( size );
3108 }
3109
3110 void *xbt_graph_parse_realloc  (void * ptr, yy_size_t  size )
3111 {
3112         /* The cast to (char *) in the following accommodates both
3113          * implementations that use char* generic pointers, and those
3114          * that use void* generic pointers.  It works with the latter
3115          * because both ANSI C and C++ allow castless assignment from
3116          * any pointer type to void*, and deal with argument conversions
3117          * as though doing an assignment.
3118          */
3119         return (void *) realloc( (char *) ptr, size );
3120 }
3121
3122 void xbt_graph_parse_free (void * ptr )
3123 {
3124         free( (char *) ptr );   /* see xbt_graph_parse_realloc() for (char *) cast */
3125 }
3126
3127 #define YYTABLES_NAME "yytables"
3128
3129 /* Element context stack lookup. */
3130 int graphxml_element_context(int i)
3131 {
3132   return (0<i && i<yy_start_stack_depth
3133           ? yy_start_stack[yy_start_stack_ptr - i]
3134           : 0);
3135 }
3136
3137 #ifdef FLEX_DEBUG
3138 void print_yy_stack(char* fmt, ...)
3139 {
3140   int i = 0; va_list ap; va_start(ap, fmt);
3141   vfprintf(stderr, fmt, ap);
3142   if (graphxml_statenames) {
3143       for (i=1; i<yy_start_stack_ptr; i++) {
3144           fprintf(stderr, "%s/", graphxml_statenames[yy_start_stack[i] ]);
3145       }
3146       fprintf(stderr,"%s\n", graphxml_statenames[YY_START]);
3147   }
3148   va_end(ap);
3149 }
3150
3151 void print_graphxml_bufferstack()
3152 {
3153     int i;
3154     fputs("Buffer: ", stderr);
3155     for (i = 0; i < blimit; i++) {
3156        if ( graphxml_bufferstack[i] == '\377' ) break;
3157          putc(graphxml_bufferstack[i], stderr);
3158     }
3159     putc('\n', stderr);
3160 }
3161
3162 static void debug_enter(int state, const char* statename) {
3163   yy_push_state(state);
3164   if (xbt_graph_parse__flex_debug) {
3165        print_yy_stack("--ENTER(%s) : ",statename);
3166        print_graphxml_bufferstack();
3167   }
3168 }
3169
3170 static void debug_leave(void) {
3171     if (xbt_graph_parse__flex_debug) {
3172         print_yy_stack("--LEAVE : ");
3173         print_graphxml_bufferstack();
3174     }
3175   yy_pop_state();
3176 }
3177
3178 static void debug_set(int state, const char* statename) {
3179   BEGIN(state);
3180   if (xbt_graph_parse__flex_debug) print_yy_stack("--SET(%s) : ",statename);
3181 }
3182 #endif
3183
3184 static void cleanup(void)
3185 {
3186     if (graphxml_statenames) {
3187         free(graphxml_statenames);
3188         graphxml_statenames = NULL;
3189     }
3190     free(graphxml_bufferstack);
3191     graphxml_bufferstack = NULL;
3192
3193     free(indexstack);
3194     indexstack = NULL;
3195 }
3196
3197 static int fail(const char* fmt, ...)
3198 {
3199     int chars_left, used;
3200     va_list ap; va_start(ap, fmt);
3201 #ifdef FLEXML_yylineno
3202     used = sprintf(flexml_err_msg,
3203                    "Invalid XML (XML input line %d, state %d): ",
3204                    xbt_graph_parse_lineno, YY_START);
3205 #else
3206     used = sprintf(flexml_err_msg,
3207                    "Invalid XML (state %d): ",
3208                    YY_START);
3209 #endif
3210     chars_left = flexml_max_err_msg_size - used - 1;
3211     vsnprintf(flexml_err_msg + used, chars_left, fmt, ap);
3212     va_end(ap);
3213
3214 #ifndef FLEXML_quiet_parser
3215     /* print directly to sdterr */
3216     fprintf(stderr, "%s\n", flexml_err_msg);
3217     flexml_err_msg[0] = '\0';
3218 #endif
3219
3220     cleanup();
3221
3222     return 1;
3223 }
3224