Newsgroup: it.comp.java
Titolo: valutazione espressioni booleane

Ciao a tutti,
devo realizzare un semplice programmino che valuti espressioni
boolenane, INSERITE DALL'UTENTE,
del tipo
"(a and b) or (not c)"
o alternativamente
"(a * b) + (~c)"
etc
con valori fissati di a,b,c, zero e uno
Devo studiarmi tutto il "Building Parsers with Java", Steven John
Metsker
e costruirmi un parser, oppure c'e' una scorciatoia che posso
utilizzare?
per esempio, una funzione JBoolEval() che tutti conoscono ma non io????
grazie 1000 per qualunque indicazione!!

 boolenane, INSERITE DALL'UTENTE,
[snioppeto]
hehe, mi è venuto in mente che se a, b, c, ecc sono booleani, posso
usare
&& e || come li userebbe l'utente in fase di input  !!!!!
( non so perchè ma mi ero fissata con l'idea  che in java si dovesse
scrivere AND(a,b)
e quindi se l'utente scrive a AND b avrei dovuto necessariamente fare
il parser della stringa..
sarà il caldo ...)
quindi il mio problema è ancora più semplice
l'utente inserisce
 "(a and b) or (not c)"  o alternativamente  "(a * b) + (~c)", come gli
pare
io trasformo in una stringa          s= "(a && b) || (~c)";
ora in matlab farei semplicemente eval(s), ma in java??
Ragazzi un aiutino, ci siamo quasiiii!!!!

 
javax.script in futuro, per ora disponibile utilizzando beanshell
http://www.beanshell.org/
Ciao,
     Bruno
P.S.
Il JavaDay č qui! Il 7 Luglio a Torino!
http://www.javaday.it
-- 
| Bruno Bossola
| A Java Software Engineer :-)
| 
http://digilander.iol.it/bbossola
| Coordinatore del JUG Torino - 
http://www.jugtorino.it


Ti ringrazio,
sinceramente speravo in qualche metodo più leggero, dato che deve
funzionare tutto in un applet
e dato che devo valutare solo exp. booleane, mi sembra di usare il
classico cannone contro un moscerino
Probabilmente scriverò un mio parser oppure utilizzerò una
manipolazione brutale di stringhe...

 
Uhm... mah, beanshell non è particolarmente pesante, comunque puoi 
sempre invocare dall'applet la funzione javascript di eval() e tutto 
funge :-)
Messa cosi, pero', mi sembra un esercizio universitario, quindi suppongo 
che il tuo docente voglia che tu usi un parser e non scorciatoie
Ciao,
     Bruno
P.S.
Il JavaDay è qui! Il 7 Luglio a Torino!


 il parser della stringa..
Secondo me, il parser devi fartelo comunque perche' credo sia quello lo 
scopo finale dell'esercizio :D
Soprattutto prestando attenzione alle valutazioni con parentesi.
Ah, gia' che ci sei, cerca di farlo il piu' riusabile possibile, perche' 
nulla preclude che un domani tu debba fare un parser (per esempio) per 
espressioni aritmetiche e avere una buona base ti potra' aiutare... 
metti per caso che ti trovi notazioni polacche dirette/inverse 
(prefisse/postfisse?).
Coraggio, tanto ci siamo passati tutti :P
Saluti
CarMas


Rispondo qui anche a CarMas
Grazie ad entrambi per le risposte
non è un esercizio, quindi posso usare la soluzione che preferisco
l'ideale sarebbe fare un parser, dato che anche altre volte ho dovuto
affrontare problemi simili, infatti ho comprato Building Parsers with
Java ed è in scaletta per le letture estive....
ma come al solito è meglio preparare una soluzione funzionante, da
tenere nel cassetto come 'paracadute', e poi studiare la soluzione
completa...
per ora farò un asemplice manipolazione brutale di stringhe,
sostituendo
true||false->true,  true&&false->false, (true)->true etc
finchè non rimane true o false, che poi è quello che farei se dovessi
valutare a mano.....

 
Boh, se vuoi vedere l'esempio di richiamo di javascript lo trovi qui:
http://www.jugtorino.it/vqwiki/jsp/Wiki?ComunicazioneJavaJavascriptEval
L'ho riesumato da un vecchio esempio ficcandoci dentro l'eval :-)


 writes:
C> (prefisse/postfisse?).
Prefisse e  postfisse, anche  se non sono  sicuro che la  prefissa sia
"polacca".
E  concordo sul  farsi  il parser.  Magari  avessi da  fare cose  così
divertenti per lavoro.
-- 
 /\           ___
/___/\_|_|\_|__|___Gian Uberto Lauri_____
  //--\| | \|  |   Integralista GNUslamico
\/                 e coltivatore diretto di Software


Porca puzzolona sapete che vi dico?
dopo un paio d'ore passate a giochicchiare con le stringhe devo
_purtroppo_ ammettere che devo fare un parser.... e va be, non si
finisce mai di imparare, almeno un giorno avrò qualcosa da raccontare
ai nipotini...
Ho iniziato a leggere "Building Parsers with Java"
Per lunedi' sarà tutto pronto? speriamo...
Mi dicono che java sia più facile del c++, anzi mi hanno detto
testualmente
' java è più facile del c++, e il K2 è  più basso dell'everest'
...;-)
(qualcuno ha già sentito questa frase?)