<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def parse_dimensions(text):
 """ Parses a set of dimensions into tuple of values representing the sizes in points. The dimensions that this method supports are exactly as for parse_dimension. It supports multiple dimensions, separated by whitespace, comma, semicolon, hyphen, or the letter x. The units may follow each dimension (in which case they can be different in each case) or only after the last one. Because no-units also means points, if you have some dimensions in the middle of the set with units and some without, then those without will be interpreted as points: i.e. the 2 in "1in, 2, 3mm" will be treated as 2 points, where as the 1 and 2 in "1, 2, 3mm" will be treated as millimeters. """

    components = _dimension_separator.split(text)
    if len(components) == 0:
        raise DimensionError("No dimensions found in string.")

    # Split each component into size and units
    pairs = []
    units = 0
    for component in components:
        value, unit = _split_dimension(component)
        pairs.append((value, unit))
        if unit is not None: units += 1

    # Work out what to do with empty units
    if units == 1 and pairs[-1][1]:
        # We need to infer the units
        empty_unit = _unit_lookup[pairs[-1][1]]
    else:
        empty_unit = 1

    # Compile and return the result
    result = []
    for value, unit in pairs:
        if unit: result.append(value * _unit_lookup[unit])
        else: result.append(value * empty_unit)
    return tuple(result)