使用Java创建元语言

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

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

要么

   [if value1+2>value2 return true]  

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

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

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 )。

另请参阅Java平台的脚本文章。

这是一位用户, Bart Kiers 。 写了一篇关于使用ANTLR在Java中创建简单语言的教程 。

Java有一个脚本API可供您使用。 javax.scriptjavax.script的API文档。

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

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

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

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

非JSP(独立)上下文中的JSTL / JSP EL(表达式语言)