私はDSLの開発にますますからかわれています。私はfslexとfsyaccを使用してF#で小さなものを開発しましたが、エラーメッセージは不正確です(より良いものを生成する方法も見つかりません。エラーケースの処理方法に関するドキュメントはほとんどないようです)。 UNICODE文字列を適切に解析しません。私には受け入れられません。簡単に言えば、DSLの開発を非常に簡単にするツールを探しています(そのためのVisual Studioツールは、私が求めているものとはまったく異なります)。構文解析/AST生成の部分に最も興味があります。私はANTLRを見てきましたが、コードと文法定義のメタ言語を混同しているのは私には悪いように見えるので、それや同様の問題に苦しんでいる解決策を回答に記載しないでください。また、私はそこで見ました」s Booという名前の言語のためのいくつかのものですが、私は今のところさらに別の言語をいじることには本当に興味がないので(特にサポートがほとんどない場合)、どちらにも当てはまりません。適切に文書化されていて、.NETで正常に機能し、動的に型指定された言語の使用やDLRの使用を伴わない限り、他の提案はありがたいです。
5 に答える
それでも、Booのソースコードを見て、Booがどのように機能するかを確認することをお勧めします。また、ANTLRを使用してパーサーを生成します。コードをANTLR文法と混在させる必要はありません。これは、LL(*)言語である限り、完全に説明的なものとして役立ちます。
オスロでの作業を開始したいと考えています。DSLを定義するためのツールとDSL上で文法を定義するためのツールが含まれています。文法はASTまたは他のものを発することができます。
DSLから生成できる出力の1つは、対応するSQLServerスキーマです。したがって、DSLのインスタンスはSQL Server Express(またはそれ以上)に格納できます。
オスロはマイクロソフトが持っているより大きなビジョンの一部ですが、それを無視して「DSL」の部分から始めることができます。
始めて、Microsoftにあなたが好きなものと嫌いなものを知らせることに積極的に取り組むことをお勧めします。あなたがそれを知っているかどうかにかかわらず、あなたは今彼らの注目を集めています。
Irony(Irony @ CodePlexにあります)はあなたにとって良い解決策かもしれません-BNF文法ファイルを個別に構築しようとする代わりに、.NET言語の組み込み機能を利用して文法を構築することができます。
ほぼ平易な英語でDSLを作成する最も簡単な方法: JavaまたはC#用に独自のDSLを作成する(パート4):セマンティックレイヤーを追加する