Execute Brain****/Python
Execute Brain****/Python is an implementation of Brainf***.
Other implementations of Brainf***.
Execute Brain****/Python is part of RCBF. You may find other members of RCBF at Category:RCBF.
Implementation of a Brainfuck interpreter in Python.
<lang python>#!/usr/bin/python import sys import collections
def brainfuck (fd=None):
fd = fd or (open(sys.argv[1]) if sys.argv[1:] else sys.stdin) source = fd.read() loop_ptrs = {} loop_stack = [] for ptr, opcode in enumerate(source): if opcode == '[': loop_stack.append(ptr) if opcode == ']': if not loop_stack: source = source[:ptr] break sptr = loop_stack.pop() loop_ptrs[ptr], loop_ptrs[sptr] = sptr, ptr if loop_stack: raise SyntaxError ("unclosed loops at {}".format(loop_stack)) tape = collections.defaultdict(int) cell = 0 ptr = 0 while ptr < len(source): opcode = source[ptr] if opcode == '>': cell += 1 elif opcode == '<': cell -= 1 elif opcode == '+': tape[cell] += 1 elif opcode == '-': tape[cell] -= 1 elif opcode == ',': tape[cell] = ord(sys.stdin.read(1)) elif opcode == '.': sys.stdout.write(chr(tape[cell])) elif (opcode == '[' and tape[cell]) or \ (opcode == ']' and not tape[cell]): ptr = loop_ptrs[ptr] ptr += 1
if __name__ == "__main__": brainfuck()</lang>