SóProvas


ID
1932385
Banca
FCC
Órgão
TRT - 14ª Região (RO e AC)
Ano
2016
Provas
Disciplina
Arquitetura de Computadores
Assuntos

A compilação é o processo de tradução de um programa escrito em uma linguagem fonte em um programa equivalente em linguagem de máquina. Nesse processo, o programa fonte normalmente passa pelas fases:

I. Identificação de sequências de caracteres de entrada e produção de uma sequência de elementos de saída, os tokens. Nesta fase, verifica-se se cada caractere do programa fonte pertence ao alfabeto da linguagem, identificando os tokens e desprezando comentários e espaços em branco. Os tokens constituem classes de símbolos, tais como palavras reservadas, delimitadores, identificadores etc.

II. Identificação de sequências de símbolos que constituem estruturas como expressões e comandos, através de uma varredura, ou parsing, da representação interna do programa fonte, produzindo uma estrutura em árvore, chamada árvore de derivação.

III. Verificação das estruturas quanto ao sentido, ou seja, se o programa não possui erros de significado. Por exemplo, verifica se um identificador declarado como variável é utilizado como tal, se existe compatibilidade entre operandos e operadores em expressões etc.

Os itens I, II e III referem-se, correta e respectivamente, às fases

Alternativas
Comentários
  • Análise léxica envolve a identificação de símbolos - tokens.

    Análise sintática tem a ver com a montagem das estruturas que constituem as expressões e comandos (lembrar do erro de sintaxe se faltar uma chave para o if ou for no C)

    Análise semântica, por sua vez, tem o objetivo de ligar as estruturas dando sentido ao programa.

    Estas estruturas de compilação têm relação estreita com a gramática da língua portuguesa. É uma dica para tentar matar este tipo de questão sem precisar decorar a funcionalidade de cada estrutura descrita no item.

    R.: alternativa A

  • Gabarito A

    Análise Léxica

    O analisador léxico transforma o programa de uma sequência de caracteres sem nenhuma estrutura para uma sequência de tokens.

    Normalmente o analisador léxico para uma linguagem é produzido mecanicamente a partir uma especificação léxica definida por expressões
    regulares.
    Um gerador de analisador léxico é um compilador para a sua linguagem de especificação.

     

    Análise Sintática

    Também é comum se gerar mecanicamente um analisador sintático a partir de uma especificação da sintaxe da linguagem, sua gramática Novamente, um programa gerador de analisadores sintáticos é apenas outro compilador.
    O resultado da análise sintática é uma árvore representando a estrutura do programa.

     

    Análise Semântica. 

    Verificação das estruturas quanto ao sentido, ou seja, se o programa não possui erros de significado. Por exemplo, verifica se um identificador declarado como variável é utilizado como tal, se existe compatibilidade entre operandos e operadores em expressões etc.

    Agora que sabemos a estrutura do programa, podemos tentar entender seu significado para detectar erros.
    • A análise semântica também procura eliminar ambiguidades em relação aos termos do programa.
    • Ex: int x = 0; while(x < 10) { int x = 20; print(x); }
    • Quando a linguagem permite, a análise semântica também detecta inconsistências entre os tipos das variáveis e seus usos.
    • Ex: int x = 0; if(x < 5) x = “foo”;

     

     

     

    "Retroceder Nunca Render-se Jamais !"
    Força e Fé !
    Fortuna Audaces Sequitur !

     

  • Numa questão dessa, não é preciso nem ler os itens I , II e III, tem que ir direto nas alternativas e acertar. Caso contrário, você já está fora.

  • Égua do Chute Certeiro! kkkkkkkkkkkkkkkkk