Logo Passei Direto
Buscar

Ferramentas de estudo

Questões resolvidas

Sobre as linguagens de programação, é correto afirmar:
a. Linguagens de alto nível cumprem tarefas mais substanciais com um número menor de comandos, mas exigem programas tradutores denominados compiladores para converter programas em linguagem de alto nível para linguagem de máquina.
b. Um computador pode entender qualquer linguagem de máquina, pois a linguagem de máquina não é definida pelo projeto de hardware do computador.
c. Programadores podem escrever instruções em várias linguagens de programação e todas são entendidas diretamente pelos computadores sem a necessidade de tradução.
d. Softwares escritos em linguagens de máquina são portáveis.
e. Interpretadores são programas que convertem códigos escritos em linguagem de alto nível para programa sem linguagem de máquina.

Conhecer as metodologias utilizadas por um compilador para a análise e síntese de um programa de computador pode ser muito útil para entender como um software funciona por dentro. Assim, atividades como a engenharia reversa podem ser mais facilmente entendidas e realizadas.
A esse respeito, no que se refere aos programas de computadores e às fases de um compilador, assinale a alternativa correta.
a. As fases de análise sintática e semântica tratam da grande maioria dos erros detectáveis pelo compilador.
b. A fase de análise constrói o programa alvo desejado, com base nas respectivas representações intermediárias. É a fase que requer as técnicas mais especializadas.
c. Durante a análise sintática do programa fonte, o compilador procura encontrar as construções que possuam a estrutura sintática correta, sem se preocupar com o significado da operação envolvida.
d. A análise semântica, também chamada de análise gramatical, envolve o agrupamento dos tokens do programa fonte, no qual cada token representa uma sequência de caracteres logicamente coesa, em frases gramaticais que são usadas pelo compilador, a fim de sintetizar a saída.
e. A fase final do compilador é a geração de código intermediário, na qual as alocações de memória são realizadas para cada uma das variáveis utilizadas pelo programa.

Para que os programas funcionem, eles devem ser traduzidos para o código de máquina (de código fonte para código objeto) e para isso é necessário um tradutor ou um compilador.
Em relação à característica de um programa compilado, analise as afirmativas a seguir:
I. O compilador ocupa a memória enquanto se executa o programa.
II. O compilador é carregado na memória apenas na compilação do programa.
III. O programa é traduzido inteiramente uma vez.
IV. O programa precisa ser traduzido cada vez que é rodado.
V. Sua execução é rápida.
VI. O programa acaba por se tornar mais lento.
a. Somente I.
b. Somente I e VI.
c. Somente IV e VI.
d. II, III e V.
e. I, II, III e V.

Os compiladores e interpretadores são exemplos de:
a. softwares aplicativos.
b. softwares utilitários.
c. firmwares.
d. softwares básicos.
e. softwares livres.

Durante a compilação de um código-fonte, a fase do compilador que é responsável por produzir uma sequência de tokens é a:
A) análise léxica.
B) análise semântica.
C) análise sintática.
D) geração de código executável.
E) verificação de tipos.

Um compilador é um programa que executa vários passos, dentre os quais, o de analisar uma sequência de entrada para determinar sua estrutura gramatical segundo uma determinada gramática formal.
O resultado típico dessa análise é uma estrutura conhecida como:
a. árvore AVL
b. árvore sintática
c. fluxo (stream) de tokens
d. gramática dirigida a sintaxe
e. gramática livre de contexto

Na implementação de compiladores, a fase de parser do programa baseia-se, em parte, no resultado de um analisador léxico.
Assinale a opção que descreve o papel de um analisador léxico.
a. Representar as regras da gramática da linguagem.
b. Verificar a conformidade do código fonte com as regras da gramática da linguagem.
c. Definir a notação em que as regras da gramática são expressas.
d. Identificar os tokens gramaticais no código fonte.
e. Exprimir a semântica das construções da linguagem.

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:
Os itens I, II e III referem-se, correta e respectivamente, às 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.
a. Análise Léxica − Análise Sintática − Análise Semântica.
b. Interpretação − Análise Sintática − Montagem.
c. Busca Binária − Montagem Léxica − Análise Semântica.
d. Classificação − Análise Léxica − Montagem.
e. Identificação Inicial − Análise Estrutural − Geração de Código.

