computermaster1248

Stack Up Interpreter

Jul 22nd, 2017
399
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.77 KB | None | 0 0
  1. STACKONE = []
  2. STACKTWO = []
  3. LOG = []
  4. A = 0
  5. B = 0
  6. DEPTH = 0
  7. CODE = 0
  8. LINE = 0
  9. TMPCMD = 0
  10. CMD = 0
  11. def Push(stack,number):
  12.     stack.append(number)
  13. def SPop(stack):
  14.     if len(stack) == 0:
  15.             stack.append(0)
  16.     return stack.pop()
  17. def Overflow(num):
  18.     while num > 255:
  19.         num -= 256
  20.     while num < 0:
  21.         num += 256
  22.     return num
  23. import linecache
  24. import os
  25. A = os.getcwd()
  26. print('Choose a Stack Up program file in: ' + A)
  27. CODE = input("File name: ")
  28. CODE = A+"/"+CODE
  29. print(CODE)
  30. while 1 == 1:
  31.     LINE = LINE + 1
  32.     TMPCMD = linecache.getline(CODE, LINE)
  33.     CMD = TMPCMD[0:4]
  34.     if DEPTH == 0:
  35.         if CMD == 'NEW':
  36.             Push(STACKONE,0)
  37.         if CMD == 'CLN':
  38.             A = SPop(STACKONE)
  39.             Push(STACKONE,A)
  40.             Push(STACKONE,A)
  41.         if CMD == 'DEL':
  42.             A = SPop(STACKONE)
  43.         if CMD == 'SWP':
  44.             A = SPop(STACKONE)
  45.             B = SPop(STACKONE)
  46.             Push(STACKONE,A)
  47.             Push(STACKONE,B)
  48.         if CMD == 'INC':
  49.             A = SPop(STACKONE)
  50.             A += 1
  51.             A=Overflow(A)
  52.             Push(STACKONE,A)
  53.         if CMD == 'DEC':
  54.             A = SPop(STACKONE)
  55.             A -= 1
  56.             A=Overflow(A)
  57.             Push(STACKONE,A)
  58.         if CMD == 'ADD':
  59.             A = SPop(STACKONE)
  60.             B = SPop(STACKONE)
  61.             A += B
  62.             A=Overflow(A)
  63.             Push(STACKONE,A)
  64.         if CMD == 'DIF':
  65.             A = SPop(STACKONE)
  66.             B = SPop(STACKONE)
  67.             A -= B
  68.             A=Overflow(A)
  69.             Push(STACKONE,A)
  70.         if CMD == 'PAS':
  71.             A = SPop(STACKONE)
  72.             Push(STACKTWO,A)
  73.         if CMD == 'PSB':
  74.             A = SPop(STACKTWO)
  75.             Push(STACKONE,A)
  76.         if CMD == 'INI':
  77.             A = input("\n# ")
  78.             A=Overflow(A)
  79.             Push(int(A))
  80.         if CMD == 'OUI':
  81.             A = SPop(STACKONE)
  82.             print(A,end="",flush=True)
  83.         if CMD == 'INA':
  84.             A = input("\n> ")
  85.             A=Overflow(A)
  86.             Push(ord(A[0]))
  87.         if CMD == 'OUA':
  88.             A = SPop(STACKONE)
  89.             print(chr(A),end="",flush=True)
  90.         if CMD == 'LOP':
  91.             A = STACKONE[-1]
  92.             if A == 0:
  93.                 DEPTH=DEPTH+1
  94.             else:
  95.                 Push(LOG,LINE)
  96.         if CMD == 'STP':
  97.             A = STACKONE[-1]
  98.             B = SPop(LOG)
  99.             if A != 0:
  100.                 Push(LOG,B)
  101.                 LINE = B
  102.         if CMD == 'END':
  103.             break
  104.     else:
  105.         if CMD == 'LOP':
  106.             DEPTH=DEPTH+1
  107.         if CMD == 'STP':
  108.             DEPTH=DEPTH-1
  109.         if CMD == 'END':
  110.             DEPTH=0
  111.             break
  112. print('End of program.')
  113. linecache.clearcache()
Advertisement
Add Comment
Please, Sign In to add comment