source: pyyaml/branches/working-on-emitter/lib/yaml/tokens.py @ 127

Revision 127, 3.1 KB checked in by xi, 9 years ago (diff)

Parser now provides style information. Allow empty plain scalars if a tag or anchor is given.

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