Qual a descrição da linguagem denotada pela expressão regular apresentada abaixo? ????(????|????) ∗ ????
a. String de b’s.
b. String de a’s e b’s que começa com a e termina com a.
c. String de a’s entre b’s.
d. String de a’s e b’s com vazio.
e. String de a’s seguido de vazio terminando com b’s.

Qual das alternativas de expressão regular representa a linguagem a seguinte: “Cadeia de a’s e b’s que contém apenas três b.”
a. a(a|b)*a
b. ((ε|a)b*)*
c. (a|b)*a(a|b)(a|b)
d. a*ba*ba*ba*
e. (aa|bb)*((ab|ba)(aa|bb)*(ab|ba)(aa|bb)*)*

A gramática abaixo define expressões aritméticas simples. Defina quais os símbolos terminais, não terminais e de início da gramática?
a. Terminais “ + - * / ( ) ”, Não Terminais (expression, term, factor) e Inicial (expression).
b. Terminais “ id + - * / ( ) ”, Não Terminais (expression, term, factor) e Inicial (factor)
c. Terminais “ id + - * / ( ) ”, Não Terminais (expression, term, factor) e Inicial (expression)
d. Terminais “ id + - * / ( ) ”, Não Terminais (expression, term, factor) e Inicial (term)
e. Terminais “ + - * / ”, Não Terminais (expression, term, factor) e Inicial (expression)

Uma árvore de derivação é uma representação gráfica de uma derivação que filtra a ordem na qual as produções são aplicadas para substituir não-terminais. Cada nó interior de uma árvore de derivação representa a aplicação de uma produção.
A árvore de derivação abaixo foi gerada por qual produção (cadeia)?
a. - ( ) + id id
b. - ( id + id )
c. - ( + ) id id
d. - ( + id id )
e. - ( + id ) id

Com relação aos conceitos e características de compiladores, julgue os itens que se seguem.
Nessa situação, a expressão 10 – 4 + 3 possibilita criar duas árvores de derivação distintas.
a. Certo
b. Errado

Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

Questões resolvidas

Sobre as linguagens de programação, é correto afirmar:
a. Linguagens de alto nível cumprem tarefas mais substanciais com um número menor de comandos, mas exigem programas tradutores denominados compiladores para converter programas em linguagem de alto nível para linguagem de máquina.
b. Um computador pode entender qualquer linguagem de máquina, pois a linguagem de máquina não é definida pelo projeto de hardware do computador.
c. Programadores podem escrever instruções em várias linguagens de programação e todas são entendidas diretamente pelos computadores sem a necessidade de tradução.
d. Softwares escritos em linguagens de máquina são portáveis.
e. Interpretadores são programas que convertem códigos escritos em linguagem de alto nível para programa sem linguagem de máquina.

Conhecer as metodologias utilizadas por um compilador para a análise e síntese de um programa de computador pode ser muito útil para entender como um software funciona por dentro. Assim, atividades como a engenharia reversa podem ser mais facilmente entendidas e realizadas.
A esse respeito, no que se refere aos programas de computadores e às fases de um compilador, assinale a alternativa correta.
a. As fases de análise sintática e semântica tratam da grande maioria dos erros detectáveis pelo compilador.
b. A fase de análise constrói o programa alvo desejado, com base nas respectivas representações intermediárias. É a fase que requer as técnicas mais especializadas.
c. Durante a análise sintática do programa fonte, o compilador procura encontrar as construções que possuam a estrutura sintática correta, sem se preocupar com o significado da operação envolvida.
d. A análise semântica, também chamada de análise gramatical, envolve o agrupamento dos tokens do programa fonte, no qual cada token representa uma sequência de caracteres logicamente coesa, em frases gramaticais que são usadas pelo compilador, a fim de sintetizar a saída.
e. A fase final do compilador é a geração de código intermediário, na qual as alocações de memória são realizadas para cada uma das variáveis utilizadas pelo programa.

