summaryrefslogtreecommitdiff
path: root/parser/expr.go
diff options
context:
space:
mode:
Diffstat (limited to 'parser/expr.go')
-rw-r--r--parser/expr.go14
1 files changed, 12 insertions, 2 deletions
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 {