Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def compile(tokens):
- d = {'+':'PLUS', '.':'PRINT'}
- code_list = []
- if_stack = []
- for token in tokens:
- if is_int(token):
- codes = ('PUSH', int(token))
- elif token == 'IF':
- if_stack.append(len(code_list)+1)
- codes = ('IF', None)
- elif token == 'ELSE':
- code_list[if_stack.pop()] = len(code_list)+2
- if_stack.append(len(code_list)+1)
- codes = ('ELSE', None)
- elif token == 'THEN':
- code_list[if_stack.pop()] = len(code_list) + 1
- codes = ('THEN',)
- else:
- codes = (d[token], )
- code_list.extend(codes)
- code_list.append('END')
- return code_list
- def is_int(s):
- try:
- int(s)
- except ValueError:
- return False
- return True
- if __name__ == '__main__':
- tokens = ['3', 'IF', '4', '5', '+', '.', 'ELSE', '1', '2', '+', '.', 'THEN']
- print(compile(tokens))
Add Comment
Please, Sign In to add comment