프로그래밍 언어 프로토 타이핑 (시맨틱, 타입 시스템, 평가, 속성 확인 등)을 위해 특별히 만들어진 프레임 워크가 있지만 최선의 선택은 특정 사례와 특정 요구에 따라 다릅니다.
말했듯이, 당신이 취할 수있는 여러 가지 대안이있을 것입니다 (아마도 언급하지 않은 대안 포함).
- 새로운 언어를 만들고 프로토 타이핑하도록 설계된 특정 언어 / 프레임 워크 사용 : 예를 들어, 프로그래밍 언어의 의미를 지정하고 확인하기 위해 라켓에 내장 된 도메인 별 언어 인 Redex [1]. 언어, 조판 (라텍스에서), 축소 흔적 검사, 단위 테스트 및 임의 테스트 (예 : 타이핑 확인)와 같은 작업을 쉽게 처리 할 수 있습니다.
- 특정 언어를 필요한 정도로 포착 할 수있는 한 특정 분석을 쉽게 정의하고 수행 할 수있는 일반 모델링 언어를 사용합니다. 합금 [2]는 이러한 접근 방식의 예입니다. 상당히 일반적이고 융통성이 있지만 언어는 상태 간의 관계로 모델링 될 수 있지만, 의미 확인이 의미론으로 표현 된 후 모델 확인 (예 : 해당 언어 내 평가)에 대한 지원은 무료입니다. 관계 모델 (예 : 언어의 의미론을 모델링하기위한 몇 가지 아이디어는 [3]에서 찾을 수 있음)
- 정리 증명자를 사용하여 언어를 삽입하여 속성을 확인하는 단계; Coq [4]와 같은 증명 시스템에 언어를 포함시켜 언어와 의미를 정의하는 예가있다 [4]. 5])
- Ott 사용 (이미 언급 한 바와 같이 Redex와 비슷한 정신을 가지고 있지만 포함되지 않고 새로운 정의 언어를 제공함); Ott를 사용하면 편리한 표기법으로 프로그래밍 언어를 정의하고 대부분의 검사 (즉, 교정)를 수동으로 수행해야하는 교정 시스템 (일반적으로 딥 임베딩)에서 조판 및 정의를 생성 할 수 있습니다.
- 범용 프로그래밍 언어에서 "처음부터"적절한 점검 (예 : 테스트)뿐만 아니라 언어 및 그 의미를 개발하고 필요한 경우 다른 시스템으로의 번역 (레온 [6]과 같은 일부 언어) 특정 속성을 자동으로 증명하고이 접근 방식을 증명 시스템에 포함시키는 것과 유사한 확인 기능이 내장되어 있습니다)
프레임 워크 / 도구를 사용하는 것이 얼마나 쉬운 지 (예를 들어 종이나 라텍스에 정의를 내리는 것처럼 쉬운 지)와 언어의 속성을 확인하는 메커니즘이 얼마나 강력한 지 (예 : 정리 증명의 언어는 매우 정교한 속성을 확인할 수 있습니다).
[1] 케이시 클라인, John Clements, Christos Dimoulas, Carl Eastlund, Matthias Felleisen, Matthew Flatt, Jay A. McCarthy, Jon Rafkind, Sam Tobin-Hochstadt 및 Robert Bruce Findler. 경량 기계화의 효과에 관한 연구를 실행하십시오. POPL, 2012.
[2] 다니엘 잭슨. 합금 : 가벼운 물체 모델링 표기법. TOSEM, 2002.
[3] Greg Dennis, Felix Chang, Daniel Jackson. SAT를 사용한 코드의 모듈 검증. ISSTA, 2006
[4] Coq 공식적인 증거 관리 시스템
[5] 프로그램에 대한 공식 추론. 아담 클리 팔라, 2016
[6] 기능성 스칼라 프로그램의 검증, 수리 및 합성을위한 Leon 자동화 시스템