Fases do compilador
Quais são as fases que constituem um processo de compilação? Explique-as resumidamente, informando as entradas e saídas de cada fase.
Análise léxica: É o processo de analisar a entrada de linhas de caracteres (como o código-fonte de um programa de computador) e produzir uma seqüência de símbolos chamado "símbolos léxicos", ou somente "símbolos" (tokens), que podem ser manipulados mais facilmente por um parser (leitor de saída).
Análise sintática: É o processo de analisar uma sequência de entrada (lida de um arquivo de computador ou do teclado, por exemplo) para determinar sua estrutura gramatical segundo uma determinada gramática formal. Usando a árvore Sintática.
Análise semântica: É a terceira fase da compilação onde se verificam os erros semânticos, (por exemplo, fazer a divisão de um número inteiro por outro numero float, na Linguagem C) no código fonte e coletam-se as informações necessárias para a próxima fase da compilação, que é a geração de código objeto.
Geração de código intermediário: É onde ocorre a transformação da árvore sintática em uma representação intermediária do código fonte. Gera o código intermediário.
Optimização de código: É a estratégia de examinar o código intermediário, produzido durante a fase de geração de código com objetivo de produzir, através de algumas técnicas, um código que execute com bastante eficiência. Gera o código intermediário otimizado.
Geração de código final: A fase de geração de código final é a última fase da compilação. Ela tem como função terminar o código fonte para deixar o executável em uma forma mais adequada.