Newsgroup: it.comp.java
Titolo: SCHEMA AD ALBERO PER vocabolario ALGEBRICO problemi

Sono arrivato a scoprire e capire che uno dei sistemi + efficienti per un
vocabolario algebrico che analizzi una stringa e ne esegua i calcoli è
quello di usare uno schema ad albero... ora avrei bisogno di qualche link
che spieghi un poco come strutturare la classe per l'analisi e la
scomposizione della stringa nelle sue unità operative :
Per quanto riguarda l'albero ho già creato una classe che funziona
egregiamente mentre sono ancora molto incerto su come fare a scomporre la
stringa nel giusto ordine...
Avevo pensato qualcosa del genere per esempio :
anzitutto cercare le parentesi aperte e chiuse .. quindi individuare una
sequenza "parentesi aperta, altri caratteri, parentesi chiusa", estrarne i
caratteri e inserirli in un char[] e cancellare poi dalla stringa i
caratteri appena estratti, quindi ripetere l'operazione segando i caratteri
contententi spazi " " ( visto che i char se non erro non possono dopo
l'inizializzazione essere eguagliati a null ... (?) )
Ad ogni modo ho il tremendo sospetto di non star facendo le cose in modo
giusto e che poi l'algoritmo di decodifica della stringa non riesca a
riprodurla fedelmente nello schema ad albero... !
Inoltre l'albero che ho creato contiene 2 rami ( left e right) e un
object... supponiamo che nell'obiect ci metta l'operatore  "cos" per esempio
come faccio poi quando devo eseguire il calcolo ad evitare di fare 50 if che
vanno in cerca di cosa ci sia la dentro per eseguirne il calcolo ???????ho
aperto un class di un parser trovato in rete con decafe e ho notato che ci
sono dei switch e dei "case caso1:" ma soprattutto case è un operatore che
non conosco e non son riuscito a comprenderlo cercando sulla sun doc.
Bhe se qualcuno ha capito il mio problema.. anzi i miei problemi .. anzi
anche uno solo dei miei problemi .. mi risponda per piacere e mi farà un
gran favore :)

 gran favore :)
Non credo di aver capito bene il tuo problema :), ma da quel poco che mi 
pare di aver intuito tu stai cercando di scrivere un parser.
Informazione gratuita: la teoria che sta dietro ai parser non e' poca 
(anche se non eccessiva e sicuramente molto interessante), anche se, per 
usarli (specie per espressioni aritmetiche), non e' certo assolutamente 
necessario conoscerla.
I tipici generatori di parser (tu gli dai una grammatica, e loro ti 
danno in output il programma che riconosce quella grammatica) sono yacc 
(yet another compiler compiler) e la rivisitazione GNU "bison". 
Problema: lavorano in C :)
Ne esistono anche per Java (programmi Java che prendono una grammatica e 
ti forniscono in output un parser in Java). Una volta c'avevo guardato, 
avevo un certo tot di link... adesso, direi di guardarti 
http://www.jflex.de/
 - nella home ci sono altri link per il resto di 
programmi che ti servono.
Probabilmente un parser per le espressioni aritmetiche potresti anche 
scrivertelo a mano, ma come noti e' facile cadere in dei pitfall 
abbastanza insidiosi... quindi, nonostante tutto, di solito la soluzione 
piu' semplice ed elegante e' quella di usare dei generatori automatici.
-- 
/**
  * Mattia Belletti - Undergraduate student @ 
cs.unibo.it
  * ICQ: 33292311   - email: 
mbel...@cs.unibo.it
  * IRC: BluShine   - site(s): 
http://cs.unibo.it/~mbellett
  * Linux registered user 299762 @ Linux registered machine 213003
  */

 egregiamente 
Peccato perché non serviva :)
In effetti come ti hanno già suggerito quello di cui hai bisogno è un
parser. E non solo, prima del parser ci vuole un analizzatore lessicale che
generi i token da passare al parser (analizzatore sintattico).
Dicevo che non serviva la classe che gestisce l'albero perché questo viene
creato dal parser stesso durante il processo di analisi della stringa. Se
sai cosa siano una grammatica formale e gli analizzatori lessicali e
sintattici non ci metterai molto a fare quello che ti serve.
Altrimenti non credo che puoi fare molto. Valuta tu se vale la pena di
studiarsi un po' di informatica teorica per quello che stai facendo.
Personalmente non credo che sia possibile scrivere una grammatica senza
sapere cosa sia, ne tantomeno le regole semantiche senza sapere come
procede un parser bottom-up (o top-down ma in genere i tool realizzano il
primo).
Io ho usato JLex e CUP il primo genera analizzatori lessicali, il secondo
sintattici.
Ciao
Matteo
-- 
chi sono e soprattutto chi non sono:
http://www.ilnomedeldominio.it
un programma per studenti universitari:
http://inutility.ilnomedeldominio.it/imsv/

 ha scritto nel messaggio
news:YObxb.178$yq1...@tornado.fastwebnet.it...

Ti ringrazio della dritta.. ma te hai quache link .. in italiano o al limite
in inglese che descriva questo tipo di grammatiche ...? tipo JLex e CUP
generano codice già bello e impacchettato... ( e magari pesantuccio ? )
mentre io vorrei qualcosa su misura .. una classe di qualche k che facesse
tutto il lavoretto...
Mi serve qualche link....