Prévia do material em texto
Considere a seguinte especificação de tokens com sua descrição informal:
SE fosse submetida ao Analisador a seguinte expressão:
A3R = 35 + D;
Podemos afirmar que não será gerado um erro léxico apesar de A3R não ser um
identificador válido
Porque
Ao reconhecer os lexemas tanto A, como 3 como R são associados a tokens e o
analisador léxico não leva em conta a gramática
Como base nas afirmativas acima podemos concluir que:
As duas afirmativas são falsas
As duas são corretas e a segunda justifica a primeira
As duas são corretas e a segunda não justifica a primeira
A primeira é falsa e a segunda correta
A primeira é verdadeira e a segunda falsa
2. Ref.: 7807490 Pontos: 0,00 / 1,00
(Unoesc/2022 - Adaptada) Dado o autômato Finito abaixo, assinale a alternativa onde a
expressão regular (ER) o representa:
javascript:alert('C%C3%B3digo%20da%20quest%C3%A3o:%207807490.');
aab*c*ba*b
a*b(cb)*a
a*b*c*b*a*
a*b(bc)a*
aba(cb)
ENSINEME: ANÁLISE SEMÂNTICA
3. Ref.: 7808675 Pontos: 1,00 / 1,00
(FCC/2019) Um compilador está verificando se uma variável foi declarada somente uma
vez, se foi declarada antes do seu primeiro uso, se foi declarada e nunca foi usada e se
os tipos de dados em uma expressão aritmética são compatíveis. Essas verificações
são realizadas na fase de:
geração do código.
análise semântica.
análise léxica.
análise sintática.
otimização do código.
4. Ref.: 7808676 Pontos: 1,00 / 1,00
(ABIN/2018 - Adaptada) Com relação a linguagens de programação e compiladores,
avalie as assertivas a seguir:
javascript:alert('C%C3%B3digo%20da%20quest%C3%A3o:%207808675.');
javascript:alert('C%C3%B3digo%20da%20quest%C3%A3o:%207808676.');
I. A análise semântica, por ser a primeira etapa do processo de compilação, não verifica
a sintaxe do código-fonte.
II. A análise semântica é responsável apenas por identificar erros de lógica no código-
fonte. A falta de indentação em um código é verificada nessa etapa.
III. A etapa de análise semântica de um compilador tem como objetivo verificar os inter-
relacionamentos de um programa, validando tipologias, fluxos de controle e unicidade
na declaração de variáveis.
Marque a alternativa correta.
I e II, apenas.
I, apenas.
III, apenas.
II, apenas.
I, II e III.
ENSINEME: ANÁLISE SINTÁTICA
5. Ref.: 7807516 Pontos: 1,00 / 1,00
(IBADE/2018) Algumas linguagens exigem que o código fonte seja previamente
traduzido para linguagem de máquina antes de ser executado. Chama-se esta fase de:
Tradução.
Compilação.
Edição.
Interpretação.
Linkedição.
6. Ref.: 7807517 Pontos: 0,00 / 1,00
(FCC/2016) 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.
javascript:alert('C%C3%B3digo%20da%20quest%C3%A3o:%207807516.');
javascript:alert('C%C3%B3digo%20da%20quest%C3%A3o:%207807517.');
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:
Análise Léxica - Análise Sintática - Análise Semântica.
Classificação - Análise Léxica - Montagem.
Interpretação - Análise Sintática - Montagem.
Identificação Inicial - Análise Estrutural - Geração de Código.
Busca Binária - Montagem Léxica - Análise Semântica.
ENSINEME: GERAÇÃO DE CÓDIGO
7. Ref.: 3993004 Pontos: 1,00 / 1,00
A alocação adequada de memória para a execução do programa é fundamental para
que ele tenha um bom desempenho.
A memória utilizada pelo programa é dividida em várias parte sendo cada uma delas
mais adequada para um determinado uso.
As áreas em que um programa é normalmente divido são
I Área de Código Objeto
II Área de Dados Estática
III Heap
IV Pilha
Dentre estas a alocação estática é utilizada nas áreas:
I e III
III e IV
I e II
II e III
II e IV
8. Ref.: 3993121 Pontos: 1,00 / 1,00
O produto final da etapa de síntese do compilador é o código de montagem que será
submetido ao montador para gerar o módulo objeto.
javascript:alert('C%C3%B3digo%20da%20quest%C3%A3o:%203993004.');
javascript:alert('C%C3%B3digo%20da%20quest%C3%A3o:%203993121.');
Em seu trabalho o montador deve, entre outras coisas, determinar os endereços em
memória das instruções , dos rótulos e das variáveis.
Considere o trecho de código abaixo:
Sabendo-se que VALOR e RESULTADO tiveram seus endereços determinados nesta
ordem, na tabela de símbolos seus endereços seriam respectivamente
$1001 e $1000
$3000 e $3001
$1000 e $1001
$1000 e $3000
$3001 e $3000
ENSINEME: O COMPILADOR
9. Ref.: 3990558 Pontos: 1,00 / 1,00
Considere o extrato abaixo referente a especificação de um linguagem de
programação
::= inteiro | real | string
declaração_variavel::= [ {, } ];
::= inteiro | real | string
::= + |- | * | /
::= {L} + {L}|{D}
::= {D}+
javascript:alert('C%C3%B3digo%20da%20quest%C3%A3o:%203990558.');
::= {D} + [.{D}+] | .{D}
::= ´{C}´
L ::= A..Z a..z
D ::= 0..9
Se a seguinte declaração fosse escrita que tipo de erro seria gerado
Inteiro AB+, B, C
Sintático
Semântico
Execução
Léxico
Lógico
10. Ref.: 3990551 Pontos: 1,00 / 1,00
Atualmente o JAVA passou a utilizar uma segunda fase de compilação para
acelerar a execução. Está técnica é denominada:
JIT
JVM
Bytecode
Montagem
Linkedição
javascript:alert('C%C3%B3digo%20da%20quest%C3%A3o:%203990551.');