add more tests; allow \< escape out
This commit is contained in:
2
pike.c
2
pike.c
@@ -203,6 +203,8 @@ static int _compilecode(const char **re_loc, rcode *prog, int sizecode)
|
||||
re++;
|
||||
if (!*re) goto syntax_error; // Trailing backslash
|
||||
if (*re == '<' || *re == '>') {
|
||||
if (re - *re_loc > 2 && re[-2] == '\\')
|
||||
break;
|
||||
EMIT(PC++, *re == '<' ? WBEG : WEND);
|
||||
prog->len++;
|
||||
term = PC;
|
||||
|
||||
42
test.sh
42
test.sh
@@ -140,6 +140,20 @@ aaaaa(aa)aa(aa(a)a)?aa
|
||||
(a(a)a|(a)|a(aa)|aa){2,5}
|
||||
((a)a|a(aa)|(aaaa)|(a*)){3,10}
|
||||
((a)a|a(aa)|(aaaa)|(a+)){3,10}
|
||||
(aa(aa){3}|(a)a+(a)|a){3,4}
|
||||
((ax)+b(ax)*)*
|
||||
(a*)(b?)(b+)b{3}
|
||||
(a*){2,3}
|
||||
(a|at|ate|aten)(ten|en|n|d)
|
||||
(a|aa|aaa|aaaaa)(aa|aaaa|aaa)
|
||||
(a|a.|a..|a....)(a.|a...|a..)
|
||||
(a*b|b*a)(a*b|b*a)
|
||||
(ab|((ab)c|abc))c*
|
||||
((a*b*c*)|(a*c*b*))*
|
||||
.*|.*(a|b)?
|
||||
((.a|.ab)(bc.|c.)|abc.)
|
||||
\\\\\\\\<
|
||||
\\\\\\\\\\\\\\\\<
|
||||
"
|
||||
input="\
|
||||
abcdef
|
||||
@@ -281,6 +295,20 @@ aaaaaaaaaa
|
||||
aaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaa
|
||||
axbaxaxbaxaxaxbaxaxaxax
|
||||
aaabbbbbbb
|
||||
aaaaaaaaaaaaaaaaa
|
||||
atend
|
||||
aaaaaa
|
||||
aaaaaa
|
||||
bbaa
|
||||
abc
|
||||
abcacb
|
||||
aa
|
||||
xabcx
|
||||
\\<
|
||||
\\\\\\\\<
|
||||
"
|
||||
expect="\
|
||||
(0,3)
|
||||
@@ -422,6 +450,20 @@ expect="\
|
||||
(0,13)(12,13)(10,11)(12,13)(?,?)
|
||||
(0,17)(17,17)(14,15)(?,?)(?,?)(17,17)
|
||||
(0,17)(16,17)(14,15)(?,?)(?,?)(16,17)
|
||||
(0,15)(14,15)(6,8)(8,9)(13,14)
|
||||
(0,7)(0,7)(0,2)(5,7)
|
||||
(0,10)(0,3)(3,4)(4,7)
|
||||
(0,17)(17,17)
|
||||
(0,4)(0,1)(1,4)
|
||||
(0,3)(0,1)(1,3)
|
||||
(0,3)(0,1)(1,3)
|
||||
(0,2)(0,1)(1,2)
|
||||
(0,3)(0,2)(?,?)(?,?)
|
||||
(0,6)(5,6)(5,6)(?,?)
|
||||
(0,2)(?,?)
|
||||
(0,5)(0,5)(0,2)(2,5)
|
||||
(0,2)
|
||||
(2,5)
|
||||
(0,0)
|
||||
"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user