aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ccl.go18
-rw-r--r--lexer.go9
2 files changed, 13 insertions, 14 deletions
diff --git a/ccl.go b/ccl.go
index 360bde4..6753dbc 100644
--- a/ccl.go
+++ b/ccl.go
@@ -399,16 +399,16 @@ func (p *parser) unescape(rawStr []byte) ([]byte, error) {
if i < len(rawStr) && rawStr[i] == '\n' {
b = nil
} else {
- return nil, fmt.Errorf("invalid escape sequence %q", rawStr[i-2:min(i+1, len(rawStr))])
+ return nil, p.error("invalid escape sequence %q", rawStr[i-2:min(i+1, len(rawStr))])
}
case 'x':
i++
if i+2 > len(rawStr) {
- return nil, fmt.Errorf("invalid hex escape %q", rawStr[i-2:min(i+2, len(rawStr))])
+ return nil, p.error("invalid hex escape %q", rawStr[i-2:min(i+2, len(rawStr))])
}
n, err := strconv.ParseUint(string(rawStr[i:i+2]), 16, 8)
if err != nil {
- return nil, fmt.Errorf("invalid hex escape %q: %s", rawStr[i-2:i+2], err)
+ return nil, p.error("invalid hex escape %q: %s", rawStr[i-2:i+2], err)
}
i++
b = []byte{byte(n)}
@@ -419,21 +419,21 @@ func (p *parser) unescape(rawStr []byte) ([]byte, error) {
}
i++
if i+nBytes > len(rawStr) {
- return nil, fmt.Errorf("invalid unicode escape %q", rawStr[i-2:min(i+nBytes, len(rawStr))])
+ return nil, p.error("invalid unicode escape %q", rawStr[i-2:min(i+nBytes, len(rawStr))])
}
n, err := strconv.ParseUint(string(rawStr[i:i+nBytes]), 16, 31)
if err != nil {
- return nil, fmt.Errorf("invalid hex escape %q: %s", rawStr[i-2:i+nBytes], err)
+ return nil, p.error("invalid unicode escape %q: %s", rawStr[i-2:i+nBytes], err)
}
i += nBytes - 1
b = utf8.AppendRune(nil, rune(n))
default:
if i+3 > len(rawStr) {
- return nil, fmt.Errorf("invalid string escape %q", rawStr[i-1:i+1])
+ return nil, p.error("invalid string escape %q", rawStr[i-1:i+1])
}
n, err := strconv.ParseUint(string(rawStr[i:i+3]), 8, 8)
if err != nil {
- return nil, fmt.Errorf("invalid octal escape %q: %s", rawStr[i-1:i+3], err)
+ return nil, p.error("invalid octal escape %q: %s", rawStr[i-1:i+3], err)
}
i += 2
b = []byte{byte(n)}
@@ -522,7 +522,7 @@ func (p *parser) parseVal(fieldVal reflect.Value, tok, field []byte) error {
case fieldVal.Type() == reflect.TypeFor[[]byte]():
b, err := base64.StdEncoding.DecodeString(s)
if err != nil {
- return fmt.Errorf("field %q: bad base64", field)
+ return p.error("field %q: bad base64", field)
}
fieldVal.Set(reflect.ValueOf(b))
default:
@@ -606,7 +606,7 @@ func (p *parser) parseFieldVal(out reflect.Value, parsedFields map[string]bool,
}
fieldIdx, ok := p.fieldMap[structField{out.Type(), string(field)}]
if !ok {
- return fmt.Errorf("no field named %q", field)
+ return p.error("no field named %q", field)
}
fieldVal := out.Field(fieldIdx)
tok, err := p.next()
diff --git a/lexer.go b/lexer.go
index e2680e8..0b54de3 100644
--- a/lexer.go
+++ b/lexer.go
@@ -2,7 +2,6 @@ package ccl
import (
"bytes"
- "fmt"
"unicode"
"unicode/utf8"
)
@@ -36,13 +35,13 @@ Space:
continue
}
if bytes.HasPrefix(l.data[l.i:], []byte("/*")) {
- for ; l.i < len(l.data); l.i++ {
- if bytes.HasPrefix(l.data[l.i:], []byte("*/")) {
- l.i += 2
+ for i := l.i; i < len(l.data); i++ {
+ if bytes.HasPrefix(l.data[i:], []byte("*/")) {
+ l.i = i + 2
continue Space
}
}
- return fmt.Errorf("unterminated comment")
+ return l.error("unterminated comment")
}
if r, n := utf8.DecodeRune(l.data[l.i:]); unicode.IsSpace(r) {
l.i += n