Compiladores/Aula Prática 12: Difference between revisions
From Wiki**3
< Compiladores
No edit summary  | 
				|||
| Line 37: | Line 37: | ||
       a[j + 1] = a[j];  |        a[j + 1] = a[j];  | ||
     }  |      }  | ||
     a[  |      a[i + 1] = v;  | ||
   }  |    }  | ||
}  | }  | ||
Revision as of 10:36, 27 June 2018
Tópicos
Processamento semântico e geração de código Postfix (não optimizado).
Exercício 1
Traduza para Postfix (não optimizado) a seguinte função escrita em C: <c> int *click(int *x, int dim) {
int *res, i; for (i = dim-2, res = x+dim-1; i >= 0; i--) if (x[i] > *res) res = &x[i]; return res;
} </c>
Exercício 2
Traduza para Postfix (não optimizado) a seguinte função escrita em C: <c> int main() {
extern void printd(double); double d, e; d = e = 3.3e-2; printd(d + e); return 0;
} </c>
Exercício 3
Traduza para Postfix (não optimizado) a seguinte função escrita em C: <c> void isort(int a[], int length) {
 for (int i = 0; i < length; i++) {
   int v = a[i];
   for (int j = i - 1; j >= 0; j--) {
     if (a[j] <= v) break;
     a[j + 1] = a[j];
   }
   a[i + 1] = v;
 }
} </c>
Exercício 4
Traduza para código Postfix a seguinte função escrita em C:
<c> int main() {
 int n = 45, i = 0, j = 1, *seg = &i; 
 while (n-- > 0) {
   print(*seg = i + j); 
   seg = (seg == &i) ? &j : &i; 
 } 
 return 0; 
} </c>
Resoluções
- Ver: Code Generation. Procurar resolver sem consultar.