2011-10-20 17 views
4

可能性の重複:私は用語が多く使わ聞いた
What is a DSL and where should I use it?「ドメイン固有言語」とは何ですか?

...それは「ドメイン固有」での言語に正確に何を意味するのでしょうか?

また、言語(たとえば、Groovy)〜のサポートドメイン固有の言語はどういう意味ですか?

+0

https://secure.wikimedia.org/wikipedia/en/wiki/Domain-specific_language –

+0

@FelixKling:私は実際にそれをすでに読んでいますが、あまり役に立ちませんでした。たとえば、任意の言語が「どのようにドメイン固有の言語をサポートする」ことができますか?それはメタプログラミングや何かに関連していますか?私は、用語自体の定義は意味をなさないかもしれないと思うが、使用法は本当に私を混乱させている... – Mehrdad

答えて

0

最初の質問では、少しのグーグルで十分でしょう。

2番目の質問については、どの言語でもDSLを実装できます。ほとんどすべての言語でeDSLを実装することもできます。しかし、いくつかの言語は他の言語よりはるかに優れています。主な機能はメタプログラミングです。ホスト言語でコードを生成できるため、eDSLのコンパイラをどこにでも接続することができます。コンパイラの構築を容易にする機能は、アウトオブボックスの構文解析ツール、ホスト言語の拡張可能で柔軟な構文、ASTを表現するための代数的データ型、コンパイラの変換を簡略化するためのパターンマッチングなども有用です。片方の言語は完全に静的で拡張不可能な言語、もう一方は絶対に柔軟な言語です。

0

「ドメイン特有の言語」とは、問題のクラス(問題の解決策)を簡潔に表現できるもので、通常、問題のドメインの語彙と一致して表記が似ているためです)をドメイン内で働く専門家が使用するものに置き換えます。

実際には、あなたが言うことを表す文法と、それらの言葉が意味するものを定義するセマンティクスのセットです。これにより、DSLはのようになり、は、それらがどのように実装されるかに関して他の従来のプログラミング言語(例えばJava)と似ている。そして、実際には、そのような従来の言語は、問題への解決策を記述することに優れた「DSL」であると考えることができます。その意味は、従来の言語を処理するのと同じように、DSLを処理するための同じマシンセットが必要であり、それは基本的にコンパイラの機械です。

Groovyには、このような機械のいくつか(設計通り)があり、DSLを「サポート」することができます。

一般的なDSLについての説明は、Domain Specific Languagesを参照してください。具体的な種類のメタプログラミング機械は、それらの実装に非常に役立ちます。

関連する問題