From 9e4a84f78283f9b5a972245076b26da312490ff0 Mon Sep 17 00:00:00 2001 From: Marc Vertes Date: Thu, 22 Jan 2026 23:22:46 +0100 Subject: chore: use token helpers --- parser/tokens.go | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) (limited to 'parser/tokens.go') diff --git a/parser/tokens.go b/parser/tokens.go index 9ae655b..a0a93fa 100644 --- a/parser/tokens.go +++ b/parser/tokens.go @@ -1,6 +1,7 @@ package parser import ( + "strconv" "strings" "github.com/mvertes/parscan/lang" @@ -69,10 +70,25 @@ func (toks Tokens) SplitStart(tok lang.Token) (result []Tokens) { } } -func newIdent(name string, pos int, arg ...any) Token { - return Token{Token: scanner.Token{Tok: lang.Ident, Pos: pos, Str: name}, Arg: arg} +func newToken(tok lang.Token, str string, pos int, arg ...any) Token { + return Token{Token: scanner.Token{Tok: tok, Str: str, Pos: pos}, Arg: arg} } -func newToken(tok lang.Token, pos int, arg ...any) Token { - return Token{Token: scanner.Token{Tok: tok, Pos: pos}, Arg: arg} -} +func newIdent(name string, pos int, arg ...any) Token { return newToken(lang.Ident, name, pos, arg...) } +func newCall(pos int, arg ...any) Token { return newToken(lang.Call, "", pos, arg...) } +func newGoto(label string, pos int) Token { return newToken(lang.Goto, label, pos) } +func newLabel(label string, pos int) Token { return newToken(lang.Label, label, pos) } +func newJumpFalse(label string, pos int) Token { return newToken(lang.JumpFalse, label, pos) } +func newGrow(size, pos int) Token { return newToken(lang.Grow, "", pos, size) } +func newSemicolon(pos int) Token { return newToken(lang.Semicolon, "", pos) } +func newEqualSet(pos int) Token { return newToken(lang.EqualSet, "", pos) } +func newReturn(pos int) Token { return newToken(lang.Return, "", pos) } +func newJumpSetFalse(label string, pos int) Token { return newToken(lang.JumpSetFalse, label, pos) } +func newJumpSetTrue(label string, pos int) Token { return newToken(lang.JumpSetTrue, label, pos) } +func newComposite(pos int) Token { return newToken(lang.Composite, "", pos) } +func newIndexAssign(pos int) Token { return newToken(lang.IndexAssign, "", pos) } +func newIndex(pos int) Token { return newToken(lang.Index, "", pos) } +func newInt(i, pos int) Token { return newToken(lang.Int, strconv.Itoa(i), pos) } +func newColon(pos int) Token { return newToken(lang.Colon, "", pos) } +func newLen(i, pos int) Token { return newToken(lang.Len, "", pos, i) } +func newSlice(pos int) Token { return newToken(lang.Slice, "", pos) } -- cgit v1.2.3