summaryrefslogtreecommitdiff
path: root/parser/symbol.go
diff options
context:
space:
mode:
authorMarc Vertes <mvertes@free.fr>2024-03-22 16:59:25 +0100
committerGitHub <noreply@github.com>2024-03-22 16:59:25 +0100
commit362f7c9c45598b429c92e67756f41b690043e0c4 (patch)
tree59dd897446880912b4a2ca4a3a8d8c49e3553211 /parser/symbol.go
parentbf2d6438e95c60946c64a6692e3dae1d836364a6 (diff)
feat: add initial support for import, provide minimal fmt (#6)
The `import` statement is now parsed. It only provides minimal support for the `fmt` package (only `Println` symbol is defined). This should be sufficient to pass a few tests. Full support of package namespaces, source and binary imports will be supported later, based on this work.
Diffstat (limited to 'parser/symbol.go')
-rw-r--r--parser/symbol.go16
1 files changed, 9 insertions, 7 deletions
diff --git a/parser/symbol.go b/parser/symbol.go
index c75f241..c8d89db 100644
--- a/parser/symbol.go
+++ b/parser/symbol.go
@@ -17,18 +17,20 @@ const (
symConst // a Go constant
symVar // a Go variable, located in the VM memory
symFunc // a Go function, located in the VM code
+ symPkg // a Go package
)
const unsetAddr = -65535
type symbol struct {
- kind symKind
- index int // address of symbol in frame
- Type *vm.Type //
- value vm.Value //
- cval constant.Value //
- local bool // if true address is relative to local frame, otherwise global
- used bool //
+ kind symKind
+ index int // address of symbol in frame
+ pkgPath string //
+ Type *vm.Type //
+ value vm.Value //
+ cval constant.Value //
+ local bool // if true address is relative to local frame, otherwise global
+ used bool //
}
func symtype(s *symbol) *vm.Type {