.NET에 문법을 정의하고 프로그래밍 언어를 생성 할 수있는 것이 있습니까?


18

프로페서가 최종 프로젝트를 위해 DSL을 만들도록 요청한 과정이 있습니다. 그는 xText 를 이클립스와 함께 첫 번째 코스에서 소개 했습니다. 이 과정은 새로운 과정이므로 도메인 별 언어의 의미에 대해서는 약간 모호합니다.

이것이 나의 현재 이해입니다 : 도메인 특정 언어는 소프트웨어 개발의 특정 문제를 위해 만들어진 언어입니다. DSL의 예로는 PHP, SQL, JavaScript가 있으며 그 반대의 경우 Java, C #, C ++, Ruby 등의 언어가 있습니다.

내가 틀렸다면 언제든지 바로 고쳐주세요.

내가 알고 싶은 것 : Xtext와 비슷한 .NET / Visual Studio 도구가 있는데, 문법을 정의하고 활동 다이어그램을 기반으로 프로그래밍 언어를 생성 할 수 있습니까?


6
PHP와 자바 스크립트는 실제로 DSL이 아닙니다. DSL은 의료 서비스와 같은 특정 문제 영역을 해결하는 언어입니다. SQL은 관계형 데이터 세트로 작업하는 데 문제가있는 도메인에 고유하기 때문에 DSL입니다. 자세한 내용은 en.wikipedia.org/wiki/Domain-specific_language 를 참조하십시오.
Robert Harvey

Nemerle?
cnd

답변:


11

가장 쉬운 방법은 유창한 인터페이스 입니다. 이 도구는 전혀 필요하지 않으며 훌륭한 IntelliSense 지원을 제공하지만 다음과 같은 .NET-kinda 방식으로 내용을 작성해야합니다.

 Mix.Paint(Color.Green).With.Paint(Color.Red);

또는 Boo 에서 아름다운 DSL작성할 수 있습니다 . 그 주제에 관한 이 있습니다 .


10

ANTLR (또는 다른 언어 인식 도구)은 닷넷에 사용할 수있는 파서 생성기를 사용해 볼 수 있습니다 . 커뮤니티에서 sql, c # 및 기타 여러 언어에 대한 정의를 찾을 수 있습니다.

구글에 따르면 ide 지원도 있습니다.


업데이트 : ANTLR4는 Java 만 방출하지만 ANTLR3은 여전히 ​​C #을 지원하지만 주요 업데이트는 표시되지 않습니다.
Stefano Sanfilippo

3

첫 번째 질문-도메인 특정 언어는 무엇입니까? 왜냐하면 댓글에 맞추기에는 너무 큽니다.

도메인 별 언어는 특정 문제 도메인 내에서 작동하도록 설계된 언어입니다. 예를 들어, 언리얼 엔진 (1 인칭 슈팅 게임에 사용)에는 언리얼 엔진의 동작을 수정할 수있는 언리얼 스크립트라는 도메인 특정 언어가 있습니다. 이 언어는 일반적인 문제를 해결하기 위해 고안되었지만 특정 영역으로 제한되어 있습니다. 레드 코드 (핵심 전쟁의 경우)는 또 다른 도메인 별 언어입니다. Context Free Art 내의 언어 는 도메인에 따라 다릅니다.

아이디어는 도메인 특정 언어를 사용하여 현재 문제를 밀접하게 매핑하는 DSL을 만들 수 있다는 것입니다. 이 시점에서 문제 도메인을 처리하기 위해 라이브러리를 추가하더라도 일반 언어로 프로그래밍하는 것보다 DLS로 프로그래밍하는 것이 더 쉽습니다.


두 번째 질문은 C #의 도구입니다 ... C #을 모르므로 도구를 잘 모릅니다. 즉, 대학에서 컴파일러 클래스를 수강 할 때 사용 된 도구 중 2 개는 lex 및 yacc입니다. 스택 오버플로 초과 ... C # 용 Lex / Yacc?



당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.