+ set_binact -> set_msgsrv
+ GET_TEXT_REPRESENTATION -> BIN_GET_TEXT_REPRESENTATION
+ CREATE_DATA -> BIN_CREATE_DATA
+ CLEAR_DATA -> BIN_CLEAR_DATA
+ CLONE -> COPY
- INVOKE -> ACTIVATE_AS_ORIGIN
- ACTIVATE -> ACTIVATE_AS_COPY
- classe com relatorio de execucao
  + resolver erros de compilacao da classe
  + remover class_error
  + atualizar history (ver o .h)
  + incluir referencias nos componentes
  + fazer class_script, lao.cc, e demais usarem os flags
  + testar class_char e class_string, pois foram alterados
  + testar com um exemplo
  - atualizar componente explicito exit
- class_char -> class_symbol: possui classes de caracteres, uma tabela de simbolos-id customizavel.
- parser com organizadores dinamicos
  implementar uma lista de componentes organizadores em class_translater e
  ativa-los coordenadamente conforme vai lendo entrada.
  + desmembrar lao em sbase e lao
    + alterar headers
    + alterar includes
    + alterar makefiles
  + script.cc somente cuida da interpretacao
    (separar em arquivos codigo para tempo de interpretacao e
     para tempo de "parsing")
  + sexec
  + trans
  + criar orgs para cada componente de lao:
    + pstring
    + pchar
    + plist (cada componente de lista tera uma classe em separado:
     class_colist_immediate,...)
  + usar l_sysmsg BIN_RECOGNIZE... no lugar de numeros nas respostas dos organizadores para trans.cc
  + alterar lao.cc, nos exemplos, e ligacao entre tradutor e executor
  - ver bug: plist
  - contador de linhas e colunas do arquivo fonte a ser traduzido
    deve atualizar membros de symbol_info
  - coordenar declaracao de estruturas recursivamente
  - bug: maquinas de estados soh funcionam se os tokens estiverem separados por caracteres de classes especificas e exclusivas para separar.
    exemplo: ( a ) certo, mas (a) ou ('a' "wee") errado
- arrumar heranca em C++: public->private, protected
? todas as classes basicas sao substituiveis: as dos componentes implicitos,
  do ambiente e do parser. O usuario escolhe no inicio qual deve ser usada,
  alocando-a. Quando o interpretador necessitar de uma instancia, ele
  pede um clone de uma classe jah instanciada.
- componente explicito: empilha os valores anteriores atribuidos,
  funciona como uma varivel com "memria" do passado. Seus valores
  podem ser acessados por uma mensagem especfica.
- componente explicito ("local") para controle de escopo
- componente explicito: componente que declara outros componentes em lao
- componente explicito: maquina de estados finitos
- componente explicito: se um certo flag do componente eh alterado
  entao todos os componentes retornarao um mesmo componente (que poderia
  indicar que um certo aspecto do script estah "desabilitado" ou errado).
- componente explicito: desfaz o que foi feito (executando um codigo
  customizavel) a medida que a execucao avanca. Util para desalocar
  componentes previamente alocados no caso de haver uma sucessao de
  inicializacoes (testes na alocacao sobre falta de memoria, e desalocacao
  da memoria previamente alocada). Seria um coactivate_stack.
- desalocar valores do ambiente (env.terminate() nao desaloca)
  tambem desalocar strings usados como keys em class_mapstr, para
  desalocar nomes do ambiente?
? implementar uma classe que trata dos parametros passados aos componentes,
  define o id de um dado parametro recebendo um array de numeros (ID) e
  strings.
  Essa classe representaria os parametros de ativacao. Teria um
  DATAPT que iria referenciar um class_component ou outro dado qualquer.
- fazer uma funcao em class_component que,
  se chamada, preenche uma lista com os componentes retornados pela ativacao
  de todos os parametros - para facilitar.
  Os componentes podem querer usar INVOKE
  no lugar de activate-as-parameter (eh o caso do execpa).
- organizar/dividir em funcoes o tratamento dos componentes retornados pelos
  componentes activados com activate-as-parameter:
  uma funcao faz "parsing", class_mapstr para relacionar string a uma operacao
  outra funcao executa a operacao (chamada de BINARY_ACTIVATE?)
? implementar componente "reference" (inclusao de strings arbitrarios na name_table)
? fazer prog.cc nao ser um componente (tranformar activate_program numa classe)
? lista do programa como um componente e nao instancia direta de class_colist
- atualizar reformata e faz_formatacao, manter m_..., colocar em 3dfc/tools
- ver bugs.txt
- implementar modo "lao-3dfc" no Emacs (cria automaticamente um componente)
- nome do arquivo fonte eh definito pela linha de comando
- permitir declaracao de caracteres especiais
- revisar codigo: locais com "REVIEW" ou "dbug"
- usar biblioteca readline para implementar prompt

Dvidas de ingls:
- se no foi encontrado
  if was not found
- apenas o ltimo inserido  visvel
  only the last inserted  visible

+ class_mapdw
     + testar
+ componente explicito: exit  
    + .cc
    + .h
    + alteracoes nos makefiles
    + instanciacao no lao.cc
+ costring deve chamar activate-as-parameter dos componentes parametros e
  analisar os componentes retornados
+ remover class_program, ou reduzir ao maximo
+ criar externamente name_table
+ implementar os tipos de ativacao como delimitadores de listas: ();{};[];<>.
  + implementar em class_colist a selecao da acao, conforme o flag
  + testar
+ BUG:  (a = b) ((a) = '3') ("(a )") gera segfault devido ao "(a )"?
  o segfault era devido a busca de chaves por class_list::make_btree_search
  que estivessem antes das chaves existentes;havendo: m,n buscar a causaria GPF
+ criar dirs: examples/lao examples/bin
+ esquema de referenciacao para strings no ambiente: (a) != (a $)
+ class_costring -> reconhece operando $, fornecido, e executa acao
+ passar analise dos parametros de ativacao (identificacao dos ids) para comp.*
+ class_enviroment -> derivada de class_mapstr, mas gera um nome
  que representa a lista dos parametros (proceduralmente), mas que
        demais componentes nao tenham acesso posterior aos parametros
+ trocar nomes:
   name_table -> env (de enviroment)
   comp -> seft  (nas FA)
   destroy -> terminate
   DESTROY_DATA -> CLEAN_DATA
+ ativar componente da cabeca (em colist) passando demais elementos como
  parametro.
+ implementar name_table
+ substituir as implementacoes de clone_comp por chamadas para build_component (em costring e cochar)
+ por m_... nas vars membro
+ implementar componente string
+ implementar passagem de 1 parametro do local de ativacao para componente
+ implementar GET_TEXT_REPRESENTATION
+ implementar ativacao apenas do primeiro componente da lista
+ controle de erros mais generico
+ componente explicito exit deve alterar o estado de interpretacao

legenda:
- -> falta fazer
? -> em duvida quanto a fazer
+ -> feito
