list : IPV4
                | IPV6
                | DATETIME
                | TIMEDELTA
                | INTEGER
                | FLOAT
                | VARIABLE
                | CONSTANT
                | IPV4 COMMA list
                | IPV6 COMMA list
                | DATETIME COMMA list
                | TIMEDELTA COMMA list
                | INTEGER COMMA list
                | FLOAT COMMA list
                | VARIABLE COMMA list
                | CONSTANT COMMA list

def p_list(self, tok):
        """list : IPV4
                | IPV6
                | DATETIME
                | TIMEDELTA
                | INTEGER
                | FLOAT
                | VARIABLE
                | CONSTANT
                | IPV4 COMMA list
                | IPV6 COMMA list
                | DATETIME COMMA list
                | TIMEDELTA COMMA list
                | INTEGER COMMA list
                | FLOAT COMMA list
                | VARIABLE COMMA list
                | CONSTANT COMMA list"""
        node = self._create_factor_rule(tok[1])
        if len(tok) == 2:
            tok[0] = ListRule([node])
        else:
            tok[0] = ListRule([node], tok[3])