From e4f0185460ab348d596877606b2d4a99b4c27ffb Mon Sep 17 00:00:00 2001 From: Rose Hogenson Date: Thu, 30 Oct 2025 19:04:42 -0700 Subject: Set the lexer as a field on parser MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit goos: linux goarch: amd64 pkg: roseh.moe/pkg/ccl cpu: AMD Ryzen 9 5900X 12-Core Processor │ baseline.txt │ new.txt │ │ sec/op │ sec/op vs base │ Parse-24 4.808µ ± 0% 4.739µ ± 0% -1.44% (p=0.000 n=20) --- ccl.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'ccl.go') 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()) } -- cgit v1.3.1