Logo AND Algorithmique Numérique Distribuée

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