diff options
| author | Marc Vertes <mvertes@free.fr> | 2023-11-17 16:45:58 +0100 |
|---|---|---|
| committer | Marc Vertes <mvertes@free.fr> | 2023-11-17 16:45:58 +0100 |
| commit | ee21c324ce8c41b589e5a39e5715223ffd154315 (patch) | |
| tree | 9dfe692c787ceb65d85f3a9e04524759fab31200 /parser/symbol.go | |
| parent | a79e558d825c5b777c95c5e098b01391ee36781e (diff) | |
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.
Diffstat (limited to 'parser/symbol.go')
| -rw-r--r-- | parser/symbol.go | 7 |
1 files changed, 7 insertions, 0 deletions
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) { |
