- Complex rule must be first
authorhelly <helly@642ea486-5414-0410-9d7f-a0204ed87703>
Sun, 1 Jan 2006 18:43:01 +0000 (18:43 +0000)
committerhelly <helly@642ea486-5414-0410-9d7f-a0204ed87703>
Sun, 1 Jan 2006 18:43:01 +0000 (18:43 +0000)
bootstrap/scanner.cc
scanner.re

index ec9846663cf49fa6a2174edfba1e5a73ed54b0f4..2dcf4a7f0822a09e847658f178fe88afc1bbc307 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.10.0.dev on Sun Jan  1 19:19:49 2006 */
+/* Generated by re2c 0.10.0.dev on Sun Jan  1 19:37:31 2006 */
 #line 1 "scanner.re"
 /* $Id$ */
 #include <stdlib.h>
@@ -309,18 +309,18 @@ yy29:
                        } else {
                                if(yych == '?') goto yy44;
                                if(yych <= '@') goto yy56;
-                               goto yy45;
+                               goto yy47;
                        }
                } else {
                        if(yych <= 'q') {
                                if(yych <= '[') goto yy41;
                                if(yych <= '\\') goto yy43;
                                if(yych <= '`') goto yy56;
-                               goto yy45;
+                               goto yy47;
                        } else {
                                if(yych <= 'z') {
-                                       if(yych <= 'r') goto yy47;
-                                       goto yy45;
+                                       if(yych <= 'r') goto yy45;
+                                       goto yy47;
                                } else {
                                        if(yych <= '{') goto yy31;
                                        if(yych <= '|') goto yy43;
@@ -399,18 +399,17 @@ yy44:
        goto yy36;
 yy45:
        ++YYCURSOR;
-       yych = *YYCURSOR;
-       goto yy62;
+       if((yych = *YYCURSOR) == 'e') goto yy62;
+       goto yy61;
 yy46:
-#line 213 "scanner.re"
+#line 220 "scanner.re"
        { cur = cursor;
                                  yylval.symbol = Symbol::find(token());
                                  return ID; }
 #line 410 "scanner.cc"
 yy47:
        yych = *++YYCURSOR;
-       if(yych == 'e') goto yy60;
-       goto yy62;
+       goto yy61;
 yy48:
        ++YYCURSOR;
        goto yy49;
@@ -420,7 +419,7 @@ yy49:
                                  yylval.regexp = mkDot();
                                  return RANGE;
                                }
-#line 424 "scanner.cc"
+#line 423 "scanner.cc"
 yy50:
        ++YYCURSOR;
        yych = *YYCURSOR;
@@ -428,7 +427,7 @@ yy50:
 yy51:
 #line 229 "scanner.re"
        { goto scan; }
-#line 432 "scanner.cc"
+#line 431 "scanner.cc"
 yy52:
        ++YYCURSOR;
        goto yy53;
@@ -438,7 +437,7 @@ yy53:
                                  pos = cursor; cline++;
                                  goto scan;
                                }
-#line 442 "scanner.cc"
+#line 441 "scanner.cc"
 yy54:
        ++YYCURSOR;
        if((yych = *YYCURSOR) == 0x0A) goto yy57;
@@ -457,7 +456,7 @@ yy55:
                                  }
                                  goto scan;
                                }
-#line 461 "scanner.cc"
+#line 460 "scanner.cc"
 yy56:
        yych = *++YYCURSOR;
        goto yy55;
@@ -474,33 +473,33 @@ yy59:
        if(yych == ' ') goto yy58;
        goto yy51;
 yy60:
-       yych = *++YYCURSOR;
-       if(yych == '2') goto yy63;
-       goto yy62;
-yy61:
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       goto yy62;
-yy62:
+       goto yy61;
+yy61:
        if(yych <= '@') {
                if(yych <= '/') goto yy46;
-               if(yych <= '9') goto yy61;
+               if(yych <= '9') goto yy60;
                goto yy46;
        } else {
-               if(yych <= 'Z') goto yy61;
+               if(yych <= 'Z') goto yy60;
                if(yych <= '`') goto yy46;
-               if(yych <= 'z') goto yy61;
+               if(yych <= 'z') goto yy60;
                goto yy46;
        }
+yy62:
+       yych = *++YYCURSOR;
+       if(yych != '2') goto yy61;
+       goto yy63;
 yy63:
        yych = *++YYCURSOR;
-       if(yych != 'c') goto yy62;
+       if(yych != 'c') goto yy61;
        goto yy64;
 yy64:
        yyaccept = 4;
        yych = *(YYMARKER = ++YYCURSOR);
