Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def interpret(code):
- memory = [0]*1000
- loopstack = []
- mpointer, cpointer = 0,0
- while cpointer < len(code):
- char = code[cpointer]
- if char == '+':
- memory[mpointer]+=1
- if memory[mpointer] == 256:
- memory[mpointer] = 0
- elif char == '-':
- memory[mpointer]-=1
- if memory[mpointer] == -1:
- memory[mpointer] = 255
- elif char == '<':
- mpointer-=1
- elif char == '>':
- mpointer+=1
- elif char == '.':
- sys.stdout.write(chr(memory[mpointer]))
- elif char == '[':
- startpos = cpointer + 1
- try:
- if memory[mpointer] != 0:
- loopstack.append(cpointer)
- else: # skip loop
- counter = 1
- while counter > 0:
- cpointer+=1
- char = code[cpointer]
- if char == '[':
- counter+=1
- elif char == ']':
- counter-=1
- except IndexError:
- print("Unmatched [ at pos " + str(startpos))
- return
- elif char == ']':
- try:
- if memory[mpointer] != 0:
- cpointer = loopstack[-1]
- else:
- loopstack.pop()
- except IndexError:
- print("Unmatched ] at pos " + str(cpointer + 1))
- return
- cpointer+=1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement