19 lines
479 B
Go
19 lines
479 B
Go
package core
|
|
|
|
import (
|
|
"git.akyoto.dev/cli/q/src/build/ast"
|
|
"git.akyoto.dev/cli/q/src/build/errors"
|
|
)
|
|
|
|
// CompileAssign compiles an assign statement.
|
|
func (f *Function) CompileAssign(node *ast.Assign) error {
|
|
name := node.Name.Text()
|
|
variable, exists := f.variables[name]
|
|
|
|
if !exists {
|
|
return errors.New(&errors.UnknownIdentifier{Name: name}, f.File, node.Name.Position)
|
|
}
|
|
|
|
defer f.useVariable(variable)
|
|
return f.Execute(node.Operator, variable.Register, node.Value)
|
|
}
|