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

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

 

class Token(object): 

def __init__(self, start_mark, end_mark): 

self.start_mark = start_mark 

self.end_mark = end_mark 

def __repr__(self): 

attributes = [key for key in self.__dict__ 

if not key.endswith('_mark')] 

attributes.sort() 

arguments = ', '.join(['%s=%r' % (key, getattr(self, key)) 

for key in attributes]) 

return '%s(%s)' % (self.__class__.__name__, arguments) 

 

#class BOMToken(Token): 

# id = '<byte order mark>' 

 

class DirectiveToken(Token): 

id = '<directive>' 

def __init__(self, name, value, start_mark, end_mark): 

self.name = name 

self.value = value 

self.start_mark = start_mark 

self.end_mark = end_mark 

 

class DocumentStartToken(Token): 

id = '<document start>' 

 

class DocumentEndToken(Token): 

id = '<document end>' 

 

class StreamStartToken(Token): 

id = '<stream start>' 

def __init__(self, start_mark=None, end_mark=None, 

encoding=None): 

self.start_mark = start_mark 

self.end_mark = end_mark 

self.encoding = encoding 

 

class StreamEndToken(Token): 

id = '<stream end>' 

 

class BlockSequenceStartToken(Token): 

id = '<block sequence start>' 

 

class BlockMappingStartToken(Token): 

id = '<block mapping start>' 

 

class BlockEndToken(Token): 

id = '<block end>' 

 

class FlowSequenceStartToken(Token): 

id = '[' 

 

class FlowMappingStartToken(Token): 

id = '{' 

 

class FlowSequenceEndToken(Token): 

id = ']' 

 

class FlowMappingEndToken(Token): 

id = '}' 

 

class KeyToken(Token): 

id = '?' 

 

class ValueToken(Token): 

id = ':' 

 

class BlockEntryToken(Token): 

id = '-' 

 

class FlowEntryToken(Token): 

id = ',' 

 

class AliasToken(Token): 

id = '<alias>' 

def __init__(self, value, start_mark, end_mark): 

self.value = value 

self.start_mark = start_mark 

self.end_mark = end_mark 

 

class AnchorToken(Token): 

id = '<anchor>' 

def __init__(self, value, start_mark, end_mark): 

self.value = value 

self.start_mark = start_mark 

self.end_mark = end_mark 

 

class TagToken(Token): 

id = '<tag>' 

def __init__(self, value, start_mark, end_mark): 

self.value = value 

self.start_mark = start_mark 

self.end_mark = end_mark 

 

class ScalarToken(Token): 

id = '<scalar>' 

def __init__(self, value, plain, start_mark, end_mark, style=None): 

self.value = value 

self.plain = plain 

self.start_mark = start_mark 

self.end_mark = end_mark 

self.style = style