Usina BRAdvPL Guia
Entrar
← Todos os tópicos
DIRETIVAPublicado

#command e #translate

#command <regra> => <resultado> · #translate <regra> => <resultado>

Cria regras de transformação sintática aplicadas pelo pré-processador.

Pré-processadorTradução sintáticaComandosArquivos .ch
01 · VISÃO GERAL

Visão geral

#command e #translate descrevem padrões de texto que o pré-processador converte para sintaxe AdvPL. #command é destinado a comandos reconhecidos a partir do início da instrução; #translate permite substituições em outros pontos. São recursos avançados, comuns em arquivos .ch e na implementação de comandos xBase.

02 · SINTAXE

Sintaxe

#command <regra> => <resultado> · #translate <regra> => <resultado>
03 · EXEMPLO PRÁTICO

Comando didático simples

#command EXIBIR_ALERTA <cMensagem> => ;
    MsgStop(<cMensagem>, "Aviso do sistema")

User Function ExCommand()
    EXIBIR_ALERTA "Saldo insuficiente"
Return
Resultado esperado

Antes da compilação, a instrução é transformada na chamada MsgStop().

04 · EXEMPLO PRÁTICO

Tradução localizada

#translate VERDADEIRO => .T.
#translate FALSO      => .F.

User Function ExTranslate()
    Local lValido := VERDADEIRO

    If lValido == VERDADEIRO
        ConOut("Valor válido")
    EndIf
Return
Resultado esperado

Os identificadores são convertidos nos valores lógicos antes da compilação. Para projetos reais, avalie se o ganho compensa a sintaxe não convencional.

BOAS PRÁTICAS
  • Prefira manter regras compartilhadas em um arquivo .ch documentado.
  • Use nomes que não colidam com comandos, funções e definições existentes.
  • AAdd() é uma função da biblioteca AdvPL; não é criada por #command.
ARMADILHAS COMUNS
  • Criar uma linguagem particular dentro do AdvPL dificulta busca, depuração e manutenção por outras equipes.
  • Uma regra ampla de #translate pode alterar texto em locais inesperados.
  • Valide cuidadosamente marcadores, opcionais, repetições e precedência da expansão.

Conteúdos relacionados

REFERÊNCIAS
  1. TOTVS. #define. TDN. Última alteração em 22 mar. 2019.
  2. TOTVS. Diretivas para o compilador. TDN.
  3. TOTVS. #ifdef. TDN.
  4. TOTVS. #ifndef. TDN.
  5. TOTVS. #include. TDN.
  6. TOTVS. #undef. TDN.
Situação
Publicado
Página criada em
Última revisão em
Idioma original
Português
Revisão
Usina.BR