Ybadoo - Soluções em Software Livre
Tutoriais
Compiladores

Apresente o código de três endereços, representado por triplas, da expressão aritmética x = a + a * (b - c) + (b - c) * d, sobre a gramática livre de contexto apresentada a seguir (Aho, 2008).

Notação Algébrica:

G = ({A, E, T, F, V}, {a, b, c, d, x, =, +, -, *, /, (, )}, P, A)
P = {AV=E
     EE+T | E-T | T
     TT*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}

 

Árvore de Derivação
Árvore de derivação da expressão aritmética x = a + a * (b - c) + (b - c) * d
Árvore de Sintaxe
Árvore de sintaxe da expressão aritmética x = a + a * (b - c) + (b - c) * d
Grafo de Sintaxe
Grafo de sintaxe da expressão aritmética x = a + a * (b - c) + (b - c) * d
Código de três endereços, representado por triplas, da expressão aritmética x = a + a * (b - c) + (b - c) * d
 operarg1arg2
(0)-bc
(1)*a(0)
(2)+a(1)
(3)*(0)d
(4)+(2)(3)
(5)=x(4)

Aho, Alfred V. (2008). Compiladores: princípios, técnicas e ferramentas. 2ª edição. São Paulo: Pearson Addison-Wesley. 634 páginas.