2012-07-23 4 views
1

현재 주어진 AST의 구조를 주어진 OutputStream 객체에서 일반 텍스트로 인쇄해야하는 lombok.ast 트리에 대한 Abstracty 구문 트리 방문자를 개발 중입니다.AST 방문자를 테스트하기위한 Java 소스 코드

디버깅 단계의 속도를 높이려면 이미 Java 구조 중 대부분 (전부는 아니지만)을 포함하고있는 테스트 소스 코드가 있습니까? 아주 많은 특수한 케이스와 기묘하고 이상한 (그러나 여전히 가능할 수있는) 것들이 많이 있으므로 잊어 버리기가 너무 쉽습니다.

정확하게 테스트 케이스로 생각할 필요는 없지만 복잡성과 다양성이 많은 소스 코드로 충분합니다.

누구에게나 미리 감사드립니다.

편집 : lombok.ast의 방문이 언제 끝나는 지 이해할 수있는 방법이 있는지 아는 사람이 있습니까?

+1

openJDK에는 아마도 Java 구문 분석을위한 테스트 케이스가 포함되어있을 것이다. –

+0

좋은 생각, 고마워요 – Alex

답변

0

sources of the openJDK (jdk7/test으로 검색)을 확인해야합니다.

방문자 패턴을 사용할 때 방문이 언제 끝나는 지 항상 알기 어렵습니다. 부모 노드가 처음 발견되었을 때 호출되지만 모든 자식이 방문한 후에는 다시 호출되지 않습니다.

일반적인 해결책은 노드를 방문하는 동안 정보를 수집 한 다음 모든 노드를 방문한 후 수집 된 정보를보고 실제 처리를 수행하는 것입니다.

+0

그게 내가하려는거야, 문제는 내 린치 도구에 의해 발견 된 모든 CompilationUnit 노드 (각 Java 소스 파일의 약자로)에 방문자가 호출된다는 것입니다. 부모 또는 형제에게 무엇이든지 참조되므로이 CompilationUnit 노드 다음에 다른 노드가 있을지 이해할 수 없습니다. – Alex

+0

방문자에 전역 변수를 설정하고 null이 아닌지 확인하십시오. 그렇다면이 방문 전에 한 명있었습니다. 마지막 방문을 제외하고는 모든 문제가 해결됩니다. 또는 보푸라기 도구의 소스를 가져 와서 패치 할 수 있습니다. –