Para que os programas funcionem, eles devem ser traduzidos para o código de máquina (de código fonte para código objeto) e para isso é necessário um tradutor ou um compilador.
Em relação à característica de um programa compilado, analise as afirmativas a seguir:
I. O compilador ocupa a memória enquanto se executa o programa.
II. O compilador é carregado na memória apenas na compilação do programa.
III. O programa é traduzido inteiramente uma vez.
IV. O programa precisa ser traduzido cada vez que é rodado.
V. Sua execução é rápida.
VI. O programa acaba por se tornar mais lento.
a. Somente I.
b. Somente I e VI.
c. Somente IV e VI.
d. II, III e V.
e. I, II, III e V.

Os compiladores e interpretadores são exemplos de:
a. softwares aplicativos.
b. softwares utilitários.
c. firmwares.
d. softwares básicos.
e. softwares livres.

Durante a compilação de um código-fonte, a fase do compilador que é responsável por produzir uma sequência de tokens é a:
A) análise léxica.
B) análise semântica.
C) análise sintática.
D) geração de código executável.
E) verificação de tipos.

Um compilador é um programa que executa vários passos, dentre os quais, o de analisar uma sequência de entrada para determinar sua estrutura gramatical segundo uma determinada gramática formal.
O resultado típico dessa análise é uma estrutura conhecida como:
a. árvore AVL
b. árvore sintática
c. fluxo (stream) de tokens
d. gramática dirigida a sintaxe
e. gramática livre de contexto

Na implementação de compiladores, a fase de parser do programa baseia-se, em parte, no resultado de um analisador léxico.
Assinale a opção que descreve o papel de um analisador léxico.
a. Representar as regras da gramática da linguagem.
b. Verificar a conformidade do código fonte com as regras da gramática da linguagem.
c. Definir a notação em que as regras da gramática são expressas.
d. Identificar os tokens gramaticais no código fonte.
e. Exprimir a semântica das construções da linguagem.

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:
Os itens I, II e III referem-se, correta e respectivamente, às 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.
a. Análise Léxica − Análise Sintática − Análise Semântica.
b. Interpretação − Análise Sintática − Montagem.
c. Busca Binária − Montagem Léxica − Análise Semântica.
d. Classificação − Análise Léxica − Montagem.
e. Identificação Inicial − Análise Estrutural − Geração de Código.

Qual a descrição da linguagem denotada pela expressão regular apresentada abaixo? ????(????|????) ∗ ????
a. String de b’s.
b. String de a’s e b’s que começa com a e termina com a.
c. String de a’s entre b’s.
d. String de a’s e b’s com vazio.
e. String de a’s seguido de vazio terminando com b’s.

Qual das alternativas de expressão regular representa a linguagem a seguinte: “Cadeia de a’s e b’s que contém apenas três b.”
a. a(a|b)*a
b. ((ε|a)b*)*
c. (a|b)*a(a|b)(a|b)
d. a*ba*ba*ba*
e. (aa|bb)*((ab|ba)(aa|bb)*(ab|ba)(aa|bb)*)*

A gramática abaixo define expressões aritméticas simples. Defina quais os símbolos terminais, não terminais e de início da gramática?
a. Terminais “ + - * / ( ) ”, Não Terminais (expression, term, factor) e Inicial (expression).
b. Terminais “ id + - * / ( ) ”, Não Terminais (expression, term, factor) e Inicial (factor)
c. Terminais “ id + - * / ( ) ”, Não Terminais (expression, term, factor) e Inicial (expression)
d. Terminais “ id + - * / ( ) ”, Não Terminais (expression, term, factor) e Inicial (term)
e. Terminais “ + - * / ”, Não Terminais (expression, term, factor) e Inicial (expression)

Uma árvore de derivação é uma representação gráfica de uma derivação que filtra a ordem na qual as produções são aplicadas para substituir não-terminais. Cada nó interior de uma árvore de derivação representa a aplicação de uma produção.
A árvore de derivação abaixo foi gerada por qual produção (cadeia)?
a. - ( ) + id id
b. - ( id + id )
c. - ( + ) id id
d. - ( + id id )
e. - ( + id ) id

