From dbbc4d707595913797ab89d399833bc0cd95072b Mon Sep 17 00:00:00 2001 From: kdx Date: Wed, 18 Jan 2023 23:44:28 +0100 Subject: initial commit --- .gitignore | 1 + Brainfuck.ha | 4 ++++ drain.ha | 13 +++++++++++++ main.ha | 12 ++++++++++++ 4 files changed, 30 insertions(+) create mode 100644 .gitignore create mode 100644 Brainfuck.ha create mode 100644 drain.ha create mode 100644 main.ha 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); +}; -- cgit v1.2.3