家伙!我需要创建某种元语言,我可以将其嵌入XML中,然后用Java进行解析。例如:
<code>
[if value1>value2 then "Hello, Bob!" else "Hello, Jack"]
</code>
或
<code>
[if value1+2>value2 return true]
</code>
我需要实现条件语句,算术。
我应该从哪里开始寻找建议?
答案 0 :(得分: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
当然,您可以自由地从您需要的任何位置加载脚本,并为其提供您想要的任何上下文(在此示例中为value
和value2
)。
答案 1 :(得分:5)
此处的用户Bart Kiers。用ANTLR写了一篇关于用Java创建一个简单语言的tutorial。
答案 2 :(得分:1)
Java有一个可用于此的脚本API。查找包javax.script
。
您可以在code
元素中包含代码中的代码,并使用脚本API执行该代码。
答案 3 :(得分:1)
如果您真的想开发自己的语言,请从interpreter模式开始。如果您只想在Java代码中使用其他人的语言,请查看集成ala JSP样式的嵌入式语言。
答案 4 :(得分:1)
几乎可以肯定,自制语言会吸吮,特别是从长远来看,所以不要自己动手。
有几个类似jsp的框架,也许其中一个可以解决这个问题:
JSTL/JSP EL (Expression Language) in a non JSP (standalone) context