Computação

Pré-processador em Ciência da Computação

Pontos principais

  • Um pré-processador transforma dados de entrada para servirem como entrada em outro programa, como um compilador.
  • Pré-processadores lexicais atuam diretamente no texto-fonte antes da análise sintática, realizando substituições e inclusões de arquivos.
  • Pré-processadores sintáticos, comuns na família Lisp, transformam árvores de sintaxe baseando-se em regras definidas pelo usuário.

Em ciência da computação, um pré-processador (ou pré-compilador) é um programa que processa seus dados de entrada para produzir uma saída que é utilizada como entrada em outro programa. A saída gerada é denominada forma pré-processada dos dados originais, sendo frequentemente empregada por etapas subsequentes, como compiladores.

O volume e o tipo de processamento executado dependem da natureza do pré-processador. Enquanto alguns realizam apenas substituições textuais simples e expansões de macros, outros possuem a complexidade de linguagens de programação completas.

Pré-processadores Lexicais

Os pré-processadores lexicais operam no nível mais básico, atuando diretamente sobre o texto-fonte antes de qualquer análise sintática. Eles realizam substituições simples de sequências de caracteres por outras, com base em regras definidas pelo usuário. Suas funções típicas incluem substituição de macros, inclusão textual de arquivos e compilação condicional.

O exemplo mais proeminente é o pré-processador da linguagem C, que interpreta linhas iniciadas pelo caractere '#' como diretivas. Outros exemplos incluem o processador de uso geral m4 e o GEMA.

Pré-processadores Sintáticos

Introduzidos pela família de linguagens Lisp, os pré-processadores sintáticos transformam árvores de sintaxe com base em conjuntos de regras definidas pelo usuário. Em alguns ambientes, essas regras são escritas na mesma linguagem do programa (reflexão em tempo de compilação).

Eles são empregados para customizar a sintaxe de uma linguagem, estender suas capacidades com novos primitivos ou incorporar linguagens específicas de domínio (DSLs) no interior de linguagens de propósito geral.

Perguntas frequentes

O que é um pré-processador?

É um programa que processa dados de entrada para gerar uma saída formatada que será utilizada como entrada por outro programa, como um compilador.

Qual é a diferença entre pré-processadores lexicais e sintáticos?

Pré-processadores lexicais operam diretamente no texto-fonte com substituições de tokens e macros, enquanto os sintáticos transformam árvores de sintaxe estruturadas.