문제

일부 코드 생성 도구를 연구하고 있으며 스코프 분석을 통해 많은 복잡성이 이루어집니다. 나는 종종 자신이 같은 것을 알고 싶어한다는 것을 알게됩니다

  1. 함수 또는 블록의 자유 변수는 무엇입니까?
  2. 이 상징은 어디에 선언됩니까?
  3. 이 선언은 무엇을 마스크합니까?
  4. 이 기호의 사용이 초기화 전에 잠재적으로 발생합니까?
  5. 이 변수가 잠재적으로 탈출 할 수 있습니까?

그리고 나는 내 범위를 다시 생각할 때라고 생각합니다.

이 모든 분석을 수행 할 수는 있지만 API를 구조화하여 사용하기 쉽고 이상적으로는이 작업을 게으르게 수행 할 수 있도록 API를 구조화하는 방법을 찾으려고 노력하고 있습니다.

이와 같은 도구는 친숙하고 API에서 옳고 그름을 어떻게 수행 했습니까?

도움이 되었습니까?

해결책

나는 수많은 코드 생성을했고 범위를 범하는 문제는 거의 나오지 않기 때문에 질문에 약간 놀랐습니다 (때로는 욕구를 제외하고는 거의 발생하지 않습니다. 고유 한 이름을 생성하십시오).

예제 질문에 답변합니다 범위를 넘어서 진지한 프로그램 분석이 필요합니다. 탈출 분석 자체는 사소한 일입니다. 사용 전 이용 전이는 대상 언어에 따라 사소하거나 사소하지 않을 수 있습니다.

내 경험상 프로그램 분석을위한 API는입니다 디자인하기 어렵고 자주 언어에 따라 다릅니다. 저수준 언어를 목표로하는 경우 기계 suif 아피스.

당신의 장소에서 나는 유혹을받을 것입니다 프로그램 분석을 위해 다른 사람의 프레임 워크를 훔치십시오. George Necula 그리고 그의 학생들은지었습니다 , C 코드 분석의 현재 표준 인 것 같습니다. 로리 헨렌의 그룹은 Java를 분석하기위한 멋진 도구를 만들었습니다.

내가 내 자신을 굴려야한다면 나는 API에 대해 덜 걱정하지 않고 추상적 인 균사 나무에 대한 정말 좋은 표현에 대해 더 걱정합니다.

매우 제한된 데이터 흐름 분석 영역 (초기화되지 않은 변수 질문 포함)에서 João Dias와 나는 일부를 조정했습니다. Sorin Lerner, David Grove 및 Craig Chambers의 좋은 작업. 우리 만 예비 결과 출판됩니다.

마지막으로 원한다면 여러 언어로 코드를 생성합니다 이것은 벌레의 완전한 캔. 나는 그것을 여러 번 심하게 해냈다. 좋아하는 것을 만들면 게시하십시오!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top