-/* Generated by re2c 1.1.1 on Wed Nov 21 00:09:57 2018 */
+/* Generated by re2c 1.1.1 on Wed Nov 21 08:27:30 2018 */
#line 1 "../src/ast/lex.re"
#include "src/util/c99_stdint.h"
#include <stddef.h>
yy201:
++YYCURSOR;
yy202:
-#line 354 "../src/ast/lex.re"
+#line 357 "../src/ast/lex.re"
{
fatal_lc(get_cline(), get_column(), "unexpected character: '%c'", *tok);
goto scan;
if (yybm[0+yych] & 16) {
goto yy203;
}
-#line 335 "../src/ast/lex.re"
+#line 338 "../src/ast/lex.re"
{ goto scan; }
#line 1154 "src/ast/lex.cc"
yy206:
if (yych == '#') goto yy236;
}
yy207:
-#line 342 "../src/ast/lex.re"
+#line 345 "../src/ast/lex.re"
{
pos = cur;
cline++;
goto yy202;
yy209:
++YYCURSOR;
-#line 253 "../src/ast/lex.re"
+#line 256 "../src/ast/lex.re"
{ yylval.regexp = lex_str('"'); return TOKEN_REGEXP; }
#line 1186 "src/ast/lex.cc"
yy211:
goto yy202;
yy213:
++YYCURSOR;
-#line 252 "../src/ast/lex.re"
+#line 255 "../src/ast/lex.re"
{ yylval.regexp = lex_str('\''); return TOKEN_REGEXP; }
#line 1206 "src/ast/lex.cc"
yy215:
++YYCURSOR;
yy216:
-#line 263 "../src/ast/lex.re"
+#line 266 "../src/ast/lex.re"
{ return *tok; }
#line 1212 "src/ast/lex.cc"
yy217:
goto yy216;
yy218:
++YYCURSOR;
-#line 330 "../src/ast/lex.re"
+#line 333 "../src/ast/lex.re"
{
yylval.regexp = ast_dot(cline, get_column());
return TOKEN_REGEXP;
goto yy202;
yy222:
++YYCURSOR;
-#line 245 "../src/ast/lex.re"
+#line 248 "../src/ast/lex.re"
{ return lex_clist(); }
#line 1238 "src/ast/lex.cc"
yy224:
- yych = (YYCTYPE)*++YYCURSOR;
+ yyaccept = 1;
+ yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
if (yych == '>') goto yy249;
goto yy216;
yy225:
if (yybm[0+yych] & 32) {
goto yy225;
}
-#line 307 "../src/ast/lex.re"
+#line 310 "../src/ast/lex.re"
{
if (!globopts->FFlag || lex_namedef_context_re2c()) {
yylval.str = new std::string (tok, tok_len());
return TOKEN_REGEXP;
}
}
-#line 1274 "src/ast/lex.cc"
+#line 1275 "src/ast/lex.cc"
yy228:
yych = (YYCTYPE)*++YYCURSOR;
if (yych == '^') goto yy251;
-#line 254 "../src/ast/lex.re"
+#line 257 "../src/ast/lex.re"
{ yylval.regexp = lex_cls(false); return TOKEN_REGEXP; }
-#line 1280 "src/ast/lex.cc"
+#line 1281 "src/ast/lex.cc"
yy230:
yych = (YYCTYPE)*++YYCURSOR;
if (yych == 'e') goto yy253;
goto yy226;
yy231:
- yyaccept = 1;
+ yyaccept = 2;
yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
if (yybm[0+yych] & 64) {
goto yy256;
yy232:
#line 240 "../src/ast/lex.re"
{ lex_code_in_braces(); return TOKEN_CODE; }
-#line 1305 "src/ast/lex.cc"
+#line 1306 "src/ast/lex.cc"
yy233:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
}
yy235:
YYCURSOR = YYMARKER;
- if (yyaccept <= 1) {
- if (yyaccept == 0) {
- goto yy207;
+ if (yyaccept <= 2) {
+ if (yyaccept <= 1) {
+ if (yyaccept == 0) {
+ goto yy207;
+ } else {
+ goto yy216;
+ }
} else {
goto yy232;
}
} else {
- goto yy255;
+ if (yyaccept == 3) {
+ goto yy248;
+ } else {
+ goto yy255;
+ }
}
yy236:
++YYCURSOR;
}
}
yy240:
-#line 257 "../src/ast/lex.re"
+#line 260 "../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] == '#');
return TOKEN_REGEXP;
}
-#line 1362 "src/ast/lex.cc"
+#line 1371 "src/ast/lex.cc"
yy241:
++YYCURSOR;
-#line 250 "../src/ast/lex.re"
+#line 253 "../src/ast/lex.re"
{ tok = cur; return 0; }
-#line 1367 "src/ast/lex.cc"
+#line 1376 "src/ast/lex.cc"
yy243:
++YYCURSOR;
-#line 248 "../src/ast/lex.re"
+#line 251 "../src/ast/lex.re"
{ lex_c_comment(); goto scan; }
-#line 1372 "src/ast/lex.cc"
+#line 1381 "src/ast/lex.cc"
yy245:
++YYCURSOR;
-#line 247 "../src/ast/lex.re"
+#line 250 "../src/ast/lex.re"
{ lex_cpp_comment(); goto scan; }
-#line 1377 "src/ast/lex.cc"
+#line 1386 "src/ast/lex.cc"
yy247:
- yych = (YYCTYPE)*++YYCURSOR;
- if (yych == '>') goto yy261;
+ yyaccept = 3;
+ yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
+ if (yych == '>') goto yy249;
+yy248:
#line 241 "../src/ast/lex.re"
{ lex_code_indented(); return TOKEN_CODE; }
-#line 1383 "src/ast/lex.cc"
+#line 1394 "src/ast/lex.cc"
yy249:
++YYCURSOR;
-#line 243 "../src/ast/lex.re"
- { lex_cgoto(); return TOKEN_CNEXT; }
-#line 1388 "src/ast/lex.cc"
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ yych = (YYCTYPE)*YYCURSOR;
+ if (yych <= '@') {
+ if (yych <= '\t') {
+ if (yych <= 0x08) goto yy235;
+ goto yy249;
+ } else {
+ if (yych == ' ') goto yy249;
+ goto yy235;
+ }
+ } else {
+ if (yych <= '_') {
+ if (yych <= 'Z') {
+ yyt1 = YYCURSOR;
+ goto yy261;
+ }
+ if (yych <= '^') goto yy235;
+ yyt1 = YYCURSOR;
+ goto yy261;
+ } else {
+ if (yych <= '`') goto yy235;
+ if (yych <= 'z') {
+ yyt1 = YYCURSOR;
+ goto yy261;
+ }
+ goto yy235;
+ }
+ }
yy251:
++YYCURSOR;
-#line 255 "../src/ast/lex.re"
+#line 258 "../src/ast/lex.re"
{ yylval.regexp = lex_cls(true); return TOKEN_REGEXP; }
-#line 1393 "src/ast/lex.cc"
+#line 1429 "src/ast/lex.cc"
yy253:
yych = (YYCTYPE)*++YYCURSOR;
- if (yych == '2') goto yy263;
+ if (yych == '2') goto yy264;
goto yy226;
yy254:
++YYCURSOR;
yy255:
-#line 291 "../src/ast/lex.re"
+#line 294 "../src/ast/lex.re"
{
fatal_lc(get_cline(), get_column(),
"illegal closure form, use '{n}', '{n,}', '{n,m}' where n and m are numbers");
}
-#line 1406 "src/ast/lex.cc"
+#line 1442 "src/ast/lex.cc"
yy256:
++YYCURSOR;
if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
}
if (yych == ',') {
yyt1 = YYCURSOR;
- goto yy264;
+ goto yy265;
}
- if (yych == '}') goto yy265;
+ if (yych == '}') goto yy266;
goto yy235;
yy258:
++YYCURSOR;
if (yych == '`') goto yy235;
goto yy258;
} else {
- if (yych == '}') goto yy267;
+ if (yych == '}') goto yy268;
goto yy235;
}
}
yy260:
yych = (YYCTYPE)*++YYCURSOR;
- if (yych == 'i') goto yy269;
+ if (yych == 'i') goto yy270;
goto yy235;
yy261:
++YYCURSOR;
-#line 244 "../src/ast/lex.re"
- { lex_cgoto(); return TOKEN_CJUMP; }
-#line 1450 "src/ast/lex.cc"
+ if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ yych = (YYCTYPE)*YYCURSOR;
+ if (yych <= 'Z') {
+ if (yych <= '/') goto yy263;
+ if (yych <= '9') goto yy261;
+ if (yych >= 'A') goto yy261;
+ } else {
+ if (yych <= '_') {
+ if (yych >= '_') goto yy261;
+ } else {
+ if (yych <= '`') goto yy263;
+ if (yych <= 'z') goto yy261;
+ }
+ }
yy263:
+ p = yyt1;
+#line 243 "../src/ast/lex.re"
+ {
+ yylval.str = new std::string(p, static_cast<size_t>(cur - p));
+ return tok[0] == ':' ? TOKEN_CJUMP : TOKEN_CNEXT;
+ }
+#line 1505 "src/ast/lex.cc"
+yy264:
yych = (YYCTYPE)*++YYCURSOR;
- if (yych == 'c') goto yy270;
+ if (yych == 'c') goto yy271;
goto yy226;
-yy264:
- yyaccept = 2;
+yy265:
+ yyaccept = 4;
yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
if (yych <= '/') goto yy255;
- if (yych <= '9') goto yy271;
- if (yych == '}') goto yy273;
+ if (yych <= '9') goto yy272;
+ if (yych == '}') goto yy274;
goto yy255;
-yy265:
+yy266:
++YYCURSOR;
-#line 265 "../src/ast/lex.re"
+#line 268 "../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");
yylval.bounds.max = yylval.bounds.min;
return TOKEN_CLOSESIZE;
}
-#line 1472 "src/ast/lex.cc"
-yy267:
+#line 1527 "src/ast/lex.cc"
+yy268:
++YYCURSOR;
-#line 296 "../src/ast/lex.re"
+#line 299 "../src/ast/lex.re"
{
if (!globopts->FFlag) {
fatal_lc(get_cline(), get_column(),
yylval.str = new std::string (tok + 1, tok_len () - 2); // -2 to omit braces
return TOKEN_ID;
}
-#line 1484 "src/ast/lex.cc"
-yy269:
+#line 1539 "src/ast/lex.cc"
+yy270:
yych = (YYCTYPE)*++YYCURSOR;
- if (yych == 'n') goto yy275;
+ if (yych == 'n') goto yy276;
goto yy235;
-yy270:
+yy271:
yych = (YYCTYPE)*++YYCURSOR;
- if (yych == ':') goto yy276;
+ if (yych == ':') goto yy277;
goto yy226;
-yy271:
+yy272:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = (YYCTYPE)*YYCURSOR;
if (yych <= '/') goto yy235;
- if (yych <= '9') goto yy271;
- if (yych == '}') goto yy278;
+ if (yych <= '9') goto yy272;
+ if (yych == '}') goto yy279;
goto yy235;
-yy273:
+yy274:
++YYCURSOR;
-#line 283 "../src/ast/lex.re"
+#line 286 "../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");
yylval.bounds.max = std::numeric_limits<uint32_t>::max();
return TOKEN_CLOSESIZE;
}
-#line 1511 "src/ast/lex.cc"
-yy275:
+#line 1566 "src/ast/lex.cc"
+yy276:
yych = (YYCTYPE)*++YYCURSOR;
- if (yych == 'e') goto yy280;
+ if (yych == 'e') goto yy281;
goto yy235;
-yy276:
+yy277:
++YYCURSOR;
-#line 305 "../src/ast/lex.re"
+#line 308 "../src/ast/lex.re"
{ return TOKEN_CONF; }
-#line 1520 "src/ast/lex.cc"
-yy278:
+#line 1575 "src/ast/lex.cc"
+yy279:
++YYCURSOR;
p = yyt1;
-#line 273 "../src/ast/lex.re"
+#line 276 "../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");
}
return TOKEN_CLOSESIZE;
}
-#line 1534 "src/ast/lex.cc"
-yy280:
+#line 1589 "src/ast/lex.cc"
+yy281:
yych = (YYCTYPE)*++YYCURSOR;
- if (yych <= '0') goto yy282;
+ if (yych <= '0') goto yy283;
if (yych <= '9') goto yy235;
- goto yy282;
-yy281:
+ goto yy283;
+yy282:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = (YYCTYPE)*YYCURSOR;
-yy282:
+yy283:
if (yych <= 0x1F) {
- if (yych == '\t') goto yy281;
+ if (yych == '\t') goto yy282;
goto yy235;
} else {
- if (yych <= ' ') goto yy281;
+ if (yych <= ' ') goto yy282;
if (yych <= '0') goto yy235;
if (yych >= ':') goto yy235;
yyt1 = YYCURSOR;
}
-yy283:
+yy284:
++YYCURSOR;
if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = (YYCTYPE)*YYCURSOR;
if (yych <= '\t') {
if (yych <= 0x08) goto yy235;
} else {
- if (yych <= '\n') goto yy287;
+ if (yych <= '\n') goto yy288;
if (yych <= '\f') goto yy235;
- goto yy289;
+ goto yy290;
}
} else {
if (yych <= ' ') {
if (yych <= 0x1F) goto yy235;
} else {
if (yych <= '/') goto yy235;
- if (yych <= '9') goto yy283;
+ if (yych <= '9') goto yy284;
goto yy235;
}
}
-yy285:
+yy286:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = (YYCTYPE)*YYCURSOR;
if (yych <= 0x1F) {
- if (yych == '\t') goto yy285;
+ if (yych == '\t') goto yy286;
goto yy235;
} else {
- if (yych <= ' ') goto yy285;
- if (yych == '"') goto yy290;
+ if (yych <= ' ') goto yy286;
+ if (yych == '"') goto yy291;
goto yy235;
}
-yy287:
+yy288:
++YYCURSOR;
YYCURSOR = yyt1;
-#line 337 "../src/ast/lex.re"
+#line 340 "../src/ast/lex.re"
{
set_sourceline ();
return TOKEN_LINE_INFO;
}
-#line 1595 "src/ast/lex.cc"
-yy289:
+#line 1650 "src/ast/lex.cc"
+yy290:
yych = (YYCTYPE)*++YYCURSOR;
- if (yych == '\n') goto yy287;
+ if (yych == '\n') goto yy288;
goto yy235;
-yy290:
+yy291:
++YYCURSOR;
if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
yych = (YYCTYPE)*YYCURSOR;
if (yybm[0+yych] & 128) {
- goto yy290;
+ goto yy291;
}
if (yych <= '\n') goto yy235;
- if (yych >= '#') goto yy293;
+ if (yych >= '#') goto yy294;
yych = (YYCTYPE)*++YYCURSOR;
- if (yych == '\n') goto yy287;
- if (yych == '\r') goto yy289;
+ if (yych == '\n') goto yy288;
+ if (yych == '\r') goto yy290;
goto yy235;
-yy293:
+yy294:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = (YYCTYPE)*YYCURSOR;
if (yych <= 0x00) goto yy235;
if (yych == '\n') goto yy235;
- goto yy290;
+ goto yy291;
}
-#line 358 "../src/ast/lex.re"
+#line 361 "../src/ast/lex.re"
}
bool Scanner::lex_namedef_context_re2c()
{
-#line 1628 "src/ast/lex.cc"
+#line 1683 "src/ast/lex.cc"
{
YYCTYPE yych;
static const unsigned char yybm[] = {
if (yych <= 0x1F) {
if (yych == '\t') {
yyt1 = YYCURSOR;
- goto yy297;
+ goto yy298;
}
} else {
if (yych <= ' ') {
yyt1 = YYCURSOR;
- goto yy297;
+ goto yy298;
}
if (yych == '=') {
yyt1 = YYCURSOR;
- goto yy300;
+ goto yy301;
}
}
-yy296:
-#line 365 "../src/ast/lex.re"
- { return false; }
-#line 1685 "src/ast/lex.cc"
yy297:
+#line 368 "../src/ast/lex.re"
+ { return false; }
+#line 1740 "src/ast/lex.cc"
+yy298:
++YYCURSOR;
if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = (YYCTYPE)*YYCURSOR;
if (yybm[0+yych] & 128) {
- goto yy297;
+ goto yy298;
}
- if (yych == '=') goto yy300;
-yy299:
- YYCURSOR = YYMARKER;
- goto yy296;
+ if (yych == '=') goto yy301;
yy300:
+ YYCURSOR = YYMARKER;
+ goto yy297;
+yy301:
yych = (YYCTYPE)*++YYCURSOR;
- if (yych == '>') goto yy299;
+ if (yych == '>') goto yy300;
++YYCURSOR;
YYCURSOR = yyt1;
-#line 364 "../src/ast/lex.re"
+#line 367 "../src/ast/lex.re"
{ return true; }
-#line 1704 "src/ast/lex.cc"
+#line 1759 "src/ast/lex.cc"
}
-#line 366 "../src/ast/lex.re"
+#line 369 "../src/ast/lex.re"
}
bool Scanner::lex_namedef_context_flex()
{
-#line 1713 "src/ast/lex.cc"
+#line 1768 "src/ast/lex.cc"
{
YYCTYPE yych;
static const unsigned char yybm[] = {
yych = (YYCTYPE)*YYCURSOR;
if (yych == '\t') {
yyt1 = YYCURSOR;
- goto yy306;
+ goto yy307;
}
if (yych == ' ') {
yyt1 = YYCURSOR;
- goto yy306;
+ goto yy307;
}
-#line 374 "../src/ast/lex.re"
+#line 377 "../src/ast/lex.re"
{ return false; }
-#line 1762 "src/ast/lex.cc"
-yy306:
+#line 1817 "src/ast/lex.cc"
+yy307:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = (YYCTYPE)*YYCURSOR;
if (yybm[0+yych] & 128) {
- goto yy306;
+ goto yy307;
}
if (yych <= '<') {
- if (yych == ':') goto yy309;
+ if (yych == ':') goto yy310;
} else {
- if (yych <= '=') goto yy309;
- if (yych == '{') goto yy309;
+ if (yych <= '=') goto yy310;
+ if (yych == '{') goto yy310;
}
YYCURSOR = yyt1;
-#line 373 "../src/ast/lex.re"
+#line 376 "../src/ast/lex.re"
{ return true; }
-#line 1779 "src/ast/lex.cc"
-yy309:
+#line 1834 "src/ast/lex.cc"
+yy310:
++YYCURSOR;
YYCURSOR = yyt1;
-#line 372 "../src/ast/lex.re"
+#line 375 "../src/ast/lex.re"
{ return false; }
-#line 1785 "src/ast/lex.cc"
+#line 1840 "src/ast/lex.cc"
}
-#line 375 "../src/ast/lex.re"
+#line 378 "../src/ast/lex.re"
}
int kind = TOKEN_CLIST;
CondList *cl = new CondList;
-#line 1796 "src/ast/lex.cc"
+#line 1851 "src/ast/lex.cc"
{
YYCTYPE yych;
static const unsigned char yybm[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
};
- goto yy311;
-yy312:
+ goto yy312;
+yy313:
++YYCURSOR;
-yy311:
+yy312:
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = (YYCTYPE)*YYCURSOR;
if (yybm[0+yych] & 128) {
- goto yy312;
+ goto yy313;
}
- if (yych <= 0x1F) goto yy314;
- if (yych <= '!') goto yy315;
- if (yych == '>') goto yy318;
-yy314:
-#line 385 "../src/ast/lex.re"
- { goto cond; }
-#line 1848 "src/ast/lex.cc"
+ if (yych <= 0x1F) goto yy315;
+ if (yych <= '!') goto yy316;
+ if (yych == '>') goto yy319;
yy315:
+#line 388 "../src/ast/lex.re"
+ { goto cond; }
+#line 1903 "src/ast/lex.cc"
+yy316:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = (YYCTYPE)*YYCURSOR;
- if (yych == '\t') goto yy315;
- if (yych == ' ') goto yy315;
-#line 383 "../src/ast/lex.re"
+ if (yych == '\t') goto yy316;
+ if (yych == ' ') goto yy316;
+#line 386 "../src/ast/lex.re"
{ kind = TOKEN_CSETUP; goto cond; }
-#line 1857 "src/ast/lex.cc"
-yy318:
+#line 1912 "src/ast/lex.cc"
+yy319:
++YYCURSOR;
-#line 384 "../src/ast/lex.re"
+#line 387 "../src/ast/lex.re"
{ kind = TOKEN_CZERO; goto end; }
-#line 1862 "src/ast/lex.cc"
+#line 1917 "src/ast/lex.cc"
}
-#line 386 "../src/ast/lex.re"
+#line 389 "../src/ast/lex.re"
cond:
tok = cur;
-#line 1869 "src/ast/lex.cc"
+#line 1924 "src/ast/lex.cc"
{
YYCTYPE yych;
static const unsigned char yybm[] = {
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = (YYCTYPE)*YYCURSOR;
if (yych <= 'Z') {
- if (yych == '*') goto yy324;
- if (yych >= 'A') goto yy326;
+ if (yych == '*') goto yy325;
+ if (yych >= 'A') goto yy327;
} else {
if (yych <= '_') {
- if (yych >= '_') goto yy326;
+ if (yych >= '_') goto yy327;
} else {
- if (yych <= '`') goto yy322;
- if (yych <= 'z') goto yy326;
+ if (yych <= '`') goto yy323;
+ if (yych <= 'z') goto yy327;
}
}
-yy322:
+yy323:
++YYCURSOR;
-#line 392 "../src/ast/lex.re"
+#line 395 "../src/ast/lex.re"
{ goto error; }
-#line 1923 "src/ast/lex.cc"
-yy324:
+#line 1978 "src/ast/lex.cc"
+yy325:
++YYCURSOR;
-#line 391 "../src/ast/lex.re"
+#line 394 "../src/ast/lex.re"
{ if (!cl->empty()) goto error; cl->insert("*"); goto next; }
-#line 1928 "src/ast/lex.cc"
-yy326:
+#line 1983 "src/ast/lex.cc"
+yy327:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = (YYCTYPE)*YYCURSOR;
if (yybm[0+yych] & 128) {
- goto yy326;
+ goto yy327;
}
-#line 390 "../src/ast/lex.re"
+#line 393 "../src/ast/lex.re"
{ cl->insert(std::string(tok, tok_len())); goto next; }
-#line 1938 "src/ast/lex.cc"
+#line 1993 "src/ast/lex.cc"
}
-#line 393 "../src/ast/lex.re"
+#line 396 "../src/ast/lex.re"
next:
-#line 1944 "src/ast/lex.cc"
+#line 1999 "src/ast/lex.cc"
{
YYCTYPE yych;
static const unsigned char yybm[] = {
if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = (YYCTYPE)*YYCURSOR;
if (yych <= ' ') {
- if (yych == '\t') goto yy333;
- if (yych >= ' ') goto yy333;
+ if (yych == '\t') goto yy334;
+ if (yych >= ' ') goto yy334;
} else {
if (yych <= ',') {
- if (yych >= ',') goto yy334;
+ if (yych >= ',') goto yy335;
} else {
- if (yych == '>') goto yy337;
+ if (yych == '>') goto yy338;
}
}
++YYCURSOR;
-yy332:
-#line 398 "../src/ast/lex.re"
- { goto error; }
-#line 1997 "src/ast/lex.cc"
yy333:
+#line 401 "../src/ast/lex.re"
+ { goto error; }
+#line 2052 "src/ast/lex.cc"
+yy334:
yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
if (yych <= ' ') {
- if (yych == '\t') goto yy339;
- if (yych <= 0x1F) goto yy332;
- goto yy339;
+ if (yych == '\t') goto yy340;
+ if (yych <= 0x1F) goto yy333;
+ goto yy340;
} else {
if (yych <= ',') {
- if (yych <= '+') goto yy332;
+ if (yych <= '+') goto yy333;
} else {
- if (yych == '>') goto yy337;
- goto yy332;
+ if (yych == '>') goto yy338;
+ goto yy333;
}
}
-yy334:
+yy335:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = (YYCTYPE)*YYCURSOR;
if (yybm[0+yych] & 128) {
- goto yy334;
+ goto yy335;
}
-#line 396 "../src/ast/lex.re"
+#line 399 "../src/ast/lex.re"
{ goto cond; }
-#line 2021 "src/ast/lex.cc"
-yy337:
+#line 2076 "src/ast/lex.cc"
+yy338:
++YYCURSOR;
-#line 397 "../src/ast/lex.re"
+#line 400 "../src/ast/lex.re"
{ goto end; }
-#line 2026 "src/ast/lex.cc"
-yy339:
+#line 2081 "src/ast/lex.cc"
+yy340:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = (YYCTYPE)*YYCURSOR;
if (yych <= ' ') {
- if (yych == '\t') goto yy339;
- if (yych >= ' ') goto yy339;
+ if (yych == '\t') goto yy340;
+ if (yych >= ' ') goto yy340;
} else {
if (yych <= ',') {
- if (yych >= ',') goto yy334;
+ if (yych >= ',') goto yy335;
} else {
- if (yych == '>') goto yy337;
+ if (yych == '>') goto yy338;
}
}
YYCURSOR = YYMARKER;
- goto yy332;
+ goto yy333;
}
-#line 399 "../src/ast/lex.re"
+#line 402 "../src/ast/lex.re"
end:
yylval.clist = cl;
fatal_l(get_cline(), "syntax error in condition list");
}
-void Scanner::lex_cgoto()
-{
-
-#line 2057 "src/ast/lex.cc"
-{
- YYCTYPE 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,
- };
- goto yy342;
-yy343:
- ++YYCURSOR;
-yy342:
- if (YYLIMIT <= YYCURSOR) YYFILL(1);
- yych = (YYCTYPE)*YYCURSOR;
- if (yybm[0+yych] & 128) {
- goto yy343;
- }
-#line 411 "../src/ast/lex.re"
- { goto name; }
-#line 2105 "src/ast/lex.cc"
-}
-#line 412 "../src/ast/lex.re"
-
-name:
- tok = cur;
-
-#line 2112 "src/ast/lex.cc"
-{
- YYCTYPE yych;
- static const unsigned char yybm[] = {
- 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,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 0, 0, 0, 0, 0, 0,
- 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, 0, 0, 0, 0, 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, 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 (YYLIMIT <= YYCURSOR) YYFILL(1);
- yych = (YYCTYPE)*YYCURSOR;
- if (yych <= '^') {
- if (yych <= '@') goto yy348;
- if (yych <= 'Z') goto yy350;
- } else {
- if (yych == '`') goto yy348;
- if (yych <= 'z') goto yy350;
- }
-yy348:
- ++YYCURSOR;
-#line 417 "../src/ast/lex.re"
- { fatal_l(get_cline(), "syntax error in condition goto"); }
-#line 2162 "src/ast/lex.cc"
-yy350:
- ++YYCURSOR;
- if (YYLIMIT <= YYCURSOR) YYFILL(1);
- yych = (YYCTYPE)*YYCURSOR;
- if (yybm[0+yych] & 128) {
- goto yy350;
- }
-#line 416 "../src/ast/lex.re"
- { yylval.str = new std::string (tok, tok_len ()); return; }
-#line 2172 "src/ast/lex.cc"
-}
-#line 418 "../src/ast/lex.re"
-
-}
-
void Scanner::lex_code_indented()
{
const uint32_t line = cline;
tok = cur;
code:
-#line 2184 "src/ast/lex.cc"
+#line 2115 "src/ast/lex.cc"
{
YYCTYPE yych;
if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
yych = (YYCTYPE)*YYCURSOR;
if (yych <= '&') {
if (yych <= '\f') {
- if (yych <= 0x00) goto yy355;
- if (yych == '\n') goto yy359;
- goto yy357;
+ if (yych <= 0x00) goto yy345;
+ if (yych == '\n') goto yy349;
+ goto yy347;
} else {
- if (yych <= '\r') goto yy361;
- if (yych == '"') goto yy362;
- goto yy357;
+ if (yych <= '\r') goto yy351;
+ if (yych == '"') goto yy352;
+ goto yy347;
}
} else {
if (yych <= 'z') {
- if (yych <= '\'') goto yy362;
- if (yych == '/') goto yy364;
- goto yy357;
+ if (yych <= '\'') goto yy352;
+ if (yych == '/') goto yy354;
+ goto yy347;
} else {
- if (yych == '|') goto yy357;
- if (yych <= '}') goto yy365;
- goto yy357;
+ if (yych == '|') goto yy347;
+ if (yych <= '}') goto yy355;
+ goto yy347;
}
}
-yy355:
+yy345:
++YYCURSOR;
-#line 435 "../src/ast/lex.re"
+#line 425 "../src/ast/lex.re"
{ fail_if_eof(); goto code; }
-#line 2214 "src/ast/lex.cc"
-yy357:
+#line 2145 "src/ast/lex.cc"
+yy347:
++YYCURSOR;
-yy358:
-#line 440 "../src/ast/lex.re"
+yy348:
+#line 430 "../src/ast/lex.re"
{ goto code; }
-#line 2220 "src/ast/lex.cc"
-yy359:
+#line 2151 "src/ast/lex.cc"
+yy349:
yych = (YYCTYPE)*++YYCURSOR;
if (yych <= '\f') {
- if (yych <= 0x08) goto yy360;
- if (yych <= '\n') goto yy367;
+ if (yych <= 0x08) goto yy350;
+ if (yych <= '\n') goto yy357;
} else {
- if (yych <= '\r') goto yy367;
- if (yych == ' ') goto yy367;
+ if (yych <= '\r') goto yy357;
+ if (yych == ' ') goto yy357;
}
-yy360:
-#line 428 "../src/ast/lex.re"
+yy350:
+#line 418 "../src/ast/lex.re"
{
while (isspace(tok[0])) ++tok;
while (cur > tok && isspace(cur[-1])) --cur;
yylval.code = new Code(get_fname (), line, tok, tok_len ());
return;
}
-#line 2238 "src/ast/lex.cc"
-yy361:
+#line 2169 "src/ast/lex.cc"
+yy351:
yych = (YYCTYPE)*++YYCURSOR;
- if (yych == '\n') goto yy359;
- goto yy358;
-yy362:
+ if (yych == '\n') goto yy349;
+ goto yy348;
+yy352:
++YYCURSOR;
-#line 439 "../src/ast/lex.re"
+#line 429 "../src/ast/lex.re"
{ lex_string(cur[-1]); goto code; }
-#line 2247 "src/ast/lex.cc"
-yy364:
+#line 2178 "src/ast/lex.cc"
+yy354:
yych = (YYCTYPE)*++YYCURSOR;
- if (yych == '*') goto yy369;
- if (yych == '/') goto yy371;
- goto yy358;
-yy365:
+ if (yych == '*') goto yy359;
+ if (yych == '/') goto yy361;
+ goto yy348;
+yy355:
++YYCURSOR;
-#line 436 "../src/ast/lex.re"
+#line 426 "../src/ast/lex.re"
{ fatal_l(get_cline(), "Curly braces are not allowed after ':='"); }
-#line 2257 "src/ast/lex.cc"
-yy367:
+#line 2188 "src/ast/lex.cc"
+yy357:
++YYCURSOR;
YYCURSOR -= 1;
-#line 427 "../src/ast/lex.re"
+#line 417 "../src/ast/lex.re"
{ goto code; }
-#line 2263 "src/ast/lex.cc"
-yy369:
+#line 2194 "src/ast/lex.cc"
+yy359:
++YYCURSOR;
-#line 437 "../src/ast/lex.re"
+#line 427 "../src/ast/lex.re"
{ lex_c_comment(); goto code; }
-#line 2268 "src/ast/lex.cc"
-yy371:
+#line 2199 "src/ast/lex.cc"
+yy361:
++YYCURSOR;
-#line 438 "../src/ast/lex.re"
+#line 428 "../src/ast/lex.re"
{ lex_cpp_comment(); goto code; }
-#line 2273 "src/ast/lex.cc"
+#line 2204 "src/ast/lex.cc"
}
-#line 441 "../src/ast/lex.re"
+#line 431 "../src/ast/lex.re"
}
uint32_t depth = 1;
code:
-#line 2285 "src/ast/lex.cc"
+#line 2216 "src/ast/lex.cc"
{
YYCTYPE yych;
static const unsigned char yybm[] = {
yych = (YYCTYPE)*YYCURSOR;
if (yych <= '&') {
if (yych <= '\f') {
- if (yych <= 0x00) goto yy375;
- if (yych == '\n') goto yy379;
- goto yy377;
+ if (yych <= 0x00) goto yy365;
+ if (yych == '\n') goto yy369;
+ goto yy367;
} else {
- if (yych <= '\r') goto yy381;
- if (yych == '"') goto yy382;
- goto yy377;
+ if (yych <= '\r') goto yy371;
+ if (yych == '"') goto yy372;
+ goto yy367;
}
} else {
if (yych <= 'z') {
- if (yych <= '\'') goto yy382;
- if (yych == '/') goto yy384;
- goto yy377;
+ if (yych <= '\'') goto yy372;
+ if (yych == '/') goto yy374;
+ goto yy367;
} else {
- if (yych <= '{') goto yy385;
- if (yych == '}') goto yy387;
- goto yy377;
+ if (yych <= '{') goto yy375;
+ if (yych == '}') goto yy377;
+ goto yy367;
}
}
-yy375:
+yy365:
++YYCURSOR;
-#line 461 "../src/ast/lex.re"
+#line 451 "../src/ast/lex.re"
{ fail_if_eof(); goto code; }
-#line 2349 "src/ast/lex.cc"
-yy377:
+#line 2280 "src/ast/lex.cc"
+yy367:
++YYCURSOR;
-yy378:
-#line 465 "../src/ast/lex.re"
+yy368:
+#line 455 "../src/ast/lex.re"
{ goto code; }
-#line 2355 "src/ast/lex.cc"
-yy379:
+#line 2286 "src/ast/lex.cc"
+yy369:
yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
if (yybm[0+yych] & 32) {
- goto yy389;
+ goto yy379;
}
- if (yych == '#') goto yy392;
-yy380:
-#line 460 "../src/ast/lex.re"
+ if (yych == '#') goto yy382;
+yy370:
+#line 450 "../src/ast/lex.re"
{ pos = cur; cline++; goto code; }
-#line 2365 "src/ast/lex.cc"
-yy381:
+#line 2296 "src/ast/lex.cc"
+yy371:
yych = (YYCTYPE)*++YYCURSOR;
- if (yych == '\n') goto yy379;
- goto yy378;
-yy382:
+ if (yych == '\n') goto yy369;
+ goto yy368;
+yy372:
++YYCURSOR;
-#line 464 "../src/ast/lex.re"
+#line 454 "../src/ast/lex.re"
{ lex_string(cur[-1]); goto code; }
-#line 2374 "src/ast/lex.cc"
-yy384:
+#line 2305 "src/ast/lex.cc"
+yy374:
yych = (YYCTYPE)*++YYCURSOR;
- if (yych == '*') goto yy394;
- if (yych == '/') goto yy396;
- goto yy378;
-yy385:
+ if (yych == '*') goto yy384;
+ if (yych == '/') goto yy386;
+ goto yy368;
+yy375:
++YYCURSOR;
-#line 458 "../src/ast/lex.re"
+#line 448 "../src/ast/lex.re"
{ ++depth; goto code; }
-#line 2384 "src/ast/lex.cc"
-yy387:
+#line 2315 "src/ast/lex.cc"
+yy377:
++YYCURSOR;
-#line 450 "../src/ast/lex.re"
+#line 440 "../src/ast/lex.re"
{
if (--depth == 0) {
yylval.code = new Code(get_fname (), line, tok, tok_len ());
}
goto code;
}
-#line 2395 "src/ast/lex.cc"
-yy389:
+#line 2326 "src/ast/lex.cc"
+yy379:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = (YYCTYPE)*YYCURSOR;
if (yybm[0+yych] & 32) {
- goto yy389;
+ goto yy379;
}
- if (yych == '#') goto yy392;
-yy391:
+ if (yych == '#') goto yy382;
+yy381:
YYCURSOR = YYMARKER;
- goto yy380;
-yy392:
+ goto yy370;
+yy382:
++YYCURSOR;
if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
yych = (YYCTYPE)*YYCURSOR;
if (yych <= 0x1F) {
- if (yych == '\t') goto yy392;
- goto yy391;
+ if (yych == '\t') goto yy382;
+ goto yy381;
} else {
- if (yych <= ' ') goto yy392;
- if (yych == 'l') goto yy398;
- goto yy391;
+ if (yych <= ' ') goto yy382;
+ if (yych == 'l') goto yy388;
+ goto yy381;
}
-yy394:
+yy384:
++YYCURSOR;
-#line 462 "../src/ast/lex.re"
+#line 452 "../src/ast/lex.re"
{ lex_c_comment(); goto code; }
-#line 2423 "src/ast/lex.cc"
-yy396:
+#line 2354 "src/ast/lex.cc"
+yy386:
++YYCURSOR;
-#line 463 "../src/ast/lex.re"
+#line 453 "../src/ast/lex.re"
{ lex_cpp_comment(); goto code; }
-#line 2428 "src/ast/lex.cc"
-yy398:
+#line 2359 "src/ast/lex.cc"
+yy388:
yych = (YYCTYPE)*++YYCURSOR;
- if (yych != 'i') goto yy391;
+ if (yych != 'i') goto yy381;
yych = (YYCTYPE)*++YYCURSOR;
- if (yych != 'n') goto yy391;
+ if (yych != 'n') goto yy381;
yych = (YYCTYPE)*++YYCURSOR;
- if (yych != 'e') goto yy391;
+ if (yych != 'e') goto yy381;
yych = (YYCTYPE)*++YYCURSOR;
- if (yych <= '0') goto yy403;
- if (yych <= '9') goto yy391;
- goto yy403;
-yy402:
+ if (yych <= '0') goto yy393;
+ if (yych <= '9') goto yy381;
+ goto yy393;
+yy392:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = (YYCTYPE)*YYCURSOR;
-yy403:
+yy393:
if (yych <= 0x1F) {
- if (yych == '\t') goto yy402;
- goto yy391;
+ if (yych == '\t') goto yy392;
+ goto yy381;
} else {
- if (yych <= ' ') goto yy402;
- if (yych <= '0') goto yy391;
- if (yych >= ':') goto yy391;
+ if (yych <= ' ') goto yy392;
+ if (yych <= '0') goto yy381;
+ if (yych >= ':') goto yy381;
yyt1 = YYCURSOR;
}
-yy404:
+yy394:
++YYCURSOR;
if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = (YYCTYPE)*YYCURSOR;
if (yybm[0+yych] & 64) {
- goto yy404;
+ goto yy394;
}
if (yych <= '\f') {
- if (yych <= 0x08) goto yy391;
- if (yych <= '\t') goto yy406;
- if (yych <= '\n') goto yy408;
- goto yy391;
+ if (yych <= 0x08) goto yy381;
+ if (yych <= '\t') goto yy396;
+ if (yych <= '\n') goto yy398;
+ goto yy381;
} else {
- if (yych <= '\r') goto yy410;
- if (yych != ' ') goto yy391;
+ if (yych <= '\r') goto yy400;
+ if (yych != ' ') goto yy381;
}
-yy406:
+yy396:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = (YYCTYPE)*YYCURSOR;
if (yych <= 0x1F) {
- if (yych == '\t') goto yy406;
- goto yy391;
+ if (yych == '\t') goto yy396;
+ goto yy381;
} else {
- if (yych <= ' ') goto yy406;
- if (yych == '"') goto yy411;
- goto yy391;
+ if (yych <= ' ') goto yy396;
+ if (yych == '"') goto yy401;
+ goto yy381;
}
-yy408:
+yy398:
++YYCURSOR;
YYCURSOR = yyt1;
-#line 459 "../src/ast/lex.re"
+#line 449 "../src/ast/lex.re"
{ set_sourceline (); goto code; }
-#line 2487 "src/ast/lex.cc"
-yy410:
+#line 2418 "src/ast/lex.cc"
+yy400:
yych = (YYCTYPE)*++YYCURSOR;
- if (yych == '\n') goto yy408;
- goto yy391;
-yy411:
+ if (yych == '\n') goto yy398;
+ goto yy381;
+yy401:
++YYCURSOR;
if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
yych = (YYCTYPE)*YYCURSOR;
if (yybm[0+yych] & 128) {
- goto yy411;
+ goto yy401;
}
- if (yych <= '\n') goto yy391;
- if (yych >= '#') goto yy414;
+ if (yych <= '\n') goto yy381;
+ if (yych >= '#') goto yy404;
yych = (YYCTYPE)*++YYCURSOR;
- if (yych == '\n') goto yy408;
- if (yych == '\r') goto yy410;
- goto yy391;
-yy414:
+ if (yych == '\n') goto yy398;
+ if (yych == '\r') goto yy400;
+ goto yy381;
+yy404:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = (YYCTYPE)*YYCURSOR;
- if (yych <= 0x00) goto yy391;
- if (yych == '\n') goto yy391;
- goto yy411;
+ if (yych <= 0x00) goto yy381;
+ if (yych == '\n') goto yy381;
+ goto yy401;
}
-#line 466 "../src/ast/lex.re"
+#line 456 "../src/ast/lex.re"
}
{
loop:
-#line 2521 "src/ast/lex.cc"
+#line 2452 "src/ast/lex.cc"
{
YYCTYPE yych;
if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = (YYCTYPE)*YYCURSOR;
if (yych <= '!') {
if (yych <= '\n') {
- if (yych <= 0x00) goto yy417;
- if (yych <= '\t') goto yy419;
- goto yy421;
+ if (yych <= 0x00) goto yy407;
+ if (yych <= '\t') goto yy409;
+ goto yy411;
} else {
- if (yych == '\r') goto yy423;
- goto yy419;
+ if (yych == '\r') goto yy413;
+ goto yy409;
}
} else {
if (yych <= '\'') {
- if (yych <= '"') goto yy424;
- if (yych <= '&') goto yy419;
- goto yy424;
+ if (yych <= '"') goto yy414;
+ if (yych <= '&') goto yy409;
+ goto yy414;
} else {
- if (yych == '\\') goto yy426;
- goto yy419;
+ if (yych == '\\') goto yy416;
+ goto yy409;
}
}
-yy417:
+yy407:
++YYCURSOR;
-#line 476 "../src/ast/lex.re"
+#line 466 "../src/ast/lex.re"
{ fail_if_eof(); goto loop; }
-#line 2549 "src/ast/lex.cc"
-yy419:
+#line 2480 "src/ast/lex.cc"
+yy409:
++YYCURSOR;
-yy420:
-#line 477 "../src/ast/lex.re"
+yy410:
+#line 467 "../src/ast/lex.re"
{ goto loop; }
-#line 2555 "src/ast/lex.cc"
-yy421:
+#line 2486 "src/ast/lex.cc"
+yy411:
++YYCURSOR;
-#line 475 "../src/ast/lex.re"
+#line 465 "../src/ast/lex.re"
{ pos = cur; ++cline; goto loop; }
-#line 2560 "src/ast/lex.cc"
-yy423:
+#line 2491 "src/ast/lex.cc"
+yy413:
yych = (YYCTYPE)*++YYCURSOR;
- if (yych == '\n') goto yy421;
- goto yy420;
-yy424:
+ if (yych == '\n') goto yy411;
+ goto yy410;
+yy414:
++YYCURSOR;
-#line 473 "../src/ast/lex.re"
+#line 463 "../src/ast/lex.re"
{ if (cur[-1] == delim) return; else goto loop; }
-#line 2569 "src/ast/lex.cc"
-yy426:
+#line 2500 "src/ast/lex.cc"
+yy416:
yych = (YYCTYPE)*++YYCURSOR;
if (yych <= '&') {
- if (yych != '"') goto yy420;
+ if (yych != '"') goto yy410;
} else {
- if (yych <= '\'') goto yy427;
- if (yych != '\\') goto yy420;
+ if (yych <= '\'') goto yy417;
+ if (yych != '\\') goto yy410;
}
-yy427:
+yy417:
++YYCURSOR;
-#line 474 "../src/ast/lex.re"
+#line 464 "../src/ast/lex.re"
{ goto loop; }
-#line 2582 "src/ast/lex.cc"
+#line 2513 "src/ast/lex.cc"
}
-#line 478 "../src/ast/lex.re"
+#line 468 "../src/ast/lex.re"
}
{
loop:
-#line 2592 "src/ast/lex.cc"
+#line 2523 "src/ast/lex.cc"
{
YYCTYPE yych;
if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = (YYCTYPE)*YYCURSOR;
if (yych <= '\f') {
- if (yych <= 0x00) goto yy431;
- if (yych == '\n') goto yy435;
- goto yy433;
+ if (yych <= 0x00) goto yy421;
+ if (yych == '\n') goto yy425;
+ goto yy423;
} else {
- if (yych <= '\r') goto yy437;
- if (yych == '*') goto yy438;
- goto yy433;
+ if (yych <= '\r') goto yy427;
+ if (yych == '*') goto yy428;
+ goto yy423;
}
-yy431:
+yy421:
++YYCURSOR;
-#line 487 "../src/ast/lex.re"
+#line 477 "../src/ast/lex.re"
{ fail_if_eof(); goto loop; }
-#line 2610 "src/ast/lex.cc"
-yy433:
+#line 2541 "src/ast/lex.cc"
+yy423:
++YYCURSOR;
-yy434:
-#line 488 "../src/ast/lex.re"
+yy424:
+#line 478 "../src/ast/lex.re"
{ goto loop; }
-#line 2616 "src/ast/lex.cc"
-yy435:
+#line 2547 "src/ast/lex.cc"
+yy425:
++YYCURSOR;
-#line 486 "../src/ast/lex.re"
+#line 476 "../src/ast/lex.re"
{ pos = cur; ++cline; goto loop; }
-#line 2621 "src/ast/lex.cc"
-yy437:
+#line 2552 "src/ast/lex.cc"
+yy427:
yych = (YYCTYPE)*++YYCURSOR;
- if (yych == '\n') goto yy435;
- goto yy434;
-yy438:
+ if (yych == '\n') goto yy425;
+ goto yy424;
+yy428:
yych = (YYCTYPE)*++YYCURSOR;
- if (yych != '/') goto yy434;
+ if (yych != '/') goto yy424;
++YYCURSOR;
-#line 485 "../src/ast/lex.re"
+#line 475 "../src/ast/lex.re"
{ return; }
-#line 2632 "src/ast/lex.cc"
+#line 2563 "src/ast/lex.cc"
}
-#line 489 "../src/ast/lex.re"
+#line 479 "../src/ast/lex.re"
}
{
loop:
-#line 2642 "src/ast/lex.cc"
+#line 2573 "src/ast/lex.cc"
{
YYCTYPE yych;
if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = (YYCTYPE)*YYCURSOR;
if (yych <= '\n') {
- if (yych <= 0x00) goto yy443;
- if (yych <= '\t') goto yy445;
- goto yy447;
+ if (yych <= 0x00) goto yy433;
+ if (yych <= '\t') goto yy435;
+ goto yy437;
} else {
- if (yych == '\r') goto yy449;
- goto yy445;
+ if (yych == '\r') goto yy439;
+ goto yy435;
}
-yy443:
+yy433:
++YYCURSOR;
-#line 497 "../src/ast/lex.re"
+#line 487 "../src/ast/lex.re"
{ fail_if_eof(); goto loop; }
-#line 2659 "src/ast/lex.cc"
-yy445:
+#line 2590 "src/ast/lex.cc"
+yy435:
++YYCURSOR;
-yy446:
-#line 498 "../src/ast/lex.re"
+yy436:
+#line 488 "../src/ast/lex.re"
{ goto loop; }
-#line 2665 "src/ast/lex.cc"
-yy447:
+#line 2596 "src/ast/lex.cc"
+yy437:
++YYCURSOR;
-#line 496 "../src/ast/lex.re"
+#line 486 "../src/ast/lex.re"
{ pos = cur; ++cline; return; }
-#line 2670 "src/ast/lex.cc"
-yy449:
+#line 2601 "src/ast/lex.cc"
+yy439:
yych = (YYCTYPE)*++YYCURSOR;
- if (yych == '\n') goto yy447;
- goto yy446;
+ if (yych == '\n') goto yy437;
+ goto yy436;
}
-#line 499 "../src/ast/lex.re"
+#line 489 "../src/ast/lex.re"
}
tok = cur;
c = get_column();
-#line 2688 "src/ast/lex.cc"
+#line 2619 "src/ast/lex.cc"
{
YYCTYPE yych;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = (YYCTYPE)*YYCURSOR;
- if (yych == ']') goto yy453;
-#line 511 "../src/ast/lex.re"
+ if (yych == ']') goto yy443;
+#line 501 "../src/ast/lex.re"
{ l = lex_cls_chr(); goto snd; }
-#line 2696 "src/ast/lex.cc"
-yy453:
+#line 2627 "src/ast/lex.cc"
+yy443:
++YYCURSOR;
-#line 510 "../src/ast/lex.re"
+#line 500 "../src/ast/lex.re"
{ return ast_cls(cline, c0, cls, neg); }
-#line 2701 "src/ast/lex.cc"
+#line 2632 "src/ast/lex.cc"
}
-#line 512 "../src/ast/lex.re"
+#line 502 "../src/ast/lex.re"
snd:
-#line 2707 "src/ast/lex.cc"
+#line 2638 "src/ast/lex.cc"
{
YYCTYPE yych;
if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = (YYCTYPE)*(YYMARKER = YYCURSOR);
- if (yych == '-') goto yy458;
-yy457:
-#line 515 "../src/ast/lex.re"
+ if (yych == '-') goto yy448;
+yy447:
+#line 505 "../src/ast/lex.re"
{ u = l; goto add; }
-#line 2716 "src/ast/lex.cc"
-yy458:
+#line 2647 "src/ast/lex.cc"
+yy448:
yych = (YYCTYPE)*++YYCURSOR;
- if (yych != ']') goto yy460;
+ if (yych != ']') goto yy450;
YYCURSOR = YYMARKER;
- goto yy457;
-yy460:
+ goto yy447;
+yy450:
++YYCURSOR;
YYCURSOR -= 1;
-#line 516 "../src/ast/lex.re"
+#line 506 "../src/ast/lex.re"
{
u = lex_cls_chr();
if (l > u) {
}
goto add;
}
-#line 2734 "src/ast/lex.cc"
+#line 2665 "src/ast/lex.cc"
}
-#line 524 "../src/ast/lex.re"
+#line 514 "../src/ast/lex.re"
add:
cls->push_back(ASTRange(l, u, c));
tok = cur;
const uint32_t l = get_cline(), c = get_column();
-#line 2748 "src/ast/lex.cc"
+#line 2679 "src/ast/lex.cc"
{
YYCTYPE yych;
unsigned int yyaccept = 0;
if ((YYLIMIT - YYCURSOR) < 10) YYFILL(10);
yych = (YYCTYPE)*YYCURSOR;
if (yych <= '\f') {
- if (yych <= 0x00) goto yy464;
- if (yych == '\n') goto yy468;
- goto yy466;
+ if (yych <= 0x00) goto yy454;
+ if (yych == '\n') goto yy458;
+ goto yy456;
} else {
- if (yych <= '\r') goto yy470;
- if (yych == '\\') goto yy471;
- goto yy466;
+ if (yych <= '\r') goto yy460;
+ if (yych == '\\') goto yy461;
+ goto yy456;
}
-yy464:
+yy454:
++YYCURSOR;
-#line 536 "../src/ast/lex.re"
+#line 526 "../src/ast/lex.re"
{ fail_if_eof(); return 0; }
-#line 2767 "src/ast/lex.cc"
-yy466:
+#line 2698 "src/ast/lex.cc"
+yy456:
++YYCURSOR;
-yy467:
-#line 542 "../src/ast/lex.re"
+yy457:
+#line 532 "../src/ast/lex.re"
{ return static_cast<uint8_t>(tok[0]); }
-#line 2773 "src/ast/lex.cc"
-yy468:
+#line 2704 "src/ast/lex.cc"
+yy458:
++YYCURSOR;
-#line 537 "../src/ast/lex.re"
+#line 527 "../src/ast/lex.re"
{ fatal_lc(l, c, "newline in character class"); }
-#line 2778 "src/ast/lex.cc"
-yy470:
+#line 2709 "src/ast/lex.cc"
+yy460:
yych = (YYCTYPE)*++YYCURSOR;
- if (yych == '\n') goto yy468;
- goto yy467;
-yy471:
+ if (yych == '\n') goto yy458;
+ goto yy457;
+yy461:
yych = (YYCTYPE)*++YYCURSOR;
if (yych <= '\\') {
if (yych <= '/') {
if (yych <= '\f') {
- if (yych <= 0x00) goto yy472;
- if (yych == '\n') goto yy468;
- goto yy473;
+ if (yych <= 0x00) goto yy462;
+ if (yych == '\n') goto yy458;
+ goto yy463;
} else {
- if (yych <= '\r') goto yy475;
- if (yych == '-') goto yy476;
- goto yy473;
+ if (yych <= '\r') goto yy465;
+ if (yych == '-') goto yy466;
+ goto yy463;
}
} else {
if (yych <= 'U') {
- if (yych <= '3') goto yy478;
- if (yych <= '7') goto yy480;
- if (yych <= 'T') goto yy473;
- goto yy481;
+ if (yych <= '3') goto yy468;
+ if (yych <= '7') goto yy470;
+ if (yych <= 'T') goto yy463;
+ goto yy471;
} else {
- if (yych == 'X') goto yy483;
- if (yych <= '[') goto yy473;
- goto yy484;
+ if (yych == 'X') goto yy473;
+ if (yych <= '[') goto yy463;
+ goto yy474;
}
}
} else {
if (yych <= 'n') {
if (yych <= 'b') {
- if (yych <= ']') goto yy486;
- if (yych <= '`') goto yy473;
- if (yych <= 'a') goto yy488;
- goto yy490;
+ if (yych <= ']') goto yy476;
+ if (yych <= '`') goto yy463;
+ if (yych <= 'a') goto yy478;
+ goto yy480;
} else {
- if (yych == 'f') goto yy492;
- if (yych <= 'm') goto yy473;
- goto yy494;
+ if (yych == 'f') goto yy482;
+ if (yych <= 'm') goto yy463;
+ goto yy484;
}
} else {
if (yych <= 't') {
- if (yych == 'r') goto yy496;
- if (yych <= 's') goto yy473;
- goto yy498;
+ if (yych == 'r') goto yy486;
+ if (yych <= 's') goto yy463;
+ goto yy488;
} else {
if (yych <= 'v') {
- if (yych <= 'u') goto yy483;
- goto yy500;
+ if (yych <= 'u') goto yy473;
+ goto yy490;
} else {
- if (yych == 'x') goto yy502;
- goto yy473;
+ if (yych == 'x') goto yy492;
+ goto yy463;
}
}
}
}
-yy472:
-#line 540 "../src/ast/lex.re"
+yy462:
+#line 530 "../src/ast/lex.re"
{ fatal_lc(l, c, "syntax error in escape sequence"); }
-#line 2839 "src/ast/lex.cc"
-yy473:
+#line 2770 "src/ast/lex.cc"
+yy463:
++YYCURSOR;
-yy474:
-#line 555 "../src/ast/lex.re"
+yy464:
+#line 545 "../src/ast/lex.re"
{
warn.useless_escape(cline, get_column(), tok[1]);
return static_cast<uint8_t>(tok[1]);
}
-#line 2848 "src/ast/lex.cc"
-yy475:
+#line 2779 "src/ast/lex.cc"
+yy465:
yych = (YYCTYPE)*++YYCURSOR;
- if (yych == '\n') goto yy468;
- goto yy474;
-yy476:
+ if (yych == '\n') goto yy458;
+ goto yy464;
+yy466:
++YYCURSOR;
-#line 553 "../src/ast/lex.re"
+#line 543 "../src/ast/lex.re"
{ return static_cast<uint8_t>('-'); }
-#line 2857 "src/ast/lex.cc"
-yy478:
+#line 2788 "src/ast/lex.cc"
+yy468:
yyaccept = 0;
yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
- if (yych <= '/') goto yy479;
- if (yych <= '7') goto yy503;
-yy479:
-#line 539 "../src/ast/lex.re"
+ if (yych <= '/') goto yy469;
+ if (yych <= '7') goto yy493;
+yy469:
+#line 529 "../src/ast/lex.re"
{ fatal_lc(l, c, "syntax error in octal escape sequence"); }
-#line 2866 "src/ast/lex.cc"
-yy480:
+#line 2797 "src/ast/lex.cc"
+yy470:
++YYCURSOR;
- goto yy479;
-yy481:
+ goto yy469;
+yy471:
yyaccept = 1;
yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
if (yych <= '@') {
- if (yych <= '/') goto yy482;
- if (yych <= '9') goto yy505;
+ if (yych <= '/') goto yy472;
+ if (yych <= '9') goto yy495;
} else {
- if (yych <= 'F') goto yy505;
- if (yych <= '`') goto yy482;
- if (yych <= 'f') goto yy505;
+ if (yych <= 'F') goto yy495;
+ if (yych <= '`') goto yy472;
+ if (yych <= 'f') goto yy495;
}
-yy482:
-#line 538 "../src/ast/lex.re"
+yy472:
+#line 528 "../src/ast/lex.re"
{ fatal_lc(l, c, "syntax error in hexadecimal escape sequence"); }
-#line 2884 "src/ast/lex.cc"
-yy483:
+#line 2815 "src/ast/lex.cc"
+yy473:
yyaccept = 1;
yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
if (yych <= '@') {
- if (yych <= '/') goto yy482;
- if (yych <= '9') goto yy506;
- goto yy482;
+ if (yych <= '/') goto yy472;
+ if (yych <= '9') goto yy496;
+ goto yy472;
} else {
- if (yych <= 'F') goto yy506;
- if (yych <= '`') goto yy482;
- if (yych <= 'f') goto yy506;
- goto yy482;
+ if (yych <= 'F') goto yy496;
+ if (yych <= '`') goto yy472;
+ if (yych <= 'f') goto yy496;
+ goto yy472;
}
-yy484:
+yy474:
++YYCURSOR;
-#line 552 "../src/ast/lex.re"
+#line 542 "../src/ast/lex.re"
{ return static_cast<uint8_t>('\\'); }
-#line 2902 "src/ast/lex.cc"
-yy486:
+#line 2833 "src/ast/lex.cc"
+yy476:
++YYCURSOR;
-#line 554 "../src/ast/lex.re"
+#line 544 "../src/ast/lex.re"
{ return static_cast<uint8_t>(']'); }
-#line 2907 "src/ast/lex.cc"
-yy488:
+#line 2838 "src/ast/lex.cc"
+yy478:
++YYCURSOR;
-#line 545 "../src/ast/lex.re"
+#line 535 "../src/ast/lex.re"
{ return static_cast<uint8_t>('\a'); }
-#line 2912 "src/ast/lex.cc"
-yy490:
+#line 2843 "src/ast/lex.cc"
+yy480:
++YYCURSOR;
-#line 546 "../src/ast/lex.re"
+#line 536 "../src/ast/lex.re"
{ return static_cast<uint8_t>('\b'); }
-#line 2917 "src/ast/lex.cc"
-yy492:
+#line 2848 "src/ast/lex.cc"
+yy482:
++YYCURSOR;
-#line 547 "../src/ast/lex.re"
+#line 537 "../src/ast/lex.re"
{ return static_cast<uint8_t>('\f'); }
-#line 2922 "src/ast/lex.cc"
-yy494:
+#line 2853 "src/ast/lex.cc"
+yy484:
++YYCURSOR;
-#line 548 "../src/ast/lex.re"
+#line 538 "../src/ast/lex.re"
{ return static_cast<uint8_t>('\n'); }
-#line 2927 "src/ast/lex.cc"
-yy496:
+#line 2858 "src/ast/lex.cc"
+yy486:
++YYCURSOR;
-#line 549 "../src/ast/lex.re"
+#line 539 "../src/ast/lex.re"
{ return static_cast<uint8_t>('\r'); }
-#line 2932 "src/ast/lex.cc"
-yy498:
+#line 2863 "src/ast/lex.cc"
+yy488:
++YYCURSOR;
-#line 550 "../src/ast/lex.re"
+#line 540 "../src/ast/lex.re"
{ return static_cast<uint8_t>('\t'); }
-#line 2937 "src/ast/lex.cc"
-yy500:
+#line 2868 "src/ast/lex.cc"
+yy490:
++YYCURSOR;
-#line 551 "../src/ast/lex.re"
+#line 541 "../src/ast/lex.re"
{ return static_cast<uint8_t>('\v'); }
-#line 2942 "src/ast/lex.cc"
-yy502:
+#line 2873 "src/ast/lex.cc"
+yy492:
yyaccept = 1;
yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
if (yych <= '@') {
- if (yych <= '/') goto yy482;
- if (yych <= '9') goto yy507;
- goto yy482;
+ if (yych <= '/') goto yy472;
+ if (yych <= '9') goto yy497;
+ goto yy472;
} else {
- if (yych <= 'F') goto yy507;
- if (yych <= '`') goto yy482;
- if (yych <= 'f') goto yy507;
- goto yy482;
+ if (yych <= 'F') goto yy497;
+ if (yych <= '`') goto yy472;
+ if (yych <= 'f') goto yy497;
+ goto yy472;
}
-yy503:
+yy493:
yych = (YYCTYPE)*++YYCURSOR;
- if (yych <= '/') goto yy504;
- if (yych <= '7') goto yy508;
-yy504:
+ if (yych <= '/') goto yy494;
+ if (yych <= '7') goto yy498;
+yy494:
YYCURSOR = YYMARKER;
if (yyaccept == 0) {
- goto yy479;
+ goto yy469;
} else {
- goto yy482;
+ goto yy472;
}
-yy505:
+yy495:
yych = (YYCTYPE)*++YYCURSOR;
if (yych <= '@') {
- if (yych <= '/') goto yy504;
- if (yych <= '9') goto yy510;
- goto yy504;
+ if (yych <= '/') goto yy494;
+ if (yych <= '9') goto yy500;
+ goto yy494;
} else {
- if (yych <= 'F') goto yy510;
- if (yych <= '`') goto yy504;
- if (yych <= 'f') goto yy510;
- goto yy504;
+ if (yych <= 'F') goto yy500;
+ if (yych <= '`') goto yy494;
+ if (yych <= 'f') goto yy500;
+ goto yy494;
}
-yy506:
+yy496:
yych = (YYCTYPE)*++YYCURSOR;
if (yych <= '@') {
- if (yych <= '/') goto yy504;
- if (yych <= '9') goto yy511;
- goto yy504;
+ if (yych <= '/') goto yy494;
+ if (yych <= '9') goto yy501;
+ goto yy494;
} else {
- if (yych <= 'F') goto yy511;
- if (yych <= '`') goto yy504;
- if (yych <= 'f') goto yy511;
- goto yy504;
+ if (yych <= 'F') goto yy501;
+ if (yych <= '`') goto yy494;
+ if (yych <= 'f') goto yy501;
+ goto yy494;
}
-yy507:
+yy497:
yych = (YYCTYPE)*++YYCURSOR;
if (yych <= '@') {
- if (yych <= '/') goto yy504;
- if (yych <= '9') goto yy512;
- goto yy504;
+ if (yych <= '/') goto yy494;
+ if (yych <= '9') goto yy502;
+ goto yy494;
} else {
- if (yych <= 'F') goto yy512;
- if (yych <= '`') goto yy504;
- if (yych <= 'f') goto yy512;
- goto yy504;
+ if (yych <= 'F') goto yy502;
+ if (yych <= '`') goto yy494;
+ if (yych <= 'f') goto yy502;
+ goto yy494;
}
-yy508:
+yy498:
++YYCURSOR;
-#line 544 "../src/ast/lex.re"
+#line 534 "../src/ast/lex.re"
{ return unesc_oct(tok, cur); }
-#line 3007 "src/ast/lex.cc"
-yy510:
+#line 2938 "src/ast/lex.cc"
+yy500:
yych = (YYCTYPE)*++YYCURSOR;
if (yych <= '@') {
- if (yych <= '/') goto yy504;
- if (yych <= '9') goto yy514;
- goto yy504;
+ if (yych <= '/') goto yy494;
+ if (yych <= '9') goto yy504;
+ goto yy494;
} else {
- if (yych <= 'F') goto yy514;
- if (yych <= '`') goto yy504;
- if (yych <= 'f') goto yy514;
- goto yy504;
+ if (yych <= 'F') goto yy504;
+ if (yych <= '`') goto yy494;
+ if (yych <= 'f') goto yy504;
+ goto yy494;
}
-yy511:
+yy501:
yych = (YYCTYPE)*++YYCURSOR;
if (yych <= '@') {
- if (yych <= '/') goto yy504;
- if (yych <= '9') goto yy507;
- goto yy504;
+ if (yych <= '/') goto yy494;
+ if (yych <= '9') goto yy497;
+ goto yy494;
} else {
- if (yych <= 'F') goto yy507;
- if (yych <= '`') goto yy504;
- if (yych <= 'f') goto yy507;
- goto yy504;
+ if (yych <= 'F') goto yy497;
+ if (yych <= '`') goto yy494;
+ if (yych <= 'f') goto yy497;
+ goto yy494;
}
-yy512:
+yy502:
++YYCURSOR;
-#line 543 "../src/ast/lex.re"
+#line 533 "../src/ast/lex.re"
{ return unesc_hex(tok, cur); }
-#line 3036 "src/ast/lex.cc"
-yy514:
+#line 2967 "src/ast/lex.cc"
+yy504:
yych = (YYCTYPE)*++YYCURSOR;
if (yych <= '@') {
- if (yych <= '/') goto yy504;
- if (yych >= ':') goto yy504;
+ if (yych <= '/') goto yy494;
+ if (yych >= ':') goto yy494;
} else {
- if (yych <= 'F') goto yy515;
- if (yych <= '`') goto yy504;
- if (yych >= 'g') goto yy504;
+ if (yych <= 'F') goto yy505;
+ if (yych <= '`') goto yy494;
+ if (yych >= 'g') goto yy494;
}
-yy515:
+yy505:
yych = (YYCTYPE)*++YYCURSOR;
if (yych <= '@') {
- if (yych <= '/') goto yy504;
- if (yych <= '9') goto yy506;
- goto yy504;
+ if (yych <= '/') goto yy494;
+ if (yych <= '9') goto yy496;
+ goto yy494;
} else {
- if (yych <= 'F') goto yy506;
- if (yych <= '`') goto yy504;
- if (yych <= 'f') goto yy506;
- goto yy504;
+ if (yych <= 'F') goto yy496;
+ if (yych <= '`') goto yy494;
+ if (yych <= 'f') goto yy496;
+ goto yy494;
}
}
-#line 559 "../src/ast/lex.re"
+#line 549 "../src/ast/lex.re"
}
tok = cur;
const uint32_t l = get_cline(), c = get_column();
-#line 3070 "src/ast/lex.cc"
+#line 3001 "src/ast/lex.cc"
{
YYCTYPE yych;
unsigned int yyaccept = 0;
if ((YYLIMIT - YYCURSOR) < 10) YYFILL(10);
yych = (YYCTYPE)*YYCURSOR;
if (yych <= '\f') {
- if (yych <= 0x00) goto yy518;
- if (yych == '\n') goto yy522;
- goto yy520;
+ if (yych <= 0x00) goto yy508;
+ if (yych == '\n') goto yy512;
+ goto yy510;
} else {
- if (yych <= '\r') goto yy524;
- if (yych == '\\') goto yy525;
- goto yy520;
+ if (yych <= '\r') goto yy514;
+ if (yych == '\\') goto yy515;
+ goto yy510;
}
-yy518:
+yy508:
++YYCURSOR;
-#line 569 "../src/ast/lex.re"
+#line 559 "../src/ast/lex.re"
{ fail_if_eof(); return 0; }
-#line 3089 "src/ast/lex.cc"
-yy520:
+#line 3020 "src/ast/lex.cc"
+yy510:
++YYCURSOR;
-yy521:
-#line 575 "../src/ast/lex.re"
+yy511:
+#line 565 "../src/ast/lex.re"
{
end = tok[0] == quote;
return static_cast<uint8_t>(tok[0]);
}
-#line 3098 "src/ast/lex.cc"
-yy522:
+#line 3029 "src/ast/lex.cc"
+yy512:
++YYCURSOR;
-#line 570 "../src/ast/lex.re"
+#line 560 "../src/ast/lex.re"
{ fatal_lc(l, c, "newline in character string"); }
-#line 3103 "src/ast/lex.cc"
-yy524:
+#line 3034 "src/ast/lex.cc"
+yy514:
yych = (YYCTYPE)*++YYCURSOR;
- if (yych == '\n') goto yy522;
- goto yy521;
-yy525:
+ if (yych == '\n') goto yy512;
+ goto yy511;
+yy515:
yych = (YYCTYPE)*++YYCURSOR;
if (yych <= '`') {
if (yych <= '3') {
if (yych <= '\n') {
- if (yych <= 0x00) goto yy526;
- if (yych <= '\t') goto yy527;
- goto yy522;
+ if (yych <= 0x00) goto yy516;
+ if (yych <= '\t') goto yy517;
+ goto yy512;
} else {
- if (yych == '\r') goto yy529;
- if (yych <= '/') goto yy527;
- goto yy530;
+ if (yych == '\r') goto yy519;
+ if (yych <= '/') goto yy517;
+ goto yy520;
}
} else {
if (yych <= 'W') {
- if (yych <= '7') goto yy532;
- if (yych == 'U') goto yy533;
- goto yy527;
+ if (yych <= '7') goto yy522;
+ if (yych == 'U') goto yy523;
+ goto yy517;
} else {
- if (yych <= 'X') goto yy535;
- if (yych == '\\') goto yy536;
- goto yy527;
+ if (yych <= 'X') goto yy525;
+ if (yych == '\\') goto yy526;
+ goto yy517;
}
}
} else {
if (yych <= 'q') {
if (yych <= 'e') {
- if (yych <= 'a') goto yy538;
- if (yych <= 'b') goto yy540;
- goto yy527;
+ if (yych <= 'a') goto yy528;
+ if (yych <= 'b') goto yy530;
+ goto yy517;
} else {
- if (yych <= 'f') goto yy542;
- if (yych == 'n') goto yy544;
- goto yy527;
+ if (yych <= 'f') goto yy532;
+ if (yych == 'n') goto yy534;
+ goto yy517;
}
} else {
if (yych <= 'u') {
- if (yych <= 'r') goto yy546;
- if (yych <= 's') goto yy527;
- if (yych <= 't') goto yy548;
- goto yy535;
+ if (yych <= 'r') goto yy536;
+ if (yych <= 's') goto yy517;
+ if (yych <= 't') goto yy538;
+ goto yy525;
} else {
- if (yych <= 'v') goto yy550;
- if (yych == 'x') goto yy552;
- goto yy527;
+ if (yych <= 'v') goto yy540;
+ if (yych == 'x') goto yy542;
+ goto yy517;
}
}
}
-yy526:
-#line 573 "../src/ast/lex.re"
+yy516:
+#line 563 "../src/ast/lex.re"
{ fatal_lc(l, c, "syntax error in escape sequence"); }
-#line 3159 "src/ast/lex.cc"
-yy527:
+#line 3090 "src/ast/lex.cc"
+yy517:
++YYCURSOR;
-yy528:
-#line 589 "../src/ast/lex.re"
+yy518:
+#line 579 "../src/ast/lex.re"
{
if (tok[1] != quote) {
warn.useless_escape(cline, get_column(), tok[1]);
}
return static_cast<uint8_t>(tok[1]);
}
-#line 3170 "src/ast/lex.cc"
-yy529:
+#line 3101 "src/ast/lex.cc"
+yy519:
yych = (YYCTYPE)*++YYCURSOR;
- if (yych == '\n') goto yy522;
- goto yy528;
-yy530:
+ if (yych == '\n') goto yy512;
+ goto yy518;
+yy520:
yyaccept = 0;
yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
- if (yych <= '/') goto yy531;
- if (yych <= '7') goto yy553;
-yy531:
-#line 572 "../src/ast/lex.re"
+ if (yych <= '/') goto yy521;
+ if (yych <= '7') goto yy543;
+yy521:
+#line 562 "../src/ast/lex.re"
{ fatal_lc(l, c, "syntax error in octal escape sequence"); }
-#line 3183 "src/ast/lex.cc"
-yy532:
+#line 3114 "src/ast/lex.cc"
+yy522:
++YYCURSOR;
- goto yy531;
-yy533:
+ goto yy521;
+yy523:
yyaccept = 1;
yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
if (yych <= '@') {
- if (yych <= '/') goto yy534;
- if (yych <= '9') goto yy555;
+ if (yych <= '/') goto yy524;
+ if (yych <= '9') goto yy545;
} else {
- if (yych <= 'F') goto yy555;
- if (yych <= '`') goto yy534;
- if (yych <= 'f') goto yy555;
+ if (yych <= 'F') goto yy545;
+ if (yych <= '`') goto yy524;
+ if (yych <= 'f') goto yy545;
}
-yy534:
-#line 571 "../src/ast/lex.re"
+yy524:
+#line 561 "../src/ast/lex.re"
{ fatal_lc(l, c, "syntax error in hexadecimal escape sequence"); }
-#line 3201 "src/ast/lex.cc"
-yy535:
+#line 3132 "src/ast/lex.cc"
+yy525:
yyaccept = 1;
yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
if (yych <= '@') {
- if (yych <= '/') goto yy534;
- if (yych <= '9') goto yy556;
- goto yy534;
+ if (yych <= '/') goto yy524;
+ if (yych <= '9') goto yy546;
+ goto yy524;
} else {
- if (yych <= 'F') goto yy556;
- if (yych <= '`') goto yy534;
- if (yych <= 'f') goto yy556;
- goto yy534;
+ if (yych <= 'F') goto yy546;
+ if (yych <= '`') goto yy524;
+ if (yych <= 'f') goto yy546;
+ goto yy524;
}
-yy536:
+yy526:
++YYCURSOR;
-#line 588 "../src/ast/lex.re"
+#line 578 "../src/ast/lex.re"
{ return static_cast<uint8_t>('\\'); }
-#line 3219 "src/ast/lex.cc"
-yy538:
+#line 3150 "src/ast/lex.cc"
+yy528:
++YYCURSOR;
-#line 581 "../src/ast/lex.re"
+#line 571 "../src/ast/lex.re"
{ return static_cast<uint8_t>('\a'); }
-#line 3224 "src/ast/lex.cc"
-yy540:
+#line 3155 "src/ast/lex.cc"
+yy530:
++YYCURSOR;
-#line 582 "../src/ast/lex.re"
+#line 572 "../src/ast/lex.re"
{ return static_cast<uint8_t>('\b'); }
-#line 3229 "src/ast/lex.cc"
-yy542:
+#line 3160 "src/ast/lex.cc"
+yy532:
++YYCURSOR;
-#line 583 "../src/ast/lex.re"
+#line 573 "../src/ast/lex.re"
{ return static_cast<uint8_t>('\f'); }
-#line 3234 "src/ast/lex.cc"
-yy544:
+#line 3165 "src/ast/lex.cc"
+yy534:
++YYCURSOR;
-#line 584 "../src/ast/lex.re"
+#line 574 "../src/ast/lex.re"
{ return static_cast<uint8_t>('\n'); }
-#line 3239 "src/ast/lex.cc"
-yy546:
+#line 3170 "src/ast/lex.cc"
+yy536:
++YYCURSOR;
-#line 585 "../src/ast/lex.re"
+#line 575 "../src/ast/lex.re"
{ return static_cast<uint8_t>('\r'); }
-#line 3244 "src/ast/lex.cc"
-yy548:
+#line 3175 "src/ast/lex.cc"
+yy538:
++YYCURSOR;
-#line 586 "../src/ast/lex.re"
+#line 576 "../src/ast/lex.re"
{ return static_cast<uint8_t>('\t'); }
-#line 3249 "src/ast/lex.cc"
-yy550:
+#line 3180 "src/ast/lex.cc"
+yy540:
++YYCURSOR;
-#line 587 "../src/ast/lex.re"
+#line 577 "../src/ast/lex.re"
{ return static_cast<uint8_t>('\v'); }
-#line 3254 "src/ast/lex.cc"
-yy552:
+#line 3185 "src/ast/lex.cc"
+yy542:
yyaccept = 1;
yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
if (yych <= '@') {
- if (yych <= '/') goto yy534;
- if (yych <= '9') goto yy557;
- goto yy534;
+ if (yych <= '/') goto yy524;
+ if (yych <= '9') goto yy547;
+ goto yy524;
} else {
- if (yych <= 'F') goto yy557;
- if (yych <= '`') goto yy534;
- if (yych <= 'f') goto yy557;
- goto yy534;
+ if (yych <= 'F') goto yy547;
+ if (yych <= '`') goto yy524;
+ if (yych <= 'f') goto yy547;
+ goto yy524;
}
-yy553:
+yy543:
yych = (YYCTYPE)*++YYCURSOR;
- if (yych <= '/') goto yy554;
- if (yych <= '7') goto yy558;
-yy554:
+ if (yych <= '/') goto yy544;
+ if (yych <= '7') goto yy548;
+yy544:
YYCURSOR = YYMARKER;
if (yyaccept == 0) {
- goto yy531;
+ goto yy521;
} else {
- goto yy534;
+ goto yy524;
}
-yy555:
+yy545:
yych = (YYCTYPE)*++YYCURSOR;
if (yych <= '@') {
- if (yych <= '/') goto yy554;
- if (yych <= '9') goto yy560;
- goto yy554;
+ if (yych <= '/') goto yy544;
+ if (yych <= '9') goto yy550;
+ goto yy544;
} else {
- if (yych <= 'F') goto yy560;
- if (yych <= '`') goto yy554;
- if (yych <= 'f') goto yy560;
- goto yy554;
+ if (yych <= 'F') goto yy550;
+ if (yych <= '`') goto yy544;
+ if (yych <= 'f') goto yy550;
+ goto yy544;
}
-yy556:
+yy546:
yych = (YYCTYPE)*++YYCURSOR;
if (yych <= '@') {
- if (yych <= '/') goto yy554;
- if (yych <= '9') goto yy561;
- goto yy554;
+ if (yych <= '/') goto yy544;
+ if (yych <= '9') goto yy551;
+ goto yy544;
} else {
- if (yych <= 'F') goto yy561;
- if (yych <= '`') goto yy554;
- if (yych <= 'f') goto yy561;
- goto yy554;
+ if (yych <= 'F') goto yy551;
+ if (yych <= '`') goto yy544;
+ if (yych <= 'f') goto yy551;
+ goto yy544;
}
-yy557:
+yy547:
yych = (YYCTYPE)*++YYCURSOR;
if (yych <= '@') {
- if (yych <= '/') goto yy554;
- if (yych <= '9') goto yy562;
- goto yy554;
+ if (yych <= '/') goto yy544;
+ if (yych <= '9') goto yy552;
+ goto yy544;
} else {
- if (yych <= 'F') goto yy562;
- if (yych <= '`') goto yy554;
- if (yych <= 'f') goto yy562;
- goto yy554;
+ if (yych <= 'F') goto yy552;
+ if (yych <= '`') goto yy544;
+ if (yych <= 'f') goto yy552;
+ goto yy544;
}
-yy558:
+yy548:
++YYCURSOR;
-#line 580 "../src/ast/lex.re"
+#line 570 "../src/ast/lex.re"
{ return unesc_oct(tok, cur); }
-#line 3319 "src/ast/lex.cc"
-yy560:
+#line 3250 "src/ast/lex.cc"
+yy550:
yych = (YYCTYPE)*++YYCURSOR;
if (yych <= '@') {
- if (yych <= '/') goto yy554;
- if (yych <= '9') goto yy564;
- goto yy554;
+ if (yych <= '/') goto yy544;
+ if (yych <= '9') goto yy554;
+ goto yy544;
} else {
- if (yych <= 'F') goto yy564;
- if (yych <= '`') goto yy554;
- if (yych <= 'f') goto yy564;
- goto yy554;
+ if (yych <= 'F') goto yy554;
+ if (yych <= '`') goto yy544;
+ if (yych <= 'f') goto yy554;
+ goto yy544;
}
-yy561:
+yy551:
yych = (YYCTYPE)*++YYCURSOR;
if (yych <= '@') {
- if (yych <= '/') goto yy554;
- if (yych <= '9') goto yy557;
- goto yy554;
+ if (yych <= '/') goto yy544;
+ if (yych <= '9') goto yy547;
+ goto yy544;
} else {
- if (yych <= 'F') goto yy557;
- if (yych <= '`') goto yy554;
- if (yych <= 'f') goto yy557;
- goto yy554;
+ if (yych <= 'F') goto yy547;
+ if (yych <= '`') goto yy544;
+ if (yych <= 'f') goto yy547;
+ goto yy544;
}
-yy562:
+yy552:
++YYCURSOR;
-#line 579 "../src/ast/lex.re"
+#line 569 "../src/ast/lex.re"
{ return unesc_hex(tok, cur); }
-#line 3348 "src/ast/lex.cc"
-yy564:
+#line 3279 "src/ast/lex.cc"
+yy554:
yych = (YYCTYPE)*++YYCURSOR;
if (yych <= '@') {
- if (yych <= '/') goto yy554;
- if (yych >= ':') goto yy554;
+ if (yych <= '/') goto yy544;
+ if (yych >= ':') goto yy544;
} else {
- if (yych <= 'F') goto yy565;
- if (yych <= '`') goto yy554;
- if (yych >= 'g') goto yy554;
+ if (yych <= 'F') goto yy555;
+ if (yych <= '`') goto yy544;
+ if (yych >= 'g') goto yy544;
}
-yy565:
+yy555:
yych = (YYCTYPE)*++YYCURSOR;
if (yych <= '@') {
- if (yych <= '/') goto yy554;
- if (yych <= '9') goto yy556;
- goto yy554;
+ if (yych <= '/') goto yy544;
+ if (yych <= '9') goto yy546;
+ goto yy544;
} else {
- if (yych <= 'F') goto yy556;
- if (yych <= '`') goto yy554;
- if (yych <= 'f') goto yy556;
- goto yy554;
+ if (yych <= 'F') goto yy546;
+ if (yych <= '`') goto yy544;
+ if (yych <= 'f') goto yy546;
+ goto yy544;
}
}
-#line 595 "../src/ast/lex.re"
+#line 585 "../src/ast/lex.re"
}
sourceline:
tok = cur;
-#line 3392 "src/ast/lex.cc"
+#line 3323 "src/ast/lex.cc"
{
YYCTYPE yych;
static const unsigned char yybm[] = {
yych = (YYCTYPE)*YYCURSOR;
if (yych <= '\r') {
if (yych <= '\t') {
- if (yych >= 0x01) goto yy570;
+ if (yych >= 0x01) goto yy560;
} else {
- if (yych <= '\n') goto yy572;
- if (yych <= '\f') goto yy570;
- goto yy574;
+ if (yych <= '\n') goto yy562;
+ if (yych <= '\f') goto yy560;
+ goto yy564;
}
} else {
if (yych <= '"') {
- if (yych <= '!') goto yy570;
- goto yy575;
+ if (yych <= '!') goto yy560;
+ goto yy565;
} else {
- if (yych <= '0') goto yy570;
- if (yych <= '9') goto yy576;
- goto yy570;
+ if (yych <= '0') goto yy560;
+ if (yych <= '9') goto yy566;
+ goto yy560;
}
}
++YYCURSOR;
-#line 632 "../src/ast/lex.re"
+#line 622 "../src/ast/lex.re"
{
--cur;
tok = cur;
return;
}
-#line 3456 "src/ast/lex.cc"
-yy570:
+#line 3387 "src/ast/lex.cc"
+yy560:
++YYCURSOR;
-yy571:
-#line 638 "../src/ast/lex.re"
+yy561:
+#line 628 "../src/ast/lex.re"
{ goto sourceline; }
-#line 3462 "src/ast/lex.cc"
-yy572:
+#line 3393 "src/ast/lex.cc"
+yy562:
++YYCURSOR;
-#line 627 "../src/ast/lex.re"
+#line 617 "../src/ast/lex.re"
{
tok = cur;
return;
}
-#line 3470 "src/ast/lex.cc"
-yy574:
+#line 3401 "src/ast/lex.cc"
+yy564:
yych = (YYCTYPE)*++YYCURSOR;
- if (yych == '\n') goto yy572;
- goto yy571;
-yy575:
+ if (yych == '\n') goto yy562;
+ goto yy561;
+yy565:
yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
- if (yych <= 0x00) goto yy571;
- if (yych == '\n') goto yy571;
- goto yy580;
-yy576:
+ if (yych <= 0x00) goto yy561;
+ if (yych == '\n') goto yy561;
+ goto yy570;
+yy566:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = (YYCTYPE)*YYCURSOR;
if (yybm[0+yych] & 64) {
- goto yy576;
+ goto yy566;
}
-#line 614 "../src/ast/lex.re"
+#line 604 "../src/ast/lex.re"
{
if (!s_to_u32_unsafe (tok, cur, cline)) {
fatal_lc(get_cline(), get_column(), "line number overflow");
}
goto sourceline;
}
-#line 3494 "src/ast/lex.cc"
-yy579:
+#line 3425 "src/ast/lex.cc"
+yy569:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = (YYCTYPE)*YYCURSOR;
-yy580:
+yy570:
if (yybm[0+yych] & 128) {
- goto yy579;
+ goto yy569;
}
- if (yych <= '\n') goto yy581;
- if (yych <= '"') goto yy582;
- goto yy584;
-yy581:
+ if (yych <= '\n') goto yy571;
+ if (yych <= '"') goto yy572;
+ goto yy574;
+yy571:
YYCURSOR = YYMARKER;
- goto yy571;
-yy582:
+ goto yy561;
+yy572:
++YYCURSOR;
-#line 621 "../src/ast/lex.re"
+#line 611 "../src/ast/lex.re"
{
in.escaped_file_name = std::string (tok + 1, tok_len () - 2); // strip quotes
strrreplace (in.escaped_file_name, "\\", "\\\\");
goto sourceline;
}
-#line 3517 "src/ast/lex.cc"
-yy584:
+#line 3448 "src/ast/lex.cc"
+yy574:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = (YYCTYPE)*YYCURSOR;
- if (yych <= 0x00) goto yy581;
- if (yych == '\n') goto yy581;
- goto yy579;
+ if (yych <= 0x00) goto yy571;
+ if (yych == '\n') goto yy571;
+ goto yy569;
}
-#line 639 "../src/ast/lex.re"
+#line 629 "../src/ast/lex.re"
}