@startuml
!define RESULT <font color="blue">result</font>
!define UNPARSED_RESULT <font color="green">unparsed_result</font>

start
:Получаем данные, обработанные\nTextFSM со списком правил ACL <font color="red">acl_entries</font>;
:Создаем два результирующих массива:
- RESULT для хранения хороших результатов
- UNPARSED_RESULT для хранения необработанных;
:Начинаем итерацию по <font color="red">acl_entries</font>;
repeat
    :Берем следующий элемент из <font color="red">acl_entries</font> - <font color="purple">acl_entry</font>;
    :Проверяем его содержание и в зависимости от\nнего обрабатываем соответственно;
    if (<font color="purple">acl_entry</font> = ACL header)
        :Пропускам элемент;
    elseif (<font color="purple">acl_entry</font> = unparsed ACE)
        :Записываем в список UNPARSED_RESULT;
    elseif (<font color="purple">acl_entry</font> = ACE)
        :Обрабатываем правило;
            note
            _parse_remark_acl_entry()
            end note
        :Добавляем обработанный результат в <font color="blue">results</font>;
    elseif (<font color="purple">acl_entry</font> = Remark)
        :Обрабатываем согласно правилам\nработы c Remark;
            note
            _parse_ace_acl_entry()
            end note
        :Добавляем обработанный результат в <font color="blue">results</font>;
    endif
repeat while (В <font color="red">acl_entries</font> есть еще элементы?)
:Возвращаем RESULT, UNPARSED_RESULT;
stop
@enduml
