# macr2lst

conversão de função para lista

## Seqüência de Chamamento

    [txt]=macr2lst(function-name)

## Descrição

Esta primitiva converte uma versão compilada do Scilab `function-name` em uma lista que codifica a representação interna da função (notação polonesa inversa).

A primeira entrada da lista é o nome da função, as segunda e terceira são, respectivamente, os vetores das variáveis de lado esquerdo e direito (lhs e rhs). As entradas seguintes são registros de operação básica ou listas que contém as estruturas de controle hierárquicas como if , for, ...

Registros de operação básica são descritos por um vetor de strings cujo primeiro elemento representa código do operador (op code).

op codes | significado | parâmetros
"0" | opcode ignorado | nenhum
"1" | não mais usado |
"2" | referência à função ou variável | nome da variável, #rhs, #lhs
"3" | coloca um string na pilha | um string
"4" | coloca uma matriz vazia na pilha | nenhum
"5" | aplica uma operação | código de operação, #rhs,#lhs
"6" | coloca um número na pilha | o número
"12" | comando pause | nenhum
"13" | comando break | nenhum
"14" | comando abort | nenhum
"15" | marca de fim da linha | nenhum
"17" | comando quit | nenhum
"18" | variável nomeada | nome da variável
"19" | cria estrutura de índice recursiva | comprimento do endereço, número de índices finais
"20" | chamada a função | nome da função, #rhs, #lhs
"23" | cria variável a partir do nome | nome da variável
"24" | coloca uma variável de tipo 0 na pilha | nenhum
"25" | registro de perfil | número da chamada, gasto de tempo
"26" | coloca um vetor de strings na pilha | #linhas, #colunas, seqüência de elementos
"27" | coloca uma referência a um builtin na pilha | número da interface, posição da interface, nome da função
"28" | comando continue | nenhum
"29" | atribuição | #lhs, modo de exibição, (nome da variável, #rhs)*
"30" | curto circuito de expressão lógica | tipo, tamanho do salto (jump)
"31" | comentário | o comentário
"99" | comando return | nenhum
> "100" | chamada a um builtin (obsoleto) | 100*fun, #rhs, #lhs, fin

A função fun2string pode ser usada para se gerar o código inicial

## Exemplos

    //EXIBIÇÃO
    function y=foo(x,flag)
      if flag then
        y=sin(x)
      else
        y=cos(x)
      end
    endfunction
    L=macr2lst(foo)
    fun2string(L)

## Ver Também

- macrovar
- fun2string
- macr2tree
- tree2code