2009-11-08 4 views
0

GLEE 그래프 라이브러리 및 C# 언어를 사용하여 소스 흐름에서 제어 흐름 그래프 (CFG)를 그려는 중입니다. 문제는, 나는 GLEE에게 새로운 것이다. GLEE을 빨리 시작할 수 있도록 자습서 나 샘플 프로그램/프로젝트가 필요합니다.GLEE 및 C#을 사용하여 제어 흐름 그래프를 그리는 데 도움이 필요합니다.

begin myProcedure 
    statement 1; 
    statement 2; 
    if(condition) then 
    statement 3; 
    else 
    statement 4; 
    end if 
end myProcedure 

모든 아이디어 : 나는 CFG을 그릴 필요가있는 소스는 다음과 같은 구조를 가지고있다?

답변

0

GLEE를 거의 2 년 동안 사용할 수 없다는 점을 감안할 때 C#을 처음 사용하는 것처럼 보입니다. (예제가 포함 된 유료 제품인 MSAGL로 대체되었습니다.) 먼저, 모든 예제를 찾고 두 번째로 지원을받습니다. $99 at the moment (아래 $ 295)에 대한 MSAGL을 구할 수 있으므로 시간 절약을 위해 투자 가치가있을 것입니다.

1

제어 흐름 그래프를 대답 (숙제?)에 고정 배선하지 않으면 그래프가이 문제의 어려운 부분이 아닙니다. 사용자 언어의 소스 코드에서 제어 흐름 그래프를 추출하는 것은 다음과 같습니다.

귀하의 예는 분명히 C# (BEGIN?)이 아니므로 언어 ​​파서를 찾아야합니다. 당신은 이름과 타입 해상도 (GOTO를 명명 된 블록의 레이블이나 출구로 처리하기 위해)를 수행하고 그래프 데이터 구조로 플로우 그래프를 구성하기 위해 뭔가가 필요할 것이다. GCC (간접 GOTO가있는 C와 유사한 언어)를 처리하는 경우 간접 GOTO의 가능한 대상을 결정하기 위해 포인터 분석이 필요합니다. C# 또는 Java를 처리하려는 경우 클래스 파일 (많은 문제가 있음)에서 컨트롤을 추출한 다음 해당 코드를 소스 코드에 매핑해야 할 수 있습니다.

제어 흐름 그래프 추출기를 빌드 할 수있는 많은 기계류 (구문 분석, 이름 확인, 제어 흐름 그래프 작성 라이브러리)가있는 경우 이러한 작업을 수행하는 것이 가장 쉽습니다. DMS Software Reengineering Toolkit은 이러한 모든 토대와 많은 언어의 파서를 제공합니다. C, Java 및 COBOL의 경우 DMS는 위의 모든 문제와 데이터 흐름 그래프도 처리하는 제어 흐름 그래프를 직접 추출합니다. sample control and data flow graphs을 참조하십시오. 당신은 당신이 따를 수있는 기쁨을 사용하여 그래프를 만들기위한 소스 코드를 분석 한 후

관련 문제