Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
model-checker : try first to associate each block or fragment with the same positiion...
[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    BUFFERSET(*pp);
1261    if (c) {
1262       const char *s = strchr(text, c), *e = strrchr(text, c);
1263       assert(s && e && s <= e);
1264       ++s;
1265       while (s < e) {
1266          if (isspace(*s)) {
1267             BUFFERPUTC(' ');
1268             do ++s; while (s < e && isspace(*s));
1269          } else
1270            BUFFERPUTC(*s++);
1271       }
1272    } else {
1273       const char *s = text;
1274       while (*s)
1275         BUFFERPUTC(*s++);
1276    }
1277    BUFFERDONE;
1278 }
1279 #endif
1280
1281 static void pushbuffer(int p)
1282 {
1283     ck_ilimit();
1284     indexstack[inext++] = p;
1285     indexstack[inext++] = bnext;    
1286 }
1287
1288 static int popbuffer(void)
1289 {
1290     assert(inext >= 2);
1291     bnext = indexstack[--inext];
1292     return indexstack[--inext];
1293 }
1294
1295 /* General internal entities are `unput' back onto the input stream... */
1296 #define ENTITYTEXT(T) \
1297   { char *s = (T), *e = s+strlen(s);\
1298     while (--e >= s) { unput(*e); }}
1299
1300 /* Flex standard options. */
1301 #define YY_NO_INPUT 1
1302 /* Flex user-requested options. */
1303 /* XML character classes (currently restricted to ASCII). */
1304 /* "Common syntactic structures." */
1305 /* "Names and Tokens." */
1306 /* Miscellaneous. */
1307 /* Parser states (flex `exclusive start conditions'):
1308  *
1309  * PROLOG       the XML prolog of the document before <?xml...>
1310  * DOCTYPE      the XML prolog of the document after <?xml...>
1311  * EPILOG       after the root element
1312  * INCOMMENT    inside an XML comment <!--....-->
1313  * INPI         inside an XML PI <?...?>
1314  * VALUE1       inside a '...'-delimited literal
1315  * VALUE2       inside a "..."-delimited literal
1316  * CDATA        inside a <![CDATA[...] ]> section.
1317  * ROOT_<tag>   expect root element <tag>
1318  * AL_<tag>     inside the attribute list for <tag>
1319  * IN_<tag>     inside a <tag> with element contents (ready for end tag)
1320  * IMPOSSIBLE   dummy to permit disabling rules; must be last
1321  */
1322
1323 /* State names. */
1324 const char* *graphxml_statenames=NULL;
1325
1326 #define INITIAL 0
1327 #define PROLOG 1
1328 #define DOCTYPE 2
1329 #define EPILOG 3
1330 #define INCOMMENT 4
1331 #define INPI 5
1332 #define VALUE1 6
1333 #define VALUE2 7
1334 #define CDATA 8
1335 #define ROOT_graphxml_graph 9
1336 #define AL_graphxml_graph 10
1337 #define S_graphxml_graph 11
1338 #define S_graphxml_graph_1 12
1339 #define S_graphxml_graph_2 13
1340 #define S_graphxml_graph_3 14
1341 #define S_graphxml_graph_4 15
1342 #define S_graphxml_graph_5 16
1343 #define E_graphxml_graph 17
1344 #define ROOT_graphxml_node 18
1345 #define AL_graphxml_node 19
1346 #define E_graphxml_node 20
1347 #define ROOT_graphxml_edge 21
1348 #define AL_graphxml_edge 22
1349 #define E_graphxml_edge 23
1350 #define IMPOSSIBLE 24
1351
1352 #ifndef YY_NO_UNISTD_H
1353 /* Special case for "unistd.h", since it is non-ANSI. We include it way
1354  * down here because we want the user's section 1 to have been scanned first.
1355  * The user has a chance to override it with an option.
1356  */
1357 #if defined(_XBT_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(__TOS_WIN__)
1358 #  ifndef __STRICT_ANSI__
1359 #    include <io.h>
1360 #    include <process.h>
1361 #  endif
1362 #else
1363 #  include <unistd.h>
1364 #endif
1365 #endif
1366
1367 #ifndef YY_EXTRA_TYPE
1368 #define YY_EXTRA_TYPE void *
1369 #endif
1370
1371 static int yy_init_globals (void );
1372
1373 /* Accessor methods to globals.
1374    These are made visible to non-reentrant scanners for convenience. */
1375
1376 int xbt_graph_parse_lex_destroy (void );
1377
1378 int xbt_graph_parse_get_debug (void );
1379
1380 void xbt_graph_parse_set_debug (int debug_flag  );
1381
1382 YY_EXTRA_TYPE xbt_graph_parse_get_extra (void );
1383
1384 void xbt_graph_parse_set_extra (YY_EXTRA_TYPE user_defined  );
1385
1386 FILE *xbt_graph_parse_get_in (void );
1387
1388 void xbt_graph_parse_set_in  (FILE * in_str  );
1389
1390 FILE *xbt_graph_parse_get_out (void );
1391
1392 void xbt_graph_parse_set_out  (FILE * out_str  );
1393
1394 int xbt_graph_parse_get_leng (void );
1395
1396 char *xbt_graph_parse_get_text (void );
1397
1398 int xbt_graph_parse_get_lineno (void );
1399
1400 void xbt_graph_parse_set_lineno (int line_number  );
1401
1402 /* Macros after this point can all be overridden by user definitions in
1403  * section 1.
1404  */
1405
1406 #ifndef YY_SKIP_YYWRAP
1407 #ifdef __cplusplus
1408 extern "C" int xbt_graph_parse_wrap (void );
1409 #else
1410 extern int xbt_graph_parse_wrap (void );
1411 #endif
1412 #endif
1413
1414 #ifndef yytext_ptr
1415 static void yy_flex_strncpy (char *,yyconst char *,int );
1416 #endif
1417
1418 #ifdef YY_NEED_STRLEN
1419 static int yy_flex_strlen (yyconst char * );
1420 #endif
1421
1422 #ifndef YY_NO_INPUT
1423
1424 #ifdef __cplusplus
1425 static int yyinput (void );
1426 #else
1427 static int input (void );
1428 #endif
1429
1430 #endif
1431
1432         static int yy_start_stack_ptr = 0;
1433         static int yy_start_stack_depth = 0;
1434         static int *yy_start_stack = NULL;
1435     
1436     static void yy_push_state (int new_state );
1437     
1438     static void yy_pop_state (void );
1439     
1440 /* Amount of stuff to slurp up with each read. */
1441 #ifndef YY_READ_BUF_SIZE
1442 #ifdef __ia64__
1443 /* On IA-64, the buffer size is 16k, not 8k */
1444 #define YY_READ_BUF_SIZE 16384
1445 #else
1446 #define YY_READ_BUF_SIZE 8192
1447 #endif /* __ia64__ */
1448 #endif
1449
1450 /* Copy whatever the last rule matched to the standard output. */
1451 #ifndef ECHO
1452 /* This used to be an fputs(), but since the string might contain NUL's,
1453  * we now use fwrite().
1454  */
1455 #define ECHO do { if (fwrite( xbt_graph_parse_text, xbt_graph_parse_leng, 1, xbt_graph_parse_out )) {} } while (0)
1456 #endif
1457
1458 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
1459  * is returned in "result".
1460  */
1461 #ifndef YY_INPUT
1462 #define YY_INPUT(buf,result,max_size) \
1463         if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
1464                 { \
1465                 int c = '*'; \
1466                 size_t n; \
1467                 for ( n = 0; n < max_size && \
1468                              (c = getc( xbt_graph_parse_in )) != EOF && c != '\n'; ++n ) \
1469                         buf[n] = (char) c; \
1470                 if ( c == '\n' ) \
1471                         buf[n++] = (char) c; \
1472                 if ( c == EOF && ferror( xbt_graph_parse_in ) ) \
1473                         YY_FATAL_ERROR( "input in flex scanner failed" ); \
1474                 result = n; \
1475                 } \
1476         else \
1477                 { \
1478                 errno=0; \
1479                 while ( (result = fread(buf, 1, max_size, xbt_graph_parse_in))==0 && ferror(xbt_graph_parse_in)) \
1480                         { \
1481                         if( errno != EINTR) \
1482                                 { \
1483                                 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1484                                 break; \
1485                                 } \
1486                         errno=0; \
1487                         clearerr(xbt_graph_parse_in); \
1488                         } \
1489                 }\
1490 \
1491
1492 #endif
1493
1494 /* No semi-colon after return; correct usage is to write "yyterminate();" -
1495  * we don't want an extra ';' after the "return" because that will cause
1496  * some compilers to complain about unreachable statements.
1497  */
1498 #ifndef yyterminate
1499 #define yyterminate() return YY_NULL
1500 #endif
1501
1502 /* Number of entries by which start-condition stack grows. */
1503 #ifndef YY_START_STACK_INCR
1504 #define YY_START_STACK_INCR 25
1505 #endif
1506
1507 /* Report a fatal error. */
1508 #ifndef YY_FATAL_ERROR
1509 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
1510 #endif
1511
1512 /* end tables serialization structures and prototypes */
1513
1514 /* Default declaration of generated scanner - a define so the user can
1515  * easily add parameters.
1516  */
1517 #ifndef YY_DECL
1518 #define YY_DECL_IS_OURS 1
1519
1520 extern int xbt_graph_parse_lex (void);
1521
1522 #define YY_DECL int xbt_graph_parse_lex (void)
1523 #endif /* !YY_DECL */
1524
1525 /* Code executed at the beginning of each rule, after xbt_graph_parse_text and xbt_graph_parse_leng
1526  * have been set up.
1527  */
1528 #ifndef YY_USER_ACTION
1529 #define YY_USER_ACTION
1530 #endif
1531
1532 /* Code executed at the end of each rule. */
1533 #ifndef YY_BREAK
1534 #define YY_BREAK break;
1535 #endif
1536
1537 #define YY_RULE_SETUP \
1538         YY_USER_ACTION
1539
1540 /** The main scanner function which does all the work.
1541  */
1542 YY_DECL
1543 {
1544         register yy_state_type yy_current_state;
1545         register char *yy_cp, *yy_bp;
1546         register int yy_act;
1547     
1548  /* Bypass Flex's default INITIAL state and begin by parsing the XML prolog. */
1549  SET(PROLOG);
1550  reset_graphxml_parse_err_msg();
1551  graphxml_bufferstack = (char *) malloc(FLEXML_BUFFERSTACKSIZE);
1552  assert(graphxml_bufferstack);
1553  #ifdef FLEX_DEBUG
1554  {
1555      int i;
1556      for (i = 0; i < blimit; i++) {
1557          graphxml_bufferstack[i] = '\377';
1558      }
1559  }
1560  #endif
1561  graphxml_bufferstack[0] = '\0';
1562  indexstack = (int *) malloc(FLEXML_INDEXSTACKSIZE * sizeof(int));
1563  assert(indexstack);
1564  indexstack[0] = 0;
1565
1566   /* FleXML_init */
1567   bnext = inext = 1;
1568   graphxml_bufferliteral('\0', &bnext, "-1.0");
1569   graphxml_bufferliteral('\0', &bnext, "-1.0");
1570   graphxml_bufferliteral('\0', &bnext, "-1.0");
1571   if(!graphxml_statenames) {graphxml_statenames= (const char **)calloc(IMPOSSIBLE,sizeof(char*));
1572   graphxml_statenames[PROLOG] = NULL;
1573   graphxml_statenames[DOCTYPE] = NULL;
1574   graphxml_statenames[EPILOG] = NULL;
1575   graphxml_statenames[INCOMMENT] = NULL;
1576   graphxml_statenames[INPI] = NULL;
1577   graphxml_statenames[VALUE1] = NULL;
1578   graphxml_statenames[VALUE2] = NULL;
1579   graphxml_statenames[CDATA] = NULL;
1580   graphxml_statenames[ROOT_graphxml_graph] = NULL;
1581   graphxml_statenames[AL_graphxml_graph] = NULL;
1582   graphxml_statenames[S_graphxml_graph] = "graph";
1583   graphxml_statenames[S_graphxml_graph_1] = "graph";
1584   graphxml_statenames[S_graphxml_graph_2] = "graph";
1585   graphxml_statenames[S_graphxml_graph_3] = "graph";
1586   graphxml_statenames[S_graphxml_graph_4] = "graph";
1587   graphxml_statenames[S_graphxml_graph_5] = "graph";
1588   graphxml_statenames[E_graphxml_graph] = "graph";
1589   graphxml_statenames[ROOT_graphxml_node] = NULL;
1590   graphxml_statenames[AL_graphxml_node] = NULL;
1591   graphxml_statenames[E_graphxml_node] = "node";
1592   graphxml_statenames[ROOT_graphxml_edge] = NULL;
1593   graphxml_statenames[AL_graphxml_edge] = NULL;
1594   graphxml_statenames[E_graphxml_edge] = "edge";
1595   }
1596
1597  /* COMMENTS and PIs: handled uniformly for efficiency. */
1598
1599         if ( !(yy_init) )
1600                 {
1601                 (yy_init) = 1;
1602
1603 #ifdef YY_USER_INIT
1604                 YY_USER_INIT;
1605 #endif
1606
1607                 if ( ! (yy_start) )
1608                         (yy_start) = 1; /* first start state */
1609
1610                 if ( ! xbt_graph_parse_in )
1611                         xbt_graph_parse_in = stdin;
1612
1613                 if ( ! xbt_graph_parse_out )
1614                         xbt_graph_parse_out = stdout;
1615
1616                 if ( ! YY_CURRENT_BUFFER ) {
1617                         xbt_graph_parse_ensure_buffer_stack ();
1618                         YY_CURRENT_BUFFER_LVALUE =
1619                                 xbt_graph_parse__create_buffer(xbt_graph_parse_in,YY_BUF_SIZE );
1620                 }
1621
1622                 xbt_graph_parse__load_buffer_state( );
1623                 }
1624
1625         while ( 1 )             /* loops until end-of-file is reached */
1626                 {
1627                 yy_cp = (yy_c_buf_p);
1628
1629                 /* Support of xbt_graph_parse_text. */
1630                 *yy_cp = (yy_hold_char);
1631
1632                 /* yy_bp points to the position in yy_ch_buf of the start of
1633                  * the current run.
1634                  */
1635                 yy_bp = yy_cp;
1636
1637                 yy_current_state = (yy_start);
1638 yy_match:
1639                 do
1640                         {
1641                         register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
1642                         if ( yy_accept[yy_current_state] )
1643                                 {
1644                                 (yy_last_accepting_state) = yy_current_state;
1645                                 (yy_last_accepting_cpos) = yy_cp;
1646                                 }
1647                         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1648                                 {
1649                                 yy_current_state = (int) yy_def[yy_current_state];
1650                                 if ( yy_current_state >= 564 )
1651                                         yy_c = yy_meta[(unsigned int) yy_c];
1652                                 }
1653                         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1654                         ++yy_cp;
1655                         }
1656                 while ( yy_base[yy_current_state] != 1586 );
1657
1658 yy_find_action:
1659                 yy_act = yy_accept[yy_current_state];
1660                 if ( yy_act == 0 )
1661                         { /* have to back up */
1662                         yy_cp = (yy_last_accepting_cpos);
1663                         yy_current_state = (yy_last_accepting_state);
1664                         yy_act = yy_accept[yy_current_state];
1665                         }
1666
1667                 YY_DO_BEFORE_ACTION;
1668
1669                 if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] )
1670                         {
1671                         int yyl;
1672                         for ( yyl = 0; yyl < xbt_graph_parse_leng; ++yyl )
1673                                 if ( xbt_graph_parse_text[yyl] == '\n' )
1674                                            
1675     xbt_graph_parse_lineno++;
1676 ;
1677                         }
1678
1679 do_action:      /* This label is used only to access EOF actions. */
1680
1681                 switch ( yy_act )
1682         { /* beginning of action switch */
1683                         case 0: /* must back up */
1684                         /* undo the effects of YY_DO_BEFORE_ACTION */
1685                         *yy_cp = (yy_hold_char);
1686                         yy_cp = (yy_last_accepting_cpos);
1687                         yy_current_state = (yy_last_accepting_state);
1688                         goto yy_find_action;
1689
1690 case 1:
1691 YY_RULE_SETUP
1692 ENTER(INCOMMENT);
1693         YY_BREAK
1694 case 2:
1695 YY_RULE_SETUP
1696 ENTER(INPI);
1697         YY_BREAK
1698
1699 case 3:
1700 YY_RULE_SETUP
1701 LEAVE;
1702         YY_BREAK
1703 case 4:
1704 case 5:
1705 case 6:
1706 /* rule 6 can match eol */
1707 YY_RULE_SETUP
1708 SKIP;
1709         YY_BREAK
1710 case YY_STATE_EOF(INCOMMENT):
1711 FAIL("EOF in comment.");
1712         YY_BREAK
1713
1714 case 7:
1715 YY_RULE_SETUP
1716 LEAVE;
1717         YY_BREAK
1718 case 8:
1719 case 9:
1720 /* rule 9 can match eol */
1721 YY_RULE_SETUP
1722 SKIP;
1723         YY_BREAK
1724 case YY_STATE_EOF(INPI):
1725 FAIL("EOF in PI (processing instruction).");
1726         YY_BREAK
1727
1728 /* SPACES: skipped uniformly */
1729 case 10:
1730 /* rule 10 can match eol */
1731 YY_RULE_SETUP
1732 SKIP;
1733         YY_BREAK
1734 /* PROLOG: determine root element and process it. */
1735
1736 case 11:
1737 /* rule 11 can match eol */
1738 YY_RULE_SETUP
1739 SET(DOCTYPE); 
1740         YY_BREAK
1741 case 12:
1742 /* rule 12 can match eol */
1743 YY_RULE_SETUP
1744 FAIL("Bad declaration %s.",xbt_graph_parse_text);
1745         YY_BREAK
1746
1747 case 13:
1748 /* rule 13 can match eol */
1749 YY_RULE_SETUP
1750 SET(ROOT_graphxml_edge);
1751         YY_BREAK
1752 case 14:
1753 /* rule 14 can match eol */
1754 YY_RULE_SETUP
1755 SET(ROOT_graphxml_node);
1756         YY_BREAK
1757 case 15:
1758 /* rule 15 can match eol */
1759 YY_RULE_SETUP
1760 SET(ROOT_graphxml_graph);
1761         YY_BREAK
1762 case 16:
1763 /* rule 16 can match eol */
1764 YY_RULE_SETUP
1765 FAIL("Bad declaration %s.",xbt_graph_parse_text);
1766         YY_BREAK
1767 case 17:
1768 YY_RULE_SETUP
1769 FAIL("Unexpected character `%c' in prolog.", xbt_graph_parse_text[0]);
1770         YY_BREAK
1771 case YY_STATE_EOF(PROLOG):
1772 case YY_STATE_EOF(DOCTYPE):
1773 FAIL("EOF in prolog.");
1774         YY_BREAK
1775
1776 /* RULES DERIVED FROM DTD. */
1777 /* <!-- Small DTD for xbt graphs. -->  */
1778 /*     isDirected (true|false) "true"
1779   * >  */
1780 case 18:
1781 /* rule 18 can match eol */
1782 YY_RULE_SETUP
1783 FAIL("Starting tag <graph> is not allowed here.");
1784         YY_BREAK
1785 case 19:
1786 /* rule 19 can match eol */
1787 YY_RULE_SETUP
1788 {
1789   AX_graphxml_graph_isDirected = A_graphxml_graph_isDirected_true;
1790   graphxml_graph_isDirected_isset = 0;
1791   ENTER(AL_graphxml_graph); pushbuffer(0);
1792   }
1793         YY_BREAK
1794
1795 case 20:
1796 /* rule 20 can match eol */
1797 case 21:
1798 /* rule 21 can match eol */
1799 YY_RULE_SETUP
1800 A_graphxml_graph_isDirected = A_graphxml_graph_isDirected_true;
1801         YY_BREAK
1802 case 22:
1803 /* rule 22 can match eol */
1804 case 23:
1805 /* rule 23 can match eol */
1806 YY_RULE_SETUP
1807 A_graphxml_graph_isDirected = A_graphxml_graph_isDirected_false;
1808         YY_BREAK
1809 case 24:
1810 YY_RULE_SETUP
1811 {
1812   LEAVE; STag_graphxml_graph();graphxml_pcdata_ix = 0; ENTER(S_graphxml_graph);
1813  }
1814         YY_BREAK
1815 case 25:
1816 YY_RULE_SETUP
1817 {
1818   LEAVE; STag_graphxml_graph(); graphxml_pcdata_ix = 0; ETag_graphxml_graph(); popbuffer(); /* attribute */
1819   switch (YY_START) {
1820    case ROOT_graphxml_graph: SET(EPILOG); break;
1821   }
1822  }
1823         YY_BREAK
1824 case 26:
1825 YY_RULE_SETUP
1826 FAIL("Unexpected character `%c' in attribute list of graph element.", xbt_graph_parse_text[0]);
1827         YY_BREAK
1828 case 27:
1829 YY_RULE_SETUP
1830 FAIL("Bad attribute `%s' in `graph' element start tag.",xbt_graph_parse_text);
1831         YY_BREAK
1832 case YY_STATE_EOF(AL_graphxml_graph):
1833 FAIL("EOF in attribute list of `graph' element.");
1834         YY_BREAK
1835
1836 case 28:
1837 /* rule 28 can match eol */
1838 YY_RULE_SETUP
1839 {
1840   LEAVE;
1841   ETag_graphxml_graph();
1842   popbuffer(); /* attribute */
1843   switch (YY_START) {
1844    case ROOT_graphxml_graph: SET(EPILOG); break;
1845   }
1846  }
1847         YY_BREAK
1848 case 29:
1849 /* rule 29 can match eol */
1850 YY_RULE_SETUP
1851 FAIL("Unexpected end-tag `%s': `</graph>' expected.",xbt_graph_parse_text);
1852         YY_BREAK
1853 case 30:
1854 YY_RULE_SETUP
1855 FAIL("Unexpected character `%c': `</graph>' expected.",xbt_graph_parse_text[0]);
1856         YY_BREAK
1857 case YY_STATE_EOF(S_graphxml_graph_1):
1858 case YY_STATE_EOF(E_graphxml_graph):
1859 case YY_STATE_EOF(S_graphxml_graph_3):
1860 case YY_STATE_EOF(S_graphxml_graph_5):
1861 case YY_STATE_EOF(S_graphxml_graph):
1862 FAIL("Premature EOF: `</graph>' expected.");
1863         YY_BREAK
1864
1865 /*     label           CDATA                ""
1866   *     name            CDATA                #REQUIRED
1867   *     data            CDATA                ""
1868   *     position_x          CDATA                "-1.0"
1869   *     position_y          CDATA                "-1.0"
1870   * >  */
1871 case 31:
1872 /* rule 31 can match eol */
1873 YY_RULE_SETUP
1874 FAIL("Starting tag <node> is not allowed here.");
1875         YY_BREAK
1876 case 32:
1877 /* rule 32 can match eol */
1878 YY_RULE_SETUP
1879 {
1880   AX_graphxml_node_label = 0;
1881   graphxml_node_label_isset = 0;
1882   AX_graphxml_node_name = 0;
1883   graphxml_node_name_isset = 0;
1884   AX_graphxml_node_data = 0;
1885   graphxml_node_data_isset = 0;
1886   AX_graphxml_node_position_x = 1;
1887   graphxml_node_position_x_isset = 0;
1888   AX_graphxml_node_position_y = 6;
1889   graphxml_node_position_y_isset = 0;
1890   ENTER(AL_graphxml_node); pushbuffer(0);
1891   }
1892         YY_BREAK
1893
1894 case 33:
1895 /* rule 33 can match eol */
1896 YY_RULE_SETUP
1897 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);
1898         YY_BREAK
1899 case 34:
1900 /* rule 34 can match eol */
1901 YY_RULE_SETUP
1902 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);
1903         YY_BREAK
1904 case 35:
1905 /* rule 35 can match eol */
1906 YY_RULE_SETUP
1907 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);
1908         YY_BREAK
1909 case 36:
1910 /* rule 36 can match eol */
1911 YY_RULE_SETUP
1912 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);
1913         YY_BREAK
1914 case 37:
1915 /* rule 37 can match eol */
1916 YY_RULE_SETUP
1917 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);
1918         YY_BREAK
1919 case 38:
1920 /* rule 38 can match eol */
1921 YY_RULE_SETUP
1922 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);
1923         YY_BREAK
1924 case 39:
1925 /* rule 39 can match eol */
1926 YY_RULE_SETUP
1927 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);
1928         YY_BREAK
1929 case 40:
1930 /* rule 40 can match eol */
1931 YY_RULE_SETUP
1932 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);
1933         YY_BREAK
1934 case 41:
1935 /* rule 41 can match eol */
1936 YY_RULE_SETUP
1937 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);
1938         YY_BREAK
1939 case 42:
1940 /* rule 42 can match eol */
1941 YY_RULE_SETUP
1942 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);
1943         YY_BREAK
1944 case 43:
1945 YY_RULE_SETUP
1946 {
1947   if (!AX_graphxml_node_name) FAIL("Required attribute `name' not set for `node' element.");
1948   LEAVE; STag_graphxml_node();graphxml_pcdata_ix = 0; ENTER(E_graphxml_node);
1949  }
1950         YY_BREAK
1951 case 44:
1952 YY_RULE_SETUP
1953 {
1954   if (!AX_graphxml_node_name) FAIL("Required attribute `name' not set for `node' element.");
1955   LEAVE; STag_graphxml_node(); graphxml_pcdata_ix = 0; ETag_graphxml_node(); popbuffer(); /* attribute */
1956   switch (YY_START) {
1957    case S_graphxml_graph_2: case S_graphxml_graph_3: case S_graphxml_graph: SET(S_graphxml_graph_3); break;
1958    case ROOT_graphxml_node: SET(EPILOG); break;
1959   }
1960  }
1961         YY_BREAK
1962 case 45:
1963 YY_RULE_SETUP
1964 FAIL("Unexpected character `%c' in attribute list of node element.", xbt_graph_parse_text[0]);
1965         YY_BREAK
1966 case 46:
1967 YY_RULE_SETUP
1968 FAIL("Bad attribute `%s' in `node' element start tag.",xbt_graph_parse_text);
1969         YY_BREAK
1970 case YY_STATE_EOF(AL_graphxml_node):
1971 FAIL("EOF in attribute list of `node' element.");
1972         YY_BREAK
1973
1974 case 47:
1975 /* rule 47 can match eol */
1976 YY_RULE_SETUP
1977 {
1978   LEAVE;
1979   ETag_graphxml_node();
1980   popbuffer(); /* attribute */
1981   switch (YY_START) {
1982    case S_graphxml_graph_2: case S_graphxml_graph_3: case S_graphxml_graph: SET(S_graphxml_graph_3); break;
1983    case ROOT_graphxml_node: SET(EPILOG); break;
1984   }
1985  }
1986         YY_BREAK
1987 case 48:
1988 /* rule 48 can match eol */
1989 YY_RULE_SETUP
1990 FAIL("Unexpected end-tag `%s': `</node>' expected.",xbt_graph_parse_text);
1991         YY_BREAK
1992 case 49:
1993 YY_RULE_SETUP
1994 FAIL("Unexpected character `%c': `</node>' expected.",xbt_graph_parse_text[0]);
1995         YY_BREAK
1996 case YY_STATE_EOF(E_graphxml_node):
1997 FAIL("Premature EOF: `</node>' expected.");
1998         YY_BREAK
1999
2000 /*     label           CDATA                ""
2001   *     name            CDATA               #IMPLIED
2002   *     source          CDATA               #REQUIRED
2003   *     target          CDATA               #REQUIRED
2004   *     length          CDATA               "-1.0"
2005   *     data            CDATA               ""
2006   * >  */
2007 case 50:
2008 /* rule 50 can match eol */
2009 YY_RULE_SETUP
2010 FAIL("Starting tag <edge> is not allowed here.");
2011         YY_BREAK
2012 case 51:
2013 /* rule 51 can match eol */
2014 YY_RULE_SETUP
2015 {
2016   AX_graphxml_edge_label = 0;
2017   graphxml_edge_label_isset = 0;
2018   AX_graphxml_edge_name = 0;
2019   graphxml_edge_name_isset = 0;
2020   AX_graphxml_edge_source = 0;
2021   graphxml_edge_source_isset = 0;
2022   AX_graphxml_edge_target = 0;
2023   graphxml_edge_target_isset = 0;
2024   AX_graphxml_edge_length = 11;
2025   graphxml_edge_length_isset = 0;
2026   AX_graphxml_edge_data = 0;
2027   graphxml_edge_data_isset = 0;
2028   ENTER(AL_graphxml_edge); pushbuffer(0);
2029   }
2030         YY_BREAK
2031
2032 case 52:
2033 /* rule 52 can match eol */
2034 YY_RULE_SETUP
2035 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);
2036         YY_BREAK
2037 case 53:
2038 /* rule 53 can match eol */
2039 YY_RULE_SETUP
2040 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);
2041         YY_BREAK
2042 case 54:
2043 /* rule 54 can match eol */
2044 YY_RULE_SETUP
2045 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);
2046         YY_BREAK
2047 case 55:
2048 /* rule 55 can match eol */
2049 YY_RULE_SETUP
2050 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);
2051         YY_BREAK
2052 case 56:
2053 /* rule 56 can match eol */
2054 YY_RULE_SETUP
2055 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);
2056         YY_BREAK
2057 case 57:
2058 /* rule 57 can match eol */
2059 YY_RULE_SETUP
2060 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);
2061         YY_BREAK
2062 case 58:
2063 /* rule 58 can match eol */
2064 YY_RULE_SETUP
2065 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);
2066         YY_BREAK
2067 case 59:
2068 /* rule 59 can match eol */
2069 YY_RULE_SETUP
2070 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);
2071         YY_BREAK
2072 case 60:
2073 /* rule 60 can match eol */
2074 YY_RULE_SETUP
2075 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);
2076         YY_BREAK
2077 case 61:
2078 /* rule 61 can match eol */
2079 YY_RULE_SETUP
2080 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);
2081         YY_BREAK
2082 case 62:
2083 /* rule 62 can match eol */
2084 YY_RULE_SETUP
2085 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);
2086         YY_BREAK
2087 case 63:
2088 /* rule 63 can match eol */
2089 YY_RULE_SETUP
2090 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);
2091         YY_BREAK
2092 case 64:
2093 YY_RULE_SETUP
2094 {
2095   if (!AX_graphxml_edge_source) FAIL("Required attribute `source' not set for `edge' element.");
2096   if (!AX_graphxml_edge_target) FAIL("Required attribute `target' not set for `edge' element.");
2097   LEAVE; STag_graphxml_edge();graphxml_pcdata_ix = 0; ENTER(E_graphxml_edge);
2098  }
2099         YY_BREAK
2100 case 65:
2101 YY_RULE_SETUP
2102 {
2103   if (!AX_graphxml_edge_source) FAIL("Required attribute `source' not set for `edge' element.");
2104   if (!AX_graphxml_edge_target) FAIL("Required attribute `target' not set for `edge' element.");
2105   LEAVE; STag_graphxml_edge(); graphxml_pcdata_ix = 0; ETag_graphxml_edge(); popbuffer(); /* attribute */
2106   switch (YY_START) {
2107    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;
2108    case ROOT_graphxml_edge: SET(EPILOG); break;
2109   }
2110  }
2111         YY_BREAK
2112 case 66:
2113 YY_RULE_SETUP
2114 FAIL("Unexpected character `%c' in attribute list of edge element.", xbt_graph_parse_text[0]);
2115         YY_BREAK
2116 case 67:
2117 YY_RULE_SETUP
2118 FAIL("Bad attribute `%s' in `edge' element start tag.",xbt_graph_parse_text);
2119         YY_BREAK
2120 case YY_STATE_EOF(AL_graphxml_edge):
2121 FAIL("EOF in attribute list of `edge' element.");
2122         YY_BREAK
2123
2124 case 68:
2125 /* rule 68 can match eol */
2126 YY_RULE_SETUP
2127 {
2128   LEAVE;
2129   ETag_graphxml_edge();
2130   popbuffer(); /* attribute */
2131   switch (YY_START) {
2132    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;
2133    case ROOT_graphxml_edge: SET(EPILOG); break;
2134   }
2135  }
2136         YY_BREAK
2137 case 69:
2138 /* rule 69 can match eol */
2139 YY_RULE_SETUP
2140 FAIL("Unexpected end-tag `%s': `</edge>' expected.",xbt_graph_parse_text);
2141         YY_BREAK
2142 case 70:
2143 YY_RULE_SETUP
2144 FAIL("Unexpected character `%c': `</edge>' expected.",xbt_graph_parse_text[0]);
2145         YY_BREAK
2146 case YY_STATE_EOF(E_graphxml_edge):
2147 FAIL("Premature EOF: `</edge>' expected.");
2148         YY_BREAK
2149
2150 /* EPILOG: after the root element. */
2151
2152 case 71:
2153 YY_RULE_SETUP
2154 {SET(PROLOG); yyless(0); CLEANUP; return -1;}
2155         YY_BREAK
2156 case YY_STATE_EOF(EPILOG):
2157 SUCCEED;
2158         YY_BREAK
2159
2160 /* CHARACTER DATA. */
2161
2162 /* Non-defined standard entities... */
2163 case 72:
2164 YY_RULE_SETUP
2165 BUFFERPUTC('&');
2166         YY_BREAK
2167 case 73:
2168 YY_RULE_SETUP
2169 BUFFERPUTC('<');
2170         YY_BREAK
2171 case 74:
2172 YY_RULE_SETUP
2173 BUFFERPUTC('>');
2174         YY_BREAK
2175 case 75:
2176 YY_RULE_SETUP
2177 BUFFERPUTC('\'');
2178         YY_BREAK
2179 case 76:
2180 YY_RULE_SETUP
2181 BUFFERPUTC('"');
2182         YY_BREAK
2183 /* Character entities. */
2184 case 77:
2185 YY_RULE_SETUP
2186 BUFFERPUTC((unsigned char)atoi(xbt_graph_parse_text+2));
2187         YY_BREAK
2188 case 78:
2189 YY_RULE_SETUP
2190 BUFFERPUTC((unsigned char)strtol(xbt_graph_parse_text+3,NULL,16));
2191         YY_BREAK
2192
2193 case 79:
2194 /* rule 79 can match eol */
2195 case 80:
2196 /* rule 80 can match eol */
2197 case 81:
2198 /* rule 81 can match eol */
2199 case 82:
2200 /* rule 82 can match eol */
2201 YY_RULE_SETUP
2202 BUFFERPUTC('\n');
2203         YY_BREAK
2204
2205 case 83:
2206 YY_RULE_SETUP
2207 ENTER(CDATA);
2208         YY_BREAK
2209 case 84:
2210 YY_RULE_SETUP
2211 FAIL("Unexpected `]""]>' in character data.");
2212         YY_BREAK
2213
2214 case 85:
2215 YY_RULE_SETUP
2216 BUFFERDONE; LEAVE;
2217         YY_BREAK
2218 case YY_STATE_EOF(VALUE1):
2219 FAIL("EOF in literal (\"'\" expected).");
2220         YY_BREAK
2221
2222 case 86:
2223 YY_RULE_SETUP
2224 BUFFERDONE; LEAVE;
2225         YY_BREAK
2226 case YY_STATE_EOF(VALUE2):
2227 FAIL("EOF in literal (`\"' expected).");
2228         YY_BREAK
2229
2230 case 87:
2231 /* rule 87 can match eol */
2232 YY_RULE_SETUP
2233 BUFFERPUTC(xbt_graph_parse_text[0]);
2234         YY_BREAK
2235 case 88:
2236 YY_RULE_SETUP
2237 FAIL("Spurious `%c' in character data.",xbt_graph_parse_text[0]);
2238         YY_BREAK
2239
2240 case 89:
2241 YY_RULE_SETUP
2242 LEAVE;
2243         YY_BREAK
2244 /* "]""]"               BUFFERPUTC(xbt_graph_parse_text[0]); BUFFERPUTC(xbt_graph_parse_text[1]); */
2245 case 90:
2246 YY_RULE_SETUP
2247 BUFFERPUTC(xbt_graph_parse_text[0]);
2248         YY_BREAK
2249 case YY_STATE_EOF(CDATA):
2250 FAIL("EOF in CDATA section.");
2251         YY_BREAK
2252
2253 /* Impossible rules to avoid warnings from flex(1). */
2254 /* Ideally, this should be replaced by code in flexml.pl that
2255     generates just the states not covered by other rules. */
2256
2257 case 91:
2258 /* rule 91 can match eol */
2259 YY_RULE_SETUP
2260 FAIL("Syntax error on character `%c'.", xbt_graph_parse_text[0]);
2261         YY_BREAK
2262
2263 case 92:
2264 YY_RULE_SETUP
2265 ECHO;
2266         YY_BREAK
2267 case YY_STATE_EOF(INITIAL):
2268 case YY_STATE_EOF(ROOT_graphxml_graph):
2269 case YY_STATE_EOF(S_graphxml_graph_2):
2270 case YY_STATE_EOF(S_graphxml_graph_4):
2271 case YY_STATE_EOF(ROOT_graphxml_node):
2272 case YY_STATE_EOF(ROOT_graphxml_edge):
2273 case YY_STATE_EOF(IMPOSSIBLE):
2274         yyterminate();
2275
2276         case YY_END_OF_BUFFER:
2277                 {
2278                 /* Amount of text matched not including the EOB char. */
2279                 int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
2280
2281                 /* Undo the effects of YY_DO_BEFORE_ACTION. */
2282                 *yy_cp = (yy_hold_char);
2283                 YY_RESTORE_YY_MORE_OFFSET
2284
2285                 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
2286                         {
2287                         /* We're scanning a new file or input source.  It's
2288                          * possible that this happened because the user
2289                          * just pointed xbt_graph_parse_in at a new source and called
2290                          * xbt_graph_parse_lex().  If so, then we have to assure
2291                          * consistency between YY_CURRENT_BUFFER and our
2292                          * globals.  Here is the right place to do so, because
2293                          * this is the first action (other than possibly a
2294                          * back-up) that will match for the new input source.
2295                          */
2296                         (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
2297                         YY_CURRENT_BUFFER_LVALUE->yy_input_file = xbt_graph_parse_in;
2298                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
2299                         }
2300
2301                 /* Note that here we test for yy_c_buf_p "<=" to the position
2302                  * of the first EOB in the buffer, since yy_c_buf_p will
2303                  * already have been incremented past the NUL character
2304                  * (since all states make transitions on EOB to the
2305                  * end-of-buffer state).  Contrast this with the test
2306                  * in input().
2307                  */
2308                 if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
2309                         { /* This was really a NUL. */
2310                         yy_state_type yy_next_state;
2311
2312                         (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
2313
2314                         yy_current_state = yy_get_previous_state(  );
2315
2316                         /* Okay, we're now positioned to make the NUL
2317                          * transition.  We couldn't have
2318                          * yy_get_previous_state() go ahead and do it
2319                          * for us because it doesn't know how to deal
2320                          * with the possibility of jamming (and we don't
2321                          * want to build jamming into it because then it
2322                          * will run more slowly).
2323                          */
2324
2325                         yy_next_state = yy_try_NUL_trans( yy_current_state );
2326
2327                         yy_bp = (yytext_ptr) + YY_MORE_ADJ;
2328
2329                         if ( yy_next_state )
2330                                 {
2331                                 /* Consume the NUL. */
2332                                 yy_cp = ++(yy_c_buf_p);
2333                                 yy_current_state = yy_next_state;
2334                                 goto yy_match;
2335                                 }
2336
2337                         else
2338                                 {
2339                                 yy_cp = (yy_c_buf_p);
2340                                 goto yy_find_action;
2341                                 }
2342                         }
2343
2344                 else switch ( yy_get_next_buffer(  ) )
2345                         {
2346                         case EOB_ACT_END_OF_FILE:
2347                                 {
2348                                 (yy_did_buffer_switch_on_eof) = 0;
2349
2350                                 if ( xbt_graph_parse_wrap( ) )
2351                                         {
2352                                         /* Note: because we've taken care in
2353                                          * yy_get_next_buffer() to have set up
2354                                          * xbt_graph_parse_text, we can now set up
2355                                          * yy_c_buf_p so that if some total
2356                                          * hoser (like flex itself) wants to
2357                                          * call the scanner after we return the
2358                                          * YY_NULL, it'll still work - another
2359                                          * YY_NULL will get returned.
2360                                          */
2361                                         (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
2362
2363                                         yy_act = YY_STATE_EOF(YY_START);
2364                                         goto do_action;
2365                                         }
2366
2367                                 else
2368                                         {
2369                                         if ( ! (yy_did_buffer_switch_on_eof) )
2370                                                 YY_NEW_FILE;
2371                                         }
2372                                 break;
2373                                 }
2374
2375                         case EOB_ACT_CONTINUE_SCAN:
2376                                 (yy_c_buf_p) =
2377                                         (yytext_ptr) + yy_amount_of_matched_text;
2378
2379                                 yy_current_state = yy_get_previous_state(  );
2380
2381                                 yy_cp = (yy_c_buf_p);
2382                                 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
2383                                 goto yy_match;
2384
2385                         case EOB_ACT_LAST_MATCH:
2386                                 (yy_c_buf_p) =
2387                                 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
2388
2389                                 yy_current_state = yy_get_previous_state(  );
2390
2391                                 yy_cp = (yy_c_buf_p);
2392                                 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
2393                                 goto yy_find_action;
2394                         }
2395                 break;
2396                 }
2397
2398         default:
2399                 YY_FATAL_ERROR(
2400                         "fatal flex scanner internal error--no action found" );
2401         } /* end of action switch */
2402                 } /* end of scanning one token */
2403 } /* end of xbt_graph_parse_lex */
2404
2405 /* yy_get_next_buffer - try to read in a new buffer
2406  *
2407  * Returns a code representing an action:
2408  *      EOB_ACT_LAST_MATCH -
2409  *      EOB_ACT_CONTINUE_SCAN - continue scanning from current position
2410  *      EOB_ACT_END_OF_FILE - end of file
2411  */
2412 static int yy_get_next_buffer (void)
2413 {
2414         register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
2415         register char *source = (yytext_ptr);
2416         register int number_to_move, i;
2417         int ret_val;
2418
2419         if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
2420                 YY_FATAL_ERROR(
2421                 "fatal flex scanner internal error--end of buffer missed" );
2422
2423         if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
2424                 { /* Don't try to fill the buffer, so this is an EOF. */
2425                 if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
2426                         {
2427                         /* We matched a single character, the EOB, so
2428                          * treat this as a final EOF.
2429                          */
2430                         return EOB_ACT_END_OF_FILE;
2431                         }
2432
2433                 else
2434                         {
2435                         /* We matched some text prior to the EOB, first
2436                          * process it.
2437                          */
2438                         return EOB_ACT_LAST_MATCH;
2439                         }
2440                 }
2441
2442         /* Try to read more data. */
2443
2444         /* First move last chars to start of buffer. */
2445         number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
2446
2447         for ( i = 0; i < number_to_move; ++i )
2448                 *(dest++) = *(source++);
2449
2450         if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
2451                 /* don't do the read, it's not guaranteed to return an EOF,
2452                  * just force an EOF
2453                  */
2454                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
2455
2456         else
2457                 {
2458                         int num_to_read =
2459                         YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
2460
2461                 while ( num_to_read <= 0 )
2462                         { /* Not enough room in the buffer - grow it. */
2463
2464                         /* just a shorter name for the current buffer */
2465                         YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
2466
2467                         int yy_c_buf_p_offset =
2468                                 (int) ((yy_c_buf_p) - b->yy_ch_buf);
2469
2470                         if ( b->yy_is_our_buffer )
2471                                 {
2472                                 int new_size = b->yy_buf_size * 2;
2473
2474                                 if ( new_size <= 0 )
2475                                         b->yy_buf_size += b->yy_buf_size / 8;
2476                                 else
2477                                         b->yy_buf_size *= 2;
2478
2479                                 b->yy_ch_buf = (char *)
2480                                         /* Include room in for 2 EOB chars. */
2481                                         xbt_graph_parse_realloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
2482                                 }
2483                         else
2484                                 /* Can't grow it, we don't own it. */
2485                                 b->yy_ch_buf = 0;
2486
2487                         if ( ! b->yy_ch_buf )
2488                                 YY_FATAL_ERROR(
2489                                 "fatal error - scanner input buffer overflow" );
2490
2491                         (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
2492
2493                         num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
2494                                                 number_to_move - 1;
2495
2496                         }
2497
2498                 if ( num_to_read > YY_READ_BUF_SIZE )
2499                         num_to_read = YY_READ_BUF_SIZE;
2500
2501                 /* Read in more data. */
2502                 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
2503                         (yy_n_chars), (size_t) num_to_read );
2504
2505                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
2506                 }
2507
2508         if ( (yy_n_chars) == 0 )
2509                 {
2510                 if ( number_to_move == YY_MORE_ADJ )
2511                         {
2512                         ret_val = EOB_ACT_END_OF_FILE;
2513                         xbt_graph_parse_restart(xbt_graph_parse_in  );
2514                         }
2515
2516                 else
2517                         {
2518                         ret_val = EOB_ACT_LAST_MATCH;
2519                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
2520                                 YY_BUFFER_EOF_PENDING;
2521                         }
2522                 }
2523
2524         else
2525                 ret_val = EOB_ACT_CONTINUE_SCAN;
2526
2527         if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
2528                 /* Extend the array by 50%, plus the number we really need. */
2529                 yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
2530                 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) xbt_graph_parse_realloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size  );
2531                 if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
2532                         YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
2533         }
2534
2535         (yy_n_chars) += number_to_move;
2536         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
2537         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
2538
2539         (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
2540
2541         return ret_val;
2542 }
2543
2544 /* yy_get_previous_state - get the state just before the EOB char was reached */
2545
2546     static yy_state_type yy_get_previous_state (void)
2547 {
2548         register yy_state_type yy_current_state;
2549         register char *yy_cp;
2550     
2551         yy_current_state = (yy_start);
2552
2553         for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
2554                 {
2555                 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
2556                 if ( yy_accept[yy_current_state] )
2557                         {
2558                         (yy_last_accepting_state) = yy_current_state;
2559                         (yy_last_accepting_cpos) = yy_cp;
2560                         }
2561                 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2562                         {
2563                         yy_current_state = (int) yy_def[yy_current_state];
2564                         if ( yy_current_state >= 564 )
2565                                 yy_c = yy_meta[(unsigned int) yy_c];
2566                         }
2567                 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2568                 }
2569
2570         return yy_current_state;
2571 }
2572
2573 /* yy_try_NUL_trans - try to make a transition on the NUL character
2574  *
2575  * synopsis
2576  *      next_state = yy_try_NUL_trans( current_state );
2577  */
2578     static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
2579 {
2580         register int yy_is_jam;
2581         register char *yy_cp = (yy_c_buf_p);
2582
2583         register YY_CHAR yy_c = 1;
2584         if ( yy_accept[yy_current_state] )
2585                 {
2586                 (yy_last_accepting_state) = yy_current_state;
2587                 (yy_last_accepting_cpos) = yy_cp;
2588                 }
2589         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2590                 {
2591                 yy_current_state = (int) yy_def[yy_current_state];
2592                 if ( yy_current_state >= 564 )
2593                         yy_c = yy_meta[(unsigned int) yy_c];
2594                 }
2595         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2596         yy_is_jam = (yy_current_state == 563);
2597
2598         return yy_is_jam ? 0 : yy_current_state;
2599 }
2600
2601 #ifndef YY_NO_INPUT
2602 #ifdef __cplusplus
2603     static int yyinput (void)
2604 #else
2605     static int input  (void)
2606 #endif
2607
2608 {
2609         int c;
2610     
2611         *(yy_c_buf_p) = (yy_hold_char);
2612
2613         if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
2614                 {
2615                 /* yy_c_buf_p now points to the character we want to return.
2616                  * If this occurs *before* the EOB characters, then it's a
2617                  * valid NUL; if not, then we've hit the end of the buffer.
2618                  */
2619                 if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
2620                         /* This was really a NUL. */
2621                         *(yy_c_buf_p) = '\0';
2622
2623                 else
2624                         { /* need more input */
2625                         int offset = (yy_c_buf_p) - (yytext_ptr);
2626                         ++(yy_c_buf_p);
2627
2628                         switch ( yy_get_next_buffer(  ) )
2629                                 {
2630                                 case EOB_ACT_LAST_MATCH:
2631                                         /* This happens because yy_g_n_b()
2632                                          * sees that we've accumulated a
2633                                          * token and flags that we need to
2634                                          * try matching the token before
2635                                          * proceeding.  But for input(),
2636                                          * there's no matching to consider.
2637                                          * So convert the EOB_ACT_LAST_MATCH
2638                                          * to EOB_ACT_END_OF_FILE.
2639                                          */
2640
2641                                         /* Reset buffer status. */
2642                                         xbt_graph_parse_restart(xbt_graph_parse_in );
2643
2644                                         /*FALLTHROUGH*/
2645
2646                                 case EOB_ACT_END_OF_FILE:
2647                                         {
2648                                         if ( xbt_graph_parse_wrap( ) )
2649                                                 return EOF;
2650
2651                                         if ( ! (yy_did_buffer_switch_on_eof) )
2652                                                 YY_NEW_FILE;
2653 #ifdef __cplusplus
2654                                         return yyinput();
2655 #else
2656                                         return input();
2657 #endif
2658                                         }
2659
2660                                 case EOB_ACT_CONTINUE_SCAN:
2661                                         (yy_c_buf_p) = (yytext_ptr) + offset;
2662                                         break;
2663                                 }
2664                         }
2665                 }
2666
2667         c = *(unsigned char *) (yy_c_buf_p);    /* cast for 8-bit char's */
2668         *(yy_c_buf_p) = '\0';   /* preserve xbt_graph_parse_text */
2669         (yy_hold_char) = *++(yy_c_buf_p);
2670
2671         if ( c == '\n' )
2672                    
2673     xbt_graph_parse_lineno++;
2674 ;
2675
2676         return c;
2677 }
2678 #endif  /* ifndef YY_NO_INPUT */
2679
2680 /** Immediately switch to a different input stream.
2681  * @param input_file A readable stream.
2682  * 
2683  * @note This function does not reset the start condition to @c INITIAL .
2684  */
2685     void xbt_graph_parse_restart  (FILE * input_file )
2686 {
2687     
2688         if ( ! YY_CURRENT_BUFFER ){
2689         xbt_graph_parse_ensure_buffer_stack ();
2690                 YY_CURRENT_BUFFER_LVALUE =
2691             xbt_graph_parse__create_buffer(xbt_graph_parse_in,YY_BUF_SIZE );
2692         }
2693
2694         xbt_graph_parse__init_buffer(YY_CURRENT_BUFFER,input_file );
2695         xbt_graph_parse__load_buffer_state( );
2696 }
2697
2698 /** Switch to a different input buffer.
2699  * @param new_buffer The new input buffer.
2700  * 
2701  */
2702     void xbt_graph_parse__switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
2703 {
2704     
2705         /* TODO. We should be able to replace this entire function body
2706          * with
2707          *              xbt_graph_parse_pop_buffer_state();
2708          *              xbt_graph_parse_push_buffer_state(new_buffer);
2709      */
2710         xbt_graph_parse_ensure_buffer_stack ();
2711         if ( YY_CURRENT_BUFFER == new_buffer )
2712                 return;
2713
2714         if ( YY_CURRENT_BUFFER )
2715                 {
2716                 /* Flush out information for old buffer. */
2717                 *(yy_c_buf_p) = (yy_hold_char);
2718                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
2719                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
2720                 }
2721
2722         YY_CURRENT_BUFFER_LVALUE = new_buffer;
2723         xbt_graph_parse__load_buffer_state( );
2724
2725         /* We don't actually know whether we did this switch during
2726          * EOF (xbt_graph_parse_wrap()) processing, but the only time this flag
2727          * is looked at is after xbt_graph_parse_wrap() is called, so it's safe
2728          * to go ahead and always set it.
2729          */
2730         (yy_did_buffer_switch_on_eof) = 1;
2731 }
2732
2733 static void xbt_graph_parse__load_buffer_state  (void)
2734 {
2735         (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
2736         (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
2737         xbt_graph_parse_in = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
2738         (yy_hold_char) = *(yy_c_buf_p);
2739 }
2740
2741 /** Allocate and initialize an input buffer state.
2742  * @param file A readable stream.
2743  * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
2744  * 
2745  * @return the allocated buffer state.
2746  */
2747     YY_BUFFER_STATE xbt_graph_parse__create_buffer  (FILE * file, int  size )
2748 {
2749         YY_BUFFER_STATE b;
2750     
2751         b = (YY_BUFFER_STATE) xbt_graph_parse_alloc(sizeof( struct yy_buffer_state )  );
2752         if ( ! b )
2753                 YY_FATAL_ERROR( "out of dynamic memory in xbt_graph_parse__create_buffer()" );
2754
2755         b->yy_buf_size = size;
2756
2757         /* yy_ch_buf has to be 2 characters longer than the size given because
2758          * we need to put in 2 end-of-buffer characters.
2759          */
2760         b->yy_ch_buf = (char *) xbt_graph_parse_alloc(b->yy_buf_size + 2  );
2761         if ( ! b->yy_ch_buf )
2762                 YY_FATAL_ERROR( "out of dynamic memory in xbt_graph_parse__create_buffer()" );
2763
2764         b->yy_is_our_buffer = 1;
2765
2766         xbt_graph_parse__init_buffer(b,file );
2767
2768         return b;
2769 }
2770
2771 /** Destroy the buffer.
2772  * @param b a buffer created with xbt_graph_parse__create_buffer()
2773  * 
2774  */
2775     void xbt_graph_parse__delete_buffer (YY_BUFFER_STATE  b )
2776 {
2777     
2778         if ( ! b )
2779                 return;
2780
2781         if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
2782                 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
2783
2784         if ( b->yy_is_our_buffer )
2785                 xbt_graph_parse_free((void *) b->yy_ch_buf  );
2786
2787         xbt_graph_parse_free((void *) b  );
2788 }
2789
2790 #ifndef __cplusplus
2791 extern int isatty (int );
2792 #endif /* __cplusplus */
2793     
2794 /* Initializes or reinitializes a buffer.
2795  * This function is sometimes called more than once on the same buffer,
2796  * such as during a xbt_graph_parse_restart() or at EOF.
2797  */
2798     static void xbt_graph_parse__init_buffer  (YY_BUFFER_STATE  b, FILE * file )
2799
2800 {
2801         int oerrno = errno;
2802     
2803         xbt_graph_parse__flush_buffer(b );
2804
2805         b->yy_input_file = file;
2806         b->yy_fill_buffer = 1;
2807
2808     /* If b is the current buffer, then xbt_graph_parse__init_buffer was _probably_
2809      * called from xbt_graph_parse_restart() or through yy_get_next_buffer.
2810      * In that case, we don't want to reset the lineno or column.
2811      */
2812     if (b != YY_CURRENT_BUFFER){
2813         b->yy_bs_lineno = 1;
2814         b->yy_bs_column = 0;
2815     }
2816
2817         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
2818     
2819         errno = oerrno;
2820 }
2821
2822 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
2823  * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
2824  * 
2825  */
2826     void xbt_graph_parse__flush_buffer (YY_BUFFER_STATE  b )
2827 {
2828         if ( ! b )
2829                 return;
2830
2831         b->yy_n_chars = 0;
2832
2833         /* We always need two end-of-buffer characters.  The first causes
2834          * a transition to the end-of-buffer state.  The second causes
2835          * a jam in that state.
2836          */
2837         b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
2838         b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
2839
2840         b->yy_buf_pos = &b->yy_ch_buf[0];
2841
2842         b->yy_at_bol = 1;
2843         b->yy_buffer_status = YY_BUFFER_NEW;
2844
2845         if ( b == YY_CURRENT_BUFFER )
2846                 xbt_graph_parse__load_buffer_state( );
2847 }
2848
2849 /** Pushes the new state onto the stack. The new state becomes
2850  *  the current state. This function will allocate the stack
2851  *  if necessary.
2852  *  @param new_buffer The new state.
2853  *  
2854  */
2855 void xbt_graph_parse_push_buffer_state (YY_BUFFER_STATE new_buffer )
2856 {
2857         if (new_buffer == NULL)
2858                 return;
2859
2860         xbt_graph_parse_ensure_buffer_stack();
2861
2862         /* This block is copied from xbt_graph_parse__switch_to_buffer. */
2863         if ( YY_CURRENT_BUFFER )
2864                 {
2865                 /* Flush out information for old buffer. */
2866                 *(yy_c_buf_p) = (yy_hold_char);
2867                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
2868                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
2869                 }
2870
2871         /* Only push if top exists. Otherwise, replace top. */
2872         if (YY_CURRENT_BUFFER)
2873                 (yy_buffer_stack_top)++;
2874         YY_CURRENT_BUFFER_LVALUE = new_buffer;
2875
2876         /* copied from xbt_graph_parse__switch_to_buffer. */
2877         xbt_graph_parse__load_buffer_state( );
2878         (yy_did_buffer_switch_on_eof) = 1;
2879 }
2880
2881 /** Removes and deletes the top of the stack, if present.
2882  *  The next element becomes the new top.
2883  *  
2884  */
2885 void xbt_graph_parse_pop_buffer_state (void)
2886 {
2887         if (!YY_CURRENT_BUFFER)
2888                 return;
2889
2890         xbt_graph_parse__delete_buffer(YY_CURRENT_BUFFER );
2891         YY_CURRENT_BUFFER_LVALUE = NULL;
2892         if ((yy_buffer_stack_top) > 0)
2893                 --(yy_buffer_stack_top);
2894
2895         if (YY_CURRENT_BUFFER) {
2896                 xbt_graph_parse__load_buffer_state( );
2897                 (yy_did_buffer_switch_on_eof) = 1;
2898         }
2899 }
2900
2901 /* Allocates the stack if it does not exist.
2902  *  Guarantees space for at least one push.
2903  */
2904 static void xbt_graph_parse_ensure_buffer_stack (void)
2905 {
2906         int num_to_alloc;
2907     
2908         if (!(yy_buffer_stack)) {
2909
2910                 /* First allocation is just for 2 elements, since we don't know if this
2911                  * scanner will even need a stack. We use 2 instead of 1 to avoid an
2912                  * immediate realloc on the next call.
2913          */
2914                 num_to_alloc = 1;
2915                 (yy_buffer_stack) = (struct yy_buffer_state**)xbt_graph_parse_alloc
2916                                                                 (num_to_alloc * sizeof(struct yy_buffer_state*)
2917                                                                 );
2918                 if ( ! (yy_buffer_stack) )
2919                         YY_FATAL_ERROR( "out of dynamic memory in xbt_graph_parse_ensure_buffer_stack()" );
2920                                                                   
2921                 memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
2922                                 
2923                 (yy_buffer_stack_max) = num_to_alloc;
2924                 (yy_buffer_stack_top) = 0;
2925                 return;
2926         }
2927
2928         if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
2929
2930                 /* Increase the buffer to prepare for a possible push. */
2931                 int grow_size = 8 /* arbitrary grow size */;
2932
2933                 num_to_alloc = (yy_buffer_stack_max) + grow_size;
2934                 (yy_buffer_stack) = (struct yy_buffer_state**)xbt_graph_parse_realloc
2935                                                                 ((yy_buffer_stack),
2936                                                                 num_to_alloc * sizeof(struct yy_buffer_state*)
2937                                                                 );
2938                 if ( ! (yy_buffer_stack) )
2939                         YY_FATAL_ERROR( "out of dynamic memory in xbt_graph_parse_ensure_buffer_stack()" );
2940
2941                 /* zero only the new slots.*/
2942                 memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
2943                 (yy_buffer_stack_max) = num_to_alloc;
2944         }
2945 }
2946
2947 /** Setup the input buffer state to scan directly from a user-specified character buffer.
2948  * @param base the character buffer
2949  * @param size the size in bytes of the character buffer
2950  * 
2951  * @return the newly allocated buffer state object. 
2952  */
2953 YY_BUFFER_STATE xbt_graph_parse__scan_buffer  (char * base, yy_size_t  size )
2954 {
2955         YY_BUFFER_STATE b;
2956     
2957         if ( size < 2 ||
2958              base[size-2] != YY_END_OF_BUFFER_CHAR ||
2959              base[size-1] != YY_END_OF_BUFFER_CHAR )
2960                 /* They forgot to leave room for the EOB's. */
2961                 return 0;
2962
2963         b = (YY_BUFFER_STATE) xbt_graph_parse_alloc(sizeof( struct yy_buffer_state )  );
2964         if ( ! b )
2965                 YY_FATAL_ERROR( "out of dynamic memory in xbt_graph_parse__scan_buffer()" );
2966
2967         b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
2968         b->yy_buf_pos = b->yy_ch_buf = base;
2969         b->yy_is_our_buffer = 0;
2970         b->yy_input_file = 0;
2971         b->yy_n_chars = b->yy_buf_size;
2972         b->yy_is_interactive = 0;
2973         b->yy_at_bol = 1;
2974         b->yy_fill_buffer = 0;
2975         b->yy_buffer_status = YY_BUFFER_NEW;
2976
2977         xbt_graph_parse__switch_to_buffer(b  );
2978
2979         return b;
2980 }
2981
2982 /** Setup the input buffer state to scan a string. The next call to xbt_graph_parse_lex() will
2983  * scan from a @e copy of @a str.
2984  * @param yystr a NUL-terminated string to scan
2985  * 
2986  * @return the newly allocated buffer state object.
2987  * @note If you want to scan bytes that may contain NUL values, then use
2988  *       xbt_graph_parse__scan_bytes() instead.
2989  */
2990 YY_BUFFER_STATE xbt_graph_parse__scan_string (yyconst char * yystr )
2991 {
2992     
2993         return xbt_graph_parse__scan_bytes(yystr,strlen(yystr) );
2994 }
2995
2996 /** Setup the input buffer state to scan the given bytes. The next call to xbt_graph_parse_lex() will
2997  * scan from a @e copy of @a bytes.
2998  * @param yybytes the byte buffer to scan
2999  * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
3000  * 
3001  * @return the newly allocated buffer state object.
3002  */
3003 YY_BUFFER_STATE xbt_graph_parse__scan_bytes  (yyconst char * yybytes, int  _yybytes_len )
3004 {
3005         YY_BUFFER_STATE b;
3006         char *buf;
3007         yy_size_t n;
3008         int i;
3009     
3010         /* Get memory for full buffer, including space for trailing EOB's. */
3011         n = _yybytes_len + 2;
3012         buf = (char *) xbt_graph_parse_alloc(n  );
3013         if ( ! buf )
3014                 YY_FATAL_ERROR( "out of dynamic memory in xbt_graph_parse__scan_bytes()" );
3015
3016         for ( i = 0; i < _yybytes_len; ++i )
3017                 buf[i] = yybytes[i];
3018
3019         buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
3020
3021         b = xbt_graph_parse__scan_buffer(buf,n );
3022         if ( ! b )
3023                 YY_FATAL_ERROR( "bad buffer in xbt_graph_parse__scan_bytes()" );
3024
3025         /* It's okay to grow etc. this buffer, and we should throw it
3026          * away when we're done.
3027          */
3028         b->yy_is_our_buffer = 1;
3029
3030         return b;
3031 }
3032
3033     static void yy_push_state (int  new_state )
3034 {
3035         if ( (yy_start_stack_ptr) >= (yy_start_stack_depth) )
3036                 {
3037                 yy_size_t new_size;
3038
3039                 (yy_start_stack_depth) += YY_START_STACK_INCR;
3040                 new_size = (yy_start_stack_depth) * sizeof( int );
3041
3042                 if ( ! (yy_start_stack) )
3043                         (yy_start_stack) = (int *) xbt_graph_parse_alloc(new_size  );
3044
3045                 else
3046                         (yy_start_stack) = (int *) xbt_graph_parse_realloc((void *) (yy_start_stack),new_size  );
3047
3048                 if ( ! (yy_start_stack) )
3049                         YY_FATAL_ERROR( "out of memory expanding start-condition stack" );
3050                 }
3051
3052         (yy_start_stack)[(yy_start_stack_ptr)++] = YY_START;
3053
3054         BEGIN(new_state);
3055 }
3056
3057     static void yy_pop_state  (void)
3058 {
3059         if ( --(yy_start_stack_ptr) < 0 )
3060                 YY_FATAL_ERROR( "start-condition stack underflow" );
3061
3062         BEGIN((yy_start_stack)[(yy_start_stack_ptr)]);
3063 }
3064
3065 #ifndef YY_EXIT_FAILURE
3066 #define YY_EXIT_FAILURE 2
3067 #endif
3068
3069 static void yy_fatal_error (yyconst char* msg )
3070 {
3071         (void) fprintf( stderr, "%s\n", msg );
3072         exit( YY_EXIT_FAILURE );
3073 }
3074
3075 /* Redefine yyless() so it works in section 3 code. */
3076
3077 #undef yyless
3078 #define yyless(n) \
3079         do \
3080                 { \
3081                 /* Undo effects of setting up xbt_graph_parse_text. */ \
3082         int yyless_macro_arg = (n); \
3083         YY_LESS_LINENO(yyless_macro_arg);\
3084                 xbt_graph_parse_text[xbt_graph_parse_leng] = (yy_hold_char); \
3085                 (yy_c_buf_p) = xbt_graph_parse_text + yyless_macro_arg; \
3086                 (yy_hold_char) = *(yy_c_buf_p); \
3087                 *(yy_c_buf_p) = '\0'; \
3088                 xbt_graph_parse_leng = yyless_macro_arg; \
3089                 } \
3090         while ( 0 )
3091
3092 /* Accessor  methods (get/set functions) to struct members. */
3093
3094 /** Get the current line number.
3095  * 
3096  */
3097 int xbt_graph_parse_get_lineno  (void)
3098 {
3099         
3100     return xbt_graph_parse_lineno;
3101 }
3102
3103 /** Get the input stream.
3104  * 
3105  */
3106 FILE *xbt_graph_parse_get_in  (void)
3107 {
3108         return xbt_graph_parse_in;
3109 }
3110
3111 /** Get the output stream.
3112  * 
3113  */
3114 FILE *xbt_graph_parse_get_out  (void)
3115 {
3116         return xbt_graph_parse_out;
3117 }
3118
3119 /** Get the length of the current token.
3120  * 
3121  */
3122 int xbt_graph_parse_get_leng  (void)
3123 {
3124         return xbt_graph_parse_leng;
3125 }
3126
3127 /** Get the current token.
3128  * 
3129  */
3130
3131 char *xbt_graph_parse_get_text  (void)
3132 {
3133         return xbt_graph_parse_text;
3134 }
3135
3136 /** Set the current line number.
3137  * @param line_number
3138  * 
3139  */
3140 void xbt_graph_parse_set_lineno (int  line_number )
3141 {
3142     
3143     xbt_graph_parse_lineno = line_number;
3144 }
3145
3146 /** Set the input stream. This does not discard the current
3147  * input buffer.
3148  * @param in_str A readable stream.
3149  * 
3150  * @see xbt_graph_parse__switch_to_buffer
3151  */
3152 void xbt_graph_parse_set_in (FILE *  in_str )
3153 {
3154         xbt_graph_parse_in = in_str ;
3155 }
3156
3157 void xbt_graph_parse_set_out (FILE *  out_str )
3158 {
3159         xbt_graph_parse_out = out_str ;
3160 }
3161
3162 int xbt_graph_parse_get_debug  (void)
3163 {
3164         return xbt_graph_parse__flex_debug;
3165 }
3166
3167 void xbt_graph_parse_set_debug (int  bdebug )
3168 {
3169         xbt_graph_parse__flex_debug = bdebug ;
3170 }
3171
3172 static int yy_init_globals (void)
3173 {
3174         /* Initialization is the same as for the non-reentrant scanner.
3175      * This function is called from xbt_graph_parse_lex_destroy(), so don't allocate here.
3176      */
3177
3178     /* We do not touch xbt_graph_parse_lineno unless the option is enabled. */
3179     xbt_graph_parse_lineno =  1;
3180     
3181     (yy_buffer_stack) = 0;
3182     (yy_buffer_stack_top) = 0;
3183     (yy_buffer_stack_max) = 0;
3184     (yy_c_buf_p) = (char *) 0;
3185     (yy_init) = 0;
3186     (yy_start) = 0;
3187
3188     (yy_start_stack_ptr) = 0;
3189     (yy_start_stack_depth) = 0;
3190     (yy_start_stack) =  NULL;
3191
3192 /* Defined in main.c */
3193 #ifdef YY_STDINIT
3194     xbt_graph_parse_in = stdin;
3195     xbt_graph_parse_out = stdout;
3196 #else
3197     xbt_graph_parse_in = (FILE *) 0;
3198     xbt_graph_parse_out = (FILE *) 0;
3199 #endif
3200
3201     /* For future reference: Set errno on error, since we are called by
3202      * xbt_graph_parse_lex_init()
3203      */
3204     return 0;
3205 }
3206
3207 /* xbt_graph_parse_lex_destroy is for both reentrant and non-reentrant scanners. */
3208 int xbt_graph_parse_lex_destroy  (void)
3209 {
3210     
3211     /* Pop the buffer stack, destroying each element. */
3212         while(YY_CURRENT_BUFFER){
3213                 xbt_graph_parse__delete_buffer(YY_CURRENT_BUFFER  );
3214                 YY_CURRENT_BUFFER_LVALUE = NULL;
3215                 xbt_graph_parse_pop_buffer_state();
3216         }
3217
3218         /* Destroy the stack itself. */
3219         xbt_graph_parse_free((yy_buffer_stack) );
3220         (yy_buffer_stack) = NULL;
3221
3222     /* Destroy the start condition stack. */
3223         xbt_graph_parse_free((yy_start_stack)  );
3224         (yy_start_stack) = NULL;
3225
3226     /* Reset the globals. This is important in a non-reentrant scanner so the next time
3227      * xbt_graph_parse_lex() is called, initialization will occur. */
3228     yy_init_globals( );
3229
3230     return 0;
3231 }
3232
3233 /*
3234  * Internal utility routines.
3235  */
3236
3237 #ifndef yytext_ptr
3238 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
3239 {
3240         register int i;
3241         for ( i = 0; i < n; ++i )
3242                 s1[i] = s2[i];
3243 }
3244 #endif
3245
3246 #ifdef YY_NEED_STRLEN
3247 static int yy_flex_strlen (yyconst char * s )
3248 {
3249         register int n;
3250         for ( n = 0; s[n]; ++n )
3251                 ;
3252
3253         return n;
3254 }
3255 #endif
3256
3257 void *xbt_graph_parse_alloc (yy_size_t  size )
3258 {
3259         return (void *) malloc( size );
3260 }
3261
3262 void *xbt_graph_parse_realloc  (void * ptr, yy_size_t  size )
3263 {
3264         /* The cast to (char *) in the following accommodates both
3265          * implementations that use char* generic pointers, and those
3266          * that use void* generic pointers.  It works with the latter
3267          * because both ANSI C and C++ allow castless assignment from
3268          * any pointer type to void*, and deal with argument conversions
3269          * as though doing an assignment.
3270          */
3271         return (void *) realloc( (char *) ptr, size );
3272 }
3273
3274 void xbt_graph_parse_free (void * ptr )
3275 {
3276         free( (char *) ptr );   /* see xbt_graph_parse_realloc() for (char *) cast */
3277 }
3278
3279 #define YYTABLES_NAME "yytables"
3280
3281 /* Element context stack lookup. */
3282 int graphxml_element_context(int i)
3283 {
3284   return (0<i && i<yy_start_stack_depth
3285           ? yy_start_stack[yy_start_stack_ptr - i]
3286           : 0);
3287 }
3288
3289 #ifdef FLEX_DEBUG
3290 void print_yy_stack(char* fmt, ...)
3291 {
3292   int i = 0; va_list ap; va_start(ap, fmt);
3293   vfprintf(stderr, fmt, ap);
3294   if (graphxml_statenames) {
3295       for (i=1; i<yy_start_stack_ptr; i++) {
3296           fprintf(stderr, "%s/", graphxml_statenames[yy_start_stack[i] ]);
3297       }
3298       fprintf(stderr,"%s\n", graphxml_statenames[YY_START]);
3299   }
3300   va_end(ap);
3301 }
3302
3303 void print_graphxml_bufferstack()
3304 {
3305     int i;
3306     fputs("Buffer: ", stderr);
3307     for (i = 0; i < blimit; i++) {
3308        if ( graphxml_bufferstack[i] == '\377' ) break;
3309          putc(graphxml_bufferstack[i], stderr);
3310     }
3311     putc('\n', stderr);
3312 }
3313
3314 static void debug_enter(int state, const char* statename) {
3315   yy_push_state(state);
3316   if (xbt_graph_parse__flex_debug) {
3317        print_yy_stack("--ENTER(%s) : ",statename);
3318        print_graphxml_bufferstack();
3319   }
3320 }
3321
3322 static void debug_leave(void) {
3323     if (xbt_graph_parse__flex_debug) {
3324         print_yy_stack("--LEAVE : ");
3325         print_graphxml_bufferstack();
3326     }
3327   yy_pop_state();
3328 }
3329
3330 static void debug_set(int state, const char* statename) {
3331   BEGIN(state);
3332   if (xbt_graph_parse__flex_debug) print_yy_stack("--SET(%s) : ",statename);
3333 }
3334 #endif
3335
3336 static void cleanup(void)
3337 {
3338     if (graphxml_statenames) {
3339         free(graphxml_statenames);
3340         graphxml_statenames = NULL;
3341     }
3342     free(graphxml_bufferstack);
3343     graphxml_bufferstack = NULL;
3344
3345     free(indexstack);
3346     indexstack = NULL;
3347 }
3348
3349 static int fail(const char* fmt, ...)
3350 {
3351     int chars_left, used;
3352     va_list ap; va_start(ap, fmt);
3353 #ifdef FLEXML_yylineno
3354     used = sprintf(flexml_err_msg,
3355                    "Invalid XML (XML input line %d, state %d): ",
3356                    xbt_graph_parse_lineno, YY_START);
3357 #else
3358     used = sprintf(flexml_err_msg,
3359                    "Invalid XML (state %d): ",
3360                    YY_START);
3361 #endif
3362     chars_left = flexml_max_err_msg_size - used - 1;
3363     vsnprintf(flexml_err_msg + used, chars_left, fmt, ap);
3364     va_end(ap);
3365
3366 #ifndef FLEXML_quiet_parser
3367     /* print directly to sdterr */
3368     fprintf(stderr, "%s\n", flexml_err_msg);
3369     flexml_err_msg[0] = '\0';
3370 #endif
3371
3372     cleanup();
3373
3374     return 1;
3375 }
3376