diff options
-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.* |