이미 제대로 작동하는 컴파일러를 작성했습니다. 모든 void가 아닌 메소드에는 적어도 하나의 return 문이 있는지 확인하지만 비 void 메소드 내의 모든 코드 경로가 값을 리턴하는지 점검하지 않습니다. 따라서, 예를 들어, 나는 다음과 같은 코드가있는 경우 :메서드가 항상 값을 반환하는지 확인하는 방법
가int function(bool a)
{
if(a){
return 5;
}
}
그것은 "좋은"컴파일하고이 false 인 경우, 제어 기능을 삭제하고 기능에 따라 정의 된대로 실행 유지됩니다.
이 검사를 수행하는 데 사용할 수있는 알고리즘이 있습니까? 그래서 항상 메소드가 항상 값을 반환하는지 알 수 있습니까? 또는 바퀴를 재발 명할 필요가있을 것인가?
꽤 많은 컴파일러 트릭에는 권장 내부 표현 등을 포함한 이미 사용 가능한 알고리즘이 있습니다. http://en.wikipedia.org/wiki/Data-flow_analysis 동일한 언어에 대한 기존 컴파일러의 주석 처리 된 소스 코드 읽기 (사례에서 'C'와 유사하므로 http://stackoverflow.com/questions/를 선택하십시오. 584714/is-there-an-interpreter-for-c) 아마도 당신이 불분명하고 광범위한 질문을 – xmojmr