diff options
author | kdx <kikoodx@paranoici.org> | 2023-12-11 00:59:46 +0100 |
---|---|---|
committer | kdx <kikoodx@paranoici.org> | 2023-12-11 01:04:30 +0100 |
commit | b7739e97d39bd19c1e15fd3a490f3a79d60a9bbe (patch) | |
tree | c0863b9b481b68b5afeed1decd2347692faa10bf | |
parent | 29a380366949cad972f419f205f04f024deca7de (diff) | |
download | golem-b7739e97d39bd19c1e15fd3a490f3a79d60a9bbe.tar.gz |
pipe to empty function calls
-rw-r--r-- | samples/brainfuck.golem | 4 | ||||
-rw-r--r-- | samples/input.golem | 2 | ||||
-rw-r--r-- | samples/malloc.golem | 2 | ||||
-rw-r--r-- | src/main.c | 15 | ||||
-rwxr-xr-x | testing.sh | 1 |
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; @@ -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; } @@ -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.* |