array literals
Some checks failed
Build / build (push) Failing after 2m16s
Test / build (push) Failing after 1m46s

This commit is contained in:
Chuck Smith
2024-02-26 15:47:24 -05:00
parent e4bca02235
commit 8721665bc1
5 changed files with 105 additions and 0 deletions

View File

@@ -133,12 +133,34 @@ func (vm *VM) Run() error {
return err
}
case code.OpArray:
numElements := int(code.ReadUint16(vm.instructions[ip+1:]))
ip += 2
array := vm.buildArray(vm.sp-numElements, vm.sp)
vm.sp = vm.sp - numElements
err := vm.push(array)
if err != nil {
return err
}
}
}
return nil
}
func (vm *VM) buildArray(startIndex, endIndex int) object.Object {
elements := make([]object.Object, endIndex-startIndex)
for i := startIndex; i < endIndex; i++ {
elements[i-startIndex] = vm.stack[i]
}
return &object.Array{Elements: elements}
}
func isTruthy(obj object.Object) bool {
switch obj := obj.(type) {