/* Generated by re2c */
#line 1 "c/eof/01_sentinel.re"
// re2c $INPUT -o $OUTPUT
#include <assert.h>

// Expect a null-terminated string.
static int lex(const char *YYCURSOR) {
    int count = 0;

    for (;;) {
    
#line 13 "c/eof/01_sentinel.c"
{
	unsigned char yych;
	yych = *YYCURSOR;
	switch (yych) {
		case 0x00: goto yy1;
		case ' ': goto yy3;
		case 'a':
		case 'b':
		case 'c':
		case 'd':
		case 'e':
		case 'f':
		case 'g':
		case 'h':
		case 'i':
		case 'j':
		case 'k':
		case 'l':
		case 'm':
		case 'n':
		case 'o':
		case 'p':
		case 'q':
		case 'r':
		case 's':
		case 't':
		case 'u':
		case 'v':
		case 'w':
		case 'x':
		case 'y':
		case 'z': goto yy5;
		default: goto yy2;
	}
yy1:
	++YYCURSOR;
#line 14 "c/eof/01_sentinel.re"
	{ return count; }
#line 52 "c/eof/01_sentinel.c"
yy2:
	++YYCURSOR;
#line 13 "c/eof/01_sentinel.re"
	{ return -1; }
#line 57 "c/eof/01_sentinel.c"
yy3:
	yych = *++YYCURSOR;
	switch (yych) {
		case ' ': goto yy3;
		default: goto yy4;
	}
yy4:
#line 16 "c/eof/01_sentinel.re"
	{ continue; }
#line 67 "c/eof/01_sentinel.c"
yy5:
	yych = *++YYCURSOR;
	switch (yych) {
		case 'a':
		case 'b':
		case 'c':
		case 'd':
		case 'e':
		case 'f':
		case 'g':
		case 'h':
		case 'i':
		case 'j':
		case 'k':
		case 'l':
		case 'm':
		case 'n':
		case 'o':
		case 'p':
		case 'q':
		case 'r':
		case 's':
		case 't':
		case 'u':
		case 'v':
		case 'w':
		case 'x':
		case 'y':
		case 'z': goto yy5;
		default: goto yy6;
	}
yy6:
#line 15 "c/eof/01_sentinel.re"
	{ ++count; continue; }
#line 102 "c/eof/01_sentinel.c"
}
#line 17 "c/eof/01_sentinel.re"

    }
}

int main() {
    assert(lex("") == 0);
    assert(lex("one two three") == 3);
    assert(lex("f0ur") == -1);
    return 0;
}
