Apresente o código de três endereços, representado por quádruplas, 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 (Ricarte, 2008).
Notação Algébrica:
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}
Notação de Backus-Naur (BNF):
G = ({atr, exp, ter, fat, var}, {a, b, c, d, e, f, g, h, x, =, +, -, *, /, (, )}, P, atr) P = {<atr> ::= <var>=<exp> <exp> ::= <ter>+<exp> | <ter>-<exp> | <ter> <ter> ::= <fat>*<ter> | <fat>/<ter> | <fat> <fat> ::= (<exp>) | <var> <var> ::= a | b | c | d | e | f | g | h | x}
oper | arg1 | arg2 | result | |
---|---|---|---|---|
(0) | + | a | b | T1 |
(1) | - | c | d | T2 |
(2) | - | e | f | T3 |
(3) | * | T2 | T3 | T4 |
(4) | + | T4 | g | T5 |
(5) | - | a | T5 | T6 |
(6) | / | T6 | h | T7 |
(7) | - | T1 | T7 | T8 |
(8) | = | T8 | x |
Ricarte, Ivan. (2008). Introdução à Compilação. Rio de Janeiro: Elsevier. 264 páginas.