+<S_surfxml_host,S_surfxml_link_1,S_surfxml_link_2,S_surfxml_random,S_surfxml_random_2,S_surfxml_link,S_surfxml_host_1,S_surfxml_random_1,S_surfxml_process_1,S_surfxml_process,S_surfxml_process_2,S_surfxml_host_2>"<prop"{s} {
+ AX_surfxml_prop_id = 0;
+ AX_surfxml_prop_value = 0;
+ ENTER(AL_surfxml_prop); pushbuffer(0);
+ }
+
+<AL_surfxml_prop>{
+ "id"{Eq}\' ENTER(VALUE1); BUFFERSET(AX_surfxml_prop_id);
+ "id"{Eq}\" ENTER(VALUE2); BUFFERSET(AX_surfxml_prop_id);
+
+ "value"{Eq}\' ENTER(VALUE1); BUFFERSET(AX_surfxml_prop_value);
+ "value"{Eq}\" ENTER(VALUE2); BUFFERSET(AX_surfxml_prop_value);
+
+ ">" {
+ if (!AX_surfxml_prop_id) FAIL("Required attribute `id' not set for `prop' element.");
+ if (!AX_surfxml_prop_value) FAIL("Required attribute `value' not set for `prop' element.");
+ LEAVE; STag_surfxml_prop();surfxml_pcdata_ix = 0; ENTER(E_surfxml_prop);
+ }
+ "/>" {
+ if (!AX_surfxml_prop_id) FAIL("Required attribute `id' not set for `prop' element.");
+ if (!AX_surfxml_prop_value) FAIL("Required attribute `value' not set for `prop' element.");
+ LEAVE; STag_surfxml_prop(); surfxml_pcdata_ix = 0; ETag_surfxml_prop(); popbuffer(); /* attribute */
+ switch (YY_START) {
+ case S_surfxml_random: case S_surfxml_random_2: case S_surfxml_random_1: SET(S_surfxml_random_2); break;
+ case S_surfxml_process_1: case S_surfxml_process: case S_surfxml_process_2: SET(S_surfxml_process_2); break;
+ case S_surfxml_host: case S_surfxml_host_1: case S_surfxml_host_2: SET(S_surfxml_host_2); break;
+ case S_surfxml_link_1: case S_surfxml_link_2: case S_surfxml_link: SET(S_surfxml_link_2); break;
+ }
+ }
+ . FAIL("Unexpected character `%c' in attribute list of prop element.", yytext[0]);
+ {Name} FAIL("Bad attribute `%s' in `prop' element start tag.",yytext);
+ <<EOF>> FAIL("EOF in attribute list of `prop' element.");
+}
+
+<E_surfxml_prop>{
+ "</prop"{s}">" {
+ LEAVE;
+ ETag_surfxml_prop();
+ popbuffer(); /* attribute */
+ switch (YY_START) {
+ case S_surfxml_random: case S_surfxml_random_2: case S_surfxml_random_1: SET(S_surfxml_random_2); break;
+ case S_surfxml_process_1: case S_surfxml_process: case S_surfxml_process_2: SET(S_surfxml_process_2); break;
+ case S_surfxml_host: case S_surfxml_host_1: case S_surfxml_host_2: SET(S_surfxml_host_2); break;
+ case S_surfxml_link_1: case S_surfxml_link_2: case S_surfxml_link: SET(S_surfxml_link_2); break;
+ }
+ }
+ "</"{Name}{s}">" FAIL("Unexpected end-tag `%s': `</prop>' expected.",yytext);
+ . FAIL("Unexpected character `%c': `</prop>' expected.",yytext[0]);
+ <<EOF>> FAIL("Premature EOF: `</prop>' expected.");
+}
+
+<S_surfxml_platform_2,S_surfxml_platform,S_surfxml_platform_3>"<cluster"{s} {
+ AX_surfxml_cluster_id = 0;
+ AX_surfxml_cluster_prefix = 0;
+ AX_surfxml_cluster_suffix = 0;
+ AX_surfxml_cluster_radical = 0;
+ AX_surfxml_cluster_power = 0;
+ AX_surfxml_cluster_bw = 0;
+ AX_surfxml_cluster_lat = 0;
+ AX_surfxml_cluster_bb_bw = 0;
+ AX_surfxml_cluster_bb_lat = 0;
+ ENTER(AL_surfxml_cluster); pushbuffer(0);
+ }
+
+<AL_surfxml_cluster>{
+ "id"{Eq}\' ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_id);
+ "id"{Eq}\" ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_id);
+
+ "prefix"{Eq}\' ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_prefix);
+ "prefix"{Eq}\" ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_prefix);
+
+ "suffix"{Eq}\' ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_suffix);
+ "suffix"{Eq}\" ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_suffix);
+
+ "radical"{Eq}\' ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_radical);
+ "radical"{Eq}\" ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_radical);
+
+ "power"{Eq}\' ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_power);
+ "power"{Eq}\" ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_power);
+
+ "bw"{Eq}\' ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_bw);
+ "bw"{Eq}\" ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_bw);
+
+ "lat"{Eq}\' ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_lat);
+ "lat"{Eq}\" ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_lat);
+
+ "bb_bw"{Eq}\' ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_bb_bw);
+ "bb_bw"{Eq}\" ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_bb_bw);
+
+ "bb_lat"{Eq}\' ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_bb_lat);
+ "bb_lat"{Eq}\" ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_bb_lat);
+
+ ">" {
+ if (!AX_surfxml_cluster_id) FAIL("Required attribute `id' not set for `cluster' element.");
+ if (!AX_surfxml_cluster_prefix) FAIL("Required attribute `prefix' not set for `cluster' element.");
+ if (!AX_surfxml_cluster_suffix) FAIL("Required attribute `suffix' not set for `cluster' element.");
+ if (!AX_surfxml_cluster_radical) FAIL("Required attribute `radical' not set for `cluster' element.");
+ if (!AX_surfxml_cluster_power) FAIL("Required attribute `power' not set for `cluster' element.");
+ if (!AX_surfxml_cluster_bw) FAIL("Required attribute `bw' not set for `cluster' element.");
+ if (!AX_surfxml_cluster_lat) FAIL("Required attribute `lat' not set for `cluster' element.");
+ if (!AX_surfxml_cluster_bb_bw) FAIL("Required attribute `bb_bw' not set for `cluster' element.");
+ if (!AX_surfxml_cluster_bb_lat) FAIL("Required attribute `bb_lat' not set for `cluster' element.");
+ LEAVE; STag_surfxml_cluster();surfxml_pcdata_ix = 0; ENTER(E_surfxml_cluster);
+ }
+ "/>" {
+ if (!AX_surfxml_cluster_id) FAIL("Required attribute `id' not set for `cluster' element.");
+ if (!AX_surfxml_cluster_prefix) FAIL("Required attribute `prefix' not set for `cluster' element.");
+ if (!AX_surfxml_cluster_suffix) FAIL("Required attribute `suffix' not set for `cluster' element.");
+ if (!AX_surfxml_cluster_radical) FAIL("Required attribute `radical' not set for `cluster' element.");
+ if (!AX_surfxml_cluster_power) FAIL("Required attribute `power' not set for `cluster' element.");
+ if (!AX_surfxml_cluster_bw) FAIL("Required attribute `bw' not set for `cluster' element.");
+ if (!AX_surfxml_cluster_lat) FAIL("Required attribute `lat' not set for `cluster' element.");
+ if (!AX_surfxml_cluster_bb_bw) FAIL("Required attribute `bb_bw' not set for `cluster' element.");
+ if (!AX_surfxml_cluster_bb_lat) FAIL("Required attribute `bb_lat' not set for `cluster' element.");
+ LEAVE; STag_surfxml_cluster(); surfxml_pcdata_ix = 0; ETag_surfxml_cluster(); popbuffer(); /* attribute */
+ switch (YY_START) {
+ case S_surfxml_platform_2: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_3); break;
+ }
+ }
+ . FAIL("Unexpected character `%c' in attribute list of cluster element.", yytext[0]);
+ {Name} FAIL("Bad attribute `%s' in `cluster' element start tag.",yytext);
+ <<EOF>> FAIL("EOF in attribute list of `cluster' element.");
+}
+
+<E_surfxml_cluster>{
+ "</cluster"{s}">" {
+ LEAVE;
+ ETag_surfxml_cluster();
+ popbuffer(); /* attribute */
+ switch (YY_START) {
+ case S_surfxml_platform_2: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_3); break;
+ }
+ }
+ "</"{Name}{s}">" FAIL("Unexpected end-tag `%s': `</cluster>' expected.",yytext);
+ . FAIL("Unexpected character `%c': `</cluster>' expected.",yytext[0]);
+ <<EOF>> FAIL("Premature EOF: `</cluster>' expected.");
+}
+
+<S_surfxml_platform_2,S_surfxml_platform,S_surfxml_platform_3>"<router"{s} {
+ AX_surfxml_router_id = 0;