현재 I/O 용으로 주어진 함수에서 변수 종속성을 찾기 위해 프로젝트를 진행하고 있으며 Pycparser로 작업하도록 선택했습니다. 내 코드는 현재 방문자 클래스가 하나 뿐이며 노드 클래스가 몇 개 있습니다. AST를 통과하고 각 변수 할당, 선언, 입력, 출력 및 If 문에 대한 노드를 만듭니다.Pycparser를 사용하여 변수 종속성 파싱
a = b + c/2;
는 이름의 노드를 만들 것 'A'와 'B'와 'C'의 가장 최근의 노드에 연결 :이 노드는 자신의 종속성을 예를 들어, 저장되어있는 목록 - 속성이 있습니다.
내 질문은 여기에서입니다. 출력 변수를 연결하는 방법에 대한 일반적인 아이디어가 있습니까?
return b;
이 코드는 최신 인스턴스 인 'b'와 별개로 종속성에 대한 정보를 제공하지 않습니다. 그러나 내가 얻을 수있는 모든 솔루션은 'b'의 이전 노드도 추가합니다. 예 :
b = 3;
b = b + 4;
나는 출력 의존성을 위해 이들 'b'노드를 모두 원하지 않습니다. 하지만 여러 경로가 If 문에서 가져온 경우 각 경로에서 가장 최근의 경로 만있는 경우 여러 노드가 필요할 것입니다. 모호한 질문이 있으면 추천 할 수있는 변수 종속성을 찾는 방법이나 출처가 있습니까? 간단히 말해서,이 프로젝트가 달성해야하는 것은 출력 x에 대한 것입니다 (다중 출력이있을 수 있습니다). 어떤 입력이 의존하고 있는지 알아 내고 싶습니다. 이것은 다른 변수에 따라 여러 시나리오가 될 수 있습니다. 다른 의존성의 예 :
int function(int a, int b, int c, int d, bool z){
int x;
if(z){
x = a + b;
}
else{
x = c + d;
}
return x;