2010-09-30 5 views
1

Nous utilisons actuellement l'analyseur de Jeks pour évaluer les expressions. Je ne vois pas une manière d'évaluer les expressions de chaîne avec - par exemple:Evaluateurs d'expressions mathématiques et de chaînes de caractères

IF (« Test 1 » = « Test 2 »)

Y at-il là-bas qui permet d'évaluer les expressions de chaîne et mathématiques Java? De préférence libre ou open source.

Merci pour toute aide,

Andez

+1

Ce n'est pas à distance du code Java syntaxiquement correct. Est-ce intentionnel? –

+1

Je suppose que c'est. Il est à la recherche d'un évaluateur Java pour un langage non Java (expressions chaînes et mathématiques). –

+0

Jetez un oeil à JEKS: http://www.eteks.com/jeks/en/ –

Répondre

0

La réponse était une publication sur le forum de Jeks. J'ai une réponse de Manu. Je pensais que ce n'était pas actif d'autant plus que je ne pouvais pas m'enregistrer dessus - mais ça s'est arrangé.

Mais si quelqu'un a le même problème, les lignes de code suivantes faire fonctionner:

ExpressionParser parser; // we did have = new ExpressionParser(new JeksExpressionSyntax(), null); 
JeksInterpreter interpreter; // 

Et pour créer l'interprète:

interpreter = new JeksInterpreter() { 

     @Override 
     public Object getBinaryOperatorValue (Object binaryOperatorKey, Object param1, Object param2) 
     { 
     // Only functions may take a cell set as parameter 
     if (param1 instanceof JeksCellSet || param2 instanceof JeksCellSet) 
      throw new IllegalArgumentException(); 
     // Enabled comparison between any type supported by Jeks 
     else if (binaryOperatorKey.equals (JeksExpressionSyntax.OPERATOR_EQUAL)) 
      return param1 != null && param1.equals (param2) 
        ? Boolean.TRUE : Boolean.FALSE; 
     // Enabled comparison between any type supported by Jeks 
     else if (binaryOperatorKey.equals (JeksExpressionSyntax.OPERATOR_DIFFERENT)) 
      return param1 != null && param1.equals (param2) ? Boolean.FALSE : Boolean.TRUE; 
     else 
      return super.getBinaryOperatorValue (binaryOperatorKey, param1, param2); 
     } 
    }; 

    parser = new ExpressionParser(new JeksExpressionSyntax(), null); 
1

Il y a beaucoup d'outils là-bas pour évaluer les expressions; la bonne réponse dépendra de vos objectifs exacts.

Deux choses que je regarderais:

+0

va vérifier les communs EL merci – Andez

Questions connexes