Geral
Compiladores
Semana 5
0

Questão

A você foi dada a incumbência de escrever um compilador para uma linguagem de programação que permite a declaração de variáveis com o mesmo nome em diferentes escopos. Sobre essa situação, avalie as seguintes assertivas: 

I. Nesse caso, a tabela de símbolos pode conter várias entradas com o mesmo nome, mas em diferentes escopos.
II. Quando uma variável é referenciada em um programa, o compilador deve usar a regra de "escopo mais próximo" para determinar qual variável com o mesmo nome é acessada.
III. A ordem de declaração das variáveis não afeta o resultado, já que o compilador usa apenas o escopo mais próximo para determinar a variável a ser acessada.
IV. Em linguagens que permitem sombreamento de variáveis (variáveis com o mesmo nome em escopos diferentes), a tabela de símbolos deve manter informações sobre os escopos em que cada variável foi declarada.
V. O uso de variáveis com o mesmo nome em diferentes escopos pode causar ambiguidades e erros semânticos, e o compilador deve tratá-los adequadamente. 

Assinale a alternativa com a ordem correta: 

A)

F, F, V, V, V.

B)

F, V, F, F, V.

C)

V, V, F, V, V.

D)

V, V, V, V, F.

E)

V, V, F, V, F.

function vote(questaoId, value) { window.location.href = "/accounts/login/?next=/questao/410/"; return; fetch(`/vote/questao/${questaoId}/`, { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-CSRFToken': 'niHvYs1IRthHetUhW6wZSLrERb0MtfDoDQvmKGVggRI7odlhoJYBKkMrlgxaSjhX' }, body: JSON.stringify({ value: value }) }) .then(response => response.json()) .then(data => { if (data.success) { document.getElementById(`score-${questaoId}`).textContent = data.score; const upBtn = document.querySelector(`button[onclick="vote(${questaoId}, 1)"]`); const downBtn = document.querySelector(`button[onclick="vote(${questaoId}, -1)"]`); upBtn.classList.remove('active-up'); downBtn.classList.remove('active-down'); if (data.user_vote === 1) upBtn.classList.add('active-up'); if (data.user_vote === -1) downBtn.classList.add('active-down'); } }); }