From ee21c324ce8c41b589e5a39e5715223ffd154315 Mon Sep 17 00:00:00 2001 From: Marc Vertes Date: Fri, 17 Nov 2023 16:45:58 +0100 Subject: parser: support selector expression to get / set struct fields The structures are reresented by reflect values. New instructions `Field` and `Vassign` have been added to the VM to assign reflect values and access struct fields. --- parser/symbol.go | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'parser/symbol.go') diff --git a/parser/symbol.go b/parser/symbol.go index f707feb..7edcef3 100644 --- a/parser/symbol.go +++ b/parser/symbol.go @@ -30,6 +30,13 @@ type symbol struct { used bool } +func symtype(s *symbol) reflect.Type { + if s.Type != nil { + return s.Type + } + return reflect.TypeOf(s.value) +} + func (p *Parser) AddSym(i int, name string, v any) { p.addSym(i, name, v, symValue, nil, false) } func (p *Parser) addSym(i int, name string, v any, k symKind, t reflect.Type, local bool) { -- cgit v1.2.3