Newsgroup: it.comp.java
Titolo: Codice AUTOSCRIVENTE

Lo so che è una questione strana, ma è sicuramente interessante:
dovrei creare un'applicazione che utilizza degli algoritmi per ricercare
parole in un testo.
Gli algoritmi vanno aggiunti e modificati nel tempo, visto che le parole da
cercare cambiano, e per ogni parola c'è un modo diverso di ritrovarla, che
dipende da dove si trova nel testo (vedi Espressioni Regolari) Quindi
l'utente (che può essere anche ESPERTO) deve essere in grado di specificarne
di nuovi, o modificare i vecchi.
Praticamente dovrei scrivere del codice che permette di scriverne dell'alto,
ma come???

Mauro Sanfilippo wrote:

Definisci un linguaggio, usabile dal tuo utente, che gli permetta
di specificare le sue ricerche e poi realizza un interprete
di quel linguaggio.
- Dario

 - Dario
Complimentoni... ottima soluzione ;-)


Questa è una soluzione senz'altro valida, anche se dal mio punto di 
vista (un pelo niubbo :D) sembra difficile o quantomeno lunga da 
implementare... Se fossi in te, avessi di fronte un'utenza esperta e 
dovessi manipolare del testo, lascerei all'utente l'onere di scrivere le 
pattern che più gli aggradano per farle utilizzre dal programma. Per chi 
non conosce le RegExp puoi sempre fare dei "wizard" per generarle in 
base a delle condizioni (tipo cerca questo vicino a questo, o cerca 
questo ma escludi questo etc.).
Spero di essere stato d'aiuto.
Ciao! :)
Ivan

In realtà è, previsto che l'utente che "configura" il sistema per matchare i
testi sia in grado sia di scrivere le regex, sia di programmare (per inciso
potrei essere io stesso quell'utente). Poi l'utente inesperto deve solo
applicare le regole a un certo gruppo di file. Il fatto è che per matchare
un testo di cui non sai il contenuto (ad esempio gli autori di un certo
numero di quadri, in un gruppo di file che contiene didascalie tutte
strutturalmente simili ma con info diverse), non basta quasi mai una singola
regex, ma bisogna applicare regex diverse a risultati di regex precedenti,
magari a all' terza occorrenza del secondo risultato ecc, cosa che è facile
con strutture di controllo tipiche di un ling.di prog. ma che richiederebbe
ogni volta di riscrivere e ricompilare il programma. Perciò ho pensato al
codice che si autoscrive..
"Merlin" <merli...@SPAMfreemail.it> ha scritto nel messaggio
news:MSppc.192143$hc5.8...@news3.tin.it...


 codice che si autoscrive..
Uhm ma i file di testo devono x forza essere strutturati cosi' ?
(vengono fuori da qche parte o li fate voi apposta?)
perche' imho sarebbe molto meglio gestirli in XML...
o addirittura in RDF e poi usare Jena per effettuare le ricerche...

 ha scritto nel messaggio
news:c87vvq$fp1$1...@lacerta.tiscalinet.it...


 codice che si autoscrive..
"Autoscrive" ? "Ricompilare" ?
Naaah...troppo farraginoso ! Pensa solo al casino per classpath e 
amenità varie (ti parlo per esperienza di programmi, come li chiami tu, 
auto-scriventi). Piuttosto potresti definire delle API standard 
(ricerca, apertura cataloghi, lettura preferences, etc..) e lasciar 
utilizzare qualche linguaggio di scripting tipo Rhino, Beanshell o 
ancorta meglio BSF (che ti permette di utilizzare QUALSIASI ling. di 
scripting) ai tuoi utenti, otterrai due piccioni con una fava: le 
performance non saranno degradate e l'utente potrà utilizzare i 
costrutti di un linguaggio di programmazione !
-- 
  -- + Setaceous Pig + --
http://www.jroller.com/page/megadix/