summaryrefslogtreecommitdiff
path: root/tests/bf.toc
diff options
context:
space:
mode:
Diffstat (limited to 'tests/bf.toc')
-rw-r--r--tests/bf.toc26
1 files changed, 14 insertions, 12 deletions
diff --git a/tests/bf.toc b/tests/bf.toc
index e1f8781..d300bc9 100644
--- a/tests/bf.toc
+++ b/tests/bf.toc
@@ -1,7 +1,9 @@
+#include "mem.toc";
+
readfile ::= fn(filename: []char) []char {
#C("extern void *fopen(char *name, char const *mode); extern char *fgets(char *buf, size_t sz, void *f);");
fp : &u8 = #C("fopen(&(((char *)filename.data)[0]), \"r\")");
- contents : []char;
+ contents := news(char, 1);
contents_sz : int;
contents_len : int;
buffer : [1024]char;
@@ -13,13 +15,13 @@ readfile ::= fn(filename: []char) []char {
if contents_sz < contents_len + buffer_len {
old_contents := contents;
contents_sz = 2*contents_sz + 1024;
- contents = new(char, contents_sz);
+ contents = news(char, contents_sz);
i := 0;
while i < contents_len {
contents[i] = old_contents[i];
i = i + 1;
}
- del(old_contents);
+ dels(old_contents);
}
i := 0;
while i < buffer_len {
@@ -44,7 +46,7 @@ runfile ::= fn(filename: []char) {
#C("extern int putchar(int c);");
code := readfile(filename);
tape_sz := 3;
- tape := new(int, tape_sz);
+ tape := news(int, tape_sz);
ptr := tape_sz / 2;
i := 0;
while code[i] {
@@ -58,28 +60,28 @@ runfile ::= fn(filename: []char) {
ptr = ptr + 1;
if ptr >= tape_sz {
// extend to the right
- newtape := new(int, 2*tape_sz);
+ newtape := news(int, 2*tape_sz);
j := 0;
while j < tape_sz {
newtape[j] = tape[j];
j = j + 1;
}
tape_sz = tape_sz * 2;
- del(tape);
+ dels(tape);
tape = newtape;
}
} elif code[i] == '<' {
ptr = ptr - 1;
if ptr < 0 {
// extend to the left
- newtape := new(int, 2*tape_sz);
+ newtape := news(int, 2*tape_sz);
j := 0;
while j < tape_sz {
newtape[j+tape_sz] = tape[j];
j = j + 1;
}
tape_sz = tape_sz * 2;
- del(tape);
+ dels(tape);
tape = newtape;
ptr = ptr + tape_sz;
}
@@ -110,11 +112,11 @@ runfile ::= fn(filename: []char) {
}
i = i + 1;
}
- del(tape);
- del(code);
+ dels(tape);
+ dels(code);
};
main ::= fn() {
- runfile("bf_hw0");
- runfile("bf_hw1");
+ runfile("bf_hw0\0");
+ runfile("bf_hw1\0");
};