undar-lang/test/hello-bf.ul

50 lines
1.3 KiB
Plaintext

str code = "+++++++++++[>++++++>+++++++++>++++++++>++++>+++>+<<<<<<-]>+++
+++.>++.+++++++..+++.>>.>-.<<-.<.+++.------.--------.>>>+.>-.";
byte[10000] memory;
nat mp = 0; // memory pointer
nat ip = 0; // instruction pointer
while (ip < code.length) {
if (code[ip] == '>') {
mp = mp + 1;
} else if (code[ip] == '<') {
mp = mp - 1;
} else if (code[ip] == '+') {
memory[mp] = memory[mp] + 1;
} else if (code[ip] == '-') {
memory[mp] = memory[mp] - 1;
} else if (code[ip] == '.') {
write = memory[mp];
} else if (code[ip] == ',') {
memory[mp] = read;
} else if (code[ip] == '[') {
if(!memory[mp]) {
nat nc = 1;
while (nc > 0) {
ip = ip + 1;
if (code[ip] == '[') {
nc = nc + 1;
} else if (code[ip] == ']') {
nc = nc - 1;
}
}
}
} else if (code[ip] == ']') {
if (memory[mp]) {
nat nc = 1;
while (nc > 0) {
ip = ip - 1;
if (code[ip] == ']') {
nc = nc + 1;
} else if (code[ip] == '[') {
nc = nc - 1;
}
}
}
}
ip = ip + 1;
}
halt;