Logo Passei Direto
Buscar

Programação

Colégio Objetivo
Questão 6/10 - Compiladores
1. As linguagens de programação em geral pertencem a uma categoria de Linguagens baseadas em Gramáticas Livres de Contexto. Estas Gramáticas Livres de Contexto são a base para a construção de analisadores sintáticos. E são utilizadas para especificar as regras sintáticas de uma linguagem de programação. Talvez a parte mais importante deste processo seja a possibilidade de se representar este tipo de gramática por apenas quatro conjuntos de tal forma que uma determinada Gramática G qualquer, tal que: G = (N, T, P, S) Onde: • N – Conjunto finito de símbolos não terminais. • T – Conjunto finito de símbolos terminais. • P – Conjunto de regras de produção. • S – Símbolo inicial da gramática. Considerando estas informações marque qual das afirmacoes a seguir é falsa. Nota: 0.0Você não pontuou essa questão


A Símbolos terminais: Conjunto finito de símbolos básicos que formam as palavras da linguagem, são representadas pelo tokens reconhecidos pelo analisador léxico.
B Símbolos não terminais: Conjunto finito de símbolos que representam os símbolos utilizados para controle da gramática e que não farão parte dos tokens.
C Símbolo inicial: É a variável, um símbolo terminal, que representa o início da definição da gramática.
D Regras de produção: Representam um conjunto de regras sintáticas para a definição da linguagem, indicam como símbolos terminais e não terminais podem ser combinados. E Regras de produção: Representam um conjunto de regras sintáticas para a definição da linguagem, mas não indicam nenhuma forma de combinação entre os símbolos terminais e não terminais.
User badge image
Estudando com Questões

há 2 anos

Respostas

User badge image

Ed Verified user icon

há 2 anos

A alternativa falsa é a letra E. As regras de produção representam um conjunto de regras sintáticas para a definição da linguagem e indicam como os símbolos terminais e não terminais podem ser combinados.

Essa resposta te ajudou?

0
Dislike0
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar essa resposta. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Ainda com dúvidas?

Envie uma pergunta e tenha sua dúvida de estudo respondida!

Essa pergunta também está no material:

Mais perguntas desse material

Compiladores
Em busca da eficiência na execução dos programas, ao longo do tempo, o processo de compilação ficou complexo e sujeito a erros e a tempos muito longos. Uma forma de tornar o processo de compilação mais eficiente foi a divisão deste processo em módulos dedicados. Assim, temos um módulo apenas para fazer a análise sintática do texto e outro apenas para entender o conteúdo semântico e assim sucessivamente. Quanto ao analisador sintático é verdadeiro dizer que:
Marque a alternativa correta
Nota: 10.0

A O analisador sintático, apesar de fazer parte do processo de compilação, é totalmente dispensável e não altera o resultado final;

B A principal função do analisador sintático é enviar os tokens necessários ao funcionamento do analisador Léxico;

C O analisador sintático, para efetuar sua tarefa, organiza os tokens, enviados pelo analisador léxico em uma árvore;
Você assinalou essa alternativa (C)
Você acertou!
a resposta correta é a letra C e pode ser encontrada no primeiro capítulo do livro texto.

D A análise sintática só pode ser realizada depois que o seu código-fonte esteja convertido em linguagem de máquina;

E A maior parte de todas as linguagens formais, utilizadas para a programação de computadores dispensa o uso de analisadores sintáticos.


A O analisador sintático, apesar de fazer parte do processo de compilação, é totalmente dispensável e não altera o resultado final;
B A principal função do analisador sintático é enviar os tokens necessários ao funcionamento do analisador Léxico;
C O analisador sintático, para efetuar sua tarefa, organiza os tokens, enviados pelo analisador léxico em uma árvore;
D A análise sintática só pode ser realizada depois que o seu código-fonte esteja convertido em linguagem de máquina;
E A maior parte de todas as linguagens formais, utilizadas para a programação de computadores dispensa o uso de analisadores sintáticos.

Compiladores
Uma das principais características de uma linguagem formal é a existência de uma estrutura rígida e precisamente especificada. As linguagens formais são utilizadas na programação de computadores há várias décadas principalmente por que sua estrutura rígida torna o processo de compilação possível. Ainda relacionado as linguagens formais qual das afirmativas abaixo é verdadeira?
Nota: 10.0

A A língua portuguesa, graças a sua gramática estruturada é um exemplo de linguagem formal;

B As linguagens formais não podem ser definidas com o uso de máquinas de estados finitos;

