From 7520aa4474ea30985cf26631c6bbdebf38484a0d Mon Sep 17 00:00:00 2001 From: Marc Vertes Date: Fri, 9 Jan 2026 19:10:27 +0100 Subject: feat: initial support for maps --- parser/expr.go | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'parser/expr.go') diff --git a/parser/expr.go b/parser/expr.go index e00113f..0a87999 100644 --- a/parser/expr.go +++ b/parser/expr.go @@ -155,12 +155,22 @@ func (p *Parser) parseExpr(in Tokens, typeStr string) (out Tokens, err error) { typeStr = typ.String() p.Symbols.Add(symbol.UnsetAddr, typ.String(), vm.NewValue(typ), symbol.Type, typ, p.funcScope != "") out = append(out, scanner.Token{Tok: lang.Ident, Pos: t.Pos, Str: typeStr}) - i++ + i++ // FIXME: number of tokens to skip should be computed from type parsing. + + case lang.Map: + typ, err := p.parseTypeExpr(in[i:]) + if err != nil { + return out, err + } + typeStr = typ.String() + p.Symbols.Add(symbol.UnsetAddr, typ.String(), vm.NewValue(typ), symbol.Type, typ, p.funcScope != "") + out = append(out, scanner.Token{Tok: lang.Ident, Pos: t.Pos, Str: typeStr}) + i += 2 // FIXME: number of tokens to skip should be computed from type parsing. case lang.Comment: default: - log.Println("unxexpected token:", t) + log.Println("unexpected token:", t) } } for len(ops) > 0 { -- cgit v1.2.3