diff options
| author | Rose Hogenson <rosehogenson@posteo.net> | 2025-10-30 19:04:42 -0700 |
|---|---|---|
| committer | Rose Hogenson <rosehogenson@posteo.net> | 2025-10-30 19:09:35 -0700 |
| commit | e4f0185460ab348d596877606b2d4a99b4c27ffb (patch) | |
| tree | fcc897c977b35da6344aad7531faa4c8cf66b9b6 | |
| parent | aa8a935f620a053cc9c3c65587b433f3e8d3a6e9 (diff) | |
| download | ccl-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)
| -rw-r--r-- | ccl.go | 6 | ||||
| -rw-r--r-- | ccl_test.go | 2 | ||||
| -rw-r--r-- | lexer.go | 4 |
3 files changed, 4 insertions, 8 deletions
@@ -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 { @@ -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} -} |
