Buscar

TEMA 10 - Exercícios (parte 2)

Prévia do material em texto

Exercícios do TEMA 10 – Geração de Código Intermediário 
1) Considere o seguinte esquema de tradução: 
 
S → while E do S1 {S.inicio = gerarotulo; S.prox = gerarotulo; 
 S.cod = geracod(S.inicio “:”) || E.cod || 
 geracod(“if” E.nome “= 0 goto” S.prox) || 
 S1.cod || geracod(“goto” S.inicio) || 
 geracod(S.prox “:”) } 
 
Aplique o esquema para: 
 
while a < b do a = a + 2 
 
2) Considere a seguinte gramática: 
 
S → if E then S1 
S → if E then S1 else S2 
S → while E do S1 
 Transforme-a em um Esquema de Tradução. 
3) Considerando o esquema proposto por você na questão anterior, faça o que se pede 
sobre a sentença a seguir: 
 
if a < b then x = x + y else while c < d do c = c + x 
 
a) Construa o grafo de dependência 
b) Identifique a natureza dos atributos envolvidos 
c) Gere o código intermediário. 
 
4) Defina um esquema de tradução para implementar a geração de código intermediário 
para o comanto repeat-until, segundo a produção 
 
S → repeat S until E 
 
5) Defina um esquema de tradução que implemente geração de código intermediário 
para o comando 
S → if (E) S1; S2; S3 
Cuja semântica é a seguinte: se o resultado da expressão aritmética E é menor do que 
zero, executa S1; se o resultado é igual a zero, executa S2; senão, executa S3.

Continue navegando