User:Feuermonster
Jump to navigation
Jump to search
About
I'm a big haskell fan.
Others
Stuff:
- Brainfuck-Compiler in C#
- Brainfuck-Interpreter in C#
- Hello++ Interpreter in Stlisp
- Brainfuck to Python written in Stlisp
PyBF
A simple non-wrapping BF Interpreter in Python written by me.
def bf_start():
input_var = raw_input()
bf_interpret(input_var)
def GetCell(cell):
return abs(cell)*2 - (cell < 0)
def bf_interpret(code):
bf_jump_right = []
bf_jumps_right = []
bf_jump_left = []
for counter,chr_ in enumerate(code):
if chr_ == '[':
bf_jump_right.append(counter)
bf_jumps_right.append(counter)
if chr_ == ']':
bf_jump_left.append(bf_jumps_right.pop())
#print bf_jump_right
#print bf_jump_left
index = 0
index_r = -1
index_l = -1
Memory = [0] * 1000001
cell = 0
while index < len(code):
if code[index] == '[':
index_r += 1
if Memory[GetCell(cell)] == 0:
index = bf_jump_left[index_r]
index_r -= 1
#print 'Goto ',index
continue
if code[index] == ']':
index_l += 1
if Memory[GetCell(cell)] != 0:
index = bf_jump_right[index_l]
index_l -= 1
#print 'Goto ',index
continue
if code[index] == '>':
cell += 1
if code[index] == '<':
cell -= 1
if code[index] == '+':
Memory[GetCell(cell)] += 1
if code[index] == '-':
Memory[GetCell(cell)] -= 1
if code[index] == '.':
print chr(int(Memory[GetCell(cell)]))
if code[index] == ',':
Memory[GetCell(cell)] = raw_input()
if code[index] == ':':
print Memory[GetCell(cell)]
index += 1
bf_start()