summaryrefslogtreecommitdiff
path: root/src/lib/regexp/regexp.go
diff options
context:
space:
mode:
authorRob Pike <r@golang.org>2008-10-15 17:20:37 -0700
committerRob Pike <r@golang.org>2008-10-15 17:20:37 -0700
commit9f6a012b0be275f0b882ce41862bd69fb2255c86 (patch)
tree4c97a93d83863f86817f3f0644ab3a747cc81e81 /src/lib/regexp/regexp.go
parent366614f81d7e45976aee66d5f6eed5f489ba730c (diff)
downloadgolang-9f6a012b0be275f0b882ce41862bd69fb2255c86.tar.gz
remove hack now that vector of int works.
R=rsc DELTA=9 (0 added, 3 deleted, 6 changed) OCL=17248 CL=17250
Diffstat (limited to 'src/lib/regexp/regexp.go')
-rw-r--r--src/lib/regexp/regexp.go15
1 files changed, 6 insertions, 9 deletions
diff --git a/src/lib/regexp/regexp.go b/src/lib/regexp/regexp.go
index 6535e6ef4..7d366508a 100644
--- a/src/lib/regexp/regexp.go
+++ b/src/lib/regexp/regexp.go
@@ -134,14 +134,12 @@ func NewChar(char int) *Char {
// --- CHARCLASS [a-z]
-type CClassChar int; // BUG: Shouldn't be necessary but 6g won't put ints into vectors
-
type CharClass struct {
next Inst;
index int;
char int;
negate bool; // is character class negated? ([^a-z])
- // Vector of CClassChar, stored pairwise: [a-z] is (a,z); x is (x,x):
+ // Vector of int, stored pairwise: [a-z] is (a,z); x is (x,x):
ranges *vector.Vector;
}
@@ -156,8 +154,8 @@ func (cclass *CharClass) Print() {
print(" (negated)");
}
for i := 0; i < cclass.ranges.Len(); i += 2 {
- l := cclass.ranges.At(i).(CClassChar);
- r := cclass.ranges.At(i+1).(CClassChar);
+ l := cclass.ranges.At(i).(int);
+ r := cclass.ranges.At(i+1).(int);
if l == r {
print(" [", string(l), "]");
} else {
@@ -166,7 +164,7 @@ func (cclass *CharClass) Print() {
}
}
-func (cclass *CharClass) AddRange(a, b CClassChar) {
+func (cclass *CharClass) AddRange(a, b int) {
// range is a through b inclusive
cclass.ranges.Append(a);
cclass.ranges.Append(b);
@@ -174,8 +172,8 @@ func (cclass *CharClass) AddRange(a, b CClassChar) {
func (cclass *CharClass) Matches(c int) bool {
for i := 0; i < cclass.ranges.Len(); i = i+2 {
- min := cclass.ranges.At(i).(CClassChar);
- max := cclass.ranges.At(i+1).(CClassChar);
+ min := cclass.ranges.At(i).(int);
+ max := cclass.ranges.At(i+1).(int);
if min <= c && c <= max {
return !cclass.negate
}
@@ -323,7 +321,6 @@ Grammar:
func (p *Parser) Regexp() (start, end Inst)
var NULL Inst
-type BUGinter interface{}
func special(c int) bool {
s := `\.+*?()|[]`;