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()