Um compilador é um programa de software que traduz, de forma organizada e eficiente, código-fonte escrito em uma linguagem de alto nível para código de máquina, bytecode ou outra forma intermediária que possa ser executada por um computador1.
Diferentemente de um interpretador, que lê e executa o código linha a linha, o compilador processa todo o programa antes da execução, produzindo um artefato (executável ou bytecode) que pode ser executado repetidamente sem nova tradução2.
O processo de compilação é dividido em três grandes etapas: Front End, Middle End e Back End. Cada etapa corresponde a um conjunto de fases com funções específicas na conversão do programa3.
| Etapa | Principais Fases | Resultado |
|---|---|---|
| Front End | Análise léxica; Análise sintática; Análise semânticaGeração de IR | Verificação de erros e IR não otimizada |
| Middle End | Otimização de código intermediário | IR otimizada |
| Back End | Geração de código alvo (assembly ou máquina)Otimizador de baixo nível | Código executável |
Diagrama do processo de compilação mostrando as etapas desde o código fonte até o código de máquina
Um compilador possui as seguintes características principais24:
Exemplos de linguagens compiladas: C, C++, Rust, Go, Java (para bytecode)25
Um interpretador apresenta características diferentes24: