SóProvas


ID
3305377
Banca
AOCP
Órgão
SUSIPE-PA
Ano
2018
Provas
Disciplina
Arquitetura de Computadores
Assuntos

O compilador é o programa responsável por traduzir o código-fonte de uma linguagem de programação de alto nível para uma linguagem de programação de baixo nível. Sobre o compilador e as etapas realizadas por esse programa, analise as assertivas e assinale a alternativa que aponta a(s) correta(s).

I. A etapa de análise léxica tem como função a identificação dos elementos componentes do programa, os também chamados símbolos léxicos.
II. A etapa de análise sintática visa determinar se o conjunto de símbolos léxicos encontrados pertencem à gramática da linguagem de programação.
III. A etapa de análise semântica tem como objetivo verificar se a execução do programa faz sentido para o usuário.
IV. A etapa de otimização de código realiza a síntese do código escrito pelo programador, visando a uma melhora de desempenho na execução do programa.

Alternativas
Comentários
  • Alternativa IV fala em síntese do código escritório pelo programador. a A otimização ocorre sobre código intermediário, não sobre código escrito pelo programador. alternativas corretas I e II
  • Questão totalmente sem pé e sem cabeça.

    I e II dizem respeito à análise léxica (separação dos tokens e criação da tabela de símbolos)

    III é responsabilidade da análise sintática (construção da árvore de execução)

    IV, de fato, está errado, pois a otimização é do código gerado na fase de síntese, e não pelo programador.

    Somente o item I está correto, segundo a bibliografia consagrada.

  • A II também tá errada.

    .

    Análise Léxica: "Um fluxo de caracteres constituindo um programa é lido da esquerda para a direita e agrupado em tokens, que são sequências de caracteres tendo um significado coletivo. Tokens são palavras válidas, conhecidos também como lexemas. Exemplos são: WHILE, x1, 23. Também são detectados nesta fase erros léxicos, exemplo: !epa não é um lexema válido em C. É considerada apenas a relação dos caracteres entre si para a formação do lexema. O relacionamento dos lexemas entre si fica a cargo da análise sintática."

    .

    http://professor.pucgoias.edu.br/SiteDocente/admin/arquivosUpload/17389/material/Texto_Parte1.pdf

  • GABARITO: E

    I. A etapa de análise léxica tem como função a identificação dos elementos componentes do programa, os também chamados símbolos léxicos. CORRETO

    II. A etapa de análise sintática visa determinar se o conjunto de símbolos léxicos encontrados pertencem à gramática da linguagem de programação. CORRETO

    III. A etapa de análise semântica tem como objetivo verificar se a execução do programa faz sentido para o usuário. Computador ( de acordo com a lógica computacional )

    IV. A etapa de otimização de código realiza a síntese do código escrito pelo programador, visando a uma melhora de desempenho na execução do programa. Como afirmado pelo Marcos Barreto, a otimização ocorre em cima do código intermediário.

  • e-

    Lexical analysis (also known as lexing or tokenization) breaks the source code text into a sequence of small pieces called lexical tokens. This phase can be divided into two stages: the scanning, which segments the input text into syntactic units called lexemes and assigns them a category; and the evaluating, which converts lexemes into a processed value. A token is a pair consisting of a token name and an optional token value. Common token categories may include identifiers, keywords, separators, operators, literals and comments, although the set of token categories varies in different programming languages.

    Syntax analysis (also known as parsing) involves parsing the token sequence to identify the syntactic structure of the program, building a parse tree, which replaces the linear sequence of tokens with a tree structure built according to the rules of a formal grammar which define the language's syntax.

    Semantic analysis adds semantic information to the parse tree and builds the symbol table. This phase performs semantic checks such as type checking (checking for type errors), or object binding (associating variable and function references with their definitions), or definite assignment (requiring all local variables to be initialized before use), rejecting incorrect programs or issuing warnings.

    https://en.wikipedia.org/wiki/Compiler