diff options
author | kdx <kikoodx@paranoici.org> | 2023-06-12 18:43:11 +0200 |
---|---|---|
committer | kdx <kikoodx@paranoici.org> | 2023-06-12 18:43:11 +0200 |
commit | 77c272bf67beb30997021947ff8d7fc5cef7b637 (patch) | |
tree | 7a49bd0801cecfce164a3d056d1ea930493c6f47 | |
parent | c26a76a39a93656b547886acbc96147fe779cffc (diff) | |
download | golem-77c272bf67beb30997021947ff8d7fc5cef7b637.tar.gz |
return w/o argument
-rw-r--r-- | src/main.c | 14 | ||||
-rwxr-xr-x | testing.sh | 1 |
2 files changed, 14 insertions, 1 deletions
@@ -107,6 +107,14 @@ tokenize(char *p) continue; } + if (*p == '#') { + char *q = p + 1; + while (*p != '\n' && *p != '\0') { + p += 1; + } + printf("%.*s\n", (int)(p - q), q); + } + if (isspace(*p)) { p++; continue; @@ -677,7 +685,11 @@ static Node * return_stmt(Token **rest, Token *tok) { tok = skip(tok, "return"); - Node *const node = new_unary(NOD_RETURN_STMT, expr(&tok, tok)); + Node *node; + if (equal(tok, ";")) + node = new_unary(NOD_RETURN_STMT, new_num(0)); + else + node = new_unary(NOD_RETURN_STMT, expr(&tok, tok)); *rest = skip(tok, ";"); return node; } @@ -51,4 +51,5 @@ test "$1" "main() { wrt('0' + (9 >= 7)); wrt '\n'; }" test "$1" "main() { local a; dbg a; inc(&a); dbg a; } inc(p) { [p] = [p] + 1; }" test "$1" "global a; main() { dbg a; inc(&a); dbg a; } inc(p) { [p] = [p] + 1; }" test "$1" "main() 0; //ayayayayayayaya comment" +test "$1" "main() return;" rm -f build/tmp.* |