Guest User

Untitled

a guest
Jul 16th, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.92 KB | None | 0 0
  1. def compile(tokens):
  2. d = {'+':'PLUS', '.':'PRINT'}
  3. code_list = []
  4. if_stack = []
  5. for token in tokens:
  6. if is_int(token):
  7. codes = ('PUSH', int(token))
  8. elif token == 'IF':
  9. if_stack.append(len(code_list)+1)
  10. codes = ('IF', None)
  11. elif token == 'ELSE':
  12. code_list[if_stack.pop()] = len(code_list)+2
  13. if_stack.append(len(code_list)+1)
  14. codes = ('ELSE', None)
  15. elif token == 'THEN':
  16. code_list[if_stack.pop()] = len(code_list) + 1
  17. codes = ('THEN',)
  18. else:
  19. codes = (d[token], )
  20. code_list.extend(codes)
  21. code_list.append('END')
  22. return code_list
  23.  
  24. def is_int(s):
  25. try:
  26. int(s)
  27. except ValueError:
  28. return False
  29. return True
  30.  
  31. if __name__ == '__main__':
  32. tokens = ['3', 'IF', '4', '5', '+', '.', 'ELSE', '1', '2', '+', '.', 'THEN']
  33. print(compile(tokens))
Add Comment
Please, Sign In to add comment