Ybadoo - Soluções em Software Livre
Tutoriais
Compiladores

Apresente o código de três endereços, representado por quádruplas, considerando que a expressão aritmética f = (a - b + c / d * e) * (c / d * (a - b + c)) seja processada em pós-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 = {AV=E
     EE+T | E-T | T
     TT*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}
Árvore de Derivação
Árvore de derivação da expressão aritmética f = (a - b + c / d * e) * (c / d * (a - b + c))
Árvore de Sintaxe
Árvore de sintaxe da expressão aritmética f = (a - b + c / d * e) * (c / d * (a - b + c))
Grafo de Sintaxe
Grafo de sintaxe da expressão aritmética f = (a - b + c / d * e) * (c / d * (a - b + c))
Árvore de Sintaxe em Pós-ordem
Árvore de sintaxe em pós-ordem da expressão aritmética f = (a - b + c / d * e) * (c / d * (a - b + c))

A notação pós-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 + * * =
Código de três endereços, representado por quádruplas, da expressão aritmética f = (a - b + c / d * e) * (c / d * (a - b + c)), processada em pós-ordem
 operarg1arg2result
(0)-abT1
(1)/cdT2
(2)*T2eT3
(3)+T1T3T4
(4)+T1cT5
(5)*T2T5T6
(6)*T4T6T7
(7)=T7 f