#command e #translate
#command <regra> => <resultado> · #translate <regra> => <resultado>Cria regras de transformação sintática aplicadas pelo pré-processador.
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.
Sintaxe
#command <regra> => <resultado> · #translate <regra> => <resultado>Comando didático simples
#command EXIBIR_ALERTA <cMensagem> => ;
MsgStop(<cMensagem>, "Aviso do sistema")
User Function ExCommand()
EXIBIR_ALERTA "Saldo insuficiente"
ReturnAntes da compilação, a instrução é transformada na chamada MsgStop().
Tradução localizada
#translate VERDADEIRO => .T.
#translate FALSO => .F.
User Function ExTranslate()
Local lValido := VERDADEIRO
If lValido == VERDADEIRO
ConOut("Valor válido")
EndIf
ReturnOs 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.
- 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.
- 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.
