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




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

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

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

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



int lex() {
	switch (YYGETSTATE()) {
		case -1: return yy0();
		case 0: return yy1();
		default: abort();
	}
}


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 yy4() {
	/* entry a ... */
	return yy5();
}

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

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

int yyfna() {
	return yy4();
}

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

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

int yy9() {
	YYSETSTATE(-1);
	/* 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() {
	switch (YYGETSTATE()) {
		case -1: return yy3();
		case 1: return yy5();
		case 2: return yy8();
		default: abort();
	}
}

actions/special_actions_rec_func_f.re:8:15: warning: rule matches empty string [-Wmatch-empty-string]
actions/special_actions_rec_func_f.re:18:15: warning: rule in condition 'a' matches empty string [-Wmatch-empty-string]
actions/special_actions_rec_func_f.re:19:15: warning: rule in condition 'b' matches empty string [-Wmatch-empty-string]
