



Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Segunda prova de compiladores 2018.1 Universidade Federal de Alagoas
Tipologia: Provas
1 / 5
Esta página não é visível na pré-visualização
Não perca as partes importantes!




i 3; v[f] = 45; while { } } Quantos erros semânticos o código possui? a) 1 b) 2 c) 3 d) 4 e) 5
(0.4) (PosComp 2016) Sobre a técnica de tradução dirigida por sintaxe, é correto afirmar que: a) Uma definição dirigida por sintaxe é uma gramática livre de contexto acrescida de atributos e regras. Os atributos são associados às produções, e as regras aos símbolos terminais e não terminais da gramática. b) Uma definição dirigida por sintaxe é denominada definição S-atribuído quando nessa estão envolvidos apenas atribuídos herdados. c) As regras semânticas só são aplicadas após a construção total da árvore sintática pelo parser do compilador. d) Grafos de dependência são utilizados para determinar uma ordem de avaliação para as instâncias dos atributos de uma árvore de derivação. TRUE e) Sendo "S" um símbolo da gramática presente em uma árvore de derivação, um atributo sintetizado é computado através dos valores dos atributos dos nós irmãos ou do nó pai de "S".
(1.0) Definir as ações semânticas para inserir na gramática o comando:
S = "faça" LS "enquanto" Eb "fim"
S = “faça” LS “enquanto” Eb “fim” { NTBool Eb(geraRot(), S.prox); NTSent LS(geraRot()); S.cod = emiteRot(Eb.true) + LS.cod + emiteRot(LS.prox) + Eb.cod; }
S = "para" Atr "até" Ea1 Passo "faça" LS "fim" Passo = "passo" Ea2 | épsilon
Considerando que o laço é pré-teste, que as expressões de controle são pré-avaliadas e que caso "passo" seja omitido deve ser assumido 1. Embora desnecessários os números em Ea1 e Ea2 devem ser mantidos para evitar confusão sobre a qual Ea a solução do aluno se refere. S = “para” Atr “até” Ea1 Passo “faça” LS “fim” { string aval = geraRot(); NTSent LS(geraRot()); NTerm Atr, Ea1, Passo;
else if (prev == tkCat.Enquanto) { NTBool Eb(geraRot(), S.prox); funEb(Eb); tk = tk.next(); NTSent LS(geraRot()); funLS(LS); tk = tk.next(); S.cod = emiteRot(LS.prox) + Eb.cod + emiteRot(Eb.verd) + LS.cod + geraGT(LS.prox); } else { NTerm Atr; funAtr(Atr); S.cod = Atr.cod; } }
e) (0.4) Fa = “cteR”