def ct_af(announcement, tok):
    # <c>;af[,<des>]...[,<des>];<ty>[,<des>]
    # <c>
    # <data>     answer
    item = announcement.split(";")
    number_of_elements = int(item[2].split(",")[0])
    multi = commandrouter_misc_functions.length_of_typ(item[3].split(",")[0])
    v_linelength.command[tok].append("n")
    v_linelength.command[tok].append(v_command_length.commandtokenlength + commandrouter_misc_functions.length_of_int(number_of_elements))
    if multi[0] == "e":
        v_linelength.answer[tok].append("e")
        v_linelength.answer[tok].append(0)
        v_linelength.info[tok].append("e")
        v_linelength.info[tok].append(0)
    else:
        if multi[0] == "n":
            v_linelength.command[tok].append("m")
            v_linelength.command[tok].append(commandrouter_misc_functions.length_of_int(number_of_elements))
            v_linelength.command[tok].append(commandrouter_misc_functions.length_of_int(number_of_elements))
            v_linelength.command[tok].append(multi[1])
            v_linelength.command[tok].append(0)
            v_linelength.command[tok].append(0)
        else:
            v_linelength.command[tok].append("t")
            v_linelength.command[tok].append(commandrouter_misc_functions.length_of_int(number_of_elements))
            v_linelength.command[tok].append(commandrouter_misc_functions.length_of_int(number_of_elements))
            v_linelength.command[tok].append(multi[1])
            v_linelength.command[tok].append(0)
            v_linelength.command[tok].append(0)
    return
def ct_om(announcement, tok):
    # <c>;om[<,des>]...[,<des>]; <ty>[,<des>]... [,<des>];n_rows[,<des>]...[,<des>];[<n_cols[,<des>]...[,<des>]]...
    # <c><z><data>
    item = announcement.split(";")
    multi = commandrouter_misc_functions.length_of_typ(item[2].split(",")[0])
    if multi[0] != "e":
        i = 3
        positions = 1
        while i < len(item):
            item1 = item[i].split(",")
            positions *= int(item1[0])
            i += 1
        positionlength = commandrouter_misc_functions.length_of_int(positions)
        if multi[0] == "n":
            v_linelength.command[tok].append("n")
            v_linelength.command[tok].append(v_command_length.commandtokenlength + positionlength + multi[1])
        if multi[0] == "s":
            v_linelength.command[tok].append("s")
            v_linelength.command[tok].append(v_command_length.commandtokenlength + positionlength + multi[1])
            v_linelength.command[tok].append(positionlength)
            v_linelength.command[tok].append(multi[1])
    else:
        v_linelength.command[tok].append("e")
        v_linelength.command[tok].append(0)
    v_linelength.answer[tok].append("e")
    v_linelength.answer[tok].append(0)
    v_linelength.info[tok].append("e")
    v_linelength.info[tok].append(0)
    return
def ct_an(announcement, tok):
    # c>;an[<,des>]...[,<des>]; <ty>[,<des>]... [,<des>];n_rows[,<des>]...[,<des>];[<n_cols[,<des>]...[,<des>]]...
    # <z>
    # <data>     answer
    item = announcement.split(";")
    multi = commandrouter_misc_functions.length_of_typ(item[2].split(",")[0])
    # valid type found
    if multi[0] != "e":
        i = 3
        positions = 1
        while i < len(item):
            item1 = item[i].split(",")
            positions *= int(item1[0])
            i += 1
        # length for number of of elements and start
        positionlength = commandrouter_misc_functions.length_of_int(positions)
        v_linelength.command[tok].append("n")
        v_linelength.command[tok].append(v_command_length.commandtokenlength + 2 * positionlength)
        if multi[0] == "n":
            v_linelength.answer[tok].append("m")
            v_linelength.answer[tok].append(0)
            v_linelength.answer[tok].append(0)
            v_linelength.answer[tok].append(multi[1])
            v_linelength.answer[tok].append(0)
            v_linelength.answer[tok].append(0)
            v_linelength.answer[tok].append(0)
            v_linelength.info[tok].append("m")
            v_linelength.info[tok].append(2 * positionlength)
            v_linelength.info[tok].append(positionlength)
            v_linelength.info[tok].append(multi[1])
            v_linelength.info[tok].append(0)
            v_linelength.info[tok].append(0)
            v_linelength.info[tok].append(0)
        if multi[0] == "s":
            v_linelength.answer[tok].append("t")
            v_linelength.answer[tok].append(0)
            v_linelength.answer[tok].append(0)
            v_linelength.answer[tok].append(multi[1])
            v_linelength.answer[tok].append(0)
            v_linelength.answer[tok].append(0)
            v_linelength.info[tok].append("t")
            v_linelength.info[tok].append(2 * positionlength)
            v_linelength.info[tok].append(positionlength)
            v_linelength.info[tok].append(multi[1])
            v_linelength.info[tok].append(0)
            v_linelength.info[tok].append(0)
    else:
        v_linelength.answer[tok].append("e")
        v_linelength.answer[tok].append(0)
        v_linelength.command[tok].append("e")
        v_linelength.command[tok].append(0)
        v_linelength.info[tok].append("e")
        v_linelength.info[tok].append(0)
    return