Logo AND Algorithmique Numérique Distribuée

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