summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkdx <kdx@42l.fr>2023-01-18 23:44:28 +0100
committerkdx <kdx@42l.fr>2023-01-18 23:44:28 +0100
commitdbbc4d707595913797ab89d399833bc0cd95072b (patch)
tree34b3e7436ca13788eaae7cd17472edbf0ce7abb7
downloadhare-brainfuck-dbbc4d707595913797ab89d399833bc0cd95072b.tar.gz
initial commit
-rw-r--r--.gitignore1
-rw-r--r--Brainfuck.ha4
-rw-r--r--drain.ha13
-rw-r--r--main.ha12
4 files changed, 30 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..a44421c
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+hare-brainfuck
diff --git a/Brainfuck.ha b/Brainfuck.ha
new file mode 100644
index 0000000..59ab17d
--- /dev/null
+++ b/Brainfuck.ha
@@ -0,0 +1,4 @@
+type Brainfuck = struct {
+ ptr: size,
+ mem: [256]u8
+};
diff --git a/drain.ha b/drain.ha
new file mode 100644
index 0000000..d270108
--- /dev/null
+++ b/drain.ha
@@ -0,0 +1,13 @@
+use io;
+use os;
+use fmt;
+
+fn drain_stdin() []u8 = {
+ const buf = match (io::drain(os::stdin)) {
+ case let buf: []u8 =>
+ yield buf;
+ case let err: io::error =>
+ fmt::fatalf("io::drain failed: {}", io::strerror(err));
+ };
+ return buf;
+};
diff --git a/main.ha b/main.ha
new file mode 100644
index 0000000..3b2f690
--- /dev/null
+++ b/main.ha
@@ -0,0 +1,12 @@
+use fmt;
+use strings;
+
+let bf: Brainfuck = Brainfuck {
+ ptr = 0,
+ mem = [0...]
+};
+
+export fn main() void = {
+ const buf = drain_stdin();
+ defer free(buf);
+};