rightLeftExpr = ((E_LogicalAnd)leftExpr).getArg2();
// OR AND will become to AND OR OR
newOrExpr1 = new E_LogicalOr(leftLeftExpr, rightExpr);
newOrExpr2 = new E_LogicalOr(rightLeftExpr, rightExpr);
newAndExpr = new E_LogicalAnd(newOrExpr1, newOrExpr2);
this.resultExpr = newAndExpr;
// apply for subexpression again
newAndExpr.visit(this);
}
if (rightExpr instanceof E_LogicalAnd)
{
leftRightExpr = ((E_LogicalAnd)rightExpr).getArg1();
rightRightExpr = ((E_LogicalAnd)rightExpr).getArg2();
// OR AND will become to AND OR OR
newOrExpr1 = new E_LogicalOr(leftExpr, leftRightExpr);
newOrExpr2 = new E_LogicalOr(leftExpr, rightRightExpr);
newAndExpr = new E_LogicalAnd(newOrExpr1, newOrExpr2);
this.resultExpr = newAndExpr;
// apply for subexpression again
newAndExpr.visit(this);
}
}
}else
{
// E_LogicalAnd
this.resultExpr = new E_LogicalAnd(leftExpr, rightExpr);
}
}else
{
this.resultExpr = curExpr;
}