-       if(yych != ':') goto yy62;
+       if(yych != ':') goto yy61;
        goto yy65;
 yy65:
        yych = *++YYCURSOR;
@@ -541,14 +540,14 @@ yy68:
                }
        }
 yy69:
-#line 217 "scanner.re"
+#line 213 "scanner.re"
        { cur = cursor;
                                  tok+= 5; /* skip "re2c:" */
                                  iscfg = 1;
                                  yylval.str = new Str(token());
                                  return CONFIG;
                                }
-#line 552 "scanner.cc"
+#line 551 "scanner.cc"
 yy70:
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
@@ -591,7 +590,7 @@ yy76:
        { cur = cursor;
                                  yylval.regexp = ranToRE(token());
                                  return RANGE; }
-#line 595 "scanner.cc"
+#line 594 "scanner.cc"
 yy77:
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
@@ -606,7 +605,7 @@ yy79:
        { cur = cursor;
                                  yylval.regexp = invToRE(token());
                                  return RANGE; }
-#line 610 "scanner.cc"
+#line 609 "scanner.cc"
 yy80:
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
@@ -635,7 +634,7 @@ yy84:
        { cur = cursor;
                                  yylval.regexp = strToCaseInsensitiveRE(token());
                                  return STRING; }
-#line 639 "scanner.cc"
+#line 638 "scanner.cc"
 yy85:
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
@@ -664,7 +663,7 @@ yy89:
        { cur = cursor;
                                  yylval.regexp = strToRE(token());
                                  return STRING; }
-#line 668 "scanner.cc"
+#line 667 "scanner.cc"
 yy90:
        ++YYCURSOR;
        goto yy91;
@@ -672,7 +671,7 @@ yy91:
 #line 167 "scanner.re"
        { tok = cursor;
                                  RETURN(0); }
-#line 676 "scanner.cc"
+#line 675 "scanner.cc"
 yy92:
        ++YYCURSOR;
        goto yy93;
@@ -680,7 +679,7 @@ yy93:
 #line 164 "scanner.re"
        { depth = 1;
                                  goto comment; }
-#line 684 "scanner.cc"
+#line 683 "scanner.cc"
 yy94:
        yych = *++YYCURSOR;
        if(yych == ',') goto yy108;
@@ -705,7 +704,7 @@ yy97:
 yy98:
 #line 211 "scanner.re"
        { fatal("illegal closure form, use '{n}', '{n,}', '{n,m}' where n and m are numbers"); }
-#line 709 "scanner.cc"
+#line 708 "scanner.cc"
 yy99:
        ++YYCURSOR;
        goto yy100;
@@ -714,7 +713,7 @@ yy100:
        { yylval.extop.minsize = atoi((char *)tok+1);
                                  yylval.extop.maxsize = atoi((char *)tok+1);
                                  RETURN(CLOSESIZE); }
-#line 718 "scanner.cc"
+#line 717 "scanner.cc"
 yy101:
        yyaccept = 5;
        yych = *(YYMARKER = ++YYCURSOR);
@@ -730,7 +729,7 @@ yy103:
        { yylval.extop.minsize = atoi((char *)tok+1);
                                  yylval.extop.maxsize = -1;
                                  RETURN(CLOSESIZE); }
-#line 734 "scanner.cc"
+#line 733 "scanner.cc"
 yy104:
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
@@ -749,7 +748,7 @@ yy107:
        { yylval.extop.minsize = atoi((char *)tok+1);
                                  yylval.extop.maxsize = MAX(yylval.extop.minsize,atoi(strchr((char *)tok, ',')+1));
                                  RETURN(CLOSESIZE); }
-#line 753 "scanner.cc"
+#line 752 "scanner.cc"
 yy108:
        yyaccept = 5;
        yych = *(YYMARKER = ++YYCURSOR);
@@ -764,14 +763,14 @@ yy110:
 #line 196 "scanner.re"
        { yylval.op = '*';
                                  RETURN(CLOSE); }
-#line 768 "scanner.cc"
+#line 767 "scanner.cc"
 }
 #line 248 "scanner.re"
 
 
 code:
 
-#line 775 "scanner.cc"
+#line 774 "scanner.cc"
 {
        YYCTYPE yych;
        unsigned int yyaccept = 0;
@@ -809,7 +808,7 @@ yy114:
                                        return CODE;
                                  }
                                  goto code; }
-#line 813 "scanner.cc"
+#line 812 "scanner.cc"
 yy115:
        ++YYCURSOR;
        goto yy116;
