void Scanner::set_sourceline ()
{
sourceline:
    tok = cur;

#line 5403 "src/parse/lex.cc"
{
	unsigned char yych;
	static const unsigned char yybm[] = {
		  0, 128, 128, 128, 128, 128, 128, 128, 
		128, 128,   0, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128,   0, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		192, 192, 192, 192, 192, 192, 192, 192, 
		192, 192, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128,   0, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
	};
	if ((lim - cur) < 2) { if (!fill(2)) { error("unexpected end of input"); exit(1); } }
	yych = (unsigned char)*cur;
	if (yych <= '\r') {
		if (yych <= '\t') {
			if (yych >= 0x01) goto yy611;
		} else {
			if (yych <= '\n') goto yy613;
			if (yych <= '\f') goto yy611;
			goto yy614;
		}
	} else {
		if (yych <= '"') {
			if (yych <= '!') goto yy611;
			goto yy615;
		} else {
			if (yych <= '0') goto yy611;
			if (yych <= '9') goto yy616;
			goto yy611;
		}
	}
	++cur;
#line 886 "../src/parse/lex.re"
	{ --cur; return; }
#line 5463 "src/parse/lex.cc"
yy611:
	++cur;
yy612:
#line 887 "../src/parse/lex.re"
	{ goto sourceline; }
#line 5469 "src/parse/lex.cc"
yy613:
	++cur;
#line 885 "../src/parse/lex.re"
	{ pos = tok = cur; return; }
#line 5474 "src/parse/lex.cc"
yy614:
	yych = (unsigned char)*++cur;
	if (yych == '\n') goto yy613;
	goto yy612;
yy615:
	yych = (unsigned char)*(mar = ++cur);
	if (yych <= 0x00) goto yy612;
	if (yych == '\n') goto yy612;
	goto yy618;
yy616:
	++cur;
	if (lim <= cur) { if (!fill(1)) { error("unexpected end of input"); exit(1); } }
	yych = (unsigned char)*cur;
	if (yybm[0+yych] & 64) {
		goto yy616;
	}
#line 866 "../src/parse/lex.re"
	{
        uint32_t l;
        if (!s_to_u32_unsafe(tok, cur, l)) {
            msg.error(tok_loc(), "line number overflow");
            exit(1);
        }
        set_line(l);
        goto sourceline;
    }
#line 5501 "src/parse/lex.cc"
yy617:
	++cur;
	if (lim <= cur) { if (!fill(1)) { error("unexpected end of input"); exit(1); } }
	yych = (unsigned char)*cur;
yy618:
	if (yybm[0+yych] & 128) {
		goto yy617;
	}
	if (yych <= '\n') goto yy619;
	if (yych <= '"') goto yy620;
	goto yy621;
yy619:
	cur = mar;
	goto yy612;
yy620:
	++cur;
#line 876 "../src/parse/lex.re"
	{
        Input &in = get_input();
        std::string &name = in.escaped_name;
        name = escape_backslashes(getstr(tok + 1, cur - 1));
        in.fidx = static_cast<uint32_t>(msg.filenames.size());
        msg.filenames.push_back(name);
        goto sourceline;
    }
#line 5527 "src/parse/lex.cc"
yy621:
	++cur;
	if (lim <= cur) { if (!fill(1)) { error("unexpected end of input"); exit(1); } }
	yych = (unsigned char)*cur;
	if (yych <= 0x00) goto yy619;
	if (yych == '\n') goto yy619;
	goto yy617;
}
#line 888 "../src/parse/lex.re"

}