aboutsummaryrefslogtreecommitdiffstats
path: root/ccl.go
diff options
context:
space:
mode:
authorRose Hogenson <rosehogenson@posteo.net>2025-10-30 19:04:42 -0700
committerRose Hogenson <rosehogenson@posteo.net>2025-10-30 19:09:35 -0700
commite4f0185460ab348d596877606b2d4a99b4c27ffb (patch)
treefcc897c977b35da6344aad7531faa4c8cf66b9b6 /ccl.go
parentaa8a935f620a053cc9c3c65587b433f3e8d3a6e9 (diff)
downloadccl-e4f0185460ab348d596877606b2d4a99b4c27ffb.tar.zst
Set the lexer as a field on parser
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)
Diffstat (limited to 'ccl.go')
-rw-r--r--ccl.go6
1 files changed, 3 insertions, 3 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())
}