2011-09-27 17 views
0

みんな!私は、XMLに埋め込み、Javaで解析できるような、ある種のメタ言語を作成する必要があります。たとえば:Javaでメタ言語を作成する

<code> 
    [if value1>value2 then "Hello, Bob!" else "Hello, Jack"] 
</code> 

または

<code> 
    [if value1+2>value2 return true] 
</code> 

私は条件文、算術演算を実装する必要があります。

どこから始めればよいですか?

+0

Javaは本当にこのようなもののための言語ではありません。 JVMを使用する必要がある場合は、Clojureを試してください.Lispはこれを簡単にします。 – Mike

+1

@Mike Lispで何か簡単にできますか? ;-) – MaDa

+0

私はあなたがここで解決しようとしていることについて不思議に思っています... XMLに動的コンテンツを書き込んだり、XMLを解析したりしても、内容に反応することはありません。 – KarlP

答えて

7

Javaは組み込みのJavaScriptインタープリタがあります。あなたはあなたが必要と(この例では、valuevalue2)任意のコンテキストでそれを提供するために、どこからでもスクリプトをロードするために、両方の自由である。もちろん、

ScriptEngine jsEngine = new ScriptEngineManager().getEngineByName("JavaScript"); 
jsEngine.put("value1", 8); 
jsEngine.put("value2", 9); 
String script = "if(value1 + 2 > value2) {'Foo'} else {'Bar'}"; 
final Object result = jsEngine.eval(script); 
System.out.println(result); //yields "Foo" String 

を欲しいです。

Scripting for the Java Platformも参照してください。

1

Javaには、これに使用できるスクリプトAPIがあります。パッケージjavax.scriptのAPIドキュメントを参照してください。

たとえば、JavaScriptをcode要素に含めることができ、スクリプトAPIを使用してそのコードを実行できます。

1

あなた自身の言語を実際に開発したい場合は、interpreterパターンから始めます。 Javaコードで他の人の言語を活用したいだけなら、JSPスタイルの組み込み言語との統合を検討してください。

1

手作りの言語は、特に長期的には、特にを吸うので、自分で何かを巻くことはほとんどありません。ここ

JSTL/JSP EL (Expression Language) in a non JSP (standalone) context

+1

男を股で蹴ってはいけません。そのような言語は必ずしも「吸う」わけではなく、純粋に実装されたパーサーだけがそうするでしょう。 – MaDa

+0

私は誰かを蹴っているわけではなく、観測結果から私の結論を引き出すだけです。それは必ずしも吸うわけではありません。それはそのように終わる可能性が非常に高いです:-) – KarlP

4

ユーザー、Bart Kiers

は、利用可能ないくつかのjsp-のようなフレームワーク、トリックを行うだろうそれらの多分1つがあります。 ANTLRを使用してJavaで簡単な言語を作成することについてtutorialと書いています。

関連する問題