summaryrefslogtreecommitdiff
path: root/src/pkg/regexp/all_test.go
diff options
context:
space:
mode:
authorRob Pike <r@golang.org>2009-11-19 16:45:50 -0800
committerRob Pike <r@golang.org>2009-11-19 16:45:50 -0800
commit2ccc02b444962f25e2aa195bf1490ea052cb9fdf (patch)
tree5434a9f690a194d749fd0bdf68e50774a0842687 /src/pkg/regexp/all_test.go
parentc73996254551b131642465145fcc4c8cad3a0b44 (diff)
downloadgolang-2ccc02b444962f25e2aa195bf1490ea052cb9fdf.tar.gz
two easy optimizations for regexp:
1) if char class contains a single character, make it a single character. (this is used to quote, e.g. [.] rather than \. 2) if regexp begins with ordinary text substring, use plain string match to start engine R=rsc CC=golang-dev http://codereview.appspot.com/157095
Diffstat (limited to 'src/pkg/regexp/all_test.go')
-rw-r--r--src/pkg/regexp/all_test.go5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/pkg/regexp/all_test.go b/src/pkg/regexp/all_test.go
index a9f23d70c..522324871 100644
--- a/src/pkg/regexp/all_test.go
+++ b/src/pkg/regexp/all_test.go
@@ -60,6 +60,8 @@ type tester struct {
}
var matches = []tester{
+ tester{`a+`, "baaab", vec{1, 4}},
+ tester{"abcd..", "abcdef", vec{0, 6}},
tester{``, "", vec{0, 0}},
tester{`a`, "a", vec{0, 1}},
tester{`x`, "y", vec{}},
@@ -78,6 +80,8 @@ var matches = []tester{
tester{`[a\-\]z]+`, "az]-bcz", vec{0, 4}},
tester{`[^\n]+`, "abcd\n", vec{0, 4}},
tester{`[日本語]+`, "日本語日本語", vec{0, 18}},
+ tester{`日本語+`, "日本語", vec{0, 9}},
+ tester{`日本語+`, "日本語語語語", vec{0, 18}},
tester{`()`, "", vec{0, 0, 0, 0}},
tester{`(a)`, "a", vec{0, 1, 0, 1}},
tester{`(.)(.)`, "日a", vec{0, 4, 0, 3, 3, 4}},
@@ -89,6 +93,7 @@ var matches = []tester{
tester{`(((a|b|c)*)(d))`, "abcd", vec{0, 4, 0, 4, 0, 3, 2, 3, 3, 4}},
tester{`a*(|(b))c*`, "aacc", vec{0, 4, 2, 2, -1, -1}},
tester{`(.*).*`, "ab", vec{0, 2, 0, 2}},
+ tester{`[.]`, ".", vec{0, 1}},
}
func compileTest(t *testing.T, expr string, error os.Error) *Regexp {