docs: def eval(self, expr, lineno=0, show_errors=True):
          """Evaluate a single statement."""
          self.lineno = lineno
          self.error = []
          self.start_time = time.time()
          try:
              node = self.parse(expr)
          except:
              errmsg = exc_info()[1]
              if len(self.error) > 0:
                  errmsg = "\n".join(self.error[0].get_error())
              if not show_errors:
                  try:
                      exc = self.error[0].exc
                  except:
                      exc = RuntimeError
                  raise exc(errmsg)
              print(errmsg, file=self.err_writer)
              return
          try:
              return self.run(node, expr=expr, lineno=lineno)
          except:
              errmsg = exc_info()[1]
              if len(self.error) > 0:
                  errmsg = "\n".join(self.error[0].get_error())
              if not show_errors:
                  try:
                      exc = self.error[0].exc
                  except:
                      exc = RuntimeError
                  raise exc(errmsg)
              print(errmsg, file=self.err_writer)
              return