Apresente o código de três endereços, representado por triplas, da expressão aritmética x = (a + b + c) * (b + c) - d, 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, x, =, +, -, *, /, (, )}, P, A) P = {A → V=E E → E+T | E-T | T T → T*F | T/F | F F → (E) | V V → a | b | c | d | x}
Notação de Backus-Naur (BNF):
G = ({atr, exp, ter, fat, var}, {a, b, c, d, x, =, +, -, *, /, (, )}, P, atr) P = {<atr> ::= <var>=<exp> <exp> ::= <exp>+<ter> | <exp>-<ter> | <ter> <ter> ::= <ter>*<fat> | <ter>/<fat> | <fat> <fat> ::= (<exp>) | <var> <var> ::= a | b | c | d | x}
oper | arg1 | arg2 | |
---|---|---|---|
(0) | + | a | b |
(1) | + | (0) | c |
(2) | + | b | c |
(3) | * | (1) | (2) |
(4) | - | (3) | d |
(5) | = | x | (4) |
Ricarte, Ivan. (2008). Introdução à Compilação. Rio de Janeiro: Elsevier. 264 páginas.