@@ -817,7 +816,7 @@ yy116:
 #line 258 "scanner.re"
        { ++depth;
                                  goto code; }
-#line 821 "scanner.cc"
+#line 820 "scanner.cc"
 yy117:
        ++YYCURSOR;
        goto yy118;
@@ -827,14 +826,14 @@ yy118:
                                  pos = cursor; cline++;
                                  goto code;
                                }
-#line 831 "scanner.cc"
+#line 830 "scanner.cc"
 yy119:
        ++YYCURSOR;
        goto yy120;
 yy120:
 #line 264 "scanner.re"
        { goto code; }
-#line 838 "scanner.cc"
+#line 837 "scanner.cc"
 yy121:
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
@@ -896,7 +895,7 @@ yy129:
 
 comment:
 
-#line 900 "scanner.cc"
+#line 899 "scanner.cc"
 {
        YYCTYPE yych;
        goto yy130;
@@ -919,7 +918,7 @@ yy132:
 yy133:
 #line 280 "scanner.re"
        { goto comment; }
-#line 923 "scanner.cc"
+#line 922 "scanner.cc"
 yy134:
        yych = *++YYCURSOR;
        if(yych == '*') goto yy138;
@@ -933,7 +932,7 @@ yy136:
                                  tok = pos = cursor; cline++;
                                  goto comment;
                                }
-#line 937 "scanner.cc"
+#line 936 "scanner.cc"
 yy137:
        yych = *++YYCURSOR;
        goto yy133;
@@ -945,7 +944,7 @@ yy139:
        { ++depth;
                                  fatal("ambiguous /* found");
                                  goto comment; }
-#line 949 "scanner.cc"
+#line 948 "scanner.cc"
 yy140:
        ++YYCURSOR;
        goto yy141;
@@ -955,14 +954,14 @@ yy141:
                                        goto scan;
                                    else
                                        goto comment; }
-#line 959 "scanner.cc"
+#line 958 "scanner.cc"
 }
 #line 281 "scanner.re"
 
 
 config:
 
-#line 966 "scanner.cc"
+#line 965 "scanner.cc"
 {
        YYCTYPE yych;
        goto yy142;
@@ -985,7 +984,7 @@ yy144:
 yy145:
 #line 285 "scanner.re"
        { goto config; }
-#line 989 "scanner.cc"
+#line 988 "scanner.cc"
 yy146:
        ++YYCURSOR;
        yych = *YYCURSOR;
@@ -996,14 +995,14 @@ yy147:
                                  cur = cursor;
                                  RETURN('='); 
                                }
-#line 1000 "scanner.cc"
+#line 999 "scanner.cc"
 yy148:
        ++YYCURSOR;
        goto yy149;
 yy149:
 #line 290 "scanner.re"
        { fatal("missing '='"); }
-#line 1007 "scanner.cc"
+#line 1006 "scanner.cc"
 yy150:
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
@@ -1028,7 +1027,7 @@ yy153:
 
 value:
 
-#line 1032 "scanner.cc"
+#line 1031 "scanner.cc"
 {
        YYCTYPE yych;
        unsigned int yyaccept = 0;
@@ -1074,7 +1073,7 @@ yy156:
                                  iscfg = 0;
                                  return VALUE;
                                }
-#line 1078 "scanner.cc"
+#line 1077 "scanner.cc"
 yy157:
        ++YYCURSOR;
        if((yych = *YYCURSOR) <= 0x0D) {
@@ -1098,7 +1097,7 @@ yy158:
                                  iscfg = 0;
                                  return NUMBER;
                                }
-#line 1102 "scanner.cc"
+#line 1101 "scanner.cc"
 yy159:
        yych = *++YYCURSOR;
        if(yych <= '0') goto yy163;
index a95494d3f9a27dab103e158db8e595a580c5bde9..4c3162fb151c05ba5a34035ca99ba50e4ac79809 100644 (file)
@@ -210,10 +210,6 @@ scan:
 
        "{" [0-9]* ","          { fatal("illegal closure form, use '{n}', '{n,}', '{n,m}' where n and m are numbers"); }
 
-       name            { cur = cursor;
-                                 yylval.symbol = Symbol::find(token());
-                                 return ID; }
-
        config          { cur = cursor;
                                  tok+= 5; /* skip "re2c:" */
                                  iscfg = 1;
@@ -221,6 +217,10 @@ scan:
                                  return CONFIG;
                                }
 
+       name            { cur = cursor;
+                                 yylval.symbol = Symbol::find(token());
+                                 return ID; }
+
        "."                     { cur = cursor;
                                  yylval.regexp = mkDot();
                                  return RANGE;