diff options
| author | Baitinq <[email protected]> | 2025-06-11 00:10:59 +0200 |
|---|---|---|
| committer | Baitinq <[email protected]> | 2025-06-11 00:11:01 +0200 |
| commit | 8fd13680a7b87dc1a9ba2119666f7b0e26bc62b5 (patch) | |
| tree | 80e8e9319734e112558f1a9c31485b1c01bccb41 | |
| parent | Boostrap: fix aarch64 linking (diff) | |
| download | interpreter-8fd13680a7b87dc1a9ba2119666f7b0e26bc62b5.tar.gz interpreter-8fd13680a7b87dc1a9ba2119666f7b0e26bc62b5.tar.bz2 interpreter-8fd13680a7b87dc1a9ba2119666f7b0e26bc62b5.zip | |
stdlib: Remove println
varargs forwarding is platform specific with llvm, so we cannot easily have this function
| -rw-r--r-- | examples/0.src | 2 | ||||
| -rw-r--r-- | examples/1.5.src | 4 | ||||
| -rw-r--r-- | examples/1.src | 2 | ||||
| -rw-r--r-- | examples/10.src | 2 | ||||
| -rw-r--r-- | examples/11.src | 4 | ||||
| -rw-r--r-- | examples/12.src | 4 | ||||
| -rw-r--r-- | examples/13.src | 4 | ||||
| -rw-r--r-- | examples/17.src | 4 | ||||
| -rw-r--r-- | examples/18.src | 8 | ||||
| -rw-r--r-- | examples/2.src | 2 | ||||
| -rw-r--r-- | examples/20.src | 2 | ||||
| -rw-r--r-- | examples/21.src | 6 | ||||
| -rw-r--r-- | examples/22.src | 6 | ||||
| -rw-r--r-- | examples/23.src | 4 | ||||
| -rw-r--r-- | examples/24.src | 4 | ||||
| -rw-r--r-- | examples/3.src | 2 | ||||
| -rw-r--r-- | examples/4.src | 4 | ||||
| -rw-r--r-- | examples/5.src | 6 | ||||
| -rw-r--r-- | examples/6.5.src | 2 | ||||
| -rw-r--r-- | examples/6.src | 4 | ||||
| -rw-r--r-- | examples/7.src | 2 | ||||
| -rw-r--r-- | examples/8.src | 2 | ||||
| -rw-r--r-- | examples/9.src | 2 | ||||
| -rw-r--r-- | src/bootstrap/codegen.src | 16 | ||||
| -rw-r--r-- | src/bootstrap/main.src | 4 | ||||
| -rw-r--r-- | src/bootstrap/parser.src | 14 | ||||
| -rw-r--r-- | src/bootstrap/tokenizer.src | 10 | ||||
| -rw-r--r-- | std/stdlib.src | 9 |
28 files changed, 64 insertions, 71 deletions
diff --git a/examples/0.src b/examples/0.src index 7d1891d..56b540e 100644 --- a/examples/0.src +++ b/examples/0.src @@ -3,7 +3,7 @@ import "!stdlib.src"; let main = (argc: i64, argv: *i64) => i64 { - println("%d", argc); + printf("%d\n", argc); return 2; }; diff --git a/examples/1.5.src b/examples/1.5.src index 9359498..6997d74 100644 --- a/examples/1.5.src +++ b/examples/1.5.src @@ -1,14 +1,14 @@ import "!stdlib.src"; let x = () => i64 { - println("%d", 22); + printf("%d\n", 22); return 11; }; let main = () => i64 { let i = 4; - println("%d", i); + printf("%d\n", i); return x(); }; diff --git a/examples/1.src b/examples/1.src index fa7c7e7..6fef25a 100644 --- a/examples/1.src +++ b/examples/1.src @@ -3,7 +3,7 @@ import "!stdlib.src"; let main = () => i64 { let s = "hello"; - println("%s", s); + printf("%s\n", s); return 0; }; diff --git a/examples/10.src b/examples/10.src index 8e879b8..d8dde60 100644 --- a/examples/10.src +++ b/examples/10.src @@ -4,7 +4,7 @@ let main = () => i64 { let counter = 0; while counter < 10 { - println("%d", counter); + printf("%d\n", counter); counter = counter + 1; }; diff --git a/examples/11.src b/examples/11.src index fd7f215..5c2acad 100644 --- a/examples/11.src +++ b/examples/11.src @@ -1,8 +1,8 @@ import "!stdlib.src"; let id = (a: i64) => i64 { - println("%d", a); - println("%d", 12); + printf("%d\n", a); + printf("%d\n", 12); return a; }; diff --git a/examples/12.src b/examples/12.src index 21207f2..1193e4c 100644 --- a/examples/12.src +++ b/examples/12.src @@ -31,10 +31,10 @@ let main = () => i64 { }; let fact_val = factorial(6); - println("%d", fact_val); + printf("%d\n", fact_val); let even_sum = sum_if(is_even, 20); - println("%d", even_sum); + printf("%d\n", even_sum); return 0; }; diff --git a/examples/13.src b/examples/13.src index 798d056..9de55ac 100644 --- a/examples/13.src +++ b/examples/13.src @@ -24,10 +24,10 @@ let main = () => i64 { }; let fib_val = fibonacci_iter(10); - println("%d", fib_val); + printf("%d\n", fib_val); let gcd_val = gcd(48, 18); - println("%d", gcd_val); + printf("%d\n", gcd_val); return 0; }; diff --git a/examples/17.src b/examples/17.src index 779ff74..93a313f 100644 --- a/examples/17.src +++ b/examples/17.src @@ -6,8 +6,8 @@ import "!stdlib.src"; let main = () => i64 { let x = malloc(8); *x = 10; - println("%p", x); - println("%d", *x); + printf("%p\n", x); + printf("%d\n", *x); free(x); return 0; }; diff --git a/examples/18.src b/examples/18.src index 17c9fee..741a460 100644 --- a/examples/18.src +++ b/examples/18.src @@ -8,10 +8,10 @@ let main = () => i64 { (*(x+cast(*i8, 0))) = 10; (*(x+cast(*i8, 1))) = 20; (*(x+cast(*i8, 2))) = 40; - println("%p", x); - println("%d", *(x+cast(*i8, 0))); - println("%d", *(x+cast(*i8, 1))); - println("%d", *(x+cast(*i8, 2))); + printf("%p\n", x); + printf("%d\n", *(x+cast(*i8, 0))); + printf("%d\n", *(x+cast(*i8, 1))); + printf("%d\n", *(x+cast(*i8, 2))); free(cast(*void, x)); return 0; }; diff --git a/examples/2.src b/examples/2.src index 74e6400..d6a81b8 100644 --- a/examples/2.src +++ b/examples/2.src @@ -5,7 +5,7 @@ let main = () => i64 { let uwu = test; - println("%d", uwu); + printf("%d\n", uwu); return 0; }; diff --git a/examples/20.src b/examples/20.src index 82356b2..6acabc8 100644 --- a/examples/20.src +++ b/examples/20.src @@ -20,7 +20,7 @@ let main = () => i64 { let i = 0; while i < n { - println("%d", *(arr + cast(*i64, i))); + printf("%d\n", *(arr + cast(*i64, i))); i = i + 1; }; diff --git a/examples/21.src b/examples/21.src index fbc4d3a..804b242 100644 --- a/examples/21.src +++ b/examples/21.src @@ -16,7 +16,7 @@ let init_array = (n: i64, arr: *i64) => void { let print_array = (n: i64, arr: *i64) => void { let i = 0; while i < n { - println("%d", *(arr + cast(*i64, i))); + printf("%d\n", *(arr + cast(*i64, i))); i = i + 1; }; return; @@ -51,12 +51,12 @@ let main = () => i64 { let arr = cast(*i64, malloc(n * 8)); init_array(n, arr); - println("Pre-sorted:"); + printf("Pre-sorted:\n"); print_array(n, arr); sort_array(n, arr); - println("Sorted:"); + printf("Sorted:\n"); print_array(n, arr); free(cast(*void, arr)); diff --git a/examples/22.src b/examples/22.src index b984202..cc367bf 100644 --- a/examples/22.src +++ b/examples/22.src @@ -20,14 +20,14 @@ let main = () => i64 { let x = 0; - println("Inst x: %d", inst.x); - println("Inst y: %d", *(inst.y)); + printf("Inst x: %d\n", inst.x); + printf("Inst y: %d\n", *(inst.y)); if inst.z { x = 1; }; - println("Test: %d", x); + printf("Test: %d\n", x); return 0; }; diff --git a/examples/23.src b/examples/23.src index 9139428..31277c9 100644 --- a/examples/23.src +++ b/examples/23.src @@ -8,8 +8,8 @@ let test = struct { }; let print_struct = (s: test) => void { - println("X: %d", s.x); - println("Y: %s", s.y); + printf("X: %d\n", s.x); + printf("Y: %s\n", s.y); return; }; diff --git a/examples/24.src b/examples/24.src index e0a3081..7349906 100644 --- a/examples/24.src +++ b/examples/24.src @@ -9,8 +9,8 @@ let test = struct { }; let print_struct = (s: *test) => void { - println("X: %d", (*s).x); - println("Y: %s", (*s).y); + printf("X: %d\n", (*s).x); + printf("Y: %s\n", (*s).y); if (*s).z != cast(*test, null) { print_struct((*s).z); }; diff --git a/examples/3.src b/examples/3.src index d08cd7d..f10f05c 100644 --- a/examples/3.src +++ b/examples/3.src @@ -5,7 +5,7 @@ let main = () => i64 { seventeen = seventeen + 1; - println("%d", seventeen); + printf("%d\n", seventeen); return seventeen; }; diff --git a/examples/4.src b/examples/4.src index f7b00e9..7787593 100644 --- a/examples/4.src +++ b/examples/4.src @@ -2,13 +2,13 @@ import "!stdlib.src"; let main = () => i64 { let print_one = () => i64 { - println("%d", 1); + printf("%d\n", 1); return 4; }; let y = print_one() + 2; - println("%d", y); + printf("%d\n", y); return y; }; diff --git a/examples/5.src b/examples/5.src index c397759..f6b2e62 100644 --- a/examples/5.src +++ b/examples/5.src @@ -6,15 +6,15 @@ let x = 18; let foo = () => i64 { let x = 1; - println("%d", x); + printf("%d\n", x); return x; }; let main = () => i64 { - println("%d", x); + printf("%d\n", x); let x = 2; let y = foo(); - println("%d", x); + printf("%d\n", x); return x + y; }; diff --git a/examples/6.5.src b/examples/6.5.src index d85fe34..f7d6229 100644 --- a/examples/6.5.src +++ b/examples/6.5.src @@ -3,7 +3,7 @@ import "!stdlib.src"; let main = () => i64 { let x = !(1 == 1); if !x { - println("Condition"); + printf("Condition\n"); }; return 0; }; diff --git a/examples/6.src b/examples/6.src index ff4ed9e..3793f24 100644 --- a/examples/6.src +++ b/examples/6.src @@ -1,8 +1,8 @@ import "!stdlib.src"; let print_input = (input_a: i64, input_b: i64) => i64 { - println("%d", input_a); - println("%d", input_b); + printf("%d\n", input_a); + printf("%d\n", input_b); return input_a + input_b; }; diff --git a/examples/7.src b/examples/7.src index 6b45b73..a94891d 100644 --- a/examples/7.src +++ b/examples/7.src @@ -10,7 +10,7 @@ let main = () => i64 { let i = 4; if (1 - -1 * 2) == 5 - (-1 + 1 + ten() / 2) + 3 { - println("%d", i); + printf("%d\n", i); return i; }; diff --git a/examples/8.src b/examples/8.src index fe6b66d..671640b 100644 --- a/examples/8.src +++ b/examples/8.src @@ -12,7 +12,7 @@ let main = () => i64 { }; let result = fib(30); - println("%d", result); + printf("%d\n", result); return result; }; diff --git a/examples/9.src b/examples/9.src index 9087c09..ae586c2 100644 --- a/examples/9.src +++ b/examples/9.src @@ -1,7 +1,7 @@ import "!stdlib.src"; let print_boolean = (b: bool) => i64 { - println("%d", b); + printf("%d\n", b); return 0; }; diff --git a/src/bootstrap/codegen.src b/src/bootstrap/codegen.src index fa4c45d..7059508 100644 --- a/src/bootstrap/codegen.src +++ b/src/bootstrap/codegen.src @@ -63,7 +63,7 @@ let codegen_generate_expression_value = (c: *codegen, expression: *Node, name: * if ((*expression).type == NODE_PRIMARY_EXPRESSION_NUMBER) { let n = (*cast(*NODE_PRIMARY_EXPRESSION_NUMBER_DATA, (*expression).data)).value; - println("X: %d", n); + printf("X: %d\n", n); let node_type = Node{}; node_type.type = NODE_TYPE_SIMPLE_TYPE; @@ -77,9 +77,9 @@ let codegen_generate_expression_value = (c: *codegen, expression: *Node, name: * }; if ((*expression).type == NODE_FUNCTION_DEFINITION) { - println("ASS %d", (*expression).type); + printf("ASS %d\n", (*expression).type); assert(false); /* TODO */ - println("ERT"); + printf("ERT\n"); }; assert(false); @@ -93,7 +93,7 @@ let codegen_generate_assignment_statement = (c: *codegen, stmt: *NODE_ASSIGNMENT if (lhs.type == NODE_PRIMARY_EXPRESSION_IDENTIFIER) { let identifier = (*cast(*NODE_PRIMARY_EXPRESSION_IDENTIFIER_DATA, lhs.data)).name; - println("XX %s", identifier); + printf("XX %s\n", identifier); let variable = codegen_generate_expression_value(c, prhs, identifier); assert(variable != cast(*Variable, null)); return 0; @@ -111,7 +111,7 @@ let codegen_generate_statement = (c: *codegen, statement: *Node) => i64 { if res != 0 { return 1; }; - println("STMT: %d", stmt.type); + printf("STMT: %d\n", stmt.type); return 0; }; @@ -145,7 +145,7 @@ let codegen_compile = (c: *codegen) => i64 { let message = cast(**i8, null); let result = LLVMGetTargetFromTriple(triple, target_ref, message); if result != 0 { - println("Target output: %s", *message); + printf("Target output: %s\n", *message); LLVMDisposeMessage(*message); }; let target_machine = LLVMCreateTargetMachine( @@ -160,7 +160,7 @@ let codegen_compile = (c: *codegen) => i64 { LLVMDisposeMessage(triple); result = LLVMVerifyModule((*c).llvm_module, LLVMAbortProcessAction, message); if result != 0 { - println("Verification output: %s", *message); + printf("Verification output: %s\n", *message); LLVMDisposeMessage(*message); }; @@ -174,7 +174,7 @@ let codegen_compile = (c: *codegen) => i64 { cast(**i8, null), ); LLVMDisposeTargetMachine(target_machine); - println("Object file generated: %s", filename); + printf("Object file generated: %s\n", filename); return 0; }; diff --git a/src/bootstrap/main.src b/src/bootstrap/main.src index 6cb2949..571cc03 100644 --- a/src/bootstrap/main.src +++ b/src/bootstrap/main.src @@ -40,13 +40,13 @@ let read_file = (filename: *i8, alloc: *arena) => slice { let main = (argc: i64, argv: **i8) => i64 { if argc < 2 { - println("Need filename!"); + printf("Need filename!\n"); return 1; }; let filename = *(argv + cast(**i8, 1)); - println("%s", filename); + printf("%s\n", filename); let alloc = arena_init(999999999); diff --git a/src/bootstrap/parser.src b/src/bootstrap/parser.src index 44e5761..daac296 100644 --- a/src/bootstrap/parser.src +++ b/src/bootstrap/parser.src @@ -379,7 +379,7 @@ let parser_parse_primary_expression = (p: *parser) => *Node { let tok = parser_consume_token(p); if tok == cast(*token, null) { - println("NO TOK"); + printf("NO TOK\n"); return cast(*Node, null); }; @@ -402,7 +402,7 @@ let parser_parse_primary_expression = (p: *parser) => *Node { return create_node(p, n); }; - println("DIFF TYPE: %d", (*tok).type); + printf("DIFF TYPE: %d\n", (*tok).type); return cast(*Node, null); }; @@ -437,7 +437,7 @@ let parser_parse_expression = (p: *parser) => *Node { let parse_assignment_statement = (p: *parser) => *Node { let is_declaration = false; if parser_accept_token(p, TOKEN_LET) != cast(*token, null) { - println("IS DECLARATION"); + printf("IS DECLARATION\n"); is_declaration = true; }; @@ -445,7 +445,7 @@ let parse_assignment_statement = (p: *parser) => *Node { let lhs = parser_parse_expression(p); /* TODO */ if lhs == cast(*Node, null) { - println("ANOTHER BNLL"); + printf("ANOTHER BNLL\n"); return cast(*Node, null); }; @@ -455,7 +455,7 @@ let parse_assignment_statement = (p: *parser) => *Node { let rhs = parser_parse_expression(p); /* TODO */ if rhs == cast(*Node, null) { - println("NUL EXP"); + printf("NUL EXP\n"); return cast(*Node, null); }; @@ -467,7 +467,7 @@ let parse_assignment_statement = (p: *parser) => *Node { let n = Node{}; n.type = NODE_ASSIGNMENT_STATEMENT; n.data = cast(*void, d); - println("CONTINUE"); + printf("CONTINUE\n"); return create_node(p, n); }; @@ -490,7 +490,7 @@ let parser_parse_statement = (p: *parser) => *Node { }; - println("None"); + printf("None\n"); return cast(*Node, null); }; diff --git a/src/bootstrap/tokenizer.src b/src/bootstrap/tokenizer.src index 70ec1bb..8d7f997 100644 --- a/src/bootstrap/tokenizer.src +++ b/src/bootstrap/tokenizer.src @@ -503,7 +503,7 @@ let tokenizer_next = (t: *tokenizer) => *token { return true; }); if strlen(string) == 0 { - println("NO IDENT!"); + printf("NO IDENT!\n"); return cast(*token, null); }; @@ -520,9 +520,9 @@ let tokenizer_init = (alloc: *arena, file: slice) => *tokenizer { (*t).buf = cast(*i8, file.data); (*t).buf_len = file.data_len; - println("File size: %d", (*t).buf_len); + printf("File size: %d\n", (*t).buf_len); - println("%s", (*t).buf); + printf("%s\n", (*t).buf); return t; }; @@ -536,13 +536,13 @@ let tokenizer_tokenize = (t: *tokenizer) => slice { if tk == cast(*token, null) { break; }; - println("Add token: %d", (*tk).type); + printf("Add token: %d\n", (*tk).type); (*(tokens + cast(*token, tokens_len))) = *tk; tokens_len = tokens_len + 1; }; - println("PRINT TOKENS: %d", tokens_len); + printf("PRINT TOKENS: %d\n", tokens_len); print_tokens(tokens, tokens_len); diff --git a/std/stdlib.src b/std/stdlib.src index 9164f67..aecd4df 100644 --- a/std/stdlib.src +++ b/std/stdlib.src @@ -1,13 +1,6 @@ extern printf = (*i8, varargs) => void; extern exit = (i64) => void; -/* TODO: This has a bug (with varargs i think) */ -let println = (str: *i8, args: varargs) => void { - printf(str, args); - printf("\n"); - return; -}; - let strcmp = (stra: *i8, strb: *i8) => bool { let i = 0; while true { @@ -82,7 +75,7 @@ let iswhitespace = (c: i8) => bool { let assert = (cond: bool) => void { if !cond { - println("ASSERTION FAILED"); + printf("ASSERTION FAILED\n"); exit(1); }; |