expression booléenne analyseur en Java
Existe-il des bibliothèques java, ou les techniques de l'analyse des expressions booléennes fragmentaire?
Ce que je veux dire est donnée une expression comme ceci:
T && ( F || ( F && T ) )
Il pouvait être décomposé en une expression de l'arborescence pour afficher les jetons causé le " F " de la valeur, comme (peut-être quelque chose comme ça):
T && <- rhs false
( F || <- rhs false
( F && T ) <- eval, false
)
Je suis en train d'essayer de communiquer expression booléenne des évaluations pour les non-programmeurs. J'ai tourné autour avec Anlr, mais je n'arrivais pas à faire beaucoup (il semble avoir un peu d'une courbe d'apprentissage).
Je ne suis pas opposé à l'écrire moi-même, mais je préfère ne pas réinventer la roue.
source d'informationauteur javamonkey79
Vous devez vous connecter pour publier un commentaire.
J'ai codé ceci à l'aide d' Javaluator.
Ce n'est pas exactement le résultat que vous recherchez, mais je pense que ça pourrait être un point de départ.
Ici est la sortie:
Vous pouvez le faire avec MVEL ou JUEL. Les deux sont l'expression de la langue des bibliothèques, des exemples ci-dessous sont à l'aide de MVEL.
Exemple:
Impressions:
faux
Si vous avez littéralement souhaitez utiliser les " T " et "F", vous pouvez le faire:
Impressions:
faux
J'ai récemment monté une bibliothèque en Java spécialement pour manipuler des expressions booléennes: jbool_expressions.
Il comprend un outil de trop analyser les expressions de chaîne d'entrée:
Vous pouvez également faire assez simple de simplification:
donne
Si vous voulais étape à travers l'attribution ensuite, vous pouvez attribuer des valeurs une par une. Pour l'exemple ici,
montre
et vous pourriez résoudre en attribuant B.
montre
Pas à 100% ce que vous demandez, mais j'espère que ça aide.
Découvrez BeanShell. Il dispose d'analyse des expressions qui accepte Java syntaxe.
EDIT: Sauf si vous essayez de réellement analyser
T && F
littéralement, si vous pouvez faire cela en BeanShell à l'aide de la littérauxtrue
etfalse
.mXparser poignées d'opérateurs Booléens: vous trouverez quelques exemples
Exemple 1:
Résultat 1:
Exemple 2:
Résultat 2:
Pour plus de détails, veuillez suivre mXparser tutoriel.
En ce qui concerne meilleur