Implemented return values

This commit is contained in:
Eduard Urbach 2024-06-29 21:06:59 +02:00
parent 67b3a3d820
commit a0edc45e19
Signed by: eduard
GPG key ID: 49226B848C78F6C8
7 changed files with 113 additions and 61 deletions

View file

@ -7,12 +7,18 @@ import (
// CompileReturn compiles a return instruction.
func (f *Function) CompileReturn(tokens token.List) error {
if len(tokens) > 1 {
value := expression.Parse(tokens[1:])
defer value.Close()
// TODO: Set the return value
defer f.assembler.Return()
if len(tokens) == 1 {
return nil
}
f.assembler.Return()
return nil
value := expression.Parse(tokens[1:])
if value == nil {
return nil
}
defer value.Close()
return f.ExpressionToRegister(value, f.cpu.Return[0])
}