在Java中创建一个解释语法的建议

4

我在工作中经常处理POS(销售点)终端。它们基本上与用Java编写的系统端点进行通信,该端点将与后端系统通信。

对于收据,我们将在端点中编写代码,以生成需要打印的数据。每行收据只能包含40个字符,因此我们基本上会硬编码每种需要打印的收据类型。

我的想法是基本上想出一种脚本语法,我可以使用它来生成这些收据。

我的想法是创建一个GUI程序,您可以在其中设计收据,例如:

Welcome To John Doe Services
Your current balance is $(F4).Format(currency)

或者类似的东西。有了这个,我就可以解释语法$(F4).Format(currency)并正确提取数据和格式化它。
我希望能得到一些建议,告诉我应该从哪里开始学习如何做到这一点。我想用Java编写,但不确定从哪里开始。我宁愿避免使用一些子字符串技巧。
提前感谢您的帮助。
编辑:抱歉,我应该提到,我们扩展的软件是用J++编写的,所以我不能使用Java 5或6,最新的Java版本我能使用的是1.4。

你可以查看JSR 223来使用你喜欢的脚本语言。 - justkt
2个回答

5

Java平台脚本化 是您需要开始的地方,Rhino JavaScript引擎已经嵌入到Java 6运行时中,因此您应该使用它来轻松配置。

如果您坚持使用领域特定语言,那么最容易入手的地方是ANTLR。有一些由作者Terrance Parr编写的关于ANTLR的优秀书籍。


1
虽然在同一句话中提到“最简单的”和ANTLR让我笑了,但我还是要支持ANTLR。 - Sean Patrick Floyd
1
简单是相对的,编写自己的代码来完成ANTLR所做的事情并不容易 - user177800

3
我看到有两种方法。一种是使用脚本语言或特定领域语言,然后应用于收据上。JRuby是一个明显的选择。
如果你想更紧密地遵循Java,那么另一种方法是使用模板引擎,如Velocity或FreeMarker。

+1 for Velocity,我用它来发送电子邮件和生成代码,非常简单易懂。 - Nathan Hughes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接