Baixe o app para aproveitar ainda mais
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.
Compartilhar