X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/bfc9b3ffef6e41c90e64b271ed981fabe05676cc..2aeae90fc3ac7059522d23c855dc0d4522d080a2:/src/xbt/graphxml.l diff --git a/src/xbt/graphxml.l b/src/xbt/graphxml.l index 8384a8fd09..b5a6b215ab 100644 --- a/src/xbt/graphxml.l +++ b/src/xbt/graphxml.l @@ -1,9 +1,10 @@ -/* Validating XML processor for graphxml.dtd. - * Generated 2006/03/20 16:15:21. +/* Validating XML processor for xbt/graphxml.dtd. + * Generated 2006/07/18 21:02:16. * * This program was generated with the FleXML XML processor generator. - * FleXML is Copyright © 1999-2005 Kristoffer Rose. All rights reserved. - * (Id: flexml.pl,v 1.45 2006/03/03 19:25:46 wdowling Exp). + * FleXML is Copyright (C) 1999-2005 Kristoffer Rose. All rights reserved. + * FleXML is Copyright (C) 2003-2006 Martin Quinson. All rights reserved. + * (Id: flexml.pl,v 1.53 2006/07/18 12:12:06 mquinson Exp). * * There are two, intertwined parts to this program, part A and part B. * @@ -11,8 +12,8 @@ * ------ * * Some parts, here collectively called "Part A", are found in the - * FleXML package. They are Copyright © 1999-2005 Kristoffer Rose. - * All rights reserved. + * FleXML package. They are Copyright (C) 1999-2005 Kristoffer Rose + * and Copyright (C) 2003-2006 Martin Quinson. All rights reserved. * * You can redistribute, use, perform, display and/or modify "Part A" * provided the following two conditions hold: @@ -47,10 +48,10 @@ %{ /* Version strings. */ -const char rcs_grahxml_flexml_skeleton[] = - "$" "Id: skel,v 1.26 2005/02/23 22:22:20 wdowling Exp $"; -const char rcs_grahxml_flexml[] = - "$" "Id: flexml.pl,v 1.45 2006/03/03 19:25:46 wdowling Exp $"; +const char rcs_graphxml_flexml_skeleton[] = + "$" "Id: skel,v 1.31 2006/07/18 18:21:13 mquinson Exp $"; +const char rcs_graphxml_flexml[] = + "$" "Id: flexml.pl,v 1.53 2006/07/18 12:12:06 mquinson Exp $"; /* ANSI headers. */ #include @@ -66,14 +67,19 @@ const char rcs_grahxml_flexml[] = /* XML processor api. */ /* FleXML-provided data. */ -const char* pcdata; -AT_edge_target A_edge_target; -AT_node_name A_node_name; -AT_node_label A_node_label; -AT_edge_label A_edge_label; -AT_edge_source A_edge_source; -AT_edge_isDirected A_edge_isDirected; -AT_edge_name A_edge_name; +const char* graphxml_pcdata; +AT_graphxml_node_name A_graphxml_node_name; +AT_graphxml_edge_source A_graphxml_edge_source; +AT_graphxml_node_position_y A_graphxml_node_position_y; +AT_graphxml_node_position_x A_graphxml_node_position_x; +AT_graphxml_edge_data A_graphxml_edge_data; +AT_graphxml_edge_target A_graphxml_edge_target; +AT_graphxml_graph_isDirected A_graphxml_graph_isDirected; +AT_graphxml_node_label A_graphxml_node_label; +AT_graphxml_node_data A_graphxml_node_data; +AT_graphxml_edge_label A_graphxml_edge_label; +AT_graphxml_edge_length A_graphxml_edge_length; +AT_graphxml_edge_name A_graphxml_edge_name; /* XML state. */ #ifdef FLEX_DEBUG @@ -95,17 +101,17 @@ AT_edge_name A_edge_name; #define FAIL return fail static int fail(const char*, ...); -const char * grahxml_parse_err_msg(void); +const char * graphxml_parse_err_msg(void); /* Cleanup */ static void cleanup(void); #define CLEANUP cleanup() /* Text buffer stack handling. */ -char bufferstack[FLEXML_BUFFERSTACKSIZE]; +static char bufferstack[FLEXML_BUFFERSTACKSIZE]; static char* limit = bufferstack + FLEXML_BUFFERSTACKSIZE; typedef struct BufferLast_s { - struct BufferLast_s *old; char* saved; char new1[1]; + struct BufferLast_s *old; const char* saved; char new1[1]; } BufferLast; #ifdef FLEXML_HasMixed static BufferLast* last = (BufferLast*)0; @@ -129,7 +135,7 @@ static void bufferliteral(char c, const char** pp, char* text) } #ifdef FLEXML_HasMixed -static void pushbuffer(char* p) +static void pushbuffer(const char* p) { BufferLast* l = (BufferLast*)next; assert(next < limit); @@ -139,7 +145,7 @@ static void pushbuffer(char* p) last = l; } -static char* popbuffer(void) +static const char* popbuffer(void) { BufferLast* l = last; assert(last != (BufferLast*)0); @@ -194,21 +200,21 @@ Literal \'[^'']*\'|\"[^""]*\" * INPI inside an XML PI * VALUE1 inside a '...'-delimited literal * VALUE2 inside a "..."-delimited literal - * CDATA inside a section. + * CDATA inside a section. * ROOT_ expect root element * AL_ inside the attribute list for * IN_ inside a with element contents (ready for end tag) * IMPOSSIBLE dummy to permit disabling rules; must be last */ %x PROLOG DOCTYPE EPILOG INCOMMENT INPI VALUE1 VALUE2 CDATA -%x ROOT_graph AL_graph S_graph S_graph_1 S_graph_2 S_graph_3 S_graph_4 S_graph_5 E_graph -%x ROOT_node AL_node E_node -%x ROOT_edge AL_edge E_edge +%x ROOT_graphxml_graph AL_graphxml_graph S_graphxml_graph S_graphxml_graph_1 S_graphxml_graph_2 S_graphxml_graph_3 S_graphxml_graph_4 S_graphxml_graph_5 E_graphxml_graph +%x ROOT_graphxml_node AL_graphxml_node E_graphxml_node +%x ROOT_graphxml_edge AL_graphxml_edge E_graphxml_edge %x IMPOSSIBLE %{ /* State names. */ -const char* *grahxml_statenames=NULL; +const char* *graphxml_statenames=NULL; %} %% @@ -217,35 +223,35 @@ const char* *grahxml_statenames=NULL; SET(PROLOG); /* FleXML_init */ next = bufferstack; - if(!grahxml_statenames) {grahxml_statenames= (const char **)calloc(IMPOSSIBLE,sizeof(char*)); - grahxml_statenames[PROLOG] = NULL; - grahxml_statenames[DOCTYPE] = NULL; - grahxml_statenames[EPILOG] = NULL; - grahxml_statenames[INCOMMENT] = NULL; - grahxml_statenames[INPI] = NULL; - grahxml_statenames[VALUE1] = NULL; - grahxml_statenames[VALUE2] = NULL; - grahxml_statenames[CDATA] = NULL; - grahxml_statenames[ROOT_graph] = NULL; - grahxml_statenames[AL_graph] = NULL; - grahxml_statenames[S_graph] = "graph"; - grahxml_statenames[S_graph_1] = "graph"; - grahxml_statenames[S_graph_2] = "graph"; - grahxml_statenames[S_graph_3] = "graph"; - grahxml_statenames[S_graph_4] = "graph"; - grahxml_statenames[S_graph_5] = "graph"; - grahxml_statenames[E_graph] = "graph"; - grahxml_statenames[ROOT_node] = NULL; - grahxml_statenames[AL_node] = NULL; - grahxml_statenames[E_node] = "node"; - grahxml_statenames[ROOT_edge] = NULL; - grahxml_statenames[AL_edge] = NULL; - grahxml_statenames[E_edge] = "edge"; + if(!graphxml_statenames) {graphxml_statenames= (const char **)calloc(IMPOSSIBLE,sizeof(char*)); + graphxml_statenames[PROLOG] = NULL; + graphxml_statenames[DOCTYPE] = NULL; + graphxml_statenames[EPILOG] = NULL; + graphxml_statenames[INCOMMENT] = NULL; + graphxml_statenames[INPI] = NULL; + graphxml_statenames[VALUE1] = NULL; + graphxml_statenames[VALUE2] = NULL; + graphxml_statenames[CDATA] = NULL; + graphxml_statenames[ROOT_graphxml_graph] = NULL; + graphxml_statenames[AL_graphxml_graph] = NULL; + graphxml_statenames[S_graphxml_graph] = "graph"; + graphxml_statenames[S_graphxml_graph_1] = "graph"; + graphxml_statenames[S_graphxml_graph_2] = "graph"; + graphxml_statenames[S_graphxml_graph_3] = "graph"; + graphxml_statenames[S_graphxml_graph_4] = "graph"; + graphxml_statenames[S_graphxml_graph_5] = "graph"; + graphxml_statenames[E_graphxml_graph] = "graph"; + graphxml_statenames[ROOT_graphxml_node] = NULL; + graphxml_statenames[AL_graphxml_node] = NULL; + graphxml_statenames[E_graphxml_node] = "node"; + graphxml_statenames[ROOT_graphxml_edge] = NULL; + graphxml_statenames[AL_graphxml_edge] = NULL; + graphxml_statenames[E_graphxml_edge] = "edge"; } /* COMMENTS and PIs: handled uniformly for efficiency. */ -{ +{ " */ -" */ + +"{ +{ + "isDirected"{Eq}"'true'" | + "isDirected"{Eq}"\"true\"" A_graphxml_graph_isDirected = A_graphxml_graph_isDirected_true; + "isDirected"{Eq}"'false'" | + "isDirected"{Eq}"\"false\"" A_graphxml_graph_isDirected = A_graphxml_graph_isDirected_false; + ">" { - LEAVE; STag_graph();pcdata = NULL; ENTER(S_graph); + LEAVE; STag_graphxml_graph();graphxml_pcdata = NULL; ENTER(S_graphxml_graph); } "/>" { - LEAVE; STag_graph(); pcdata = NULL; ETag_graph(); + LEAVE; STag_graphxml_graph(); graphxml_pcdata = NULL; ETag_graphxml_graph(); switch (YY_START) { - case ROOT_graph: SET(EPILOG); break; + case ROOT_graphxml_graph: SET(EPILOG); break; } } . FAIL("Unexpected character `%c' in attribute list of graph element.", yytext[0]); @@ -306,12 +321,12 @@ const char* *grahxml_statenames=NULL; <> FAIL("EOF in attribute list of `graph' element."); } -{ +{ "" { LEAVE; - ETag_graph(); + ETag_graphxml_graph(); switch (YY_START) { - case ROOT_graph: SET(EPILOG); break; + case ROOT_graphxml_graph: SET(EPILOG); break; } } "" FAIL("Unexpected end-tag `%s': `' expected.",yytext); @@ -321,31 +336,46 @@ const char* *grahxml_statenames=NULL; /* label CDATA "" * name CDATA #REQUIRED + * data CDATA "" + * position_x CDATA "-1.0" + * position_y CDATA "-1.0" * > */ -""{ - "label"{Eq}\' ENTER(VALUE1); BUFFERSET(A_node_label); - "label"{Eq}\" ENTER(VALUE2); BUFFERSET(A_node_label); +{ + "label"{Eq}\' ENTER(VALUE1); BUFFERSET(A_graphxml_node_label); + "label"{Eq}\" ENTER(VALUE2); BUFFERSET(A_graphxml_node_label); + + "name"{Eq}\' ENTER(VALUE1); BUFFERSET(A_graphxml_node_name); + "name"{Eq}\" ENTER(VALUE2); BUFFERSET(A_graphxml_node_name); - "name"{Eq}\' ENTER(VALUE1); BUFFERSET(A_node_name); - "name"{Eq}\" ENTER(VALUE2); BUFFERSET(A_node_name); + "data"{Eq}\' ENTER(VALUE1); BUFFERSET(A_graphxml_node_data); + "data"{Eq}\" ENTER(VALUE2); BUFFERSET(A_graphxml_node_data); + + "position_x"{Eq}\' ENTER(VALUE1); BUFFERSET(A_graphxml_node_position_x); + "position_x"{Eq}\" ENTER(VALUE2); BUFFERSET(A_graphxml_node_position_x); + + "position_y"{Eq}\' ENTER(VALUE1); BUFFERSET(A_graphxml_node_position_y); + "position_y"{Eq}\" ENTER(VALUE2); BUFFERSET(A_graphxml_node_position_y); ">" { - if (!A_node_name) FAIL("Required attribute `name' not set for `node' element."); - LEAVE; STag_node();pcdata = NULL; ENTER(E_node); + if (!A_graphxml_node_name) FAIL("Required attribute `name' not set for `node' element."); + LEAVE; STag_graphxml_node();graphxml_pcdata = NULL; ENTER(E_graphxml_node); } "/>" { - if (!A_node_name) FAIL("Required attribute `name' not set for `node' element."); - LEAVE; STag_node(); pcdata = NULL; ETag_node(); + if (!A_graphxml_node_name) FAIL("Required attribute `name' not set for `node' element."); + LEAVE; STag_graphxml_node(); graphxml_pcdata = NULL; ETag_graphxml_node(); switch (YY_START) { - case S_graph_2: case S_graph_3: case S_graph: SET(S_graph_3); break; - case ROOT_node: SET(EPILOG); break; + case S_graphxml_graph_2: case S_graphxml_graph_3: case S_graphxml_graph: SET(S_graphxml_graph_3); break; + case ROOT_graphxml_node: SET(EPILOG); break; } } . FAIL("Unexpected character `%c' in attribute list of node element.", yytext[0]); @@ -353,13 +383,13 @@ const char* *grahxml_statenames=NULL; <> FAIL("EOF in attribute list of `node' element."); } -{ +{ "" { LEAVE; - ETag_node(); + ETag_graphxml_node(); switch (YY_START) { - case S_graph_2: case S_graph_3: case S_graph: SET(S_graph_3); break; - case ROOT_node: SET(EPILOG); break; + case S_graphxml_graph_2: case S_graphxml_graph_3: case S_graphxml_graph: SET(S_graphxml_graph_3); break; + case ROOT_graphxml_node: SET(EPILOG); break; } } "" FAIL("Unexpected end-tag `%s': `' expected.",yytext); @@ -368,51 +398,54 @@ const char* *grahxml_statenames=NULL; } /* label CDATA "" - * name CDATA #IMPLIED - * source CDATA #REQUIRED - * target CDATA #REQUIRED - * isDirected (true|false) "true" + * name CDATA #IMPLIED + * source CDATA #REQUIRED + * target CDATA #REQUIRED + * length CDATA "-1.0" + * data CDATA "" * > */ -""{ - "label"{Eq}\' ENTER(VALUE1); BUFFERSET(A_edge_label); - "label"{Eq}\" ENTER(VALUE2); BUFFERSET(A_edge_label); +{ + "label"{Eq}\' ENTER(VALUE1); BUFFERSET(A_graphxml_edge_label); + "label"{Eq}\" ENTER(VALUE2); BUFFERSET(A_graphxml_edge_label); - "name"{Eq}\' ENTER(VALUE1); BUFFERSET(A_edge_name); - "name"{Eq}\" ENTER(VALUE2); BUFFERSET(A_edge_name); + "name"{Eq}\' ENTER(VALUE1); BUFFERSET(A_graphxml_edge_name); + "name"{Eq}\" ENTER(VALUE2); BUFFERSET(A_graphxml_edge_name); - "source"{Eq}\' ENTER(VALUE1); BUFFERSET(A_edge_source); - "source"{Eq}\" ENTER(VALUE2); BUFFERSET(A_edge_source); + "source"{Eq}\' ENTER(VALUE1); BUFFERSET(A_graphxml_edge_source); + "source"{Eq}\" ENTER(VALUE2); BUFFERSET(A_graphxml_edge_source); - "target"{Eq}\' ENTER(VALUE1); BUFFERSET(A_edge_target); - "target"{Eq}\" ENTER(VALUE2); BUFFERSET(A_edge_target); + "target"{Eq}\' ENTER(VALUE1); BUFFERSET(A_graphxml_edge_target); + "target"{Eq}\" ENTER(VALUE2); BUFFERSET(A_graphxml_edge_target); - "isDirected"{Eq}"'true'" | - "isDirected"{Eq}"\"true\"" A_edge_isDirected = A_edge_isDirected_true; - "isDirected"{Eq}"'false'" | - "isDirected"{Eq}"\"false\"" A_edge_isDirected = A_edge_isDirected_false; + "length"{Eq}\' ENTER(VALUE1); BUFFERSET(A_graphxml_edge_length); + "length"{Eq}\" ENTER(VALUE2); BUFFERSET(A_graphxml_edge_length); + + "data"{Eq}\' ENTER(VALUE1); BUFFERSET(A_graphxml_edge_data); + "data"{Eq}\" ENTER(VALUE2); BUFFERSET(A_graphxml_edge_data); ">" { - if (!A_edge_source) FAIL("Required attribute `source' not set for `edge' element."); - if (!A_edge_target) FAIL("Required attribute `target' not set for `edge' element."); - LEAVE; STag_edge();pcdata = NULL; ENTER(E_edge); + if (!A_graphxml_edge_source) FAIL("Required attribute `source' not set for `edge' element."); + if (!A_graphxml_edge_target) FAIL("Required attribute `target' not set for `edge' element."); + LEAVE; STag_graphxml_edge();graphxml_pcdata = NULL; ENTER(E_graphxml_edge); } "/>" { - if (!A_edge_source) FAIL("Required attribute `source' not set for `edge' element."); - if (!A_edge_target) FAIL("Required attribute `target' not set for `edge' element."); - LEAVE; STag_edge(); pcdata = NULL; ETag_edge(); + if (!A_graphxml_edge_source) FAIL("Required attribute `source' not set for `edge' element."); + if (!A_graphxml_edge_target) FAIL("Required attribute `target' not set for `edge' element."); + LEAVE; STag_graphxml_edge(); graphxml_pcdata = NULL; ETag_graphxml_edge(); switch (YY_START) { - case S_graph_1: case S_graph_3: case S_graph_5: case S_graph_4: case S_graph: SET(S_graph_5); break; - case ROOT_edge: SET(EPILOG); break; + 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; + case ROOT_graphxml_edge: SET(EPILOG); break; } } . FAIL("Unexpected character `%c' in attribute list of edge element.", yytext[0]); @@ -420,13 +453,13 @@ const char* *grahxml_statenames=NULL; <> FAIL("EOF in attribute list of `edge' element."); } -{ +{ "" { LEAVE; - ETag_edge(); + ETag_graphxml_edge(); switch (YY_START) { - case S_graph_1: case S_graph_3: case S_graph_5: case S_graph_4: case S_graph: SET(S_graph_5); break; - case ROOT_edge: SET(EPILOG); break; + 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; + case ROOT_graphxml_edge: SET(EPILOG); break; } } "" FAIL("Unexpected end-tag `%s': `' expected.",yytext); @@ -500,7 +533,7 @@ const char* *grahxml_statenames=NULL; %% /* Element context stack lookup. */ -int grahxml_element_context(int i) +int graphxml_element_context(int i) { return (0