aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/tools/cython/Cython/Plex/Errors.py
blob: b375bb528b750c10933b088aaf5a5e77ee8c9e1a (plain) (blame)
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
#======================================================================= 
# 
#   Python Lexical Analyser 
# 
#   Exception classes 
# 
#======================================================================= 
 

class PlexError(Exception): 
    message = ""
 

class PlexTypeError(PlexError, TypeError): 
    pass
 

class PlexValueError(PlexError, ValueError): 
    pass
 

class InvalidRegex(PlexError): 
    pass
 

class InvalidToken(PlexError): 
    def __init__(self, token_number, message):
        PlexError.__init__(self, "Token number %d: %s" % (token_number, message))
 
 
class InvalidScanner(PlexError): 
    pass
 

class AmbiguousAction(PlexError): 
    message = "Two tokens with different actions can match the same string"
 
    def __init__(self):
        pass
 

class UnrecognizedInput(PlexError): 
    scanner = None
    position = None
    state_name = None
 
    def __init__(self, scanner, state_name):
        self.scanner = scanner
        self.position = scanner.get_position()
        self.state_name = state_name
 
    def __str__(self):
        return ("'%s', line %d, char %d: Token not recognised in state %r" % (
            self.position + (self.state_name,)))