-/* Generated by re2c 1.1.1 on Sat Dec 22 19:57:50 2018 */
+/* Generated by re2c 1.1.1 on Sun Dec 23 19:24:34 2018 */
#line 1 "../src/ast/lex.re"
#include "src/util/c99_stdint.h"
#include <stddef.h>
#line 55 "../src/ast/lex.re"
-#line 112 "../src/ast/lex.re"
+#line 113 "../src/ast/lex.re"
Scanner::ParseMode Scanner::echo(Output &out)
}
}
++YYCURSOR;
-#line 202 "../src/ast/lex.re"
+#line 203 "../src/ast/lex.re"
{
if (!is_eof()) goto echo;
out.wraw(tok, ptr);
yy4:
++YYCURSOR;
yy5:
-#line 220 "../src/ast/lex.re"
+#line 221 "../src/ast/lex.re"
{ goto echo; }
#line 119 "src/ast/lex.cc"
yy6:
}
if (yych == '#') goto yy14;
yy7:
-#line 214 "../src/ast/lex.re"
+#line 215 "../src/ast/lex.re"
{
cline++;
pos = cur;
}
yy16:
++YYCURSOR;
-#line 123 "../src/ast/lex.re"
+#line 124 "../src/ast/lex.re"
{
out.wraw(tok, ptr);
return Parse;
yy78:
++YYCURSOR;
YYCURSOR = yyt1;
-#line 208 "../src/ast/lex.re"
+#line 209 "../src/ast/lex.re"
{
out.wraw(tok, ptr + 1);
set_sourceline();
goto yy13;
yy108:
++YYCURSOR;
-#line 144 "../src/ast/lex.re"
+#line 145 "../src/ast/lex.re"
{
out.wraw(tok, ptr);
out.wdelay_yymaxfill();
goto yy13;
yy115:
++YYCURSOR;
-#line 133 "../src/ast/lex.re"
+#line 134 "../src/ast/lex.re"
{
out.wraw(tok, ptr);
return Reuse;
goto yy13;
yy129:
++YYCURSOR;
-#line 180 "../src/ast/lex.re"
+#line 181 "../src/ast/lex.re"
{
out.wraw(tok, ptr);
lex_tags(out, true);
#line 680 "src/ast/lex.cc"
yy131:
++YYCURSOR;
-#line 128 "../src/ast/lex.re"
+#line 129 "../src/ast/lex.re"
{
out.wraw(tok, ptr);
return Rules;
#line 688 "src/ast/lex.cc"
yy133:
++YYCURSOR;
-#line 174 "../src/ast/lex.re"
+#line 175 "../src/ast/lex.re"
{
out.wraw(tok, ptr);
lex_tags(out, false);
#line 697 "src/ast/lex.cc"
yy135:
++YYCURSOR;
-#line 165 "../src/ast/lex.re"
+#line 166 "../src/ast/lex.re"
{
out.wraw(tok, ptr);
out.wdelay_line_info_output();
goto yy13;
yy139:
++YYCURSOR;
-#line 138 "../src/ast/lex.re"
+#line 139 "../src/ast/lex.re"
{
out.wraw(tok, ptr);
lex_end_of_comment(out);
goto yy13;
yy145:
++YYCURSOR;
-#line 158 "../src/ast/lex.re"
+#line 159 "../src/ast/lex.re"
{
out.wraw(tok, ptr);
out.wdelay_state_goto(0);
goto yy13;
yy150:
++YYCURSOR;
-#line 186 "../src/ast/lex.re"
+#line 187 "../src/ast/lex.re"
{
out.wraw(tok, ptr);
out.header_mode(true);
#line 776 "src/ast/lex.cc"
yy152:
++YYCURSOR;
-#line 151 "../src/ast/lex.re"
+#line 152 "../src/ast/lex.re"
{
out.wraw(tok, ptr);
out.wdelay_yymaxnmatch();
#line 786 "src/ast/lex.cc"
yy154:
++YYCURSOR;
-#line 194 "../src/ast/lex.re"
+#line 195 "../src/ast/lex.re"
{
out.wraw(tok, ptr);
out.header_mode(false);
}
#line 797 "src/ast/lex.cc"
}
-#line 221 "../src/ast/lex.re"
+#line 222 "../src/ast/lex.re"
}
}
yy158:
++YYCURSOR;
-#line 228 "../src/ast/lex.re"
+#line 229 "../src/ast/lex.re"
{ fatal_lc(get_cline(), get_column(), "expected end of block"); }
#line 825 "src/ast/lex.cc"
yy160:
++YYCURSOR;
yy161:
-#line 230 "../src/ast/lex.re"
+#line 231 "../src/ast/lex.re"
{ continue; }
#line 831 "src/ast/lex.cc"
yy162:
++YYCURSOR;
-#line 231 "../src/ast/lex.re"
+#line 232 "../src/ast/lex.re"
{ ++ignored; continue; }
#line 836 "src/ast/lex.cc"
yy164:
yych = (YYCTYPE)*++YYCURSOR;
if (yych != '/') goto yy161;
++YYCURSOR;
-#line 232 "../src/ast/lex.re"
+#line 233 "../src/ast/lex.re"
{
if (ignored > 0) {
cline += ignored;
}
#line 854 "src/ast/lex.cc"
}
-#line 240 "../src/ast/lex.re"
+#line 241 "../src/ast/lex.re"
}
}
}
++YYCURSOR;
yy171:
-#line 247 "../src/ast/lex.re"
+#line 248 "../src/ast/lex.re"
{ fatal_lc(get_cline(), get_column(), "unrecognized configuration"); }
#line 924 "src/ast/lex.cc"
yy172:
if (yybm[0+yych] & 128) {
goto yy172;
}
-#line 252 "../src/ast/lex.re"
+#line 253 "../src/ast/lex.re"
{ continue; }
#line 934 "src/ast/lex.cc"
yy175:
++YYCURSOR;
-#line 253 "../src/ast/lex.re"
+#line 254 "../src/ast/lex.re"
{ ++cline; continue; }
#line 939 "src/ast/lex.cc"
yy177:
goto yy171;
yy181:
++YYCURSOR;
-#line 254 "../src/ast/lex.re"
+#line 255 "../src/ast/lex.re"
{
out.wdelay_tags(new ConfTags(fmt, sep), mtags);
tok = pos = cur;
goto yy184;
yy192:
++YYCURSOR;
-#line 249 "../src/ast/lex.re"
+#line 250 "../src/ast/lex.re"
{ fmt = lex_conf_string(); continue; }
#line 1003 "src/ast/lex.cc"
yy194:
yych = (YYCTYPE)*++YYCURSOR;
if (yych != 'r') goto yy184;
++YYCURSOR;
-#line 250 "../src/ast/lex.re"
+#line 251 "../src/ast/lex.re"
{ sep = lex_conf_string(); continue; }
#line 1014 "src/ast/lex.cc"
}
-#line 259 "../src/ast/lex.re"
+#line 260 "../src/ast/lex.re"
}
}
yy201:
++YYCURSOR;
yy202:
-#line 386 "../src/ast/lex.re"
+#line 387 "../src/ast/lex.re"
{
fatal_lc(get_cline(), get_column(), "unexpected character: '%c'", *tok);
goto scan;
if (yybm[0+yych] & 16) {
goto yy203;
}
-#line 367 "../src/ast/lex.re"
+#line 368 "../src/ast/lex.re"
{ goto scan; }
#line 1152 "src/ast/lex.cc"
yy206:
if (yych == '#') goto yy236;
}
yy207:
-#line 374 "../src/ast/lex.re"
+#line 375 "../src/ast/lex.re"
{
pos = cur;
cline++;
goto yy202;
yy209:
++YYCURSOR;
-#line 285 "../src/ast/lex.re"
+#line 286 "../src/ast/lex.re"
{ yylval.regexp = lex_str('"'); return TOKEN_REGEXP; }
#line 1184 "src/ast/lex.cc"
yy211:
yy212:
++YYCURSOR;
yy213:
-#line 295 "../src/ast/lex.re"
+#line 296 "../src/ast/lex.re"
{ return *tok; }
#line 1201 "src/ast/lex.cc"
yy214:
goto yy202;
yy215:
++YYCURSOR;
-#line 284 "../src/ast/lex.re"
+#line 285 "../src/ast/lex.re"
{ yylval.regexp = lex_str('\''); return TOKEN_REGEXP; }
#line 1210 "src/ast/lex.cc"
yy217:
goto yy213;
yy218:
++YYCURSOR;
-#line 362 "../src/ast/lex.re"
+#line 363 "../src/ast/lex.re"
{
yylval.regexp = ast_dot(cline, get_column());
return TOKEN_REGEXP;
goto yy202;
yy222:
++YYCURSOR;
-#line 277 "../src/ast/lex.re"
+#line 278 "../src/ast/lex.re"
{ return lex_clist(); }
#line 1236 "src/ast/lex.cc"
yy224:
if (yybm[0+yych] & 32) {
goto yy225;
}
-#line 339 "../src/ast/lex.re"
+#line 340 "../src/ast/lex.re"
{
if (!globopts->FFlag || lex_namedef_context_re2c()) {
yylval.str = new std::string (tok, tok_len());
yy228:
yych = (YYCTYPE)*++YYCURSOR;
if (yych == '^') goto yy251;
-#line 286 "../src/ast/lex.re"
+#line 287 "../src/ast/lex.re"
{ yylval.regexp = lex_cls(false); return TOKEN_REGEXP; }
#line 1279 "src/ast/lex.cc"
yy230:
}
}
yy232:
-#line 269 "../src/ast/lex.re"
+#line 270 "../src/ast/lex.re"
{ lex_code_in_braces(); return TOKEN_CODE; }
#line 1304 "src/ast/lex.cc"
yy233:
}
}
yy240:
-#line 289 "../src/ast/lex.re"
+#line 290 "../src/ast/lex.re"
{
const std::string *name = new std::string(tok + 1, tok_len() - 1);
yylval.regexp = ast_tag(cline, get_column(), name, tok[0] == '#');
#line 1369 "src/ast/lex.cc"
yy241:
++YYCURSOR;
-#line 282 "../src/ast/lex.re"
+#line 283 "../src/ast/lex.re"
{ tok = cur; return 0; }
#line 1374 "src/ast/lex.cc"
yy243:
++YYCURSOR;
-#line 280 "../src/ast/lex.re"
+#line 281 "../src/ast/lex.re"
{ lex_c_comment(); goto scan; }
#line 1379 "src/ast/lex.cc"
yy245:
++YYCURSOR;
-#line 279 "../src/ast/lex.re"
+#line 280 "../src/ast/lex.re"
{ lex_cpp_comment(); goto scan; }
#line 1384 "src/ast/lex.cc"
yy247:
yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
if (yych == '>') goto yy249;
yy248:
-#line 270 "../src/ast/lex.re"
+#line 271 "../src/ast/lex.re"
{ lex_code_indented(); return TOKEN_CODE; }
#line 1392 "src/ast/lex.cc"
yy249:
}
yy251:
++YYCURSOR;
-#line 287 "../src/ast/lex.re"
+#line 288 "../src/ast/lex.re"
{ yylval.regexp = lex_cls(true); return TOKEN_REGEXP; }
#line 1427 "src/ast/lex.cc"
yy253:
yy254:
++YYCURSOR;
yy255:
-#line 323 "../src/ast/lex.re"
+#line 324 "../src/ast/lex.re"
{
fatal_lc(get_cline(), get_column(),
"illegal closure form, use '{n}', '{n,}', '{n,m}' where n and m are numbers");
}
yy263:
p = yyt1;
-#line 272 "../src/ast/lex.re"
+#line 273 "../src/ast/lex.re"
{
yylval.str = new std::string(p, static_cast<size_t>(cur - p));
return tok[0] == ':' ? TOKEN_CJUMP : TOKEN_CNEXT;
goto yy255;
yy266:
++YYCURSOR;
-#line 297 "../src/ast/lex.re"
+#line 298 "../src/ast/lex.re"
{
if (!s_to_u32_unsafe (tok + 1, cur - 1, yylval.bounds.min)) {
fatal_lc(get_cline(), get_column(), "repetition count overflow");
#line 1525 "src/ast/lex.cc"
yy268:
++YYCURSOR;
-#line 328 "../src/ast/lex.re"
+#line 329 "../src/ast/lex.re"
{
if (!globopts->FFlag) {
fatal_lc(get_cline(), get_column(),
goto yy235;
yy274:
++YYCURSOR;
-#line 315 "../src/ast/lex.re"
+#line 316 "../src/ast/lex.re"
{
if (!s_to_u32_unsafe (tok + 1, cur - 2, yylval.bounds.min)) {
fatal_lc(get_cline(), get_column(), "repetition lower bound overflow");
goto yy235;
yy277:
++YYCURSOR;
-#line 337 "../src/ast/lex.re"
+#line 338 "../src/ast/lex.re"
{ return TOKEN_CONF; }
#line 1573 "src/ast/lex.cc"
yy279:
++YYCURSOR;
p = yyt1;
-#line 305 "../src/ast/lex.re"
+#line 306 "../src/ast/lex.re"
{
if (!s_to_u32_unsafe (tok + 1, p, yylval.bounds.min)) {
fatal_lc(get_cline(), get_column(), "repetition lower bound overflow");
yy288:
++YYCURSOR;
YYCURSOR = yyt1;
-#line 369 "../src/ast/lex.re"
+#line 370 "../src/ast/lex.re"
{
set_sourceline ();
return TOKEN_LINE_INFO;
if (yych == '\n') goto yy235;
goto yy291;
}
-#line 390 "../src/ast/lex.re"
+#line 391 "../src/ast/lex.re"
}
}
}
yy297:
-#line 397 "../src/ast/lex.re"
+#line 398 "../src/ast/lex.re"
{ return false; }
#line 1738 "src/ast/lex.cc"
yy298:
if (yych == '>') goto yy300;
++YYCURSOR;
YYCURSOR = yyt1;
-#line 396 "../src/ast/lex.re"
+#line 397 "../src/ast/lex.re"
{ return true; }
#line 1757 "src/ast/lex.cc"
}
-#line 398 "../src/ast/lex.re"
+#line 399 "../src/ast/lex.re"
}
yyt1 = YYCURSOR;
goto yy307;
}
-#line 406 "../src/ast/lex.re"
+#line 407 "../src/ast/lex.re"
{ return false; }
#line 1815 "src/ast/lex.cc"
yy307:
if (yych == '{') goto yy310;
}
YYCURSOR = yyt1;
-#line 405 "../src/ast/lex.re"
+#line 406 "../src/ast/lex.re"
{ return true; }
#line 1832 "src/ast/lex.cc"
yy310:
++YYCURSOR;
YYCURSOR = yyt1;
-#line 404 "../src/ast/lex.re"
+#line 405 "../src/ast/lex.re"
{ return false; }
#line 1838 "src/ast/lex.cc"
}
-#line 407 "../src/ast/lex.re"
+#line 408 "../src/ast/lex.re"
}
if (yych <= '!') goto yy316;
if (yych == '>') goto yy319;
yy315:
-#line 417 "../src/ast/lex.re"
+#line 418 "../src/ast/lex.re"
{ goto cond; }
#line 1901 "src/ast/lex.cc"
yy316:
yych = (YYCTYPE)*YYCURSOR;
if (yych == '\t') goto yy316;
if (yych == ' ') goto yy316;
-#line 415 "../src/ast/lex.re"
+#line 416 "../src/ast/lex.re"
{ kind = TOKEN_CSETUP; goto cond; }
#line 1910 "src/ast/lex.cc"
yy319:
++YYCURSOR;
-#line 416 "../src/ast/lex.re"
+#line 417 "../src/ast/lex.re"
{ kind = TOKEN_CZERO; goto end; }
#line 1915 "src/ast/lex.cc"
}
-#line 418 "../src/ast/lex.re"
+#line 419 "../src/ast/lex.re"
cond:
tok = cur;
}
yy323:
++YYCURSOR;
-#line 424 "../src/ast/lex.re"
+#line 425 "../src/ast/lex.re"
{ goto error; }
#line 1976 "src/ast/lex.cc"
yy325:
++YYCURSOR;
-#line 423 "../src/ast/lex.re"
+#line 424 "../src/ast/lex.re"
{ if (!cl->empty()) goto error; cl->insert("*"); goto next; }
#line 1981 "src/ast/lex.cc"
yy327:
if (yybm[0+yych] & 128) {
goto yy327;
}
-#line 422 "../src/ast/lex.re"
+#line 423 "../src/ast/lex.re"
{ cl->insert(std::string(tok, tok_len())); goto next; }
#line 1991 "src/ast/lex.cc"
}
-#line 425 "../src/ast/lex.re"
+#line 426 "../src/ast/lex.re"
next:
}
++YYCURSOR;
yy333:
-#line 430 "../src/ast/lex.re"
+#line 431 "../src/ast/lex.re"
{ goto error; }
#line 2050 "src/ast/lex.cc"
yy334:
if (yybm[0+yych] & 128) {
goto yy335;
}
-#line 428 "../src/ast/lex.re"
+#line 429 "../src/ast/lex.re"
{ goto cond; }
#line 2074 "src/ast/lex.cc"
yy338:
++YYCURSOR;
-#line 429 "../src/ast/lex.re"
+#line 430 "../src/ast/lex.re"
{ goto end; }
#line 2079 "src/ast/lex.cc"
yy340:
YYCURSOR = YYMARKER;
goto yy333;
}
-#line 431 "../src/ast/lex.re"
+#line 432 "../src/ast/lex.re"
end:
yylval.clist = cl;
}
yy345:
++YYCURSOR;
-#line 454 "../src/ast/lex.re"
+#line 455 "../src/ast/lex.re"
{ fail_if_eof(); goto code; }
#line 2143 "src/ast/lex.cc"
yy347:
++YYCURSOR;
yy348:
-#line 459 "../src/ast/lex.re"
+#line 460 "../src/ast/lex.re"
{ goto code; }
#line 2149 "src/ast/lex.cc"
yy349:
if (yych == ' ') goto yy357;
}
yy350:
-#line 447 "../src/ast/lex.re"
+#line 448 "../src/ast/lex.re"
{
while (isspace(tok[0])) ++tok;
while (cur > tok && isspace(cur[-1])) --cur;
goto yy348;
yy352:
++YYCURSOR;
-#line 458 "../src/ast/lex.re"
+#line 459 "../src/ast/lex.re"
{ lex_string(cur[-1]); goto code; }
#line 2176 "src/ast/lex.cc"
yy354:
goto yy348;
yy355:
++YYCURSOR;
-#line 455 "../src/ast/lex.re"
+#line 456 "../src/ast/lex.re"
{ fatal_l(get_cline(), "Curly braces are not allowed after ':='"); }
#line 2186 "src/ast/lex.cc"
yy357:
++YYCURSOR;
YYCURSOR -= 1;
-#line 446 "../src/ast/lex.re"
+#line 447 "../src/ast/lex.re"
{ goto code; }
#line 2192 "src/ast/lex.cc"
yy359:
++YYCURSOR;
-#line 456 "../src/ast/lex.re"
+#line 457 "../src/ast/lex.re"
{ lex_c_comment(); goto code; }
#line 2197 "src/ast/lex.cc"
yy361:
++YYCURSOR;
-#line 457 "../src/ast/lex.re"
+#line 458 "../src/ast/lex.re"
{ lex_cpp_comment(); goto code; }
#line 2202 "src/ast/lex.cc"
}
-#line 460 "../src/ast/lex.re"
+#line 461 "../src/ast/lex.re"
}
}
yy365:
++YYCURSOR;
-#line 480 "../src/ast/lex.re"
+#line 481 "../src/ast/lex.re"
{ fail_if_eof(); goto code; }
#line 2278 "src/ast/lex.cc"
yy367:
++YYCURSOR;
yy368:
-#line 484 "../src/ast/lex.re"
+#line 485 "../src/ast/lex.re"
{ goto code; }
#line 2284 "src/ast/lex.cc"
yy369:
}
if (yych == '#') goto yy382;
yy370:
-#line 479 "../src/ast/lex.re"
+#line 480 "../src/ast/lex.re"
{ pos = cur; cline++; goto code; }
#line 2294 "src/ast/lex.cc"
yy371:
goto yy368;
yy372:
++YYCURSOR;
-#line 483 "../src/ast/lex.re"
+#line 484 "../src/ast/lex.re"
{ lex_string(cur[-1]); goto code; }
#line 2303 "src/ast/lex.cc"
yy374:
goto yy368;
yy375:
++YYCURSOR;
-#line 477 "../src/ast/lex.re"
+#line 478 "../src/ast/lex.re"
{ ++depth; goto code; }
#line 2313 "src/ast/lex.cc"
yy377:
++YYCURSOR;
-#line 469 "../src/ast/lex.re"
+#line 470 "../src/ast/lex.re"
{
if (--depth == 0) {
yylval.code = new Code(get_fname (), line, tok, tok_len ());
}
yy384:
++YYCURSOR;
-#line 481 "../src/ast/lex.re"
+#line 482 "../src/ast/lex.re"
{ lex_c_comment(); goto code; }
#line 2352 "src/ast/lex.cc"
yy386:
++YYCURSOR;
-#line 482 "../src/ast/lex.re"
+#line 483 "../src/ast/lex.re"
{ lex_cpp_comment(); goto code; }
#line 2357 "src/ast/lex.cc"
yy388:
yy398:
++YYCURSOR;
YYCURSOR = yyt1;
-#line 478 "../src/ast/lex.re"
+#line 479 "../src/ast/lex.re"
{ set_sourceline (); goto code; }
#line 2416 "src/ast/lex.cc"
yy400:
if (yych == '\n') goto yy381;
goto yy401;
}
-#line 485 "../src/ast/lex.re"
+#line 486 "../src/ast/lex.re"
}
}
yy407:
++YYCURSOR;
-#line 495 "../src/ast/lex.re"
+#line 496 "../src/ast/lex.re"
{ fail_if_eof(); goto loop; }
#line 2478 "src/ast/lex.cc"
yy409:
++YYCURSOR;
yy410:
-#line 496 "../src/ast/lex.re"
+#line 497 "../src/ast/lex.re"
{ goto loop; }
#line 2484 "src/ast/lex.cc"
yy411:
++YYCURSOR;
-#line 494 "../src/ast/lex.re"
+#line 495 "../src/ast/lex.re"
{ pos = cur; ++cline; goto loop; }
#line 2489 "src/ast/lex.cc"
yy413:
goto yy410;
yy414:
++YYCURSOR;
-#line 492 "../src/ast/lex.re"
+#line 493 "../src/ast/lex.re"
{ if (cur[-1] == delim) return; else goto loop; }
#line 2498 "src/ast/lex.cc"
yy416:
}
yy417:
++YYCURSOR;
-#line 493 "../src/ast/lex.re"
+#line 494 "../src/ast/lex.re"
{ goto loop; }
#line 2511 "src/ast/lex.cc"
}
-#line 497 "../src/ast/lex.re"
+#line 498 "../src/ast/lex.re"
}
}
yy421:
++YYCURSOR;
-#line 506 "../src/ast/lex.re"
+#line 507 "../src/ast/lex.re"
{ fail_if_eof(); goto loop; }
#line 2539 "src/ast/lex.cc"
yy423:
++YYCURSOR;
yy424:
-#line 507 "../src/ast/lex.re"
+#line 508 "../src/ast/lex.re"
{ goto loop; }
#line 2545 "src/ast/lex.cc"
yy425:
++YYCURSOR;
-#line 505 "../src/ast/lex.re"
+#line 506 "../src/ast/lex.re"
{ pos = cur; ++cline; goto loop; }
#line 2550 "src/ast/lex.cc"
yy427:
yych = (YYCTYPE)*++YYCURSOR;
if (yych != '/') goto yy424;
++YYCURSOR;
-#line 504 "../src/ast/lex.re"
+#line 505 "../src/ast/lex.re"
{ return; }
#line 2561 "src/ast/lex.cc"
}
-#line 508 "../src/ast/lex.re"
+#line 509 "../src/ast/lex.re"
}
}
yy433:
++YYCURSOR;
-#line 516 "../src/ast/lex.re"
+#line 517 "../src/ast/lex.re"
{ fail_if_eof(); goto loop; }
#line 2588 "src/ast/lex.cc"
yy435:
++YYCURSOR;
yy436:
-#line 517 "../src/ast/lex.re"
+#line 518 "../src/ast/lex.re"
{ goto loop; }
#line 2594 "src/ast/lex.cc"
yy437:
++YYCURSOR;
-#line 515 "../src/ast/lex.re"
+#line 516 "../src/ast/lex.re"
{ pos = cur; ++cline; return; }
#line 2599 "src/ast/lex.cc"
yy439:
if (yych == '\n') goto yy437;
goto yy436;
}
-#line 518 "../src/ast/lex.re"
+#line 519 "../src/ast/lex.re"
}
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = (YYCTYPE)*YYCURSOR;
if (yych == ']') goto yy443;
-#line 530 "../src/ast/lex.re"
+#line 531 "../src/ast/lex.re"
{ l = lex_cls_chr(); goto snd; }
#line 2625 "src/ast/lex.cc"
yy443:
++YYCURSOR;
-#line 529 "../src/ast/lex.re"
+#line 530 "../src/ast/lex.re"
{ return ast_cls(cline, c0, cls, neg); }
#line 2630 "src/ast/lex.cc"
}
-#line 531 "../src/ast/lex.re"
+#line 532 "../src/ast/lex.re"
snd:
yych = (YYCTYPE)*(YYMARKER = YYCURSOR);
if (yych == '-') goto yy448;
yy447:
-#line 534 "../src/ast/lex.re"
+#line 535 "../src/ast/lex.re"
{ u = l; goto add; }
#line 2645 "src/ast/lex.cc"
yy448:
yy450:
++YYCURSOR;
YYCURSOR -= 1;
-#line 535 "../src/ast/lex.re"
+#line 536 "../src/ast/lex.re"
{
u = lex_cls_chr();
if (l > u) {
}
#line 2663 "src/ast/lex.cc"
}
-#line 543 "../src/ast/lex.re"
+#line 544 "../src/ast/lex.re"
add:
cls->push_back(ASTRange(l, u, c));
}
yy454:
++YYCURSOR;
-#line 555 "../src/ast/lex.re"
+#line 556 "../src/ast/lex.re"
{ fail_if_eof(); return 0; }
#line 2696 "src/ast/lex.cc"
yy456:
++YYCURSOR;
yy457:
-#line 561 "../src/ast/lex.re"
+#line 562 "../src/ast/lex.re"
{ return static_cast<uint8_t>(tok[0]); }
#line 2702 "src/ast/lex.cc"
yy458:
++YYCURSOR;
-#line 556 "../src/ast/lex.re"
+#line 557 "../src/ast/lex.re"
{ fatal_lc(l, c, "newline in character class"); }
#line 2707 "src/ast/lex.cc"
yy460:
}
}
yy462:
-#line 559 "../src/ast/lex.re"
+#line 560 "../src/ast/lex.re"
{ fatal_lc(l, c, "syntax error in escape sequence"); }
#line 2768 "src/ast/lex.cc"
yy463:
++YYCURSOR;
yy464:
-#line 574 "../src/ast/lex.re"
+#line 575 "../src/ast/lex.re"
{
warn.useless_escape(cline, get_column(), tok[1]);
return static_cast<uint8_t>(tok[1]);
goto yy464;
yy466:
++YYCURSOR;
-#line 572 "../src/ast/lex.re"
+#line 573 "../src/ast/lex.re"
{ return static_cast<uint8_t>('-'); }
#line 2786 "src/ast/lex.cc"
yy468:
if (yych <= '/') goto yy469;
if (yych <= '7') goto yy493;
yy469:
-#line 558 "../src/ast/lex.re"
+#line 559 "../src/ast/lex.re"
{ fatal_lc(l, c, "syntax error in octal escape sequence"); }
#line 2795 "src/ast/lex.cc"
yy470:
if (yych <= 'f') goto yy495;
}
yy472:
-#line 557 "../src/ast/lex.re"
+#line 558 "../src/ast/lex.re"
{ fatal_lc(l, c, "syntax error in hexadecimal escape sequence"); }
#line 2813 "src/ast/lex.cc"
yy473:
}
yy474:
++YYCURSOR;
-#line 571 "../src/ast/lex.re"
+#line 572 "../src/ast/lex.re"
{ return static_cast<uint8_t>('\\'); }
#line 2831 "src/ast/lex.cc"
yy476:
++YYCURSOR;
-#line 573 "../src/ast/lex.re"
+#line 574 "../src/ast/lex.re"
{ return static_cast<uint8_t>(']'); }
#line 2836 "src/ast/lex.cc"
yy478:
++YYCURSOR;
-#line 564 "../src/ast/lex.re"
+#line 565 "../src/ast/lex.re"
{ return static_cast<uint8_t>('\a'); }
#line 2841 "src/ast/lex.cc"
yy480:
++YYCURSOR;
-#line 565 "../src/ast/lex.re"
+#line 566 "../src/ast/lex.re"
{ return static_cast<uint8_t>('\b'); }
#line 2846 "src/ast/lex.cc"
yy482:
++YYCURSOR;
-#line 566 "../src/ast/lex.re"
+#line 567 "../src/ast/lex.re"
{ return static_cast<uint8_t>('\f'); }
#line 2851 "src/ast/lex.cc"
yy484:
++YYCURSOR;
-#line 567 "../src/ast/lex.re"
+#line 568 "../src/ast/lex.re"
{ return static_cast<uint8_t>('\n'); }
#line 2856 "src/ast/lex.cc"
yy486:
++YYCURSOR;
-#line 568 "../src/ast/lex.re"
+#line 569 "../src/ast/lex.re"
{ return static_cast<uint8_t>('\r'); }
#line 2861 "src/ast/lex.cc"
yy488:
++YYCURSOR;
-#line 569 "../src/ast/lex.re"
+#line 570 "../src/ast/lex.re"
{ return static_cast<uint8_t>('\t'); }
#line 2866 "src/ast/lex.cc"
yy490:
++YYCURSOR;
-#line 570 "../src/ast/lex.re"
+#line 571 "../src/ast/lex.re"
{ return static_cast<uint8_t>('\v'); }
#line 2871 "src/ast/lex.cc"
yy492:
}
yy498:
++YYCURSOR;
-#line 563 "../src/ast/lex.re"
+#line 564 "../src/ast/lex.re"
{ return unesc_oct(tok, cur); }
#line 2936 "src/ast/lex.cc"
yy500:
}
yy502:
++YYCURSOR;
-#line 562 "../src/ast/lex.re"
+#line 563 "../src/ast/lex.re"
{ return unesc_hex(tok, cur); }
#line 2965 "src/ast/lex.cc"
yy504:
goto yy494;
}
}
-#line 578 "../src/ast/lex.re"
+#line 579 "../src/ast/lex.re"
}
}
yy508:
++YYCURSOR;
-#line 588 "../src/ast/lex.re"
+#line 589 "../src/ast/lex.re"
{ fail_if_eof(); return 0; }
#line 3018 "src/ast/lex.cc"
yy510:
++YYCURSOR;
yy511:
-#line 594 "../src/ast/lex.re"
+#line 595 "../src/ast/lex.re"
{
end = tok[0] == quote;
return static_cast<uint8_t>(tok[0]);
#line 3027 "src/ast/lex.cc"
yy512:
++YYCURSOR;
-#line 589 "../src/ast/lex.re"
+#line 590 "../src/ast/lex.re"
{ fatal_lc(l, c, "newline in character string"); }
#line 3032 "src/ast/lex.cc"
yy514:
}
}
yy516:
-#line 592 "../src/ast/lex.re"
+#line 593 "../src/ast/lex.re"
{ fatal_lc(l, c, "syntax error in escape sequence"); }
#line 3088 "src/ast/lex.cc"
yy517:
++YYCURSOR;
yy518:
-#line 608 "../src/ast/lex.re"
+#line 609 "../src/ast/lex.re"
{
if (tok[1] != quote) {
warn.useless_escape(cline, get_column(), tok[1]);
if (yych <= '/') goto yy521;
if (yych <= '7') goto yy543;
yy521:
-#line 591 "../src/ast/lex.re"
+#line 592 "../src/ast/lex.re"
{ fatal_lc(l, c, "syntax error in octal escape sequence"); }
#line 3112 "src/ast/lex.cc"
yy522:
if (yych <= 'f') goto yy545;
}
yy524:
-#line 590 "../src/ast/lex.re"
+#line 591 "../src/ast/lex.re"
{ fatal_lc(l, c, "syntax error in hexadecimal escape sequence"); }
#line 3130 "src/ast/lex.cc"
yy525:
}
yy526:
++YYCURSOR;
-#line 607 "../src/ast/lex.re"
+#line 608 "../src/ast/lex.re"
{ return static_cast<uint8_t>('\\'); }
#line 3148 "src/ast/lex.cc"
yy528:
++YYCURSOR;
-#line 600 "../src/ast/lex.re"
+#line 601 "../src/ast/lex.re"
{ return static_cast<uint8_t>('\a'); }
#line 3153 "src/ast/lex.cc"
yy530:
++YYCURSOR;
-#line 601 "../src/ast/lex.re"
+#line 602 "../src/ast/lex.re"
{ return static_cast<uint8_t>('\b'); }
#line 3158 "src/ast/lex.cc"
yy532:
++YYCURSOR;
-#line 602 "../src/ast/lex.re"
+#line 603 "../src/ast/lex.re"
{ return static_cast<uint8_t>('\f'); }
#line 3163 "src/ast/lex.cc"
yy534:
++YYCURSOR;
-#line 603 "../src/ast/lex.re"
+#line 604 "../src/ast/lex.re"
{ return static_cast<uint8_t>('\n'); }
#line 3168 "src/ast/lex.cc"
yy536:
++YYCURSOR;
-#line 604 "../src/ast/lex.re"
+#line 605 "../src/ast/lex.re"
{ return static_cast<uint8_t>('\r'); }
#line 3173 "src/ast/lex.cc"
yy538:
++YYCURSOR;
-#line 605 "../src/ast/lex.re"
+#line 606 "../src/ast/lex.re"
{ return static_cast<uint8_t>('\t'); }
#line 3178 "src/ast/lex.cc"
yy540:
++YYCURSOR;
-#line 606 "../src/ast/lex.re"
+#line 607 "../src/ast/lex.re"
{ return static_cast<uint8_t>('\v'); }
#line 3183 "src/ast/lex.cc"
yy542:
}
yy548:
++YYCURSOR;
-#line 599 "../src/ast/lex.re"
+#line 600 "../src/ast/lex.re"
{ return unesc_oct(tok, cur); }
#line 3248 "src/ast/lex.cc"
yy550:
}
yy552:
++YYCURSOR;
-#line 598 "../src/ast/lex.re"
+#line 599 "../src/ast/lex.re"
{ return unesc_hex(tok, cur); }
#line 3277 "src/ast/lex.cc"
yy554:
goto yy544;
}
}
-#line 614 "../src/ast/lex.re"
+#line 615 "../src/ast/lex.re"
}
}
}
++YYCURSOR;
-#line 647 "../src/ast/lex.re"
+#line 649 "../src/ast/lex.re"
{ --cur; return; }
#line 3381 "src/ast/lex.cc"
yy560:
++YYCURSOR;
yy561:
-#line 648 "../src/ast/lex.re"
+#line 650 "../src/ast/lex.re"
{ goto sourceline; }
#line 3387 "src/ast/lex.cc"
yy562:
++YYCURSOR;
-#line 646 "../src/ast/lex.re"
+#line 648 "../src/ast/lex.re"
{ tok = cur; return; }
#line 3392 "src/ast/lex.cc"
yy564:
if (yybm[0+yych] & 64) {
goto yy566;
}
-#line 633 "../src/ast/lex.re"
+#line 634 "../src/ast/lex.re"
{
if (!s_to_u32_unsafe (tok, cur, cline)) {
fatal_lc(get_cline(), get_column(), "line number overflow");
goto yy561;
yy572:
++YYCURSOR;
-#line 640 "../src/ast/lex.re"
+#line 641 "../src/ast/lex.re"
{
- in.escaped_file_name = std::string (tok + 1, tok_len () - 2); // strip quotes
- strrreplace (in.escaped_file_name, "\\", "\\\\");
+ std::string &name = files.top()->escaped_name;
+ name = std::string(tok + 1, tok_len () - 2); // strip quotes
+ strrreplace(name, "\\", "\\\\");
goto sourceline;
}
-#line 3439 "src/ast/lex.cc"
+#line 3440 "src/ast/lex.cc"
yy574:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
if (yych == '\n') goto yy571;
goto yy569;
}
-#line 649 "../src/ast/lex.re"
+#line 651 "../src/ast/lex.re"
}