1 #include "xbt/graphxml.h"
3 #line 3 "xbt/graphxml.c"
5 #define YY_INT_ALIGNED short int
7 /* A lexical scanner generated by flex */
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
17 /* First, we deal with platform-specific or compiler-specific issues. */
19 /* begin standard C headers. */
25 /* end standard C headers. */
27 /* flex integer type definitions */
32 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
34 #if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
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;
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;
51 /* Limits of integral types. */
53 #define INT8_MIN (-128)
56 #define INT16_MIN (-32767-1)
59 #define INT32_MIN (-2147483647-1)
62 #define INT8_MAX (127)
65 #define INT16_MAX (32767)
68 #define INT32_MAX (2147483647)
71 #define UINT8_MAX (255U)
74 #define UINT16_MAX (65535U)
77 #define UINT32_MAX (4294967295U)
80 #endif /* ! FLEXINT_H */
84 /* The "const" storage-class-modifier is valid. */
87 #else /* ! __cplusplus */
94 #endif /* ! __cplusplus */
102 /* Returned upon end-of-file. */
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
110 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
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.
116 #define BEGIN (yy_start) = 1 + 2 *
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
122 #define YY_START (((yy_start) - 1) / 2)
123 #define YYSTATE YY_START
125 /* Action number for EOF rule of a given start state. */
126 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
128 /* Special action meaning "start processing a new file". */
129 #define YY_NEW_FILE xbt_graph_parse_restart(xbt_graph_parse_in )
131 #define YY_END_OF_BUFFER_CHAR 0
133 /* Size of default input buffer. */
135 #define YY_BUF_SIZE 16384
138 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
139 #define YY_TYPEDEF_YY_BUFFER_STATE
140 typedef struct yy_buffer_state *YY_BUFFER_STATE;
143 extern int xbt_graph_parse_leng;
145 extern FILE *xbt_graph_parse_in, *xbt_graph_parse_out;
147 #define EOB_ACT_CONTINUE_SCAN 0
148 #define EOB_ACT_END_OF_FILE 1
149 #define EOB_ACT_LAST_MATCH 2
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.
158 #define YY_LESS_LINENO(n) \
161 for ( yyl = n; yyl < xbt_graph_parse_leng; ++yyl )\
162 if ( xbt_graph_parse_text[yyl] == '\n' )\
163 --xbt_graph_parse_lineno;\
166 /* Return all but the first "n" matched characters back to the input stream. */
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 */ \
180 #define unput(c) yyunput( c, (yytext_ptr) )
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).
187 #ifndef YY_TYPEDEF_YY_SIZE_T
188 #define YY_TYPEDEF_YY_SIZE_T
189 typedef unsigned int yy_size_t;
192 #ifndef YY_STRUCT_YY_BUFFER_STATE
193 #define YY_STRUCT_YY_BUFFER_STATE
194 struct yy_buffer_state
198 char *yy_ch_buf; /* input buffer */
199 char *yy_buf_pos; /* current position in input buffer */
201 /* Size of input buffer in bytes, not including room for EOB
204 yy_size_t yy_buf_size;
206 /* Number of characters read into yy_ch_buf, not including EOB
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
215 int yy_is_our_buffer;
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
222 int yy_is_interactive;
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
230 int yy_bs_lineno; /**< The line count. */
231 int yy_bs_column; /**< The column count. */
233 /* Whether to try to fill the input buffer when we reach the
238 int yy_buffer_status;
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.
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.
252 #define YY_BUFFER_EOF_PENDING 2
255 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
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. */
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
266 * Returns the top of the stack, or NULL.
268 #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
269 ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
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.
275 #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
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;
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 */
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 ...
290 static int yy_did_buffer_switch_on_eof;
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 );
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 );
304 #define YY_FLUSH_BUFFER xbt_graph_parse__flush_buffer(YY_CURRENT_BUFFER )
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 );
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 * );
314 #define yy_new_buffer xbt_graph_parse__create_buffer
316 #define yy_set_interactive(is_interactive) \
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 ); \
323 YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
326 #define yy_set_bol(at_bol) \
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 ); \
333 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
336 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
338 /* Begin user sect3 */
340 #define xbt_graph_parse_wrap() 1
341 #define YY_SKIP_YYWRAP
343 typedef unsigned char YY_CHAR;
345 FILE *xbt_graph_parse_in = (FILE *) 0, *xbt_graph_parse_out = (FILE *) 0;
347 typedef int yy_state_type;
349 extern int xbt_graph_parse_lineno;
351 int xbt_graph_parse_lineno = 1;
353 extern char *xbt_graph_parse_text;
354 #define yytext_ptr xbt_graph_parse_text
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[] );
361 /* Done after the current pattern has been matched and before the
362 * corresponding action - sets up xbt_graph_parse_text.
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; \
369 (yy_c_buf_p) = yy_cp;
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. */
377 flex_int32_t yy_verify;
380 static yyconst flex_int16_t yy_accept[546] =
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,
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,
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,
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,
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,
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,
444 static yyconst flex_int32_t yy_ec[256] =
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,
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,
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,
476 static yyconst flex_int32_t yy_meta[56] =
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,
486 static yyconst flex_int16_t yy_base[576] =
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,
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,
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,
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,
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,
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
553 static yyconst flex_int16_t yy_def[576] =
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,
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,
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,
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,
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,
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
620 static yyconst flex_int16_t yy_nxt[1598] =
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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
800 static yyconst flex_int16_t yy_chk[1598] =
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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
980 /* Table of booleans, true if rule could match eol. */
981 static yyconst flex_int32_t yy_rule_can_match_eol[90] =
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, };
989 static yy_state_type yy_last_accepting_state;
990 static char *yy_last_accepting_cpos;
992 extern int xbt_graph_parse__flex_debug;
993 int xbt_graph_parse__flex_debug = 0;
995 /* The intent behind this definition is that it'll catch
996 * any uses of REJECT which flex missed.
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.
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).
1011 * There are two, intertwined parts to this program, part A and part B.
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.
1020 * You can redistribute, use, perform, display and/or modify "Part A"
1021 * provided the following two conditions hold:
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.
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.
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.
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".
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.
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 $";
1057 #if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(__TOS_WIN__)
1058 # ifndef __STRICT_ANSI__
1060 # include <process.h>
1063 # include <unistd.h>
1071 /* Generated definitions. */
1072 #define FLEXML_yylineno
1073 #define FLEXML_BUFFERSTACKSIZE 1000000
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;
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*);
1100 # define ENTER(state) (yy_push_state(state))
1101 # define LEAVE (yy_pop_state())
1102 # define SET(state) BEGIN(state)
1105 /* Generic actions. */
1106 #define SKIP /*skip*/
1107 #define SUCCEED CLEANUP; return 0
1109 #define FAIL return fail
1110 static int fail(const char*, ...);
1111 const char * graphxml_parse_err_msg(void);
1114 static void cleanup(void);
1115 #define CLEANUP cleanup()
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];
1123 #ifdef FLEXML_HasMixed
1124 static BufferLast* last = (BufferLast*)0;
1126 static char* next = bufferstack;
1128 #define BUFFERSET(P) (P = next)
1129 #define BUFFERPUTC(C) (assert(next<limit), *(next++) = (C))
1130 #define BUFFERDONE (BUFFERPUTC('\0'))
1132 #define BUFFERLITERAL(C,P) bufferliteral(C,&(P),xbt_graph_parse_text)
1133 static void bufferliteral(char c, const char** pp, char* text)
1135 char *s = strchr(text,c), *e = strrchr(text,c);
1136 assert(s <= e); BUFFERSET(*pp);
1138 if (isspace(*s)) { BUFFERPUTC(' '); while (isspace(*s)) ++s; }
1139 else BUFFERPUTC(*s);
1144 #ifdef FLEXML_HasMixed
1145 static void pushbuffer(const char* p)
1147 BufferLast* l = (BufferLast*)next;
1148 assert(next < limit);
1155 static const char* popbuffer(void)
1157 BufferLast* l = last;
1158 assert(last != (BufferLast*)0);
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'):
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
1193 const char* *graphxml_statenames=NULL;
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
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.
1226 #if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(__TOS_WIN__)
1227 # ifndef __STRICT_ANSI__
1229 # include <process.h>
1232 # include <unistd.h>
1236 #ifndef YY_EXTRA_TYPE
1237 #define YY_EXTRA_TYPE void *
1240 /* Macros after this point can all be overridden by user definitions in
1244 #ifndef YY_SKIP_YYWRAP
1246 extern "C" int xbt_graph_parse_wrap (void );
1248 extern int xbt_graph_parse_wrap (void );
1253 static void yy_flex_strncpy (char *,yyconst char *,int );
1256 #ifdef YY_NEED_STRLEN
1257 static int yy_flex_strlen (yyconst char * );
1263 static int yyinput (void );
1265 static int input (void );
1270 static int yy_start_stack_ptr = 0;
1271 static int yy_start_stack_depth = 0;
1272 static int *yy_start_stack = 0;
1274 static void yy_push_state (int new_state );
1276 static void yy_pop_state (void );
1278 /* Amount of stuff to slurp up with each read. */
1279 #ifndef YY_READ_BUF_SIZE
1280 #define YY_READ_BUF_SIZE 8192
1283 /* Copy whatever the last rule matched to the standard output. */
1285 /* This used to be an fputs(), but since the string might contain NUL's,
1286 * we now use fwrite().
1288 #define ECHO (void) fwrite( xbt_graph_parse_text, xbt_graph_parse_leng, 1, xbt_graph_parse_out )
1291 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
1292 * is returned in "result".
1295 #define YY_INPUT(buf,result,max_size) \
1296 if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
1300 for ( n = 0; n < max_size && \
1301 (c = getc( xbt_graph_parse_in )) != EOF && c != '\n'; ++n ) \
1302 buf[n] = (char) c; \
1304 buf[n++] = (char) c; \
1305 if ( c == EOF && ferror( xbt_graph_parse_in ) ) \
1306 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1312 while ( (result = fread(buf, 1, max_size, xbt_graph_parse_in))==0 && ferror(xbt_graph_parse_in)) \
1314 if( errno != EINTR) \
1316 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1320 clearerr(xbt_graph_parse_in); \
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.
1332 #define yyterminate() return YY_NULL
1335 /* Number of entries by which start-condition stack grows. */
1336 #ifndef YY_START_STACK_INCR
1337 #define YY_START_STACK_INCR 25
1340 /* Report a fatal error. */
1341 #ifndef YY_FATAL_ERROR
1342 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
1345 /* end tables serialization structures and prototypes */
1347 /* Default declaration of generated scanner - a define so the user can
1348 * easily add parameters.
1351 #define YY_DECL_IS_OURS 1
1353 extern int xbt_graph_parse_lex (void);
1355 #define YY_DECL int xbt_graph_parse_lex (void)
1356 #endif /* !YY_DECL */
1358 /* Code executed at the beginning of each rule, after xbt_graph_parse_text and xbt_graph_parse_leng
1361 #ifndef YY_USER_ACTION
1362 #define YY_USER_ACTION
1365 /* Code executed at the end of each rule. */
1367 #define YY_BREAK break;
1370 #define YY_RULE_SETUP \
1373 /** The main scanner function which does all the work.
1377 register yy_state_type yy_current_state;
1378 register char *yy_cp, *yy_bp;
1379 register int yy_act;
1381 /* Bypass Flex's default INITIAL state and begin by parsing the XML prolog. */
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";
1411 /* COMMENTS and PIs: handled uniformly for efficiency. */
1422 (yy_start) = 1; /* first start state */
1424 if ( ! xbt_graph_parse_in )
1425 xbt_graph_parse_in = stdin;
1427 if ( ! xbt_graph_parse_out )
1428 xbt_graph_parse_out = stdout;
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 );
1436 xbt_graph_parse__load_buffer_state( );
1439 while ( 1 ) /* loops until end-of-file is reached */
1441 yy_cp = (yy_c_buf_p);
1443 /* Support of xbt_graph_parse_text. */
1444 *yy_cp = (yy_hold_char);
1446 /* yy_bp points to the position in yy_ch_buf of the start of
1451 yy_current_state = (yy_start);
1455 register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
1456 if ( yy_accept[yy_current_state] )
1458 (yy_last_accepting_state) = yy_current_state;
1459 (yy_last_accepting_cpos) = yy_cp;
1461 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
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];
1467 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1470 while ( yy_base[yy_current_state] != 1542 );
1473 yy_act = yy_accept[yy_current_state];
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];
1481 YY_DO_BEFORE_ACTION;
1483 if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] )
1486 for ( yyl = 0; yyl < xbt_graph_parse_leng; ++yyl )
1487 if ( xbt_graph_parse_text[yyl] == '\n' )
1489 xbt_graph_parse_lineno++;
1493 do_action: /* This label is used only to access EOF actions. */
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;
1520 /* rule 6 can match eol */
1524 case YY_STATE_EOF(INCOMMENT):
1525 FAIL("EOF in comment.");
1534 /* rule 9 can match eol */
1538 case YY_STATE_EOF(INPI):
1539 FAIL("EOF in PI (processing instruction).");
1542 /* SPACES: skipped uniformly */
1544 /* rule 10 can match eol */
1548 /* PROLOG: determine root element and process it. */
1551 /* rule 11 can match eol */
1556 /* rule 12 can match eol */
1558 FAIL("Bad declaration %s.",xbt_graph_parse_text);
1562 /* rule 13 can match eol */
1564 SET(ROOT_graphxml_edge);
1567 /* rule 14 can match eol */
1569 SET(ROOT_graphxml_node);
1572 /* rule 15 can match eol */
1574 SET(ROOT_graphxml_graph);
1577 /* rule 16 can match eol */
1579 FAIL("Bad declaration %s.",xbt_graph_parse_text);
1583 FAIL("Unexpected character `%c' in prolog.", xbt_graph_parse_text[0]);
1585 case YY_STATE_EOF(PROLOG):
1586 case YY_STATE_EOF(DOCTYPE):
1587 FAIL("EOF in prolog.");
1590 /* RULES DERIVED FROM DTD. */
1591 /* <!-- Small DTD for xbt graphs. --> */
1592 /* isDirected (true|false) "true"
1595 /* rule 18 can match eol */
1598 A_graphxml_graph_isDirected = A_graphxml_graph_isDirected_true;
1599 ENTER(AL_graphxml_graph);
1604 /* rule 19 can match eol */
1606 /* rule 20 can match eol */
1608 A_graphxml_graph_isDirected = A_graphxml_graph_isDirected_true;
1611 /* rule 21 can match eol */
1613 /* rule 22 can match eol */
1615 A_graphxml_graph_isDirected = A_graphxml_graph_isDirected_false;
1620 LEAVE; STag_graphxml_graph();graphxml_pcdata = NULL; ENTER(S_graphxml_graph);
1626 LEAVE; STag_graphxml_graph(); graphxml_pcdata = NULL; ETag_graphxml_graph();
1628 case ROOT_graphxml_graph: SET(EPILOG); break;
1634 FAIL("Unexpected character `%c' in attribute list of graph element.", xbt_graph_parse_text[0]);
1638 FAIL("Bad attribute `%s' in `graph' element start tag.",xbt_graph_parse_text);
1640 case YY_STATE_EOF(AL_graphxml_graph):
1641 FAIL("EOF in attribute list of `graph' element.");
1645 /* rule 27 can match eol */
1649 ETag_graphxml_graph();
1651 case ROOT_graphxml_graph: SET(EPILOG); break;
1656 /* rule 28 can match eol */
1658 FAIL("Unexpected end-tag `%s': `</graph>' expected.",xbt_graph_parse_text);
1662 FAIL("Unexpected character `%c': `</graph>' expected.",xbt_graph_parse_text[0]);
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.");
1673 * name CDATA #REQUIRED
1675 * position_x CDATA "-1.0"
1676 * position_y CDATA "-1.0"
1679 /* rule 30 can match eol */
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);
1692 /* rule 31 can match eol */
1694 ENTER(VALUE1); BUFFERSET(A_graphxml_node_label);
1697 /* rule 32 can match eol */
1699 ENTER(VALUE2); BUFFERSET(A_graphxml_node_label);
1702 /* rule 33 can match eol */
1704 ENTER(VALUE1); BUFFERSET(A_graphxml_node_name);
1707 /* rule 34 can match eol */
1709 ENTER(VALUE2); BUFFERSET(A_graphxml_node_name);
1712 /* rule 35 can match eol */
1714 ENTER(VALUE1); BUFFERSET(A_graphxml_node_data);
1717 /* rule 36 can match eol */
1719 ENTER(VALUE2); BUFFERSET(A_graphxml_node_data);
1722 /* rule 37 can match eol */
1724 ENTER(VALUE1); BUFFERSET(A_graphxml_node_position_x);
1727 /* rule 38 can match eol */
1729 ENTER(VALUE2); BUFFERSET(A_graphxml_node_position_x);
1732 /* rule 39 can match eol */
1734 ENTER(VALUE1); BUFFERSET(A_graphxml_node_position_y);
1737 /* rule 40 can match eol */
1739 ENTER(VALUE2); BUFFERSET(A_graphxml_node_position_y);
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);
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();
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;
1761 FAIL("Unexpected character `%c' in attribute list of node element.", xbt_graph_parse_text[0]);
1765 FAIL("Bad attribute `%s' in `node' element start tag.",xbt_graph_parse_text);
1767 case YY_STATE_EOF(AL_graphxml_node):
1768 FAIL("EOF in attribute list of `node' element.");
1772 /* rule 45 can match eol */
1776 ETag_graphxml_node();
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;
1784 /* rule 46 can match eol */
1786 FAIL("Unexpected end-tag `%s': `</node>' expected.",xbt_graph_parse_text);
1790 FAIL("Unexpected character `%c': `</node>' expected.",xbt_graph_parse_text[0]);
1792 case YY_STATE_EOF(E_graphxml_node):
1793 FAIL("Premature EOF: `</node>' expected.");
1797 * name CDATA #IMPLIED
1798 * source CDATA #REQUIRED
1799 * target CDATA #REQUIRED
1800 * length CDATA "-1.0"
1804 /* rule 48 can match eol */
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);
1818 /* rule 49 can match eol */
1820 ENTER(VALUE1); BUFFERSET(A_graphxml_edge_label);
1823 /* rule 50 can match eol */
1825 ENTER(VALUE2); BUFFERSET(A_graphxml_edge_label);
1828 /* rule 51 can match eol */
1830 ENTER(VALUE1); BUFFERSET(A_graphxml_edge_name);
1833 /* rule 52 can match eol */
1835 ENTER(VALUE2); BUFFERSET(A_graphxml_edge_name);
1838 /* rule 53 can match eol */
1840 ENTER(VALUE1); BUFFERSET(A_graphxml_edge_source);
1843 /* rule 54 can match eol */
1845 ENTER(VALUE2); BUFFERSET(A_graphxml_edge_source);
1848 /* rule 55 can match eol */
1850 ENTER(VALUE1); BUFFERSET(A_graphxml_edge_target);
1853 /* rule 56 can match eol */
1855 ENTER(VALUE2); BUFFERSET(A_graphxml_edge_target);
1858 /* rule 57 can match eol */
1860 ENTER(VALUE1); BUFFERSET(A_graphxml_edge_length);
1863 /* rule 58 can match eol */
1865 ENTER(VALUE2); BUFFERSET(A_graphxml_edge_length);
1868 /* rule 59 can match eol */
1870 ENTER(VALUE1); BUFFERSET(A_graphxml_edge_data);
1873 /* rule 60 can match eol */
1875 ENTER(VALUE2); BUFFERSET(A_graphxml_edge_data);
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);
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();
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;
1899 FAIL("Unexpected character `%c' in attribute list of edge element.", xbt_graph_parse_text[0]);
1903 FAIL("Bad attribute `%s' in `edge' element start tag.",xbt_graph_parse_text);
1905 case YY_STATE_EOF(AL_graphxml_edge):
1906 FAIL("EOF in attribute list of `edge' element.");
1910 /* rule 65 can match eol */
1914 ETag_graphxml_edge();
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;
1922 /* rule 66 can match eol */
1924 FAIL("Unexpected end-tag `%s': `</edge>' expected.",xbt_graph_parse_text);
1928 FAIL("Unexpected character `%c': `</edge>' expected.",xbt_graph_parse_text[0]);
1930 case YY_STATE_EOF(E_graphxml_edge):
1931 FAIL("Premature EOF: `</edge>' expected.");
1934 /* EPILOG: after the root element. */
1938 {SET(PROLOG); yyless(0); CLEANUP; return -1;}
1940 case YY_STATE_EOF(EPILOG):
1944 /* CHARACTER DATA. */
1946 /* Non-defined standard entities... */
1967 /* Character entities. */
1970 BUFFERPUTC((unsigned char)atoi(xbt_graph_parse_text+2));
1974 BUFFERPUTC((unsigned char)strtol(xbt_graph_parse_text+3,NULL,16));
1978 /* rule 76 can match eol */
1980 /* rule 77 can match eol */
1982 /* rule 78 can match eol */
1984 /* rule 79 can match eol */
1995 FAIL("Unexpected `]""]>' in character data.");
2002 case YY_STATE_EOF(VALUE1):
2003 FAIL("EOF in literal (\"'\" expected).");
2010 case YY_STATE_EOF(VALUE2):
2011 FAIL("EOF in literal (`\"' expected).");
2015 /* rule 84 can match eol */
2017 BUFFERPUTC(xbt_graph_parse_text[0]);
2021 FAIL("Spurious `%c' in character data.",xbt_graph_parse_text[0]);
2028 /* "]""]" BUFFERPUTC(xbt_graph_parse_text[0]); BUFFERPUTC(xbt_graph_parse_text[1]); */
2031 BUFFERPUTC(xbt_graph_parse_text[0]);
2033 case YY_STATE_EOF(CDATA):
2034 FAIL("EOF in CDATA section.");
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. */
2042 /* rule 88 can match eol */
2044 FAIL("Syntax error on character `%c'.", xbt_graph_parse_text[0]);
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):
2060 case YY_END_OF_BUFFER:
2062 /* Amount of text matched not including the EOB char. */
2063 int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
2065 /* Undo the effects of YY_DO_BEFORE_ACTION. */
2066 *yy_cp = (yy_hold_char);
2067 YY_RESTORE_YY_MORE_OFFSET
2069 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
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.
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;
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
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;
2096 (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
2098 yy_current_state = yy_get_previous_state( );
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).
2109 yy_next_state = yy_try_NUL_trans( yy_current_state );
2111 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
2113 if ( yy_next_state )
2115 /* Consume the NUL. */
2116 yy_cp = ++(yy_c_buf_p);
2117 yy_current_state = yy_next_state;
2123 yy_cp = (yy_c_buf_p);
2124 goto yy_find_action;
2128 else switch ( yy_get_next_buffer( ) )
2130 case EOB_ACT_END_OF_FILE:
2132 (yy_did_buffer_switch_on_eof) = 0;
2134 if ( xbt_graph_parse_wrap( ) )
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.
2145 (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
2147 yy_act = YY_STATE_EOF(YY_START);
2153 if ( ! (yy_did_buffer_switch_on_eof) )
2159 case EOB_ACT_CONTINUE_SCAN:
2161 (yytext_ptr) + yy_amount_of_matched_text;
2163 yy_current_state = yy_get_previous_state( );
2165 yy_cp = (yy_c_buf_p);
2166 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
2169 case EOB_ACT_LAST_MATCH:
2171 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
2173 yy_current_state = yy_get_previous_state( );
2175 yy_cp = (yy_c_buf_p);
2176 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
2177 goto yy_find_action;
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 */
2189 /* yy_get_next_buffer - try to read in a new buffer
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
2196 static int yy_get_next_buffer (void)
2198 register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
2199 register char *source = (yytext_ptr);
2200 register int number_to_move, i;
2203 if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
2205 "fatal flex scanner internal error--end of buffer missed" );
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 )
2211 /* We matched a single character, the EOB, so
2212 * treat this as a final EOF.
2214 return EOB_ACT_END_OF_FILE;
2219 /* We matched some text prior to the EOB, first
2222 return EOB_ACT_LAST_MATCH;
2226 /* Try to read more data. */
2228 /* First move last chars to start of buffer. */
2229 number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
2231 for ( i = 0; i < number_to_move; ++i )
2232 *(dest++) = *(source++);
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,
2238 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
2243 YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
2245 while ( num_to_read <= 0 )
2246 { /* Not enough room in the buffer - grow it. */
2248 /* just a shorter name for the current buffer */
2249 YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
2251 int yy_c_buf_p_offset =
2252 (int) ((yy_c_buf_p) - b->yy_ch_buf);
2254 if ( b->yy_is_our_buffer )
2256 int new_size = b->yy_buf_size * 2;
2258 if ( new_size <= 0 )
2259 b->yy_buf_size += b->yy_buf_size / 8;
2261 b->yy_buf_size *= 2;
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 );
2268 /* Can't grow it, we don't own it. */
2271 if ( ! b->yy_ch_buf )
2273 "fatal error - scanner input buffer overflow" );
2275 (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
2277 num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
2282 if ( num_to_read > YY_READ_BUF_SIZE )
2283 num_to_read = YY_READ_BUF_SIZE;
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 );
2289 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
2292 if ( (yy_n_chars) == 0 )
2294 if ( number_to_move == YY_MORE_ADJ )
2296 ret_val = EOB_ACT_END_OF_FILE;
2297 xbt_graph_parse_restart(xbt_graph_parse_in );
2302 ret_val = EOB_ACT_LAST_MATCH;
2303 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
2304 YY_BUFFER_EOF_PENDING;
2309 ret_val = EOB_ACT_CONTINUE_SCAN;
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;
2315 (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
2320 /* yy_get_previous_state - get the state just before the EOB char was reached */
2322 static yy_state_type yy_get_previous_state (void)
2324 register yy_state_type yy_current_state;
2325 register char *yy_cp;
2327 yy_current_state = (yy_start);
2329 for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
2331 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
2332 if ( yy_accept[yy_current_state] )
2334 (yy_last_accepting_state) = yy_current_state;
2335 (yy_last_accepting_cpos) = yy_cp;
2337 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
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];
2343 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2346 return yy_current_state;
2349 /* yy_try_NUL_trans - try to make a transition on the NUL character
2352 * next_state = yy_try_NUL_trans( current_state );
2354 static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state )
2356 register int yy_is_jam;
2357 register char *yy_cp = (yy_c_buf_p);
2359 register YY_CHAR yy_c = 1;
2360 if ( yy_accept[yy_current_state] )
2362 (yy_last_accepting_state) = yy_current_state;
2363 (yy_last_accepting_cpos) = yy_cp;
2365 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
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];
2371 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2372 yy_is_jam = (yy_current_state == 545);
2374 return yy_is_jam ? 0 : yy_current_state;
2379 static int yyinput (void)
2381 static int input (void)
2387 *(yy_c_buf_p) = (yy_hold_char);
2389 if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
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.
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';
2400 { /* need more input */
2401 int offset = (yy_c_buf_p) - (yytext_ptr);
2404 switch ( yy_get_next_buffer( ) )
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.
2417 /* Reset buffer status. */
2418 xbt_graph_parse_restart(xbt_graph_parse_in );
2422 case EOB_ACT_END_OF_FILE:
2424 if ( xbt_graph_parse_wrap( ) )
2427 if ( ! (yy_did_buffer_switch_on_eof) )
2436 case EOB_ACT_CONTINUE_SCAN:
2437 (yy_c_buf_p) = (yytext_ptr) + offset;
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);
2449 xbt_graph_parse_lineno++;
2454 #endif /* ifndef YY_NO_INPUT */
2456 /** Immediately switch to a different input stream.
2457 * @param input_file A readable stream.
2459 * @note This function does not reset the start condition to @c INITIAL .
2461 void xbt_graph_parse_restart (FILE * input_file )
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 );
2470 xbt_graph_parse__init_buffer(YY_CURRENT_BUFFER,input_file );
2471 xbt_graph_parse__load_buffer_state( );
2474 /** Switch to a different input buffer.
2475 * @param new_buffer The new input buffer.
2478 void xbt_graph_parse__switch_to_buffer (YY_BUFFER_STATE new_buffer )
2481 /* TODO. We should be able to replace this entire function body
2483 * xbt_graph_parse_pop_buffer_state();
2484 * xbt_graph_parse_push_buffer_state(new_buffer);
2486 xbt_graph_parse_ensure_buffer_stack ();
2487 if ( YY_CURRENT_BUFFER == new_buffer )
2490 if ( YY_CURRENT_BUFFER )
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);
2498 YY_CURRENT_BUFFER_LVALUE = new_buffer;
2499 xbt_graph_parse__load_buffer_state( );
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.
2506 (yy_did_buffer_switch_on_eof) = 1;
2509 static void xbt_graph_parse__load_buffer_state (void)
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);
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.
2521 * @return the allocated buffer state.
2523 YY_BUFFER_STATE xbt_graph_parse__create_buffer (FILE * file, int size )
2527 b = (YY_BUFFER_STATE) xbt_graph_parse_alloc(sizeof( struct yy_buffer_state ) );
2529 YY_FATAL_ERROR( "out of dynamic memory in xbt_graph_parse__create_buffer()" );
2531 b->yy_buf_size = size;
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.
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()" );
2540 b->yy_is_our_buffer = 1;
2542 xbt_graph_parse__init_buffer(b,file );
2547 /** Destroy the buffer.
2548 * @param b a buffer created with xbt_graph_parse__create_buffer()
2551 void xbt_graph_parse__delete_buffer (YY_BUFFER_STATE b )
2557 if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
2558 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
2560 if ( b->yy_is_our_buffer )
2561 xbt_graph_parse_free((void *) b->yy_ch_buf );
2563 xbt_graph_parse_free((void *) b );
2568 extern int isatty (int );
2570 #endif /* __cplusplus */
2572 /* Initializes or reinitializes a buffer.
2573 * This function is sometimes called more than once on the same buffer,
2574 * such as during a xbt_graph_parse_restart() or at EOF.
2576 static void xbt_graph_parse__init_buffer (YY_BUFFER_STATE b, FILE * file )
2581 xbt_graph_parse__flush_buffer(b );
2583 b->yy_input_file = file;
2584 b->yy_fill_buffer = 1;
2586 /* If b is the current buffer, then xbt_graph_parse__init_buffer was _probably_
2587 * called from xbt_graph_parse_restart() or through yy_get_next_buffer.
2588 * In that case, we don't want to reset the lineno or column.
2590 if (b != YY_CURRENT_BUFFER){
2591 b->yy_bs_lineno = 1;
2592 b->yy_bs_column = 0;
2595 b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
2600 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
2601 * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
2604 void xbt_graph_parse__flush_buffer (YY_BUFFER_STATE b )
2611 /* We always need two end-of-buffer characters. The first causes
2612 * a transition to the end-of-buffer state. The second causes
2613 * a jam in that state.
2615 b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
2616 b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
2618 b->yy_buf_pos = &b->yy_ch_buf[0];
2621 b->yy_buffer_status = YY_BUFFER_NEW;
2623 if ( b == YY_CURRENT_BUFFER )
2624 xbt_graph_parse__load_buffer_state( );
2627 /** Pushes the new state onto the stack. The new state becomes
2628 * the current state. This function will allocate the stack
2630 * @param new_buffer The new state.
2633 void xbt_graph_parse_push_buffer_state (YY_BUFFER_STATE new_buffer )
2635 if (new_buffer == NULL)
2638 xbt_graph_parse_ensure_buffer_stack();
2640 /* This block is copied from xbt_graph_parse__switch_to_buffer. */
2641 if ( YY_CURRENT_BUFFER )
2643 /* Flush out information for old buffer. */
2644 *(yy_c_buf_p) = (yy_hold_char);
2645 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
2646 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
2649 /* Only push if top exists. Otherwise, replace top. */
2650 if (YY_CURRENT_BUFFER)
2651 (yy_buffer_stack_top)++;
2652 YY_CURRENT_BUFFER_LVALUE = new_buffer;
2654 /* copied from xbt_graph_parse__switch_to_buffer. */
2655 xbt_graph_parse__load_buffer_state( );
2656 (yy_did_buffer_switch_on_eof) = 1;
2659 /** Removes and deletes the top of the stack, if present.
2660 * The next element becomes the new top.
2663 void xbt_graph_parse_pop_buffer_state (void)
2665 if (!YY_CURRENT_BUFFER)
2668 xbt_graph_parse__delete_buffer(YY_CURRENT_BUFFER );
2669 YY_CURRENT_BUFFER_LVALUE = NULL;
2670 if ((yy_buffer_stack_top) > 0)
2671 --(yy_buffer_stack_top);
2673 if (YY_CURRENT_BUFFER) {
2674 xbt_graph_parse__load_buffer_state( );
2675 (yy_did_buffer_switch_on_eof) = 1;
2679 /* Allocates the stack if it does not exist.
2680 * Guarantees space for at least one push.
2682 static void xbt_graph_parse_ensure_buffer_stack (void)
2686 if (!(yy_buffer_stack)) {
2688 /* First allocation is just for 2 elements, since we don't know if this
2689 * scanner will even need a stack. We use 2 instead of 1 to avoid an
2690 * immediate realloc on the next call.
2693 (yy_buffer_stack) = (struct yy_buffer_state**)xbt_graph_parse_alloc
2694 (num_to_alloc * sizeof(struct yy_buffer_state*)
2697 memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
2699 (yy_buffer_stack_max) = num_to_alloc;
2700 (yy_buffer_stack_top) = 0;
2704 if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
2706 /* Increase the buffer to prepare for a possible push. */
2707 int grow_size = 8 /* arbitrary grow size */;
2709 num_to_alloc = (yy_buffer_stack_max) + grow_size;
2710 (yy_buffer_stack) = (struct yy_buffer_state**)xbt_graph_parse_realloc
2712 num_to_alloc * sizeof(struct yy_buffer_state*)
2715 /* zero only the new slots.*/
2716 memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
2717 (yy_buffer_stack_max) = num_to_alloc;
2721 /** Setup the input buffer state to scan directly from a user-specified character buffer.
2722 * @param base the character buffer
2723 * @param size the size in bytes of the character buffer
2725 * @return the newly allocated buffer state object.
2727 YY_BUFFER_STATE xbt_graph_parse__scan_buffer (char * base, yy_size_t size )
2732 base[size-2] != YY_END_OF_BUFFER_CHAR ||
2733 base[size-1] != YY_END_OF_BUFFER_CHAR )
2734 /* They forgot to leave room for the EOB's. */
2737 b = (YY_BUFFER_STATE) xbt_graph_parse_alloc(sizeof( struct yy_buffer_state ) );
2739 YY_FATAL_ERROR( "out of dynamic memory in xbt_graph_parse__scan_buffer()" );
2741 b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
2742 b->yy_buf_pos = b->yy_ch_buf = base;
2743 b->yy_is_our_buffer = 0;
2744 b->yy_input_file = 0;
2745 b->yy_n_chars = b->yy_buf_size;
2746 b->yy_is_interactive = 0;
2748 b->yy_fill_buffer = 0;
2749 b->yy_buffer_status = YY_BUFFER_NEW;
2751 xbt_graph_parse__switch_to_buffer(b );
2756 /** Setup the input buffer state to scan a string. The next call to xbt_graph_parse_lex() will
2757 * scan from a @e copy of @a str.
2758 * @param str a NUL-terminated string to scan
2760 * @return the newly allocated buffer state object.
2761 * @note If you want to scan bytes that may contain NUL values, then use
2762 * xbt_graph_parse__scan_bytes() instead.
2764 YY_BUFFER_STATE xbt_graph_parse__scan_string (yyconst char * yy_str )
2767 return xbt_graph_parse__scan_bytes(yy_str,strlen(yy_str) );
2770 /** Setup the input buffer state to scan the given bytes. The next call to xbt_graph_parse_lex() will
2771 * scan from a @e copy of @a bytes.
2772 * @param bytes the byte buffer to scan
2773 * @param len the number of bytes in the buffer pointed to by @a bytes.
2775 * @return the newly allocated buffer state object.
2777 YY_BUFFER_STATE xbt_graph_parse__scan_bytes (yyconst char * bytes, int len )
2784 /* Get memory for full buffer, including space for trailing EOB's. */
2786 buf = (char *) xbt_graph_parse_alloc(n );
2788 YY_FATAL_ERROR( "out of dynamic memory in xbt_graph_parse__scan_bytes()" );
2790 for ( i = 0; i < len; ++i )
2793 buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
2795 b = xbt_graph_parse__scan_buffer(buf,n );
2797 YY_FATAL_ERROR( "bad buffer in xbt_graph_parse__scan_bytes()" );
2799 /* It's okay to grow etc. this buffer, and we should throw it
2800 * away when we're done.
2802 b->yy_is_our_buffer = 1;
2807 static void yy_push_state (int new_state )
2809 if ( (yy_start_stack_ptr) >= (yy_start_stack_depth) )
2813 (yy_start_stack_depth) += YY_START_STACK_INCR;
2814 new_size = (yy_start_stack_depth) * sizeof( int );
2816 if ( ! (yy_start_stack) )
2817 (yy_start_stack) = (int *) xbt_graph_parse_alloc(new_size );
2820 (yy_start_stack) = (int *) xbt_graph_parse_realloc((void *) (yy_start_stack),new_size );
2822 if ( ! (yy_start_stack) )
2824 "out of memory expanding start-condition stack" );
2827 (yy_start_stack)[(yy_start_stack_ptr)++] = YY_START;
2832 static void yy_pop_state (void)
2834 if ( --(yy_start_stack_ptr) < 0 )
2835 YY_FATAL_ERROR( "start-condition stack underflow" );
2837 BEGIN((yy_start_stack)[(yy_start_stack_ptr)]);
2840 #ifndef YY_EXIT_FAILURE
2841 #define YY_EXIT_FAILURE 2
2844 static void yy_fatal_error (yyconst char* msg )
2846 (void) fprintf( stderr, "%s\n", msg );
2847 exit( YY_EXIT_FAILURE );
2850 /* Redefine yyless() so it works in section 3 code. */
2856 /* Undo effects of setting up xbt_graph_parse_text. */ \
2857 int yyless_macro_arg = (n); \
2858 YY_LESS_LINENO(yyless_macro_arg);\
2859 xbt_graph_parse_text[xbt_graph_parse_leng] = (yy_hold_char); \
2860 (yy_c_buf_p) = xbt_graph_parse_text + yyless_macro_arg; \
2861 (yy_hold_char) = *(yy_c_buf_p); \
2862 *(yy_c_buf_p) = '\0'; \
2863 xbt_graph_parse_leng = yyless_macro_arg; \
2867 /* Accessor methods (get/set functions) to struct members. */
2869 /** Get the current line number.
2872 int xbt_graph_parse_get_lineno (void)
2875 return xbt_graph_parse_lineno;
2878 /** Get the input stream.
2881 FILE *xbt_graph_parse_get_in (void)
2883 return xbt_graph_parse_in;
2886 /** Get the output stream.
2889 FILE *xbt_graph_parse_get_out (void)
2891 return xbt_graph_parse_out;
2894 /** Get the length of the current token.
2897 int xbt_graph_parse_get_leng (void)
2899 return xbt_graph_parse_leng;
2902 /** Get the current token.
2906 char *xbt_graph_parse_get_text (void)
2908 return xbt_graph_parse_text;
2911 /** Set the current line number.
2912 * @param line_number
2915 void xbt_graph_parse_set_lineno (int line_number )
2918 xbt_graph_parse_lineno = line_number;
2921 /** Set the input stream. This does not discard the current
2923 * @param in_str A readable stream.
2925 * @see xbt_graph_parse__switch_to_buffer
2927 void xbt_graph_parse_set_in (FILE * in_str )
2929 xbt_graph_parse_in = in_str ;
2932 void xbt_graph_parse_set_out (FILE * out_str )
2934 xbt_graph_parse_out = out_str ;
2937 int xbt_graph_parse_get_debug (void)
2939 return xbt_graph_parse__flex_debug;
2942 void xbt_graph_parse_set_debug (int bdebug )
2944 xbt_graph_parse__flex_debug = bdebug ;
2947 /* xbt_graph_parse_lex_destroy is for both reentrant and non-reentrant scanners. */
2948 int xbt_graph_parse_lex_destroy (void)
2951 /* Pop the buffer stack, destroying each element. */
2952 while(YY_CURRENT_BUFFER){
2953 xbt_graph_parse__delete_buffer(YY_CURRENT_BUFFER );
2954 YY_CURRENT_BUFFER_LVALUE = NULL;
2955 xbt_graph_parse_pop_buffer_state();
2958 /* Destroy the stack itself. */
2959 xbt_graph_parse_free((yy_buffer_stack) );
2960 (yy_buffer_stack) = NULL;
2962 /* Destroy the start condition stack. */
2963 xbt_graph_parse_free((yy_start_stack) );
2964 (yy_start_stack) = NULL;
2970 * Internal utility routines.
2974 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
2977 for ( i = 0; i < n; ++i )
2982 #ifdef YY_NEED_STRLEN
2983 static int yy_flex_strlen (yyconst char * s )
2986 for ( n = 0; s[n]; ++n )
2993 void *xbt_graph_parse_alloc (yy_size_t size )
2995 return (void *) malloc( size );
2998 void *xbt_graph_parse_realloc (void * ptr, yy_size_t size )
3000 /* The cast to (char *) in the following accommodates both
3001 * implementations that use char* generic pointers, and those
3002 * that use void* generic pointers. It works with the latter
3003 * because both ANSI C and C++ allow castless assignment from
3004 * any pointer type to void*, and deal with argument conversions
3005 * as though doing an assignment.
3007 return (void *) realloc( (char *) ptr, size );
3010 void xbt_graph_parse_free (void * ptr )
3012 free( (char *) ptr ); /* see xbt_graph_parse_realloc() for (char *) cast */
3015 #define YYTABLES_NAME "yytables"
3018 #undef YY_FLUSH_BUFFER
3020 #undef yy_new_buffer
3021 #undef yy_set_interactive
3023 #undef YY_DO_BEFORE_ACTION
3025 #ifdef YY_DECL_IS_OURS
3026 #undef YY_DECL_IS_OURS
3030 /* Element context stack lookup. */
3031 int graphxml_element_context(int i)
3033 return (0<i && i<yy_start_stack_depth
3034 ? yy_start_stack[yy_start_stack_ptr - i]
3039 void print_yy_stack(char* fmt, ...)
3041 int i = 0; va_list ap; va_start(ap, fmt);
3042 vfprintf(stderr, fmt, ap);
3043 for (i=1; i<yy_start_stack_ptr; i++)
3044 fprintf(stderr, "%s/", graphxml_statenames[yy_start_stack[i] ]);
3045 fprintf(stderr,"%s\n", graphxml_statenames[YY_START]);
3049 static void debug_enter(int state, const char* statename) {
3050 yy_push_state(state);
3051 if (xbt_graph_parse__flex_debug) print_yy_stack("--ENTER(%s) : ",statename);
3054 static void debug_leave(void) {
3055 if (xbt_graph_parse__flex_debug) print_yy_stack("--LEAVE : ");
3059 static void debug_set(int state, const char* statename) {
3061 if (xbt_graph_parse__flex_debug) print_yy_stack("--SET(%s) : ",statename);
3065 enum {flexml_max_err_msg_size = 512};
3067 static char flexml_err_msg[flexml_max_err_msg_size];
3068 const char * graphxml_parse_err_msg()
3070 return flexml_err_msg;
3073 static void reset_graphxml_parse_err_msg()
3075 flexml_err_msg[0] = '\0';
3078 static void cleanup(void)
3080 if (graphxml_statenames) {
3081 free(graphxml_statenames);
3082 graphxml_statenames = NULL;
3086 static int fail(const char* fmt, ...)
3088 int chars_left, used;
3089 va_list ap; va_start(ap, fmt);
3090 #ifdef FLEXML_yylineno
3091 used = sprintf(flexml_err_msg,
3092 "Invalid XML (XML input line %d, state %d): ",
3093 xbt_graph_parse_lineno, YY_START);
3095 used = sprintf(flexml_err_msg,
3096 "Invalid XML (state %d): ",
3099 chars_left = flexml_max_err_msg_size - used - 1;
3100 vsnprintf(flexml_err_msg + used, chars_left, fmt, ap);
3103 #ifndef FLEXML_quiet_parser
3104 /* print directly to sdterr */
3105 fprintf(stderr, "%s\n", flexml_err_msg);
3106 flexml_err_msg[0] = '\0';