summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkdx <kikoodx@paranoici.org>2023-12-11 00:59:46 +0100
committerkdx <kikoodx@paranoici.org>2023-12-11 01:04:30 +0100
commitb7739e97d39bd19c1e15fd3a490f3a79d60a9bbe (patch)
treec0863b9b481b68b5afeed1decd2347692faa10bf
parent29a380366949cad972f419f205f04f024deca7de (diff)
downloadgolem-b7739e97d39bd19c1e15fd3a490f3a79d60a9bbe.tar.gz
pipe to empty function calls
-rw-r--r--samples/brainfuck.golem4
-rw-r--r--samples/input.golem2
-rw-r--r--samples/malloc.golem2
-rw-r--r--src/main.c15
-rwxr-xr-xtesting.sh1
5 files changed, 14 insertions, 10 deletions
diff --git a/samples/brainfuck.golem b/samples/brainfuck.golem
index c9e5e95..56aef26 100644
--- a/samples/brainfuck.golem
+++ b/samples/brainfuck.golem
@@ -10,12 +10,12 @@ global mem[MEM_SIZE] = 0;
global mem_ptr = 0;
main() {
- if drain() |> ensure_match()
+ if drain() |> ensure_match
return error("[] don't match");
loop {
if ([buf + pc] == 0)
return;
- getop() |> exec();
+ getop() |> exec;
}
}
diff --git a/samples/input.golem b/samples/input.golem
index 6cdbb1d..482f2e6 100644
--- a/samples/input.golem
+++ b/samples/input.golem
@@ -1,4 +1,4 @@
-main() => input(">>> ") |> print();
+main() => input(">>> ") |> print;
define INPUT_BUF_SIZE = 256;
global input_buf[INPUT_BUF_SIZE] = 0;
diff --git a/samples/malloc.golem b/samples/malloc.golem
index a920e4e..eb0b7f3 100644
--- a/samples/malloc.golem
+++ b/samples/malloc.golem
@@ -10,7 +10,7 @@ nopipe() {
write(s);
}
-pipe() => strdup("coucou le monde\n") |> write() |> stoupper() |> write();
+pipe() => strdup("coucou le monde\n") |> write |> stoupper |> write;
write(s) {
local o = s;
diff --git a/src/main.c b/src/main.c
index e9061b5..123d32e 100644
--- a/src/main.c
+++ b/src/main.c
@@ -738,14 +738,17 @@ fncall(Token **rest, Token *tok)
Node head = {0};
Node *cur = &head;
- tok = skip(tok, "(");
- while (tok->type != TOK_EOF && !equal(tok, ")")) {
- cur = cur->next = expr(&tok, tok);
- if (!equal(tok, ")"))
- tok = skip(tok, ",");
+ if (equal(tok, "(")) {
+ tok = skip(tok, "(");
+ while (tok->type != TOK_EOF && !equal(tok, ")")) {
+ cur = cur->next = expr(&tok, tok);
+ if (!equal(tok, ")"))
+ tok = skip(tok, ",");
+ }
+ tok = skip(tok, ")");
}
- *rest = skip(tok, ")");
+ *rest = tok;
node->rhs = head.next;
return node;
}
diff --git a/testing.sh b/testing.sh
index bc3d741..dee5b12 100755
--- a/testing.sh
+++ b/testing.sh
@@ -69,4 +69,5 @@ test "$1" "main() { dbg [{1, 2, 3} + 2]; dbg [{1, 2, 3}]; }"
test "$1" "main() { err 'u'; }"
test "$1" "enum a, b, c; main() { dbg a; dbg b; dbg c; }"
test "$1" 'main() { dbg `howdy; }'
+test "$1" 'main() { dbg v(1) |> i |> d(2) |> i; } v(a)=>a;i(a)=>d(a,1);d(a,b)=>a+b;'
rm -f build/tmp.*