Improved division split

This commit is contained in:
Eduard Urbach 2024-07-28 18:12:42 +02:00
parent 4ded8260b3
commit 8d629dda72
Signed by: eduard
GPG key ID: 49226B848C78F6C8
11 changed files with 84 additions and 64 deletions

View file

@ -0,0 +1,24 @@
package core
import (
"git.akyoto.dev/cli/q/src/build/cpu"
"git.akyoto.dev/cli/q/src/build/expression"
"git.akyoto.dev/cli/q/src/build/token"
)
// Evaluate evaluates an expression and returns a register that contains the value of the expression.
func (f *Function) Evaluate(expr *expression.Expression) (cpu.Register, error) {
if expr.Token.Kind == token.Identifier {
name := expr.Token.Text(f.File.Bytes)
variable := f.VariableByName(name)
if variable.Alive == 1 {
f.UseVariable(variable)
return variable.Register, nil
}
}
tmp := f.NewRegister()
err := f.ExpressionToRegister(expr, tmp)
return tmp, err
}