aboutsummaryrefslogtreecommitdiff
path: root/generate.go
diff options
context:
space:
mode:
authorHimbeer <himbeer@disroot.org>2024-08-30 11:45:11 +0200
committerHimbeer <himbeer@disroot.org>2024-08-30 11:45:11 +0200
commit4bfdd92015153c79c7a069c085b5fb0e4cc6bfaf (patch)
tree3d29f9adb1959a684c96952476f6540d271ed0b8 /generate.go
parent479ae18be6a21f71090e2f25435f585846de152c (diff)
Implement function calls
Diffstat (limited to 'generate.go')
-rw-r--r--generate.go21
1 files changed, 21 insertions, 0 deletions
diff --git a/generate.go b/generate.go
index 317e11c..3e21a0c 100644
--- a/generate.go
+++ b/generate.go
@@ -378,3 +378,24 @@ func (n *numberExpr) generate(w io.Writer) (string, error) {
return fmt.Sprintf("%d", num), nil
}
+
+func (c *callExpr) generate(w io.Writer) (string, error) {
+ ret := allocReg()
+
+ fmt.Fprintf(w, "%s =w call $%s(", ret, c.funcName)
+
+ delim := ""
+ for arg := c.args; arg != nil; arg = arg.next {
+ reg, err := arg.value.generate(w)
+ if err != nil {
+ return "", err
+ }
+
+ fmt.Fprintf(w, "w %s%s", reg, delim)
+ delim = ","
+ }
+
+ fmt.Fprintf(w, ")\n")
+
+ return ret, nil
+}