
Untitled
By: a guest on
Sep 12th, 2015 | syntax:
Python | size: 0.82 KB | views:
70 | expires: Never
def bf_interpreter(code):
tape = [0 for x in range(30000)]
ptr = 0
x = 0
while x < len(code):
if code[x] == ">": ptr += 1
elif code[x] == "<": ptr -= 1
elif code[x] == "+": tape[ptr] += 1
elif code[x] == "-": tape[ptr] -= 1
elif code[x] == ".": print tape[ptr],
elif code[x] == ",": tape[ptr] = int(raw_input(""))
elif code[x] == "[":
if tape[ptr] == 0:
skip = 0
for y in range(x+1, len(code)):
if code[y] == "[":
skip += 1
if code[y] == "]":
if skip != 0:
skip -= 1
else:
x = y
break
elif code[x] == "]":
if tape[ptr] != 0:
skip = 0
for y in range(x-1)[::-1]:
if code[y] == "]":
skip += 1
if code[y] == "[":
if skip != 0:
skip -= 1
else:
x = y
break
x += 1