docs: def readline(self):
      " Reads a full line from the scanner and returns it. "
  
      start = end = self.index
      while end < len(self.text):
        if self.text[end] == '\n':
          end += 1
          break
        end += 1
      result = self.text[start:end]
      self.index = end
      if result.endswith('\n'):
        self.colno = 0
        self.lineno += 1
      else:
        self.colno += end - start
      return result