2016-11-14 6 views
0

의 특정 요구 사항에 대한 식을 평가 결합 된 복합 표현.나는 다음이 <strong>표현</strong> 객체가 자바

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 (Abstract Syntax Tree)를 수동으로 작성할 수 있습니다. – pkalinow

+0

표현을 평가하고 싶었습니다. 나는 먼저 postfix 표현식으로 변환하고 스택을 사용하여 그것을 평가하는 해결책을 가졌다. –