Prévia do material em texto
1 4 / 4 pontos Em relação aos métodos de análise sintática, é correto afirmar que: LL(1) é um método de análise sintática ascendente. SLR(0) é mais restrito que LR(0). LL(1) analisa da direita para a esquerda. Resposta correta: LR(0) não consegue lidar com conflitos de ambiguidade. Results for question 2. 2 4/ 4 pontos Qual das opções melhor define a relação entre token, lexema e padrão? Token é uma string real, e lexema é uma abstração. Token é uma categoria, lexema é uma ocorrência, e padrão é a definição. Resposta correta: Token é o padrão, lexema é o token, e padrão é o lexema. Lexema é o padrão usado para gerar tokens. Results for question 3. 3 4 / 4 pontos Assinale a alternativa que representa corretamente a estrutura básica de um compilador. Entrada → Análise → Execução → Saída Resposta correta: Análise léxica → Análise sintática → Análise semântica → Geração de código Entrada → Otimização → Interpretação → Saída Compilação → Interpretação → Execução Results for question 4. 4 4 / 4 pontos Qual das alternativas abaixo representa corretamente a principal diferença entre um compilador e um interpretador? Resposta correta: O compilador traduz todo o código-fonte para código de máquina antes da execução, enquanto o interpretador executa o código linha por linha. O interpretador converte o código-fonte diretamente em linguagem de montagem. O interpretador otimiza o código para melhor desempenho, enquanto o compilador apenas traduz. O compilador executa o programa linha por linha, enquanto o interpretador traduz todo o código de uma vez. Results for question 5. 5 4 / 4 pontos Qual das opções a seguir lista corretamente as fases de um compilador, em ordem de execução? Resposta correta: Análise léxica → Análise sintática → Análise semântica → Otimização → Geração de código Análise léxica → Otimização → Análise sintática → Geração de código Geração de código → Análise semântica → Análise léxica → Otimização Análise sintática → Análise léxica → Geração de código → Análise semântica Results for question 6. 6 4 / 4 pontos Qual das alternativas representa uma causa comum de ambiguidade em gramáticas livres de contexto? A presença de derivação à direita Resposta correta: A presença de mais de uma árvore de derivação para a mesma entrada A ausência de símbolos terminais O uso de tokens múltiplos por linha Results for question 7. 7 4 / 4 pontos No processo de compilação, a parte de análise e a parte de síntese (front-end) têm funções distintas. A parte de análise é responsável por: Resposta correta: Extrair a estrutura e o significado do código-fonte. Interpretar o código de saída. Gerar o código final a partir da linguagem de máquina. Converter tokens em instruções de máquina. Results for question 8. 8 4 / 4 pontos Considere a gramática abaixo: E → E + E E → E * E E → id Com base nessa gramática, qual das afirmações a seguir é correta? A gramática é ambígua porque permite mais de uma árvore de derivação para uma mesma expressão. A gramática está livre de ambiguidade, pois define claramente a precedência dos operadores. A ambiguidade pode ser resolvida eliminando os símbolos terminais. A gramática é ambígua porque permite mais de uma derivação à esquerda. Results for question 9. 9 4 / 4 pontos Durante o processo de compilação, a tabela de símbolos é inicialmente gerada por qual fase do compilador? Análise semântica Geração de código Resposta correta: Análise léxica Análise sintática Results for question 10. 10 4 / 4 pontos O que é um compilador, no contexto de linguagens de programação? Um programa que converte código-fonte de uma linguagem para outra linguagem de alto nível. Resposta correta: Um programa que traduz o código-fonte para código de máquina executável. Um programa que converte linguagem de máquina em linguagem de alto nível. Um programa que edita código-fonte.