générer du code java dynamiquement - Java - Programmation
Marsh Posté le 24-10-2007 à 13:25:24
ReplyMarsh Posté le 24-10-2007 à 14:59:18
gzii a écrit : Python ou un autre langage interprêté ne seraient ils pas plus adaptés ? |
merci pour ta suggestion mais je n'ai pas le choix du langage.
Marsh Posté le 24-10-2007 à 16:43:17
Java est un langage compilé, pas interprété. Donc on n'est pas dans un monde dans lequel on peut s'amuser à "créer du code à la volée" (même si en Java, il y a des mécanismes qui rendent cela possible ; ceci dit, "possible" ne signifie pas "simple", bien au contraire).
Si ce que tu souhaites évaluer, c'est juste une expression mathématique, cela te sera plus simple de fabriquer une structure mémoire décrivant ton expression mathématique (c'est une forme de compilation). Par exemple sous forme d'arbre :
exp |
représenteront avantageusement l'expression "exp(2*(x+1))".
Chaque opérateur binaire (+, -, *, /, modulo) est transformé en un noeud de l'arbre à 2 noeuds fils, chaque opérateur unaire (- unaire pour obtenir l'opposé, et la plupart des fonctions mathématiques du genre sin, cos, exp, ln, ...) est transformé en un noeud à un seul fils, et les variables et les nombres littéraux sont transformés en noeuds sans aucun noeud fils (autrement dit, en feuilles de l'arbre).
Ensuite, une petite fonction d'évaluation qui parcourt récursivement ton arbre pourra te donner la valeur de la fonction pour une valeur quelconque de tes variables.
En plus, ce mécanisme te permettra de faire beaucoup d'autres traitements sur ta fonction mathématique que Java ne sait pas faire tout seul : par exemple, simplifier la fonction (0 * une expression bien compliquée = toujours 0 !), obtenir sa fonction dérivée, etc.
Marsh Posté le 24-10-2007 à 21:21:21
merci pour ton conseil, je pense que je vais m'orienter dans cette direction dans un premier temps du moins
Marsh Posté le 24-10-2007 à 12:27:29
Bonjour, dans le cadre d'une petite appli, je désire générer du code dynamiquement pour l'exemple suivant:
L'utilisateur entre une formule mathématique dans un champ de texte, par exemple e(2x) et je désire générer à partir de cette entrée une méthode java, par exemple
double calc(double x){
return Math.exp(2*x);
}
Quelle approche dois-je adopter ? Quels sont les outils ?
Par avance merci.