code: def get_token(self):
          "Get a token from the input stream (or from stack if it's nonempty)"
          if self.pushback:
              tok = self.pushback.popleft()
              return tok
          # No pushback.  Get a token.
          raw = self.read_token()
          # Handle inclusions
          if self.source is not None:
              while raw == self.source:
                  spec = self.sourcehook(self.read_token())
                  if spec:
                      (newfile, newstream) = spec
                      self.push_source(newstream, newfile)
                  raw = self.get_token()
          # Maybe we got EOF instead?
          while raw == self.eof:
              if not self.filestack:
                  return self.eof
              else:
                  self.pop_source()
                  raw = self.get_token()
          # Neither inclusion nor EOF
          return raf get_token(self):
          "Get a token from the input stream (or from stack if it's nonempty)"
          if self.pushback:
              tok = self.pushback.popleft()
              return tok
          # No pushback.  Get a token.
          raw = self.read_token()
          # Handle inclusions
          if self.source is not None:
              while raw == self.source:
                  spec = self.sourcehook(self.read_token())
                  if spec:
                      (newfile, newstream) = spec
                      self.push_source(newstream, newfile)
                  raw = self.get_token()
          # Maybe we got EOF instead?
          while raw == self.eof:
              if not self.filestack:
                  return self.eof
              else:
                  self.pop_source()
                  raw = self.get_token()
          # Neither inclusion nor EOF
          return raw
docs: Get a token from the input stream (or from stack if it's nonempty)