/* Generated by re2c */
// re2c $INPUT -o $OUTPUT -i
#include <assert.h>
#include <string.h>



int lex1(const char *s)
{
    const char *YYCURSOR = s, *YYLIMIT = s + strlen(s), *YYMARKER;
    do {
    
{
	char yych;
	yych = *YYCURSOR;
	switch (yych) {
		case 'a': goto yy2;
		default:
			if (YYLIMIT <= YYCURSOR) goto yy4;
			goto yy1;
	}
yy1:
	yych = *++YYCURSOR;
	switch (yych) {
		case 'a': goto yy2;
		default:
			if (YYLIMIT <= YYCURSOR) goto yy5;
			goto yy1;
	}
yy2:
	yych = *(YYMARKER = ++YYCURSOR);
	switch (yych) {
		case 'a': goto yy2;
		default:
			if (YYLIMIT <= YYCURSOR) goto yy3;
			goto yy1;
	}
yy3:
	{ continue; }
yy4:
	{ return 0; }
yy5:
	YYCURSOR = YYMARKER;
	goto yy3;
}

    } while (1);
}

int lex2(const char *s)
{
    const char *YYCURSOR = s, *YYLIMIT = s + strlen(s), *YYMARKER;
    do {
    
{
	char yych;
	yych = *YYCURSOR;
	switch (yych) {
		case '\n': goto yy7;
		case 'a': goto yy9;
		default:
			if (YYLIMIT <= YYCURSOR) goto yy11;
			goto yy8;
	}
yy7:
	YYCURSOR = YYMARKER;
	goto yy10;
yy8:
	yych = *++YYCURSOR;
	switch (yych) {
		case '\n': goto yy7;
		case 'a': goto yy9;
		default:
			if (YYLIMIT <= YYCURSOR) goto yy7;
			goto yy8;
	}
yy9:
	yych = *(YYMARKER = ++YYCURSOR);
	switch (yych) {
		case '\n': goto yy10;
		case 'a': goto yy9;
		default:
			if (YYLIMIT <= YYCURSOR) goto yy10;
			goto yy8;
	}
yy10:
	{ continue; }
yy11:
	{ return 0; }
}

    } while (1);
}

int lex3(const char *s)
{
    const char *YYCURSOR = s, *YYLIMIT = s + strlen(s), *YYMARKER;
    do {
    
{
	char yych;
	unsigned int yyaccept = 0;
	yych = *YYCURSOR;
	switch (yych) {
		case '\n': goto yy15;
		case 'a': goto yy16;
		default:
			if (YYLIMIT <= YYCURSOR) goto yy21;
			goto yy13;
	}
yy13:
	yyaccept = 0;
	yych = *(YYMARKER = ++YYCURSOR);
	switch (yych) {
		case 0x00:
			if (YYLIMIT <= YYCURSOR) goto yy14;
			goto yy18;
		case '\n': goto yy14;
		default: goto yy19;
	}
yy14:
	{ return 1; }
yy15:
	++YYCURSOR;
	goto yy14;
yy16:
	yyaccept = 1;
	yych = *(YYMARKER = ++YYCURSOR);
	switch (yych) {
		case '\n': goto yy17;
		case 'a': goto yy16;
		default:
			if (YYLIMIT <= YYCURSOR) goto yy17;
			goto yy18;
	}
yy17:
	{ continue; }
yy18:
	yych = *++YYCURSOR;
yy19:
	switch (yych) {
		case '\n': goto yy20;
		case 'a': goto yy16;
		default:
			if (YYLIMIT <= YYCURSOR) goto yy20;
			goto yy18;
	}
yy20:
	YYCURSOR = YYMARKER;
	if (yyaccept == 0) goto yy14;
	else goto yy17;
yy21:
	{ return 0; }
}

    } while (1);
}

