Apresente a árvore de sintaxe da expressão aritmética x = (a + b) - (a - (c - d) * (e - f) + g) / h, sobre a gramática livre de contexto apresentada a seguir.
G = ({A, E, T, F, V}, {a, b, c, d, e, f, g, h, x, =, +, -, *, /, (, )}, P, A) P = {A → V=E E → T+E | T-E | T T → F*T | F/T | F F → (E) | V V → a | b | c | d | e | f | g | h | x}
Qual das seguintes expressões pós-fixas é equivalente à expressão infixa A + (B / C) * ((D – E) / F):
Analise as seguintes afirmativas sobre o BACK-END (fase de síntese) de um compilador:
A análise permite concluir que:
Apresente o código de três endereços, otimizado pela aplicação do método de construção de um grafo acíclico dirigido para blocos básicos, da seguinte sequência de comandos.
A = (A + 3) * (B - 5); B = (A * 2) + (B - 5); C = (7 + (A * 2));
No programa abaixo, escrito em Pascal, os parâmetros do procedimento vr
são passados por valor.
program teste;
var x, y : integer;
procedure vr(u, v : integer);
begin
u := 2 * u;
x := u + v;
u := u – 1;
end;
begin
x := 4;
y := 2;
vr(x, y);
writeln(x);
end.
O valor de x
impresso na última linha do programa é: