diff --git a/llvm_emulator/stepper.py b/llvm_emulator/stepper.py index 2f306e1..7a4453c 100644 --- a/llvm_emulator/stepper.py +++ b/llvm_emulator/stepper.py @@ -3,14 +3,16 @@ from enum import Enum from llvm_emulator import ll import sys +import random ############ # Messages # -PRINT_LEVEL_NONE = 0 -PRINT_LEVEL_ERR = 1 -PRINT_LEVEL_WARN = 2 -PRINT_LEVEL_INFO = 3 +PRINT_LEVEL_SILENT = -1 +PRINT_LEVEL_NONE = 0 +PRINT_LEVEL_ERROR = 1 +PRINT_LEVEL_WARN = 2 +PRINT_LEVEL_INFO = 3 PRINT_LEVEL = PRINT_LEVEL_NONE @@ -20,7 +22,7 @@ def eprint(*args, **kwargs): print(*args, file=sys.stderr, **kwargs) def err(msg): - if PRINT_LEVEL >= PRINT_LEVEL_ERR: + if PRINT_LEVEL >= PRINT_LEVEL_ERROR: eprint('ERROR: {}' .format(msg)) @@ -37,6 +39,13 @@ def info(*args, **kwargs): if PRINT_LEVEL >= PRINT_LEVEL_INFO: print(*args, **kwargs) +def tiger_print(msg): + if PRINT_LEVEL == PRINT_LEVEL_SILENT: + return + if not isinstance(msg, str): + msg = ''.join([chr(random.randint(0, 255)) for i in range(random.randint(1, 5))]) + sys.stdout.write(msg) + ########## # Stuff? # @@ -624,7 +633,7 @@ def emulate_builtin(name, arguments_v, ssa_env, heap): info('Printing string, heap[{}]:' .format(struct_begin)) printee = heap[struct_begin + 1] - info(printee) + tiger_print(printee) if not isinstance(printee, str): warn('What was printed, was not stored as a string in the heap') elif name in builtins: