Analise Semântica

2 respostas
lipemh

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

2 Respostas

eltonads

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. =)

ViniGodoy
  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
Criado 30 de setembro de 2010
Ultima resposta 30 de set. de 2010
Respostas 2
Participantes 3