diff options
author | kdx <kdx@42l.fr> | 2023-01-18 23:44:28 +0100 |
---|---|---|
committer | kdx <kdx@42l.fr> | 2023-01-18 23:44:28 +0100 |
commit | dbbc4d707595913797ab89d399833bc0cd95072b (patch) | |
tree | 34b3e7436ca13788eaae7cd17472edbf0ce7abb7 | |
download | hare-brainfuck-dbbc4d707595913797ab89d399833bc0cd95072b.tar.gz |
initial commit
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | Brainfuck.ha | 4 | ||||
-rw-r--r-- | drain.ha | 13 | ||||
-rw-r--r-- | main.ha | 12 |
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; +}; @@ -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); +}; |