2016-11-14 5 views
0

で特定の要件のための式を評価します組み合わされて化合物の表現になる。は、私は<strong>式以下があり</strong>オブジェクトを持っているのjava

public SimpleExpresssion createcompound(SimpleExpression simple1,SimpleExpression simple2)  
    { 
     CompoundExpression ce = new CompoundExpression(); 
     ce.lhs(simple1); 
     ce.rhs(simple2); 
     ce.operator(AND);  
    } 

複雑な例は、((1AND2)OR(3OR4))1,2,3,4が表現オブジェクトです ようになります。 私は式のかっこの設定に基づいて式を評価するロジックを探しています。 注: CompoundExpressionは、の拡張クラスであり、式であり、最終的な出力はExpressionオブジェクトです。 簡単に解決できますか?そうでない場合は私のオプションは、複雑な式((1AND2)OR(3OR4))は、プレフィックス表記に書き換えることができ

答えて

0
  1. 同等の後置式に式を変換します。
  2. スタックを使用して後置式を評価します。
0

ものです:

OR(AND(1,2), OR(3,4)) 

したがって、あなたが必要とする唯一のものは、コンストラクタや工場でありますオペレータ、左右の抽象的表現:3つのパラメータを持つCompoundExpressionの方法次に

CompoundExpression(Operator o, Expression left, Expression right) { 
    this.operator = operator; 
    this.left = left; 
    this.right = right; 
} 

、あなたは4つの単純な式を持っていると仮定して、結果の式を構築することは簡単です:

Expression result = new CompoundExpression(OR, 
    new CompoundExpression(AND, simple1, simple2), 
    new CompoundExpression(OR, simple3, simple4) 
); 
+0

提供されている解決策が今後の道のりであるようです。それは一般化することはできますか? –

+0

あなたは何を達成したいのか分かりません。このようなクラスを使用すると、任意の式の抽象構文木(AST)を手動で構築できます。 – pkalinow

+0

私はその表現を評価したいと思っていました。私は最初にpostfix式に変換し、スタックを使ってそれを評価するという解決策をとった –

関連する問題