+<S_surfxml_AS_10,S_surfxml_AS_3,S_surfxml_random,S_surfxml_ASroute_1,S_surfxml_AS_2,E_surfxml_AS,S_surfxml_AS_12,E_surfxml_process,S_surfxml_process,S_surfxml_link_2,E_surfxml_random,S_surfxml_AS_8,S_surfxml_bypassRoute_2,E_surfxml_route,S_surfxml_AS_9,S_surfxml_route_1,S_surfxml_AS_11,S_surfxml_link_1,S_surfxml_AS,S_surfxml_bypassRoute,S_surfxml_link,E_surfxml_host,S_surfxml_config,S_surfxml_ASroute_2,S_surfxml_random_2,S_surfxml_platform_6,S_surfxml_process_2,E_surfxml_ASroute,S_surfxml_AS_6,E_surfxml_link,S_surfxml_platform_1,S_surfxml_bypassRoute_1,E_surfxml_config,S_surfxml_host_1,ROOT_surfxml_config,S_surfxml_route_2,E_surfxml_platform,S_surfxml_config_2,S_surfxml_random_1,S_surfxml_platform_8,S_surfxml_platform_4,S_surfxml_AS_1,S_surfxml_host,S_surfxml_process_1,S_surfxml_host_2,S_surfxml_AS_7,S_surfxml_AS_13,S_surfxml_ASroute,S_surfxml_platform_5,S_surfxml_AS_5,S_surfxml_config_1,S_surfxml_AS_4,S_surfxml_route,S_surfxml_platform_7,E_surfxml_bypassRoute>"<config"{s} FAIL("Starting tag <config> is not allowed here.");
+
+<S_surfxml_platform_2,S_surfxml_platform,S_surfxml_platform_3>"<config"{s} {
+ AX_surfxml_config_id = 0;
+ ENTER(AL_surfxml_config); pushbuffer(0);
+ }
+
+<AL_surfxml_config>{
+ "id"{Eq}\' ENTER(VALUE1); BUFFERSET(AX_surfxml_config_id);
+ "id"{Eq}\" ENTER(VALUE2); BUFFERSET(AX_surfxml_config_id);
+
+ ">" {
+ LEAVE; STag_surfxml_config();surfxml_pcdata_ix = 0; ENTER(S_surfxml_config);
+ }
+ "/>" {
+ LEAVE; STag_surfxml_config(); surfxml_pcdata_ix = 0; ETag_surfxml_config(); 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 config element.", yytext[0]);
+ {Name} FAIL("Bad attribute `%s' in `config' element start tag.",yytext);
+ <<EOF>> FAIL("EOF in attribute list of `config' element.");
+}
+
+<S_surfxml_config,S_surfxml_config_2,E_surfxml_config>{
+ "</config"{s}">" {
+ LEAVE;
+ ETag_surfxml_config();
+ 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': `</config>' expected.",yytext);
+ . FAIL("Unexpected character `%c': `</config>' expected.",yytext[0]);
+ <<EOF>> FAIL("Premature EOF: `</config>' expected.");
+}
+
+ /* <!-- <!ATTLIST prop key CDATA #REQUIRED> -->
+ * <!-- <!ATTLIST prop key CDATA #REQUIRED> --> */
+
+<S_surfxml_AS_10,S_surfxml_AS_3,S_surfxml_ASroute_1,S_surfxml_AS_2,E_surfxml_AS,S_surfxml_AS_12,E_surfxml_process,E_surfxml_random,S_surfxml_AS_8,S_surfxml_bypassRoute_2,E_surfxml_route,ROOT_surfxml_prop,S_surfxml_AS_9,S_surfxml_platform_3,S_surfxml_route_1,S_surfxml_AS_11,S_surfxml_AS,S_surfxml_bypassRoute,E_surfxml_host,S_surfxml_ASroute_2,S_surfxml_platform_6,E_surfxml_ASroute,S_surfxml_AS_6,E_surfxml_link,S_surfxml_platform,S_surfxml_platform_1,S_surfxml_bypassRoute_1,E_surfxml_config,S_surfxml_route_2,E_surfxml_platform,S_surfxml_platform_8,S_surfxml_platform_4,S_surfxml_AS_1,S_surfxml_platform_2,S_surfxml_AS_7,S_surfxml_AS_13,S_surfxml_ASroute,S_surfxml_platform_5,S_surfxml_AS_5,S_surfxml_AS_4,S_surfxml_route,S_surfxml_platform_7,E_surfxml_bypassRoute>"<prop"{s} FAIL("Starting tag <prop> is not allowed here.");
+
+<S_surfxml_config_1,S_surfxml_config,S_surfxml_random,S_surfxml_host_1,S_surfxml_host_2,S_surfxml_host,S_surfxml_link_1,S_surfxml_link_2,S_surfxml_config_2,S_surfxml_random_2,S_surfxml_link,S_surfxml_random_1,S_surfxml_process_1,S_surfxml_process,S_surfxml_process_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_config_1: case S_surfxml_config: case S_surfxml_config_2: SET(S_surfxml_config_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_1: case S_surfxml_host_2: case S_surfxml_host: 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_config_1: case S_surfxml_config: case S_surfxml_config_2: SET(S_surfxml_config_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_1: case S_surfxml_host_2: case S_surfxml_host: 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.");
+}
+