Apresente o grafo de sintaxe da expressão aritmética x = a + a * (b - c) + (b - c) * d, sobre a gramática livre de contexto apresentada a seguir.
G = ({A, E, T, F, V}, {a, b, c, d, 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 | x}
Qual das seguintes expressões pré-fixas é equivalente à expressão infixa A + (B / C) * ((D - E) / F)
Analise as seguintes afirmativas sobre a etapa de geração de código 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:
X = X + 2 * Y; Y = 2 * Y + X; Z = Y + X + 5;
No programa abaixo, escrito em C, os parâmetros da função sub são passados por referência.
void sub(int a, int b, int c)
{
a = b + c;
b = a * c;
c = a + b;
}
void main( )
{
int x = 1, y = 2, z = 3;
sub(x, y, x);
printf("%d %d %d", x, y, z);
}
O texto impresso na última linha do programa é: