summaryrefslogtreecommitdiff
path: root/ext/standard
diff options
context:
space:
mode:
Diffstat (limited to 'ext/standard')
-rw-r--r--ext/standard/url_scanner.c308
-rw-r--r--ext/standard/url_scanner.re11
2 files changed, 198 insertions, 121 deletions
diff --git a/ext/standard/url_scanner.c b/ext/standard/url_scanner.c
index 045f183b12..0dbaf3113a 100644
--- a/ext/standard/url_scanner.c
+++ b/ext/standard/url_scanner.c
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.5 on Thu Oct 21 22:22:05 1999 */
+/* Generated by re2c 0.5 on Tue Nov 2 19:35:36 1999 */
#line 1 "url_scanner.re"
/*
+----------------------------------------------------------------------+
@@ -122,7 +122,7 @@ static void catchup(lexdata *state)
ATTACH(state->start, (state->crs - state->start));
}
-#line 135
+#line 139
static void url_scanner(lexdata *state)
@@ -158,41 +158,42 @@ yy5: switch(yych){
default: goto yy4;
}
yy6:
-#line 147
+#line 152
{ BEGIN(INITIAL); }
yy7: yych = *++YYCURSOR;
yy8:
-#line 148
+#line 153
{ FINISH; }
yy9: yych = *++YYCURSOR;
switch(yych){
case 'H': case 'h': goto yy3;
- case 'R': case 'r': goto yy26;
- default: goto yy25;
+ case 'R': case 'r': goto yy41;
+ default: goto yy40;
}
yy10: yych = *++YYCURSOR;
switch(yych){
+ case 'O': case 'o': goto yy12;
case 'R': case 'r': goto yy11;
default: goto yy3;
}
yy11: yych = *++YYCURSOR;
switch(yych){
- case 'A': case 'a': goto yy12;
+ case 'A': case 'a': goto yy27;
default: goto yy3;
}
yy12: yych = *++YYCURSOR;
switch(yych){
- case 'M': case 'm': goto yy13;
+ case 'R': case 'r': goto yy13;
default: goto yy3;
}
yy13: yych = *++YYCURSOR;
switch(yych){
- case 'E': case 'e': goto yy14;
+ case 'M': case 'm': goto yy14;
default: goto yy3;
}
yy14: yych = *++YYCURSOR;
switch(yych){
- case 'S': case 's': goto yy3;
+ case 'A': case 'a': goto yy3;
default: goto yy16;
}
yy15: ++YYCURSOR;
@@ -201,85 +202,86 @@ yy15: ++YYCURSOR;
yy16: switch(yych){
case '\t': case '\v':
case '\f': case ' ': goto yy15;
- case 'S': case 's': goto yy17;
+ case 'A': case 'a': goto yy17;
default: goto yy3;
}
yy17: yych = *++YYCURSOR;
switch(yych){
- case 'R': case 'r': goto yy18;
+ case 'C': case 'c': goto yy18;
default: goto yy3;
}
yy18: yych = *++YYCURSOR;
switch(yych){
- case 'C': case 'c': goto yy19;
+ case 'T': case 't': goto yy19;
default: goto yy3;
}
-yy19: ++YYCURSOR;
- if(YYLIMIT == YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
-yy20: switch(yych){
- case '\t': case '\v':
- case '\f': case ' ': goto yy19;
- case '=': goto yy21;
+yy19: yych = *++YYCURSOR;
+ switch(yych){
+ case 'I': case 'i': goto yy20;
default: goto yy3;
}
-yy21: ++YYCURSOR;
+yy20: yych = *++YYCURSOR;
+ switch(yych){
+ case 'O': case 'o': goto yy21;
+ default: goto yy3;
+ }
+yy21: yych = *++YYCURSOR;
+ switch(yych){
+ case 'N': case 'n': goto yy22;
+ default: goto yy3;
+ }
+yy22: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
-yy22: switch(yych){
+yy23: switch(yych){
case '\t': case '\v':
- case '\f': case ' ': goto yy21;
- default: goto yy23;
+ case '\f': case ' ': goto yy22;
+ case '=': goto yy24;
+ default: goto yy3;
}
-yy23:
-#line 144
- { BEGIN(REF); }
yy24: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
yy25: switch(yych){
case '\t': case '\v':
case '\f': case ' ': goto yy24;
- case 'H': case 'h': goto yy39;
- default: goto yy3;
+ default: goto yy26;
}
-yy26: yych = *++YYCURSOR;
+yy26:
+#line 150
+ { BEGIN(REF); }
+yy27: yych = *++YYCURSOR;
switch(yych){
- case 'E': case 'e': goto yy27;
+ case 'M': case 'm': goto yy28;
default: goto yy3;
}
-yy27: yych = *++YYCURSOR;
+yy28: yych = *++YYCURSOR;
switch(yych){
- case 'A': case 'a': goto yy28;
+ case 'E': case 'e': goto yy29;
default: goto yy3;
}
-yy28: yych = *++YYCURSOR;
+yy29: yych = *++YYCURSOR;
switch(yych){
- case 'H': case 'h': goto yy3;
- default: goto yy30;
+ case 'S': case 's': goto yy3;
+ default: goto yy31;
}
-yy29: ++YYCURSOR;
+yy30: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
-yy30: switch(yych){
+yy31: switch(yych){
case '\t': case '\v':
- case '\f': case ' ': goto yy29;
- case 'H': case 'h': goto yy31;
- default: goto yy3;
- }
-yy31: yych = *++YYCURSOR;
- switch(yych){
- case 'R': case 'r': goto yy32;
+ case '\f': case ' ': goto yy30;
+ case 'S': case 's': goto yy32;
default: goto yy3;
}
yy32: yych = *++YYCURSOR;
switch(yych){
- case 'E': case 'e': goto yy33;
+ case 'R': case 'r': goto yy33;
default: goto yy3;
}
yy33: yych = *++YYCURSOR;
switch(yych){
- case 'F': case 'f': goto yy34;
+ case 'C': case 'c': goto yy34;
default: goto yy3;
}
yy34: ++YYCURSOR;
@@ -300,133 +302,203 @@ yy37: switch(yych){
default: goto yy38;
}
yy38:
-#line 146
+#line 148
{ BEGIN(REF); }
-yy39: yych = *++YYCURSOR;
+yy39: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+yy40: switch(yych){
+ case '\t': case '\v':
+ case '\f': case ' ': goto yy39;
+ case 'H': case 'h': goto yy54;
+ default: goto yy3;
+ }
+yy41: yych = *++YYCURSOR;
switch(yych){
- case 'R': case 'r': goto yy40;
+ case 'E': case 'e': goto yy42;
default: goto yy3;
}
-yy40: yych = *++YYCURSOR;
+yy42: yych = *++YYCURSOR;
switch(yych){
- case 'E': case 'e': goto yy41;
+ case 'A': case 'a': goto yy43;
default: goto yy3;
}
-yy41: yych = *++YYCURSOR;
+yy43: yych = *++YYCURSOR;
+ switch(yych){
+ case 'H': case 'h': goto yy3;
+ default: goto yy45;
+ }
+yy44: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+yy45: switch(yych){
+ case '\t': case '\v':
+ case '\f': case ' ': goto yy44;
+ case 'H': case 'h': goto yy46;
+ default: goto yy3;
+ }
+yy46: yych = *++YYCURSOR;
+ switch(yych){
+ case 'R': case 'r': goto yy47;
+ default: goto yy3;
+ }
+yy47: yych = *++YYCURSOR;
switch(yych){
- case 'F': case 'f': goto yy42;
+ case 'E': case 'e': goto yy48;
default: goto yy3;
}
-yy42: ++YYCURSOR;
+yy48: yych = *++YYCURSOR;
+ switch(yych){
+ case 'F': case 'f': goto yy49;
+ default: goto yy3;
+ }
+yy49: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
-yy43: switch(yych){
+yy50: switch(yych){
case '\t': case '\v':
- case '\f': case ' ': goto yy42;
- case '=': goto yy44;
+ case '\f': case ' ': goto yy49;
+ case '=': goto yy51;
default: goto yy3;
}
-yy44: ++YYCURSOR;
+yy51: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
-yy45: switch(yych){
+yy52: switch(yych){
case '\t': case '\v':
- case '\f': case ' ': goto yy44;
- default: goto yy46;
+ case '\f': case ' ': goto yy51;
+ default: goto yy53;
}
-yy46:
-#line 145
+yy53:
+#line 151
{ BEGIN(REF); }
-}
+yy54: yych = *++YYCURSOR;
+ switch(yych){
+ case 'R': case 'r': goto yy55;
+ default: goto yy3;
+ }
+yy55: yych = *++YYCURSOR;
+ switch(yych){
+ case 'E': case 'e': goto yy56;
+ default: goto yy3;
+ }
+yy56: yych = *++YYCURSOR;
+ switch(yych){
+ case 'F': case 'f': goto yy57;
+ default: goto yy3;
+ }
+yy57: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+yy58: switch(yych){
+ case '\t': case '\v':
+ case '\f': case ' ': goto yy57;
+ case '=': goto yy59;
+ default: goto yy3;
+ }
+yy59: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+yy60: switch(yych){
+ case '\t': case '\v':
+ case '\f': case ' ': goto yy59;
+ default: goto yy61;
+ }
+yy61:
#line 149
+ { BEGIN(REF); }
+}
+#line 154
break;
case REF:
{
YYCTYPE yych;
unsigned int yyaccept;
- goto yy47;
-yy48: ++YYCURSOR;
-yy47:
+ goto yy62;
+yy63: ++YYCURSOR;
+yy62:
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
switch(yych){
- case '\000': case '#': case '>': goto yy49;
+ case '\000': case '>': goto yy64;
case '\t': case '\v':
- case '\f': case ' ': case '"': goto yy50;
- case ':': goto yy55;
- default: goto yy52;
+ case '\f': case ' ': case '"': goto yy65;
+ case '#': goto yy69;
+ case ':': goto yy71;
+ default: goto yy67;
}
-yy49:yy50: ++YYCURSOR;
+yy64:
+#line 158
+ { BEGIN(INITIAL); }
+yy65: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
-yy51: switch(yych){
- case '\000': case '"':
- case '#': case '>': goto yy49;
+yy66: switch(yych){
+ case '\000': case '>': goto yy64;
case '\t': case '\v':
- case '\f': case ' ': goto yy50;
- case ':': goto yy55;
- default: goto yy52;
+ case '\f': case ' ': goto yy65;
+ case '"': goto yy79;
+ case '#': goto yy69;
+ case ':': goto yy71;
+ default: goto yy67;
}
-yy52: ++YYCURSOR;
+yy67: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
-yy53: switch(yych){
- case '\000': case '>': goto yy54;
+yy68: switch(yych){
+ case '\000': case '>': goto yy64;
case '\t': case '\v':
- case '\f': case ' ': goto yy61;
- case '"': goto yy63;
- case '#': goto yy64;
- case ':': goto yy55;
- default: goto yy52;
- }
-yy54:
-#line 153
+ case '\f': case ' ': goto yy77;
+ case '"': goto yy79;
+ case '#': goto yy69;
+ case ':': goto yy71;
+ default: goto yy67;
+ }
+yy69: yych = *++YYCURSOR;
+yy70: YYCURSOR -= 1;
+#line 159
{ BEGIN(INITIAL); }
-yy55: ++YYCURSOR;
+yy71: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
-yy56: switch(yych){
- case '\000': case '#': case '>': goto yy57;
+yy72: switch(yych){
+ case '\000': case '#': case '>': goto yy73;
case '\t': case '\v':
- case '\f': case ' ': goto yy58;
- case '"': goto yy60;
- default: goto yy55;
+ case '\f': case ' ': goto yy74;
+ case '"': goto yy76;
+ default: goto yy71;
}
-yy57:
-#line 155
+yy73:
+#line 160
{
/* don't modify absolute links */
state->state = INITIAL; BEGIN(INITIAL);
}
-yy58: ++YYCURSOR;
+yy74: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
-yy59: switch(yych){
+yy75: switch(yych){
case '\t': case '\v':
- case '\f': case ' ': goto yy58;
- case '"': goto yy60;
- default: goto yy57;
+ case '\f': case ' ': goto yy74;
+ case '"': goto yy76;
+ default: goto yy73;
}
-yy60: yych = *++YYCURSOR;
- goto yy57;
-yy61: ++YYCURSOR;
+yy76: yych = *++YYCURSOR;
+ goto yy73;
+yy77: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
-yy62: switch(yych){
+yy78: switch(yych){
case '\t': case '\v':
- case '\f': case ' ': goto yy61;
- case '"': goto yy63;
- default: goto yy54;
- }
-yy63: yych = *++YYCURSOR;
- goto yy54;
-yy64: yych = *++YYCURSOR;
-yy65: YYCURSOR -= 1;
-#line 154
- { BEGIN(INITIAL); }
+ case '\f': case ' ': goto yy77;
+ case '"': goto yy79;
+ default: goto yy64;
+ }
+yy79: yych = *++YYCURSOR;
+ goto yy64;
}
-#line 159
+#line 164
break;
}
diff --git a/ext/standard/url_scanner.re b/ext/standard/url_scanner.re
index d9835cae46..e8ad981de6 100644
--- a/ext/standard/url_scanner.re
+++ b/ext/standard/url_scanner.re
@@ -129,9 +129,13 @@ C = [cC];
E = [eE];
F = [fF];
H = [hH];
+I = [iI];
M = [mM];
+N = [nN];
+O = [oO];
R = [rR];
S = [sS];
+T = [tT];
*/
static void url_scanner(lexdata *state)
@@ -143,6 +147,7 @@ static void url_scanner(lexdata *state)
/*!re2c
"<" F R A M E ws+ S R C ws* "=" ws* { BEGIN(REF); }
"<" A ws+ H R E F ws* "=" ws* { BEGIN(REF); }
+ "<" F O R M ws+ A C T I O N ws* "=" ws* { BEGIN(REF); }
"<" A R E A ws+ H R E F ws* "=" ws* { BEGIN(REF); }
(all\[<])+ { BEGIN(INITIAL); }
eof { FINISH; }
@@ -150,9 +155,9 @@ static void url_scanner(lexdata *state)
break;
case REF:
/*!re2c
- ["]? ws* (all\[> \t\v\f":#])+ ws* ["]? { BEGIN(INITIAL); }
- ["]? ws* (all\[> \t\v\f":#])+/[#] { BEGIN(INITIAL); }
- ["]? ws* (all\[> \t\v\f"#])+ ws* ["]? {
+ ["]? ws* (all\[> \t\v\f":#])* ws* ["]? { BEGIN(INITIAL); }
+ ["]? ws* (all\[> \t\v\f":#])* /[#] { BEGIN(INITIAL); }
+ ["]? ws* (all\[> \t\v\f"#])* ws* ["]? {
/* don't modify absolute links */
state->state = INITIAL; BEGIN(INITIAL);
}