aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ccl.go6
-rw-r--r--ccl_test.go2
-rw-r--r--lexer.go4
3 files changed, 4 insertions, 8 deletions
diff --git a/ccl.go b/ccl.go
index 6d97152..d0d06e9 100644
--- a/ccl.go
+++ b/ccl.go
@@ -242,7 +242,7 @@ func fieldMap(out map[structField]int, types map[reflect.Type]bool, s reflect.Ty
}
type parser struct {
- nextTok func() (token, error)
+ lexer lexer
tok []byte
err error
data []byte
@@ -260,7 +260,7 @@ func (p *parser) peek() ([]byte, error) {
if p.err != nil || p.tok != nil {
return p.tok, p.err
}
- tok, err := p.nextTok()
+ tok, err := p.lexer.next()
if err != nil {
p.err = err
return nil, p.err
@@ -742,5 +742,5 @@ func Unmarshal(data []byte, v any) error {
if err := fieldMap(fields, make(map[reflect.Type]bool), val.Type().Elem()); err != nil {
return err
}
- return (&parser{nextTok: newLexer(data).next, data: data, fieldMap: fields}).parse(val.Elem())
+ return (&parser{lexer: lexer{data: data}, data: data, fieldMap: fields}).parse(val.Elem())
}
diff --git a/ccl_test.go b/ccl_test.go
index 53b2a24..fa51ab1 100644
--- a/ccl_test.go
+++ b/ccl_test.go
@@ -684,7 +684,7 @@ func BenchmarkLex(b *testing.B) {
repeated: [5, 6]
`)
for b.Loop() {
- l := newLexer(msg)
+ l := &lexer{data: msg}
for {
_, err := l.next()
if err != nil {
diff --git a/lexer.go b/lexer.go
index 6561e38..a996451 100644
--- a/lexer.go
+++ b/lexer.go
@@ -113,7 +113,3 @@ func (l *lexer) next() (token, error) {
}
return token{}, l.error("invalid lexeme")
}
-
-func newLexer(data []byte) *lexer {
- return &lexer{data: data}
-}