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

Répondre à