9

複雑な固定長および可変長の文字列を作成する必要があります。これらの文字列は、顧客プロファイル、注文などを表している可能性があります。どの JVM ベースのプログラミング言語をお勧めしますか?

アイデアは、エンド ユーザーがこの DSL を使用して文字列を作成することです。だから私は検証、コード補完などを探しています.

4

8 に答える 8

8

JVM 上で動作する Lisp を使用します。あなたが持っているいくつかの選択肢:

  1. クロージャ
  2. JScheme
  3. SISC
  4. ABCL
  5. Bigloo (JVM では実行されませんが、Java との相互運用性は良好です)。

Lisp を使用してソフトウェアをボトムアップで設計する方法、つまり、目の前の問題を解決するのに理想的な言語に Lispを成長させる方法を説明している無料の良い本があります。

Forthファミリーの言語は、DSL の定義にも最適です。JVM で実行されるものはいくつかあります。

  1. ニウエ
  2. ミスティビーチフォース
于 2011-01-24T04:59:49.267 に答える
8

グルーヴィー

http://docs.codehaus.org/display/GROOVY/Writing+Domain-Specific+Languages

于 2011-01-24T04:21:44.103 に答える
6

DSLには2つのタイプがあります。外部および埋め込み。

外部DSLは、ホスト言語から完全に分離されています。つまり、言語外で記述しますが、通常、ホスト言語でコードを生成するために使用されます。このアプローチでは、単純な文法ファイルが新しいDSL用の完全なEclipseベースのエディターを生成し、XPandのコードテンプレートを使用して実際のJavaコードを生成できるため、XTextとXPandがおそらく最適なツールです。XTendとXPandはJavaで記述されていますが、プロセスの最後にJavaコードが含まれている限り、何でも記述できるため、これは偶発的なものです。このアプローチの欠点は、かなり複雑な問題の場合、言語が非常に複雑になり、文法やコード生成テンプレートでさらに多くの作業が必要になることです。あなたはできる' 式の評価などのホスト言語機能を使用するため、必要に応じてDSLでこれらすべてを再構築する必要があります。XTextには、ここで役立つ式を含む部分言語であるXBaseがまもなく含まれる予定です。

もう1つのアプローチは、関数型言語で通常見られる高次構造(HOFやモナドなど)またはマクロ(Lispなど)などのメタプログラミング機能を使用して、ホスト言語で高レベルドメイン機能を表現する組み込みDSLです。Javaにはこれらのどちらもありませんので、DSL作業(または他のほとんどの形式の抽象プログラミング)には適していません。Spring Rooは、生成を使用するJava用のメタプログラミングタイプの機能を提供しているため、オプションになる可能性があります。それができない場合、Scalaはおそらく最も人気のあるJavaのようなJVM言語であり、必要な機能を備えています。

組み込みDSLは通常、外部DSLよりもはるかに簡単です。これは、ホスト言語を完全にサポートしているため、Scalaを試すことをお勧めします。

于 2011-02-02T10:46:37.243 に答える
5

どこまでもスカラ!Scala は内部 DSL に特に適しています (詳細はこちらを参照してください)。

于 2011-01-24T05:22:59.973 に答える
5

Xtext ( http://www.eclipse.org/Xtext/ ) を使用すると、DSL を指定するときに便利なエディターを無料で入手できます。

于 2011-01-24T14:39:22.500 に答える
2

そのためにはGroovyをお勧めします。

于 2011-01-24T04:21:21.170 に答える
0

私はjrubyをお勧めします。私はいくつかのことをしてきましたが、私が望むものを手に入れるのはいつもとても簡単でした.

http://www.artima.com/rubycs/articles/ruby_as_dsl3.html

于 2011-01-24T04:52:15.590 に答える
-2

Apache Velocity テンプレート エンジンの問題のようです。必要に応じて、テンプレート構文または DSL を備えた Java ライブラリです。

于 2011-01-24T04:18:10.750 に答える