Пример #1
0
 public Expression getIncrVal() {
   if (incr instanceof StmtExpr) {
     StmtExpr se = (StmtExpr) incr;
     if (se.getExpression() instanceof ExprUnary) {
       ExprUnary eu = (ExprUnary) se.getExpression();
       int op = eu.getOp();
       if (op == ExprUnary.UNOP_POSTINC || op == ExprUnary.UNOP_PREINC) {
         return ExprConstInt.one;
       }
       if (op == ExprUnary.UNOP_POSTDEC || op == ExprUnary.UNOP_PREDEC) {
         return ExprConstInt.minusone;
       }
     }
   }
   if (incr instanceof StmtAssign) {
     StmtAssign sa = (StmtAssign) incr;
     if (sa.getOp() == 0) {
       if (sa.getRHS() instanceof ExprBinary) {
         ExprBinary eb = (ExprBinary) sa.getRHS();
         if (eb.getLeft().equals(sa.getLHS())) {
           return eb.getRight();
         }
         if (eb.getRight().equals(sa.getLHS())) {
           return eb.getLeft();
         }
       }
     }
     if (sa.getOp() == ExprBinary.BINOP_ADD) {
       return sa.getRHS();
     }
     if (sa.getOp() == ExprBinary.BINOP_SUB) {
       return new ExprUnary("-", sa.getRHS());
     }
   }
   return null;
 }