code: def parse_args(self):
      args = []
  
      # no args: `f()`
      if self.stream.peek("PARAN_CLOSE", ")"):
          return args
  
      while True:
          args.append(self.parse_number())
  
          if self.stream.pop_if("COMMA"):
              continue
  
          if self.stream.pop_if("PARAN_CLOSE", ")"):
              return args
  
          raise ValueError(f"Invalid token {self.stream.peak()}")
  
imports: import re
  from dataclasses import dataclass, InitVar, field
  from itertools import chain
  from typing import Any, Dict, List, Union, Optional, ClassVar
  import numpy
  from toolz import valfilter, valmap
label_desc: Use image node_id 2 for calling the Parser obj's underlying member method code with example usage: obj.parse_args() and returns: args, args