code: def do_token(
      self,
      token,
      int=int,
      float=float,
      ps_name=ps_name,
      ps_integer=ps_integer,
      ps_real=ps_real,
  ):
      try:
          num = int(token)
      except (ValueError, OverflowError):
          try:
              num = float(token)
          except (ValueError, OverflowError):
              if "#" in token:
                  hashpos = token.find("#")
                  try:
                      base = int(token[:hashpos])
                      num = int(token[hashpos + 1 :], base)
                  except (ValueError, OverflowError):
                      return ps_name(token)
                  else:
                      return ps_integer(num)
              else:
                  return ps_name(token)
          else:
              return ps_real(num)
      else:
          return ps_integer(num)
  
imports: from fontTools.misc.textTools import bytechr, byteord, bytesjoin, tobytes, tostr
  from fontTools.misc import eexec
  from .psOperators import PSOperators, ps_StandardEncoding, ps_array, ps_boolean, ps_dict, ps_integer, ps_literal, ps_mark, ps_name, ps_operator, ps_procedure, ps_procmark, ps_real, ps_string
  import re
  from collections.abc import Callable
  from string import whitespace
  import logging
label_desc: Use image node_id 8 for calling the PSInterpreter obj's underlying member method code with example usage: obj.do_token(token, int, float, ps_name, ps_integer, ps_real) and returns: ps_integer, ps_real, ps_name, ps_integer, ps_name