home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyc (Python 2.6)
-
- import re
-
- class EndOfText(RuntimeError):
- pass
-
-
- class Scanner(object):
-
- def __init__(self, text, flags = 0):
- self.data = text
- self.data_length = len(text)
- self.start_pos = 0
- self.pos = 0
- self.flags = flags
- self.last = None
- self.match = None
- self._re_cache = { }
-
-
- def eos(self):
- return self.pos >= self.data_length
-
- eos = property(eos, eos.__doc__)
-
- def check(self, pattern):
- if self.eos:
- raise EndOfText()
- self.eos
- if pattern not in self._re_cache:
- self._re_cache[pattern] = re.compile(pattern, self.flags)
-
- return self._re_cache[pattern].match(self.data, self.pos)
-
-
- def test(self, pattern):
- return self.check(pattern) is not None
-
-
- def scan(self, pattern):
- if self.eos:
- raise EndOfText()
- self.eos
- if pattern not in self._re_cache:
- self._re_cache[pattern] = re.compile(pattern, self.flags)
-
- self.last = self.match
- m = self._re_cache[pattern].match(self.data, self.pos)
- if m is None:
- return False
- self.start_pos = m.start()
- self.pos = m.end()
- self.match = m.group()
- return True
-
-
- def get_char(self):
- self.scan('.')
-
-
- def __repr__(self):
- return '<%s %d/%d>' % (self.__class__.__name__, self.pos, self.data_length)
-
-
-