2011-02-05 2 views
2

JavaCC 버전 5.0을 사용하고 있습니다. Eclipse Galileo로.JavaCC : 경고가 너무 많습니다.

그러나 내 jj 파일에서 "static = true"옵션을 설정하면 생성 된 TokenManager 파일에 "static 메서드에서 SimpleCharStream의 정적 메서드 readChar()를 정적 메서드로 액세스해야합니다"와 같은 많은 경고가 표시됩니다. 또한 jj 파일의 모든 가져 오기가 TokenManager로 복사되어 사용되지 않는 것으로 플래그가 지정됩니다. 이 문제를 방지 할 수있는 옵션이 있습니까?

이 부분은 issue was fixed in JavaCC v4.1으로 보입니다. 그럼 왜 아직도이 문제에 직면 해 있습니까?

+0

항상 STATIC을 false로 설정해야합니다. –

+0

왜? 이유에 대한 조언을 해 줄 수 있습니까? – athena

+0

@LaurentPireyn, 나는 당신의 업데이트 된 링크 http://lpireyn.pisolutions.eu/blog/2011/02/14/taming-javacc/ –

답변

0

이러한 경고는 정확하지만 권장되지 않는 코드 때문입니다. 생성 된 코드를 직접 수정하는 것은 좋지 않으므로 Eclipse (Java> 컴파일러> 오류/경고)에서 이러한 경고를 비활성화하는 것이 좋습니다.

이러한 경고를 사용하지 않도록 프로젝트 별 설정을 사용하는 것이 좋습니다 (모든 프로젝트에서 사용 중지되지 않도록). 생성 된 모든 코드를 프로젝트에 넣고 코드를이 프로젝트에 의존하도록 할 수 있습니다. 코드에 대한 경고를 유지할 수 있습니다.

+0

경고를 해제하고 싶지 않아 독자를 가리 키도록합시다. JavaCC 코드를 별도의 프로젝트로 분리 할 수는 없습니다. – athena

1

JavaCC는 정적으로 전환 할 때 기존의 생성 된 클래스를 삭제하지 않습니다. 이 동작은 클래스를 변경하거나 자신의 버전을 제공 한 경우를위한 것입니다.

생성 된 모든 클래스를 삭제하고 'static = true'로 설정 한 다음 다시 시작하십시오. 모든 것이 효과가있다.

빌드를 자동화하는 경우 (Ant와 같이) JavaCC 생성 클래스를 삭제하고 다시 생성하면 테스트중인 것을 재현 할 수 있습니다.

Eclipse에 관해서 ... JavaCC 입력 파일을 변경할 때 Ant 스크립트를 실행하도록 지정할 수 있습니다.

+0

다시 생성 된 클래스에서이 문제가 있습니다. 예. Token Manager 클래스는 사용되지 않은 가져 오기에 대한 경고를 제공합니다. 정적 메서드를 정적이 아닌 방법으로 사용하는 것에 대한 경고도 있습니다. – athena