Com relação aos conceitos e características de compiladores, julgue os itens que se seguem.
Nessa situação, a expressão 10 – 4 + 3 possibilita criar duas árvores de derivação distintas.
a. Certo
b. Errado

Prévia do material em texto

COMPILADORES 
Prof. MSc. Renan Costa Alencar 
 
LISTA DE EXERCÍCIOS – REVISÃO – UNDIADE I 
 
1. Sobre as linguagens de programação, é correto afirmar: 
 
a. Linguagens de alto nível cumprem tarefas mais substanciais com um número menor de comandos, mas 
exigem programas tradutores denominados compiladores para converter programas em linguagem de alto 
nível para linguagem de máquina. 
b. Um computador pode entender qualquer linguagem de máquina, pois a linguagem de máquina não é definida 
pelo projeto de hardware do computador. 
c. Programadores podem escrever instruções em várias linguagens de programação e todas são entendidas 
diretamente pelos computadores sem a necessidade de tradução. 
d. Softwares escritos em linguagens de máquina são portáveis. 
e. Interpretadores são programas que convertem códigos escritos em linguagem de alto nível para programa 
sem linguagem de máquina. 
 
2. Conhecer as metodologias utilizadas por um compilador para a análise e síntese de um programa de computador 
pode ser muito útil para entender como um software funciona por dentro. Assim, atividades como a engenharia 
reversa podem ser mais facilmente entendidas e realizadas. 
 
A esse respeito, no que se refere aos programas de computadores e às fases de um compilador, assinale a 
alternativa correta. 
 
a. As fases de análise sintática e semântica tratam da grande maioria dos erros detectáveis pelo compilador. 
b. A fase de análise constrói o programa alvo desejado, com base nas respectivas representações intermediárias. 
É a fase que requer as técnicas mais especializadas. 
c. Durante a análise sintática do programa fonte, o compilador procura encontrar as construções que possuam 
a estrutura sintática correta, sem se preocupar com o significado da operação envolvida. 
d. A análise semântica, também chamada de análise gramatical, envolve o agrupamento dos tokens do programa 
fonte, no qual cada token representa uma sequência de caracteres logicamente coesa, em frases gramaticais 
que são usadas pelo compilador, a fim de sintetizar a saída. 
e. A fase final do compilador é a geração de código intermediário, na qual as alocações de memória são realizadas 
para cada uma das variáveis utilizadas pelo programa. 
 
3. Para que os programas funcionem, eles devem ser traduzidos para o código de máquina (de código fonte para 
código objeto) e para isso é necessário um tradutor ou um compilador. 
 
Em relação à característica de um programa compilado, analise as afirmativas a seguir: 
 
I. O compilador ocupa a memória enquanto se executa o programa. 
II. O compilador é carregado na memória apenas na compilação do programa. 
III. O programa é traduzido inteiramente uma vez. 
IV. O programa precisa ser traduzido cada vez que é rodado. 
V. Sua execução é rápida. 
VI. O programa acaba por se tornar mais lento. 
 
Está CORRETO o que se afirmar em: 
a. Somente I. 
b. Somente I e VI. 
c. Somente IV e VI. 
d. II, III e V. 
e. I, II, III e V. 
 
4. Os compiladores e interpretadores são exemplos de: 
 
a. softwares aplicativos. 
b. softwares utilitários. 
c. firmwares. 
d. softwares básicos. 
e. softwares livres. 
 
5. Durante a compilação de um código-fonte, a fase do compilador que é responsável por produzir uma sequência 
de tokens é a: 
 
a. análise léxica. 
b. análise semântica. 
c. análise sintática. 
d. geração de código executável. 
e. verificação de tipos. 
 
6. Um compilador é um programa que executa vários passos, dentre os quais, o de analisar uma sequência de entrada 
para determinar sua estrutura gramatical segundo uma determinada gramática formal. 
 
O resultado típico dessa análise é uma estrutura conhecida como: 
 
a. árvore AVL 
b. árvore sintática 
c. fluxo (stream) de tokens 
d. gramática dirigida a sintaxe 
e. gramática livre de contexto 
 
