bool Scanner::lex_block(Output &out, CodeKind kind, uint32_t indent, uint32_t mask)
{
    code_alc_t &alc = out.allocator;
    const char *fmt = NULL, *sep = NULL;
    BlockNameList *blocks;

    out.wraw(tok, ptr, !globopts->iFlag);
    if (!lex_name_list(alc, &blocks)) return false;

loop:

#line 1524 "src/parse/lex.cc"
{
	unsigned char yych;
	static const unsigned char yybm[] = {
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0, 128,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		128,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
	};
	if ((lim - cur) < 9) { if (!fill(9)) { error("unexpected end of input"); exit(1); } }
	yych = (unsigned char)*cur;
	if (yybm[0+yych] & 128) {
		goto yy205;
	}
	if (yych <= ')') {
		if (yych <= '\n') {
			if (yych >= '\t') goto yy206;
		} else {
			if (yych == '\r') goto yy207;
		}
	} else {
		if (yych <= 'f') {
			if (yych <= '*') goto yy208;
			if (yych >= 'f') goto yy209;
		} else {
			if (yych == 's') goto yy210;
		}
	}
	++cur;
yy204:
#line 382 "../src/parse/lex.re"
	{
        msg.error(cur_loc(), "ill-formed directive: expected optional "
            "configurations followed by the end of block `*" "/`");
        return false;
    }
#line 1588 "src/parse/lex.cc"
yy205:
	++cur;
	if (lim <= cur) { if (!fill(1)) { error("unexpected end of input"); exit(1); } }
	yych = (unsigned char)*cur;
	if (yybm[0+yych] & 128) {
		goto yy205;
	}
#line 406 "../src/parse/lex.re"
	{ goto loop; }
#line 1598 "src/parse/lex.cc"
yy206:
	++cur;
#line 408 "../src/parse/lex.re"
	{ next_line(); goto loop; }
#line 1603 "src/parse/lex.cc"
yy207:
	yych = (unsigned char)*++cur;
	if (yych == '\n') goto yy206;
	goto yy204;
yy208:
	yych = (unsigned char)*++cur;
	if (yych == '/') goto yy211;
	goto yy204;
yy209:
	yych = (unsigned char)*(mar = ++cur);
	if (yych == 'o') goto yy212;
	goto yy204;
yy210:
	yych = (unsigned char)*(mar = ++cur);
	if (yych == 'e') goto yy214;
	goto yy204;
yy211:
	++cur;
#line 410 "../src/parse/lex.re"
	{
        out.wdelay_stmt(0, code_line_info_output(alc));
        out.wdelay_stmt(indent, code_fmt(alc, kind, blocks, fmt, sep));
        out.wdelay_stmt(0, code_line_info_input(alc, cur_loc()));
        return true;
    }
#line 1629 "src/parse/lex.cc"
yy212:
	yych = (unsigned char)*++cur;
	if (yych == 'r') goto yy215;
yy213:
	cur = mar;
	goto yy204;
yy214:
	yych = (unsigned char)*++cur;
	if (yych == 'p') goto yy216;
	goto yy213;
yy215:
	yych = (unsigned char)*++cur;
	if (yych == 'm') goto yy217;
	goto yy213;
yy216:
	yych = (unsigned char)*++cur;
	if (yych == 'a') goto yy218;
	goto yy213;
yy217:
	yych = (unsigned char)*++cur;
	if (yych == 'a') goto yy219;
	goto yy213;
yy218:
	yych = (unsigned char)*++cur;
	if (yych == 'r') goto yy220;
	goto yy213;
yy219:
	yych = (unsigned char)*++cur;
	if (yych == 't') goto yy221;
	goto yy213;
yy220:
	yych = (unsigned char)*++cur;
	if (yych == 'a') goto yy222;
	goto yy213;
yy221:
	++cur;
#line 388 "../src/parse/lex.re"
	{
        if ((mask & DCONF_FORMAT) == 0) {
            msg.error(cur_loc(), "unexpected configuration 'format'");
            return false;
        }
        fmt = copystr(lex_conf_string(), alc);
        goto loop;
    }
#line 1675 "src/parse/lex.cc"
yy222:
	yych = (unsigned char)*++cur;
	if (yych != 't') goto yy213;
	yych = (unsigned char)*++cur;
	if (yych != 'o') goto yy213;
	yych = (unsigned char)*++cur;
	if (yych != 'r') goto yy213;
	++cur;
#line 397 "../src/parse/lex.re"
	{
        if ((mask & DCONF_SEPARATOR) == 0) {
            msg.error(cur_loc(), "unexpected configuration 'separator'");
            return false;
        }
        sep = copystr(lex_conf_string(), alc);
        goto loop;
    }
#line 1693 "src/parse/lex.cc"
}
#line 416 "../src/parse/lex.re"

}