JML을 읽을 수있는 Java로 작성된 파서를 찾고 있습니다.JML 용 간단한 파서
기본적으로 파서가 JML 블록을 읽고 어떤 메소드에 속해 있는지 알고 싶습니다.
저는 OpenJML 프로젝트를보고 있었지만 프로젝트 설정이 너무 많습니다.
JML을 읽을 수있는 Java로 작성된 파서를 찾고 있습니다.JML 용 간단한 파서
기본적으로 파서가 JML 블록을 읽고 어떤 메소드에 속해 있는지 알고 싶습니다.
저는 OpenJML 프로젝트를보고 있었지만 프로젝트 설정이 너무 많습니다.
나는 당신이 원하는 것을 정확하게하거나 심지어 원하는 것에 가까운 도구를 발견 할 것입니다.
//@ ...
및 /*@ ... @*/
의 입력 파일을 직접 검색하여 메소드 선언이 바로 뒤에 오는 "부분적인"Java 문법을 작성할 수 있습니다. "partial"은 입력 소스를 의미 론적으로 파싱하지 않지만 어휘 수준에서만 수행한다는 것을 의미합니다 (토큰 만). 문자열 리터럴을 고려해야합니다. String s = "/*@";
문자가 JML 사양의 시작이되기를 원하지 않을 것입니다. 자바에 대한
두 잘 알려진 파서 생성기는 다음과 같습니다
는 그립에 도착 둘 중 하나는 새로운 것, 특히, 시간이 조금 걸릴 것입니다 파서 생성기를 사용할 수는 있지만 일단 파문이 생기면이 작업을 안정적으로 수행 할 수있는 작은 문법을 작성하는 것은별로 어렵지 않습니다.
생각이 재미 있지만, 파서 생성에 대해 배울 시간이 없습니다. 나는 RegEx의 몇 가지 질문에 대해 의견을 개진 할 수 있다고 생각합니다. –
정규식으로 사용하면 신뢰할 수 없습니다. 유효한 JML 사양을 문자열 리터럴 (' ".../* @ ..."')과 내부 주석 ('// ... @ */...') 안에있는 것과 구별 할 수 없습니다. . –
위의 예제는 결코 발생하지 않을 수 있지만 여러 개의'//'또는'/ * ... * /'를 사용하여 많은 코드가 주석 처리 될 때마다 정규 표현식은 여전히 내부의 JML 사양과 일치합니다 그 블록들. 간단히 말해서 : 정규 표현식이 트릭을 수행 할 수도 있지만 결코 "생산 가치있는"솔루션 인 IMO가 될 수 없습니다 (그리고 나는 정규식 애호가입니다!). –