diff options
author | apocelipes <seve3r@outlook.com> | 2024-03-25 14:13:35 +0000 |
---|---|---|
committer | Gopher Robot <gobot@golang.org> | 2024-03-26 19:50:03 +0000 |
commit | 51a96f86f7a0604f4b3010b8a688f9b66a5c5acb (patch) | |
tree | d32333fccfc9074dde9c199b571cc45df977f162 /src/regexp | |
parent | 2b5e99455d4fba77a2fa79aed53f36fcc9cf8d1f (diff) | |
download | go-51a96f86f7a0604f4b3010b8a688f9b66a5c5acb.tar.gz go-51a96f86f7a0604f4b3010b8a688f9b66a5c5acb.zip |
regexp/syntax: simplify the code
Use the slices package and the built-in max to simplify the code.
There's no noticeable performance change in this modification.
Change-Id: I96e46ba8ab1323f1ba0b8c9b827836e217772cf2
GitHub-Last-Rev: f0111ac7e220f7dac03290125a3a83831012f235
GitHub-Pull-Request: golang/go#66511
Reviewed-on: https://go-review.googlesource.com/c/go/+/573978
Auto-Submit: Keith Randall <khr@golang.org>
Reviewed-by: Keith Randall <khr@google.com>
Reviewed-by: qiulaidongfeng <2645477756@qq.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Keith Randall <khr@golang.org>
Reviewed-by: Than McIntosh <thanm@google.com>
Diffstat (limited to 'src/regexp')
-rw-r--r-- | src/regexp/syntax/parse.go | 4 | ||||
-rw-r--r-- | src/regexp/syntax/regexp.go | 19 |
2 files changed, 4 insertions, 19 deletions
diff --git a/src/regexp/syntax/parse.go b/src/regexp/syntax/parse.go index 6a11b53fb1..6ed6491c80 100644 --- a/src/regexp/syntax/parse.go +++ b/src/regexp/syntax/parse.go @@ -249,9 +249,7 @@ func (p *parser) calcSize(re *Regexp, force bool) int64 { size = int64(re.Max)*sub + int64(re.Max-re.Min) } - if size < 1 { - size = 1 - } + size = max(1, size) p.size[re] = size return size } diff --git a/src/regexp/syntax/regexp.go b/src/regexp/syntax/regexp.go index 4fa7d0e2f8..8ad3653abb 100644 --- a/src/regexp/syntax/regexp.go +++ b/src/regexp/syntax/regexp.go @@ -8,6 +8,7 @@ package syntax // In this package, re is always a *Regexp and r is always a rune. import ( + "slices" "strconv" "strings" "unicode" @@ -75,24 +76,10 @@ func (x *Regexp) Equal(y *Regexp) bool { } case OpLiteral, OpCharClass: - if len(x.Rune) != len(y.Rune) { - return false - } - for i, r := range x.Rune { - if r != y.Rune[i] { - return false - } - } + return slices.Equal(x.Rune, y.Rune) case OpAlternate, OpConcat: - if len(x.Sub) != len(y.Sub) { - return false - } - for i, sub := range x.Sub { - if !sub.Equal(y.Sub[i]) { - return false - } - } + return slices.EqualFunc(x.Sub, y.Sub, func(a, b *Regexp) bool { return a.Equal(b) }) case OpStar, OpPlus, OpQuest: if x.Flags&NonGreedy != y.Flags&NonGreedy || !x.Sub[0].Equal(y.Sub[0]) { |