about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--examples/0.src5
-rw-r--r--examples/1.5.src6
-rw-r--r--examples/1.src4
-rw-r--r--examples/10.src4
-rw-r--r--examples/11.src6
-rw-r--r--examples/12.src6
-rw-r--r--examples/13.src6
-rw-r--r--examples/16.src1
-rw-r--r--examples/17.src7
-rw-r--r--examples/18.src11
-rw-r--r--examples/2.src4
-rw-r--r--examples/20.src5
-rw-r--r--examples/3.src4
-rw-r--r--examples/4.src6
-rw-r--r--examples/5.src9
-rw-r--r--examples/6.5.src4
-rw-r--r--examples/6.src6
-rw-r--r--examples/7.src4
-rw-r--r--examples/8.src4
-rw-r--r--examples/9.src4
-rw-r--r--src/bootstrap/main.src4
-rw-r--r--src/bootstrap/tokenizer.src11
22 files changed, 62 insertions, 59 deletions
diff --git a/examples/0.src b/examples/0.src
index 8180dfa..7d1891d 100644
--- a/examples/0.src
+++ b/examples/0.src
@@ -1,8 +1,9 @@
 /* HELLO! Welcome to the unnamed language */
-extern printf = (*i64, varargs) => i64;
+
+import "!stdlib.src";
 
 let main = (argc: i64, argv: *i64) => i64 {
-	printf("%d\n", argc);
+	println("%d", argc);
 	
 	return 2;
 };
diff --git a/examples/1.5.src b/examples/1.5.src
index fce8fd4..9359498 100644
--- a/examples/1.5.src
+++ b/examples/1.5.src
@@ -1,14 +1,14 @@
-extern printf = (*i64, i64) => i64;
+import "!stdlib.src";
 
 let x = () => i64 {
-	printf("%d\n", 22);
+	println("%d", 22);
 	return 11;
 };
 
 let main = () => i64 {
 	let i = 4;
 
-	printf("%d\n", i);
+	println("%d", i);
 
 	return x();
 };
diff --git a/examples/1.src b/examples/1.src
index e23f0a4..fa7c7e7 100644
--- a/examples/1.src
+++ b/examples/1.src
@@ -1,9 +1,9 @@
-extern printf = (*i64, varargs) => i64;
+import "!stdlib.src";
 
 let main = () => i64 {
 	let s = "hello";
 
-	printf("%s\n", s);
+	println("%s", s);
 
 	return 0;
 };