int lex4(const char *s)
{
    const char *YYCURSOR = s, *YYLIMIT = s + strlen(s), *YYMARKER;
    do {
    
{
	char yych;
	unsigned int yyaccept = 0;
	yych = *(YYMARKER = YYCURSOR);
	switch (yych) {
		case '\n': goto yy23;
		case 'a': goto yy26;
		default:
			if (YYLIMIT <= YYCURSOR) goto yy28;
			goto yy24;
	}
yy23:
	{ return 1; }
yy24:
	yych = *++YYCURSOR;
	switch (yych) {
		case '\n': goto yy25;
		case 'a': goto yy26;
		default:
			if (YYLIMIT <= YYCURSOR) goto yy25;
			goto yy24;
	}
yy25:
	YYCURSOR = YYMARKER;
	if (yyaccept == 0) goto yy23;
	else goto yy27;
yy26:
	yyaccept = 1;
	yych = *(YYMARKER = ++YYCURSOR);
	switch (yych) {
		case '\n': goto yy27;
		case 'a': goto yy26;
		default:
			if (YYLIMIT <= YYCURSOR) goto yy27;
			goto yy24;
	}
yy27:
	{ continue; }
yy28:
	{ return 0; }
}

    } while (1);
}

int lex5(const char *s)
{
    const char *YYCURSOR = s, *YYLIMIT = s + strlen(s), *YYMARKER;
    do {
    
{
	char yych;
	unsigned int yyaccept = 0;
	yych = *YYCURSOR;
	switch (yych) {
		case '\n': goto yy32;
		case 'a': goto yy33;
		default:
			if (YYLIMIT <= YYCURSOR) goto yy38;
			goto yy30;
	}
yy30:
	yyaccept = 0;
	yych = *(YYMARKER = ++YYCURSOR);
	switch (yych) {
		case 0x00:
			if (YYLIMIT <= YYCURSOR) goto yy31;
			goto yy35;
		case '\n': goto yy31;
		default: goto yy36;
	}
yy31:
	{ return 2; }
yy32:
	++YYCURSOR;
	goto yy31;
yy33:
	yyaccept = 1;
	yych = *(YYMARKER = ++YYCURSOR);
	switch (yych) {
		case '\n': goto yy34;
		case 'a': goto yy33;
		default:
			if (YYLIMIT <= YYCURSOR) goto yy34;
			goto yy35;
	}
yy34:
	{ continue; }
yy35:
	yych = *++YYCURSOR;
yy36:
	switch (yych) {
		case '\n': goto yy37;
		case 'a': goto yy33;
		default:
			if (YYLIMIT <= YYCURSOR) goto yy37;
			goto yy35;
	}
yy37:
	YYCURSOR = YYMARKER;
	if (yyaccept == 0) goto yy31;
	else goto yy34;
yy38:
	{ return 0; }
}

    } while (1);
}

int main()
{
    assert(lex1("") == 0);
    assert(lex1("a") == 0);

    assert(lex2("") == 0);
    assert(lex2("a") == 0);

    assert(lex3("") == 0);
    assert(lex3("a") == 0);
    assert(lex3("a\n") == 1);
    assert(lex3("b") == 1);

    assert(lex4("") == 0);
    assert(lex4("a") == 0);
    assert(lex4("a\n") == 1);
    assert(lex4("b") == 1);

    assert(lex5("") == 0);
    assert(lex5("a") == 0);
    assert(lex5("a\n") == 2);
    assert(lex5("b") == 2);

    return 0;
}
eof/nullable_loop.re:16:4: warning: control flow is undefined for strings that match '[\x0-\x60\x62-\xFF]', use default rule '*' [-Wundefined-control-flow]
eof/nullable_loop.re:27:4: warning: control flow is undefined for strings that match 
	'[\x0-\x9\xB-\x60\x62-\xFF]'
	'\xA'
, use default rule '*' [-Wundefined-control-flow]
eof/nullable_loop.re:65:19: warning: unreachable rule (shadowed by rules at lines 63, 64, 66) [-Wunreachable-rules]
