]> granicus.if.org Git - re2c/commitdiff
Be more informative with error messages.
authorhelly <helly@642ea486-5414-0410-9d7f-a0204ed87703>
Mon, 19 Apr 2004 02:32:06 +0000 (02:32 +0000)
committerhelly <helly@642ea486-5414-0410-9d7f-a0204ed87703>
Mon, 19 Apr 2004 02:32:06 +0000 (02:32 +0000)
bootstrap/scanner.cc
scanner.re

index 5b39048e8a676aacda7005f2d8191117dc137594..29fd5cb8e34120b621424c9f2b65d6da3f5f3abd 100644 (file)
@@ -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 <stdlib.h>
@@ -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"
 
 }
 
index 15d0b5f345df56ad043ea2443886f34eadd32abb..c2fecd48fec4dc80ae688c760e3820f402a8e8e9 100644 (file)
@@ -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); }