2011-09-27 86 views
0

guys!我需要創建一些元語言,我可以將其嵌入到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解釋:

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 

當然你可以自由從你需要的地方,並與(在這個例子中valuevalue2)任何情況下其提供給兩個加載腳本你想。

另請參閱Scripting for the Java Platform文章。

1

Java有一個腳本API,您可以使用它。查找包javax.script的API文檔。

您可以在code元素中包含例如JavaScript中的代碼,並使用腳本API執行該代碼。

1

如果您真的想開發自己的語言,請從interpreter模式開始。如果你只是想在你的Java代碼中利用別人的語言,那麼看看集成ala JSP風格的嵌入式語言。

1

幾乎可以肯定的是,自制語言會吸取,特別是從長遠來看,所以不要自己推出一些東西。

有幾種類似於JSP的框架,那些會做的伎倆的可能之一:

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

+1

不要踢在襠部的傢伙。這樣的語言不一定會「吸」,只有一個天真的解析器會。 – MaDa

+0

我不會踢任何人,只是從觀察得出我的結論...它不會*必然*吸,它很可能會以這種方式結束...... :-) – KarlP