From: helly Date: Mon, 19 Apr 2004 02:32:06 +0000 (+0000) Subject: Be more informative with error messages. X-Git-Tag: 0.13.6~719 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a346789a7532a15f6265b93e308135ae8c585ac6;p=re2c Be more informative with error messages. --- diff --git a/bootstrap/scanner.cc b/bootstrap/scanner.cc index 5b39048e..29fd5cb8 100644 --- a/bootstrap/scanner.cc +++ b/bootstrap/scanner.cc @@ -1,4 +1,4 @@ -/* Generated by re2c 0.9.2 on Mon Apr 19 03:45:41 2004 */ +/* Generated by re2c 0.9.2 on Mon Apr 19 04:31:02 2004 */ #line 1 "scanner.re" /* $Id$ */ #include @@ -208,7 +208,7 @@ yy15: yy17: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if(yych <= '/') goto yy18; - if(yych <= '9') goto yy62; + if(yych <= '9') goto yy63; goto yy18; yy18: #line 106 "scanner.re" @@ -217,413 +217,417 @@ yy18: } #line 134 "re2c-output.c" yy19: yych = *++YYCURSOR; - if(yych == '*') goto yy60; + if(yych == '*') goto yy61; goto yy20; yy20: -#line 130 "scanner.re" +#line 132 "scanner.re" { RETURN(*tok); } #line 141 "re2c-output.c" yy21: yych = *++YYCURSOR; - if(yych == '/') goto yy58; + if(yych == '/') goto yy59; goto yy22; yy22: -#line 132 "scanner.re" +#line 134 "scanner.re" { yylval.op = *tok; RETURN(CLOSE); } #line 149 "re2c-output.c" yy23: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); - if(yych != '\n') goto yy54; + if(yych != '\n') goto yy55; goto yy24; yy24: #line 123 "scanner.re" -{ fatal("bad string"); } +{ fatal("unterminated string constant (missing \")"); } #line 157 "re2c-output.c" yy25: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); - if(yych != '\n') goto yy49; + if(yych != '\n') goto yy50; goto yy26; yy26: -#line 158 "scanner.re" -{ cerr << "unexpected character: " << *tok << endl; - goto scan; - } -#line 167 "re2c-output.c" +#line 124 "scanner.re" +{ fatal("unterminated string constant (missing ')"); } +#line 165 "re2c-output.c" yy27: yyaccept = 3; yych = *(YYMARKER = ++YYCURSOR); - if(yych != '\n') goto yy43; + if(yych != '\n') goto yy44; goto yy28; yy28: -#line 128 "scanner.re" -{ fatal("bad character constant"); } -#line 175 "re2c-output.c" +#line 130 "scanner.re" +{ fatal("unterminated range (missing ])"); } +#line 173 "re2c-output.c" yy29: yych = *++YYCURSOR; goto yy20; yy30: yych = *++YYCURSOR; goto yy22; yy31: yych = *++YYCURSOR; - goto yy41; + goto yy42; yy32: -#line 147 "scanner.re" +#line 149 "scanner.re" { cur = cursor; yylval.symbol = Symbol::find(token()); return ID; } -#line 187 "re2c-output.c" +#line 185 "re2c-output.c" yy33: yych = *++YYCURSOR; - goto yy39; + goto yy40; yy34: -#line 151 "scanner.re" +#line 153 "scanner.re" { goto scan; } -#line 193 "re2c-output.c" +#line 191 "re2c-output.c" yy35: yych = *++YYCURSOR; goto yy36; yy36: -#line 153 "scanner.re" +#line 155 "scanner.re" { if(cursor == eof) RETURN(0); pos = cursor; cline++; goto scan; } -#line 202 "re2c-output.c" +#line 200 "re2c-output.c" yy37: yych = *++YYCURSOR; - goto yy26; -yy38: ++YYCURSOR; + goto yy38; +yy38: +#line 160 "scanner.re" +{ cerr << "unexpected character: " << *tok << endl; + goto scan; + } +#line 208 "re2c-output.c" +yy39: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - goto yy39; -yy39: if(yych == '\t') goto yy38; - if(yych == ' ') goto yy38; + goto yy40; +yy40: if(yych == '\t') goto yy39; + if(yych == ' ') goto yy39; goto yy34; -yy40: ++YYCURSOR; +yy41: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - goto yy41; -yy41: if(yych <= '@'){ + goto yy42; +yy42: if(yych <= '@'){ if(yych <= '/') goto yy32; - if(yych <= '9') goto yy40; + if(yych <= '9') goto yy41; goto yy32; } else { - if(yych <= 'Z') goto yy40; + if(yych <= 'Z') goto yy41; if(yych <= '`') goto yy32; - if(yych <= 'z') goto yy40; + if(yych <= 'z') goto yy41; goto yy32; } -yy42: ++YYCURSOR; +yy43: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - goto yy43; -yy43: if(yych <= '['){ - if(yych != '\n') goto yy42; - goto yy44; + goto yy44; +yy44: if(yych <= '['){ + if(yych != '\n') goto yy43; + goto yy45; } else { - if(yych <= '\\') goto yy45; - if(yych <= ']') goto yy46; - goto yy42; + if(yych <= '\\') goto yy46; + if(yych <= ']') goto yy47; + goto yy43; } -yy44: YYCURSOR = YYMARKER; +yy45: YYCURSOR = YYMARKER; switch(yyaccept){ case 0: goto yy18; case 1: goto yy24; - case 3: goto yy28; case 2: goto yy26; + case 3: goto yy28; } -yy45: ++YYCURSOR; +yy46: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych == '\n') goto yy44; - goto yy42; -yy46: yych = *++YYCURSOR; - goto yy47; -yy47: -#line 125 "scanner.re" + if(yych == '\n') goto yy45; + goto yy43; +yy47: yych = *++YYCURSOR; + goto yy48; +yy48: +#line 126 "scanner.re" { cur = cursor; yylval.regexp = ranToRE(token()); return RANGE; } -#line 257 "re2c-output.c" -yy48: ++YYCURSOR; +#line 261 "re2c-output.c" +yy49: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - goto yy49; -yy49: if(yych <= '&'){ - if(yych == '\n') goto yy44; - goto yy48; + goto yy50; +yy50: if(yych <= '&'){ + if(yych == '\n') goto yy45; + goto yy49; } else { - if(yych <= '\'') goto yy51; - if(yych != '\\') goto yy48; - goto yy50; + if(yych <= '\'') goto yy52; + if(yych != '\\') goto yy49; + goto yy51; } -yy50: ++YYCURSOR; +yy51: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych == '\n') goto yy44; - goto yy48; -yy51: yych = *++YYCURSOR; - goto yy52; -yy52: + if(yych == '\n') goto yy45; + goto yy49; +yy52: yych = *++YYCURSOR; + goto yy53; +yy53: #line 119 "scanner.re" { cur = cursor; yylval.regexp = strToCaseInsensitiveRE(token()); return STRING; } -#line 282 "re2c-output.c" -yy53: ++YYCURSOR; +#line 286 "re2c-output.c" +yy54: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - goto yy54; -yy54: if(yych <= '!'){ - if(yych == '\n') goto yy44; - goto yy53; + goto yy55; +yy55: if(yych <= '!'){ + if(yych == '\n') goto yy45; + goto yy54; } else { - if(yych <= '"') goto yy56; - if(yych != '\\') goto yy53; - goto yy55; + if(yych <= '"') goto yy57; + if(yych != '\\') goto yy54; + goto yy56; } -yy55: ++YYCURSOR; +yy56: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych == '\n') goto yy44; - goto yy53; -yy56: yych = *++YYCURSOR; - goto yy57; -yy57: + if(yych == '\n') goto yy45; + goto yy54; +yy57: yych = *++YYCURSOR; + goto yy58; +yy58: #line 115 "scanner.re" { cur = cursor; yylval.regexp = strToRE(token()); return STRING; } -#line 307 "re2c-output.c" -yy58: yych = *++YYCURSOR; - goto yy59; -yy59: +#line 311 "re2c-output.c" +yy59: yych = *++YYCURSOR; + goto yy60; +yy60: #line 112 "scanner.re" { tok = cursor; RETURN(0); } -#line 314 "re2c-output.c" -yy60: yych = *++YYCURSOR; - goto yy61; -yy61: +#line 318 "re2c-output.c" +yy61: yych = *++YYCURSOR; + goto yy62; +yy62: #line 109 "scanner.re" { depth = 1; goto comment; } -#line 321 "re2c-output.c" -yy62: ++YYCURSOR; +#line 325 "re2c-output.c" +yy63: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - goto yy63; -yy63: if(yych <= '/'){ - if(yych == ',') goto yy66; - goto yy44; + goto yy64; +yy64: if(yych <= '/'){ + if(yych == ',') goto yy67; + goto yy45; } else { - if(yych <= '9') goto yy62; - if(yych != '}') goto yy44; - goto yy64; + if(yych <= '9') goto yy63; + if(yych != '}') goto yy45; + goto yy65; } -yy64: yych = *++YYCURSOR; - goto yy65; -yy65: -#line 135 "scanner.re" +yy65: yych = *++YYCURSOR; + goto yy66; +yy66: +#line 137 "scanner.re" { yylval.extop.minsize = atoi((char *)tok+1); yylval.extop.maxsize = atoi((char *)tok+1); RETURN(CLOSESIZE); } -#line 341 "re2c-output.c" -yy66: yych = *++YYCURSOR; - if(yych != '}') goto yy70; - goto yy67; +#line 345 "re2c-output.c" yy67: yych = *++YYCURSOR; + if(yych != '}') goto yy71; goto yy68; -yy68: -#line 143 "scanner.re" +yy68: yych = *++YYCURSOR; + goto yy69; +yy69: +#line 145 "scanner.re" { yylval.extop.minsize = atoi((char *)tok+1); yylval.extop.maxsize = -1; RETURN(CLOSESIZE); } -#line 352 "re2c-output.c" -yy69: ++YYCURSOR; +#line 356 "re2c-output.c" +yy70: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - goto yy70; -yy70: if(yych <= '/') goto yy44; - if(yych <= '9') goto yy69; - if(yych != '}') goto yy44; goto yy71; -yy71: yych = *++YYCURSOR; +yy71: if(yych <= '/') goto yy45; + if(yych <= '9') goto yy70; + if(yych != '}') goto yy45; goto yy72; -yy72: -#line 139 "scanner.re" +yy72: yych = *++YYCURSOR; + goto yy73; +yy73: +#line 141 "scanner.re" { yylval.extop.minsize = atoi((char *)tok+1); yylval.extop.maxsize = MAX(yylval.extop.minsize,atoi(strchr((char *)tok, ',')+1)); RETURN(CLOSESIZE); } -#line 368 "re2c-output.c" +#line 372 "re2c-output.c" } -#line 161 "scanner.re" +#line 163 "scanner.re" code: -#line 372 "re2c-output.c" +#line 376 "re2c-output.c" { YYCTYPE yych; unsigned int yyaccept; - goto yy73; -yy74: ++YYCURSOR; -yy73: + goto yy74; +yy75: ++YYCURSOR; +yy74: if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; if(yych <= '&'){ if(yych <= '\n'){ - if(yych <= '\t') goto yy81; - goto yy79; + if(yych <= '\t') goto yy82; + goto yy80; } else { - if(yych == '"') goto yy83; - goto yy81; + if(yych == '"') goto yy84; + goto yy82; } } else { if(yych <= '{'){ - if(yych <= '\'') goto yy84; - if(yych <= 'z') goto yy81; - goto yy77; + if(yych <= '\'') goto yy85; + if(yych <= 'z') goto yy82; + goto yy78; } else { - if(yych != '}') goto yy81; - goto yy75; + if(yych != '}') goto yy82; + goto yy76; } } -yy75: yych = *++YYCURSOR; - goto yy76; -yy76: -#line 165 "scanner.re" +yy76: yych = *++YYCURSOR; + goto yy77; +yy77: +#line 167 "scanner.re" { if(--depth == 0){ cur = cursor; yylval.token = new Token(token(), tline); return CODE; } goto code; } -#line 409 "re2c-output.c" -yy77: yych = *++YYCURSOR; - goto yy78; -yy78: -#line 171 "scanner.re" +#line 413 "re2c-output.c" +yy78: yych = *++YYCURSOR; + goto yy79; +yy79: +#line 173 "scanner.re" { ++depth; goto code; } -#line 416 "re2c-output.c" -yy79: yych = *++YYCURSOR; - goto yy80; -yy80: -#line 173 "scanner.re" +#line 420 "re2c-output.c" +yy80: yych = *++YYCURSOR; + goto yy81; +yy81: +#line 175 "scanner.re" { if(cursor == eof) fatal("missing '}'"); pos = cursor; cline++; goto code; } -#line 425 "re2c-output.c" -yy81: yych = *++YYCURSOR; - goto yy82; -yy82: -#line 177 "scanner.re" +#line 429 "re2c-output.c" +yy82: yych = *++YYCURSOR; + goto yy83; +yy83: +#line 179 "scanner.re" { goto code; } -#line 431 "re2c-output.c" -yy83: yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == '\n') goto yy82; - goto yy90; +#line 435 "re2c-output.c" yy84: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if(yych == '\n') goto yy82; - goto yy86; -yy85: ++YYCURSOR; + if(yych == '\n') goto yy83; + goto yy91; +yy85: yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if(yych == '\n') goto yy83; + goto yy87; +yy86: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - goto yy86; -yy86: if(yych <= '&'){ - if(yych != '\n') goto yy85; - goto yy87; + goto yy87; +yy87: if(yych <= '&'){ + if(yych != '\n') goto yy86; + goto yy88; } else { - if(yych <= '\'') goto yy81; - if(yych == '\\') goto yy88; - goto yy85; + if(yych <= '\'') goto yy82; + if(yych == '\\') goto yy89; + goto yy86; } -yy87: YYCURSOR = YYMARKER; +yy88: YYCURSOR = YYMARKER; switch(yyaccept){ - case 0: goto yy82; + case 0: goto yy83; } -yy88: ++YYCURSOR; +yy89: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych == '\n') goto yy87; - goto yy85; -yy89: ++YYCURSOR; + if(yych == '\n') goto yy88; + goto yy86; +yy90: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - goto yy90; -yy90: if(yych <= '!'){ - if(yych == '\n') goto yy87; - goto yy89; + goto yy91; +yy91: if(yych <= '!'){ + if(yych == '\n') goto yy88; + goto yy90; } else { - if(yych <= '"') goto yy81; - if(yych != '\\') goto yy89; - goto yy91; + if(yych <= '"') goto yy82; + if(yych != '\\') goto yy90; + goto yy92; } -yy91: ++YYCURSOR; +yy92: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych == '\n') goto yy87; - goto yy89; + if(yych == '\n') goto yy88; + goto yy90; } -#line 178 "scanner.re" +#line 180 "scanner.re" comment: -#line 481 "re2c-output.c" +#line 485 "re2c-output.c" { YYCTYPE yych; unsigned int yyaccept; - goto yy92; -yy93: ++YYCURSOR; -yy92: + goto yy93; +yy94: ++YYCURSOR; +yy93: if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; if(yych <= ')'){ - if(yych == '\n') goto yy97; - goto yy99; + if(yych == '\n') goto yy98; + goto yy100; } else { - if(yych <= '*') goto yy94; - if(yych == '/') goto yy96; - goto yy99; + if(yych <= '*') goto yy95; + if(yych == '/') goto yy97; + goto yy100; } -yy94: yych = *++YYCURSOR; - if(yych == '/') goto yy102; - goto yy95; -yy95: -#line 192 "scanner.re" +yy95: yych = *++YYCURSOR; + if(yych == '/') goto yy103; + goto yy96; +yy96: +#line 194 "scanner.re" { goto comment; } -#line 504 "re2c-output.c" -yy96: yych = *++YYCURSOR; - if(yych == '*') goto yy100; - goto yy95; +#line 508 "re2c-output.c" yy97: yych = *++YYCURSOR; - goto yy98; -yy98: -#line 188 "scanner.re" + if(yych == '*') goto yy101; + goto yy96; +yy98: yych = *++YYCURSOR; + goto yy99; +yy99: +#line 190 "scanner.re" { if(cursor == eof) RETURN(0); tok = pos = cursor; cline++; goto comment; } -#line 516 "re2c-output.c" -yy99: yych = *++YYCURSOR; - goto yy95; +#line 520 "re2c-output.c" yy100: yych = *++YYCURSOR; - goto yy101; -yy101: -#line 186 "scanner.re" + goto yy96; +yy101: yych = *++YYCURSOR; + goto yy102; +yy102: +#line 188 "scanner.re" { ++depth; goto comment; } -#line 525 "re2c-output.c" -yy102: yych = *++YYCURSOR; - goto yy103; -yy103: -#line 182 "scanner.re" +#line 529 "re2c-output.c" +yy103: yych = *++YYCURSOR; + goto yy104; +yy104: +#line 184 "scanner.re" { if(--depth == 0) goto scan; else goto comment; } -#line 534 "re2c-output.c" +#line 538 "re2c-output.c" } -#line 193 "scanner.re" +#line 195 "scanner.re" } diff --git a/scanner.re b/scanner.re index 15d0b5f3..c2fecd48 100644 --- a/scanner.re +++ b/scanner.re @@ -120,12 +120,14 @@ scan: yylval.regexp = strToCaseInsensitiveRE(token()); return STRING; } - "\"" { fatal("bad string"); } + "\"" { fatal("unterminated string constant (missing \")"); } + "'" { fatal("unterminated string constant (missing ')"); } cstring { cur = cursor; yylval.regexp = ranToRE(token()); return RANGE; } - "[" { fatal("bad character constant"); } + + "[" { fatal("unterminated range (missing ])"); } [()|=;/\\] { RETURN(*tok); }