diff options
| author | Marc Vertes <mvertes@free.fr> | 2023-11-15 11:59:15 +0100 |
|---|---|---|
| committer | Marc Vertes <mvertes@free.fr> | 2023-11-15 11:59:15 +0100 |
| commit | a4d7fb2da6a8390b818dae8d07391c7d76e365e9 (patch) | |
| tree | 166d1ed4bb07337ead19fd4f7ebc8d79885e2cfd /vm/vm.go | |
| parent | 2eab5877e1c634db872b595dd2414f4031ae4eb5 (diff) | |
parser: hande const declarations
Only symbols are produced, no bytecode is emitted. The constant
expressions are evaluated at compile time using the stdlib package
go/constant. The parser handles implicit repetition of the last
non-empty expression list. The iota symbol is reset to 0 and
incremented for each line of a const block.
To be done in a next commit: type conversions.
Diffstat (limited to 'vm/vm.go')
| -rw-r--r-- | vm/vm.go | 10 |
1 files changed, 6 insertions, 4 deletions
@@ -71,12 +71,14 @@ var strop = [...]string{ // for VM tracing. Subi: "Subi", } +type Code [][]int64 + // Machine represents a virtual machine. type Machine struct { - code [][]int64 // code to execute - mem []any // memory, as a stack - ip, fp int // instruction and frame pointer - ic uint64 // instruction counter, incremented at each instruction executed + code Code // code to execute + mem []any // memory, as a stack + ip, fp int // instruction and frame pointer + ic uint64 // instruction counter, incremented at each instruction executed // flags uint // to set options such as restrict CallX, etc... } |