7. Na implementação de compiladores, a fase de parser do programa baseia-se, em parte, no resultado de um 
analisador léxico. 
 
Assinale a opção que descreve o papel de um analisador léxico. 
 
a. Representar as regras da gramática da linguagem. 
b. Verificar a conformidade do código fonte com as regras da gramática da linguagem. 
c. Definir a notação em que as regras da gramática são expressas. 
d. Identificar os tokens gramaticais no código fonte. 
e. Exprimir a semântica das construções da linguagem. 
 
8. Abaixo, estão enumeradas as fases que integram o front-end de um compilador: 
 
1. Análise Semântica 
2. Análise Léxica 
3. Análise Sintática 
4. Gerador de código intermediário 
 
Marque a alternativa que mostra a sequência correta das camadas: 
a. 1, 3, 2 e 4. 
b. 3, 1, 4 e 2. 
c. 2, 3, 1 e 4. 
d. 1, 4, 2 e 3. 
e. 4, 1, 2 e 3. 
 
9. 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 
 
a. Análise Léxica − Análise Sintática − Análise Semântica. 
b. Interpretação − Análise Sintática − Montagem. 
c. Busca Binária − Montagem Léxica − Análise Semântica. 
d. Classificação − Análise Léxica − Montagem. 
e. Identificação Inicial − Análise Estrutural − Geração de Código. 
 
 
10. Podemos afirmar sobre a gramática abaixo que: 
Program : Statement ";" Program | /* producao vazia */ ; 
Statement : "if" Expression "then" Statement "else" Statement | identifier "=" Expression ; 
Expression : identifier | number | identifier "+" Expression | number "+" Expression ; 
 
a. Ela não é ambígua. 
b. Ela é ambígua devido à produção Program. 
c. Ela é ambígua devido à produção Statement. 
d. Ela é ambígua devido à produção Expression. 
e. Ela possui produções com recursão à esquerda. 
 
11. Qual a descrição da linguagem denotada pela expressão regular apresentada abaixo? 
𝑎(𝑎|𝑏) ∗ 𝑎 
 
a. String de b’s. 
b. String de a’s e b’s que começa com a e termina com a. 
c. String de a’s entre b’s. 
d. String de a’s e b’s com vazio. 
e. String de a’s seguido de vazio terminando com b’s. 
 
12. Qual das alternativas de expressão regular representa a linguagem a seguinte: “Cadeia de a’s e b’s que contém 
apenas três b.” 
 
a. a(a|b)*a 
b. ((ε|a)b*)* 
c. (a|b)*a(a|b)(a|b) 
d. a*ba*ba*ba* 
e. (aa|bb)*((ab|ba)(aa|bb)*(ab|ba)(aa|bb)*)* 
 
13. A gramática abaixo define expressões aritméticas simples. 
Defina quais os símbolos terminais, não terminais e de início da gramática? 
 
a. Terminais “ + - * / ( ) ”, Não Terminais (expression, term, factor) e Inicial (expression). 
b. Terminais “ id + - * / ( ) ”, Não Terminais (expression, term, factor) e Inicial (factor) 
c. Terminais “ id + -* / ( ) ”, Não Terminais (expression, term, factor) e Inicial (expression) 
d. Terminais “ id + - * / ( ) ”, Não Terminais (expression, term, factor) e Inicial (term) 
e. Terminais “ + - * / ”, Não Terminais (expression, term, factor) e Inicial (expression) 
 
14. Uma árvore de derivação é uma representação gráfica de uma derivação que filtra a ordem na qual as produções 
são aplicadas para substituir não-terminais. Cada nó interior de uma árvore de derivação representa a aplicação 
de uma produção. 
O nó interior é rotulado com o não-terminal A do lado esquerdo da produção; os filhos do nó são rotulados, da 
esquerda para a direita, pelos símbolos do corpo da produção pelo qual esse A foi substituído durante a 
derivação. 
 
A árvore de derivação abaixo foi gerada por qual produção (cadeia)? 
 
a. - ( ) + id id 
b. - ( id + id ) 
c. - ( + ) id id 
d. - ( + id id ) 
e. - ( + id ) id 
 
