Brainf_ck in Python

リハビリ。
サンプルプログラムは拾ってきました。

import array
import re
import sys

def bf_exec(code, mem_size=1024):
    memory = array.array('B', [0] * mem_size)
    length = len(code)
    pc = 0
    pointer = 0
    while pc < length :
        inst = code[pc]
        if inst == '>':
            pointer += 1
        elif inst == '<':
            pointer -= 1
        elif inst == '+':
            memory[pointer] += 1
        elif inst == '-':
            memory[pointer] -= 1
        elif inst == '.':
            c = memory[pointer]
            sys.stdout.write("%c" % c)
        elif inst == ',':
            c = sys.stdin.read(1)
            memory[pointer] = ord(c)
        elif inst == '[':
            if memory[pointer] == 0:
                level = 1
                while level:
                    pc += 1
                    inst = code[pc]
                    if inst == '[':
                        level += 1
                    elif inst == ']':
                        level -= 1
        elif inst == ']':
            if not memory[pointer] == 0:
                level = 1
                while level:
                    pc -= 1
                    inst = code[pc]
                    if inst == '[':
                        level -= 1
                    elif inst == ']':
                        level += 1
                pc -= 1
        pc += 1


if __name__ == '__main__':
    helloworld = """
            +++++++++[>++++++++>+++++++++++>+++++<<<-]>.
            >++.+++++++..+++.>-.------------.<++++++++.
            --------.+++.------.--------.>+.
    """

    # Metacircular interpretor of Brainf*ck. '!' is used as execution tirgger.
    metacircular = """
            >>>+[[-]>>[-]++>+>+++++++[<++++>>++<-]++>>+>+>+++++[>++>++++++<<-]+>>>,<++[[>[
            ->>]<[>>]<<-]<[<]<+>>[>]>[<+>-[[<+>-]>]<[[[-]<]++<-[<+++++++++>[<->-]>>]>>]]<<
            ]<]<[[<]>[[>]>>[>>]+[<<]<[<]<+>>-]>[>]+[->>]<<<<[[<<]<[<]+<<[+>+<<-[>-->+<<-[>
            +<[>>+<<-]]]>[<+>-]<]++>>-->[>]>>[>>]]<<[>>+<[[<]<]>[[<<]<[<]+[-<+>>-[<<+>++>-
            [<->[<<+>>-]]]<[>+<-]>]>[>]>]>[>>]>>]<<[>>+>>+>>]<<[->>>>>>>>]<<[>.>>>>>>>]<<[
            >->>>>>]<<[>,>>>]<<[>+>]<<[+<<]<]
    """

    countdown = """
            ++++++++++++++++++++++++++++++++[>+>+<<-]
            >>+++++++++++++++++++++++++<<++++++++++
            [>>.-<.<-]
            >>-.<.>.<.>.<.
            >++++++++++++++++++++++.
            +++++++++++++++++++++++++++++++++++++++++++.-.---------.>++++++++++.
    """

    bf_exec(helloworld)
    bf_exec(countdown)
    bf_exec(metacircular)