Esempio n. 1
0
func proceed(i *TypeOneI, rdr fancy.Reader) {
	for !i.Done {
		t, _ := ps.Token(rdr)
		//    fmt.Printf("Stack: %v\n", util.StringArray(i.St.Dump()));
		//    fmt.Printf("--- %s\n", t);
		if len(t) < 1 {
			break
		}
		b, _ := rdr.ReadByte()
		if b > 32 {
			rdr.UnreadByte()
		}
		if len(t) == 0 {
			break
		}
		if d, ok := find(i, "/"+string(t)); ok {
			if d[0] == '{' {
				proceed(i, fancy.SliceReader(d[1:len(d)-1]))
			} else {
				i.St.Push(d)
			}
		} else if f, ok := Ops[string(t)]; ok {
			f(i)
		} else {
			i.St.Push(t)
		}
	}
	return
}
Esempio n. 2
0
func skipComment(f fancy.Reader) {
	for {
		c, err := f.ReadByte()
		if err != nil || c == 13 || c == 10 {
			break
		}
	}
}
Esempio n. 3
0
func skipSpaces(f fancy.Reader) byte {
	for {
		c, err := f.ReadByte()
		if err != nil {
			break
		}
		if c > 32 {
			return c
		}
	}
	return 0
}
Esempio n. 4
0
func skipString(f fancy.Reader) {
	for depth := 1; depth > 0; {
		c, err := f.ReadByte()
		if err != nil {
			break
		}
		switch c {
		case '(':
			depth++
		case ')':
			depth--
		case '\\':
			f.ReadByte()
		}
	}
}
Esempio n. 5
0
func skipToDelim(f fancy.Reader) byte {
	for {
		c, err := f.ReadByte()
		if err != nil {
			break
		}
		if c < 33 {
			return c
		}
		switch c {
		case '<', '>', '(', ')', '[', ']', '/', '%', '{', '}':
			return c
		}
	}
	return 255
}
Esempio n. 6
0
func SkipLE(f fancy.Reader) {
	for {
		c, err := f.ReadByte()
		if err != nil {
			return
		}
		if c > 32 {
			f.UnreadByte()
			return
		}
		if c == 13 {
			c, err = f.ReadByte()
			if err == nil && c != 10 {
				f.UnreadByte()
			}
			return
		}
		if c == 10 {
			return
		}
	}
}