.NETには、文法を定義してプログラミング言語を生成できるものがありますか?


18

私は、教授から最終プロジェクトのDSLを作成するように依頼されたコースを持っています。彼はEclipseを使用した最初のコースxTextで私たちを紹介しました。これは新しいコースですが、ドメイン固有言語の意味についてはまだ少しあいまいです。

これが私の現在の理解です。ドメイン固有の言語は、ソフトウェア開発の特定の問題のために作成された言語です。DSLの例にはPHP、SQL、JavaScriptがあり、反対にJava、C#、C ++、Rubyなどの言語があります。

私が間違っている場合は私を修正してください。

私が知りたいこと:Xtextに似た.NET / Visual Studio用のツールがあり、文法を定義し、それに基づいてアクティビティ図でプログラミング言語を生成することができますか?


6
PHPとJavascriptは実際にはDSLではありません。DSLは、医療サービスなどの特定の問題領域に対処する言語です。SQLは、リレーショナルデータセットを操作する問題ドメインに固有であるため、DSLです。詳細については、en.wikipedia.org / wiki / Domain-specific_languageを参照してください。
ロバートハーヴェイ

多分ネメルル?
cnd

回答:


11

最も簡単な方法は、流なインターフェイスです。これにはツールはまったく必要なく、IntelliSenseの優れたサポートを提供しますが、次のような.NETのような方法で物事を記述する必要があります。

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

または、Booで美しいDSL書くこともできます。そのテーマに関する本全体があります。


10

ANTLR (または言語認識のための別のツール)を試すことができます。これは、特にドットネットで利用可能なパーサージェネレータです。コミュニティでは、sql、c#、および他の多くの言語の定義を見つけることができます。

グーグルによると、ideサポートもあります:


更新:ANTLR4はJavaのみを出力しますが、ANTLR3は引き続きC#をサポートしますが、メジャーアップデートは行われません。
ステファノサンフィリッポ

3

最初の質問-ドメイン固有の言語とは...これは大きすぎてコメントに収まらないためです。

ドメイン固有言語は、特定の問題ドメイン内で動作するように設計された言語です。たとえば、Unrealエンジン(ファーストパーソンシューティングゲームに使用)には、Unrealエンジンの動作を変更できるUnrealScriptと呼ばれるドメイン固有の言語があります。この言語は、一般的な問題を解決するために設計されていますが、特定のドメインに制限されています。レッドコード(コア戦争用)は、別のドメイン固有の言語です。Context Free Art内の言語は、そのドメインに固有です。

アイデアは、ドメイン固有の言語で、手元の問題を厳密にマッピングするDSLを作成できるということです。この時点で、問題のドメインを処理するためにライブラリを追加しても、一般的な言語でプログラミングするよりもDLSでプログラミングする方が簡単です。


2番目の質問-C#のツールについて...私はC#を知らないため、そのツールをよく知りません。とは言っても、大学でコンパイラクラスを受講していたとき、使用された(そして使用された)ツールのうち2つはlexとyaccです。スタックオーバーフローで... C#のLex / Yaccですか?



弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.