From: helly Date: Sun, 1 Jan 2006 18:43:01 +0000 (+0000) Subject: - Complex rule must be first X-Git-Tag: 0.13.6~515 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=cb70d984f034a701000e72e9bdb4caf396b1c830;p=re2c - Complex rule must be first --- diff --git a/bootstrap/scanner.cc b/bootstrap/scanner.cc index ec984666..2dcf4a7f 100644 --- a/bootstrap/scanner.cc +++ b/bootstrap/scanner.cc @@ -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 @@ -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; diff --git a/scanner.re b/scanner.re index a95494d3..4c3162fb 100644 --- a/scanner.re +++ b/scanner.re @@ -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;