mirror of https://github.com/golang/go.git
regexp: move to old/regexp, replace with exp/regexp
R=golang-dev, r CC=golang-dev https://golang.org/cl/5127042
This commit is contained in:
parent
a8a18f6566
commit
6c230fbc67
|
|
@ -18,7 +18,7 @@ import (
|
|||
"io"
|
||||
"log"
|
||||
"os"
|
||||
"exp/regexp"
|
||||
"regexp"
|
||||
"sort"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ import (
|
|||
"go/scanner"
|
||||
"go/token"
|
||||
"io"
|
||||
"exp/regexp"
|
||||
"regexp"
|
||||
"strconv"
|
||||
"template"
|
||||
)
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ import (
|
|||
"os"
|
||||
"path"
|
||||
"path/filepath"
|
||||
"exp/regexp"
|
||||
"regexp"
|
||||
"runtime"
|
||||
"sort"
|
||||
"strings"
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ import (
|
|||
"io"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"exp/regexp"
|
||||
"regexp"
|
||||
"sort"
|
||||
"strings"
|
||||
)
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ import (
|
|||
"os"
|
||||
"path"
|
||||
"path/filepath"
|
||||
"exp/regexp"
|
||||
"regexp"
|
||||
"runtime"
|
||||
"strings"
|
||||
"time"
|
||||
|
|
|
|||
|
|
@ -82,8 +82,6 @@ DIRS=\
|
|||
exp/gui\
|
||||
exp/gui/x11\
|
||||
exp/norm\
|
||||
exp/regexp\
|
||||
exp/regexp/syntax\
|
||||
exp/template/html\
|
||||
expvar\
|
||||
flag\
|
||||
|
|
@ -131,6 +129,7 @@ DIRS=\
|
|||
net/dict\
|
||||
net/textproto\
|
||||
netchan\
|
||||
old/regexp\
|
||||
old/template\
|
||||
os\
|
||||
os/signal\
|
||||
|
|
@ -141,6 +140,7 @@ DIRS=\
|
|||
rand\
|
||||
reflect\
|
||||
regexp\
|
||||
regexp/syntax\
|
||||
rpc\
|
||||
rpc/jsonrpc\
|
||||
runtime\
|
||||
|
|
|
|||
|
|
@ -8,13 +8,13 @@ import (
|
|||
"bufio"
|
||||
"bytes"
|
||||
"exp/norm"
|
||||
"exp/regexp"
|
||||
"flag"
|
||||
"fmt"
|
||||
"http"
|
||||
"log"
|
||||
"os"
|
||||
"path"
|
||||
"regexp"
|
||||
"runtime"
|
||||
"strings"
|
||||
"strconv"
|
||||
|
|
|
|||
|
|
@ -18,10 +18,10 @@ package suffixarray
|
|||
|
||||
import (
|
||||
"bytes"
|
||||
"exp/regexp"
|
||||
"gob"
|
||||
"io"
|
||||
"os"
|
||||
"regexp"
|
||||
"sort"
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -6,8 +6,8 @@ package suffixarray
|
|||
|
||||
import (
|
||||
"bytes"
|
||||
"exp/regexp"
|
||||
"rand"
|
||||
"regexp"
|
||||
"sort"
|
||||
"strings"
|
||||
"testing"
|
||||
|
|
|
|||
|
|
@ -1,12 +1,11 @@
|
|||
# Copyright 2011 The Go Authors. All rights reserved.
|
||||
# Copyright 2009 The Go Authors. All rights reserved.
|
||||
# Use of this source code is governed by a BSD-style
|
||||
# license that can be found in the LICENSE file.
|
||||
|
||||
include ../../../Make.inc
|
||||
|
||||
TARG=exp/regexp
|
||||
TARG=old/regexp
|
||||
GOFILES=\
|
||||
exec.go\
|
||||
regexp.go\
|
||||
|
||||
include ../../../Make.pkg
|
||||
|
|
@ -24,13 +24,13 @@ var good_re = []string{
|
|||
`[a-z]`,
|
||||
`[a-abc-c\-\]\[]`,
|
||||
`[a-z]+`,
|
||||
`[]`,
|
||||
`[abc]`,
|
||||
`[^1234]`,
|
||||
`[^\n]`,
|
||||
`\!\\`,
|
||||
}
|
||||
|
||||
/*
|
||||
type stringError struct {
|
||||
re string
|
||||
err os.Error
|
||||
|
|
@ -51,7 +51,6 @@ var bad_re = []stringError{
|
|||
{`a??`, ErrBadClosure},
|
||||
{`\x`, ErrBadBackslash},
|
||||
}
|
||||
*/
|
||||
|
||||
func compileTest(t *testing.T, expr string, error os.Error) *Regexp {
|
||||
re, err := Compile(expr)
|
||||
|
|
@ -67,13 +66,11 @@ func TestGoodCompile(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
/*
|
||||
func TestBadCompile(t *testing.T) {
|
||||
for i := 0; i < len(bad_re); i++ {
|
||||
compileTest(t, bad_re[i].re, bad_re[i].err)
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
func matchTest(t *testing.T, test *FindTest) {
|
||||
re := compileTest(t, test.pat, nil)
|
||||
|
|
@ -243,7 +240,7 @@ var metaTests = []MetaTest{
|
|||
{`foo`, `foo`, `foo`, true},
|
||||
{`foo\.\$`, `foo\\\.\\\$`, `foo.$`, true}, // has meta but no operator
|
||||
{`foo.\$`, `foo\.\\\$`, `foo`, false}, // has escaped operators and real operators
|
||||
{`!@#$%^&*()_+-=[{]}\|,<.>/?~`, `!@#\$%\^&\*\(\)_\+-=\[\{\]\}\\\|,<\.>/\?~`, `!@#`, false},
|
||||
{`!@#$%^&*()_+-=[{]}\|,<.>/?~`, `!@#\$%\^&\*\(\)_\+-=\[{\]}\\\|,<\.>/\?~`, `!@#`, false},
|
||||
}
|
||||
|
||||
func TestQuoteMeta(t *testing.T) {
|
||||
|
|
@ -58,8 +58,8 @@ var findTests = []FindTest{
|
|||
{`(([^xyz]*)(d))`, "abcd", build(1, 0, 4, 0, 4, 0, 3, 3, 4)},
|
||||
{`((a|b|c)*(d))`, "abcd", build(1, 0, 4, 0, 4, 2, 3, 3, 4)},
|
||||
{`(((a|b|c)*)(d))`, "abcd", build(1, 0, 4, 0, 4, 0, 3, 2, 3, 3, 4)},
|
||||
{`\a\f\n\r\t\v`, "\a\f\n\r\t\v", build(1, 0, 6)},
|
||||
{`[\a\f\n\r\t\v]+`, "\a\f\n\r\t\v", build(1, 0, 6)},
|
||||
{`\a\b\f\n\r\t\v`, "\a\b\f\n\r\t\v", build(1, 0, 7)},
|
||||
{`[\a\b\f\n\r\t\v]+`, "\a\b\f\n\r\t\v", build(1, 0, 7)},
|
||||
|
||||
{`a*(|(b))c*`, "aacc", build(1, 0, 4, 2, 2, -1, -1)},
|
||||
{`(.*).*`, "ab", build(1, 0, 2, 0, 2)},
|
||||
|
|
@ -80,32 +80,6 @@ var findTests = []FindTest{
|
|||
{`data`, "daXY data", build(1, 5, 9)},
|
||||
{`da(.)a$`, "daXY data", build(1, 5, 9, 7, 8)},
|
||||
{`zx+`, "zzx", build(1, 1, 3)},
|
||||
{`ab$`, "abcab", build(1, 3, 5)},
|
||||
{`(aa)*$`, "a", build(1, 1, 1, -1, -1)},
|
||||
{`(?:.|(?:.a))`, "", nil},
|
||||
{`(?:A(?:A|a))`, "Aa", build(1, 0, 2)},
|
||||
{`(?:A|(?:A|a))`, "a", build(1, 0, 1)},
|
||||
{`(a){0}`, "", build(1, 0, 0, -1, -1)},
|
||||
{`(?-s)(?:(?:^).)`, "\n", nil},
|
||||
{`(?s)(?:(?:^).)`, "\n", build(1, 0, 1)},
|
||||
{`(?:(?:^).)`, "\n", nil},
|
||||
{`\b`, "x", build(2, 0, 0, 1, 1)},
|
||||
{`\b`, "xx", build(2, 0, 0, 2, 2)},
|
||||
{`\b`, "x y", build(4, 0, 0, 1, 1, 2, 2, 3, 3)},
|
||||
{`\b`, "xx yy", build(4, 0, 0, 2, 2, 3, 3, 5, 5)},
|
||||
{`\B`, "x", nil},
|
||||
{`\B`, "xx", build(1, 1, 1)},
|
||||
{`\B`, "x y", nil},
|
||||
{`\B`, "xx yy", build(2, 1, 1, 4, 4)},
|
||||
|
||||
// RE2 tests
|
||||
{`[^\S\s]`, "abcd", nil},
|
||||
{`[^\S[:space:]]`, "abcd", nil},
|
||||
{`[^\D\d]`, "abcd", nil},
|
||||
{`[^\D[:digit:]]`, "abcd", nil},
|
||||
{`(?i)\W`, "x", nil},
|
||||
{`(?i)\W`, "k", nil},
|
||||
{`(?i)\W`, "s", nil},
|
||||
|
||||
// can backslash-escape any punctuation
|
||||
{`\!\"\#\$\%\&\'\(\)\*\+\,\-\.\/\:\;\<\=\>\?\@\[\\\]\^\_\{\|\}\~`,
|
||||
|
|
@ -235,7 +209,7 @@ func TestFindAll(t *testing.T) {
|
|||
case test.matches == nil && result != nil:
|
||||
t.Errorf("expected no match; got one: %s", test)
|
||||
case test.matches != nil && result == nil:
|
||||
t.Fatalf("expected match; got none: %s", test)
|
||||
t.Errorf("expected match; got none: %s", test)
|
||||
case test.matches != nil && result != nil:
|
||||
if len(test.matches) != len(result) {
|
||||
t.Errorf("expected %d matches; got %d: %s", len(test.matches), len(result), test)
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,4 +1,4 @@
|
|||
# Copyright 2009 The Go Authors. All rights reserved.
|
||||
# Copyright 2011 The Go Authors. All rights reserved.
|
||||
# Use of this source code is governed by a BSD-style
|
||||
# license that can be found in the LICENSE file.
|
||||
|
||||
|
|
@ -6,6 +6,7 @@ include ../../Make.inc
|
|||
|
||||
TARG=regexp
|
||||
GOFILES=\
|
||||
exec.go\
|
||||
regexp.go\
|
||||
|
||||
include ../../Make.pkg
|
||||
|
|
|
|||
|
|
@ -24,13 +24,13 @@ var good_re = []string{
|
|||
`[a-z]`,
|
||||
`[a-abc-c\-\]\[]`,
|
||||
`[a-z]+`,
|
||||
`[]`,
|
||||
`[abc]`,
|
||||
`[^1234]`,
|
||||
`[^\n]`,
|
||||
`\!\\`,
|
||||
}
|
||||
|
||||
/*
|
||||
type stringError struct {
|
||||
re string
|
||||
err os.Error
|
||||
|
|
@ -51,6 +51,7 @@ var bad_re = []stringError{
|
|||
{`a??`, ErrBadClosure},
|
||||
{`\x`, ErrBadBackslash},
|
||||
}
|
||||
*/
|
||||
|
||||
func compileTest(t *testing.T, expr string, error os.Error) *Regexp {
|
||||
re, err := Compile(expr)
|
||||
|
|
@ -66,11 +67,13 @@ func TestGoodCompile(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
/*
|
||||
func TestBadCompile(t *testing.T) {
|
||||
for i := 0; i < len(bad_re); i++ {
|
||||
compileTest(t, bad_re[i].re, bad_re[i].err)
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
func matchTest(t *testing.T, test *FindTest) {
|
||||
re := compileTest(t, test.pat, nil)
|
||||
|
|
@ -240,7 +243,7 @@ var metaTests = []MetaTest{
|
|||
{`foo`, `foo`, `foo`, true},
|
||||
{`foo\.\$`, `foo\\\.\\\$`, `foo.$`, true}, // has meta but no operator
|
||||
{`foo.\$`, `foo\.\\\$`, `foo`, false}, // has escaped operators and real operators
|
||||
{`!@#$%^&*()_+-=[{]}\|,<.>/?~`, `!@#\$%\^&\*\(\)_\+-=\[{\]}\\\|,<\.>/\?~`, `!@#`, false},
|
||||
{`!@#$%^&*()_+-=[{]}\|,<.>/?~`, `!@#\$%\^&\*\(\)_\+-=\[\{\]\}\\\|,<\.>/\?~`, `!@#`, false},
|
||||
}
|
||||
|
||||
func TestQuoteMeta(t *testing.T) {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
package regexp
|
||||
|
||||
import "exp/regexp/syntax"
|
||||
import "regexp/syntax"
|
||||
|
||||
// A queue is a 'sparse array' holding pending threads of execution.
|
||||
// See http://research.swtch.com/2008/03/using-uninitialized-memory-for-fun-and.html
|
||||
|
|
@ -7,11 +7,11 @@ package regexp
|
|||
import (
|
||||
"bufio"
|
||||
"compress/bzip2"
|
||||
"exp/regexp/syntax"
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"regexp/syntax"
|
||||
"strconv"
|
||||
"strings"
|
||||
"testing"
|
||||
|
|
@ -58,8 +58,8 @@ var findTests = []FindTest{
|
|||
{`(([^xyz]*)(d))`, "abcd", build(1, 0, 4, 0, 4, 0, 3, 3, 4)},
|
||||
{`((a|b|c)*(d))`, "abcd", build(1, 0, 4, 0, 4, 2, 3, 3, 4)},
|
||||
{`(((a|b|c)*)(d))`, "abcd", build(1, 0, 4, 0, 4, 0, 3, 2, 3, 3, 4)},
|
||||
{`\a\b\f\n\r\t\v`, "\a\b\f\n\r\t\v", build(1, 0, 7)},
|
||||
{`[\a\b\f\n\r\t\v]+`, "\a\b\f\n\r\t\v", build(1, 0, 7)},
|
||||
{`\a\f\n\r\t\v`, "\a\f\n\r\t\v", build(1, 0, 6)},
|
||||
{`[\a\f\n\r\t\v]+`, "\a\f\n\r\t\v", build(1, 0, 6)},
|
||||
|
||||
{`a*(|(b))c*`, "aacc", build(1, 0, 4, 2, 2, -1, -1)},
|
||||
{`(.*).*`, "ab", build(1, 0, 2, 0, 2)},
|
||||
|
|
@ -80,6 +80,32 @@ var findTests = []FindTest{
|
|||
{`data`, "daXY data", build(1, 5, 9)},
|
||||
{`da(.)a$`, "daXY data", build(1, 5, 9, 7, 8)},
|
||||
{`zx+`, "zzx", build(1, 1, 3)},
|
||||
{`ab$`, "abcab", build(1, 3, 5)},
|
||||
{`(aa)*$`, "a", build(1, 1, 1, -1, -1)},
|
||||
{`(?:.|(?:.a))`, "", nil},
|
||||
{`(?:A(?:A|a))`, "Aa", build(1, 0, 2)},
|
||||
{`(?:A|(?:A|a))`, "a", build(1, 0, 1)},
|
||||
{`(a){0}`, "", build(1, 0, 0, -1, -1)},
|
||||
{`(?-s)(?:(?:^).)`, "\n", nil},
|
||||
{`(?s)(?:(?:^).)`, "\n", build(1, 0, 1)},
|
||||
{`(?:(?:^).)`, "\n", nil},
|
||||
{`\b`, "x", build(2, 0, 0, 1, 1)},
|
||||
{`\b`, "xx", build(2, 0, 0, 2, 2)},
|
||||
{`\b`, "x y", build(4, 0, 0, 1, 1, 2, 2, 3, 3)},
|
||||
{`\b`, "xx yy", build(4, 0, 0, 2, 2, 3, 3, 5, 5)},
|
||||
{`\B`, "x", nil},
|
||||
{`\B`, "xx", build(1, 1, 1)},
|
||||
{`\B`, "x y", nil},
|
||||
{`\B`, "xx yy", build(2, 1, 1, 4, 4)},
|
||||
|
||||
// RE2 tests
|
||||
{`[^\S\s]`, "abcd", nil},
|
||||
{`[^\S[:space:]]`, "abcd", nil},
|
||||
{`[^\D\d]`, "abcd", nil},
|
||||
{`[^\D[:digit:]]`, "abcd", nil},
|
||||
{`(?i)\W`, "x", nil},
|
||||
{`(?i)\W`, "k", nil},
|
||||
{`(?i)\W`, "s", nil},
|
||||
|
||||
// can backslash-escape any punctuation
|
||||
{`\!\"\#\$\%\&\'\(\)\*\+\,\-\.\/\:\;\<\=\>\?\@\[\\\]\^\_\{\|\}\~`,
|
||||
|
|
@ -209,7 +235,7 @@ func TestFindAll(t *testing.T) {
|
|||
case test.matches == nil && result != nil:
|
||||
t.Errorf("expected no match; got one: %s", test)
|
||||
case test.matches != nil && result == nil:
|
||||
t.Errorf("expected match; got none: %s", test)
|
||||
t.Fatalf("expected match; got none: %s", test)
|
||||
case test.matches != nil && result != nil:
|
||||
if len(test.matches) != len(result) {
|
||||
t.Errorf("expected %d matches; got %d: %s", len(test.matches), len(result), test)
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -2,9 +2,9 @@
|
|||
# Use of this source code is governed by a BSD-style
|
||||
# license that can be found in the LICENSE file.
|
||||
|
||||
include ../../../../Make.inc
|
||||
include ../../../Make.inc
|
||||
|
||||
TARG=exp/regexp/syntax
|
||||
TARG=regexp/syntax
|
||||
GOFILES=\
|
||||
compile.go\
|
||||
parse.go\
|
||||
|
|
@ -13,4 +13,4 @@ GOFILES=\
|
|||
regexp.go\
|
||||
simplify.go\
|
||||
|
||||
include ../../../../Make.pkg
|
||||
include ../../../Make.pkg
|
||||
Loading…
Reference in New Issue