우리는 arraylist를 가진 자바 테스트 프로젝트를 만들었습니다.제약은 Java 코드를 리팩토링하기 위해 추론 된 타입을 해결합니다.
private ArrayList mainList;
public void AddTest(int number)
{
Test t = new Test();
mainList.add(t);
mainList.add(number);
}
우리가 볼 수 있듯이 정수와 Test 클래스의 것을 추가합니다.
OFG: {
<|java+class:///java/util/ArrayList/this|,|java+constructor:///java/util/ArrayList/ArrayList()|>,
<|java+variable:///test1/Main/AddTest(int)/t|,|java+field:///test1/Main/mainList|>,
<|java+class:///test1/Main/this|,|java+constructor:///test1/Main/Main()|>,
<|java+parameter:///test1/Main/AddTest(int)/scope(number)/scope(0)/number|,|java+field:///test1/Main/mainList|>,
<|java+class:///test1/Test/this|,|java+constructor:///test1/Test/Test()|>,
<|java+class:///test1/Test/this|,|java+field:///test1/Main/mainList|>
}
로는 OFG의 정수를 볼 수 있고, 테스트가 mainList 첨가 얻을
: 는 레스 우리는 다음과 같이 구성 객체 흐름 그래프를 생성한다. 우리는 가장 낮은 유형 또는 일반화를 찾을 제약 해결사가 필요이를 위해>private ArrayList<Object> mainList
-이 지식을 사용하여 우리는 Object 유형 따라서 private ArrayList mainList
을 포함해야하는 ArrayList를을 표시합니다. 따라서 우리는 다음과 같은 전파 방법 그러나
rel[loc,&T] propagate(OFG g, rel[loc,&T] gen, rel[loc,&T] kill, bool back) {
rel[loc,&T] IN = { };
rel[loc,&T] OUT = gen + (IN - kill);
gi = g<to,from>;
set[loc] pred(loc n) = gi[n];
set[loc] succ(loc n) = g[n];
solve (IN, OUT) {
IN = { <n,\o> | n <- carrier(g), p <- (back ? pred(n) : succ(n)), \o <- OUT[p] };
OUT = gen + (IN - kill);
}
return OUT;
}
의 해결 기능을 확대하려는, 우리가 어려운이 사용 불량배 우리는 IBM ILOG 경험이 시작 찾을 때문에 제약 프로그래밍은 새로운 것이 아니다.
의 시작점을인가 발견하고 해결 시작할 수 있는가? – nvanson