-/* Generated by re2c 1.1.1 on Wed Dec 26 11:34:46 2018 */
+/* Generated by re2c 1.1.1 on Thu Dec 27 21:57:09 2018 */
#line 1 "../src/ast/lex.re"
#include "src/util/c99_stdint.h"
#include <stddef.h>
#line 55 "../src/ast/lex.re"
-#line 113 "../src/ast/lex.re"
+#line 111 "../src/ast/lex.re"
Scanner::ParseMode Scanner::echo(Output &out)
}
}
++YYCURSOR;
-#line 209 "../src/ast/lex.re"
+#line 207 "../src/ast/lex.re"
{
if (!is_eof()) goto echo;
out.wraw(tok, ptr);
yy4:
++YYCURSOR;
yy5:
-#line 227 "../src/ast/lex.re"
+#line 224 "../src/ast/lex.re"
{ goto echo; }
#line 119 "src/ast/lex.cc"
yy6:
}
if (yych == '#') goto yy14;
yy7:
-#line 221 "../src/ast/lex.re"
+#line 219 "../src/ast/lex.re"
{
- cline++;
- pos = cur;
+ next_line();
goto echo;
}
-#line 134 "src/ast/lex.cc"
+#line 133 "src/ast/lex.cc"
yy8:
yych = (YYCTYPE)*++YYCURSOR;
if (yych == '\n') goto yy6;
}
yy16:
++YYCURSOR;
-#line 124 "../src/ast/lex.re"
+#line 122 "../src/ast/lex.re"
{
out.wraw(tok, ptr);
return Parse;
}
-#line 182 "src/ast/lex.cc"
+#line 181 "src/ast/lex.cc"
yy18:
yych = (YYCTYPE)*++YYCURSOR;
if (yych == '!') goto yy20;
yy82:
++YYCURSOR;
YYCURSOR = yyt1;
-#line 215 "../src/ast/lex.re"
+#line 213 "../src/ast/lex.re"
{
out.wraw(tok, ptr + 1);
set_sourceline();
goto echo;
}
-#line 484 "src/ast/lex.cc"
+#line 483 "src/ast/lex.cc"
yy84:
yych = (YYCTYPE)*++YYCURSOR;
if (yych == '\n') goto yy82;
goto yy13;
yy115:
++YYCURSOR;
-#line 145 "../src/ast/lex.re"
+#line 143 "../src/ast/lex.re"
{
out.wraw(tok, ptr);
out.wdelay_yymaxfill();
lex_end_of_comment(out);
goto echo;
}
-#line 624 "src/ast/lex.cc"
+#line 623 "src/ast/lex.cc"
yy117:
yych = (YYCTYPE)*++YYCURSOR;
if (yych == 'h') goto yy128;
goto yy13;
yy122:
++YYCURSOR;
-#line 134 "../src/ast/lex.re"
+#line 132 "../src/ast/lex.re"
{
out.wraw(tok, ptr);
return Reuse;
}
-#line 652 "src/ast/lex.cc"
+#line 651 "src/ast/lex.cc"
yy124:
yych = (YYCTYPE)*++YYCURSOR;
if (yych == 'r') goto yy133;
goto yy13;
yy138:
++YYCURSOR;
-#line 181 "../src/ast/lex.re"
+#line 179 "../src/ast/lex.re"
{
out.wraw(tok, ptr);
lex_tags(out, true);
goto echo;
}
-#line 717 "src/ast/lex.cc"
+#line 716 "src/ast/lex.cc"
yy140:
++YYCURSOR;
-#line 129 "../src/ast/lex.re"
+#line 127 "../src/ast/lex.re"
{
out.wraw(tok, ptr);
return Rules;
}
-#line 725 "src/ast/lex.cc"
+#line 724 "src/ast/lex.cc"
yy142:
++YYCURSOR;
-#line 175 "../src/ast/lex.re"
+#line 173 "../src/ast/lex.re"
{
out.wraw(tok, ptr);
lex_tags(out, false);
goto echo;
}
-#line 734 "src/ast/lex.cc"
+#line 733 "src/ast/lex.cc"
yy144:
++YYCURSOR;
-#line 166 "../src/ast/lex.re"
+#line 164 "../src/ast/lex.re"
{
out.wraw(tok, ptr);
out.wdelay_line_info_output();
out.wdelay_types();
- out.wdelay_line_info_input(cline, get_fname());
+ out.wdelay_line_info_input(get_line(), get_fname());
lex_end_of_comment(out);
goto echo;
}
-#line 746 "src/ast/lex.cc"
+#line 745 "src/ast/lex.cc"
yy146:
yych = (YYCTYPE)*++YYCURSOR;
if (yych == '2') goto yy152;
goto yy13;
yy148:
++YYCURSOR;
-#line 139 "../src/ast/lex.re"
+#line 137 "../src/ast/lex.re"
{
out.wraw(tok, ptr);
lex_end_of_comment(out);
goto echo;
}
-#line 763 "src/ast/lex.cc"
+#line 762 "src/ast/lex.cc"
yy150:
yych = (YYCTYPE)*++YYCURSOR;
if (yych == 'c') goto yy154;
goto yy13;
yy154:
++YYCURSOR;
-#line 203 "../src/ast/lex.re"
+#line 201 "../src/ast/lex.re"
{
out.wraw(tok, ptr);
lex_include();
goto echo;
}
-#line 788 "src/ast/lex.cc"
+#line 787 "src/ast/lex.cc"
yy156:
yych = (YYCTYPE)*++YYCURSOR;
if (yych == '2') goto yy160;
goto yy13;
yy157:
++YYCURSOR;
-#line 159 "../src/ast/lex.re"
+#line 157 "../src/ast/lex.re"
{
out.wraw(tok, ptr);
out.wdelay_state_goto(0);
lex_end_of_comment(out);
goto echo;
}
-#line 802 "src/ast/lex.cc"
+#line 801 "src/ast/lex.cc"
yy159:
yych = (YYCTYPE)*++YYCURSOR;
if (yych == 'f') goto yy161;
goto yy13;
yy162:
++YYCURSOR;
-#line 187 "../src/ast/lex.re"
+#line 185 "../src/ast/lex.re"
{
out.wraw(tok, ptr);
out.header_mode(true);
lex_end_of_comment(out);
goto echo;
}
-#line 826 "src/ast/lex.cc"
+#line 825 "src/ast/lex.cc"
yy164:
++YYCURSOR;
-#line 152 "../src/ast/lex.re"
+#line 150 "../src/ast/lex.re"
{
out.wraw(tok, ptr);
out.wdelay_yymaxnmatch();
lex_end_of_comment(out);
goto echo;
}
-#line 836 "src/ast/lex.cc"
+#line 835 "src/ast/lex.cc"
yy166:
++YYCURSOR;
-#line 195 "../src/ast/lex.re"
+#line 193 "../src/ast/lex.re"
{
out.wraw(tok, ptr);
out.header_mode(false);
- out.wdelay_line_info_input(cline, get_fname());
+ out.wdelay_line_info_input(get_line(), get_fname());
lex_end_of_comment(out);
goto echo;
}
-#line 847 "src/ast/lex.cc"
+#line 846 "src/ast/lex.cc"
}
-#line 228 "../src/ast/lex.re"
+#line 225 "../src/ast/lex.re"
}
void Scanner::lex_end_of_comment(Output &out)
{
- uint32_t ignored = 0;
+ bool multiline = false;
for (;;) {
+
#line 857 "src/ast/lex.cc"
{
YYCTYPE yych;
}
yy170:
++YYCURSOR;
-#line 235 "../src/ast/lex.re"
- { fatal_lc(get_cline(), get_column(), "expected end of block"); }
+#line 233 "../src/ast/lex.re"
+ { fatal_lc(get_line(), get_column(), "expected end of block"); }
#line 875 "src/ast/lex.cc"
yy172:
++YYCURSOR;
yy173:
-#line 237 "../src/ast/lex.re"
+#line 234 "../src/ast/lex.re"
{ continue; }
#line 881 "src/ast/lex.cc"
yy174:
++YYCURSOR;
-#line 238 "../src/ast/lex.re"
- { ++ignored; continue; }
+#line 235 "../src/ast/lex.re"
+ { next_line(); multiline = true; continue; }
#line 886 "src/ast/lex.cc"
yy176:
yych = (YYCTYPE)*++YYCURSOR;
yych = (YYCTYPE)*++YYCURSOR;
if (yych != '/') goto yy173;
++YYCURSOR;
-#line 239 "../src/ast/lex.re"
+#line 236 "../src/ast/lex.re"
{
- if (ignored > 0) {
- cline += ignored;
- out.wdelay_line_info_input(cline, get_fname());
+ if (multiline) {
+ out.wdelay_line_info_input(get_line(), get_fname());
}
- tok = pos = cur;
+ tok = cur;
return;
}
-#line 904 "src/ast/lex.cc"
+#line 903 "src/ast/lex.cc"
}
-#line 247 "../src/ast/lex.re"
+#line 243 "../src/ast/lex.re"
}
}
{
const char *x, *y;
-#line 914 "src/ast/lex.cc"
+#line 913 "src/ast/lex.cc"
{
YYCTYPE yych;
static const unsigned char yybm[] = {
if (yych == ' ') goto yy184;
++YYCURSOR;
yy183:
-#line 254 "../src/ast/lex.re"
+#line 250 "../src/ast/lex.re"
{
- fatal_lc(get_cline(), get_column()
+ fatal_lc(get_line(), get_column()
, "syntax error in include directive");
}
-#line 962 "src/ast/lex.cc"
+#line 961 "src/ast/lex.cc"
yy184:
yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
if (yybm[0+yych] & 64) {
++YYCURSOR;
x = yyt1;
y = yyt2;
-#line 259 "../src/ast/lex.re"
+#line 255 "../src/ast/lex.re"
{
include(std::string(x + 1, static_cast<size_t>(y - x) - 2));
return;
}
-#line 1043 "src/ast/lex.cc"
+#line 1042 "src/ast/lex.cc"
}
-#line 263 "../src/ast/lex.re"
+#line 259 "../src/ast/lex.re"
}
{
std::string fmt, sep;
for (;;) {
+
#line 1053 "src/ast/lex.cc"
{
YYCTYPE yych;
}
++YYCURSOR;
yy200:
-#line 270 "../src/ast/lex.re"
- { fatal_lc(get_cline(), get_column(), "unrecognized configuration"); }
+#line 267 "../src/ast/lex.re"
+ { fatal_lc(get_line(), get_column(), "unrecognized configuration"); }
#line 1113 "src/ast/lex.cc"
yy201:
++YYCURSOR;
if (yybm[0+yych] & 128) {
goto yy201;
}
-#line 275 "../src/ast/lex.re"
+#line 272 "../src/ast/lex.re"
{ continue; }
#line 1123 "src/ast/lex.cc"
yy204:
++YYCURSOR;
-#line 276 "../src/ast/lex.re"
- { ++cline; continue; }
+#line 273 "../src/ast/lex.re"
+ { next_line(); continue; }
#line 1128 "src/ast/lex.cc"
yy206:
yych = (YYCTYPE)*++YYCURSOR;
goto yy200;
yy210:
++YYCURSOR;
-#line 277 "../src/ast/lex.re"
+#line 274 "../src/ast/lex.re"
{
out.wdelay_tags(new ConfTags(fmt, sep), mtags);
- tok = pos = cur;
+ tok = cur;
return;
}
#line 1153 "src/ast/lex.cc"
goto yy213;
yy221:
++YYCURSOR;
-#line 272 "../src/ast/lex.re"
+#line 269 "../src/ast/lex.re"
{ fmt = lex_conf_string(); continue; }
#line 1192 "src/ast/lex.cc"
yy223:
yych = (YYCTYPE)*++YYCURSOR;
if (yych != 'r') goto yy213;
++YYCURSOR;
-#line 273 "../src/ast/lex.re"
+#line 270 "../src/ast/lex.re"
{ sep = lex_conf_string(); continue; }
#line 1203 "src/ast/lex.cc"
}
-#line 282 "../src/ast/lex.re"
+#line 279 "../src/ast/lex.re"
}
}
yy230:
++YYCURSOR;
yy231:
-#line 409 "../src/ast/lex.re"
+#line 405 "../src/ast/lex.re"
{
- fatal_lc(get_cline(), get_column(), "unexpected character: '%c'", *tok);
+ fatal_lc(get_line(), get_column(), "unexpected character: '%c'", *tok);
goto scan;
}
#line 1331 "src/ast/lex.cc"
if (yybm[0+yych] & 16) {
goto yy232;
}
-#line 390 "../src/ast/lex.re"
+#line 387 "../src/ast/lex.re"
{ goto scan; }
#line 1341 "src/ast/lex.cc"
yy235:
if (yych == '#') goto yy265;
}
yy236:
-#line 397 "../src/ast/lex.re"
+#line 394 "../src/ast/lex.re"
{
- pos = cur;
- cline++;
+ next_line();
if (lexer_state == LEX_FLEX_NAME) {
lexer_state = LEX_NORMAL;
return TOKEN_FID_END;
goto scan;
}
}
-#line 1364 "src/ast/lex.cc"
+#line 1363 "src/ast/lex.cc"
yy237:
yych = (YYCTYPE)*++YYCURSOR;
if (yych == '\n') goto yy235;
goto yy231;
yy238:
++YYCURSOR;
-#line 308 "../src/ast/lex.re"
+#line 305 "../src/ast/lex.re"
{ yylval.regexp = lex_str('"'); return TOKEN_REGEXP; }
-#line 1373 "src/ast/lex.cc"
+#line 1372 "src/ast/lex.cc"
yy240:
yych = (YYCTYPE)*++YYCURSOR;
if (yych <= '^') {
yy241:
++YYCURSOR;
yy242:
-#line 318 "../src/ast/lex.re"
+#line 315 "../src/ast/lex.re"
{ return *tok; }
-#line 1390 "src/ast/lex.cc"
+#line 1389 "src/ast/lex.cc"
yy243:
yych = (YYCTYPE)*++YYCURSOR;
if (yych == '}') goto yy270;
goto yy231;
yy244:
++YYCURSOR;
-#line 307 "../src/ast/lex.re"
+#line 304 "../src/ast/lex.re"
{ yylval.regexp = lex_str('\''); return TOKEN_REGEXP; }
-#line 1399 "src/ast/lex.cc"
+#line 1398 "src/ast/lex.cc"
yy246:
yych = (YYCTYPE)*++YYCURSOR;
if (yych == '/') goto yy270;
goto yy242;
yy247:
++YYCURSOR;
-#line 385 "../src/ast/lex.re"
+#line 382 "../src/ast/lex.re"
{
- yylval.regexp = ast_dot(cline, get_column());
+ yylval.regexp = ast_dot(get_line(), get_column());
return TOKEN_REGEXP;
}
-#line 1411 "src/ast/lex.cc"
+#line 1410 "src/ast/lex.cc"
yy249:
yych = (YYCTYPE)*++YYCURSOR;
if (yych == '*') goto yy272;
goto yy231;
yy251:
++YYCURSOR;
-#line 300 "../src/ast/lex.re"
+#line 297 "../src/ast/lex.re"
{ return lex_clist(); }
-#line 1425 "src/ast/lex.cc"
+#line 1424 "src/ast/lex.cc"
yy253:
yyaccept = 1;
yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
if (yybm[0+yych] & 32) {
goto yy254;
}
-#line 362 "../src/ast/lex.re"
+#line 359 "../src/ast/lex.re"
{
if (!globopts->FFlag || lex_namedef_context_re2c()) {
yylval.str = new std::string (tok, tok_len());
col = static_cast<uint32_t>(s - tok);
str->push_back(ASTChar(chr, col));
}
- yylval.regexp = ast_str(cline, get_column(), str, false);
+ yylval.regexp = ast_str(get_line(), get_column(), str, false);
return TOKEN_REGEXP;
}
}
-#line 1462 "src/ast/lex.cc"
+#line 1461 "src/ast/lex.cc"
yy257:
yych = (YYCTYPE)*++YYCURSOR;
if (yych == '^') goto yy280;
-#line 309 "../src/ast/lex.re"
+#line 306 "../src/ast/lex.re"
{ yylval.regexp = lex_cls(false); return TOKEN_REGEXP; }
-#line 1468 "src/ast/lex.cc"
+#line 1467 "src/ast/lex.cc"
yy259:
yych = (YYCTYPE)*++YYCURSOR;
if (yych == 'e') goto yy282;
}
}
yy261:
-#line 292 "../src/ast/lex.re"
+#line 289 "../src/ast/lex.re"
{ lex_code_in_braces(); return TOKEN_CODE; }
-#line 1493 "src/ast/lex.cc"
+#line 1492 "src/ast/lex.cc"
yy262:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
}
}
yy269:
-#line 312 "../src/ast/lex.re"
+#line 309 "../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] == '#');
+ yylval.regexp = ast_tag(get_line(), get_column(), name, tok[0] == '#');
return TOKEN_REGEXP;
}
-#line 1558 "src/ast/lex.cc"
+#line 1557 "src/ast/lex.cc"
yy270:
++YYCURSOR;
-#line 305 "../src/ast/lex.re"
+#line 302 "../src/ast/lex.re"
{ tok = cur; return 0; }
-#line 1563 "src/ast/lex.cc"
+#line 1562 "src/ast/lex.cc"
yy272:
++YYCURSOR;
-#line 303 "../src/ast/lex.re"
+#line 300 "../src/ast/lex.re"
{ lex_c_comment(); goto scan; }
-#line 1568 "src/ast/lex.cc"
+#line 1567 "src/ast/lex.cc"
yy274:
++YYCURSOR;
-#line 302 "../src/ast/lex.re"
+#line 299 "../src/ast/lex.re"
{ lex_cpp_comment(); goto scan; }
-#line 1573 "src/ast/lex.cc"
+#line 1572 "src/ast/lex.cc"
yy276:
yyaccept = 3;
yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
if (yych == '>') goto yy278;
yy277:
-#line 293 "../src/ast/lex.re"
+#line 290 "../src/ast/lex.re"
{ lex_code_indented(); return TOKEN_CODE; }
-#line 1581 "src/ast/lex.cc"
+#line 1580 "src/ast/lex.cc"
yy278:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
}
yy280:
++YYCURSOR;
-#line 310 "../src/ast/lex.re"
+#line 307 "../src/ast/lex.re"
{ yylval.regexp = lex_cls(true); return TOKEN_REGEXP; }
-#line 1616 "src/ast/lex.cc"
+#line 1615 "src/ast/lex.cc"
yy282:
yych = (YYCTYPE)*++YYCURSOR;
if (yych == '2') goto yy293;
yy283:
++YYCURSOR;
yy284:
-#line 346 "../src/ast/lex.re"
+#line 343 "../src/ast/lex.re"
{
- fatal_lc(get_cline(), get_column(),
+ fatal_lc(get_line(), get_column(),
"illegal closure form, use '{n}', '{n,}', '{n,m}' where n and m are numbers");
}
-#line 1629 "src/ast/lex.cc"
+#line 1628 "src/ast/lex.cc"
yy285:
++YYCURSOR;
if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
}
yy292:
p = yyt1;
-#line 295 "../src/ast/lex.re"
+#line 292 "../src/ast/lex.re"
{
yylval.str = new std::string(p, static_cast<size_t>(cur - p));
return tok[0] == ':' ? TOKEN_CJUMP : TOKEN_CNEXT;
}
-#line 1692 "src/ast/lex.cc"
+#line 1691 "src/ast/lex.cc"
yy293:
yych = (YYCTYPE)*++YYCURSOR;
if (yych == 'c') goto yy300;
goto yy284;
yy295:
++YYCURSOR;
-#line 320 "../src/ast/lex.re"
+#line 317 "../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");
+ fatal_lc(get_line(), get_column(), "repetition count overflow");
}
yylval.bounds.max = yylval.bounds.min;
return TOKEN_CLOSESIZE;
}
-#line 1714 "src/ast/lex.cc"
+#line 1713 "src/ast/lex.cc"
yy297:
++YYCURSOR;
-#line 351 "../src/ast/lex.re"
+#line 348 "../src/ast/lex.re"
{
if (!globopts->FFlag) {
- fatal_lc(get_cline(), get_column(),
+ fatal_lc(get_line(), get_column(),
"curly braces for names only allowed with -F switch");
}
yylval.str = new std::string (tok + 1, tok_len () - 2); // -2 to omit braces
return TOKEN_ID;
}
-#line 1726 "src/ast/lex.cc"
+#line 1725 "src/ast/lex.cc"
yy299:
yych = (YYCTYPE)*++YYCURSOR;
if (yych == 'n') goto yy305;
goto yy264;
yy303:
++YYCURSOR;
-#line 338 "../src/ast/lex.re"
+#line 335 "../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");
+ fatal_lc(get_line(), get_column(), "repetition lower bound overflow");
}
yylval.bounds.max = std::numeric_limits<uint32_t>::max();
return TOKEN_CLOSESIZE;
}
-#line 1753 "src/ast/lex.cc"
+#line 1752 "src/ast/lex.cc"
yy305:
yych = (YYCTYPE)*++YYCURSOR;
if (yych == 'e') goto yy310;
goto yy264;
yy306:
++YYCURSOR;
-#line 360 "../src/ast/lex.re"
+#line 357 "../src/ast/lex.re"
{ return TOKEN_CONF; }
-#line 1762 "src/ast/lex.cc"
+#line 1761 "src/ast/lex.cc"
yy308:
++YYCURSOR;
p = yyt1;
-#line 328 "../src/ast/lex.re"
+#line 325 "../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");
+ fatal_lc(get_line(), get_column(), "repetition lower bound overflow");
}
if (!s_to_u32_unsafe (p + 1, cur - 1, yylval.bounds.max)) {
- fatal_lc(get_cline(), get_column(), "repetition upper bound overflow");
+ fatal_lc(get_line(), get_column(), "repetition upper bound overflow");
}
return TOKEN_CLOSESIZE;
}
-#line 1776 "src/ast/lex.cc"
+#line 1775 "src/ast/lex.cc"
yy310:
yych = (YYCTYPE)*++YYCURSOR;
if (yych <= '0') goto yy312;
yy317:
++YYCURSOR;
YYCURSOR = yyt1;
-#line 392 "../src/ast/lex.re"
+#line 389 "../src/ast/lex.re"
{
set_sourceline ();
return TOKEN_LINE_INFO;
}
-#line 1837 "src/ast/lex.cc"
+#line 1836 "src/ast/lex.cc"
yy319:
yych = (YYCTYPE)*++YYCURSOR;
if (yych == '\n') goto yy317;
if (yych == '\n') goto yy264;
goto yy320;
}
-#line 413 "../src/ast/lex.re"
+#line 409 "../src/ast/lex.re"
}
bool Scanner::lex_namedef_context_re2c()
{
-#line 1870 "src/ast/lex.cc"
+#line 1869 "src/ast/lex.cc"
{
YYCTYPE yych;
static const unsigned char yybm[] = {
}
}
yy326:
-#line 420 "../src/ast/lex.re"
+#line 416 "../src/ast/lex.re"
{ return false; }
-#line 1927 "src/ast/lex.cc"
+#line 1926 "src/ast/lex.cc"
yy327:
++YYCURSOR;
if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
if (yych == '>') goto yy329;
++YYCURSOR;
YYCURSOR = yyt1;
-#line 419 "../src/ast/lex.re"
+#line 415 "../src/ast/lex.re"
{ return true; }
-#line 1946 "src/ast/lex.cc"
+#line 1945 "src/ast/lex.cc"
}
-#line 421 "../src/ast/lex.re"
+#line 417 "../src/ast/lex.re"
}
bool Scanner::lex_namedef_context_flex()
{
-#line 1955 "src/ast/lex.cc"
+#line 1954 "src/ast/lex.cc"
{
YYCTYPE yych;
static const unsigned char yybm[] = {
yyt1 = YYCURSOR;
goto yy336;
}
-#line 429 "../src/ast/lex.re"
+#line 425 "../src/ast/lex.re"
{ return false; }
-#line 2004 "src/ast/lex.cc"
+#line 2003 "src/ast/lex.cc"
yy336:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
if (yych == '{') goto yy339;
}
YYCURSOR = yyt1;
-#line 428 "../src/ast/lex.re"
+#line 424 "../src/ast/lex.re"
{ return true; }
-#line 2021 "src/ast/lex.cc"
+#line 2020 "src/ast/lex.cc"
yy339:
++YYCURSOR;
YYCURSOR = yyt1;
-#line 427 "../src/ast/lex.re"
+#line 423 "../src/ast/lex.re"
{ return false; }
-#line 2027 "src/ast/lex.cc"
+#line 2026 "src/ast/lex.cc"
}
-#line 430 "../src/ast/lex.re"
+#line 426 "../src/ast/lex.re"
}
int kind = TOKEN_CLIST;
CondList *cl = new CondList;
-#line 2038 "src/ast/lex.cc"
+#line 2037 "src/ast/lex.cc"
{
YYCTYPE yych;
static const unsigned char yybm[] = {
if (yych <= '!') goto yy345;
if (yych == '>') goto yy348;
yy344:
-#line 440 "../src/ast/lex.re"
+#line 436 "../src/ast/lex.re"
{ goto cond; }
-#line 2090 "src/ast/lex.cc"
+#line 2089 "src/ast/lex.cc"
yy345:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = (YYCTYPE)*YYCURSOR;
if (yych == '\t') goto yy345;
if (yych == ' ') goto yy345;
-#line 438 "../src/ast/lex.re"
+#line 434 "../src/ast/lex.re"
{ kind = TOKEN_CSETUP; goto cond; }
-#line 2099 "src/ast/lex.cc"
+#line 2098 "src/ast/lex.cc"
yy348:
++YYCURSOR;
-#line 439 "../src/ast/lex.re"
+#line 435 "../src/ast/lex.re"
{ kind = TOKEN_CZERO; goto end; }
-#line 2104 "src/ast/lex.cc"
+#line 2103 "src/ast/lex.cc"
}
-#line 441 "../src/ast/lex.re"
+#line 437 "../src/ast/lex.re"
cond:
tok = cur;
-#line 2111 "src/ast/lex.cc"
+#line 2110 "src/ast/lex.cc"
{
YYCTYPE yych;
static const unsigned char yybm[] = {
}
yy352:
++YYCURSOR;
-#line 447 "../src/ast/lex.re"
+#line 443 "../src/ast/lex.re"
{ goto error; }
-#line 2165 "src/ast/lex.cc"
+#line 2164 "src/ast/lex.cc"
yy354:
++YYCURSOR;
-#line 446 "../src/ast/lex.re"
+#line 442 "../src/ast/lex.re"
{ if (!cl->empty()) goto error; cl->insert("*"); goto next; }
-#line 2170 "src/ast/lex.cc"
+#line 2169 "src/ast/lex.cc"
yy356:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
if (yybm[0+yych] & 128) {
goto yy356;
}
-#line 445 "../src/ast/lex.re"
+#line 441 "../src/ast/lex.re"
{ cl->insert(std::string(tok, tok_len())); goto next; }
-#line 2180 "src/ast/lex.cc"
+#line 2179 "src/ast/lex.cc"
}
-#line 448 "../src/ast/lex.re"
+#line 444 "../src/ast/lex.re"
next:
-#line 2186 "src/ast/lex.cc"
+#line 2185 "src/ast/lex.cc"
{
YYCTYPE yych;
static const unsigned char yybm[] = {
}
++YYCURSOR;
yy362:
-#line 453 "../src/ast/lex.re"
+#line 449 "../src/ast/lex.re"
{ goto error; }
-#line 2239 "src/ast/lex.cc"
+#line 2238 "src/ast/lex.cc"
yy363:
yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
if (yych <= ' ') {
if (yybm[0+yych] & 128) {
goto yy364;
}
-#line 451 "../src/ast/lex.re"
+#line 447 "../src/ast/lex.re"
{ goto cond; }
-#line 2263 "src/ast/lex.cc"
+#line 2262 "src/ast/lex.cc"
yy367:
++YYCURSOR;
-#line 452 "../src/ast/lex.re"
+#line 448 "../src/ast/lex.re"
{ goto end; }
-#line 2268 "src/ast/lex.cc"
+#line 2267 "src/ast/lex.cc"
yy369:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
YYCURSOR = YYMARKER;
goto yy362;
}
-#line 454 "../src/ast/lex.re"
+#line 450 "../src/ast/lex.re"
end:
yylval.clist = cl;
return kind;
error:
delete cl;
- fatal_l(get_cline(), "syntax error in condition list");
+ fatal_l(get_line(), "syntax error in condition list");
}
void Scanner::lex_code_indented()
{
- const uint32_t line = cline;
+ const uint32_t line = get_line();
tok = cur;
code:
-#line 2302 "src/ast/lex.cc"
+#line 2301 "src/ast/lex.cc"
{
YYCTYPE yych;
if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
}
yy374:
++YYCURSOR;
-#line 477 "../src/ast/lex.re"
+#line 473 "../src/ast/lex.re"
{ fail_if_eof(); goto code; }
-#line 2332 "src/ast/lex.cc"
+#line 2331 "src/ast/lex.cc"
yy376:
++YYCURSOR;
yy377:
-#line 482 "../src/ast/lex.re"
+#line 478 "../src/ast/lex.re"
{ goto code; }
-#line 2338 "src/ast/lex.cc"
+#line 2337 "src/ast/lex.cc"
yy378:
yych = (YYCTYPE)*++YYCURSOR;
if (yych <= '\f') {
if (yych == ' ') goto yy386;
}
yy379:
-#line 470 "../src/ast/lex.re"
+#line 466 "../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 2356 "src/ast/lex.cc"
+#line 2355 "src/ast/lex.cc"
yy380:
yych = (YYCTYPE)*++YYCURSOR;
if (yych == '\n') goto yy378;
goto yy377;
yy381:
++YYCURSOR;
-#line 481 "../src/ast/lex.re"
+#line 477 "../src/ast/lex.re"
{ lex_string(cur[-1]); goto code; }
-#line 2365 "src/ast/lex.cc"
+#line 2364 "src/ast/lex.cc"
yy383:
yych = (YYCTYPE)*++YYCURSOR;
if (yych == '*') goto yy388;
goto yy377;
yy384:
++YYCURSOR;
-#line 478 "../src/ast/lex.re"
- { fatal_l(get_cline(), "Curly braces are not allowed after ':='"); }
-#line 2375 "src/ast/lex.cc"
+#line 474 "../src/ast/lex.re"
+ { fatal_l(get_line(), "Curly braces are not allowed after ':='"); }
+#line 2374 "src/ast/lex.cc"
yy386:
++YYCURSOR;
YYCURSOR -= 1;
-#line 469 "../src/ast/lex.re"
+#line 465 "../src/ast/lex.re"
{ goto code; }
-#line 2381 "src/ast/lex.cc"
+#line 2380 "src/ast/lex.cc"
yy388:
++YYCURSOR;
-#line 479 "../src/ast/lex.re"
+#line 475 "../src/ast/lex.re"
{ lex_c_comment(); goto code; }
-#line 2386 "src/ast/lex.cc"
+#line 2385 "src/ast/lex.cc"
yy390:
++YYCURSOR;
-#line 480 "../src/ast/lex.re"
+#line 476 "../src/ast/lex.re"
{ lex_cpp_comment(); goto code; }
-#line 2391 "src/ast/lex.cc"
+#line 2390 "src/ast/lex.cc"
}
-#line 483 "../src/ast/lex.re"
+#line 479 "../src/ast/lex.re"
}
void Scanner::lex_code_in_braces()
{
- const uint32_t line = cline;
+ const uint32_t line = get_line();
uint32_t depth = 1;
code:
-#line 2403 "src/ast/lex.cc"
+#line 2402 "src/ast/lex.cc"
{
YYCTYPE yych;
static const unsigned char yybm[] = {
}
yy394:
++YYCURSOR;
-#line 503 "../src/ast/lex.re"
+#line 499 "../src/ast/lex.re"
{ fail_if_eof(); goto code; }
-#line 2467 "src/ast/lex.cc"
+#line 2466 "src/ast/lex.cc"
yy396:
++YYCURSOR;
yy397:
-#line 507 "../src/ast/lex.re"
+#line 503 "../src/ast/lex.re"
{ goto code; }
-#line 2473 "src/ast/lex.cc"
+#line 2472 "src/ast/lex.cc"
yy398:
yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
if (yybm[0+yych] & 32) {
}
if (yych == '#') goto yy411;
yy399:
-#line 502 "../src/ast/lex.re"
- { pos = cur; cline++; goto code; }
-#line 2483 "src/ast/lex.cc"
+#line 498 "../src/ast/lex.re"
+ { next_line(); goto code; }
+#line 2482 "src/ast/lex.cc"
yy400:
yych = (YYCTYPE)*++YYCURSOR;
if (yych == '\n') goto yy398;
goto yy397;
yy401:
++YYCURSOR;
-#line 506 "../src/ast/lex.re"
+#line 502 "../src/ast/lex.re"
{ lex_string(cur[-1]); goto code; }
-#line 2492 "src/ast/lex.cc"
+#line 2491 "src/ast/lex.cc"
yy403:
yych = (YYCTYPE)*++YYCURSOR;
if (yych == '*') goto yy413;
goto yy397;
yy404:
++YYCURSOR;
-#line 500 "../src/ast/lex.re"
+#line 496 "../src/ast/lex.re"
{ ++depth; goto code; }
-#line 2502 "src/ast/lex.cc"
+#line 2501 "src/ast/lex.cc"
yy406:
++YYCURSOR;
-#line 492 "../src/ast/lex.re"
+#line 488 "../src/ast/lex.re"
{
if (--depth == 0) {
yylval.code = new Code(get_fname (), line, tok, tok_len ());
}
goto code;
}
-#line 2513 "src/ast/lex.cc"
+#line 2512 "src/ast/lex.cc"
yy408:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
}
yy413:
++YYCURSOR;
-#line 504 "../src/ast/lex.re"
+#line 500 "../src/ast/lex.re"
{ lex_c_comment(); goto code; }
-#line 2541 "src/ast/lex.cc"
+#line 2540 "src/ast/lex.cc"
yy415:
++YYCURSOR;
-#line 505 "../src/ast/lex.re"
+#line 501 "../src/ast/lex.re"
{ lex_cpp_comment(); goto code; }
-#line 2546 "src/ast/lex.cc"
+#line 2545 "src/ast/lex.cc"
yy417:
yych = (YYCTYPE)*++YYCURSOR;
if (yych != 'i') goto yy410;
yy427:
++YYCURSOR;
YYCURSOR = yyt1;
-#line 501 "../src/ast/lex.re"
+#line 497 "../src/ast/lex.re"
{ set_sourceline (); goto code; }
-#line 2605 "src/ast/lex.cc"
+#line 2604 "src/ast/lex.cc"
yy429:
yych = (YYCTYPE)*++YYCURSOR;
if (yych == '\n') goto yy427;
if (yych == '\n') goto yy410;
goto yy430;
}
-#line 508 "../src/ast/lex.re"
+#line 504 "../src/ast/lex.re"
}
{
loop:
-#line 2639 "src/ast/lex.cc"
+#line 2638 "src/ast/lex.cc"
{
YYCTYPE yych;
if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
}
yy436:
++YYCURSOR;
-#line 518 "../src/ast/lex.re"
+#line 514 "../src/ast/lex.re"
{ fail_if_eof(); goto loop; }
-#line 2667 "src/ast/lex.cc"
+#line 2666 "src/ast/lex.cc"
yy438:
++YYCURSOR;
yy439:
-#line 519 "../src/ast/lex.re"
+#line 515 "../src/ast/lex.re"
{ goto loop; }
-#line 2673 "src/ast/lex.cc"
+#line 2672 "src/ast/lex.cc"
yy440:
++YYCURSOR;
-#line 517 "../src/ast/lex.re"
- { pos = cur; ++cline; goto loop; }
-#line 2678 "src/ast/lex.cc"
+#line 513 "../src/ast/lex.re"
+ { next_line(); goto loop; }
+#line 2677 "src/ast/lex.cc"
yy442:
yych = (YYCTYPE)*++YYCURSOR;
if (yych == '\n') goto yy440;
goto yy439;
yy443:
++YYCURSOR;
-#line 515 "../src/ast/lex.re"
+#line 511 "../src/ast/lex.re"
{ if (cur[-1] == delim) return; else goto loop; }
-#line 2687 "src/ast/lex.cc"
+#line 2686 "src/ast/lex.cc"
yy445:
yych = (YYCTYPE)*++YYCURSOR;
if (yych <= '&') {
}
yy446:
++YYCURSOR;
-#line 516 "../src/ast/lex.re"
+#line 512 "../src/ast/lex.re"
{ goto loop; }
-#line 2700 "src/ast/lex.cc"
+#line 2699 "src/ast/lex.cc"
}
-#line 520 "../src/ast/lex.re"
+#line 516 "../src/ast/lex.re"
}
{
loop:
-#line 2710 "src/ast/lex.cc"
+#line 2709 "src/ast/lex.cc"
{
YYCTYPE yych;
if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
}
yy450:
++YYCURSOR;
-#line 529 "../src/ast/lex.re"
+#line 525 "../src/ast/lex.re"
{ fail_if_eof(); goto loop; }
-#line 2728 "src/ast/lex.cc"
+#line 2727 "src/ast/lex.cc"
yy452:
++YYCURSOR;
yy453:
-#line 530 "../src/ast/lex.re"
+#line 526 "../src/ast/lex.re"
{ goto loop; }
-#line 2734 "src/ast/lex.cc"
+#line 2733 "src/ast/lex.cc"
yy454:
++YYCURSOR;
-#line 528 "../src/ast/lex.re"
- { pos = cur; ++cline; goto loop; }
-#line 2739 "src/ast/lex.cc"
+#line 524 "../src/ast/lex.re"
+ { next_line(); goto loop; }
+#line 2738 "src/ast/lex.cc"
yy456:
yych = (YYCTYPE)*++YYCURSOR;
if (yych == '\n') goto yy454;
yych = (YYCTYPE)*++YYCURSOR;
if (yych != '/') goto yy453;
++YYCURSOR;
-#line 527 "../src/ast/lex.re"
+#line 523 "../src/ast/lex.re"
{ return; }
-#line 2750 "src/ast/lex.cc"
+#line 2749 "src/ast/lex.cc"
}
-#line 531 "../src/ast/lex.re"
+#line 527 "../src/ast/lex.re"
}
{
loop:
-#line 2760 "src/ast/lex.cc"
+#line 2759 "src/ast/lex.cc"
{
YYCTYPE yych;
if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
}
yy462:
++YYCURSOR;
-#line 539 "../src/ast/lex.re"
+#line 535 "../src/ast/lex.re"
{ fail_if_eof(); goto loop; }
-#line 2777 "src/ast/lex.cc"
+#line 2776 "src/ast/lex.cc"
yy464:
++YYCURSOR;
yy465:
-#line 540 "../src/ast/lex.re"
+#line 536 "../src/ast/lex.re"
{ goto loop; }
-#line 2783 "src/ast/lex.cc"
+#line 2782 "src/ast/lex.cc"
yy466:
++YYCURSOR;
-#line 538 "../src/ast/lex.re"
- { pos = cur; ++cline; return; }
-#line 2788 "src/ast/lex.cc"
+#line 534 "../src/ast/lex.re"
+ { next_line(); return; }
+#line 2787 "src/ast/lex.cc"
yy468:
yych = (YYCTYPE)*++YYCURSOR;
if (yych == '\n') goto yy466;
goto yy465;
}
-#line 541 "../src/ast/lex.re"
+#line 537 "../src/ast/lex.re"
}
tok = cur;
c = get_column();
-#line 2806 "src/ast/lex.cc"
+#line 2805 "src/ast/lex.cc"
{
YYCTYPE yych;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = (YYCTYPE)*YYCURSOR;
if (yych == ']') goto yy472;
-#line 553 "../src/ast/lex.re"
+#line 549 "../src/ast/lex.re"
{ l = lex_cls_chr(); goto snd; }
-#line 2814 "src/ast/lex.cc"
+#line 2813 "src/ast/lex.cc"
yy472:
++YYCURSOR;
-#line 552 "../src/ast/lex.re"
- { return ast_cls(cline, c0, cls, neg); }
-#line 2819 "src/ast/lex.cc"
+#line 548 "../src/ast/lex.re"
+ { return ast_cls(get_line(), c0, cls, neg); }
+#line 2818 "src/ast/lex.cc"
}
-#line 554 "../src/ast/lex.re"
+#line 550 "../src/ast/lex.re"
snd:
-#line 2825 "src/ast/lex.cc"
+#line 2824 "src/ast/lex.cc"
{
YYCTYPE yych;
if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = (YYCTYPE)*(YYMARKER = YYCURSOR);
if (yych == '-') goto yy477;
yy476:
-#line 557 "../src/ast/lex.re"
+#line 553 "../src/ast/lex.re"
{ u = l; goto add; }
-#line 2834 "src/ast/lex.cc"
+#line 2833 "src/ast/lex.cc"
yy477:
yych = (YYCTYPE)*++YYCURSOR;
if (yych != ']') goto yy479;
yy479:
++YYCURSOR;
YYCURSOR -= 1;
-#line 558 "../src/ast/lex.re"
+#line 554 "../src/ast/lex.re"
{
u = lex_cls_chr();
if (l > u) {
- warn.swapped_range(cline, l, u);
+ warn.swapped_range(get_line(), l, u);
std::swap(l, u);
}
goto add;
}
-#line 2852 "src/ast/lex.cc"
+#line 2851 "src/ast/lex.cc"
}
-#line 566 "../src/ast/lex.re"
+#line 562 "../src/ast/lex.re"
add:
cls->push_back(ASTRange(l, u, c));
uint32_t Scanner::lex_cls_chr()
{
tok = cur;
- const uint32_t l = get_cline(), c = get_column();
+ const uint32_t l = get_line(), c = get_column();
-#line 2866 "src/ast/lex.cc"
+#line 2865 "src/ast/lex.cc"
{
YYCTYPE yych;
unsigned int yyaccept = 0;
}
yy483:
++YYCURSOR;
-#line 578 "../src/ast/lex.re"
+#line 574 "../src/ast/lex.re"
{ fail_if_eof(); return 0; }
-#line 2885 "src/ast/lex.cc"
+#line 2884 "src/ast/lex.cc"
yy485:
++YYCURSOR;
yy486:
-#line 584 "../src/ast/lex.re"
+#line 580 "../src/ast/lex.re"
{ return static_cast<uint8_t>(tok[0]); }
-#line 2891 "src/ast/lex.cc"
+#line 2890 "src/ast/lex.cc"
yy487:
++YYCURSOR;
-#line 579 "../src/ast/lex.re"
+#line 575 "../src/ast/lex.re"
{ fatal_lc(l, c, "newline in character class"); }
-#line 2896 "src/ast/lex.cc"
+#line 2895 "src/ast/lex.cc"
yy489:
yych = (YYCTYPE)*++YYCURSOR;
if (yych == '\n') goto yy487;
}
}
yy491:
-#line 582 "../src/ast/lex.re"
+#line 578 "../src/ast/lex.re"
{ fatal_lc(l, c, "syntax error in escape sequence"); }
-#line 2957 "src/ast/lex.cc"
+#line 2956 "src/ast/lex.cc"
yy492:
++YYCURSOR;
yy493:
-#line 597 "../src/ast/lex.re"
+#line 593 "../src/ast/lex.re"
{
- warn.useless_escape(cline, get_column(), tok[1]);
+ warn.useless_escape(l, c, tok[1]);
return static_cast<uint8_t>(tok[1]);
}
-#line 2966 "src/ast/lex.cc"
+#line 2965 "src/ast/lex.cc"
yy494:
yych = (YYCTYPE)*++YYCURSOR;
if (yych == '\n') goto yy487;
goto yy493;
yy495:
++YYCURSOR;
-#line 595 "../src/ast/lex.re"
+#line 591 "../src/ast/lex.re"
{ return static_cast<uint8_t>('-'); }
-#line 2975 "src/ast/lex.cc"
+#line 2974 "src/ast/lex.cc"
yy497:
yyaccept = 0;
yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
if (yych <= '/') goto yy498;
if (yych <= '7') goto yy522;
yy498:
-#line 581 "../src/ast/lex.re"
+#line 577 "../src/ast/lex.re"
{ fatal_lc(l, c, "syntax error in octal escape sequence"); }
-#line 2984 "src/ast/lex.cc"
+#line 2983 "src/ast/lex.cc"
yy499:
++YYCURSOR;
goto yy498;
if (yych <= 'f') goto yy524;
}
yy501:
-#line 580 "../src/ast/lex.re"
+#line 576 "../src/ast/lex.re"
{ fatal_lc(l, c, "syntax error in hexadecimal escape sequence"); }
-#line 3002 "src/ast/lex.cc"
+#line 3001 "src/ast/lex.cc"
yy502:
yyaccept = 1;
yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
}
yy503:
++YYCURSOR;
-#line 594 "../src/ast/lex.re"
+#line 590 "../src/ast/lex.re"
{ return static_cast<uint8_t>('\\'); }
-#line 3020 "src/ast/lex.cc"
+#line 3019 "src/ast/lex.cc"
yy505:
++YYCURSOR;
-#line 596 "../src/ast/lex.re"
+#line 592 "../src/ast/lex.re"
{ return static_cast<uint8_t>(']'); }
-#line 3025 "src/ast/lex.cc"
+#line 3024 "src/ast/lex.cc"
yy507:
++YYCURSOR;
-#line 587 "../src/ast/lex.re"
+#line 583 "../src/ast/lex.re"
{ return static_cast<uint8_t>('\a'); }
-#line 3030 "src/ast/lex.cc"
+#line 3029 "src/ast/lex.cc"
yy509:
++YYCURSOR;
-#line 588 "../src/ast/lex.re"
+#line 584 "../src/ast/lex.re"
{ return static_cast<uint8_t>('\b'); }
-#line 3035 "src/ast/lex.cc"
+#line 3034 "src/ast/lex.cc"
yy511:
++YYCURSOR;
-#line 589 "../src/ast/lex.re"
+#line 585 "../src/ast/lex.re"
{ return static_cast<uint8_t>('\f'); }
-#line 3040 "src/ast/lex.cc"
+#line 3039 "src/ast/lex.cc"
yy513:
++YYCURSOR;
-#line 590 "../src/ast/lex.re"
+#line 586 "../src/ast/lex.re"
{ return static_cast<uint8_t>('\n'); }
-#line 3045 "src/ast/lex.cc"
+#line 3044 "src/ast/lex.cc"
yy515:
++YYCURSOR;
-#line 591 "../src/ast/lex.re"
+#line 587 "../src/ast/lex.re"
{ return static_cast<uint8_t>('\r'); }
-#line 3050 "src/ast/lex.cc"
+#line 3049 "src/ast/lex.cc"
yy517:
++YYCURSOR;
-#line 592 "../src/ast/lex.re"
+#line 588 "../src/ast/lex.re"
{ return static_cast<uint8_t>('\t'); }
-#line 3055 "src/ast/lex.cc"
+#line 3054 "src/ast/lex.cc"
yy519:
++YYCURSOR;
-#line 593 "../src/ast/lex.re"
+#line 589 "../src/ast/lex.re"
{ return static_cast<uint8_t>('\v'); }
-#line 3060 "src/ast/lex.cc"
+#line 3059 "src/ast/lex.cc"
yy521:
yyaccept = 1;
yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
}
yy527:
++YYCURSOR;
-#line 586 "../src/ast/lex.re"
+#line 582 "../src/ast/lex.re"
{ return unesc_oct(tok, cur); }
-#line 3125 "src/ast/lex.cc"
+#line 3124 "src/ast/lex.cc"
yy529:
yych = (YYCTYPE)*++YYCURSOR;
if (yych <= '@') {
}
yy531:
++YYCURSOR;
-#line 585 "../src/ast/lex.re"
+#line 581 "../src/ast/lex.re"
{ return unesc_hex(tok, cur); }
-#line 3154 "src/ast/lex.cc"
+#line 3153 "src/ast/lex.cc"
yy533:
yych = (YYCTYPE)*++YYCURSOR;
if (yych <= '@') {
goto yy523;
}
}
-#line 601 "../src/ast/lex.re"
+#line 597 "../src/ast/lex.re"
}
{
end = false;
tok = cur;
- const uint32_t l = get_cline(), c = get_column();
+ const uint32_t l = get_line(), c = get_column();
-#line 3188 "src/ast/lex.cc"
+#line 3187 "src/ast/lex.cc"
{
YYCTYPE yych;
unsigned int yyaccept = 0;
}
yy537:
++YYCURSOR;
-#line 611 "../src/ast/lex.re"
+#line 607 "../src/ast/lex.re"
{ fail_if_eof(); return 0; }
-#line 3207 "src/ast/lex.cc"
+#line 3206 "src/ast/lex.cc"
yy539:
++YYCURSOR;
yy540:
-#line 617 "../src/ast/lex.re"
+#line 613 "../src/ast/lex.re"
{
end = tok[0] == quote;
return static_cast<uint8_t>(tok[0]);
}
-#line 3216 "src/ast/lex.cc"
+#line 3215 "src/ast/lex.cc"
yy541:
++YYCURSOR;
-#line 612 "../src/ast/lex.re"
+#line 608 "../src/ast/lex.re"
{ fatal_lc(l, c, "newline in character string"); }
-#line 3221 "src/ast/lex.cc"
+#line 3220 "src/ast/lex.cc"
yy543:
yych = (YYCTYPE)*++YYCURSOR;
if (yych == '\n') goto yy541;
}
}
yy545:
-#line 615 "../src/ast/lex.re"
+#line 611 "../src/ast/lex.re"
{ fatal_lc(l, c, "syntax error in escape sequence"); }
-#line 3277 "src/ast/lex.cc"
+#line 3276 "src/ast/lex.cc"
yy546:
++YYCURSOR;
yy547:
-#line 631 "../src/ast/lex.re"
+#line 627 "../src/ast/lex.re"
{
if (tok[1] != quote) {
- warn.useless_escape(cline, get_column(), tok[1]);
+ warn.useless_escape(l, c, tok[1]);
}
return static_cast<uint8_t>(tok[1]);
}
-#line 3288 "src/ast/lex.cc"
+#line 3287 "src/ast/lex.cc"
yy548:
yych = (YYCTYPE)*++YYCURSOR;
if (yych == '\n') goto yy541;
if (yych <= '/') goto yy550;
if (yych <= '7') goto yy572;
yy550:
-#line 614 "../src/ast/lex.re"
+#line 610 "../src/ast/lex.re"
{ fatal_lc(l, c, "syntax error in octal escape sequence"); }
-#line 3301 "src/ast/lex.cc"
+#line 3300 "src/ast/lex.cc"
yy551:
++YYCURSOR;
goto yy550;
if (yych <= 'f') goto yy574;
}
yy553:
-#line 613 "../src/ast/lex.re"
+#line 609 "../src/ast/lex.re"
{ fatal_lc(l, c, "syntax error in hexadecimal escape sequence"); }
-#line 3319 "src/ast/lex.cc"
+#line 3318 "src/ast/lex.cc"
yy554:
yyaccept = 1;
yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
}
yy555:
++YYCURSOR;
-#line 630 "../src/ast/lex.re"
+#line 626 "../src/ast/lex.re"
{ return static_cast<uint8_t>('\\'); }
-#line 3337 "src/ast/lex.cc"
+#line 3336 "src/ast/lex.cc"
yy557:
++YYCURSOR;
-#line 623 "../src/ast/lex.re"
+#line 619 "../src/ast/lex.re"
{ return static_cast<uint8_t>('\a'); }
-#line 3342 "src/ast/lex.cc"
+#line 3341 "src/ast/lex.cc"
yy559:
++YYCURSOR;
-#line 624 "../src/ast/lex.re"
+#line 620 "../src/ast/lex.re"
{ return static_cast<uint8_t>('\b'); }
-#line 3347 "src/ast/lex.cc"
+#line 3346 "src/ast/lex.cc"
yy561:
++YYCURSOR;
-#line 625 "../src/ast/lex.re"
+#line 621 "../src/ast/lex.re"
{ return static_cast<uint8_t>('\f'); }
-#line 3352 "src/ast/lex.cc"
+#line 3351 "src/ast/lex.cc"
yy563:
++YYCURSOR;
-#line 626 "../src/ast/lex.re"
+#line 622 "../src/ast/lex.re"
{ return static_cast<uint8_t>('\n'); }
-#line 3357 "src/ast/lex.cc"
+#line 3356 "src/ast/lex.cc"
yy565:
++YYCURSOR;
-#line 627 "../src/ast/lex.re"
+#line 623 "../src/ast/lex.re"
{ return static_cast<uint8_t>('\r'); }
-#line 3362 "src/ast/lex.cc"
+#line 3361 "src/ast/lex.cc"
yy567:
++YYCURSOR;
-#line 628 "../src/ast/lex.re"
+#line 624 "../src/ast/lex.re"
{ return static_cast<uint8_t>('\t'); }
-#line 3367 "src/ast/lex.cc"
+#line 3366 "src/ast/lex.cc"
yy569:
++YYCURSOR;
-#line 629 "../src/ast/lex.re"
+#line 625 "../src/ast/lex.re"
{ return static_cast<uint8_t>('\v'); }
-#line 3372 "src/ast/lex.cc"
+#line 3371 "src/ast/lex.cc"
yy571:
yyaccept = 1;
yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
}
yy577:
++YYCURSOR;
-#line 622 "../src/ast/lex.re"
+#line 618 "../src/ast/lex.re"
{ return unesc_oct(tok, cur); }
-#line 3437 "src/ast/lex.cc"
+#line 3436 "src/ast/lex.cc"
yy579:
yych = (YYCTYPE)*++YYCURSOR;
if (yych <= '@') {
}
yy581:
++YYCURSOR;
-#line 621 "../src/ast/lex.re"
+#line 617 "../src/ast/lex.re"
{ return unesc_hex(tok, cur); }
-#line 3466 "src/ast/lex.cc"
+#line 3465 "src/ast/lex.cc"
yy583:
yych = (YYCTYPE)*++YYCURSOR;
if (yych <= '@') {
goto yy573;
}
}
-#line 637 "../src/ast/lex.re"
+#line 633 "../src/ast/lex.re"
}
const AST *Scanner::lex_str(char quote)
{
- const uint32_t column = get_column();
+ const uint32_t line = get_line(), column = get_column();
std::vector<ASTChar> *str = new std::vector<ASTChar>;
for (bool end;;) {
const uint32_t c = lex_str_chr(quote, end);
- if (end) return ast_str(cline, column, str, quote == '\'');
+ if (end) return ast_str(line, column, str, quote == '\'');
str->push_back(ASTChar(c, get_column()));
}
}
sourceline:
tok = cur;
-#line 3510 "src/ast/lex.cc"
+#line 3509 "src/ast/lex.cc"
{
YYCTYPE yych;
static const unsigned char yybm[] = {
}
}
++YYCURSOR;
-#line 671 "../src/ast/lex.re"
+#line 669 "../src/ast/lex.re"
{ --cur; return; }
-#line 3570 "src/ast/lex.cc"
+#line 3569 "src/ast/lex.cc"
yy589:
++YYCURSOR;
yy590:
-#line 672 "../src/ast/lex.re"
+#line 670 "../src/ast/lex.re"
{ goto sourceline; }
-#line 3576 "src/ast/lex.cc"
+#line 3575 "src/ast/lex.cc"
yy591:
++YYCURSOR;
-#line 670 "../src/ast/lex.re"
+#line 668 "../src/ast/lex.re"
{ tok = cur; return; }
-#line 3581 "src/ast/lex.cc"
+#line 3580 "src/ast/lex.cc"
yy593:
yych = (YYCTYPE)*++YYCURSOR;
if (yych == '\n') goto yy591;
if (yybm[0+yych] & 64) {
goto yy595;
}
-#line 656 "../src/ast/lex.re"
+#line 652 "../src/ast/lex.re"
{
- if (!s_to_u32_unsafe (tok, cur, cline)) {
- fatal_lc(get_cline(), get_column(), "line number overflow");
+ uint32_t l;
+ if (!s_to_u32_unsafe (tok, cur, l)) {
+ fatal_lc(get_line(), get_column(), "line number overflow");
}
+ set_line(l);
goto sourceline;
}
-#line 3605 "src/ast/lex.cc"
+#line 3606 "src/ast/lex.cc"
yy598:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
goto yy590;
yy601:
++YYCURSOR;
-#line 663 "../src/ast/lex.re"
+#line 661 "../src/ast/lex.re"
{
std::string &name = get_input().escaped_name;
name = std::string(tok + 1, tok_len () - 2); // strip quotes
strrreplace(name, "\\", "\\\\");
goto sourceline;
}
-#line 3629 "src/ast/lex.cc"
+#line 3630 "src/ast/lex.cc"
yy603:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
if (yych == '\n') goto yy600;
goto yy598;
}
-#line 673 "../src/ast/lex.re"
+#line 671 "../src/ast/lex.re"
}
{
if (is_eof()) {
const uint32_t col = static_cast<uint32_t>(cur - pos) - 1;
- fatal_lc(get_cline(), col, "unexpected end of input");
+ fatal_lc(get_line(), col, "unexpected end of input");
}
}