Le Vendredi 14 F�vrier 2003 11:28, [EMAIL PROTECTED] a �crit :
>
> Voici mon probl�me :
> J'ai un fichier de configuration qui contient une formule de type boolean
> (exemple : '(filter1 & filter2) | filter 3').
> Chaque filtre est une classe comportant une m�thode qui renvoie un boolean.
> Comment je peux remplacer dans ma formule les diff�rentes valeurs renvoy�es
> par mes filtres et ex�cuter la formule.
> Merci pour vos conseil.
>
Option 1) utilise un langage de script existant (Beanshell, Python, Rhino,
...)
Option 2) cr�� le 500 millioni�me langage de script.
... vu le nombre, tu dois t'imaginer que c'est tr�s facile d'en faire un sur
le gaz.
Grosso-modo, si filter1 est une classe (cela m'�tonne un peu, mais bon...),
utilise Class.forName("filter1") pour savoir laquelle que c'est, avec les
capacit�s de reflection du langage java (voir tutorial sur le site de sun, ou
le paquage java.lang.reflect et la class java.lang.Class) retourve la m�thode
correspondante � ton boolean, ex�cute cette m�thode, detecte les '&' et '|'
pour rep�rer les 'et' et les 'ou', et continue.
Si ton langage de script se complique, tu auras int�r�t � appliquer des
techniques du genre lex et yacc (voir http://pharos.inria.fr/Java pour des
outils java).
Bref, apr�s t'�tre bien amus� avec l'option 2), tu risques de revenir �
l'option 1)... BeanShell est probablement le plus facile pour ton cas. Tu
aurais dans ton fichier de config des trucs du genre chose.machin='(filter1 &
filter2) | filter 3'), avec un peu de chance avec BeanShell
(http://www.beanshell.org) cela passera directement.
A+.
--
SARL diaam informatique - 04 50 77 12 60
Ingenierie, d�veloppements de syst�mes d'information
http://www.diaam-informatique.com