C A linguagem de programação Java constitui um exemplo de linguagem natural usada em programação;

D Uma das formas de definir uma linguagem formal reside no uso de expressões regulares;
Você assinalou essa alternativa (D)
Você acertou!
A resposta correta é a letra D, o teorema de Kleene declara que só podem ser classificadas como linguagens formais aquelas que podem ser definidas com o uso de máquinas de estados finitos e/ou expressões regulares.

E O Teorema de Kleene, para a definição de linguagens naturais, torna mais eficiente o processo de interpretação em máquinas que rodem o Javascript.


A A língua portuguesa, graças a sua gramática estruturada é um exemplo de linguagem formal;
B As linguagens formais não podem ser definidas com o uso de máquinas de estados finitos;
C A linguagem de programação Java constitui um exemplo de linguagem natural usada em programação;
D Uma das formas de definir uma linguagem formal reside no uso de expressões regulares;
E O Teorema de Kleene, para a definição de linguagens naturais, torna mais eficiente o processo de interpretação em máquinas que rodem o Javascript.

Compiladores
As gramáticas livres de contexto, utilizadas na definição de linguagens formais, para a criação de linguagens de programação definem, a partir de um conjunto de quatro elementos, todas as regras que determinam a linguagem. Essas regras podem ser expandidas pelo processo chamado de derivação. Sendo assim, marque a alternativa correta.
Nota: 10.0

A A derivação consiste na substituição de um símbolo não terminal par uma regra de produção;
Você assinalou essa alternativa (A)
Você acertou!

B A derivação consiste na substituição de um símbolo terminal por uma regra de produção;

C A derivação consiste na substituição de um símbolo não terminal por um símbolo terminal;

D A derivação consiste na substituição de uma regra de produção por um símbolo terminal;

E A derivação consiste na substituição de uma regra de produção por um símbolo não terminal.


A A derivação consiste na substituição de um símbolo não terminal par uma regra de produção;
B A derivação consiste na substituição de um símbolo terminal por uma regra de produção;
C A derivação consiste na substituição de um símbolo não terminal por um símbolo terminal;
D A derivação consiste na substituição de uma regra de produção por um símbolo terminal;
E A derivação consiste na substituição de uma regra de produção por um símbolo não terminal.

Compiladores
A forma BNF do inglês Backus-Naur Form, pode ser utilizada para simplificar a especificação de regras de produção para a criação de linguagens simplificando o uso de gramáticas livre de contexto. Esta forma, e suas derivações, facilitam a interpretação das regras de produção. Marque, nas alternativas a seguir aquela que não é verdadeira.
Nota: 0.0Você não pontuou essa questão

A O uso de formas alternativas como a BNF simplifica a criação de analisadores sintáticos;
Você assinalou essa alternativa (A)

B Uma vez que utilizamos


A O uso de formas alternativas como a BNF simplifica a criação de analisadores sintáticos;
B Uma vez que utilizamos

Questão 5/10 - Compiladores
O processo de compilação é diferente de linguagem para linguagem. Notadamente por que cada um dos módulos envolvidos no processo está intimamente ligado as características específicas da linguagem que está sendo convertida em linguagem de máquina. Sendo assim, marque a alternativa correta entre as alternativas abaixo. Nota: 10.0


A Não existe nenhuma forma de compilar códigos escritos em Python;
B A linguagem C pode ser compilada para a arquitetura ARM;
C Uso de interpretadores de C++ não é possível graças a orientação a objetos desta linguagem;
D A linguagem Assembly é a própria linguagem de máquina;
E A execução do Javascript, em páginas web não necessita de códigos de máquina, já que ele roda em um ambiente controlado.

Levando-se em consideração o processo de compilação padrão da linguagem C/C++, podemos observar a criação de arquivos com a terminação .obj. Entre as alternativas a seguir, assinale a alternativa falsa relativa aos arquivos do tipo .obj deste processo de compilação.


A Arquivos .obj contém código de máquina referente a um arquivo de código-fonte específico;
B Graças a existência destes arquivos .obj, podemos utilizar bibliotecas pré-compiladas e reduzir o tempo de compilação dos nossos programas;
C A principal função do Linker é fazer a junção de todos os arquivos .obj envolvidos no processo de compilação;
D Se o arquivo .obj já está em linguagem de máquina, ele pode ser facilmente executado em um sistema operacional;
E Sem o uso de arquivos .obj o processo de compilação seria mais lento já que todas as funções e objetos utilizados no seu código teriam que passar por todo o processo de compilação ficando mais lento.

Mais conteúdos dessa disciplina