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


enum YYCONDTYPE {
	yycinit,
	yyccomment
};


int lex(const char* cur)
{
    const char* lim;
    const char* mrk;

    char yych;

    int condition = yycinit;

    lim = cur + strlen(cur);
loop:
    mrk = cur;

    
	switch (condition) {
		case yycinit: goto yyc_init;
		case yyccomment: goto yyc_comment;
	}
/* *********************************** */
yyc_init:
	yych = *cur;
	switch (yych) {
		case '\t':
		case ' ': goto yy3;
		case '\n': goto yy5;
		case '/': goto yy7;
		default:
			if (lim <= cur) goto yy11;
			goto yy1;
	}
yy1:
	++cur;
yy2:
	{ return -1; }
yy3:
	yych = *++cur;
	switch (yych) {
		case '\t':
		case ' ': goto yy3;
		default: goto yy4;
	}
yy4:
	{ goto loop; }
yy5:
	yych = *++cur;
	switch (yych) {
		case '\n': goto yy5;
		default: goto yy6;
	}
yy6:
	{ goto loop; }
yy7:
	yych = *++cur;
	switch (yych) {
		case '*': goto yy8;
		case '/': goto yy9;
		default: goto yy2;
	}
yy8:
	++cur;
	condition = yyccomment;
	goto yyc_comment;
yy9:
	yych = *++cur;
	switch (yych) {
		case '\n': goto yy10;
		default:
			if (lim <= cur) goto yy10;
			goto yy9;
	}
yy10:
	{ goto loop; }
yy11:
	{ return  0; }
/* *********************************** */
yyc_comment:
	yych = *cur;
	switch (yych) {
		case '\n': goto yy15;
		case '*': goto yy17;
		default:
			if (lim <= cur) goto yy21;
			goto yy13;
	}
yy13:
	yych = *++cur;
	switch (yych) {
		case '\n': goto yy14;
		case '*': goto yy19;
		default:
			if (lim <= cur) goto yy14;
			goto yy13;
	}
yy14:
	goto yyc_comment;
yy15:
	yych = *++cur;
	switch (yych) {
		case '\n': goto yy15;
		default: goto yy16;
	}
yy16:
	{ goto loop; }
yy17:
	yych = *++cur;
	switch (yych) {
		case '*': goto yy17;
		case '/': goto yy20;
		default: goto yy18;
	}
yy18:
	goto yyc_comment;
yy19:
	yych = *++cur;
	switch (yych) {
		case '*': goto yy19;
		case '/': goto yy20;
		default: goto yy14;
	}
yy20:
	++cur;
	condition = yycinit;
	{ goto loop; }
yy21:
	{ return -1; }

}


int main(void)
{
    assert(!lex("/* hello, */ // world !"));

    return 0;
}
