DSL に解析ツールが必要なのはなぜですか?
質問
DSL は API と同じくらい単純なので、パーサーは必要ないのではないでしょうか?それとも、ドメイン固有言語とは何なのかを誤解しているのでしょうか?私は、それが特定の領域の問題を解決するための組織化された一連のルールを指すものだと考えていました。API はその定義に当てはまるように思えますよね?
解決
あなたは、より一般的なプログラミング言語内DSLを埋め込むことができます。これは、多くの場合、良い解決策です。 (あなたは、このDSLは、特定のAPIの形をとることを言うことができます。)
また、あなたのドメインの概念を表現するために、独自のインタプリタで、別の言語を作成することができます。これは、より大きな仕事である傾向があり、しばしば必要ではない。
他のヒント
あなたは実装と概念を混乱させています。ドメイン固有言語ではなく、一般的に問題を解決するための記述のための一般的な言語であるより、問題領域に「閉じる」と考えられているアイデアのいずれかの表現です。
はい、DSLは問題ドメイン内の特定の概念に言及機能を提供するAPIとして実装されるかもしれないが、テキストファイルとして表されたときにDSLは等しく有効である。
の達人プログラマー:ジャーニーマンからをマスターするためには、例を用いて、DSLの良い説明と、彼らは便利だした状況が含まれています。強くお勧めします。
あなたはまだ、ホスト言語の唯一の意味を持っているでしょう。
例えば:命令型言語では関数型プログラミングでは動作しません。だから、機能DSLはこの命令型言語に追加されてい...
はい、絶対に - ほんの ホスト言語がそれをサポートするのに十分な柔軟性を備えている場合、API は DSL として適切に機能します。
Ruby は、特にオプションの括弧やその他の柔軟性を考慮すると、このような用途には非常に優れた言語です。
Rails はしばしば DSL と呼ばれます データベース駆動型Web作成用 アプリケーション。
Rake は、 (よりスマートな)makefileを書く。
私自身の ウーファイル は、C++ でデータベース アプリケーションを作成するための DSL とみなすことができるフレームワークです。これは dBase からインスピレーションを受けており、C++ 演算子のオーバーロード、ローカル オブジェクト、およびストリーム イディオムを非常に多用しています。
Forth プログラムはスペースで区切られた一連の単語にすぎないため、Forth は古典的に DSL と API の間の境界があいまいな言語です。おそらく Forth DSL の最も印象的な例は次のとおりです。 豊富 - Abundance は、BBL Forth で書かれた Forth ベースのビジネス プログラミング言語です。BBL は 32 ビット DOS FORTH コンパイラです。そのまま配布されます。警告を参照してください。これは気の弱い人向けではありません。これは主に、古い klunker XT および AT コンピュータでの高速実行が必要な第三世界向けのソフトウェアを開発している人にとって興味深いものとなるでしょう。これを使用すると、最新のデータ入力プログラムを周回する非常に洗練されたデータ入力プログラムを作成できます。
そしてもちろん、グラフィカルなDSLはまったくの解析を必要としないでしょう。