使用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
当然,您可以自由地从您需要的任何地方加载脚本,并为其提供您想要的任何上下文(在此示例中为value
和value2
)。
另请参阅Java平台的脚本文章。
这是一位用户, Bart Kiers 。 写了一篇关于使用ANTLR在Java中创建简单语言的教程 。
Java有一个脚本API可供您使用。 javax.script
包javax.script
的API文档。
您可以在code
元素中包含代码中的code
,并使用脚本API执行该code
。
如果您真的想开发自己的语言,请从解释器模式开始。 如果您只想在Java代码中使用其他人的语言,请查看集成ala JSP样式的嵌入式语言。
几乎可以肯定的是,自制语言会很糟糕 ,特别是从长远来看,所以不要自己动手。
有几个类似jsp的框架,也许其中一个可以解决这个问题:
非JSP(独立)上下文中的JSTL / JSP EL(表达式语言)