Program wrapper struct

This commit is contained in:
Ian Gulliver
2021-11-19 20:16:01 -10:00
parent c536961df3
commit 5ccf6832c8
3 changed files with 18 additions and 13 deletions

View File

@@ -7,27 +7,27 @@ import "strings"
import "github.com/firestuff/subcoding/vm"
import "github.com/pkg/errors"
func Assemble(src []byte) ([][]*vm.Instruction, error) {
prog, err := parse(src)
func Assemble(src []byte) (*vm.Program, error) {
parsed, err := parse(src)
if err != nil {
return nil, err
}
fncs := [][]*vm.Instruction{}
ret := &vm.Program{}
for f, fnc := range prog.Functions {
for f, fnc := range parsed.Functions {
instrs, err := assembleFunction(fnc)
if err != nil {
return nil, errors.Wrapf(err, "At function index %d\n", f)
}
fncs = append(fncs, instrs)
ret.Functions = append(ret.Functions, instrs)
}
return fncs, nil
return ret, nil
}
func AssembleString(src string) ([][]*vm.Instruction, error) {
func AssembleString(src string) (*vm.Program, error) {
return Assemble([]byte(src))
}