Analise Semântica

Alguem sabe como fazer a analise semantica de uma expressao?

tipo -> ( 5 + 6 ) * 8 *2

eu quero chegar na resposta 176.

na verdade seria um metodo assim:

public int analiseSemantica(StringTokenizer str){ //...codigo todo return valor; }

o StringTokenizer str possue a expressao separada por token e de forma correta pois ja passou por uma analise sintatica.

se alguem puder me ajudar eu agradeço mto…

att

Bom,

Se existe uma lib pronta pra isso eu não conheço…
Mas você implementar na forma de uma árvore binária, montando uma estrutura onde os nós-filho são os números, e o ultimo nó pai a operação… Agrupando as operações em pares…
No seu exemplo ficaria algo como:

         (((5 + 6) * 8) * 2)
          /                 \
     (5+6) * 8          *2
     /       \
(5+6)      *8

E resolveria as folhas, sempre subindo na estrutura… Ou algo assim…
Viajei um monte, e não consegui explicar… Provavelmente compliquei mais… mas enfim… hehe

Boa sorte. =)

  1. Você pode usar linguagens de script para resolver a expressão.
  2. Você pode usar a MarkUtils: http://markyameba.wordpress.com/2009/06/22/resolver-expressoes-matematicas/
  3. Você pode implementar você mesmo o seu analisador, usando para isso uma pilha.
    http://www.ime.usp.br/~pf/mac0122-2002/aulas/stacks.html
    http://www.ime.usp.br/~pf/algoritmos/aulas/pilha.html