about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorBaitinq <[email protected]>2025-04-08 00:26:45 +0200
committerBaitinq <[email protected]>2025-04-08 00:26:45 +0200
commitb501094dc95934bc742acf4890ddf4729cf94a49 (patch)
tree9805269c96c6562768fe27ddcd061d48854b7dfd /src
parentExamples: Add example creating array (diff)
downloadpry-lang-b501094dc95934bc742acf4890ddf4729cf94a49.tar.gz
pry-lang-b501094dc95934bc742acf4890ddf4729cf94a49.tar.bz2
pry-lang-b501094dc95934bc742acf4890ddf4729cf94a49.zip
Bootstrap: start bootstrapping implementation
Diffstat (limited to 'src')
-rw-r--r--src/bootstrap/main.src34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/bootstrap/main.src b/src/bootstrap/main.src
new file mode 100644
index 0000000..546fa4a
--- /dev/null
+++ b/src/bootstrap/main.src
@@ -0,0 +1,34 @@
+extern printf = (*i8, varargs) => void;
+extern fopen = (*i8, *i8) => *i8;
+extern fgets = (*i8, i64, *i8) => void;
+extern feof = (*i8) => bool;
+extern fseek = (*i8, i64, i64) => i64;
+extern ftell = (*i8) => i64;
+extern fread = (*i8, i64, i64, *i8) => i64;
+extern fclose = (*i8) => *i8;
+extern malloc = (i64) => *i8;
+extern free = (*i8) => void;
+
+let main = (argc: i64, argv: **i8) => i64 {
+	let filename = *(argv + 1);
+
+	printf("%s\n", filename);
+
+	let file = fopen("./src/bootstrap/main.src", "r");
+	
+	fseek(file, 0, 2);
+	let file_size = ftell(file);
+	fseek(file, 0, 0);
+
+	let buf = malloc(file_size + 1);
+
+	let bytes_read = fread(buf, 1, file_size, file);
+	(*(buf + bytes_read)) = '\0';
+
+	printf("%s",  buf);
+
+	free(buf);
+	fclose(file);
+
+	return 0;
+};