Um compilador é um software que realiza a tradução de um
programa escrito em uma linguagem de alto nível para uma
linguagem de máquina adequada para um processador.
Normalmente, o compilador não gera diretamente o código de
máquina, mas cria um programa em linguagem simbólica
(assembly), que é então convertido para código de máquina por
meio de montadores. Para executar essa tarefa, o compilador
passa por processos de análise léxica, sintática e semântica do
código-fonte para eventualmente gerar o código de máquina.
Considerando as informações acima apresentadas, avalie as
afirmações a seguir sobre o funcionamento de um compilador:
I. O analisador sintático é responsável por verificar se a
sequência de símbolos gerada pelo analisador léxico
forma um programa válido ou não.
II. Durante a análise léxica, o analisador identifica cada
símbolo com um significado para a linguagem, gerando a
mesma classificação para linguagens como Java, Pascal,
ou outras.
III. O analisador semântico utiliza o código-fonte para
identificar incoerências relacionadas ao significado das
construções presentes no código.
IV. A fase de otimização do código visa melhorar o código
intermediário para que o código de máquina final tenha
um desempenho mais eficiente durante a execução.
É correto o que se afirma em