From bc023731cf6b4bb6f64a56f9f66e7fcbcbcb3e4e Mon Sep 17 00:00:00 2001 From: Tom Herman Date: Mon, 9 Dec 2024 13:50:46 +0200 Subject: [PATCH] support keyboard interrupt in fjm_run --- flipjump/interpretter/fjm_run.py | 2 ++ flipjump/utils/classes.py | 5 ++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/flipjump/interpretter/fjm_run.py b/flipjump/interpretter/fjm_run.py index 45ee794..7ee6ede 100644 --- a/flipjump/interpretter/fjm_run.py +++ b/flipjump/interpretter/fjm_run.py @@ -196,6 +196,8 @@ def run( return TerminationStatistics(statistics, TerminationCause.RuntimeMemoryError) except FlipJumpException as fj_exception: raise fj_exception + except KeyboardInterrupt: + return TerminationStatistics(statistics, TerminationCause.KeyboardInterrupt) except Exception as unknown_exception: raise FlipJumpRuntimeException( "Unknown exception during running an .fjm file, please report this bug" diff --git a/flipjump/utils/classes.py b/flipjump/utils/classes.py index 262049a..f1d9b2e 100644 --- a/flipjump/utils/classes.py +++ b/flipjump/utils/classes.py @@ -19,9 +19,12 @@ class TerminationCause(IntEnum): UnalignedOp = 4 # Finished by trying to read/write something out of the defined memory (probably a bug in the fj-program) RuntimeMemoryError = 5 + # Finished by keyboard interrupt from the user + KeyboardInterrupt = 6 def __str__(self) -> str: - return ['looping', 'EOF', 'ip<2w', 'unaligned-word', 'unaligned-op', 'runtime-memory-error'][self.value] + return ['looping', 'EOF', 'ip<2w', 'unaligned-word', 'unaligned-op', + 'runtime-memory-error', "keyboard-interrupt"][self.value] class PrintTimer: