guys!我需要創建一些元語言,我可以將其嵌入到XML中,然後使用Java進行解析。例如:用Java創建元語言
<code>
[if value1>value2 then "Hello, Bob!" else "Hello, Jack"]
</code>
或
<code>
[if value1+2>value2 return true]
</code>
我需要實現的條件語句,算術。
任何建議我應該從哪裏開始尋找?
guys!我需要創建一些元語言,我可以將其嵌入到XML中,然後使用Java進行解析。例如:用Java創建元語言
<code>
[if value1>value2 then "Hello, Bob!" else "Hello, Jack"]
</code>
或
<code>
[if value1+2>value2 return true]
</code>
我需要實現的條件語句,算術。
任何建議我應該從哪裏開始尋找?
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
當然你可以自由從你需要的地方,並與(在這個例子中value
和value2
)任何情況下其提供給兩個加載腳本你想。
Java有一個腳本API,您可以使用它。查找包javax.script
的API文檔。
您可以在code
元素中包含例如JavaScript中的代碼,並使用腳本API執行該代碼。
如果您真的想開發自己的語言,請從interpreter模式開始。如果你只是想在你的Java代碼中利用別人的語言,那麼看看集成ala JSP風格的嵌入式語言。
幾乎可以肯定的是,自制語言會吸取,特別是從長遠來看,所以不要自己推出一些東西。
有幾種類似於JSP的框架,那些會做的伎倆的可能之一:
JSTL/JSP EL (Expression Language) in a non JSP (standalone) context
一個用戶在這裏,Bart Kiers。編寫了一個tutorial關於使用ANTLR在Java中創建簡單的語言。
Java並不是真的這樣的語言。如果您必須使用JVM,請嘗試使用Clojure,因爲Lisp使這件事變得容易。 – Mike
@Mike Lisp讓任何事情變得簡單嗎? ;-) – MaDa
我開始懷疑你在這裏試圖解決什麼問題......既不需要在XML中編寫動態內容,也不需要在對內容作出反應時解析XML,還是需要編寫腳本......或者是否? – KarlP