1a5f9918aSopenharmony_ci
2a5f9918aSopenharmony_ciclass Token(object):
3a5f9918aSopenharmony_ci    def __init__(self, start_mark, end_mark):
4a5f9918aSopenharmony_ci        self.start_mark = start_mark
5a5f9918aSopenharmony_ci        self.end_mark = end_mark
6a5f9918aSopenharmony_ci    def __repr__(self):
7a5f9918aSopenharmony_ci        attributes = [key for key in self.__dict__
8a5f9918aSopenharmony_ci                if not key.endswith('_mark')]
9a5f9918aSopenharmony_ci        attributes.sort()
10a5f9918aSopenharmony_ci        arguments = ', '.join(['%s=%r' % (key, getattr(self, key))
11a5f9918aSopenharmony_ci                for key in attributes])
12a5f9918aSopenharmony_ci        return '%s(%s)' % (self.__class__.__name__, arguments)
13a5f9918aSopenharmony_ci
14a5f9918aSopenharmony_ci#class BOMToken(Token):
15a5f9918aSopenharmony_ci#    id = '<byte order mark>'
16a5f9918aSopenharmony_ci
17a5f9918aSopenharmony_ciclass DirectiveToken(Token):
18a5f9918aSopenharmony_ci    id = '<directive>'
19a5f9918aSopenharmony_ci    def __init__(self, name, value, start_mark, end_mark):
20a5f9918aSopenharmony_ci        self.name = name
21a5f9918aSopenharmony_ci        self.value = value
22a5f9918aSopenharmony_ci        self.start_mark = start_mark
23a5f9918aSopenharmony_ci        self.end_mark = end_mark
24a5f9918aSopenharmony_ci
25a5f9918aSopenharmony_ciclass DocumentStartToken(Token):
26a5f9918aSopenharmony_ci    id = '<document start>'
27a5f9918aSopenharmony_ci
28a5f9918aSopenharmony_ciclass DocumentEndToken(Token):
29a5f9918aSopenharmony_ci    id = '<document end>'
30a5f9918aSopenharmony_ci
31a5f9918aSopenharmony_ciclass StreamStartToken(Token):
32a5f9918aSopenharmony_ci    id = '<stream start>'
33a5f9918aSopenharmony_ci    def __init__(self, start_mark=None, end_mark=None,
34a5f9918aSopenharmony_ci            encoding=None):
35a5f9918aSopenharmony_ci        self.start_mark = start_mark
36a5f9918aSopenharmony_ci        self.end_mark = end_mark
37a5f9918aSopenharmony_ci        self.encoding = encoding
38a5f9918aSopenharmony_ci
39a5f9918aSopenharmony_ciclass StreamEndToken(Token):
40a5f9918aSopenharmony_ci    id = '<stream end>'
41a5f9918aSopenharmony_ci
42a5f9918aSopenharmony_ciclass BlockSequenceStartToken(Token):
43a5f9918aSopenharmony_ci    id = '<block sequence start>'
44a5f9918aSopenharmony_ci
45a5f9918aSopenharmony_ciclass BlockMappingStartToken(Token):
46a5f9918aSopenharmony_ci    id = '<block mapping start>'
47a5f9918aSopenharmony_ci
48a5f9918aSopenharmony_ciclass BlockEndToken(Token):
49a5f9918aSopenharmony_ci    id = '<block end>'
50a5f9918aSopenharmony_ci
51a5f9918aSopenharmony_ciclass FlowSequenceStartToken(Token):
52a5f9918aSopenharmony_ci    id = '['
53a5f9918aSopenharmony_ci
54a5f9918aSopenharmony_ciclass FlowMappingStartToken(Token):
55a5f9918aSopenharmony_ci    id = '{'
56a5f9918aSopenharmony_ci
57a5f9918aSopenharmony_ciclass FlowSequenceEndToken(Token):
58a5f9918aSopenharmony_ci    id = ']'
59a5f9918aSopenharmony_ci
60a5f9918aSopenharmony_ciclass FlowMappingEndToken(Token):
61a5f9918aSopenharmony_ci    id = '}'
62a5f9918aSopenharmony_ci
63a5f9918aSopenharmony_ciclass KeyToken(Token):
64a5f9918aSopenharmony_ci    id = '?'
65a5f9918aSopenharmony_ci
66a5f9918aSopenharmony_ciclass ValueToken(Token):
67a5f9918aSopenharmony_ci    id = ':'
68a5f9918aSopenharmony_ci
69a5f9918aSopenharmony_ciclass BlockEntryToken(Token):
70a5f9918aSopenharmony_ci    id = '-'
71a5f9918aSopenharmony_ci
72a5f9918aSopenharmony_ciclass FlowEntryToken(Token):
73a5f9918aSopenharmony_ci    id = ','
74a5f9918aSopenharmony_ci
75a5f9918aSopenharmony_ciclass AliasToken(Token):
76a5f9918aSopenharmony_ci    id = '<alias>'
77a5f9918aSopenharmony_ci    def __init__(self, value, start_mark, end_mark):
78a5f9918aSopenharmony_ci        self.value = value
79a5f9918aSopenharmony_ci        self.start_mark = start_mark
80a5f9918aSopenharmony_ci        self.end_mark = end_mark
81a5f9918aSopenharmony_ci
82a5f9918aSopenharmony_ciclass AnchorToken(Token):
83a5f9918aSopenharmony_ci    id = '<anchor>'
84a5f9918aSopenharmony_ci    def __init__(self, value, start_mark, end_mark):
85a5f9918aSopenharmony_ci        self.value = value
86a5f9918aSopenharmony_ci        self.start_mark = start_mark
87a5f9918aSopenharmony_ci        self.end_mark = end_mark
88a5f9918aSopenharmony_ci
89a5f9918aSopenharmony_ciclass TagToken(Token):
90a5f9918aSopenharmony_ci    id = '<tag>'
91a5f9918aSopenharmony_ci    def __init__(self, value, start_mark, end_mark):
92a5f9918aSopenharmony_ci        self.value = value
93a5f9918aSopenharmony_ci        self.start_mark = start_mark
94a5f9918aSopenharmony_ci        self.end_mark = end_mark
95a5f9918aSopenharmony_ci
96a5f9918aSopenharmony_ciclass ScalarToken(Token):
97a5f9918aSopenharmony_ci    id = '<scalar>'
98a5f9918aSopenharmony_ci    def __init__(self, value, plain, start_mark, end_mark, style=None):
99a5f9918aSopenharmony_ci        self.value = value
100a5f9918aSopenharmony_ci        self.plain = plain
101a5f9918aSopenharmony_ci        self.start_mark = start_mark
102a5f9918aSopenharmony_ci        self.end_mark = end_mark
103a5f9918aSopenharmony_ci        self.style = style
104a5f9918aSopenharmony_ci
105