File size: 1,646 Bytes
e6b283b 2f664d2 e6b283b 2f664d2 3f6412b e6b283b 3f6412b e6b283b 3f6412b e6b283b 3f6412b e6b283b 3f6412b e6b283b 3f6412b e6b283b 3f6412b e6b283b 3f6412b e6b283b 3f6412b e6b283b 2f664d2 e6b283b 2f664d2 e6b283b 2f664d2 e6b283b 3f6412b e6b283b 2f664d2 3f6412b e6b283b 3f6412b e6b283b 3f6412b e6b283b 3f6412b e6b283b 3f6412b e6b283b 3f6412b e6b283b 3f6412b | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | # AUTO: Imports a module used by this file.
import re
# AUTO: Sets `_REDUNDANT_PREFIX`.
_REDUNDANT_PREFIX = re.compile(r'^(Runtime Error|Semantic Error|Type Mismatch|Syntax Error)\s*:?\s*', re.IGNORECASE)
# AUTO: Defines class `ReturnValue`.
class ReturnValue(Exception):
# AUTO: Defines function `__init__`.
def __init__(self, value):
# AUTO: Sets `self.value`.
self.value = value
# AUTO: Defines class `_CancelledError`.
class _CancelledError(Exception):
# AUTO: Does nothing for this required block.
pass
# AUTO: Defines class `InterpreterError`.
class InterpreterError(Exception):
# AUTO: Defines function `__init__`.
def __init__(self, message, line):
# AUTO: Calls `super`.
super().__init__(message)
# AUTO: Sets `clean`.
clean = _REDUNDANT_PREFIX.sub('', str(message)).strip()
# AUTO: Checks this condition.
if line is not None and str(line) != "":
# AUTO: Sets `self.message`.
self.message = f"RUNTIME error line {line}: {clean}"
# AUTO: Runs when previous condition did not pass.
else:
# AUTO: Sets `self.message`.
self.message = clean
# AUTO: Defines function `__str__`.
def __str__(self):
# AUTO: Returns this result to the caller.
return self.message
# AUTO: Defines class `InterpreterInputRequest`.
class InterpreterInputRequest(Exception):
# AUTO: Defines function `__init__`.
def __init__(self, prompt, line):
# AUTO: Sets `self.prompt`.
self.prompt = prompt
# AUTO: Sets `self.line`.
self.line = line
|