/* Generated by re2c */
// re2c $INPUT -o $OUTPUT -i --tags
// This test demonstrates that fallback tags should be forward-propagated
// from final states, and that merging all possible fallback tags and
// backward-propagating them from default transitions is too crude,
// inhibits tag interference where there is none and gets in the way
// of tag deduplication.

// Three overlapping rules (constructed so that they trigger 'yyaccept'
// generation), 2nd and 3rd rules have variable-length tail so that their
// tags are not fixed. When 2nd rule is matched, 3rd rule's tag can be
// forgotten: we will never fall back to 3rd rule after matching another
// rule.


{
	YYCTYPE yych;
	unsigned int yyaccept = 0;
	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
	yych = *YYCURSOR;
	yyt1 = YYCURSOR;
	switch (yych) {
		case 'a': goto yy2;
		default: goto yy1;
	}
yy1:
	p = yyt1;
	{ 3 p }
yy2:
	yyaccept = 0;
	yych = *(YYMARKER = ++YYCURSOR);
	switch (yych) {
		case 'b': goto yy3;
		default: goto yy1;
	}
yy3:
	yych = *++YYCURSOR;
	switch (yych) {
		case 'a':
			yyt1 = YYCURSOR;
			goto yy5;
		default: goto yy4;
	}
yy4:
	YYCURSOR = YYMARKER;
	if (yyaccept == 0) goto yy1;
	else goto yy6;
yy5:
	yyaccept = 1;
	yych = *(YYMARKER = ++YYCURSOR);
	switch (yych) {
		case 'b': goto yy7;
		case 'c': goto yy8;
		default: goto yy6;
	}
yy6:
	p = yyt1;
	{ 2 p }
yy7:
	yych = *++YYCURSOR;
	switch (yych) {
		case 'a': goto yy9;
		default: goto yy4;
	}
yy8:
	++YYCURSOR;
	goto yy6;
yy9:
	++YYCURSOR;
	{ 1 }
}

tags/fallback1.re:18:21: warning: rule matches empty string [-Wmatch-empty-string]
