-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy patherror.py
57 lines (43 loc) · 1.61 KB
/
error.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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
class Error:
def __init__(self, name, detail, pos):
self.name = name
self.detail = detail
self.pos = pos
def raiseError(self):
print(f"'{self.name}': error ocurred in line {self.pos.ln+1}, col {self.pos.col}: {self.detail}")
#raise SystemExit()
class DividedByZeroError(Error):
def __init__(self, pos, name="DividedByZero", detail="You cannot divide a value by zero"):
self.name = name
self.detail = detail
self.pos = pos
class SyntaxError(Error):
def __init__(self, pos, detail, name="SyntaxError"):
self.name = name
self.detail = detail
self.pos = pos
class NotUniqueSymbol(Error):
def __init__(self, pos, detail="Identifier is already declared", name="SymbolNotUnique"):
self.name = name
self.detail = detail
self.pos = pos
class NotFoundSymbol(Error):
def __init__(self, pos, detail="You must declare this identifier before used it", name="NotFoundSymbol"):
self.name = name
self.detail = detail
self.pos = pos
class TooManyArguments(Error):
def __init__(self, pos, detail="Too much arguments specified", name="TooManyArguments"):
self.name = name
self.detail = detail
self.pos = pos
class TooFewArguments(Error):
def __init__(self, pos, detail="Too few arguments specified", name="TooFewArguments"):
self.name = name
self.detail = detail
self.pos = pos
class RunTimeError(Error):
def __init__(self, pos, detail, name="RunTimeError"):
self.name = name
self.detail = detail
self.pos = pos