Pré-processador
Origem: Wikipédia, a enciclopédia livre.
Um pré-processador é um programa que recebe texto e efectua conversões léxicas nele. As conversões podem incluir substituição de macros, inclusão condicional e inclusão de outros ficheiros.
A linguagem de programação C possui um pré-processador que efectua as seguintes transformações:
- substitui trigrafos por equivalentes
- concatena ficheiros de código-fonte
- substitui comentários por espaços em branco
- reage a linhas iniciadas com um caracter de cardinal (#), efectuando substituição de macros, inclusão de ficheiros, inclusão condicional e outras operações
O uso de pré-processadores tem vindo a ser cada vez menos comum à medida que as linguagens recentes fornecem características mais abstractas em vez de características orientadas lexicalmente. É certo que o abuso do pré-processador pode dar origem a código caótico. A o desenhar uma linguagem de programação baseada em C, Bjarne Stroustrup introduziu características tais como funções em linha e modelos na linguagem C++ numa tentativa de tornar o pré-processador de C menos relevante. Há também linguagens recentes que tem pouca ou nenhuma funcionalidade de pré-processador, como por exemplo a linguagem Java, que não possui um pré-processador. O pré-processamento pode ser bastante incómodo ao implementar-se análise gramatical incremental ou análise léxica incremental, pois alterações às regras de pré-processamento podem afectar por completo o texto a ser pré-processado.
[editar] Exemplo de C
Um exemplo típico em C é:
#include <stdio.h> #define FOO 0 int main (void) { /* versão alterada do programa "olá mundo" */ printf("Olá, Mundo!\n"); return FOO; }
O pré-processador de C, ao analizar este código-fonte, efectua as seguintes alterações:
- substitui a linha
#include <stdio.h>
pelo ficheiro-cabeçalho com aquele nome, o que torna possivel a utilização da subrotina printf(). - substitui o texto comentado (texto entre simbolos
/*
e*/
por espaço em branco. - substitui o termo
FOO
na expressãoreturn FOO;
por0