/* Generated by re2c */
// re2c $INPUT -o $OUTPUT -i --tags

// posix-captures, $
// positive tags around the whole rule

{
	YYCTYPE yych;
yyFillLabel0:
	yych = *YYCURSOR;
	if (yych >= 0x01) goto yy1;
	if (YYLIMIT <= YYCURSOR) {
		if (YYFILL() == 0) goto yyFillLabel0;
		goto yy2;
	}
yy1:
	++YYCURSOR;
	{ * }
yy2:
	yynmatch = 1;
	yypmatch[0] = YYCURSOR;
	yypmatch[1] = YYCURSOR;
	{ $ }
}


// a @x $ @y | a
// positive tags in $ alternative

{
	YYCTYPE yych;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	switch (yych) {
		case 'a': goto yy5;
		default: goto yy4;
	}
yy4:
	++YYCURSOR;
	{ * }
yy5:
	++YYCURSOR;
	if (YYEND()) {
		yyt1 = YYCURSOR;
		goto yy6;
	}
	yyt1 = NULL;
yy6:
	y = yyt1;
	x = yyt1;
	{ a }
}


// a | a @x $ @y
// positive tags in $ alternative, shadowed

{
	YYCTYPE yych;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	switch (yych) {
		case 'a': goto yy9;
		default: goto yy8;
	}
yy8:
	++YYCURSOR;
	{ * }
yy9:
	++YYCURSOR;
	yyt1 = NULL;
	y = yyt1;
	x = yyt1;
	{ a }
}


// a $ | @x a @y
// negative tags in $ alternative

{
	YYCTYPE yych;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	switch (yych) {
		case 'a': goto yy12;
		default: goto yy11;
	}
yy11:
	++YYCURSOR;
	{ * }
yy12:
	++YYCURSOR;
	if (YYEND()) {
		yyt1 = NULL;
		goto yy13;
	}
	yyt1 = YYCURSOR;
yy13:
	y = yyt1;
	x = yyt1;
	if (x != NULL) x -= 1;
	{ a }
}


// @x [a] @y $ @z | @w [a] @u
// positive and negative tags in $ alternative

{
	YYCTYPE yych;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	switch (yych) {
		case 'a': goto yy16;
		default: goto yy15;
	}
yy15:
	++YYCURSOR;
	{ * }
yy16:
	++YYCURSOR;
	if (YYEND()) {
		yyt1 = YYCURSOR;
		yyt2 = NULL;
		goto yy17;
	}
	yyt1 = NULL;
	yyt2 = YYCURSOR;
yy17:
	z = yyt1;
	u = yyt2;
	x = yyt1;
	y = yyt1;
	w = yyt2;
	if (x != NULL) x -= 1;
	if (w != NULL) w -= 1;
	{ a }
}

eof/generalized_tags.re:8:6: warning: rule matches empty string [-Wmatch-empty-string]
