-/* Generated by re2c 1.1.1 on Thu Jan 10 23:17:36 2019 */
+/* Generated by re2c 1.1.1 on Thu Jan 17 22:27:03 2019 */
#line 1 "../src/parse/lex.re"
#include "src/util/c99_stdint.h"
#include <stddef.h>
yy223:
++YYCURSOR;
yy224:
-#line 403 "../src/parse/lex.re"
+#line 402 "../src/parse/lex.re"
{
fatal_lc(get_line(), get_column(), "unexpected character: '%c'", *tok);
goto scan;
if (yybm[0+yych] & 16) {
goto yy225;
}
-#line 385 "../src/parse/lex.re"
+#line 384 "../src/parse/lex.re"
{ goto scan; }
#line 1295 "src/parse/lex.cc"
yy228:
if (yych == '#') goto yy258;
}
yy229:
-#line 392 "../src/parse/lex.re"
+#line 391 "../src/parse/lex.re"
{
next_line();
if (lexer_state == LEX_FLEX_NAME) {
goto yy235;
yy240:
++YYCURSOR;
-#line 380 "../src/parse/lex.re"
+#line 379 "../src/parse/lex.re"
{
yylval.regexp = ast_dot(get_line(), get_column());
return TOKEN_REGEXP;
return TOKEN_FID;
}
else {
+ // consume one character, otherwise we risk breaking operator
+ // precedence in cases like ab*: it should be a(b)*, not (ab)*
+ cur = tok + 1;
+
std::vector<ASTChar> *str = new std::vector<ASTChar>;
- for (const char *s = tok; s < cur; ++s) {
- const uint32_t
- chr = static_cast<uint8_t>(*s),
- col = static_cast<uint32_t>(s - tok);
- str->push_back(ASTChar(chr, col));
- }
+ str->push_back(ASTChar(static_cast<uint8_t>(tok[0]), 0));
yylval.regexp = ast_str(get_line(), get_column(), str, false);
return TOKEN_REGEXP;
}
}
-#line 1415 "src/parse/lex.cc"
+#line 1414 "src/parse/lex.cc"
yy250:
yych = (YYCTYPE)*++YYCURSOR;
if (yych == '^') goto yy273;
#line 304 "../src/parse/lex.re"
{ yylval.regexp = lex_cls(false); return TOKEN_REGEXP; }
-#line 1421 "src/parse/lex.cc"
+#line 1420 "src/parse/lex.cc"
yy252:
yych = (YYCTYPE)*++YYCURSOR;
if (yych == 'e') goto yy275;
yy254:
#line 287 "../src/parse/lex.re"
{ lex_code_in_braces(); return TOKEN_CODE; }
-#line 1446 "src/parse/lex.cc"
+#line 1445 "src/parse/lex.cc"
yy255:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
, newstr(tok + 1, cur), tok[0] == '#');
return TOKEN_REGEXP;
}
-#line 1511 "src/parse/lex.cc"
+#line 1510 "src/parse/lex.cc"
yy263:
++YYCURSOR;
#line 300 "../src/parse/lex.re"
{ tok = cur; return 0; }
-#line 1516 "src/parse/lex.cc"
+#line 1515 "src/parse/lex.cc"
yy265:
++YYCURSOR;
#line 298 "../src/parse/lex.re"
{ lex_c_comment(); goto scan; }
-#line 1521 "src/parse/lex.cc"
+#line 1520 "src/parse/lex.cc"
yy267:
++YYCURSOR;
#line 297 "../src/parse/lex.re"
{ lex_cpp_comment(); goto scan; }
-#line 1526 "src/parse/lex.cc"
+#line 1525 "src/parse/lex.cc"
yy269:
yyaccept = 3;
yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
yy270:
#line 288 "../src/parse/lex.re"
{ lex_code_indented(); return TOKEN_CODE; }
-#line 1534 "src/parse/lex.cc"
+#line 1533 "src/parse/lex.cc"
yy271:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
++YYCURSOR;
#line 305 "../src/parse/lex.re"
{ yylval.regexp = lex_cls(true); return TOKEN_REGEXP; }
-#line 1569 "src/parse/lex.cc"
+#line 1568 "src/parse/lex.cc"
yy275:
yych = (YYCTYPE)*++YYCURSOR;
if (yych == '2') goto yy286;
fatal_lc(get_line(), get_column(),
"illegal closure form, use '{n}', '{n,}', '{n,m}' where n and m are numbers");
}
-#line 1582 "src/parse/lex.cc"
+#line 1581 "src/parse/lex.cc"
yy278:
++YYCURSOR;
if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yylval.str = newstr(p, cur);
return tok[0] == ':' ? TOKEN_CJUMP : TOKEN_CNEXT;
}
-#line 1645 "src/parse/lex.cc"
+#line 1644 "src/parse/lex.cc"
yy286:
yych = (YYCTYPE)*++YYCURSOR;
if (yych == 'c') goto yy293;
yylval.bounds.max = yylval.bounds.min;
return TOKEN_CLOSESIZE;
}
-#line 1667 "src/parse/lex.cc"
+#line 1666 "src/parse/lex.cc"
yy290:
++YYCURSOR;
#line 346 "../src/parse/lex.re"
yylval.str = newstr(tok + 1, cur - 1);
return TOKEN_ID;
}
-#line 1679 "src/parse/lex.cc"
+#line 1678 "src/parse/lex.cc"
yy292:
yych = (YYCTYPE)*++YYCURSOR;
if (yych == 'n') goto yy298;
yylval.bounds.max = std::numeric_limits<uint32_t>::max();
return TOKEN_CLOSESIZE;
}
-#line 1706 "src/parse/lex.cc"
+#line 1705 "src/parse/lex.cc"
yy298:
yych = (YYCTYPE)*++YYCURSOR;
if (yych == 'e') goto yy303;
++YYCURSOR;
#line 355 "../src/parse/lex.re"
{ return TOKEN_CONF; }
-#line 1715 "src/parse/lex.cc"
+#line 1714 "src/parse/lex.cc"
yy301:
++YYCURSOR;
p = yyt1;
}
return TOKEN_CLOSESIZE;
}
-#line 1729 "src/parse/lex.cc"
+#line 1728 "src/parse/lex.cc"
yy303:
yych = (YYCTYPE)*++YYCURSOR;
if (yych <= '0') goto yy305;
yy310:
++YYCURSOR;
YYCURSOR = yyt1;
-#line 387 "../src/parse/lex.re"
+#line 386 "../src/parse/lex.re"
{
set_sourceline ();
return TOKEN_LINE_INFO;
}
-#line 1790 "src/parse/lex.cc"
+#line 1789 "src/parse/lex.cc"
yy312:
yych = (YYCTYPE)*++YYCURSOR;
if (yych == '\n') goto yy310;
if (yych == '\n') goto yy257;
goto yy313;
}
-#line 407 "../src/parse/lex.re"
+#line 406 "../src/parse/lex.re"
}
bool Scanner::lex_namedef_context_re2c()
{
-#line 1823 "src/parse/lex.cc"
+#line 1822 "src/parse/lex.cc"
{
YYCTYPE yych;
static const unsigned char yybm[] = {
}
}
yy319:
-#line 414 "../src/parse/lex.re"
+#line 413 "../src/parse/lex.re"
{ return false; }
-#line 1880 "src/parse/lex.cc"
+#line 1879 "src/parse/lex.cc"
yy320:
++YYCURSOR;
if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
if (yych == '>') goto yy322;
++YYCURSOR;
YYCURSOR = yyt1;
-#line 413 "../src/parse/lex.re"
+#line 412 "../src/parse/lex.re"
{ return true; }
-#line 1899 "src/parse/lex.cc"
+#line 1898 "src/parse/lex.cc"
}
-#line 415 "../src/parse/lex.re"
+#line 414 "../src/parse/lex.re"
}
bool Scanner::lex_namedef_context_flex()
{
-#line 1908 "src/parse/lex.cc"
+#line 1907 "src/parse/lex.cc"
{
YYCTYPE yych;
static const unsigned char yybm[] = {
yyt1 = YYCURSOR;
goto yy329;
}
-#line 423 "../src/parse/lex.re"
+#line 422 "../src/parse/lex.re"
{ return false; }
-#line 1957 "src/parse/lex.cc"
+#line 1956 "src/parse/lex.cc"
yy329:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
if (yych == '{') goto yy332;
}
YYCURSOR = yyt1;
-#line 422 "../src/parse/lex.re"
+#line 421 "../src/parse/lex.re"
{ return true; }
-#line 1974 "src/parse/lex.cc"
+#line 1973 "src/parse/lex.cc"
yy332:
++YYCURSOR;
YYCURSOR = yyt1;
-#line 421 "../src/parse/lex.re"
+#line 420 "../src/parse/lex.re"
{ return false; }
-#line 1980 "src/parse/lex.cc"
+#line 1979 "src/parse/lex.cc"
}
-#line 424 "../src/parse/lex.re"
+#line 423 "../src/parse/lex.re"
}
int kind = TOKEN_CLIST;
CondList *cl = new CondList;
-#line 1991 "src/parse/lex.cc"
+#line 1990 "src/parse/lex.cc"
{
YYCTYPE yych;
static const unsigned char yybm[] = {
if (yych <= '!') goto yy338;
if (yych == '>') goto yy341;
yy337:
-#line 434 "../src/parse/lex.re"
+#line 433 "../src/parse/lex.re"
{ goto cond; }
-#line 2043 "src/parse/lex.cc"
+#line 2042 "src/parse/lex.cc"
yy338:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = (YYCTYPE)*YYCURSOR;
if (yych == '\t') goto yy338;
if (yych == ' ') goto yy338;
-#line 432 "../src/parse/lex.re"
+#line 431 "../src/parse/lex.re"
{ kind = TOKEN_CSETUP; goto cond; }
-#line 2052 "src/parse/lex.cc"
+#line 2051 "src/parse/lex.cc"
yy341:
++YYCURSOR;
-#line 433 "../src/parse/lex.re"
+#line 432 "../src/parse/lex.re"
{ kind = TOKEN_CZERO; goto end; }
-#line 2057 "src/parse/lex.cc"
+#line 2056 "src/parse/lex.cc"
}
-#line 435 "../src/parse/lex.re"
+#line 434 "../src/parse/lex.re"
cond:
tok = cur;
-#line 2064 "src/parse/lex.cc"
+#line 2063 "src/parse/lex.cc"
{
YYCTYPE yych;
static const unsigned char yybm[] = {
}
yy345:
++YYCURSOR;
-#line 441 "../src/parse/lex.re"
+#line 440 "../src/parse/lex.re"
{ goto error; }
-#line 2118 "src/parse/lex.cc"
+#line 2117 "src/parse/lex.cc"
yy347:
++YYCURSOR;
-#line 440 "../src/parse/lex.re"
+#line 439 "../src/parse/lex.re"
{ if (!cl->empty()) goto error; cl->insert("*"); goto next; }
-#line 2123 "src/parse/lex.cc"
+#line 2122 "src/parse/lex.cc"
yy349:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
if (yybm[0+yych] & 128) {
goto yy349;
}
-#line 439 "../src/parse/lex.re"
+#line 438 "../src/parse/lex.re"
{ cl->insert(getstr(tok, cur)); goto next; }
-#line 2133 "src/parse/lex.cc"
+#line 2132 "src/parse/lex.cc"
}
-#line 442 "../src/parse/lex.re"
+#line 441 "../src/parse/lex.re"
next:
-#line 2139 "src/parse/lex.cc"
+#line 2138 "src/parse/lex.cc"
{
YYCTYPE yych;
static const unsigned char yybm[] = {
}
++YYCURSOR;
yy355:
-#line 447 "../src/parse/lex.re"
+#line 446 "../src/parse/lex.re"
{ goto error; }
-#line 2192 "src/parse/lex.cc"
+#line 2191 "src/parse/lex.cc"
yy356:
yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
if (yych <= ' ') {
if (yybm[0+yych] & 128) {
goto yy357;
}
-#line 445 "../src/parse/lex.re"
+#line 444 "../src/parse/lex.re"
{ goto cond; }
-#line 2216 "src/parse/lex.cc"
+#line 2215 "src/parse/lex.cc"
yy360:
++YYCURSOR;
-#line 446 "../src/parse/lex.re"
+#line 445 "../src/parse/lex.re"
{ goto end; }
-#line 2221 "src/parse/lex.cc"
+#line 2220 "src/parse/lex.cc"
yy362:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
YYCURSOR = YYMARKER;
goto yy355;
}
-#line 448 "../src/parse/lex.re"
+#line 447 "../src/parse/lex.re"
end:
yylval.clist = cl;
tok = cur;
code:
-#line 2255 "src/parse/lex.cc"
+#line 2254 "src/parse/lex.cc"
{
YYCTYPE yych;
if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
}
yy367:
++YYCURSOR;
-#line 471 "../src/parse/lex.re"
+#line 470 "../src/parse/lex.re"
{ fail_if_eof(); goto code; }
-#line 2285 "src/parse/lex.cc"
+#line 2284 "src/parse/lex.cc"
yy369:
++YYCURSOR;
yy370:
-#line 476 "../src/parse/lex.re"
+#line 475 "../src/parse/lex.re"
{ goto code; }
-#line 2291 "src/parse/lex.cc"
+#line 2290 "src/parse/lex.cc"
yy371:
yych = (YYCTYPE)*++YYCURSOR;
if (yych <= '\f') {
if (yych == ' ') goto yy379;
}
yy372:
-#line 464 "../src/parse/lex.re"
+#line 463 "../src/parse/lex.re"
{
while (isspace(tok[0])) ++tok;
while (cur > tok && isspace(cur[-1])) --cur;
yylval.code = new Code(get_fname (), line, getstr(tok, cur));
return;
}
-#line 2309 "src/parse/lex.cc"
+#line 2308 "src/parse/lex.cc"
yy373:
yych = (YYCTYPE)*++YYCURSOR;
if (yych == '\n') goto yy371;
goto yy370;
yy374:
++YYCURSOR;
-#line 475 "../src/parse/lex.re"
+#line 474 "../src/parse/lex.re"
{ lex_string(cur[-1]); goto code; }
-#line 2318 "src/parse/lex.cc"
+#line 2317 "src/parse/lex.cc"
yy376:
yych = (YYCTYPE)*++YYCURSOR;
if (yych == '*') goto yy381;
goto yy370;
yy377:
++YYCURSOR;
-#line 472 "../src/parse/lex.re"
+#line 471 "../src/parse/lex.re"
{ fatal_l(get_line(), "Curly braces are not allowed after ':='"); }
-#line 2328 "src/parse/lex.cc"
+#line 2327 "src/parse/lex.cc"
yy379:
++YYCURSOR;
YYCURSOR -= 1;
-#line 463 "../src/parse/lex.re"
+#line 462 "../src/parse/lex.re"
{ goto code; }
-#line 2334 "src/parse/lex.cc"
+#line 2333 "src/parse/lex.cc"
yy381:
++YYCURSOR;
-#line 473 "../src/parse/lex.re"
+#line 472 "../src/parse/lex.re"
{ lex_c_comment(); goto code; }
-#line 2339 "src/parse/lex.cc"
+#line 2338 "src/parse/lex.cc"
yy383:
++YYCURSOR;
-#line 474 "../src/parse/lex.re"
+#line 473 "../src/parse/lex.re"
{ lex_cpp_comment(); goto code; }
-#line 2344 "src/parse/lex.cc"
+#line 2343 "src/parse/lex.cc"
}
-#line 477 "../src/parse/lex.re"
+#line 476 "../src/parse/lex.re"
}
uint32_t depth = 1;
code:
-#line 2356 "src/parse/lex.cc"
+#line 2355 "src/parse/lex.cc"
{
YYCTYPE yych;
static const unsigned char yybm[] = {
}
yy387:
++YYCURSOR;
-#line 497 "../src/parse/lex.re"
+#line 496 "../src/parse/lex.re"
{ fail_if_eof(); goto code; }
-#line 2420 "src/parse/lex.cc"
+#line 2419 "src/parse/lex.cc"
yy389:
++YYCURSOR;
yy390:
-#line 501 "../src/parse/lex.re"
+#line 500 "../src/parse/lex.re"
{ goto code; }
-#line 2426 "src/parse/lex.cc"
+#line 2425 "src/parse/lex.cc"
yy391:
yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
if (yybm[0+yych] & 32) {
}
if (yych == '#') goto yy404;
yy392:
-#line 496 "../src/parse/lex.re"
+#line 495 "../src/parse/lex.re"
{ next_line(); goto code; }
-#line 2436 "src/parse/lex.cc"
+#line 2435 "src/parse/lex.cc"
yy393:
yych = (YYCTYPE)*++YYCURSOR;
if (yych == '\n') goto yy391;
goto yy390;
yy394:
++YYCURSOR;
-#line 500 "../src/parse/lex.re"
+#line 499 "../src/parse/lex.re"
{ lex_string(cur[-1]); goto code; }
-#line 2445 "src/parse/lex.cc"
+#line 2444 "src/parse/lex.cc"
yy396:
yych = (YYCTYPE)*++YYCURSOR;
if (yych == '*') goto yy406;
goto yy390;
yy397:
++YYCURSOR;
-#line 494 "../src/parse/lex.re"
+#line 493 "../src/parse/lex.re"
{ ++depth; goto code; }
-#line 2455 "src/parse/lex.cc"
+#line 2454 "src/parse/lex.cc"
yy399:
++YYCURSOR;
-#line 486 "../src/parse/lex.re"
+#line 485 "../src/parse/lex.re"
{
if (--depth == 0) {
yylval.code = new Code(get_fname (), line, getstr(tok, cur));
}
goto code;
}
-#line 2466 "src/parse/lex.cc"
+#line 2465 "src/parse/lex.cc"
yy401:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
}
yy406:
++YYCURSOR;
-#line 498 "../src/parse/lex.re"
+#line 497 "../src/parse/lex.re"
{ lex_c_comment(); goto code; }
-#line 2494 "src/parse/lex.cc"
+#line 2493 "src/parse/lex.cc"
yy408:
++YYCURSOR;
-#line 499 "../src/parse/lex.re"
+#line 498 "../src/parse/lex.re"
{ lex_cpp_comment(); goto code; }
-#line 2499 "src/parse/lex.cc"
+#line 2498 "src/parse/lex.cc"
yy410:
yych = (YYCTYPE)*++YYCURSOR;
if (yych != 'i') goto yy403;
yy420:
++YYCURSOR;
YYCURSOR = yyt1;
-#line 495 "../src/parse/lex.re"
+#line 494 "../src/parse/lex.re"
{ set_sourceline (); goto code; }
-#line 2558 "src/parse/lex.cc"
+#line 2557 "src/parse/lex.cc"
yy422:
yych = (YYCTYPE)*++YYCURSOR;
if (yych == '\n') goto yy420;
if (yych == '\n') goto yy403;
goto yy423;
}
-#line 502 "../src/parse/lex.re"
+#line 501 "../src/parse/lex.re"
}
{
loop:
-#line 2592 "src/parse/lex.cc"
+#line 2591 "src/parse/lex.cc"
{
YYCTYPE yych;
if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
}
yy429:
++YYCURSOR;
-#line 512 "../src/parse/lex.re"
+#line 511 "../src/parse/lex.re"
{ fail_if_eof(); goto loop; }
-#line 2620 "src/parse/lex.cc"
+#line 2619 "src/parse/lex.cc"
yy431:
++YYCURSOR;
yy432:
-#line 513 "../src/parse/lex.re"
+#line 512 "../src/parse/lex.re"
{ goto loop; }
-#line 2626 "src/parse/lex.cc"
+#line 2625 "src/parse/lex.cc"
yy433:
++YYCURSOR;
-#line 511 "../src/parse/lex.re"
+#line 510 "../src/parse/lex.re"
{ next_line(); goto loop; }
-#line 2631 "src/parse/lex.cc"
+#line 2630 "src/parse/lex.cc"
yy435:
yych = (YYCTYPE)*++YYCURSOR;
if (yych == '\n') goto yy433;
goto yy432;
yy436:
++YYCURSOR;
-#line 509 "../src/parse/lex.re"
+#line 508 "../src/parse/lex.re"
{ if (cur[-1] == delim) return; else goto loop; }
-#line 2640 "src/parse/lex.cc"
+#line 2639 "src/parse/lex.cc"
yy438:
yych = (YYCTYPE)*++YYCURSOR;
if (yych <= '&') {
}
yy439:
++YYCURSOR;
-#line 510 "../src/parse/lex.re"
+#line 509 "../src/parse/lex.re"
{ goto loop; }
-#line 2653 "src/parse/lex.cc"
+#line 2652 "src/parse/lex.cc"
}
-#line 514 "../src/parse/lex.re"
+#line 513 "../src/parse/lex.re"
}
{
loop:
-#line 2663 "src/parse/lex.cc"
+#line 2662 "src/parse/lex.cc"
{
YYCTYPE yych;
if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
}
yy443:
++YYCURSOR;
-#line 523 "../src/parse/lex.re"
+#line 522 "../src/parse/lex.re"
{ fail_if_eof(); goto loop; }
-#line 2681 "src/parse/lex.cc"
+#line 2680 "src/parse/lex.cc"
yy445:
++YYCURSOR;
yy446:
-#line 524 "../src/parse/lex.re"
+#line 523 "../src/parse/lex.re"
{ goto loop; }
-#line 2687 "src/parse/lex.cc"
+#line 2686 "src/parse/lex.cc"
yy447:
++YYCURSOR;
-#line 522 "../src/parse/lex.re"
+#line 521 "../src/parse/lex.re"
{ next_line(); goto loop; }
-#line 2692 "src/parse/lex.cc"
+#line 2691 "src/parse/lex.cc"
yy449:
yych = (YYCTYPE)*++YYCURSOR;
if (yych == '\n') goto yy447;
yych = (YYCTYPE)*++YYCURSOR;
if (yych != '/') goto yy446;
++YYCURSOR;
-#line 521 "../src/parse/lex.re"
+#line 520 "../src/parse/lex.re"
{ return; }
-#line 2703 "src/parse/lex.cc"
+#line 2702 "src/parse/lex.cc"
}
-#line 525 "../src/parse/lex.re"
+#line 524 "../src/parse/lex.re"
}
{
loop:
-#line 2713 "src/parse/lex.cc"
+#line 2712 "src/parse/lex.cc"
{
YYCTYPE yych;
if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
}
yy455:
++YYCURSOR;
-#line 533 "../src/parse/lex.re"
+#line 532 "../src/parse/lex.re"
{ fail_if_eof(); goto loop; }
-#line 2730 "src/parse/lex.cc"
+#line 2729 "src/parse/lex.cc"
yy457:
++YYCURSOR;
yy458:
-#line 534 "../src/parse/lex.re"
+#line 533 "../src/parse/lex.re"
{ goto loop; }
-#line 2736 "src/parse/lex.cc"
+#line 2735 "src/parse/lex.cc"
yy459:
++YYCURSOR;
-#line 532 "../src/parse/lex.re"
+#line 531 "../src/parse/lex.re"
{ next_line(); return; }
-#line 2741 "src/parse/lex.cc"
+#line 2740 "src/parse/lex.cc"
yy461:
yych = (YYCTYPE)*++YYCURSOR;
if (yych == '\n') goto yy459;
goto yy458;
}
-#line 535 "../src/parse/lex.re"
+#line 534 "../src/parse/lex.re"
}
tok = cur;
c = get_column();
-#line 2759 "src/parse/lex.cc"
+#line 2758 "src/parse/lex.cc"
{
YYCTYPE yych;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = (YYCTYPE)*YYCURSOR;
if (yych == ']') goto yy465;
-#line 547 "../src/parse/lex.re"
+#line 546 "../src/parse/lex.re"
{ l = lex_cls_chr(); goto snd; }
-#line 2767 "src/parse/lex.cc"
+#line 2766 "src/parse/lex.cc"
yy465:
++YYCURSOR;
-#line 546 "../src/parse/lex.re"
+#line 545 "../src/parse/lex.re"
{ return ast_cls(get_line(), c0, cls, neg); }
-#line 2772 "src/parse/lex.cc"
+#line 2771 "src/parse/lex.cc"
}
-#line 548 "../src/parse/lex.re"
+#line 547 "../src/parse/lex.re"
snd:
-#line 2778 "src/parse/lex.cc"
+#line 2777 "src/parse/lex.cc"
{
YYCTYPE yych;
if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = (YYCTYPE)*(YYMARKER = YYCURSOR);
if (yych == '-') goto yy470;
yy469:
-#line 551 "../src/parse/lex.re"
+#line 550 "../src/parse/lex.re"
{ u = l; goto add; }
-#line 2787 "src/parse/lex.cc"
+#line 2786 "src/parse/lex.cc"
yy470:
yych = (YYCTYPE)*++YYCURSOR;
if (yych != ']') goto yy472;
yy472:
++YYCURSOR;
YYCURSOR -= 1;
-#line 552 "../src/parse/lex.re"
+#line 551 "../src/parse/lex.re"
{
u = lex_cls_chr();
if (l > u) {
}
goto add;
}
-#line 2805 "src/parse/lex.cc"
+#line 2804 "src/parse/lex.cc"
}
-#line 560 "../src/parse/lex.re"
+#line 559 "../src/parse/lex.re"
add:
cls->push_back(ASTRange(l, u, c));
tok = cur;
const uint32_t l = get_line(), c = get_column();
-#line 2819 "src/parse/lex.cc"
+#line 2818 "src/parse/lex.cc"
{
YYCTYPE yych;
unsigned int yyaccept = 0;
}
yy476:
++YYCURSOR;
-#line 572 "../src/parse/lex.re"
+#line 571 "../src/parse/lex.re"
{ fail_if_eof(); return 0; }
-#line 2838 "src/parse/lex.cc"
+#line 2837 "src/parse/lex.cc"
yy478:
++YYCURSOR;
yy479:
-#line 578 "../src/parse/lex.re"
+#line 577 "../src/parse/lex.re"
{ return static_cast<uint8_t>(tok[0]); }
-#line 2844 "src/parse/lex.cc"
+#line 2843 "src/parse/lex.cc"
yy480:
++YYCURSOR;
-#line 573 "../src/parse/lex.re"
+#line 572 "../src/parse/lex.re"
{ fatal_lc(l, c, "newline in character class"); }
-#line 2849 "src/parse/lex.cc"
+#line 2848 "src/parse/lex.cc"
yy482:
yych = (YYCTYPE)*++YYCURSOR;
if (yych == '\n') goto yy480;
}
}
yy484:
-#line 576 "../src/parse/lex.re"
+#line 575 "../src/parse/lex.re"
{ fatal_lc(l, c, "syntax error in escape sequence"); }
-#line 2910 "src/parse/lex.cc"
+#line 2909 "src/parse/lex.cc"
yy485:
++YYCURSOR;
yy486:
-#line 591 "../src/parse/lex.re"
+#line 590 "../src/parse/lex.re"
{
warn.useless_escape(l, c, tok[1]);
return static_cast<uint8_t>(tok[1]);
}
-#line 2919 "src/parse/lex.cc"
+#line 2918 "src/parse/lex.cc"
yy487:
yych = (YYCTYPE)*++YYCURSOR;
if (yych == '\n') goto yy480;
goto yy486;
yy488:
++YYCURSOR;
-#line 589 "../src/parse/lex.re"
+#line 588 "../src/parse/lex.re"
{ return static_cast<uint8_t>('-'); }
-#line 2928 "src/parse/lex.cc"
+#line 2927 "src/parse/lex.cc"
yy490:
yyaccept = 0;
yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
if (yych <= '/') goto yy491;
if (yych <= '7') goto yy515;
yy491:
-#line 575 "../src/parse/lex.re"
+#line 574 "../src/parse/lex.re"
{ fatal_lc(l, c, "syntax error in octal escape sequence"); }
-#line 2937 "src/parse/lex.cc"
+#line 2936 "src/parse/lex.cc"
yy492:
++YYCURSOR;
goto yy491;
if (yych <= 'f') goto yy517;
}
yy494:
-#line 574 "../src/parse/lex.re"
+#line 573 "../src/parse/lex.re"
{ fatal_lc(l, c, "syntax error in hexadecimal escape sequence"); }
-#line 2955 "src/parse/lex.cc"
+#line 2954 "src/parse/lex.cc"
yy495:
yyaccept = 1;
yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
}
yy496:
++YYCURSOR;
-#line 588 "../src/parse/lex.re"
+#line 587 "../src/parse/lex.re"
{ return static_cast<uint8_t>('\\'); }
-#line 2973 "src/parse/lex.cc"
+#line 2972 "src/parse/lex.cc"
yy498:
++YYCURSOR;
-#line 590 "../src/parse/lex.re"
+#line 589 "../src/parse/lex.re"
{ return static_cast<uint8_t>(']'); }
-#line 2978 "src/parse/lex.cc"
+#line 2977 "src/parse/lex.cc"
yy500:
++YYCURSOR;
-#line 581 "../src/parse/lex.re"
+#line 580 "../src/parse/lex.re"
{ return static_cast<uint8_t>('\a'); }
-#line 2983 "src/parse/lex.cc"
+#line 2982 "src/parse/lex.cc"
yy502:
++YYCURSOR;
-#line 582 "../src/parse/lex.re"
+#line 581 "../src/parse/lex.re"
{ return static_cast<uint8_t>('\b'); }
-#line 2988 "src/parse/lex.cc"
+#line 2987 "src/parse/lex.cc"
yy504:
++YYCURSOR;
-#line 583 "../src/parse/lex.re"
+#line 582 "../src/parse/lex.re"
{ return static_cast<uint8_t>('\f'); }
-#line 2993 "src/parse/lex.cc"
+#line 2992 "src/parse/lex.cc"
yy506:
++YYCURSOR;
-#line 584 "../src/parse/lex.re"
+#line 583 "../src/parse/lex.re"
{ return static_cast<uint8_t>('\n'); }
-#line 2998 "src/parse/lex.cc"
+#line 2997 "src/parse/lex.cc"
yy508:
++YYCURSOR;
-#line 585 "../src/parse/lex.re"
+#line 584 "../src/parse/lex.re"
{ return static_cast<uint8_t>('\r'); }
-#line 3003 "src/parse/lex.cc"
+#line 3002 "src/parse/lex.cc"
yy510:
++YYCURSOR;
-#line 586 "../src/parse/lex.re"
+#line 585 "../src/parse/lex.re"
{ return static_cast<uint8_t>('\t'); }
-#line 3008 "src/parse/lex.cc"
+#line 3007 "src/parse/lex.cc"
yy512:
++YYCURSOR;
-#line 587 "../src/parse/lex.re"
+#line 586 "../src/parse/lex.re"
{ return static_cast<uint8_t>('\v'); }
-#line 3013 "src/parse/lex.cc"
+#line 3012 "src/parse/lex.cc"
yy514:
yyaccept = 1;
yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
}
yy520:
++YYCURSOR;
-#line 580 "../src/parse/lex.re"
+#line 579 "../src/parse/lex.re"
{ return unesc_oct(tok, cur); }
-#line 3078 "src/parse/lex.cc"
+#line 3077 "src/parse/lex.cc"
yy522:
yych = (YYCTYPE)*++YYCURSOR;
if (yych <= '@') {
}
yy524:
++YYCURSOR;
-#line 579 "../src/parse/lex.re"
+#line 578 "../src/parse/lex.re"
{ return unesc_hex(tok, cur); }
-#line 3107 "src/parse/lex.cc"
+#line 3106 "src/parse/lex.cc"
yy526:
yych = (YYCTYPE)*++YYCURSOR;
if (yych <= '@') {
goto yy516;
}
}
-#line 595 "../src/parse/lex.re"
+#line 594 "../src/parse/lex.re"
}
tok = cur;
const uint32_t l = get_line(), c = get_column();
-#line 3141 "src/parse/lex.cc"
+#line 3140 "src/parse/lex.cc"
{
YYCTYPE yych;
unsigned int yyaccept = 0;
}
yy530:
++YYCURSOR;
-#line 605 "../src/parse/lex.re"
+#line 604 "../src/parse/lex.re"
{ fail_if_eof(); return 0; }
-#line 3160 "src/parse/lex.cc"
+#line 3159 "src/parse/lex.cc"
yy532:
++YYCURSOR;
yy533:
-#line 611 "../src/parse/lex.re"
+#line 610 "../src/parse/lex.re"
{
end = tok[0] == quote;
return static_cast<uint8_t>(tok[0]);
}
-#line 3169 "src/parse/lex.cc"
+#line 3168 "src/parse/lex.cc"
yy534:
++YYCURSOR;
-#line 606 "../src/parse/lex.re"
+#line 605 "../src/parse/lex.re"
{ fatal_lc(l, c, "newline in character string"); }
-#line 3174 "src/parse/lex.cc"
+#line 3173 "src/parse/lex.cc"
yy536:
yych = (YYCTYPE)*++YYCURSOR;
if (yych == '\n') goto yy534;
}
}
yy538:
-#line 609 "../src/parse/lex.re"
+#line 608 "../src/parse/lex.re"
{ fatal_lc(l, c, "syntax error in escape sequence"); }
-#line 3230 "src/parse/lex.cc"
+#line 3229 "src/parse/lex.cc"
yy539:
++YYCURSOR;
yy540:
-#line 625 "../src/parse/lex.re"
+#line 624 "../src/parse/lex.re"
{
if (tok[1] != quote) {
warn.useless_escape(l, c, tok[1]);
}
return static_cast<uint8_t>(tok[1]);
}
-#line 3241 "src/parse/lex.cc"
+#line 3240 "src/parse/lex.cc"
yy541:
yych = (YYCTYPE)*++YYCURSOR;
if (yych == '\n') goto yy534;
if (yych <= '/') goto yy543;
if (yych <= '7') goto yy565;
yy543:
-#line 608 "../src/parse/lex.re"
+#line 607 "../src/parse/lex.re"
{ fatal_lc(l, c, "syntax error in octal escape sequence"); }
-#line 3254 "src/parse/lex.cc"
+#line 3253 "src/parse/lex.cc"
yy544:
++YYCURSOR;
goto yy543;
if (yych <= 'f') goto yy567;
}
yy546:
-#line 607 "../src/parse/lex.re"
+#line 606 "../src/parse/lex.re"
{ fatal_lc(l, c, "syntax error in hexadecimal escape sequence"); }
-#line 3272 "src/parse/lex.cc"
+#line 3271 "src/parse/lex.cc"
yy547:
yyaccept = 1;
yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
}
yy548:
++YYCURSOR;
-#line 624 "../src/parse/lex.re"
+#line 623 "../src/parse/lex.re"
{ return static_cast<uint8_t>('\\'); }
-#line 3290 "src/parse/lex.cc"
+#line 3289 "src/parse/lex.cc"
yy550:
++YYCURSOR;
-#line 617 "../src/parse/lex.re"
+#line 616 "../src/parse/lex.re"
{ return static_cast<uint8_t>('\a'); }
-#line 3295 "src/parse/lex.cc"
+#line 3294 "src/parse/lex.cc"
yy552:
++YYCURSOR;
-#line 618 "../src/parse/lex.re"
+#line 617 "../src/parse/lex.re"
{ return static_cast<uint8_t>('\b'); }
-#line 3300 "src/parse/lex.cc"
+#line 3299 "src/parse/lex.cc"
yy554:
++YYCURSOR;
-#line 619 "../src/parse/lex.re"
+#line 618 "../src/parse/lex.re"
{ return static_cast<uint8_t>('\f'); }
-#line 3305 "src/parse/lex.cc"
+#line 3304 "src/parse/lex.cc"
yy556:
++YYCURSOR;
-#line 620 "../src/parse/lex.re"
+#line 619 "../src/parse/lex.re"
{ return static_cast<uint8_t>('\n'); }
-#line 3310 "src/parse/lex.cc"
+#line 3309 "src/parse/lex.cc"
yy558:
++YYCURSOR;
-#line 621 "../src/parse/lex.re"
+#line 620 "../src/parse/lex.re"
{ return static_cast<uint8_t>('\r'); }
-#line 3315 "src/parse/lex.cc"
+#line 3314 "src/parse/lex.cc"
yy560:
++YYCURSOR;
-#line 622 "../src/parse/lex.re"
+#line 621 "../src/parse/lex.re"
{ return static_cast<uint8_t>('\t'); }
-#line 3320 "src/parse/lex.cc"
+#line 3319 "src/parse/lex.cc"
yy562:
++YYCURSOR;
-#line 623 "../src/parse/lex.re"
+#line 622 "../src/parse/lex.re"
{ return static_cast<uint8_t>('\v'); }
-#line 3325 "src/parse/lex.cc"
+#line 3324 "src/parse/lex.cc"
yy564:
yyaccept = 1;
yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
}
yy570:
++YYCURSOR;
-#line 616 "../src/parse/lex.re"
+#line 615 "../src/parse/lex.re"
{ return unesc_oct(tok, cur); }
-#line 3390 "src/parse/lex.cc"
+#line 3389 "src/parse/lex.cc"
yy572:
yych = (YYCTYPE)*++YYCURSOR;
if (yych <= '@') {
}
yy574:
++YYCURSOR;
-#line 615 "../src/parse/lex.re"
+#line 614 "../src/parse/lex.re"
{ return unesc_hex(tok, cur); }
-#line 3419 "src/parse/lex.cc"
+#line 3418 "src/parse/lex.cc"
yy576:
yych = (YYCTYPE)*++YYCURSOR;
if (yych <= '@') {
goto yy566;
}
}
-#line 631 "../src/parse/lex.re"
+#line 630 "../src/parse/lex.re"
}
sourceline:
tok = cur;
-#line 3463 "src/parse/lex.cc"
+#line 3462 "src/parse/lex.cc"
{
YYCTYPE yych;
static const unsigned char yybm[] = {
}
}
++YYCURSOR;
-#line 667 "../src/parse/lex.re"
+#line 666 "../src/parse/lex.re"
{ --cur; return; }
-#line 3523 "src/parse/lex.cc"
+#line 3522 "src/parse/lex.cc"
yy582:
++YYCURSOR;
yy583:
-#line 668 "../src/parse/lex.re"
+#line 667 "../src/parse/lex.re"
{ goto sourceline; }
-#line 3529 "src/parse/lex.cc"
+#line 3528 "src/parse/lex.cc"
yy584:
++YYCURSOR;
-#line 666 "../src/parse/lex.re"
+#line 665 "../src/parse/lex.re"
{ tok = cur; return; }
-#line 3534 "src/parse/lex.cc"
+#line 3533 "src/parse/lex.cc"
yy586:
yych = (YYCTYPE)*++YYCURSOR;
if (yych == '\n') goto yy584;
if (yybm[0+yych] & 64) {
goto yy588;
}
-#line 650 "../src/parse/lex.re"
+#line 649 "../src/parse/lex.re"
{
uint32_t l;
if (!s_to_u32_unsafe (tok, cur, l)) {
set_line(l);
goto sourceline;
}
-#line 3560 "src/parse/lex.cc"
+#line 3559 "src/parse/lex.cc"
yy591:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
goto yy583;
yy594:
++YYCURSOR;
-#line 659 "../src/parse/lex.re"
+#line 658 "../src/parse/lex.re"
{
std::string &name = get_input().escaped_name;
name = getstr(tok + 1, cur - 1);
strrreplace(name, "\\", "\\\\");
goto sourceline;
}
-#line 3584 "src/parse/lex.cc"
+#line 3583 "src/parse/lex.cc"
yy596:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
if (yych == '\n') goto yy593;
goto yy591;
}
-#line 669 "../src/parse/lex.re"
+#line 668 "../src/parse/lex.re"
}