void Scanner::lex_code_in_braces()
{
    const loc_t &loc = tok_loc();
    uint32_t depth = 1;
code:

#line 3203 "src/parse/lex.cc"
{
	unsigned char yych;
	static const unsigned char yybm[] = {
		  0, 128, 128, 128, 128, 128, 128, 128, 
		128, 160,   0, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		160, 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) < 3) { if (!fill(3)) { error("unexpected end of input"); exit(1); } }
	yych = (unsigned char)*cur;
	if (yych <= '&') {
		if (yych <= '\f') {
			if (yych <= 0x00) goto yy354;
			if (yych == '\n') goto yy357;
			goto yy355;
		} else {
			if (yych <= '\r') goto yy359;
			if (yych == '"') goto yy360;
			goto yy355;
		}
	} else {
		if (yych <= 'z') {
			if (yych <= '\'') goto yy360;
			if (yych == '/') goto yy361;
			goto yy355;
		} else {
			if (yych <= '{') goto yy362;
			if (yych == '}') goto yy363;
			goto yy355;
		}
	}
yy354:
	++cur;
#line 669 "../src/parse/lex.re"
	{ fail_if_eof(); goto code; }
#line 3267 "src/parse/lex.cc"
yy355:
	++cur;
yy356:
#line 673 "../src/parse/lex.re"
	{ goto code; }
#line 3273 "src/parse/lex.cc"
yy357:
	yych = (unsigned char)*(mar = ++cur);
	if (yybm[0+yych] & 32) {
		goto yy364;
	}
	if (yych == '#') goto yy366;
yy358:
#line 668 "../src/parse/lex.re"
	{ next_line(); goto code; }
#line 3283 "src/parse/lex.cc"
yy359:
	yych = (unsigned char)*++cur;
	if (yych == '\n') goto yy357;
	goto yy356;
yy360:
	++cur;
#line 672 "../src/parse/lex.re"
	{ try_lex_string_in_code(cur[-1]); goto code; }
#line 3292 "src/parse/lex.cc"
yy361:
	yych = (unsigned char)*++cur;
	if (yych == '*') goto yy367;
	if (yych == '/') goto yy368;
	goto yy356;
yy362:
	++cur;
#line 666 "../src/parse/lex.re"
	{ ++depth; goto code; }
#line 3302 "src/parse/lex.cc"
yy363:
	++cur;
#line 658 "../src/parse/lex.re"
	{
        if (--depth == 0) {
            yylval.semact = new SemAct(loc, getstr(tok, cur));
            return;
        }
        goto code;
    }
#line 3313 "src/parse/lex.cc"
yy364:
	++cur;
	if (lim <= cur) { if (!fill(1)) { error("unexpected end of input"); exit(1); } }
	yych = (unsigned char)*cur;
	if (yybm[0+yych] & 32) {
		goto yy364;
	}
	if (yych == '#') goto yy366;
yy365:
	cur = mar;
	goto yy358;
yy366:
	++cur;
	if ((lim - cur) < 5) { if (!fill(5)) { error("unexpected end of input"); exit(1); } }
	yych = (unsigned char)*cur;
	if (yych <= 0x1F) {
		if (yych == '\t') goto yy366;
		goto yy365;
	} else {
		if (yych <= ' ') goto yy366;
		if (yych == 'l') goto yy369;
		goto yy365;
	}
yy367:
	++cur;
#line 670 "../src/parse/lex.re"
	{ lex_c_comment(); goto code; }
#line 3341 "src/parse/lex.cc"
yy368:
	++cur;
#line 671 "../src/parse/lex.re"
	{ lex_cpp_comment(); goto code; }
#line 3346 "src/parse/lex.cc"
yy369:
	yych = (unsigned char)*++cur;
	if (yych != 'i') goto yy365;
	yych = (unsigned char)*++cur;
	if (yych != 'n') goto yy365;
	yych = (unsigned char)*++cur;
	if (yych != 'e') goto yy365;
	yych = (unsigned char)*++cur;
	if (yych <= '0') goto yy371;
	if (yych <= '9') goto yy365;
	goto yy371;
yy370:
	++cur;
	if (lim <= cur) { if (!fill(1)) { error("unexpected end of input"); exit(1); } }
	yych = (unsigned char)*cur;
yy371:
	if (yych <= 0x1F) {
		if (yych == '\t') goto yy370;
		goto yy365;
	} else {
		if (yych <= ' ') goto yy370;
		if (yych <= '0') goto yy365;
		if (yych >= ':') goto yy365;
		yyt1 = cur;
	}
yy372:
	++cur;
	if ((lim - cur) < 2) { if (!fill(2)) { error("unexpected end of input"); exit(1); } }
	yych = (unsigned char)*cur;
	if (yybm[0+yych] & 64) {
		goto yy372;
	}
	if (yych <= '\f') {
		if (yych <= 0x08) goto yy365;
		if (yych <= '\t') goto yy373;
		if (yych <= '\n') goto yy374;
		goto yy365;
	} else {
		if (yych <= '\r') goto yy375;
		if (yych != ' ') goto yy365;
	}
yy373:
	++cur;
	if (lim <= cur) { if (!fill(1)) { error("unexpected end of input"); exit(1); } }
	yych = (unsigned char)*cur;
	if (yych <= 0x1F) {
		if (yych == '\t') goto yy373;
		goto yy365;
	} else {
		if (yych <= ' ') goto yy373;
		if (yych == '"') goto yy376;
		goto yy365;
	}
yy374:
	++cur;
	cur = yyt1;
#line 667 "../src/parse/lex.re"
	{ set_sourceline (); goto code; }
#line 3405 "src/parse/lex.cc"
yy375:
	yych = (unsigned char)*++cur;
	if (yych == '\n') goto yy374;
	goto yy365;
yy376:
	++cur;
	if ((lim - cur) < 3) { if (!fill(3)) { error("unexpected end of input"); exit(1); } }
	yych = (unsigned char)*cur;
	if (yybm[0+yych] & 128) {
		goto yy376;
	}
	if (yych <= '\n') goto yy365;
	if (yych >= '#') goto yy377;
	yych = (unsigned char)*++cur;
	if (yych == '\n') goto yy374;
	if (yych == '\r') goto yy375;
	goto yy365;
yy377:
	++cur;
	if (lim <= cur) { if (!fill(1)) { error("unexpected end of input"); exit(1); } }
	yych = (unsigned char)*cur;
	if (yych <= 0x00) goto yy365;
	if (yych == '\n') goto yy365;
	goto yy376;
}
#line 674 "../src/parse/lex.re"

}
void Scanner::lex_code_in_braces()
{
    const loc_t &loc = tok_loc();
    uint32_t depth = 1;
code:

#line 3203 "src/parse/lex.cc"
{
	unsigned char yych;
	static const unsigned char yybm[] = {
		  0, 128, 128, 128, 128, 128, 128, 128, 
		128, 160,   0, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		160, 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) < 3) { if (!fill(3)) { error("unexpected end of input"); exit(1); } }
	yych = (unsigned char)*cur;
	if (yych <= '&') {
		if (yych <= '\f') {
			if (yych <= 0x00) goto yy354;
			if (yych == '\n') goto yy357;
			goto yy355;
		} else {
			if (yych <= '\r') goto yy359;
			if (yych == '"') goto yy360;
			goto yy355;
		}
	} else {
		if (yych <= 'z') {
			if (yych <= '\'') goto yy360;
			if (yych == '/') goto yy361;
			goto yy355;
		} else {
			if (yych <= '{') goto yy362;
			if (yych == '}') goto yy363;
			goto yy355;
		}
	}
yy354:
	++cur;
#line 669 "../src/parse/lex.re"
	{ fail_if_eof(); goto code; }
#line 3267 "src/parse/lex.cc"
yy355:
	++cur;
yy356:
#line 673 "../src/parse/lex.re"
	{ goto code; }
#line 3273 "src/parse/lex.cc"
yy357:
	yych = (unsigned char)*(mar = ++cur);
	if (yybm[0+yych] & 32) {
		goto yy364;
	}
	if (yych == '#') goto yy366;
yy358:
#line 668 "../src/parse/lex.re"
	{ next_line(); goto code; }
#line 3283 "src/parse/lex.cc"
yy359:
	yych = (unsigned char)*++cur;
	if (yych == '\n') goto yy357;
	goto yy356;
yy360:
	++cur;
#line 672 "../src/parse/lex.re"
	{ try_lex_string_in_code(cur[-1]); goto code; }
#line 3292 "src/parse/lex.cc"
yy361:
	yych = (unsigned char)*++cur;
	if (yych == '*') goto yy367;
	if (yych == '/') goto yy368;
	goto yy356;
yy362:
	++cur;
#line 666 "../src/parse/lex.re"
	{ ++depth; goto code; }
#line 3302 "src/parse/lex.cc"
yy363:
	++cur;
#line 658 "../src/parse/lex.re"
	{
        if (--depth == 0) {
            yylval.semact = new SemAct(loc, getstr(tok, cur));
            return;
        }
        goto code;
    }
#line 3313 "src/parse/lex.cc"
yy364:
	++cur;
	if (lim <= cur) { if (!fill(1)) { error("unexpected end of input"); exit(1); } }
	yych = (unsigned char)*cur;
	if (yybm[0+yych] & 32) {
		goto yy364;
	}
	if (yych == '#') goto yy366;
yy365:
	cur = mar;
	goto yy358;
yy366:
	++cur;
	if ((lim - cur) < 5) { if (!fill(5)) { error("unexpected end of input"); exit(1); } }
	yych = (unsigned char)*cur;
	if (yych <= 0x1F) {
		if (yych == '\t') goto yy366;
		goto yy365;
	} else {
		if (yych <= ' ') goto yy366;
		if (yych == 'l') goto yy369;
		goto yy365;
	}
yy367:
	++cur;
#line 670 "../src/parse/lex.re"
	{ lex_c_comment(); goto code; }
#line 3341 "src/parse/lex.cc"
yy368:
	++cur;
#line 671 "../src/parse/lex.re"
	{ lex_cpp_comment(); goto code; }
#line 3346 "src/parse/lex.cc"
yy369:
	yych = (unsigned char)*++cur;
	if (yych != 'i') goto yy365;
	yych = (unsigned char)*++cur;
	if (yych != 'n') goto yy365;
	yych = (unsigned char)*++cur;
	if (yych != 'e') goto yy365;
	yych = (unsigned char)*++cur;
	if (yych <= '0') goto yy371;
	if (yych <= '9') goto yy365;
	goto yy371;
yy370:
	++cur;
	if (lim <= cur) { if (!fill(1)) { error("unexpected end of input"); exit(1); } }
	yych = (unsigned char)*cur;
yy371:
	if (yych <= 0x1F) {
		if (yych == '\t') goto yy370;
		goto yy365;
	} else {
		if (yych <= ' ') goto yy370;
		if (yych <= '0') goto yy365;
		if (yych >= ':') goto yy365;
		yyt1 = cur;
	}
yy372:
	++cur;
	if ((lim - cur) < 2) { if (!fill(2)) { error("unexpected end of input"); exit(1); } }
	yych = (unsigned char)*cur;
	if (yybm[0+yych] & 64) {
		goto yy372;
	}
	if (yych <= '\f') {
		if (yych <= 0x08) goto yy365;
		if (yych <= '\t') goto yy373;
		if (yych <= '\n') goto yy374;
		goto yy365;
	} else {
		if (yych <= '\r') goto yy375;
		if (yych != ' ') goto yy365;
	}
yy373:
	++cur;
	if (lim <= cur) { if (!fill(1)) { error("unexpected end of input"); exit(1); } }
	yych = (unsigned char)*cur;
	if (yych <= 0x1F) {
		if (yych == '\t') goto yy373;
		goto yy365;
	} else {
		if (yych <= ' ') goto yy373;
		if (yych == '"') goto yy376;
		goto yy365;
	}
yy374:
	++cur;
	cur = yyt1;
#line 667 "../src/parse/lex.re"
	{ set_sourceline (); goto code; }
#line 3405 "src/parse/lex.cc"
yy375:
	yych = (unsigned char)*++cur;
	if (yych == '\n') goto yy374;
	goto yy365;
yy376:
	++cur;
	if ((lim - cur) < 3) { if (!fill(3)) { error("unexpected end of input"); exit(1); } }
	yych = (unsigned char)*cur;
	if (yybm[0+yych] & 128) {
		goto yy376;
	}
	if (yych <= '\n') goto yy365;
	if (yych >= '#') goto yy377;
	yych = (unsigned char)*++cur;
	if (yych == '\n') goto yy374;
	if (yych == '\r') goto yy375;
	goto yy365;
yy377:
	++cur;
	if (lim <= cur) { if (!fill(1)) { error("unexpected end of input"); exit(1); } }
	yych = (unsigned char)*cur;
	if (yych <= 0x00) goto yy365;
	if (yych == '\n') goto yy365;
	goto yy376;
}
#line 674 "../src/parse/lex.re"

}