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