void Scanner::lex_code_indented() {
    const loc_t &loc = tok_loc();
    tok = cur;
code:

#line 3088 "src/parse/lex.cc"
{
	unsigned char yych;
	if ((lim - cur) < 2) { if (!fill(2)) { error("unexpected end of input"); exit(1); } }
	yych = (unsigned char)*cur;
	if (yych <= '&') {
		if (yych <= '\f') {
			if (yych <= 0x00) goto yy340;
			if (yych == '\n') goto yy343;
			goto yy341;
		} else {
			if (yych <= '\r') goto yy344;
			if (yych == '"') goto yy345;
			goto yy341;
		}
	} else {
		if (yych <= 'z') {
			if (yych <= '\'') goto yy345;
			if (yych == '/') goto yy346;
			goto yy341;
		} else {
			if (yych == '|') goto yy341;
			if (yych <= '}') goto yy347;
			goto yy341;
		}
	}
yy340:
	++cur;
#line 631 "../src/parse/lex.re"
	{ fail_if_eof(); goto code; }
#line 3118 "src/parse/lex.cc"
yy341:
	++cur;
yy342:
#line 637 "../src/parse/lex.re"
	{ goto code; }
#line 3124 "src/parse/lex.cc"
yy343:
	++cur;
#line 632 "../src/parse/lex.re"
	{ next_line(); goto indent; }
#line 3129 "src/parse/lex.cc"
yy344:
	yych = (unsigned char)*++cur;
	if (yych == '\n') goto yy343;
	goto yy342;
yy345:
	++cur;
#line 635 "../src/parse/lex.re"
	{ try_lex_string_in_code(cur[-1]); goto code; }
#line 3138 "src/parse/lex.cc"
yy346:
	yych = (unsigned char)*++cur;
	if (yych == '*') goto yy348;
	if (yych == '/') goto yy349;
	goto yy342;
yy347:
	++cur;
#line 636 "../src/parse/lex.re"
	{ msg.error(cur_loc(), "Curly braces are not allowed after ':='"); exit(1); }
#line 3148 "src/parse/lex.cc"
yy348:
	++cur;
#line 634 "../src/parse/lex.re"
	{ lex_c_comment(); goto code; }
#line 3153 "src/parse/lex.cc"
yy349:
	++cur;
#line 633 "../src/parse/lex.re"
	{ lex_cpp_comment(); goto indent; }
#line 3158 "src/parse/lex.cc"
}
#line 638 "../src/parse/lex.re"

indent:

#line 3164 "src/parse/lex.cc"
{
	unsigned char yych;
	if (lim <= cur) { if (!fill(1)) { error("unexpected end of input"); exit(1); } }
	yych = (unsigned char)*cur;
	if (yych <= '\f') {
		if (yych <= 0x08) goto yy351;
		if (yych <= '\n') goto yy352;
	} else {
		if (yych <= '\r') goto yy352;
		if (yych == ' ') goto yy352;
	}
yy351:
#line 642 "../src/parse/lex.re"
	{
        while (isspace(tok[0])) ++tok;
        char *p = cur;
        while (p > tok && isspace(p[-1])) --p;
        yylval.semact = new SemAct(loc, getstr(tok, p));
        return;
    }
#line 3185 "src/parse/lex.cc"
yy352:
	++cur;
	cur -= 1;
#line 641 "../src/parse/lex.re"
	{ goto code; }
#line 3191 "src/parse/lex.cc"
}
#line 649 "../src/parse/lex.re"

}
void Scanner::lex_code_indented() {
    const loc_t &loc = tok_loc();
    tok = cur;
code:

#line 3088 "src/parse/lex.cc"
{
	unsigned char yych;
	if ((lim - cur) < 2) { if (!fill(2)) { error("unexpected end of input"); exit(1); } }
	yych = (unsigned char)*cur;
	if (yych <= '&') {
		if (yych <= '\f') {
			if (yych <= 0x00) goto yy340;
			if (yych == '\n') goto yy343;
			goto yy341;
		} else {
			if (yych <= '\r') goto yy344;
			if (yych == '"') goto yy345;
			goto yy341;
		}
	} else {
		if (yych <= 'z') {
			if (yych <= '\'') goto yy345;
			if (yych == '/') goto yy346;
			goto yy341;
		} else {
			if (yych == '|') goto yy341;
			if (yych <= '}') goto yy347;
			goto yy341;
		}
	}
yy340:
	++cur;
#line 631 "../src/parse/lex.re"
	{ fail_if_eof(); goto code; }
#line 3118 "src/parse/lex.cc"
yy341:
	++cur;
yy342:
#line 637 "../src/parse/lex.re"
	{ goto code; }
#line 3124 "src/parse/lex.cc"
yy343:
	++cur;
#line 632 "../src/parse/lex.re"
	{ next_line(); goto indent; }
#line 3129 "src/parse/lex.cc"
yy344:
	yych = (unsigned char)*++cur;
	if (yych == '\n') goto yy343;
	goto yy342;
yy345:
	++cur;
#line 635 "../src/parse/lex.re"
	{ try_lex_string_in_code(cur[-1]); goto code; }
#line 3138 "src/parse/lex.cc"
yy346:
	yych = (unsigned char)*++cur;
	if (yych == '*') goto yy348;
	if (yych == '/') goto yy349;
	goto yy342;
yy347:
	++cur;
#line 636 "../src/parse/lex.re"
	{ msg.error(cur_loc(), "Curly braces are not allowed after ':='"); exit(1); }
#line 3148 "src/parse/lex.cc"
yy348:
	++cur;
#line 634 "../src/parse/lex.re"
	{ lex_c_comment(); goto code; }
#line 3153 "src/parse/lex.cc"
yy349:
	++cur;
#line 633 "../src/parse/lex.re"
	{ lex_cpp_comment(); goto indent; }
#line 3158 "src/parse/lex.cc"
}
#line 638 "../src/parse/lex.re"

indent:

#line 3164 "src/parse/lex.cc"
{
	unsigned char yych;
	if (lim <= cur) { if (!fill(1)) { error("unexpected end of input"); exit(1); } }
	yych = (unsigned char)*cur;
	if (yych <= '\f') {
		if (yych <= 0x08) goto yy351;
		if (yych <= '\n') goto yy352;
	} else {
		if (yych <= '\r') goto yy352;
		if (yych == ' ') goto yy352;
	}
yy351:
#line 642 "../src/parse/lex.re"
	{
        while (isspace(tok[0])) ++tok;
        char *p = cur;
        while (p > tok && isspace(p[-1])) --p;
        yylval.semact = new SemAct(loc, getstr(tok, p));
        return;
    }
#line 3185 "src/parse/lex.cc"
yy352:
	++cur;
	cur -= 1;
#line 641 "../src/parse/lex.re"
	{ goto code; }
#line 3191 "src/parse/lex.cc"
}
#line 649 "../src/parse/lex.re"

}