DSL 개발에 점점 더 많은 관심을 갖게되었습니다. 나는 fslex와 fsyacc를 사용하여 F #으로 아주 작은 것을 만들었지 만 오류 메시지가 정확하지 않다. (나는 더 좋은 것들을 생성 할 수있는 방법을 찾지 못한다. 오류 케이스를 처리하는 방법에 대한 문서가 거의없는 것 같다. 그들은 UNICODE 문자열을 적절하게 구문 분석하지 않습니다. 간단히 말하자면, 도구를 사용하여 DSL을 개발하는 것이 매우 간단하고 (Visual Studio 도구는 실제로 내가 원하는 것만 큼), 구문 분석/AST 생성 부분에 가장 관심이 있습니다. 나는 ANTLR을 살펴본 후 코드와 문법 정의 메타 언어가 섞여서 나쁘게 보였으므로, 답안에서 유사한 문제로 고생하는 솔루션이나 솔루션에 대해서는 언급하지 마십시오. 또한 부 (Boo)라는 언어에 대한 몇 가지 자료를 보았습니다. 그러나 저는 아직 다른 언어로 어지럽히는 것에 관심이 없습니다 (특히 지원이 거의없는 경우). 그래서 맞지 않습니다. 잘 설명되어있는 한 .NET을 사용하여 잘 작동하고 마지막으로 동적 유형 지정 언어 또는 DLR 사용과 관련이없는 다른 제안은 인정됩니다..NET에서 DSL을 구현하는 도구
답변
오슬로에서 일하기를 원합니다. 여기에는 DSL을 정의하는 도구와 DSL을 통해 문법을 정의하는 도구가 포함됩니다. 문법은 AST 나 다른 것을 낼 수 있습니다.
DSL에서 생성 할 수있는 한 종류의 출력은 해당 SQL Server 스키마입니다. 따라서 DSL의 인스턴스는 SQL Server Express (또는 그 이상)에 저장 될 수 있습니다.
오슬로는 Microsoft의 더 큰 비전의 일부이지만 무시할 수 있으며 "DSL"부분부터 시작하십시오.
저는 여러분이 시작하고 적극적으로 Microsoft에 여러분이 좋아하는 것과 싫어하는 것을 알리는 것을 권장합니다. 당신은 당신이 알든 말든 그들의 관심을 지금 당장 가지고 있습니다.
정말, 왜 downvote? 그것은 좋은 대답입니다. 게다가, 나는 내가 오슬로를 사주라고 깨달았다. 아니면 M #입니까? –
+1 나는 -1로보기 싫은 대답을 보면서 싫어하고 왜 투표가 중단되었는지에 대한 이유가 없다. 이제 시작한 곳으로 돌아 가야합니다. – Jay
감사합니다. 오슬로의 DSL 부분이 출시 될 것 같지 않기 때문에 나는 또한 대답을 삭제할 것이다. –
부 (Boo)의 소스 코드를보고 자신이하는 일을 볼 수도 있습니다. 또한 ANTLR을 사용하여 파서를 생성합니다. ANTLR 문법에 코드를 혼합 할 필요가 없습니다. LL (*) 언어 인 한 완전히 설명 적으로 유용 할 수 있습니다.
정말로, 나는 Boo와 ANTLR 모두에 관심이 없다고 말 했으므로, 이걸 -1로 주면 나랑있어. – em70
당신은 BOO를 ANTLR 문법으로 언어 또는 혼합 코드로 사용하는 것에 관심이 없다고 했지 그러나 나는 그것이 어떻게 ANTLR 문법을 사용하고 Boo의 소스 코드를 보는 것을 배제 하는지를 보지 못했다. –
가장 쉬운 방법 : Create your own DSL for Java or C# (part 4): adding a Semantic Layer
* 종류 * 스팸 **, 특히 말로 표현하는 방식으로 ...하지만 괜찮아요, 신고하기에 나쁘지 않습니다. –
아이러니 - 당신을 위해 좋은 해결책이 될 수 [email protected]에 위치를 - 당신이 내장 된 .NET되는 언어의의 기능을 대신 사용하는 문법을 구축 할 수 있습니다 BNF 문법 파일을 별도로 작성하려고했습니다.
왜 -2로 낮 춥니 까? 이 질문에 잘못된 것이 있습니까 ?? – 7wp