code: def p_array_type(self, p):
          '''array_type : dtype
                  | array_type LARRAY array_indices RARRAY'''
          if len(p) == 2:
              p[0] = p[1][0],
          elif len(p) == 5 and p[4] == ']':
              def args(t):
                  return t.__args__ if isinstance(t, NDArray) else (t,)
              p[0] = tuple(NDArray[args(t) + p[3]] for t in p[1]f p_array_type(self, p):
          '''array_type : dtype
                  | array_type LARRAY array_indices RARRAY'''
          if len(p) == 2:
              p[0] = p[1][0],
          elif len(p) == 5 and p[4] == ']':
              def args(t):
                  return t.__args__ if isinstance(t, NDArray) else (t,)
              p[0] = tuple(NDArray[args(t) + p[3]] for t in p[1])
docs: array_type : dtype
                  | array_type LARRAY array_indices RARRAY