| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- class Token:
- """
- Class representing a token.
- kind: the kind of token, e.g. filename, number, other
- value: specific instance value, e.g. "/tmp/foo.c", or 5
- offset: byte offset from start of parse string
- """
- def __init__(self, kind, value=None, offset=None):
- self.offset = offset
- self.kind = kind
- self.value = value
- def __eq__(self, o):
- """ '==', but it's okay if offset is different"""
- if isinstance(o, Token):
- # Both are tokens: compare kind and value
- # It's okay if offsets are different
- return (self.kind == o.kind)
- else:
- return self.kind == o
- def __repr__(self):
- return str(self.kind)
- def __repr1__(self, indent, sib_num=''):
- return self.format(line_prefix=indent, sib_num=sib_num)
- def __str__(self):
- return self.format(line_prefix='')
- def format(self, line_prefix='', sib_num=None):
- if sib_num:
- sib_num = "%d." % sib_num
- else:
- sib_num = ''
- prefix = ('%s%s' % (line_prefix, sib_num))
- offset_opname = '%5s %-10s' % (self.offset, self.kind)
- if not self.value:
- return "%s%s" % (prefix, offset_opname)
- return "%s%s %s" % (prefix, offset_opname, self.value)
- def __hash__(self):
- return hash(self.kind)
- def __getitem__(self, i):
- raise IndexError
|