diff --git a/examples/10.src b/examples/10.src
index ac1f960..8e879b8 100644
--- a/examples/10.src
+++ b/examples/10.src
@@ -1,10 +1,10 @@
-extern printf = (*i64, varargs) => i64;
+import "!stdlib.src";
 
 let main = () => i64 {
 	let counter = 0;
 
 	while counter < 10 {
-		printf("%d\n", counter);
+		println("%d", counter);
 		counter = counter + 1;
 	};
 
diff --git a/examples/11.src b/examples/11.src
index bd92f26..fd7f215 100644
--- a/examples/11.src
+++ b/examples/11.src
@@ -1,8 +1,8 @@
-extern printf = (*i64, varargs) => i64;
+import "!stdlib.src";
 
 let id = (a: i64) => i64 {
-	printf("%d\n", a);
-	printf("%d\n", 12);
+	println("%d", a);
+	println("%d", 12);
 	return a;
 };
 
diff --git a/examples/12.src b/examples/12.src
index 85e4211..21207f2 100644
--- a/examples/12.src
+++ b/examples/12.src
@@ -1,4 +1,4 @@
-extern printf = (*i64, varargs) => i64;
+import "!stdlib.src";
 
 let main = () => i64 {
     let factorial = (n: i64) => i64 {
@@ -31,10 +31,10 @@ let main = () => i64 {
     };
 
     let fact_val = factorial(6);
-    printf("%d\n", fact_val);
+    println("%d", fact_val);
 
     let even_sum = sum_if(is_even, 20);
-    printf("%d\n", even_sum);
+    println("%d", even_sum);
 
     return 0;
 };
diff --git a/examples/13.src b/examples/13.src
index 77f85d1..798d056 100644
--- a/examples/13.src
+++ b/examples/13.src
@@ -1,4 +1,4 @@
-extern printf = (*i64, varargs) => i64;
+import "!stdlib.src";
 
 let main = () => i64 {
     /* Iterative Fibonacci using while loop. */
@@ -24,10 +24,10 @@ let main = () => i64 {
     };
 
     let fib_val = fibonacci_iter(10);
-    printf("%d\n", fib_val);
+    println("%d", fib_val);
 
     let gcd_val = gcd(48, 18);
-    printf("%d\n", gcd_val);
+    println("%d", gcd_val);
 
     return 0;
 };
diff --git a/examples/16.src b/examples/16.src
index 969e5d5..3fb29f7 100644
--- a/examples/16.src
+++ b/examples/16.src
@@ -1,4 +1,3 @@
-extern printf = (*i64, varargs) => i64;
 extern SDL_CreateWindow = (*i8, i64, i64, i64, i64, i64) => i64;
 extern SDL_Init = (i64) => i64;
 
diff --git a/examples/17.src b/examples/17.src
index 2871f46..779ff74 100644
--- a/examples/17.src
+++ b/examples/17.src
@@ -1,12 +1,13 @@
-extern printf = (*i64, varargs) => void;
 extern malloc = (i64) => *i64;
 extern free = (*i64) => void;
 
+import "!stdlib.src";
+
 let main = () => i64 {
 	let x = malloc(8);
 	*x = 10;
-	printf("%p\n", x);
-	printf("%d\n", *x);
+	println("%p", x);
+	println("%d", *x);
 	free(x);
 	return 0;
 };
diff --git a/examples/18.src b/examples/18.src
index be5b967..29facd5 100644
--- a/examples/18.src
+++ b/examples/18.src
@@ -1,16 +1,17 @@
-extern printf = (*i64, varargs) => void;
 extern malloc = (i64) => *i64;
 extern free = (*i64) => void;
 
+import "!stdlib.src";
+
 let main = () => i64 {
 	let x = malloc(24);
 	(*(x+0)) = 10;
 	(*(x+1)) = 20;
 	(*(x+2)) = 40;
-	printf("%p\n", x);
-	printf("%d\n", *(x+0));
-	printf("%d\n", *(x+1));
-	printf("%d\n", *(x+2));
+	println("%p", x);
+	println("%d", *(x+0));
+	println("%d", *(x+1));
+	println("%d", *(x+2));
 	free(x);
 	return 0;
 };
diff --git a/examples/2.src b/examples/2.src
index 4182b79..74e6400 100644
--- a/examples/2.src
+++ b/examples/2.src
@@ -1,11 +1,11 @@
-extern printf = (*i64, i64) => i64;
+import "!stdlib.src";
 
 let main = () => i64 {
 	let test = 1922;
 
 	let uwu = test;
 
-	printf("%d\n", uwu);
+	println("%d", uwu);
 
 	return 0;
 };
diff --git a/examples/20.src b/examples/20.src
index 56c694e..9e289f1 100644
--- a/examples/20.src
+++ b/examples/20.src
@@ -1,7 +1,8 @@
-extern printf = (*i64, varargs) => void;
 extern malloc = (i64) => *i64;
 extern free = (*i64) => void;
 
+import "!stdlib.src";
+
 let init_array = (n: i64, arr: *i64) => i64 {
 	let i = 0;
 	while i < n {
@@ -18,7 +19,7 @@ let main = () => i64 {
 
 	let i = 0;
 	while i < n {
-		printf("%d\n", *(arr + i));
+		println("%d", *(arr + i));
 		i = i + 1;
 	};
 	
diff --git a/examples/3.src b/examples/3.src
index 879f831..d08cd7d 100644
--- a/examples/3.src
+++ b/examples/3.src
@@ -1,11 +1,11 @@
-extern printf = (*i64, i64) => i64;
+import "!stdlib.src";
 
 let main = () => i64 {
 	let seventeen = 10 + 2 + 4;
 
 	seventeen = seventeen + 1;
 
-	printf("%d\n", seventeen);
+	println("%d", seventeen);
 
 	return seventeen;
 };
diff --git a/examples/4.src b/examples/4.src
index dbbb143..f7b00e9 100644
--- a/examples/4.src
+++ b/examples/4.src
@@ -1,14 +1,14 @@
-extern printf = (*i64, varargs) => i64;
+import "!stdlib.src";
 
 let main = () => i64 {
 	let print_one = () => i64 {
-		printf("%d\n", 1);
+		println("%d", 1);
 		return 4;
 	};
 
 	let y = print_one() + 2;
 
-	printf("%d\n", y);
+	println("%d", y);
 
 	return y;
 };
diff --git a/examples/5.src b/examples/5.src
index 6ebbb9a..c397759 100644
--- a/examples/5.src
+++ b/examples/5.src
@@ -1,19 +1,20 @@
 /* As you see, the language supports variable scopes */
-extern printf = (*i64, varargs) => i64;
+
+import "!stdlib.src";
 
 let x = 18;
 
 let foo = () => i64 {
 	let x = 1;
-	printf("%d\n", x);
+	println("%d", x);
 	return x;
 };
 
 let main = () => i64 {
-	printf("%d\n", x);
+	println("%d", x);
 	let x = 2;
 	let y = foo();
-	printf("%d\n", x);
+	println("%d", x);
 	return x + y;
 };
 
diff --git a/examples/6.5.src b/examples/6.5.src
index 5475bff..d85fe34 100644
--- a/examples/6.5.src
+++ b/examples/6.5.src
@@ -1,9 +1,9 @@
-extern printf = (*i64, varargs) => i64;
+import "!stdlib.src";
 
 let main = () => i64 {
 	let x = !(1 == 1);
 	if !x {
-		printf("Condition\n");
+		println("Condition");
 	};
 	return 0;
 };
diff --git a/examples/6.src b/examples/6.src
index 44ff0e0..ff4ed9e 100644
--- a/examples/6.src
+++ b/examples/6.src
@@ -1,8 +1,8 @@
-extern printf = (*i64, varargs) => i64;
+import "!stdlib.src";
 
 let print_input = (input_a: i64, input_b: i64) => i64 {
-	printf("%d\n", input_a);
-	printf("%d\n", input_b);
+	println("%d", input_a);
+	println("%d", input_b);
 	return input_a + input_b;
 };
 
diff --git a/examples/7.src b/examples/7.src
index 771a4ad..6b45b73 100644
--- a/examples/7.src
+++ b/examples/7.src
@@ -1,4 +1,4 @@
-extern printf = (*i64, varargs) => i64;
+import "!stdlib.src";
 
 let ten = () => i64 {
 	return () => i64 {
@@ -10,7 +10,7 @@ let main = () => i64 {
 	let i = 4;
 	
 	if (1 - -1 * 2) == 5 - (-1 + 1 + ten() / 2) + 3 {
-		printf("%d\n", i);
+		println("%d", i);
 		return i;
 	};
 
diff --git a/examples/8.src b/examples/8.src
index 748c809..fe6b66d 100644
--- a/examples/8.src
+++ b/examples/8.src
@@ -1,4 +1,4 @@
-extern printf = (*i64, varargs) => i64;
+import "!stdlib.src";
 
 let main = () => i64 {
 	let fib = (n: i64) => i64 {
@@ -12,7 +12,7 @@ let main = () => i64 {
 	};
 
 	let result = fib(30);
-	printf("%d\n", result);
+	println("%d", result);
 	return result;
 };
 
diff --git a/examples/9.src b/examples/9.src
index 11aca4d..6704c1d 100644
--- a/examples/9.src
+++ b/examples/9.src
@@ -1,7 +1,7 @@
-extern printf = (*i64, varargs) => i64;
+import "!stdlib.src";
 
 let print_boolean = (b: bool) => i64 {
-	printf("%d\n", b);
+	println("%d\n", b);
 	return 0;
 };
 
diff --git a/src/bootstrap/main.src b/src/bootstrap/main.src
index e758d96..aa916d9 100644
--- a/src/bootstrap/main.src
+++ b/src/bootstrap/main.src
@@ -14,13 +14,13 @@ import "tokenizer.src";
 
 let main = (argc: i64, argv: **i8) => i64 {
 	if argc < 2 {
-		printf("Need filename!\n");
+		println("Need filename!");
 		return 1;
 	};
 
 	let filename = *(argv + 1);
 
-	printf("%s\n", filename);
+	println("%s", filename);
 
 	tokenizer_init(filename);
 	tokenizer_deinit();
diff --git a/src/bootstrap/tokenizer.src b/src/bootstrap/tokenizer.src
index 6a88117..26d31b8 100644
--- a/src/bootstrap/tokenizer.src
+++ b/src/bootstrap/tokenizer.src
@@ -32,7 +32,7 @@ let read_file = (filename: *i8) => *i8 {
 };
 
 let add_token = (tokens: *i8, token: *i8) => i64 {
-	printf("Add token: %s\n", token);
+	println("Add token: %s", token);
 	let i = 0;
 	while true {
 		let c = (*(token + i));
@@ -86,7 +86,6 @@ let tokenizer_accept_string = (str: *i8) => bool {
 	let s = malloc(1000);
 	memcpy(s, buf + offset, str_len);
 
-	/* printf("Accept string: %s vs %s\n", str, s); */
 	if strcmp(s, str) {
 		offset = offset + str_len;
 		return true;
@@ -351,16 +350,16 @@ let tokenizer_next = () => *i8 {
 let tokenizer_init = (filename: *i8) => i64 {
 	let buf = read_file(filename);
 
-	printf("File size: %d\n", file_size);
+	println("File size: %d", file_size);
 
-	printf("%s\n", buf);
+	println("%s", buf);
 
 	tokens = malloc(10000);
 
 	while true {
 		let t = tokenizer_next();
 		if t == null {
-			printf("NULL TOKEN!\n");
+			println("NULL TOKEN!");
 			return 1;
 		};
 		if strcmp(t, "EOF") {
@@ -369,7 +368,7 @@ let tokenizer_init = (filename: *i8) => i64 {
 		add_token(tokens, t);
 	};
 
-	printf("PRINT TOKENS\n");
+	println("PRINT TOKENS");
 
 	print_tokens(tokens);