<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _token_of(self, input):
 """ Returns the token type of the input. :param input: Input whose type is to be determined :return TOKENS: Token type of the input """


        if isinstance(input, dict):

            # Intrinsic functions are always dicts
            if is_intrinsics(input):
                # Intrinsic functions are handled *exactly* like a primitive type because
                # they resolve to a primitive type when creating a stack with CloudFormation
                return self.TOKEN.PRIMITIVE
            else:
                return self.TOKEN.DICT

        elif isinstance(input, list):
            return self.TOKEN.LIST

        else:
            return self.TOKEN.PRIMITIVE