# macr2lst

преобразование функции в список

## Последовательность вызова

    [txt]=macr2lst(function_name)

## Описание

Этот примитив преобразует компилированную функцию Scilab с именем `function_name` в список, который кодирует внутреннее представление функции (обратная бесскобочная запись).

Первый элемент списка является именем функции, второй и третий являются, соответственно, именами выходных переменных и входных переменных. Следующие элементы являются или записями основных операций или списками, содержащими иерархическими управляющими структурами, такими, как `if` , `for`, ...

Записи основных операций описываются вектором символьных строк, чей первый элемент представляет собой код операции.

коды операций | значение | параметры
"0" | игнорируемый код операции | ничего
"1" | более не используется |
"2" | ссылка на переменную или функцию | имя переменной, #rhs, #lhs
"3" | положить строку в стек | строка
"4" | положить пустую матрицу в стек | ничего
"5" | применить операцию | код операции, #rhs,#lhs
"6" | положить число в стек | число
"12" | команда pause | ничего
"13" | команда break | ничего
"14" | команда abort | ничего
"15" | конец метки строки | ничего
"17" | команда quit | ничего
"18" | поименованная переменная | имя переменной
"19" | создать рекурсивную структуру индексов create recursive index structure | длина пути, количество конечных индексов path length, number of final indices
"20" | вызов функции | имя функции, #rhs, #lhs
"23" | создать переменную из имени | имя переменной
"24" | положить переменную с типом 0 в стек | ничего
"25" | запись профиля | количество вызовов, затраченное время
"26" | положить вектор строк в стек | кол-во строк, кол-во столбцов, последовательность элементов
"27" | положить встроенную ссылку в стек | номер интерфейса, положение в интерфейсе, имя функции
"28" | команда continue | ничего
"29" | присвоение | #lhs, режим отображения, (имя переменной, #rhs)*
"30" | логическое выражение logical expression short circuit | type, jump size
"31" | комментарий | комментарий
"99" | команда return | ничего
> "100" | встроенный вызов builtin call (устарело) | 100*fun, #rhs, #lhs, fin

Функция fun2string может быть использована для генерации исходного кода.

## Примеры

    // ОТОБРАЖЕНИЕ
    function y=foo(x,flag)
      if flag then
        y=sin(x)
      else
        y=cos(x)
      end
    endfunction
    L=macr2lst(foo)
    fun2string(L)

## Смотрите также

- macrovar
- fun2string
- macr2tree
- tree2code