Apresente o código de três endereços, representado por triplas, considerando que a expressão aritmética f = (a - b + c / d * e) * (c / d * (a - b + c)) seja processada em pré-ordem, sobre a gramática livre de contexto apresentada a seguir.
Notação Algébrica:
G = ({A, E, T, F, V}, {a, b, c, d, e, f, =, +, -, *, /, (, )}, 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 | e | f}
Notação de Backus-Naur (BNF):
G = ({atr, exp, ter, fat, var}, {a, b, c, d, e, f, =, +, -, *, /, (, )}, 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 | e | f}
A notação pré-fixada da expressão aritmética f = (a - b + c / d * e) * (c / d * (a - b + c)) é
= f * + - a b * / c d e * / c d + - a b c
| oper | arg1 | arg2 | |
|---|---|---|---|
| (0) | - | a | b |
| (1) | + | (0) | c |
| (2) | / | c | d |
| (3) | * | (2) | (1) |
| (4) | * | (2) | e |
| (5) | + | (0) | (4) |
| (6) | * | (5) | (3) |
| (7) | = | f | (6) |