Advertisement
Guest User

Untitled

a guest
May 23rd, 2017
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.59 KB | None | 0 0
  1. def interpret(code):
  2.     memory = [0]*1000
  3.     loopstack = []
  4.     mpointer, cpointer = 0,0
  5.     while cpointer < len(code):
  6.         char = code[cpointer]
  7.         if char == '+':
  8.             memory[mpointer]+=1
  9.             if memory[mpointer] == 256:
  10.                 memory[mpointer] = 0
  11.         elif char == '-':
  12.             memory[mpointer]-=1
  13.             if memory[mpointer] == -1:
  14.                 memory[mpointer] = 255
  15.         elif char == '<':
  16.             mpointer-=1
  17.         elif char == '>':
  18.             mpointer+=1  
  19.         elif char == '.':
  20.             sys.stdout.write(chr(memory[mpointer]))
  21.         elif char == '[':
  22.             startpos = cpointer + 1
  23.             try:    
  24.                 if memory[mpointer] != 0:
  25.                     loopstack.append(cpointer)
  26.                 else: # skip loop
  27.                     counter = 1
  28.                     while counter > 0:
  29.                         cpointer+=1
  30.                         char = code[cpointer]
  31.                         if char == '[':
  32.                             counter+=1
  33.                         elif char == ']':
  34.                             counter-=1
  35.             except IndexError:
  36.                 print("Unmatched [ at pos " + str(startpos))
  37.                 return
  38.         elif char == ']':
  39.             try:
  40.                 if memory[mpointer] != 0:
  41.                     cpointer = loopstack[-1]
  42.                 else:
  43.                     loopstack.pop()  
  44.             except IndexError:
  45.                 print("Unmatched ] at pos " + str(cpointer + 1))  
  46.                 return                
  47.         cpointer+=1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement