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