dsl工具 java_在Java中创建天然DSL的最佳工具是什么?

几天之前,我读了一篇博客文章(

http://ayende.com/Blog/archive/2008/09/08/Implementing-generic-natural-language-DSL.aspx),作者讨论了使用.NET的通用自然语言DSL解析器的想法.

在我看来,他的想法的辉煌部分是,文本被解析和匹配与使用与句子相同的名称的类.

以举例说明如下:

Create user user1 with email test@email.com and password test

Log user1 in

Take user1 to category t-shirts

Make user1 add item Flower T-Shirt to cart

Take user1 to checkout

将使用“已知”对象的集合进行转换,这将获取解析结果.一些示例对象将(使用Java作为我的示例):

public class CreateUser {

private final String user;

private String email;

private String password;

public CreateUser(String user) {

this.user = user;

}

public void withEmail(String email) {

this.email = email;

}

public String andPassword(String password) {

this.password = password;

}

}

所以,当处理第一个句子时,CreateUser类将是一个匹配(显然是因为它是“创建用户”的连接),并且由于它在构造函数上使用一个参数,所以解析器将“user1”作为用户参数.

之后,解析器将确定下一部分“使用电子邮件”也与方法名称相匹配,并且由于该方法接受一个参数,因此会将“test@email.com”解析为电子邮件参数.

我想你现在得到这个想法吧?一个非常明确的应用,至少对我来说,将允许应用程序测试人员用自然语言创建“测试脚本”,然后将这些句子解析为使用JUnit来检查应用程序行为的类.

我想听到关于使用Java编写这样的解析器的工具或资源的想法,提示和意见.更好的是,如果我们可以避免使用复杂的词汇表,或像ANTLR这样的框架,我认为也许会用锤子杀死一只苍蝇.

更重要的是,如果有人为此开始一个开源项目,我一定会感兴趣的.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值