/* Generated by re2c */
// re2c $INPUT -o $OUTPUT -ci --recursive-functions




int yy0();
int yy1();
int yy2();
int lex();

int yy0() {
	/* entry ... */
	return yy1();
}

int yy1() {
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	YYCTYPE yych = *YYCURSOR;
	switch (yych) {
		case 'a':
			++YYCURSOR;
			return yy1();
		default: return yy2();
	}
}

int yy2() {
	/* pre_rule ... */
	return a;
	/* post_rule ... */
}

int lex() {
	return yy0();
}



enum YYCONDTYPE {
	yyca = 4,
	yycb = 7
};


int yy4();
int yy5();
int yy6();
int yyfna();
int yy7();
int yy8();
int yy9();
int yyfnb();
int yy3();
int lex();

int yy4() {
	/* entry a ... */
	return yy5();
}

int yy5() {
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	YYCTYPE yych = *YYCURSOR;
	switch (yych) {
		case 'a':
			++YYCURSOR;
			return yy5();
		default: return yy6();
	}
}

int yy6() {
	/* pre_rule * ... */
	return a;
	/* post_rule * ... */
}

int yyfna() {
	return yy4();
}

int yy7() {
	/* entry * ... */
	return yy8();
}

int yy8() {
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	YYCTYPE yych = *YYCURSOR;
	switch (yych) {
		case 'b':
			++YYCURSOR;
			return yy8();
		default: return yy9();
	}
}

int yy9() {
	/* pre_rule b ... */
	return b;
	/* post_rule b ... */
}

int yyfnb() {
	return yy7();
}

int yy3() {
	switch (YYGETCONDITION()) {
		case yyca: return yyfna();
		case yycb: return yyfnb();
		default: abort();
	}
}

int lex() {
	return yy3();
}


actions/special_actions_rec_func.re:8:15: warning: rule matches empty string [-Wmatch-empty-string]
actions/special_actions_rec_func.re:16:15: warning: rule in condition 'a' matches empty string [-Wmatch-empty-string]
actions/special_actions_rec_func.re:17:15: warning: rule in condition 'b' matches empty string [-Wmatch-empty-string]
