Ybadoo - Soluções em Software Livre
Tutoriais
Compiladores

Apresente o grafo de sintaxe 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 = {AV=E
     ET+E | T-E | T
     TF*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}

 

Árvore de Derivação
Árvore de derivação da expressão aritmética x = (a + b) - (a - (c - d) * (e - f) + g) / h
Árvore de Sintaxe
Árvore de sintaxe da expressão aritmética x = (a + b) - (a - (c - d) * (e - f) + g) / h
Grafo de Sintaxe
Grafo de sintaxe da expressão aritmética x = (a + b) - (a - (c - d) * (e - f) + g) / h

Ricarte, Ivan. (2008). Introdução à Compilação. Rio de Janeiro: Elsevier. 264 páginas.