content: 
  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
  
  