2011-07-05 5 views
1

いくつかの条件と論理演算子を含むことができる文字列を検証しようとしています。 例えば、 私の入力式はこのようなものが考えられます、入力文字列は、実行時にキャプチャされ論理演算子と一部の条件のみを含む文字列を検証します。

(var1==var2 AND var2==var4) OR (someothervar!=5) AND (somemorevar=<4 OR var5<10) 

その後、私はJavaの読み込み可能な表現にこの文字列に変換されるだろう、

(var1==var2 && var2==var4) || (someothervar!=5) && (somemorevar=<4 || var5<10) 

何でもかまいません。私の懸案事項は、入力文字列を有効な式として検証することです。後でANDとORのみを& &と||に置き換えることができます。評価します。

+0

この[Javaからスクリプトを呼び出す](http://www.beanshell.org/examples/callscript.html)が見つかりました。ホームページに行くと、Javaコードを解析して実行時にそれを評価するためのlibと思われます。より良い発見ができるgoogleで 'java evaluate at runtime 'を検索してみてください。 – Lynch

+0

また、ここに同様の質問を持つ他のスレッドがあります:[convert-string-to-code-in-java](http://stackoverflow.com/questions/935175/convert-string-to-code-in-java )。 – Lynch

答えて

0

構文木を構築したいと思うようです。 JavaCC ant ANTLR

0

なぜ入力を検証する必要があり、まだ「AND」と「OR」という言葉を置き換える必要がある場合は、「AND」と「OR」を許可していますか?ただ単に必要とする||入力の検証の一部として& &を入力し、「AND」と「OR」を許可するステップをスキップします。

検証の考え方は、入力文字列に対して正規表現を実行することです。私はRegexにはあまり精通していませんが、私の推測では、開いた括弧が終わりと一致し、少なくとも2つの "="記号などがあることを確認する正規表現を得ることができる、思考。

+0

入力はAND/OR形式になるようにバインドされています。私はいくつかの制限のためにそれを変更することはできません。 – Pramod

0

ルールエンジン/パーサーを構築し、人間が判読可能な形式でルールを渡しているようですね。

この場合、Droolsのような既存のルールエンジンを確認する必要があります。ルール構文は読みやすい形式であり、ルールエンジンが非常に強力です。ルールが複雑になると、ルールエンジンは非常に強力になります。

0

お試しくださいJEPです。