AST를 사용하여 Eclipse 코드 형식화 플러그인을 작성 중입니다.AST Eclipse, InfixExpression을 작성하려고합니다.
이 코드 사용하여 InfixExpression를 만들기 위해 노력하고 있어요 :
makeInfixExpression(t, r, InfixExpression.Operator.PLUS, asgnThen.getRightHandSide(), otherAsgn)
선언 :
final Assignment asgnThen, final Expression otherAsgn;
하지만에서 다시 점점 오전 InfixExpression이 명령으로
public static InfixExpression makeInfixExpression(final AST t, final ASTRewrite r, final InfixExpression.Operator o,
final Expression left, final Expression right) {
final InfixExpression $ = t.newInfixExpression();
$.setOperator(o);
$.setRightOperand(right.getParent() == null ? right : (Expression) r.createMoveTarget(right));
$.setLeftOperand(left.getParent() == null ? left : (Expression) r.createMoveTarget(left));
return $;
}
을 이 함수는 내가 보낸 매개 변수에 따라 3 + 4 대신 0 + 0입니다. 일부 디버깅 후 createMoveTarget 부분이 엉망이된다는 것을 알았지 만 그냥 바꿔서 예외를 던지면 .... t.newNumberLiteral을 사용하여 2 개의 새로운 lietrals를 만들고 무엇을 asgnThen.getRightHandSide 및 otherAsgn 함수가 적절한 InfixExpression을 반환하는지에 대한 값을 정의하십시오. 그러나 문제는 NumberLiteral 일 필요가 없으므로 문제가되지 않습니다. 플러그인에서 미리보기를 볼 수있게하면 "3 +"이고 0 + 0 ... wierd는 계속 진행됩니다.
제안 사항?
감사합니다.