From e3db638fc3e9bfb318edafedbefd02f25f1c1b8c Mon Sep 17 00:00:00 2001 From: Ulya Fokanova Date: Tue, 25 Feb 2014 14:06:58 +0300 Subject: [PATCH] Allow flag names in inplace configurations start with digit (to allow '-8'). --- re2c/bootstrap/scanner.cc | 429 ++++++++++++++++++++------------------ re2c/scanner.re | 2 +- 2 files changed, 230 insertions(+), 201 deletions(-) diff --git a/re2c/bootstrap/scanner.cc b/re2c/bootstrap/scanner.cc index 95bc09ef..6ec413b2 100644 --- a/re2c/bootstrap/scanner.cc +++ b/re2c/bootstrap/scanner.cc @@ -1,4 +1,4 @@ -/* Generated by re2c 0.13.7.dev on Wed Jan 22 14:18:44 2014 */ +/* Generated by re2c 0.13.7.dev on Tue Feb 25 13:38:29 2014 */ /* $Id$ */ #include #include @@ -590,14 +590,14 @@ scan: 224, 224, 224, 224, 224, 224, 224, 224, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 224, 224, 224, 224, 224, 224, - 224, 228, 228, 228, 228, 228, 228, 228, - 228, 228, 228, 228, 228, 228, 228, 228, - 228, 228, 228, 228, 228, 228, 228, 228, - 228, 228, 228, 224, 0, 192, 224, 228, - 224, 228, 228, 228, 228, 228, 228, 228, - 228, 228, 228, 228, 228, 228, 228, 228, - 228, 228, 228, 228, 228, 228, 228, 228, - 228, 228, 228, 224, 224, 224, 224, 224, + 224, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 224, 0, 192, 224, 232, + 224, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, @@ -655,10 +655,11 @@ scan: if (yych <= '<') { if (yych <= '9') { if (yych <= '/') goto yy132; + goto yy133; } else { - if (yych <= ':') goto yy133; + if (yych <= ':') goto yy134; if (yych <= ';') goto yy124; - goto yy134; + goto yy135; } } else { if (yych <= '?') { @@ -666,7 +667,7 @@ scan: goto yy128; } else { if (yych <= '@') goto yy112; - if (yych <= 'Z') goto yy135; + if (yych <= 'Z') goto yy133; goto yy136; } } @@ -675,12 +676,12 @@ scan: if (yych <= '^') { if (yych <= '\\') goto yy124; } else { - if (yych != '`') goto yy135; + if (yych != '`') goto yy133; } } else { if (yych <= 'z') { if (yych <= 'r') goto yy138; - goto yy135; + goto yy133; } else { if (yych <= '{') goto yy139; if (yych <= '|') goto yy124; @@ -778,20 +779,20 @@ yy132: if (yych == '/') goto yy211; goto yy125; yy133: + YYCTXMARKER = YYCURSOR + 1; + yych = *++YYCURSOR; + goto yy169; +yy134: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; if (yych == '=') goto yy205; goto yy113; -yy134: +yy135: yyaccept = 3; yych = *(YYMARKER = ++YYCURSOR); if (yych == '!') goto yy196; if (yych == '>') goto yy198; goto yy125; -yy135: - YYCTXMARKER = YYCURSOR + 1; - yych = *++YYCURSOR; - goto yy164; yy136: yyaccept = 4; yych = *(YYMARKER = ++YYCURSOR); @@ -805,8 +806,8 @@ yy137: yy138: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; - if (yych == 'e') goto yy166; - goto yy164; + if (yych == 'e') goto yy170; + goto yy169; yy139: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); @@ -814,16 +815,16 @@ yy139: if (yych <= '/') { if (yych == ',') goto yy147; } else { - if (yych <= '0') goto yy144; - if (yych <= '9') goto yy145; + if (yych <= '0') goto yy141; + if (yych <= '9') goto yy143; } } else { if (yych <= '_') { - if (yych <= 'Z') goto yy141; - if (yych >= '_') goto yy141; + if (yych <= 'Z') goto yy145; + if (yych >= '_') goto yy145; } else { if (yych <= '`') goto yy140; - if (yych <= 'z') goto yy141; + if (yych <= 'z') goto yy145; } } yy140: @@ -832,14 +833,10 @@ yy140: goto code; } yy141: - ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if (yybm[0+yych] & 4) { - goto yy141; - } - if (yych == '}') goto yy161; -yy143: + yych = *++YYCURSOR; + if (yych == ',') goto yy160; + goto yy144; +yy142: YYCURSOR = YYMARKER; if (yyaccept <= 3) { if (yyaccept <= 1) { @@ -866,25 +863,43 @@ yy143: if (yyaccept == 6) { goto yy148; } else { - goto yy181; + goto yy176; } } } +yy143: + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); + yych = *YYCURSOR; yy144: - yych = *++YYCURSOR; - if (yych == ',') goto yy158; - goto yy146; + if (yybm[0+yych] & 4) { + goto yy143; + } + if (yych <= '^') { + if (yych <= ',') { + if (yych <= '+') goto yy142; + goto yy153; + } else { + if (yych <= '@') goto yy142; + if (yych >= '[') goto yy142; + } + } else { + if (yych <= 'z') { + if (yych == '`') goto yy142; + } else { + if (yych == '}') goto yy151; + goto yy142; + } + } yy145: ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); + if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; -yy146: if (yybm[0+yych] & 8) { goto yy145; } - if (yych == ',') goto yy151; if (yych == '}') goto yy149; - goto yy143; + goto yy142; yy147: ++YYCURSOR; yy148: @@ -892,17 +907,27 @@ yy148: fatal("illegal closure form, use '{n}', '{n,}', '{n,m}' where n and m are numbers"); } yy149: + ++YYCURSOR; + { + if (!FFlag) { + fatal("curly braces for names only allowed with -F switch"); + } + cur = cursor; + yylval.symbol = Symbol::find(token(1, cur - tok - 2)); + return ID; + } +yy151: ++YYCURSOR; { yylval.extop.minsize = atoi((char *)tok+1); yylval.extop.maxsize = atoi((char *)tok+1); RETURN(CLOSESIZE); } -yy151: +yy153: yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') goto yy148; - if (yych <= '9') goto yy154; + if (yych <= '9') goto yy156; if (yych != '}') goto yy148; ++YYCURSOR; { @@ -910,74 +935,33 @@ yy151: yylval.extop.maxsize = -1; RETURN(CLOSESIZE); } -yy154: +yy156: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if (yych <= '/') goto yy143; - if (yych <= '9') goto yy154; - if (yych != '}') goto yy143; + if (yych <= '/') goto yy142; + if (yych <= '9') goto yy156; + if (yych != '}') goto yy142; ++YYCURSOR; { yylval.extop.minsize = atoi((char *)tok+1); yylval.extop.maxsize = MAX(yylval.extop.minsize,atoi(strchr((char *)tok, ',')+1)); RETURN(CLOSESIZE); } -yy158: +yy160: yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') goto yy148; - if (yych <= '9') goto yy154; + if (yych <= '9') goto yy156; if (yych != '}') goto yy148; ++YYCURSOR; { yylval.op = '*'; RETURN(CLOSE); } -yy161: - ++YYCURSOR; - { - if (!FFlag) { - fatal("curly braces for names only allowed with -F switch"); - } - cur = cursor; - yylval.symbol = Symbol::find(token(1, cur - tok - 2)); - return ID; - } yy163: - YYCTXMARKER = YYCURSOR + 1; ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); - yych = *YYCURSOR; yy164: - if (yych <= '9') { - if (yych <= ' ') { - if (yych == '\t') goto yy168; - if (yych <= 0x1F) goto yy167; - goto yy168; - } else { - if (yych == ',') goto yy169; - if (yych <= '/') goto yy167; - goto yy163; - } - } else { - if (yych <= 'Z') { - if (yych <= '<') goto yy167; - if (yych <= '>') goto yy169; - if (yych <= '@') goto yy167; - goto yy163; - } else { - if (yych <= '_') { - if (yych <= '^') goto yy167; - goto yy163; - } else { - if (yych <= '`') goto yy167; - if (yych <= 'z') goto yy163; - goto yy167; - } - } - } -yy165: YYCURSOR = YYCTXMARKER; { if (!FFlag) { @@ -998,85 +982,96 @@ yy165: return STRING; } } -yy166: - YYCTXMARKER = YYCURSOR + 1; - yych = *++YYCURSOR; - if (yych == '2') goto yy176; - goto yy164; -yy167: - yych = *++YYCURSOR; - goto yy165; -yy168: +yy165: yych = *++YYCURSOR; - goto yy174; -yy169: + goto yy184; +yy166: ++YYCURSOR; -yy170: +yy167: YYCURSOR = YYCTXMARKER; { cur = ptr > tok ? ptr - 1 : cursor; yylval.symbol = Symbol::find(token()); return ID; } -yy171: - ++YYCURSOR; - YYCURSOR = YYCTXMARKER; - { - cur = ptr > tok ? ptr - 1 : cursor; - yylval.symbol = Symbol::find(token()); - return FFlag ? FID : ID; - } -yy173: +yy168: + YYCTXMARKER = YYCURSOR + 1; ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); + if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; -yy174: - if (yybm[0+yych] & 16) { - goto yy173; +yy169: + if (yych <= '9') { + if (yych <= ' ') { + if (yych == '\t') goto yy165; + if (yych <= 0x1F) goto yy163; + goto yy165; + } else { + if (yych == ',') goto yy166; + if (yych <= '/') goto yy163; + goto yy168; + } + } else { + if (yych <= 'Z') { + if (yych <= '<') goto yy163; + if (yych <= '>') goto yy166; + if (yych <= '@') goto yy163; + goto yy168; + } else { + if (yych <= '_') { + if (yych <= '^') goto yy163; + goto yy168; + } else { + if (yych <= '`') goto yy163; + if (yych <= 'z') goto yy168; + goto yy163; + } + } } - if (yych == ',') goto yy175; - if (yych <= '<') goto yy171; - if (yych >= '?') goto yy171; -yy175: +yy170: + YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; - goto yy170; -yy176: + if (yych != '2') goto yy169; YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; - if (yych != 'c') goto yy164; + if (yych != 'c') goto yy169; YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; - if (yych != ':') goto yy164; + if (yych != ':') goto yy169; yych = *++YYCURSOR; - if (yych <= '^') { - if (yych <= '@') goto yy165; - if (yych >= '[') goto yy165; + if (yych <= 'Z') { + if (yych <= '/') goto yy164; + if (yych <= '9') goto yy174; + if (yych <= '@') goto yy164; } else { - if (yych == '`') goto yy165; - if (yych >= '{') goto yy165; + if (yych <= '_') { + if (yych <= '^') goto yy164; + } else { + if (yych <= '`') goto yy164; + if (yych >= '{') goto yy164; + } } -yy179: +yy174: yyaccept = 7; YYMARKER = ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; if (yych <= '@') { if (yych <= '9') { - if (yych >= '0') goto yy179; + if (yych >= '0') goto yy174; } else { - if (yych <= ':') goto yy183; - if (yych >= '@') goto yy182; + if (yych <= ':') goto yy178; + if (yych >= '@') goto yy177; } } else { if (yych <= '_') { - if (yych <= 'Z') goto yy179; - if (yych >= '_') goto yy179; + if (yych <= 'Z') goto yy174; + if (yych >= '_') goto yy174; } else { - if (yych <= '`') goto yy181; - if (yych <= 'z') goto yy179; + if (yych <= '`') goto yy176; + if (yych <= 'z') goto yy174; } } -yy181: +yy176: { cur = cursor; tok += 5; /* skip "re2c:" */ @@ -1084,49 +1079,83 @@ yy181: yylval.str = new Str(token()); return CONFIG; } -yy182: +yy177: yych = *++YYCURSOR; - if (yych <= '^') { - if (yych <= '@') goto yy143; - if (yych <= 'Z') goto yy184; - goto yy143; + if (yych <= 'Z') { + if (yych <= '/') goto yy142; + if (yych <= '9') goto yy179; + if (yych <= '@') goto yy142; + goto yy179; } else { - if (yych == '`') goto yy143; - if (yych <= 'z') goto yy184; - goto yy143; + if (yych <= '_') { + if (yych <= '^') goto yy142; + goto yy179; + } else { + if (yych <= '`') goto yy142; + if (yych <= 'z') goto yy179; + goto yy142; + } } -yy183: +yy178: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if (yych <= '^') { - if (yych <= '@') goto yy143; - if (yych <= 'Z') goto yy179; - goto yy143; + if (yych <= 'Z') { + if (yych <= '/') goto yy142; + if (yych <= '9') goto yy174; + if (yych <= '@') goto yy142; + goto yy174; } else { - if (yych == '`') goto yy143; - if (yych <= 'z') goto yy179; - goto yy143; + if (yych <= '_') { + if (yych <= '^') goto yy142; + goto yy174; + } else { + if (yych <= '`') goto yy142; + if (yych <= 'z') goto yy174; + goto yy142; + } } -yy184: +yy179: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= 'Z') { - if (yych <= '/') goto yy181; - if (yych <= '9') goto yy184; - if (yych <= '@') goto yy181; - goto yy184; + if (yych <= '/') goto yy176; + if (yych <= '9') goto yy179; + if (yych <= '@') goto yy176; + goto yy179; } else { if (yych <= '_') { - if (yych <= '^') goto yy181; - goto yy184; + if (yych <= '^') goto yy176; + goto yy179; } else { - if (yych <= '`') goto yy181; - if (yych <= 'z') goto yy184; - goto yy181; + if (yych <= '`') goto yy176; + if (yych <= 'z') goto yy179; + goto yy176; } } +yy181: + ++YYCURSOR; + YYCURSOR = YYCTXMARKER; + { + cur = ptr > tok ? ptr - 1 : cursor; + yylval.symbol = Symbol::find(token()); + return FFlag ? FID : ID; + } +yy183: + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; +yy184: + if (yybm[0+yych] & 16) { + goto yy183; + } + if (yych == ',') goto yy185; + if (yych <= '<') goto yy181; + if (yych >= '?') goto yy181; +yy185: + yych = *++YYCURSOR; + goto yy167; yy186: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); @@ -1135,7 +1164,7 @@ yy187: if (yybm[0+yych] & 32) { goto yy186; } - if (yych <= '\n') goto yy143; + if (yych <= '\n') goto yy142; if (yych <= '\\') goto yy190; goto yy191; yy188: @@ -1143,7 +1172,7 @@ yy188: if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '[') { - if (yych == '\n') goto yy143; + if (yych == '\n') goto yy142; goto yy188; } else { if (yych <= '\\') goto yy193; @@ -1154,7 +1183,7 @@ yy190: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if (yych == '\n') goto yy143; + if (yych == '\n') goto yy142; goto yy186; yy191: ++YYCURSOR; @@ -1167,7 +1196,7 @@ yy193: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if (yych == '\n') goto yy143; + if (yych == '\n') goto yy142; goto yy188; yy194: ++YYCURSOR; @@ -1192,19 +1221,19 @@ yy199: yy200: if (yych <= '9') { if (yych <= '\t') { - if (yych <= 0x08) goto yy143; + if (yych <= 0x08) goto yy142; goto yy199; } else { if (yych == ' ') goto yy199; - goto yy143; + goto yy142; } } else { if (yych <= '=') { if (yych <= ':') goto yy204; - if (yych <= '<') goto yy143; + if (yych <= '<') goto yy142; goto yy203; } else { - if (yych != '{') goto yy143; + if (yych != '{') goto yy142; } } yy201: @@ -1216,11 +1245,11 @@ yy201: yy203: yych = *++YYCURSOR; if (yych == '>') goto yy201; - goto yy143; + goto yy142; yy204: yych = *++YYCURSOR; if (yych == '=') goto yy201; - goto yy143; + goto yy142; yy205: ++YYCURSOR; if ((yych = *YYCURSOR) == '>') goto yy207; @@ -1261,12 +1290,12 @@ yy216: if (yybm[0+yych] & 64) { goto yy215; } - if (yych <= '\n') goto yy143; + if (yych <= '\n') goto yy142; if (yych <= '\'') goto yy218; ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if (yych == '\n') goto yy143; + if (yych == '\n') goto yy142; goto yy215; yy218: ++YYCURSOR; @@ -1290,12 +1319,12 @@ yy221: if (yybm[0+yych] & 128) { goto yy220; } - if (yych <= '\n') goto yy143; + if (yych <= '\n') goto yy142; if (yych <= '"') goto yy223; ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if (yych == '\n') goto yy143; + if (yych == '\n') goto yy142; goto yy220; yy223: ++YYCURSOR; @@ -1327,10 +1356,10 @@ yy226: yych = *YYCURSOR; if (yych <= 0x1F) { if (yych == '\t') goto yy226; - goto yy143; + goto yy142; } else { if (yych <= ' ') goto yy226; - if (yych != '#') goto yy143; + if (yych != '#') goto yy142; } yy228: ++YYCURSOR; @@ -1338,20 +1367,20 @@ yy228: yych = *YYCURSOR; if (yych <= 0x1F) { if (yych == '\t') goto yy228; - goto yy143; + goto yy142; } else { if (yych <= ' ') goto yy228; - if (yych != 'l') goto yy143; + if (yych != 'l') goto yy142; } yych = *++YYCURSOR; - if (yych != 'i') goto yy143; + if (yych != 'i') goto yy142; yych = *++YYCURSOR; - if (yych != 'n') goto yy143; + if (yych != 'n') goto yy142; yych = *++YYCURSOR; - if (yych != 'e') goto yy143; + if (yych != 'e') goto yy142; yych = *++YYCURSOR; if (yych <= '0') goto yy235; - if (yych <= '9') goto yy143; + if (yych <= '9') goto yy142; goto yy235; yy234: YYCTXMARKER = YYCURSOR + 1; @@ -1361,11 +1390,11 @@ yy234: yy235: if (yych <= 0x1F) { if (yych == '\t') goto yy234; - goto yy143; + goto yy142; } else { if (yych <= ' ') goto yy234; - if (yych <= '0') goto yy143; - if (yych >= ':') goto yy143; + if (yych <= '0') goto yy142; + if (yych >= ':') goto yy142; } yy236: ++YYCURSOR; @@ -1373,19 +1402,19 @@ yy236: yych = *YYCURSOR; if (yych <= '\r') { if (yych <= '\t') { - if (yych <= 0x08) goto yy143; + if (yych <= 0x08) goto yy142; } else { if (yych <= '\n') goto yy240; - if (yych <= '\f') goto yy143; + if (yych <= '\f') goto yy142; goto yy242; } } else { if (yych <= ' ') { - if (yych <= 0x1F) goto yy143; + if (yych <= 0x1F) goto yy142; } else { - if (yych <= '/') goto yy143; + if (yych <= '/') goto yy142; if (yych <= '9') goto yy236; - goto yy143; + goto yy142; } } yy238: @@ -1394,11 +1423,11 @@ yy238: yych = *YYCURSOR; if (yych <= 0x1F) { if (yych == '\t') goto yy238; - goto yy143; + goto yy142; } else { if (yych <= ' ') goto yy238; if (yych == '"') goto yy243; - goto yy143; + goto yy142; } yy240: ++YYCURSOR; @@ -1410,13 +1439,13 @@ yy240: yy242: yych = *++YYCURSOR; if (yych == '\n') goto yy240; - goto yy143; + goto yy142; yy243: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3); yych = *YYCURSOR; if (yych <= '!') { - if (yych == '\n') goto yy143; + if (yych == '\n') goto yy142; goto yy243; } else { if (yych <= '"') goto yy246; @@ -1425,13 +1454,13 @@ yy243: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if (yych == '\n') goto yy143; + if (yych == '\n') goto yy142; goto yy243; yy246: yych = *++YYCURSOR; if (yych == '\n') goto yy240; if (yych == '\r') goto yy242; - goto yy143; + goto yy142; yy247: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); diff --git a/re2c/scanner.re b/re2c/scanner.re index ed8ffb65..da52603d 100644 --- a/re2c/scanner.re +++ b/re2c/scanner.re @@ -39,7 +39,7 @@ letter = [a-zA-Z]; digit = [0-9]; lineno = [1-9] digit*; number = "0" | ("-"? [1-9] digit*); -name = (letter|"_") (letter|digit|"_")*; +name = (letter|digit|"_")+; cname = ":" name; space = [ \t]; ws = (space | [\r\n]); -- 2.40.0