15. A notação tradicional para expressões aritméticas, que representa uma operação binária na forma x + y, ou seja, 
com o operador entre seus dois operandos, é conhecida como notação infixada. 
Uma notação alternativa para esse tipo de expressão é a notação pré-fixada, na qual o operador é expresso 
antes de seus operandos, como por exemplo, + x y. 
Outra notação alternativa é a notação pós-fixada, na qual o operador é expresso após seus operandos, como por 
exemplo, x y +. 
O atrativo das notações pré-fixada e pós-fixada é que elas dispensam o uso de parênteses ao adotar a noção de 
pilha para a representação das expressões. Analise as assertivas a seguir, considerando a gramática livre de 
contexto G2. 
 
𝐺2 = ({𝐴, 𝐸, 𝑇, 𝐹, 𝑉}, {𝑎, 𝑏, 𝑐, 𝑑, 𝑒, 𝑓, 𝑥, =, +, −,∗,/, (, )}, 𝑃2, 𝐴) 
𝑃2 = {𝐴 → 𝑉 = 𝐸 
 𝐸 → 𝐸 + 𝑇 | 𝐸 − 𝑇 | 𝑇 
 𝑇 → 𝑇 ∗ 𝐹 | 𝑇/𝐹 | 𝐹 
 𝐹 → (𝐸) | 𝑉 
 𝑉 → 𝑎 | 𝑏 | 𝑐 | 𝑑 | 𝑒 | 𝑓 | 𝑥} 
 
I. A notação pré-fixada da expressão aritmética x = a * b + c * d - e * f é = x + * a b - * c d * e f 
II. A notação pré-fixada da expressão aritmética x = a * b + c * d - e * f é = x - + * a b * c d * e f 
III. A notação pós-fixada da expressão aritmética x = a - (b - a * (c + b / d)) é x a b a c b d - - * + / = 
IV. A notação pós-fixada da expressão aritmética x = a - (b - a * (c + b / d)) é x a b a c b d / + * - - = 
 
Quais das assertivas apresentadas estão corretas? 
b. apenas as assertivas I e II. 
c. apenas as assertivas I e III. 
d. apenas as assertivas II e III. 
e. apenas as assertivas II e IV. 
f. apenas as assertivas III e IV. 
 
16. Com relação aos conceitos e características de compiladores, julgue os itens que se seguem. 
Considere a gramática string → string + string → string – string |0|1|2|3|4|5|6|7|8|9 e a string como um único nó 
não terminal, que pode ser um dígito ou uma sentença. Nessa situação, a expressão 10 – 4 + 3 possibilita criar duas 
árvores de derivação distintas. 
 
a. Certo 
b. Errado 
 
17. Considerando a Gramática Livre de Contexto: 
 
𝐺 = (𝑉, 𝑇, 𝑃, 𝑆), 𝑜𝑛𝑑𝑒: 
𝑉 = {𝑆} 
𝑇 = {𝑎, 𝑏} 
𝑃 = {𝑆 −> 𝑆𝑆 | 𝑎𝑆𝑎 | 𝑏𝑆𝑏 | 𝐸} 
 
I. aa é derivado corretamente a partir da gramática. 
II. aabb é derivado corretamente a partir da gramática. 
III. aabbaaaa é derivado corretamente a partir da gramática. 
IV. ababaab é derivado corretamente a partir da gramática. 
V. aaaab é derivado corretamente a partir da gramática. 
 
Assinale a alternativa em que todas as afirmativas estão CORRETAS: 
 
a. I, II, III, IV e V. 
b. Apenas II, III e IV. 
c. Apenas I, IIe V. 
d. Apenas I, II, III. 
e. Apenas II e III. 
 
18. Considere a gramática G definida pelo conjunto de símbolos não terminais {S, A, B, C, D}, pelos símbolos 
terminais {a,b,c,d}, e pelas regras de produção: 
 
S → AB | BC 
A→ Aa | b 
B→ C | cC | b 
C→ SaAD | BcCS 
D → dS | Ad 
 
A palavra "caabc" pertence à linguagem gerada por esta gramática? 
a. Certo 
b. Errado 
 
19.

Mais conteúdos dessa disciplina