使用Java创建元语言

时间:2011-09-27 20:13:27

标签: java metaprogramming

家伙!我需要创建某种元语言,我可以将其嵌入XML中,然后用Java进行解析。例如:

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

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

我需要实现条件语句,算术。

我应该从哪里开始寻找建议?

5 个答案:

答案 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

当然,您可以自由地从您需要的任何位置加载脚本,并为其提供您想要的任何上下文(在此示例中为valuevalue2)。

另见Scripting for the Java Platform文章。

答案 1 :(得分:5)

此处的用户Bart Kiers。用ANTLR写了一篇关于用Java创建一个简单语言的tutorial

答案 2 :(得分:1)

Java有一个可用于此的脚本API。查找包javax.script

的API文档

您可以在code元素中包含代码中的代码,并使用脚本API执行该代码。

答案 3 :(得分:1)

如果您真的想开发自己的语言,请从interpreter模式开始。如果您只想在Java代码中使用其他人的语言,请查看集成ala JSP样式的嵌​​入式语言。

答案 4 :(得分:1)

几乎可以肯定,自制语言会吸吮,特别是从长远来看,所以不要自己动手。

有几个类似jsp的框架,也许其中一个可以解决这个问题:

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