Commit 801f542b authored by Rob Pike's avatar Rob Pike

remove hack now that vector of int works.

R=rsc
DELTA=9  (0 added, 3 deleted, 6 changed)
OCL=17248
CL=17250
parent 8973e1ff
...@@ -134,14 +134,12 @@ func NewChar(char int) *Char { ...@@ -134,14 +134,12 @@ func NewChar(char int) *Char {
// --- CHARCLASS [a-z] // --- CHARCLASS [a-z]
type CClassChar int; // BUG: Shouldn't be necessary but 6g won't put ints into vectors
type CharClass struct { type CharClass struct {
next Inst; next Inst;
index int; index int;
char int; char int;
negate bool; // is character class negated? ([^a-z]) 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; ranges *vector.Vector;
} }
...@@ -156,8 +154,8 @@ func (cclass *CharClass) Print() { ...@@ -156,8 +154,8 @@ func (cclass *CharClass) Print() {
print(" (negated)"); print(" (negated)");
} }
for i := 0; i < cclass.ranges.Len(); i += 2 { for i := 0; i < cclass.ranges.Len(); i += 2 {
l := cclass.ranges.At(i).(CClassChar); l := cclass.ranges.At(i).(int);
r := cclass.ranges.At(i+1).(CClassChar); r := cclass.ranges.At(i+1).(int);
if l == r { if l == r {
print(" [", string(l), "]"); print(" [", string(l), "]");
} else { } else {
...@@ -166,7 +164,7 @@ func (cclass *CharClass) Print() { ...@@ -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 // range is a through b inclusive
cclass.ranges.Append(a); cclass.ranges.Append(a);
cclass.ranges.Append(b); cclass.ranges.Append(b);
...@@ -174,8 +172,8 @@ func (cclass *CharClass) AddRange(a, b CClassChar) { ...@@ -174,8 +172,8 @@ func (cclass *CharClass) AddRange(a, b CClassChar) {
func (cclass *CharClass) Matches(c int) bool { func (cclass *CharClass) Matches(c int) bool {
for i := 0; i < cclass.ranges.Len(); i = i+2 { for i := 0; i < cclass.ranges.Len(); i = i+2 {
min := cclass.ranges.At(i).(CClassChar); min := cclass.ranges.At(i).(int);
max := cclass.ranges.At(i+1).(CClassChar); max := cclass.ranges.At(i+1).(int);
if min <= c && c <= max { if min <= c && c <= max {
return !cclass.negate return !cclass.negate
} }
...@@ -323,7 +321,6 @@ Grammar: ...@@ -323,7 +321,6 @@ Grammar:
func (p *Parser) Regexp() (start, end Inst) func (p *Parser) Regexp() (start, end Inst)
var NULL Inst var NULL Inst
type BUGinter interface{}
func special(c int) bool { func special(c int) bool {
s := `\.+*?()|[]`; s := `\.+*?()|[]`;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment