-
Notifications
You must be signed in to change notification settings - Fork 0
/
errorMessages.py
43 lines (39 loc) · 1.65 KB
/
errorMessages.py
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
class TextXError(Exception):
def __init__(self, message, line=None, col=None,
err_type=None, filename=None):
super(TextXError, self).__init__(message.encode('utf-8'))
self.line = line
self.col = col
self.err_type = err_type
self.filename = filename
self.message = message
def __str__(self):
if self.line or self.col or self.filename:
# gcc style error format
return "{}:{}:{}: error: {}".format(
str(self.filename),
str(self.line),
str(self.col),
self.message
)
else:
return super(TextXError, self).__str__()
class TextXSemanticError(TextXError):
def __init__(self, message, line=None, col=None, err_type=None,
expected_obj_cls=None, filename=None):
super(TextXSemanticError, self).__init__(
message, line, col, err_type, filename)
# Expected object of class
self.expected_obj_cls = expected_obj_cls
class TextXSyntaxError(TextXError):
def __init__(self, message, line=None, col=None, err_type=None,
expected_rules=None, filename=None):
super(TextXSyntaxError, self).__init__(
message, line, col, err_type, filename)
# Possible rules on this position
self.expected_rules = expected_rules
class TextXRuntimeError(TextXError):
def __init__(self, message, line=None, col=None, err_type=None,
expected_obj_cls=None, filename=None):
super(TextXRuntimeError, self).__init__(
message, line, col, err_type, filename)