質問

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

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

役に立ちましたか?

解決

Xtext (http://www.eclipse.org/xtext/)DSLを指定するときは、素敵なエディターを無料で入手できます。

他のヒント

LISPを使用します JVMで実行されます。あなたが持っているいくつかの選択:

  1. Clojure
  2. jscheme
  3. SISC
  4. ABCL
  5. ビッグルー (JVMでは実行されませんが、Javaの相互運用性が良好です)。

がある 良い無料の本 これは、LISPを使用してソフトウェアを設計する方法を説明しています 一気飲み, 、つまり方法 育つ 手元の問題を解決するのに理想的な言語にリスプします。

の言語 前方へ 家族はDSLを定義するのにも最適です。 JVMで実行されるいくつかがあります:

  1. niue
  2. 霧のビーチフォース

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

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

もう1つのアプローチは、高次のコンストラクト(HOFやモナドなど)が機能的言語で一般的に見られる、またはマクロなどのメタプログラミング施設(LISP)を通じて、高レベルのドメイン機能がホスト言語で表現される埋め込みDSLです。 Javaにはこれらのどちらもないので、DSLの作業(または他のほとんどの形式の抽象プログラミング)には悪い選択です。 Spring Rooは、Generationを使用してJava用のメタプログラミングタイプの施設を提供するため、オプションになる可能性があります。それに失敗すると、Scalaはおそらく人気があり、必要な施設を持っているJVM言語のような最もJavaです。

埋め込まれたDSLは通常、外部DSLよりもはるかに簡単です。これは、ホスト言語の完全なサポートがあるため、Scalaを試すことです。

ずっとスカラ! Scalaは内部DSLに特に適しています(pls参照 これ).

私がお勧めします グルーヴィー そのために。

Jrubyを提案します。私はいくつかやったことがありますが、私が望むものを手に入れることは常に非常に簡単でした。

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

Apache Velocityテンプレートエンジンの問題のように聞こえます。そうであれば、テンプレートの構文またはDSLを備えたJavaライブラリです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top